openstack組件之cinder

一、塊存儲服務

    塊存儲服務提供對 volume 從創建到刪除整個生命週期的管理

    從 instance 的角度看,掛載的每一個 Volume 都是一塊硬盤。

    OpenStack 提供 Block Storage Service 的是 Cinder,其具體功能是:

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

    • 提供 scheduler 調度 volume 創建請求,合理優化存儲資源的分配

    • 通過 driver 架構支持多種 back-end(後端)存儲方式,包括 LVM,NFS,Ceph 和其他諸如 EMC、IBM 等商業存儲產品和方案


二、cinder架構

upload-ueditor-image-20160610-1465514629979036483.jpg

1、cinder-api:接收 API 請求,調用 cinder-volume 執行操作。

2、cinder-volume:管理 volume 的服務,與 volume provider協調工作,管理 volume 的生命週期。運行 cinder-volume 服務的節點被稱作爲存儲節點。

3、cinder-scheduler:scheduler 通過調度算法選擇最合適的存儲節點創建 volume。

4、volume provider :數據的存儲設備,爲 volume 提供物理存儲空間。 

cinder-volume 支持多種 volume provider,每種 volume provider 通過自己的 driver 與cinder-volume 協調工作。

5、Message Queue:Cinder 各個子服務通過消息隊列實現進程間通信和相互協作。因爲有了消息隊列,子服務之間實現瞭解耦,這種鬆散的結構也是分佈式系統的重要特徵。

6、Database:Cinder 有一些數據需要存放到數據庫中,一般使用 MySQL。數據庫是安裝在控制節點上的


三、物理部署方案

    cinder 的服務會部署在兩類節點上,控制節點和存儲節點。 

    cinder-api 和 cinder-scheduler 部署在控制節點上。

    cinder-volume 在存儲節點上。

    RabbitMQ 和 MySQL 通常部署在控制節點上。

    volume provider 一般來講是獨立的。

    cinder-volume 使用 driver 與 volume provider 通信並協調工作。

    所以只需要將 driver 與 cinder-volume 放到一起就可以了。


四、從 volume 創建流程看 cinder-* 子服務如何協同工作

cinder.png

1、客戶(以是 OpenStack 最終用戶,也可以是其他程序)向 API(cinder-api)發送請求:“幫我創建一個 volume”

2、API 對請求做一些必要處理後,向 Messaging(RabbitMQ)發送了一條消息:“讓 Scheduler 選擇合適的存儲節點”

3、Scheduler(cinder-scheduler)從 Messaging 獲取到 API 發給它的消息,然後執行調度算法,從若干計存儲點中選出節點 A

4、Scheduler 向 Messaging 發送了一條消息:“讓存儲節點 A 創建這個 volume”

5、存儲節點 A 的 Volume(cinder-volume)從 Messaging 中獲取到 Scheduler 發給它的消息,然後通過 driver 在 volume provider 上創建 volume。


五、子服務詳解

1、cinder-api 

    cinder-api對接收到的 HTTP API(Volume 生命週期相關的操作)請求會做如下處理:

    • 檢查客戶端傳人的參數是否合法有效

    • 調用 cinder 其他子服務的處理客戶端請求

    • 將 cinder 其他子服務返回的結果序列號並返回給客戶端

2、cinder-scheduler

    創建Volume時,cinder-scheduler會基於容量、Volume Type等條件選擇出最合適的存儲節點,然後讓其創建Volume

3、cinder-volume

    • cinder-volume 在存儲節點上運行,OpenStack 對 Volume 的操作,最後都是交給 cinder-volume 來完成的。 

    • cinder-volume 自身並不管理真正的存儲設備,存儲設備是由 volume provider 管理的。

    • cinder-volume 與 volume provider 一起實現 volume 生命週期的管理。它們之間是通過driver實現通信。


六、卷的操作

1、掛載

2、卸載

3、刪除



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章