專利名稱:用于對經重復刪除的數據進行復制的方法和系統的制作方法
技術領域:
本發明總體上涉及計算機,并且更具體地涉及用于在計算存儲環境中對經重復數 據刪除的(deduplicated)數據進行復制的裝置、方法和計算機程序產品實施方式。
背景技術:
重復數據刪除系統可以使各種邏輯數據存儲實體(諸如,文件、數據對象、備份圖 像、數據快照或虛擬盒式磁帶)具體化。通常需要將這種數據存儲實體從其原始站點向遠 程站點復制。復制的數據實體增強了數據的可用性和容錯能力。越來越需要這種容錯和廣 泛的可用性。盡管若干已有方法可以用于執行數據復制,并且具體地,用于執行經重復數據 刪除的數據實體的復制,但是這些方法都伴隨有局限性,這些局限性會負面影響復制效率、 系統性能和數據一致性;需要附加的開銷;或者上述的組合。
發明內容
重復數據刪除是指針對冗余數據的精簡和/或消除。在重復數據刪除過程中,數 據的重復拷貝被精簡或消除,從而分別留下數據少量的冗余拷貝或者數據的單個拷貝。使 用重復數據刪除過程帶來各種益處,諸如減小了所需存儲容量并增大了網絡帶寬。歸因于 這些和其他益處,近些年,重復數據刪除已成為計算存儲系統中非常重要的技術領域。提供 重復數據刪除功能性的挑戰包括這些方面,諸如,在通常大型存儲庫中高效地找到重復的 數據模式,以及利用經重復數據刪除的存儲有效形式來存儲該數據模式。鑒于現有技術目前的狀態,需要一種用于對經重復數據刪除的數據進行復制的機 制,其滿足高效復制過程的所有要求,同時避免了現有方法的局限性,由此改進了用于對經 重復數據刪除的數據進行復制的現有方法。因此,提供了用于對經重復數據刪除的數據進 行復制的各種實施方式。在一個這種實施方式中,僅作為示例,提供了一種用于使用處理器 設備對經重復數據刪除的數據進行復制的方法。在源庫中創建的經重復數據刪除的數據塊 被指派以全局塊標識(id),該標識在包括源庫在內的網格集合中是唯一的。全局塊id是使 用網格集合的包含網格、源庫和塊的至少一個唯一標識值生成的。全局塊id從源庫向目標 庫傳輸。如果目標庫確定該全局塊id與位于該目標庫中經重復數據刪除的數據的已有塊 相關聯,則該目標庫在隨后的復制過程期間不會接收該塊。除了上述示例性方法實施方式以外,提供了其他示例性系統和計算機產品實施方 式,并帶來了相關優勢。
為了容易地理解本發明的優勢,將通過參考附圖中示出的特定實施方式來給出以 上簡要描述的本發明的更具體描述。應當理解,在附圖描繪了本發明的實施方式,而并不由 此用來限制其范圍的條件下,將通過使用附圖、利用附加的特定性和細節來描述和說明本 發明,其中
圖1示出了本發明的諸方面可以在其中實施的示例性計算環境;圖2示出了全局塊標識(ID)的示例性結構;圖3示出了用于提供在源庫與目標庫之間對經重復數據刪除的數據進行復制的 示例性結構;圖4示出了用于在源庫與目標庫之間對經重復數據刪除的數據進行復制的示例 性方法;圖5示出了用于在源庫與目標庫之間對經重復數據刪除的數據進行復制的附加 示例性方法,其包括對經重復數據刪除的數據進行處理;以及圖6示出了在諸如圖1所示計算環境的計算環境中、包括處理器設備的示例性計 算設備。
具體實施例方式現在轉到圖1,描繪了計算環境中數據存儲系統(例如,虛擬磁帶系統)的示例性 架構10。架構10向本地主機18和20提供存儲服務,以及向遠程數據存儲系統提供復制數 據,如所示。與存儲設備14通信的本地存儲系統服務器12通過包括部件(諸如,光纖通道 交換機16)的網絡與本地主機18和20連接。光纖通道交換機16能夠例如執行針對磁帶 設備的命令(諸如,小型計算機系統接口(SCSI)命令)。本領域技術人員應當理解,架構 10可以包括各種存儲部件。例如,存儲設備14可以包括傳統硬盤驅動(HDD)設備,或者可 以包括固態驅動(SSD)設備。本地存儲系統服務器12通過網絡22與遠程存儲系統服務器24連接。遠程服務 器24與本地連接的盤存儲設備26通信;以及經由另一網絡和網絡部件28 (諸如,光纖通道 交換機28)與本地連接的主機30和32連接。網絡22可以包括各種網絡拓撲,諸如廣域網 (WAN)、局域網(LAN)、存儲區域網(SAN)和其他配置。類似地,交換機16和28可以包括其 他類型的網絡設備。如前所述,架構10向本地主機提供本地存儲服務,以及向遠程數據存儲系統提供 復制數據(由使用箭頭34的數據復制功能性指示)。如將要描述的,本發明的各種實施方 式和請求保護的主題可以實現在架構(諸如架構10)上。例如,在一個實施方式中,盤存儲 設備14可以是經重復數據刪除的存儲系統的部分,用于存儲經重復數據刪除的數據實體。 經重復數據刪除的數據實體繼而可以經歷數據復制過程34,借由該過程,經重復數據刪除 的數據實體在遠程盤存儲設備26上得以復制。這些過程將在下文進一步描述。這種將以經重復數據刪除的形式駐留在經重復數據刪除的存儲系統內的數據實 體向遠程重復數據刪除存儲系統進行復制的過程,從源系統和目的地系統二者上的處理時 間和存儲要求的角度看來應該是高效的,并且應當可以利用重復數據刪除存儲系統的特點 來促進這種效率。高效復制過程應當解決以下考慮(1)復制的數據實體應當以存儲高效的經重復 數據刪除的形式存儲在目標存儲系統中,(2)復制過程所需的網絡帶寬應當最小化,(3)目 標存儲系統內的復制實體的數據應當可用于針對在目標系統上處理的數據的重復數據刪 除,(4)復制過程應當確保復制數據實體的源拷貝與目標拷貝之間的完全一致性(即,復制 數據實體的源拷貝與目標拷貝之間存在差異的概率應當為0),以及(5)源存儲系統和目標存儲系統可以具有不同的結構和布局。存在用于數據復制的若干方法,其可以用來設計和實現重復數據刪除存儲系統的 復制機制。對于使用數學上較強的摘要(例如,消息摘要(MD)和安全哈希算法(SHA)哈 希函數集)、基于數據分段的內容來標識、存儲和取回數據分段的重復數據刪除系統而言, 這些摘要值也可以用于復制機制。可以通過在源系統與目標系統之間交換將要復制的數據 的這種摘要值來實現帶寬減小,此外,復制數據的摘要值可以用于目標側的重復數據刪除 過程。然而,使用這種方法會使復制過程經受數據的源拷貝和復制拷貝之間的不一致性概 率不為零,這是因為依賴的是摘要值而不是實際的數據。此外,存在這樣的重復數據刪除系 統,其不依賴于數學上較強的摘要,并且針對這樣的重復數據刪除系統而言,實現這種復制 方法會帶來存儲的顯著開銷和這種附加值的使用。盤復制通常基于從源設備到其目標設備傳播寫入操作。同步復制表示這樣的情 境,其中僅當所有目標設備確認了寫入操作時,才認為源設備上的寫入操作完成。這一方法 保證了源設備與目標設備之間的完全一致性。但是,同步復制機制通常降低了性能。備選 地,異步復制涉及這樣的情境,其中只要本地操作完成,就認為源設備上的寫入操作完成。 寫入操作的復制是在后臺異步執行的。這一方法改進了性能;問題在于最近的寫入操作可 能在源設備故障的情況下丟失。在盤復制方法中,由于復制的是物理寫入操作,其特點在 于,該寫入操作所影響的源設備上的塊的物理位置,所以在相對于源設備的目標設備的結 構和布局上施加了約束。另外,由于盤復制將在重復數據刪除系統的軟件層以下使用,這樣 的機制不支持僅處理特定于應當復制的數據實體(以其邏輯上穩定的形式)的塊,由此可 能復制額外的不相關的塊,并且因此增加了復制所需的系統資源(網絡帶寬和存儲二者)。 更高效的是集成在重復數據刪除系統軟件層內的機制,給定要復制的特定數據實體,其知 道應當被復制的特定相關數據塊。事務性數據的復制通常基于源系統將更新寫入日志,并繼而向目標系統復制寫入 日志的數據。目標系統確認接收到復制的更新,由此允許進行后續更新的復制。還存在這 樣的協議,其支持經由多個存儲系統而不是一個存儲系統來對數據實體執行更新。此類別 的方法通常在數據庫系統中使用。然而,在重復數據刪除存儲系統(其可能不是事務性的) 的上下文中,可能沒有要復制的更新日志,因此這一方法并不適用。此外,由于這種更新的 日志通常可能與比應當復制的數據實體大或者以其他方式不同的數據實體相關聯,所以可 能復制額外的不相關塊,由此增加了復制所需的網絡帶寬和存儲資源。下文描述的實施方式提供了一種用于對經重復數據刪除的數據進行復制的新方 法,其滿足高效復制過程的上述所有考慮,同時避免前述已有方法的局限性,由此改進了用 于對經重復數據刪除的數據進行復制的已有方法。在一個示例中,所示實施方式的機制可 以針對重復數據刪除存儲系統,其將所存儲的經重復數據刪除的數據劃分成大小可變的塊 并實現存儲效率,這是通過給定在先標識重復出現的數據模式(經由任何適當的方法),重 復參考包含這種重復出現的數據模式的部分的經重復數據刪除的數據塊而實現的。貫穿下文描述和請求保護的主題,描述屬于所示實施方式的下述術語。“庫”意在 指示這樣的存儲,其與單個或若干處理器相關聯,并且其數據內容以經重復數據刪除的形 式存儲。庫可以具有虛擬存儲的諸多方面。備選地,庫可以具有對應于物理存儲的諸多方 面,或者可以包括物理和虛擬存儲二者的諸多方面。“網格”意在指示庫的集合,其中庫的數據實體可以被復制到網格中的每個其他庫。“網格集合”意在指示所有網格的集合,其中庫 可以在網格集合中的網格之間遷移。庫可以在任意給定時間被指派給單個網格。通過從網 格中的遠程源庫復制的方式,或者通過從本地源接收傳入數據(例如,備份流)的任何其他 支持方式,可以將數據流式傳輸至庫中。如將貫穿全文所見,所示實施方式提供了為在庫中創建的經重復數據刪除的數據 的每個新塊(即,這樣的塊,已經確定了其數據對于庫而言是新的)指派在網格集合中唯一 的標識值。通過將包含網格、庫和塊的唯一標識值組合,生成這種唯一的塊標識(這將在下 文描述)。此唯一的塊標識具有促進諸如下文的高效復制過程的特性。首先,盡管塊標識唯 一地標識塊的數據內容,但是其不以概率論方式(諸如,摘要函數)依賴于塊的數據內容。 因此,塊標識基于這些標識值消除了在修剪重復出現的數據塊期間的任何錯誤匹配,并且 針對數據損壞提供了完全的安全性。第二,塊標識獨立于塊在庫中的物理位置,由此避免了 對源庫和目標庫的結構和布局的任何約束。第三,塊標識值永不重復利用。結果,塊標識值 的生成和管理是簡單的,并且消除了陳舊塊引用的可能性。唯一的塊標識值用于在所有復制過程中標識數據塊的重復出現,由此增強了這些 過程的效率(這將在下文描述)。這些值從源庫向目標庫傳輸。存儲被指派有唯一標識值 B的塊的目標庫不會在復制期間再次接收具有相同唯一標識值B的塊,而是會重復使用已 經位于存儲中的相同塊。除了指派和傳輸唯一塊標識值以外,所示實施方式還提供了這樣的機制,借由該 機制,針對每個塊或塊集合,支持重復數據刪除的相關聯表征也被傳輸到目標庫,并且插入 到目標庫內的重復數據刪除索引中。所使用的重復數據刪除方法和相關聯的數據表征可以 是本領域技術人員公知的任何類型。在一個實施方式中,重復數據刪除表征構成了與所使 用的重復數據刪除方法結合使用的重復數據刪除索引的部分。針對復制的每個文件,例如, 向目標庫傳輸重復數據刪除索引的匹配部分(作為重復數據刪除表征)。在一個實施方式 中,重復數據刪除索引可以包括用于將文件數據的新分段與文件數據的舊分段進行匹配的 數學計算。在其他示例中,重復數據刪除索引可以包括相關聯文件數據的塊的哈希值索引。將重復數據刪除表征嵌入在目標庫中支持對流式傳輸至目標庫中的傳入數據的 重復數據刪除過程,以便在該庫中找到適當的數據以用于重復數據刪除目的。即,塊B在傳 入數據流中到達目標庫內,并且其與另一塊B類似或者相同,此另一塊B已在之前到達復制 的數據實體內,其將被考慮用于針對塊B的重復數據刪除,并且將作為對塊B的參考而存儲 在目標庫中。鑒于上文,所示實施方式支持實現高效復制過程,并且如下解決了高效復制的之 前五個方面。首先,復制的數據實體以存儲高效的經重復數據刪除形式存儲在目標存儲系 統中,而無需除傳輸所需數據塊(已經是經重復數據刪除的形式)以外的任何進一步處理。 經重復數據刪除的塊可以以進一步壓縮或以其他方式重新布置的形式(例如,加密的)存 儲,并且在復制過程期間,源庫或目標庫都無需執行解碼操作的提取。塊從源庫向目標庫傳 輸,并且以與其在源庫中的保存形式一樣的形式存儲在目標庫中。第二,數據實體的復制過程所需的網絡帶寬可以通過僅傳輸尚未存在于目標庫中 的經重復數據刪除的數據塊而得以最小化。第三,目標庫內復制實體的數據可用于針對在 目標庫上處理的數據的重復數據刪除,這借助于傳輸經重復數據刪除的數據塊和其支持重復數據刪除的表征。第四,復制方法確保復制數據實體的源拷貝和目標拷貝之間的完全一 致性。第五也是最后一點,源庫和目標庫可以具有不同結構和布局。在庫中創建的經重復數據刪除的數據的每個新塊被指派有標識值,其在網格集合 中是唯一的。在一個實施方式中,可以使用以下方法生成唯一的塊標識。第一,計算唯一的 網格標識(在此稱為“網格id”)。在一個實施方式中,這可以通過遞增由與網格集合對應 的且促進該網格集合內網格生成的軟件實體(標記為網格集合管理器)所維護的網格id 變量的值來實現。備選地,用戶可以指派唯一的網格id。庫是獨立于網格創建的,并且繼而可以被指派給網格,并且進一步在同一網格集 合中于網格之間遷移(在任何給定時間,庫可以與單個網格相關聯)。響應于將庫指派給網 格,向庫指派唯一的“庫id”,該“庫id”是通過遞增由與網格對應的且促進庫附屬于該網格 的軟件實體(標記為網格管理器)所維護的庫id變量的值而計算的。備選地,用戶可以指 派唯一的庫id。唯一的“塊id”是通過遞增由與庫對應的且促進該庫內的塊的分配的軟件 實體(標記為庫管理器)所維護的塊id變量的值而計算的。如上所述的對應于網格集合、網格和庫的軟件實體可以按照本領域技術人員的預 期實現。例如,特定的軟件實體可以稱為“網格管理器”。網格管理器軟件可以輔助管理上 述各種id。例如,網格管理器可以確定是否已經指派了特定網格id,并且向新的網格指派 網格id。類似地,網格管理器或其他軟件實體可以管理和指派庫id和塊id。網格管理器 軟件可以結合其他存儲管理軟件實現,這也是本領域技術人員可以預期的。塊id與網格id和庫id的組合定義為給定塊的“全局塊id”(標記為GBID),并用 作該塊在網格集合中的唯一標識值。現在轉到圖2,其示出了 GBID 36的示例性數據結構。 GBID 36包含對應于特定網格的網格id 38、對應于特定庫的庫id 40和對應于特定塊的塊 id 42的組合。當分配了從本地處理的傳入數據流起源的、經重復數據刪除的數據的新塊時,還 分配新的GBID并將其指派給該塊。然而,當在復制過程期間接收到經重復數據刪除的數據 的新塊時,將從源庫接收的其GBID保存起來,并且還在目標庫中使用。GBID可以記錄如下。 第一,對于經由復制過程接收的塊,其GBID按照接收時的原樣記錄。對于經由庫內的本地 數據處理接收的塊,將其GBID記錄在庫中,使得其網格id組分和庫id組分設置為空值。注 意,在庫內,塊id組分支持對塊的唯一標識。響應于向目標庫傳輸了這種塊,向塊id組分 添加網格id組分和庫id組分的適當值以形成完整的GBID值。這使得網格之間的庫遷移 更加容易,因為在遷移庫時,沒有持久的塊級數據要修改。GBID各組分的值永不重復利用。因此,每個組分都定義得足夠大,以便容納至少某 一定義時間幀的連續處理。相關網格集合和網格的元數據維護在每個相關聯的庫中,使得 每個庫可以獨立于該網格集合和網格的元數據和軟件實體來處理通信。在一個實施方式中,軟件實體可以存儲這樣的標識文件,其具有與軟件實體負責 的每個網格有關的信息。此信息可以包括與網格內的某些庫和該庫內的某些塊有關的等價 信息。此信息可以包括前述網格id、庫id和塊id。此外,此信息可以包括與特定網格相關 聯的網際協議(IP)地址或特定網格的成員。出于冗余目的,標識文件可以存儲在多個位 置。在下文中,圖3示出了各種結構,其在上文被描述為并入到包括之前在圖1中所示存儲設備14和26的經重復數據刪除的存儲系統中。存儲設備14作為源設備14,而遠程設 備26作為目標設備26。源設備14包括網格集合44。示出了三個網格A、B和C (網格46、 48和50)。如所示,庫A(庫52)包含于網格46中。其他庫(諸如,庫B和/或庫C)可以 包含于網格46、包含于網格48、包含于網格集合44,或者可以與另一源14 一起定位和/或 相關聯,或者可以位于本領域技術人員可以預期的任何地方。如所示,塊A-C(塊58、60和 62)包含于庫52中。最后,GBID 64與塊58相關聯。通過復制過程34,將GBID 64通過網絡22向目標設備26傳輸。目標設備26包括 與針對源設備14在之前描述的結構類似和對應的各種結構,包括網格集合66、網格68、70 和72、庫74、塊80、82和84,以及GBID 64。本領域技術人員將會理解,盡管示出了若干網 格、庫、塊等,但是特定源和目標設備可以包括多個這些結構,并且此外,這些結構可以位于 任何其他地方。此外,盡管將GBID 64示出為包含于塊58和80中,但是這種示出的目的在 于方便示出GBID 64與這些塊相關聯。因此,本領域技術人員將理解,GBID 64可以在邏輯 上或者物理上位于經重復數據刪除的存儲系統內的另外的地方,或者任何其他地方。全局塊id用于在復制過程中標識塊的重復出現,因此節省了復制和存儲經重復 數據刪除的格式的數據(在源庫中這樣保存的,無需進一步處理)所需的帶寬。現在轉到 圖4和圖5,提供了用于源庫和目標庫之間的重復數據刪除處理和復制的示例性方法90和 122。本領域技術人員將會理解,方法90和122中的各種步驟可以以不同方式實現,以適合 于特定應用。另外,所描述的方法可以利用在計算存儲環境上操作的或以其他方式與之相 關聯的各種裝置實現,諸如,硬件、軟件、固件或其組合。例如,該方法可以部分或全部實現 為計算機程序產品,其包括存儲有計算機可讀程序代碼部分的計算機可讀存儲介質。計算 機可讀存儲介質可以包括盤驅動器、閃存、數字通用盤(DVD)、壓縮盤(CD)、固態設備(諸 如,固態驅動器(S SD))和其他類型的存儲介質。首先轉到圖4,給出了源設備14 (包含一個或多個源庫)和目標設備26 (包含一個 或多個目標庫)(也參見例如圖1)之間的示例性復制的框圖。方法90開始于步驟92,其中 定位源庫中存儲有復制的實體的數據的經重復數據刪除的存儲塊。在下一步驟中,向目標 庫傳輸這些塊的GBID值(步驟94)。目標庫接收這些GBID值,并使用GBID索引來本地搜 索這些id的存在。目標庫隨后將GBID值劃分成之前定位在目標庫中的值(已存在),和之 前未定位在目標庫中的值(之前不存在)(步驟96)。指定為之前不存在于目標庫上的GBID值被傳送回源庫(步驟98)。源庫加載與 該之前不存在的GBID值相關聯的塊的數據(步驟100)。源庫繼而將向目標庫傳輸的塊的 GBID值記錄在其GBID索引中(步驟102)。源庫將與之前不存在的id相關聯的塊的數據 以其存儲的形式(例如,壓縮的)向目標庫傳輸。一旦目標庫接收到數據,則目標庫遞增已有塊的參考計數(步驟106)、以塊被接 收的形式(在源庫中的保存形式)存儲所接收的(不存在)的塊,并且相應地遞增其參考 計數(步驟108)。在下一步驟中,目標庫將所接收塊的GBID值記錄在其GBID索引中(步 驟110)。繼而,將復制的數據的分段與容納這些分段的經重復數據刪除的存儲塊之間的映 射記錄在目標庫中(步驟112)。一旦記錄了映射,則目標庫向源庫傳輸數據已接收到并且已經執行了此類活動的 確認(步驟114)。響應于接收到確認,源庫定位與復制的數據實體相關聯的重復數據刪除表征(如前所述,可以是任何類型)(步驟116),并向目標庫傳輸復制的數據實體的重復數 據刪除表征(步驟118)。目標庫接收重復數據刪除表征,并將其本地記錄在搜索數據結構 中以進行重復數據刪除(步驟120)。方法90結束于目標庫向源庫發送接收到表征并已記 錄的附加確認(步驟122)。盡管圖4以框圖格式描繪了復制的示例過程,但是在這種復制之前可以發生涉及 由源庫接收傳入數據的附加過程。這歸因于此事實,即,新數據隨著計算存儲環境的操作而 持續地流式傳輸至經重復數據刪除的存儲系統。另外,涉及由目標庫讀取復制數據的過程 可以在這種復制之后發生。在下文中,除了前述復制過程之外,圖5還以流程圖形式提供了 這些過程的示例性說明。方法122開始(步驟124),其中基于存儲在庫中的數據的重復數據刪除表征、針對 庫中的已有數據對傳入數據進行了重復數據刪除(通過使用任何適當方法)。最后,將經重 復數據刪除的數據劃分成已經存在于庫中的塊和未存在于庫中的新塊(步驟126)。注意, 無論使用哪個重復數據刪除表征都可以與在庫內本地處理的傳入數據相關聯,或者與從其 他庫復制到該庫的數據相關聯,這將在下文詳述。還向庫添加傳入數據的重復數據刪除表 征,以用于其他傳入數據的重復數據刪除。對于存在于庫中的塊,其參考計數遞增。對于新的塊,(針對每個新的塊)生成新 的全局塊id (GBID),并且將新塊和其GBID (其中網格id組分和庫id組分在GBID內設置為 空值)存儲在庫中(步驟128)。將傳入數據的分段到容納這些分段的經重復數據刪除的存 儲塊的映射記錄在庫中。此映射支持在使用經重復數據刪除的塊存儲傳入數據流之后對該 傳入數據流的重建,以用于讀取目的。—旦傳入數據進行了如前所述的處理,則可以復制經重復數據刪除的數據。在源 庫中定位存儲復制實體的數據的經重復數據刪除的存儲塊,并將這些塊的GBID值向目標 庫傳輸(步驟130)。目標庫接收這些GBID值,并使用GBID索引來本地搜索這些id的存 在,隨后將這些id劃分成已存在的id和不存在的id (步驟132),以及將不存在的id傳送 回源庫。源庫加載與新的、不存在的id相關聯的塊的數據(步驟134)、將接收的不存在的 GBID記錄在其GBID索引中(步驟136),以及以其存儲的形式(例如,壓縮的)、將與不存在 的GBID相關聯的塊的數據向目標庫傳輸(步驟138)。如果與傳輸的數據相關聯的GBID之前被確定為已存在(步驟140),則目標庫在前 進到步驟150之前遞增相關聯的已有塊的參考計數(步驟142)。如果與所傳輸數據相關 聯的GBID之前被確定為新的(還是在步驟140中),則目標庫以塊被接收的形式(在源庫 中存儲的形式)存儲所接收的(不存在的)塊(步驟144),并相應地遞增其參考計數(步 驟146)。目標庫將所接收塊的新GBID值記錄在其GBID索引中(步驟148)。在下一步驟 中,復制的數據的分段到容納這些分段的經重復數據刪除的存儲塊的映射記錄在目標庫中 (步驟150)。在傳輸確認(步驟152)之后,源庫定位(步驟154)并傳輸與復制的數據實體相 關聯的經重復數據刪除的表征(還是任何類型)(步驟156)。目標庫接收經重復數據刪除 的表征,并在向源庫傳輸第二確認(步驟160)之前將其本地記錄在搜索數據結構中以用于 重復數據刪除(步驟158)。由于從源庫復制到目標庫的數據可用于針對目標庫中本地處理 的數據的重復數據刪除,因此本地處理的數據實體也可以使用最初經由復制從源庫接收的經重復數據刪除的塊而存儲在目標庫中。當將這種數據實體從目標庫向源庫復制時,容納 這些實體的諸部分的經重復數據刪除的塊(最初從源庫接收的)并未被傳輸回源庫,因為 響應于向目標庫傳送,其GBID值記錄在了源庫的GBID索引中。如前所指示的,在復制過程之后的點處,可以讀取目標庫中復制實體的數據。當 這發生時,目標庫取回前述復制的實體到經重復數據刪除的存儲塊的映射(步驟162)。基 于上述映射,將適當的存儲塊加載至存儲器中,以及從這些塊取回適當的數據分段(步驟 164)。方法122繼而結束(步驟166)。在有些實施方式中,可以經由復制過程從其他庫接收新的(不存在的)塊或者在 本地處理的傳入數據的幀中接收。盡管針對新塊生成GBID在這些情況中有所不同(如上 所指出的),但是針對這兩種情況以相同的方式存儲新塊的數據。通常,分配邏輯存儲段以 容納新塊的群組,并且新塊存儲在所分配的存儲段內。此邏輯存儲段可以物理上位于庫中 的任何地方,這取決于庫的內部邏輯和優化。相應地,所示實施方式的機制因此不會相對于 源庫而向目標庫的結構和布局施加任何約束。在下文中,圖6提供了圖1中所示計算機環境10的部分的示例,其中可以實現前 述實施方式的機制。然而,應當理解,圖6僅是示例性的,并且不意在陳述或暗含對各種實 施方式的示例性方面可以在其中實現的特定架構的任何限制。在不脫離以下描述和請求保 護主題的范圍和精神的前提下,可以對圖6中所示架構做出很多修改。圖6示出了可以用于實現本發明實施方式的示例性計算機環境的部分200。計算 機202包括處理器204和存儲器206,諸如隨機訪問存儲器(RAM)。在一個實施方式中,存 儲系統服務器12(圖1)可以包括與計算機202中所示部件類似的部件。計算機202可操 作地耦合到顯示器219,其在圖形用戶界面218上向用戶呈現諸如窗口之類的圖像。計算機 202可以耦合到其他設備,諸如鍵盤216、鼠標220、打印機228等。當然,本領域技術人員將 認識到,上述部件的任何組合或者任意數量的不同部件、外設和其他設備可以與計算機202 一起使用。一般而言,計算機202在存儲于存儲器206中的操作系統(OS) 208 (例如,z/OS、 OS/2、LINUX、UNIX、WINDOWS、MAC OS)的控制下操作,并與用戶對接以例如通過圖形用戶界 面(⑶I)模塊232接受輸入和命令以及呈現結果。在本發明的一個實施方式中,OS 208促 進備份機制。盡管GUI模塊232被繪制為單獨的模塊,但是執行GUI功能的指令可以駐留 在或分布在操作系統208、應用210中,或利用專用存儲器和處理器實現。OS 208包括復制 模塊240,其可以適用于執行上述示例性實施方式中的各種過程和機制。復制模塊240可以 以硬件、固件或硬件和固件的組合實現。在一個實施方式中,復制模塊240可以具體化為專 用集成電路(ASIC)。如本領域技術人員將理解的,與復制模塊240相關聯的功能性也可以 與和處理器204、存儲器206及計算機202的其他部件相關聯的功能性一起具體化在公知為 片上系統(SoC)的專用ASIC中。此外,與復制模塊相關聯的功能性(或者計算機202的其 他部件)可以實現為現場可編程門陣列(FPGA)。如圖6所示,計算機202包括編譯器212,其允許以諸如COBOL、PL/1、C、C++、JAVA、 ADA、BASIC、VISUAL BASIC或任何其他編程語言之類的編程語言編寫的應用程序210轉譯 成處理器204可讀的代碼。在編譯后,計算機程序210使用利用編譯器212生成的關系和 邏輯來訪問,并操縱存儲在計算機202的存儲器206中的數據。計算機202可選地還包括外部數據通信設備230,諸如調制解調器、衛星鏈路、以太網卡、無線鏈路或用于例如經由互 聯網或其他網絡與其他計算機通信的其他設備。數據存儲設備222是直接訪問存儲設備(DASD) 222,包括保存有多個數據集的一 個或多個主卷。DASD 222可以包括多個存儲介質,諸如,硬盤驅動器(HDD)、磁帶等。數據 存儲設備236還可以以與設備222類似的方式包括多個存儲介質。設備236可以被指定為 備份設備236,用于保存主要存儲在設備222上的多個數據集的備份版本。如本領域技術人 員將理解的,設備222和236不需要位于同一機器上。設備222可以在地理上位于不同區 域中,并且由諸如以太網的網絡鏈路連接。設備222和236可以包括一個或多個卷,針對每 個卷具有相應的卷目錄表(VTOC)。在一個實施方式中,實現操作系統208、計算機程序210和編譯器212的指令有形 地具體化在計算機可讀介質中(例如,數據存儲設備220),其可以包括一個或多個固定或 可移除數據存儲設備224,諸如壓縮磁盤、軟盤、硬驅動器、DVD/⑶-ROM、數字帶、閃速存儲 卡、固態驅動器等,其一般地表示為存儲設備224。此外,操作系統208和計算機程序210包 括這樣的指令,當計算機202讀取并執行這些指令時,會引起計算機202執行實現和/或使 用本發明所需的步驟。例如,計算機程序210可以包括用于實現前述網格集合管理器、網格 管理器和庫管理器的指令。計算機程序210和/或操作系統208指令還可以有形地具體化 在存儲器206中和/或通過數據通信設備230傳輸或由其訪問。由此,在此使用的術語“產 品”、“程序存儲設備”和“計算機程序產品”意在囊括從任何計算機可讀設備或介質可訪問 的和/或可操作的計算機程序。本發明的實施方式可以包括一個或多個相關聯軟件應用程序210,其包括例如用 于管理包括計算設備網絡(諸如,存儲區域網(SAN))的分布式計算機系統的功能。因此, 處理器204可以包括存儲管理處理器(SMP)。程序210可以在單個計算機202內操作,或者 可以作為包括計算設備網絡的分布式計算機系統的一部分進行操作。網絡可以囊括一個或 多個計算機,其可以經由局域網和/或互聯網連接(其可以是公共的或安全的,例如通過虛 擬專用網(VPN)連接)或經由光纖通道SAN或本領域技術人員所知的其他已知網絡類型連 接。(注意,光纖通道SAN通常僅用于計算機與存儲系統通信,而不用于彼此通信。)如本領域技術人員將會理解的,本發明的諸方面可以實現為系統、方法或計算機 程序產品。因此,本發明的諸方面可以采取完全硬件實施方式、完全軟件實施方式(包括固 件、駐留軟件、微代碼等)或組合了軟件和硬件方面的實施方式的形式,其全部可以一般性 地在此稱為“電路”、“模塊”或“系統”。此外,本發明的諸方面可以采取在具體化有計算機 可讀程序代碼的一個或多個計算機可讀介質中具體化的計算機程序產品。可以使用一個或多個計算機可讀介質的任何組合。計算機可讀介質可以是計算機 可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是但不限于電的、 磁的、光的、電磁的、紅外線的、或半導體的系統、裝置或器件或前述的任何適當組合。計算 機可讀存儲介質的更具體的例子(非窮舉的列表)包括以下具有一個或多個導線的電連 接、便攜式計算機磁盤、硬盤、隨機訪問存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只 讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存 儲器件或前述的任何適當組合。在本文件的上下文中,計算機可讀存儲介質可以是任何有 形的介質,其可以包含或存儲供指令執行系統、裝置或設備使用或與之結合的程序。
計算機可讀介質可上具體化的程序代碼可以使用任何適當介質來傳輸,包括但不 限于無線、有線、光纜、RF等,或前述的任何適當組合。用于執行本發明諸方面的操作的計 算機程序代碼可以以一種或多種編程語言的任何組合來編寫,這些編程語言包括面向對象 的編程語言(諸如Java、Smalltalk、C++之類),還包括常規的過程式編程語言(諸如“C” 編程語言或類似的編程語言)。程序代碼可以完全地在用戶的計算上執行、部分地在用戶 的計算機上執行、作為一個獨立的軟件包執行、部分在用戶的計算機上部分在遠程計算機 上執行、或者完全在遠程計算機或服務器上執行。在后一種情形中,遠程計算機可以通過任 何種類的網絡——包括局域網(LAN)或廣域網(WAN)——連接到用戶的計算機,或者,可以 (例如,利用互聯網服務提供商來通過互聯網)連接到外部計算機。參照根據本發明實施方式的方法、裝置(系統)和計算機程序產品的流程示 和/或框圖描繪了本發明的諸方面。應當理解,流程示和/或框圖的每個框以及流程 示和/或框圖中框的組合可以由計算機程序指令實現。這些計算機程序指令可以提供 給通用計算機、專用計算機或其他可編程數據處理裝置的處理器以產生機器,使得經由計 算機或其他可編程數據處理裝置的處理器執行的指令會創建用于實現在流程圖和/或框 圖的一個或多個框中指定的功能/動作的裝置。這些計算機程序指令還可以存儲在計算機可讀介質中,其可以指引計算機或其他 可編程數據處理裝置或其他設備以特定方式起作用,使得存儲在計算機可讀介質中的指令 會產生包括用于實現在流程圖和/或框圖框中指定的功能/動作的指令的產品。這些計算 機程序指令也可以被加載到計算機、其他可編程數據處理裝置或其他設備上,以引起在計 算機、其他可編程裝置或其他設備上執行一系列操作步驟,以產生計算機實現的過程,使得 在計算機或其他可編程裝置上執行的指令提供用于實現在流程圖和/或框圖框中指定的 功能/動作的過程。上述附圖中的流程圖和框圖示出了根據本發明各種實施方式的系統、方法和計算 機程序產品的可能實現的架構、功能性和操作。就這一點,流程圖或框圖中的每個框可以代 表代碼的模塊、段或部分,其包括用于實現指定邏輯功能的一個或多個可執行指令。還應當 注意,在某些備選實現中,框中標注的功能可以不按附圖中標注的順序發生。例如,以連續 方式示出的兩個框事實上可以基本上并發執行,或者框有時可以以相反順序執行,這取決 于所涉及的功能性。還應當注意,流程示和/或框圖的每個框和流程示和/或框 圖的框的組合可以由執行特定功能或動作的基于專用硬件的系統實現,或者由專用硬件和 計算機指令的組合實現。以上對本發明的一個或多個實施方式進行了詳細的描述,但是本領域技術人員可 以理解,可以對這些實施方式進行修改和調整而不脫離所附權利要求中給出的本發明的范圍。
權利要求
1.一種用于使用處理器設備對經重復數據刪除的數據進行復制的方法,包括為在源庫中創建的所述經重復數據刪除的數據的塊指派全局塊標識id,所述全局塊 id在包括所述源庫的網格集合中是唯一的,其中所述全局塊id是使用所述塊、所述網格集 合的包含網格和所述源庫的至少一個唯一標識值生成的;以及將所述全局塊id從所述源庫向目標庫傳輸,其中如果所述目標庫確定所述全局塊id 與位于所述目標庫中的所述經重復數據刪除的數據的已有塊相關聯,則在后續復制過程期 間所述目標庫不接收所述塊。
2.如權利要求1的方法,進一步包括,在傳輸所述全局塊id之后,針對所述塊將支持重 復數據刪除的表征從所述源庫向所述目標庫傳輸,其中所述表征被插入到所述目標庫中的 重復數據刪除索引中。
3.如權利要求1的方法,其中指派所述全局id進一步包括執行以下中至少一個 指派在所述網格集合的所述包含網格中唯一的網格標識id,其中所述網格id是通過執行選擇之前不存在的網格id和手動指派所述網格id中的一個而計算的,響應于將所述源庫指派給所述網格集合的所述包含網格,向所述源庫指派在所述包含 網格中唯一的庫標識id,其中所述庫id是通過執行選擇之前不存在的庫id和手動指派所 述庫id中的一個而計算的,以及指派在所述網格集合的所述包含網格中唯一的塊標識id,其中所述塊id是通過選擇 之前不存在的塊id而計算的。
4.如權利要求3的方法,其中以下中至少一個選擇之前不存在的網格id包括遞增與所述網格集合對應的網格id變量, 選擇之前不存在的庫id包括遞增與所述包含網格對應的庫id變量,以及 選擇之前不存在的塊id包括遞增與所述源庫對應的塊id變量。
5.如權利要求4的方法,進一步包括通過組合所述網格id、所述庫id和所述塊id來 生成所述全局塊id。
6.如權利要求1的方法,進一步包括,響應于在所述源庫中接收到傳入數據針對所述源庫中的已有數據對所述傳入數據進行重復數據刪除,將所述傳入數據劃分 成所述經重復數據刪除的數據的多個已有塊和多個新塊,其中所述塊是所述多個新塊中的 一個,所述多個已有塊的每一個具有遞增的參考計數,以反映接收到所述傳入數據,除了向所述塊指派所述全局塊id之外,還向剩余的多個新塊中的每一個指派多個附 加全局塊id,其中所述塊、所述全局塊id、所述多個新塊和所述多個附加全局塊id中的每 一個都存儲在所述源庫中,以及將所述傳入數據的分段到所述多個已有塊和所述多個新塊的映射記錄在所述源庫中。
7.如權利要求1的方法,進一步包括,依照傳輸所述全局塊id,由所述源庫將所述至少 一個唯一標識值記載在全局塊id索引中。
8.如權利要求1的方法,進一步包括,依照傳輸所述全局塊id,所述目標庫使用所述重 復數據刪除索引來搜索所述全局塊id的存在,其中如果確定所述全局塊id在所述目標庫 中并不存在,則將所述全局塊id從所述目標庫向所述源庫傳輸,以及 將與所述塊相關聯的數據從所述源庫向所述目標庫傳輸。
9.如權利要求8的方法,進一步包括,在傳輸與所述塊相關聯的數據之后,所述目標庫 將與所述塊相關聯的數據存儲在所述目標庫中,并且遞增與所述塊相關聯的參考計數。
10.如權利要求8的方法,進一步包括,如果確定所述全局塊id存在于所述目標庫中, 則遞增與所述塊相關聯的參考計數。
11.如權利要求8的方法,進一步包括,在傳輸所述全局塊id之后,所述目標庫執行以 下中至少一個將所述全局塊id記錄在全局塊id索引中,以及記錄復制的數據的分段到所述經重復數據刪除的數據的所述塊和多個附加塊的映射。
12.如權利要求11的方法,進一步包括,由所述目標庫執行以下中至少一個 取回所述映射,以及將所述塊和所述多個附加塊中的至少一個加載至存儲器位置。
13.一種用于對經重復數據刪除的數據進行復制的系統,包括至少一個處理器設備,可操作于計算存儲環境中,所述至少一個處理器與源庫和目標 庫通信,其中所述至少一個處理器設備適于為在源庫中創建的所述經重復數據刪除的數據的塊指派全局塊標識id,所述全局塊 id在包括所述源庫的網格集合中是唯一的,其中所述全局塊id是使用所述塊、所述網格集 合的包含網格和所述源庫的至少一個唯一標識值生成的;以及將所述全局塊id從所述源庫向目標庫傳輸,其中如果所述目標庫確定所述全局塊id 與位于所述目標庫中的所述經重復數據刪除的數據的已有塊相關聯,則在后續復制過程期 間所述目標庫不接收所述塊。
14.如權利要求13的系統,其中所述至少一個處理器設備進一步適于,在傳輸所述全 局塊id之后,針對所述塊將支持重復數據刪除的表征從所述源庫向所述目標庫傳輸,其中 所述表征被插入到所述目標庫中的重復數據刪除索引中。
15.如權利要求13的系統,其中所述至少一個處理器設備進一步適于,依照指派所述 全局id,執行以下中至少一個指派在所述網格集合的所述包含網格中唯一的網格標識id,其中所述網格id是通過 執行選擇之前不存在的網格id和手動指派所述網格id中的一個而計算的,響應于將所述源庫指派給所述包含網格,向所述源庫指派在所述網格集合的所述包含 網格中唯一的庫標識id,其中所述庫id是通過執行選擇之前不存在的庫id和手動指派所 述庫id中的一個而計算的,以及指派在所述網格集合的所述包含網格中唯一的塊標識id,其中所述塊id是通過選擇 之前不存在的塊id而計算的。
16.如權利要求15的系統,其中以下中至少一個選擇之前不存在的網格id包括遞增與所述網格集合對應的網格id變量, 選擇之前不存在的庫id包括遞增與所述包含網格對應的庫id變量,以及 選擇之前不存在的塊id包括遞增與所述源庫對應的塊id變量。
17.如權利要求16的系統,其中所述至少一個處理器設備進一步適于通過組合所述 網格id、所述庫id和所述塊id來生成所述全局塊id。
18.如權利要求14的系統,其中所述至少一個處理器設備進一步適于,響應于在所述源庫中接收到傳入數據針對所述源庫中的已有數據對所述傳入數據進行重復數據刪除,將所述傳入數據劃分 成所述經重復數據刪除的數據的多個已有塊和多個新塊,其中所述塊是所述多個新塊中的 一個,所述多個已有塊的每一個具有遞增的參考計數,以反映接收到所述傳入數據,除了向所述塊指派所述全局塊id之外,還向剩余的多個新塊中的每一個指派多個附 加全局塊id,其中所述塊、所述全局塊id、所述多個新塊和所述多個附加全局塊id中的每 一個都存儲在所述源庫中,以及將所述傳入數據的分段到所述多個已有塊和所述多個新塊的映射記錄在所述源庫中。
19.如權利要求14的系統,其中所述源庫和所述至少一個處理器設備進一步適于,依 照傳輸所述全局塊id,將所述至少一個唯一標識值記錄在全局塊id索引中。
20.如權利要求14的系統,其中所述目標庫和所述至少一個處理器設備進一步適于, 依照傳輸所述全局塊id,使用所述重復數據刪除索引來搜索所述全局塊id的存在,其中如 果確定所述全局塊id在所述目標庫中并不存在,則將所述全局塊id從所述目標庫向所述源庫傳輸,以及將與所述塊相關聯的數據從所述源庫向所述目標庫傳輸。
21.如權利要求20的系統,其中所述目標庫和所述至少一個處理器設備進一步適于, 在傳輸與所述塊相關聯的數據之后,將與所述塊相關聯的數據存儲在所述目標庫中,并且 遞增與所述塊相關聯的參考計數。
22.如權利要求20的系統,其中所述目標庫和所述至少一個處理器設備進一步適于, 如果確定所述全局塊id存在于所述目標庫中,則遞增與所述塊相關聯的參考計數。
23.如權利要求20的系統,其中所述目標庫和所述至少一個處理器設備進一步適于, 在傳輸所述全局塊id之后,執行以下中至少一個將所述全局塊id記錄在全局塊id索引中,以及記錄復制的數據的分段到所述塊和所述經重復數據刪除的數據的多個附加塊的映射。
24.如權利要求23的系統,其中所述目標庫和所述至少一個處理器設備進一步適于, 執行以下中至少一個取回所述映射,以及將所述塊和所述多個附加塊中的至少一個加載至存儲器位置。
25.一種用于使用處理器設備對經重復數據刪除的數據進行復制的計算機產品,所述 計算機程序產品包括計算機可讀存儲介質,其上存儲有計算機可讀程序代碼部分,所述計 算機可讀程序代碼部分包括用于實現權利要求1-12中任一方法的任何步驟的可執行部 分。
26.一種設備,包括電路,定制用于執行用于對經重復數據刪除的數據進行復制的方法的步驟,所述步驟 包括為在源庫中創建的所述經重復數據刪除的數據的塊指派全局塊標識id,所述全局塊 id在包括所述源庫的網格集合中是唯一的,其中所述全局塊id是使用所述塊、所述網格集 合的包含網格和所述源庫的至少一個唯一標識值生成的;以及將所述全局塊id從所述源庫向目標庫傳輸,其中如果所述目標庫確定所述全局塊id與位于所述目標庫中的所述經重復數據刪除的數據的已有塊相關聯,則在后續復制過程期 間所述目標庫不接收所述塊。
27.如權利要求26的設備,所述步驟進一步包括,在傳輸所述全局塊id之后,針對所述 塊將支持重復數據刪除的表征從所述源庫向所述目標庫傳輸,進一步地,其中所述表征被 插入到所述目標庫中的重復數據刪除索引中。
28.如權利要求26的設備,其中所述電路包括專用集成電路ASIC、片上系統SoC和現 場可編程門陣列FPGA中的一個。
29.一種用于使用處理器設備對經重復數據刪除的數據進行復制的方法,包括執行以下中至少一個指派在網格集合的包含網格中唯一的網格標識id,其中所述網格id是通過執行選擇 之前不存在的網格id和手動指派所述網格id中的一個而計算的,響應于將所述源庫指派給所述網格集合的所述包含網格,向所述包含網格的源庫指派 在所述網格集合的包含網格中唯一的庫標識id,其中所述庫id是通過執行選擇之前不存 在的庫id和手動指派所述庫id中的一個而計算的,以及指派在所述網格集合的所述包含網格中唯一的塊標識id,其中所述塊id是通過選擇 之前不存在的塊id而計算的;以及將所述網格id、所述庫id和所述塊id中的至少一個作為元數據存儲在標識文件中。
30.如權利要求29的方法,進一步包括將與所述包含網格和所述源庫中的至少一個 相關聯的至少一個網際協議IP地址作為元數據與所述網格id、所述庫id和所述塊id中的 至少一個一起存儲在所述標識文件中。
31.如權利要求30的方法,進一步包括通過組合所述網格id、所述庫id和所述塊id 來生成在所述源庫和目標庫中唯一的全局塊標識id。
32.如權利要求31的方法,進一步包括將所述全局塊id從所述源庫向所述目標庫傳輸,其中如果所述目標庫確定所述全局 塊id與位于所述目標庫中所述經重復數據刪除的數據的已有塊相關聯,則在后續復制過 程期間所述目標庫不接收所述塊。
33.如權利要求32的方法,進一步包括,在傳輸所述全局塊id之后,針對與所述塊id 相關聯的塊將支持重復數據刪除的表征從所述源庫向所述目標庫傳輸,其中所述表征被插 入到所述目標庫中的重復數據刪除索引中。
全文摘要
提供了一種用于對經重復數據刪除的數據進行復制的方法和系統。具體地,提供了用于使用處理器設備對經重復數據刪除的數據進行復制的各種實施方式。為在源庫中創建的經重復數據刪除的數據的塊指派全局塊標識(id),該全局塊id在包括源庫的網格集合中是唯一的。全局塊id是使用塊、網格集合的包含網格和源庫中的至少一個唯一標識值生成的。將全局塊id從源庫向目標庫傳輸。如果目標庫確定全局塊id與位于目標庫中的經重復數據刪除的數據的已有塊相關聯,則在后續復制過程期間目標庫不接收該塊。
文檔編號G06F17/30GK101996233SQ20101025159
公開日2011年3月30日 申請日期2010年8月11日 優先權日2009年8月11日
發明者A·J·伊什-沙羅姆, L·阿羅諾維奇, O·勒尼曼, R·阿舍, S·H·阿基拉維, Y·巴雷爾 申請人:國際商業機器公司