可以按照下列步驟進行卷類型配置。
修改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 = //10.183.22.196:1443 write_policy = WriteBack sector_size = 4096 max_sessions = 2 stor_path = /mnt/stor flatten_volume_from_snapshot=false max_clone_depth=5集群版示例如下:
[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 = //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 flatten_volume_from_snapshot=false max_clone_depth=5 [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 = //10.183.22.199:1443 storage_mode = Local local_storage_class = single-copy high_availability = Disabled write_policy = WriteAround sector_size = 512 flatten_volume_from_snapshot=true max_clone_depth=5 [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 = //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驅動所在路徑。
取值:
如果驅動作為獨立Python包進行安裝,取值為stor_driver.driver.driver_stor.StorDriver。
如果復制stor_driver到Cinder驅動目錄的方式安裝驅動,取值為:cinder.volume.drivers.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。
否 fault_domains 卷的服務端連接位置信息。根據存儲池的故障域,創建Target所在服務器的列表(僅集群版支持),以便創建LUN時,LUN關聯的Target優先從該服務器列表中選擇所在服務器。例如存儲池為rack級別,其拓撲圖涵蓋rack1、rack2、rack3、rack4中的節點,且faultDomains指定rack1、rack2,那么創建LUN時,LUN關聯的Target優先從rack1、rack2所包含的此存儲池的服務器列表里進行選擇。
注意
存儲池的故障域為path級別時,不能設置該參數。
如果LUN指定了高速緩存池和最終存儲池,則從高速緩存池池中選擇節點列表。如果LUN只指定了最終存儲池,則從最終存儲池中選擇節點列表。
取值:以節點的形式添加,節點的級別可以到room、rack、server。可以指定多個節點,但是節點的個數要小于等于serverNumbers。支持一個節點添加多次,但是每次只能選一個server,并且選擇的server不能與前面重復。如果一個節點出現的次數過多導致節點內的全部server都被選擇,則系統會忽略此節點,從后面的節點中繼續選擇。
否 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。
否 redundancy_overlap 卷的折疊副本數(僅集群版支持)。在數據冗余模式下,同一份數據的不同副本/分片默認分布在不同的故障域,當故障域損壞時,允許根據卷的冗余折疊原則,將多份數據副本放在同一個故障域中,但是分布在不同的path上。
注意
如果存儲池故障域級別為path,此參數不生效。
取值:對副本模式,取值范圍是[1,副本數],默認值為1;對于EC模式,取值范圍是[1,M+N],默認值為1。
否 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。
否 flatten_volume_from_snapshot 是否斷開卷與快照的關系鏈:
true:斷開。
false:不斷開。
默認值為false。
否 max_clone_depth 最大克隆卷深度,當超過設置的最大深度時,新創建的卷會自動執行斷鏈。
取值:整數,取值范圍是[0, 15],默認值為5。0表示不支持克隆卷。
否 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 | +---------------------------------+--------------------------------------+