Rocky版新功能集锦之二:Cinder


摘要

8月31日,备受业界关注的OpenStack第18个版本Rocky正式发布。在人工智能,机器学习,NFV和边缘计算等用户的驱动下,Rocky版本的OpenStack变得比以往更强大,它带来了数十种增强功能,并支持各种硬件架构,包括裸机管理服务等,这些更新和升级能够很好的满足基础设施的新需求。OpenStack正力争为业界提供一个开放,完善,稳定,功能齐全的最优解决方案。今天将围绕Rocky版本的Cinder项目,对项目的新特性进行展示,业界需要掌握的关键点都在这里。


Rocky版新功能集锦之二:Cinder


Cinder简介


Cinder即块存储服务,为实例提供了块存储设备。块存储服务提供了管理卷的基础架构以及通过与计算服务nova的合作,能够将卷挂载到实例上。块存储服务同时能管理卷的快照、卷的备份以及卷的类型。


Cinder架构及流程图


Rocky版新功能集锦之二:Cinder


Cinder组件解读


cinder-api:接收API请求,同时将请求送到cinder-volume中来执行操作。


cinder-volume:与底层存储、cinder-scheduler以及消息队列等诸多进行直接交互。运行cinder-volume的节点被称作为存储节点。现在有很多的底层driver来适配不同的存储后端,例如rbd(ceph集群),lvm,nfs等。


cinder-scheduler:调度器用来选择合适的cinder-volume节点来进行volume的最终创建。其功能类似于计算服务中的nova-scheduler。


cinder-backup:备份服务提供了将任何类型的volume备份至存储后端。和cinder-volume类似,拥有driver的设计架构,适配了很多的存储后端,例如ceph,swift等。


Cinder Rocky新特性


scheduler插件能获知operation类型


现在对于scheduler插件来说,operation的类型是可知的,例如操作到底是create_volume还是migrate_volume是可以从RequestSpec中获取。这样带来的好处就是,厂商各自写的scheduler就可以针对某些特定的操作进行过滤,而不必所有的操作。现在支持的operation值有如下:


– create_volume

– extend_volume

– create_snapshot

– retype_volume

– migrate_volume

– manage_existing

– manage_existing_snapshot

– create_group


Code Reivew链接:点击这里


随容量变化的QoS规格


R版本之前,已经支持设置固定QoS的功能。现在能依据比例决定性能,设置per_gb容量的QoS规格即容量的大小决定了性能的高低。一个卷类型可以绑定多个QoS规格,最后传给消费者生效。支持的QoS规格有如下:


– read_iops_sec_per_gb // 每秒每GiB的读IOPs

– write_iops_sec_per_gb // 每秒每GiB的写IOPs

– total_iops_sec_per_gb // 每秒每GiB的总IOPs

– read_bytes_sec_per_gb // 每秒每GiB的读吞吐量(字节)

– write_bytes_sec_per_gb // 每秒每GiB的写吞吐量(字节)

– total_bytes_sec_per_gb // 每秒每GiB的总吞吐量(字节)


例如:设置total_iops_sec_per_gb为30,total_bytes_sec_per_gb为1048576(1MiB),然后根据这个QoS创建100GiB的volume,则最后volume的限制为3000总IOPs和100MiB/s吞吐量。


Code Review链接:点击这里


随容量变化的最小值QoS规格


由于过小的volume而导致分配到计算结果非常小的IOPs或者吞吐量。由此,可以设置per_gb的最小值来保证可以分配到比较客观的QoS。支持的QoS规格有如下:


– read_iops_sec_per_gb_min // 每秒每GiB的最小读IOPs

– write_iops_sec_per_gb_min // 每秒每GiB的最小写IOPs

– total_iops_sec_per_gb_min // 每秒每GiB的最小总IOPs

– read_bytes_sec_per_gb_min // 每秒每GiB的最小读吞吐量(字节)

– write_bytes_sec_per_gb_min // 每秒每GiB的最小写吞吐量(字节)

– total_bytes_sec_per_gb_min // 每秒每GiB的最小总吞吐量(字节)


Code Review链接:点击这里


备份支持设置可用域AZ


从微版本3.51及以上开始,cinder backup的创建支持接收可用域AZ即指定备份存放的AZ。可以通过CLI来创建指定AZ,如下命令:


`cinder –os-volume-api-version 3.51 backup-create <volume> –availability-zone AVAILABILITY_ZONE ……`


Code Review链接:点击这里


卷类型支持设置可用域AZ


对于卷类型,AZ已经被支持了,如下:


– availability_zones现在已经是AZ volume type的一个预留值。管理员可以通过为volume type设置key/value例如availability_zones: az1,az2来做AZ的限制。

– availability_zones只能在creating或者retyping卷的时候用来过滤backends。

– 从微版本3.52及以上开始,卷类型能通过extra spec进行过滤查询。


Code Review链接:点击这里


备份服务支持多线程


Cinder backup服务现在支持运行多进程来尽可能的利用多核的优势。在通过并发执行多个压缩备份或者恢复的时候,性能方面有显著的提升。进程数量可以通过`backup_worker`进行配置。


Code Review链接:点击这里


从image创建volume时添加image签名认证


在glance创建image时,如果extra_properties中存在CERT_UUID、HASH_METHOD、SIGNATURE以及KEY_TYPE时,会生成image的签名。此时,如果从image创建volume,则会对image进行签名认证,如果签名认证失败,则不会创建相应的volume,状态置为error。


默认现在为开启签名认证,当然管理员也可以通过更新verify_glance_signatures来更改行为。


同时,会往cinder库中的volume_glance_metadata表中添加一个附加的image元数据signature_verified来标识在创建的过程中签名认证是否被执行了。


Code Review链接:点击这里


cinder-manage命令新增reset_active_backend


场景为,A为主节点,B为从节点,当A挂掉后,故障转移从A到B后,需要一个机制能够将B提升为master backend,这样B能够复制到重新准备的C后端。


因此,命令reset_active_backend能够直接重置backend而不需要手动的修改数据库。


usage: cinder-manage db reset_active_backend [-h] [–enable-replication]

                                             [–active-backend-id ACTIVE_BACKEND_ID]

                                             –backend-host BACKEND_HOST

optional arguments:

  -h, –help            show this help message and exit

  –enable-replication  Set replication status to enabled (default: False).

  –active-backend-id ACTIVE_BACKEND_ID

                        Change the active backend ID (default: None).

  –backend-host BACKEND_HOST

                        The backend host name.


Code Review链接:点击这里


RBD驱动支持Active-Active的复制


RBD驱动添加支持Active-Active的复制。允许用户配置multiple volume backends,它们参与复制且均来自于同一集群的成员。


Code Review链接:点击这里


针对RBD驱动的rbd_exclusive_cinder_pool参数设置


如果查询每一个image(rbd)的预分配的大小,消耗大量的时间去采集provisioned_capacity_gb,而此时所使用的pool只供给cinder服务使用,那么为了提高reporting的速度以及取消大小的采集,我们可以设置rbd_exclusive_cinder_pool此参数。


Code Review链接:点击这里


RBD驱动list_manageable_snapshots


通过RBD驱动获取rbd backend中可管理的snapshots。


Code Review链接:点击这里


RBD驱动报告backend状态


在获取volume service状态时,返回backend_state字段用于标识backend状态。

Code Review链接:点击这里


以上是对Cinder Rocky的新特性进行简单概述,欲了解其他第三方驱动更新及其他特性,可以参考“链接,掌握详细信息。



搞个大事件

Rocky版新功能集锦之二:Cinder

值此Rocky版本发布之际,九州云将于10月10日上午10:00,正式线上同步发布全球首款基于 Rocky版本第七代全新开源云管理平台 ——Animbus® 7.0系列产品。


10月10日10点,诚邀业界同仁一同品鉴。

始发于:Rocky版新功能集锦之二:Cinder