Cinder QoS

  1. total_bytes_sec: the total allowed bandwidth for the guest per second
  2. read_bytes_sec: sequential read limitation
  3. write_bytes_sec: sequential write limitation
  4. total_iops_sec: the total allowed IOPS for the guest per second
  5. read_iops_sec: random read limitation
  6. write_iops_sec: random write limitation

Cinder 支持 front-end 端和 back-end 端设置 QoS,其中:

  • front-end: 表示 hypervisor 端,即在宿主机上设置虚拟机的 QoS,通常使用 cgroup 或者 qemu-iothrottling;
  • back-end: 端指在存储设备上设置 QoS,该功能需要存储设备的支持;
  • Ceph RBD 不支持 QoS,故数据盘的 QoS 需要采用 qemu io throttling 在 front-end 端设置;

2.1 创建volume type

# volume type名为cep-ssd
cinder type-create ceph-ssd --is-public true

2.2 创建 QoS spec

  • consumer 的合法值为 front-end,back-end,both;
  • front-end 表示使用前端控制(hypervisor控制,会在 libvirt xml 文件中定义);
  • back-end 表示使用后端控制(cinder drivers,需要driver 支持);
  • both 表示前后端同时进行 QoS 控制
# Ceph RBD 不支持 QoS,所以需要在 hypervisor 端控制, consumer 应为 front-end
# cinder qos-create ceph-ssd-qos consumer=front-end read_bytes_sec=10000000 write_bytes_sec=10000000 read_iops_sec=100 write_iops_sec=100
 
openstack volume qos create mid-iops\
  --consumer front-end \
  --property read_bytes_sec=52428800 \
  --property write_bytes_sec=52428800 \
  --property read_iops_sec=100 \
  --property write_iops_sec=100
 
# 调整 QoS spec
openstack volume qos set <QOS_NAME> --property <KEY>=<VALUE>

2.3 关联 QoS spec 和 volume type

#cinder qos-associate <qos_specs> <volume_type_id>
# 列出 qos spec
openstack volume qos list
# 列出 volume type
openstack volume type list
# 绑定
openstack volume qos associate <QOS_NAME> <VOLUME_TYPE>
# 解绑
openstack volume qos disassociate --volume-type <volume-type> <qos-spec>
 
# 之后指定 volume type 为 ceph-ssd 创建的卷都支持 QoS
cinder create 50 --name test --volume-type ceph-ssd

2.4 把该卷挂到虚拟机

nova volume-attach vm f77b6a6e-1b56-4cd2-849d-7f8e6763dcf2

2.5 验证

查看虚拟机相应的 xml,数据盘已设置上 QoS。

virsh dumpxml vm
...
      <iotune>
        <read_bytes_sec>10000000</read_bytes_sec>
        <write_bytes_sec>10000000</write_bytes_sec>
        <read_iops_sec>100</read_iops_sec>
        <write_iops_sec>100</write_iops_sec>
      </iotune>
...

  • virtualization/openstack/cinder/qos.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)