Add QoS capacity to librbd


Now librbd doesn't support image-level rate-limit capacity. But we still can use hypervisor which support block IO qos to get , such as qemu. But it didn't know what the IO operation is clearly. For example, if rbd cache enabled many seq io may merge into one operation in the ceph side. In the other words, one IO in qemu not the same as a op in librbd.


  • Haomai Wang (UnitedStack)
  • Rongze Zhu (UnitedStack)
  • Name

Interested Parties

  • Danny Al-Gaaf (Deutsche Telekom AG)
  • Zhiteng Huang (eBay Inc.)
  • Name

Current Status

Librbd doesn't support it now.

Detailed Description

User can create image with specied qos spec, like "read_iops", "write_iops", "read_bytes" etc. Each image store it in the header object. We can limit the io via Objecter, or other places. We also can dynamically set image's qos online, it is very useful for cloud platform.

Then we can support qos at OpenStack Cinder rbd driver.

Work items

Coding tasks

  1. Determine qos fields
  2. Implement it at librbd
  3. Add to Cinder

Documentation tasks

  1. Option docs