[雲計算]OpenStack - Cinder


Cinder在OpenStack中的位置

Cinder是OpenStack的一個組件,從Folsom版本從Nova-Volume中分離出來,為雲平台提供統一接口,按需分配的,持久化的塊存儲服務(類似於Amazon EBS服務)。

Cinder的核心功能是對卷的管理,允許對卷,卷的類型,卷的快照、卷備份進行處理。它為后端不同的存儲設備提供了統一的接口,不同的塊設備服務廠商再Cinder中實現其驅動支持以與OpenStack進行整合。

Cinder邏輯架構

  • Cinder Client:封裝 Cinder 提供的rest接口,以CLI形式提供給用戶使用。比如:nova-compute、horizon 。

  • Cinder-api:對外提供rest API,對操作需求進行解析,對API進行路由尋找相應的處理方法,包含卷的增刪改查、快照增刪改查、備份、Volume type管理、掛載/卸載(Nova調用)等。

  • Cinder-scheduler:負責收集backend上報的容量、能力信息,跟設定的算法完成卷到指定cinder-volume的調度。

  • Cinder-volume:多節點部署,使用不同的配置文件、接入不同的backend設備,由各存儲廠商插入driver代碼與設備交互完成設備容量和能力信息收集、卷操作。

  • Cinder-backup:實現將卷的數據備份到其他存儲介質(目前Swift/Ceph/TSM提供了驅動)

  • SQL DB:提供存儲卷、快照、備份、service等數據,支持Mysql、PG、MSSQL等SQL數據庫

  • AMPQ:Advanced Message Queuing Protocol,一個提供統一消息服務的應用層標准高級消息隊列協議。應用層協議的一個開放標准,為面向消息的中間件設計,不受產品和語言差異的影響。

Cinder組件

組件 功能
Cinder-api cinder模塊對外唯一入口,cinder的endpoint,接受和處理rest請求
Cinder-scheduler 根據預定的調度過濾策略以及權重計算策略,選出合適的后端來處理任務
Cinder-volume 負責與后端存儲進行對接,通過各廠商提供的driver將OpenStack操作轉換為存儲操作
Cinder-backup 實現將卷的數據備份到其他的存儲介質

Cinder可擴展性

Cinder物理部署

  • Cinder-api,Cinder-scheduler,Cinder-volume可以選擇部署到一個節點上,也可以分別部署。
  • API采用AA模式,由rabbitmq以負載均衡模式向3個節點分發任務,並同時從rabbitqmq收取Cinder-volume上報的能力信息,調度時,scheduler通過在DB中預留資源從而保證數據一致性。
  • Cinder-volume也采用AA模式,同時上報同一個backend容量和能力信息,並同時接受請求進行處理。
  • Rabbitmq,支持主備或集群(6.0及后續的版本)。
  • GaussDB,支持主備。

Cinder內部邏輯

Cinder卷管理

Cinder模塊職能

Cinder創卷流程

Cinder與SAN對接

Cinder后端對接SAN,相應的Cinder-api接口或者命令對應磁陣的操作如下:LUN,邏輯單元號,卷

cinder操作 SAN上的對應操作
create_volume 創建一個LUN,執行命令(createlun –n name –lunsize 1 …)
delete_volume 刪除一個LUN,執行命令(dellun –lun 5)
extend_volume 不同driver實現方式不同,LUN直接擴展或者創建個擴展LUN,然后進行合並
create_volume_from_image 創建一個LUN,將鏡像下載到主機側,將lun掛載給主機,將鏡像數據拷貝到LUN,然后解除與主機的關系
Initialize_connection 將LUN和主機進行關聯
terminate_connection 解除LUN和主機的關聯關系
create_snapshot 創建快照,createsnapshot –lun 5 –n name

Cinder掛卷和卸卷流程分析

KVM場景下使用陣列掛卷流程

  1. 陣列側添加主機和LUN的映射
  2. 主機側掃描scsi總線
  3. 多路徑生成虛擬磁盤
  4. Nova調用libvirt接口將磁盤添加到xml中

Nova掛卷流程

  • 發現iSCSI target

  • 添加一個iSCSI target node

  • 登錄iSCSI target

  • 設置iSCSI會話開機自啟動

  • 調用多路徑的smartscan腳本掃描LUN

  • 在/dev/disk/by-id目錄下生成多路徑的設備

  • nova調用libvirt接口將生成的sd設備添加到虛擬機的xml文件中

Nova卸載卷流程

  • Libvirt將虛擬機xml中的設備刪除

  • 根據libvirt xml中記錄的磁盤的wwn,找到對應的sd設備

  • 調用smartdelete腳本,將sd設備刪除

  • 刪除多路徑的wwn軟連接

  • 檢查iscsi會話是否還有必要存在,如果沒有必要,將所有的iscsi會話logout


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM