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

Rocky版新功能集锦之二:Cinder_第1张图片

Cinder简介

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

Cinder架构及流程图

Rocky版新功能集锦之二:Cinder_第2张图片

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_第3张图片

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

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