openstack學習-理解存儲管理

openstack存儲類型

openstack中存儲能夠分爲兩類,以下圖所示:
openstack學習-理解存儲管理
目前openstack支持三種類型的持久存儲:塊存儲、對象存儲和文件系統存儲算法

openstack學習-理解存儲管理
由於目前Manila使用較少,重點爲CInder和Swift
openstack學習-理解存儲管理sql

塊存儲Cinder

Cinder簡介

Cinder在OpenStack中的位置和做用
openstack學習-理解存儲管理
Cinder的核心功能是對卷的管理,容許對卷、卷的類型、卷的快照、卷備份進行處理。它爲後端不一樣的存儲設備提供給了統一的接口,不一樣的塊設備服務廠商在Cinder中實現其驅動,能夠被Openstack整合管理數據庫

Cinder的架構

openstack學習-理解存儲管理

  • Cinder Client封裝Cinder提供rest接口,以CLI形式提供用戶使用
  • 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數據庫

openstack學習-理解存儲管理

Cinder 組件-API

Cinder API對外提供REST API,對操做需求進行解析,並調用處理方法:swift

  • 卷create/delete/list/show
  • 快照create/delete/list/show
  • 卷attach/detach(nova調用)
  • 其餘:
    Volume types
    Qutotas
    Backups

    Cinder組件-Scheduler

    Cinder scheduler負責收集後端上報的容量,能力信息,根據設定的算法完成捲到指定cinder-volume的調度,它經過過濾和稱權,篩選出合適的後端:
    openstack學習-理解存儲管理
    根據後端的能力進行篩選後端

  • Drivers按期報告後端的能力和狀態
  • 管理員建立的卷類型
  • 建立卷時,用戶指定卷類型

Cinder組件-Volume

Cinder volume多節點部署,使用不一樣的配置文件、接入不一樣的後端設備,由各存儲廠商插入Driver代碼與設備交互,完成設備容量和能力信息收集,卷操做等。
openstack學習-理解存儲管理
Cinder默認的後端驅動是LVMapi

典型工做流程

openstack學習-理解存儲管理
Cinder-volume會按期收集底層後端的容量信息,並通知Scheduler更新內存中的Backend信息架構

建立卷類型的目的是爲了篩選不一樣的後端存儲,例如SSD,STAT,高性能,低性能,經過建立不一樣的自定義卷類型,建立卷時自動給篩選出合適的後端存儲負載均衡

Cinder API

openstack學習-理解存儲管理

  • 檢查卷參數合法性(用戶輸入,權限,資源是否存在等)
  • 準備建立參數字典,預留和提交配額
  • 在數據庫中建立對應的數據記錄
  • 經過消息列隊將請求和參數發送到Scheduler

Cinder Scheduler

openstack學習-理解存儲管理
提取收到的請求參數
經過配置的filter和輸入參數後端進行過濾異步

  • Avialability_zone_filter
  • Capactiy_filter
  • Capabilities_filter
  • Affinity_filter
  • Weigher計算後端進行權重分佈式

  • CapactiyWeigher/AllocatedCapacityWeigher
  • ChanceWeigher
  • GoodnessWeigher
  • 選取最優的Backend並經過消息列隊將請求發送到指定的後端

和Nova Scheduler相似,Cinder Scheduler也是通過Filter刪選合適條件的後端,而後使用Weigher計算後端進行權重排序,最終選擇出最合適的後端存儲

Cinder Volume

openstack學習-理解存儲管理

提供接收到的請求參數
調用對應的Driver在後端建立世紀的卷
使用Driver返回的模型更新數據庫中的記錄

Cinder掛載卷流程

openstack學習-理解存儲管理
掛卷流程:掛卷時經過Nova和Cinder的配合最終將遠端的卷鏈接到虛擬機所在的Host節點上,並最終經過虛擬機管理程序映射到內部的虛擬機中

  • Nova調用Cinder api建立卷,傳遞主機的信息,如hostname,ISCSI initiator name,FC WWWPNs
  • Cinder API將該信息傳遞給Cincer Volume
  • Cinder Volume經過建立卷時保存的host信息找到對應的Cinder Driver
  • Cinder Driver通知存儲容許該主機訪問該卷,並返回該存儲的鏈接信息(如ISCSI iqn,portal,FC target WWPN,NFS path)
  • Nova調用針對不一樣存儲類型進行主機識別磁盤的代碼(Cinder提供了brick模塊用於參考)實現識別磁盤或者文件設備
  • Nova通知Cinder已經進行了掛載
  • Nova將主機的設備信息傳遞給hypervisor來實現虛擬機掛載磁盤

    Cinder主要操做

    openstack學習-理解存儲管理

對象存儲Swift

Swift簡介

Swift提供高度可用、分佈式、最終一致的對象存儲服務

openstack學習-理解存儲管理
Swift並非文件系統或者試試的數據存儲系統,它稱爲對象存儲,用於永久類型的靜態數據的長期存儲,這些存儲能夠檢索,調整,必要時進行更新
最蛇和存儲的數據類型的例子是虛擬機鏡像,圖片存儲,郵件存儲和存檔備份
由於沒有中心的單元或主控節點,Swift提供了更強的擴展性,冗餘和持久性
Swift常常用於存儲鏡像或者用於存儲虛擬機實例卷的備份副本
openstack學習-理解存儲管理

Swift應用
鏡像存儲後端:在Openstack中與鏡像服務Glance結合,爲其存儲鏡像文件
靜態數據存儲:因爲swift的擴展能力,適合存儲日誌文件和數據備份倉庫

Swift架構

openstack學習-理解存儲管理
Swift中對象存儲URL以下所示:
https://swift.example.com/va/account/container/object
URL有兩個部分:集權位置和存儲位置
集羣位置:swift.example.com/v1/
存儲位置(對象):/account/containr/oject
存儲位置有以下三種:
/account
帳戶存儲位置是惟一命名的存儲區域,其中包含帳戶自己的元數據(描述性信息)以及帳戶中的容器列表
/account/container
容器存儲位置是帳號內的用戶定義的存儲區域,其中包含容器自己和容器中的對象列表的元數據
/account/container/object
對象存儲位置存儲了數據對象及元數據的位置。

Swift組件

Proxy Server:對外提供對象服務API,因爲採用無狀態的REST請求協議,能夠進行橫向擴展來負載均衡
Account Server:提供帳戶元數據和統計信息,並維護所含容器列表的服務,每一個帳號的信息被存儲在一個SQLite數據庫中
Container Server:提供容器元數據和統計信息,並維護所含對象列表的服務,每一個容器的信息也存儲在一個SQLite數據庫中
Object Server:提供對象元數據和內容服務,每一個對象的內容會以文件的形式存儲在文件系統中,元數據會做爲文件屬性來存儲
Replicator:檢測本地分區副本和遠程副本是否一致,發現不一致時會採用推式(Push)更新遠程副本,而且確保被標記刪除的對象從該文件系統中移除
Updater:當對象因爲高負載的緣由而沒法當即更新時,任務將會被序列化在本地文件系統中進行排隊,以便服務恢復後進行異步更新
Auditor:檢查對象,容器和帳戶的完整性,若是發現比特級錯誤,文件將被隔離,並複製其餘的副本以覆蓋本地損壞的副本;其餘類型錯誤會被記錄到日誌中
Account Reaper:移除標記爲刪除的帳戶,刪除其所包含的全部容器和對象

Swift API

Swift經過Proxy server向外提供基於HTTP的REST服務接口,對帳戶、容器和對象進行CRUD等操做

openstack學習-理解存儲管理

Swift數據模型

三層邏輯結構:Accout/Contianer/Object
每層節點數沒有限制,能夠任意擴展
openstack學習-理解存儲管理

相關文章
相關標籤/搜索