劉莎 楚傳仁
摘 要: Ceph云文件系統(tǒng)[1]通過完全副本冗余策略來(lái)提高數(shù)據(jù)的可靠性,但是會(huì)造成存儲(chǔ)空間的浪費(fèi)。為了提高存儲(chǔ)空間的利用率,研究了糾刪碼和緩存分層(Cache層)技術(shù)[2]。在Ceph平臺(tái)下,通過實(shí)驗(yàn)對(duì)完全副本與糾刪碼冗余存儲(chǔ)進(jìn)行分析比較,得出在存儲(chǔ)數(shù)據(jù)越來(lái)越大的情況下,基于Cache分層的糾刪碼存儲(chǔ)性能優(yōu)勢(shì)比完全副本更明顯;完全副本則更適合于對(duì)小文件進(jìn)行存儲(chǔ)。
關(guān)鍵詞: Ceph; 云文件系統(tǒng); 糾刪碼; 完全副本; 緩存層
中圖分類號(hào):TP309.3 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2016)01-01-03
Research on application of erasure code in Ceph cloud file system
Liu Sha, Chu Chuanren
(School of Communication Engineering, Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China)
Abstract: Ceph cloud file system uses replication technology to improve data reliability, but will cause the waste of storage space. To improve the storage space utilization, this paper studies the erasure code and cache tiering technology. On Ceph platform, through the analysis of replication mechanism and erasure code, the performance advantage of erasure code based on cache tiering is found more obvious than replication mechanism when the data is large enough, while replication mechanism is more suitable to small file.
Key words: Ceph; cloud file system; erasure code; full replica; cache tiering
0 引言
數(shù)據(jù)的可靠性是云存儲(chǔ)領(lǐng)域研究的重點(diǎn),為了保證數(shù)據(jù)可靠性,大多數(shù)分布式云文件系統(tǒng)使用完全副本冗余技術(shù),即為每個(gè)對(duì)象創(chuàng)建同等數(shù)量的副本。本文所研究的Ceph云系統(tǒng)其數(shù)據(jù)放置策略就是基于該機(jī)制。完全副本冗余技術(shù)部署簡(jiǎn)單,訪問效率高,但是會(huì)浪費(fèi)很大的存儲(chǔ)空間。數(shù)據(jù)的副本冗余技術(shù)主要有完全副本和糾刪碼[3]。為了應(yīng)對(duì)這一弊端,需要考慮糾刪碼,糾刪碼把原始數(shù)據(jù)通過一種規(guī)則編碼成數(shù)據(jù)塊和校驗(yàn)塊后,再將這些塊一一進(jìn)行存儲(chǔ)。這種冗余存儲(chǔ)技術(shù)使存儲(chǔ)空間的利用率得到了顯著提高,其缺點(diǎn)是讀性能下降。
本文的主要目標(biāo)是在Ceph系統(tǒng)采用完全副本冗余技術(shù)的基礎(chǔ)上,使用糾刪碼技術(shù)來(lái)提高存儲(chǔ)空間的利用率,同時(shí)引入緩存分層技術(shù),以彌補(bǔ)糾刪碼讀取速度慢的缺陷。
1 Ceph文件系統(tǒng)概述
Ceph作為云存儲(chǔ)分布式系統(tǒng),具有高可擴(kuò)展性、高可靠性和高性能特性[4],并且其系統(tǒng)源碼是開源的。即可以支持TB到PB的擴(kuò)展,沒有單點(diǎn)故障,數(shù)據(jù)能夠均衡地在節(jié)點(diǎn)上分布。同時(shí)Ceph作為統(tǒng)一的存儲(chǔ)系統(tǒng),可以提供和支持對(duì)象、塊和文件的存儲(chǔ)功能。
Ceph系統(tǒng)由四個(gè)組件組成:①客戶端(Client),用戶對(duì)Ceph文件系統(tǒng)進(jìn)行執(zhí)行操作的入口;②對(duì)象存儲(chǔ)集群(OSD,Object Storage Device)負(fù)責(zé)存儲(chǔ)包括元數(shù)據(jù)在內(nèi)的所有數(shù)據(jù),同時(shí)負(fù)責(zé)數(shù)據(jù)的請(qǐng)求服務(wù);③元數(shù)據(jù)服務(wù)器(MDS,Metadata Server)對(duì)系統(tǒng)中的元數(shù)據(jù)進(jìn)行緩存,并對(duì)數(shù)據(jù)進(jìn)行管理;④集群監(jiān)視器[5](Monitors),監(jiān)視和管理整個(gè)集群,時(shí)刻對(duì)集群的有效狀態(tài)進(jìn)行維護(hù)。Ceph系統(tǒng)架構(gòu)圖如圖1所示。
圖1 Ceph系統(tǒng)架構(gòu)圖
2 容錯(cuò)機(jī)制
2.1 完全副本
Ceph系統(tǒng)采用主-從(Primary-Replica)方式對(duì)文件執(zhí)行讀寫操作[6]。對(duì)于讀操作,Client端可以向?qū)ο螅╫bject)所對(duì)應(yīng)的OSD集群的主OSD或從OSD發(fā)起讀操作,但是寫操作必須是對(duì)主OSD發(fā)起。Ceph系統(tǒng)對(duì)object的更新是按順序的,因?yàn)橐粋€(gè)object有且僅有一個(gè)OSD。當(dāng)object請(qǐng)求主OSD進(jìn)行寫操作時(shí),主OSD要把數(shù)據(jù)發(fā)送給其他從OSD;其他從OSD分別完成寫操作的請(qǐng)求后,將會(huì)一一向主OSD發(fā)送寫操作完成信息;當(dāng)object寫入到其對(duì)應(yīng)的所有的OSD中后,主OSD向Client端發(fā)送寫操作完成信息,從而確保了副本的一致性。
2.2 糾刪碼
本文所研究的糾刪碼的編碼和解碼操作都是由主OSD執(zhí)行的。當(dāng)object需要進(jìn)行寫操作時(shí),通過Crush算法找到主OSD,并把object全部寫入到主OSD中。object在主OSD上被切分成k個(gè)數(shù)據(jù)塊后進(jìn)行編碼,產(chǎn)生n個(gè)數(shù)據(jù)塊,其中m=n-k個(gè)數(shù)據(jù)塊為編碼塊。編碼后的第一個(gè)數(shù)據(jù)塊存儲(chǔ)在主OSD上,剩余的n-1個(gè)數(shù)據(jù)塊由主OSD分配到各個(gè)節(jié)點(diǎn)上。
在對(duì)文件進(jìn)行讀操作時(shí),主OSD會(huì)優(yōu)先收集相應(yīng)OSD上的數(shù)據(jù)塊。不管數(shù)據(jù)塊是否丟失,只需要收集k個(gè)數(shù)據(jù)塊和編碼塊,主OSD就可以解碼出原來(lái)的數(shù)據(jù)。
2.3 糾刪碼與完全副本冗余度比較
糾刪碼的原理是:將源數(shù)據(jù)分成k個(gè)數(shù)據(jù)塊,再進(jìn)行編碼生成n個(gè)冗余數(shù)據(jù)塊,新編碼生成的m=n-k個(gè)數(shù)據(jù)塊為編碼塊。只要丟失的數(shù)據(jù)塊個(gè)數(shù)不大于m,就能夠通過剩余的數(shù)據(jù)塊實(shí)現(xiàn)原始數(shù)據(jù)的恢復(fù)。為了比較糾刪碼與完全副本的存儲(chǔ)空間占用率,引入了冗余度。冗余度用來(lái)表示信源信息率的多余程度,使用糾刪碼放置策略的冗余度為:
對(duì)于可以糾m個(gè)錯(cuò)的完全副本來(lái)說,需要m+1個(gè)副本,冗余度為m+1。相比較糾刪碼來(lái)說,完全副本的冗余度大于糾刪碼的冗余度。即糾刪碼技術(shù)可以節(jié)省極大的存儲(chǔ)空間。
3 Cache分層
由于糾刪碼的訪問效率相對(duì)于完全副本來(lái)說比較低,所以需要在存儲(chǔ)層之上添加Cache層。Cache層可以為Client端提供更高I/O性能;存儲(chǔ)層主要放置使用糾刪碼進(jìn)行編碼后的數(shù)據(jù)塊;Ceph objecter在Client端之后,用來(lái)處理Objects的放置位置;在Cache層與存儲(chǔ)層之間有一個(gè)緩存分層代理(the cache tiering agent),其作用是用來(lái)自動(dòng)處理緩存層和后備存儲(chǔ)層間的數(shù)據(jù)遷移。管理員(admin)有權(quán)利配置數(shù)據(jù)如何遷移。如下有兩種典型的模式。
回寫模式(Writeback Mode):Client端寫數(shù)據(jù)到Cache層,Cache層做出響應(yīng)后,在Cache層的數(shù)據(jù)會(huì)被下刷到存儲(chǔ)層中,并刷新Cache層;當(dāng)Client端需要對(duì)存儲(chǔ)層讀寫數(shù)據(jù)時(shí),緩存分層代理把存儲(chǔ)層的數(shù)據(jù)遷移到Cache層后發(fā)給Client端。Client端在Cache層執(zhí)行I/O操作?;貙懩J竭m用于經(jīng)常發(fā)生變動(dòng)的數(shù)據(jù)。
只讀模式(Read-only Mode):Client端直接寫數(shù)據(jù)到存儲(chǔ)層;在進(jìn)行讀數(shù)據(jù)操作時(shí),需要在存儲(chǔ)層中拷貝必須的數(shù)據(jù)到Cache層。根據(jù)已經(jīng)設(shè)定好的規(guī)則,原來(lái)的數(shù)據(jù)會(huì)從Cache層中刪除。只讀模式適用不經(jīng)常變動(dòng)的數(shù)據(jù)。數(shù)據(jù)是弱一致性的,可能包含過時(shí)的數(shù)據(jù)[7]。
4 實(shí)驗(yàn)結(jié)果與分析
4.1 環(huán)境配置
為了測(cè)試云文件系統(tǒng)中糾刪碼技術(shù)的數(shù)據(jù)訪問性能,搭建了以下測(cè)試環(huán)境:2個(gè)Monitors、1個(gè)MDS、6個(gè)OSD、1個(gè)Client端。軟件環(huán)境:Ubuntu 12.04、Ceph 0.94.2。在相同糾錯(cuò)能力下,創(chuàng)建完全副本冗余存儲(chǔ)和添加Cache層的糾刪碼存儲(chǔ),這里糾刪碼為RS糾刪碼。
4.2 測(cè)試分析
使用Rados bench對(duì)完全副本和糾刪碼冗余存儲(chǔ)的不同請(qǐng)求大?。?2K、64K、128K、256K、512K、1M、2M、4M)在16進(jìn)程下進(jìn)行讀寫性能的測(cè)試[8-9],并對(duì)測(cè)試結(jié)果進(jìn)行分析。圖2為讀性能的測(cè)試,圖3為寫性能的測(cè)試。
通過圖2讀性能的對(duì)比分析可知,糾刪碼與完全副本冗余存儲(chǔ)的讀性能比較穩(wěn)定,完全副本的讀性能相對(duì)來(lái)說要比糾刪碼的好[10]。圖3顯示在1M以內(nèi)的數(shù)據(jù)完全副本的寫性能高于糾刪碼,1M以上的數(shù)據(jù)糾刪碼的寫性能明顯要高于完全副本。因此,當(dāng)我們要存儲(chǔ)不經(jīng)常改變的冷數(shù)據(jù)或大數(shù)據(jù)時(shí),可以選擇糾刪碼存儲(chǔ);當(dāng)需要存儲(chǔ)經(jīng)常變化的數(shù)據(jù)或小文件時(shí),可以選擇完全副本進(jìn)行存儲(chǔ)[11]。
5 結(jié)束語(yǔ)
本文搭建了基于糾刪碼Ceph冗余存儲(chǔ)系統(tǒng),通過實(shí)際測(cè)試,可以得出基于Cache分層的糾刪碼存儲(chǔ)數(shù)據(jù)越來(lái)越大時(shí),其性能更優(yōu)于完全副本存儲(chǔ),而且可以節(jié)省極大的數(shù)據(jù)存儲(chǔ)空間。完全副本冗余存儲(chǔ)則適合對(duì)小文件進(jìn)行存儲(chǔ),其讀寫性能明顯優(yōu)于糾刪碼。該系統(tǒng)與其他相關(guān)研究的區(qū)別在于,系統(tǒng)是一個(gè)PB級(jí)的分布式文件系統(tǒng),并在使用糾刪碼降低存儲(chǔ)空間浪費(fèi)的基礎(chǔ)上引入緩存分層,實(shí)現(xiàn)在進(jìn)行大數(shù)據(jù)存儲(chǔ)時(shí),讀寫性能更優(yōu)于完全副本存儲(chǔ)。該系統(tǒng)具有增加空間利用率和提高讀寫性能的普遍意義,但是接下來(lái)需要考慮使用哪種糾刪碼可以更有效地提高性能。
參考文獻(xiàn)(References):
[1] 程靚坤.基于Ceph的云存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].中山大學(xué),
中山大學(xué)碩士學(xué)位論文,2014.
[2] 沈良好.基于Ceph的分布式存儲(chǔ)節(jié)能技術(shù)研究[J].計(jì)算機(jī)工
程,2014.39(3):322-327
[3] 程振東,欒鐘治,孟由等.云文件系統(tǒng)中糾刪碼技術(shù)的研究與
實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué)與探索,2013.23(4):315-325
[4] Weil S A, Brandt S A, Miller E L, et al. CRUSH:
Controlled, scalable, decentralized placement of replicated data[C]//Proceedings of the 2006 ACM/IEEE conference on Supercomputing, Tampa, USA: ACM,2006.
[5] 鄭傳建.Ceph對(duì)象文件系統(tǒng)添加任務(wù)遷移特性的研究[D].武
漢理工大學(xué)碩士學(xué)位論文,2014.
[6] 劉學(xué)梁.基于對(duì)象存儲(chǔ)的安全分布式文件系統(tǒng)研究[D].電子
科技大學(xué)碩士學(xué)位論文,2012.
[7] 聶瑞華,張科倫,梁軍.一種改進(jìn)的云存儲(chǔ)系統(tǒng)容錯(cuò)機(jī)制[J].計(jì)
算機(jī)應(yīng)用研究,2013.45(12):3724-3728
[8] 肖哲鋒.基于ErasureCode的高可用分布式存儲(chǔ)系統(tǒng)的設(shè)計(jì)
與實(shí)現(xiàn)[D].國(guó)防科學(xué)技術(shù)大學(xué)碩士學(xué)位論文,2010.
[9] 李玲,付園,麻曉珍等.云存儲(chǔ)系統(tǒng)中數(shù)據(jù)冗余策略優(yōu)化問題[J].
吉林大學(xué)學(xué)報(bào),2013.44(1):1-7
[10] 王引娜,宋耀光,倪巍等.基于RS糾刪碼的HDFS云存儲(chǔ)動(dòng)
態(tài)副本策略研究[J].科技創(chuàng)新導(dǎo)報(bào),2013.17:29-31
[11] 楊東日,王穎,劉鵬.一種副本復(fù)制和糾錯(cuò)碼融合的云存儲(chǔ)
文件系統(tǒng)容錯(cuò)機(jī)制[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2014.34(1):137-144