一種基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除數(shù)據(jù)放置方法器的制造方法
【專利摘要】本發(fā)明涉及一種基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除數(shù)據(jù)放置方法器?;诟黝惙植际街貜?fù)數(shù)據(jù)刪除系統(tǒng),通過改變數(shù)據(jù)分塊放置的策略,在保證重刪率不變的前提下,進(jìn)一步提升文件的讀性能,其特征在于,通過以單個(gè)寫IO為基本單位對(duì)其所包含的所有數(shù)據(jù)分塊進(jìn)行放置,從而保證同一個(gè)IO內(nèi)數(shù)據(jù)分塊盡可能獨(dú)立地放置在相對(duì)獨(dú)立的存儲(chǔ)節(jié)點(diǎn)上,以最大限度的消除文件讀取時(shí)的負(fù)載瓶頸,實(shí)現(xiàn)各獨(dú)立節(jié)點(diǎn)并行性的最大化利用,提升系統(tǒng)讀性能。
【專利說明】
一種基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除數(shù)據(jù)放置方法器
技術(shù)領(lǐng)域
[0001]本發(fā)明適用于重復(fù)數(shù)據(jù)刪除技術(shù)領(lǐng)域,提供了一種基于負(fù)載均衡的分布式重復(fù)數(shù)據(jù)刪除系統(tǒng)(Data Deduplicat1n System)的數(shù)據(jù)放置方法,消除讀文件時(shí)的負(fù)載瓶頸,提高系統(tǒng)的讀性能。
【背景技術(shù)】
[0002]隨著信息技術(shù)革命的飛速發(fā)展,大數(shù)據(jù)和云計(jì)算已經(jīng)成為當(dāng)今時(shí)代的主流,數(shù)據(jù)的爆炸性增長以及計(jì)算機(jī)性能的不斷提高對(duì)存儲(chǔ)系統(tǒng)提出了越來越高的要求,存儲(chǔ)系統(tǒng)面臨著容量和性能的挑戰(zhàn)。
[0003]面對(duì)數(shù)據(jù)量的急劇增長,大型的數(shù)據(jù)中心不斷需要更大容量的存儲(chǔ)設(shè)備,盲目地購置存儲(chǔ)設(shè)備,提高存儲(chǔ)容量并不是一種解決容量問題的有效方式。此外采購設(shè)備還涉及資金、空間、能耗和管理等諸多問題,因此數(shù)據(jù)縮減技術(shù)才是有效地均衡數(shù)據(jù)膨脹和空間不足之間矛盾的合理方式。
[0004]數(shù)據(jù)縮減技術(shù)是一種通過某種有效的技術(shù)手段刪除冗余數(shù)據(jù)以提高數(shù)據(jù)存儲(chǔ)效率的方式。經(jīng)典的數(shù)據(jù)縮減技術(shù)通常包括數(shù)據(jù)壓縮(Data Compress1n)技術(shù)、Delta編碼(Delta Encoding)技術(shù)和重復(fù)數(shù)據(jù)刪除(Data Deduplicat1n)技術(shù)三類。其中,傳統(tǒng)數(shù)據(jù)壓縮技術(shù)只能消除對(duì)象內(nèi)的冗余數(shù)據(jù),而重復(fù)數(shù)據(jù)刪除后還可以消除對(duì)象間的冗余;而相比Delta編碼技術(shù)需要的額外的計(jì)算開銷和內(nèi)存資源,而重復(fù)數(shù)據(jù)刪除的開銷更低。同時(shí),隨著重復(fù)數(shù)據(jù)刪除技術(shù)的不斷發(fā)展,該技術(shù)已經(jīng)開始由外存運(yùn)用到主存,甚至由存儲(chǔ)領(lǐng)域應(yīng)用擴(kuò)展到通訊領(lǐng)域,儼然已經(jīng)成為大數(shù)據(jù)時(shí)代的熱點(diǎn)問題。
[0005]但對(duì)于大數(shù)據(jù)而言,有效存儲(chǔ)并不是根本目的,更重要的是讀取數(shù)據(jù)進(jìn)行分析。因此如何有效地組織和存儲(chǔ)重復(fù)數(shù)據(jù)刪除后的數(shù)據(jù),以提高吞吐率和讀性能是大數(shù)據(jù)時(shí)代下人們更為關(guān)注的問題。對(duì)于備份、歸檔、快照等存儲(chǔ)系統(tǒng)來說,如此大量的數(shù)據(jù)一般是以分布式的方式分散存儲(chǔ)在各個(gè)節(jié)點(diǎn),同時(shí)這些系統(tǒng)還有一個(gè)共同點(diǎn),即一次寫入,多次讀取,因此讀性能在這一類系統(tǒng)中顯得尤為重要。這就需要我們考慮重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)的存儲(chǔ)方式,究竟以何種方式將數(shù)據(jù)存儲(chǔ)在各個(gè)節(jié)點(diǎn),在方便管理的前提下,可充分利用存儲(chǔ)節(jié)點(diǎn)間的并行性提高讀取性能,也是人們?nèi)找骊P(guān)注的問題。
[0006]在大規(guī)模的分布式數(shù)據(jù)處理系統(tǒng)中,通常包含多個(gè)存儲(chǔ)節(jié)點(diǎn),每個(gè)存儲(chǔ)節(jié)點(diǎn)用來存儲(chǔ)部分文件數(shù)據(jù)。但是數(shù)據(jù)總量遠(yuǎn)大于存儲(chǔ)容量,為節(jié)約存儲(chǔ)空間將文件分割成數(shù)據(jù)塊,并對(duì)重復(fù)的數(shù)據(jù)塊進(jìn)行刪除后,不重復(fù)的唯一的數(shù)據(jù)塊將以分布的方式存儲(chǔ)到這些節(jié)點(diǎn)上去,并進(jìn)行相應(yīng)的記錄,以便下次需要讀寫數(shù)據(jù)時(shí),可以從相應(yīng)的節(jié)點(diǎn)取回對(duì)應(yīng)的數(shù)據(jù)塊。針對(duì)不重復(fù)的數(shù)據(jù)塊的分配策略,當(dāng)前重復(fù)數(shù)據(jù)刪除系統(tǒng)一般采用的通用放置方式以物盡其用為基本原則,按節(jié)點(diǎn)順序依次循環(huán)存放的策略,即將這些唯一的數(shù)據(jù)塊按每次每塊按照節(jié)點(diǎn)的順序依次存放至到各個(gè)存儲(chǔ)節(jié)點(diǎn)。這樣做的好處是可以使每個(gè)節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)量盡可能的均衡,以便有效地利用存儲(chǔ)空間,然而卻會(huì)給訪問性能帶來損失。
[0007]數(shù)據(jù)最終是存儲(chǔ)在設(shè)備上的,重復(fù)數(shù)據(jù)刪除減少了數(shù)據(jù)的存儲(chǔ)量,降低了系統(tǒng)的性能和可靠性,因此如何設(shè)計(jì)合理的數(shù)據(jù)放置方式,以達(dá)到負(fù)載均衡的效果是需要考慮的問題。目前基于重復(fù)數(shù)據(jù)刪除數(shù)據(jù)放置的研究比較匱乏,主要包含單節(jié)點(diǎn)的和多節(jié)點(diǎn)的。
[0008]在單節(jié)點(diǎn)的環(huán)境下,非線性的數(shù)據(jù)放置會(huì)打破數(shù)據(jù)的空間局部性,對(duì)重復(fù)數(shù)據(jù)刪除性能造成了影響。該方面的研究,利用冗余增強(qiáng)數(shù)據(jù)空間局部性,從而提升系統(tǒng)的性能,包括吞吐率和讀性能。
[0009]在多節(jié)點(diǎn)的分布式環(huán)境下,有基于容量感知的數(shù)據(jù)放置策略,以實(shí)現(xiàn)節(jié)點(diǎn)間存儲(chǔ)容量的負(fù)載均衡,但并不考慮性能問題;因此有研究采用EDP(Even Data Placement)算法對(duì)放置后的數(shù)據(jù)進(jìn)行迀移,從而達(dá)到讀負(fù)載的均衡提升系統(tǒng)性能。
[0010]針對(duì)單節(jié)點(diǎn)的研究增加了部分冗余數(shù)據(jù),因此犧牲了重刪率,同時(shí)容量有限適用面較為狹窄,不能很好的應(yīng)對(duì)大數(shù)據(jù)時(shí)代下大容量的要求。雖然多節(jié)點(diǎn)可以擴(kuò)大存儲(chǔ)容量,但是基于容量感知的策略只是解決了物理上的存儲(chǔ)空間平衡問題,并沒有解決讀性能問題,而Η)Ρ算法需要多項(xiàng)式的時(shí)間對(duì)數(shù)據(jù)進(jìn)行迀移從而達(dá)到均衡讀性能的目的,因此工作量和開銷都很大。
【發(fā)明內(nèi)容】
[0011]本發(fā)明所要解決的技術(shù)問題是面向各類分布式重復(fù)數(shù)據(jù)刪除系統(tǒng),通過改變數(shù)據(jù)分塊放置的策略,在保證重刪率不變的前提下,進(jìn)一步提升文件的讀性能,通過以單個(gè)寫1為基本單位對(duì)其所包含的所有數(shù)據(jù)分塊進(jìn)行放置,從而保證同一個(gè)1內(nèi)數(shù)據(jù)分塊盡可能獨(dú)立地放置在相對(duì)獨(dú)立的存儲(chǔ)節(jié)點(diǎn)上,以最大限度的消除文件讀取時(shí)的負(fù)載瓶頸,實(shí)現(xiàn)各獨(dú)立節(jié)點(diǎn)并行性的最大化利用,提升系統(tǒng)讀性能。
[0012]本發(fā)明的技術(shù)方案是:由于傳統(tǒng)的放置方式是輪循的,無法分辨各個(gè)節(jié)點(diǎn)上的現(xiàn)有數(shù)據(jù)塊,因此不能有效地利用節(jié)點(diǎn)間的并行性,從而進(jìn)一步提升讀性能。所以本發(fā)明提出了以單個(gè)寫1為基本單位對(duì)其所包含的所有數(shù)據(jù)分塊進(jìn)行放置的方法,在放置的過程中,以互斥為原則,將同一個(gè)1內(nèi)數(shù)據(jù)分塊(包括重復(fù)的和唯一的)盡可能獨(dú)立地放置在相對(duì)獨(dú)立的存儲(chǔ)節(jié)點(diǎn)上。
[0013]所以,本發(fā)明中對(duì)于重復(fù)數(shù)據(jù)刪除后數(shù)據(jù)放置的關(guān)鍵在于如何有效地利用多節(jié)點(diǎn)的并行性實(shí)現(xiàn)讀負(fù)載均衡,提升讀性能。
[0014]具體技術(shù)方案為:
第一步,數(shù)據(jù)分塊(Chunk):根據(jù)選定的分塊策略,如全文件分塊、定長分塊、基于內(nèi)容的分塊等,將文件或數(shù)據(jù)流分割成chunk。需要注意的是,數(shù)據(jù)分塊是至關(guān)重要的第一步,將對(duì)后續(xù)的步驟產(chǎn)生直接影響。如果分塊粒度越大,則后期計(jì)算開銷越小,但是重刪效果不夠明顯,反之,如果粒度過小,則會(huì)引入過多的計(jì)算開銷,影響系統(tǒng)系能。因此應(yīng)當(dāng)根據(jù)應(yīng)用場景選擇合適的分塊策略。
[00?5] 第二步,計(jì)算特征值(Compute ):計(jì)算每一塊chunk的特征值,該特征值將作為該chunk的唯一標(biāo)識(shí),并作為下一步判斷是否重復(fù)的依據(jù),因此通常采用抗沖突能力較強(qiáng)的hash加密算法MD5、SHA-1等;
第三步,查詢索引表(Lookup):將上一步計(jì)算好的特征值與現(xiàn)有的索引表中的特征值逐一對(duì)比,判斷其代表的chunk是否重復(fù)。該索引表會(huì)隨著數(shù)據(jù)量的增大而增大,因此當(dāng)數(shù)據(jù)量龐大時(shí)會(huì)降低系統(tǒng)性能;第四步,去除冗余(Delete):根據(jù)查詢結(jié)果,如果是重復(fù)的chunk則可以直接丟棄,但需要將節(jié)點(diǎn)號(hào)保存下來,將其元數(shù)據(jù)指針指向重復(fù)的chunk,以便后面需要訪問時(shí)找到數(shù)據(jù);第五步,存儲(chǔ)唯一塊(Store):查詢后判斷是不重復(fù)的chunk,則將其特征值作為一個(gè)新的條目追加到索引表中,并將其節(jié)點(diǎn)號(hào)置為默認(rèn)值。如果達(dá)到分配節(jié)點(diǎn)號(hào)的條件,則以單個(gè)寫1為基本單位為每個(gè)唯一的chunk分配適當(dāng)?shù)牡刂贰?br>[0016]本發(fā)明涉及的重復(fù)數(shù)據(jù)刪除原理和流程,以及基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除放置方法過程詳見【附圖說明】。
[0017]使用本發(fā)明能達(dá)到以下有益效果:
1、保證系統(tǒng)原有的重刪率。重刪率由數(shù)據(jù)處理過程決定,本發(fā)明針對(duì)的是數(shù)據(jù)放置過程,因此可以保證重復(fù)數(shù)據(jù)刪除系統(tǒng)原有的重刪率保持不變;
2、提升系統(tǒng)的讀性能。由于一個(gè)1內(nèi)的數(shù)據(jù)塊盡可能地均勻的分布在各個(gè)節(jié)點(diǎn),因此讀取時(shí)可以充分利用節(jié)點(diǎn)的并行性,同時(shí)并發(fā)地讀取多個(gè)數(shù)據(jù)塊,從而消除讀負(fù)載瓶頸,提升讀性能。
[0018]實(shí)現(xiàn)本發(fā)明的開銷很小,包括以下兩點(diǎn):
1、空間開銷:為數(shù)據(jù)塊分配地址時(shí)需要維護(hù)一個(gè)節(jié)點(diǎn)數(shù)目大小的地址分配表,該表的數(shù)據(jù)結(jié)構(gòu)是個(gè)一維數(shù)組,每個(gè)元素是一個(gè)整型數(shù),代表邏輯上的節(jié)點(diǎn)號(hào)。所以空間開銷很小。
[0019]2、時(shí)間開銷:由于對(duì)數(shù)據(jù)塊進(jìn)行地址分配時(shí),需要等待同一個(gè)1的數(shù)據(jù)塊全部到來,或者整個(gè)地址分配表被充滿,或者超過設(shè)置的時(shí)間閾值,因此相比之前的立即分配需要增加少量等待時(shí)間,但該時(shí)間開銷較小在可接受的范圍之內(nèi)。
【附圖說明】
[0020]圖1是重復(fù)數(shù)據(jù)刪除原理圖;
圖2是重復(fù)數(shù)據(jù)刪除基本流程圖;
圖3是本發(fā)明基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除放置方法示意圖;
圖4是本發(fā)明基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除放置方法的流程圖。
【具體實(shí)施方式】
[0021]圖1到圖4均以4個(gè)節(jié)點(diǎn)為例。圖1是采用輪循放置方法的重復(fù)數(shù)據(jù)刪除示意圖,數(shù)據(jù)塊存放時(shí)按照節(jié)點(diǎn)號(hào)依次輪循放置。
[0022]圖2是重復(fù)數(shù)據(jù)刪除基本流程圖,包括數(shù)據(jù)分塊、計(jì)算特征值、查詢索引表、刪除重復(fù)塊和存儲(chǔ)唯一塊。
[0023]圖3是本發(fā)明采用的基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除數(shù)據(jù)放置示意圖。具體的執(zhí)行過程為:
第一步,定義兩個(gè)新的數(shù)據(jù)結(jié)構(gòu),數(shù)組PlacementTable [NodeNum]存放了一次放置中順序到來的對(duì)應(yīng)分塊的放置節(jié)點(diǎn)號(hào),字符數(shù)組LaSt_RequeStID存放了上一個(gè)數(shù)據(jù)分塊的RequestID;
第二步,初始化數(shù)組PlacementTable[NodeNum],將其所有元素置為-1;初始化Last—RequestID,令其等于‘0’,并令i=0; 第三步:獲取一個(gè)數(shù)據(jù)分塊,可獲取則到執(zhí)行第四步,不可以獲取到執(zhí)行第六步;第四步:判斷該數(shù)據(jù)分塊的RequestID是否與Last_RequestID相同,如果相同,則執(zhí)行第五步,否則執(zhí)行第七步;
第五步:判斷該數(shù)據(jù)分塊是否為重復(fù)塊,若為重復(fù)塊,則丟棄并取回其地址,放入PlacementTable[ i ] ψ。令i=i+l ;
第六步:判斷i是否等于NodeNum,如果不等于,則重復(fù)第三步,如果等于則執(zhí)行第七步;第七步:按照節(jié)點(diǎn)編號(hào)給數(shù)組PlacementTable □中值為-1的元素隨機(jī)賦值,并按照賦值后的PlacementTable□將對(duì)應(yīng)分塊放置在存儲(chǔ)節(jié)點(diǎn)上。判斷還能取到下一個(gè)數(shù)據(jù)分塊,如果能,執(zhí)行第三步;如果不能,則執(zhí)行第八步;
第八步:結(jié)束。
[0024]圖4是本發(fā)明使用上述算法的基本流程圖。
[0025]對(duì)于傳統(tǒng)的重復(fù)數(shù)據(jù)刪除系統(tǒng),按照簡單的輪循放置方法,單個(gè)1的多個(gè)數(shù)據(jù)塊可能位于同一個(gè)節(jié)點(diǎn)上,即使讀取時(shí)各個(gè)節(jié)點(diǎn)可以并發(fā)地讀取,但是包含數(shù)據(jù)塊最多的節(jié)點(diǎn)將會(huì)成為讀負(fù)載的瓶頸。
[0026]本發(fā)明針對(duì)這種情況,利用地址分配表延遲分配節(jié)點(diǎn)號(hào),以單個(gè)寫1為基本單位對(duì)其所包含的所有數(shù)據(jù)分塊進(jìn)行放置,從而保證同一個(gè)1內(nèi)數(shù)據(jù)分塊盡可能獨(dú)立地放置在相對(duì)獨(dú)立的存儲(chǔ)節(jié)點(diǎn)上,以最大限度的消除文件讀取時(shí)的負(fù)載瓶頸,實(shí)現(xiàn)各獨(dú)立節(jié)點(diǎn)并行性的最大化利用,提升系統(tǒng)讀性能。雖然增加了少量的寫延遲,但可大幅度的減少讀性能?;诒景l(fā)明的實(shí)驗(yàn)測試表明,當(dāng)節(jié)點(diǎn)數(shù)目較多時(shí),寫延遲的增加率大約為0.5%,而讀延遲的減少率可達(dá)到8%以上,減少率是增加率16倍左右。
[0027]由此可以看出,本發(fā)明能利用節(jié)點(diǎn)間的并行性,減少讀取時(shí)的讀延遲,消除讀負(fù)載的不均衡,達(dá)到了提升性能的效果。
【主權(quán)項(xiàng)】
1.一種基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除數(shù)據(jù)放置方法器,基于各類分布式重復(fù)數(shù)據(jù)刪除系統(tǒng),通過改變數(shù)據(jù)分塊放置的策略,在保證重刪率不變的前提下,提升文件的讀性能,其特征在于,通過以單個(gè)寫1為基本單位對(duì)其所包含的所有數(shù)據(jù)分塊進(jìn)行放置,從而保證同一個(gè)1內(nèi)數(shù)據(jù)分塊獨(dú)立地放置在相對(duì)獨(dú)立的存儲(chǔ)節(jié)點(diǎn)上,以消除文件讀取時(shí)的負(fù)載瓶頸,實(shí)現(xiàn)各獨(dú)立節(jié)點(diǎn)并行性的利用,提升系統(tǒng)讀性能,具體步驟為: 第一步,數(shù)據(jù)分塊:根據(jù)選定的分塊策略,如全文件分塊、定長分塊、基于內(nèi)容的分塊,將文件或數(shù)據(jù)流分割成chunk,如果分塊粒度越大,則后期計(jì)算開銷越小,但是重刪效果不夠明顯,反之,如果粒度過小,則會(huì)引入過多的計(jì)算開銷,影響系統(tǒng)系能; 第二步,計(jì)算特征值:計(jì)算每一塊chunk的特征值,該特征值將作為該chunk的唯一標(biāo)識(shí),并作為下一步判斷是否重復(fù)的依據(jù),采用hash加密算法MD5或SHA-1 ; 第三步,查詢索引表:將上一步計(jì)算好的特征值與現(xiàn)有的索引表中的特征值逐一對(duì)比,判斷其代表的chunk是否重復(fù),該索引表隨著數(shù)據(jù)量的增大而增大,因此當(dāng)數(shù)據(jù)量龐大時(shí)會(huì)降低系統(tǒng)性能; 第四步,去除冗余:根據(jù)查詢結(jié)果,如果是重復(fù)的chunk則直接丟棄,但需要將節(jié)點(diǎn)號(hào)保存下來,將其元數(shù)據(jù)指針指向重復(fù)的chunk,以便后面需要訪問時(shí)找到數(shù)據(jù); 第五步,存儲(chǔ)唯一塊:查詢后判斷是不重復(fù)的chunk,則將其特征值作為一個(gè)新的條目追加到索引表中,并將其節(jié)點(diǎn)號(hào)置為默認(rèn)值,如果達(dá)到分配節(jié)點(diǎn)號(hào)的條件,則以單個(gè)寫1為基本單位為每個(gè)唯一的chunk分配適當(dāng)?shù)牡刂贰?.根據(jù)權(quán)利要求1所述的一種基于負(fù)載均衡的重復(fù)數(shù)據(jù)刪除數(shù)據(jù)放置方法器,其特征在于,第五步存儲(chǔ)唯一的數(shù)據(jù)塊時(shí),以一個(gè)1請(qǐng)求為放置粒度,利用分布式節(jié)點(diǎn)的并行性,將同一個(gè)寫請(qǐng)求的數(shù)據(jù)均勻分布在各個(gè)節(jié)點(diǎn),其具體流程為: 第5.1步,定義兩個(gè)新的數(shù)據(jù)結(jié)構(gòu),數(shù)組PlacementTable[NodeNum]存放了一次放置中順序到來的對(duì)應(yīng)分塊的放置節(jié)點(diǎn)號(hào),字符數(shù)組Last_ReqUestID存放了上一個(gè)數(shù)據(jù)分塊的RequestID; 第5.2步,初始化數(shù)組PlacementTable[NodeNum],將其所有元素置為-1;初始化Last_RequestID,令其等于‘0’,并令i=0; 第5.3步:獲取一個(gè)數(shù)據(jù)分塊,可獲取則到執(zhí)行第5.4步,不可獲取則執(zhí)行第5.6步; 第5.4步:判斷該數(shù)據(jù)分塊的RequestID是否與Last_RequestID相同,如果相同,則執(zhí)行第5.5步,否則執(zhí)行第5.7步; 第5.5步:判斷該數(shù)據(jù)分塊是否為重復(fù)塊,若為重復(fù)塊,則丟棄并取回其地址,放入PlacementTable[i] ψ,令i=i+l ; 第5.6步:判斷i是否等于NodeNum,如果不等于,則重復(fù)第5.3步,如果等于則執(zhí)行第5.7步; 第5.7步:按照節(jié)點(diǎn)編號(hào)給數(shù)組PlacementTable[]中值為-1的元素隨機(jī)賦值,并按照賦值后的PlacementTable□將對(duì)應(yīng)分塊放置在存儲(chǔ)節(jié)點(diǎn)上,判斷還能取到下一個(gè)數(shù)據(jù)分塊,如果能,執(zhí)行第5.3步;如果不能,則執(zhí)行第5.8步; 第5.8步:結(jié)束。
【文檔編號(hào)】G06F17/30GK105824881SQ201610135504
【公開日】2016年8月3日
【申請(qǐng)日】2016年3月10日
【發(fā)明人】肖儂, 鄧明翥, 陳志廣, 劉芳, 張學(xué)成
【申請(qǐng)人】中國人民解放軍國防科學(xué)技術(shù)大學(xué)