可以按照下列步骤进行卷类型配置。
-
修改Cinder的配置文件/etc/cinder/cinder.conf,使用enabled_backends启用HBlcok的卷,并且在配置文件中增加HBlock卷相关参数。
说明一次可以在cinder.conf添加多个卷的类型。
单机版示例如下:
[DEFAULT] enabled_backends = lvmdriver-1, stor-1 [stor-1] volume_group=stack_volumes-lvmdriver-2 volume_driver=stor_driver.driver.driver_stor.StorDriver volume_backend_name = stor-1 stor_provider = HBlock stor_api_user = storuser stor_api_password = ************* stor_chap_user = chap_user stor_chap_password = ************ stor_api_endpoint = https://10.183.22.196:1443 write_policy = WriteBack sector_size = 4096 max_sessions = 2 stor_path = /mnt/stor
集群版示例如下:
[DEFAULT] enabled_backends = lvmdriver-1, stor,stor1,stor2 [stor] volume_group=stack_volumes-lvmdriver-2 volume_driver=stor_driver.driver.driver_stor.StorDriver volume_backend_name = stor stor_provider = HBlock stor_api_user = storuser stor_api_password = ************* stor_chap_user = chap_user stor_chap_password = ************ stor_api_endpoint = https://10.183.22.197:1443 stor_chap_user = chap_user stor_chap_password = ************ storage_mode = Local local_storage_class = EC 2+1 high_availability = ActiveStandby write_policy = WriteBack sector_size = 512 ec_fragment_size = 16 max_sessions = 2 min_replica = 2 [stor1] volume_group=stack_volumes-lvmdriver-2 volume_driver=stor_driver.driver.driver_stor.StorDriver volume_backend_name = stor1 stor_provider = HBlock stor_api_user = storuser stor_api_password = ************* stor_chap_user = chap_user stor_chap_password = ************ stor_api_endpoint = https://10.183.22.199:1443 storage_mode = Local local_storage_class = single-copy high_availability = Disabled write_policy = WriteAround sector_size = 512 [stor2] volume_group=stack_volumes-lvmdriver-2 volume_driver=stor_driver.driver.driver_stor.StorDriver volume_backend_name = stor2 stor_provider = HBlock stor_api_user = storuser stor_api_password = ************* stor_chap_user = chap_user stor_chap_password = ************ stor_api_endpoint = https://10.183.22.200:1443 storage_mode = Local local_storage_class = 3-copy high_availability = ActiveStandby write_policy = WriteThrough sector_size = 4096
文件中的参数解释如下:
参数名称 参数说明 是否必须 enabled_backends 需要在系统生效的后端存储名称。
如果有多个需要生效的存储,名称之间用英文逗号隔开。
是 volume_group 卷的组。 是 volume_driver HBlock驱动所在路径。
取值为:stor_driver.driver.driver_stor.StorDriver。
是 volume_backend_name 卷对应的后端存储名称,存储节点的Volume Provider 命名。与enabled_backends定义的后端存储名字保持一致。 是 stor_provider 产品名称。
取值:HBlock。
是 stor_api_user HBlock的管理员用户名。
说明HBlock初始化时,默认用户名为storuser。
是 stor_api_password HBlock的管理员密码。 是 storage_mode HBlock卷的模式。
取值:
Local:本地模式,数据全部保留在本地。
Cache:缓存模式,本地保留部分热数据,全部数据异步存储到OOS中。
Storage:存储模式,本地保留全部数据,并异步存储到OOS中。
默认值为Local。
否 stor_chap_user CHAP验证用名称。
取值:字符串形式,长度范围是3~64,只能由字母、数字、句点( . )、短横线( - )、下划线( _ )、冒号( : )组成,字母区分大小写,且仅支持以字母或数字开头。
否 stor_chap_password CHAP认证密码。
取值:字符串形式,长度范围是12~16,只能由字母、数字或下划线( _ )组成,字母区分大小写。
否 stor_api_endpoint 配置HBlock RESTful API地址和端口。
说明安装HBlock时,默认API端口为1443。
是 stor_path 指定HBlock存储卷数据的数据目录(仅单机版支持)。
说明如果创建卷时不指定数据目录,使用服务器设置的默认数据目录。
否 server_numbers Target所在的服务器数量(仅集群版支持)。
整数形式,取值为[2, n],n为集群内服务器的数量。默认值为2。
否 pool 指定存储池(仅集群版支持),表示最终存储池,卷数据最终落在该存储池内。默认使用集群的基础存储池。 否 cache_pool 指定缓存存储池(仅集群版支持)。如果指定了缓存存储池,卷数据首先写入缓存存储池,然后再存入存储池。
注意存储池与缓存存储池不能是同一个存储池。
否 high_availability 选择卷的高可用类型(仅集群版支持):
ActiveStandby:启用主备,该卷关联对应Target下的所有IQN。
Disabled:不启用主备,该卷关联对应Target下的1个IQN。
默认值为ActiveStandby。
否 local_storage_class 卷冗余模式(仅集群版支持)。
取值:
single-copy:单副本。
2-copy:两副本。
3-copy:三副本。
EC N+M:纠删码模式。其中N、M为正整数,N>M,且N+M≤128。表示将数据分割成N个片段,并生成M个校验数据。
默认值为EC 2+1。
否 min_replica 最小副本数(仅集群版支持)。
对于副本模式的卷,假设卷副本数为X,最小副本数为Y(Y必须≤X),该卷每次写入时,至少Y份数据写入成功,才视为本次写入成功。对于EC N+M模式的卷,假设该卷最小副本数设置为Y(必须满足N≤Y≤N+M),必须满足总和至少为Y的数据块和校验块写入成功,才视为本次写入成功。
取值:整数。对于副本卷,取值范围是[1, N],N为副本模式卷的副本数,默认值为1。对于EC卷,取值范围是[N, N+M],默认值为N。
否 ec_fragment_size 纠删码模式分片大小(仅集群版支持)。卷冗余模式为EC模式时,此设置才生效,否则忽略。
取值:1、2、4、8、16、32、64、128、256、512、1024、2048、4096,单位是KiB。默认值为16。
否 sector_size 设置扇区大小。
取值:512、4096,单位为字节。默认值为4096。
否 write_policy 卷的写策略:
WriteBack(wb):回写,指数据写入到内存后即返回客户端成功,之后再异步写入磁盘。适用于对性能要求较高,稳定性要求不高的场景。
WriteThrough(wt):透写,指数据同时写入内存和磁盘,并在都写成功后再返回客户端成功。适用于稳定性要求较高,写性能要求不高,且最近写入的数据会较快被读取的场景。
WriteAround(wa):绕写,指数据直接写到磁盘,不写入内存。适用于稳定性要求较高,性能要求不高,且写多读少的场景。
默认值为WriteBack(wb)。
否 max_sessions iSCSI Target允许建立的最大会话数。
取值:整数,取值范围是[1, 1024],默认值为1。
否 cloud_bucket_name 已存在的OOS存储桶的名称。
注意请勿开启Bucket的生命周期设定和合规保留。
上云卷必填 cloud_prefix 设置OOS中的前缀名称,设置前缀名称后,卷数据会存在存储桶以前缀命名的类文件夹中。如果未指定前缀,则直接存储在以卷名称命名的类文件夹中。
取值:字符串形式,长度范围是1~256。
否 cloud_access_key OOS AccessKeyID。 上云卷必填 cloud_secret_key OOS SecretAccessKey。 上云卷必填 cloud_endpoint 设置OOS Endpoint。 上云卷必填 cloud_object_size 数据存储在OOS中的大小。 取值:128、256、512、1024、2048、4096、8192,单位是KiB。默认值为1024。
否 cloud_storage_class 设置OOS的存储类型:
STANDARD:标准存储。
STANDARD_IA:低频访问存储。
默认为STANDARD。
否 cloud_compression 是否压缩数据上传至OOS:
Enabled(on):压缩数据上传至OOS。
Disabled(off):不压缩数据上传至OOS。
默认值为Enabled(on)。
否 cloud_sign_version 指定上云签名认证的类型:
v2:V2签名认证。
v4:V4签名认证。
默认值为v2。
否 cloud_region 表示Endpoint资源池所在区域。
V4签名时,此项必填。
条件 delete_cloud_data 删除卷时,是否删除云上的数据: true:删除云上数据。
false:不删除云上数据。
默认值为true。
否 -
使用下列命令,使用配置生效:
cinder type-create volume_backend_name cinder type-key volume_backend_name set volume_backend_name=volume_backend_name
示例1:使步骤1中单机版配置生效
cinder type-create stor-1 cinder type-key stor-1 set volume_backend_name=stor-1
示例2:使步骤1中配置的集群版配置生效
cinder type-create stor cinder type-key stor set volume_backend_name=stor cinder type-create stor1 cinder type-key stor1 set volume_backend_name=stor1 cinder type-create stor2 cinder type-key stor2 set volume_backend_name=stor2
-
重启Cinder服务
如果使用DevStack方式安装OpenStack,重启Cinder服务命令如下:
systemctl restart devstack@c-*
如果使用Packstack安装OpenStack,重启Cinder服务命令如下:
systemctl restart openstack-cinder*
-
配置Multipath(集群版)
1)参考客户端配置章节中的“配置 MPIO”,确保MPIO正确配置。
2)启用Nova的multipath功能(如果是多节点部署,需要到对应的计算节点修改配置):如果使用DevStack方式安装OpenStack,修改/etc/nova-cpu.conf;如果使用Packstack安装OpenStack,修改/etc/nova/nova.conf。
[libvirt] iscsi_use_multipath = true
-
重启Nova服务(集群版)
如果使用DevStack方式安装OpenStack,重启Nova服务命令如下:
systemctl restart devstack@n-*
如果使用Packstack安装OpenStack,重启Nova服务命令如下:
systemctl restart openstack-nova*
说明如果是多节点部署,需要到对应的计算节点重启Nova服务。
-
验证卷是否配置正确
cinder type-list cinder type-show ID #ID为cinder type-list中查询到的ID
例如:
[root@server ~(keystone_admin)]# cinder type-list +--------------------------------------+-------------+---------------------+-----------+ | ID | Name | Description | Is_Public | +--------------------------------------+-------------+---------------------+-----------+ | 40dda59f-f524-4f5d-99a8-da2fc4650463 | stor | - | True | | 693b27f2-c59d-45a8-9870-9cc7283de3bd | stor1 | - | True | | 97a3c362-738f-41cf-8723-f84454707361 | stor2 | - | True | | f292d76d-0de6-447f-b294-418399ba4b5e | __DEFAULT__ | Default Volume Type | True | +--------------------------------------+-------------+---------------------+-----------+ [root@server ~(keystone_admin)]# # cinder type-show 40dda59f-f524-4f5d-99a8-da2fc4650463 +---------------------------------+--------------------------------------+ | Property | Value | +---------------------------------+--------------------------------------+ | description | None | | extra_specs | volume_backend_name : stor | | id | 40dda59f-f524-4f5d-99a8-da2fc4650463 | | is_public | True | | name | stor | | os-volume-type-access:is_public | True | | qos_specs_id | None | +---------------------------------+--------------------------------------+