一種面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方法器的制造方法
【專利摘要】本發(fā)明涉及一種面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方法器?;诟黝惙植际街貜蛿?shù)據(jù)刪除和糾刪碼混合存儲系統(tǒng),通過改變對數(shù)據(jù)分塊和校驗分塊的放置策略,在保證系統(tǒng)可靠性不受任何影響的前提下,進一步提升數(shù)據(jù)連續(xù)讀取時的讀性能,其特征在于,不改變各條帶的構(gòu)成,通過將多個條帶中所有的數(shù)據(jù)元素和所有校驗元素分別連續(xù)放置,從而保證所有數(shù)據(jù)元素放置的連續(xù)性,消除原校驗元素中斷數(shù)據(jù)元素放置所帶來的負載瓶頸,從而最大限度地提升數(shù)據(jù)連續(xù)讀取時的并行度,實現(xiàn)各獨立節(jié)點并行性的最大化利用,提升連續(xù)讀的系統(tǒng)讀性能。
【專利說明】
-種面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方 法器
技術領域
[0001] 本發(fā)明適用于重復數(shù)據(jù)刪除和糾刪碼技術領域,提供了一種面向數(shù)據(jù)連續(xù)讀取的 重復數(shù)據(jù)刪除(Data Deduplication)和糾刪碼(Erasure code)混合系統(tǒng)的數(shù)據(jù)放置方法, 在不改變系統(tǒng)可靠性的前提下消除對數(shù)據(jù)連續(xù)讀取的負載瓶頸,提高系統(tǒng)的讀性能。
【背景技術】
[0002] 大數(shù)據(jù)時代,數(shù)據(jù)的爆炸性增長W及WCPU和GPU為代表的處理器件的計算性能的 飛速增長對存儲系統(tǒng)容量、性能和可靠性等方面提出了更高的要求,存儲系統(tǒng)面臨著巨大 挑戰(zhàn)。
[0003] -方面,就龐大和日益增長的數(shù)據(jù)規(guī)模而言,盲目地通過增加存儲設備來實現(xiàn)存 儲規(guī)模的擴張并不是一種解決容量問題的有效方式,其還設及資金、空間、能耗和管理等諸 多問題。多種研究表明,各類存儲系統(tǒng)中大約60%W上的數(shù)據(jù)都是重復的,尤其在備份和歸 檔系統(tǒng)中由于數(shù)據(jù)共享和多版本發(fā)布等因素,數(shù)據(jù)的重復率可達80%~90%,使用數(shù)據(jù)縮減技 術才是根本解決大數(shù)據(jù)存儲的有效方式。
[0004] 數(shù)據(jù)縮減技術是一種通過某種有效的技術手段刪除冗余數(shù)據(jù)W提高數(shù)據(jù)存儲效 率的方式。經(jīng)典的數(shù)據(jù)縮減技術通常包括數(shù)據(jù)壓縮(Data Compression)技術、Delta編碼 (Del1:a Encoding)技術和重復數(shù)據(jù)刪除(Data Deduplication)技術Ξ類。其中,傳統(tǒng)數(shù)據(jù) 壓縮技術只能消除對象內(nèi)的冗余數(shù)據(jù),而重復數(shù)據(jù)刪除后還可W消除對象間的冗余;而相 比Delta編碼技術需要的額外的計算開銷和內(nèi)存資源,而重復數(shù)據(jù)刪除的開銷更低。因此, 重復數(shù)據(jù)刪除技術已經(jīng)成為當今大數(shù)據(jù)存儲領域應用研究的熱點問題。
[0005] 另一方面,新舊存儲介質(zhì)本身的可靠性問題和不斷攀升的存儲規(guī)模使得存儲系統(tǒng) 可靠性問題日益突出。對于任何系統(tǒng)而言,沒有了可靠性,就談不上任何性能。因此為了保 證數(shù)據(jù)的可靠性和可用性,分布式存儲系統(tǒng)必須采用一定的數(shù)據(jù)容錯技術。數(shù)據(jù)容錯技術 是指通過某種方式對數(shù)據(jù)對象進行處理后產(chǎn)生一定的冗余,并將處理后的數(shù)據(jù)放置到不同 的節(jié)點上,使得在其中一部分數(shù)據(jù)因節(jié)點失效而丟失時,能夠使用存活節(jié)點上剩余的部分 數(shù)據(jù)來恢復出原數(shù)據(jù)對象。當前,常見的數(shù)據(jù)容錯技術包括"多副本(Replication)"技術和 "糾刪碼化rasure Codes)"技術兩種。雖然多副本技術有著無法比擬的數(shù)據(jù)可用性,但是隨 著數(shù)據(jù)規(guī)模的增大,其昂貴的存儲開銷使得其應用日益減少。相反,能夠使用更少存儲代價 實現(xiàn)更高可靠性的糾刪碼技術逐漸成為了存儲可靠性的主流,對各類糾刪碼及其應用問題 的研究已經(jīng)成為了存儲領域研究的絕對熱點。
[0006] 綜上,既要有效去除重復數(shù)據(jù),實現(xiàn)有效存儲,又要通過添加冗余來保證系統(tǒng)的可 靠性,因此構(gòu)建重復數(shù)據(jù)刪除和糾刪碼的混合存儲系統(tǒng)成為解決問題的關鍵。
[0007] 在各類大數(shù)據(jù)存儲系統(tǒng)中,高效地讀取數(shù)據(jù)才是數(shù)據(jù)存儲的最終目的。因此如何 有效地組織和存儲重復數(shù)據(jù)刪除之后的數(shù)據(jù)和編碼之后生成的冗余,W提高吞吐率和讀性 能成為研究的重點問題。就現(xiàn)有大數(shù)據(jù)存儲系統(tǒng)而言,大部分都采用W0RM(Write化ce and Read Many times, -次寫入,多次讀出)的文件訪問模型,因此提升讀性能顯得尤為重要。 然而,系統(tǒng)的讀性能與數(shù)據(jù)的布局密切相關,如何將去重之后的數(shù)據(jù)和編碼之后的冗余更 好地放置在各個節(jié)點上,實現(xiàn)對存儲節(jié)點間的并行性的充分利用,從而提高讀取性能,成為 是人們?nèi)找骊P注的問題。
[0008] 在沒有糾刪碼編碼的重復數(shù)據(jù)刪除系統(tǒng)中,已有研究對去重后的數(shù)據(jù)放置問題進 行了研究,提出了具有請求感知的數(shù)據(jù)放置方法,并W此為基礎構(gòu)建了 RE-Dedupe來提升文 件的讀性能。該方法通過將同一個請求下的多個數(shù)據(jù)分塊盡可能獨立地放置在不同的節(jié)點 上,盡可能多地利用存儲節(jié)點間的并行性,從而提高讀性能。該方法引入了一定量的寫延 遲,而且無法應用于存在重刪和糾刪的混合系統(tǒng)中。
[0009] 由于重復數(shù)據(jù)刪除和糾刪碼的結(jié)合是比較新的課題,針對其數(shù)據(jù)放置的研究并不 多。在多節(jié)點的分布式環(huán)境下,有基于容量感知的數(shù)據(jù)放置策略,W實現(xiàn)節(jié)點間存儲容量的 負載均衡,但并不考慮性能問題;因此有研究采用抓P(Even Data Placement)算法對放置 后的數(shù)據(jù)進行遷移,從而達到讀負載的均衡提升系統(tǒng)性能。但是,EDP算法需要多項式的時 間對數(shù)據(jù)進行遷移從而達到均衡讀性能的目的,因此工作量和開銷都很大。
[0010] 另外,數(shù)據(jù)的連續(xù)讀取作為讀操作中的重要類型,其性能直接關系著系統(tǒng)吞吐率 的大小。然而,上述研究都未針對重刪糾刪的混合系統(tǒng)中的數(shù)據(jù)連續(xù)讀取問題進行針對性 研究。具體而言,數(shù)據(jù)在經(jīng)過去重之后,需要分組進行編碼,生成冗余,然而由于分組大小的 限制和冗余分塊的產(chǎn)生,會在各分組間穿插放置對應的冗余分塊,中斷編碼前連續(xù)放置的 數(shù)據(jù)分塊。由于冗余分塊不會被用戶訪問,因此數(shù)據(jù)分塊中夾雜冗余分塊的布局會造成數(shù) 據(jù)連續(xù)讀取時的負載不均衡現(xiàn)象,導致無法最大限度地利用節(jié)點間的并行性。
【發(fā)明內(nèi)容】
[0011] 本發(fā)明所要解決的技術問題是面向各類分布式重復數(shù)據(jù)刪除和糾刪碼并存的混 合存儲系統(tǒng),通過改變對數(shù)據(jù)分塊和校驗分塊的放置策略,在保證系統(tǒng)可靠性不受任何影 響的前提下,進一步提升數(shù)據(jù)連續(xù)讀取時的讀性能。其特征在于,不改變各條帶的構(gòu)成,通 過將多個條帶中所有的數(shù)據(jù)元素和所有校驗元素分別連續(xù)放置,從而保證所有數(shù)據(jù)元素放 置的連續(xù)性,消除原校驗元素中斷數(shù)據(jù)元素放置所帶來的負載瓶頸,從而最大限度地提升 數(shù)據(jù)連續(xù)讀取時的并行度,提升連續(xù)讀時的系統(tǒng)讀性能。
[0012] 本發(fā)明的技術方案是:由于現(xiàn)有的重刪糾刪混合存儲系統(tǒng)繼承了簡單放置策略或 者傳統(tǒng)的輪轉(zhuǎn)放置策略,對原來數(shù)據(jù)分塊和編碼后產(chǎn)生的冗余分塊統(tǒng)一進行放置,使得不 會被用戶訪問的冗余分塊中斷了數(shù)據(jù)分塊的連續(xù)性,導致出現(xiàn)對數(shù)據(jù)連續(xù)讀取時的負載不 均衡現(xiàn)象,無法最大限度地利用節(jié)點間的并行性。所W本發(fā)明針對重刪糾刪混合存儲系統(tǒng) 中的數(shù)據(jù)連續(xù)讀取的問題進行優(yōu)化,提出了將多個分組的全部數(shù)據(jù)分塊和全部冗余分塊分 別進行獨立連續(xù)放置的方法,用W提升數(shù)據(jù)連續(xù)讀取時的系統(tǒng)性能。
[0013] 所W,本發(fā)明中對于重復數(shù)據(jù)刪除后的數(shù)據(jù)分塊和分組之后編碼產(chǎn)生的冗余分塊 放置的關鍵在于如何在保證不影響系統(tǒng)可靠性和重刪率的前提下,盡可能地保證更多的數(shù) 據(jù)分塊連續(xù)獨立地放置在相對獨立的存儲節(jié)點上,盡可能多地有效地利用多節(jié)點的并行性 實現(xiàn)讀負載均衡,提升讀性能。
[0014] 具體技術方案為: 第一步,數(shù)據(jù)分塊:采用定長分塊的方式將文件或數(shù)據(jù)流進行分割,將其分割為若干個 chunk(數(shù)據(jù)分塊)。分塊粒度的大小應當根據(jù)應用場景來進行選擇。如果分塊粒度越大,貝U 后期計算開銷越小,但是重刪效果不夠明顯,反之,如果粒度過小,則會引入過多的計算開 銷,影響系統(tǒng)性能。
[0015] 第二步,計算特征值:計算每一塊chunk的特征值,該特征值將作為該chunk的唯一 標識,并作為下一步判斷是否重復的依據(jù)。通常特征值的計算采用抗沖突能力較強的hash 加密算法,如MD5、SHA-1等; 第Ξ步,查詢索引表:將計算好的特征值與現(xiàn)有的索引表中的特征值逐一對比,用W判 斷其代表的chunk是否重復。該索引表會隨著數(shù)據(jù)量的增大而增大,因此當數(shù)據(jù)量龐大時會 降低系統(tǒng)性能; 第四步,去除重復數(shù)據(jù):根據(jù)查詢結(jié)果,如果是重復的chunk則可W直接丟棄,但需要將 節(jié)點號保存下來,將其元數(shù)據(jù)指針指向重復的chunk, W便后面需要訪問時找到數(shù)據(jù); 第五步,冗余編碼:查詢后判斷是不重復的chunk,則將其特征值作為一個新的條目追 加到索引表中,并根據(jù)分組大小對k個此類唯一塊進行冗余編碼,生成m個冗余分塊。所使用 的具體的編碼和編碼參數(shù)應該根據(jù)系統(tǒng)的可靠性需求進行選擇。
[0016] 第六步,放置存儲分塊:根據(jù)節(jié)點數(shù)和冗余編碼參數(shù)確定多個分組內(nèi)數(shù)據(jù)和冗余 的放置位置,根據(jù)放置算法為每個數(shù)據(jù)分塊和冗余分塊分配適當?shù)牡刂罚⑦M行存儲。
[0017] 本發(fā)明設及的重復數(shù)據(jù)刪除原理、糾刪碼編碼原理和具體流程,W及面向數(shù)據(jù)連 續(xù)讀取的重刪糾刪數(shù)據(jù)放置方法的具體過程詳見【附圖說明】。
[0018] 使用本發(fā)明能達到W下有益效果: 1、 保證系統(tǒng)原有的重刪率。重刪率由數(shù)據(jù)查詢比對過程決定,本發(fā)明針對的是數(shù)據(jù)放 置過程,因此不會對系統(tǒng)原有的重刪率造成任何影響; 2、 保證系統(tǒng)原有的可靠性。系統(tǒng)的可靠性由冗余編碼參數(shù)和放置策略共同決定。本發(fā) 明在對放置策略的修改過程中,嚴格保證分組內(nèi)部的元素放置節(jié)點的互斥性,從而保證系 統(tǒng)的可靠性。
[0019] 3、提升系統(tǒng)的連續(xù)讀性能。由于本發(fā)明盡可能地保證更多的數(shù)據(jù)分塊連續(xù)獨立地 放置在相對獨立的存儲節(jié)點上,在數(shù)據(jù)連續(xù)讀取時,能夠盡可能多地有效地利用多節(jié)點的 并行性實現(xiàn)讀負載均衡,盡可能多地并發(fā)地讀取多個數(shù)據(jù)分塊,從而消除讀負載瓶頸,提升 讀性能。
【附圖說明】
[0020] 圖1是重復數(shù)據(jù)刪除原理圖; 圖2是重復數(shù)據(jù)刪除和糾刪碼混合系統(tǒng)的基本流程圖(簡單放置策略和輪轉(zhuǎn)放置); 圖3是本發(fā)明面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方法的示意圖; 圖4本發(fā)明面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方法的流程圖。
【具體實施方式】
[0021] 圖1是僅采用重復數(shù)據(jù)刪除的存儲系統(tǒng)原理示意圖。文件首先進行分塊,然后對每 一分塊通過計算哈希值生成對應的指紋,將指紋與索引表中的指紋進行比對,去除重復數(shù) 據(jù),最后將唯一數(shù)據(jù)分塊按照節(jié)點號依次輪轉(zhuǎn)進行放置并存儲到相應節(jié)點。
[0022] 圖2是重復數(shù)據(jù)刪除和糾刪碼混合系統(tǒng)的基本流程圖,包括數(shù)據(jù)分塊、計算特征 值、查詢索引表、刪除重復塊、冗余編碼和放置并存儲分塊。其放置策略為不區(qū)分冗余分塊 和數(shù)據(jù)分塊的前提下,按條帶分組依次順序輪轉(zhuǎn)放置分塊。
[0023] 圖3是本發(fā)明面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方法的示意圖。 具體的執(zhí)行過程為:(假設為糾刪碼編碼參數(shù)為(M. 0,即條帶stripe大小為η個元素(分 塊),其中k個數(shù)據(jù)元素(分塊)經(jīng)編碼生成n-k個冗余分塊) 第一步,定義變量整型變量r 寫C擊W,λ-),其中護:成.口,。為η和k的最大公約數(shù)。設 捉表示第i個條帶stripe中的第j個元素(分塊>,其中i e[0,軒3);,的:隨邱-i;。
[0024] 第二步,設條帶stripe的編號為i,當?shù)谝粭l條帶生成時,初始化i=0。
[0025] 第Ξ步,令臨時變量挺呼。對于第i條帶stripe中的第j個元素(分塊)熱. ,計算其放置的節(jié)點編號妨血山=(扣哪·*·^ +,其中恥。血山如舶e [0,,>;-:1].。
[0026] 第四步,將元素(分塊乂 U分發(fā)給指定的第雌neci個節(jié)點進行存儲。
[0027] 第五步,判斷是否有新條帶生成,如果有,則;,并進入第Ξ步,否則結(jié)束。
[0028] 圖4為本發(fā)明面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方法的流程圖。
[0029] 對于現(xiàn)有的重刪糾刪混合系統(tǒng),其分塊放置策略為不區(qū)分冗余分塊和數(shù)據(jù)分塊的 前提下,按條帶分組依次簡單放置或者順序輪轉(zhuǎn)放置分塊,使得單個文件的多個數(shù)據(jù)塊可 能位于同一個節(jié)點上,如圖2中不管是簡單放置策略還是輪轉(zhuǎn)放置策略中的文件Filel,其 數(shù)據(jù)分塊A和E都存儲在Node#0上,造成Filel讀取時的負載瓶頸,無法盡可能地利用系統(tǒng)的 并發(fā)性,制約讀性能。
[0030] 本發(fā)明針對上述情況,在放置時有區(qū)別地對待數(shù)據(jù)分塊和冗余分塊,在保證原系 統(tǒng)重刪率和可靠性不變的前提下,根據(jù)節(jié)點數(shù)目和編碼參數(shù)選定特定數(shù)目的條帶構(gòu)成一個 分組,在一個分組內(nèi)保證所有數(shù)據(jù)分塊和冗余分塊分別獨立連續(xù)放置,解決條帶間冗余分 塊中斷數(shù)據(jù)分塊的問題,最大限度地消除數(shù)據(jù)連續(xù)讀取時的負載瓶頸,實現(xiàn)各獨立節(jié)點并 行性的最大化利用,提升系統(tǒng)讀性能。
[0031] 由此可W看出,本發(fā)明能夠針對重刪糾刪混合系統(tǒng)中的數(shù)據(jù)連續(xù)讀問題,在保證 系統(tǒng)可靠性的前提下,最大可能地保證更多數(shù)目的數(shù)據(jù)分塊順序連續(xù)放置,從而在連續(xù)讀 取數(shù)據(jù)時盡可能地利用節(jié)點間的并行性,消除讀負載的不均衡,達到了提升連續(xù)讀性能的 效果。
【主權項】
1. 一種面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方法器,基于各類分布式重 復數(shù)據(jù)刪除和糾刪碼混合存儲系統(tǒng),通過改變對數(shù)據(jù)分塊和校驗分塊的放置策略,在保證 系統(tǒng)可靠性不受任何影響的前提下,進一步提升數(shù)據(jù)連續(xù)讀取時的讀性能,其特征在于,不 改變各條帶的構(gòu)成,通過將多個條帶中所有的數(shù)據(jù)元素和所有校驗元素分別連續(xù)放置,從 而保證所有數(shù)據(jù)元素放置的連續(xù)性,消除原校驗元素中斷數(shù)據(jù)元素放置所帶來的負載瓶 頸,從而最大限度地提升數(shù)據(jù)連續(xù)讀取時的并行度,提升連續(xù)讀時的系統(tǒng)讀性能, 具體步驟為: 第一步,數(shù)據(jù)分塊:采用定長分塊的方式將文件或數(shù)據(jù)流進行分割,將其分割為若干個 chunk數(shù)據(jù)分塊,分塊粒度的大小應當根據(jù)應用場景來進行選擇,如果分塊粒度越大,則后 期計算開銷越小,但是重刪效果不夠明顯,反之,如果粒度過小,則會引入過多的計算開銷, 影響系統(tǒng)系能, 第二步,計算特征值:計算每一塊chunk的特征值,該特征值將作為該chunk的唯一標 識,并作為下一步判斷是否重復的依據(jù),通常特征值的計算采用抗沖突能力較強的hash加 密算法,如MD5、SHA-1; 第三步,查詢索引表:將計算好的特征值與現(xiàn)有的索引表中的特征值逐一對比,用以判 斷其代表的chunk是否重復,該索引表隨著數(shù)據(jù)量的增大而增大,因此當數(shù)據(jù)量龐大時降低 系統(tǒng)性能; 第四步,去除重復數(shù)據(jù):根據(jù)查詢結(jié)果,如果是重復的chunk則可以直接丟棄,但需要將 節(jié)點號保存下來,將其元數(shù)據(jù)指針指向重復的chunk,以便后面需要訪問時找到數(shù)據(jù); 第五步,冗余編碼:查詢后判斷是不重復的chunk,則將其特征值作為一個新的條目追 加到索引表中,并根據(jù)分組大小對k個此類唯一塊進行冗余編碼,生成m個冗余分塊,所使用 的具體的編碼和編碼參數(shù)應該根據(jù)系統(tǒng)的可靠性需求進行選擇, 第六步,放置存儲分塊:根據(jù)節(jié)點數(shù)和冗余編碼參數(shù)確定多個分組內(nèi)數(shù)據(jù)和冗余的放 置位置,根據(jù)放置算法為每個數(shù)據(jù)分塊和冗余分塊分配適當?shù)牡刂?,并進行存儲。2. 根據(jù)權利要求1所述的一種面向數(shù)據(jù)連續(xù)讀取的重刪糾刪混合系統(tǒng)的數(shù)據(jù)放置方法 器,其特征在于,所述第六步放置存儲唯一的數(shù)據(jù)分塊和冗余分塊時,在保證系統(tǒng)重刪率和 可靠性不變的前提下,根據(jù)節(jié)點數(shù)目和編碼參數(shù)選定特定數(shù)目的條帶構(gòu)成一個分組,在一 個分組內(nèi)保證所有數(shù)據(jù)分塊和冗余分塊分別獨立連續(xù)放置,解決條帶間冗余分塊中斷數(shù)據(jù) 分塊的問題,最大限度地消除數(shù)據(jù)連續(xù)讀取時的負載瓶頸,實現(xiàn)各獨立節(jié)點并行性的最大 化利用,提升系統(tǒng)讀性能,其具體流程為: 設糾刪碼編碼參數(shù)為〇,即條帶stripe大小為η個元素,其中k個數(shù)據(jù)元素經(jīng)編碼生 成n-k個冗余分塊, 第6.1步:定義變量整型變量r = 拉,其中為n和k的最大公約數(shù),設 :?.表示第i個條帶stripe中的第j個元素,其中核十印.押.[0,片-'1.]; 第6.2步:設條帶stripe的編號為i,當?shù)谝粭l條帶生成時,初始化i=0; 第6.3步:令臨時變量&等_=;'/(?//),對于第i條帶s t r i p e中的第j個元素:(? ..,計算其 放置的節(jié)點編號..泌辦山初艦^ = (.如響外+力/",其中.施也山卻驢-.1]; 第6.4步:將元素 Cij分發(fā)給指定的第個節(jié)點進行存儲; 第6.5步:判斷是否有新條帶生成,如果有,則i: = i ,并進入第6.3步,否則結(jié)束。
【文檔編號】G06F11/14GK105824720SQ201610135198
【公開日】2016年8月3日
【申請日】2016年3月10日
【發(fā)明人】肖儂, 鄧明翥, 陳志廣, 劉芳
【申請人】中國人民解放軍國防科學技術大學