功能
提供REST API 使用戶能夠查詢和管理 volume工猜、volume snapshot 和 volume type
提供 scheduler 調(diào)度 volume 創(chuàng)建請(qǐng)求
通過 driver 架構(gòu)支持多種后端存儲(chǔ)方式哩治,包括 LVM钧唐、NFS。
架構(gòu)
-
cinder-api
接收 API 請(qǐng)求眉厨,調(diào)用 cinder 子服務(wù)處理請(qǐng)求
cinder-scheduler
選擇合適存儲(chǔ)節(jié)點(diǎn)創(chuàng)建 volume
-
cinder-volume
管理 volume 的服務(wù)滑黔,與 provider 協(xié)作管理 volume的生命周期。運(yùn)行 cinder-volume 的節(jié)點(diǎn)叫存儲(chǔ)節(jié)點(diǎn)
-
volume provider
數(shù)據(jù)的存儲(chǔ)設(shè)備宵距,為 volume 提供物理存儲(chǔ)空間
cinder-volume 支持多種 provider
-
Message Queue
各個(gè)子服務(wù)通過消息隊(duì)列協(xié)作
-
database
存放Cinder的必要數(shù)據(jù)腊尚,一般是MySQL。和nova一樣满哪,數(shù)據(jù)庫全部安裝在控制節(jié)點(diǎn)上婿斥。
物理部署方案
OpenStack是個(gè)分布式系統(tǒng),理論上所有服務(wù)部署在任何地方哨鸭,只要網(wǎng)絡(luò)能夠互相聯(lián)通民宿。
cinder-api是控制節(jié)點(diǎn)帽子,cinder-volume是存儲(chǔ)節(jié)點(diǎn)帽子像鸡』钣ィ可以在同一臺(tái)機(jī)器上安裝兩個(gè)服務(wù),讓這臺(tái)機(jī)器既是控制節(jié)點(diǎn)只估,也是存儲(chǔ)節(jié)點(diǎn)志群。RabbitMQ 和 MySQL 通常部署在控制節(jié)點(diǎn)上。
cinder-provider放在哪里蛔钙?
一般赖舟,volume-provider 是獨(dú)立的。cinder-volume 使用 driver與 volume-provider 通信并協(xié)調(diào)工作夸楣。所以只需要把driver 和 cinder-volume 放在一起宾抓。
子服務(wù)流程圖
設(shè)計(jì)思想
Cinder 沿用 Nova相同的設(shè)計(jì)思想。
API 前端服務(wù)豫喧; Scheduler調(diào)度服務(wù)石洗;Worker 工作服務(wù); Driver 框架
Cinder 組件
cinder-api
cinder-scheduler
-
cinder-volume
cinder-volume本身不存儲(chǔ)物理塊紧显,它通過 driver 與 volume-provider 通信讲衫,共同負(fù)責(zé)卷的生命周期管理
volume操作
Attach
存儲(chǔ)節(jié)點(diǎn)上本地的邏輯卷通過 attach 操作掛載到計(jì)算節(jié)點(diǎn)上的 instance。
而計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)通常位于不同物理機(jī)孵班,采用iSCSI協(xié)議在主機(jī)間傳輸卷塊涉兽。
其中,
target: 提供 iSCSI 資源的設(shè)備篙程,iSCSI 服務(wù)器
initiator:使用 iSCSI 資源的設(shè)備枷畏,iSCSI 客戶端
Detach
接觸 volume 和 instance 的關(guān)聯(lián)
Extend
擴(kuò)大 volume 的容量,狀態(tài)為 available 才能被 extend虱饿。正在被 attach 的volume要先 detach拥诡。
extend 操作不需要 scheduler 的介入触趴,因?yàn)橐煌卣沟?volume 肯定已經(jīng)被掛載在某個(gè) instance 上了。
Delete
狀態(tài)為 available 的 volume 才能被 delete渴肉。
cinder-volume 執(zhí)行的是“安全”刪除:將 volume 數(shù)據(jù)抹掉后才刪除冗懦。LVM 使用dd
操作將 LV 的數(shù)據(jù)清零。
Snapshot
Snapshot 可以為 volume 創(chuàng)建快照仇祭,快照保存了 volume 當(dāng)前的狀態(tài)披蕉,以后可以通過快照恢復(fù)。
如果一個(gè) volume 存在快照乌奇,則這個(gè) volume 不能被刪除没讲。
Backup
將 volume 備份到別的地方(備份設(shè)備),將來通過restore
操作恢復(fù)华弓。
Backup 和 Snapshot 的區(qū)別:
Snapshot 依賴于源食零,不能獨(dú)立存在困乒; Backup 不依賴源 volume寂屏,即使源 volume 不存在也可以進(jìn)行 restore。
Snapshot 與源 volume 通常存放在一起娜搂;而 Backup 存放在獨(dú)立的備份設(shè)備中迁霎,有自己的備份方案和實(shí)現(xiàn)。
Snapshot 提供快捷的回溯功能百宇; Backup 具有容災(zāi)功能考廉。
Restore
在存儲(chǔ)節(jié)點(diǎn)上創(chuàng)建一個(gè)空白的 volume
-
將 backup 的數(shù)據(jù) copy 到空白的 volume
Boot from Volume
Volume 除了當(dāng)做 instance 的數(shù)據(jù)盤,也可以作為啟動(dòng)盤携御。