- cinder-api:接收 API 請求,調用 cinder-volume 執行操做。
- cinder-scheduler:scheduler 經過調度算法選擇最合適的存儲節點建立 volume。
- cinder-volume:管理 volume 的服務,與 volume provider 協調工做,管理 volume 的生命週期。運行 cinder-volume 服務的節點被稱做爲存儲節點。
- volume provider:數據的存儲設備,爲 volume 提供物理存儲空間。cinder-volume 支持多種 volume provider,每種 volume provider 經過本身的 driver 與cinder-volume 協調工做。
- Message Queue:Cinder 各個子服務經過消息隊列實現進程間通訊和相互協做。由於有了消息隊列,子服務之間實現瞭解耦,這種鬆散的結構也是分佈式系統的重要特徵。
- Database:Cinder 有一些數據須要存放到數據庫中,通常使用 MySQL。數據庫是安裝在控制節點上的,好比在咱們的實驗環境中,能夠訪問名稱爲「cinder」的數據庫。
openstack通用設計思路:
與nova重複的不在此贅述
- API 前端服務:能夠經過運行多個 API 服務實例輕鬆實現 API 的高可用,好比運行多個 cinder-api 進程
- Scheduler 調度服務
- Worker 工做服務:在 Cinder 中,這個 Worker 就是 cinder-volume 了。
- Driver 框架:存儲節點支持多種 volume provider,包括 LVM, NFS, Ceph, GlusterFS,以及 EMC, IBM 等商業存儲系統。cinder-volume 爲這些 volume provider 定義了統一的 driver 接口,volume provider 只須要實現這些接口,就能夠 driver 的形式即插即用到 OpenStack 中。在 cinder-volume 的配置文件 /etc/cinder/cinder.conf在存儲節點上 中 volume_driver 配置項設置該存儲節點使用哪一種 volume provider 的 driver,下面的示例表示使用的是 LVM。
- Messaging 服務
- Database