1. 程式人生 > >Rocky版新功能集錦之二:Cinder

Rocky版新功能集錦之二:Cinder

摘要:8月31日,備受業界關注的OpenStack第18個版本Rocky正式釋出。在人工智慧,機器學習,NFV和邊緣計算等使用者的驅動下,Rocky版本的OpenStack變得比以往更強大,它帶來了數十種增強功能,並支援各種硬體架構,包括裸機管理服務等,這些更新和升級能夠很好的滿足基礎設施的新需求。OpenStack正力爭為業界提供一個開放,完善,穩定,功能齊全的最優解決方案。今天將圍繞Rocky版本的Cinder專案,對專案的新特性進行展示,業界需要掌握的關鍵點都在這裡。

Cinder簡介

Cinder即塊儲存服務,為例項提供了塊儲存裝置。塊儲存服務提供了管理卷的基礎架構以及通過與計算服務nova的合作,能夠將卷掛載到例項上。塊儲存服務同時能管理卷的快照、卷的備份以及卷的型別。

Cinder架構及流程圖

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版本釋出之際,九州雲將於10月10日上午10:00,正式線上同步釋出全球首款基於 Rocky版本第七代全新開源雲管理平臺 ——Animbus® 7.0系列產品。

10月10日10點,誠邀業界同仁一同品鑑。