李子天,邢 凱,2,龔海華
1(中國科學(xué)技術(shù)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230027)
2(中國科學(xué)技術(shù)大學(xué) 蘇州研究院,江蘇 蘇州 215123)
隨著計算機(jī)和互聯(lián)網(wǎng)的飛速發(fā)展,Internet生成和處理的數(shù)據(jù)量迅速攀升.有研究[1]顯示,過去兩年中生成的數(shù)據(jù)已經(jīng)占世界數(shù)據(jù)總量的90%.當(dāng)前,典型數(shù)據(jù)中心的存儲容量均為PB量級或以上,傳統(tǒng)的存儲集群越來越難以滿足不斷增長的存儲需求.因此,如何實現(xiàn)一個快速且可靠的分布式存儲系統(tǒng),成為了目前存儲系統(tǒng)研究的熱點問題之一.
目前數(shù)據(jù)中心中經(jīng)常使用的分布式文件系統(tǒng)有HDFS[2]和Ceph[3]等.對于這些分布式系統(tǒng)來說,由于存在著大量的節(jié)點,也就意味著節(jié)點故障是難以避免的,那么系統(tǒng)的容錯性設(shè)計便成為了分布式存儲系統(tǒng)研究的重要問題之一.目前成熟的分布式存儲系統(tǒng)主要應(yīng)用的是多副本技術(shù),然而這種技術(shù)引入了大量的數(shù)據(jù)冗余,因而大大提高了存儲的成本.
在此背景下,有學(xué)者提出將糾刪碼技術(shù)應(yīng)用于分布式存儲系統(tǒng),從而在保證系統(tǒng)容錯性的同時,大幅度降低數(shù)據(jù)的冗余度.糾刪碼是一種編碼技術(shù),它將原始數(shù)據(jù)分為n個數(shù)據(jù)塊,并額外增加m個編碼塊.通過這n+m個數(shù)據(jù)塊中的任意n個數(shù)據(jù)塊,均可計算得到原始數(shù)據(jù).即如果有任意小于等于m的數(shù)據(jù)塊失效,仍然能通過計算還原原始數(shù)據(jù).
然而在實際的數(shù)據(jù)中心中,分布式存儲系統(tǒng)的節(jié)點需要動態(tài)地進(jìn)行增加或移除,并且每個節(jié)點的存儲介質(zhì)常常是不同批次、不同型號的磁盤,因此在分布式存儲系統(tǒng)中,每一個節(jié)點的速度和可靠性均不相同,傳統(tǒng)上固定n個數(shù)據(jù)塊和m個編碼塊的糾刪碼編碼方案很難在這樣的系統(tǒng)中達(dá)到比較好的性能.因此,在分布式存儲系統(tǒng)的糾刪碼實現(xiàn)中考慮對象的可用性和存儲設(shè)備的可靠性信息,可以更加有效地利用有限的存儲設(shè)備,從而提升系統(tǒng)的性能,減少空間浪費.
在以Ceph為代表的主流分布式存儲系統(tǒng)中,數(shù)據(jù)的可靠性默認(rèn)采用3副本的配置來保證,即將原始數(shù)據(jù)復(fù)制3份分別存儲于不同的節(jié)點中.這種3副本方案將額外占用相當(dāng)于原始數(shù)據(jù)的2倍存儲空間,因而數(shù)據(jù)冗余度為200%.而作為目前被廣泛使用的糾刪碼方案,里德-所羅門碼(Reed-Solomon Code,即RS Code)[4]將原始數(shù)據(jù)切分為n個數(shù)據(jù)塊,并按照一定的編碼規(guī)則生成m個校驗塊.對于這n+m個編碼塊,其編碼性質(zhì)保證通過任意的n個編碼塊均能重建出所有數(shù)據(jù).以n=4,m=2為例,其具有與3副本技術(shù)相同的容錯能力,但數(shù)據(jù)冗余度僅為50%.然而在大規(guī)模集群環(huán)境下,磁盤、服務(wù)器和網(wǎng)絡(luò)的錯誤已經(jīng)成為常態(tài),如Facebook的數(shù)據(jù)中心平均每天會發(fā)生50起機(jī)器不可用事件[5].當(dāng)糾刪碼編碼的存儲系統(tǒng)發(fā)生數(shù)據(jù)丟失時,系統(tǒng)需要讀取至少n塊數(shù)據(jù),通過計算重建丟失的數(shù)據(jù).相比3副本的直接拷貝,占用了更多的磁盤帶寬和網(wǎng)絡(luò)帶寬,也引入了額外的計算開銷.根據(jù)Arafa等人[6]的研究,HDFS和Ceph的糾刪碼引擎均有明顯的性能損失.因此糾刪碼的應(yīng)用需要更加高效的方案,來通過更高的并行度解決傳統(tǒng)的性能瓶頸問題.Ceph目前的糾刪碼存儲引擎中,每個數(shù)據(jù)對象被分成n個數(shù)據(jù)塊和m個編碼塊,每個塊存儲在一個OSD(Object Storage Device)中,塊的順序號作為對象的屬性保存在對象中.因而Ceph的糾刪碼引擎需要在創(chuàng)建后端時預(yù)先定義數(shù)據(jù)塊數(shù)n和編碼塊數(shù)m.這對于所有對象均采用相同的設(shè)置,沒有動態(tài)地考慮存儲需求.
RS Code是在存儲系統(tǒng)中較為常用的一種糾刪碼算法.RS Code是一種基于有限域的編碼算法,給定n個數(shù)據(jù)塊(Data Block)D1,D2,…,Dn,和一個正整數(shù)m,RS Code根據(jù)n個數(shù)據(jù)塊生成m個編碼塊(Code block)C1、C2,…,Cm.對于任意的n和m,從n個數(shù)據(jù)塊和m個編碼塊中任取n塊就能解碼出原始數(shù)據(jù),即RS Code最多容忍m個數(shù)據(jù)塊或者編碼塊同時丟失.RS Code以word為編碼和解碼單位,大的數(shù)據(jù)塊拆分到字長為w(取值一般為8或者16位)的word,然后對word進(jìn)行編解碼,數(shù)據(jù)塊的編碼原理與word編碼原理相同.此處變量Di、Ci將代表一個word.
把輸入數(shù)據(jù)視為向量D=(D1,D2,…,Dn)T,編碼后數(shù)據(jù)視為向量C=(D1,D2,…,Dn,C1,C2,…,Cm)T,RS Code可視為矩陣運算G×D=C,其中G是編碼矩陣(或稱為生成矩陣、分布矩陣,Distribution Matrix),編碼矩陣需要滿足任意n×n子矩陣可逆.為方便數(shù)據(jù)存儲,編碼矩陣上部是單位陣(n行n列),下部是m行n列矩陣.下部矩陣常可以選擇范德蒙矩陣或柯西矩陣.
范德蒙矩陣的任意的子方陣均為可逆方陣.一個m行n列的范德蒙矩陣定義為:
其中ai均不相同,且不為0.
柯西矩陣的任意一個子方陣都是奇異矩陣,存在逆矩陣.而且柯西矩陣在迦羅華域上的求逆運算,相比于比范德蒙矩陣復(fù)雜度更低.范德蒙矩陣求逆運算的復(fù)雜度為O(n3),而柯西矩陣求逆運算的復(fù)雜度僅為O(n2).另外通過有限域轉(zhuǎn)換,將GF(2w)域中的元素轉(zhuǎn)換成二進(jìn)制矩陣,將乘法轉(zhuǎn)換為位運算,降低了乘法運算復(fù)雜度.柯西矩陣的定義為:
其中xi和yi都是迦羅華域GF(2w)中的元素.
RS Code最多能容忍m個數(shù)據(jù)塊被刪除.假設(shè)D2、D5丟失,從編碼矩陣G中刪掉丟失的數(shù)據(jù)塊或編碼塊對應(yīng)的行組成矩陣G1.由于G1是可逆的,則G1×(G1)-1=I為單位矩陣.數(shù)據(jù)恢復(fù)過程如圖1所示,即左乘(G1)-1矩陣可恢復(fù)原始數(shù)據(jù)D.

圖1 糾刪碼編碼和解碼示意Fig.1 Erasure code encoding and decoding
目前的研究中,對糾刪碼編碼的一個改進(jìn)方向是優(yōu)化編碼矩陣運算.利用柯西矩陣代替范德蒙矩陣,由于柯西矩陣的求逆運算復(fù)雜度更低,且運算為有限域GF(2w)上的運算,更加容易優(yōu)化,因此速度會有較大提升.另有研究通過GPU加速RS Code的計算,Liu等[7]提出了一種基于GPU的擦除編碼實現(xiàn)G-CRS,它采用Cauchy Reed-Solomon(CRS)代碼來克服擦除編碼的性能瓶頸.通過對現(xiàn)代GPU架構(gòu)(如Maxwell和Pascal)的大量實驗評估了G-CRS的性能,并與其他最先進(jìn)的編碼庫進(jìn)行了比較,結(jié)果顯示,G-CRS的吞吐量比大多數(shù)其他編碼庫快10倍.Fan等[8]提出了一種同時計算數(shù)據(jù)塊和編碼塊的解碼方案.Zhou等[9]提出將優(yōu)化矩陣設(shè)計、優(yōu)化計算調(diào)度、減少相同異或操作、高速緩存管理和矢量化等技術(shù)共同結(jié)合,來提高編碼效率.
對糾刪碼編碼的另一個方向則是改善編碼策略.對于糾刪碼編碼、解碼和分布式數(shù)據(jù)檢索可能導(dǎo)致的分層請求增加響應(yīng)時間,EC-Store[10]提出了在糾刪碼存儲系統(tǒng)中進(jìn)行數(shù)據(jù)訪問和數(shù)據(jù)移動的策略,可顯著減少數(shù)據(jù)檢索時間.EC-Store是一個基于工作負(fù)載訪問模式的數(shù)據(jù)訪問和移動動態(tài)策略的系統(tǒng),通過使用兩個基準(zhǔn)測試工作負(fù)載的詳細(xì)評估,EC-Store產(chǎn)生的存儲開銷遠(yuǎn)遠(yuǎn)低于多備份,同時實現(xiàn)了比多備份和糾刪碼存儲系統(tǒng)更好的性能.在存儲設(shè)備的利用率方面,Kadekodi等[11]提出大規(guī)模集群存儲系統(tǒng)通常由異構(gòu)的存儲設(shè)備混合組成,不同存儲設(shè)備之間存在可靠性差異.HeART通過觀察磁盤的屬性估計磁盤的長期數(shù)據(jù)可靠性.通過此信息來盡可能減少備份數(shù)據(jù)的存儲.Xiang等[12]提出通過綜合考慮延時和磁盤開銷來對糾刪碼編碼進(jìn)行優(yōu)化.
現(xiàn)有的基于糾刪碼的分布式文件系統(tǒng)均采用確定的數(shù)據(jù)塊和校驗塊數(shù)量,在存儲系統(tǒng)初始化后,如果需要進(jìn)行調(diào)整,只能重新創(chuàng)建新的存儲池.根據(jù)不同類型的存儲設(shè)備(比如機(jī)械硬盤和固態(tài)硬盤)具有不同的可用性定義,本文基于每個對象的可用性需求,以及每個存儲設(shè)備的可靠性定義,單獨為每個對象計算數(shù)據(jù)塊和校驗塊的存儲方式,并依據(jù)系統(tǒng)的實時狀態(tài),計算得出最快的存儲節(jié)點集合,從而實現(xiàn)基于可用性定義的高效對象存儲.


現(xiàn)有的模型中均假設(shè)pdj和tf(n+m)均為常數(shù),從而給出了確定性的編碼方案.我們通過動態(tài)地計算pdj和tf(n+m)來確定更加適合當(dāng)前分布式存儲系統(tǒng)的糾刪碼編碼方案,從而更加快速地將數(shù)據(jù)存儲于分布式存儲系統(tǒng).
以此策略設(shè)計的對象存儲為基礎(chǔ),構(gòu)建的分布式文件系統(tǒng)框架如圖2所示,基于糾刪碼實現(xiàn)一個對象存儲,并以對象存儲為基礎(chǔ),在其上應(yīng)用典型的文件存儲、塊存儲和數(shù)據(jù)庫存儲系統(tǒng),滿足不同的分布式存儲需求,實現(xiàn)高性能高可用的分布式文件系統(tǒng)設(shè)計.

圖2 基于糾刪碼對象存儲的分布式文件系統(tǒng)設(shè)計Fig.2 Design of distributed file system based on erasure coded object storage
在分布式存儲系統(tǒng)中,對象持久性是代表了數(shù)據(jù)的可用性的一個參量,其數(shù)值取決于數(shù)據(jù)的重要性.在各大分布式存儲提供商的服務(wù)等級協(xié)議(Service Level Agreement,即SLA)中均對一年期對象持久性做出了保障.


表1 不同服務(wù)提供商給出的對象持久性保證Table 1 Object persistence guarantees given by different service providers


要根據(jù)存儲設(shè)備的可用性計算對象的持久性,在目前的分布式存儲系統(tǒng)的磁盤模型中,假設(shè)了每塊磁盤的故障率最大為pd,那么可以推導(dǎo)得出至少有n塊磁盤不發(fā)生故障的概率為:

但在實際情況中,每塊磁盤故障率不同,與磁盤型號和磁盤使用時間相關(guān).根據(jù)Ma等人[13]的研究,磁盤損壞的概率可用重分配的扇區(qū)數(shù)(Reallocated Sectors)來定量描述.我們可以根據(jù)磁盤的S.M.A.R.T.信息[14]得知重分配的扇區(qū)數(shù),以下記作NRS.為了計算該塊重分配扇區(qū)數(shù)為NRS的磁盤的故障率,我們統(tǒng)計數(shù)據(jù)中心中所有的磁盤,記:
1)該數(shù)據(jù)中心同型號所有磁盤中所有重分配扇區(qū)數(shù)為NRS的磁盤數(shù)量為nall
2)該數(shù)據(jù)中心同型號損壞磁盤中所有重分配扇區(qū)數(shù)為NRS的磁盤數(shù)量為nfail
則根據(jù)貝葉斯定理我們可以得到這塊重分配扇區(qū)數(shù)為NRS的磁盤的故障率預(yù)測值:


b)‖Sd‖=k


存儲設(shè)備速度主要反映在磁盤對當(dāng)前要進(jìn)行的讀寫操作所需要的時間上.磁盤的讀寫時間主要有3部分組成:隊列等待時間、讀寫延遲和數(shù)據(jù)寫入時間.隊列等待時間tqueue主要來源于系統(tǒng)負(fù)載,當(dāng)磁盤讀寫請求過多,超過了磁盤本身的服務(wù)能力,讀寫請求便會被操作系統(tǒng)放入等待隊列,從而產(chǎn)生隊列等待時間,通過更好的調(diào)度更平均地分配各個存儲節(jié)點的任務(wù)量可以有效地減少隊列等待時間.讀寫延遲tlatency主要來源于本地磁盤尋道或遠(yuǎn)程磁盤建立連接等過程,通過優(yōu)化調(diào)度算法、采用就近節(jié)點進(jìn)行調(diào)度等方案可以有效地減少讀寫延遲.而數(shù)據(jù)寫入時間僅僅取決于數(shù)據(jù)量和磁盤本身的性能,除了減少數(shù)據(jù)冗余或更換更高規(guī)格磁盤之外,這部分時間難以進(jìn)行優(yōu)化.因此總的磁盤讀寫時間td可以表示為:
對于分布式存儲系統(tǒng)來說,特別是地理分布的分布式存儲系統(tǒng),由于受網(wǎng)絡(luò)環(huán)境波動的影響,延時tlatency和帶寬bandwidth是實時發(fā)生變化的,我們在計算總的磁盤讀寫時間td時,需要動態(tài)采集延時tlatency和帶寬bandwidth.在On-demand ARECS算法中,我們把每次數(shù)據(jù)讀寫時的延時tlatency和帶寬bandwidth參數(shù)進(jìn)行保存,以便下次進(jìn)行數(shù)據(jù)寫入時使用.
對于分布式系統(tǒng),每個節(jié)點的讀寫操作可以獨立于其他節(jié)點進(jìn)行,因此可以實現(xiàn)并行讀寫,則總的讀寫時間自然取決于最慢速節(jié)點讀寫所需要的時間:
其中tcalc為糾刪碼編碼所耗費的CPU時間.根據(jù)Liu等人的研究[15],糾刪碼的編碼效率在塊數(shù)提高時急劇上升,因此我們盡量選擇數(shù)目適中的編碼塊和校驗塊數(shù),在數(shù)據(jù)量一定的前提下,選擇n+m更小的編碼塊方案可以顯著地降低糾刪碼編碼時間,從而提升系統(tǒng)的性能.
對于較大的對象,我們可以將其分為多個塊,不同塊之間可以并行進(jìn)行存儲,從而提高存儲效率,因此易證得將數(shù)據(jù)分為r塊{b1,b2,…,br}的總讀寫時間為:

然而在實際的數(shù)據(jù)中心中,每天均有專人負(fù)責(zé)損壞磁盤的更換和數(shù)據(jù)重建,因此磁盤更換和重建不可能需要一年時間完成,我們假設(shè)磁盤更換和重建時間為tr年.因此模型中公式實際上表現(xiàn)為更換磁盤并重建數(shù)據(jù)這一周期內(nèi)的情況:


顯然節(jié)點可靠性應(yīng)達(dá)到或超過對象的持久性意味著f(n,m)≥0.而編碼塊m塊數(shù)越少,數(shù)據(jù)冗余度和存儲延遲越快,因此m應(yīng)取滿足約束f(n,m)≥0的最小值:

為了驗證動態(tài)選擇存儲節(jié)點和編碼方案的策略O(shè)n-demand ARECS,我們在Tahoe-LAFS[16]上實現(xiàn)了On-demand ARECS算法.Tahoe-LAFS是一個開源的分布式文件系統(tǒng),其基于zfec糾刪碼編碼庫進(jìn)行實現(xiàn).Tahoe提供3種不同的節(jié)點:
1)介紹節(jié)點:介紹節(jié)點與所有存儲服務(wù)節(jié)點和存儲客戶節(jié)點保持連接,從而將各節(jié)點介紹給其他節(jié)點.
2)存儲節(jié)點:存儲節(jié)點負(fù)責(zé)存儲由糾刪碼編碼的塊.
3)客戶節(jié)點:客戶節(jié)點負(fù)責(zé)連接到存儲節(jié)點,接受并處理客戶的上傳、下載數(shù)據(jù)的請求.
Tahoe在默認(rèn)情況下針對所有數(shù)據(jù)均采用(n+m,n)=(10,3)的糾刪碼編碼策略.Tahoe將文件先進(jìn)行加密,然后分為若干數(shù)據(jù)單元,每個單元獨立進(jìn)行編碼.Tahoe將每單元分為n塊,然后通過編碼矩陣由這n塊數(shù)據(jù)生成m個校驗塊,然后將這n+m個塊分別存儲于獨立的存儲服務(wù)器中.在選取存儲服務(wù)器的過程中,Tahoe會從所有剩余足夠存儲空間的節(jié)點中隨機(jī)選取n+m個不同節(jié)點.
我們對Tahoe進(jìn)行了修改,實現(xiàn)了On-demand ARECS算法,動態(tài)確定編碼方案和存儲節(jié)點.根據(jù)Pinheiro等人的研究[17],使用時間為一年的磁盤pd=1.7%,而三年磁盤的pd=8.6%.我們基于KVM虛擬化集群,部署了一個37個節(jié)點的分布式文件系統(tǒng)實驗環(huán)境,如表2和圖3所示,其中Storage Server A和Storage Server B在3個存儲集群中平均分布,即每個集群均各有6個兩類節(jié)點,共有36個存儲節(jié)點和1個客戶節(jié)點.

表2 不同存儲節(jié)點的配置Table 2 Configuration of different storage nodes
為了保證各集群之間的獨立性,我們將3個存儲集群分別布置于倫敦、法蘭克福和阿姆斯特丹,客戶節(jié)點布置于紐約,從而避免單個機(jī)房由于不可抗力發(fā)生損壞.這可以最大限度的保證我們模型中的對事件獨立性的假設(shè).
由于我們的模型中考慮到了不同節(jié)點間的延遲問題,因此我們于真實Internet的環(huán)境進(jìn)行測試,以期得到更加貼近實際應(yīng)用的實驗數(shù)據(jù).圖3中各個節(jié)點間均通過Internet進(jìn)行連接,并標(biāo)注了實驗過程中測量到的各節(jié)點之間平均延遲(RTT)和平均帶寬的一個典型值.

圖3 Tahoe-LAFS實驗集群示意Fig.3 Tahoe-LAFS experimental cluster schematic
值得注意的是,在Internet上,由于不同機(jī)房間鏈路的擁擠程度不同,節(jié)點間RTT與節(jié)點間帶寬并不完全成負(fù)相關(guān)關(guān)系,地理位置較遠(yuǎn)的兩個節(jié)點,若選擇較優(yōu)的數(shù)據(jù)鏈路,同樣可以達(dá)到較大的帶寬.比如測試環(huán)境中倫敦節(jié)點到法蘭克福節(jié)點的RTT高于其到阿姆斯特丹節(jié)點的RTT,但在長時間傳輸數(shù)據(jù)的過程中,測得的帶寬則是倫敦節(jié)點到法蘭克福節(jié)點更高.

在圖4中我們可以看出,在部分特殊情況下,比如n=21到n=24區(qū)間中,針對我們的實驗環(huán)境,On-demand ARECS得到了和固定磁盤故障率均選取了m=5的編碼方案.這是因為,在實際的分布式存儲中,我們需要對編碼塊的數(shù)量進(jìn)行向上取整,也就是說,只要我們計算得到的4 但對于絕大多數(shù)情況來說,通過實驗我們可以得到,使用On-demand ARECS模型計算磁盤故障率,相比于傳統(tǒng)算法均降低了數(shù)據(jù)的冗余度.如圖4所示,在n=1到n=30區(qū)間中,數(shù)據(jù)冗余度平均降低了18%.由于On-demand ARECS算法需要針對存儲系統(tǒng)的實時信息動態(tài)選取編碼算法,因此選取平均性能更好的動態(tài)磁盤故障率模型,能有效地減小數(shù)據(jù)冗余. 圖4 不同磁盤故障率模型的數(shù)據(jù)切分?jǐn)?shù)與冗余度關(guān)系Fig.4 Relationship between data block numbers and redundancy of different hard disk failure rate models 我們在Tahoe-LAFS實驗環(huán)境中實現(xiàn)了On-demand ARECS算法.在上述實驗環(huán)境中,我們針對10MB、50MB和200MB三種文件大小進(jìn)行了實驗,測試了不同分塊情況(n+m,n)下文件傳輸時間如圖5所示. 圖5 不同數(shù)據(jù)分塊數(shù)的存儲時間表現(xiàn)Fig.5 Storage time performance of different number of data blocks 根據(jù)圖5可以看出,當(dāng)n較小時,數(shù)據(jù)冗余度較高,每個分塊數(shù)據(jù)量更大,data_size更大導(dǎo)致存儲時間較慢,當(dāng)n過大時,由于糾刪碼編解碼tcalc時間更長,同時選擇的慢速節(jié)點更多,bandwidth更小,同樣導(dǎo)致文件存儲時間更長.特別地,針對本文測試環(huán)境的分布式存儲系統(tǒng)來說,選取n=16左右存儲耗時最短.故而是否選擇了合適的編碼方案,會很大程度上影響存儲系統(tǒng)的存儲延遲.On-demand ARECS算法通過動態(tài)選取最優(yōu)的儲存節(jié)點和編碼方案,從而減小數(shù)據(jù)的存儲延時. 我們在Tahoe-LAFS上還分別實現(xiàn)了On-demand ARECS算法、原始的多備份方案以及目前的糾刪碼方案,針對10M、50M和200M大小的文件進(jìn)行了實驗,實驗結(jié)果如圖6所示.在實驗中,On-demand ARECS算法選取了n=16且m=4的編碼方案,共采用了20個節(jié)點存儲數(shù)據(jù)塊.原始糾刪碼算法選取了n=10且m=3的編碼方案,共采用了13個節(jié)點存儲數(shù)據(jù)塊.而多備份方案則直接存儲了4份原始數(shù)據(jù)的備份. 圖6 On-demand ARECS算法和多備份、固定糾刪碼算法存儲延時對比Fig.6 Comparison of storage delay between On-demand ARECS algorithm and multiple backup and fixed erasure coding algorithms 根據(jù)實驗結(jié)果顯示,依據(jù)分布式存儲系統(tǒng)的節(jié)點狀況動態(tài)選擇存儲節(jié)點和編碼方案,雖然在實驗環(huán)境中使用了更多的節(jié)點存儲數(shù)據(jù),但由于提高了系統(tǒng)的并行度,因此寫入性能有著較為明顯的改善,寫入時間平均降低了46%,相比原始的多備份方案和目前的糾刪碼方案均有顯著提升.并且相對于大文件來說,這種提升效果更為明顯. 本文針對現(xiàn)有的分布式存儲系統(tǒng)中的糾刪碼方案做出了總結(jié),并針對在數(shù)據(jù)中心中多種不同種類、不同批次的磁盤共存的特點,提出了一種動態(tài)選擇存儲節(jié)點和編碼方案的策略O(shè)n-demand ARECS.我們在Tahoe-LAFS上實驗了On-demand ARECS,相對于傳統(tǒng)編碼方案,On-demand ARECS節(jié)約了平均18%的存儲空間,并將存儲所用時間降低了46%.我們未來將研究如何更加高效地做到糾刪碼重建,使其能更大限度地減少數(shù)據(jù)中心內(nèi)部的數(shù)據(jù)傳輸.

4.3 On-demand ARECS算法的文件存儲速度對比


5 結(jié) 論