一:簡介
一、作用
1. 塊存儲服務,為運行實例提供穩定的數據塊存儲服務。
2. 塊存儲服務,提供對 volume 從創建到刪除整個生命周期的管理。
二、Block Storage
1. 操作系統獲得存儲空間的方式一般有兩種:
1. 通過某種協議(SAS,SCSI,SAN,iSCSI 等)掛接裸硬盤,然后分區、格式化、創建文件系統;或者直接使用裸硬盤存儲數據(數據庫)。
2. 通過 NFS、CIFS 等 協議,mount 遠程的文件系統。
2. 第一種裸硬盤的方式叫做 Block Storage(塊存儲),每個裸硬盤通常也稱作 Volume(卷) 第二種叫做文件系統存儲。NAS 和 NFS 服務器,以及各種分布式文件系統提供的都是這種存儲。
三、Block Storage Service
1. 塊存儲服務提供對 volume 從創建到刪除整個生命周期的管理。從 instance 的角度看,掛載的每一個 Volume 都是一塊硬盤。OpenStack 提供 Block Storage Service 的是 Cinder,其具體功能是:
1. 提供 REST API 使用戶能夠查詢和管理 volume、volume snapshot 以及 volume type。
2. 提供 scheduler 調度 volume 創建請求,合理優化存儲資源的分配
3. 通過 driver 架構支持多種 back-end(后端)存儲方式,包括 LVM,NFS,Ceph 和其他諸如 EMC、IBM 等商業存儲產品和方案
二:架構
一、核心架構
1. cinder采用的是松散的架構理念,由cinder-api統一管理外部對cinder的調用,cinder-scheduler負責調度合適的節點去構建volume存儲。volume-provider通過driver負責具體的存儲空間,然后cinder內部依舊通過消息隊列queue溝通,解耦各子服務支持異步調用。
2. cinder-sheduler通過filter進行刪選,允許使用第三方的filter,自定義篩選內容。
二、核心組件
1. cinder-api:接收 API 請求,調用 cinder-volume 執行操作。cinder-api 對接收到的 HTTP API 請求會做如下處理:
1. 檢查客戶端傳人的參數是否合法有效
2. 調用 cinder 其他子服務的處理客戶端請求
3. 將 cinder 其他子服務返回的結果序列號並返回給客戶端
2. cinder-scheduler:Cinder 可以有多個存儲節點,當需要創建 volume 時,cinder-scheduler 會根據存儲節點的屬性和資源使用情況選擇一個最合適的節點來創建 volume。
3. cinder-volume:cinder-volume 在存儲節點上運行,OpenStack 對 Volume 的操作,最后都是交給 cinder-volume 來完成的。cinder-volume 自身並不管理真正的存儲設備,存儲設備是由 volume provider 管理的。cinder-volume 與 volume provider 一起實現 volume 生命周期的管理。
1. 通過 Driver 架構支持多種 Volume Provider
2. 定期向 OpenStack 報告計算節點的狀態。cinder-volume 會定期向 Cinder 報告存儲節點的空閑容量來做篩選啟動volume
3. 實現 volume 生命周期管理。Cinder 對 volume 的生命周期的管理最終都是通過 cinder-volume 完成的,包括 volume 的 create、extend、attach、snapshot、delete 等。
4. volume provider:數據的存儲設備,為 volume 提供物理存儲空間。 cinder-volume 支持多種 volume provider,每種 volume provider 通過自己的 driver 與cinder-volume 協調工作。
5. Message Queue:Cinder 各個子服務通過消息隊列實現進程間通信和相互協作。因為有了消息隊列,子服務之間實現了解耦,這種松散的結構也是分布式系統的重要特征。
三、工作流程
1. 用戶向 cinder-api發送創建volume的請求
2. cinder-api對請求做一些必要處理后,通過 Messaging將創建消息發送給cinder-scheduler
3. cinder-scheduler從 Messaging 獲取到 cinder-api發給它的消息,然后執行調度算法,從若干計存儲點中選出節點 A
4. cinder-scheduler通過 Messaging 將創建消息發送給存儲節點A
5. 存儲節點 A 的 cinder-volume從 Messaging 中獲取到 cinder-scheduler發給它的消息,然后通過 driver 在 volume provider 上創建 volume。
三:常用操作
一、volume、類型、快照、備份管理
二、限速、轉移、服務、一致性組、加密管理