劉莎 楚傳仁
摘 要: Ceph云文件系統[1]通過完全副本冗余策略來提高數據的可靠性,但是會造成存儲空間的浪費。為了提高存儲空間的利用率,研究了糾刪碼和緩存分層(Cache層)技術[2]。在Ceph平臺下,通過實驗對完全副本與糾刪碼冗余存儲進行分析比較,得出在存儲數據越來越大的情況下,基于Cache分層的糾刪碼存儲性能優勢比完全副本更明顯;完全副本則更適合于對小文件進行存儲。
關鍵詞: Ceph; 云文件系統; 糾刪碼; 完全副本; 緩存層
中圖分類號:TP309.3 文獻標志碼:A 文章編號: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 引言
數據的可靠性是云存儲領域研究的重點,為了保證數據可靠性,大多數分布式云文件系統使用完全副本冗余技術,即為每個對象創建同等數量的副本。本文所研究的Ceph云系統其數據放置策略就是基于該機制。完全副本冗余技術部署簡單,訪問效率高,但是會浪費很大的存儲空間。數據的副本冗余技術主要有完全副本和糾刪碼[3]。為了應對這一弊端,需要考慮糾刪碼,糾刪碼把原始數據通過一種規則編碼成數據塊和校驗塊后,再將這些塊一一進行存儲。這種冗余存儲技術使存儲空間的利用率得到了顯著提高,其缺點是讀性能下降。
本文的主要目標是在Ceph系統采用完全副本冗余技術的基礎上,使用糾刪碼技術來提高存儲空間的利用率,同時引入緩存分層技術,以彌補糾刪碼讀取速度慢的缺陷。
1 Ceph文件系統概述
Ceph作為云存儲分布式系統,具有高可擴展性、高可靠性和高性能特性[4],并且其系統源碼是開源的。即可以支持TB到PB的擴展,沒有單點故障,數據能夠均衡地在節點上分布。同時Ceph作為統一的存儲系統,可以提供和支持對象、塊和文件的存儲功能。
Ceph系統由四個組件組成:①客戶端(Client),用戶對Ceph文件系統進行執行操作的入口;②對象存儲集群(OSD,Object Storage Device)負責存儲包括元數據在內的所有數據,同時負責數據的請求服務;③元數據服務器(MDS,Metadata Server)對系統中的元數據進行緩存,并對數據進行管理;④集群監視器[5](Monitors),監視和管理整個集群,時刻對集群的有效狀態進行維護。Ceph系統架構圖如圖1所示。
圖1 Ceph系統架構圖
2 容錯機制
2.1 完全副本
Ceph系統采用主-從(Primary-Replica)方式對文件執行讀寫操作[6]。對于讀操作,Client端可以向對象(object)所對應的OSD集群的主OSD或從OSD發起讀操作,但是寫操作必須是對主OSD發起。Ceph系統對object的更新是按順序的,因為一個object有且僅有一個OSD。當object請求主OSD進行寫操作時,主OSD要把數據發送給其他從OSD;其他從OSD分別完成寫操作的請求后,將會一一向主OSD發送寫操作完成信息;當object寫入到其對應的所有的OSD中后,主OSD向Client端發送寫操作完成信息,從而確保了副本的一致性。
2.2 糾刪碼
本文所研究的糾刪碼的編碼和解碼操作都是由主OSD執行的。當object需要進行寫操作時,通過Crush算法找到主OSD,并把object全部寫入到主OSD中。object在主OSD上被切分成k個數據塊后進行編碼,產生n個數據塊,其中m=n-k個數據塊為編碼塊。編碼后的第一個數據塊存儲在主OSD上,剩余的n-1個數據塊由主OSD分配到各個節點上。
在對文件進行讀操作時,主OSD會優先收集相應OSD上的數據塊。不管數據塊是否丟失,只需要收集k個數據塊和編碼塊,主OSD就可以解碼出原來的數據。
2.3 糾刪碼與完全副本冗余度比較
糾刪碼的原理是:將源數據分成k個數據塊,再進行編碼生成n個冗余數據塊,新編碼生成的m=n-k個數據塊為編碼塊。只要丟失的數據塊個數不大于m,就能夠通過剩余的數據塊實現原始數據的恢復。為了比較糾刪碼與完全副本的存儲空間占用率,引入了冗余度。冗余度用來表示信源信息率的多余程度,使用糾刪碼放置策略的冗余度為:
對于可以糾m個錯的完全副本來說,需要m+1個副本,冗余度為m+1。相比較糾刪碼來說,完全副本的冗余度大于糾刪碼的冗余度。即糾刪碼技術可以節省極大的存儲空間。
3 Cache分層
由于糾刪碼的訪問效率相對于完全副本來說比較低,所以需要在存儲層之上添加Cache層。Cache層可以為Client端提供更高I/O性能;存儲層主要放置使用糾刪碼進行編碼后的數據塊;Ceph objecter在Client端之后,用來處理Objects的放置位置;在Cache層與存儲層之間有一個緩存分層代理(the cache tiering agent),其作用是用來自動處理緩存層和后備存儲層間的數據遷移。管理員(admin)有權利配置數據如何遷移。如下有兩種典型的模式。
回寫模式(Writeback Mode):Client端寫數據到Cache層,Cache層做出響應后,在Cache層的數據會被下刷到存儲層中,并刷新Cache層;當Client端需要對存儲層讀寫數據時,緩存分層代理把存儲層的數據遷移到Cache層后發給Client端。Client端在Cache層執行I/O操作?;貙懩J竭m用于經常發生變動的數據。
只讀模式(Read-only Mode):Client端直接寫數據到存儲層;在進行讀數據操作時,需要在存儲層中拷貝必須的數據到Cache層。根據已經設定好的規則,原來的數據會從Cache層中刪除。只讀模式適用不經常變動的數據。數據是弱一致性的,可能包含過時的數據[7]。
4 實驗結果與分析
4.1 環境配置
為了測試云文件系統中糾刪碼技術的數據訪問性能,搭建了以下測試環境:2個Monitors、1個MDS、6個OSD、1個Client端。軟件環境:Ubuntu 12.04、Ceph 0.94.2。在相同糾錯能力下,創建完全副本冗余存儲和添加Cache層的糾刪碼存儲,這里糾刪碼為RS糾刪碼。
4.2 測試分析
使用Rados bench對完全副本和糾刪碼冗余存儲的不同請求大小(32K、64K、128K、256K、512K、1M、2M、4M)在16進程下進行讀寫性能的測試[8-9],并對測試結果進行分析。圖2為讀性能的測試,圖3為寫性能的測試。
通過圖2讀性能的對比分析可知,糾刪碼與完全副本冗余存儲的讀性能比較穩定,完全副本的讀性能相對來說要比糾刪碼的好[10]。圖3顯示在1M以內的數據完全副本的寫性能高于糾刪碼,1M以上的數據糾刪碼的寫性能明顯要高于完全副本。因此,當我們要存儲不經常改變的冷數據或大數據時,可以選擇糾刪碼存儲;當需要存儲經常變化的數據或小文件時,可以選擇完全副本進行存儲[11]。
5 結束語
本文搭建了基于糾刪碼Ceph冗余存儲系統,通過實際測試,可以得出基于Cache分層的糾刪碼存儲數據越來越大時,其性能更優于完全副本存儲,而且可以節省極大的數據存儲空間。完全副本冗余存儲則適合對小文件進行存儲,其讀寫性能明顯優于糾刪碼。該系統與其他相關研究的區別在于,系統是一個PB級的分布式文件系統,并在使用糾刪碼降低存儲空間浪費的基礎上引入緩存分層,實現在進行大數據存儲時,讀寫性能更優于完全副本存儲。該系統具有增加空間利用率和提高讀寫性能的普遍意義,但是接下來需要考慮使用哪種糾刪碼可以更有效地提高性能。
參考文獻(References):
[1] 程靚坤.基于Ceph的云存儲系統設計與實現[D].中山大學,
中山大學碩士學位論文,2014.
[2] 沈良好.基于Ceph的分布式存儲節能技術研究[J].計算機工
程,2014.39(3):322-327
[3] 程振東,欒鐘治,孟由等.云文件系統中糾刪碼技術的研究與
實現[J].計算機科學與探索,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對象文件系統添加任務遷移特性的研究[D].武
漢理工大學碩士學位論文,2014.
[6] 劉學梁.基于對象存儲的安全分布式文件系統研究[D].電子
科技大學碩士學位論文,2012.
[7] 聶瑞華,張科倫,梁軍.一種改進的云存儲系統容錯機制[J].計
算機應用研究,2013.45(12):3724-3728
[8] 肖哲鋒.基于ErasureCode的高可用分布式存儲系統的設計
與實現[D].國防科學技術大學碩士學位論文,2010.
[9] 李玲,付園,麻曉珍等.云存儲系統中數據冗余策略優化問題[J].
吉林大學學報,2013.44(1):1-7
[10] 王引娜,宋耀光,倪巍等.基于RS糾刪碼的HDFS云存儲動
態副本策略研究[J].科技創新導報,2013.17:29-31
[11] 楊東日,王穎,劉鵬.一種副本復制和糾錯碼融合的云存儲
文件系統容錯機制[J].清華大學學報(自然科學版),2014.34(1):137-144