一、概述
- cinder是提供塊存儲的服務。存儲的分配和消耗是由塊存儲驅動器或者多後端配置的驅動器決定的。還有很多驅動程序可以用:NAS/SAN、NFS、CEPH等。一般運行在openstack的控制節點上。其驅動可以運行在控制節點、計算節點或者單獨的存儲節點上。
二、cinder的作用
- 提供REST API接口,使客戶能夠查詢和管理卷、卷快照以及卷類型
- 協調卷的創建請求,合理優化存儲資源的分配
- 通過驅動架構支持多種後端存儲方式,包括LVM、NFS、Ceph等
三、cinder架構
以創建卷爲例, Cinder的工作流程如下
- 1.用戶向 Cinder-API發送創建卷請求:“幫我創建一個卷“
- 2.Cinder-API對請求做一些必要處理後,向消息隊列發送一條消息:“讓Cinder- Scheduler創建一個卷”;
- 3.Cinder- Scheduler從消息隊列獲取到消息,然後執行調度算法,從若干存儲節點中選出節點A
- 4.Cinder- Scheduler向消息隊列發送一條消息:“讓存儲節點A創建這個卷”;
- 5.存儲節點A的 Cinder- Volume從消息隊列中獲取到消息,然後通過卷提供者的驅動創建卷。
四、cinder主要組件
Cinder-Api
- cinder-api用來接受api請求,並將其路由到cinder-volume執行
Cinder-volume
-
Cinder-Volume用來與塊存儲服務和 Cinder- Scheduler進程進行直接交互。它也可以與這些進程通過一個消息隊列進行交互。 Cinder-Volume服務響應送到塊存儲服務的讀寫請求來維持狀態,它也可以和多種存儲提供者在驅動架構下進行交互。
-
當用戶請求一個存儲資源時,由 Cinder-API負責接受請求, Cinder-Scheduler負責調度資源,而真正執行存儲任務的是Cinder-Volume。
-
這樣的工作機制使得存儲架構非常容易擴展。當存儲資源不足時,可以增加存儲節點(運行Cinder-Volume)。當客戶的請求量太大調度不過來時,可以增加調度(運行Cinder- Scheduler)
Cinder- Scheduler
- Cinder- Scheduler守護進程會選擇最優存儲節點來創建卷,其工作機制與Nova- Scheduler類似。當需要創建卷時,
Cinder- Scheduler根據存儲節點的資源使用情況選擇一個最合適的節點來創建卷。
Cinder- Backup守護進程
- Cinder- Backup服務提供任何種類備份捲到一個備份存儲提供者。就像 Cinder- Volume服務,它與多種存儲提供者在驅動架構下進行交互。
消息隊列
- 消息隊列作用是在塊存儲的進程之間路由信息。 Cinder各個子服務通過消息隊列實現進程間通信和相互協作。
五、cinder常用管理命令
列表類
1 cinder list //列出所有volumes
2 cinder type-list //列出所有volume類型
3 cinder snapshot-list //列出所有快照snapshot
4 cinder backup-list //列出所有備份backup
5 cinder qos-list //列出所有qos
6 cinder service-list //列出所有服務
7 cinder transfer-list //列出所有transfer
8 cinder list-extensions //列出所有擴展extensions
創建類
1 cinder create <size> --dispaly-name --volume-type //創建volume
2 cinder snapshot-create <volume> --dispaly-name //創建快照
3 cinder backup-create <volume> --dispaly-name //創建備份
4 cinder qos-create <name> <key=value> //創建qos
5 cinder type-create <name> //創建類型
6 cinder transfer-create <volume> --dispaly-name //創建傳輸
顯示詳細信息
1 cinder show <volume> //顯示volume詳情
2 cinder metadata-show <volume> //顯示volume下元數據
3 cinder backup-show <backup> //顯示backup詳情
4 cinder qos-show <qos> //顯示qos詳情
5 cinder snapshot-show <snapshot> //顯示快照詳情
6 cinder snapshot-metadata-show <snapshot>//顯示快照元數據詳情
7 cinder transfer-show <transfer> //顯示傳輸詳情
8 cinder quota-show <tenant_id> //顯示一個租戶下面的quota詳情
刪除類
1 cinder delete <volume> //刪除volume
2 cinder force-delete <volume> //強制刪除volume
3 cinder backup-delete <backup> //刪除備份
4 cinder qos-delete <qos_specs> --force <True|False> //刪除qos
5 cinder quota-delete <tenant_id> //刪除租戶下的quota
6 cinder snapshot-delete <snapshot> //刪除快照
7 cinder type-delete <id> //刪除類型
8 cinder transfer-delete <transfer> //刪除傳輸
遷移
cinder migrate [--force-host-copy <True|False>]
<volume> <host> //遷移
重命名
cinder rename [--display-description <display-description>]
<volume> [<display-name>] //重命名