Openstack cinder有一个可选的功能:镜像盘缓存,可以明显提升从镜像创建云盘的性能。这个改进依赖很多因素,主要看存储后端克隆云盘的速度有多快。
1 测试版本Mitaka,zte FC后端磁阵
2 配置相关修改:
(1)获取project_id和user_id, 然后在/etc/cinder/cinder.conf中[DEFAULT]配置对应字段
[DEFAULT]
cinder_internal_tenant_project_id = 551aa3665faa49278651fe15a532f21e
cinder_internal_tenant_user_id = d57e9f8f9d074a1b8e6a8c6312effafe
查询的命令如下:
[root@2c510cg]# source /root/keystonerc_admin
[root@2c510cg (keystone_admin)]# openstack project list
+----------------------------------+----------+
| ID | Name |
+----------------------------------+----------+
| 551aa3665faa49278651fe15a532f21e | admin |
| 2cf0c345217f48d4a4d474627bdf0874 | services |
+----------------------------------+----------+
You have mail in /var/spool/mail/root
[root@2c510cg (keystone_admin)]# openstack user list
+----------------------------------+------------+
| ID | Name |
+----------------------------------+------------+
| fabb5ca69b1f463dbecb6244d887ed44 | admin |
| 08a7978f8d98424a897261b72c7dfacd | neutron |
| 70f21161c0834fa69dba711df594533a | heat |
| 0b9bd5ff11454e7db29a65bae0be5b42 | nova |
| 2e8df4ae228b44d1b01376ed0b939fc8 | glance |
| 88aa5b6228f8479dbd372a2219d2dfb9 | trove |
| c5e37f66f569495c8d2b3e67c35b2841 | sahara |
| b7f7b0ba1d9840b9982c18c2779492bb | ceilometer |
| d57e9f8f9d074a1b8e6a8c6312effafe | cinder |
| a6016c2c49da4a9f8b828b40b1a4a3b2 | camellia |
| 031630c9a0aa4103b468c931a34a2632 | heat-cfn |
| f047d14ab2764a2aa888bc4a5ee75f5d | watcher |
| 95ff9c033e4b42d2b296901afec8a2c0 | murano |
+----------------------------------+------------+
(2)配置zte后端,参考如下:
[ZTE_FCSAN]
cinder_zte_conf_file = /etc/cinder/cinder_zte_conf_file_ZTE_FCSAN.xml
use_multipath_for_image_xfer = True
volume_backend_name = ks3200_fc
volume_driver = cinder.volume.drivers.zte.zte_ks.ZteFCDriver
image_volume_cache_enabled = True //默认关闭,这里开启镜像盘缓存功能
image_volume_cache_max_size_gb = 50 //默认无限大,这里允许缓存的最大空间为50G
image_volume_cache_max_count = 5 //默认无限大,这里允许缓存的最大镜像盘个数为5个
3.功能测试:
(1)查看环境上的镜像,测试用镜像test_cirros1(id为edbec539-cb27-4af9-a4e4-3858b80916ac)
[root@2c510cg ~(keystone_admin)]# glance image-list
+--------------------------------------+---------------+
| ID | Name |
+--------------------------------------+---------------+
| edbec539-cb27-4af9-a4e4-3858b80916ac | test_cirros1 |
| ebe37614-5bcf-449a-9501-a5ebf78a32a9 | test_image20G |
+--------------------------------------+---------------+
(2)创建镜像盘test11
[root@2c510cg ~(keystone_admin)]#cinder create 1 --image-id edbec539-cb27-4af9-a4e4-3858b80916ac --name test11
(3)除了test11镜像盘,还创建了一个镜像盘image-edbec539-cb27-4af9-a4e4-3858b80916ac,命令规则为image-%(image_id)s,并且metadata中增加了字段readonly=True
[root@2c510cg ~(keystone_admin)]# cinder list
+--------------------------------------+-----------+--------------------------------------------+------+-------------+----------+-------------+
| ID | Status | Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------------------------------------------+------+-------------+----------+-------------+
| 702b3263-d5fe-4578-bee8-8ac04439f942 | available | - | 1 | - | true | |
| 8e4fdaa5-dc21-400b-a776-181a08116190 | available | image-edbec539-cb27-4af9-a4e4-3858b80916ac | 1 | - | false | |
| dc2ae4e8-0465-4a31-a4d7-16576ad6ae82 | available | test11 | 1 | - | false | |
+--------------------------------------+-----------+--------------------------------------------+------+-------------+----------+-------------+
[root@2c510cg ~(keystone_admin)]# cinder show image-edbec539-cb27-4af9-a4e4-3858b80916ac|grep metadata
| metadata | {'readonly': 'True'} |
(4) 再从这个镜像创建云盘,查看日志可以看到,直接走的clone流程,并且大大缩减了创建镜像盘的时间。
注意事项:
1. 从镜像盘缓存克隆盘时,目标盘携带了镜像盘缓存的元数据信息readonly=True
2. 第一次从镜像创建云盘时,如果请求的大小和镜像的virtual size大小不一致,会先创建镜像virtual size大小的云盘,克隆出一个镜像盘缓存后再扩展云盘。经过测试zte后端存储和fujitsu后端存储,正在克隆时不允许云盘克隆。因此建议第一次从镜像创建云盘时,建议请求的云盘大小和镜像的virtual size保持一致。
总结:缓存机制将创建镜像盘的流程从glance下载镜像拷贝数据到云盘的操作改为在后端存储上克隆。测试了zte后端存储和fujitsu后端存储,创建镜像盘的速度提升比较明显。