專利名稱:播種復(fù)制的制作方法
播種復(fù)制 本申請要求于2007年4月19日提交的、題目為SEEDINGREPLICATION(播種復(fù)制) 的美國臨時專利申請?zhí)?0/925, 624(代理人文案號DD0MP022+)的優(yōu)先權(quán),為了所有目的在 此將其引入以供參考。
背景技術(shù):
副本系統(tǒng)(r印lica system)存儲與源系統(tǒng)(originating system)相同的數(shù)據(jù)或 相同的數(shù)據(jù)的一部分。副本系統(tǒng)可以被用于當(dāng)在源系統(tǒng)中的數(shù)據(jù)損壞或丟失時恢復(fù)數(shù)據(jù)。 為了高效存儲,副本系統(tǒng)和源系統(tǒng)都可以是重復(fù)刪除系統(tǒng)(deduplicating system),在該 重復(fù)刪除系統(tǒng)中,進(jìn)入數(shù)據(jù)被分成段,并且如果該段已經(jīng)存儲在該系統(tǒng)中,則存儲對該已存 儲段的引用,而不是再次存儲該段。重復(fù)刪除典型地在該系統(tǒng)存儲數(shù)據(jù)所需要的空間量上 導(dǎo)致了相當(dāng)大的(例如,10X)減少。 當(dāng)首先開始從一個系統(tǒng)到另一個的復(fù)制時,如果副本是存儲與源系統(tǒng)相同的數(shù)據(jù) 的全部,那么任務(wù)是明確的從頭至尾傳輸所有的數(shù)據(jù)。由于僅使得文件重建能夠?qū)崿F(xiàn)的引 用和被重復(fù)刪除的段需要被發(fā)送,所以對于重復(fù)刪除系統(tǒng)來說這是高效的。然而,如果副本 是只存儲起源者系統(tǒng)(originator system)上數(shù)據(jù)的一部分,那么所存儲的段中的哪些需 要被發(fā)送給副本就不是顯而易見的。 一種簡單的解決方案是匆匆查閱針對要被存儲在副本 上的那部分?jǐn)?shù)據(jù)的段的引用列表,并且詢問副本系統(tǒng)涉及的段是否已經(jīng)被存儲。如果該段 還未存儲到副本系統(tǒng)上,于是該段才會被傳送。然而,對于列表中的每個引用而言這需要來 回流量(traffic),以及對于段的每個引用而言這需要由副本系統(tǒng)來檢查。通過重復(fù)刪除, 可能有比實際數(shù)據(jù)段多很多倍的這樣的引用。能夠在不產(chǎn)生流量和檢查段的每個引用的情 況下,對存儲在重復(fù)刪除的系統(tǒng)中的部分?jǐn)?shù)據(jù)進(jìn)行種子復(fù)制會是有益的。
當(dāng)將存儲在一個重復(fù)刪除的系統(tǒng)上的部分?jǐn)?shù)據(jù)一次性拷貝到第二重復(fù)刪除的系 統(tǒng)上時存在相似的情形。正被拷貝的那部分?jǐn)?shù)據(jù)所引用的所有段都需要被發(fā)送到該第二系 統(tǒng)。然而,如上所述,檢查每個引用以看看相應(yīng)的段是否要被發(fā)送到第二系統(tǒng),對于需要檢 查的每個引用引用而言這會在這兩個系統(tǒng)之間產(chǎn)生相當(dāng)大的流量。能夠在不產(chǎn)生流量和檢 查段的每個引用的情況下將存儲在重復(fù)刪除的系統(tǒng)上的部分?jǐn)?shù)據(jù)進(jìn)行拷貝會是有益的。
在以下的詳細(xì)說明和附圖中公開了本發(fā)明的各種實施例。 圖1是圖示用于播種復(fù)制的系統(tǒng)的實施例的框圖。 圖2A是圖示一部分?jǐn)?shù)據(jù)流或數(shù)據(jù)塊的實施例的框圖。 圖2B是圖示對一部分?jǐn)?shù)據(jù)流或數(shù)據(jù)塊進(jìn)行分段的實施例的框圖。 圖3是圖示文件引用的實施例的框圖。 圖4A是圖示數(shù)據(jù)結(jié)構(gòu)的實施例的框圖。 圖4B是圖示數(shù)據(jù)結(jié)構(gòu)的實施例的框圖。 圖4C是圖示數(shù)據(jù)結(jié)構(gòu)的實施例的框圖。
圖5是圖示用于播種復(fù)制的過程的實施例的流程圖。 圖6是圖示用于確定引用的段的過程的實施例的流程圖。 圖7A是圖示用于向數(shù)據(jù)結(jié)構(gòu)中進(jìn)行添加的過程的實施例的流程圖。 圖7B是圖示用于向數(shù)據(jù)結(jié)構(gòu)中進(jìn)行添加的過程的實施例的流程圖。 圖7C是圖示用于向數(shù)據(jù)結(jié)構(gòu)中進(jìn)行添加的過程的實施例的流程圖。 圖8A是圖示用于對段進(jìn)行復(fù)制的過程的實施例的流程圖。 圖8B是圖示用于對段進(jìn)行復(fù)制的過程的實施例的流程圖。
具體實施例方式
本發(fā)明能夠以眾多種方式予以實現(xiàn),包括實現(xiàn)為過程、設(shè)備、系統(tǒng)、物質(zhì)的組成、諸 如計算機(jī)可讀存儲介質(zhì)之類的計算機(jī)可讀介質(zhì)或者計算機(jī)網(wǎng)絡(luò),其中程序指令在光或通信 鏈路上被發(fā)送。在此說明書中,這些實現(xiàn)方式,或者本發(fā)明可以采取的任何其他形式,可以 被稱為技術(shù)。諸如處理器或存儲器之類的被描述為配置成執(zhí)行任務(wù)的元件,包括在給定時 間臨時被配置為執(zhí)行該任務(wù)的通用元件或者被制造成執(zhí)行該任務(wù)的特定元件這兩者??偟?來說,在本發(fā)明的范圍之內(nèi),可以改變所公開的過程中步驟的次序。 下面連同圖示本發(fā)明原理的附圖提供了對本發(fā)明的一個或多個實施例的詳細(xì)描 述。本發(fā)明是結(jié)合這樣的實施例予以描述的,但不限于任何實施例。本發(fā)明的范圍僅由權(quán) 利要求限定且本發(fā)明包括眾多可替換例、修改和等價物。為了提供對本發(fā)明的透徹理解,在 下面的描述中闡述了眾多特定細(xì)節(jié)。提供這些細(xì)節(jié)是出于舉例的目的,并且本發(fā)明在沒有 這些特定細(xì)節(jié)中的一些或者全部的情況下可以根據(jù)權(quán)利要求予以實踐。為清楚起見,對在 本發(fā)明有關(guān)技術(shù)領(lǐng)域中已知的技術(shù)資料未進(jìn)行詳細(xì)的描述,以便本發(fā)明不會被不必要地混 淆。 公開了播種復(fù)制。在重復(fù)刪除的系統(tǒng)中,針對源系統(tǒng)上共享公共段池的數(shù)據(jù)的一 部分的播種復(fù)制,要求確定使得這部分?jǐn)?shù)據(jù)的重建得以實現(xiàn)的所引用的段。可以生成包含 關(guān)于被引用段的信息的列表或數(shù)據(jù)結(jié)構(gòu)。對于起源者系統(tǒng)上所存儲的唯一段而言,可以使 用該列表或數(shù)據(jù)結(jié)構(gòu)對每個進(jìn)行檢查以看看是否該段已經(jīng)被該部分?jǐn)?shù)據(jù)引用。如果該段已 經(jīng)被引用,則將該段發(fā)送到副本系統(tǒng)。這允許源系統(tǒng)和副本系統(tǒng)之間來回的通信被減少到 段級而不是引用級。再者,就數(shù)據(jù)結(jié)構(gòu)來說,對存儲器的高效使用是可能的,這是因為向量 (vector)大大小于唯一的被引用段的列表。另外,在未與該副本系統(tǒng)進(jìn)行任何通信的情況 下在起源者系統(tǒng)上生成該列表或數(shù)據(jù)結(jié)構(gòu),從而節(jié)省了起源者系統(tǒng)和副本系統(tǒng)之間的通信 帶寬。 在一些實施例中,多個文件將涉及相同的存儲段,這是因為在這些不同的文件中 的段的內(nèi)容是相同的。這與在相同系統(tǒng)中存儲了相同文件的多個版本的情況(例如,當(dāng)在 一個系統(tǒng)上存儲了系統(tǒng)的多個快照時)形成對比,其中該相同文件的多個版本中的每一個 涉及相同段。文件可以實現(xiàn)文件系統(tǒng)中的文件、邏輯塊設(shè)備、虛擬磁帶盒、數(shù)據(jù)庫表,或者數(shù) 據(jù)存儲系統(tǒng)可以存儲的任何其它種類的數(shù)據(jù)對象或這樣的數(shù)據(jù)對象的一部分。
圖1是圖示用于播種復(fù)制的系統(tǒng)的實施例的框圖。在所示的實例中,存儲系統(tǒng)100 為圖1中由客戶端112和客戶端108所表示的客戶端存儲數(shù)據(jù)??蛻舳顺镜卮鎯ζ魍膺€ 可以具有本地存儲設(shè)備。例如,客戶端108具有存儲110,而客戶端112不具有本地存儲設(shè)備。存儲系統(tǒng)100或者使用內(nèi)部存儲設(shè)備102或者使用附連的外部存儲設(shè)備104來存儲數(shù) 據(jù)。 存儲系統(tǒng)100經(jīng)由網(wǎng)絡(luò)106與客戶端通信。網(wǎng)絡(luò)106包括下述中的一個或多個 局域網(wǎng)、廣域網(wǎng)、有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、因特網(wǎng)、光纖網(wǎng)絡(luò),或能夠?qū)崿F(xiàn)通信的任何其他適當(dāng) 網(wǎng)絡(luò)。存儲系統(tǒng)100也經(jīng)由網(wǎng)絡(luò)106與副本系統(tǒng)120通信。副本系統(tǒng)120包含內(nèi)部存儲設(shè) 備122,并連接到外部存儲設(shè)備124。 副本系統(tǒng)120存儲在存儲系統(tǒng)100上所存儲的數(shù)據(jù)的全部或者一部分。最初,存 儲系統(tǒng)100上所存儲的數(shù)據(jù)的全部或一部分通過經(jīng)由網(wǎng)絡(luò)106發(fā)送適當(dāng)?shù)臄?shù)據(jù)而被復(fù)制到 副本系統(tǒng)120上。在最初的播種之后,副本系統(tǒng)120通過從存儲系統(tǒng)100發(fā)送新的數(shù)據(jù)而 被更新。更新可以是持續(xù)的,,當(dāng)數(shù)據(jù)量超過一定大小時,或在其他適當(dāng)?shù)臅r間時,定期一陣 (in bursts)發(fā)送。就數(shù)據(jù)拷貝來說,最初的播種完成了該任務(wù)并且沒有后續(xù)更新。
在各種實施例中,存儲設(shè)備102,104,122和124包括單個存儲設(shè)備、多個存儲設(shè) 備、諸如圖書館系統(tǒng)或者網(wǎng)絡(luò)附連的存儲系統(tǒng)之類的用于存儲的系統(tǒng)或者任何其它適當(dāng)?shù)?存儲設(shè)備或者系統(tǒng),所述單個存儲設(shè)備諸如硬盤、磁帶機(jī)、半導(dǎo)體存儲器,所述多個存儲設(shè) 備諸如冗余陣列系統(tǒng)(例如獨(dú)立磁盤冗余陣列(redundant array of ind印endent disk, RAID))。 圖2A是圖示數(shù)據(jù)流或數(shù)據(jù)塊的一部分的實施例的框圖。在所示的實例中,示出了 數(shù)據(jù)流或數(shù)據(jù)塊的一部分200。數(shù)據(jù)流或數(shù)據(jù)塊的一部分200被諸如圖1的存儲系統(tǒng)100 之類的存儲系統(tǒng)接收并存儲在其上。數(shù)據(jù)流或數(shù)據(jù)塊的一部分200是從諸如圖1的客戶端 108或112之類的一個或者多個客戶端發(fā)送的。
圖2B是圖示對數(shù)據(jù)流或數(shù)據(jù)塊的一部分進(jìn)行分段的實施例的框圖。在所示的實 例中,數(shù)據(jù)流或數(shù)據(jù)塊的該部分被分段成多個分段,在圖2B中由202,204和206表示。通 過從該數(shù)據(jù)流或數(shù)據(jù)塊創(chuàng)建可以被用于重建該數(shù)據(jù)流或數(shù)據(jù)塊的多個段而對該數(shù)據(jù)流或 數(shù)據(jù)塊進(jìn)行分段。當(dāng)段被用于重建該數(shù)據(jù)流或數(shù)據(jù)塊時,段可以是重疊的、非重疊的或者是 重疊和非重疊的組合。使用文件邊界、目錄邊界、字節(jié)計數(shù)、基于內(nèi)容的邊界(例如,當(dāng)窗口 中數(shù)據(jù)的哈希值等于一值時)或確定邊界的任何其他適當(dāng)方法可以確定段邊界。數(shù)據(jù)塊、 數(shù)據(jù)流、文件或目錄的重建包括使用原始構(gòu)成該該數(shù)據(jù)塊、數(shù)據(jù)流、文件或目錄的一個或者 多個段的引用。諸如202、204和206之類的段被存儲在存儲設(shè)備210中,例如,像分別存儲 的段212、214和216。 圖3是圖示文件引用的實施例的框圖。在一些實施例中,文件引用可被用來從存 儲在諸如存儲設(shè)備210之類的存儲設(shè)備中的段重建文件。如所示的實例中,文件300可以 使用段引用302、304、306和308予以重建。文件310可以使用段引用312、314、316和318 予以重建。存儲偏移量以使得在存在重疊或者在文件的重建中僅段引用的一部分被使用的 情況下使用段引用能夠?qū)崿F(xiàn)文件的重建。對于數(shù)據(jù)塊、數(shù)據(jù)流、目錄或使得使用所存儲的段 能夠?qū)崿F(xiàn)它們的重建的任何其他數(shù)據(jù)單元而言,可以使用相似的引用結(jié)構(gòu)。在各種實施例 中,段引用包含基于內(nèi)容的引用、非基于內(nèi)容的引用、指紋或段的任何其他適當(dāng)?shù)囊谩?
圖4A是圖示數(shù)據(jù)結(jié)構(gòu)的實施例的框圖。在一些實施例中,圖4的數(shù)據(jù)結(jié)構(gòu)被 用于指示是否段被引用以確定該段是否應(yīng)當(dāng)被復(fù)制。在所示的實例中,數(shù)據(jù)結(jié)構(gòu)400包 含由401、402、404、406、408和410所表示的多個比特位。所述比特位被初始化為"0"。對于被引用的段,計算該段引用的多個哈希-例如,在圖4A中,該段引用的多個哈希由 Hash (SegRef) 412,414, 416和418來表示。哈希的值用于指向數(shù)據(jù)結(jié)構(gòu)400中的比特位。 所指向的比特位變?yōu)?l"。為了檢查段是否被指示要復(fù)制,計算對該段的引用的相同哈希, 并且如果所述哈希所指向的所有比特位都已經(jīng)被設(shè)為"l",那么假定該段要被引用并且因 此應(yīng)當(dāng)被復(fù)制。在一些情況下,段可能看起來要被引用,這是因為所有比特位都已經(jīng)被設(shè)為 "1",即使對該段的引用未被指示也是如此。當(dāng)所指示的其他段的組合碰巧將所有位都設(shè)為 "1 "時,這樣的沖突就會出現(xiàn)。選擇數(shù)據(jù)結(jié)構(gòu)的長度和哈希函數(shù)的數(shù)目來平衡數(shù)據(jù)結(jié)構(gòu)所需 的空間、哈希函數(shù)所需的計算量和對于段的數(shù)據(jù)結(jié)構(gòu)中可容忍的沖突數(shù)目。想要的是數(shù)據(jù) 結(jié)構(gòu)400能夠相當(dāng)精確地指示給定分段是否已經(jīng)被引用,以使幾乎沒有不需要復(fù)制的段被 復(fù)制。在各種實施例中,數(shù)據(jù)結(jié)構(gòu)400包括布隆(Bloom)過濾器或類似的基于哈希的數(shù)據(jù) 結(jié)構(gòu)。 圖4B是圖示數(shù)據(jù)結(jié)構(gòu)的實施例的框圖。在所示的實例中,數(shù)據(jù)結(jié)構(gòu)420可以用于 確定對段的不精確引用的列表。多個縮短的引用在圖4B中由422和424表示。縮短的引 用422是從段引用430創(chuàng)建的并置于數(shù)據(jù)結(jié)構(gòu)420中。縮短的引用424是從段引用432創(chuàng) 建的并置于數(shù)據(jù)結(jié)構(gòu)420中。例如,縮短的指紋,諸如m(例如24)字節(jié)段引用中的n(例如 4)字節(jié),可被用作不精確引用,其中m小于n。具有與該數(shù)據(jù)結(jié)構(gòu)的任何縮短的指紋的n個 字節(jié)相匹配的具有引用的段被加入到要從起源者系統(tǒng)發(fā)送到副本系統(tǒng)的段列表中。n字節(jié) 匹配的使用確保了必要的段被復(fù)制??赡艽嬖谝恍└郊佣我脖粋鬏?。另一方面,與全部(例 如24字節(jié))比較相對照,使用縮短的比較(例如4字節(jié))減少了存儲器空間。
圖4C是圖示數(shù)據(jù)結(jié)構(gòu)的實施例的框圖。在所示的實例中,數(shù)據(jù)結(jié)構(gòu)440可以用于 確定對段的精確引用的列表。在圖4C中由442和444來表示多個引用。引用442從段引 用450創(chuàng)建,并被置于數(shù)據(jù)結(jié)構(gòu)440中。引用444從段引用452創(chuàng)建并置于數(shù)據(jù)結(jié)構(gòu)440 中。精確的段引用的數(shù)據(jù)結(jié)構(gòu)可被用于在副本中進(jìn)行播種復(fù)制的過程中。
圖5是圖示用于播種復(fù)制的過程的實施例的流程圖。在一些實施例中,圖5的過 程被用于對諸如圖1的副本系統(tǒng)120之類的副本系統(tǒng)進(jìn)行播種。在一些實施例中,圖5的 過程被用于從一個系統(tǒng)向另一系統(tǒng)拷貝數(shù)據(jù)集。在所示的示例中,在500中,選擇要復(fù)制 的(一個或者多個)文件。在各種實施例中,通過下述來選擇(一個或者多個)文件使 用圖形用戶界面中對一個或多個文件的選擇、使用文件列表、通過在窗口中點(diǎn)擊、通過選擇 目錄、通過選擇多個目錄、使用目錄列表或者選擇文件的任何其他適當(dāng)方法。在各種實施例 中,為了負(fù)載平衡、滿足服務(wù)目標(biāo)的質(zhì)量或其他原因可以由系統(tǒng)自動確定(一個或者多個) 文件。在各種實施例中,要傳輸?shù)奈募梢詫崿F(xiàn)邏輯塊設(shè)備、虛擬磁帶機(jī)或其他類型的數(shù)據(jù) 集或這樣的數(shù)據(jù)集的各部分。在502中,對所選文件的文件元數(shù)據(jù)和段引用進(jìn)行復(fù)制,并且 將段引用加入到用于指示至少所確定段要被復(fù)制的數(shù)據(jù)結(jié)構(gòu)中。在一些實施例中,比那些 用于(一個或多個)所選定文件的重建所必須的段更多的段被指示為要復(fù)制。在506中, 選擇存儲在重復(fù)刪除系統(tǒng)上的第一候選段。在508中,確定數(shù)據(jù)結(jié)構(gòu)是否指示所選候選段 要被復(fù)制。如果所選候選段要被復(fù)制,則在510中,復(fù)制所選候選段并且控制行進(jìn)到512, 如果不是,則控制行進(jìn)到512。在512中,確定是否存在更多的候選段。如果存在,則在514 中,選擇下一個候選段,并且控制行進(jìn)到508。在一些實施例中,為了高效訪問,當(dāng)可能時, 在514中選擇的下一個候選段是存儲(例如,在重復(fù)刪除存儲系統(tǒng)中)的與先前段極接近的一個段。在512中,如果沒有更多的段了,則過程結(jié)束。在一些實施例中,存儲在重復(fù)刪 除存儲系統(tǒng)中的每個段都是用于復(fù)制的候選段。在一些實施例中,候選段基本上以他們在 重復(fù)刪除存儲系統(tǒng)中所處位置的次序被處理的。這可以通過減少訪問段所花費(fèi)的時間來獲 得效率(例如,成批地存取段或在下一個段存取之前不要求大量探求(seek))。
圖6是圖示用于確定被引用段的過程的實施例的流程圖。在一些實施例中,圖6 的過程被用于實現(xiàn)圖5中的502。在所示的實例中,在600中,選擇第一文件。在601中,復(fù) 制所選文件的元數(shù)據(jù)(例如,文件名,文件大小,文件創(chuàng)建日期等)。在602中,選擇所選文 件的第一引用。在604中,復(fù)制該引用。在606中,將段引用添加到用于指示至少確定的段 要復(fù)制的數(shù)據(jù)結(jié)構(gòu)中。在608中,確定是否存在更多的引用,如果有,則在610中,選擇下一 個引用并將控制行進(jìn)到604,如果沒有,則在612中,確定是否還有更多文件。如果有,則在 614,選擇下一個文件并將控制行進(jìn)到602。如果沒有則過程結(jié)束。 圖7A是圖示用于向數(shù)據(jù)結(jié)構(gòu)中進(jìn)行添加的過程的實施例的流程圖。在一些實施 例中,圖7A的過程被用于實現(xiàn)圖6中的606。在所示的實例中,在700中,確定是否所選引 用所涉及的段已經(jīng)在精確列表中。如果已經(jīng)存在,則過程結(jié)束。如果還沒有,則在702中,將 該段添加到該精確列表中。該精確列表包含對段的明確引用的列表。例如,段指紋或其他 類型的引用的列表。在各種實施例中,以下述方式生成該列表消除或不消除在該列表中出 現(xiàn)的重復(fù)段,和/或在當(dāng)在起源者存儲系統(tǒng)上存儲原文件時的時間或以后需要的時間。在 一些實施例中,該列表是按段引用來分類的。在一些實施例中,該列表是按存儲位置來分類 的。 圖7B是圖示用于向數(shù)據(jù)結(jié)構(gòu)進(jìn)行添加的過程的實施例的流程圖。在一些實施例 中,圖7B的過程被用于實現(xiàn)圖6的606。在所示的實例中,在710中,計算所選引用的多個 哈希。在712中,如果適當(dāng),使用多個哈希中的每一個來改變數(shù)據(jù)結(jié)構(gòu)。如果該位已經(jīng)被改 變(例如,設(shè)為"l"),則不改變該位。在一些實施例中,哈希值被用于確定數(shù)據(jù)結(jié)構(gòu)中的比 特位設(shè)為值"l"。數(shù)據(jù)結(jié)構(gòu)可用于確定段是否被引用。 圖7C是圖示用于向數(shù)據(jù)結(jié)構(gòu)進(jìn)行添加的過程的實施例的流程圖。在一些實施例 中,圖7C的過程被用于實現(xiàn)圖6的606。在所示的實例中,在720中,創(chuàng)建縮短的引用。在 722中,將該縮短的引用添加到該數(shù)據(jù)結(jié)構(gòu)中。在一些實施例中,該數(shù)據(jù)結(jié)構(gòu)是縮短的引用 的長列表。該數(shù)據(jù)結(jié)構(gòu)可用于確定段是否可能被引用了。 在一些實施例中,該數(shù)據(jù)結(jié)構(gòu)包括如圖6的過程所生成的要復(fù)制的段的列表。
圖8A是圖示用于復(fù)制段的過程的實施例的流程圖。在一些實施例中,圖8A的過程 被用于實現(xiàn)圖5的510。在所示的實例中,在800中,向副本系統(tǒng)發(fā)送段。在這個例子中,操 作假設(shè)是該副本系統(tǒng)還未具有該段的拷貝,和該段成功到達(dá)該副本系統(tǒng)。在一些實施例中, 接收到確認(rèn),該確認(rèn)指示已經(jīng)收到該段和/或已經(jīng)將該段存儲在該副本系統(tǒng)上(未示出)。
圖8B是圖示用于復(fù)制段的過程的實施例的流程圖。在一些實施例中,圖8B的過程 被用于實現(xiàn)圖5的510。在所示的實例中,在810中,向副本系統(tǒng)發(fā)送段標(biāo)識器。在812中, 接收該段是否被存儲在副本系統(tǒng)上的指示。在814中,確定是否該指示指示了該段被存儲 在該副本系統(tǒng)上。如果是,則過程結(jié)束。如果不是,則在816中,將該段發(fā)送給該副本系統(tǒng)。 在一些實施例中,接收到確認(rèn),其指示該段已經(jīng)被接收和/或已經(jīng)存儲在副本系統(tǒng)上(未示 出)。
8
雖然為了清楚理解的目的,前述實施例已經(jīng)描述了一些細(xì)節(jié),但本發(fā)明不限于所 提供的細(xì)節(jié)。存在很多實現(xiàn)本發(fā)明的可替換方法。所公開的實施例是舉例說明性的而非限 制性的。
權(quán)利要求
一種播種復(fù)制的方法,包括選擇存儲在重復(fù)刪除的存儲系統(tǒng)上要復(fù)制的一個或多個而非所有文件;確定由所選擇的一個或多個而非所有文件所涉及的一個或多個段;創(chuàng)建被用于指示至少所述一個或多個段是要被復(fù)制的數(shù)據(jù)結(jié)構(gòu);以及如果至少部分地基于所述數(shù)據(jù)結(jié)構(gòu)的指示指示了存儲在所述重復(fù)刪除存儲系統(tǒng)上的候選段是要復(fù)制的,則復(fù)制所述候選段。
2. 如權(quán)利要求1所述的方法,其中,使用基于內(nèi)容的引用來涉及所述一個或多個段。
3. 如權(quán)利要求1所述的方法,其中,使用非基于內(nèi)容的引用來涉及所述一個或多個段。
4. 如權(quán)利要求1所述的方法,其中,使用指紋來涉及所述一個或多個段。
5. 如權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)包括段的精確列表。
6. 如權(quán)利要求5所述的方法,其中,對段的所述精確列表進(jìn)行重復(fù)刪除。
7. 如權(quán)利要求5所述的方法,其中,對段的所述精確列表進(jìn)行分類。
8. 如權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)包括概率數(shù)據(jù)結(jié)構(gòu)。
9. 如權(quán)利要求8所述的方法,其中,所述概率數(shù)據(jù)結(jié)構(gòu)包括段的不精確列表。
10. 如權(quán)利要求8所述的方法,其中,所述概率數(shù)據(jù)結(jié)構(gòu)包括布隆過濾器。
11. 如權(quán)利要求8所述的方法,其中,所述概率數(shù)據(jù)結(jié)構(gòu)指示段一定沒被所選擇的一個 或多個而非所有文件引用。
12. 如權(quán)利要求8所述的方法,其中,所述概率數(shù)據(jù)結(jié)構(gòu)指示段可能被所選擇的一個或 多個而非所有文件引用。
13. 如權(quán)利要求1所述的方法,其中,創(chuàng)建所述數(shù)據(jù)結(jié)構(gòu)包括使用哈希函數(shù)。
14. 如權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)如段被存儲在所述重復(fù)刪除存儲系 統(tǒng)上那樣被構(gòu)建。
15. 如權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)響應(yīng)于播種副本系統(tǒng)的請求而被構(gòu)建。
16. 如權(quán)利要求1所述的方法,其中,復(fù)制所述候選段包括將所述段發(fā)送給副本系統(tǒng)。
17. 如權(quán)利要求1所述的方法,其中,復(fù)制所述候選段包括接收所述段被收到或被存儲 在副本系統(tǒng)上的確認(rèn)。
18. 如權(quán)利要求1所述的方法,其中,復(fù)制所述候選段包括向副本系統(tǒng)發(fā)送引用以看看 所述引用所涉及的段是否已存儲在所述副本系統(tǒng)上。
19. 如權(quán)利要求1所述的方法,其中,復(fù)制所述候選段包括如果所述段被指示為還未被 存儲在副本系統(tǒng)則發(fā)送所述段。
20. 如權(quán)利要求1所述的方法,還包括復(fù)制由所述一個或多個而非所有文件的一個或 多個引用。
21. 如權(quán)利要求20所述的方法,其中,可以至少部分地基于所述一個或多個引用,重建 所述一個或多個而非所有文件。
22. 如權(quán)利要求1所述的方法,其中,存儲在所述重復(fù)刪除存儲系統(tǒng)中的每個段都是用 于復(fù)制的候選。
23. 如權(quán)利要求1所述的方法,還包括以次序處理候選段使得所處理的至少兩連續(xù)段 極接近地存儲在所述重復(fù)刪除存儲系統(tǒng)中。
24. 如權(quán)利要求1所述的方法,還包括基本上以所述候選段在所述重復(fù)刪除存儲系統(tǒng) 中的位置的次序處理所述候選段。
25. —種用于播種復(fù)制的計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品被包括在計算機(jī)可讀 介質(zhì)中,并且包括用于下述的計算機(jī)指令選擇存儲在重復(fù)刪除的存儲系統(tǒng)上要復(fù)制的一個或多個而非所有文件; 確定由所選擇的一個或多個而非所有文件所涉及的一個或多個段; 創(chuàng)建用于指示至少所述一個或多個段要被復(fù)制的數(shù)據(jù)結(jié)構(gòu);如果至少部分地基于所述數(shù)據(jù)結(jié)構(gòu)的指示指示了存儲在所述重復(fù)刪除存儲系統(tǒng)上的 候選段要復(fù)制,則復(fù)制所述候選段。
26. —種用于播種復(fù)制的系統(tǒng),包括 處理器;以及與所述處理器耦合的存儲器,其中,所述存儲器被配置為向所述處理器提供指令,當(dāng)所 述指令執(zhí)行時促使所述處理器選擇存儲在重復(fù)刪除的存儲系統(tǒng)上要復(fù)制的一個或多個而非所有文件; 確定由所選擇的一個或多個而非所有文件所涉及的一個或多個段; 創(chuàng)建用于指示至少所述一個或多個段要被復(fù)制的數(shù)據(jù)結(jié)構(gòu);如果至少部分地基于所述數(shù)據(jù)結(jié)構(gòu)的指示指示了存儲在所述重復(fù)刪除存儲系統(tǒng)上的 候選段要被復(fù)制,則復(fù)制所述候選段。
全文摘要
本發(fā)明公開了一種播種復(fù)制方法。選擇存儲在重復(fù)刪除的存儲系統(tǒng)上要被復(fù)制的一個或多個而非所有文件。確定由所選擇的一個或多個而非所有文件所涉及的一個或多個段。創(chuàng)建用于指示至少所述一個或多個段要被復(fù)制的數(shù)據(jù)結(jié)構(gòu)。如果至少部分地基于所述數(shù)據(jù)結(jié)構(gòu)的指示指示了存儲在所述重復(fù)刪除存儲系統(tǒng)上的候選段要被復(fù)制,則復(fù)制所述候選段。
文檔編號G11C7/10GK101707884SQ200880012226
公開日2010年5月12日 申請日期2008年4月9日 優(yōu)先權(quán)日2007年4月19日
發(fā)明者R·H·帕特森 申請人:數(shù)據(jù)域公司