圖一:基于塊級(jí)去重方式
如圖一所示,圖中第一次備份為全備份,以后每次只備份變化量,并給每個(gè)數(shù)據(jù)塊添加相應(yīng)的指針。從形式上看,塊級(jí)去重與文件級(jí)去重原理基本一致,但文件級(jí)去重比對(duì)的是不同文件,如果文件內(nèi)容有變化,則被視為變化量進(jìn)行保存;而基于數(shù)據(jù)塊去重模式無(wú)論文件是否變化,只記錄變化數(shù)據(jù)塊,而文件內(nèi)容變化后,其變化數(shù)據(jù)塊部分被保存。
基于變長(zhǎng)去重的方式:
在去重效果上看,塊級(jí)去重遠(yuǎn)高于文件級(jí)去重,而塊級(jí)去重則進(jìn)一步涉及到變長(zhǎng)與定長(zhǎng)的問(wèn)題。
定長(zhǎng)是指數(shù)據(jù)塊大小是固定的,一般固定值為12K—256K不等,對(duì)于定長(zhǎng)而言,數(shù)據(jù)塊越小,去重率越高。而變長(zhǎng)的數(shù)據(jù)切割方式通過(guò)相應(yīng)的塊的長(zhǎng)度,再加上相應(yīng)的字母順序,通過(guò)一個(gè)三維的算法進(jìn)行切割。
圖二:變長(zhǎng)切割與定長(zhǎng)切割的對(duì)比
如圖二所示,如果文件進(jìn)行改變,比如插一個(gè)“”在數(shù)據(jù)塊中,變長(zhǎng)切割模式就變成4、4、7三行一組,剩下的又按照“父”是有含義的一個(gè)字,切割方法沒(méi)有變。最后掃描下來(lái),只有首末行是變化的,需要備份首末行這一小小的變化量,即完成了變更,而數(shù)據(jù)量增加的僅僅是引號(hào)。
如果是定長(zhǎng)則首行沒(méi)有任何規(guī)律可言,完全按照固定大小進(jìn)行數(shù)據(jù)切分,當(dāng)添加引號(hào)時(shí)引起整個(gè)數(shù)據(jù)塊變動(dòng),從而生成了新的數(shù)據(jù)塊。從去重效果上看,變長(zhǎng)的去重率要高于定長(zhǎng)。
多重校驗(yàn)的高可靠性
重復(fù)數(shù)據(jù)刪除技術(shù)的關(guān)鍵在于可靠性,由于數(shù)據(jù)存儲(chǔ)時(shí)候被切塊并對(duì)每個(gè)塊進(jìn)行單一實(shí)例存儲(chǔ),那么任何一個(gè)數(shù)據(jù)塊丟失,或者指針錯(cuò)誤都會(huì)造成一大部分?jǐn)?shù)據(jù)永久無(wú)法找回。對(duì)于客戶而言,是造成不可估計(jì)的損失,因此如何保證重復(fù)數(shù)據(jù)刪除的可靠性顯得至關(guān)重要。
SOUL的重復(fù)數(shù)據(jù)刪除技術(shù)在每一步hash對(duì)比過(guò)程中都有CRC校驗(yàn),保證了每一步對(duì)比中數(shù)據(jù)的正確性;而每一步對(duì)比過(guò)程都會(huì)定時(shí)與log進(jìn)行同步。如果出現(xiàn)不同步現(xiàn)象,則該步驟將清空記錄并重新引用log信息,再次執(zhí)行比對(duì)工作;而log則定時(shí)與底層數(shù)據(jù)庫(kù)同步,保證了數(shù)據(jù)與hashkey的絕對(duì)一致性。為了防止非法關(guān)機(jī)造成的數(shù)據(jù)不同步,SOUL在hash對(duì)比的第一層設(shè)置了啟動(dòng)同步,無(wú)論是否非法關(guān)機(jī),設(shè)備在啟動(dòng)后都會(huì)進(jìn)行自檢,并與log進(jìn)行同步,進(jìn)一步確保了數(shù)據(jù)準(zhǔn)確性。
沙漏式對(duì)比機(jī)制的高效率
重復(fù)數(shù)據(jù)刪除技術(shù)始終是在去重比例與性能之間找平衡,去重比例越高則必然性能衰減越大,其原因在于數(shù)據(jù)塊在切塊時(shí)候塊越小,出現(xiàn)重復(fù)數(shù)據(jù)塊的幾率會(huì)越高;而塊越小則意味著相同大小的數(shù)據(jù)被切割后,產(chǎn)生的數(shù)據(jù)塊的數(shù)量越大,而數(shù)據(jù)塊數(shù)量越大在hashkey對(duì)比過(guò)程中耗時(shí)越長(zhǎng),使得性能衰減越大。因此即便采用等同的變長(zhǎng)法則切塊后,hash對(duì)比過(guò)程也同樣決定著性能損耗的程度。
SOUL的重復(fù)數(shù)據(jù)刪除技術(shù)在hash對(duì)比過(guò)程中采用了沙漏式的對(duì)比機(jī)制,該機(jī)制會(huì)在緩存中逐級(jí)篩選重復(fù)數(shù)據(jù)。最上層機(jī)制做最簡(jiǎn)單的粗略判定,丟掉絕大部分重復(fù)數(shù)據(jù),將可能不重復(fù)的數(shù)據(jù)傳遞到第二層級(jí);第二層做相對(duì)對(duì)比,判定hash是否已經(jīng)包含于某個(gè)hash段組中,此時(shí)已經(jīng)有99%的數(shù)據(jù)進(jìn)行了dedupe,而剩下的1%的數(shù)據(jù)將傳遞到第三層;第三層將前面沒(méi)有判定結(jié)果的hash與系統(tǒng)全部被使用過(guò)的hash進(jìn)行對(duì)比,此處才開(kāi)始真正對(duì)比hash,也就是是細(xì)節(jié)對(duì)比,第三層將過(guò)濾掉剩下數(shù)據(jù)中的99.99999%,最后剩下仍然無(wú)法判定的則會(huì)在hash庫(kù)中逐一查找進(jìn)行對(duì)比。
雖然對(duì)比過(guò)程變成了4步,但去重效率卻大幅提升。通過(guò)實(shí)際去重測(cè)試,在打開(kāi)重復(fù)數(shù)據(jù)刪除之后,磁盤(pán)I/O是未開(kāi)啟重復(fù)數(shù)據(jù)刪除的1.06%。磁盤(pán)I/O決定了一個(gè)系統(tǒng)的性能,更低的I/O不僅有效提高去重效率,也提升了磁盤(pán)的使用壽命。在采用多重對(duì)比后,其數(shù)據(jù)縮減比也大幅提升,實(shí)際測(cè)試數(shù)據(jù)縮減比可以超過(guò)30:1。
能夠?qū)⒋疟P(pán)I/O降低到以上程度主要是因?yàn)槊恳徊竭\(yùn)算是在內(nèi)存中進(jìn)行,并且都采用預(yù)讀取機(jī)制,而每一步都將只判定自己可以判定的hash,任何無(wú)法判定的hash都交給后面處理,這樣每一層數(shù)據(jù)篩選的效率將大幅提升,從而提升整體效率。
綜上而言,SOUL采用多種優(yōu)化機(jī)制,解決了高去重比例下性能衰減的問(wèn)題,實(shí)測(cè)在系統(tǒng)性能衰減不足5%的情況下實(shí)現(xiàn)了超過(guò)30:1的數(shù)據(jù)縮減比。同時(shí)高效、多重的校驗(yàn)機(jī)制也徹底打消客戶對(duì)重復(fù)數(shù)據(jù)刪除可靠性的擔(dān)心。
SOUL為大數(shù)據(jù)時(shí)代打造了安全可靠、高效靈活的數(shù)據(jù)管理與計(jì)算解決方案,以智能化、可拓展的開(kāi)放式系統(tǒng)設(shè)計(jì),輔助用戶實(shí)現(xiàn)從傳統(tǒng)IT應(yīng)用向云計(jì)算、大數(shù)據(jù)應(yīng)用的平滑遷移,從而更加快速開(kāi)展數(shù)據(jù)資產(chǎn)的分析、挖掘、管理,并從中獲取商業(yè)機(jī)會(huì)與競(jìng)爭(zhēng)優(yōu)勢(shì)。