1. GPFS和CEPH的初次亮相
GPFS,是一個(gè)高性能的共享并行文件系統(tǒng),自誕生起,就為高性能、數(shù)據(jù)共享、開放、安全而生。為了更好的融入IBM光譜存儲(chǔ)大家庭,我有了個(gè)更好聽的名字——SPECTRUM SCALE,當(dāng)然對(duì)于我來(lái)說(shuō),這不僅僅是名字的變更,也意味在我身上,增加了關(guān)于閃存、容災(zāi)、備份、云平臺(tái)接入等諸多特性,我扮演的角色更加重要,職能定位也愈加明晰了。關(guān)于未來(lái),我也有自己的想法,有更大的愿景,希望能和數(shù)據(jù)中心的其它小朋友們相處愉快,和諧。
CEPH,是一個(gè)00后,名字來(lái)源于寵物章魚的一個(gè)綽號(hào),頭像就是一只可愛的軟體章魚,有像章魚觸角一樣并發(fā)的超能力。我平常主要活躍在云計(jì)算領(lǐng)域,經(jīng)過(guò)多年的脫胎換骨,不斷迭代,我積攢了良好的口碑,好用,穩(wěn)定,關(guān)鍵還免費(fèi),我可以提供對(duì)象,塊和文件級(jí)存儲(chǔ)的接口,幾乎可以覆蓋所有…哇,說(shuō)著說(shuō)著突然感覺自己原來(lái)無(wú)所不能呢,當(dāng)然,目前我還在長(zhǎng)身體的階段,很多特性在趨于完善,希望未來(lái)我們可以相互促進(jìn)成長(zhǎng)。
2. GPFS的前世今生
作為一款成熟的商業(yè)產(chǎn)品,GPFS的發(fā)展史早已百轉(zhuǎn)千回了,在揭開GPFS的面紗之前,我們還是先來(lái)掃掃盲,復(fù)習(xí)一下在GPFS集群架構(gòu)中涉及到的基本概念和組件。
GPFS架構(gòu)解藕
a) Cluster:GPFS的組成架構(gòu),由一系列的節(jié)點(diǎn)和NSD組成,集群的配置文件通常保存在兩臺(tái)主備的節(jié)點(diǎn)上。
b) Node:安裝了GPFS軟件的主機(jī),它可以通過(guò)直接或者通過(guò)網(wǎng)絡(luò)訪問(wèn)其它節(jié)點(diǎn)的方式來(lái)訪問(wèn)存儲(chǔ),每個(gè)節(jié)點(diǎn)在集群配置中有不同的角色。
c) Cluster manager:負(fù)責(zé)整個(gè)集群配置的正確性和完整性,主要負(fù)責(zé)監(jiān)控磁盤租約,檢測(cè)節(jié)點(diǎn)故障和控制節(jié)點(diǎn)的故障恢復(fù),共享配置信息,選舉文件管理節(jié)點(diǎn)等任務(wù)。
d) File system manager:維護(hù)文件系統(tǒng)中磁盤的可用性信息,管理磁盤空間,文件系統(tǒng)配置,磁盤配額等。
e) Block:一個(gè)集群中單個(gè)I/O操作和空間分配的最大單位。
f) NSD:提供全局?jǐn)?shù)據(jù)訪問(wèn)的集群組件,如果節(jié)點(diǎn)和磁盤間沒有直接連接,則NSD最好具有主服務(wù)節(jié)點(diǎn)和輔服務(wù)節(jié)點(diǎn)。
g) Chunk: FPO架構(gòu)中的概念,它是一組block塊的集合,看起來(lái)像一個(gè)大的block,一般用于大數(shù)據(jù)環(huán)境。
h) Failure Group:一組共享故障的磁盤組,當(dāng)其中一塊盤失效時(shí),整個(gè)組會(huì)同時(shí)失效。
i) Metadata:包括集群配置信息和非用戶數(shù)據(jù)。
j) Quorum Nodes:用于保持集群活動(dòng)的仲裁節(jié)點(diǎn),一般有兩種仲裁方式,節(jié)點(diǎn)仲裁和帶Tiebreakerdisk(心跳盤)的仲裁
上述組件如何有機(jī)的組合在一起提供存儲(chǔ)服務(wù)呢,把以上組件拼接起來(lái),就可以得到下圖所示的集群大體架構(gòu):
GPFS使用方案
基本架構(gòu)了解了,那怎么用呢?先祭出三張架構(gòu)圖,業(yè)內(nèi)人士一看應(yīng)該懂,不明白沒關(guān)系,往下針對(duì)這幾張圖稍作解釋:
GPFS在系統(tǒng)架構(gòu)設(shè)計(jì)十分靈活,豐富的功能延伸出了多種組網(wǎng)方式,而每種組網(wǎng)方式適配不同的應(yīng)用模式,常見組網(wǎng)方式包括SAN、NSD、SNC、Remote Cluster和混合組網(wǎng)方式。
Storage Area Network(SAN) Model要求計(jì)算節(jié)點(diǎn)直接掛載存儲(chǔ),并且充當(dāng)計(jì)算節(jié)點(diǎn)、NSD Server、NSD Client三種角色。NSD Server通過(guò)存儲(chǔ)網(wǎng)絡(luò)或直連的方式連接到存儲(chǔ)設(shè)備上,前端通信協(xié)議為GE,后端通信協(xié)議為FC或Infiniband,適用于小規(guī)模集群。
Network Shared Disk(NSD) Server Model要求計(jì)算節(jié)點(diǎn)安裝GPFS軟件,并充當(dāng)NSD Client角色,使用單獨(dú)的服務(wù)器充當(dāng)NSD Server,負(fù)責(zé)處理I/O。NSD磁盤BuildingBlock的方式,每?jī)膳_(tái)服務(wù)器通過(guò)直連的方式連接到NSD Server上,前端通信協(xié)議為10GE或Infiniband,后端通信協(xié)議為FC或Infiniband,適用于大規(guī)模集群擴(kuò)展。
Shared Nothing Cluster(SNC)Model要求計(jì)算節(jié)點(diǎn)安裝GPFS軟件,并充當(dāng)NSD Client角色,使用單獨(dú)的服務(wù)器充當(dāng)NSD Server,負(fù)責(zé)處理I/O。NSD采用服務(wù)器自帶硬盤,或者獨(dú)立存儲(chǔ),數(shù)據(jù)之間不使用寬條帶方式進(jìn)行分布,而采用FPO方式進(jìn)行排布。前端通信協(xié)議為10GE或Infiniband,后端通信協(xié)議為FC或Infiniband。適用于Hadoop和Mapreduce環(huán)境。
Remote Cluster Mount Model要求GPFS提供在多個(gè)GPFS集群間共享數(shù)據(jù)的服務(wù),GPFS在其他集群mount本集群的資源,其訪問(wèn)磁盤和本地訪問(wèn)磁盤體驗(yàn)類似,這種跨集群訪問(wèn)可以是在一個(gè)數(shù)據(jù)中心也可以是跨遠(yuǎn)距離的WAN。在一個(gè)多集群配置中每個(gè)集群可以進(jìn)行分別的管理,在簡(jiǎn)化管理的同時(shí)提供一個(gè)多組織數(shù)據(jù)訪問(wèn)的視圖。前端通信協(xié)議為10GE或Infiniband,后端通信協(xié)議為FC或Infiniband,適用于同城或異地部署環(huán)境。
混合組網(wǎng)環(huán)境下,GPFS允許在一個(gè)集群中混合部署多種組網(wǎng)環(huán)境,例如集群中部分主機(jī)采用Storage Area Network (SAN) Model,部分主機(jī)采用Network Shared Disk (NSD) Server Model方式進(jìn)行組網(wǎng)。當(dāng)多個(gè)組網(wǎng)類型同時(shí)存在于一個(gè)集群中時(shí),影響的只是集群使用NSD的方式,對(duì)于上層主機(jī)對(duì)數(shù)據(jù)的訪問(wèn)沒有影響。
GPFS應(yīng)用場(chǎng)景
在傳統(tǒng)DB2數(shù)據(jù)庫(kù)雙活方案GDPC的使用場(chǎng)景中,為了實(shí)現(xiàn)跨站點(diǎn)的雙活+容災(zāi),底層存儲(chǔ)方案選用GPFS,雙站點(diǎn)架構(gòu)中,兩個(gè)站點(diǎn)均配備主機(jī)和存儲(chǔ)資源,每個(gè)站點(diǎn)的存儲(chǔ)形成一個(gè)failure group, 遠(yuǎn)程訪問(wèn)對(duì)端存儲(chǔ)采用nsd server的方式訪問(wèn),兩個(gè)failure group間完全冗余,任何一個(gè)站點(diǎn)出現(xiàn)故障都不影響文件系統(tǒng)的正常使用,并通過(guò)第三方站點(diǎn)的一臺(tái)服務(wù)器和nsd作為仲裁節(jié)點(diǎn),是真正意義上的雙活。
GPFS可以用來(lái)替代HDFS作為大數(shù)據(jù)的底層存儲(chǔ),GPFS FPO+Symphony作為相對(duì)Mapreduce更領(lǐng)先的分布式計(jì)算框架,可以更靈活和支持和對(duì)接企業(yè)的IT使用場(chǎng)景。
在IBM的部分企業(yè)級(jí)云產(chǎn)品中,GPFS FPO也被用來(lái)作為私有云產(chǎn)品的底層存儲(chǔ)來(lái)使用,用來(lái)存儲(chǔ)虛機(jī)鏡像和介質(zhì),這一點(diǎn)上使用和CEPH也極為相似。
3.CEPH的發(fā)展之路
作為云計(jì)算的三架馬車,網(wǎng)絡(luò),存儲(chǔ),管理平臺(tái),業(yè)界的開源方案里,網(wǎng)絡(luò)層面SDN日漸成熟,管理平臺(tái)上,Openstack已經(jīng)創(chuàng)造了一個(gè)時(shí)代,而CEPH,無(wú)疑成為存儲(chǔ)最犀利的開源解決方案。談起它的架構(gòu)之前,我們有必要先來(lái)了解以下這些概念,同時(shí)為了更加形象化,我們將部分組件對(duì)應(yīng)到GPFS的組件上來(lái)理解,但請(qǐng)注意實(shí)際的功能和結(jié)構(gòu)仍然差別巨大。
CEPH架構(gòu)解藕
a) Ceph monitor——對(duì)應(yīng)quorum + cluster manager:保存CEPH的集群狀態(tài)映射,維護(hù)集群的健康狀態(tài)。它分別為每個(gè)組件維護(hù)映射信息,包括OSD map、MON map、PG map和CRUSH map。所有群集節(jié)點(diǎn)都向MON節(jié)點(diǎn)匯報(bào)狀態(tài)信息,并分享它們狀態(tài)中的任何變化。Ceph monitor不存儲(chǔ)數(shù)據(jù),這是OSD的任務(wù)。
b) OSD——對(duì)應(yīng)NSD: CEPH的對(duì)象存儲(chǔ)設(shè)備,只要應(yīng)用程序向Ceph集群發(fā)出寫操作,數(shù)據(jù)就會(huì)被以對(duì)象形式存儲(chǔ)在OSD中。這是Ceph集群中唯一能存儲(chǔ)用戶數(shù)據(jù)的組件,同時(shí)用戶也可以發(fā)送讀命令來(lái)讀取數(shù)據(jù)。通常,一個(gè)OSD守護(hù)進(jìn)程會(huì)被綁定到集群中的一塊物理磁盤,一塊磁盤啟動(dòng)一個(gè)OSD進(jìn)程,可以對(duì)應(yīng)GPFS的NSD概念。
c) Pool:是存儲(chǔ)對(duì)象的邏輯分區(qū),它規(guī)定了數(shù)據(jù)冗余的類型和對(duì)應(yīng)的副本分布策略,副本支持兩種類型:副本(replicated)和 糾刪碼(Erasure Code)
d) PG(placement group)——對(duì)應(yīng)Chunk:是一個(gè)放置策略組,它是對(duì)象的集合,該集合里的所有對(duì)象都具有相同的放置策略;簡(jiǎn)單點(diǎn)說(shuō)就是相同PG內(nèi)的對(duì)象都會(huì)放到相同的硬盤上;PG是ceph的核心概念, 服務(wù)端數(shù)據(jù)均衡和恢復(fù)的最小粒度就是PG;
e) MDS——對(duì)應(yīng)Filesystem manager:Ceph元數(shù)據(jù)服務(wù)器,MDS只為CephFS文件系統(tǒng)跟蹤文件的層次結(jié)構(gòu)和存儲(chǔ)元數(shù)據(jù)。Ceph塊設(shè)備和RADOS并不需要元數(shù)據(jù),因此也不需要Ceph MDS守護(hù)進(jìn)程。MDS不直接提供數(shù)據(jù)給客戶端,從而消除了系統(tǒng)中的故障單點(diǎn)。
f) RADOS:RADOS是Ceph存儲(chǔ)集群的基礎(chǔ)。在Ceph中,所有數(shù)據(jù)都以對(duì)象形式存儲(chǔ),并且無(wú)論是哪種數(shù)據(jù)類型,RADOS對(duì)象存儲(chǔ)都將負(fù)責(zé)保存這些對(duì)象。RADOS層可以確保數(shù)據(jù)始終保持一致。要做到這一點(diǎn),須執(zhí)行數(shù)據(jù)復(fù)制、故障檢測(cè)和恢復(fù),以及數(shù)據(jù)遷移和在所有集群節(jié)點(diǎn)實(shí)現(xiàn)再平衡。g) RBD:RADOS塊設(shè)備,提供持久塊存儲(chǔ),它是自動(dòng)精簡(jiǎn)配置并可調(diào)整大小的,而且將數(shù)據(jù)分散存儲(chǔ)在多個(gè)OSD上。RBD服務(wù)已經(jīng)被封裝成了基于librados的一個(gè)原生接口。
h) RGW:RADOS網(wǎng)關(guān)接口,RGW提供對(duì)象存儲(chǔ)服務(wù)。它使用librgw和librados,允許應(yīng)用程序與Ceph對(duì)象存儲(chǔ)建立連接。RGW提供了與Amazon S3和OpenStack Swift兼容的RESTful API。
i) CephFS——對(duì)應(yīng)GPFS文件系統(tǒng):Ceph文件系統(tǒng)提供了一個(gè)使用Ceph存儲(chǔ)集群存儲(chǔ)用戶數(shù)據(jù)的與POSIX兼容的文件系統(tǒng)。和RBD、RGW一樣,CephFS服務(wù)也基于librados封裝了原生接口。
同樣,如果把上述元素和概念按照邏輯進(jìn)行拼接,可以得到以下這張CEPH的基本架構(gòu)圖,圖中反映了各個(gè)組件的邏輯關(guān)系。
CEPH提供了一個(gè)理論上無(wú)限擴(kuò)展的集群,客戶端和ceph osd進(jìn)程通過(guò)crush算法來(lái)計(jì)算數(shù)據(jù)位置,而不必依賴一個(gè)中心查找表,我們知道凡是網(wǎng)絡(luò)設(shè)備都有并發(fā)連接數(shù)據(jù)的限制,集中式/單體式的存儲(chǔ)系統(tǒng),對(duì)于大規(guī)模部署來(lái)說(shuō),很容易達(dá)到物理極限,在CEPH的數(shù)據(jù)訪問(wèn)機(jī)制中,客戶端和osd進(jìn)程直接通信,提高了性能和系統(tǒng)總?cè)萘浚藛吸c(diǎn)故障,CEPH客戶端僅在需要時(shí)與osd進(jìn)程建立一個(gè)會(huì)話。
osd進(jìn)程加入一個(gè)集群,并且報(bào)告他們的狀態(tài),分為up和down兩種狀態(tài),代表是否可以響應(yīng)ceph客戶端的需求,如果osd進(jìn)程失敗,則無(wú)法通知ceph monitor它已經(jīng)down掉,ceph通過(guò)周期性的ping OSD進(jìn)程,確保它正在運(yùn)行,CEPH授權(quán)OSD進(jìn)程,確定授信的OSD進(jìn)程是否已關(guān)閉,更新cluster map,并報(bào)告給CEPH Monitor。
OSD進(jìn)程也通過(guò)crush算法,計(jì)算對(duì)象的副本應(yīng)該存放的位置,在一個(gè)寫場(chǎng)景中,客戶端使用crush算法計(jì)算應(yīng)該在哪里存放對(duì)象,并將對(duì)象映射到一個(gè)pool和placement group,然后查詢crush map來(lái)定位placement group中的主OSD進(jìn)程。
客戶端將對(duì)象寫入主osd的placement group中,然后主osd使用它自己的crush map來(lái)找到第二、三個(gè)OSD,并且將對(duì)象副本寫入第二、第三OSD的placement group中,主OSD在確認(rèn)對(duì)象存儲(chǔ)成功后會(huì)給客戶端一個(gè)回應(yīng)。OSD進(jìn)程完成數(shù)據(jù)的復(fù)制,不需要ceph客戶端參與,保證了數(shù)據(jù)的高可用性和數(shù)據(jù)安全。
CephFS從數(shù)據(jù)中分離出元數(shù)據(jù)并保存在MDS中,而文件數(shù)據(jù)保存在CEPH存儲(chǔ)集群的objects中,ceph-mds作為一個(gè)進(jìn)程單獨(dú)運(yùn)行,也可以分布在多個(gè)物理主機(jī)上,達(dá)到高可用和擴(kuò)展性。
CEPH使用方案
了解了架構(gòu)和原理,該怎么使用呢?Ceph主要用于完全分布式操作,沒有單點(diǎn)故障,可擴(kuò)展到exabyte級(jí)別,完全免費(fèi)使用。其采用的位置感知算法和數(shù)據(jù)復(fù)制機(jī)制使其具有容錯(cuò)能力,并且不需要特定的硬件支持,也成為他天生驕傲的資本,大大降低了使用門檻,在貧瘠的物理介質(zhì)上就可以野蠻生長(zhǎng)。一般來(lái)說(shuō),CEPH主要提供三種使用場(chǎng)景,rbd(block device),對(duì)象存儲(chǔ)和CephFS文件系統(tǒng)方式,如下圖所示:
CEPH客戶端使用原生協(xié)議與CEPH存儲(chǔ)集群進(jìn)行交互,CEPH將這些功能打包成librados庫(kù),因此你可以創(chuàng)建自己的CEPH客戶端,CEPH作為分布式存儲(chǔ),對(duì)外提供各類型的標(biāo)準(zhǔn)存儲(chǔ)服務(wù)。
CEPH block device的快照功能對(duì)于虛擬化和云計(jì)算來(lái)講很有吸引力,在虛擬機(jī)場(chǎng)景中,極具典型的是在Qemu/KVM使用rbd網(wǎng)絡(luò)存儲(chǔ)驅(qū)動(dòng)部署CEPH block device,宿主機(jī)使用librbd向客戶機(jī)提供塊設(shè)備服務(wù)。而在K8S管理的容器平臺(tái)中,Ceph也可以提供標(biāo)準(zhǔn)rbd設(shè)備的動(dòng)態(tài)供給和共享存儲(chǔ)空間。
Scrub是Ceph集群進(jìn)行的副本間的數(shù)據(jù)掃描操作,以檢測(cè)副本間的數(shù)據(jù)一致性,包括Scrub和Deep-Scrub,其中Scrub只是對(duì)元數(shù)據(jù)信息進(jìn)行掃描,相對(duì)比較快,而Deep-Scrub不僅對(duì)元數(shù)據(jù)進(jìn)行掃描,還會(huì)對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行掃描,相對(duì)比較慢。Ceph集群會(huì)定期進(jìn)行Scrub操作。
當(dāng)然,Ceph Scrub機(jī)制存在的問(wèn)題。在發(fā)現(xiàn)不一致對(duì)象后,缺少策略來(lái)自動(dòng)矯正錯(cuò)誤,比如如果多數(shù)副本達(dá)成一致,那么少數(shù)副本對(duì)象會(huì)被同化。Scrub 機(jī)制并不能及時(shí)解決存儲(chǔ)系統(tǒng)端到端正確的問(wèn)題,很有可能上層應(yīng)用早已經(jīng)讀到錯(cuò)誤數(shù)據(jù),下面一起來(lái)看看Scrub的工作流程:
① OSD 會(huì)以 PG 為粒度觸發(fā) Scrub流程,觸發(fā)的頻率可以通過(guò)選項(xiàng)指定,而一個(gè)PG的Scrub啟動(dòng)都是由該 PG 的 Master 角色所在OSD啟動(dòng)。
② 一個(gè)PG在普通的環(huán)境下會(huì)包含幾千個(gè)到數(shù)十萬(wàn)個(gè)不等的對(duì)象,因?yàn)镾crub流程需要提取對(duì)象的校驗(yàn)信息然后跟其他副本的校驗(yàn)信息對(duì)比,這期間被校驗(yàn)對(duì)象的數(shù)據(jù)是不能被修改的。因此一個(gè)PG的Scrub流程每次會(huì)啟動(dòng)小部分的對(duì)象校驗(yàn),Ceph 會(huì)以每個(gè)對(duì)象名的哈希值的部分作為提取因子,每次啟動(dòng)對(duì)象校驗(yàn)會(huì)找到符合本次哈希值的對(duì)象,然后進(jìn)行比較。這也是 Ceph稱其為Chunky Scrub的原因。
③ 在找到待校驗(yàn)對(duì)象集后,發(fā)起者需要發(fā)出請(qǐng)求來(lái)鎖定其他副本的這部分對(duì)象集。因?yàn)槊總€(gè)對(duì)象的Master和Replicate節(jié)點(diǎn)在實(shí)際寫入到底層存儲(chǔ)引擎的時(shí)間會(huì)出現(xiàn)一定的差異。這時(shí)候,待校驗(yàn)對(duì)象集的發(fā)起者會(huì)附帶一個(gè)版本發(fā)送給其他副本,直到這些副本節(jié)點(diǎn)與主節(jié)點(diǎn)同步到相同版本。
④ 在確定待校驗(yàn)對(duì)象集在不同節(jié)點(diǎn)都處于相同版本后,發(fā)起者會(huì)要求所有節(jié)點(diǎn)都開始計(jì)算這個(gè)對(duì)象集的校驗(yàn)信息并反饋給發(fā)起者。
⑤ 該校驗(yàn)信息包括每個(gè)對(duì)象的元信息如大小、擴(kuò)展屬性的所有鍵和歷史版本信息等等,在Ceph 中被稱為 ScrubMap。
⑥ 發(fā)起者會(huì)比較多個(gè)ScrubMap并發(fā)現(xiàn)不一致的對(duì)象,不一致對(duì)象會(huì)被收集最后發(fā)送給 Monitor,最后用戶可以通過(guò)Monitor了解Scrub的結(jié)果信息。
另外,當(dāng)用戶在發(fā)現(xiàn)出現(xiàn)不一致的對(duì)象時(shí),可以通過(guò)“ceph pgrepair [pg_id]”的方式來(lái)啟動(dòng)修復(fù)進(jìn)程,目前的修復(fù)僅僅會(huì)將主節(jié)點(diǎn)的對(duì)象全量復(fù)制到副本節(jié)點(diǎn),因此目前要求用戶手工確認(rèn)主節(jié)點(diǎn)的對(duì)象是“正確副本”。此外,Ceph允許Deep Scrub模式來(lái)全量比較對(duì)象信息來(lái)期望發(fā)現(xiàn) Ceph 本身或者文件系統(tǒng)問(wèn)題,這通常會(huì)帶來(lái)較大的IO負(fù)擔(dān),因此在實(shí)際生產(chǎn)環(huán)境中很難達(dá)到預(yù)期效果。
通過(guò)上述Scrub流程,大家也會(huì)發(fā)現(xiàn)目前的 Scrub機(jī)制還存在以下2個(gè)問(wèn)題:
① 在發(fā)現(xiàn)不一致對(duì)象后,缺少策略來(lái)自動(dòng)矯正錯(cuò)誤,比如如果多數(shù)副本達(dá)成一致,那么少數(shù)副本對(duì)象會(huì)被同化。
② Scrub 機(jī)制并不能及時(shí)解決存儲(chǔ)系統(tǒng)端到端正確的問(wèn)題,很有可能上層應(yīng)用早已經(jīng)讀到錯(cuò)誤數(shù)據(jù)。
對(duì)于第一個(gè)問(wèn)題,目前Ceph已經(jīng)有Blueprint來(lái)加強(qiáng)Scrub的修復(fù)能力,用戶啟動(dòng)Repair時(shí)會(huì)啟動(dòng)多數(shù)副本一致的策略來(lái)替代目前的主副本同步策略。
4、GlusterFS和Ceph對(duì)比
GlusterFS和Ceph是兩個(gè)靈活的存儲(chǔ)系統(tǒng),有著相似的數(shù)據(jù)分布能力,在云環(huán)境中表現(xiàn)非常出色。在嘗試了解GlusterFS與Ceph架構(gòu)之后,我們來(lái)看看兩者之間的簡(jiǎn)單對(duì)比。
縱向擴(kuò)展和橫向擴(kuò)展:在云環(huán)境中,必須可以很容易地向服務(wù)器添加更多存儲(chǔ)空間以及擴(kuò)展可用存儲(chǔ)池。Ceph和GlusterFS都可以通過(guò)將新存儲(chǔ)設(shè)備集成到現(xiàn)有存儲(chǔ)產(chǎn)品中,滿足擴(kuò)充性能和容量的要求。
高可用性:GlusterFS和Ceph的復(fù)制是同時(shí)將數(shù)據(jù)寫入不同的存儲(chǔ)節(jié)點(diǎn)。這樣做的結(jié)果是,訪問(wèn)時(shí)間增加,數(shù)據(jù)可用性也提高。在Ceph中,默認(rèn)情況下將數(shù)據(jù)復(fù)制到三個(gè)不同的節(jié)點(diǎn),以此確保備份始終可用性。
商品化硬件:GlusterFS和Ceph是在Linux操作系統(tǒng)之上開發(fā)的。因此,對(duì)硬件唯一的要求是這些產(chǎn)品具有能夠運(yùn)行Linux的硬件。任何商品化硬件都可以運(yùn)行Linux操作系統(tǒng),結(jié)果是使用這些技術(shù)的公司可以大大減少在硬件上的投資——如果他們這樣做的話。然而,實(shí)際上,許多公司正在投資專門用于運(yùn)行GlusterFS或Ceph的硬件,因?yàn)楦斓挠布梢愿斓卦L問(wèn)存儲(chǔ)。
去中心化:在云環(huán)境中,永遠(yuǎn)不應(yīng)該有中心點(diǎn)故障。對(duì)于存儲(chǔ),這意味著不應(yīng)該用一個(gè)中央位置存儲(chǔ)元數(shù)據(jù)。GlusterFS和Ceph實(shí)現(xiàn)了元數(shù)據(jù)訪問(wèn)去中心化的解決方案,從而降低了存儲(chǔ)訪問(wèn)的可用性和冗余性。
現(xiàn)在再來(lái)談?wù)凣lusterFS與Ceph的差異。顧名思義,GlusterFS是來(lái)自Linux世界的文件系統(tǒng),并且遵守所有Portable Operating System Interface標(biāo)準(zhǔn)。盡管你可以將GlusterFS輕松集成到面向Linux的環(huán)境中,但在Windows環(huán)境中集成GlusterFS很難。
Ceph是一種全新的存儲(chǔ)方法,對(duì)應(yīng)于Swift對(duì)象存儲(chǔ)。在對(duì)象存儲(chǔ)中,應(yīng)用程序不會(huì)寫入文件系統(tǒng),而是使用存儲(chǔ)中的直接API訪問(wèn)寫入存儲(chǔ)。因此,應(yīng)用程序能夠繞過(guò)操作系統(tǒng)的功能和限制。如果已經(jīng)開發(fā)了一個(gè)應(yīng)用程序來(lái)寫入Ceph存儲(chǔ),那么使用哪個(gè)操作系統(tǒng)無(wú)關(guān)緊要。結(jié)果表明Ceph存儲(chǔ)在Windows環(huán)境中像在Linux環(huán)境中一樣容易集成。
基于API的存儲(chǔ)訪問(wèn)并不是應(yīng)用程序可以訪問(wèn)Ceph的唯一方式。為了最佳的集成,還有一個(gè)Ceph塊設(shè)備,它可以在Linux環(huán)境中用作常規(guī)塊設(shè)備,使你可以像訪問(wèn)常規(guī)Linux硬盤一樣來(lái)使用Ceph。Ceph還有CephFS,它是針對(duì)Linux環(huán)境編寫的Ceph文件系統(tǒng)。
為了比較GlusterFS與Ceph哪個(gè)更快已經(jīng)進(jìn)行了幾項(xiàng)測(cè)試,但迄今為止沒有確切的結(jié)論。GlusterFS存儲(chǔ)算法更快,并且由于GlusterFS以磚組織存儲(chǔ)的方式實(shí)現(xiàn)了更多的分層,這在某些場(chǎng)景下(尤其是使用非優(yōu)化Ceph)可能導(dǎo)致更快的速度。另一方面,Ceph提供了足夠的定制功能來(lái)使其與GlusterFS一樣快。
然而,實(shí)踐表明Ceph訪問(wèn)存儲(chǔ)的不同方法使其成為更流行的技術(shù)。更多的公司正在考慮Ceph技術(shù)而不是GlusterFS,而且GlusterFS仍然與Red Hat密切相關(guān)。例如,SUSE還沒有GlusterFS的商業(yè)實(shí)施,而Ceph已經(jīng)被開源社區(qū)廣泛采用,市場(chǎng)上有各種不同的產(chǎn)品。在某種意義上來(lái)說(shuō),Ceph確實(shí)已經(jīng)勝過(guò)GlusterFS。
5.分布式存儲(chǔ)未來(lái)
未來(lái)的IT架構(gòu)是生態(tài)之爭(zhēng),贏生態(tài)者得天下,就像開放的安卓贏得了眾多開發(fā)者的親賴,繁榮的產(chǎn)品生態(tài)也成就了安卓。運(yùn)維自動(dòng)化和智能化運(yùn)維建設(shè),要求底層IT環(huán)境實(shí)現(xiàn)高度整合,自主可控更是對(duì)開放性的要求,開放是一個(gè)產(chǎn)品的親和力,意味著可以更靈活的融入當(dāng)前IT環(huán)境,當(dāng)前云計(jì)算的存儲(chǔ)標(biāo)準(zhǔn)接口仍然有開放席位,靜待新的有生力量入駐。
不管是存儲(chǔ),還是網(wǎng)絡(luò)等基礎(chǔ)架構(gòu),都在試圖屏蔽底層物理硬件的差異,實(shí)現(xiàn)硬件的標(biāo)準(zhǔn)化管理,用軟件定義一切,分布式存儲(chǔ)就是在這樣的趨勢(shì)下,贏得了蓬勃發(fā)展的契機(jī),開放的產(chǎn)品接口,豐富的插件,與當(dāng)前環(huán)境的兼容耦合性,都將成為分布式存儲(chǔ)領(lǐng)域制勝的關(guān)鍵,未來(lái)分布式存儲(chǔ)在安全性、產(chǎn)品化建設(shè)、兼容性、可管理性、穩(wěn)定性上的不懈努力,將是引領(lǐng)分布式存儲(chǔ)占領(lǐng)數(shù)據(jù)中心存儲(chǔ)江山的重要砝碼。
審核編輯:劉清
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
52文章
8226瀏覽量
146251 -
MDS
+關(guān)注
關(guān)注
0文章
5瀏覽量
8057 -
分布式存儲(chǔ)
+關(guān)注
關(guān)注
4文章
171瀏覽量
19523 -
Linux操作系統(tǒng)
+關(guān)注
關(guān)注
0文章
54瀏覽量
11043 -
NSD
+關(guān)注
關(guān)注
0文章
5瀏覽量
5854
原文標(biāo)題:分布式存儲(chǔ):GPFS對(duì)話Ceph(收藏)
文章出處:【微信號(hào):架構(gòu)師技術(shù)聯(lián)盟,微信公眾號(hào):架構(gòu)師技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論