目录

前言

Cinder 支持 front-endback-end 两种类型的存储 QoS,前者由 Hypervisor 端实现(e.g. 通过 Libvirt 设置虚拟机的存储 QoS),后者指存储设备上设置的 QoS,需要存储设备支持。 一般的物理存储设备都会支持 QoS,但 SDS 的 Ceph RBD 不支持,所以使用 Ceph 存储方案的用户一般只能使用 front-end Qos 来限制虚拟机对数据盘的 Qos。

QoS 项目

  • total_bytes_sec - the total allowed bandwidth for the guest per second
  • read_bytes_sec - sequential read limitation
  • write_bytes_sec - sequential write limitation
  • total_iops_sec - the total allowed IOPS for the guest per second
  • read_iops_sec - random read limitation
  • write_iops_sec - random write limitation

操作步骤

通过 openstackclient 创建具有 QoS Policy 的 Volume Type

[stack@manager ~]$ openstack volume type create VolumeType1
+---------------------------------+--------------------------------------+
| Field | Value |
+---------------------------------+--------------------------------------+
| description | None |
| id | ae5359b3-0bbc-4104-88ca-3749eab07cc8 |
| is_public | True |
| name | VolumeType1 |
| os-volume-type-access:is_public | True |
+---------------------------------+--------------------------------------+ [stack@manager ~]$ openstack volume type show VolumeType1
+---------------------------------+--------------------------------------+
| Field | Value |
+---------------------------------+--------------------------------------+
| access_project_ids | None |
| description | None |
| id | ae5359b3-0bbc-4104-88ca-3749eab07cc8 |
| is_public | True |
| name | VolumeType1 |
| os-volume-type-access:is_public | True |
| properties | |
| qos_specs_id | None |
+---------------------------------+--------------------------------------+ [stack@manager ~]$ openstack volume qos create qos1 --consumer front-end --property total_iops_sec=200
+----------+--------------------------------------+
| Field | Value |
+----------+--------------------------------------+
| consumer | front-end |
| id | 05ab9096-3a0f-45d8-acb8-f0cac172ae8c |
| name | qos1 |
| specs | {u'total_iops_sec': u'200'} |
+----------+--------------------------------------+ [stack@manager ~]$ openstack volume qos set --property total_bytes_sec=2048000 qos1 [stack@manager ~]$ openstack volume qos associate qos1 VolumeType1

指定 VolumeType 创建 Volume:

[stack@manager ~]$ openstack volume create --type VolumeType1 --size 1 volume1
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2018-12-26T13:51:22.597699 |
| description | None |
| encrypted | False |
| id | c24e2a9e-1792-4951-a040-434b87409558 |
| migration_status | None |
| multiattach | False |
| name | volume1 |
| properties | |
| replication_status | disabled |
| size | 1 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| type | VolumeType1 |
| updated_at | None |
| user_id | 11b816e454384d038472c7c89d2544f4 |
+---------------------+--------------------------------------+ [stack@manager ~]$ openstack volume list
+--------------------------------------+--------------+-----------+------+-------------+
| ID | Display Name | Status | Size | Attached to |
+--------------------------------------+--------------+-----------+------+-------------+
| c24e2a9e-1792-4951-a040-434b87409558 | volume1 | available | 1 | |
+--------------------------------------+--------------+-----------+------+-------------+

查看 Libvirt 虚拟机的 XML 文件内容,disk 标签具有 QoS 属性 <iotune>

[root@overcloud-compute-0 ~]#  virsh dumpxml 1
...
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/sdd'/>
<backingStore/>
<target dev='vdb' bus='virtio'/>
<iotune>
<total_iops_sec>200</total_iops_sec>
<total_bytes_sec>2048000</total_bytes_sec>
</iotune>
<serial>c24e2a9e-1792-4951-a040-434b87409558</serial>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>

通过 virsh 设定 Libvirt 虚拟机的 QoS 属性

[root@overcloud-compute-0 ~]# virsh blkdeviotune 1 vdb --total_iops_sec 100

[root@overcloud-compute-0 ~]# virsh blkdeviotune 1 vdb --total-bytes-sec 1024000

[root@overcloud-compute-0 ~]# virsh dumpxml 1
...
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/sdd'/>
<backingStore/>
<target dev='vdb' bus='virtio'/>
<iotune>
<total_bytes_sec>1024000</total_bytes_sec>
<total_iops_sec>100</total_iops_sec>
</iotune>
<serial>c24e2a9e-1792-4951-a040-434b87409558</serial>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>

NOTE:Qos 一般来说都是在一个建议值上下浮动的,所以可以通过指定 --total-iops-sec-max 来固定上限。

参考文章

Capacity based quality of service

https://blog.csdn.net/LL_JCB/article/details/80412362

[Cinder] 存储 Qos的更多相关文章

  1. cinder存储节点 后端采用lvm、nfs安装配置

    #cinder存储节点 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #cinder存储节点 #cinder后端采 ...

  2. OpenStack 存储服务 Cinder存储节点部署NFS(十七)

    Cinder存储节点部署 1.安装软件包 yum install -y nfs-utils rpcbind 提示:早期版本安装portmap nfs-utils :包括基本的NFS命令与监控程序 rp ...

  3. OpenStack 存储服务 Cinder存储节点部署LVM(十六)

    Cinder存储节点部署 部署在192.168.137.12主机 1.安装lvm2软件包 yum install lvm2 -y 2.启动LVM的metadata服务并且设置该服务随系统启动 syst ...

  4. CentOS7安装OpenStack(Rocky版)-09.安装Cinder存储服务组件(控制节点)

    本文分享openstack的Cinder存储服务组件,cinder服务可以提供云磁盘(卷),类似阿里云云盘 ----------------------- 完美的分隔线  -------------- ...

  5. openstack核心组件——cinder存储服务(11)

    一.cinder 介绍:   理解 Block Storage 操作系统获得存储空间的方式一般有两种: 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系 ...

  6. OpenStack 存储服务 Cinder存储节点部署LVM (十四)

    部署在block(10.0.0.103)主机 一)配置lvm 1.安装lvm2软件包 yum install lvm2 -y 2.启动LVM的metadata服务并且设置该服务随系统启动 system ...

  7. cinder存储服务

    一.cinder 介绍: 理解 Block Storage 操作系统获得存储空间的方式一般有两种: 1.通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系 ...

  8. OpenStack核心组件-cinder存储服务

    1. cinder 介绍 Block Storage 操作系统获得存储空间的方式一般有两种: 1)     通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文 ...

  9. S1_搭建分布式OpenStack集群_10 cinder 存储节点配置

    一.安装配置lvm2安装LVM包:# yum install -y lvm2 启动LVM元数据服务,并将其配置为在系统启动时启动:# systemctl enable lvm2-lvmetad.ser ...

随机推荐

  1. 页面内置函数${fn:}

    引入头文件<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions " %&g ...

  2. VScode VUE+PYTHON习惯用的编辑器

    本人从事运维开发工作,经常要开发一些web系统工具,这就需要用到前后端开发.vscode是我用得最舒服的一种编辑器,前端后端都习惯在上面写,这里记录一些配置. 一,插件安装 目前我最主要用的是:    ...

  3. vue中使用echarts(vue+vue-cli+axios+jsonp+echarts)

    一.安装echarts: cnpm i echarts -D 二.在vue-cli的main.js文件中引用echarts: import charts from 'echarts' Vue.prot ...

  4. 【Winform-GataGridView】根据DataGridView中的数据内容设置行的文字颜色、背景色 — 根据状态变色

    C#中可以根据每行内容的不同来对DataGridView数据表格控制每行的文字颜色.背景颜色进行不同的设置. 效果如下: 实现: 在DataGridView的RowPrePaint事件中进行行颜色控制 ...

  5. 学习springboot(三)——springboot+mybatis出现org.apache.ibatis.binding.BindingException: Invalid bound state

    有段时间没搭建过了生疏了,记录下出现此情况且你能通过注解的方式正常进行数据库操作,只是通过mapper.xml不行就可以看看这个了.主要问题应该是配置上,不要太自信自己,再仔细找找.1.查看xml是否 ...

  6. [大数据] hadoop全分布式安装

    一.准备工作 在伪分布式的搭建基础上修改配置,搭建全分布式hadoop环境,伪分布式安装参照 hadoop伪分布式安装. 首先准备4台虚拟机,信息如下: 192.168.1.11 namenode1 ...

  7. C# 4.0

    序言 动态绑定-dynamic class Program { static void Main(string[] args) { ; ; // Rest the mouse pointer over ...

  8. poj 2761 主席树的应用(查询区间第k小值)

    Feed the dogs Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 22084   Accepted: 7033 De ...

  9. Makefile文件试错

    1成功: src = $(wildcard ./*cpp) obj = $(patsubst %.cpp,%.o ,$(src)) target = test $(target) : $(obj) g ...

  10. 在Windows QT下使用ZeroMQ

    zeroMQ作为一个嵌入式消息队列系统,以其轻便灵活的使用方式,极为适合应用程序分布式通讯处理, 或者是一种有效的代替常规saocket通讯的方法. 1)下载地址:http://zeromq.org/ ...