欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

確定用于去重復(fù)的段邊界的制作方法

文檔序號:6498581閱讀:242來源:國知局
確定用于去重復(fù)的段邊界的制作方法
【專利摘要】接收散列的序列。每個散列對應(yīng)于有待去重復(fù)的數(shù)據(jù)的數(shù)據(jù)組塊。確定數(shù)據(jù)組塊的先前存儲的副本的位置,所述位置是基于散列來確定的?;谖恢脕泶_定數(shù)據(jù)組塊的序列中的斷點,所述斷點形成數(shù)據(jù)組塊段的邊界。
【專利說明】確定用于去重復(fù)的段邊界

【背景技術(shù)】
[0001]管理員力求高效管理文件服務(wù)器和文件服務(wù)器資源,同時保持網(wǎng)絡(luò)受保護(hù)以防未經(jīng)授權(quán)的用戶而仍對經(jīng)授權(quán)的用戶來說可訪問。將文件存儲在服務(wù)器上而不是本地存儲在用戶的計算機(jī)上的實踐已經(jīng)造成相同數(shù)據(jù)存儲在相同系統(tǒng)中的多個位置處以及甚至在相同服務(wù)器中的多個位置處。
[0002]去重復(fù)(deduplicat1n)是用于消除冗余數(shù)據(jù)、改善存儲利用率和減小網(wǎng)絡(luò)業(yè)務(wù)量的技術(shù)?;诖鎯Φ臄?shù)據(jù)去重復(fù)檢查大容量的數(shù)據(jù)并標(biāo)識相同的整個文件或文件的章節(jié),然后減少相同數(shù)據(jù)的實例的數(shù)目。例如,電子郵件系統(tǒng)可以包含相同的一兆字節(jié)文件附件的100個實例。每當(dāng)電子郵件系統(tǒng)被備份時,都存儲附件的100個實例中的每一個,這要求100兆字節(jié)的存儲空間。利用數(shù)據(jù)去重復(fù),僅存儲附件的一個實例,因此節(jié)省99兆字節(jié)的存儲空間。

【專利附圖】

【附圖說明】
[0003]為了詳細(xì)描述本發(fā)明的示例性實施例,現(xiàn)在將對附圖做出參考,在附圖中:
圖1A圖示了用于確定段邊界的系統(tǒng);
圖1B圖示了用于確定段邊界的系統(tǒng);
圖2圖示了用于確定段邊界的方法;
圖3圖示了用于確定段邊界的存儲設(shè)備;
圖4A和4B示出了確定段邊界的圖。
[0004]標(biāo)記法和命名法
如本文所使用的,術(shù)語“組塊”是指數(shù)據(jù)流的連續(xù)子集。
[0005]如本文所使用的,術(shù)語“段”是指連續(xù)組塊的群組。每個段具有兩個邊界,一個在它的開始處并且一個在它的結(jié)尾處。
[0006]如本文所使用的,術(shù)語“散列”是指使用散列函數(shù)創(chuàng)建的組塊的標(biāo)識。
[0007]如本文所使用的,術(shù)語“塊”是指與其它文件或數(shù)據(jù)流交錯的文件或數(shù)據(jù)流的劃分。例如,交錯數(shù)據(jù)可以包括la,2a,3a,lb,2b,lc,3b,2c,其中Ia是基礎(chǔ)流一的第一塊,Ib是基礎(chǔ)流一的第二塊,2a是基礎(chǔ)流二的第一塊等等。在一些情況下,塊在長度上可以不同。
[0008]如本文所使用的,術(shù)語“去重復(fù)”是指在存儲系統(tǒng)中或在存儲節(jié)點處邏輯存儲組塊、段或數(shù)據(jù)的其它劃分以使得在該系統(tǒng)或節(jié)點處存在每個唯一組塊的僅一個物理副本(或者,在一些情況下,幾個副本)的動作。例如,針對初始為空的存儲節(jié)點去重復(fù)ABC、DBC和EBF (其中每個字母表示唯一組塊)導(dǎo)致B的僅一個物理副本但是三個邏輯副本。具體地,如果針對存儲位置去重復(fù)組塊并且組塊先前未被存儲在存儲位置處,則將組塊物理存儲在存儲位置處。然而,如果針對存儲位置去重復(fù)組塊并且組塊已經(jīng)被存儲在存儲位置處,則不再次在存儲位置處物理存儲組塊。在又一示例中,如果針對存儲位置去重復(fù)多個組塊并且組塊中的僅一些已經(jīng)被存儲在存儲位置處,則在去重復(fù)期間在存儲位置處存儲僅先前未被存儲在存儲位置處的組塊。

【具體實施方式】
[0009]以下討論涉及本發(fā)明的各種實施例。盡管這些實施例中的一個或多個可以是優(yōu)選的,但是所公開的實施例不應(yīng)當(dāng)被解釋為或以其它方式用作限制包括權(quán)利要求在內(nèi)的本公開的范圍。此外,本領(lǐng)域技術(shù)人員將理解,以下描述具有寬泛的應(yīng)用,并且任何實施例的討論僅僅意在例證該實施例,而不旨在暗示包括權(quán)利要求在內(nèi)的本公開的范圍受限于該實施例。
[0010]在基于組塊的去重復(fù)期間,唯一的數(shù)據(jù)組塊每一個都被物理存儲一次,不論可能存在多少它們的邏輯副本。所接收的后續(xù)組塊可以與所存儲的組塊比較,并且如果比較得到匹配,則匹配的組塊不再次被物理存儲。取而代之,匹配的組塊可以被指向組塊的單個物理副本的引用替代。訪問引用的過程可以被重定向到所存儲的組塊的單個物理實例。以該方式使用引用導(dǎo)致存儲節(jié)約。因為可以遍及系統(tǒng)多次出現(xiàn)相同組塊,所以必須被存儲在系統(tǒng)中或通過網(wǎng)絡(luò)傳送的數(shù)據(jù)量減少。然而,交錯數(shù)據(jù)難以高效地去重復(fù)。
[0011]圖1A圖示了用于智能分段的系統(tǒng)100。交錯數(shù)據(jù)是指通過交錯來自不同基礎(chǔ)源的數(shù)據(jù)而從不同基礎(chǔ)源產(chǎn)生的數(shù)據(jù)流。例如,四個基礎(chǔ)數(shù)據(jù)源A,B,C和D 180可以被交錯以產(chǎn)生流adcccbadaaaadcb,其中a表示來自源A的數(shù)據(jù)塊,b表示來自源B的數(shù)據(jù)塊,c表示來自源C的數(shù)據(jù)塊,并且d表示來自源D的數(shù)據(jù)塊。
[0012]在不理解用于對流進(jìn)行交錯的格式的情況下,恢復(fù)基礎(chǔ)源流是困難的。因為不同的備份代理由以不同方式交錯數(shù)據(jù)的不同公司做出,并且因為交錯的方法隨時間改變,所以產(chǎn)生可去交錯所有交錯數(shù)據(jù)的系統(tǒng)可能不是劃算的。因此,對于系統(tǒng)而言能夠直接處置交錯數(shù)據(jù)可以是有用的。
[0013]在去重復(fù)期間,可以在前端上或者在客戶端199上實時創(chuàng)建組塊的散列,所述前端與一個或多個去重復(fù)后端通信。例如,與可以是去重復(fù)后端節(jié)點116、120、122的一個或多個后端通信的前端118。在各種實施例中,前端和后端還包括其它計算設(shè)備或系統(tǒng)。數(shù)據(jù)組塊是使用可基于大小或邏輯文件邊界的組塊化算法產(chǎn)生的數(shù)據(jù)流的連續(xù)子集。每個數(shù)據(jù)組塊可以被輸入到可用密碼寫的散列函數(shù);例如MD5或SHA1。在圖1A的示例中,組塊I1,I2,13 I4分別導(dǎo)致散列A613F……,32B11……,4C23D……和35DFA……。在至少一些實施例中,每個組塊可以近似是4千字節(jié)左右,并且每個散列可以近似是16到20字節(jié)。
[0014]取代為了去重復(fù)目的而比較組塊,可以比較組塊的散列。具體地,如果使用相同的散列化算法,則相同組塊將產(chǎn)生相同的散列。因此,如果兩個組塊的散列相等,并且已經(jīng)存儲了一個組塊,則另一組塊無需被再次物理存儲;這節(jié)省了存儲空間。同樣,如果散列相等,則基礎(chǔ)組塊自身可以被比較以核實重復(fù),或者可以假設(shè)重復(fù)。此外,系統(tǒng)100可以包括一個或多個后端節(jié)點116、120、122。在至少一個實施方式中,不同后端節(jié)點116、120、122通常不存儲相同組塊。這樣,節(jié)省了存儲空間,因為相同組塊未被存儲在后端節(jié)點116、120、122之間,但是段(組塊的群組)必須被路由到正確的后端節(jié)點116、120、122以被有效地去重復(fù)。
[0015]比較組塊的散列可以被執(zhí)行得比比較組塊自身更加高效,特別是在使用索引和過濾器時。為了有助于比較過程,可以使用索引105和/或過濾器107來確定哪些組塊被存儲在后端節(jié)點116、120、122上的哪些存儲位置106中。在至少一個實施方式中,索引105和/或過濾器107可以駐留在后端節(jié)點116、120、122上。在其它實施方式中,索引105和/或過濾器107可以以任何組合分布在前端節(jié)點118和/或后端節(jié)點116、120、122當(dāng)中。此夕卜,每個后端節(jié)點116、120、122可以具有分離的索引105和/或過濾器107,因為不同數(shù)據(jù)被存儲在每個后端節(jié)點116、120、122上。
[0016]在一些實施方式中,索引105包括將存儲在該后端節(jié)點上的組塊的散列(可能間接地)映射到包含那些組塊的存儲位置的數(shù)據(jù)結(jié)構(gòu)。該數(shù)據(jù)結(jié)構(gòu)可以是散列表。對于非稀疏索引,針對每一個所存儲的組塊創(chuàng)建條目。對于稀疏索引,針對存儲在該后端節(jié)點上的組塊的散列的僅有限一小部分創(chuàng)建條目。在至少一個實施例中,稀疏索引平均僅對每64個組塊中的一個編索引。
[0017]在至少一個實施例中,過濾器107可以存在和被實現(xiàn)為布隆(Bloom)過濾器。布隆過濾器是用于近似集合成員資格的空間高效數(shù)據(jù)結(jié)構(gòu)。也就是說,它表示集合,但是所表示的集合可以包含未被顯式插入的元素。過濾器107可以表示存儲在該后端節(jié)點處的組塊集合的散列集合。在該實施方式中后端節(jié)點可以因此通過確定給定組塊的散列是否是其過濾器107的成員來快速確定給定組塊是否可能已經(jīng)存儲在該后端節(jié)點處。
[0018]在至少一個實施例中,并非在每組塊基礎(chǔ)上確定要針對哪個后端節(jié)點去重復(fù)組塊(即,要將組塊路由到哪個后端節(jié)點)。而是,一次一段(組塊的連續(xù)群組)確定路由。數(shù)據(jù)組塊的輸入流可以被分成段,使得每個數(shù)據(jù)組塊確切地屬于一個段。圖1A圖示了組塊I1和I2包括段130,并且組塊I3和I4包括段132。在其它示例中,段可以包含數(shù)千個組塊。段可以包括在交錯流中鄰近的組塊的群組。段的邊界為斷點。如所圖示的,段130與段132之間的斷點處于12和I3之間。如圖2的方法中詳述的,可以基于先前存儲的組塊的位置確定流中的合適斷點。在各種實施例中,由前端節(jié)點118、后端節(jié)點116、120、122、或前端節(jié)點118和后端節(jié)點116、120、122 二者確定斷點。
[0019]盡管圖1A僅示出一個前端118,但是系統(tǒng)可以包含多個前端,每一個前端實現(xiàn)類似的功能性。僅示出其中的一個的客戶端199可以在長時間段內(nèi)與相同的前端118通信。在一個實施方式中,前端118和后端節(jié)點116、120、122的功能性被組合在單個節(jié)點中。
[0020]圖1B圖示了系統(tǒng)100的硬件視圖。在至少一個實施例中,系統(tǒng)100的組件可以分布在一個或多個網(wǎng)絡(luò)114之上。具體地,用戶可以與⑶I 110交互并通過網(wǎng)絡(luò)114從管理控制臺發(fā)射命令和其它信息以供前端節(jié)點118和后端節(jié)點116處理。顯示器104可以是計算機(jī)監(jiān)視器,并且用戶可以經(jīng)由鍵盤112和指點設(shè)備或計算機(jī)鼠標(biāo)(未示出)操縱GUI。網(wǎng)絡(luò)114可以包括諸如交換機(jī)之類的網(wǎng)絡(luò)元件,并在至少一個實施例中可以是因特網(wǎng)。在至少一個實施例中,前端節(jié)點118包括執(zhí)行散列化算法的處理器102。在另一實施例中,系統(tǒng)100包括多個前端節(jié)點。后端節(jié)點116包括可訪問索引105和/或過濾器107的處理器108,并且處理器108可以耦合到存儲位置106。系統(tǒng)100的硬件組件的許多配置和組合是可能的。在另一實施例中,系統(tǒng)100包括多個后端節(jié)點。
[0021]在至少一個實施例中,一個或多個客戶端199通過所調(diào)度的命令而被周期性地備份。虛擬帶庫(“VLT”)或網(wǎng)絡(luò)文件系統(tǒng)(“NFS”)協(xié)議可以被用作用于備份客戶端199的協(xié)議。
[0022]圖2圖示了在202處開始且在210處結(jié)束的智能分段的方法200。在204處,接收散列的序列。例如,序列可以由前端節(jié)點118從針對去重復(fù)而調(diào)度的交錯數(shù)據(jù)的順序組塊生成。交錯數(shù)據(jù)的順序組塊可以已經(jīng)通過對從客戶端199接收的交錯數(shù)據(jù)進(jìn)行組塊化以供去重復(fù)而產(chǎn)生在前端節(jié)點118上。組塊化過程將交錯數(shù)據(jù)分成數(shù)據(jù)組塊的序列。散列的序列可以進(jìn)而通過對每個數(shù)據(jù)組塊進(jìn)行散列化而生成。
[0023]可替換地,組塊化和散列化可以由客戶端199執(zhí)行,并且可以僅將散列發(fā)送到前端節(jié)點118。其它變型是可能的。
[0024]如上所述,交錯數(shù)據(jù)可以源自不同的源或流。例如,不同的線程可以將數(shù)據(jù)復(fù)用到單個文件中從而導(dǎo)致交錯數(shù)據(jù)。每個散列對應(yīng)于組塊。在至少一個實施例中,所接收的散列的量對應(yīng)于具有總計平均段長度的三倍的長度的組塊。盡管使用交錯數(shù)據(jù)作為示例討論了系統(tǒng),但是在至少一個示例中,非交錯數(shù)據(jù)也被類似地處置。
[0025]在206處,確定數(shù)據(jù)組塊的先前存儲的副本的位置。在至少一個示例中,針對位置信息而對后端116、120、122做出查詢,并且位置可以作為查詢的結(jié)果而接收。在一個實施方式中,前端節(jié)點118可以向后端節(jié)點116、120、122廣播散列的序列,所述后端節(jié)點116、120,122中的每一個然后可以確定其位置106中的哪些包含對應(yīng)于所發(fā)送的散列的數(shù)據(jù)組塊的副本并向前端節(jié)點118發(fā)送回所得到的位置信息。在一個節(jié)點實施方式中,該確定可以直接進(jìn)行而無需節(jié)點之間的任何通信。
[0026]對于每個數(shù)據(jù)組塊,可以確定哪些位置已經(jīng)包含該數(shù)據(jù)組塊的副本。該確定可以利用試探法。在一些實施方式中,該確定可以僅針對數(shù)據(jù)組塊的子集而進(jìn)行。
[0027]位置可以與后端節(jié)點的群組或集群或者特定后端節(jié)點一樣通用,或者位置可以與組塊容器(例如,存儲組塊的文件或盤部分)或具體后端節(jié)點上的其它特定位置一樣專用。確定位置可以包括在諸如完整組塊索引或稀疏索引之類的索引105或諸如布隆過濾器之類的集合或過濾器107中搜索散列中的一個或多個。所確定的位置可以是后端節(jié)點116、120,122的群組、特定的后端節(jié)點116、120、122、組塊容器、儲存器或存儲節(jié)點。例如,每個后端節(jié)點可以向前端節(jié)點118返回組塊容器標(biāo)識號碼的集合的列表,每個集合關(guān)于對應(yīng)的散列/數(shù)據(jù)組塊,并且組塊容器標(biāo)識號碼標(biāo)識其中存儲該數(shù)據(jù)組塊的副本的被存儲在該后端節(jié)點處的組塊容器。這些列表可以在前端節(jié)點118上被組合成單個列表,該單個列表針對每個數(shù)據(jù)組塊給出標(biāo)識包含該數(shù)據(jù)組塊的副本的組塊容器的組塊容器ID/后端號碼對。
[0028]在另一實施例中,所返回的信息僅標(biāo)識該后端節(jié)點具有哪些數(shù)據(jù)組塊的副本。同樣,信息可以被組合以產(chǎn)生針對每個數(shù)據(jù)組塊給出包含該數(shù)據(jù)組塊的副本的后端節(jié)點的集合的列表。
[0029]在僅具有單個節(jié)點的又一實施例中,所確定的信息可以只由組塊容器ID的集合的列表構(gòu)成,因為不存在在不同后端節(jié)點之間進(jìn)行區(qū)分的需要。如本領(lǐng)域技術(shù)人員所意識到的那樣,存在可以傳達(dá)位置信息的許多不同方式。
[0030]在208處,至少部分地基于確定的位置確定組塊的序列中的斷點。該斷點可以用于形成數(shù)據(jù)組塊段的邊界。例如,如果尚未產(chǎn)生段,則第一段可以被生成為從序列的開始的數(shù)據(jù)組塊到恰在所確定的斷點之前的數(shù)據(jù)組塊??商鎿Q地,如果已經(jīng)生成了一些段,則所生成的下一段可以由處于所生成的最后一段的結(jié)尾與新確定的斷點之間的數(shù)據(jù)組塊構(gòu)成。
[0031]圖2的每次迭代(202到210)可以確定新的斷點并從而確定新的段。每次附加迭代可以重用先前迭代的工作或信息中的一些。例如,未被先前迭代形成到段中的數(shù)據(jù)組塊的散列及其確定的位置可以被下一迭代再次考慮以便可能包括在所確定的下一段中。將數(shù)據(jù)組塊的序列分成段的過程被稱為分段。
[0032]確定斷點可以包括部分地基于哪些數(shù)據(jù)組塊在所確定的相同位置中具有副本來確定數(shù)據(jù)組塊的序列中的區(qū)域并且然后基于該區(qū)域來確定數(shù)據(jù)組塊的序列中的斷點。例如,數(shù)據(jù)組塊的序列中的區(qū)域可以被確定成使得具有每個區(qū)域的所確定的位置的數(shù)據(jù)組塊的至少90%在單個位置中具有先前存儲的副本。也就是說,對于每個區(qū)域,存在其中具有所確定的位置的數(shù)據(jù)組塊的至少90%具有先前存儲的副本的位置。接下來,可以基于區(qū)域來確定數(shù)據(jù)組塊的序列中的斷點。
[0033]對應(yīng)于相同或類似位置的散列和組塊可以被成組。例如,前端節(jié)點118可以將對應(yīng)于一個位置的散列和對應(yīng)數(shù)據(jù)組塊成組為段,并可以將對應(yīng)于不同位置的鄰近散列和對應(yīng)數(shù)據(jù)組塊成組為另一段。這樣,確定斷點處于這兩個段之間。
[0034]前端節(jié)點118可以針對后端節(jié)點之一,作為整體去重復(fù)新形成的段。也就是說,可以僅針對被包含在后端節(jié)點之一中的數(shù)據(jù)而不針對被包含在其它后端節(jié)點中的數(shù)據(jù)去重復(fù)該段。這與例如針對一個后端節(jié)點去重復(fù)段的第一半并且針對另一后端節(jié)點去重復(fù)該段的第二半形成對照。在至少一個實施例中,被包含在后端節(jié)點中的數(shù)據(jù)可以在附接到后端節(jié)點的儲存器中,在后端節(jié)點的控制之下,或者是后端節(jié)點的首要責(zé)任而不是在物理上作為其一部分。
[0035]可以僅針對被包含在多個節(jié)點之一中的數(shù)據(jù)去重復(fù)段。在一個實施例中,所選取的后端節(jié)點116、120或122標(biāo)識將針對其去重復(fù)段的存儲位置106。
[0036]以上描述的系統(tǒng)可以被實現(xiàn)在具有足以處置置于計算機(jī)上的必要工作負(fù)載的處理能力、存儲器資源和吞吐量能力的任何特定機(jī)器或計算機(jī)上。圖3圖示了適于實現(xiàn)本文所公開的一個或多個示例的特定計算機(jī)系統(tǒng)380。計算機(jī)系統(tǒng)380包括與存儲器設(shè)備通信的一個或多個硬件處理器382 (其可以被稱為中央處理器單元或CPU),所述存儲器設(shè)備包括計算機(jī)可讀存儲設(shè)備388和輸入/輸出(I/O) 390設(shè)備。該一個或多個處理器可以被實現(xiàn)為一個或多個CPU芯片。
[0037]在各種實施例中,計算機(jī)可讀存儲設(shè)備388包括諸如易失性存儲器(例如RAM)、非易失性儲存器(例如閃存、硬盤驅(qū)動器、CD ROM等)或其組合之類的非暫時性存儲設(shè)備。計算機(jī)可讀存儲設(shè)備388可以包括存儲由(一個或多個)處理器382執(zhí)行的軟件或指令384的計算機(jī)或機(jī)器可讀介質(zhì)。本文所描述的一個或多個動作在指令384的執(zhí)行期間由(一個或多個)處理器382執(zhí)行。
[0038]圖4A圖示了確定區(qū)域的集合的一種方式的示例。這里,示出了 25個組塊的序列。在各種示例中,可以一次處理數(shù)千個組塊。對于每個組塊,在該組塊上方示出其確定的位置。例如,尚未確定組塊號碼I在任何位置106中具有副本。在至少一個示例中,它可以表示尚未被存儲的新數(shù)據(jù)??商鎿Q地,用于確定組塊位置的試探法可能已經(jīng)在這種情況下犯了錯誤。相比之下,已經(jīng)確定組塊號碼2在位置5中。組塊號碼3也不具有確定的位置,但已經(jīng)確定組塊號碼4到6在位置I中具有副本。注意,已經(jīng)確定一些組塊在多個位置中;例如,已經(jīng)確定組塊號碼9和10在位置I和2 二者中具有副本。
[0039]以下示出組塊是許多區(qū)域,Rl到R6。例如,區(qū)域Rl包括組塊I到3,并且區(qū)域R2包括組塊3到18。這些區(qū)域(R1-R6)是已經(jīng)通過下述操作來確定的:找到最大連續(xù)子序列,使得每個子序列具有關(guān)聯(lián)的位置并且該子序列中的每個數(shù)據(jù)組塊要么使該位置作為它的確定的位置之一要么不具有確定的位置。例如,區(qū)域Rl的關(guān)聯(lián)位置為5;它的組塊之一(#2)使5作為它的確定的位置之一并且其它兩個組塊(# I和3)不具有確定的位置。類似地,R2的關(guān)聯(lián)位置為1,R3和R6的關(guān)聯(lián)位置為2,R4的關(guān)聯(lián)位置為4,并且R5的關(guān)聯(lián)位置為3。
[0040]這些區(qū)域中的每一個都是最大的,因為它不能夠在不違反示例區(qū)域生成規(guī)則的情況下在任一方向上被擴(kuò)展甚至一個組塊。例如,組塊4不能夠被添加到區(qū)域R1,因為它具有確定的位置并且其確定的位置中沒有一個為5。每個區(qū)域表示駐留在一個位置中的一長條數(shù)據(jù);因此,區(qū)域中部處的斷點將很可能導(dǎo)致去重復(fù)的損失。因為新的數(shù)據(jù)(例如沒有位置的數(shù)據(jù)組塊)能夠被存儲在任何地方而沒有創(chuàng)建中間重復(fù)的風(fēng)險,所以新的數(shù)據(jù)有效地像通配符一樣操作,允許它作為任何區(qū)域的一部分,由此擴(kuò)展該區(qū)域。
[0041]存在確定區(qū)域的許多方式。例如,區(qū)域無需最大,但可能被要求以具有確定的位置的數(shù)據(jù)組塊結(jié)束。在另一示例中,為了應(yīng)對噪聲,可以允許區(qū)域并入有具有不包括區(qū)域的主要位置的確定的位置的少量數(shù)據(jù)組塊。例如,在圖4A中,如所示的,可能允許區(qū)域R2存在,即便確定了組塊13位于位置5中。在另一示例中,可以存在對區(qū)域可以并入有多少這樣的組塊的限制;該限制可以是絕對的(例如不大于五個組塊)或者相對的(例如具有確定的位置的數(shù)據(jù)組塊中不大于10%可能具有除關(guān)聯(lián)位置外的確定的位置)。
[0042]在另一示例中,可以以不同方式處置新的數(shù)據(jù)組塊。取代將它們的位置視作能夠?qū)儆谌魏螀^(qū)域的通配符,而是可以將它們視為位于具有確定的位置的左側(cè)最接近的組塊的確定的位置和具有確定的位置的右側(cè)最接近的組塊的確定的位置二者中。如果具有確定的位置的最接近組塊太過遙遠(yuǎn)(例如超過離開距離的閾值),則可以忽略其確定的位置。因此,太過遠(yuǎn)離舊組塊的新數(shù)據(jù)組塊可以被視為不具有位置,并且因此,要么不可并入到區(qū)域中要么僅可并入到特殊區(qū)域中。在至少一個示例中,這樣的特殊原因可以是僅包含遠(yuǎn)離舊數(shù)據(jù)組塊的類似的新數(shù)據(jù)組塊的一個。在另一示例中,新數(shù)據(jù)組塊可以被視為在具有確定的位置的最接近的數(shù)據(jù)組塊的確定的位置中。在圖4A的情況下,可以將組塊11視作其在位置1&2中,可以將組塊13視作其在位置I中,并且可以將組塊12視作取決于平局決勝規(guī)則而在位置1&2中、在I中或者這二者。
[0043]因為“打斷”(即,確定邊界)區(qū)域中部很可能導(dǎo)致重復(fù),所以如果可能的話應(yīng)當(dāng)避免它。而且,較大區(qū)域而不是較小區(qū)域中部處的打斷和更接近于區(qū)域中部的打斷將很可能導(dǎo)致更多的重復(fù)。這樣,這些情景也應(yīng)當(dāng)被最小化。通過將區(qū)域考慮在內(nèi),可以基于區(qū)域來確定高效的斷點。高效的斷點導(dǎo)致所存儲的數(shù)據(jù)的更少重復(fù)。
[0044]存在確定邊界的許多方式。一個示例涉及專注于保持最大區(qū)域,例如選擇最大區(qū)域并且縮短與其重疊的其它區(qū)域的部分??s短在這里意味著使較小區(qū)域恰好足夠小以使得它不與最大區(qū)域重疊;如果較小區(qū)域被完全包含在最大區(qū)域中,這可能要求整個移除較小區(qū)域。在圖4A的情況下,最大區(qū)域為R2。可以將Rl縮短到組塊1-2,并且可以丟棄R3,因為它完全與R2重疊。可以將R4縮短到組塊19-25??梢赃x擇其余的下一最大區(qū)域并且重復(fù)過程,直到?jīng)]有其余的區(qū)域重疊。對于圖4A的該過程的結(jié)果被示出在圖4B中。
[0045]潛在斷點可以恰好處于圖4B中的三個所得到的區(qū)域(Rl’、R2’和R4’ )中的每一個的第一組塊之前和最后組塊之后。在一個示例中,選取處于所要求的最小段大小和所要求的最大段大小之間的最早的這樣的斷點。如果沒有這樣的斷點存在,則要么可以選取最大段大小,要么可以應(yīng)用不將確定的組塊位置考慮在內(nèi)的備用分段方案。如果為了圖4A的示例的目的,假設(shè)最小段大小8和最大段大小23,則將選取組塊18與19之間的斷點。第一生成段然后可以由組塊I到18構(gòu)成。組塊19可以形成第二段的開始。注意,這將位置I中的數(shù)據(jù)一起置于單個段中,以及將位置4中的數(shù)據(jù)置于不同的單個段中。
[0046]該實施方式的許多變型是可能的。例如,取代縮短區(qū)域,規(guī)則可以包括丟棄閾值大小以下的最大區(qū)域并且按照所得到的潛在斷點的關(guān)聯(lián)區(qū)域有多大來對所得到的潛在斷點進(jìn)行優(yōu)先化排序。只有在較高優(yōu)先級斷點落在最小和最大段大小要求之外時,才可能使用較低優(yōu)先級斷點。
[0047]在至少一個示例中,兩個潛在斷點被不屬于任何區(qū)域的新數(shù)據(jù)分離。在這樣的情況下,可以確定斷點在兩個潛在斷點之間的任何地方而不影響哪些區(qū)域被打斷。在各種示例中,不同規(guī)則將允許在區(qū)域之間的中部處或在區(qū)域端之一處的斷點的選擇。
[0048]以上討論旨在說明本發(fā)明的原理和各種實施例。一旦以上公開內(nèi)容被完全領(lǐng)會,大量變型和修改對本領(lǐng)域技術(shù)人員來說將變得顯而易見。意圖在于,隨附的權(quán)利要求應(yīng)被解釋成涵蓋所有這樣的變型和修改。
【權(quán)利要求】
1.一種非暫時性計算機(jī)可讀存儲設(shè)備,包括可執(zhí)行指令,所述可執(zhí)行指令在被執(zhí)行時使一個或多個處理器: 接收散列的序列,有待去重復(fù)的數(shù)據(jù)被分成數(shù)據(jù)組塊的序列,散列的序列中的每個散列包括對應(yīng)數(shù)據(jù)組塊的散列; 確定所述數(shù)據(jù)組塊的先前存儲的副本的位置,所述位置是基于所述散列來確定的;以及 部分地基于確定的位置來確定數(shù)據(jù)組塊的序列中的斷點,所述斷點形成數(shù)據(jù)組塊段的邊界。
2.權(quán)利要求1的設(shè)備,其中指令還使一個或多個處理器作為整體去重復(fù)段。
3.權(quán)利要求1的設(shè)備,其中指令還使一個或多個處理器僅針對被包含在多個節(jié)點之一中的數(shù)據(jù)去重復(fù)段。
4.權(quán)利要求1的設(shè)備,其中所述位置是通過在索引、稀疏索引、集合或布隆過濾器中搜索所述散列中的一個或多個來確定的。
5.權(quán)利要求1的設(shè)備,其中確定斷點使一個或多個處理器: 部分地基于哪些數(shù)據(jù)組塊在相同位置中具有副本來確定數(shù)據(jù)組塊的序列中的區(qū)域; 基于所述區(qū)域來確定數(shù)據(jù)組塊的序列中的斷點。
6.權(quán)利要求5的設(shè)備,其中對于每個區(qū)域,存在其中具有確定的位置的數(shù)據(jù)組塊的至少90%具有先前存儲的副本的位置。
7.一種方法,包括: 由處理器接收散列的序列,有待去重復(fù)的數(shù)據(jù)被分成數(shù)據(jù)組塊的序列,散列的序列中的每個散列包括對應(yīng)數(shù)據(jù)組塊的散列; 確定數(shù)據(jù)組塊的先前存儲的副本的位置;以及 部分地基于確定的位置來確定數(shù)據(jù)組塊的序列中的斷點,所述斷點形成數(shù)據(jù)組塊段的邊界。
8.權(quán)利要求7的方法,還包括作為整體去重復(fù)段。
9.權(quán)利要求7的方法,其中確定的位置是組塊容器、儲存器或存儲節(jié)點。
10.權(quán)利要求7的方法,其中所述位置是通過在索引、稀疏索引、集合或布隆過濾器中查找所述散列中的一個或多個來確定的。
11.權(quán)利要求7的方法,其中確定斷點包括: 部分地基于哪些數(shù)據(jù)組塊在相同的確定的位置中具有副本來確定數(shù)據(jù)組塊的序列中的區(qū)域; 基于所述區(qū)域來確定數(shù)據(jù)組塊的序列中的斷點。
12.權(quán)利要求11的方法,其中對于每個區(qū)域,存在其中具有確定的位置的數(shù)據(jù)組塊的至少90%具有先前存儲的副本的位置。
13.權(quán)利要求11的方法,其中確定位置包括查詢位置信息。
14.一種設(shè)備,包括: 一個或多個處理器; 耦合到處理器的存儲器; 所述一個或多個處理器執(zhí)行下述操作: 接收散列的序列,有待去重復(fù)的數(shù)據(jù)被分成數(shù)據(jù)組塊的序列,散列的序列中的每個散列包括對應(yīng)數(shù)據(jù)組塊的散列; 確定數(shù)據(jù)組塊的先前存儲的副本的位置,所述位置是基于所述散列來確定的;以及 基于所述位置來確定數(shù)據(jù)組塊的序列中的斷點,所述斷點形成數(shù)據(jù)組塊段的邊界。
15.權(quán)利要求14的設(shè)備,其中確定斷點包括: 部分地基于哪些數(shù)據(jù)組塊在相同的位置中具有副本來確定數(shù)據(jù)組塊的序列中的區(qū)域; 基于所述區(qū)域來確定數(shù)據(jù)組塊的序列中的斷點。
【文檔編號】G06F9/06GK104246720SQ201280072861
【公開日】2014年12月24日 申請日期:2012年5月1日 優(yōu)先權(quán)日:2012年5月1日
【發(fā)明者】埃什希 K., M. 法爾金德 D., D. 利利布里奇 M. 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
台州市| 樟树市| 南平市| 鸡西市| 宜宾市| 大悟县| 磐安县| 塔城市| 合作市| 三都| 舒兰市| 梁平县| 彭水| 泰宁县| 桂平市| 灵山县| 高淳县| 明水县| 侯马市| 乌恰县| 县级市| 兰考县| 漾濞| 收藏| 濮阳县| 商丘市| 柳江县| 盐池县| 如东县| 大石桥市| 定结县| 顺义区| 青州市| 咸宁市| 额济纳旗| 鸡泽县| 云浮市| 宜宾市| 洱源县| 凤城市| 延庆县|