功能
提供REST API 使用戶能夠查詢和管理 volume、volume snapshot 和 volume type
提供 scheduler 調度 volume 創建請求
通過 driver 架構支持多種后端存儲方式,包括 LVM、NFS。
架構
-
cinder-api
接收 API 請求,調用 cinder 子服務處理請求
cinder-scheduler
選擇合適存儲節點創建 volume
-
cinder-volume
管理 volume 的服務,與 provider 協作管理 volume的生命周期。運行 cinder-volume 的節點叫存儲節點
-
volume provider
數據的存儲設備,為 volume 提供物理存儲空間
cinder-volume 支持多種 provider
-
Message Queue
各個子服務通過消息隊列協作
-
database
存放Cinder的必要數據,一般是MySQL。和nova一樣,數據庫全部安裝在控制節點上。
物理部署方案
OpenStack是個分布式系統,理論上所有服務部署在任何地方,只要網絡能夠互相聯通。
cinder-api是控制節點帽子,cinder-volume是存儲節點帽子??梢栽谕慌_機器上安裝兩個服務,讓這臺機器既是控制節點,也是存儲節點。RabbitMQ 和 MySQL 通常部署在控制節點上。
cinder-provider放在哪里?
一般,volume-provider 是獨立的。cinder-volume 使用 driver與 volume-provider 通信并協調工作。所以只需要把driver 和 cinder-volume 放在一起。
子服務流程圖
image設計思想
Cinder 沿用 Nova相同的設計思想。
API 前端服務; Scheduler調度服務;Worker 工作服務; Driver 框架
Cinder 組件
cinder-api
cinder-scheduler
-
cinder-volume
cinder-volume本身不存儲物理塊,它通過 driver 與 volume-provider 通信,共同負責卷的生命周期管理
volume操作
Attach
存儲節點上本地的邏輯卷通過 attach 操作掛載到計算節點上的 instance。
而計算節點和存儲節點通常位于不同物理機,采用iSCSI協議在主機間傳輸卷塊。
其中,
target: 提供 iSCSI 資源的設備,iSCSI 服務器
initiator:使用 iSCSI 資源的設備,iSCSI 客戶端
Detach
接觸 volume 和 instance 的關聯
Extend
擴大 volume 的容量,狀態為 available 才能被 extend。正在被 attach 的volume要先 detach。
extend 操作不需要 scheduler 的介入,因為要被拓展的 volume 肯定已經被掛載在某個 instance 上了。
Delete
狀態為 available 的 volume 才能被 delete。
cinder-volume 執行的是“安全”刪除:將 volume 數據抹掉后才刪除。LVM 使用dd
操作將 LV 的數據清零。
Snapshot
Snapshot 可以為 volume 創建快照,快照保存了 volume 當前的狀態,以后可以通過快照恢復。
如果一個 volume 存在快照,則這個 volume 不能被刪除。
Backup
將 volume 備份到別的地方(備份設備),將來通過restore
操作恢復。
Backup 和 Snapshot 的區別:
Snapshot 依賴于源,不能獨立存在; Backup 不依賴源 volume,即使源 volume 不存在也可以進行 restore。
Snapshot 與源 volume 通常存放在一起;而 Backup 存放在獨立的備份設備中,有自己的備份方案和實現。
Snapshot 提供快捷的回溯功能; Backup 具有容災功能。
Restore
在存儲節點上創建一個空白的 volume
-
將 backup 的數據 copy 到空白的 volume
image
Boot from Volume
Volume 除了當做 instance 的數據盤,也可以作為啟動盤。