有效計(jì)算相似搜索值和摘要塊邊界的方法和系統(tǒng)的制作方法
【專利摘要】為了在重復(fù)數(shù)據(jù)刪除中有效計(jì)算相似搜索值和摘要塊的邊界兩者,將輸入數(shù)據(jù)劃分成大塊,以及對(duì)于每個(gè)大塊,計(jì)算一組滾動(dòng)散列值。將滾動(dòng)散列值的單個(gè)線性掃描用于產(chǎn)生該大塊的相似搜索值和摘要塊的邊界兩者。
【專利說(shuō)明】有效計(jì)算相似搜索值和摘要塊邊界的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般涉及計(jì)算機(jī),尤其涉及在計(jì)算環(huán)境下在重復(fù)數(shù)據(jù)刪除系統(tǒng)(datadeduplication system)中有效計(jì)算相似搜索值和摘要塊的邊界兩者。
【背景技術(shù)】
[0002]在當(dāng)今社會(huì)里,計(jì)算機(jī)系統(tǒng)是司空見(jiàn)慣的。在工作場(chǎng)所,在家里,或在學(xué)校都可以找到計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)可以包括數(shù)據(jù)存儲(chǔ)系統(tǒng)或盤(pán)存儲(chǔ)系統(tǒng)來(lái)處理和存儲(chǔ)數(shù)據(jù)。每天都必須處理大量數(shù)據(jù),當(dāng)前的趨勢(shì)暗示著在可預(yù)見(jiàn)的將來(lái)這些數(shù)量將繼續(xù)日益增加。緩解該問(wèn)題的有效途徑是使用重復(fù)刪除。重復(fù)刪除系統(tǒng)所依據(jù)的概念是利用通過(guò)定位重復(fù)數(shù)據(jù)和只存儲(chǔ)它的第一次出現(xiàn),一而再地復(fù)制可用數(shù)據(jù)的大部分的事實(shí)。隨后的副本用指向所存儲(chǔ)出現(xiàn)的指針來(lái)取代,如果數(shù)據(jù)的確是重復(fù)的,則顯著降低了存儲(chǔ)要求。
【發(fā)明內(nèi)容】
[0003]在一個(gè)實(shí)施例中,提供了在計(jì)算環(huán)境下在使用處理器設(shè)備的重復(fù)數(shù)據(jù)刪除系統(tǒng)中有效計(jì)算相似搜索值和摘要塊的邊界兩者的方法。在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),將輸入數(shù)據(jù)劃分成大數(shù)據(jù)塊,以及對(duì)于每個(gè)大塊,計(jì)算一組滾動(dòng)散列值。將滾動(dòng)散列值的單個(gè)線性掃描用于產(chǎn)生該大塊的相似搜索值和摘要塊的邊界兩者。
[0004]在另一個(gè)實(shí)施例中,提供了在計(jì)算環(huán)境下,在使用處理器設(shè)備的重復(fù)數(shù)據(jù)刪除系統(tǒng)中有效計(jì)算相似搜索值和摘要塊的邊界兩者的計(jì)算機(jī)系統(tǒng)。該計(jì)算機(jī)系統(tǒng)包括計(jì)算機(jī)可讀介質(zhì)和可操作地與該計(jì)算機(jī)可讀介質(zhì)通信的處理器。在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),該處理器將輸入數(shù)據(jù)劃分成大數(shù)據(jù)塊,以及對(duì)于每個(gè)大塊,計(jì)算一組滾動(dòng)散列值。將滾動(dòng)散列值的單個(gè)線性掃描用于產(chǎn)生該大塊的相似搜索值和摘要塊的邊界兩者。
[0005]在進(jìn)一步的實(shí)施例中,提供了在計(jì)算環(huán)境下,在使用處理器設(shè)備的重復(fù)數(shù)據(jù)刪除系統(tǒng)中有效計(jì)算相似搜索值和摘要塊的邊界兩者的計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)含有存儲(chǔ)在上面的計(jì)算機(jī)可讀程序代碼部分。該計(jì)算機(jī)可讀程序代碼部分包括將輸入數(shù)據(jù)劃分成大數(shù)據(jù)塊的第一可執(zhí)行部分。對(duì)于每個(gè)大塊,計(jì)算一組滾動(dòng)散列值。將滾動(dòng)散列值的單個(gè)線性掃描用于產(chǎn)生該大塊的相似搜索值和摘要塊的邊界兩者。
[0006]除了前面的示范性方法實(shí)施例之外,還提供了其它示范性系統(tǒng)和計(jì)算機(jī)產(chǎn)品實(shí)施例,它們也具有相關(guān)優(yōu)點(diǎn)。提供前面的總結(jié)是為了以簡(jiǎn)化形式介紹下面在詳細(xì)描述中作進(jìn)一步描述的構(gòu)思的選擇。這個(gè)總結(jié)無(wú)意標(biāo)識(shí)要求保護(hù)的主題的關(guān)鍵特征或基本特征,也無(wú)意用于幫助確定要求保護(hù)的主題的范圍。要求保護(hù)的主題不限于解決在【背景技術(shù)】中所述的任何或所有缺點(diǎn)的實(shí)現(xiàn)。
【專利附圖】
【附圖說(shuō)明】
[0007]為了易于了解本發(fā)明的優(yōu)點(diǎn),將參照例示在附圖中的特定實(shí)施例給出上面簡(jiǎn)述的本發(fā)明的更具體描述。當(dāng)明白這些圖形是描繪本發(fā)明的實(shí)施例,因此不認(rèn)為是限制其范圍時(shí),將使用附圖以另外的特征和細(xì)節(jié)描述和說(shuō)明本發(fā)明,在附圖中:
[0008]圖1是例示含有可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面的示范性存儲(chǔ)設(shè)備的計(jì)算系統(tǒng)環(huán)境的框圖;
[0009]圖2是例示可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)系統(tǒng)的硬件結(jié)構(gòu)的框圖;
[0010]圖3是例示在可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面的重復(fù)數(shù)據(jù)刪除系統(tǒng)中在重復(fù)刪除處理中根據(jù)相似搜索進(jìn)行摘要檢索的示范性方法的流程圖;
[0011]圖4是例示在可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面的重復(fù)數(shù)據(jù)刪除系統(tǒng)中在重復(fù)刪除處理中根據(jù)相似搜索進(jìn)行摘要檢索的示范性可替代方法的流程圖;以及
[0012]圖5是例示在可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面的重復(fù)數(shù)據(jù)刪除系統(tǒng)中,使用滾動(dòng)散列值的單個(gè)線性計(jì)算有效計(jì)算相似搜索值和摘要塊的邊界兩者的示范性方法的流程圖。
【具體實(shí)施方式】
[0013]重復(fù)數(shù)據(jù)刪除在計(jì)算存儲(chǔ)系統(tǒng)中是高度重要和充滿活力的領(lǐng)域。重復(fù)數(shù)據(jù)刪除指的是減少和/或消除冗余數(shù)據(jù)。在重復(fù)數(shù)據(jù)刪除中,將可以是文件、數(shù)據(jù)流、或一些其它形式的數(shù)據(jù)的數(shù)據(jù)對(duì)象分解成稱為大塊或塊的一個(gè)或多個(gè)部分。在重復(fù)數(shù)據(jù)刪除過(guò)程中,分別減少或消除數(shù)據(jù)的重復(fù)副本,留下數(shù)據(jù)的最少量冗余副本或單個(gè)副本。重復(fù)數(shù)據(jù)刪除系統(tǒng)的目標(biāo)是存儲(chǔ)重復(fù)數(shù)據(jù)的單個(gè)副本,實(shí)現(xiàn)這一目標(biāo)所面臨的挑戰(zhàn)是在通常大型的中心庫(kù)中有效尋找重復(fù)數(shù)據(jù)模式,并以存儲(chǔ)劃算重復(fù)刪除形式存儲(chǔ)數(shù)據(jù)模式。重復(fù)刪除存儲(chǔ)系統(tǒng)中的重大挑戰(zhàn)是可伸縮地支持?jǐn)?shù)據(jù)的巨大中心庫(kù)。這樣的大型中心庫(kù)可以達(dá)到拍字節(jié)(I拍字節(jié)=25°字節(jié))或更大的規(guī)模。支持這樣中心庫(kù)規(guī)模的重復(fù)刪除存儲(chǔ)系統(tǒng)必須提供在中心庫(kù)中尋找重復(fù)數(shù)據(jù)模式的有效處理,其中用實(shí)現(xiàn)重復(fù)刪除的資源消耗來(lái)度量有效性(該資源可以是CPU循環(huán)、RAM存儲(chǔ)、持久性存儲(chǔ)、聯(lián)網(wǎng)等)。在一個(gè)實(shí)施例中,重復(fù)刪除存儲(chǔ)系統(tǒng)可以基于保留稱為指紋或摘要的數(shù)值的搜索優(yōu)化索引,其中一個(gè)(小)指紋代表中心庫(kù)中的一個(gè)(較大)塊數(shù)據(jù)。指紋值可以是根據(jù)塊的數(shù)據(jù)計(jì)算的保密散列值。在一個(gè)實(shí)施例中,可以使用作為保密散列函數(shù)一族的安全散列算法(SHA),例如,SHA-1或SHA-256。使用索引查找表識(shí)別指紋匹配使得能夠存儲(chǔ)對(duì)已存在于中心庫(kù)中的數(shù)據(jù)的引用。
[0014]為了在這種做法中提供合理的重復(fù)刪除,生成指紋所基于的數(shù)據(jù)塊的平均尺寸必須限于較小尺寸而不得過(guò)大。數(shù)據(jù)塊內(nèi)位的變化將概率性地改變數(shù)據(jù)塊的相應(yīng)指紋,因此含有大數(shù)據(jù)塊的原因使該方案與含有小塊相比對(duì)數(shù)據(jù)的更新更敏感。取決于應(yīng)用的類型和工作負(fù)荷,典型的數(shù)據(jù)塊尺寸的范圍可以從4KB到64KB。因此,僅舉例來(lái)說(shuō),小數(shù)據(jù)塊的范圍可以直到64KB的尺寸,而大數(shù)據(jù)塊是尺寸大于64KB的那些數(shù)據(jù)塊。
[0015]為了支持可伸縮到拍字節(jié)的巨大中心庫(kù)(例如,可伸縮到至少一個(gè)拍字節(jié)的中心庫(kù)),與指紋的尺寸(范圍在16個(gè)字節(jié)與64個(gè)字節(jié)之間)耦合存儲(chǔ)的指紋的數(shù)量大得驚人。例如,對(duì)于I拍字節(jié)的重復(fù)刪除數(shù)據(jù),4KB平均數(shù)據(jù)塊尺寸,以及32字節(jié)指紋尺寸(例如,SHA-256),存儲(chǔ)指紋所需的存儲(chǔ)是8太字節(jié)。為這樣體量的指令保留搜索優(yōu)化數(shù)據(jù)結(jié)構(gòu)是困難的,需要優(yōu)化技術(shù)。但是,現(xiàn)有優(yōu)化技術(shù)無(wú)法在保持性能的同時(shí)可伸縮到這些尺寸。由于這個(gè)原因,為了提供合理性能,支持的中心庫(kù)必須相對(duì)較小(數(shù)十TB的數(shù)量級(jí))。即使對(duì)于這樣的較小尺寸,由于指紋索引的大尺度,也會(huì)引起相當(dāng)大的挑戰(zhàn)和運(yùn)行時(shí)成本,這給重復(fù)刪除處理帶來(lái)瓶頸。
[0016]為了解決這個(gè)問(wèn)題,在一個(gè)實(shí)施例中,重復(fù)刪除系統(tǒng)可以基于在重復(fù)刪除期間搜索數(shù)據(jù)模式的兩步做法。在第一步中,在中心庫(kù)中從大塊輸入數(shù)據(jù)(例如,幾兆字節(jié))中搜索現(xiàn)有數(shù)據(jù)的相似(而不是相同)大數(shù)據(jù)塊,相應(yīng)地將輸入大數(shù)據(jù)塊劃分成區(qū)間并與相應(yīng)(相似)中心庫(kù)區(qū)間配對(duì)。在第二步中,將逐個(gè)字節(jié)匹配算法應(yīng)用在相似區(qū)間對(duì)上,以識(shí)別已存儲(chǔ)在數(shù)據(jù)的中心庫(kù)中的相同子區(qū)間。第二步的匹配算法依賴于讀取中心庫(kù)中的所有相關(guān)相似數(shù)據(jù),以便逐個(gè)字節(jié)地將它與輸入數(shù)據(jù)相比較。
[0017]然而,源于作為第二步的匹配算法的基礎(chǔ)的數(shù)據(jù)的逐個(gè)字節(jié)比較的問(wèn)題是為了比較的目的,應(yīng)該從中心庫(kù)中讀取大小和比率與輸入數(shù)據(jù)大致相同的數(shù)據(jù)。例如,每秒處理IGB輸入數(shù)據(jù)的系統(tǒng)為了逐個(gè)字節(jié)比較,應(yīng)該從中心庫(kù)中每秒大約讀取IGB的數(shù)據(jù)。這要求存儲(chǔ)中心庫(kù)數(shù)據(jù)的存儲(chǔ)設(shè)備具有相當(dāng)高的每秒I/O (輸入/輸出)能力,這又使它們的成本增加。
[0018]信息技術(shù)與上面的問(wèn)題一致的另外趨勢(shì)如下:(1)通過(guò)提高CPU (中央處理單元)速度和增加CPU內(nèi)核的數(shù)量提高計(jì)算能力;以及(2)在盤(pán)吞吐量保持相對(duì)恒定或只適度提高的同時(shí),提高盤(pán)密度。這意味著相對(duì)于數(shù)據(jù)容量存在較少的主軸,因此實(shí)際上使總吞吐量減少。由于上述的問(wèn)題,需要設(shè)計(jì)出無(wú)需從中心庫(kù)中高速/大體量讀取、要并入上述的兩步重復(fù)刪除系統(tǒng)實(shí)施例中的可替代解決方案。
[0019]因此,在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),另外的實(shí)施例解決了這個(gè)問(wèn)題,以及從盤(pán)到(PU的轉(zhuǎn)移資源消耗,以便從上面的趨勢(shì)中獲益。本文所述的實(shí)施例被并入上述的兩步和可伸縮重復(fù)刪除實(shí)施例中,在重復(fù)刪除期間使用相似搜索把重點(diǎn)放在摘要的查找上。在一個(gè)實(shí)施例中,將全局相似搜索用作把重點(diǎn)放在對(duì)最有可能與輸入數(shù)據(jù)匹配的中心庫(kù)數(shù)據(jù)的摘要的相似搜索上的基礎(chǔ)。
[0020]本文所述的實(shí)施例顯著降低了基本盤(pán)所要求的每秒I/O能力,從計(jì)算能力和盤(pán)密度的提高中受益,以及相當(dāng)大地降低了處理的成本,以及維護(hù)成本和環(huán)境額外開(kāi)銷(例如,功耗)。
[0021]在一個(gè)實(shí)施例中,將輸入數(shù)據(jù)分段成小段(例如,4KB),并為每個(gè)這樣的段計(jì)算摘要(保密散列值,例如,SHAl )。首先,將如上所述的相似搜索算法應(yīng)用在輸入的大塊數(shù)據(jù)(例如,16MB)上,并定位和尋找中心庫(kù)中最相似參考數(shù)據(jù)的位置。然后將這些位置用于查找相似參考數(shù)據(jù)的摘要。以與它們?cè)跀?shù)據(jù)中的出現(xiàn)相對(duì)應(yīng)的形式存儲(chǔ)和檢索包含在中心庫(kù)中的所有數(shù)據(jù)的摘要。給定包含在中心庫(kù)中的數(shù)據(jù)的一部分的位置,在中心庫(kù)中有效地定位和檢索與數(shù)據(jù)的該部分相聯(lián)系的摘要。接著,將這些參考摘要裝載到存儲(chǔ)器中,并取代比較數(shù)據(jù)來(lái)尋找匹配,將輸入摘要與裝載的參考摘要匹配。
[0022]所述實(shí)施例提供了架構(gòu)重復(fù)數(shù)據(jù)刪除系統(tǒng)的新基本做法,它將后面接著搜索相同匹配段的可伸縮兩步做法與有效和成本劃算的基于摘要/指紋匹配算法合并(而不是逐個(gè)字節(jié)數(shù)據(jù)比較)。基于摘要/指紋的匹配算法使得可以只讀取逐個(gè)字節(jié)數(shù)據(jù)比較所需的數(shù)據(jù)的體量的一小部分(1%)。如本文提出的本發(fā)明,除了高的效率和性能、和降低的處理和硬件成本之外,重復(fù)刪除系統(tǒng)還可以提供巨大數(shù)據(jù)中心庫(kù)的高可伸縮性。
[0023]在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),術(shù)語(yǔ)“相似數(shù)據(jù)”可能指的是:對(duì)于任何給定輸入數(shù)據(jù),將與輸入數(shù)據(jù)相似的數(shù)據(jù)定義成與輸入數(shù)據(jù)幾乎相同(即,不完全相同但至少50%相似)的數(shù)據(jù)。從二進(jìn)制的角度(視角)觀看數(shù)據(jù),這意味著相似數(shù)據(jù)是大多數(shù)字節(jié)與輸入數(shù)據(jù)相同(即,不完全相同但至少50%相似)的數(shù)據(jù)。
[0024]在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),術(shù)語(yǔ)“相似搜索”可以指的是搜索數(shù)據(jù)的中心庫(kù)中與輸入數(shù)據(jù)相似的數(shù)據(jù)的過(guò)程。在一個(gè)實(shí)施例中,這個(gè)過(guò)程可以使用內(nèi)部保留和搜索的、相似元素的搜索結(jié)構(gòu)來(lái)進(jìn)行。
[0025]在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),術(shù)語(yǔ)“相似元素”可以根據(jù)數(shù)據(jù)計(jì)算和有助于對(duì)數(shù)據(jù)的中心庫(kù)中與輸入數(shù)據(jù)相似的數(shù)據(jù)的全局搜索。一般說(shuō)來(lái),計(jì)算一個(gè)或多個(gè)相似元素,它們代表大塊(例如,至少16MB)數(shù)據(jù)。
[0026]因此,本文所述的各種實(shí)施例為在計(jì)算環(huán)境下,在使用處理器設(shè)備的重復(fù)數(shù)據(jù)刪除系統(tǒng)中,在重復(fù)刪除處理中基于相似搜索的摘要檢索提供了各種解決方案。在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),將輸入數(shù)據(jù)劃分成固定尺寸大數(shù)據(jù)塊。為每個(gè)固定尺寸大數(shù)據(jù)塊計(jì)算相似元素、摘要塊邊界和摘要值。在數(shù)據(jù)的中心庫(kù)中為每個(gè)固定尺寸大數(shù)據(jù)塊從包含相似元素的搜索結(jié)構(gòu)(即,索引)中搜索匹配相似元素。在中心庫(kù)中定位相似數(shù)據(jù)的位置。將相似數(shù)據(jù)的位置用于定位和向存儲(chǔ)器裝載中心庫(kù)中的相似數(shù)據(jù)的所存儲(chǔ)摘要值和相應(yīng)所存儲(chǔ)摘要塊邊界。應(yīng)該注意到,在一個(gè)實(shí)施例中,該位置可以是物理的或邏輯的(即,虛擬的)。該位置屬于數(shù)據(jù)的中心庫(kù)內(nèi)部的數(shù)據(jù)?!拔恢谩钡闹匾再|(zhì)是,給定中心庫(kù)的數(shù)據(jù)的位置(物理的或邏輯的),就可以有效地定位和存取那個(gè)位置中的數(shù)據(jù)。將摘要值和相應(yīng)摘要塊邊界與所存儲(chǔ)摘要值和相應(yīng)所存儲(chǔ)摘要塊邊界匹配以尋找數(shù)據(jù)匹配。
[0027]因此,本文所述的各種實(shí)施例為在計(jì)算環(huán)境下,在使用處理器設(shè)備的重復(fù)數(shù)據(jù)刪除系統(tǒng)中,在重復(fù)刪除處理中基于相似搜索的摘要檢索提供了各種解決方案。在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),將輸入數(shù)據(jù)劃分成固定尺寸大數(shù)據(jù)塊。為每個(gè)固定尺寸大數(shù)據(jù)塊計(jì)算相似元素、摘要塊邊界和摘要值。在數(shù)據(jù)的中心庫(kù)中為每個(gè)固定尺寸大數(shù)據(jù)塊從包含相似元素的搜索結(jié)構(gòu)(即,索引)中搜索匹配相似元素。在中心庫(kù)中定位相似數(shù)據(jù)的位置。將相似數(shù)據(jù)的位置用于定位和向存儲(chǔ)器裝載中心庫(kù)中的相似數(shù)據(jù)的所存儲(chǔ)摘要值和相應(yīng)所存儲(chǔ)摘要塊邊界。將摘要值和相應(yīng)摘要塊邊界與所存儲(chǔ)摘要值和相應(yīng)所存儲(chǔ)摘要塊邊界匹配以尋找數(shù)據(jù)匹配。
[0028]在一個(gè)實(shí)施例中,本發(fā)明提供了為了有效的重復(fù)刪除處理,利用相似搜索將相關(guān)摘要從中心庫(kù)裝載到存儲(chǔ)器中的解決方案。在重復(fù)數(shù)據(jù)刪除系統(tǒng)中,通過(guò)將數(shù)據(jù)劃分成大固定尺寸塊,以及對(duì)于每個(gè)大塊,計(jì)算(兩樣?xùn)|西一相似元素和/或摘要塊/摘要值)相似搜索的散列值(摘要塊/摘要值)和摘要值。該重復(fù)數(shù)據(jù)刪除系統(tǒng)從相似值的搜索結(jié)構(gòu)中搜索大塊的匹配相似值,并在中心庫(kù)中尋找相似數(shù)據(jù)的位置。該重復(fù)數(shù)據(jù)刪除系統(tǒng)使用相似數(shù)據(jù)的這些位置來(lái)定位和向存儲(chǔ)器裝載相似中心庫(kù)數(shù)據(jù)的所存儲(chǔ)摘要,然后匹配輸入數(shù)據(jù)和中心庫(kù)摘要值以尋找數(shù)據(jù)匹配。
[0029]在一個(gè)實(shí)施例中,本發(fā)明使用滾動(dòng)散列值的單個(gè)線性計(jì)算,為有效計(jì)算相似搜索值和摘要塊的分段(即,邊界)兩者創(chuàng)造了條件。在重復(fù)數(shù)據(jù)刪除系統(tǒng)中,將輸入數(shù)據(jù)劃分成大塊,以及對(duì)于每個(gè)大塊,計(jì)算一組滾動(dòng)散列值。滾動(dòng)散列值的單個(gè)線性掃描產(chǎn)生了大塊的相似搜索值和摘要塊的邊界兩者。每個(gè)滾動(dòng)散列值以字節(jié)偏移量對(duì)應(yīng)于字節(jié)的相繼窗口。相似搜索值用于在中心庫(kù)中搜索相似數(shù)據(jù)。摘要塊分段用于為摘要匹配計(jì)算大塊的摘要塊邊界和相應(yīng)摘要值。將每個(gè)滾動(dòng)散列值貢獻(xiàn)給相似值的計(jì)算和摘要塊分段的計(jì)算。在貢獻(xiàn)給計(jì)算之后丟棄每個(gè)滾動(dòng)散列值。所述實(shí)施例使處理效率顯著提高并使CPU消耗顯著降低,以及使性能得到相當(dāng)大提高。
[0030]因此,如上所述,本發(fā)明的重復(fù)刪除做法在重復(fù)刪除期間將兩步過(guò)程用于搜索數(shù)據(jù)模式。在第一步中,在中心庫(kù)中從大塊輸入數(shù)據(jù)(例如,2兆字節(jié)“MB”)中搜索現(xiàn)有數(shù)據(jù)的相似(而不是相同)大塊,相應(yīng)地將輸入大塊劃分成區(qū)間并與相應(yīng)(相似)中心庫(kù)區(qū)間配對(duì)。用在第一步中的相似索引是緊縮的,易于在內(nèi)部保留和搜索,因?yàn)橛糜谙嗨扑阉鞯脑叵鄬?duì)于它們所代表的數(shù)據(jù)是非常緊縮的(例如,16字節(jié)代表4兆字節(jié))。除了相似元素的計(jì)算之外,進(jìn)一步包括在第一步中的是輸入大塊數(shù)據(jù)的摘要段和各自摘要值的計(jì)算。所有這些計(jì)算都基于滾動(dòng)散列值的單個(gè)計(jì)算。在第二步中,檢索相似中心庫(kù)區(qū)間的參考摘要,然后將輸入摘要與參考摘要匹配以識(shí)別數(shù)據(jù)匹配。
[0031]在一個(gè)實(shí)施例中,在本文所述的基于相似重復(fù)刪除做法中,將輸入數(shù)據(jù)流劃分成大塊(例如,至少16MB),并在兩個(gè)主要步驟中處理每個(gè)大塊。在第一步中,應(yīng)用相似搜索過(guò)程,尋找中心庫(kù)中最相似參考數(shù)據(jù)的位置。在這個(gè)步驟內(nèi),根據(jù)滾動(dòng)散列值的單個(gè)線性計(jì)算,為輸入大塊計(jì)算相似搜索元素和摘要段邊界兩者。根據(jù)產(chǎn)生的分段為輸入大塊計(jì)算摘要值,并以它們出現(xiàn)在輸入數(shù)據(jù)中的順序存儲(chǔ)在存儲(chǔ)器中。然后將相似數(shù)據(jù)的位置用于查找相似參考數(shù)據(jù)的摘要,并且也以順序形式將這些摘要裝載到存儲(chǔ)器中。然后,將輸入摘要與參考摘要匹配以形成數(shù)據(jù)匹配。
[0032]當(dāng)完成輸入大塊數(shù)據(jù)的重復(fù)刪除時(shí),將與輸入大塊數(shù)據(jù)相聯(lián)系的摘要存儲(chǔ)在中心庫(kù)中,用作隨后輸入數(shù)據(jù)的參考摘要。以獨(dú)立于存儲(chǔ)這些摘要所描述的數(shù)據(jù)的重復(fù)刪除形式的線性形式,以及以它們出現(xiàn)在數(shù)據(jù)中的順序存儲(chǔ)摘要。這種存儲(chǔ)方法能夠獨(dú)立于表示重復(fù)刪除存儲(chǔ)形式的分段地有效檢索摘要的部分,因此降低了 I/o和計(jì)算資源消耗。
[0033]現(xiàn)在轉(zhuǎn)到圖1,圖中描繪了計(jì)算系統(tǒng)環(huán)境的示范性架構(gòu)10。計(jì)算機(jī)系統(tǒng)10包括與通信端口 18和存儲(chǔ)器件16連接的中央處理單元(CPU) 12。通信端口 18與通信網(wǎng)絡(luò)20通信。通信網(wǎng)絡(luò)20和存儲(chǔ)網(wǎng)絡(luò)可以配置成與服務(wù)器(主機(jī))24和可以包括存儲(chǔ)設(shè)備14的存儲(chǔ)系統(tǒng)通信。存儲(chǔ)系統(tǒng)可以包括可以以獨(dú)立盤(pán)冗余陣列(RAID)配置的硬盤(pán)驅(qū)動(dòng)器(HDD)設(shè)備、固態(tài)設(shè)備(SSD)等。如下所述的操作可以在存儲(chǔ)設(shè)備14上執(zhí)行,存儲(chǔ)設(shè)備14可以處在系統(tǒng)10中或其它地方,可以含有與其它CPU設(shè)備12獨(dú)立和/或結(jié)合工作的多個(gè)存儲(chǔ)器件
16。存儲(chǔ)器件16可以包括像電可擦除可編程只讀存儲(chǔ)器(EEPROM)那樣的存儲(chǔ)器或相關(guān)器件的主機(jī)。存儲(chǔ)器件16和存儲(chǔ)設(shè)備14經(jīng)由信號(hào)承載介質(zhì)與CPU12通信。另外,CPU12通過(guò)通信端口 18與含有附在上面的多個(gè)另外計(jì)算機(jī)主機(jī)系統(tǒng)24的通信網(wǎng)絡(luò)20連接。另外,存儲(chǔ)器件16和CPU12可以內(nèi)置和包括在計(jì)算系統(tǒng)10的每個(gè)組件中。每個(gè)存儲(chǔ)系統(tǒng)還可以包括結(jié)合在一起或作為獨(dú)立存儲(chǔ)器件16和/或CPU12工作的獨(dú)立和/或不同存儲(chǔ)器件16和 CPU12。
[0034]圖2是示出按照本發(fā)明的計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)系統(tǒng)的硬件結(jié)構(gòu)的示范性框圖。圖中示出了主計(jì)算機(jī)210,220,225,每一臺(tái)起作為數(shù)據(jù)存儲(chǔ)系統(tǒng)200的一部分進(jìn)行數(shù)據(jù)處理的中央處理單元的作用。群集主機(jī)/節(jié)點(diǎn)(物理或虛擬設(shè)備)210,220和225可以是數(shù)據(jù)存儲(chǔ)系統(tǒng)200中完成本發(fā)明的目的的一個(gè)或多個(gè)新物理設(shè)備或邏輯設(shè)備。在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),數(shù)據(jù)存儲(chǔ)系統(tǒng)200可以實(shí)現(xiàn)成IBM?ProtecTIER? ι酸復(fù)刪除系統(tǒng)TS7650G?。網(wǎng)絡(luò)連接260可以是光纖通道Fabric架構(gòu)、光纖通道點(diǎn)到點(diǎn)鏈路、以太網(wǎng)上光纖通道Fabric架構(gòu)或點(diǎn)到點(diǎn)鏈路、FICON或ESCON I/O接口、任何其它I/O接口類型、無(wú)線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、LAN、WAN、各向異性的、各向同性的、公用的卿,互聯(lián)網(wǎng))、專用的、或它們的組合體。主機(jī)210,220和225可以是局部的或分布在一個(gè)或多個(gè)地點(diǎn)中,可以裝備像光纖通道、FIC0N、ESC0N、以太網(wǎng)、光纖、無(wú)線、或同軸適配器那樣,到存儲(chǔ)控制器240的任何類型的Fabric架構(gòu)(或光纖通道)(未顯示在圖2中)或網(wǎng)絡(luò)適配器260。數(shù)據(jù)存儲(chǔ)系統(tǒng)200相應(yīng)地裝備適當(dāng)Fabric架構(gòu)(未顯示在圖2中)或網(wǎng)絡(luò)適配器260以便進(jìn)行通信。數(shù)據(jù)存儲(chǔ)系統(tǒng)200在圖2中被描繪成包含存儲(chǔ)控制器240和群集主機(jī)210,220和225。群集主機(jī)210,220和225可以包括群集節(jié)點(diǎn)。
[0035]為了促進(jìn)人們更清楚地理解本文所述的方法,存儲(chǔ)控制器240在圖2中被顯示成包括微處理器242、系統(tǒng)存儲(chǔ)器243和非易失性存儲(chǔ)(“NVS”)216的單個(gè)處理單元。要注意的是,在一些實(shí)施例中,存儲(chǔ)控制器240由多個(gè)處理單元組成,每一個(gè)帶有它們自己的處理器復(fù)合體和系統(tǒng)存儲(chǔ)器,并通過(guò)數(shù)據(jù)存儲(chǔ)系統(tǒng)200內(nèi)的專用網(wǎng)絡(luò)互連。存儲(chǔ)230 (在圖2中標(biāo)為230a,230b和230η)可以由像存儲(chǔ)陣列那樣的一個(gè)或多個(gè)存儲(chǔ)設(shè)備組成,該存儲(chǔ)設(shè)備與存儲(chǔ)控制器240連接(通過(guò)存儲(chǔ)網(wǎng)絡(luò)),以及一個(gè)或多個(gè)群集主機(jī)210,220和225與每個(gè)存儲(chǔ)控制器240連接。
[0036]在一些實(shí)施例中,包括在存儲(chǔ)230中的設(shè)備可以以循環(huán)架構(gòu)連接。存儲(chǔ)控制器240管理存儲(chǔ)230,并促進(jìn)旨在用于存儲(chǔ)230的寫(xiě)入和讀取請(qǐng)求的處理。存儲(chǔ)控制器240的系統(tǒng)存儲(chǔ)器243存儲(chǔ)處理器243可以為了執(zhí)行本發(fā)明的功能和方法步驟而加以存取以便如本文所述運(yùn)行和管理存儲(chǔ)230的程序指令和數(shù)據(jù)。在一個(gè)實(shí)施例中,系統(tǒng)存儲(chǔ)器243包括執(zhí)行本文所述的方法和操作的操作軟件250,與其相聯(lián)系,或與其通信。如圖2所示,系統(tǒng)存儲(chǔ)器243還可以包括用于存儲(chǔ)230、本文也稱為“高速緩沖存儲(chǔ)器”、用于緩沖分別指寫(xiě)入/讀取請(qǐng)求和它們的相關(guān)數(shù)據(jù)的“寫(xiě)入數(shù)據(jù)”和“讀取數(shù)據(jù)”的高速緩存245,或與其通信。在一個(gè)實(shí)施例中,高速緩存245被分配在系統(tǒng)存儲(chǔ)器243外部的設(shè)備中,但微處理器242仍然可存取,并且除了進(jìn)行如本文所述的操作之外,還可以用于提供抵抗數(shù)據(jù)損失的額外安全性。
[0037]在一些實(shí)施例中,高速緩存245利用易失性存儲(chǔ)器和非易失性存儲(chǔ)器來(lái)實(shí)現(xiàn),經(jīng)由局部總線(未顯示在圖2中)與微處理器242耦合,以便提高數(shù)據(jù)存儲(chǔ)系統(tǒng)200的性能。包括在數(shù)據(jù)存儲(chǔ)控制器中的NVS216可由微處理器242存取,用于提供對(duì)如在其它圖形中所述的本發(fā)明的操作和執(zhí)行的額外支持。NAV216也可以稱為“永久”高速緩存、或“高速緩沖存儲(chǔ)器”,利用可以利用或可以不利用外部電力的非易失性存儲(chǔ)器來(lái)實(shí)現(xiàn),以便保留存儲(chǔ)在其中的數(shù)據(jù)。對(duì)于適合實(shí)現(xiàn)本發(fā)明的目的的任何用途,NVS可以存儲(chǔ)在高速緩存245中或與高速緩存245 —起存儲(chǔ)。在一些實(shí)施例中,像蓄電池那樣的備用電源(未顯示在圖2中)將足夠的電力供給NVS216,以便在數(shù)據(jù)存儲(chǔ)系統(tǒng)200斷電的情況下保留存儲(chǔ)在其中的數(shù)據(jù)。在某些實(shí)施例中,NVS216的容量小于等于高速緩存245的總?cè)萘俊?br>
[0038]存儲(chǔ)230在物理上可以由像存儲(chǔ)陣列那樣的一個(gè)或多個(gè)存儲(chǔ)設(shè)備組成。存儲(chǔ)陣列是像硬盤(pán)那樣的單獨(dú)存儲(chǔ)設(shè)備的邏輯分組。在某些實(shí)施例中,存儲(chǔ)230由JBOD (簡(jiǎn)單盤(pán)捆綁)陣列或RAID (獨(dú)立盤(pán)冗余陣列)陣列組成??梢赃M(jìn)一步組合一批物理存儲(chǔ)陣列以形成將物理存儲(chǔ)與邏輯配置分離的隊(duì)列??梢詫㈥?duì)列中的存儲(chǔ)空間分配給定義規(guī)定在寫(xiě)入/讀取請(qǐng)求中的存儲(chǔ)地點(diǎn)的邏輯卷。
[0039]在一個(gè)實(shí)施例中,僅舉例來(lái)說(shuō),如圖2所示的存儲(chǔ)系統(tǒng)可以包括邏輯卷,或簡(jiǎn)稱為“卷”,可以具有不同類型的分配。存儲(chǔ)230a,230b和230η被顯示成數(shù)據(jù)存儲(chǔ)系統(tǒng)200中的隊(duì)列,本文稱為隊(duì)列230a,230b和230η。隊(duì)列可以在數(shù)據(jù)存儲(chǔ)系統(tǒng)200本地,或可以處在物理遠(yuǎn)地點(diǎn)。換句話說(shuō),本地存儲(chǔ)控制器可以與遠(yuǎn)程存儲(chǔ)控制器連接,管理遠(yuǎn)程地點(diǎn)上的存儲(chǔ)。隊(duì)列230a被顯示成由兩個(gè)完整卷234和236,以及一個(gè)部分卷232a構(gòu)成。隊(duì)列230b被顯示成具有另一個(gè)部分卷232b。因此,卷232跨過(guò)隊(duì)列230a和230b地分配。隊(duì)列230η被顯示成完全分配給卷238—也就是說(shuō),隊(duì)列230η指的是卷238的整個(gè)物理存儲(chǔ)。從上面的例子中可以懂得,一個(gè)隊(duì)列可以被配置成包括一個(gè)或多個(gè)部分和/或完整卷。卷和隊(duì)列可以進(jìn)一步劃分成代表存儲(chǔ)的固定塊的所謂“軌道”。一個(gè)軌道因此與給定卷相聯(lián)系和可以賦予給定隊(duì)列。
[0040]存儲(chǔ)控制器240可以包括重復(fù)數(shù)據(jù)刪除模塊255、相似索引模塊257 (例如,相似搜索結(jié)構(gòu))、和相似搜索模塊259。重復(fù)數(shù)據(jù)刪除模塊255、相似索引模塊257、和相似搜索模塊259可以結(jié)合存儲(chǔ)控制器240、主機(jī)210,220和225、和存儲(chǔ)設(shè)備230的每個(gè)組件來(lái)工作。重復(fù)數(shù)據(jù)刪除模塊255、相似索引模塊257、和相似搜索模塊259在結(jié)構(gòu)上可以是一個(gè)完全模塊或可以與其它單獨(dú)模塊相聯(lián)系和/或包括在其中。重復(fù)數(shù)據(jù)刪除模塊255、相似索引模塊257、和相似搜索模塊259也可以處在高速緩存245或其它組件中。
[0041]存儲(chǔ)控制器240包括控制與主計(jì)算機(jī)210,220,225的光纖通道協(xié)議的控制開(kāi)關(guān)241、控制所有存儲(chǔ)控制器240的微處理器242、存儲(chǔ)控制存儲(chǔ)控制器240的操作的微程序(操作軟件)250的非易失性控制存儲(chǔ)器243、用于控制的數(shù)據(jù)、臨時(shí)存儲(chǔ)(緩沖)數(shù)據(jù)的高速緩存245、和幫助高速緩存245讀取和寫(xiě)入數(shù)據(jù)的緩沖器245,控制開(kāi)關(guān)241用于控制協(xié)議以便控制到或從可能設(shè)置了信息的存儲(chǔ)設(shè)備230、重復(fù)數(shù)據(jù)刪除模塊255、相似索引模塊257、和相似搜索模塊259的數(shù)據(jù)傳送??梢岳帽景l(fā)明實(shí)現(xiàn)多個(gè)緩沖器244以幫助如本文所述的操作。在一個(gè)實(shí)施例中,群集主機(jī)/節(jié)點(diǎn)210,220,225和存儲(chǔ)控制器240通過(guò)作為接口的網(wǎng)絡(luò)適配器(可以是光纖通道)260,即,經(jīng)由叫做“Fabric架構(gòu)”的至少一個(gè)交換機(jī)連接。
[0042]在一個(gè)實(shí)施例中,主計(jì)算機(jī)或一個(gè)或多個(gè)物理或虛擬設(shè)備210,220,225、和存儲(chǔ)控制器240通過(guò)作為接口的網(wǎng)絡(luò)(可以是光纖通道)260,S卩,經(jīng)由叫做“Fabric架構(gòu)”的至少一個(gè)交換機(jī)連接。在一個(gè)實(shí)施例中,將描述顯不在圖2中的系統(tǒng)的操作。微處理器242可以控制存儲(chǔ)器243來(lái)存儲(chǔ)來(lái)自主設(shè)備(物理或虛擬)210的命令信息和識(shí)別主設(shè)備(物理或虛擬)210的信息??刂崎_(kāi)關(guān)241、緩沖器244、高速緩存245、操作軟件250、微處理器242、存儲(chǔ)器243、NVS216、重復(fù)數(shù)據(jù)刪除模塊255、相似索引模塊257、和相似搜索模塊259可以相互通信,并且可以是分開(kāi)的或一個(gè)單獨(dú)組件。此外,像操作軟件250那樣的組件即使不是全部,也有幾個(gè)包括在存儲(chǔ)器243內(nèi)。對(duì)于適合本發(fā)明的用途,所示的設(shè)備內(nèi)的每個(gè)組件可以鏈接在一起并可以相互通信。如上所述,重復(fù)數(shù)據(jù)刪除模塊255、相似索引模塊257、和相似搜索模塊259也可以處在高速緩存245或其它組件中。這樣,可以根據(jù)存儲(chǔ)架構(gòu)和用戶偏好按需使用重復(fù)數(shù)據(jù)刪除模塊255、相似索引模塊257、和相似搜索模塊259。
[0043]如上所述,在一個(gè)實(shí)施例中,將輸入數(shù)據(jù)劃分成大固定尺寸塊(例如,16MB),并對(duì)每個(gè)輸入大塊應(yīng)用相似搜索過(guò)程。相似搜索過(guò)程根據(jù)數(shù)據(jù)的輸入大塊,計(jì)算也可以稱為區(qū)分特征(DC)的緊縮相似元素,并在中心庫(kù)中搜索存儲(chǔ)在緊縮搜索結(jié)構(gòu)(即,索引)中的匹配相似元素。按數(shù)據(jù)的每個(gè)大塊存儲(chǔ)的相似元素的尺寸通常是32個(gè)字節(jié)(在大塊尺寸是幾兆字節(jié)的情況下),因此使存儲(chǔ)相似元素的搜索結(jié)構(gòu)非常緊縮,易于在內(nèi)部保留和搜索。
[0044]通過(guò)對(duì)大塊的數(shù)據(jù)計(jì)算滾動(dòng)散列值,S卩,以字節(jié)偏移量在字節(jié)的每個(gè)相繼窗口內(nèi)產(chǎn)生滾動(dòng)散列值,然后將特定散列值和相關(guān)位置(未必是這些散列值的精確位置)選成大塊的相似元素來(lái)計(jì)算相似元素。
[0045]本發(fā)明提供的一個(gè)重要方面和創(chuàng)新是在計(jì)算方面是昂貴操作的滾動(dòng)散列值的單個(gè)線性計(jì)算用作計(jì)算大塊的相似元素(用于相似搜索)和大塊數(shù)據(jù)到摘要塊的分段(用于尋找精確匹配)兩者的基礎(chǔ)。將每個(gè)滾動(dòng)散列值加入相似元素的計(jì)算中以及加入摘要塊分段的計(jì)算中。在加入兩種計(jì)算中之后,可以丟棄滾動(dòng)散列值,因?yàn)榇鎯?chǔ)滾動(dòng)散列值的需要降到最低程度或消失了。這種算法元素使效率顯著提高并使CPU消耗顯著降低,以及使性能得到相當(dāng)大提聞。
[0046]在一個(gè)實(shí)施例中,本發(fā)明的相似搜索過(guò)程產(chǎn)生兩種類型的輸出。第一種類型的輸出是中心庫(kù)中最相似參考數(shù)據(jù)的一組位置。第二種類型的輸出是輸入大塊的摘要,其由摘要塊的分段和與摘要塊相對(duì)應(yīng)的摘要值組成,其中摘要值是根據(jù)摘要塊的數(shù)據(jù)計(jì)算的。
[0047]在一個(gè)實(shí)施例中,以與摘要在數(shù)據(jù)中的出現(xiàn)相對(duì)應(yīng)的形式將摘要存儲(chǔ)在中心庫(kù)中。給定中心庫(kù)中的位置和數(shù)據(jù)的一部分的尺寸,有效地確定與數(shù)據(jù)的那個(gè)區(qū)間相對(duì)應(yīng)的摘要在中心庫(kù)中的地點(diǎn)。然后將通過(guò)相似搜索過(guò)程產(chǎn)生的位置用于查找相似參考數(shù)據(jù)的所存儲(chǔ)摘要,并將這些參考摘要裝載到存儲(chǔ)器中。然后,不是比較數(shù)據(jù),而是將輸入摘要與裝載的參數(shù)摘要匹配。該匹配過(guò)程通過(guò)將參考摘要裝載到存儲(chǔ)器中摘要的緊縮搜索結(jié)構(gòu)中,然后對(duì)于每個(gè)輸入摘要,就那個(gè)摘要值的存在性查詢摘要的搜索結(jié)構(gòu)。摘要的搜索結(jié)構(gòu)中的搜索根據(jù)摘要值來(lái)進(jìn)行。如果發(fā)現(xiàn)匹配,則確定在中心庫(kù)中找到與那個(gè)摘要相聯(lián)系的輸入數(shù)據(jù),并根據(jù)中心庫(kù)中參考摘要的位置確定中心庫(kù)中輸入數(shù)據(jù)的位置。在這種情況下,記錄輸入摘要涵蓋的輸入數(shù)據(jù)與匹配參考摘要涵蓋的中心庫(kù)數(shù)據(jù)之間的等同性。如果未發(fā)現(xiàn)匹配,則確定在中心庫(kù)中未找到與那個(gè)摘要相聯(lián)系的輸入數(shù)據(jù),將其記錄成新數(shù)據(jù)。在一個(gè)實(shí)施例中,相似搜索結(jié)構(gòu)是相似元素的全局搜索結(jié)構(gòu),摘要的存儲(chǔ)器搜索結(jié)構(gòu)是存儲(chǔ)器中摘要的局部搜索結(jié)構(gòu)。摘要的存儲(chǔ)器搜索結(jié)構(gòu)中的搜索通過(guò)摘要值來(lái)進(jìn)行。
[0048]圖3是例示在可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面的重復(fù)數(shù)據(jù)刪除系統(tǒng)中在重復(fù)刪除處理中根據(jù)相似搜索進(jìn)行摘要檢索的示范性方法300的流程圖。啟動(dòng)方法300 (步驟302)。方法300將輸入數(shù)據(jù)劃分成大數(shù)據(jù)塊(步驟304)??梢詫⑤斎霐?shù)據(jù)劃分成固定尺寸大數(shù)據(jù)塊。方法300為每個(gè)大數(shù)據(jù)塊計(jì)算相似元素、摘要塊邊界、和相應(yīng)摘要值(步驟306)。方法300為每個(gè)大數(shù)據(jù)塊(可以是固定尺寸大數(shù)據(jù)塊)在搜索結(jié)構(gòu)(即,索引)中搜索匹配相似元素(步驟308)。定位中心庫(kù)(例如,數(shù)據(jù)的中心庫(kù))中相似數(shù)據(jù)的位置(步驟310)。方法300將相似數(shù)據(jù)的位置用于定位和向存儲(chǔ)器裝載中心庫(kù)中的相似數(shù)據(jù)的所存儲(chǔ)摘要值和相應(yīng)所存儲(chǔ)摘要塊邊界(步驟312)。方法300將輸入數(shù)據(jù)的摘要值和相應(yīng)摘要塊邊界與所存儲(chǔ)摘要值和相應(yīng)所存儲(chǔ)摘要塊邊界匹配以尋找數(shù)據(jù)匹配(步驟314)。結(jié)束方法300 (步驟316)。
[0049]圖4是例示在可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面的重復(fù)數(shù)據(jù)刪除系統(tǒng)中在重復(fù)刪除處理中根據(jù)相似搜索進(jìn)行摘要檢索的示范性可替代方法400的流程圖。啟動(dòng)方法400 (步驟402)。方法400將輸入數(shù)據(jù)劃分成大塊(例如,將輸入數(shù)據(jù)劃分成大固定尺寸塊)(步驟404),以及對(duì)于輸入大數(shù)據(jù)塊,根據(jù)輸入大數(shù)據(jù)塊的數(shù)據(jù)計(jì)算滾動(dòng)散列值、相似元素、摘要塊邊界、和摘要值(步驟406)。方法400在相似搜索結(jié)構(gòu)(S卩,索引)中搜索輸入大數(shù)據(jù)塊的相似元素(步驟408和410)。方法400確定是否存在足夠或充分?jǐn)?shù)量的匹配相似元素(步驟412)。如果未找到足夠的匹配相似元素,則方法400確定在中心庫(kù)中未為輸入大數(shù)據(jù)塊找到相似數(shù)據(jù),將輸入大塊的數(shù)據(jù)存儲(chǔ)在中心庫(kù)中(步驟414),然后結(jié)束方法400 (步驟438)。如果找到足夠的相似元素,則對(duì)于在中心庫(kù)中找到的每個(gè)相似數(shù)據(jù)區(qū)間,方法400確定中心庫(kù)中每個(gè)相似數(shù)據(jù)區(qū)域的位置和大小(步驟416)。方法400定位中心庫(kù)中代表相似數(shù)據(jù)區(qū)間的摘要(步驟418)。方法400將這些摘要裝載到存儲(chǔ)器中摘要的搜索數(shù)據(jù)結(jié)構(gòu)中(步驟420)。方法400確定是否存在另外的相似數(shù)據(jù)區(qū)間(步驟422)。如果是,則方法400返回到步驟416。如果否,則方法400考慮輸入大數(shù)據(jù)塊的每個(gè)摘要(步驟424)。方法400確定在摘要的存儲(chǔ)器搜索結(jié)構(gòu)中是否存在摘要值(步驟426)。如果是,則方法400記錄摘要涵蓋的輸入數(shù)據(jù)與具有匹配摘要值的中心庫(kù)數(shù)據(jù)之間的等同性(步驟428)。如果否,則方法400記錄在中心庫(kù)中未找到摘要涵蓋的輸入數(shù)據(jù)(步驟430)。從步驟428和430兩者中,方法400確定是否存在輸入大數(shù)據(jù)塊的另外摘要(步驟432)。如果是,則方法400返回到步驟424。如果否,則方法400從相似搜索結(jié)構(gòu)中刪除中心庫(kù)中匹配數(shù)據(jù)的相似元素(步驟434和步驟410)。方法400將輸入大數(shù)據(jù)塊的相似元素加入相似搜索結(jié)構(gòu)中(步驟436)。結(jié)束方法400 (步驟438)。
[0050]圖5是例示在可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面的重復(fù)數(shù)據(jù)刪除系統(tǒng)中,使用滾動(dòng)散列值的單個(gè)線性計(jì)算有效計(jì)算相似搜索值和摘要塊的邊界兩者的示范性方法500的流程圖。啟動(dòng)方法500 (步驟502)。方法500將輸入數(shù)據(jù)劃分成大數(shù)據(jù)塊(步驟504)。該大數(shù)據(jù)塊可以是固定尺寸大數(shù)據(jù)塊。方法500在輸入數(shù)據(jù)中以字節(jié)偏移量考慮字節(jié)的每個(gè)相繼窗口(步驟506)。方法500確定是否存在字節(jié)的另外相繼窗口要處理(步驟508)。如果是,則方法500根據(jù)字節(jié)的相繼窗口的數(shù)據(jù)計(jì)算滾動(dòng)散列值(步驟510)。方法500將滾動(dòng)散列值貢獻(xiàn)給相似值的計(jì)算和摘要塊分段(即,摘要塊邊界)的計(jì)算(步驟512)。方法500丟棄滾動(dòng)散列值(步驟514),并返回到步驟506。如果否,則方法500決定計(jì)算相似元素和摘要塊分段,得出輸入數(shù)據(jù)的最終相似元素和摘要塊分段(步驟516)。方法500根據(jù)摘要塊分段計(jì)算摘要值,其中對(duì)每個(gè)摘要塊指定相應(yīng)摘要值(步驟518)。將相似元素用于在中心庫(kù)中搜索相似數(shù)據(jù)(步驟520)。將該摘要塊和相應(yīng)摘要值用于與存儲(chǔ)在中心庫(kù)中的摘要塊和相應(yīng)摘要值匹配,以確定中心庫(kù)中與輸入數(shù)據(jù)相同的數(shù)據(jù)(步驟522)。結(jié)束方法500 (步驟524)。
[0051]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0052]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、光纖、便攜式緊湊盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0053]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于——無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)目一諸如Java、Smalltalk、C++等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如“C”語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN) —連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
[0054]下面將參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些計(jì)算機(jī)程序指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
[0055]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令的制造品(article of manufacture)。也可以將計(jì)算機(jī)程序指令裝載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上使一系列操作步驟在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上得到執(zhí)行,形成計(jì)算機(jī)實(shí)現(xiàn)過(guò)程,以便在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的過(guò)程。
[0056]圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
【權(quán)利要求】
1.一種在計(jì)算環(huán)境下在使用處理器設(shè)備的重復(fù)數(shù)據(jù)刪除系統(tǒng)中有效計(jì)算相似搜索值和摘要塊的邊界兩者的方法,包含: 將輸入數(shù)據(jù)劃分成大數(shù)據(jù)塊; 對(duì)于每個(gè)大數(shù)據(jù)塊,計(jì)算一組滾動(dòng)散列值;以及 將滾動(dòng)散列值的單個(gè)線性掃描用于產(chǎn)生相似搜索值和摘要塊的邊界兩者。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括以字節(jié)偏移量將每個(gè)滾動(dòng)散列值與字節(jié)的相繼窗口對(duì)應(yīng)。
3.如權(quán)利要求1所述的方法,進(jìn)一步包括使用相似搜索值來(lái)搜索數(shù)據(jù)的中心庫(kù)中與輸入數(shù)據(jù)相似的數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,進(jìn)一步包括使用摘要塊的邊界為每個(gè)大數(shù)據(jù)塊計(jì)算摘要值以便用于摘要匹配。
5.如權(quán)利要求1所述的方法,進(jìn)一步包括將每個(gè)滾動(dòng)散列值用于貢獻(xiàn)給相似搜索值的計(jì)算和摘要塊的邊界的計(jì)算。
6.如權(quán)利要求5所述的方法,進(jìn)一步包括在貢獻(xiàn)給相似搜索值的計(jì)算和摘要塊的邊界的計(jì)算之后丟棄每個(gè)滾動(dòng)散列值。
7.如權(quán)利要求1所述的方法,進(jìn)一步包括將輸入數(shù)據(jù)劃分成固定尺寸大數(shù)據(jù)塊。
8.一種在計(jì)算環(huán)境的重復(fù)數(shù)據(jù)刪除系統(tǒng)中有效計(jì)算相似搜索值和摘要塊的邊界兩者的系統(tǒng),該系統(tǒng)包含: 重復(fù)數(shù)據(jù)刪除系統(tǒng); 與該重復(fù)數(shù)據(jù)刪除系統(tǒng)通信的計(jì)算環(huán)境中的中心庫(kù); 可工作在計(jì)算存儲(chǔ)環(huán)境中以便控制該重復(fù)數(shù)據(jù)刪除系統(tǒng)的至少一個(gè)處理器設(shè)備,其中該至少一個(gè)處理器設(shè)備: 將輸入數(shù)據(jù)劃分成大數(shù)據(jù)塊, 對(duì)于每個(gè)大數(shù)據(jù)塊,計(jì)算一組滾動(dòng)散列值,以及 將滾動(dòng)散列值的單個(gè)線性掃描用于產(chǎn)生相似搜索值和摘要塊的邊界兩者。
9.如權(quán)利要求8所述的系統(tǒng),其中該至少一個(gè)處理器設(shè)備以字節(jié)偏移量將每個(gè)滾動(dòng)散列值與字節(jié)的相繼窗口對(duì)應(yīng)。
10.如權(quán)利要求8所述的系統(tǒng),其中該至少一個(gè)處理器設(shè)備使用相似搜索值來(lái)搜索數(shù)據(jù)的中心庫(kù)中與輸入數(shù)據(jù)相似的數(shù)據(jù)。
11.如權(quán)利要求8所述的系統(tǒng),其中該至少一個(gè)處理器設(shè)備使用摘要塊的邊界為每個(gè)大數(shù)據(jù)塊計(jì)算摘要值以便用于摘要匹配。
12.如權(quán)利要求8所述的系統(tǒng),其中該至少一個(gè)處理器設(shè)備將每個(gè)滾動(dòng)散列值用于貢獻(xiàn)給相似搜索值的計(jì)算和摘要塊的邊界的計(jì)算。
13.如權(quán)利要求12所述的系統(tǒng),其中該至少一個(gè)處理器設(shè)備在貢獻(xiàn)給相似搜索值的計(jì)算和摘要塊的邊界的計(jì)算之后丟棄每個(gè)滾動(dòng)散列值。
14.如權(quán)利要求8所述的系統(tǒng),其中該至少一個(gè)處理器設(shè)備將輸入數(shù)據(jù)劃分成固定尺寸大數(shù)據(jù)塊。
【文檔編號(hào)】G06F17/30GK104050233SQ201410098083
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2014年3月17日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】S.H.阿基拉夫, L.阿羅諾維克, S.本-多爾, M.赫希, O.勒尼曼 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司