扫一扫微信二维码

OpenStack存储篇:Cinder进阶之retype 发布时间:2017-04-28


引言
在企业的数据中心里,往往存在多种异构的存储资源池:例如各大厂商的SAN和NAS阵列,赶时髦的企业兴许也玩上了SDS(Ceph,ScaleIO等等)。多样的存储池引入了多样的存储管理接口,这给数据中心的管理员带来了极大的管理挑战。是否存在一款产品,能够把异构的存储资源管理起来?Cinder就是这样的存在。

相信很多OpenStack用户对Cinder已是耳熟能详了,所以本文就不对Cinder做过多的介绍,而是从一个Cinder相对高阶一些的功能切入,介绍一些Cinder中不太常用却非常有用的case。

volume type(卷类型)
在介绍retype之前,我们先回顾下volume type的作用。volume type常被用来满足用户对volume的一些自定义需求,如选择存储后端,开启thin/thick provisioning(瘦置备与厚置备),deduplication(去重)或compression(压缩)等高级功能。举两个例子:

选择存储后端
假设有两个存储池被接入了Cinder,后端名分别是ssd_pool与hdd_pool。如何实现创建volume时指定后端的存储池呢?
1.    分别创建两个volume type:ssd-type与hdd-type
# cinder type create “ssd-type”
# cinder type create “hdd-type”

2.    为这两个volume type指定后端名:
# cinder type-key “ssd-type” set volume_backend_name=ssd_pool
# cinder type-key “hdd-type” set volume_backend_name=hdd_pool

3.    指定后端创建volume:
# cinder create –-name –-volume-type ssd-type
# cinder create –-name –-volume-type hdd-type

开启thin provisioning
thin provisioning需要存储后端支持。当使用Ceph为存储后端时,并不需要考虑如何开启此功能,因为Ceph的rbd device默认就是thin provisioning且无法选择。这里我们以EMC VNX driver为例说明如何创建一个thin provisioning的volume:
1.    创建一个volume type:thin-type
# cinder type create “thin-type”

2.    为thin-type设定extra-spec:
# cinder type-key “thin-type” set provisioning:type=thin
# cinder type-key “thin-type” set thin_provisioning_support=”True”

3.    创建volume:
# cinder create –-name –-volume-type thin-type

retype
回顾完volume type的作用,大家应该可以猜到retype的功效了。retype常用来改变volume的类型,从而达到切换或开启关闭某项功能的作用。再举两例:

切换volume的thin/thick provisioning
我们只需敲下一条retype的命令即可:
# cinder retype thick-type

更改volume的QoS规格
我们知道Cinder的QoS规格是与volume type关联的,所以如果用户想对volume的QoS规格进行更改的话,需要对volume进行retype操作。
1.    创建两个QoS规格与volume type:
# cinder qos-create qos1 write_iops_sec=500
# cinder qos-create qos2 write_iops_sec=50000
# cinder type create “qos1-type”
# cinder type create “qos2-type”

2.    将QoS规格与volume type关联:
# cinder qos-associate
# cinder qos-associate

3.    创建一个volume,并设置其QoS规格为qos1:
# cinder create –-name –-volume-type qos1-type

4.    重新设置volume的QoS规格为qos2
# cinder retype qos2-type

设置或更改volume的QoS需要注意两点:1)QoS规格可以设置consumer为front-end、back-end或both。front-end表示volume的QoS是在hypervisor端设置并生效的,这种情况下改变volume的QoS规格后,需要重新attach才能生效;2)有朋友可能会问,更改volume的QoS,直接把QoS的设置项改了不就行了吗,为什么要用retype呢?这是因为一旦修改了QoS的设置项,会影响到所有使用该QoS规格的volume,而retype则不会造成群体性伤害。

retype还能做更多吗?
前文例子中,volume type可以被用来选择后端存储池,那retype是否可以用来改变volume的后端存储池呢?答案是可以的,因此retype可以被用来实现volume迁移的功能。

例如,用户有一个属于ssd_pool的volume,突然心血来潮想把其迁移至hdd_pool里,可以用retype命令实现:
# cinder retype --migration-policy on-demand hdd-type

migration-policy有两个选项:never和on-demand。朋友们如果选了never,是无法实现volume迁移的。

对Cinder有一些了解的同学应该知道其另外一个API(migrate)也能实现volume的迁移,其与retype有何不同呢?请持续关注。



© 2012-2017 九州云信息科技有限公司 99Cloud 版权所有 咨询热线:400 006 0472 售后服务热线:400 670 7810 培训咨询热线:400 826 0070   ICP证:浙ICP备12032350号-1

网站建设:信达互联

北京网站建设公司