王建宇
[摘 要]在目前開(kāi)源世界的存儲(chǔ)項(xiàng)目中,不同的項(xiàng)目都有側(cè)重點(diǎn),然而,存儲(chǔ)接口需求、擴(kuò)展、運(yùn)維和成本是企業(yè)級(jí)存儲(chǔ)產(chǎn)品的四大關(guān)注點(diǎn)。Ceph是一種支持對(duì)象存儲(chǔ)、塊存儲(chǔ)、文件存儲(chǔ)的獨(dú)特統(tǒng)一的系統(tǒng),具有高可用、易管理、免費(fèi)等特點(diǎn)。本文介紹了當(dāng)下流行的Ceph分布式存儲(chǔ)架構(gòu),描述了Ceph的基本結(jié)構(gòu)每個(gè)組件的作用及如何創(chuàng)建和優(yōu)化Ceph集群,并就Ceph作為OpenStack的后端存儲(chǔ)、高效集成,及CRUSH算法進(jìn)行了分析。
[關(guān)鍵詞]OpenStack;Nova;Cinder;Ceph;RADOS
doi:10.3969/j.issn.1673 - 0194.2016.04.121
[中圖分類(lèi)號(hào)]TP333 [文獻(xiàn)標(biāo)識(shí)碼]A [文章編號(hào)]1673-0194(2016)04-0-01
1 OpenStack的后端存儲(chǔ)
OpenStack是目前最流行的開(kāi)源云平臺(tái)技術(shù),是云計(jì)算公司賴(lài)以實(shí)現(xiàn)IaaS服務(wù)形式的重要解決方案。OpenStack所包含的組件相對(duì)較多,各個(gè)組件間存在依賴(lài)關(guān)系,如每個(gè)組件都會(huì)依賴(lài)Keystone,Nova還依賴(lài)于Glance、Neutron和Cinder;此外多個(gè)組件,如Neutron、Cinder和Glance還存在多種存儲(chǔ)后端。
2 Ceph的基本原理和架構(gòu)
Ceph是一個(gè)開(kāi)源、統(tǒng)一、分布式的存儲(chǔ)系統(tǒng),是一套適于大規(guī)模的、宏大的分布式存儲(chǔ)解決方案,同時(shí)提供文件、塊與對(duì)象服務(wù)的系統(tǒng),適于大PB級(jí)別的應(yīng)用。Ceph的主要目標(biāo)是設(shè)計(jì)成基于POSIX的沒(méi)有單點(diǎn)故障的分布式文件系統(tǒng),使數(shù)據(jù)能容錯(cuò)和無(wú)縫的復(fù)制。
(1)Ceph Client是Ceph文件系統(tǒng)的用戶(hù),透明地為用戶(hù)提供訪(fǎng)問(wèn)接口。
Ceph客戶(hù)端包括下面幾項(xiàng)服務(wù)接口:
Block Devices:Ceph RADOS Block Device(RBD)服務(wù)提供可調(diào)整大小、thin-provisioned并支持快照和克隆的塊設(shè)備。Object Storage:Ceph Object Storage服務(wù)提供了與亞馬遜S3和openstack Swift兼容的RESTful API接口。
(2)元數(shù)據(jù)服務(wù)器MDS的工作就是緩存和同步分布式元數(shù)據(jù),管理文件系統(tǒng)的名稱(chēng)空間。雖然元數(shù)據(jù)和數(shù)據(jù)兩者都存儲(chǔ)在對(duì)象存儲(chǔ)集群,但兩者分別管理,支持可擴(kuò)展性。事實(shí)上,元數(shù)據(jù)在一個(gè)元數(shù)據(jù)服務(wù)器集群上被進(jìn)一步拆分,元數(shù)據(jù)服務(wù)器能夠自適應(yīng)地復(fù)制和分配名稱(chēng)空間,避免出現(xiàn)熱點(diǎn)。
(3)OSD:將數(shù)據(jù)和元數(shù)據(jù)作為對(duì)象存儲(chǔ)。每一個(gè)disk、SSD或RAID group或其他一個(gè)物理存儲(chǔ)設(shè)備都成為一個(gè)OSD,主要負(fù)責(zé)存儲(chǔ)和查找對(duì)象,并且負(fù)責(zé)向該對(duì)象的復(fù)制節(jié)點(diǎn)分發(fā)和恢復(fù)。OSD是訪(fǎng)問(wèn)文件系統(tǒng)并向其中寫(xiě)入數(shù)據(jù)的后臺(tái)進(jìn)程,它提供了通過(guò)集群網(wǎng)絡(luò)訪(fǎng)問(wèn)文件系統(tǒng)的能力。
(4)Monitor:執(zhí)行監(jiān)視功能,維護(hù)集群的成員和狀態(tài),提供強(qiáng)一致性的決策。但是故障管理的一些要素是在對(duì)象存儲(chǔ)本身中執(zhí)行的。當(dāng)對(duì)象存儲(chǔ)設(shè)備發(fā)生故障或者新設(shè)備添加時(shí),監(jiān)視器就檢測(cè)和維護(hù)一個(gè)有效的集群映射。這個(gè)功能按一種分布的方式執(zhí)行,這種方式中映射升級(jí)可以和當(dāng)前的流量通信。
3 Ceph與Swift的比較
Ceph和Swift是開(kāi)源分布式存儲(chǔ)系統(tǒng)中的兩個(gè)優(yōu)秀代表,Swift最早起源于2008年,設(shè)計(jì)目標(biāo)十分純粹,就是一個(gè)優(yōu)秀的、可以和Amazon S3相媲美的對(duì)象存儲(chǔ)系統(tǒng)。從技術(shù)上講,Swift的特點(diǎn)主要體現(xiàn)在設(shè)計(jì)目標(biāo)明確,就是要做一個(gè)純粹的對(duì)象存儲(chǔ)系統(tǒng),因此不會(huì)考慮Ceph所強(qiáng)調(diào)的統(tǒng)一存儲(chǔ)特性。同時(shí),為了便于和其他項(xiàng)目、應(yīng)用集成,Swift選擇了Python語(yǔ)言進(jìn)行開(kāi)發(fā)。
在實(shí)際使用中,畢竟還是需要進(jìn)行方案選擇,如果你只需要用塊存儲(chǔ),那當(dāng)然是Ceph,如果只需要用對(duì)象存儲(chǔ),那當(dāng)然是Swift。各自有擅長(zhǎng)的地方,不過(guò)現(xiàn)在Ceph也支持對(duì)象存儲(chǔ),那么,即要用對(duì)象存儲(chǔ)又要用塊存儲(chǔ)的場(chǎng)合,是用Swift還是Ceph呢?筆者一般是這樣推薦的:
(1)如果節(jié)點(diǎn)數(shù)量很大,推薦用Ceph單獨(dú)做塊,用Swift做對(duì)象存儲(chǔ),因?yàn)樵诠?jié)點(diǎn)數(shù)量較大時(shí),Ceph的維護(hù)成本比Swift要高,大多數(shù)場(chǎng)景實(shí)際應(yīng)用的時(shí)候會(huì)發(fā)現(xiàn),大部分?jǐn)?shù)據(jù)都可以放到對(duì)象存儲(chǔ)上。
(2)如果節(jié)點(diǎn)數(shù)量少,那就用Ceph統(tǒng)一搞定,因?yàn)橐话阏J(rèn)為生產(chǎn)環(huán)境中最小的分布式存儲(chǔ)應(yīng)當(dāng)有5個(gè)節(jié)點(diǎn),所以,如果節(jié)點(diǎn)數(shù)量少于10個(gè)或者剛到10個(gè),那構(gòu)建兩個(gè)分布式存儲(chǔ)顯然是不理想的(考慮到空間劃分問(wèn)題)。
(3)如果團(tuán)隊(duì)里有技術(shù)高手能較好解決Ceph大規(guī)模部署問(wèn)題,最好用Ceph。
4 OpenStack與Ceph的整合
對(duì)于一個(gè)IaaS系統(tǒng),涉及存儲(chǔ)的部分主要是塊存儲(chǔ)服務(wù)模塊、對(duì)象存儲(chǔ)服務(wù)模塊、鏡像管理模塊和計(jì)算服務(wù)模塊。具體針對(duì)OpenStack而言,則分別對(duì)應(yīng)為其中的Cinder、Swift、Glance和Nova等4個(gè)項(xiàng)目。
在計(jì)算服務(wù)部分,目前正在推動(dòng)將Ceph FS作為Nova計(jì)算節(jié)點(diǎn)的本地文件系統(tǒng)。使用CephFS作為OpenStack中的共享實(shí)例存儲(chǔ)可以在OpenStack中使用Ceph塊設(shè)備鏡像,Ceph塊設(shè)備鏡像被當(dāng)作集群對(duì)象。還可以使用OpenStack Glance來(lái)存儲(chǔ)鏡像在Ceph塊設(shè)備中。OpenStack的Nova、Glance、Cinder之間沒(méi)有數(shù)據(jù)傳輸,快速創(chuàng)建虛擬機(jī),只需要管理一個(gè)統(tǒng)一存儲(chǔ)。
5 結(jié) 語(yǔ)
總體而言,Ceph是面向大型存儲(chǔ)應(yīng)用的,用以解決企業(yè)各種應(yīng)用類(lèi)型的復(fù)雜情況,需要專(zhuān)業(yè)的技術(shù)服務(wù)團(tuán)隊(duì)作技術(shù)支撐。中小企業(yè)沒(méi)有這么多數(shù)據(jù)要存儲(chǔ)也沒(méi)有足夠的錢(qián)請(qǐng)專(zhuān)業(yè)技術(shù)服務(wù)團(tuán)隊(duì)運(yùn)維,那么中小企業(yè)也可以使用NFS、ISCSI用于存儲(chǔ)虛擬機(jī)鏡像或作為虛擬機(jī)的附加卷來(lái)配合OpenStack使用。
主要參考文獻(xiàn)
[1]李剛建.基于虛擬化技術(shù)的云計(jì)算平臺(tái)架構(gòu)研究[J].吉林建筑工程學(xué)院學(xué)報(bào),2011(1).
[2]閃四清.ERP系統(tǒng)原理和實(shí)施[M].第2版.北京:清華大學(xué)出
版社,2013.