openstack是一個美國國家航空航天局和rackspace合作研發的雲端運算軟體,以apache許可證授權,并且是一個自由軟體和開放源代碼項目。openstack是iaas(基礎設施即服務)軟體,讓任何人都可以自行建立和提供雲端運算服務。此外,openstack也用作建立防火牆内的“私有雲”(private
cloud),提供機構或企業内各部門共享資源。
cinder提供了openstack的block service(塊服務)。類似于 amazon 的 ebs 塊存儲服務,openstack 中的執行個體是不能持久化的,需要挂載 volume,在 volume 中實作持久化。cinder 就是提供對 volume 實際需要的存儲塊單元的實作管理功能。這個project是從nova裡分出來的。它的前身是nova-volume。雖然nova變得越來越複雜,而塊服務又那麼重要,在folsom版本中,cinder就從nova中分離出來了。因為可以和商業存儲相結合,是以存儲廠商都很積極。
下圖是openstack的内部架構:
下圖是cinder的架構:
要說的一點是其實它的component之間也是通過ampq進行通信的。如果想了解更多可以移步我的專欄:rabbitmq從入門到精通
這個設計還是比較簡單的(當然cinder現在的功能還是比較簡單的,畢竟項目開始不久):
cinder-api:負責接受和處理 rest 請求,并将請求放入
rabbitmq隊列。
cinder-scheduler: 處理任務隊列的任務,并根據預定政策選擇合适的 cinder-volume 節點來執行任務。目前版本的 cinder 僅僅提供了一個 simple scheduler, 該排程器選擇卷數量最少的一個活躍節點來建立卷。
cinder-volume: 該服務運作在存儲節點上,管理存儲空間。每個存儲節點都有一個 volume service,若幹個這樣的存儲節點聯合起來可以構成一個存儲資源池。為了支援不同類型和型号的存儲,目前版本的 cinder 為 volume service 添加如下 drivers。當然在 cinder 的 blueprints 當中還有一些其它的 drivers,以後的版本可能會添加進來。
coraid (aoe)
emc vmax/vnx (iscsi)
glusterfs (glusterfs)
hp 3par (iscsi/fc)
hp lefthand (iscsi)
huawei t-series/dorado (iscsi)
ibm storwize family/svc (iscsi/fc)
ibm xiv (iscsi), lvm (iscsi)
netapp (iscsi/nfs)
nexenta (iscsi)
nfs (nfs)
rbd (ceph)
scality sofs (scality)
sheepdog (sheepdog)
solaris (iscsi)
solidfire (iscsi)
windows server 2012 (iscsi)
zadara (iscsi)
在havana release中新增加的driver如下:
ibm gpfs
ibm zvm
emc isilon (iscsi)
local disk partitions
hitachi hus (df850) (iscsi)
dell equalogic
violin memory v6000 (iscsi)
接下來看一下在openstack中的資料控制流圖:
唯一一點要說明的是iscsi隻是一個執行個體,支援的protocol還有fc, nfc等。
下面我們通過smis來看一下emc的裝置是如何整合到openstack中去的:
如果深入了解一下smis是如何實作存儲的管理的,請移步我之前的一篇文章:
存儲那些事兒(一):異構虛拟化一種實作smis
如果疑問請留言讨論。
尊重原創,轉載請注明出處 anzhsoft: http://blog.csdn.net/anzhsoft/article/details/20472033
參考資料:
1. https://wiki.openstack.org/w/images/3/3b/cinder-grizzly-deep-dive-pub.pdf
2. https://wiki.openstack.org/wiki/cinder
3. http://www.ibm.com/developerworks/cn/cloud/library/1402_chenhy_openstackstorage/