Cinder 塊存儲服務(wù)

功能

  • 提供REST API 使用戶能夠查詢和管理 volume、volume snapshot 和 volume type

  • 提供 scheduler 調(diào)度 volume 創(chuàng)建請求

  • 通過 driver 架構(gòu)支持多種后端存儲方式,包括 LVM、NFS。

架構(gòu)

image
  • cinder-api

    接收 API 請求,調(diào)用 cinder 子服務(wù)處理請求

  • cinder-scheduler

選擇合適存儲節(jié)點創(chuàng)建 volume

  • cinder-volume

    管理 volume 的服務(wù),與 provider 協(xié)作管理 volume的生命周期。運行 cinder-volume 的節(jié)點叫存儲節(jié)點

  • volume provider

    數(shù)據(jù)的存儲設(shè)備,為 volume 提供物理存儲空間

    cinder-volume 支持多種 provider

  • Message Queue

    各個子服務(wù)通過消息隊列協(xié)作

  • database

    存放Cinder的必要數(shù)據(jù),一般是MySQL。和nova一樣,數(shù)據(jù)庫全部安裝在控制節(jié)點上。

    物理部署方案

    OpenStack是個分布式系統(tǒng),理論上所有服務(wù)部署在任何地方,只要網(wǎng)絡(luò)能夠互相聯(lián)通。

    cinder-api是控制節(jié)點帽子,cinder-volume是存儲節(jié)點帽子??梢栽谕慌_機器上安裝兩個服務(wù),讓這臺機器既是控制節(jié)點,也是存儲節(jié)點。RabbitMQ 和 MySQL 通常部署在控制節(jié)點上。

    cinder-provider放在哪里?

    一般,volume-provider 是獨立的。cinder-volume 使用 driver與 volume-provider 通信并協(xié)調(diào)工作。所以只需要把driver 和 cinder-volume 放在一起。

    子服務(wù)流程圖

    image

    設(shè)計思想

    Cinder 沿用 Nova相同的設(shè)計思想。

    API 前端服務(wù); Scheduler調(diào)度服務(wù);Worker 工作服務(wù); Driver 框架

Cinder 組件

  1. cinder-api

  2. cinder-scheduler

  3. cinder-volume

    cinder-volume本身不存儲物理塊,它通過 driver 與 volume-provider 通信,共同負責卷的生命周期管理

volume操作

Attach

存儲節(jié)點上本地的邏輯卷通過 attach 操作掛載到計算節(jié)點上的 instance。

而計算節(jié)點和存儲節(jié)點通常位于不同物理機,采用iSCSI協(xié)議在主機間傳輸卷塊。

image

其中,

  • target: 提供 iSCSI 資源的設(shè)備,iSCSI 服務(wù)器

  • initiator:使用 iSCSI 資源的設(shè)備,iSCSI 客戶端

Detach

接觸 volume 和 instance 的關(guān)聯(lián)

Extend

擴大 volume 的容量,狀態(tài)為 available 才能被 extend。正在被 attach 的volume要先 detach。

image

extend 操作不需要 scheduler 的介入,因為要被拓展的 volume 肯定已經(jīng)被掛載在某個 instance 上了。

Delete

狀態(tài)為 available 的 volume 才能被 delete。

cinder-volume 執(zhí)行的是“安全”刪除:將 volume 數(shù)據(jù)抹掉后才刪除。LVM 使用dd操作將 LV 的數(shù)據(jù)清零。

Snapshot

Snapshot 可以為 volume 創(chuàng)建快照,快照保存了 volume 當前的狀態(tài),以后可以通過快照恢復(fù)。

如果一個 volume 存在快照,則這個 volume 不能被刪除。

Backup

將 volume 備份到別的地方(備份設(shè)備),將來通過restore操作恢復(fù)。

Backup 和 Snapshot 的區(qū)別:

  • Snapshot 依賴于源,不能獨立存在; Backup 不依賴源 volume,即使源 volume 不存在也可以進行 restore。

  • Snapshot 與源 volume 通常存放在一起;而 Backup 存放在獨立的備份設(shè)備中,有自己的備份方案和實現(xiàn)。

  • Snapshot 提供快捷的回溯功能; Backup 具有容災(zāi)功能。

Restore

  1. 在存儲節(jié)點上創(chuàng)建一個空白的 volume

  2. 將 backup 的數(shù)據(jù) copy 到空白的 volume

    image

Boot from Volume

Volume 除了當做 instance 的數(shù)據(jù)盤,也可以作為啟動盤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容