[Cinder] 存储 Qos
目录
前言
Cinder 支持 front-end
和 back-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的更多相关文章
- cinder存储节点 后端采用lvm、nfs安装配置
#cinder存储节点 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #cinder存储节点 #cinder后端采 ...
- OpenStack 存储服务 Cinder存储节点部署NFS(十七)
Cinder存储节点部署 1.安装软件包 yum install -y nfs-utils rpcbind 提示:早期版本安装portmap nfs-utils :包括基本的NFS命令与监控程序 rp ...
- OpenStack 存储服务 Cinder存储节点部署LVM(十六)
Cinder存储节点部署 部署在192.168.137.12主机 1.安装lvm2软件包 yum install lvm2 -y 2.启动LVM的metadata服务并且设置该服务随系统启动 syst ...
- CentOS7安装OpenStack(Rocky版)-09.安装Cinder存储服务组件(控制节点)
本文分享openstack的Cinder存储服务组件,cinder服务可以提供云磁盘(卷),类似阿里云云盘 ----------------------- 完美的分隔线 -------------- ...
- openstack核心组件——cinder存储服务(11)
一.cinder 介绍: 理解 Block Storage 操作系统获得存储空间的方式一般有两种: 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系 ...
- OpenStack 存储服务 Cinder存储节点部署LVM (十四)
部署在block(10.0.0.103)主机 一)配置lvm 1.安装lvm2软件包 yum install lvm2 -y 2.启动LVM的metadata服务并且设置该服务随系统启动 system ...
- cinder存储服务
一.cinder 介绍: 理解 Block Storage 操作系统获得存储空间的方式一般有两种: 1.通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系 ...
- OpenStack核心组件-cinder存储服务
1. cinder 介绍 Block Storage 操作系统获得存储空间的方式一般有两种: 1) 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文 ...
- S1_搭建分布式OpenStack集群_10 cinder 存储节点配置
一.安装配置lvm2安装LVM包:# yum install -y lvm2 启动LVM元数据服务,并将其配置为在系统启动时启动:# systemctl enable lvm2-lvmetad.ser ...
随机推荐
- 3.flask核心与源码剖析
1.session session存储了特定用户会话所需的属性及配置信息,这样,当用户在应用程序的 Web 页之间跳转时,存储在 session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下 ...
- IDEA Debug模式下启动慢的解决办法
工程没有做什么大的改动,近期Idea在debug模式下启动耗时800s +,run模式下200s.Idea debug模式启动的时候会有这样的提示: 方法断点会戏剧性的降低debug的速度.当时并没有 ...
- struts2与SpringMVC区别
1.springmvc基于方法开发的,struts2基于类开发的. 2.单例和多例的区别:springmvc在映射的时候,通过形参来接收参数的,是将url和controller方法映射,映射成功后,s ...
- STL源码阅读-traits与迭代器
迭代器模式 提供一种方法,使之能够依序访问容器的各个元素,而又无需暴露容器的内部表述方式 STL设计的中心思想在于将数据容器和算法分离开,容器和算法分开设计,迭代器则是两者之间的胶着剂,一般迭代器的设 ...
- 使用SpringBoot做Javaweb时,数据交互遇到的问题
有段时间没做过javaweb了,有点生疏了,js也忘记得差不多,所以今天下午做前后端交互的时候,传到后台的参数总是为空,前端控制台了报一个String parameter “xxx” is not p ...
- Automatches
import os def combine(ArrayList,count): ArrayList=list(ArrayList) newArrayList=[] for i in range(0,A ...
- Gym - 101908H Police Hypothesis (树链剖分/LCT+字符串哈希)
题意:有一棵树,树上每个结点上有一个字母,有两种操作: 1)询问树上两点u,v间有向路径上有多少个字母和某个固定的字符串相匹配 2)将结点u的字母修改为x 树剖+线段,暴力维护前缀和后缀哈希值(正反都 ...
- centos7时区同步(时间24小时格式显示)
我们在服务器安装linux系统时,有时会因服务器时间或者时区不正确导致程序出现错误. 首先输入date命令查看当前的时间和时区.要注意CST EDT 等时区的区别 介绍一种与时间服务器上时间同步的 ...
- ${filename}用法一:${file内部的#%的匹配方式}
假设我们定义了一个变量为: file=/dir1/dir2/dir3/my.file.txt 我们可以用${ }分别替换获得不同的值: ${file#*/}:拿掉第一条/及其左边的字串:dir1/di ...
- Ruby笔记
1.数组遍历方法总结 array = (1..10).to_a length = array.length length.times do t print "#{array[t]} &quo ...