(57)【特許請求の範囲】
【請求項１】
重複排除ストレージ・システム内の複数の入力データ・セグメントに対して、合成バックアップのプロセッサ・デバイスによる構築を容易にする方法であって、
前記複数の入力データ・セグメントの各々の入力データ・セグメントに対して、前記入力データ・セグメントによって参照される格納データ・セグメントの複数の格納重複排除ダイジェストを取り出すステップと、
前記各々の入力データ・セグメントを複数の固定サイズのデータ・サブ・セグメントの各々に分割するステップと、
前記複数のデータ・サブ・セグメントの各々に対して、前記取り出された複数の格納重複排除ダイジェストに基づいて、複数の入力重複排除ダイジェストの各々を計算するステップと、
複数のサブ・セグメント重複排除ダイジェストの各々を集約して前記各々の入力データ・セグメントの重複排除ダイジェストを生成するステップとを含み、
前記各々の入力データ・セグメントの前記重複排除ダイジェストが前記合成バックアップの重複排除ダイジェストを形成する、
方法。
【請求項２】
前記格納データ・セグメントの前記複数の格納重複排除ダイジェストを前記複数の入力重複排除ダイジェストに対して照合することによって、前記各々の入力データ・セグメントを重複排除するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記照合の後で、前記複数の入力重複排除ダイジェストをインデックス内に格納するステップをさらに含み、
前記複数の入力重複排除ダイジェストのうちの少なくとも１つの入力重複排除ダイジェストと整合する前記複数の格納重複排除ダイジェストのうちの少なくとも１つの格納重複排除ダイジェストを、前記少なくとも１つの入力重複排除ダイジェストで置き換えることができる、
請求項２に記載の方法。
【請求項４】
前記合成バックアップを構築するステップをさらに含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記合成バックアップを構築する前記ステップは、前記重複排除ストレージ・システム内にメタデータ・ファイルを作成するステップ、及び連続するストレージ命令を最適化するステップをさらに含む、請求項４に記載の方法。
【請求項６】
各々の前記最適化されたストレージ命令に対して、
前記最適化されたストレージ命令によって指示される入力データ・セグメントに関連付けられたメタデータ・セグメントを取り出すステップと、
前記メタデータ・セグメントを、前記入力データ・セグメントのみを参照するように調整するステップと、
前記調整されたメタデータ・セグメントを前記合成バックアップの前記メタデータ・ファイルにコピーするステップと、
前記メタデータ・セグメントによって参照された各々のストレージブロックに対して、参照計数値を増加させるステップと
をさらに含む、請求項５に記載の方法。
【請求項７】
複数のサブ・セグメント重複排除ダイジェストの各々を計算するステップは、
バイト・オフセットした前記複数の入力データ・セグメント内の各々のブロックに対するハッシュ値を計算するステップと、
選択された複数の最大ハッシュ値を重要性の順序に従って降順に並べるステップと、
前記最大ハッシュ値に関連付けられた前記ブロックに対して決定された位置にあるブロックをシフト・ブロックとして識別するステップと、
前記シフト・ブロックの前記ハッシュ値の部分集合を、複数の入力データ・サブ・セグメントの少なくとも１つの第１の識別特性のために選択するステップと、
前記シフト・ブロックの前記ハッシュ値の付加的な部分集合を、前記複数の入力データ・セグメントの少なくとも１つの第２の識別特性のために選択するステップと
を含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記少なくとも１つの第２の識別特性を格納するための、前記複数の入力データ・セグメントに関する識別特性（ＤＣ）インデックスを構成するステップと、前記少なくとも１つの第１の識別特性を格納するための、前記複数の入力データ・サブ・セグメントに関するストレージ識別子（ＳＩ）インデックスを構成するステップとをさらに含む、請求項７に記載の方法。
【請求項９】
前記少なくとも１つの第１及び第２の識別特性を計算するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
重複排除ストレージ・システム内の複数の入力データ・セグメントに対して、合成バックアップの構築を容易にするためのシステムであって、
重複排除コンピューティングストレージ環境において動作可能な少なくとも１つのプロセッサ・デバイスを備え、
前記少なくとも１つのプロセッサ・デバイスは、請求項１〜９のいずれか１項に記載の方法ステップを実行するように適合される、システム。
【請求項１１】
重複排除ストレージ・システム内の複数の入力データ・セグメントに対して、少なくとも１つのプロセッサ・デバイスによる合成バックアップの構築を容易にするためのコンピュータ・プログラムであって、
コンピュータによって実行されたとき、請求項１〜９のいずれか１項に記載の方法ステップを実行する、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータに関し、より具体的にはコンピューティングストレージ環境における重複排除(deduplication)ストレージ・システム内の合成バックアップを容易にすることに関する。
【背景技術】
【０００２】
データ重複排除とは、冗長データを減らすこと及び／又は排除を意味する。データ重複排除プロセスにおいて、データの重複コピーが減らされ又は排除され、それぞれデータの最小限の量の冗長コピー又は単一のコピーが残される。重複排除プロセスを使用することにより、必要とされるストレージ容量の削減及びネットワーク帯域幅の削減などの様々な利益がもたらされる。これら及び他の利益のために、近年、重複排除がコンピューティングストレージシステムにおける非常に重要な技術分野として浮上してきた。重複排除機能を提供するための課題は、通常は大容量のストレージリポジトリ内で重複データ・パターンを効率的に見出すこと、及び、重複排除されたストレージに効率的な形態でデータ・パターンを格納することなどの局面を含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７，５２３，０９８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の課題は、重複排除ストレージ・システム内の合成バックアップの構築を容易にする方法及びシステムを提供することである。
【課題を解決するための手段】
【０００５】
バックアップ環境において、完全バックアップは、バックアップされる全データ・セットを含む。増分バックアップは、最新のバックアップが完全バックアップであっても、増分バックアップであっても、その最新バックアップの後に修正されたデータ・セットの部分のみを含む（通常、ファイルの解像度で）。差分バックアップは、最新の完全バックアップの後に修正されたデータ・セットの部分のみを含む。増分及び差分バックアップの利点は、完全バックアップよりも含むデータが少ないのでストレージ及び処理時間の点でより効率的であることである。
【０００６】
ある特定の時点までのバックアップされたデータ・セットを完全に復元するためには、普通、その時点に先立つ完全バックアップが復元され、次にその時点までの全てのその後の増分バックアップがそれらの経時的順序で復元される。同様のプロセスが差分バックアップを用いて行われるが、この場合には完全バックアップを復元した後で復元すべきなのは一般に１つの差分バックアップのみである。明らかに、そのような復元動作は時間がかかり、単一のバックアップを復元するよりも複雑である。
【０００７】
上記の復元プロセスの複雑さを軽減するために、合成バックアップの考えが導入された。合成バックアップは、完全バックアップ及びその後の特定の時点に至るまでの増分バックアップからのデータが１つの合成バックアップ内に組み込まれるプロセスを用いる、バックアップ・アプリケーションによって構築される。作成された合成バックアップは、実際にはその時点に対応する完全バックアップである。そのようなバックアップは、データがソースから読み出されてバックアップとして格納される正規のバックアップ・プロセスによって作成されるのではなく、既存のバックアップのデータを用いて合成バックアップが構築される「合成」プロセスによって作成されることから、「合成」と呼ばれる。合成バックアップの復元は、完全バックアップの復元と同じく簡単であり、前述の増分バックアップ又は差分バックアップを復元するプロセスよりも迅速に行われる。合成バックアップの付加的な利点は、合成バックアップの作成が、データに関して同一の完全バックアップの作成に比べてより速いことである。
【０００８】
合成バックアップによってもたらされる効率及びその他の特性における利点のために、合成バックアップ機能及び関連するアーキテクチャを重複排除ストレージ・システム内に組み込むことが望ましい。従って、重複排除ストレージ・システムにおける合成バックアップの構築を容易にするための種々の実施形態を提供する。一実施形態において、例示のみを目的として、重複排除ストレージ・システムは、バックアップ・アプリケーションから、ソース及びターゲット・データを記述する一連の圧縮メタデータ命令を受け取り、これに基づいて、重複排除ストレージ・システムは、構築中の合成バックアップのために作成されるメタデータ構造の中に既存のバックアップのデータに対する参照を追加することにより、合成バックアップを効率的に構築する。さらに別の実施形態において、例示のみを目的として、重複排除ストレージ・システムは、既に構築された合成バックアップのデータを用いて新規入力データを重複排除することを可能にし、この目的のために、構築中の合成バックアップに関する重複排除ダイジェストを、合成バックアップによって参照されるデータの既存のダイジェストに基づいて効率的に計算する。構築中の合成バックアップの複数の入力データ・セグメントの各々の入力データ・セグメントに対して、該入力データ・セグメントによって参照される格納データ・セグメントの複数の重複排除ダイジェストがインデックスから取り出される。各々のデータ・セグメントは、複数の固定サイズのデータ・サブ・セグメントの各々に分割され、複数の入力データ・サブ・セグメントの各々が、複数の格納データ・サブ・セグメントを参照することができる。複数の入力データ・サブ・セグメントの各々に対して、入力データ・サブ・セグメントに関する重複排除ダイジェストを生成する計算が実行され、その計算は、入力データ・サブ・セグメントによって参照される複数の格納データ・サブ・セグメントの取り出された重複排除ダイジェストに基づく。複数のサブ・セグメント重複排除ダイジェストが集約されて、各々の入力データ・セグメントの重複排除ダイジェストが生成される。各々の入力データ・セグメントの重複排除ダイジェストが、合成バックアップの重複排除ダイジェストを形成する。
【０００９】
前述の例示的な方法の実施形態に加えて、他の例示的なシステム及びコンピュータ製品の実施形態が提供され、関連する利点が提供される。
【００１０】
これから、本発明の実施形態を、添付の図面を参照しながら単に例証として説明する。
【図面の簡単な説明】
【００１１】
【図１】例示的な合成バックアップ・アーキテクチャを示す。
【図２】合成バックアップの例示的な構築フローを示す。
【図３】データ・パターン内の例示的な参照手法を示す。
【図４】重複排除ストレージ・システムにおける使用のための合成バックアップを構築する例示的な方法を示す。
【図５】例示的な重複排除プロセスを示す。
【図６】例示的なデータの最大ブロック及びシフト・ブロックを示す。
【図７】入力データ・セグメントに関するｋ個及びｍ個の識別特性の例示的な計算を示す。
【図８】例示的な識別特性（ＤＣ）及びストレージ識別子（ＳＩ）のインデックスを示す。
【図９】格納サブ・セグメントによる入力サブ・セグメントの例示的なマッピングを示す。
【図１０】図１１と共に、合成バックアップ内のデータ・セグメントの識別特性を計算する例示的な方法を示す。
【図１１】図１０と共に、合成バックアップ内のデータ・セグメントの識別特性を計算する例示的な方法を示す。
【図１２】例証的な実施形態の態様を実装することができる、プロセッサ・デバイスを含む重複排除システムの例示的な部分を示す。
【発明を実施するための形態】
【００１２】
図１は、例示的な合成バックアップのアーキテクチャ１０を示す。アーキテクチャ１０は、図に示すようにタイム・ライン１２にわたって実施される。完全バックアップ１４は最も初期の時点で作成される。この時間から、増分バックアップ１６、１８、及び２０が図に示すような後続の間隔で実行される。完全バックアップ１４並びに増分バックアップ１６、１８及び２０の各々を、図に示すように、そして以下でさらに説明するように合成バックアップ２２に組み込むことができる。
【００１３】
合成バックアップ２２のような合成バックアップの構築は、普通は既存のバックアップ１４、１６、１８、及び２０からのデータを合成バックアップ２２内にコピーすることからなる。コピーは、バックアップ・アプリケーションにより、ソース・バックアップからデータ・セグメントを読み出し、これらのデータ・セグメントをターゲットの合成バックアップ内に書込むことにより実行することもでき、又は、より効率的には、ストレージ・システムにより、ソース及びターゲット・データ・セグメントを識別するバックアップ・アプリケーションにより供給される情報を用いてデータのコピーを実行することができる。
【００１４】
次の図２は、これら２つの場合を合成バックアップの例示的な構築フロー３０で示す。第１の場合には、上述のように、バックアップ・アプリケーション３２は、図示するようにストレージデバイス４０と通信するストレージサーバ３６との通信によって、ソース・バックアップからデータ・セグメントを読み出し、これらデータ・セグメントをターゲットの合成バックアック内に書込む。第２の場合には、やはり上述のように、ストレージデバイス４２と通信するストレージサーバ３８が、やはり図示するようにバックアップ・アプリケーション３４から得られるソース及びターゲット・データ・セグメントを識別するメタデータ情報を用いて、合成バックアップの構築中にデータをコピーする。
【００１５】
例証的な実施形態の機構は、重複排除ストレージ・システム内での合成バックアップの効率的な構築を規定する。重複排除ストレージ・システムは、一般に、新規入力データのセグメントを既存のデータのセグメントによって効率的に表すように設計されている。入力データを処理してストレージ内の整合するセグメントを見出し、次いでこれらが、新規データを格納するプロセスにおいて（データ自体を格納するのではなく）参照される。整合しないデータ・セグメントだけが実データとしてストレージ内に書込まれる。参照は、実データ（参照なし）として格納されている物理データ・パターンとすることもでき、又は、物理データ・パターン及び論理データ・パターンの両方に対する参照とすることもでき、この場合、後者はそれ自体が、物理及び論理パターンに対する参照の集合である。
【００１６】
合成バックアップの効率的な構築のための例証的な実施形態の第１の態様は、バックアップ・アプリケーションが、データ・コピー動作を用いて合成バックアップを構築するのではなく、重複排除ストレージ・システムに対して、既存の（ソース）バックアップのデータ・セグメントと構築中の（ターゲット）合成バックアップ内でのその指定位置とを指定する一連の圧縮メタデータ命令を発行することができることである。例証的な実施形態は、重複排除ストレージ・システム内でこれら命令を効率的に処理して合成バックアップを構築することを規定する。
【００１７】
例証的な実施形態の１つにおいて、重複排除ストレージ・システム内で、それら命令の各々が効率的に処理され、その結果、その命令によって参照されるデータ・セグメントに関連付けられたメタデータが取り出され、この情報に基づいて、既存バックアップのデータ・セグメントに対する参照が作成され、構築中の合成バックアップのメタデータに加えられる。さらに、バックアップ・アプリケーションによって発行された入力命令をストレージ・システムにより最適化して処理効率を向上させることができる。一例は、隣接するソース・データ・セグメントを参照する命令を統合して、このプロセス内でのストレージ・アクセスの効率を向上させることである。この方法により、合成バックアップは、重複排除ストレージ・システムにより通常本来的にサポートされている内部的な高速メタデータ動作である参照動作を用いて高度に効率的なプロセスで構築される。
【００１８】
例証的な実施形態の機構はまた、合成バックアップのデータを用いて新規入力データを重複排除することも可能にする。これは、重複排除プロセス中のストレージ内の類似データ・セグメントの検索に役立つ、合成バックアップのデータのダイジェストを計算し、このダイジェストを、本明細書ではダイジェスト・インデックスと呼ぶ重複排除を促進するインデックス内に挿入することによって達成される。新規入力データが処理されるときに、その入力データのダイジェストが計算され、ダイジェスト・インデックス内で検索される。整合するダイジェスト（各々がストレージ内の類似のデータ・セグメントを指示する）がインデックス内で見出された場合には、付加的なプロセスを用いてストレージ内の正確な整合データ・セグメントが精徴化され（ｒｅｆｉｎｅ）識別される。このようにして、合成バックアップのデータを後で重複排除プロセス内の新規入力データと整合させることができる。
【００１９】
さらに、例証的な実施形態の機構において、合成バックアップのデータのダイジェストは、合成バックアップのデータ自体に基づいて新たに計算されるのではなく、合成バックアップによって参照されるデータ・セグメントの既存の格納されたダイジェストに基づいて効率的に計算される。このことにより、合成バックアップの構築中に合成バックアップのデータへのアクセスを減らすことが可能になり、さらに、データ自体に基づくダイジェストの計算を減らすことが可能になる。例証的な実施形態の機構は、合成バックアップに関する重複排除ダイジェストの計算を著しく加速し、従って、合成バックアップの構築時間全体を著しく改善する。例証的な実施形態の態様を実現することができる重複排除ストレージ・システムの例示的な一実施形態において実装することができる、重複排除のためのデータのダイジェストを計算して使用するための方法は、引用によりその関連部分が本明細書に組み入れられる「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｅｆｆｉｃｉｅｎｔ  Ｄａｔａ  Ｓｅａｒｃｈｉｎｇ，  Ｓｔｏｒａｇｅ  ａｎｄ  Ｒｅｄｕｃｔｉｏｎ」と題する特許文献１で明記されている。
【００２０】
例証的な実施形態の一つの態様は次のように要約される。合成バックアップの入力データ・セグメントに対して、該入力データ・セグメントにより参照される格納データ・セグメントの精細化された（ｆｉｎｅ−ｇｒａｉｎｅｄ）重複排除ダイジェストがインデックスから取り出される。入力データ・セグメントは、固定サイズのサブ・セグメントに分割され、これらサブ・セグメントの各々は、複数の格納サブ・セグメントを参照することができる（アラインメントに応じて）。入力サブ・セグメントの各々に対して、該入力サブ・セグメントに関する重複排除ダイジェストを生成する計算が実行され、この計算は、入力サブ・セグメントによって参照された格納サブ・セグメントの取り出された重複排除ダイジェストに基づく。この計算を完了できない特定の場合には、入力サブ・セグメントのデータに基づいて重複排除ダイジェストが計算される。しかし、これらの場合の頻度は、計算を完了することができる場合に比べて通常は低い。次いで入力サブ・セグメントの計算されたダイジェストを集約して入力データ・セグメントの重複排除ダイジェストを生成する。合成バックアップの全データ・セグメントの重複排除ダイジェストが、合成バックアップ全体の重複排除ダイジェストを形成する。
【００２１】
新規入力データのセグメントを既存データのセグメントによって表す機能は、重複排除ストレージ・システムにとって本来的なものである。入力データを処理してストレージ内の整合するセグメントが見出され、次にこれが新規データを格納するプロセスにおいて（データ自体を格納するのではなく）参照される。整合しないデータ・セグメントだけが実データとしてストレージに書込まれる。
【００２２】
参照機能を実装するための幾つかの方式がある。一般に、参照は、物理データ・パターン又は論理データ・パターンに基づいて実装することができる。第１の選択肢において、新規データ・パターンは、実データ（参照なし）として格納されているデータ・パターンであって、ある種のストレージ識別子を用いて参照することができるデータ・パターンを参照する。そのようなデータ・パターンを物理データ・パターンと呼ぶ。第２の選択肢においては、新規データ・パターンは物理データ・パターン及び論理データ・パターンの両方を参照することができ、ここで論理データ・パターンは、それら自体が物理パターン及び論理パターンに対するそのような参照の集合である。
【００２３】
次いで、図３において、２つの参照手法５２、５４をひとまとめにして参照パターン５０として示す。物理データ・パターンの参照を示す事例（Ａ）において、新規データ・パターン５６、５８は、図に示すように物理データ・パターン６０−７４（即ち、実データ）として格納されているデータ・パターンを参照する。論理データ・パターンの参照を示す事例（Ｂ）において、新規データ・パターン７６は、図に示すように、論理データ・パターン７８、８０並びに物理データ・パターン８２−９６の両方を参照する。
【００２４】
例証的な一実施形態において、重複排除されたデータは、物理データ・パターンとしてストレージブロック内に格納され、ここで各ストレージブロックは関連付けられた参照計数プロパティを有する。新規データ・セグメントを格納するために、新規セグメントは既存データ・セグメントと照合され（種々の手法を用いて実施することができる、整合データを見出すための独立した方法を用いて）、整合データ・セグメントのメタデータが取り出され、次いで、新規データ・パターンに関して、整合データ・セグメントによって参照されたストレージブロック（物理データ・パターンを含む）を指示する参照が作成される。これらの参照は、新規データ・パターンに関して作成されたメタデータ・ファイル内のレコード内にカプセル化される。ストレージブロックは全体として又は部分的に参照することができ、この情報はメタデータ・レコード内で示される。どの既存データ・セグメントとも整合しない新規データ・セグメントを格納するために、そのデータがストレージブロック内に格納され、これらのブロックに対する参照が作成され、そのメタデータ・ファイルに加えられる。あるストレージブロックが参照されたとき、その参照計数プロパティの値は、そのブロックに対してなされた新たな参照の数に応じて増やされる。ストレージブロックが逆参照されたとき、即ち、そのブロックを参照するデータ・セグメントを削除することにより逆参照されたとき、その参照計数プロパティの値は、除去される参照の数に応じて減らされる。あるストレージブロックの参照計数プロパティの値がゼロより大きい限り、そのブロックはストレージ内に維持されなければならない。この値がゼロになったときには、そのブロックをストレージから除去することができる。
【００２５】
次に図４を参照すると、重複排除ストレージ・システム内で用いるための合成バックアップを構築する例示的な方法１００が示される。一実施形態において、方法１００は、重複排除システム・コンポーネント、又はコンピューティング環境におけるその他の種々の処理コンポーネント、ネットワーキング・コンポーネント及びストレージ・コンポーネントを用いて実装することができる。当業者であれば、方法１００の種々のステップは、特定の用途に適した種々異なる方法で実装することができることを認識するであろう。さらに、ここで説明する方法は、コンピューティング環境上で又はそれ以外にコンピューティング環境との関連で動作可能な、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せなどの種々の手段によって実装することができる。例えば、方法１００及び以下に説明する例示的方法は、部分的に又は全体として、内部に格納したコンピュータ可読プログラム・コード部分を有するコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品として実装することができる。コンピュータ可読記憶媒体としては、ディスク・ドライブ、フラッシュ・メモリ、デジタル多用途ディスク（ＤＶＤ）、コンパクト・ディスク（ＣＤ）、及び、前述の他の形式の記憶媒体を挙げることができる。
【００２６】
方法１００は、構築中の合成バックアップに関するメタデータ・ファイルをストレージ内で作成する（１０４）ことで開始する（ステップ１０２）。合成バックアップに関係した連続的な命令を最適化して適用可能に統合し、処理効率を向上させる。具体的には、隣接するソース・データ・セグメントを参照する命令を統合して、メタデータへのアクセスの効率を向上させる。一連の最適化された命令が作成される（１０６）。第１の最適化された命令を検討する（ステップ１０８）。各々の最適化された命令に対して、その命令によって指示されるソース・データ・セグメントに関連付けられたメタデータ・セグメントがストレージから取り出される。このメタデータ情報は一般に、ストレージブロック（ソース・データ・セグメントを構成するデータ・パターンを含む）に対する参照を含む（ステップ１１０）。
【００２７】
このメタデータ・セグメントは、ソース・データ・セグメントのみを反映するのに必要なように調整される（ステップ１１２）。具体的には、例えば、ソース・データ・セグメントの端部にあるストレージブロックへの参照は、参照されるブロックのより短い部分を指示するように調整することができる。調整されたメタデータ・セグメントは、合成バックアップのメタデータ・ファイルにコピーされる（付け加える）（ステップ１１４）。このメタデータ・セグメントによって参照されたストレージブロックの参照計数プロパティの値は、各ブロックについて、メタデータ・セグメント内のそのブロックに対する参照の数に応じて増やされる（ステップ１１６）。更なる最適化された命令が存在する場合（ステップ１１８）には、方法１００は更なる処理のためにステップ１１０に戻る。そうでなければ方法１００は終了する（ステップ１２０）。上述の例示的な方法を用いることにより、合成バックアップは、重複排除ストレージ・システムにより通常本来的にサポートされている内部的な高速メタデータ動作である参照動作を用いて、高度に効率なプロセスで構築される。
【００２８】
例証的な実施形態の一態様において、合成バックアップは、ひとたび作成されると元のバックアップから独立したものとなり、バックアップ・アプリケーションによってそのようにみなされることができる。即ち、合成バックアップを構築するのにデータが参照されたバックアップの幾つか又は全てが削除された場合でも、合成バックアップは影響を受けない。このことは、例証的な実施形態の一態様において、合成バックアップが正規のバックアップが格納されるのと本質的に同じ方式で重複排除ストレージ・システム内に格納されることに起因する。具体的には、合成バックアップ及び正規バックアップに対して同様のメタデータ構造体が作成され、ストレージブロックは合成バックアップ及び正規バックアップに関して同じ方法で参照される。上記の特性に内在する利点は、新しい合成バックアップを構築するときに、合成バックアップをバックアップ・アプリケーションによって参照することができるということである。
【００２９】
さらに、新規入力データを合成バックアップに含まれるデータを用いて重複排除することを可能にすることは、特に合成バックアップが構築される元になった幾つか又は全てのバックアップがストレージから既に削除されている場合に有益である（合成バックアップが使用可能である限り、その参照されるストレージブロックは使用可能であることに留意されたい）。そのような重複排除を可能にするためには、合成バックアップ内に含まれるデータを新たなバックアップのデータとの照合に使用可能であるようにする必要がある。この使用可能性の実装は、データ重複排除プロセスにおいて新規データと既存データとの照合プロセスを実現するのに用いられる具体的な方法に依存する。
【００３０】
例証的な実施形態の態様を組み込んだ例示的な重複排除ストレージ・システムにおいて、格納データを新規入力データとの重複排除に使用可能にすることは、重複排除プロセス中のストレージ内の類似データ・セグメントの検索に役立つデータのダイジェストを計算し、このダイジェストを本明細書ではダイジェスト・インデックスと呼ぶ重複排除を促進するインデックス内に挿入することによって実装される。その後、新規入力データが処理されるときに、その入力データのダイジェストが計算され、ダイジェスト・インデックス内で検索される。このインデックスは、新規データのダイジェストが与えられると整合する格納データのダイジェストの検索を可能にする。インデックス内で整合するダイジェスト（各々がストレージ内の類似のデータ・セグメントを指示する）が見出された場合には、付加的なプロセスを用いてストレージ内の正確に整合するデータ・セグメントを精緻化し識別する。次いで、入力データのダイジェストがダイジェスト・インデックスに挿入され（従って、より新しいデータを現在の入力データと照合することが可能になる）、場合によっては、入力データと整合した格納データのダイジェストの一部又は全てがインデックスから置き換えられる。
【００３１】
次に、図５は、前述の議論を考慮した例示的な重複排除プロセス１３０を示す。方法１３０は、新規入力データのそれぞれのダイジェストを計算する（ステップ１３４）ことによって開始する（ステップ１３２）。ダイジェスト・インデックス（１４９）を格納データの整合するダイジェストに関して検索する（ステップ１３６）。整合が見出された場合（ステップ１３８）、ストレージ内の格納データ１５０から整合データ・セグメントが取り出される（ステップ１４２）。取り出されたデータ及びダイジェスト情報を用いて、ストレージ内の正確な整合データ・セグメントが精緻化され識別される（ステップ１４４）。正確な整合の情報を用いて、新規入力データが、既存の格納データに対する参照の集合（整合に基づく）に不整合データを加えたものとして格納される（ステップ１４６）。新規入力データのダイジェストはダイジェスト・インデックス内に格納され、場合によっては、整合データ・セグメントのダイジェストが存在するならばそれを置き換える（ステップ１４８）。ステップ１３８に戻ると、整合が見出されない場合には、新規入力データは既存の格納データに対する参照なしで格納される（ステップ１４０）。方法１３０はその後、終了する（ステップ１５２）。
【００３２】
合成バックアップのデータのダイジェストを計算してダイジェスト・インデックス内に挿入することにより、合成バックアップのデータを、後で重複排除プロセス内の新規入力データと照合することができる。合成バックアップのデータのダイジェストを計算するための可能な方法は、合成バックアップの構築中にこのデータをストレージから取り出し、そのデータに基づいてダイジェストを計算することである。しかし、例証的実施形態の一態様において、合成バックアップはデータ自体になんらアクセスすることなくメタデータ操作のみを用いて構築される（即ち、バックアップ・アプリケーションはメタデータ命令をストレージ・システムに与え、ストレージ・システムはメタデータ操作のみを実行して合成バックアップを構築する）ので、そしてまた、データへのアクセス及びデータに対する操作は、メタデータへのアクセス及びメタデータに対する操作よりも著しく遅い（データのサイズは通常、関連付けられたメタデータのサイズよりも遥かに大きいため）ので、合成バックアップの構築プロセス中にデータにアクセスして取り出すことは、このプロセスを著しく遅くする場合があり、おそらくはその効率を低下させる。
【００３３】
この問題に対処するために、例証的な実施形態の一態様は、データ自体へのアクセスを最小限にして、合成バックアップのデータのダイジェストを効率的に計算する方法を提供する。この点について、合成バックアップのデータのダイジェストは、合成バックアップにより参照されるデータ・セグメントの既存の格納されたダイジェストに基づいて（データ自体に基づいて新しく計算されるのではなく）効率的に計算される。この方法は、より精細なダイジェストの集約として計算されるダイジェストに一般的に適用可能である。
【００３４】
以下、データの重複排除ダイジェストの例示的な計算を提供する。第１のステップとして、入力データがセグメントに分割され、各セグメントに重複排除の処理が行われる。一実施形態において、それらデータ・セグメントの各々のサイズは１６ＭＢとする。それらセグメントの各々に対して、そのセグメントの重複排除ダイジェストを構成するそれぞれ検索及び表示のためのｋ個及びｍ個の識別特性が、図７に示す以下の例示的な方法１７０を用いて計算される。通常、ｋの値は低く（例えば、数十）、ｍの値は１０未満とすることができる。
【００３５】
方法１７０は、入力データ・セグメント内の全てのブロックに対するハッシュ値を計算することによって開始し（ステップ１７２）、ここで、これらブロックのサイズは、入力データ・セグメントのサイズよりも実質的に小さく（例えば、４ＫＢ）、且つ、ブロック同士は重なっており、即ち、あるブロックが入力セグメント内の位置ｌ（位置はバイトで指定される）で始まるとすると、次のブロックが始まる位置は位置ｌ＋１である（ステップ１７４）。一実施形態において、これらのハッシュ値はローリングハッシュ関数を用いて計算される。そのようなハッシュ関数を用いて、ハッシュ値は、各ブロックが前のブロックの開始バイトの１バイト後に開始するような連続的なデータ・ブロックに基づいて効率的に計算される。ローリングハッシュ関数は、ひとたびデータのあるブロックに対するハッシュ値が既知になると、次のブロック（前のブロックの開始バイトの１バイト後に開始する）のハッシュ値の計算はＯ（１）操作で行うことができるという利点を有する。
【００３６】
前のステップにおいてデータ・セグメントに対して生成されたハッシュ値のうちのｋ個の最大ハッシュ値が選択され、それらの値の降順に並べられ、この順序を重要性の順序（ｏｒｄｅｒ  ｏｆ  ｓｉｇｎｉｆｉｃａｎｃｅ）と呼ぶ。ｋ個の最大ハッシュ値に対応するブロックは、ｋ個の最大ブロックと呼ばれ、最大ハッシュ値と同じ順序に論理上で並べられる（計算の次のステップのために）（ステップ１７６）。最大ブロック（ｋ個の最大ハッシュ値に関連付けられる）の１バイト後に続くブロックが選択され、最大ブロックと同じ順序に論理上で並べられる。これらのブロックはシフト・ブロックと呼ばれる。遡って図６は、最大ブロック１６２、それぞれの位置１６６、それぞれのシフト・ブロック１６４、及びそれぞれのシフト位置１６８を描いたシナリオ１６０を示す。
【００３７】
図７に戻ると、次のステップとして、シフト・ブロックのｋ個のハッシュ値が、類似性検索を目的とした入力データ・セグメントの識別特性として選択される（ステップ１８０）。これらの識別特性を引き続き用いて、ストレージ内の類似データ・セグメントに関してダイジェスト・インデックスを検索する。新規入力データ・セグメントの類似性検索中に、最大でｋ個の識別特性に関してダイジェスト・インデックス内で検索される可能性がある。最後に、重要性の順に最初のｍ個（ここでｍ＜ｋ）のシフト・ブロックのハッシュ値が、ダイジェスト・インデックスにおける表示を目的とした入力データ・セグメントの識別特性として選択される（ステップ１８２）。これらの識別特性はその後、入力データ・セグメントを表すためにダイジェスト・インデックス内に格納され、その後の新規入力データ・セグメントが類似性検索中にその入力データ・セグメントを見出すことを可能にする。方法１７０はその後、終了する（ステップ１８４）。
【００３８】
最大値は、一様ではない数値分布を有することに留意されたい。しかし、良いハッシュ関数を用いると、このステップで選択される識別特性の数値分布は一様に非常に近くなり、従って、このようにして選択された識別特性はデータのセグメントを一意に識別するためにより効果的になる。任意の繰返し可能なハッシュ値選択基準を図７のステップ１７６に適用することができることにもまた留意されたい。例えば、ｋ個の最小ハッシュ値を選択すること、又はデータ・セグメントに対して計算された全てのハッシュ値の中央値に最も近いｋ個のハッシュ値を選択すること、又はある所定の定数に最も近いｋ個のハッシュ値を選択することなどである。さらに、最大ハッシュ値に対応するブロックの１バイト・シフトを用いる代りに、なんらかのその他の所定の繰返し可能なシフトを用いることもでき、又は、場合により位置及び／又は計算されたハッシュ値に応じて異なるシフトを用いることもできる。最大ハッシュ値及び１バイト・シフトを用いることは１つの例示的な実施形態である。
【００３９】
上記の例示的な方法１７０は、所与のデータ・セグメントに関して、広範囲まで、一意性の、ロバストな、良く広がった、繰返し可能な識別特性を生成する。一意性とは、２つの異なるデータ・セグメントに対して、十分に高い確率で２つの異なる特性集合が割り当てられることを意味する。ロバストとは、あるデータ・セグメントに割り当てられた特性が、データ・セグメントが限定された変化（例えば、その計数の２５％までにおける）を被ってもかなり一定のまま留まることを意味する。良く広がったとは、特性位置がデータ・セグメントにわたって概ね一様に広がっていることを意味する。繰返し可能とは、データ・セグメントの特定の形が、常に同じ値の識別特性を生成することを意味する。
【００４０】
ダイジェスト・インデックスにおける類似性検索のためにｋ個の識別特性を用い、表示のためにｍ個の識別特性を用いる理由は、類似の格納データ・セグメントに関しての新規データ・セグメントの変更により引き起こされ得る最大ハッシュ値に対する２つの可能な影響が存在することである。第１の影響は、対応するブロックを含むデータが変更されたために最大ハッシュ値が消滅する場合があることである。第２の影響は、変更データがより大きい最大ハッシュ値を導入し、それにより以前の最大ハッシュ値を置き換える場合があることである。第２の影響を解決するために、ｋ個の識別特性を用いた類似性検索が行われる一方で、データ・セグメントはｍ個の識別特性で表される。
【００４１】
一実施形態において、入力データ・セグメントは、複数の固定サイズのサブ・セグメントに分割される。このセグメントの可能な固定サイズの値は、数十又は数百キロバイト、例えば５１２ＫＢである。ｋの値はサブ・セグメントの固定サイズより小さいと仮定する。類似性検索のためのｋ個の識別特性が全データ・セグメントに対して計算されると同時に、ｍ個の識別特性が各々のサブ・セグメント、並びに全データ・セグメントに対して計算され、ダイジェスト・インデックス内に格納される。
【００４２】
さらに、一実施形態において、ダイジェスト・インデックスは２つの機能（場合により２つの内部インデックス構造を伴う）を提供する。識別特性（ｄｉｓｔｉｎｇｕｉｓｈｉｎｇ  ｃｈａｒａｃｔｅｒｉｓｔｉｃ）インデックス又はＤＣインデックスと呼ぶ第１の機能において、インデックスは、全データ・セグメントのｍ個の識別特性、及び検索のための識別特性の所与の値を格納し、格納データ・セグメントの整合する識別特性の検出を可能にする。照合される識別特性の各インデックス・レコードはまた、それぞれのデータ・セグメントの格納位置と、それぞれのデータ・セグメント内の識別特性の特定の位置とに対するポインタを含む。ストレージ識別子インデックス又はＳＩインデックスと呼ぶ第２の機能において、インデックスは、データ・サブ・セグメントのｍ個の識別特性、及びサブ・セグメントの所与のストレージ識別子（ここでストレージ識別子は、本質的にストレージ内でのそれぞれのデータ・サブ・セグメントの位置を識別する）を格納し、特定のサブ・セグメントの識別特性の検出を可能にする。取り出された識別特性の各インデックス・レコードは、その値、識別特性に関連付けられた最大ハッシュ値、及びその識別特性の格納位置を含む。
【００４３】
図８は、例示的な識別特性（ＤＣ）インデックス及びストレージ識別子（ＳＩ）インデックス、並びにインデックスを用いる例示的な方法１９０を示す。ブロック１９２において、入力データ・セグメントのｋ個の識別特性に関する検索が行われる。これらは、ブロック１９４において、各データ・セグメントに関するｍ個の識別特性を格納するＤＣインデックスに供給される。類似の格納データ・セグメントの整合する識別特性を含む検索結果がブロック１９６において示される。ブロック１９８において、格納サブ・セグメントのストレージ識別子／位置を用いて検索が行われる。これらは、ブロック２００において、各データ・サブ・セグメントに関するｍ個の識別特性を格納するＳＩインデックスに供給される。指定された格納データ・サブ・セグメントの識別特性を含む検索結果がブロック２０２において示される。
【００４４】
ＤＣインデックスは、入力データ・セグメントの類似性検索プロセスにおいて、ストレージ内の類似のデータ・セグメントを見出すために用いられる。ＳＩインデックスは、（１）以下で詳述する合成バックアップの識別特性の最適化計算、（２）データ・セグメント集合がストレージから削除されたときに、これらのデータ・セグメントの識別特性をＳＩインデックスから取り出し、次いでＤＣインデックス（ＳＩインデックスからの情報を用いて）及びＳＩインデックスの両方から削除すること、及び（３）あるデータ・セグメントの識別特性をＤＣインデックスから除去する必要があるときに（例えば、より新しいデータ・セグメントの識別特性でそれらを置き換えるために）、その識別特性をＳＩインデックスから取り出し、次いでＤＣインデックスから除去すること、を含む幾つかの目的のために用いられる。
【００４５】
次に図１０及び図１１を参照すると、合成バックアップ内のデータ・セグメントの識別特性を既存の識別特性に基づいて計算する例示的な方法２００の説明がひとまとめで示される。方法２００は、入力データ・セグメントにより参照される格納データ・サブ・セグメントを決定する（ステップ２０４）ことによって開始する（ステップ２０２）。これは、バックアップ・アプリケーションによって与えられるメタデータ命令に基づいて行われ、それにより合成バックアップ内のデータ・セグメントが構築される。これらのメタデータ命令は、所与のセグメントを構築するために用いられる格納データを指定する。この情報から、ストレージ・システムは、入力データ・セグメントにより参照される格納データ・サブ・セグメント（及びそれらのストレージ識別子）を推定する。
【００４６】
参照されたサブ・セグメントの識別特性（各サブ・セグメントに関するｍ個の識別特性）がＳＩインデックスから取り出される（ステップ２０６）。合成バックアップからの入力データ・セグメントは固定サイズのサブ・セグメントに分割され、そのサイズは格納サブ・セグメントのサイズと同一である（ステップ２０８）。第１の入力サブ・セグメントが検討される（ステップ２１０）。入力サブ・セグメントの各々のサブ・セグメントに対して、以下が実行される。入力サブ・セグメントは、少なくとも１つの、且つ、ｆ個までの格納サブ・セグメントを参照する。サブ・セグメントのサイズが合成バックアップによって参照されるストレージ内のデータ・セグメントの最小サイズよりも小さいと仮定すると、入力サブ・セグメントと格納サブ・セグメントとのアラインメントに応じて、入力サブ・セグメントは１個と４個との間の格納サブ・セグメントを参照することができる。このことは、前の図９に示される。この図において、入力サブ・セグメントは、それらが参照する格納サブ・セグメントの上に示され、垂直の実線はサブ・セグメントのアラインメント境界を示す。この図の部分（Ａ）及び（Ｂ）は、連続した格納セグメントを参照する入力サブ・セグメントを示し、部分（Ｃ）−（Ｅ）は２つの分離した格納セグメントを参照する入力サブ・セグメントを示す。サブ・セグメントのサイズが、合成バックアップにより参照されるストレージ内のデータ・セグメントの最小サイズよりも大きいと仮定すると、入力サブ・セグメントはｆ個までの格納サブ・セグメントを参照することができ、ここで、ｆは、入力サブ・セグメントのサイズを合成バックアップにより参照される格納データ・セグメントの最小サイズで割り、２を掛けた（各参照には２つの格納サブ・セグメントを関連付けることができるため）値に等しい。
【００４７】
図１０に戻ると、入力サブ・セグメントによって参照される格納サブ・セグメントの数はｒで表される。参照されるサブ・セグメントの各々にはＳＩインデックスから取り出されたｍ個の識別特性が関連付けられ（図９に示すように）、これらのｒ×ｍ個の識別特性を以下のように検討する。この識別特性の各々に関連付けられた最大ハッシュ値を考える。ＳＩインデックスから取り出された各々の識別特性のレコード内には、それに関連付けられた最大ハッシュ値も含まれることに留意されたい。ストレージ内のｒ個の参照されるサブ・セグメントのうちのサブ・セグメントｊの識別特性に関連付けられた最大ハッシュ値の集合は、次式で表される。
【数１】
0005878548.tif 000002
閾値ハッシュ値は、次式のように計算される（ステップ２１２）。
【数２】
0005878548.tif 000003
【００４８】
入力サブ・セグメントが１つよりも多くの格納セグメントを参照する場合（図９の部分（Ｃ）−（Ｅ）で例示）、且つ、サブ・セグメントの識別特性もまたその最後のブロックのバイトに基づいて計算される場合、２つの参照された格納セグメントの間の分離が起る入力サブ・セグメント内の位置に隣接する、図９のブロックｂ１及びｂ２で示す分離位置の両側のデータ・ブロックがロードされ、ハッシュ値は、ブロックｂ１の各バイト・オフセットに対して、以前に指定した方法を用いて計算される（ステップ２１４）。参照されるサブ・セグメントのｒ×ｍ個の識別特性に関連付けられた最大ハッシュ値、及び前のステップで計算されたハッシュ値を含むハッシュ値の集合から、以下の方法を用いて「候補」ハッシュ値の部分集合が計算される。ハッシュ値は、その値がｈＴに等しいか又はそれより大きく、且つ、そのストレージ位置が入力サブ・セグメントの境界内にある場合に、そのハッシュ値の部分集合に含められる（ステップ２１６）。
【００４９】
候補ハッシュ値の集合の中のハッシュ値の数がｍに等しいか又はそれより大きい場合（ステップ２１８）、以下のことが実行される。この集合のハッシュ値が、それらの値の降順に並べられる（ステップ２２２）。最初の（即ち、最も大きい）ｍ個のハッシュ値が、ｍ個の識別特性を計算するのに用いられ、その結果、各々のハッシュ値νに対して、その識別特性が、ハッシュ値νに関連付けられたブロックに対して１バイトだけシフトしたブロックのハッシュ値となるように選択される（ステップ２２４）。検討中のハッシュ値νが参照されるサブ・セグメントのｒ×ｍ個の識別特性の集合からの識別特性に関連付けられる場合、その識別特性の値は、ＳＩインデックスから取り出されたそれぞれのレコードから容易に得ることができる。検討中のハッシュ値νがステップ２１４で計算されたハッシュ値である場合には、その識別特性は、ステップ２１４で計算されたハッシュ値の集合から容易に得ることができる。前のステップで計算されたｍ個の識別特性が入力サブ・セグメントのｍ個の識別特性として指定される（ステップ２２６）。指定された識別特性は後で（そのそれぞれの入力サブ・セグメントに関連付けられて）ＳＩインデックス内に格納され、さらに、後にＤＣインデックス内に格納される、全入力データ・セグメントのｍ個の識別特性を計算するための基礎として役立つ（以下に詳述するように）。ステップ２２８は、入力セグメント内にさらなるサブ・セグメントが存在するかどうか問い合わせ、存在する場合には、方法２００はさらなる処理のためにステップ２１２に戻る。
【００５０】
ステップ２１８に戻ると、候補ハッシュ値の集合の中のハッシュ値の数がｍより小さい場合、以下のことが実行される。入力サブ・セグメントのそれぞれのデータがストレージから取り出され、その識別特性がデータに基づいて計算される（ステップ２２０）。この場合、サブ・セグメントのｍ個の識別特性は、既存の識別特性に基づいて計算することができない。しかし、それらのストレージ位置に関しての識別特性の予想される一様な分布に基づけば、この場合の頻度は、入力サブ・セグメントのｍ個の識別特性を既存の識別特性に基づいて計算することができる場合に比べて低いはずである。再び方法２００はステップ２２８に戻り、該当する場合にはさらなる処理のためにステップ２１２に戻る。
【００５１】
ステップ２２８において、さらなるサブ・セグメントが存在しない場合、入力データ・セグメントのｍ個の識別特性は、以下の方法を用いて計算される。入力セグメント内にｓ個のサブ・セグメントがあると仮定して、入力セグメントの全てのサブ・セグメントに対して計算されたｓ×ｍ個の識別特性の集合を考える。この集合の識別特性は、そのそれぞれの最大ハッシュ値の降順に並べられる（ステップ２３０）。この集合のこの順序における最初のｍ個の識別特性（即ち、最も大きいそれぞれの最大ハッシュ値を有するｍ個の識別特性）が、入力データ・セグメントのｍ個の識別特性として選択される（ステップ２３２）。これらの識別特性は、後でＤＣインデックス内に格納される（そのそれぞれの入力データ・セグメントに関連付けられる）。方法２００はその後、終了する（ステップ２３４）。
【００５２】
合成バックアップのデータのダイジェストを合成バックアップにより参照されるデータ・セグメントの既存の格納されたダイジェストに基づいて効率的に計算するための上述の方法２００は、計算プロセス中のデータ自体へのアクセスを最小限にし、従って、ダイジェスト計算プロセス及び合成バックアップ全体の構築時間の両方を著しく加速する。
【００５３】
図１２は、例証的な実施形態の態様を実装することができるプロセッサ・デバイスを前もって含む重複排除システム２５０の例示的な部分２５２を示す。重複排除システム２５０の部分２５２は、以下の例証的な実施形態の機構を実装することができるコンピュータ環境においてその一部分として動作することができる。しかし、図１２は単に例示的なものに過ぎず、種々の実施形態の例示的な態様を実装することができる特定のアーキテクチャに対する何らかの限定を表明又は含意することを意図したものではないことを理解されたい。図１２に示すアーキテクチャに対する多くの変更を以下の説明及び特許請求される主題の範囲及び趣旨から逸脱せずに行うことができる。
【００５４】
部分２５２は、プロセッサ２５４、及びランダム・アクセス・メモリ（ＲＡＭ）などのメモリ２５６を含む。重複排除システム２５０は、便宜上図示しないが、ウィンドウなどの画像をグラフィカル・ユーザ・インタフェース上でユーザに示すディスプレイ、キーボード、マウス、プリンタなどを含む幾つかのコンポーネントに動作可能に結合することができる。勿論、当業者であれば、上記のコンポーネントの任意の組合せ、又は任意の数の異なるコンポーネント、周辺装置、及び他のデバイスを重複排除システム２５０と共に使用することができることを認識するであろう。
【００５５】
例証的な実施形態において、重複排除システム２５０及び／又は部分２５２は、メモリ２５６に格納されているオペレーティング・システム（ＯＳ）２５８（例えば、ｚ／ＯＳ、ＯＳ／２、ＬＩＮＵＸ、ＵＮＩＸ、ＷＩＮＤＯＷＳ、ＭＡＣ  ＯＳ）並びに入力及びコマンドを受け取って結果を表示するためのユーザとのインタフェースの制御下で動作する。本発明の一実施形態において、ＯＳ２５８は、本発明による合成バックアップ機能を促進する。最後に、ＯＳ２５８は、以下に説明する例示的な方法における種々のプロセス及び機構を実行するように適合させることができるタスク・スケジューリング・モジュール２６４を含む。
【００５６】
重複排除システム２５０及び／又は部分２５２は、例えばＣＯＢＯＬ、ＰＬ／１、Ｃ、Ｃ＋＋、ＪＡＶＡ、ＡＤＡ、ＢＡＳＩＣ、ＶＩＳＵＡＬ  ＢＡＳＩＣなどのプログラミング言語又は任意の他のプログラミング言語で書かれたアプリケーション・プログラム２６０をプロセッサ２５４により可読なコードに変換することを可能にするコンパイラ２６２を実装することができる。コンパイル後、アプリケーション・プログラム２６０は、コンパイラ２６２を用いて生成された関係及び論理を用いて、重複排除システム２５０及び／又は部分２５２のメモリ２５６の内部に格納されているデータにアクセスし、操作する。
【００５７】
本発明による機構及びプロセスをさらに実装及び実行するために、ＯＳ２５８は、メモリ２５６、プロセッサ２５４、アプリケーション・プログラム２６０並びに他のコンピュータ処理コンポーネント、ネットワーキング・コンポーネント及びストレージ・コンポーネントと合同して、合成バックアップ機能を実行及び促進するための付加的なモジュールを実装することができるが、これらは便宜上図示しない。当業者であれば認識するように、ここで説明したこれらの付加的なモジュールの機構は、種々の形態及びアーキテクチャで実装することができる。従って、この図におけるタスク・スケジューリング・モジュール２６４の説明もやはり、重複排除システム２５０及び／又は部分２５２内の可能なコンピューティング・コンポーネント間の論理的関係を明示することを意図したものであり、特定の物理構造又は関係を含意するものではない。
【００５８】
一実施形態において、オペレーティング・システム２５８、アプリケーション・プログラム２６０及びコンパイラ２６２並びにタスク・スケジューリング・モジュール２６４及び付加的なモジュールを実装する命令は、コンピュータ可読媒体内に有形に具体化され、この媒体としては、１つ又は複数の固定若しくは取外し可能なデータ記憶装置、例えば、ｚｉｐドライブ、ディスク、ハード・ドライブ、ＤＶＤ／ＣＤ−ＲＯＭ、デジタル・テープ、ＳＳＤなどを挙げることができる。さらに、オペレーティング・システム２５８及びアプリケーション・プログラム２６０は、重複排除システム２５０及び／又は部分２５２によって読み出されて実行されたときに、重複排除システム２５０及び／又は部分２５２に本発明を実施及び／又は使用するのに必要なステップを実行させる。アプリケーション・プログラム２６０及び／又はオペレーティング・システム２５８の命令はまた、メモリ２５６内に有形に具体化することもでき、及び／又は、種々のコンポーネントを介したネットワーク機能により伝送するか又はアクセスすることができる。従って、用語「製品」、「プログラムストレージデバイス」及び「コンピュータ・プログラム製品」は、本明細書で用いる場合、任意のコンピュータ可読デバイス又は媒体からアクセス可能な及び／又は動作可能なコンピュータ・プログラムを包含することが意図されている。
【００５９】
本発明の実施形態は、例えば、ストレージ・エリア・ネットワーク（ＳＡＮ）のようなコンピューティング・デバイスのネットワークを含む分散コンピュータ・システムを管理するための機能を含む１つ又は複数の関連付けられたソフトウェア・アプリケーション・プログラム２６０を含むことができる。従って、プロセッサ２５４は、１つ又は複数のストレージ管理プロセッサ（ＳＭＰ）又は他の専用デバイスを含むことができる。アプリケーション・プログラム２６０は、単一コンピュータ及び／又は重複排除システム２５０内で動作することもでき、又は、コンピューティング・デバイスのネットワークを含む分散コンピュータ・システムの一部として動作することもできる。ネットワークは、ローカル・エリア・ネットワーク及び／又はインターネット接続（これは公設のもの、又は、例えば仮想プライベート・ネットワーク（ＶＰＮ）接続を介したセキュリティ保護されたものとすることができる）を介して、又はファイバ・チャネルＳＡＮ若しくは当業者にはれば理解される他の既知の種類のネットワークを介して接続された、１つ又は複数のコンピュータを包含することができる。（ファイバ・チャネルＳＡＮは、通常はコンピュータがストレージ・システムと通信するためだけに用いられ、コンピュータ相互の通信には用いられないことに留意されたい）。
【００６０】
当業者であれば認識するように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又はソフトウェア態様とハードウェア態様とを組み合せた実施形態の形を取ることができ、これらは全て一般的に、本明細書では「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の態様は、具体化されたコンピュータ可読プログラム・コードを有する１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態を取ることができる。
【００６１】
１つ又は複数のコンピュータ可読媒体の任意の組合せを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、それらに限定されないが、電子、磁気、光、電磁気、赤外、又は半導体のシステム、装置、若しくはデバイス、又はこれらの任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例（非網羅的なリスト）には、１つ又は複数の線を有する電気接続、携帯用コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、携帯用コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、又はこれらの任意の適切な組合せが含まれる。本明細書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、若しくはデバイスによって、又はそれとの関連で用いられるプログラムを含む又は格納することができる任意の有形媒体とすることができる。
【００６２】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、又はこれらの任意の適切な組合せを含むがそれらに限定されない任意の適切な媒体を用いて伝達することができる。本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向言語、及び、「Ｃ」プログラミング言語又は類似のプログラミング言語などの通常の手続型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組合せで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上及び部分的に遠隔コンピュータ上で、又は完全に遠隔コンピュータ若しくはサーバ上で実行することができる。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意の型のネットワークを通じてユーザのコンピュータに接続することができ、又は、外部コンピュータへの接続を行う（例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて）ことができる。
【００６３】
上で本発明の態様を、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照しながら説明した。フローチャート図及び／又はブロック図の各ブロック、及び、フローチャート図及び／又はブロック図内のブロックの組合せは、コンピュータ・プログラム命令によって実施することができることを理解されたい。これらのコンピュータ・プログラム命令を汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置に供給して機械を生成し、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実施するための手段を作成するようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は特定の様式で機能する他のデバイスに指示することができるコンピュータ可読媒体内に格納して、コンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実施する命令を含んだ製品を生成するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードし、一連の動作ステップがコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実行されてコンピュータ実施のプロセスを生成するようにして、コンピュータ又は他のプログラム可能データ処理装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実施するためのプロセスをもたらすようにすることもできる。
【００６４】
上記の図のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実施するための１つ又は複数の実行可能命令を含むモジュール、セグメント、又はコード部分を表すことができる。また、幾つかの代替的実施において、ブロック内に示された機能は、図に示した順序とは別の順序で行うことができることに留意されたい。例えば、連続して示した２つのブロックは、実際には、実質的に同時に実行することができ、又は、ブロックは、関与する機能に応じて、場合によっては逆の順序で実行することができる。また、ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組合せは、指定された機能若しくは動作を実行する専用ハードウェアをベースとするシステム、又は、専用ハードウェアとコンピュータ命令との組合せによって実施することができることに留意されたい。
【００６５】
本発明の１つ又は複数の実施形態を詳しく説明したが、当業者であれば、それらの実施形態に対する変更及び改造を、添付の特許請求の範囲に示す本発明の範囲から逸脱せずに施すことができることを理解するであろう。
【符号の説明】
【００６６】
１０：合成バックアップのアーキテクチャ
３０：合成バックアップの構築フロー
１００：合成バックアップを構築する方法
１３０：重複排除プロセス
１７０：識別特性の計算方法
１９０：インデックス及びインデックスを用いる方法
２００：合成バックアップ内のデータ・セグメントの識別特性を計算する方法
２５０：重複排除システム
２５２：重複排除システム２５０の部分
【図１】
0005878548.tif 000004
【図２】
0005878548.tif 000005
【図３】
0005878548.tif 000006
【図４】
0005878548.tif 000007
【図５】
0005878548.tif 000008
【図６】
0005878548.tif 000009
【図７】
0005878548.tif 000010
【図８】
0005878548.tif 000011
【図９】
0005878548.tif 000012
【図１０】
0005878548.tif 000013
【図１１】
0005878548.tif 000014
【図１２】
0005878548.tif 000015