OpenStack Cinder存儲(chǔ)服務(wù)
Openstack 從 Folsom 開始使用 Cinder 替換原來(lái)的Nova-Volume服務(wù),為 Openstack 云平臺(tái)提供塊存儲(chǔ)服務(wù)。
Cinder架構(gòu)
/- ( LDAP ) [ Auth Manager ] --- | \- ( DB ) | | cinderclient | / \ | [ Web Dashboard ]- -[ api ] -- < AMQP > -- [ scheduler ] -- [ volume ] -- ( iSCSI ) \ / | novaclient | | | | < REST >
Cinder服務(wù)
-
API service:負(fù)責(zé)接受和處理Rest請(qǐng)求,并將請(qǐng)求放入RabbitMQ隊(duì)列。Cinder提供Volume API V2, 我沒有找到格式很好的在線文檔,大體可以參見Openstack block storage API V1
-
Scheduler service: 處理任務(wù)隊(duì)列的任務(wù),并根據(jù)預(yù)定策略選擇合適的Volume Service節(jié)點(diǎn)來(lái)執(zhí)行任務(wù)。目前版本的cinder僅僅提供了一個(gè)Simple Scheduler, 該調(diào)度器選擇卷數(shù)量最少的一個(gè)活躍節(jié)點(diǎn)來(lái)創(chuàng)建卷。
-
Volume service: 該服務(wù)運(yùn)行在存儲(chǔ)節(jié)點(diǎn)上,管理存儲(chǔ)空間。每個(gè)存儲(chǔ)節(jié)點(diǎn)都有一個(gè)Volume Service,若干個(gè)這樣的存儲(chǔ)節(jié)點(diǎn)聯(lián)合起來(lái)可以構(gòu)成一個(gè)存儲(chǔ)資源池。為了支持不同類型和型號(hào)的存儲(chǔ),當(dāng)前版本的Cinder為Volume Service如下drivers。當(dāng)然在Cinder的blueprints當(dāng)中還有一些其它的drivers,以后的版本可能會(huì)添加進(jìn)來(lái)。
-
本地存儲(chǔ):LVM, Sheepdog
-
網(wǎng)絡(luò)存儲(chǔ): NFS, RBD (RADOS)
-
IBM: XIV, Storwize V7000, SVC storage systems
-
Netapp: NFS存儲(chǔ);ISCSI存儲(chǔ)則需要OnCommand 5.0和Data ONTAP 7-mode storage systems with installed iSCSI licenses
-
EMC: VNX, VMAX/VMAXe
-
Solidfire: Solidfire cluster
-
Cinder服務(wù)的部署
上述的Cinder服務(wù)都可以獨(dú)立部署,cinder同時(shí)也提供了一些典型的部署命令:
-
cinder-all: 用于部署all-in-one節(jié)點(diǎn),即API, Scheduler, Volume服務(wù)部署在該節(jié)點(diǎn)上。
-
cinder-scheduler: 用于將scheduler服務(wù)部署在該節(jié)點(diǎn)上。
-
cinder-api: 用于將api服務(wù)部署在該節(jié)點(diǎn)上。
-
cinder-volume: 用于將volume服務(wù)部署在該節(jié)點(diǎn)上。
Cinder如何支持典型存儲(chǔ)
從目前的實(shí)現(xiàn)來(lái)看,Cinder對(duì)本地存儲(chǔ)和NAS的支持比較不錯(cuò),可以提供完整的Cinder API V2支持,而對(duì)于其它類型的存儲(chǔ)設(shè)備,Cinder的支持會(huì)或多或少的受到限制,下面是Rackspace對(duì)于Private Cloud存儲(chǔ)給出的典型配置:
1. 本地存儲(chǔ)
對(duì)于本地存儲(chǔ),cinder-volume可以使用lvm驅(qū)動(dòng),該驅(qū)動(dòng)當(dāng)前的實(shí)現(xiàn)需要在主機(jī)上事先用lvm命令創(chuàng)建一個(gè)cinder- volumes的vg, 當(dāng)該主機(jī)接受到創(chuàng)建卷請(qǐng)求的時(shí)候,cinder-volume在該vg上創(chuàng)建一個(gè)LV, 并且用openiscsi將這個(gè)卷當(dāng)作一個(gè)iscsi tgt給export.
當(dāng)然還可以將若干主機(jī)的本地存儲(chǔ)用sheepdog虛擬成一個(gè)共享存儲(chǔ),然后使用sheepdog驅(qū)動(dòng)。
2. EMC
3. Netapp
Cinder在IT環(huán)境中的主要問題
目前版本的Cinder在IT私有云場(chǎng)景中,從硬件兼容性,高性能,高可靠性,水平擴(kuò)展能力,應(yīng)用兼容性等維度來(lái)看,Cinder還存在不少問題需要解決。Cinder依然任重道遠(yuǎn)。
1. 對(duì)共享存儲(chǔ)的支持有限
-
不支持FC SAN;
-
支持的存儲(chǔ)設(shè)備有限,即使對(duì)于EMC, IBM這樣的的主流存儲(chǔ)廠商,也只能支持寥寥幾款存儲(chǔ);
2. 對(duì)存儲(chǔ)設(shè)備的使用不夠高效
-
Cinder卷管理的基本原則是在共享存儲(chǔ)上創(chuàng)建一個(gè)lun, 然后把這個(gè)lun作為一個(gè)block device給attach到一個(gè)虛擬機(jī)上。但是對(duì)于當(dāng)前主流的存儲(chǔ),能夠支持的最大lun數(shù)量非常有限,比如我們經(jīng)常使用的Huawei S3900, 最多能支持288個(gè)lun,如果一個(gè)VM平均3個(gè)卷,不管這些VM是offline還是online, 這個(gè)存儲(chǔ)最多只能支持90個(gè)VM。
3. 存儲(chǔ)管理帶來(lái)的性能損耗
-
比如Cinder Volume的LVM驅(qū)動(dòng)使用iSCSI export一個(gè)邏輯卷,從管理的角度來(lái)看是解決了存儲(chǔ)共享的問題,從而能夠支持比如遷移這樣的功能,但是這樣的設(shè)計(jì)勢(shì)必會(huì)導(dǎo)致較大的性能損耗,和直接訪 問相比,通常iSCSI export會(huì)增加30%以上的IO延遲。
4. 數(shù)據(jù)如何遷移
-
企業(yè)IT環(huán)境中大量的數(shù)據(jù),一般都是存放在SAN甚至是磁帶設(shè)備上的,這些數(shù)據(jù)如何無(wú)損,安全的接入到Cloud呢?VMware因此提供了RDM, KVM和XEN也支持PVSCSI, 但是Cinder沒有考慮這個(gè)。
5. Cinder的調(diào)度器不完善
-
Cinder提供的simple scheduler基本沒有實(shí)用價(jià)值,
-
cinder-scheduler僅能在初始放置時(shí)保證系統(tǒng)負(fù)載均衡,但是如果是發(fā)生了運(yùn)行時(shí)負(fù)載嚴(yán)重不平衡,cinder就沒法處理了。
6. Cinder服務(wù)的可靠性問題
-
cinder-api和cinder-scheduler是系統(tǒng)的單點(diǎn),cinder并沒有提供這兩個(gè)服務(wù)提供任何HA和load balance設(shè)計(jì),所以整個(gè)系統(tǒng)可靠性還是擴(kuò)展性會(huì)比較受限制。
-
cinder-db如果發(fā)生不可恢復(fù)的故障,能夠保證用戶數(shù)據(jù)能恢復(fù)嗎?
介紹內(nèi)容出處:http://blog.csdn.net/luo_brian/article/details/8592692
