天天看點

Openstack Cinder概念及規劃Cinder介紹架構設計(參考rackspace解決方案)

這裡隻介紹概念及架構方面,一些具體的操作實戰會在後面部落格中寫。

Cinder介紹

Cinder提供持久化塊存儲,.一個獨立的volume可以靈活的挂載和解除安裝到不同的VM執行個體(就好比我們的一塊硬碟拔插了)。VM執行個體可以用cinder volume作為啟動盤。Block Storage服務無法提供類似于NFS的共享存儲。一個塊裝置同時隻能挂在到一個VM執行個體。

服務元件

Cinder有如下服務元件:

cinder-api:WSGI應用,接受API請求并發送到cinder-volume處理。

cinder-scheduler:排程器,處理消息隊列中的請求,并根據預定政策(Filter Scheduler)選擇合适的cinder-volume節點來完成請求。

cinder-volume:cinder-volume服務運作在存儲節點上,管理塊儲存設備。該服務會對cinder資料庫進行讀寫操作,通過消息隊列與其他服務互動(如cinder-scheduler)。cinder-volume支援多種後端存儲。多個存儲節點可以組成一個存儲資源池。 

cinder-backup:可以将volume備份到多種目标對象(如swift、ceph)。

Messaging queue:在塊存儲服務之間傳遞消息,塊存儲服務和計算節點互動來為VM提供volume。

Openstack Cinder概念及規劃Cinder介紹架構設計(參考rackspace解決方案)

Cinder其他概念

•Back-end Storage Devices.:後端儲存設備,預設采用本地LVM VG。此外,Cinder還支援很多種存儲。

•Users和Tenants (Projects):我的了解是這裡也是基于Keystone的權限控制。對于租戶而言,cinder quota控制可以做如下限制:建立volume的數量、建立快照的數量、每個租戶總空間(volume和快照分享)。使用者有權使用哪些volume是通過租戶來限制的。控制硬體資源quota是對每個租戶啟用的,而授予vomle通路權限的key pairs是對單個使用者啟用的。

Volume Type

Volume Type是一個條件的抽象集合,這個集合用來定義一個特定的服務水準(如慣稱的金、銀、銅),包含一個key/value pairs清單(可通過cinder extra-specs-list檢視)。可以在建立volume時指定volume類型,volume建立後類型是可以修改的。cinder scheduler可以根據volume類型定義來指定存儲後端,而且volume類型還可以用來指定存儲後端的行為依賴的特殊資訊。volume類型名可以任意指定。

當使用cinder-volume節點使用多種後端存儲時,必須啟用filter_scheduler。scheduler使用 filtering和weighing來選擇最優的存儲後端。首先,filter scheduler過濾可用的存儲後端,預設情況下,AvailabilityZoneFilter,CapacityFilter和CapabilitiesFilter被啟用。然後,filter scheduler會通過scheduler weigher權衡先前過濾的存儲後端,預設情況下,CapacityWeigheris被啟用,此種情況下會優先使用容量較多的存儲後端。

Volume類型預設key pairs有:volume_backend_name(在cinder.conf定義的名字)、verdor_name、driver_version、storage_protocol。每個廠商的存儲會有自己的Extra Specs。此外,目前cinder還支援Qos,Cinder的Qos主要依賴于frontend(hypervisor)和backend(存儲)。

Frontend可以通過吞吐量(total_bytes_sec, read_bytes_sec, write_bytes_sec)、IPOS(total_iops_sec,read_iops_sec,write_iops_sec)來控制。

Backend要依據各廠商實際情況。

為了更好的了解,下面引用netapp的方案圖:

Openstack Cinder概念及規劃Cinder介紹架構設計(參考rackspace解決方案)

Cinder基本功能

  • 建立、删除volume
  • 定義volume "types/extra-specs"
  • 鏡像複制到volume或volume複制到鏡像
  • 備份volume(到swift、ceph等)
  • 即時點拷貝(volume快照)
  • 從快照建立volume
  • volume QoS
  • 轉移volume所有權
  • 基于租戶的quato
  • 自定義排程過濾器

架構設計(參考rackspace解決方案)

參考連結:http://www.rackspace.com/blog/laying-cinder-block-volumes-in-openstack-part-2-solutions-design/

scale-out雲架構中,性能瓶頸要考慮很多方面。不僅僅要考慮CPU或RAM,存儲的負載、帶寬和容量需求也很重要。主要有兩種解決方案: 1)COTS伺服器作為volume節點。 2)第三方存儲解決方案。

COTS伺服器

存儲節點采用COTS伺服器作為虛拟存儲陣列(VSA)。cinder-volume可以安裝在每個存儲節點上。推薦配置:

  • 每3TB配置設定一個core
  • 至少2GB記憶體,每1TB存儲增加250M記憶體
  • 至少6塊實體盤
  • 采用RAID5或RAID 10

推薦采用單獨的iSCSI網絡。在存儲容量需求比較低時,這種方案的成本會比較低,但當需要大容量存儲時,就要重新評估了。這種方案的缺點是缺乏備援,擴充性差,還缺少第三方存儲的增值服務:Qos、自動分層、删除功能/壓縮、複制等功能。當有多個cinder-volume存儲節點時,這些節點實際上是獨立的VSA并不共享資料,節點挂掉了後,上面的volume也就用不了。有幾種替代方案:

1)  針對執行個體,在多個存儲節點之間對LV做鏡像。一個linux VM執行個體可以通過同時挂載兩個存儲節點上的volume,然後在這兩個volume之間做鏡像。這種方法提供了備援,但是同時損失了50%的容量,相對比較複雜,同時性能也有損失,類似于在執行個體級别做了軟RAID。

2)存儲節點使用叢集檔案系統,這種類似于active-passive工作模式的商業存儲。這樣造成的性能損失相對少點,也增加了複雜度同時也損失50%的容量。

3)在Cinder項目中未來會增加replication功能,目前存在很多未知數。

第三方商業存儲

當采用第三方存儲的時候,相對于上面那種方案,會有如下好處:

  • 一個第三方存儲提供比單個獨立COTS存儲節點更大的容量。
  • 第三方存儲解決方案可以提供備援。各個廠商都有相應的方式,還能提供精簡配置、分層級基于陣列的快照等。

當使用第三方存儲時可以将cinder-volume安裝在Openstack控制節點或者專用節點。這種方式不是通過LVM的方式,cinder-volume通過第三方的volume驅動來export一個iSCSI volume。

第三方SDS方案

還有一類解決方案中,cinder的後端存儲采用軟體定義存儲方式,如Ceph、GlusterFS等,這種方式可以使用COTS硬體同時提供商業存儲的功能。

繼續閱讀