專利名稱:可移動介質(zhì)上的公共因子分解的硬件加速的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及數(shù)據(jù)存儲系統(tǒng),以及涉及(但不限于)在可 移動介質(zhì)上存儲信息的數(shù)據(jù)存儲系統(tǒng)。
背景技術(shù):
傳統(tǒng)的備份涉及一系列完全備份、增量備份、或差異備份,其 保存相同的或緩慢變化的數(shù)據(jù)的多種拷貝。這種備份方法導(dǎo)致較高 程度的數(shù)據(jù)冗余。
多年以來,隨著基于磁帶的存儲器變得便宜,磁帶和基于磁盤 的存儲系統(tǒng)的價格之間已有相當(dāng)大的差距。因此,傳統(tǒng)的數(shù)據(jù)存儲 解決方案已是基于^t帶的存儲系統(tǒng),其利用約為2:1的平均壓縮比 率的傳統(tǒng)算法來壓縮數(shù)據(jù)。有利地,基于磁帶的存儲系統(tǒng)使用可移 動磁帶盒帶(cartridge ),可以將其拿到裝置外的位置用于災(zāi)害恢復(fù)。 然而,恢復(fù)基于》茲帶的存儲系統(tǒng)中的數(shù)據(jù)的處理緩慢、復(fù)雜并且不 可靠。名為7>共因子分解(commonality factoring )的重復(fù)凄史據(jù)冊J除是 通過消除冗余數(shù)據(jù)來降低存儲需求的處理。重復(fù)數(shù)據(jù)刪除是基于磁 盤的數(shù)據(jù)存儲系統(tǒng),其大大地降低了的對磁盤空間的需求。然而, 包括重復(fù)刪除方法的基于磁盤的數(shù)據(jù)存儲系統(tǒng)并不能輕易地被導(dǎo) 出到可移動介質(zhì)。為了將經(jīng)重復(fù)刪除的數(shù)據(jù)導(dǎo)出到可移動介質(zhì),必 須首先將經(jīng)重復(fù)刪除的數(shù)據(jù)再次形成為其原始形式然后再被記錄 在可移動磁帶盒帶上,因此,需要比經(jīng)重復(fù)刪除的版本更多的存儲 空間。
重復(fù)數(shù)據(jù)刪除是資源密集處理,將其在軟件中作為公共因子分 解解決方案的一部分來4丸行。由于該密集計算處理,^吏用高端的線 程多核/多處理器服務(wù)器來提供對于執(zhí)行該重復(fù)刪除處理來說充分 的性能。通過使用多核/多處理器服務(wù)器所獲得的性能總量取決于所 使用的算法和其在軟件中的實現(xiàn)。然而,這些多核/多處理器服務(wù)器 的總費(fèi)用和功耗較高。
發(fā)明內(nèi)容
在多種實施例中,描述了用于在可移動存儲介質(zhì)上存儲數(shù)據(jù)的 乂>共因子分解的系統(tǒng)和方法。這些系統(tǒng)和方法允"i午以高歲文方式將高 度壓縮的數(shù)據(jù)(例如,利用包括重復(fù)刪除的歸檔或備份方法所壓縮 的數(shù)據(jù))存儲在便攜式存儲裝置上(諸如,可移動存儲盒帶)。該 方法包括將數(shù)據(jù)(例如,用于備份的數(shù)據(jù)文件)分為多個唯一組 塊(chunk);以及基于這些唯一組塊來計算標(biāo)識符(例如,哈希標(biāo) 識符)。可以通過計算標(biāo)識符以及將其他J且塊的標(biāo)識符與之前所計 算的唯一組塊的標(biāo)識符進(jìn)行比較來識別冗余組塊。當(dāng)識別出冗余組
塊時,生成對于現(xiàn)存的唯一組塊的索引,乂人而可以相對于其他組塊 來重建該組塊,以使原始數(shù)據(jù)再現(xiàn)。該方法還包括將多個唯一組塊、 多個標(biāo)識符和/或多個索引中的一個或多個存儲在可移動存儲介質(zhì) 上。
在某些方面,可以使用硬件和/或軟件來加速該公共因子分解處 理。耳又決于實施例,可將加速石更件和/或軟件置于多個裝置中。例如,
用于組塊(chunking)和/或哈希(hash)功能的硬件和/或軟件可以 位于主4幾、可移動存儲裝置、可移動盒帶架(例如,插座)、以及 可移動存儲盒帶中的一個或多個。
在一個實施例中,公開了 一種用于利用可移動存儲盒帶存儲數(shù) 據(jù)的公共因子分解系統(tǒng)。該系統(tǒng)包括處理器、連接到處理器的擴(kuò)展 總線、以及連接到該擴(kuò)展總線的插座。將該插座配置為接納可移動 存儲盒帶。將擴(kuò)展模塊可拆卸地連接到擴(kuò)展總線。將該擴(kuò)展模塊配 置為將數(shù)據(jù)傳送到可移動存儲盒帶。該擴(kuò)展模塊包括組塊模塊和哈 希模塊。該組塊模塊被配置為將原始數(shù)據(jù)流分為多個組塊。將哈希 模塊以流水線方式連接到組塊模塊,從而對哈希模塊的輸入的至少 一部分包括來自組塊才莫塊的輸出。該口合希才莫塊一皮配置為確定每個組 塊是否p舉一以及向可移動存儲盒帶轉(zhuǎn)發(fā)確定為p眷一的組塊。
在另 一個實施例中,公開了 一種用于利用可移動存儲盒帶存儲 數(shù)據(jù)的公共因子分解方法。在一個步驟中,在可拆卸地連接到主機(jī) 的擴(kuò)展模塊處接收原始數(shù)據(jù)流。該擴(kuò)展模塊包括組塊模塊和哈希模 塊。以流水線架構(gòu)來配置哈希模塊和組塊沖莫塊,從而對哈希才莫塊的 輸入的至少一部分包括來自組塊才莫塊的輸出。在組塊才莫塊處,將原 始數(shù)據(jù)流分為多個組塊。向所述哈希模塊轉(zhuǎn)發(fā)這些模塊。該哈希模 塊計算所轉(zhuǎn)發(fā)的每個組塊的標(biāo)識符;存儲標(biāo)識符;并且基于標(biāo)識符
來確定每個組塊是否唯一。將標(biāo)識符和多個唯一組塊中的至少一個 轉(zhuǎn)發(fā)到可移動存儲盒帶。該可移動存儲盒帶包括存儲驅(qū)動器。
在又一實施例中,公開了 一種用于利用可移動存儲盒帶存儲數(shù) 據(jù)的公共因子分解的擴(kuò)展卡。該擴(kuò)展卡包括組塊模塊和哈希模塊。 該組塊模塊被配置為接收來自主機(jī)的原始數(shù)據(jù)流并將該原始數(shù)據(jù) 流分為多個組塊。該擴(kuò)展卡^皮配置為可拆卸地連接到主^^幾和可移動
存儲盒帶并將數(shù)據(jù)存儲在可移動存儲盒帶上。哈希模塊以流水線方 式連接到組塊模塊,從而對該哈希模塊的輸入的至少 一部分包括來
自組塊模塊的輸出。該哈希模塊被配置為接收來自組塊模塊的多 個組塊;計算所接收的每個組塊的標(biāo)識符;基于標(biāo)識符來確定每個 組塊是否唯一;并將唯一組塊存儲在可移動存儲盒帶上。
在下文中,根據(jù)所提供的詳細(xì)描述,本公開的更多應(yīng)用領(lǐng)域?qū)?變得顯而易見。應(yīng)當(dāng)了解,雖然簡述了各個實施例,但具體描述和 特定實例都^又旨在i兌明而不用來限至本發(fā)明的范圍。
圖1示出了數(shù)據(jù)存儲系統(tǒng)的實施例的框圖。
圖2示出了用于執(zhí)行公共因子分解的系統(tǒng)的實施例的框圖。
圖3示出了用于執(zhí)行7>共因子分解的系統(tǒng)的可替換實施例的框圖。
圖4示出了用于執(zhí)行公共因子分解的系統(tǒng)的可替換實施例的框圖。
圖5A、圖5B、和圖5C示出了用于執(zhí)行公共因子分解的數(shù)據(jù) 存儲系統(tǒng)的可替換實施例的示意圖。
圖6示出了用于在可移動數(shù)據(jù)盒帶上存儲數(shù)據(jù)的處理的實例的 流程圖。
在附圖中,類似的部件和/或特征可具有相同的參考標(biāo)號。此外, 可以通過在參考標(biāo)號之后加上破折號和用于區(qū)分類似部件的第二 標(biāo)號來區(qū)分相同類型的各個部件。如果在本說明書中僅使用了第一
參考標(biāo)號,則不管第二參考標(biāo)號如何,該描述適用于具有相同的第 一參考標(biāo)號的任何一個類似部件。
具體實施例方式
以下的描述僅僅提供了優(yōu)選的示例性實施例,并且不用于限定 本發(fā)明的范圍、可應(yīng)用性、和配置。確切地,優(yōu)選示例性實施例的 以下描述將能夠?qū)崿F(xiàn)優(yōu)選實施例的描述提供給本領(lǐng)域技術(shù)人員。應(yīng) 當(dāng)了解,在不背離所附權(quán)利要求闡明的精神和范圍的情況下,可以 對組成部分的功能和配置進(jìn)4于各種改變。
本公開大體涉及用于數(shù)據(jù)備份、存儲和存檔應(yīng)用的數(shù)據(jù)存儲系
統(tǒng)。其具體地涉及容納作為存儲介質(zhì)的硬盤驅(qū)動器(HDD)的新一 代可移動存儲盒帶。貫穿i兌明書,可以用HDD來描述存4諸介質(zhì), 但應(yīng)當(dāng)理解,可以可替換地使用閃存或固態(tài)盤(SSD)驅(qū)動器。
本發(fā)明的實施例集中于 一種系統(tǒng),用于將比4吏用傳統(tǒng)的 Lempel-Ziv ( LZ )壓縮方法所允許的凄t據(jù)更多的lt據(jù)存儲在單一的 存儲盒帶上。這通過實現(xiàn)公共因子分解(或,重復(fù)刪除)來實現(xiàn)。 具體地,才艮據(jù)本發(fā)明的系統(tǒng)4吏處理加速,乂人而以可與線性》茲帶開方文 (LTO )磁帶驅(qū)動器相竟?fàn)幍乃俣葋韴?zhí)行數(shù)據(jù)縮減而不需要高端服 務(wù)器來^U于此處理。
根據(jù)本發(fā)明的一個實施例,提供了 一種用于利用存儲盒帶存儲 數(shù)據(jù)的加速公共因子分解系統(tǒng)。該系統(tǒng)包括用于將原始數(shù)據(jù)流分為 多個組塊的組塊模塊。在組塊模塊中,將流水線操作和查詢表用于 優(yōu)化。該系統(tǒng)還包括p合希才莫塊,用于確定每個組塊是否唯一或是否 是之前所存儲的多個組塊中的任意組塊的副本。在由組塊模塊處理 了組塊的最后一個字節(jié)之前由該哈希模塊處理每個組塊的第一字 節(jié)來實現(xiàn)平行性。
在該實施例中,組塊才莫塊可包4舌用于Rabin "指鄉(xiāng)丈,,識別的部 或用于執(zhí)行滑動窗口檢驗和的部。此外,在該實施例中,該哈希模 塊可以包括用于信息摘要算法5 (MD5)哈希的部、用于安全哈希 算法-1 ( SHA-1 )哈希的部、以及用于安全哈希算法-2 ( SHA-2 )哈 希的部中的一個或多個。
根據(jù)本發(fā)明的另 一實施例,提供了另 一種用于利用存儲盒帶存 儲數(shù)據(jù)的加速公共因子分解系統(tǒng)。該系統(tǒng)包括上述的組塊模塊和哈 希才莫塊,并且還包括附加數(shù)據(jù)處理才莫塊。
在該實施例中,該附加數(shù)據(jù)處理模塊可以包括數(shù)據(jù)壓縮模塊、 加密模塊、及糾錯編碼(ECC)模塊中的一個或多個。此外,該數(shù) 據(jù)壓縮模塊可以包括用于執(zhí)行Lempel-Ziv Stac ( LZS )算法的部。 此外,加密模塊可以包括用于執(zhí)行三重數(shù)據(jù)加密標(biāo)準(zhǔn)(3DES )算法、 高級加密標(biāo)準(zhǔn)-128( AES-128 )算法、或高級加密標(biāo)準(zhǔn)-256( AES-256 ) 算法的部。
才艮據(jù)本發(fā)明的又一實施例,4是供了又一種用于利用存4諸盒帶存 儲數(shù)據(jù)的加速公共因子分解系統(tǒng)。該系統(tǒng)包括上述的組塊模塊、哈 希模塊、和附加數(shù)據(jù)處理模塊,并且還包括由附加數(shù)據(jù)處理模塊跟 隨的數(shù)據(jù)庫搜索模塊,數(shù)據(jù)庫搜索模塊用于基于來自哈希模塊的輸 出來才丸4亍組塊#:據(jù)庫的4叟索并且<義將唯一組塊傳遞到附加^:才居處 理模塊。目的是減少附加數(shù)據(jù)處理模塊的帶寬需求。
根據(jù)本發(fā)明的又一實施例,提供了又一種用于利用存儲盒帶存 儲數(shù)據(jù)的加速公共因子分解系統(tǒng)。該系統(tǒng)包括組塊模塊和相關(guān)聯(lián)模 塊,其中,利用并行的多條數(shù)據(jù)通路。目的是加速公共因子分解處理。在該實施例中,多條數(shù)據(jù)通路可以包括單個的數(shù)據(jù)流,通過在 不一定與由程序分組模塊所計算的組塊邊界對齊的位置處將數(shù)據(jù) 流截斷而將該凄t據(jù)流分裂為多個事例,其中,數(shù)據(jù)流的截斷部分的 大小是固定的或可變的。
首先參考圖1,示出了數(shù)據(jù)存儲系統(tǒng)100的實施例。該凄史據(jù)存 儲系統(tǒng)100可以包括主機(jī)102和可移動的驅(qū)動器插槽(drive bay ) 104。主4幾102包括處理器和擴(kuò)展總線。該擴(kuò)展總線連接到處理器 并且被配置為經(jīng)由標(biāo)準(zhǔn)接口將凄t據(jù)傳送至驅(qū)動器插槽104??梢苿?的驅(qū)動器插槽104可以包括可移動盒帶裝置110和可移動盒帶架 (holder) 106。主才幾102可以與可移動盒帶裝置110通4言i也連4妄。 作為實例,可移動盒帶裝置110到主機(jī)102的接口可以是小型計算 才幾系統(tǒng)4妄口 (SCSI)、光纖通道(FC)4妾口、以太網(wǎng)4妄口、高級技 術(shù)附件(ATA)接口的任一版本,或允許可移動盒帶裝置110與主 機(jī)102進(jìn)行通信的任何其他類型的接口 。盒帶架106可以是塑料插 座并且可以物理地安裝到可移動盒帶裝置110的電路板。盒帶架106 還可以包括彈出和鎖定4幾構(gòu)??梢苿哟鎯袔?08為凄t據(jù)存儲系統(tǒng) IOO提供了存儲能力,其中,存儲盒帶108可拆卸地連接到可移動 盒帶裝置110。還可以選擇性地將便攜式存儲盒帶108鎖定在盒帶 架106中。在可替換實施例中,可以通過接口電纜112使主機(jī)102 與盒帶架106通信地連4妄。
如將在下面多個實施例中詳細(xì)描述的,在以下多個位置中的一 個或多個位置處可以將公共因子分解功能實現(xiàn)為擴(kuò)展模塊1)在 存儲盒帶108中;2)在可移動盒帶裝置110中和盒帶架106外部; 以及3 )在主才幾102中。
如上所述,本發(fā)明識別之前已經(jīng)存^f諸的原始凄t據(jù)流中的重復(fù)部 分,從而可以存儲對該數(shù)據(jù)部分的索引來代替在重復(fù)部分本身。用 于才丸行該處理的多個步驟如下(1 )將原始凄t據(jù)流分為可以用于分
析冗余度的多個小組塊(數(shù)據(jù)部分)的步驟;(2)計算每個組塊的 標(biāo)識符的步驟;(3)通過搜索標(biāo)識符數(shù)據(jù)庫,而由于未在之前的組 塊中發(fā)現(xiàn)相同的組塊來確定每個組塊是否是唯一的步驟;以及(4) 組織唯一組塊、標(biāo)識符和相關(guān)聯(lián)的元數(shù)據(jù)從而可以再次生成原始數(shù) 據(jù)流的步驟。該原始數(shù)據(jù)流可以代表諸如音頻、視頻、文本的任何 形式的數(shù)據(jù)并且可以是多個文件或?qū)ο蟆?br>
上述處理的步驟(1)和(2)是處理器密集型的,因此適于對 其應(yīng)用石更件加速。同樣地,這些步艱《可以與作為整個^t據(jù)存〗渚處理 的 一部分的諸如傳統(tǒng)的凄t據(jù)壓縮和加密的其他lt據(jù)^修改步驟相結(jié) 合。按照集成方式來考慮所有這些步驟以提供最大化的系統(tǒng)吞吐量。
Rabin "指紋"識別是將輸入的數(shù)據(jù)流分為可用于冗余度分析 的淖交小的lt據(jù)組塊的方法。該方法具有^者如不呈現(xiàn)滾動的4交-驗和的 較簡單方法的易管理的統(tǒng)計屬性,但在多個實施例中可以使用任意 的程序分組算法。該方法可以在軟件中實現(xiàn)為公共因子分解方案的 一部分,為了加速這些產(chǎn)品的上市時間可以用成本和/或性能作為代 價來制造這些產(chǎn)品。4吏用最高端的多核/多處理器月良務(wù)器來4是供壽欠件 算法的充分的性能。替代在軟件中實現(xiàn)該方法,本發(fā)明的一個實施 例以使用硬件的解決方案來實現(xiàn)該方法,其利用較低的成本和較低 的功率損耗提供了增加的性能。在2007年7月6日提交的第 60/948,394號美國臨時專利申請中描述了按照流水線方式硬件實現(xiàn) Rabin "指紋,,識別方法的細(xì)節(jié)。通過以流水線方式實3見該石更4牛,可 以利用最小化的邏輯操作以合理的時鐘速率獲得較高的吞吐量。
Rabin "指紋"識別基本上是在一個數(shù)據(jù)流中每次單個字節(jié)對 多項式的操作。由于多數(shù)系統(tǒng)對與8比特字節(jié)邊界對齊的數(shù)據(jù)起很 好的作用,因此多項式才喿作的結(jié)果4又與每八比特相關(guān)。由于不考慮
中間計算,因此我們可以通過每次直接計算下個8比特的指紋值來 使計算最優(yōu)化。
可以對ft據(jù)的滑動窗口 (例如,緩沖陣列中的48個字節(jié))來 計算Rabin指紋。對于每次計算,用最新的字節(jié)來代替陣列中最舊 的字節(jié)。第一流水線階4殳(stage)用最新的字節(jié)替代最舊的字節(jié)并 且基于最舊字節(jié)來執(zhí)行查找,其提供了可用于從指紋中移除最舊的 字節(jié)的影響的值。接下來的流水線階段利用該輸入而從指紋中移除 最舊的數(shù)據(jù),然后使用另 一查詢表將該指紋與新的數(shù)據(jù)結(jié)合來生成 新的指紋。最后的流水線階|殳確定新的指紋的部分是否與用于確定 組塊邊界的預(yù)定4企-驗值相匹配并且#^驗該組塊大小是否適合最小/ 最大范圍內(nèi)。
利用Rabin "指紋"識別或諸如滑動窗口檢驗和的較簡單的方 法的組塊步驟的輸出是稱作組塊的ft據(jù)序列,可以對其進(jìn)4于分析來 確定是否其之前已經(jīng)被存儲系統(tǒng)存儲。高效地確定是否之前已經(jīng)存 儲該組塊的一個方法是對數(shù)據(jù)計算稱作p合希的單向函數(shù),其允許估文 出具有較高統(tǒng)計可能性的關(guān)于該數(shù)據(jù)是否是之前所存儲數(shù)據(jù)中的 任何數(shù)據(jù)的副本的確定。多種哈希算法(諸如MD5、 SHA-1以及 SHA-2族)可用于此目的。目標(biāo)是選擇一種算法,其具有統(tǒng)計上足 夠小的沖突偶然性,可以假設(shè)其不會產(chǎn)生錯誤匹配。該哈希算法能 夠才氐雄卩導(dǎo)致該沖突的有意或惡意嘗試。該,哈希算法應(yīng)該是安全的; MD5不能被真正地認(rèn)作安全而SHA-1具有某些潛在的弱點,但這 些弱點可以不應(yīng)用于某些應(yīng)用??梢?艮l居應(yīng)用來選擇p合希算法的類 型。此外,在某些實施例中,可以4吏用多種p合希算法。
接下來參考圖2,示出了用于執(zhí)行公共因子分解的系統(tǒng)200的 實施例的框圖。系統(tǒng)200包括直接連接到哈希模塊204的組塊模塊 202。在該實施例中,組塊才莫塊202執(zhí)行以下步驟利用Rabin "指 紋,,識別算法在lt據(jù)流206的滑動窗口上將原始的凄t據(jù)流206分為
較小組塊。其他實施例可使用不同的方法和算法,例如,滑動窗口 校驗和。再次參考圖1,在如下所討論的多個實施例中,可以根據(jù)
擴(kuò)展模塊的位置從不同的源來提供原始的數(shù)據(jù)流206。例如,在多 個實施例中,主才幾102、可移動盒帶裝置110、或存〗諸盒帶108都 可以將原始數(shù)據(jù)流206轉(zhuǎn)發(fā)到組塊才莫塊202。
組塊才莫塊202將稱作組塊206-1的凄t據(jù)字節(jié)序列連同對于每個 數(shù)據(jù)字節(jié)序列是否已到達(dá)組塊邊界的指示208 —起輸出。每個序列 指示208的末端也被稱作記錄末端或EOR。這當(dāng)EOR 208和凄史據(jù) 組塊206-1凈皮傳遞至p合希才莫塊204時允許它們同步。在該實施例中, 將組塊模塊202以流水線方式連接到哈希模塊204,從而對哈希模 塊204的至少一部分輸入包括了來自組塊4莫塊202的輸出。在一個 實施例中,在相同的組塊的最后字節(jié)被組塊模塊202處理之前,哈 希模塊204處理來自數(shù)據(jù)字節(jié)206-1序列的每個組塊的第一字節(jié)。 其他實施例可以獲耳又來自組塊才莫塊202的完整組塊然后通過p合希才莫 塊204來運(yùn)行該組塊。
哈希模塊204執(zhí)行以下步驟計算來自數(shù)據(jù)字節(jié)206-1序列的 每個組塊的標(biāo)識符,然后確定該組塊的p眷一性??梢酝ㄟ^爿尋標(biāo)i口、符 存^f諸到數(shù)據(jù)庫中并且搜索該標(biāo)識符的^:據(jù)庫來確定每個組塊是否 唯一來執(zhí)行該確定步驟。在發(fā)現(xiàn)該組塊唯一的情況下,將該唯一組 塊及其標(biāo)識符存4諸在可移動存4諸盒帶108上的組塊/ID lt悟庫220 中。表I示出了在將唯一的組塊流及其標(biāo)識符存4諸在可移動存^f諸盒 帶108上的組塊/ID數(shù)據(jù)庫220的實例。
表I存4諸在組塊/ID凄t據(jù)庫中的唯一組塊及標(biāo)識符的實例 唯一組塊 組塊0 組塊1 組塊2 ^組塊N
標(biāo)識符 ID 0 ID 1 ID 2 … ID N
如果組塊不唯一 ,則丟棄該冗余組塊并創(chuàng)建對存在的p舉一組塊 的索引,乂人而可以與其他J且塊相關(guān);也重新構(gòu)造該冗余組塊以重新生
成該原始數(shù)據(jù)流206。然后將對現(xiàn)存的唯一組塊的索引轉(zhuǎn)發(fā)至可移 動存儲盒帶108用于存儲在索引數(shù)據(jù)庫222中。在表II中示出了存 4諸在索引凄t據(jù)庫222中的索引流的實例。其他實施例可以包4舌用于 確定組塊唯一性的單獨的才莫塊。哈希才莫塊204輸出唯一組塊206-2 流、記錄末端指示208、每個p眷一組塊210的長度流、每個p舉一組 i夾212的p合希1直;;危、以及索引214 5危。
表II.存儲在索引數(shù)據(jù)庫中的索引的實例索引 Ref0 Refl Ref2... RefR,
R》N
參考圖3,示出了用于執(zhí)行公共因子分解的系統(tǒng)300的可替換 實施例的框圖。在系統(tǒng)300中,用于執(zhí)行數(shù)據(jù)處理的附加模塊308 -故直接連接到組塊才莫塊202和p合希才莫塊204結(jié)合的輸出端。其有助 于優(yōu)化多個模塊之間的數(shù)據(jù)流。該附加數(shù)據(jù)處理模塊308包括壓縮 模塊302和加密模塊304。將來自哈希模塊204的唯一組塊206-2 ;危、索引214 ;危、以及i己錄末端208 ;充發(fā)送到壓縮才莫塊302。壓縮 模塊302利用(例如)Lempel畫Ziv Stac ( LZS )算法來執(zhí)行唯一組 塊206-2的傳統(tǒng)的凄t據(jù)壓縮。
接下來將經(jīng)壓縮的唯一組塊306、索引214、以及記錄末端208 發(fā)送到加密才莫塊304。該加密才莫塊304可以〗吏用不同算法,例如, 三重數(shù)據(jù)加密標(biāo)準(zhǔn)(3DES )、高級加密標(biāo)準(zhǔn)-128/256( AES-128/256 )。 其他實施例還可以包4舌i者如糾4昔編碼;才莫塊(例如,Reed-Solomon ) 的附加數(shù)據(jù)處理模塊??梢詫碜怨DK的輸出(例如,唯一組 塊210的長度、哈希值212 )選擇性地傳送到壓縮模塊302和加密 模塊304。這將為每個模塊提供同步的輸出。類似圖3中所示系統(tǒng)的系統(tǒng)具有減少擴(kuò)展模塊和主系統(tǒng)存儲器 (當(dāng)數(shù)據(jù)未被處理時很可能存儲于此)之間的數(shù)據(jù)通信量的優(yōu)點。
表III示出了在LZS壓縮和7>共因子分解中的每一個均提供大約2:1 的數(shù)據(jù)縮減的情況下,總線帶寬中的節(jié)約的實例。在該實施例中, 將最終輸出數(shù)據(jù)速率描述為"D"。
表III.具有集成才莫塊的系統(tǒng)帶寬中的縮減的實例
對于4個獨立才莫塊的到^5更件的帶寬4D + 4D + 2D + D11D
對于4個獨立模塊的來自硬件的帶寬D + D2D
對于2個一半的到;更件的帶寬4D + 2D6D
對于2個一半的來自硬件的帶寬D
對于完全集成的到硬件的帶寬4D
對于完全集成的來自硬件的帶寬2D
可以/人表III中的示例性凄史字看出,完全集成的一個優(yōu)點是,人 系統(tǒng)存儲器到硬件加速模塊的帶寬上的縮減,與未集成的方法相比 其幾乎是三倍。同樣地,完全集成比部分集成的方法在帶寬上4是供
了更好的平衡,其在使用諸如PCI-Express的雙向串行接口時是有 優(yōu)勢的。
現(xiàn)在參考圖4,示出了用于執(zhí)4亍7>共因子分解的系統(tǒng)400的又 一實施例的框圖。該系統(tǒng)400包括組塊模塊202(未在此圖中示出)、 哈希模塊204-1、以及附加數(shù)據(jù)處理模塊308。該哈希模塊204-1包 括哈希計算器402、搜索模塊404、以及標(biāo)識符數(shù)據(jù)庫406。在該實 施例中,哈希計算器402執(zhí)行以下步驟計算每個組塊的標(biāo)識符而 不確定組塊的唯一性。因此,該,合希計算器402輸出數(shù)據(jù)組塊序列 206-3、記錄末端指示208-1、每個組塊210-1的長度、以及每個組 塊212-1的標(biāo)識符。搜索模塊404基于輸出自哈希計算器402的標(biāo) 識符212-1來執(zhí)行對數(shù)據(jù)庫406的搜索并將唯一組塊206-4傳送到 凄i據(jù)處理一莫塊308。
搜索模塊404包括足夠的緩沖來存儲來自哈希計算器402的輸
剩余部分。通過將搜索模塊404 —列式的(inline )放置在數(shù)據(jù)流中, 假設(shè)對于該實施例僅有平均一半的組塊是唯一的,則可以將數(shù)據(jù)通 路剩余部分的帶寬需求減少 一半。這可以簡化剩余的數(shù)據(jù)處理模塊 308的i殳計并且減少在擴(kuò)展才莫塊和系統(tǒng)其余部分之間的4妾口上的負(fù) 載。凄t據(jù)處理才莫塊308可以包括壓縮才莫塊和加密才莫塊。其他實施例 還可以包括糾一睹編碼沖莫塊。
在某些實施例中,以足夠高的速率運(yùn)行組塊模塊204的單一事 例以滿足系統(tǒng)的帶寬需求可能不是完全實際的。在這些情況下,具 象呈現(xiàn)組塊模塊204及相關(guān)聯(lián)模塊的多個事例來產(chǎn)生用于增加總帶 寬的多條平行數(shù)據(jù)通路(例如,在多個實施例中,可以有兩條、三 條、四條、五條、六條、七條、八條或更多條平行數(shù)據(jù)通路)可能 是有意義的。在4妄收并且處理多個輸入凄t據(jù)流206的情況下,可以 將這些數(shù)據(jù)流簡單地映射到數(shù)據(jù)通路的多個事例。在單一的數(shù)據(jù)流 206需要比單一事例提供的帶寬更寬的帶寬的情況下,可以在多個 事例之間劃開該凄t據(jù)流。對此最簡單的方法是將該凄t據(jù)流206截斷 為 一 個事例就好像已經(jīng)到達(dá)數(shù)據(jù)末端,并且將該數(shù)據(jù)重新定向到其 他事例。
該解決方案具有在截斷點處產(chǎn)生錯誤組塊邊界的副作用。由于 利用了相似的組塊可能已經(jīng)使用的不同的方法來確定該組塊的邊 界,因此最后的組塊未必與存在的組塊匹配。只要凄t悟流所截斷的 部分相對于各個組塊大小是大的,則其未必會導(dǎo)致公共因子分解的 效率中的明顯差異。例如,如果所截斷的部分是10MB而組塊平均 大小為8KB,則每個部分將大約是1250個組塊。這些組塊中l(wèi)又有 2個(最初的組塊和最后的組塊)可能受到截斷的影響,從而在一 個實施例中將僅降低0.16 %的效率。
接下來參考圖5A,示出了用于執(zhí)行公共因子分解的數(shù)據(jù)存儲 系統(tǒng)500-1的實施例的示意圖。在該實施例中,將公共因子分解實 現(xiàn)為存儲盒帶508-1內(nèi)的擴(kuò)展模塊502-1。該擴(kuò)展模塊502-1也被稱 作組塊和哈希模塊(C/H ),在該實施例中其代表用于公共因子分解 的首要引擎。可以通過硬件、軟件、或它們的組合來實現(xiàn)該擴(kuò)展模 塊502-1。對于硬件實現(xiàn)方式,可以在一個或多個專用集成電^各 (ASIC)、數(shù)字信號處理器(DSP)、數(shù)字信號處理裝置(DSPD)、 可編程邏輯裝置(PLD)、現(xiàn)場可編程門陣列(FPGA)、處理器、 控制器、微處理器、設(shè)計為執(zhí)行上述功能的其他電子單元、和/或它 們的組合內(nèi)實現(xiàn)該處理單元。其他實施例可以在一個位置中僅包括 C/H模塊的一個或多個部分而在另 一位置中包括其他部分。
首先經(jīng)由諸如SCSI (小型計算才幾系統(tǒng)接口 )、串行ATA (高級 4支術(shù)附件)、并行ATA、 SAS (串行連接SCSI)、 FirewireTM、以太 網(wǎng)、UWB、 USB、 BluetoothTM、 WiFi等任意標(biāo)準(zhǔn)接口將原始數(shù)據(jù) 流/人主才幾102發(fā)送到盒帶架506-1。該盒帶架506-1可包4舌電、光、 和/或無線接口來與存儲盒帶508-1交換lt據(jù)和指令。在盒帶架506-1 和存儲盒帶508-1之間的接口也可以使用以上類似的標(biāo)準(zhǔn)接口 。因 此,通過與盒帶架506-1的電、光、和/或無線連4妄器配對,可以經(jīng) 由盒帶架506-1將存儲盒帶508-1可拆卸地連接到可移動盒帶裝置 510-1。
在該實施例中,將擴(kuò)展模塊502-1并入可移動存4諸盒帶508-1 本身中,因此產(chǎn)生了自包含的基于磁盤的存儲盒帶。某些實施例可 以4吏用存儲盒帶508-1中處理器來I丸行C/H才莫塊。該處理器可以在 石更盤驅(qū)動器的內(nèi)部或外部^旦在任^T情況下都在盒帶內(nèi)。在一個實施 例中,對于硬盤驅(qū)動器的固件升級允許實現(xiàn)C/H功能性。在另一實 施例中,C/H模塊在硬盤驅(qū)動器外部且位于存儲盒帶508-1內(nèi)的電 路卡上。
參考圖5B,示出了數(shù)據(jù)存儲系統(tǒng)500-2的又一實施例的示意 圖。在該實施例中,公共因子分解被實現(xiàn)為可移動盒帶裝置510-2 內(nèi)的擴(kuò)展模塊502-2。首先通過在之前實施例中所述的任意標(biāo)準(zhǔn)接 口將要被存儲在存儲盒帶508-2上的數(shù)據(jù)從主機(jī)102發(fā)送到可移動 盒帶裝置510-2。接下來原始數(shù)據(jù)流進(jìn)入擴(kuò)展才莫塊502-2用于以可 移動盒帶裝置水平處理。接下來通過上述相似的標(biāo)準(zhǔn)接口將重復(fù)刪 除數(shù)據(jù)經(jīng)由盒帶架506-2發(fā)送到存儲盒帶508-2。
接下來參考圖5C,示出了用于利用存儲盒帶執(zhí)行公共因子分 解的數(shù)據(jù)存儲系統(tǒng)500-3的實施例的示意圖。在該實施例中,公共 因子分解實現(xiàn)為主機(jī)102-3內(nèi)的擴(kuò)展卡502-3。主機(jī)102-3包括擴(kuò)展 總線,其連4妄到主才幾的處理器。在多個實施例中,可將擴(kuò)展卡插入 計算才幾擴(kuò)展總線(例如,PCI、 ISA、 AGP總線)。在擴(kuò)展卡上的7> 共因子分解的實現(xiàn)可通過使用硬件和/或軟件來完成。 一旦通過主機(jī) 102-3中的組塊和哈希模塊502-3而實現(xiàn)了對數(shù)據(jù)執(zhí)行的公共因子 分解,則可以將經(jīng)重復(fù)刪除的#1據(jù)發(fā)送到盒帶架506-3并然后經(jīng)由 標(biāo)準(zhǔn)接口發(fā)送到存儲盒帶508-3。
接下來參考圖6,示出了用于在可移動存儲盒帶108上存儲數(shù) 據(jù)的處理600的實施例。處理600的所描述部分開始于框602,其 中,取決于擴(kuò)展模塊502位置而從多個源接收原始數(shù)據(jù)流。例如, 在多個實施例中,擴(kuò)展模塊502可以接收來自主機(jī)102、可移動盒 帶裝置510、盒帶架506、或存儲盒帶508的原始lt據(jù)。在某些實 施例中,該原始數(shù)據(jù)流可包括多個文件。在某些實施例中,沒有4姿 照可辨別方式將該流劃分為多個文件。
在框604處,使用組塊模塊202來將數(shù)據(jù)流分為數(shù)據(jù)組塊序列 并生成i己錄末端(EOR)來定義組塊邊界。 一旦禾呈序分組才莫塊202 產(chǎn)生了組塊,則處理繼續(xù)至塊606,其中,,哈希才莫塊204計算每個 組塊的標(biāo)識符。在多個實施例中,可以4吏用不同的算法,例如,信
息摘要算法(MD5)、安全哈希算法-1 (SHA-1)、以及安全哈希算 法-2 (SHA-2)。 4妻下來在一醫(yī)608處將標(biāo)識符存^f諸到標(biāo)識符lt據(jù)庫 楊中。
在才匡610處,由于在之前的組塊中未發(fā)現(xiàn)相同的組塊而#文出每 個組塊是否唯一的確定。在框610處,使用哈希模塊204通過搜索 標(biāo)識才尋凄t才居庫406來確定每個組塊是否p舉一。某些實施例在沖醫(yī)610 處可以使用單獨的搜索模塊404用于確定每個組塊的唯一性。在這 種情況下,搜索模塊404基于來自哈希計算器402的輸出來執(zhí)行對 標(biāo)識符凄t才居庫406的4叟索以確定每個組塊是否。舉一。如果該纟且塊。舉 一,則處理乂人框610流向選4奪沖匡612以沖丸4亍諸如壓縮、力。密、以及 糾錯編碼的附加數(shù)據(jù)處理。接下來在框614處將唯一的組塊及其相 關(guān)耳關(guān)的標(biāo)識符存^f諸在可移動介質(zhì)上。如果該組塊不唯一,則處理,人 框610走到框616,其中,冗余的數(shù)據(jù)組塊凈皮丟棄并且產(chǎn)生對存在 的唯一組塊的索引。4妄下來在框618處將對存在的唯一組塊的索引 轉(zhuǎn)發(fā)到可移動介質(zhì)用于存儲。然后處理返回到框602用于4丸行7>共 因子分解。
盡管在上文中已經(jīng)結(jié)合特定裝置描述了本發(fā)明的原理,但是應(yīng) 當(dāng)清楚地了解,該描述僅僅是作為實例,并不限定本發(fā)明的范圍。
權(quán)利要求
1.一種用于利用可移動存儲盒帶存儲數(shù)據(jù)的公共因子分解系統(tǒng),包括處理器;擴(kuò)展總線,連接到所述處理器;插座,連接到所述擴(kuò)展總線并且被配置為接納所述可移動存儲盒帶;以及擴(kuò)展模塊,可拆卸地連接到所述擴(kuò)展總線,其中,所述擴(kuò)展模塊被配置為將數(shù)據(jù)傳送到所述可移動存儲盒帶,所述擴(kuò)展模塊包括組塊模塊,被配置為將原始數(shù)據(jù)流分為多個組塊;以及哈希模塊,被配置為以流水線方式連接到所述組塊模塊,從而對所述哈希模塊的輸入的至少一部分包括來自所述組塊模塊的輸出,所述哈希模塊被配置為確定每個所述組塊是否唯一,以及向所述可移動存儲盒帶轉(zhuǎn)發(fā)確定為唯一的組塊。
2. 根據(jù)權(quán)利要求1所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 7〉共因子分解系統(tǒng),其中,在由所述組塊才莫塊處理每個所述組 塊的最后一個字節(jié)之前由所述哈希^t塊處理所述組塊的第一 字節(jié)。
3, 根據(jù)權(quán)利要求1所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 /^共因子分解系統(tǒng),其中,所述原始數(shù)據(jù)流包括多個文件。
4. 根據(jù)權(quán)利要求1所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解系統(tǒng),其中,所述哈希模塊被進(jìn)一步配置為計算所轉(zhuǎn)發(fā)的每個所述組塊的標(biāo)識符;存儲所述標(biāo)識符;以及 基于所述標(biāo)識符來確定所述組塊是否唯一。
5. 根據(jù)權(quán)利要求1所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 />共因子分解系統(tǒng),進(jìn)一步包括附加數(shù)據(jù)處理才莫塊。
6. 根據(jù)權(quán)利要求5所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解系統(tǒng),其中,所述附加數(shù)據(jù)處理模塊包括數(shù)據(jù)壓 縮模塊、加密模塊、和糾錯編碼模塊中的一個或多個。
7. 根據(jù)權(quán)利要求5所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解系統(tǒng),進(jìn)一步包括標(biāo)識符數(shù)據(jù)庫搜索模塊,用于 基于來自所述哈希模塊的輸出來執(zhí)行對標(biāo)識符數(shù)據(jù)庫的搜索 并且將所述p眷一組塊發(fā)送到所述附加ft據(jù)處理才莫塊。
8. 根據(jù)權(quán)利要求1所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解系統(tǒng),其中,并行的多條數(shù)據(jù)通路被采用。
9. 根據(jù)權(quán)利要求8所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解系統(tǒng),其中,所述多條數(shù)據(jù)通路包括單個的數(shù)據(jù)流,通過在不一定與 由所述程序分組模塊所計算的組塊邊界對齊的位置處將所述 數(shù)據(jù)流截斷而將所述數(shù)據(jù)流分裂為多個事例,其中,所述數(shù)據(jù) 流的截斷部分的大小是固定的或可變的。
10. 根據(jù)權(quán)利要求1所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的公共因子分解系統(tǒng),其中,所述哈希模塊被配置為使用信息摘要算法5 (MD5)哈希、安全哈希算法-1 (SHA-1)哈希、以 及安全p合希算法-2 (SHA-2) t合希中的一個或多個。
11. 一種用于利用可移動存儲盒帶存儲數(shù)據(jù)的公共因子分解方法, 包括在可拆卸地連接到主機(jī)的擴(kuò)展模塊處接收原始數(shù)據(jù)流, 其中,所述擴(kuò)展模塊包括組塊才莫塊,以及 哈希模塊,其中,以流水線架構(gòu)來配置所述p合希才莫塊和所述纟且 塊模塊,從而對所述p合希沖莫塊的輸入的至少一部分包括 來自所述組塊模塊的輸出;在所述組塊才莫塊處,將所述原始凄t據(jù)流分為多個組塊;以及向所述哈希模塊轉(zhuǎn)發(fā)多個所述組塊,其中,所述哈希模塊執(zhí)行以下步驟計算所轉(zhuǎn)發(fā)的每個所述組塊的標(biāo)識符;存4諸所述標(biāo)識符;以及基于所述標(biāo)識符來確定每個所述組塊是否唯一;以及將所述標(biāo)識符和多個p舉一組塊中的至少一個發(fā)送到 所述可移動存儲盒帶,其中,所述可移動存儲盒帶包括 存儲驅(qū)動器。
12. 根據(jù)權(quán)利要求11所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解方法,其中,所述標(biāo)識符存儲在低延遲存儲器中。
13. 根據(jù)權(quán)利要求11所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解方法,其中,所述組塊模塊和所述哈希模塊中的至少 一 個4立于所述主才幾夕卜告卩。展卡,包括組塊模塊,被配置為接收來自主機(jī)的原始數(shù)據(jù)流,以及將所述原始數(shù)據(jù)流分為多個組塊,其中,所述擴(kuò)展 卡^皮配置為可拆卸i也連4妄到所述主4幾和所述可移動存4諸盒 帶,以及將數(shù)據(jù)存^t在所述可移動存儲盒帶上;以及,哈希才莫塊,以流水線方式連^妄到所述組塊才莫塊,/人而對 所述p合希才莫塊的輸入的至少一部分包括來自所述組塊才莫塊的 輸出,其中,所述哈希才莫塊被配置為接收來自所述組塊才莫塊的多個所述組塊,計算4姿收到的多個所述組塊中的每個組塊的標(biāo)識付,基于所述標(biāo)識f尋來確定每個所述組塊是否p舉一,以及將唯一組塊存4諸在所述可移動存儲盒帶上。
14.
15. 根據(jù)權(quán)利要求14所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解的擴(kuò)展卡,其中,所述原始數(shù)據(jù)流包括多個文件。
16. 根據(jù)權(quán)利要求14所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解的擴(kuò)展卡,其中,并行的多條數(shù)據(jù)通路被采用。
17. 根據(jù)權(quán)利要求14所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解的擴(kuò)展卡,其中,在由所述組塊沖莫塊處理每個所 述組塊的最后一個字節(jié)之前由所述p合希才莫塊處理所述組塊的 第一字節(jié)。
18. 根據(jù)權(quán)利要求14所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解的擴(kuò)展卡,進(jìn)一步包括附加數(shù)據(jù)處理模塊。
19. 根據(jù)權(quán)利要求18所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解的擴(kuò)展卡,進(jìn)一步包括標(biāo)識符數(shù)據(jù)庫搜索^T莫塊, 用于基于來自所述哈希才莫塊的輸出執(zhí)4亍對標(biāo)識符數(shù)據(jù)庫的控: 索并且將所述唯一組塊轉(zhuǎn)發(fā)到所述附加凄t據(jù)處理才莫塊。
20. 根據(jù)權(quán)利要求18所述的用于利用可移動存儲盒帶存儲數(shù)據(jù)的 公共因子分解的擴(kuò)展卡,其中,所述附加數(shù)據(jù)處理模塊包括數(shù) 據(jù)壓縮模塊、加密模塊、和糾錯編碼才莫塊中的一個或多個。
全文摘要
本發(fā)明描述了用于在可移動存儲介質(zhì)上存儲數(shù)據(jù)的公共因子分解的系統(tǒng)和方法。這些系統(tǒng)和方法允許高度壓縮的數(shù)據(jù)以高效的方式存儲在便攜式存儲裝置上。該方法包括將數(shù)據(jù)分為多個唯一組塊并基于多個唯一組塊計算標(biāo)識符。通過計算標(biāo)識符并且將其他組塊的標(biāo)識符與之前計算的唯一組塊的標(biāo)識符進(jìn)行比較可以識別冗余組塊。當(dāng)識別出冗余組塊時,生成對存在的唯一組塊的索引,從而可以關(guān)于其他組塊來重新構(gòu)造該組塊以使原始數(shù)據(jù)再現(xiàn)。該方法還包括將一個或多個唯一組塊、標(biāo)識符和/或索引存儲在可移動存儲介質(zhì)上。取決于實施例,加速硬件和/或軟件可以位于多種裝置中。
文檔編號G06F3/06GK101339494SQ200810130549
公開日2009年1月7日 申請日期2008年7月7日 優(yōu)先權(quán)日2007年7月6日
發(fā)明者史蒂文·W·斯克羅格斯, 馬修·D·邦杜蘭特 申請人:普羅斯特系統(tǒng)公司