一種數(shù)據(jù)去重過程中的并行分塊方法與系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)去重過程中的并行分塊方法,其特征在于,包括:(1)將數(shù)據(jù)流中的文件分成多個定長的數(shù)據(jù)段,所述數(shù)據(jù)段的長度大于數(shù)據(jù)分塊的最大塊長;(2)利用計(jì)算機(jī)多核處理器并行對每個數(shù)據(jù)段進(jìn)行分塊,每個數(shù)據(jù)段都通過分塊獲得多個數(shù)據(jù)塊;(3)將最后一個數(shù)據(jù)段除外的每個數(shù)據(jù)段的最后一個數(shù)據(jù)塊與后一個數(shù)據(jù)段的第一個數(shù)據(jù)塊進(jìn)行邊界銜接處理。本發(fā)明提出的并行分塊方法,采用一種新穎的邊界銜接方法解決了傳統(tǒng)分塊方法的依賴性問題,以極小的去重率損失為代價,使得數(shù)據(jù)分塊能并行進(jìn)行,突破了數(shù)據(jù)去重計(jì)算的性能瓶頸。
【專利說明】一種數(shù)據(jù)去重過程中的并行分塊方法與系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)存儲【技術(shù)領(lǐng)域】,更具體地,涉及一種數(shù)據(jù)去重過程中的并行分 塊方法與系統(tǒng)。
【背景技術(shù)】
[0002] 近年來,隨著互聯(lián)網(wǎng)的普及和發(fā)展,數(shù)據(jù)信息存儲量呈爆炸式增長。據(jù)IDC權(quán)威統(tǒng) 計(jì),預(yù)計(jì)到2020年,全球的信息總量將達(dá)到44ZB。傳輸和存儲如此大量的數(shù)據(jù)給研究人員 提出了挑戰(zhàn)。IDC分析表明,75%的信息是冗余的重復(fù)數(shù)據(jù)。因此,數(shù)據(jù)去重(或者稱重復(fù) 數(shù)據(jù)刪除,Data Deduplication)作為一種能夠有效地消除冗余數(shù)據(jù)的技術(shù),成為了近年來 存儲領(lǐng)域的研究熱點(diǎn)。數(shù)據(jù)去重技術(shù)不僅能夠節(jié)省存儲空間,而且避免了冗余數(shù)據(jù)的重復(fù) 傳輸而節(jié)省網(wǎng)絡(luò)帶寬。由于其有效性,數(shù)據(jù)去重技術(shù)已被EMC、IBM、HP、Microsoft、NEC等 知名計(jì)算機(jī)公司應(yīng)用于存儲產(chǎn)品當(dāng)中。
[0003] 數(shù)據(jù)去重技術(shù)是一種已經(jīng)廣泛應(yīng)用于數(shù)據(jù)備份和歸檔產(chǎn)品的智能高效的無損數(shù) 據(jù)壓縮技術(shù)。該技術(shù)首先對文件進(jìn)行分塊(平均塊長為約8KB),然后計(jì)算這些數(shù)據(jù)塊的指 紋(比如計(jì)算SHA-I哈希摘要),通過匹配指紋值來確定數(shù)據(jù)塊是否重復(fù)。
[0004] 雖然數(shù)據(jù)去重技術(shù)已發(fā)展多年,但是仍然面臨著諸多挑戰(zhàn),特別是在對吞吐率要 求嚴(yán)格的高性能存儲系統(tǒng)中。一般來說,數(shù)據(jù)去重技術(shù)可以分為四個階段:數(shù)據(jù)分塊、指紋 計(jì)算、指紋索引和存儲。其中前兩個過程(數(shù)據(jù)分塊和指紋計(jì)算)需要占用大量的CPU,因 此吞吐率較低。相對來說,分塊的吞吐率又比指紋計(jì)算的更低,是整個數(shù)據(jù)去重系統(tǒng)寫入過 程的性能瓶頸。現(xiàn)有的解決方案是流水化并行處理數(shù)據(jù)去重的四個階段。這樣可以并行 化處理數(shù)據(jù)分塊和指紋計(jì)算,加速數(shù)據(jù)去重計(jì)算速度。但是這樣數(shù)據(jù)分塊操作仍然是數(shù)據(jù) 去重流水線操作后的性能瓶頸,如何進(jìn)一步內(nèi)部并行數(shù)據(jù)去重的分塊操作,成為了現(xiàn)在的 研究熱點(diǎn)。
[0005] 雖然現(xiàn)代計(jì)算機(jī)系統(tǒng)的處理器都是多核心,并行處理能力強(qiáng),但是數(shù)據(jù)分塊是有 前后切點(diǎn)的依賴關(guān)系的。尤其是現(xiàn)在主流的數(shù)據(jù)去重系統(tǒng)在分塊過程中添加了最小和最大 塊長限制,這樣使得數(shù)據(jù)分塊的前后依賴關(guān)系更加明顯。如何在并行分塊的過程中遵循這 些依賴關(guān)系,而且保證并行分塊的效果與傳統(tǒng)線性執(zhí)行分塊的效果一致,是并行分塊算法 的關(guān)鍵。
[0006] 由此可見,研究數(shù)據(jù)去重技術(shù)中的無損的并行分塊,對于提高數(shù)據(jù)去重系統(tǒng)吞吐 率從而進(jìn)一步改進(jìn)存儲系統(tǒng)性能具有重要意義。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的在于提供一種數(shù)據(jù)去重過程中的并行分塊方法,這種方法適用于分 塊過程中有最大值和最小值限制的數(shù)據(jù)去重系統(tǒng)。該發(fā)明使得數(shù)據(jù)去重的分塊操作能并行 進(jìn)行,從而獲得數(shù)據(jù)去重系統(tǒng)吞吐率的提升。同時該發(fā)明獲得與線性分塊近似相同的數(shù)據(jù) 分塊效果,從而僅損失極少量的去重率。
[0008] 為了實(shí)現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種數(shù)據(jù)去重過程中的并行 分塊方法,包括以下步驟:
[0009] (1)將數(shù)據(jù)流中的文件分成多個定長的數(shù)據(jù)段,數(shù)據(jù)段的長度大于數(shù)據(jù)分塊的最 大塊長;
[0010] (2)利用計(jì)算機(jī)多核處理器并行對每個數(shù)據(jù)段進(jìn)行分塊,每個數(shù)據(jù)段都通過分塊 獲得多個數(shù)據(jù)塊;
[0011] (3)將除最后一個數(shù)據(jù)段之外的每個數(shù)據(jù)段的最后一個數(shù)據(jù)塊與后一個數(shù)據(jù)段的 第一個數(shù)據(jù)塊進(jìn)行邊界銜接處理(即重新分塊和拼接),以獲得與傳統(tǒng)的線性分塊相近的 分塊效果,從而減少數(shù)據(jù)去重率的損失。這里假定需要銜接的前后數(shù)據(jù)段是A 1^P Bn,那么并 行分塊后數(shù)據(jù)段An的最后一個切點(diǎn)為X,Y是數(shù)據(jù)段An和B n的邊界點(diǎn),數(shù)據(jù)段Bn的前兩個 分塊切點(diǎn)為Z和N。其中本發(fā)明提出的重新分塊的區(qū)域?yàn)閿?shù)據(jù)段B n的開始的Lmin個字節(jié), 數(shù)據(jù)塊的最小和最大塊長限制分別為Lmin和L max個字節(jié)。數(shù)據(jù)段邊界銜接處理可分為五種 情況:
[0012] (3-1)若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且OZ大于等于 最小塊長L min,則將Z作為下一個分塊切點(diǎn);
[0013] (3-2)若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且OZ小于最小 塊長L min,則將N作為下一個分塊切點(diǎn);
[0014] (3-3)若沒有在^開始的Lmin區(qū)域內(nèi)找到分塊的切點(diǎn),而且XZ小于最大塊長L max, 則將Z作為下一個分塊切點(diǎn);
[0015] (3-4)若沒有在Bn開始的Lmin區(qū)域內(nèi)找到分塊的切點(diǎn),而且XZ大于最大塊長L max 且小于Lniil^Lniax (最大塊長加最小塊長),則將離X點(diǎn)距離為Lniax的0 (X0 = LnJ作為分塊切 點(diǎn),且認(rèn)為0的下一個分塊點(diǎn)為N ;
[0016] (3-5)若沒有在Bn開始的Lmin區(qū)域內(nèi)找到分塊的切點(diǎn),而且XZ大于L min+Lmax (最大 塊長加最小塊長),則將離X點(diǎn)距離為Lmax的0(X0 = Lmax)作為分塊切點(diǎn),且認(rèn)為0的下一 個分塊點(diǎn)為Z。
[0017] 這五種情況中,情況(3-1)、(3-3)、(3-5)將獲得與傳統(tǒng)線性分塊算法相同的分塊 效果,情況(3-2)和(3-4)將可能獲得不同的分塊效果,這兩種情況根據(jù)我們的理論分析和 實(shí)驗(yàn)觀察,發(fā)生的概率很?。s為5%),影響的數(shù)據(jù)范圍也很小(只是每個數(shù)據(jù)段的邊界 部分),因此最終對數(shù)據(jù)去重率影響小于0. 01 %,可以忽略。
[0018] 所以本發(fā)明的并行分塊算法通過有效的數(shù)據(jù)段并行分塊計(jì)算,然后對數(shù)據(jù)段邊界 兩個數(shù)據(jù)塊銜接(重新分塊然后拼接),在保證充分并行化分塊計(jì)算的同時,獲得了與傳統(tǒng) 的線性分塊算法近似相同的分塊效果,最后對數(shù)據(jù)去重系統(tǒng)損失的去重率極少。
[0019] 在本發(fā)明的一個實(shí)施例中,所述步驟(3-3)中判斷是否在Bn開始的Lmin區(qū)域內(nèi)找 到滿足分塊要求的切點(diǎn)具體為:使用一個滑動窗口對B n開始的Lmin區(qū)域進(jìn)行滑動分塊判 斷:分塊算法計(jì)算滑動窗口內(nèi)容的哈希值,如果該哈希值滿足分塊的預(yù)定義要求,則認(rèn)為這 是一個滿足要求的分塊切點(diǎn);如果不滿足,則認(rèn)為這不是一個滿足要求的分塊切點(diǎn)。
[0020] 在本發(fā)明的一個實(shí)施例中,所述數(shù)據(jù)段的長度為2MB,所述數(shù)據(jù)塊的分塊平均塊長 為8KB,最小塊長和最大塊長限制分別為2KB和64KB。
[0021] 按照本發(fā)明的另一方面,還提供了一種數(shù)據(jù)去重過程中的并行分塊系統(tǒng),所述系 統(tǒng)包括數(shù)據(jù)分段模塊、數(shù)據(jù)并行分塊模塊以及邊界銜接處理模塊,其中:
[0022] 所述數(shù)據(jù)分段模塊,用于將數(shù)據(jù)流中的文件分成多個定長的數(shù)據(jù)段,所述數(shù)據(jù)段 的長度大于數(shù)據(jù)分塊的最大塊長;
[0023] 所述數(shù)據(jù)并行分塊模塊,用于利用計(jì)算機(jī)多核處理器并行對每個數(shù)據(jù)段進(jìn)行分 塊,每個數(shù)據(jù)段都通過分塊獲得多個數(shù)據(jù)塊;
[0024] 所述邊界銜接處理模塊,用于將除最后一個數(shù)據(jù)段之外的每個數(shù)據(jù)段的最后一個 數(shù)據(jù)塊與后一個數(shù)據(jù)段的第一個數(shù)據(jù)塊進(jìn)行邊界銜接處理,其中A 1^P Bn是需要銜接的前后 數(shù)據(jù)段,X為數(shù)據(jù)段An的最后一個切點(diǎn),Y為數(shù)據(jù)段A n和Bn的邊界點(diǎn),Z和N為數(shù)據(jù)段Bn的 前兩個分塊切點(diǎn),數(shù)據(jù)塊的最小和最大塊長限制分別為L min和Lmax個字節(jié),邊界銜接處理分 為下述五種情況:
[0025] 若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且OZ大于等于最小塊 長L min,則將Z作為下一個分塊切點(diǎn);
[0026] 若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且OZ小于最小塊長 L min,則將N作為下一個分塊切點(diǎn);
[0027] 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ小于最大塊長 L max,則將Z作為下一個分塊切點(diǎn);
[0028] 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ大于最大塊長 L niax且小于Lniil^Lniax,則將離X點(diǎn)距離為Lniax的點(diǎn)0作為分塊切點(diǎn),且認(rèn)為0的下一個分塊點(diǎn) 為1
[0029] 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ大于L min+Lmax,則 將離X點(diǎn)距離為Lmax的點(diǎn)0作為分塊切點(diǎn),且認(rèn)為0的下一個分塊點(diǎn)為Z。
[0030] 與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果:
[0031] 1、本發(fā)明提出的并行分塊方法,采用一種新穎的邊界銜接方法解決了傳統(tǒng)分塊方 法的依賴性問題,以極小的去重率損失為代價,使得數(shù)據(jù)分塊能并行進(jìn)行,突破了數(shù)據(jù)去重 計(jì)算的性能瓶頸;
[0032] 2、本發(fā)明提出的并行分塊方法,可以和傳統(tǒng)的數(shù)據(jù)去重流水線技術(shù)結(jié)合起來,使 得數(shù)據(jù)去重系統(tǒng)吞吐率隨著計(jì)算機(jī)處理器核數(shù)而線性增加。
【專利附圖】
【附圖說明】
[0033] 圖1為本發(fā)明的數(shù)據(jù)去重流水線圖;
[0034] 圖2為基于內(nèi)容分塊的不意圖;
[0035] 圖3為本發(fā)明的并行分塊流程圖;
[0036] 圖4為本發(fā)明的并行分塊銜接的工作原理圖。
【具體實(shí)施方式】
[0037] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不 用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實(shí)施方式中所涉及到的技術(shù)特征只要彼 此之間未構(gòu)成沖突就可以相互組合。
[0038] 本發(fā)明所述的方法適用于帶有多核處理器的數(shù)據(jù)去重系統(tǒng)。數(shù)據(jù)去重技術(shù)的性 能瓶頸在數(shù)據(jù)分塊和指紋計(jì)算環(huán)節(jié),尤其是數(shù)據(jù)分塊的速度慢。為了提高系統(tǒng)的整體吞吐 率,可以將分塊操作和指紋計(jì)算并行處理。如圖1所示,用戶申請備份的文件被并行分塊、 并行計(jì)算指紋。不僅如此,系統(tǒng)還將四個階段(即數(shù)據(jù)分塊、指紋計(jì)算、指紋索引和存儲) 流水化處理,這樣可以最大化系統(tǒng)的整體性能。圖2給出了數(shù)據(jù)分塊的示意圖,數(shù)據(jù)去重系 統(tǒng)使用一個滑動窗口進(jìn)行分塊操作:具體而言:分塊算法計(jì)算滑動窗口內(nèi)容的哈希值,如 果該哈希值滿足分塊的預(yù)定義要求,則認(rèn)為這是一個分塊切點(diǎn);如果不滿足,則認(rèn)為這不是 一個分塊切點(diǎn)。
[0039] 為了進(jìn)一步消除數(shù)據(jù)去重的計(jì)算瓶頸,本發(fā)明提出進(jìn)一步并行化分塊計(jì)算,然后 再銜接邊界上的兩個數(shù)據(jù)塊,從而獲得與傳統(tǒng)的線性分塊近似的數(shù)據(jù)分塊效果。為了避免 分塊的過程中出現(xiàn)個別的數(shù)據(jù)塊過長或過短,現(xiàn)在主流的數(shù)據(jù)去重系統(tǒng)會在分塊的過程中 加上最小和最大塊長限制(目前主流的去重系統(tǒng),采用平均分塊大小8KB,最小塊長和最大 塊長限制分別為2KB和64KB)。而這兩個限制的存在使得并行數(shù)據(jù)去重系統(tǒng)的數(shù)據(jù)分塊環(huán) 節(jié)成為了難點(diǎn),因?yàn)閿?shù)據(jù)分塊的切點(diǎn)判斷是有依賴性的,后一個切點(diǎn)的判斷要依賴于前一 個切點(diǎn)的位置。本發(fā)明也在于解決這一過程的并行計(jì)算實(shí)現(xiàn)問題。
[0040] 本發(fā)明所用的方法先將數(shù)據(jù)流中的各個文件分割成定長的段,之后讓各個段并行 進(jìn)行分塊;因?yàn)榉謮K的各個切點(diǎn)間具有依賴性,在未確定前面的切點(diǎn)位置的情況下對后面 的數(shù)據(jù)進(jìn)行分塊會有很大的去重率損失,為了解決這個問題,該分塊算法在各個數(shù)據(jù)段并 行分塊后,對前一個數(shù)據(jù)段的最后一個塊和后一個數(shù)據(jù)段的第一個塊進(jìn)行邊界銜接。如圖 3所示,A和B是由同一文件分割出來的兩個相鄰的數(shù)據(jù)段。A和B被并行分塊處理產(chǎn)生了 數(shù)據(jù)塊A 1, A2,……,An以及B1, B2,……,Bn。接下來要對An和B1進(jìn)行邊界銜接(即重分塊 和拼接)。
[0041] 本發(fā)明將邊界銜接的情況劃分成5類,對于不同的分類采取不同的銜接操作,以 求能最大限度地減少去重率損失。這里假設(shè)采用普遍使用的數(shù)據(jù)去重分塊配置:平均塊長 為8KB,最小塊長和最大塊長限制分別為2KB和64KB。
[0042] 如圖4所示,節(jié)點(diǎn)Y為兩個并行分塊計(jì)算的數(shù)據(jù)段的邊界點(diǎn),則因?yàn)樽钚K長的原 因,并行分塊在數(shù)據(jù)段B的前2KB大小區(qū)域[Y,Y 1]內(nèi)不會有切點(diǎn)(即分塊的點(diǎn));然而傳統(tǒng) 線性分塊的起點(diǎn)是X點(diǎn)而不是Y點(diǎn),所以在此區(qū)間內(nèi)可能有切點(diǎn)Q。所以本發(fā)明提出對區(qū)域 [Y,Y 1]進(jìn)行重新分塊計(jì)算,然后基于這個分塊結(jié)果進(jìn)行并行分塊之后的銜接。
[0043] 從數(shù)據(jù)段Bn開始重新分塊的第一個切點(diǎn)用0表示(這里0等于Q),第二個可能的 切點(diǎn)是0 1,而Z和N是并行分塊的前兩個切點(diǎn);如果O1與Z或者N重合的話就表示并行分 塊獲得了傳統(tǒng)線性分塊一樣的分塊效果,即沒有數(shù)據(jù)去重率的損失。本發(fā)明把邊界銜接分 為以下五類:
[0044] ⑴切點(diǎn)0 e [Y,Y1],OZ彡2KB。這種情況,O1與Z重合。所以AjP B1的邊界(即 XY和YZ)銜接后生成的新數(shù)據(jù)塊為XO和0Z。
[0045] ⑵切點(diǎn)0 e [Y,Y1],〇Z〈2KB。這種情況,O1肯定不與Z重合,而可能與N重合。 所以A n和B1的邊界(即XY和YZ)銜接后生成的新數(shù)據(jù)塊為XO和0N,允許分塊出錯。
[0046] ⑶切點(diǎn)0 ? [Y1,Z],XZ彡64KB。這種情況,O1與Z重合。An和B 1的邊界(即 XY和YZ)銜接后生成的新塊為ΧΖ。
[0047] (4)切點(diǎn)0 隹[Y1,Z],64KB〈XZ〈66KB。這種情況,XO = 64KB,0Z〈2KB,O1 肯定不 與Z重合,而可能與N重合。所以An和B1的邊界(即XY和YZ)銜接后生成的新數(shù)據(jù)塊為 XO和0Ν,允許分塊出錯。
[0048] (5)切點(diǎn)0 ? [Υ1,Ζ],XZ 彡 66ΚΒ。這種情況,XO = 64KB,0Z>2KB,O1 與 Z 重合。 所以An和B1的邊界(即XY和YZ)銜接后生成的新數(shù)據(jù)塊為XO和0Ζ。
[0049] 在情況(1)、⑶和(5)中,本發(fā)明可以通過重新計(jì)算分塊2ΚΒ的區(qū)域(即圖3 的[Y,Y 1]),然后銜接獲得與傳統(tǒng)分塊相同的切點(diǎn),在情況(2)和(4)中,允許出錯的情況發(fā) 生,在我們的理論推導(dǎo)和實(shí)踐測試中,情況⑵和⑷發(fā)生的概率為5%,情況⑵和⑷仍 然有80%的概率獲得與傳統(tǒng)的線性分塊系統(tǒng)的分塊效果。而且由于影響的數(shù)據(jù)塊僅僅為數(shù) 據(jù)段的邊界的數(shù)據(jù)塊,這樣并行分塊影響的去重率損失將小于〇. 01%。
[0050] 本發(fā)明還提供了一種數(shù)據(jù)去重過程中的并行分塊系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)分段模 塊、數(shù)據(jù)并行分塊模塊以及邊界銜接處理模塊,其中:
[0051] 所述數(shù)據(jù)分段模塊,用于將數(shù)據(jù)流中的文件分成多個定長的數(shù)據(jù)段,所述數(shù)據(jù)段 的長度大于數(shù)據(jù)分塊的最大塊長;
[0052] 所述數(shù)據(jù)并行分塊模塊,用于利用計(jì)算機(jī)多核處理器并行對每個數(shù)據(jù)段進(jìn)行分 塊,每個數(shù)據(jù)段都通過分塊獲得多個數(shù)據(jù)塊;
[0053] 所述邊界銜接處理模塊,用于將除最后一個數(shù)據(jù)段之外的每個數(shù)據(jù)段的最后一個 數(shù)據(jù)塊與后一個數(shù)據(jù)段的第一個數(shù)據(jù)塊進(jìn)行邊界銜接處理,其中A 1^PBn是需要銜接的前后 數(shù)據(jù)段,X為數(shù)據(jù)段An的最后一個切點(diǎn),Y為數(shù)據(jù)段A n和Bn的邊界點(diǎn),Z和N為數(shù)據(jù)段Bn的 前兩個分塊切點(diǎn),數(shù)據(jù)塊的最小和最大塊長限制分別為L min和Lmax個字節(jié),邊界銜接處理分 為下述五種情況:
[0054] 若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且OZ大于等于最小塊 長L min,則將Z作為下一個分塊切點(diǎn);
[0055] 若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且OZ小于最小塊長 L min,則將N作為下一個分塊切點(diǎn);
[0056] 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ小于最大塊長 L max,則將Z作為下一個分塊切點(diǎn);
[0057] 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ大于最大塊長 Lniax且小于Lniil^Lniax,則將離X點(diǎn)距離為Lniax的點(diǎn)0作為分塊切點(diǎn),且認(rèn)為0的下一個分塊
[0058] 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ大于L min+Lmax,則 將離X點(diǎn)距離為Lmax的點(diǎn)0作為分塊切點(diǎn),且認(rèn)為0的下一個分塊點(diǎn)為Z。
[0059] 本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以 限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含 在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 一種數(shù)據(jù)去重過程中的并行分塊方法,其特征在于,所述方法包括如下步驟: (1) 將數(shù)據(jù)流中的文件分成多個定長的數(shù)據(jù)段,所述數(shù)據(jù)段的長度大于數(shù)據(jù)分塊的最 大塊長; (2) 利用計(jì)算機(jī)多核處理器并行對每個數(shù)據(jù)段進(jìn)行分塊,每個數(shù)據(jù)段都通過分塊獲得 多個數(shù)據(jù)塊; (3) 將除最后一個數(shù)據(jù)段之外的每個數(shù)據(jù)段的最后一個數(shù)據(jù)塊與后一個數(shù)據(jù)段的第一 個數(shù)據(jù)塊進(jìn)行邊界銜接處理,其中An和Bn是需要銜接的前后數(shù)據(jù)段,X為數(shù)據(jù)段An的最后 一個切點(diǎn),Y為數(shù)據(jù)段An和Bn的邊界點(diǎn),Z和N為數(shù)據(jù)段Bn的前兩個分塊切點(diǎn),數(shù)據(jù)塊的最 小和最大塊長限制分別為Lmin和L_個字節(jié),邊界銜接處理分為下述五種情況: (3-1)若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且0Z大于等于最小 塊長Lmin,則將Z作為下一個分塊切點(diǎn); (3-2)若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且0Z小于最小塊長 Lmin,則將N作為下一個分塊切點(diǎn); (3-3)若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ小于最大塊長 Lmax,則將Z作為下一個分塊切點(diǎn); (3-4)若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ大于最大塊長 L_且小于L^+L^,則將離X點(diǎn)距離為L_的點(diǎn)0作為分塊切點(diǎn),且認(rèn)為0的下一個分塊點(diǎn) 為N ; (3-5)若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ大于Lmin+L max, 則將離X點(diǎn)距離為Lmax的點(diǎn)0作為分塊切點(diǎn),且認(rèn)為0的下一個分塊點(diǎn)為Z。
2. 如權(quán)利要求1所述的數(shù)據(jù)去重過程中的并行分塊方法,其特征在于,所述步驟(3)中 判斷是否在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)具體為: 使用一個滑動窗口對Bn開始的Lmin區(qū)域進(jìn)行滑動分塊判斷:分塊算法計(jì)算滑動窗口內(nèi) 容的哈希值,如果該哈希值滿足分塊的預(yù)定義要求,則認(rèn)為這是一個滿足要求的分塊切點(diǎn); 如果不滿足,則認(rèn)為這不是一個滿足要求的分塊切點(diǎn)。
3. 如權(quán)利要求1或2所述的數(shù)據(jù)去重過程中的并行分塊方法,其特征在于,所述數(shù)據(jù)段 的長度為2MB,所述數(shù)據(jù)塊的分塊平均塊長為8KB,最小塊長和最大塊長限制分別為2KB和 64KB。
4. 一種數(shù)據(jù)去重過程中的并行分塊系統(tǒng),其特征在于,所述系統(tǒng)包括數(shù)據(jù)分段模塊、數(shù) 據(jù)并行分塊模塊以及邊界銜接處理模塊,其中: 所述數(shù)據(jù)分段模塊,用于將數(shù)據(jù)流中的文件分成多個定長的數(shù)據(jù)段,所述數(shù)據(jù)段的長 度大于數(shù)據(jù)分塊的最大塊長; 所述數(shù)據(jù)并行分塊模塊,用于利用計(jì)算機(jī)多核處理器并行對每個數(shù)據(jù)段進(jìn)行分塊,每 個數(shù)據(jù)段都通過分塊獲得多個數(shù)據(jù)塊; 所述邊界銜接處理模塊,用于將除最后一個數(shù)據(jù)段之外的每個數(shù)據(jù)段的最后一個數(shù)據(jù) 塊與后一個數(shù)據(jù)段的第一個數(shù)據(jù)塊進(jìn)行邊界銜接處理,其中An和^是需要銜接的前后數(shù)據(jù) 段,X為數(shù)據(jù)段八"的最后一個切點(diǎn),Y為數(shù)據(jù)段八"和^的邊界點(diǎn),Z和N為數(shù)據(jù)段^的前 兩個分塊切點(diǎn),數(shù)據(jù)塊的最小和最大塊長限制分別為Lmin和L_個字節(jié),邊界銜接處理分為 下述五種情況: 若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且0Z大于等于最小塊長 Lmin,則將Z作為下一個分塊切點(diǎn); 若在從Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn)0,而且0Z小于最小塊長Lmin,則 將N作為下一個分塊切點(diǎn); 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ小于最大塊長L_, 則將Z作為下一個分塊切點(diǎn); 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ大于最大塊長L_且 小于,則將離X點(diǎn)距離為L_的點(diǎn)0作為分塊切點(diǎn),且認(rèn)為0的下一個分塊點(diǎn)為N ; 若沒有在Bn開始的Lmin區(qū)域內(nèi)找到滿足分塊要求的切點(diǎn),而且XZ大于Lmin+L_,則將離 X點(diǎn)距離為Lmax的點(diǎn)0作為分塊切點(diǎn),且認(rèn)為0的下一個分塊點(diǎn)為Z。
【文檔編號】G06F17/30GK104361068SQ201410621223
【公開日】2015年2月18日 申請日期:2014年11月6日 優(yōu)先權(quán)日:2014年11月6日
【發(fā)明者】馮丹, 夏文, 張宇成, 付忞 申請人:華中科技大學(xué)