(57)【要約】  データ管理仮想化のためのシステムおよび方法が開示される。システムは、少なくともスナップショット機能およびバックアップ機能を含むデータ管理機能を実行するためのデータ管理機関と、電子的形式のサービスレベルアグリーメントを用いてデータ管理機能のスケジューリングを制御するサービスレベルポリシー機関とを有する。データオブジェクトは、時間の経過に伴ってデータの状態を表わすために時間的構造の編成された配列を用いて、重複排除された内容ストアにおいて編成される。ハッシュ署名は、第１の重複排除されたストアから第２の重複排除されたストアに重複排除されたコピーを実行するための内容区分を追跡するために使用される。ガーベジコレクションは、所与のデータオブジェクトの直前状態に対して変化した内容区分だけのために、重複排除された内容ストア上で実行される。【選択図】図４
2013543198.tif 000002
【特許請求の範囲】
【請求項１】
１次ストレージに対する余剰なアクセス動作を削減する形で、複数の所定のデータ管理機能を実行するためのシステムであって、
１次ストレージデータの一時点画像を２次ストレージに生成するように作動可能な少なくともスナップショット機能と、データの少なくとも１つのバックアップコピーを生成するように作動可能な少なくとも１つのバックアップ機能とを含む、データ管理機能を実行するためのデータ管理機関であって、データ管理機能を実行するためのスケジュールを規定する電子的サービスレベルアグリーメント（ＳＬＡ）に応答するデータ管理機関を備え、
データの一時点画像は、規定の時点におけるデータの完全なベースライン画像への参照と、より後の規定の時点における前記データの変化を示す差分データとを含み、
同時に実行される少なくともいくつかのデータ管理機能を必要とする前記スケジュールに応答して、前記２次ストレージへの更新の全ての対応する組のために前記１次ストレージが一度だけアクセスされるように、前記データ管理機関は、前記１次ストレージデータの一時点画像を生成し、前記一時点画像の前記差分情報を前記２次ストレージに通信し、前記１次データのバックアップコピーの前記少なくとも１つを更新する、システム。
【請求項２】
２次ストレージにある１次ストレージデータの前記一時点画像は、性能を最適化された２次ストレージ上に格納される、請求項１に記載のシステム。
【請求項３】
１次ストレージデータの前記一時点画像の前記バックアップコピーは、遠隔ストレージ上に格納される、請求項１に記載のシステム。
【請求項４】
１次ストレージデータの前記一時点画像の前記バックアップコピーは、容量を最適化されたストレージに格納される、請求項１に記載のシステム。
【請求項５】
１次ストレージデータの前記一時点画像の前記バックアップコピーは、容量を最適化されたストレージ上に重複排除された画像として格納される、請求項４に記載のシステム。
【請求項６】
差分データは、ビットマップの各ビットが１次ストレージデータの一部に対応するビットマップ情報を含み、データが変化したことを示すように設定される前記ビットマップのそれらの部分のための新たなデータを含む、請求項１に記載のシステム。
【請求項７】
差分データはエクステント情報を含む、請求項１に記載のシステム。
【請求項８】
前記データ管理機関は、データの一時点画像を提供するために前記１次ストレージを呼び出す論理部を含み、前記一時点画像を前記１次ストレージから検索する論理部を含む、請求項１に記載のシステム。
【請求項９】
所定のデータ管理機能を実行するためにおよび機能中の余剰を削減するためにカレンダーに基づいてスケジュールを規定するサービスレベルアグリーメント（ＳＬＡ）に従って、データを管理するためのシステムであって、
少なくともスナップショット機能と少なくとも１つのバックアップ機能とを含むデータ管理機能を実行するためのデータ管理機関を備え、前記データ管理機関は、電子的形式のＳＬＡを受信するサービスレベルポリシー機関を含み、前記データ管理機関は、前記ＳＬＡに従って前記データ管理機能の前記スケジューリングを制御し、
電子的ＳＬＡのそれぞれは、データを使用する対応するアプリケーションと関連付けられ、各ＳＬＡは少なくとも１つのサービスレベルポリシーを規定し、ＳＬＡ内のポリシーの収集が、所与の機能がいつ実行されるべきかについての非均一スケジュールを表現することができるように、ならびに、データの所与のソース上で実行されるべき複数データ管理機能を表現することができるように、各ポリシーは、データのためのソースプールと、コピーが前記ソースプールデータから作られるべきところである宛先プールと、当該ポリシーについての動作の前記頻度を示すコピー頻度と、期限が切れることが許可される前に所与のコピーがどのくらいの間保持されるべきであるかを示す保持期間と、前記ポリシーが実施される動作の時間および日を示すスケジュール情報とを規定し、
前記データ管理機関は、前記データの前記ソースプールがコピーされるデータの明瞭な画像を有するように、前記アプリケーションを用いておよび前記ソースプールを用いて準備動作を実行するように動作可能であり、前記ＳＬＡが、現在の時間に前記ソースプール上で実行される複数データ管理機能を規定する場合でも、前記準備動作は一度実行される、システム。
【請求項１０】
２つ以上のコピー動作が、同じソースプールと宛先プールとの間で同じ瞬間に行われるようにスケジュールされる場合、前記２つ以上のコピー動作のうちの１つだけが、前記データ管理機関によって実行され、当該コピーは、前記２つ以上のスケジュールされたコピー動作に対応する最も長い前記保持期間と関連付けられる、請求項９に記載のシステム。
【請求項１１】
準備動作は、アプリケーションデータと関連して格納するために前記アプリケーションについてのメタデータを収集する前記データ管理機関を含む、請求項９に記載のシステム。
【請求項１２】
準備動作は、アプリケーション静止動作を含む、請求項９に記載のシステム。
【請求項１３】
前記アプリケーション静止動作は、アプリケーションデータを更に更新することから前記アプリケーションをフリーズすることを含む、請求項１２に記載のシステム。
【請求項１４】
前記アプリケーション静止動作は、アプリケーションデータの前記アプリケーションサーバの前記入出力キャッシュをフラッシュすることを含む、請求項１２に記載のシステム。
【請求項１５】
時間状態間の差分情報を用いて第１のストレージプールから第２のストレージプールにデータをバックアップするためのシステムであって、
データのバックアップコピーを生成するためのバックアップ機能を少なくとも含む、データ管理機能を実行するためのデータ管理機関を備え、
前記データ管理機関は、第１のストレージプール上のアプリケーションデータの一時点画像を生成するために一連のスナップショット動作を実行するように動作可能であり、連続的な一時点画像のそれぞれは、前記アプリケーションデータの規定の、連続的な時間状態に対応し、各スナップショット動作は、どのアプリケーションデータが変化したかと、前記対応する時間状態について変化した前記アプリケーションデータの前記内容とを示す差分情報を生成し、
前記データ管理機関は、前記アプリケーションデータのために少なくとも１つのバックアップ機能を実行するように動作可能であり、前記バックアップ動作は、非連続的な時間状態における実行のためにスケジュールされ、
前記データ管理機関は、データの対応するバックアップコピーのために前記アプリケーションデータ上で実行される最後のバックアップ機能の前記時間状態を示す時間状態情報を有する履歴情報を保持するように動作可能であり、
前記データ管理機関は、前記アプリケーションデータ上で実行される前記最後のバックアップ機能の前記時間状態と、前記アプリケーションデータ上で実行される現在スケジュールされた前記バックアップ機能の前記時間状態との間の各時間状態についての前記差分情報から複合差分情報を生成するように動作可能であり、前記データ管理機関は、前記現在の時間状態についてのデータのバックアップコピーを生成するために、前記最後の時間状態における前記データの前記バックアップコピーでコンパイルされる第２のストレージプールに前記複合差分情報を送信するように動作可能である、システム。
【請求項１６】
差分情報は、ビットマップの各ビットが１次ストレージデータの一部に対応しているビットマップ情報を含み、前記データが変化したことを示すように設定された前記ビットマップのそれらの部分のための新しいデータを含む、請求項１５に記載のシステム。
【請求項１７】
差分情報はエクステント情報を含む、請求項１５に記載のシステム。
【請求項１８】
複数のバックアップ機能は、非連続的な時間状態の異なる隔たりをそれぞれ用いて、および、前記異なる隔たりに対応して生成された異なる複合差分情報をそれぞれ用いて、同時に行われるようにスケジュールされる、請求項１５に記載のシステム。
【請求項１９】
時間状態間の差分情報を用いてデータのバックアップコピーからストレージプールに前記データを復元するためのシステムであって、
前記時間状態を示す履歴情報を保持するように動作可能であるデータ管理機関であって、ストレージプールが、前記時間状態についてのアプリケーションデータの一時点画像を有する、データ管理機関を備え、
前記データ管理機関は、ストレージプール内のアプリケーションデータを規定の時間状態についての前記データの一時点画像に復元するための論理部を含み、
前記データ管理機関は、前記規定の時間状態の前の時間状態について前記ストレージプールにおける前記データの一時点画像の存在を識別するように動作可能であり、前記データの前記バックアップコピーから前記ストレージプールに差分情報を送信し、前記差分情報は、どのアプリケーションデータが変化したかと、前記規定の時間状態と前記規定の時間状態の前の前記時間状態との間の前記時間の間に前記変化したアプリケーションデータの前記内容とを示す、システム。
【請求項２０】
差分情報は、ビットマップの各ビットが１次ストレージデータの一部に対応するビットマップ情報を含み、前記データが変化したことを示すように設定された前記ビットマップのそれらの部分のためのバックアップデータを含む、請求項１９に記載のシステム。
【請求項２１】
差分情報はエクステント情報を含む、請求項１９に記載のシステム。
【請求項２２】
前記前の時間状態および前記規定の時間状態は、非連続的な時間状態である、請求項１９に記載のシステム。
【請求項２３】
データオブジェクトの時間的状態間の差分情報を用いて、時間の経過に伴って変化する前記データオブジェクトの重複排除された画像を形成する方法であって、
第１の時間的状態について前記データオブジェクトの前記内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
前記データオブジェクトの第１の時間的状態にある前記データオブジェクトを表わすようにハッシュ構造の編成された配列を生成することであって、前記ハッシュ構造の下位の組について、各構造が、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
前記第１の時間的状態に関連する第２の時間的状態について前記データオブジェクトについての前記変化した内容を示し、および、前記データオブジェクト内の前記変化した内容の前記位置を示す、前記データオブジェクトのための差分情報を受信することと、
前記変化した内容のための少なくとも１つのハッシュ署名を形成することと、
固有である前記変化した内容を内容区分として前記データストアに格納することと、
前記変化した内容のための前記少なくとも１つのハッシュ署名用の新しい構造を組み込むために前記ハッシュ構造の前記編成された配列を修正することと、前記差分情報内に示されるような前記データオブジェクト内の前記変化した内容の前記位置に対応する位置における前記構造の前記編成された配列に前記新しい構造を組み込むことと、前記変化した内容について前記対応する内容区分に関して前記新しい構造のための前記ハッシュ署名を関連付けることと、
前記新しい構造を前記第２の時間的状態と関連付けることによって、第２の時間的状態についての前記データオブジェクトの重複排除された画像が、前記第２の時間的状態についての前記データオブジェクトの完全な画像の受信を要求すること無く、格納されることとを含む、方法。
【請求項２４】
前記変化した内容のための前記少なくとも１つのハッシュ署名を形成した後に、前記形成された署名は、前記形成された構造が前記編成された配列に既に存在するかどうかを判断するために、前記ハッシュ構造の前記編成された配列における少なくとも１つのハッシュ署名と比較される、請求項２３に記載の方法。
【請求項２５】
前記比較は、前記差分情報に示されるような前記変化した内容の前記位置に対応する位置にある前記編成された配列におけるハッシュ構造を用いて、まず行われる、請求項２３に記載の方法。
【請求項２６】
前記ハッシュ構造の前記編成された配列は、編成されたツリー構造である、請求項２３に記載の方法。
【請求項２７】
時間的構造の編成された配列は保持され、各時間的構造は、時間状態と関連付けられ、および、前記関連付けられた時間状態に対応する前記ハッシュ構造を示す情報をそれぞれ含む、請求項２３に記載の方法。
【請求項２８】
時間の経過に伴って変化するデータオブジェクトの重複排除された画像を管理する方法であって、
各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わし、前記ハッシュ構造の別の下位の組は、内容が前記ハッシュ構造の前記編成された配列によって表わされるかどうかを判断するために、前記編成された配列が横断され得るように、対応する内容区分について前記ハッシュ署名のハッシュ署名階層を含む、当該ハッシュ構造の編成された配列を生成することと、
各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために、時間的構造の編成された配列を保持することであって、各構造が、前記データオブジェクトの時間的状態と関連付けられ、前記構造の前記論理的配列が、前記データオブジェクトの変化している前記時間的状態を示し、各時間的状態が、前記時間的状態の間に前記データオブジェクトの前記内容を表わす前記ハッシュ構造と関連付けられる、当該時間的構造の編成された配列を保持することとを含む、方法。
【請求項２９】
所与の時間的状態におけるデータオブジェクトについての前記時間的構造は、前記データオブジェクトの前の時間的状態に対して変化したデータオブジェクト内容のためのハッシュ構造と関連付けられる、請求項２８に記載の方法。
【請求項３０】
前記変化したデータ内容のための前記ハッシュ構造は、前の時間的状態についての前記ハッシュ構造の前記編成された配列から切り離されたグラフとして編成される、請求項２８に記載の方法。
【請求項３１】
１つの時間的状態から別の時間的状態までのデータオブジェクトの内容の差分は、当該差分が複数の時間的状態を通して判断され得るように、他の時間的状態についておよび前記他の時間的状態と前記１つの時間的状態との間にある全ての他の時間的状態について、前記時間的構造の前記編成された配列を参照することによって判断される、請求項２８に記載の方法。
【請求項３２】
画像の一部が符号化された形態でハッシュ表に直接的に格納される、重複排除された当該画像を格納する方法であって、
各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含有するフィールドを含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成が、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
前記データオブジェクトの前記重複排除された画像に含まれる内容を受信することと、
符号化された値がハッシュ署名を含有するための前記フィールド内に収まることになる、既定の無損失符号化技術を用いて、前記受信された内容が符号化され得るかどうかを判断することと、
そうである場合、前記符号化を前記フィールドに配置することと、前記フィールドが前記重複排除された画像のために符号化された内容を含むことを示すために前記ハッシュ構造をマーキングすることと、
そうではない場合、前記受信された内容のためのハッシュ署名を生成することと、前記ハッシュ署名を前記フィールドに配置することと、前記ハッシュ署名が固有である場合には前記受信された内容を前記データストア内の対応する内容区分に配置することとを含む、方法。
【請求項３３】
前記無損失符号化はランレングス符号化である、請求項３２に記載の方法。
【請求項３４】
各データオブジェクトのためのハッシュ署名は、ＳＨＡ‐１暗号ハッシュ機能を用いて生成される、請求項３２に記載の方法。
【請求項３５】
前記符号化された内容から前記内容を後に再構成することを更に含む、請求項３２に記載の方法。
【請求項３６】
データオブジェクトがどのように時間の経過に伴って変化するかを表わす情報で第２の重複排除ストアを更新するために、第１の重複排除ストアを用いる方法であって、
第１の重複排除ストアで、各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
第１の重複排除ストアで、各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
第１の重複排除ストアで、各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために時間的構造の編成された配列を保持することであって、各構造が、前記データオブジェクトの時間的状態と関連付けられ、前記構造の前記論理的配列は、前記データオブジェクトの変化する前記時間的状態を示し、各時間的状態は、前の時間的状態に対して変化した前記データオブジェクトの前記内容を表わす前記ハッシュ構造と関連付けられる、当該時間的構造の編成された配列を保持することと、
第２の重複排除ストアで、各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
第２の重複排除ストアで、各データオブジェクトについて、前記第１の重複排除ストアにおける前記ハッシュ構造の少なくとも下位の組である、ハッシュ構造の編成された配列を保持することと、
第２の重複排除ストアで、各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために、時間的構造の編成された配列を保持することであって、時間的構造の前記編成された配列は、前記時間的状態の下位の組を表わす、前記第１の重複排除ストアにおける前記時間的構造の少なくとも下位の組である、当該時間的構造の編成された配列を保持することと、
前記第１の重複排除ストアからの情報で前記第２の重複排除ストアを更新する要求に応答して、前記第１および第２の重複排除ストアに共通である時間的状態であって、前記第２の重複排除ストアの現在の状態に時間的に近い時間的状態を見つけることと、
前記共通状態から前記第１の重複排除ストアの前記現在の時間的状態に変化した前記内容のためのハッシュ署名の組をコンパイルすることと、前記第２の重複排除ストアが、前記第１の重複排除ストアの前記現在の時間的状態まで前記データオブジェクトの前記内容を表わすために、前記第２の重複排除ストアのハッシュ構造の編成された配列を更新し得るように、前記ハッシュ署名の前記組を前記第２の重複排除ストアに送信することとを含む、方法。
【請求項３７】
各重複排除ストアが含有する前記ハッシュ署名の履歴を保持することと、前記第２の重複排除ストアに対して新しい前記ハッシュ署名の前記組におけるハッシュ署名について、前記第２の重複排除ストアが、前記新しい内容で前記第２の重複排除ストアのデータストアを更新し得るように、前記第１の重複排除ストアから前記対応する内容区分を送信することとを更に含む、請求項３６に記載の方法。
【請求項３８】
前記第２の重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の最も近い近隣状態である、請求項３６に記載の方法。
【請求項３９】
前記第２の重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の先祖状態である、請求項３６に記載の方法。
【請求項４０】
前記第２の重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の子状態である、請求項３６に記載の方法。
【請求項４１】
前記最も近い近隣状態は、端部の組の合計が端部の任意の他の組の合計よりも小さい当該端部の組によって接続された状態である、請求項３８に記載の方法。
【請求項４２】
前記構造の前記論理的配列は分岐を含有する、請求項３６に記載の方法。
【請求項４３】
前記現在の状態で、前記現在の時間的状態に対応する前記内容区分がどの状態に送信されているかを記録することを更に含む、請求項３７に記載の方法。
【請求項４４】
マークアンドスイープ手法における余剰なマーク動作が回避される重複排除ストレージシステムにおいて、もはや参照されない内容区分を識別するためにガーベジコレクションを実行する方法であって、
前記重複排除ストレージシステムにおいて各データオブジェクトの固有の内容を複数の内容区分として編成することと、
各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成が、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わし、前記ハッシュ構造の別の下位の組は、前記編成された配列が、内容が前記ハッシュ構造の前記編成された配列によって表わされるかどうかを判断するために横断され得るように、対応する内容区分のための前記ハッシュ署名のハッシュ署名階層を含む、当該ハッシュ構造の編成された配列を生成することと、
各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために時間的構造の編成された配列を保持することであって、各構造が、前記データオブジェクトの時間的状態と関連付けられ、前記構造の前記論理的配列が、前記データオブジェクトの変化する前記時間的状態を示しており、各時間的状態が、前記データオブジェクトの直前の時間的状態に対して変化した前記データオブジェクトの前記内容を表わす前記ハッシュ構造と関連付けられる、当該時間的構造の編成された配列を保持することと、
前記重複排除ストレージシステムにおける各内容区分について、前記各内容区分の対応するガーベジコレクション状態をクリアにすることと、
前記時間的構造にわたって反復することと、各時間的構造について、前記データオブジェクトの直前の時間的状態に対して変化した前記内容区分だけについて前記関連付けられた内容区分のために前記ガーベジコレクション状態をマーキングすることと、
前記反復するステップの後に、クリアにされたガーベジコレクション状態を有するストレージの空いたプールに任意の内容区分を戻すこととを含む、方法。
【請求項４５】
深さ優先探索を用いて前記時間的構造にわたって反復することを更に含む、請求項４４に記載の方法。
【請求項４６】
周期的な間隔で前記方法を繰り返すことを更に含む、請求項４４に記載の方法。
【請求項４７】
データオブジェクトの新しい時間的状態の前記追加に後続する前記方法を実行することを更に含む、請求項４４に記載の方法。
【請求項４８】
データオブジェクトの時間的状態の前記除去に後続する前記方法を実行することを更に含む、請求項４４に記載の方法。
【請求項４９】
前記重複排除されたストレージシステムに割り当てられた内容区分の全ての広域参照リストを保持することを更に含む、請求項４４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
この出願は、２０１０年１１月１６日に出願され、Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｐｅｒｆｏｒｍｉｎｇ  Ｂａｃｋｕｐ  ｏｒ  Ｒｅｓｔｏｒｅ  Ｏｐｅｒａｔｉｏｎｓ  Ｕｔｉｌｉｚｉｎｇ  Ｄｉｆｆｅｒｅｎｃｅ  Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｔｉｍｅｌｉｎｅ  Ｓｔａｔｅ  Ｉｎｆｏｒｍａｔｉｏｎと題された米国特許出願第１２／９４７，３９３号と、２０１０年１１月１６日に出願され、Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｍａｎａｇｉｎｇ  Ｄａｔａ  ｗｉｔｈ  Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔｓ  Ｔｈａｔ  Ｍａｙ  Ｓｐｅｃｉｆｙ  Ｎｏｎ‐Ｕｎｉｆｏｒｍ  Ｃｏｐｙｉｎｇ  ｏｆ  Ｄａｔａと題された米国特許出願第１２／９４７，３８５号と、２０１０年１１月１６日に出願され、Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｐｅｒｆｏｒｍｉｎｇ  ａ  Ｐｌｕｒａｌｉｔｙ  ｏｆ  Ｐｒｅｓｃｒｉｂｅｄ  Ｄａｔａ  Ｍａｎａｇｅｍｅｎｔ  Ｆｕｎｃｔｉｏｎｓ  ｉｎ  ａ  Ｍａｎｎｅｒ  Ｔｈａｔ  Ｒｅｄｕｃｅｓ  Ｒｅｄｕｎｄａｎｔ  Ａｃｃｅｓｓ  Ｏｐｅｒａｔｉｏｎｓ  ｔｏ  Ｐｒｉｍａｒｙ  Ｓｔｏｒａｇｅと題された米国特許出願第１２／９４７，４３６号と、２０１０年１１月１６日に出願され、Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｃｒｅａｔｉｎｇ  Ｄｅｄｕｐｌｉｃａｔｅｄ  Ｃｏｐｉｅｓ  ｏｆ  Ｄａｔａ  ｂｙ  Ｔｒａｃｋｉｎｇ  Ｔｅｍｐｏｒａｌ  Ｒｅｌａｔｉｏｎｓｈｉｐｓ  Ａｍｏｎｇ  Ｃｏｐｉｅｓ  ａｎｄ  ｂｙ  Ｉｎｇｅｓｔｉｎｇ  Ｄｉｆｆｅｒｅｎｃｅ  Ｄａｔａと題された米国特許出願第１２／９４７，４１８号と、２０１０年１１月１６日に出願され、Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｍａｎａｇｉｎｇ  Ｄｅｄｕｐｌｉｃａｔｅｄ  Ｃｏｐｉｅｓ  ｏｆ  Ｄａｔａ  Ｕｓｉｎｇ  Ｔｅｍｐｏｒａｌ  Ｒｅｌａｔｉｏｎｓｈｉｐｓ  Ａｍｏｎｇ  Ｃｏｐｉｅｓと題された米国特許出願第１２／９４７，３７５号と、２０１０年１１月１６日に出願され、Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｉｍｐｒｏｖｅｄ  Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ  Ｏｐｅｒａｔｉｏｎｓ  ｉｎ  ａ  Ｄｅｄｕｐｌｉｃａｔｅｄ  Ｓｔｏｒｅ  ｂｙ  Ｔｒａｃｋｉｎｇ  Ｔｅｍｐｏｒａｌ  Ｒｅｌａｔｉｏｎｓｈｉｐｓ  Ａｍｏｎｇ  Ｃｏｐｉｅｓと題された米国特許出願第１２／９４７，３８３号と、２０１０年１１月１６日に出願され、Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｃｒｅａｔｉｎｇ  Ｄｅｄｕｐｌｉｃａｔｅｄ  Ｃｏｐｉｅｓ  ｏｆ  Ｄａｔａ  ｂｙ  Ｓｅｎｄｉｎｇ  Ｄｉｆｆｅｒｅｎｃｅ  Ｄａｔａ  Ｂｅｔｗｅｅｎ  Ｔｗｏ  Ｎｅａｒ‐Ｎｅｉｇｈｂｏｒ  Ｔｅｍｐｏｒａｌ  Ｓｔａｔｅｓと題された米国特許出願第１２／９４７，９４７，５１３号と、２０１０年１１月１６日に出願され、Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｃｒｅａｔｉｎｇ  Ｄｅｄｕｐｌｉｃａｔｅｄ  Ｃｏｐｉｅｓ  ｏｆ  Ｄａｔａ  Ｓｔｏｒｉｎｇ  Ｎｏｎ−Ｌｏｓｓｙ  Ｅｎｃｏｄｉｎｇｓ  ｏｆ  Ｄａｔａ  Ｄｉｒｅｃｔｌｙ  ｉｎ  ａ  Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｓｔｏｒｅと題された米国特許出願第１２／９４７，４３８号とに優先権を主張する。
【０００２】
技術分野
この発明は、データ管理、データ保護、災害復旧および事業継続に一般に関するものである。より詳細には、この発明は、差分情報および時系列状態情報を利用して、バックアップまたは復元動作を実行するためのシステムおよび方法に関するものである。
【背景技術】
【０００３】
アプリケーションデータのライフサイクルを管理するための事業要求は、伝統的に、複数ポイントソリューションをデプロイすることによって満たされており、その複数ポイントソリューションのそれぞれは、ライフサイクルの一部に対処する。このことは、データの複数コピーが複数回生成され個々のストレージリポジトリに移動される、複雑で高価なインフラストラクチャを結果として招いている。サーバ仮想化の採用は、簡単な、敏速なおよび低価格なコンピュータ処理インフラストラクチャのためのきっかけとなった。このことは、仮想ホストおよびストレージのより広範なデプロイメントにつながっており、コンピュータを使用する新興のモデルと現行のデータ管理インプリメンテーションとの間のずれを更に悪化させている。
【０００４】
事業サービスを提供するアプリケーションは、そのアプリケーションのデータのライフサイクルの様々な段階でのそのアプリケーションのデータのストレージに依存する。図１は、例えば給与支払い管理などの事業サービスの基礎をなすデータベースなどのアプリケーションのデータに適用されることになるデータ管理動作の典型的な組を示す。事業サービスを提供するために、アプリケーション１０２は、いくらかの契約されたレベルの信頼性および可用性を有する１次データストレージ１２２を必要とする。
【０００５】
バックアップ１０４は、ハードウェアもしくはソフトウェア障害または人的エラーによる１次データストレージの破損から守るために取られる。典型的には、バックアップは、ローカルディスクまたはテープ１２４に毎日または毎週取られてもよく、また、遠隔の物理的に安全な位置１２５に少ない頻度で（毎週または毎月）移動されてもよい。
【０００６】
同じデータベースに基づく新しいアプリケーションの同時の開発および試験１０６は、データ１２６の別のコピーにアクセスできる開発チームを必要とする。そのようなスナップショットは、開発スケジュール次第で、毎週取られてもよい。
【０００７】
法的または自発的ポリシーの遵守１０８は、いくつかのデータが、安全に将来のアクセスのために数年間保持されることを要求し得る。通常、データは、長期アーカイビングシステム１２８に定期的に（例えば、毎月）コピーされる。
【０００８】
災害復旧サービス１１０は、１次事業サービスを提供するシステムが、いくらかの物理的災害に起因して故障する場合に、データの破局的損失から守る。１次データは、所与の他の制約（例えば費用など）を実現可能な限り、頻繁に物理的に別個の位置にコピーされる１３０。万一災害の場合には、１次サイトは再構築され得るし、データは安全なコピーから戻され得る。
【０００９】
事業継続サービス１１２は、１次サイトが障害された場合に事業サービスの継続を確実にするための機能を提供する。通常、このことは、１次データとほぼ段階が揃った（ｌｏｃｋ‐ｓｔｅｐ）１次データの最新のコピー１３２のみならず、複製システムおよびアプリケーションと、入ってくる要求を事業継続サーバに交換するための機構とを必要とする。
【００１０】
したがって、データ管理は、現在、ライフサイクルの様々な部分を管理するポイントアプリケーションを収集することである。これは、この２０年にわたるデータ管理ソリューションの発展の人工物になっている。
【図面の簡単な説明】
【００１１】
【図１】事業サービスについてのデータライフサイクルを管理するためにデプロイされた現行方法の簡略図である。
【図２】単一のデータ管理仮想化システムによるデータライフサイクル全体にわたるデータの管理の概要図である。
【図３】データ管理仮想化システムの簡略ブロック図である。
【図４】データ管理仮想化機関の図である。
【図５】オブジェクト管理およびデータ移動機関を例示する。
【図６】ストレージプールマネージャを示す。
【図７】サービスレベルアグリーメントの分解を示す。
【図８】アプリケーション特定モジュールを例示する。
【図９】サービスポリシーマネージャを示す。
【図１０】サービスポリシースケジューラのフローチャートである。
【図１１】内容参照可能ストレージ（ＣＡＳ）プロバイダのブロック図である。
【図１２】ＣＡＳシステム内のオブジェクトハンドルの定義を示す。
【図１３】ＣＡＳ内のオブジェクト用に格納された時間的関係グラフのためのデータモデルおよび動作を示す。
【図１４】ＣＡＳにおけるガーベジコレクションアルゴリズムの動作を表わす図である。
【図１５】オブジェクトをＣＡＳの中にコピーする動作についてのフローチャートである。
【図１６】データ管理仮想化システムの典型的なデプロイメントのシステム図である。
【図１７】データ管理仮想化システムと使用されるための特徴的な物理的サーバデバイスの概略図である。
【発明を実施するための形態】
【００１２】
例えば上記などの現行のデータ管理アーキテクチャおよびインプリメンテーションは、データライフサイクル管理の様々な部分に対処する複数アプリケーションを伴い、それらのアプリケーションの全ては、ある一定の共通機能、すなわち、（ａ）アプリケーションデータのコピーを作ること（この行為の頻度は、目標復旧時点（ＲＰＯ）と通例呼ばれる）と、（ｂ）排他的なストレージリポジトリに、典型的には所有権のある形式で、データのコピーを格納することと、（ｃ）保持時間として測定される、ある一定の期間にコピーを保持することとを実行する。ポイントソリューションのそれぞれにおける主な差異は、ＲＰＯの頻度と、保持時間と、使用される個々のストレージリポジトリの、容量、費用および地理的位置を含む、特徴とにある。
【００１３】
この開示は、データ管理仮想化に関するものである。例えばバックアップ、レプリケーションおよびアーカイビングなどのデータ管理アクティビティは、それらのデータ管理アクティビティが個々に分離して構成され動かされる必要がないという点で、仮想化される。代わりに、ユーザは、データのライフサイクルに関してそれらのデータ管理アクティビティの事業要求を定義し、データ管理仮想化システムは、それらのデータ管理アクティビティの動作を自動的に実行する。スナップショットは、１次ストレージから２次ストレージに取られる。次いで、このスナップショットは、他の２次ストレージへのバックアップ動作のために使用される。本質的に、任意の数のこれらのバックアップが作られてもよく、サービスレベルアグリーメントによって指定されたデータ保護のレベルを提供する。
【００１４】
この開示はまた、時間状態間の差分情報を用いて、第１のストレージプールから第２のストレージプールにデータをバックアップするためのシステムであって、データのバックアップコピーを生成するバックアップ機能を少なくとも含むデータ管理機能を実行するためのデータ管理機関を包含する、システムに関するものである。データ管理機関は、第１のストレージプール上のアプリケーションデータの一時点画像を生成するために一連のスナップショット動作を実行するように動作可能であり、連続的な一時点画像のそれぞれは、アプリケーションデータの規定の連続的な時間状態に対応し、スナップショット動作のそれぞれは、どのアプリケーションデータが変化したか、および対応する時間状態について変化したアプリケーションデータの内容を示す差分情報を生成する。データ管理機関はまた、非連続的な時間状態での実行のためにスケジュールされたアプリケーションデータのために少なくとも１つのバックアップ機能を実行するように動作可能であり、また、データの対応するバックアップコピー用のアプリケーションデータ上で実行される最後のバックアップ機能の時間状態を示す時間状態情報を有する保持履歴情報で満ちてもいる。データ管理機関は、アプリケーションデータ上で実行された最後のバックアップ機能の時間状態と、アプリケーションデータ上で実行される現在スケジュールされたバックアップ機能の時間状態との間の時間状態のそれぞれについての差分情報から複合差分情報を生成し、最後の時間状態でのデータのバックアップコピーでコンパイルされるように第２のストレージプールに複合差分情報を送信し、現在の時間状態についてのデータのバックアップコピーを生成する。
【００１５】
この開示に従うデータ管理仮想化技術は、以下の指導原理に基づくアーキテクチャおよびインプリメンテーションに基づいている。
【００１６】
第１に、アプリケーションのデータライフサイクル全体についてサービスレベルアグリーメント（ＳＬＡ）で、そのアプリケーションの事業要求を定義する。ＳＬＡは、単一のＲＰＯ、目標保持時間（Ｒｅｔｅｎｔｉｏｎ  Ｔｉｍｅ  Ｏｂｊｅｃｔｉｖｅ）および目標復旧時間（ＲＴＯ）をはるかに超えている。そのＳＬＡは、データライフサイクルの各段階についてデータ保護特徴を記載する。各アプリケーションは、異なるＳＬＡを有してもよい。
【００１７】
第２に、改良されたストレージ容量およびネットワーク帯域幅で、様々なストレージリポジトリにわたってデータを移動し、データ保護ライフサイクルを管理する統一されたデータ管理仮想化機関を提供する。データ管理仮想化システムは、時間の経過に伴って変化したデータの一部を追跡することによって、ならびに、コピーされ移動される必要があるデータの量を削減するデータ重複排除および圧縮アルゴリズムによって、現代のストレージシステムの拡張された能力に影響を及ぼすことにより、これらの改良を実現する。
【００１８】
第３に、ライフサイクル内の複数要素のための基準となるアプリケーションデータの単一のマスターコピーに影響を及ぼす。例えばバックアップ、アーカイバルおよびレプリケーションなどのデータ管理動作の多くは、保護されるデータの安定した、不変のコピーに依存する。データ管理仮想化システムは、複数目的のためにデータの単一のコピーに影響を及ぼす。システムによって保持されたデータの単一のインスタンスは、ソースとして機能することができ、各データ管理機能は、必要に応じてそのソースから追加のコピーを作ってもよい。このことは、伝統的なアプローチにおいて複数の独立したデータ管理アプリケーションによって複数回コピーされるアプリケーションデータを要求することとは対照的である。
【００１９】
第４に、物理的ストレージリソースを一連のデータ保護ストレージプールの中に抽象化し、その一連のデータ保護ストレージプールは、ローカルディスクおよびリモートディスク、ソリッドステートメモリ、テープ媒体および光学媒体、私用のストレージクラウド、公共のストレージクラウドおよび／またはハイブリッドのストレージクラウドを含む様々な種類のストレージの中から仮想化される。ストレージプールは、種類、物理的位置または基礎をなすストレージ技術に依存しないでアクセスを与える。データのライフサイクルのための事業要求は、異なる時間に異なる種類のストレージ媒体にデータをコピーすることを要求してもよい。データ管理仮想化システムは、ユーザが、異なるストレージ媒体をストレージプール、例えば、高速ディスクから成る迅速復旧プール、および大容量ディスク上の重複排除されたストア（ｓｔｏｒｅ）であり得る費用効果の高い長期ストレージプール、またはテープライブラリに分類し集約することを可能にする。データ管理仮想化システムは、各ストレージ媒体の固有の特徴をうまく利用するためにこれらのプール間でデータを移動することができる。ストレージプールを抽象化することは、種類、物理的位置または基礎をなすストレージ技術に依存しないでアクセスを与える。
【００２０】
第５に、基礎をなすデバイス機能および後の重複排除されるアプリケーションデータを利用して、ストレージプールと災害位置との間のデータの移動を改良する。データ管理仮想化システムは、ストレージプールを備えるストレージシステムの機能を発見し、データを効率的に動かすためにこれらの機能をうまく利用する。ストレージシステムが、データボリュームのスナップショットまたはクローンを生成する機能をサポートするディスクアレイである場合、データ管理仮想化システムは、データを１つの場所から読み出し、そのデータを別の場所に書き込む代わりに、この機能をうまく利用して、スナップショットを使用し、データのコピーを作ることになる。同様に、ストレージシステムが、変化追跡をサポートする場合、データ管理仮想化システムは、新しいコピーを効率的に生成するために変化分だけで古いコピーを更新することになる。ネットワークを通じてデータを移動する際には、データ管理仮想化システムは、ネットワークの他側上で既に利用可能であるデータを送信することを回避する重複排除および圧縮アルゴリズムを使用する。
【００２１】
データ移動を改良する１つの重要な態様は、アプリケーションデータが、時間の経過に伴ってゆっくりと変化することを認識することである。今日作られるアプリケーションのコピーは、一般に、昨日作られた同じアプリケーションのコピーに多くの類似点を有することになる。実際、データの今日のコピーは、一連のデルタ変換を用いて昨日のコピーとして表わされ得、デルタ変換自体のサイズは、通常、コピー自体におけるデータの全てよりもはるかに小さい。データ管理仮想化システムは、ビットマップまたはエクステントリストの形式にこれらの変換を取り込み、記録する。システムの一実施形態では、基礎をなすストレージリソース、つまりディスクアレイまたはサーバ仮想化システムは、ボリュームまたはファイルになされた変化を追跡可能である。これらの環境では、データ管理仮想化システムは、ストレージリソースに問い合わせてこれらの変化リストを取得し、その変化リストを保護されるデータと共に保存する。
【００２２】
データ管理仮想化システムの好適な実施形態では、アプリケーションの１次データアクセス経路上で傍受するための機構があり、その機構は、データ管理仮想化システムが、アプリケーションデータのどの部分が修正されたかを観察し、修正されたデータ自体のビットマップを生成することを可能にする。例えば、アプリケーションが、特定期間の間にブロック１００、２００および３００を修正する場合、データ管理仮想化システムは、これらの事象について傍受し、これらの特定ブロックが修正されたことを示すビットマップを生成することになる。アプリケーションデータの次のコピーを処理する際、データ管理仮想化システムは、ブロック１００、２００および３００だけが修正されたブロックであることを知っているので、これらのブロック１００、２００および３００だけを処理することになる。
【００２３】
システムの一実施形態では、アプリケーション用の１次ストレージが現代のディスクアレイまたはストレージ仮想化アプライアンスであり、データ管理仮想化システムは、データの最初のコピーを作るために、基礎をなすストレージデバイスの一時点スナップショット機能をうまく利用する。この仮想コピー機構は、最初のコピーを生成する迅速な、効率的なかつ低負荷な技術であって、全てのビットがコピーされるか一緒に格納されることになることを保証しない技術である。代わりに、仮想コピーは、例えばコピーオンライトボリュームビットマップまたはエクステントなどの、メタデータおよびデータ構造を保持することによって構築され、そのことは、コピーがアクセス時に再構築されることを可能にする。コピーは、アプリケーションおよび１次ストレージデバイスに与える負荷が軽量である。別の実施形態では、アプリケーションが例えばＶＭｗａｒｅまたはＸｅｎなどのサーバ仮想化システムに基づいており、データ管理仮想化システムは、サーバ仮想化システムに組み込まれている類似の仮想機械スナップショット機能を使用する。仮想コピー機能が利用可能ではない場合、データ管理仮想化システムは、そのシステム自体に組み込まれているスナップショット機構を含んでもよい。
【００２４】
システムによってサポートされるデータ管理機能の全ての基礎をなす基本データとして、スナップショットを使用することが可能である。スナップショットは軽量であるので、要求された動作がスナップショット自体ではない場合でさえも、スナップショットは内部動作として使用され得る。スナップショットは、他の動作を可能にし容易にするために生成される。
【００２５】
スナップショットを生成する時に、画像がアプリケーションによって使用可能である状態に復元され得るように、整合のとれたスナップショットまたは整合のとれた画像を生成するために必要とされるある一定の準備動作があってもよい。これらの準備動作は、スナップショットが、例えばポリシーに従ってスケジュールされるバックアップコピーなどの、システムにおける複数データ管理機能にわたって影響を及ぼされることになる場合でさえも、１度だけしか実行される必要がない。準備動作はアプリケーション静止状態を含んでもよく、その静止状態は、データキャッシュをフラッシュすることと、アプリケーションの状態をフリーズすることとを含む。その静止状態はまた、当技術分野に知られる他の動作と、完全な画像を保持するために有用な他の動作、例えば画像と共に格納されるアプリケーションからメタデータ情報を収集することとを含んでもよい。
【００２６】
図２は、仮想化データ管理システムが、これらの原理に従って、前に記載したデータライフサイクル要求に対処することができる１つの手法を例示する。
【００２７】
ローカルバックアップ要求を満たすために、一連の効率的なスナップショットが、ローカル高可用性ストレージ２０２内で作られる。これらのスナップショットのいくつかは、別のコピーを作ることなく、開発／試験要求を満たすように使用される。ローカルバックアップのより長期的な保持のために、コピーが長期ローカルストレージ２０４の中に効率的に作られ、その長期ローカルストレージは、このインプリメンテーションにおいて、繰り返されるコピーを削減するために重複排除を使用する。長期ストレージ内のコピーは、ＳＬＡで適用された保持ポリシー次第で、バックアップとしてアクセスされてもよいし、アーカイブとして取り扱われてもよい。データのコピーは、遠隔バックアップおよび事業継続のための要求を満たすために遠隔ストレージ２０６に作られ、また、コピーの単一組は両目的を満たす。遠隔バックアップおよび災害復旧のための代替案として、データの更なるコピーが、商業用または私用クラウドストレージプロバイダによってホスト提供されるリポジトリ２０８に効率的に作られてもよい。
【００２８】
データ管理仮想化システム
図３は、上記原理を実施するデータ管理仮想化システムの高レベル構成要素を例示する。好適には、システムは、以下に更に記載されるこれらの基本機能構成要素を備える。
【００２９】
アプリケーション３００は、データを生成し所有する。これは、いくつかのコンピュータを使用するニーズを満たすために、ユーザによってデプロイされているソフトウェアシステム、例えば、電子メールシステム、データベースシステム、または財務報告システムである。アプリケーションは、典型的には、サーバ上で動き、ストレージを利用する。例示を目的として、１つのアプリケーションだけが示されている。現実には、単一のデータ管理仮想化システムによって管理される百個または千個ものアプリケーションが存在してもよい。
【００３０】
ストレージリソース３０２は、アプリケーションデータがそのアプリケーションデータのライフサイクルを通じて格納される所である。ストレージリソースは、物理的ストレージ資産であり、ユーザがデータストレージ要求に対処するために入手している内部ディスクドライブ、ディスクアレイ、光学式ストレージライブラリおよびテープストレージライブラリ、ならびにクラウドをベースとするストレージシステムを含む。ストレージリソースは、アプリケーションデータのオンラインのアクティブコピーが格納される１次ストレージ３１０と、例えばバックアップ、災害復旧、アーカイビング、インデックス付け、報告および他の使用などの目的のためにアプリケーションデータの追加コピーが格納される２次ストレージ３１２とからなる。２次ストレージリソースは、１次ストレージと同じ筺体内に追加ストレージを含むのみならず、同じデータセンタ内に、別の位置に、またはインターネット上に、類似または異なるストレージ技術に基づくストレージを含んでもよい。
【００３１】
１つ以上の管理ワークステーション３０８は、ユーザが、アプリケーションデータについてのライフサイクルを定義するサービスレベルアグリーメント（ＳＬＡ）３０４を規定することを可能にする。管理ワークステーションは、データ管理仮想化システムを設定し、監視し、制御するために使用されるデスクトップコンピュータもしくはラップトップコンピュータまたはモバイルコンピューティングデバイスである。サービスレベルアグリーメントは、アプリケーションデータの二次的コピーの生成、保持、および削除に関連する詳細な事業要求を記録する詳細な規定である。ＳＬＡは、単一種類の２次ストレージについてのコピーの頻度および予想される復元時間を表わす伝統的なデータ管理アプリケーションに使用される簡単なＲＴＯおよびＲＰＯをはるかに超えるものである。ＳＬＡは、データライフサイクルの規定において複数段階を記録し、２次ストレージの各種類内における均一ではない頻度および保持の規定を可能にする。ＳＬＡは、図７により詳しく図示される。
【００３２】
データ管理仮想化機関３０６は、ＳＬＡに規定されるようなアプリケーションデータのライフサイクルの全てを管理する。そのデータ管理仮想化機関は、場合によっては、多数のアプリケーションについての多数のＳＬＡを管理する。データ管理仮想化機関は、管理ワークステーションを通してユーザからの入力を受け取り、アプリケーション１次ストレージリソースを発見するためにアプリケーションとやり取りする。データ管理仮想化機関は、どのデータが保護される必要があるのか、および、どの２次ストレージリソースが保護ニーズを最もうまくかなえるのかに関する決断を下す。例えば、企業が、事業継続目的のためのみならずバックアップ目的のために非常に短い間隔でコピーが作られる必要があるとしてその企業の会計データを指定する場合、その機関は、適切な組のＳＬＡに従って、第１のストレージプールに短い間隔で会計データのコピーを生成することと、また、第２のストレージプールに長い間隔で会計データのバックアップコピーも生成することとを決めてもよい。このことは、ストレージアプリケーションの事業要求によって決定される。
【００３３】
次いで、その機関は、利用可能である際にはストレージリソースの高度な機能を用いてアプリケーションデータのコピーを作る。上記例において、その機関は、ストレージアプライアンスの内蔵された仮想コピー機能またはスナップショット機能を用いて、短い間隔の事業継続コピーをスケジュールしてもよい。データ管理仮想化機関は、ＳＬＡに記録された事業要求を満たすためにアプリケーションデータをストレージリソースの間で移動させる。データ管理仮想化機関は、図４により詳しく図示される。
【００３４】
データ管理仮想化システムは、全体として、単一のホストコンピュータシステムまたはアプライアンス内でデプロイされてもよいし、あるいは、そのデータ管理仮想化システムは、１つの論理構成体であってもよいが、汎用および特定目的用システムのネットワーク上に物理的に分配されてもよい。システムのある一定の構成要素はまた、コンピューティングまたはストレージクラウド内でデプロイされてもよい。
【００３５】
データ管理仮想化システムの一実施形態では、データ管理仮想化機関は、耐故障性の、余剰な対のコンピュータ上で複数プロセスとして大規模に動く。データ管理仮想化機関のある一定の構成要素は、アプリケーションサーバ内でアプリケーションの近くを動いてもよい。いくつかの他の構成要素は、ストレージ構造内でまたはストレージシステム自体において、１次および２次ストレージの近くを動いてもよい。管理ステーションは、典型的には、安全なネットワーク上でその機関に接続するデスクトップコンピュータおよびラップトップコンピュータならびにモバイルデバイスである。
【００３６】
データ管理仮想化機関
図４は、本発明のある実施形態に係るデータ管理仮想化機関３０６の構築的な概要図を例示する。機関３０６は、以下のモジュールを含む。
【００３７】
アプリケーション特定モジュール４０２。このモジュールは、アプリケーション３００からのメタデータを制御することと収集することとを担当する。アプリケーションメタデータは、例えば、アプリケーションの種類、そのアプリケーションの設定についての詳細、そのアプリケーションのデータストアの位置、そのアプリケーションの現在の動作状態などの、アプリケーションについての情報を含む。アプリケーションの動作を制御することは、例えば、キャッシュされたデータをディスクにフラッシュすることと、アプリケーション入出力をフリーズすることおよび解凍することと、ログファイルを回転することまたは切り捨てることと、アプリケーションをシャットダウンすることおよび再始動することとなどの、行為を含む。アプリケーション特定モジュールは、以下に記載されるサービスレベルポリシー機関４０６からのコマンドに応答して、これらの動作を実行し、メタデータを送受信する。アプリケーション特定モジュールは、図８に関してより詳細に図示される。
【００３８】
サービスレベルポリシー機関４０６は、ユーザによって提供されたＳＬＡ３０４に基づいて作動し、アプリケーションデータのコピーの生成、移動および削除に関して決断を下す。各ＳＬＡは、１つのアプリケーションの保護に関連する事業要求を記載する。サービスレベルポリシー機関は、各ＳＬＡを解析し、アプリケーションデータを１つのストレージ位置から別のストレージ位置にコピーすることをそれぞれ伴う一連の動作を成し遂げる。次いで、サービスレベルポリシー機関は、優先度および従属性を判断するためにこれらの動作を再検討し、データ移動作業をスケジュールして開始する。サービスレベルポリシー機関は、図９に関してより詳細に図示される。
【００３９】
オブジェクトマネージャおよびデータ移動機関４１０は、アプリケーションデータと、アプリケーションメタデータと、ＳＬＡとからなる複合オブジェクトであって、ポリシー機関からの命令ごとに異なるストレージプールを通って移動する複合オブジェクトを生成する。オブジェクトマネージャは、サービスポリシー機関４０６からコマンドの形態で命令を受信し、アプリケーション３００に属している生の１次データ４１３に基づいて、または、別のプール、例えば４１５に存在するコピーから、特定プールにアプリケーションデータのコピーを生成する。オブジェクトマネージャおよびデータ移動機関によって生成される複合オブジェクトのコピーは、そのコピーがアプリケーションデータのみならず、アプリケーションメタデータおよびアプリケーション用ＳＬＡをも包含するという点で、自己充足式および自己記述式である。オブジェクトマネージャおよびデータ移動機関は、図５に関してより詳細に図示される。
【００４０】
ストレージプールマネージャ４１２は、基礎をなす物理的ストレージリソース３０２を適合させ抽象化し、その物理的ストレージリソースを仮想ストレージプール４１８として示す構成要素である。物理的ストレージリソースは、例えばユーザがユーザのアプリケーションのデータのライフサイクルをサポートする目的でデプロイしているディスクアレイおよびテープライブラリなどの、実際のストレージ資産である。これらのストレージリソースは、様々なストレージ技術、例えばディスク、テープ、フラッシュメモリまたは光学式ストレージなどに基づいていてもよい。ストレージリソースはまた、様々な地理的位置、費用および速度属性を有していてもよいし、様々なプロトコルをサポートしてもよい。ストレージプールマネージャの役割は、ストレージリソースを組み合わせて集約することと、それらのストレージリソースのプログラミングインターフェース間の差分を覆い隠すことである。ストレージプールマネージャは、アプリケーションデータのライフサイクルにおける特定段階に適したこれらのプールを作る特徴を有するストレージプールの組として、物理的ストレージリソースをオブジェクトマネージャ４１０に示す。ストレージプールマネージャは、図６に関してより詳細に図示される。
【００４１】
オブジェクトマネージャおよびデータ移動機関
図５は、オブジェクトマネージャおよびデータ移動機関４１０を例示する。オブジェクトマネージャおよびデータ移動機関は、プールマネージャ５０４によってそのオブジェクトマネージャに示された仮想ストレージリソース５１０を発見して使用する。そのオブジェクトマネージャは、サービスレベルポリシー機関４０６からの要求を受け入れ、仮想ストレージプール内のリソースからのデータストレージオブジェクトインスタンスを生成して保持し、そのオブジェクトマネージャは、サービスレベルポリシー機関からの命令に従って、仮想ストレージプールからのストレージオブジェクトのインスタンスの中からアプリケーションデータをコピーする。コピー用に選択されたターゲットプールは、選択されている事業動作、例えばバックアップ、レプリケーションまたは復元を暗黙のうちに指定する。サービスレベルポリシー機関は、（同一システム上の）オブジェクトマネージャの近くにまたは遠隔にあり、標準ネットワーク通信上でプロトコルを用いて通信する。ＴＣＰ／ＩＰは、好適な実施形態において使用されてもよいし、よく理解されるように、広く利用可能であってもよいし、サービスレベルポリシー機関が、オブジェクトマネージャの近くにまたはわずかな修正で遠隔に位置することを可能にする。
【００４２】
一実施形態では、システムは、インプリメンテーションの容易さのために、オブジェクトマネージャと同じコンピュータシステム上でサービスレベルポリシー機関をデプロイしてもよい。別の実施形態では、システムは、アプリケーションのために有益または便利である場合、設計を変更することなく、下位の組の構成要素をそれぞれホスト提供する、複数システムを用いてもよい。
【００４３】
オブジェクトマネージャ５０１およびストレージプールマネージャ５０４は、ユーザのアプリケーションがあるストレージリソースを使用するコンピュータシステムと、それらのストレージリソースとを相互接続するコンピュータシステムプラットフォーム上にあり得るソフトウェア構成要素である。相互接続プラットフォーム上のこれらのソフトウェア構成要素の配置は、好適な実施形態として指定され、そのようなアプリケーション（例えば、ファイバチャネル、ｉＳＣＳＩなど）のために広く使用される通信プロトコルによって顧客システムをストレージに接続する能力を与えてもよいし、また、様々なソフトウェア構成要素のデプロイメントの容易さを与えてもよい。
【００４４】
オブジェクトマネージャ５０１およびストレージプールマネージャ５０４は、プラットフォームによって利用可能とされたアプリケーションプログラミングインターフェース経由で、基礎をなすストレージ仮想化プラットフォームと通信する。これらのインターフェースは、ソフトウェア構成要素が、コンピュータシステムの挙動を、および、どのようにそのインターフェースがストレージリソースとユーザのアプリケーションがあるコンピュータシステムとを相互接続するかを、問い合わせて制御することを可能にする。その構成要素は、所与のプラットフォームに特有の相互通信コードの置き換えを可能にするために、実際に普通にあるような、モジュラリティ技術を利用する。
【００４５】
オブジェクトマネージャおよびストレージプールマネージャは、プロトコルによって通信する。これらは、標準ネットワークプロトコル、例えばＴＣＰ／ＩＰ、または、典型的にはコンピュータシステム上で利用可能な標準プロセス間通信（ＩＰＣ）機構上で送信される。このことは、それらの構成要素が同じコンピュータプラットフォーム上またはネットワークにより接続された複数コンピュータプラットフォーム上にある場合、特定コンピュータプラットフォームに依存して、構成要素間で類似の通信を可能にする。現行の構成は、デプロイメントの容易さのために同じコンピュータシステム上にあるローカルソフトウェア構成要素の全てを有する。このことは、上記のような設計の要求を制限するものではなく、必要に応じて将来再構成され得る。
【００４６】
オブジェクトマネージャ
オブジェクトマネージャ５０１は、データストレージオブジェクトを保持するためのソフトウェア構成要素であり、そのソフトウェア構成要素を制御するためにプロトコル動作の組を提供する。その動作は、オブジェクトの間でのデータの生成、破壊、複製、およびコピーを含み、オブジェクトへのアクセスを保持し、特に、コピーを生成するために使用されるストレージプールの特定を可能にする。全てのプールによってサポートされる機能の共通の下位の組はない。しかしながら、好適な実施形態では、１次プールは、性能を最適化されてもよく、すなわち待ち時間が少なく、その一方で、バックアップまたはレプリケーションプールは、容量を最適化されてもよく、大量のデータおよび内容参照可能をサポートする。プールは、遠隔またはローカルであってもよい。ストレージプールは、様々な基準に従って分類され、ユーザが、例えばストレージのギガバイト毎の費用などの事業決断を下し得る手段を含む。
【００４７】
第１に、装置が様々な事業目的のために割り当てられるので、ストレージが引き出される特定のストレージデバイスは、関係のある費用および他の実用上の考慮事項と共に、考慮事項であり得る。いくつかのデバイスは、実際のハードウェアでさえないことがあるが、サービスとして提供される容量であり得、そのようなリソースの選択は、実用上の事業目的のために行われ得る。
【００４８】
第２に、近くのストレージは、典型的には、少ない待ち時間の、安価なネットワークリソースにより接続される一方で、遠くのストレージは、長い待ち時間の、帯域幅が制限された高価なネットワークリソースにより接続され得るため、ネットワークトポロジー上の「近接性」が考慮される。逆に、ソースに関するストレージプールの距離は、地理的相違がローカルリソースに影響を及ぼす物理的災害から保護する場合に有益であり得る。
【００４９】
第３に、ストレージ最適化特徴が考慮される。ここで、いくつかのストレージは、ストレージの空間効率をよくするために最適化されるが、データが格納され得る前にデータを解析するか変換するために計算時間およびリソースを要求し、その一方で、これに比べて他のストレージは、「性能を最適化され」、これに比べてより多くのストレージリソースを取るが、仮にそうであるとしても、データを変換するために比較的短い計算時間またはリソースを使用する。
【００５０】
第４に、「アクセスの速度」特徴が考慮され、ここで、ストレージコンピュータプラットフォームに固有のリソースのいくつかは、容易にかつ迅速にユーザのアプリケーションに、例えば仮想ＳＣＳＩブロックデバイスとして、利用可能になるものの、いくつかは間接的にのみ使用され得る。復旧のこれらの容易性および速度は、使用されるストレージの種類によって支配されることが多く、このことは、それが適切に分類されることを可能にする。
【００５１】
第５に、使用されるストレージ容量を集中させることまたは分配することに役に立ち得るので、使用されるストレージの量および所与のプールにおいて利用可能な量が考慮される。
【００５２】
以下に記載されるサービスレベルポリシー機関は、どのようにおよびいつアプリケーションデータを保持するかと、どのストレージプールからサービスレベルアグリーメント（ＳＬＡ）にかなう必要とされるリソースを引き出すかとを判断するために、ユーザによって提供されるＳＬＡを分類基準と組み合わせる。
【００５３】
オブジェクトマネージャ５０１は、実行プール内のデータオブジェクト上で実行される一連の動作を追跡するために、および、オブジェクトを他のストレージプールに移動するその他のもの、特に容量を最適化されたものとそれらの一連の動作を相関付けるために、履歴機構を生成し、保持し、用いる。各データオブジェクトについてのこの一連の記録は、１次データオブジェクトによって最初に相関付けられ、次に動作順序、すなわち、各オブジェクトについての時系列およびそのような時系列の全てのリストによって相関付けられた１次プール内の全データオブジェクトについてオブジェクトマネージャで保持される。実行される各動作は、所与の時点におけるデータオブジェクトの状態を取り込むために、基礎をなす仮想化基本を活用する。
【００５４】
それに加えて、基礎をなすストレージ仮想化アプライアンスは、データオブジェクト内のデータの一部の修正を示す、例えばビットマップなどの、内部データ構造の回復を受けさせたり可能にしたりするために、修正されてもよい。これらのデータ構造は、ある一時点におけるデータオブジェクトの状態、例えばデータオブジェクトのスナップショットを取り込むために、および、規定の時間に取られるスナップショット間の差分を与えるために活用され、それによって、最適なバックアップおよび復元を可能にする。特定のインプリメンテーションおよびデータ構造が、異なるベンダからの異なるアプライアンスの間で変化してもよいが、一方で、データ構造は、データオブジェクトの変化を追跡するために用いられ、ストレージは、変化したオブジェクトの部分、すなわち、ストレージに保持されたデータに対応するデータ構造における指示、の元の状態を保持するために用いられる。スナップショットにアクセスする際に、データ構造は考慮され、変化している部分のために、保存されたデータは、データオブジェクトが、指示されるような領域で修正されているので、現データの代わりにアクセスされる。用いられる典型的なデータ構造は、各ビットがデータオブジェクトのセクションに対応する、ビットマップである。ビットを設定することは、スナップショット動作の時点の後にセクションが修正されていることを示す。基礎をなすスナップショット基本機構は、スナップショットオブジェクトが存在する限りこれを保持する。
【００５５】
上記した時系列は、所与の１次データオブジェクトに対するスナップショット動作のリストを保持し、動作が開始された時間、その動作が停止した時間（仮にそうである場合）、スナップショットオブジェクトへの参照、および内部データ構造（例えば、ビットマップまたはエクステントリスト）への参照を含み、そのため、そのリストは、基礎をなすシステムから取得され得る。更に保持されるものは、別のプールの中への任意の所与の時点におけるデータオブジェクトの状態をコピーすること、例として、オブジェクトハンドルにおける内容参照可能結果を用いて、容量を最適化されたプール４０７の中へのデータオブジェクトの状態をコピーすること、の結果への参照である。そのオブジェクトハンドルは、所与のスナップショットに対応し、時系列におけるスナップショット動作と共に格納される。この相関付けは、適切な開始点を識別するために使用される。
【００５６】
最適なバックアップおよび復元は、所望の開始点から終了点までの動作のリストを考慮する。開始から終了までの連続的な時系列が実現されるように、動作の時間順のリストおよびそれの対応するデータ構造（ビットマップ）が構築される。その時系列において動作の開始時間の間に隔たりはない。このことは、データオブジェクトの全変化が、対応するビットマップデータ構造によって表わされることを確実にする。開始から終了までの全動作を検索する必要はない。同時に存在するデータオブジェクトおよび基礎をなすスナップショットは、時間が重複する。追跡されなかった変化が生じていたかもしれない時間に隔たりがないことだけが必要である。ビットマップは、ストレージのある一定のブロックが変化していることを示すが、何が変化であるかは示さないので、ビットマップは、その時間間隔に生じた全変化の組を具体化するために共に追加されるか構成されてもよい。ある一時点における状態にアクセスするためにこのデータ構造を用いる代わりに、システムは、データ構造が、時間が前に進むにつれて修正されたデータを表わすという事実を代わりに活用する。むしろ、データオブジェクトの終了状態は、指示された領域でアクセスされるので、所与の開始時間から終了時間までの所与のデータオブジェクトへの変化の組を戻す。
【００５７】
バックアップ動作は、当バックアップ動作を実現するために、この時系列、相関参照、および内部データ構造へのアクセスを活用する。同様に、そのバックアップ動作は、当復元動作を成し遂げるために、補足的なやり方でシステムを使用する。特定のステップは、「最適なバックアップ／復元」についての項目において以下に記載される。
【００５８】
仮想ストレージプールの種類
図５は、いくつかの代表的なストレージプールの種類を例示する。１つの１次ストレージプールおよび２つの２次ストレージプールが図中に描かれるが、より数多くのプールが、いくつかの実施形態において配置されてもよい。
【００５９】
１次ストレージプール５０７は、データオブジェクト生成するために使用されるストレージリソースを含み、ユーザアプリケーションは、そのアプリケーションのデータをそのストレージリソースに格納する。このことは、他のストレージプールとは対照的であり、他のストレージプールは、データ管理仮想化機関の動作を主として遂行するためにある。
【００６０】
性能を最適化されたプール５０８は、高性能バックアップ（すなわち、以下に記載される、一時点複製）を提供することのみならず、ユーザアプリケーションによるバックアップ画像への迅速なアクセスを与えることができる仮想ストレージプールである。
【００６１】
容量を最適化されたプール５０９は、以下に記載される重複排除技術の使用によって空間に関して高効率的な手法で、データオブジェクトのストレージを主として提供する仮想ストレージプールである。その仮想ストレージプールは、データオブジェクトのコピーへのアクセスを与えるが、上記の性能を最適化されたプールとは対照的に、その主とした目的のように高性能をもたらさない。
【００６２】
最初のデプロイメントは、上記したようなストレージプールを最小限の動作可能な組として含む。その設計は、上記で例示された基準の様々な組み合わせを表わす様々な種類の複数プールと、将来のデプロイメントにおけるストレージの全てを表わすために便利であるような複数プールマネージャとを十分に予測する。上記で例示されたトレードオフは、コンピュータデータストレージシステムの典型である。
【００６３】
実用上の観点から、これらの３つのプールは、好適な実施形態を表わし、大部分のユーザの要求に非常に簡単な手法で対処する。大部分のユーザは、ユーザが、緊急の復元の必要性のためのストレージの１つのプールであって、迅速な復旧をもたらすプールと、費用の安い他の１つのプールとを有する場合、それによって、多数の画像が長期間にわたって保持されることができ、データ保護についての事業要求のほぼ全ては、わずかな妥協案でかなえられ得ることを見出し得る。
【００６４】
各プールにおけるデータの形式は、プール内で使用される目標および技術によって規定される。例えば、迅速復旧プールは、必要とされた変換を最小限にするためにおよび復旧の速度を向上するために、元のデータに非常に類似した形態で保持される。その一方で、長期ストレージプールは、重複排除および圧縮を使用し、データのサイズを縮小し、これによりストレージの費用を削減する。
【００６５】
オブジェクト管理動作５０５
オブジェクトマネージャ５０１は、サービスレベルポリシー機関４０６によってそのオブジェクトマネージャに送信された命令に従って仮想ストレージプール４１８からのデータストレージオブジェクト５０３のインスタンスを生成し保持する。オブジェクトマネージャは、５つの主な領域にデータオブジェクト動作、すなわち、一時点における複製またはコピー（「スナップショット」として一般に呼ばれる）、標準コピー、オブジェクト保守、マッピングおよびアクセス保守、ならびに収集をもたらす。
【００６６】
オブジェクト管理動作はまた、仮想ストレージプール自体を保持するためにおよびそれらの仮想ストレージプールについての情報を検索するために一連のリソース発見動作を含む。プールマネージャ５０４は、これらについての機能を最終的に供給する。
【００６７】
一時点におけるコピー（「スナップショット」）動作
スナップショット動作は、規定の時点における最初のオブジェクトインスタンスを表わすデータオブジェクトインスタンスを生成する。より詳細には、スナップショット動作は、規定の仮想ストレージプールのリソースを用いて収集の要素の完全な仮想コピーを生成する。これは、データストレージオブジェクトと呼ばれる。データストレージオブジェクトの複数状態は、そのデータストレージオブジェクトがある一時点で存在していた際のデータストレージオブジェクトの状態が利用可能であるように、時間の経過に伴って保持される。上記したように、仮想コピーは、基礎をなすストレージ仮想化ＡＰＩを用いて実施されるコピーであり、その仮想化ＡＰＩは、複製データの全ビットをディスクにコピーし格納する代わりにコピーオンライトまたは他の帯域内技術を用いて、コピーが軽量の形で生成されることを可能にする。このことは、いくつかの実施形態ではＥＭＣ、ｖｍｗａｒｅまたはＩＢＭによって提供されるような既製の、基礎をなすストレージ仮想化システムの機能にアクセスするために書き込まれたソフトウェアモジュールを用いて実施されてもよい。そのような基礎をなす仮想化が利用可能ではない場合、記載されたシステムは、愚鈍なハードウェアとインターフェースをとるためにそのシステム自体の仮想化層を提供してもよい。
【００６８】
画像データが明瞭であるように、および、スナップショットが、スナップショットの時間におけるアプリケーションの状態を復元するために後で使用されてもよいように、スナップショット動作は、データの状態を規定の点にフリーズすることをアプリケーションに要求する。他の準備ステップもまた要求されてもよい。これらは、アプリケーション特定モジュール３０２によって処理され、そのアプリケーション特定モジュールは、後続の段落に記載される。生のアプリケーションのために、したがって、最も軽量な動作が望まれる。
【００６９】
スナップショット動作は、システムにおける全ての高レベル動作のための基本データとして使用される。事実上、そのスナップショット動作は、特定の時点におけるデータの状態へのアクセスを与える。同様に、スナップショットは、典型的には、変化したものをディスク上にあるものと区別するコピーオンライト技術を用いて実施されるので、これらのスナップショットは、システム全体にわたってデータを効率的にコピーするためにまた共に構成され得る差分または追加され得る差分を提供する。スナップショットの形式は、以下に記載されるデータムーバー５０２によってコピーされるデータの形式であってもよい。
【００７０】
標準コピー動作
コピー動作がスナップショットではない場合、そのコピー動作は標準コピー動作と考えられ得る。標準コピー動作は、１つのストレージプールにおけるソースデータオブジェクトの全てまたは下位の組を別のストレージプールにおけるデータオブジェクトにコピーする。その結果は、２つの別個のオブジェクトになる。使用され得る標準コピー動作の１つの種類は、最初の「ベースライン」コピーである。これは、典型的には、データが、１つの仮想ストレージプールから別の仮想ストレージプールに、例えば性能を最適化されたプールから容量を最適化されたストレージプールに、最初にコピーされる際に行われる。標準コピー動作の別の種類が使用されてもよく、その別の種類では、変化したデータまたは差分だけが、ターゲットオブジェクトを更新するためにターゲットストレージプールにコピーされる。これは、最初のベースラインコピーが前もって実行された後に行われることになる。
【００７１】
ベースラインコピーは、データ仮想化システムが最初に初期化されたときに必要とされるけれども、オブジェクトの完全な包括的なバージョンは、コピーが作られるたびにシステムに保存される必要はない。これは、各仮想コピーが完全なコピーへのアクセスを与えるからである。任意のデルタまたは差分は、ベースラインに関連して表わされる代わりに仮想コピーに関連して表わされ得る。このことは、一連の変化リストを歩み通る共通ステップを仮想的に排除するというプラスの副次的作用がある。
【００７２】
標準コピー動作は、プールマネージャにより供給されデータムーバーにより受信された一連の命令または要求によって始動され、データストレージオブジェクトの間でデータの移動をもたらし、データストレージオブジェクト自体を保持する。コピー動作は、規定の仮想ストレージプールのリソースを用いて規定のデータストレージオブジェクトのコピーの生成を可能にする。その結果、ストレージプール内のターゲットデータオブジェクトにおけるソースデータオブジェクトのコピーとなる。
【００７３】
スナップショット動作およびコピー動作は、準備動作および起動動作でそれぞれ構成される。準備および起動の２つのステップは、作動から切り離される、準備段階の典型である、長期間続くリソース割り当て動作を可能にする。このことは、スナップショット動作の一時点特徴を満たすために短い間に一時停止だけされ得るアプリケーションによって必要とされ、そのスナップショット動作は、現実には達成するために有限の時間ではあるがゼロではない時間がかかる。コピー動作およびスナップショット動作と同様に、この２つのステップの準備および作動構成は、収集要素の全てのためにリソースが割り当てられ得る場合にのみ、ポリシー機関が動作を進めることを可能にする。
【００７４】
オブジェクト保守
オブジェクト保守動作は、データオブジェクトを保持するための一連の動作であり、生成、破壊、および複製を含む。オブジェクトマネージャおよびデータムーバーは、プール要求仲介役（より多くは以下に）によって提供された機能を使用して、これらの動作を実施する。データオブジェクトは、広域レベルに、各ストレージプールに、または好適にはその両方に保持されてもよい。
【００７５】
収集
収集動作は補助機能である。収集は、抽象的なソフトウェア概念であり、オブジェクトマネージャによりメモリに保持されたリストである。その収集は、ポリシー機関２０６が、収集における要素の全てにわたる一連の動作を要求することを可能にし、全ての要素への要求の一致したアプリケーションを可能にする。収集を使用することは、一時点スナップショットの同時起動を可能にさせ、それによって、複数データストレージオブジェクトが正確に同じ時点で全て取り込まれ、これは、典型的には、論理的に正確な復元のためのアプリケーションによって必要とされるからである。収集を使用することは、収集の全ての要素にわたってコピー動作を便利に要求することを可能にし、この場合には、アプリケーションが、論理的に全体として複数ストレージオブジェクトを使用することになる。
【００７６】
リソース発見動作
オブジェクトマネージャは、オブジェクト管理動作５０５をプールマネージャ５０４に発行することによって仮想ストレージプールを発見し、所与の要求のために必要とされた基準にかなう１つを選択するためにプールのそれぞれについて取得された情報を使用するか、あるいは、不一致の場合には、デフォルトのプールが選択され、次いで、オブジェクトマネージャは、選択された仮想ストレージプールからリソースを用いてデータストレージオブジェクトを生成することができる。
【００７７】
マッピングおよびアクセス
オブジェクトマネージャはまた、オブジェクト管理動作の組を提供し、外部アプリケーションに対してこれらのオブジェクトの利用可能性を与えて保持する。第１の組は、ユーザのアプリケーションがあるコンピュータを登録するためおよび登録解除するための動作である。コンピュータは、使用中、ストレージネットワークに典型的な識別情報（例えば、ファイバチャネルＷＷＰＮ、ｉＳＣＳＩ識別情報、など）によって登録される。第２の組は、「マッピング」動作であり、オブジェクトがストレージプールから生成される当該ストレージプールによって許可されると、データストレージオブジェクトは、「マップされる」ことができ、つまり、ユーザアプリケーションがコンピュータ上にある当該コンピュータを使用するために利用可能になり得る。
【００７８】
この利用可能性は、ストレージ、例えば、ネットワーク上のファイバチャネルディスクまたはｉＳＣＳＩデバイスとしてＳＡＮ上にあるブロックデバイス、ファイル共有ネットワーク上のファイルシステム等の適切な形態を取り、アプリケーションコンピュータ上の動作システムによって使用可能である。同様に、「マッピング解除」動作は、ユーザアプリケーションに対してネットワーク上の仮想ストレージデバイスの利用可能性を逆にする。このようにして、１つのアプリケーションのために格納されたデータ、すなわちバックアップは、後で、すなわち復元で、別のコンピュータ上の別のアプリケーションに利用可能になり得る。
【００７９】
データムーバー５０２
データムーバー５０２は、オブジェクトマネージャ内のソフトウェア構成要素であり、スナップショット（一時点）コピー要求および標準コピー要求のためにオブジェクトマネージャから受信された命令に従って、様々なデータストレージオブジェクト５０３の間でデータを読み書きするデータムーバーである。データムーバーは、システムの全体にわたってデータオブジェクトのインスタンスの間でデータを読み書きするための動作を提供する。データムーバーはまた、オブジェクトマネージャがそのデータムーバーに実行するよう要求している長期間続く動作の状態を問い合わせて保持することを可能にする動作も提供する。
【００８０】
データムーバーは、そのデータムーバーの動作を遂行するためにプール機能プロバイダ（図６を参照）からの機能を使用する。スナップショット機能プロバイダ６０８は、規定の時点における最初のオブジェクトインスタンスを表わすデータオブジェクトインスタンスの生成を可能にする。差分機関機能プロバイダ６１４は、時間的連鎖に関連する２つのデータオブジェクト間の差分の記述を要求するために使用される。内容参照可能プール上に格納されたデータオブジェクトのために、あらゆる２つの任意のデータオブジェクト間の差分を提供し得る特別な機能が与えられる。この機能はまた、基礎をなすストレージ仮想化システムによるいくつかの場合において、および、商品ストレージの上部上でこれを実施するモジュールによる他の場合において、性能を最適化されたプールのために提供される。データムーバー５０２は、そのデータムーバーが、データオブジェクト５０３のインスタンス間をコピーするデータの組を選択するために差分についての情報を使用する。
【００８１】
所与のプールについて、差分機関プロバイダは、時間の経過に伴ってデータストレージオブジェクトの２つの状態間の差分の特定の表示を提供する。スナップショットプロバイダの場合、２つの時点間の変化が、書き込みとしてデータストレージオブジェクトの所与の部分に記録される。一実施形態では、差分は、ビットマップとして表示され、ここで、各ビットは、データオブジェクト領域の順序付けられたリストに対応し、最初に始まり最後まで昇順であり、この場合、ビットの組は修正された領域を示す。このビットマップは、基礎をなすストレージ仮想化システムにより使用されるコピーオンライトビットマップから導き出される。別の実施形態では、差分は、データの変化した領域に対応する範囲のリストとして表示されてもよい。内容参照可能ストレージプロバイダ６１０の場合、その表示は、以下に記載され、相違する２つの内容参照可能データオブジェクトの部分を効率的に判断するために使用される。
【００８２】
データムーバーは、相違するこれらのセクションだけをコピーするためにこの情報を使用し、それにより、データオブジェクトの新しいバージョンは、存在するバージョンをまず複製することと、差分のリストを取得することと、次いで、リスト内のこれらの差分に対応するデータのみを動かすこととによって、存在するバージョンから生成されることができる。データムーバー５０２は、差分のリストを横断し、指示された領域をソースデータオブジェクトからターゲットデータオブジェクトに動かす（データバックアップおよび復元のための最適な手法を参照）。
【００８３】
５０６コピー動作‐要求変換および命令
オブジェクトマネージャ５０１は、仮想ストレージプール４１８におけるデータオブジェクトの間でデータをコピーするように一連の動作を通してデータムーバー５０２に指示する。その手順は、以下のステップを含み、命令の受信で始まる。
【００８４】
第１に、収集要求を生成する。収集の名前は戻される。
【００８５】
第２に、収集のためにオブジェクトを追加する。上記の収集名は、コピーされるソースデータオブジェクトの名前のみならず、２つの先祖（ａｎｔｅｃｅｄｅｎｔ）、すなわち、差分がソースストレージリソースプールにおいてデータオブジェクトに対して取られる当該データオブジェクトと、ターゲットストレージリソースプールにおいて対応するデータオブジェクトとの名前に使用される。このステップは、この組において操作される各ソースデータオブジェクトについて繰り返される。
【００８６】
第３に、コピー要求を準備する。収集名は、ターゲットとしての役割を果たすためにストレージリソースプールと共に供給される。準備コマンドは、収集におけるソースのそれぞれに対応する必要なターゲットデータオブジェクトを生成するためにオブジェクトマネージャにストレージプールマネージャと交信することを命令する。準備コマンドはまた、複製されるターゲットストレージリソースプール内の対応するデータオブジェクトを供給するので、プロバイダは、提供されたオブジェクトを複製し、その複製をターゲットオブジェクトとして使用することができる。コピー要求のための参照名は戻される。
【００８７】
第４に、コピー要求を発動する。上記の戻されたコピー要求のための参照名が供給される。データムーバーは、所与のソースオブジェクトをそのソースオブジェクトの対応するターゲットオブジェクトにコピーするように命令される。各要求は、参照名のみならず、全部のジョブ（ソースターゲットペアの全部の組）を記載するシーケンス番号、ならびに、各個別のソースターゲットペアのそれぞれを記載するシーケンス番号を含む。ソースターゲットペアに加えて、対応する先祖の名前が、コピー命令の一部として供給される。
【００８８】
第５に、コピー機関は、ソースにおける差分機関から先祖とソースとの間の差分を得るためにソースプールにおけるデータオブジェクトの名前を使用する。次いで、指示された差分はソースからターゲットに送信される。一実施形態では、これらの差分は、ビットマップおよびデータとして送信される。別の実施形態では、これらの差分は、エクステントリストおよびデータとして送信される。
【００８９】
５０３データストレージオブジェクト
データストレージオブジェクトは、コンピュータデータ処理装置およびソフトウェアによく知られた表現形式（ｉｄｉｏｍ）および方法を使用してアプリケーションデータのストレージおよび回復を許可するソフトウェア構成体である。実際には、これらは、現在、例えばＳＣＳＩ  ＬＵＮなどのストレージネットワークまたは内容参照可能コンテナ上のＳＣＳＩブロックデバイスの形態を取り、この場合、内容のための指示子は、その中のデータから構築され、その中のデータを一意的に識別する。データストレージオブジェクトは、命令をプールマネージャに発行することによって生成され保持される。アプリケーションデータを持続するための実際のストレージは、仮想ストレージプールから取り出され、データストレージオブジェクトは、その仮想ストレージプールから生成される。
【００９０】
データストレージオブジェクトの構造は、ストレージプールに依存して変化し、そのデータストレージオブジェクトの構造は、そのストレージプールから生成される。ストレージネットワーク上のブロックデバイスの形態を取るオブジェクトの場合、所与のブロックデバイスデータオブジェクトのためのデータ構造は、デバイス識別子についてのデータオブジェクト内のブロックのそれぞれの論理ブロックアドレス（ＬＢＡ）と、実際のストレージ位置のＬＢＡとの間のマッピングを実施する。データオブジェクトの識別子は、使用されるマッピングの組を識別するために使用される。現在の実施形態は、このマッピングを実施するために、基礎をなす物理的コンピュータプラットフォームにより提供されるサービスに依存するし、例えばビットマップまたはエクステントリストなどのそのデータオブジェクトの内部データ構造に依存する。
【００９１】
内容参照可能コンテナの形態を取るオブジェクトの場合、内容署名が識別子として使用され、データオブジェクトは、重複排除についての段落において以下に記載されるように格納される。
【００９２】
５０４プールマネージャ
プールマネージャ５０４は、以下に記載されるような仮想ストレージリソースならびに関連付けられた機能および特徴を管理するためのソフトウェア構成要素である。オブジェクトマネージャ５０１およびデータ移動機関５０２は、データストレージオブジェクト５０３を保持するために１つ以上のプールマネージャ５０４と通信する。
【００９３】
５１０仮想ストレージリソース
仮想ストレージリソース５１０は、以下に記載されるように、ストレージプール機能を実施するためにプールマネージャに利用可能となった様々な種類のストレージである。この実施形態では、ストレージバーチュアライザが、様々な外部ファイバチャネルまたはｉＳＣＳＩストレージＬＵＮを仮想化されたストレージとしてプールマネージャ５０４に表示するために使用される。
【００９４】
ストレージプールマネージャ
図６は、ストレージプールマネージャ５０４を更に例示する。ストレージプールマネージャの目的は、基礎をなす仮想ストレージリソースをオブジェクトマネージャ／データムーバーにストレージリソースプールとして表示することであり、そのストレージリソースプールは、システムの他の構成要素により利用される共通インターフェースを伴うストレージおよびデータ管理機能の抽象物である。これらの共通インターフェースは、典型的には、規定の時間的状態と関連付けられたデータオブジェクトを識別して参照するための機構と、ビットマップまたはエクステントの形態にあるデータオブジェクト間の差分を生成するための機構とを含む。この実施形態では、プールマネージャは、１次ストレージプール、性能を最適化されたプール、および容量を最適化されたプールを示す。共通インターフェースは、オブジェクトマネージャが、他のデータストレージオブジェクトのコピーとしてまたは新しいオブジェクトとして、これらのプールにおいてデータストレージオブジェクトを生成したり削除したりすることを可能にし、データムーバーは、データストレージオブジェクト間でデータを移動することができるし、データオブジェクト差分動作の結果を使用することができる。
【００９５】
ストレージプールマネージャは、類似の機能の種々のインプリメンテーションに共通インターフェースを実装するための典型的なアーキテクチャを有し、この場合、いくつかの機能が「スマートな」基礎をなすリソースによって提供され、他の機能は、あまり機能的ではない基礎をなすリソースの上部上で実施されなければならない。
【００９６】
プール要求仲介役６０２およびプール機能プロバイダ６０４は、オブジェクトマネージャ／データムーバーと同じプロセスにおいて、またはＴＣＰなどのローカルもしくはネットワークプロトコル経由で通信する別のプロセスにおいて、実行されるソフトウェアモジュールである。この実施形態では、プロバイダは、１次ストレージプロバイダ６０６、スナップショットプロバイダ６０８、内容参照可能プロバイダ６１０、および差分機関プロバイダ６１４を含み、これらは以下に更に記載される。別の実施形態では、プロバイダの組は、ここに示されるプロバイダの上位の組であってもよい。
【００９７】
仮想ストレージリソース５１０は、ストレージプール機能を実施するためにプールマネージャに利用可能となった異なる種類のストレージである。この実施形態では、仮想ストレージリソースは、プールマネージャと同じハードウェア上で動くストレージ仮想化システムからのＳＣＳＩ論理単位であって、（データおよび管理動作の両方のために）プログラムのインターフェースを通してアクセス可能であるＳＣＳＩ論理単位の組を含む。標準ブロックストレージ機能に加えて、スナップショットを生成したり削除したりすることと、ボリュームの変化した部分を追跡することとを含む追加的機能が、利用可能である。別の実施形態では、仮想リソースは、類似の機能を露出する外部ストレージシステムからのものであり得るし、（例えば、ファイルシステムを通して、またはＣＩＦＳ、ｉＳＣＳＩもしくはＣＤＭＩなどのネットワークインターフェースを通して、アクセスされる）インターフェース、（例えば、リソースが、コピーオンライトスナップショットを作るために動作をサポートするかどうかという）機能、あるいは（例えば、ＳＡＴＡディスクなどの低速／大容量に対してソリッドステートディスクなどの高速／限定された容量などの）非機能的態様の点が異なってもよい。その機能および利用可能なインターフェースは、どのプロバイダが仮想ストレージリソースを消費し得るか、および、どのプール機能が１つ以上のプロバイダによってプールマネージャ内で実施される必要があるかを判断する。例えば、内容参照可能ストレージプロバイダのこのインプリメンテーションは「ダム（ｄｕｍｂ）」ストレージだけを必要とし、そのインプリメンテーションは、完全に内容参照可能プロバイダ６１０の範囲内にある。基礎をなす内容参照可能仮想ストレージリソースは、より簡単な「パススルー」プロバイダを用いて代わりに使用され得る。逆に、スナップショットプロバイダのこのインプリメンテーションは、ほとんど「パススルー」であり、迅速な一時点コピー動作を露出するストレージを必要とする。
【００９８】
プール要求仲介役６０２は、構成された仮想ストレージリソース５１０に対してプール機能プロバイダの適切な組を実行することによって、ストレージプール特定機能についての要求を提供する簡単なソフトウェア構成要素である。提供され得る要求は、オブジェクトをプールに生成することと、オブジェクトをプールから削除することと、データをオブジェクトに書き込むことと、データをオブジェクトから読み取ることと、プール内のオブジェクトをコピーすることと、プール間でオブジェクトをコピーすることと、プールにおける２つのオブジェクト間の差分の要約を要求することとを含むが、これらに限定されない。
【００９９】
１次ストレージプロバイダ６０６は、仮想ストレージリソースに対する管理インターフェース（例えば、スナップショットを生成したり削除したりすること、ファイルの変化した部分を追跡すること）を可能にし、その仮想ストレージリソースはまた、例えばファイバチャネル、ｉＳＣＳＩ、ＮＦＳまたはＣＩＦＳなどのインターフェース経由でアプリケーションに直接的に露出される。
【０１００】
スナップショットプロバイダ６０８は、１次リソースプールからデータの一時点コピーを作る機能を実施する。このことは、スナップショットで占められた別のリソースプールの抽象物を生成する。実施される際、この管理機能は、１次ストレージのためにおよびスナップショットプロバイダのために使用される仮想ストレージリソースによって露出されるので、一時点コピーは、１次リソースプールからのオブジェクトのコピーオンライトスナップショットであり、コピーオンライトコピーを収容するために第２の仮想ストレージリソースを消費する。
【０１０１】
差分機関プロバイダ６１４は、比較されるプールにおける２つのオブジェクトであって、時間的連鎖で接続された２つのオブジェクトのための要求を満たすことができる。２つのオブジェクト間の差分セクションは、例えばビットマップまたはエクステントを用いて、プロバイダの特定の手法で識別され要約される。例えば、差分セクションは、ビットマップとして表わされてもよく、ここで、ビットの各組は、２つのオブジェクトが異なる固定されたサイズ領域を示す。あるいは、その差分は、一連の関数呼び出しまたはコールバックとして手順上表わされてもよい。
【０１０２】
プールが仮想ストレージリソースに基づく当該仮想ストレージリソース次第で、あるいはプールを実施する他のプロバイダ次第で、差分機関は、様々な手法で結果を効率的にもたらしてもよい。実施される際、スナップショットプロバイダ経由で実施されるプール上で作用する差分機関は、作られたスナップショットを有していたオブジェクトの変化を追跡するためにスナップショットプロバイダのコピーオンライト性質を使用する。したがって、単一の変化している１次オブジェクトの連続したスナップショットは、スナップショットプロバイダによってスナップショットに並んで格納された差分の記録を有する。更に、スナップショットプールのための差分機関は、変化のこの記録を単に検索する。また、実施される際に、内容参照可能プロバイダ経由で実施されるプール上で作用する差分機関は、要望に応じてオブジェクト間の迅速な比較を行うために、内容参照可能インプリメンテーションの効率的なツリー構造を使用する（以下、図１２を参照）。
【０１０３】
内容参照可能プロバイダ６１０は、その内容参照可能プロバイダが消費する仮想ストレージリソースに追記型内容参照可能インターフェースを実装する。その追記型内容参照可能インターフェースは、読み取り、書き込み、複製および削除動作を実現する。書き込まれたオブジェクトまたはコピーされたオブジェクトのそれぞれは、そのオブジェクトの内容から導き出される固有のハンドルによって識別される。内容参照可能プロバイダは、以下に更に記載される（図１１）。
【０１０４】
プールマネージャ動作
動作中、プール要求仲介役５０２は、例えばプールもしくはオブジェクトについてのコピー、スナップショット、または削除などのデータ操作動作についての要求を受け付ける。要求仲介役は、プールもしくはオブジェクトに対して名前または参照を調べることによって実行するためにプール５０４からプロバイダコードを判断する。次いで、仲介役は、入ってくるサービス要求を特定のプール機能プロバイダによって処理され得る形態に変換し、適切なシーケンスのプロバイダ動作を呼び出す。
【０１０５】
例えば、入ってくる要求は、スナップショットを１次ストレージプールにおけるボリュームからスナップショットプールに作ることを尋ね得る。入ってくる要求は、１次ストレージプール内のオブジェクト（ボリューム）を名前によって識別し、名前および動作（スナップショット）の組み合わせは、基礎をなすスナップショット機能を用いて一時点スナップショットを１次プールから作り得るスナップショットプロバイダが、呼び出されるべきであることを決定する。このスナップショットプロバイダは、例えばビットマップまたはエクステントなどの、基礎をなすストレージ仮想化アプライアンスにより実行される固有のコピーオンライト機能によって必要とされた厳密な形態に要求を変換することになる。更に、そのスナップショットプロバイダは、オブジェクトマネージャに戻され得るストレージボリュームハンドルであって、プールマネージャに対する将来の要求に使用され得るストレージボリュームハンドルに、固有のコピーオンライト機能の結果を変換することになる。
【０１０６】
オブジェクトマネージャおよびデータムーバーを用いるデータバックアップのための最適な手法
データバックアップのための最適な手法は、時間の経過に伴ってアプリケーションデータオブジェクトの連続的なバージョンを作る一方で、オブジェクトムーバーに格納されたビットマップ、エクステントおよび他の時間的差分情報を用いることによりコピーされるべきであるデータの量を最小限にする一連の動作である。そのオブジェクトムーバーは、時間の経過に伴う変化が容易に識別され得るように、データストレージオブジェクトにアプリケーションデータを格納するし、時間の経過に伴うアプリケーションデータの様々な変化に関連するメタデータをそのアプリケーションデータと関連付ける。
【０１０７】
好適な実施形態では、手順は以下のステップを含む。
【０１０８】
１．  その機構は、データストレージオブジェクト内にアプリケーションデータの、最初の参照状態、例えばＴ０、を提供する。
【０１０９】
２．  後続のインスタンス（バージョン）は、差分機関プロバイダを有する仮想ストレージプールにおけるデータストレージオブジェクトの時間の経過に伴って要望に応じて生成される。
【０１１０】
３．  各連続的なバージョン、例えばＴ４、Ｔ５は、その各連続的なバージョンとその各連続的なバージョンの前に生成されたインスタンスとの間の差分を得るために仮想ストレージプール用の差分機関プロバイダを使用し、それによって、Ｔ５は、Ｔ４への参照として、および、Ｔ５とＴ４との間の差分の組として格納される。
【０１１１】
４．  コピー機関は、データを１つのデータオブジェクト（ソース）から別のデータオブジェクト（宛先）にコピーする要求を受信する。
【０１１２】
５．  宛先オブジェクトが仮想ストレージプールの中に生成されることになる当該仮想ストレージプールが、ソースデータオブジェクトの以前のバージョンから生成された他のオブジェクトを含有しない場合には、新しいオブジェクトが、宛先仮想ストレージプールに生成され、ソースデータオブジェクトの全内容は、宛先オブジェクトにコピーされ、手順は完了する。そうではない場合には、次のステップが続く。
【０１１３】
６．  宛先オブジェクトが仮想ストレージプールの中に生成される当該仮想ストレージプールが、ソースデータオブジェクトの以前のバージョンから生成されたオブジェクトを含有する場合、宛先仮想ストレージプールにおいて最近生成された以前のバージョンは、ソースデータオブジェクトの仮想ストレージプールにおいて対応する以前のバージョンが存在するために選択される。例えば、Ｔ５のコピーがスナップショットプールから始動される場合、および、時間Ｔ３に生成されたオブジェクトがターゲットで利用可能である直近のバージョンである場合、Ｔ３は、以前のバージョンとして選択される。
【０１１４】
７．  ソースデータオブジェクトのバージョンの時間順リストを構築し、前のステップにおいて識別された最初のバージョンで始め、もうすぐコピーされるソースデータオブジェクトで終える。上記例では、スナップショットプールで、オブジェクトの全状態が利用可能であるが、Ｔ３を含みＴ３に続く状態、つまり、Ｔ３、Ｔ４、Ｔ５のみが興味対象である。
【０１１５】
８．  リストの始まりのバージョンから終わりのバージョンまでの差分の全てが表わされるように、リストにおける各連続的なバージョン間の差分の対応するリストを構築する。差分は、データのどの部分が、変化したかと、対応する時間についての新たなデータを含むかとの両方を識別する。これは、ターゲットバージョンからソースバージョンまでの差分の組、例えばＴ３とＴ５との間の差分を生成する。
【０１１６】
９．  宛先仮想ストレージプール内でステップ６において識別されたオブェクト、例えばターゲットストア内のオブジェクトＴ３の以前のバージョンを複製することによって宛先オブジェクトを生成する。
【０１１７】
１０．  ステップ８において生成されたリスト内において識別された差分の組をソースデータオブジェクトから宛先オブジェクトにコピーし、手順は完了する。
【０１１８】
宛先仮想ストレージプール内の各データオブジェクトは、完了する。つまり、その各データオブジェクトは、全データオブジェクトを表わし、他の時点における状態または表示への外部参照を必要とすること無くその一時点におけるアプリケーションデータの全てに対するアクセスを与える。オブジェクトは、ベースライン状態から現状態まで全デルタを再現すること無くアクセス可能である。その上、宛先仮想ストレージプール内のデータオブジェクトの最初のバージョンおよび後続のバージョンの複製は、その宛先仮想ストレージプール内のアプリケーションデータ内容の包括的な複製を必要としない。最後に、第２の状態および後続の状態に達することは、上記のように、データストレージオブジェクトの内容の包括的なトラバーサル、伝送またはレプリケーション無しで、追跡され保持された変化の伝送だけを必要とする。
【０１１９】
オブジェクトマネージャおよびデータムーバーを使用するデータ復元のための最適な手法
直観的に、データ復元のための最適な手法の動作は、データバックアップのための最適な手法の逆である。所与の時点における宛先仮想ストレージプール内のデータオブジェクトの所望の状態を再生成するための手順は、以下のステップを含む。
【０１２０】
１．  差分機関プロバイダを有する別の仮想ストレージプール内にあり、再生成される所望の状態に対応するデータオブジェクトのバージョンを識別する。これは、ソース仮想ストレージプール内のソースデータオブジェクトである。
【０１２１】
２．  宛先仮想ストレージプールにおいて再生成されるデータオブジェクトの先行バージョンを識別する。
【０１２２】
３．  ステップ２においてデータオブジェクトのバージョンの１つも識別されない場合には、宛先仮想ストレージプールに新しい宛先オブジェクトを生成し、ソースデータオブジェクトから宛先データオブジェクトにデータをコピーする。手順は完了する。そうではない場合には、以下のステップに進む。
【０１２３】
４．  ステップ２においてデータオブジェクトのバージョンが識別される場合には、ステップ２において識別されたデータオブジェクトに対応するソース仮想ストレージプール内のデータオブジェクトを識別する。
【０１２４】
５．  ステップ４において１つもデータオブジェクトが識別されない場合には、宛先仮想ストレージプールに新しい宛先オブジェクトを生成し、ソースデータオブジェクトから宛先データオブジェクトにデータをコピーする。手順は完了する。それ以外の場合は、以下のステップに進む。
【０１２５】
６．  ステップ２において識別されたデータオブジェクトを複製することによって宛先仮想ストレージプールに新しい宛先データオブジェクトを生成する。
【０１２６】
７．  ステップ１において識別されたデータオブジェクトとステップ４において識別されたデータオブジェクトとの間の差分の組を得るためにソース仮想ストレージプール用の差分機関プロバイダを用いる。
【０１２７】
８．  ステップ７において生成されたリストによって識別されたデータをソースデータオブジェクトから宛先データオブジェクトにコピーする。手順は完了する。
【０１２８】
所望の状態へのアクセスは完了する。そのアクセスは、他のコンテナまたは他の状態への外部参照を必要としない。参照状態を与えられた所望の状態を確立することは、包括的なトラバーサルも包括的な伝送も必要とせず、ソース仮想ストレージプール内に提供された表示によって示され、検索された変化だけを必要とする。
【０１２９】
サービスレベルアグリーメント
図７は、サービスレベルアグリーメントを例示する。サービスレベルアグリーメントは、アプリケーションデータの２次コピーに関する詳細な事業要求を記録する。最も簡単な記述では、事業要求は、いつおよびどのくらいの頻度でコピーが生成されるか、どのくらいの期間それらのコピーが保持されるか、ならびに、どのような種類のストレージプールにこれらのコピーが存在するかを定義する。この単純化された記述は、事業要求のいくつかの態様を記録しない。所与の種類のプールについてのコピー生成の頻度は、１日の全ての時間にわたってまたは１週間の全ての日にわたって均一でなくてもよい。１日のうちのある一定の時間、または１週間もしくは１カ月のうちのある一定の日は、アプリケーションデータにおけるより多くの（または少ない）臨界期間を表わしてもよく、したがって、より多くの（または少ない）頻度のコピーを要請してもよい。同様に、特定プール内のアプリケーションデータの全コピーは、同じ長さの時間に保持される必要はなくてもよい。例えば、毎月の処理の最後に生成されるアプリケーションデータのコピーは、月の半ばに生成される同じストレージプール内のコピーよりも長い期間にわたって保持される必要があってもよい。
【０１３０】
ある一定の実施形態のサービスレベルアグリーメント３０４は、事業要求に存在するこれらの複雑さの全てを表わすように立案されている。サービスレベルアグリーメントは、４つの１次部分、すなわち、サービスレベルポリシーの名前、記述、ハウスキーピング属性および収集を有する。上記したように、アプリケーション毎に１つのＳＬＡがある。
【０１３１】
名前属性７０１は、各サービスレベルアグリーメントが固有の名前を有することを可能にする。
【０１３２】
記述属性７０２は、ユーザがサービスレベルアグリーメントのために役に立つ記述を設けることができるところである。
【０１３３】
サービスレベルアグリーメントはまた、そのサービスレベルアグリーメントが保持され改訂され得るいくつかのハウスキーピング属性７０３も有する。これらのハウスキーピング属性は、所有者の識別情報と、生成、修正ならびにアクセスの日付および時間と、優先度と、イネーブル／ディスエーブルフラグとを含むが、これらに限定されない。
【０１３４】
サービスレベルアグリーメントはまた、複数のサービスレベルポリシー７０５も含む。いくつかのサービスレベルアグリーメントは、単一のサービスレベルポリシーだけを有してもよい。より典型的には、単一のＳＬＡは数十個のポリシーを含んでもよい。
【０１３５】
各サービスレベルポリシーは、ある一定の実施形態では、少なくとも以下からなる。すなわち、ソースストレージプール位置７０６および種類７０８と、ターゲットストレージプール位置７１０および種類７１２と、期間として表わされたコピー生成頻度７１４と、期間として表わされたコピー保持期間７１６と、この特定サービスレベルポリシーのための日の間の動作の時間７１８と、このサービスレベルポリシーが適用される週、月または年の日７２０とからなる。
【０１３６】
各サービスレベルポリシーは、ソースストレージプールおよびターゲットストレージプール、ならびにこれらのストレージプール間で望まれるアプリケーションデータのコピーの頻度を規定する。その上、サービスレベルポリシーは、動作のそのポリシーの時間と、そのポリシーが適用可能である日を規定する。各サービスレベルポリシーは、アプリケーションデータの保護のための事業要求内の１つのステートメントの表示である。例えば、特定アプリケーションが、月末後に各月に生成され３年間保持されるアーカイブコピーについての事業要求を有する場合、この特定アプリケーションは、月の最終日の真夜中におけるローカルバックアップストレージプールから長期アーカイブストレージプールへのコピーを、３年間の保持を伴って、必要とするサービスレベルポリシーに変換し得る。
【０１３７】
ソースプールおよび宛先プールならびに位置の特定の組み合わせ、例えば、ソース１次ストレージプールおよび宛先ローカルスナップショットプールを用いるサービスレベルポリシーの全ては、まとめると、コピーをその特定宛先プールに生成するための事業要求を規定する。事業要求は、例えばスナップショットコピーが定期的な作業時間の間の１時間毎に、しかしながらこれらの時間外で４時間毎に１度のみ生成されることを命じてもよい。同じソースストレージプールおよびターゲットストレージプールを用いる２つのサービスレベルポリシーは、サービスポリシー機関によって実行に移され得る形態でこれらの要求を効果的に記録することになる。
【０１３８】
サービスレベルアグリーメントのこの形態は、毎日、毎週および毎月の事業活動のスケジュールの表示を可能にし、したがって、伝統的なＲＰＯおよびＲＰＯベースのスキームよりもはるかに正確にアプリケーションデータを保護して管理するための事業要求を記録する。動作の時間と、１年のうちの日、週、および月とを与えることによって、スケジューリングは「カレンダーベース」で起こり得る。
【０１３９】
まとめると、ソースおよび宛先の１つの特定の組み合わせ、例えば、「ソース：ローカル１次および宛先：ローカル性能を最適化された」を用いるサービスレベルポリシーの全ては、１つの種類のストレージのための非均一データ保護要求を記録する。その一方で、単一のＲＰＯ数は、１日の全ての時間および一日中にわたってデータ保護の単一の均一頻度を強いる。例えば、サービスレベルポリシーの組み合わせは、例えば１０分などの短期間に保存される多数のスナップショットと、例えば８時間などのより長い期間に保存されるより少ない数のスナップショットとを必要としてもよい。このことは、誤って削除されている少量の情報が、１０分前を超える状態に戻され得ることを可能にする一方で、１０分毎に取られたスナップショットの全てを格納するストレージオーバーヘッドを必要とすること無く、より長い期間に相当なデータ保護を更に提供する。別の例として、バックアップデータ保護機能は、週労働日数の間にある頻度で、および週末の間の別の頻度で動作する１つのポリシーを与えられてもよい。
【０１４０】
異なる種類のソースストレージおよび宛先ストレージの全てのためのサービスレベルポリシーが含まれると、サービスレベルアグリーメントは、ローカルスナップショット、ローカル長期ストア、現場から離れたストレージ、アーカイブ等を含む全アプリケーションのためのデータ保護要求の全てを完全に記録する。ＳＬＡ内のポリシーの収集は、所与の機能が実行されるべきときに表現することができるし、データの所与のソース上で実行されるべき複数データ管理機能を表現することができる。
【０１４１】
サービスレベルアグリーメントは、管理ワークステーション上のユーザインターフェースを通してユーザによって生成され修正される。これらのアグリーメントは、サービスポリシー機関が管理する構造化ＳＱＬデータベースまたは他のリポジトリ内にサービスポリシー機関によって格納された電子書類である。ポリシーは、以下に記載されるように、サービスポリシー機関の通常スケジューリングアルゴリズムを通してそのサービスポリシー機関によって検索され、電子的に解析され、作用される。
【０１４２】
図８はアプリケーション特定モジュール４０２を例示する。アプリケーション特定モジュールは、（上記したように）アプリケーション３００の近くで動き、データ管理動作のために必要に応じてメタデータを集めてアプリケーションを照会して制御するように、アプリケーションおよびそのアプリケーションの動作環境とやりとりする。
【０１４３】
アプリケーション特定モジュールは、アプリケーションと、アプリケーションサービスプロセスおよびデーモン８０１、アプリケーション構成データ８０２、オペレーティングシステムストレージサービス８０３（ウィンドウズ（登録商標）上のＶＳＳおよびＶＤＳなど）、論理的ボリューム管理およびファイルシステムサービス８０４、ならびにオペレーティングシステムドライバおよびモジュール８０５を含むそのアプリケーションの動作環境との様々な構成要素とやりとりする。
【０１４４】
アプリケーション特定モジュールは、サービスポリシー機関４０６からの制御コマンドに応答してこれらの動作を実行する。アプリケーションとのこれらのやりとりのための２つの目的、すなわち、メタデータ収集およびアプリケーション一貫性がある。
【０１４５】
メタデータ収集は、プロセスであり、そのプロセスによってアプリケーション特定モジュールはアプリケーションについてのメタデータを収集する。いくつかの実施形態では、メタデータは、例えば、アプリケーション用の構成パラメータと、アプリケーションの状態および状況と、アプリケーション用の制御ファイルおよび始動／シャットダウンスクリプトと、データファイルの位置と、アプリケーション用のジャーナルおよびトランザクションログと、アプリケーションデータへのアクセスに影響を及ぼし得るシンボリックリンク、ファイルシステムマウントポイント、論理的ボリューム名および他のそのようなエンティティと、などの情報を含む。
【０１４６】
メタデータは、収集され、アプリケーションデータおよびＳＬＡ情報と共に保存される。このことは、システム内のアプリケーションデータの各コピーが、自己充足式であることと、アプリケーションデータを再構築するために必要とされた詳細の全てを含むこととを保証する。
【０１４７】
アプリケーション一貫性は、アプリケーションデータのコピーが生成されるときに、コピーが有効であり、アプリケーションの有効なインスタンスに復元され得ることを確実にする動作の組である。このことは、事業要求が、アプリケーションがそのアプリケーションのオンラインの、動作状態で存続する間に、保護されることを命じる際に重要である。アプリケーションは、相互依存データ関係をそのアプリケーションのデータストア内に有してもよく、これらの相互依存データ関係が一致した状態でコピーされない場合、有効な復元可能画像を提供しないことになる。
【０１４８】
アプリケーション一貫性を実現する厳密なプロセスは、アプリケーションによって変化する。いくつかのアプリケーションは、キャッシュされたデータをディスクに押し込む簡単なフラッシュコマンドを有する。いくつかのアプリケーションは、アプリケーションが、アプリケーションデータが変化しているにもかかわらず、そのアプリケーションの動作が一貫性を保証する手法でジャーナリングされることを確実にする最新のバックアップモードをサポートする。いくつかのアプリケーションは、一貫性を確実にするために例えばＶＳＳおよびＶＤＳなどのオペレーティングシステムストレージサービスとのやりとりを必要とする。アプリケーション特定モジュールは、特定アプリケーションと働くためおよびそのアプリケーションの一貫性を確実にするための専用のものである。アプリケーション特定モジュールは、基礎をなすストレージ仮想化デバイスおよびオブジェクトマネージャとやりとりし、アプリケーションデータの一致したスナップショットを提供する。
【０１４９】
効率のためには、アプリケーション特定モジュール４０２の好適な実施形態は、アプリケーション３００と同じサーバ上で動くことである。このことは、アプリケーションとのやりとりにおける待ち時間を最小限にすることを保証し、アプリケーションホスト上のストレージサービスおよびファイルシステムへのアクセスを与える。アプリケーションホストは、典型的には、１次ストレージとみなされ、その上、その１次ストレージは、性能を最適化されたストアへスナップショットを取られる。
【０１５０】
準備ステップを最小限にすることを含む、作動中のアプリケーションの障害を最小限にすることのために、オブジェクトマネージャによって追跡される際に、アプリケーションデータへのアクセスが規定の時間に必要とされるとき、およびその時間についてのスナップショットがシステム内のどこにも存在しないとき、アプリケーション特定モジュールは、スナップショットを作ることを単に誘発される。どの時間にスナップショットが作られているかを追跡することによって、オブジェクトマネージャは、性能を最適化されたデータストアからの後続のデータ要求をかなえることができ、第２の、容量を最適化されたプールから発行され得るバックアップおよびレプリケーションのための複数の要求を満足させることを含む。オブジェクトマネージャは、性能を最適化されたストア内でスナップショットに対するオブジェクトハンドルを提供することができてもよいし、スナップショットの形式に特有の固有の形式に性能を最適化されたストアを導いてもよく、その固有の形式は、基礎をなすストレージアプライアンスに依存する。いくつかの実施形態では、この形式は、どのブロックが変化したかを示す１つ以上のＬＵＮビットマップと組み合わされたアプリケーションデータであってもよい。他の実施形態では、その形式は、特定のエクステントであってもよい。したがって、データ転送のために使用される形式は、ビットマップまたはエクステントを用いて２つのスナップショット間のデルタまたは差分のみを転送することができる。
【０１５１】
メタデータ、例えばアプリケーションのバージョン番号などもまた、各アプリケーションについてスナップショットと共に格納されてもよい。ＳＬＡポリシーが実行されると、アプリケーションメタデータは、ポリシーのために読み取られて使用される。このメタデータは、データオブジェクトと共に格納される。各ＳＬＡについて、アプリケーションデータのこのコピーがアプリケーションのメタデータと共に複数データ管理機能のために使用され得るにもかかわらず、アプリケーションメタデータは、軽量のスナップショット動作の間に１度読み取られるだけになり、例えばキャッシュをフラッシュすることなどのその時に起こる準備動作は、軽量のスナップショット動作の間に１度実行されるだけになる。
【０１５２】
サービスポリシー機関
図９は、サービスポリシー機関４０６を例示する。サービスポリシー機関は、サービスポリシースケジューラ９０２を含み、そのサービスポリシースケジューラは、ユーザによって設定されたサービスレベルアグリーメントの全てを検査し、サービスレベルアグリーメントを満たすスケジューリング決定を作成する。そのサービスポリシー機関は、情報を記録し、その情報を時間の経過に伴って持続するいくつかのデータストアに依存する。そのデータストアは、いくつかの実施形態では、設定されたサービスレベルアグリーメントが持続され更新されるところであるＳＬＡストア９０４と、論理的ストレージプール名と実際のストレージプールとの間のマッピングを提供するリソースプロファイルを格納しているリソースプロファイルストア９０６と、情報が、まだ期限切れしていない、様々なプール内において生成された前の成功したコピーについて、カタログに載せられるところである保護カタログストア９０８と、集中型履歴ストア９１０とを含む。
【０１５３】
履歴ストア９１０は、過去のアクティビティについての履歴情報が全データ管理アプリケーションの使用のために保存されるところであり、様々なストレージプールへの各アプリケーションの前のコピーの時刻表示、順序および階層を含む。例えば、午後１時に始動され午後９時に期限が切れるようにスケジュールされる、１次データストアから容量を最適化されたデータストアへのスナップショットコピーは、午前１１時および午後１２時に行われている同じソースおよびターゲットのためのスナップショット用のリンクされたオブジェクトデータも含む時間的データストア内の履歴ストア９１０に記録されることになる。
【０１５４】
これらのストアは、サービスポリシー機関によって管理される。例えば、ユーザが、管理ワークステーションを通してサービスレベルアグリーメントを生成すると、または、そのサービスレベルアグリーメント内のポリシーの１つを修正すると、サービスポリシー機関は、そのサービスポリシー機関のストアにこの新たなＳＬＡを持続し、ＳＬＡによって規定されたようにコピーをスケジュールすることによってこの修正に対処する。同様に、サービスポリシー機関が、ストレージプールにアプリケーションの新たなコピーを結果としてもたらすデータ移動ジョブをうまく完了すると、ストレージポリシー機関は、履歴ストアを更新し、これにより、このコピーは将来の決定への考慮に入れられることになる。
【０１５５】
サービスポリシー機関により使用される様々なストアの好適な実施形態は、サービスポリシー機関に極めて近い、関係のあるデータベース管理システム内の表の形態である。このことは、ストアに問い合わせてそのストアを更新する場合にトランザクションのセマンティックが一貫することを保証し、相互依存データを検索する際に柔軟性を与える。
【０１５６】
サービスポリシースケジューラ９０２用のスケジューリングアルゴリズムは図１０に例示される。サービスポリシースケジューラが、そのサービスポリシースケジューラが１つのストレージプールから別のストレージプールにアプリケーションデータのコピーを作る必要があることを決定すると、そのサービスポリシースケジューラは、データ移動要求およびモニタタスクを始動する、９１２。これらのタスクは、繰り返し発生するタスクではなく、それらのタスクが完了すると終了する。サービスレベルポリシーが規定される手法に依存して、複数のこれらの要求元は同時に動作し得る。
【０１５７】
サービスポリシースケジューラは、どの追加タスクに着手するかを判断する際にサービスレベルアグリーメントの優先度を考慮に入れる。例えば、１つのサービスレベルアグリーメントは、その１つのサービスレベルアグリーメントがミッションクリティカルアプリケーションのための保護を規定するという理由で高い優先度を有する場合、その一方で、別のＳＬＡは、その別のＳＬＡが試験データベースのための保護を規定するという理由でより低い優先度を有する場合には、サービスポリシー機関は、ミッションクリティカルアプリケーションのための保護だけを進める選択をしてもよいし、より低い優先度のアプリケーションのための保護を延期するか完全に省略してもよい。このことは、より低い優先度のＳＬＡよりも先により高い優先度のＳＬＡをスケジューリングするサービスポリシー機関によって達成される。好適な実施形態では、そのような状況において、監査目的のために、サービスポリシー機関はまた、管理ワークステーションへの通知イベントを誘発することになる。
【０１５８】
ポリシースケジューリングアルゴリズム
図１０は、ポリシースケジュール機関のフローチャートを例示する。ポリシースケジュール機関は、定義されたＳＬＡの全てをくまなく連続的に繰り返す。そのポリシースケジュール機関がＳＬＡの全ての最後に達すると、そのポリシースケジュール機関は、ほんの少しの間、例えば１０秒、スリープし、再びＳＬＡを通して調べることを再開する。各ＳＬＡは、１つのアプリケーションのための完全なデータ保護事業要求を包含する。したがって、ＳＬＡの全てはアプリケーションの全てを表わす。
【０１５９】
各ＳＬＡについて、スケジュール機関は、プロセス状態１０００で、同じソースプールおよび宛先プールを有するサービスレベルポリシーの全てを一緒に収集し１００４、１００２においてＳＬＡの組内の次のＳＬＡを反復する。まとめると、この下位の組のサービスレベルポリシーは、そのソースストレージプールからその特定の宛先ストレージプールへのコピーのための要求の全てを表わす。
【０１６０】
この下位の組のサービスレベルポリシーの中で、サービスポリシースケジューラは、今日に適用可能ではないポリシー、またはそれらのポリシーの動作時間外にあるポリシーを除く。残されたポリシーの中で、最も短い頻度を有するポリシーを見つけ１００６、履歴データに基づいておよび履歴ストア９１０内で、次に進むために必要な最も長い保持を伴うポリシーを見つける１００８。
【０１６１】
次に、この時にアプリケーションデータの新たなコピーを作ることを除外する一連の検査１０１０〜１０１４がある。なぜならば、新たなコピーをまだする予定ではない、コピーが既に進行中である、あるいはコピーするための新たなデータがないからである。これらの条件のいずれかを適用する場合、サービスポリシースケジューラは、ソースプールおよび宛先プールの次の組み合わせに移る１００４。これらの条件のどれも適用しない場合、新たなコピーが始動される。コピーは、このＳＬＡ内の対応するサービスレベルポリシーにおいて規定されたように実行される１０１６。
【０１６２】
次に、スケジューラは、同じサービスレベルアグリーメントについて次のソースおよび宛先プールの組み合わせに移る１０１８。別個の組み合わせがもはやない場合、スケジューラは、次のサービスレベルアグリーメントに進む１０２０。
【０１６３】
サービスポリシースケジューラが全サービスレベルアグリーメントのソース／宛先プールの組み合わせの全てを終えた後、そのサービスポリシースケジューラは、短い期間停止し、次いで、サイクルを再開する。
【０１６４】
２つのポリシーだけが定義され、スナップショットストアおよびバックアップストアを有する簡単な例のシステムは、以下のようにサービスポリシースケジューラとやりとりすることになる。１つのポリシーが「バックアップを毎時して、そのバックアップが４時間保持される」ことを指定し、別のポリシーが「バックアップを２時間毎にして、そのバックアップが８時間保持される」ことを指定する、２つのポリシーの場合、その結果、単一のスナップショットが１時間毎に取られることになり、スナップショットは、バックアップストアにそれぞれコピーされるが、スナップショットストアとバックアップストアとの両方に異なる時間保持されることになる。「バックアップを２時間毎にする」ポリシーは、午後１２：００に実施されるようにシステム管理者によってスケジューリングされる。
【０１６５】
午後４：００に、サービスポリシースケジューラがステップ１０００で動作を始めると、サービスポリシースケジューラは、ステップ１００２で２つのポリシーを見つける（午後１２：００から複数の２時間が経過しているので両方のポリシーが適用される）。ステップ１００４ではソースおよび宛先プールの１つの組み合わせだけがある。ステップ１００６では２つの頻度があり、システムは、１時間の頻度を選ぶ。なぜならば、それは２時間の頻度よりも短いからである。ステップ１００８では異なる保持を伴う２つの動作があり、システムは、８時間の保持を伴う動作がより長い保持値を有するのでその８時間の保持を伴う動作を選ぶ。１つのコピーが４時間要求を満たすように作られ、別のコピーが８時間要求を満たすように作られる代わりに、２つの要求は、より長い８時間要求に合体され、単一のスナップショットコピー動作によって満たされる。システムは、ステップ１０１０でコピーが予定されているかを判断し、コピーが既に（ステップ９１２で）ターゲットでおよび（ステップ９１４で）ソースで作られているかを判断するために履歴ストア９１０で関連のあるオブジェクトを検査する。これらの検査が通過される場合、システムは、ステップ９１６でコピーを始動し、プロセスにおいて、スナップショットストアで作られ保存されるスナップショットを誘発する。次いで、スナップショットは、スナップショットストアからバックアップストアにコピーされる。次に、システムは、スリープ状態１０２２になり、１０秒などの短い期間の後に再び起動する。その結果、バックアップストアでのコピーおよびスナップショットストアでのコピーとなり、ここで、偶数時間毎にスナップショットが８時間存続し、奇数時間毎にスナップショットが４時間存続する。バックアップストアおよびスナップショットストアでの偶数時間のスナップショットは、８時間の保持期間で両方ともタグ付けされ、その時間に別のプロセスによってシステムから自動的に削除されることになる。
【０１６６】
両方のポリシーは単一のコピーによって満たされるので、両方のポリシーが適用されるにもかかわらず、２時に２つのスナップショットを取るまたは２つのバックアップコピーを作る理由はないことに留意する。これらのスナップショットを組み合わせて合体することは、不必要な動作を削減することをもたらす一方で、複数の別個のポリシーの柔軟性を保持する。同様に、そのことは、異なる保持で同じターゲットのために同時に有効な２つのポリシーを有することに役に立ち得る。与えられた例において、２時間のコピーよりも多い時間毎に保持されるコピーが存在し、現在により近い時間における復元のためのより高い粒度を結果としてもたらす。例えば、前のシステムにおいて、午後７：３０にダメージが午後のより早くから発見される場合、バックアップは、過ぎた４時間、すなわち午後４、５、６、７時の１時間毎に利用可能となる。同様に、更に２個のバックアップが午後２時および午後１２時から保持されていることになる。
【０１６７】
内容参照可能ストア
図１１は、内容参照可能プロバイダ５１０のために内容参照可能ストアを実装するモジュールのブロック図である。
【０１６８】
内容参照可能ストア５１０インプリメンテーションは、これ以前に記載した、スナップショットを通して実施される性能最適化プールについての場合のように、コピーイン速度またはコピーアウト速度ではなく容量について最適化されたストレージリソースプールを提供し、したがって、典型的には、オフラインバックアップ、レプリケーションおよび遠隔バックアップのために使用される。内容参照可能ストレージは、異なるオブジェクトの共通下位の組を一度だけ格納する手法を提供し、ここで、それらの共通下位の組は、サイズが変化してもよいが、典型的には、４キビバイトと小さい。内容参照可能ストアのストレージオーバーヘッドは、アクセス時間が通常より多いにもかかわらず、スナップショットストアと比較して少ない。一般に、内容参照可能ストア内のオブジェクトは、このインプリメンテーションにおいて履歴関係も保持されるけれども、それらのオブジェクトの内容の大きな割合を共有し得るにもかかわらず、本質的関係を互いに有さず、その履歴関係は、記載される様々な最適化のイネーブラである。これは、スナップショットが本質的に連鎖を形成し、前のスナップショットまたはベースラインコピーからデルタだけをそれぞれ格納するところであるスナップショットストアとは対照をなす。特に、スナップショットベースのストアが任意のオブジェクトの少なくとも１つの全コピーを格納することになる一方で、内容参照可能ストアは、単一のオブジェクト内で複数回繰り返されるデータ下位の組の１つのコピーだけを格納することになる。
【０１６９】
内容参照可能ストア５１０は、ＴＣＰなどのローカル移送により通信する同じプロセスにおいてまたは別個のプロセスにおいて、プールマネージャと同じシステム上で実行するソフトウェアモジュールである。この実施形態では、内容参照可能ストアモジュールは、異なる構成要素からのソフトウェア障害の影響を最小限にするように、別個のプロセスにおいて動く。
【０１７０】
このモジュールの目的は、内容を重複排除することによって空間効率をより良くする手法（すなわち、単一もしくは複数データオブジェクト内で繰り返される内容が、一度だけ格納されることを確実にすること）で、データストレージオブジェクト４０３のストレージを与えることである。
【０１７１】
内容参照可能ストアモジュールは、プログラムのＡＰＩによってプールマネージャにサービスを提供する。これらのサービスは以下を含む。
【０１７２】
ハンドルへのオブジェクトのマッピング１１０２。オブジェクトは、ＡＰＩ経由でデータをストアの中に書き込むことにより生成され得る。データが一旦完全に書き込まれると、ＡＰＩは、オブジェクトの内容によって決定されたオブジェクトハンドルを戻す。逆に、データは、ハンドルを提供することによってオブジェクト内のオフセットからバイトのストリームとして読み取られてもよい。どのようにハンドルが構築されるかについての詳細は、図１２の記載に関して説明される。
【０１７３】
時間的ツリー管理１１０４は、格納されたデータオブジェクト間の親／子関係を追跡する。データオブジェクトがストア５１０に書き込まれると、ＡＰＩは、そのデータオブジェクトが、そのストア内に既にある親オブジェクトに対する子としてリンク付けられることを可能にする。これは、子オブジェクトが親の修正であることを内容参照可能ストアに示す。例えばアプリケーションのデータがストアの中に定期的にしばらくの間保存され、次いで、早期のコピーが復元され、後続の修正のための新しい開始点として使用された場合にあり得るように、単一の親は、異なる修正を持つ複数の子を有してもよい。時間的ツリー管理動作およびデータモデルは、以下により詳細に記載される。
【０１７４】
差分機関１１０６は、ストアにおける２つの任意オブジェクト間の差分領域の要約を生成することができる。差分動作は、比較される２つのオブジェクトのハンドルを指定するＡＰＩ経由で呼び出され、差分要約の形態は、一連の差分セクションのオフセットおよびサイズを伴う一連のコールバックである。差分は、並列にオブジェクトの２つのハッシュ化された表示を比較することによって計算される。
【０１７５】
ガーベジコレクタ１１０８は、どのオブジェクトハンドルによっても参照されない保存されたデータを見つけるために、および、このデータに当てられたストレージ空間を再要求するために、ストアを解析するサービスである。多くのデータが複数オブジェクトハンドルによって参照されること、すなわち、データはデータオブジェクト間で共有され、いくつかのデータは単一のオブジェクトハンドルによって参照されるが、（オブジェクトハンドルが内容参照可能システムから削除されている場合にあり得るように）オブジェクトハンドルによって参照されないデータは、新たなデータによって安全に上書きされ得ることは、内容参照可能ストアの性質である。
【０１７６】
オブジェクトレプリケータ１１１０は、２つの異なる内容参照可能ストア間のデータオブジェクトを複製するサービスである。複数の内容参照可能ストアは、オフラインバックアップまたは遠隔バックアップなどの付加的な事業要求を満たすために使用されてもよい。
【０１７７】
これらのサービスは、図１１に示される機能モジュールを用いて実施される。データハッシュモジュール１１１２は、固定されたサイズ制限までデータチャンクのための固定長キーを生成する。例えば、この実施形態では、ハッシュジェネレータがキーを作ることになるチャンクの最大サイズは、６４キビバイトである。固定長キーは、使用されるハッシュスキームを指示するようにタグ付けされたハッシュ、または無損失アルゴリズム符号化である。この実施形態において使用されるハッシュスキームはＳＨＡ‐１であり、そのＳＨＡ‐１は、均一分配と、機能が衝突を検出して対処するためにこのシステムに組み込まれる必要がないというほぼゼロを満たすハッシュ衝突の確率とを伴う、安全な暗号的ハッシュを生成する。
【０１７８】
データハンドルキャッシュ１１１４は、データのための、および、データへのハンドルのマッピングのための、一時的なストレージを提供するメモリ内データベースを管理するソフトウェアモジュールである。
【０１７９】
持続的ハンドル管理インデックス１１０４は、データへのＣＡＨのマッピングの信頼できる持続的データベースである。この実施形態では、それは、ハッシュジェネレータからこのハッシュのためのデータを含有する持続的データストア１１１８内のページにハッシュをマッピングするＢツリーとして実施される。Ｂ‐ツリー全部は一度にメモリ内に保持されることができないので、効率のために、この実施形態はまた、存在しないように知られるハッシュのための高価なＢ‐ツリー探索を回避するためにメモリ内のブルームフィルタも使用する。
【０１８０】
持続的データストレージモジュール１１１８は、データを格納し、長期持続的ストレージに操作し、その長期持続的ストレージは、データが格納されるところを指示するトークンを戻す。ハンドル／トークンペアは、データを検索するためにその後に使用される。データが持続的ストレージに書き込まれる際、そのデータは、この実施形態ではｚｌｉｂを用いて実施される無損失データ圧縮１１２０の層と、この実施形態ではイネーブルにされない任意選択の可逆的暗号化１１２２の層とを通過する。
【０１８１】
例えば、入ってくるオブジェクトが格納されることになり、ハンドルが要求元に戻されることになるので、データオブジェクトを内容参照可能ストアの中にコピーすることは、オブジェクト／ハンドルマッパーサービスによって提供される動作である。オブジェクト／ハンドルマッパーは、入ってくるオブジェクトを読み取り、ハッシュがデータハッシュジェネレータによって生成されることを要求し、データを持続的データストレージにおよびハンドルを持続的ハンドル管理インデックスに格納する。データハンドルキャッシュは、ハンドルについてのデータの将来の迅速な検索のために更新され続ける。持続的データストレージに格納されたデータは、ディスクに書き込まれる前に圧縮され、（任意選択として）暗号化される。典型的には、データオブジェクトにコピーする要求はまた、オブジェクトについての履歴記録を作成するために時間的ツリー管理サービスを呼び出すことになり、この履歴記録はまた、持続的データストレージによって持続される。
【０１８２】
別の例として、データオブジェクトのハンドルが与えられた内容参照可能ストアの外へデータオブジェクトをコピーすることは、オブジェクト／ハンドルマッパーサービスによって提供される別の動作である。ハンドルは、対応するデータの位置を突き止めるためにデータハンドルキャッシュ内で検索される。データがキャッシュ内に見つからない場合、持続的インデックスが使用される。一旦データがディスク上に置かれると、そのデータは（ディスクデータを復号化し展開する）持続的データストレージモジュールによって検索され、次いで、要求元に戻るように再構成される。
【０１８３】
内容参照可能ストアハンドル
図１２は、内容参照されたオブジェクトのためのハンドルがどのように生成されるかを示す。データオブジェクトマネージャは、内容参照可能ハンドルを用いて内容参照可能オブジェクトの全てを参照する。このハンドルは、３つの部分から構成される。第１の部分１２０１は、ハンドルが直ぐに示す基礎をなすデータオブジェクトのサイズである。第２の部分１２０２は、そのハンドルが示すオブジェクトの深さである。第３の部分１２０３は、そのハンドルが示すオブジェクトのハッシュである。フィールド１２０３は、ハッシュが基礎をなすデータの無損失符号化であることを示すタグを任意選択的に含む。タグは、データチャンクが十分短いランレングス符号化（ＲＬＥ）として完全に表わされ得る場合、アルゴリズム符号化として使用されるデータのＲＬＥの形態などの、使用される符号化スキームを示す。基礎をなすデータオブジェクトが無損失符号化として表わされるには長すぎる場合、ハッシュから、ポインタまたはデータへの参照までのマッピングは、持続的ハンドル管理インデックス１１０４に別個に格納される。
【０１８４】
内容参照可能オブジェクトについてのデータは、チャンク１２０４の中に分割される。各チャンクのサイズは、１つの内容参照可能ハンドル１２０５によって参照可能でなければならない。データは、データハッシュモジュール１１０２によってハッシュされ、チャンクのハッシュはハンドルを作るために使用される。オブジェクトのデータが１つのチャンクに収まる場合には、生成されたハンドルは、オブジェクトの最終的なハンドルである。そうではない場合には、ハンドル自体がチャンク１２０６の中にグループ化され、ハッシュがハンドルの各グループについて生成される。ハンドルのこのグループ分けは、生成されるハンドル１２０８が１つだけ存在するまで１２０７を続け、したがって、そのハンドル１２０８は、オブジェクトのためのハンドルである。
【０１８５】
オブジェクトが内容ハンドルから再構成されることになると（ストレージリソースプールについてのコピーアウト動作）、トップレベルの内容ハンドルは、次のレベルの内容ハンドルのリストを取得するためにデリファレンスされる。次のレベルの内容ハンドルは、更には、深さ０ハンドルが取得されるまで内容ハンドルの更なるリストを取得するためにデリファレンスされる。深さ０ハンドルは、ハンドル管理インデックスもしくはキャッシュ内でハンドルを検索することによって、あるいは（ランレングス符号化などのアルゴリズムハッシュの場合には）全内容に確定的に展開することによって、データに展開される。
【０１８６】
時間的ツリー管理
図１３は、内容参照可能ストア内に格納されたデータオブジェクトのために生成された時間的ツリー関係を例示する。この特定データ構造は、内容参照可能ストア内だけで利用される。時間的ツリー管理モジュールは、内容参照されたデータオブジェクトのそれぞれを（一連の改訂における最初を示すためのヌル（ｎｕｌｌ）であり得る）親に関連付ける持続的ストア内においてデータ構造１３０２を保持する。ツリーの個々のノードは、単一のハッシュ値を含有する。このハッシュ値は、ハッシュが深さ０ハッシュである場合にはデータのチャンクを参照し、あるいは、ハッシュが深さ１もしくはより高いハッシュである場合には他のハッシュのリストを参照する。ハッシュ値にマッピングされた参照は、持続的ハンドル管理インデックス１１０４に含有される。いくつかの実施形態では、ツリーの端部は、近隣を見つけるためにアルゴリズムに使用され得る重さまたは長さを有してもよい。
【０１８７】
これは、標準ツリーデータ構造であり、モジュールは、標準操作動作、特に、親の下に葉を追加する１３１０追加であって、最初の状態１３０２と追加後の状態１３０４との間のときにツリーに変化をもたらす追加と、ノードを除去する１３１２除去（およびそのノードの親を再びそのノードの子の親とすること）であって、追加後の状態１３０４と除去後の状態１３０６との間のときにツリーに変化をもたらす除去とをサポートする。
【０１８８】
「追加」動作は、オブジェクトが外部プールからＣＡＳにコピーインされるときはいつでも使用される。コピーインがデータバックアップのための最適な手法による場合には、または、オブジェクトが、異なるＣＡＳプールに生じている場合には、先行オブジェクトが特定されることが必要とされ、追加動作は、この先行／後続関係を記録するために呼び出される。
【０１８９】
「除去」動作は、ポリシーマネージャがオブジェクトの保持期間が期限切れしていることを判断すると、オブジェクトマネージャによって呼び出される。このことは、ＣＡＳを参照する時間的ツリーにオブジェクトを有しないＣＡＳに格納されるデータをもたらし得る。したがって、後続のガーベジコレクションパスは、再使用のために利用可能である際にそのデータ用のストレージ空間を解放し得る。
【０１９０】
単一の先行点が複数の後続点または子ノードを有することが可能であることを留意する。例えば、このことは、オブジェクトが時間Ｔ１でまず初めに生成され、時間Ｔ２で修正される場合に生じることがあり、修正は復元動作によってロールバックされ、後続の修正が時間Ｔ３でなされる。この例では、状態Ｔ１は、２つの子、状態Ｔ２および状態Ｔ３を有する。
【０１９１】
異なるＣＡＳプールは、遠隔位置に災害復旧をもたらすことなどの異なる事業目標を遂行するために使用されてもよい。１つのＣＡＳから別のＣＡＳにコピーをするとき、コピーは、ターゲットＣＡＳの固有の重複排除機能をうまく利用するために、ハッシュおよびオフセットとして送信されてよい。任意の新しいハッシュによって示された基礎をなすデータはまた、必要に応じて送信される。
【０１９２】
時間的ツリー構造は、様々なサービスのインプリメンテーションの一部として読み取られるか進行される。
【０１９３】
−  ガーベジコレクションは、以下に記載されるように、「マーク」段階の費用を削減するためにツリーを進行する。
−  異なるＣＡＳプールに対するレプリケーションは、他のＣＡＳプールに既に転送されていることを知られてもいる時間的ツリーにおいて最も近い近隣の組を見つけ、これにより、少ない組の差分だけが追加的に転送される必要がある。
−  データ復元のための最適な手法は、復元動作のための基準として使用され得る先行点を見つけるために時間的ツリーを使用する。ＣＡＳ時間的ツリーデータ構造では、子は、例えばアーカイブポリシーによって規定されるような後続のバージョンである。複数の子は同じ親ノード上に支持される。この場合は、親ノードが、変更され、次いで、復元のための基準として使用され、引き続いて再度変更されるときに、起こり得る。
【０１９４】
ＣＡＳ差分機関
ＣＡＳ差分機関１１０６は、図１１および図１２にあるようなハッシュ値またはハンドルによって識別された２つのオブジェクトを比較し、オブジェクトデータが相違すると知られているオブジェクト内にオフセットおよびエクステントのシーケンスを作り出す。このシーケンスは、図１２のハッシュデータ構造において並列に２つのオブジェクトツリーを横断することによって実現される。ツリートラバーサルは、標準の深さ優先または幅優先トラバーサルである。トラバーサルの間、現在の深さにあるハッシュは比較される。ノードのハッシュが両側間で同一である場合、ツリーを更に下降する必要なはいので、トラバーサルは省略されてもよい。ノードのハッシュが同一ではない場合、トラバーサルは、ツリーの次に低いレベルに下降し続ける。トラバーサルが、深さ０のハッシュの片方と同一ではない深さ０のハッシュに達する場合には、非同一データが生じる場合に比較されるデータオブジェクトへの絶対オフセットは、データ長と共に、出力シーケンスに出される。１つのオブジェクトが別のオブジェクトよりもサイズか小さい場合には、その１つのオブジェクトのトラバーサルはより早くに完了することになり、他のオブジェクトのトラバーサルに直面された後続のオフセットの全ては、差分として出される。
【０１９５】
差分化によるガーベジコレクション
図１１の下で記載されたように、ガーベジコレクタは、ＣＡＳストア時間的データ構造においていずれのオブジェクトハンドルによっても参照されていない保存されたデータを見つけるために、および、このデータに当てられたストレージ空間を再要求するために、特定ＣＡＳストアを解析するサービスである。ガーベジコレクションは標準「マークアンドスイープ」アプローチを使用する。「マーク」段階はかなり高価であり得るので、マーク段階のために使用されるアルゴリズムは、それが何度も参照され得るにもかかわらず、同じデータを複数回マーキングすることを最小限にすることを試みる。しかしながら、マーク段階は、参照されるデータがマークされずに残らないことを確実にして完了しなければならない。このことはストアからのデータ損失をもたらすことになるが、スイープ段階後、マークされなかったデータは後で新しいデータによって上書きされることになる。
【０１９６】
参照されるデータをマーキングするために用いられるアルゴリズムは、ＣＡＳ内のオブジェクトが、図１３に描かれたデータ構造を用いて時間的関係を有するグラフに配列されるという事実を使用する。これらのグラフにおいて端部を共有するオブジェクトは、これらのデータの小さい下位の組だけが異なる可能性があり、また、オブジェクトが先行点から生成されるときに現れる任意の新たなデータチャンクが、任意の２つの他のオブジェクト間に再度現れなければならないことは、まれである。したがって、ガーベジコレクションのマーク段階は、時間的グラフの接続された構成要素のそれぞれを処理する。
【０１９７】
図１４は、ある一定の実施形態における時間的関係を用いるガーベジコレクションの例である。時間的関係を含むデータ構造の、矢印１４０２によって表わされた、深さ優先探索が行われる。開始ノード１４０４を取り扱い、その開始ノードからツリートラバーサルは始まる。ノード１４０４は、ツリールートであり、オブジェクトを参照しない。ノード１４０６は、オブジェクト１のためのハッシュ値を示すオブジェクトＨ1への参照と、オブジェクト２のためのハッシュ値を示すオブジェクトＨ2への参照を含む。ノード１４０６によって参照される深さ０、深さ１およびより高いデータオブジェクトの全て、ここでは、Ｈ1およびＨ2は、参照されるものとして列挙されマークされる。
【０１９８】
次に、ノード１４０８が処理される。そのノード１４０８が、マークされたノード１４０６と端部を共有する際、差分機関は、１４０６により参照されたオブジェクトと１４０８により参照されたオブジェクトとの間の差分を適用され、マークされなかったオブジェクトに存在するもののマークされたオブジェクトには存在しない深さ０、深さ１およびより高いハッシュの組を得る。図面中、ノード１４０８に存在するもののノード１４０６には存在しないハッシュは、Ｈ3であるので、Ｈ3が参照されるものとしてマークされる。この手順は、全ての端部が検討し尽されるまで継続される。
【０１９９】
先行技術アルゴリズム１４１８および本実施形態１４２０によって生じた結果の比較では、ノード１４０８が先行技術アルゴリズムによって処理されると、前に見られるハッシュＨ1およびＨ2が新しいハッシュＨ3と共に出力ストリームに出されることがわかる。本実施形態１４２０は、前に見られたハッシュを出力ストリームに出さず、性能の対応する改良を用いて、新しいハッシュＨ3、Ｈ4、Ｈ5、Ｈ6、Ｈ7だけが出力ストリームに出されることを結果としてもたらす。この方法は、データが２回以上マークされないことを保証しないことに留意する。例えば、ハッシュ値Ｈ4がノード１４１６に独立して生じる場合、そのハッシュ値は、２回独立してマークされることになる。
【０２００】
ＣＡＳへのオブジェクトのコピー
別のプールからＣＡＳにオブジェクトをコピーすることは、図１１に図示されたソフトウェアモジュールを使用して、図１２にあるようなオブジェクトハンドルによって参照されるデータ構造を生む。そのプロセスへの入力は、（ａ）深さ０ハンドルを作るために適切なサイズの、特定されたオフセットでのデータの一連のチャンクと、任意選択的に（ｂ）同じオブジェクトの前のバージョンとである。暗示的に、新しいオブジェクトは、入力データが提供される場合とその新しいオブジェクト自体が前のバージョンと異なる場合とを除いて、前のバージョンと同一になる。コピーイン動作のためのアルゴリズムは、図１５におけるフローチャートに例示される。
【０２０１】
前のバージョン（ｂ）が提供される場合には、シーケンス（ａ）は（ｂ）からの変化の疎な組であり得る。オブジェクトが、コピーされ、前のオブジェクトと多少の点だけが異なることが知られる場合、このことは、コピーインされる必要があるデータの量を大幅に削減することができ、したがって、必要とされる計算および入出力作業を削減することができる。これは、例えば、オブジェクトが、前に記載したデータバックアップのための最適な手法によってコピーインされる場合である。
【０２０２】
たとえシーケンス（ａ）が、先行点から大きく変化していないセクションを含んでも、先行点（ｂ）を識別することは、コピーイン手順が、データが実際に変化しているかどうかについての迅速検査をすることを可能にし、したがって、入力をＣＡＳに提供するいくつかの他のストレージプールにおける差分機関に可能であり得るよりも、より微細なレベルの粒度でデータ複製を回避することを可能にする。
【０２０３】
次いで、暗示的に、新しいオブジェクトは、入力データが提供され、その新しいオブジェクト自体が前のバージョンと異なる場合を除いて、前のバージョンと同一であることになる。コピーイン動作のためのアルゴリズムは、図１５におけるフローチャートに例示される。
【０２０４】
プロセスは、時間的ストアにおける任意のサイズのデータオブジェクトが提供される際にステップ１５００で開始し、１５０２に進む。その１５０２は、先行オブジェクトにおけるハッシュ値が提供される場合には、そのような先行オブジェクトにおけるハッシュ値によって参照される任意のおよび全てのハッシュ（深さ０から最も高いレベルまで）を列挙する。このことは、先行点に既に含まれるデータを格納することを回避する迅速な検査として使用されることになる。
【０２０５】
ステップ１５０４では、先行点が入力される場合、その先行点のクローンへの参照を内容参照可能データストアの時間的データ構造に生成する。このクローンは、新しいオブジェクトになるように更新されることになる。したがって、新しいオブジェクトは、コピー用ソースプールからＣＡＳにコピーされた差分によって修正された先行点のコピーになることになる。
【０２０６】
ステップ１５０６、１５０８では、データムーバー５０２は、データをＣＡＳに押し動かす。データは、オブジェクト参照およびオフセットを伴い、そのオフセットは、データのためのターゲット位置である。データは、先行点からの差分だけが新しいオブジェクトに動かされる必要があるので、疎であり得る。この時点で、入ってくるデータは、それぞれが単一の深さ０ハッシュによって表わされ得るのに足りるだけの小さいサイズの深さ０チャンクに分断される。
【０２０７】
ステップ１５１０では、データハッシュモジュールは、深さ０チャンクのそれぞれのためのハッシュを生成する。
【０２０８】
ステップ１５１２では、同じオフセットにある先行ハッシュを読み取る。データのハッシュが、同じオフセットにある先行のハッシュに一致する場合には、データは格納される必要がなく、深さ１およびより高いオブジェクトは、この深さ０チャンクのために更新される必要はない。この場合では、データの次の深さ０チャンクを受け入れるために戻る。このことは、高価な広域検索をせずに、時間的重複排除を達成する。ソースシステムが、ＣＡＳに前に格納されているデータからの差分だけを理想的に送信するにもかかわらず、この検査は、ソースシステムが、異なるレベルの粒度で差分化を実行している場合に、あるいは、データが、変化したものとしてマークされるがそのデータの前に格納された値に戻って変化している場合に、必要であり得る。差分化は、例えば、ソースシステムが、３２キビバイト限界上でデルタを生成するスナップショットプールであり、ＣＡＳストアが、４キビバイトチャンク上でハッシュを生成する場合に、異なるレベルの粒度で実行されてもよい。
【０２０９】
一致が見つからない場合、データは、ハッシュされ格納されてもよい。データは、提供されるオフセットで書き込みを開始され、一旦新たなデータが検討し尽されると書き込みを終了される。一旦データが格納されていると、ステップ１５１６では、オフセットが同じ深さ１オブジェクト内にまだ含まれる場合には、深さ１、深さ２および全てのより高いオブジェクト１５１８が更新され、各レベルで新しいハッシュを生成し、深さ０、深さ１および全てのより高いオブジェクトは、ステップ１５１４でローカルキャッシュに格納される。
【０２１０】
しかしながら、ステップ１５２０で、格納されるデータの量が深さ１チャンクのサイズを超える場合およびオフセットが新しい深さ１オブジェクトに含まれる場合、現在の深さ１は、その現在の深さ１がストアに既に格納されるように決定されない限り、そのストアにフラッシュされなければならない。まず、その現在の深さ１を広域インデックス１１１６内で検索する。その現在の深さ１がその広域インデックスで見つけられた場合、深さ１および全ての関連付けられた深さ０オブジェクトをローカルキャッシュから除去して、新しいチャンクに進む１５２２。
【０２１１】
ステップ１５２４では、広域インデックスを訪れることを避ける迅速検査の際、ローカルキャッシュ内の深さ０、深さ１およびより高いオブジェクトのそれぞれについて、１５０２において確立されたローカルストア内のそのオブジェクトのハッシュを検索する。一致するいかなるものも捨てる。
【０２１２】
ステップ１５２６では、ローカルキャッシュ内の深さ０、深さ１およびより高いオブジェクトのそれぞれについて、広域インデックス１１１６においてそのオブジェクトのハッシュを検索する。一致するいかなるものも捨てる。このことは、データが広域に重複排除されることを確実にする。
【０２１３】
ステップ１５２８では、残りの内容の全てをローカルキャッシュから持続的ストアに格納し、次いで、新しいチャンクを処理し続ける。
【０２１４】
ＣＡＳの中からオブジェクトを読み取ることは、より簡単なプロセスであり、ＣＡＳの多くのインプリメンテーションにわたって共通である。オブジェクトのためのハンドルは、広域インデックスによって持続的データオブジェクトにマップされ、必要とされたオフセットは、この持続的データ内から読み取られる。いくつかの場合において、オブジェクトハンドルツリー内のいくつかの深さを通して再帰的に処置する必要があり得る。
【０２１５】
ＣＡＳオブジェクトネットワークレプリケーション
図１１の下で記載されたように、レプリケータ１１１０は、２つの異なる内容参照可能ストア間でデータオブジェクトを複製するサービスである。レプリケーションのプロセスは、１つのストアの中から読み取ることと別のストアに書き戻すことによって達成され得るが、このアーキテクチャは、ローカルエリアネットワークまたはワイドエリアネットワークなどの限定された帯域幅接続上でより効率的なレプリケーションを可能にする。
【０２１６】
各ＣＡＳストアで動作するレプリケーティングシステムは、上記した差分機関サービスを図１３に図示されるような時間的関係構造と共に使用し、更に、オブジェクトが複写されている遠隔ストアの記録を、ＣＡＳストアにより使用される時間的データ構造に、オブジェクト毎に基づいて、追加的に格納する。このことは、ある一定のデータストアにおけるオブジェクトの存在の最終的な情報を提供する。
【０２１７】
時間的データ構造を用いると、システムが、どのオブジェクトがどのデータストア上に存在するかを判断することが可能である。この情報は、ターゲットデータストアを最新の状態にするように、コピー動作の間にネットワーク上で送信される最小限の下位の組のデータを判断するために、データムーバーおよび差分機関によって影響を及ぼされる。例えば、データオブジェクトＯが、ＢｏｓｔｏｎにあるサーバからＳｅａｔｔｌｅにある遠隔サーバに時間Ｔ３にコピーされている場合、保護カタログストア９０８は、時間Ｔ３におけるオブジェクトＯがＢｏｓｔｏｎとＳｅａｔｔｌｅとの両方に存在することを格納することになる。時間Ｔ５では、ＢｏｓｔｏｎからＳｅａｔｔｌｅへの後続のコピーの間、時間的データ構造は、Ｂｏｓｔｏｎにあるソースサーバ上で差分化するために使用されるべきであるＳｅａｔｔｌｅにあるオブジェクトＯの前の状態を判断するために考慮されることになる。次いで、Ｂｏｓｔｏｎのサーバは、Ｔ５とＴ３との差分を取り、その差分をＳｅａｔｔｌｅのサーバに送信することになる。
【０２１８】
次いで、オブジェクトＡを複写するためのプロセスは、以下の通りである。ターゲットストアおよびローカルストア内のＡの近くの近隣に既に複写されているものとして記録されたオブジェクトＡ０を識別する。そのようなオブジェクトＡ０が存在しない場合には、Ａを遠隔ストアに送信し、そのＡを送信されているものとしてローカルに格納し記録する。ローカルオブジェクトを遠隔ストアに送信するために、本明細書で具体化されるような典型的な方法は、オブジェクト内のデータチャンクのハッシュおよびオフセットの全てを送信し、どのハッシュが遠隔に存在しないデータを表わすかに関して遠隔ストアに問い合わせ、必要とされたデータを遠隔ストアに送信することである（この実施形態では、データおよびハッシュを送信することが、ＴＣＰデータストリーム内にデータおよびハッシュを要約すること（ｅｎｃａｐｓｕｌａｔｉｎｇ）によって実施される）。
【０２１９】
逆に、Ａ０が識別される場合には、ＡにあるがＡ０にはないデータチャンクを識別するために差分機関を動かす。これは、遠隔ストアに送信される必要があるデータの上位の組であるべきである。ＡにあるがＡ０にはないチャンクのためにハッシュおよびオフセットを送信する。どのハッシュが、遠隔に存在していないデータを表わすかに関して遠隔ストアに問い合わせる。必要とされたデータを遠隔ストアに送信する。
【０２２０】
サンプルデプロイメントアーキテクチャ
図１６は、データ管理仮想化（ＤＭＶ）システムの一実施形態を備えるソフトウェア構成要素およびハードウェア構成要素を示す。システムを備えるソフトウェアは、３つの分配された構成要素として実行する。
【０２２１】
ホストエージェントソフトウェア１６０２ａ、１６０２ｂ、１６０２ｃは、上記したアプリケーション特定モジュールのいくつかを実施する。そのホストエージェントソフトウェアは、アプリケーションのデータが管理下にあるそのアプリケーションと同じサーバ１６１０ａ、１６１０ｂ、１６１０ｃ上で実行する。
【０２２２】
ＤＭＶサーバソフトウェア１６０４ａ、１６０４ｂは、ここに記載されるようにシステムの残りを実施する。そのＤＭＶサーバソフトウェアは、高可用性仮想化ストレージサービスも提供する１組のリナックス（登録商標）サーバ１６１２、１６１４上で動く。
【０２２３】
そのシステムは、デスクトップコンピュータまたはラップトップコンピュータ１６２０上で動く管理クライアントソフトウェア１６０６によって制御される。
【０２２４】
これらのソフトウェア構成要素は、ＩＰネットワーク１６２８の上のネットワーク接続経由で互いに通信する。データ管理仮想化システムは、公衆インターネットバックボーンなどのＩＰネットワーク上の１次サイト１６２２とデータレプリケーション（ＤＲ）サイト１６２４との間で互いに通信する。
【０２２５】
１次サイトおよびＤＲサイトにおけるＤＭＶシステムは、ファイバチャネルネットワーク１６２６経由で１つ以上のＳＡＮストレージシステム１６１６、１６１８にアクセスする。１次アプリケーションを動かしているサーバは、ファイバチャネルネットワーク上のファイバチャネル経由またはＩＰネットワーク上のｉＳＣＳＩ経由でストレージにアクセスするＤＭＶシステムにより仮想化されたストレージにアクセスする。遠隔ＤＲサイトにあるＤＭＶシステムは、Ｌｉｎｕｘ（登録商標）サーバ１６２８上のＤＭＶサーバソフトウェア１６０４ｃの並列インスタンスを動かす。Ｌｉｎｕｘ（登録商標）サーバ１６２８はまた、アマゾンウェブサービスＥＣ２インスタンスまたは他の類似のクラウド計算上のリソースであってもよい。
【０２２６】
図１７は、本発明のある一定の実施形態に従って、コンピュータ化されたシステムの様々な構成要素を描いた図であり、ある一定の要素がそのシステム上で実装され得る。記載された論理モジュールは、揮発性メモリ１７０２と、ハードドライブなどの持続的ストレージデバイス１７０８と、プロセッサ１７０３と、ネットワークインターフェース１７０４とを含むホストコンピュータ１７０１上で実施されてもよい。ネットワークインターフェースを用いると、システムコンピュータは、他の実施形態の間で、ＳＡＮまたはファイバチャネルデバイス上でストレージプール１７０５、１７０６とやりとりすることができる。図１７はシステムを例示し、システムコンピュータは、そのシステム内で様々なストレージプールから分離されるが、ストレージプールのうちのいくつかまたは全ては、ホストコンピュータ内に収容されてもよく、ネットワークインターフェースの必要性を排除してもよい。プログラムのプロセスは、図１７に示されるように、単一のホスト上で実行されてもよいし、それらのプロセスは、複数ホストにわたって分散されてもよい。
【０２２７】
図１７に示されるホストコンピュータは、管理用ワークステーションとして機能してもよいし、アプリケーションおよびアプリケーション特定エージェント４０２を実施してもよいし、データ仮想化システム自体を含む本明細書に記載された論理モジュールのいずれかおよび全てを実施してもよいし、物理的媒体のストレージプールをシステムに露出するためのストレージコントローラとして機能してもよい。ワークステーションは、図形表示デバイス１７０７に、ならびにマウス１７０９およびキーボード１７１０などの入力デバイスに接続されてもよい。代わりに、アクティブユーザのワークステーションは、手持ち式デバイスを備えてもよい。
【０２２８】
この明細書全体を通して、ソフトウェア構成要素に言及するが、ソフトウェア構成要素への全ての言及は、ハードウェア上で動いているソフトウェアを利用することが意図される。同様に、本明細書において言及されたオブジェクトおよびデータ構造は、揮発性メモリまたは不揮発性メモリに実際に格納されたデータ構造を利用することが意図される。同様に、サーバは、ソフトウェアを利用することが意図され、機関は、図１７に図示されたコンピュータシステムなどのハードウェア上で全て動いているソフトウェアを利用することが意図される。
【０２２９】
上記は、対象のより適切な特徴のいくつかを概略して記している。これらの特徴は、単なる実例となるものと解釈されるべきである。多くの他の有益な結果は、開示された対象を異なる手法で適用することによってまたは記載されるように対象を修正することによって、得られ得る。例えば、開示されたガーベジコレクションアルゴリズムは、三色マーキングなどの他のガーベジコレクション最適化手法を取り入れてもよい。
【図１】
2013543198.tif 000003
【図２】
2013543198.tif 000004
【図３】
2013543198.tif 000005
【図４】
2013543198.tif 000006
【図５】
2013543198.tif 000007
【図６】
2013543198.tif 000008
【図７】
2013543198.tif 000009
【図８】
2013543198.tif 000010
【図９】
2013543198.tif 000011
【図１０】
2013543198.tif 000012
【図１１】
2013543198.tif 000013
【図１２】
2013543198.tif 000014
【図１３】
2013543198.tif 000015
【図１４】
2013543198.tif 000016
【図１５】
2013543198.tif 000017
【図１６】
2013543198.tif 000018
【図１７】
2013543198.tif 000019
【手続補正書】
【提出日】平成25年7月18日(2013.7.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データオブジェクトがどのように時間の経過に伴って変化するかを表わす情報でターゲット重複排除ストアを更新するために、ソース重複排除ストアを用いる方法であって、
重複内容を格納することを回避する前記ソース重複排除ストアであって、固有の内容を含有する前記ソース重複排除ストアで、各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
前記ソース重複排除ストアで、各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
前記ソース重複排除ストアで、各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために時間的構造の編成された配列を保持することであって、各構造が、前記データオブジェクトの時間的状態と関連付けられ、前記構造の前記論理的配列は、前記データオブジェクトの変化する前記時間的状態を示し、各時間的状態は、前の時間的状態に対して変化した前記データオブジェクトの全内容を表わすハッシュ構造の組と関連付けられる、当該時間的構造の編成された配列を保持することと、
重複内容を格納することを回避する前記ターゲット重複排除ストアであって、固有の内容を含有する前記ターゲット重複排除ストアで、各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
前記ターゲット重複排除ストアで、各データオブジェクトについて、前記第１の重複排除ストアにおける前記ハッシュ構造の少なくとも下位の組である、ハッシュ構造の編成された配列を保持することと、
前記ターゲット重複排除ストアで、各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために、時間的構造の編成された配列を保持することであって、前記時間的構造の前記編成された配列は、前記時間的状態の下位の組を表わす、前記ソース重複排除ストアにおける前記時間的構造の少なくとも下位の組である、当該時間的構造の編成された配列を保持することと、
前記ソース重複排除ストアからの情報で前記ターゲット重複排除ストアを更新する要求に応答して、前記ソースおよびターゲット重複排除ストアに共通である時間的状態であって、前記ソース重複排除ストアの現在の状態に時間的に近い範囲にある時間的状態を見つけることと、
前記共通状態から前記ソース重複排除ストアの前記現在の時間的状態に変化した前記内容のためのハッシュ署名の組をコンパイルすることと、前記ターゲット重複排除ストアが、前記ソース重複排除ストアの前記現在の時間的状態まで前記データオブジェクトの前記内容を表わすために、前記ターゲット重複排除ストアのハッシュ構造の編成された配列を更新し得るように、前記ハッシュ署名の前記組を前記ターゲット重複排除ストアに送信することとを含み、その結果、前記更新の後、前記ソースおよびターゲット重複排除ストアのそれぞれは、前記データオブジェクトがどのように時間の経過に伴って変化したかを示す前記データオブジェクトの表示を含む、方法。
【請求項２】
各重複排除ストアが含有する前記ハッシュ署名の履歴を保持することと、前記ターゲット重複排除ストアに対して新しい前記ハッシュ署名の前記組におけるハッシュ署名について、前記ターゲット重複排除ストアが、前記新しい内容で前記第ターゲット重複排除ストアのデータストアを更新し得るように、前記ソース重複排除ストアから前記対応する内容区分を送信することとを更に含む、請求項１に記載の方法。
【請求項３】
前記ターゲット重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の最も近い近隣状態である、請求項１に記載の方法。
【請求項４】
前記ターゲット重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の先祖状態である、請求項１に記載の方法。
【請求項５】
前記ターゲット重複排除ストアの前記現在の状態に近い前記時間的状態は、前記現在の状態の子状態である、請求項１に記載の方法。
【請求項６】
前記最も近い近隣状態は、端部の組の合計が端部の任意の他の組の合計よりも小さい当該端部の組によって接続された状態である、請求項３に記載の方法。
【請求項７】
前記構造の前記論理的配列は、分岐を含有するツリーデータ構造である、請求項１に記載の方法。
【請求項８】
前記現在の状態で、前記現在の時間的状態に対応する前記内容区分がどの状態に送信されているかを記録することを更に含む、請求項２に記載の方法。
【請求項９】
画像の一部が符号化された形態でハッシュ表に直接的に格納される、重複排除された当該画像を格納する方法であって、
各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含有するフィールドを含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成が、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
前記データオブジェクトの前記重複排除された画像に含まれる内容を受信することと、
前記受信された内容のための新しいハッシュ構造を生成することと、
符号化された値がハッシュ署名を含有するための前記フィールド内に収まることになる、既定の無損失符号化技術を用いて、前記受信された内容が符号化され得るかどうかを判断することと、
そうである場合、前記受信された内容のためのハッシュ署名を前記フィールドに配置する代わりに、前記符号化を前記新しいハッシュ構造の前記フィールドに配置することと、前記受信された内容は前記符号化から導き出され得ないので、前記受信された内容が格納されないように、前記フィールドが前記重複排除された画像のために符号化された内容を含むことを示すために前記新しいハッシュ構造をマーキングすることと、
そうではない場合、前記受信された内容のためのハッシュ署名を生成することと、前記ハッシュ署名を前記新しいハッシュ構造の前記フィールドに配置することと、前記ハッシュ署名が固有である場合には前記受信された内容を前記データストア内の対応する内容区分に配置することとを含む、方法。
【請求項１０】
前記無損失符号化はランレングス符号化である、請求項９に記載の方法。
【請求項１１】
各データオブジェクトのためのハッシュ署名は、ＳＨＡ‐１暗号ハッシュ機能を用いて生成される、請求項９に記載の方法。
【請求項１２】
前記符号化された内容から前記内容を後に再構成することを更に含む、請求項９に記載の方法。
【請求項１３】
時間の経過に伴って変化するデータオブジェクトの重複排除された画像を管理する方法であって、
規定のデータオブジェクトについての前の時間的状態および後続の時間的状態からのデータが時間的構造によって検索され得るように、
各データオブジェクトの固有の内容を複数の内容区分として編成することと、前記内容区分をデータストアに格納することと、
各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の第１の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わし、前記ハッシュ構造の第２の下位の組は、内容が前記ハッシュ構造の前記編成された配列によって表わされるかどうかを判断するために、前記編成された配列が横断され得るように、前記データオブジェクトについて対応する内容区分のための前記ハッシュ署名のハッシュ署名階層を含む、当該ハッシュ構造の編成された配列を生成することと、
各データオブジェクトについて、時間の経過に伴って前記規定のデータオブジェクトを表わすために時間的構造の編成された配列を保持することであって、各時間的構造が規定の時間における前記規定のデータオブジェクトの状態と関連付けられ、前記時間的構造の前記論理的配列は、前記規定のデータオブジェクトの後続の時間的状態が同じ前記規定のデータオブジェクトの前の時間的状態にリンクされるように編成され、前記時間的状態の前記内容のためのルートノードから前記階層を横断することが、前記時間的状態の間の前記データオブジェクトの前記内容を示すように、各時間的構造は、前記時間的状態の前記内容のための前記ルートノードとして機能する前記階層内の対応するハッシュ構造と関連付けられる、当該時間的構造の編成された配列を保持することとを含む、方法。
【請求項１４】
所与の時間的状態におけるデータオブジェクトについての前記時間的構造は、前記データオブジェクトの前の時間的状態に対して変化したデータオブジェクト内容のためのハッシュ構造と関連付けられる、請求項１３に記載の方法。
【請求項１５】
前記変化したデータ内容のための前記ハッシュ構造は、前の時間的状態のための前記ハッシュ構造の前記編成された配列から切り離されたグラフとして編成される、請求項１４に記載の方法。
【請求項１６】
１つの時間的状態から別の時間的状態までのデータオブジェクトの内容の差分は、当該差分が複数の時間的状態を通して判断され得るように、他の時間的状態についておよび前記他の時間的状態と前記１つの時間的状態との間にある全ての他の時間的状態について、前記時間的構造の前記編成された配列を参照することによって判断される、請求項１３に記載の方法。
【請求項１７】
前記規定のデータオブジェクトの新しい時間的状態を追加することと、前記新しい時間的状態を前記規定の時間における前記規定のデータオブジェクトの前記状態とリンクすることとを更に含む、請求項１３に記載の方法。
【請求項１８】
前記規定のデータオブジェクトの前の時間的状態を前記規定のデータオブジェクトの後の時間的状態に接続することによって、前記規定の時間における前記規定のデータオブジェクトの前記状態を削除することを更に含む、請求項１３に記載の方法。
【請求項１９】
単一の前の時間的状態は、複数の後の時間的状態にリンクされ得る、請求項１３に記載の方法。
【請求項２０】
マークアンドスイープ手法における余剰なマーク動作が回避される重複排除ストレージシステムにおいて、もはや参照されない内容区分を識別するためにガーベジコレクションを実行する方法であって、
前記重複排除ストレージシステムにおいて各データオブジェクトの固有の内容を複数の内容区分として編成することと、
各データオブジェクトについて、ハッシュ構造の編成された配列を生成することであって、各構造が、前記ハッシュ構造の下位の組について、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記配列の前記論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記論理的編成を表わし、前記ハッシュ構造の別の下位の組は、内容が前記ハッシュ構造の前記編成された配列によって表わされるかどうかを判断するために、前記編成された配列が横断され得るように、対応する内容区分のための前記ハッシュ署名のハッシュ署名階層を含む、当該ハッシュ構造の編成された配列を生成することと、
各データオブジェクトについて、時間の経過に伴って対応するデータオブジェクトを表わすために時間的構造の編成された配列を保持することであって、各構造が、前記データオブジェクトの時間的状態と関連付けられ、前記構造の前記論理的配列が、前記データオブジェクトの変化する前記時間的状態を示しており、各時間的状態が、前記データオブジェクトの直前の時間的状態に対して変化した前記データオブジェクトの前記内容を表わす前記ハッシュ構造と関連付けられる、当該時間的構造の編成された配列を保持することと、
ガーベジコレクション動作に応答して、前記重複排除ストレージシステムにおける各内容区分について、前記各内容区分の対応するガーベジコレクション状態をクリアにすることと、
前記ガーベジコレクション動作に応答して、前記時間的構造にわたって反復することと、各時間的構造について、前記データオブジェクトの直前の時間的状態に対して変化した前記内容区分だけについて前記関連付けられた内容区分のために前記ガーベジコレクション状態をマーキングすることと、
これらの内容区分上の前記反復するステップの後に、クリアにされたガーベジコレクション状態を有するストレージの空いたプールに任意の内容区分を戻すこととを含む、方法。
【請求項２１】
深さ優先探索を用いて前記時間的構造にわたって反復することを更に含む、請求項２０に記載の方法。
【請求項２２】
周期的な間隔で前記方法を繰り返すことを更に含む、請求項２０に記載の方法。
【請求項２３】
データオブジェクトの新しい時間的状態の前記追加に後続する前記方法を実行することを更に含む、請求項２０に記載の方法。
【請求項２４】
データオブジェクトの時間的状態の前記除去に後続する前記方法を実行することを更に含む、請求項２０に記載の方法。
【請求項２５】
前記重複排除されたストレージシステムに割り当てられた内容区分の全ての広域参照リストを保持することを更に含む、請求項２０に記載の方法。
【請求項２６】
同じデータオブジェクトの時間的状態間の差分情報を用いて、重複排除内容ストアに時間の経過に伴って変化する前記データオブジェクトの重複排除された画像を格納する方法であって、
前記データオブジェクトの第１の時間的状態について前記データオブジェクトの前記内容を複数の内容区分として編成することと、前記複数の内容区分をデータストアに格納することと、
前記データオブジェクトの内容を表わす内容構造を前記データストアにおけるハッシュ構造の編成された配列として生成することであって、前記ハッシュ構造の下位の組について、各ハッシュ構造が、対応する内容区分のためのハッシュ署名を含み、前記対応する内容区分への参照と関連付けられ、前記内容構造の論理的編成は、前記内容区分が前記データオブジェクト内に表わされる際に前記内容区分の前記編成を表わす、当該ハッシュ構造の編成された配列を生成することと、
前記データオブジェクトの第１の時間的状態における前記データオブジェクトの前記時間的状態を表わし、前記データストアにおける前記内容構造と関連付けられた第１の時間的構造を生成することと、
前記第１の時間的状態に対して前記データオブジェクトの第２の時間的状態についての前記データオブジェクトについて変化した内容を示し、前記データオブジェクト内の前記変化した内容の位置を示す、前記データオブジェクトのための差分情報を受信することと、
前記変化した内容のための少なくとも１つのハッシュ署名を形成することと、
前記変化した内容が、前記第１の時間的構造と関連付けられた前記内容構造において前記少なくとも１つのハッシュ署名について探索することによって格納されるべきであるかどうかを判断することと、固有である任意の変化した内容を内容区分として前記データストア内に格納することと、
前記変化した内容のための前記少なくとも１つのハッシュ署名用の新しい構造を組み込むために前記ハッシュ構造の前記編成された配列を修正することと、前記差分情報内に示されるような前記データオブジェクト内の前記変化した内容の前記位置に対応する位置における前記構造の前記編成された配列に前記新しい構造を組み込むことと、前記変化した内容に対応する前記内容区分に関して前記新しい構造のための前記ハッシュ署名を関連付けることと、
前記第１の時間的状態と関連付けられた前記データオブジェクトの前記第２の時間的状態についての第２の時間的構造を生成することと、
前記第１の時間的構造と関連付けられた前記内容と前記第２の時間的構造との間の差分が、前記データオブジェクトがどのように時間の経過に伴って変化したかを示すように、前記新しい構造を前記第２の時間的状態と関連付けることと、その結果、前記データオブジェクトに関連のないデータのためのハッシュ構造に問い合わせること無く、前記データオブジェクトの前の時間的状態において格納されたデータを用いて、後の時間的状態について前記データオブジェクトの重複排除された画像を生成することとを含む、方法。
【請求項２７】
前記変化した内容のための前記少なくとも１つのハッシュ署名を形成した後に、前記形成された署名は、前記形成された構造が前記編成された配列に既に存在するかどうかを判断するために、前記内容構造における少なくとも１つのハッシュ署名と比較される、請求項２６に記載の方法。
【請求項２８】
前記比較は、前記差分情報に示されるような前記変化した内容の前記位置に対応する位置にある前記編成された配列におけるハッシュ構造を用いて、まず行われる、請求項２７に記載の方法。
【請求項２９】
前記ハッシュ構造の前記編成された配列は、編成されたツリー構造である、請求項２６に記載の方法。
【請求項３０】
時間的構造の編成された配列は保持され、各時間的構造は、時間状態と関連付けられ、前記関連付けられた時間状態に対応する前記ハッシュ構造を示す情報をそれぞれ含む、請求項２６に記載の方法。
【請求項３１】
時間状態間の差分情報を用いて第１のストレージプールから第２のストレージプールにデータをバックアップするためのシステムであって、
第１のストレージプール上の第１の組の一時点画像と、第２のストレージプール上の第２の組の一時点画像とを識別することであって、各一時点画像が、
前記一時点画像がアプリケーションデータのために作られた時の時間状態に対応し、
前記組の一時点画像における前の一時点画像から変化したアプリケーションデータの部分を示す差分情報と、前記時間状態について前記変化したアプリケーションデータの前記部分の内容とを備える、当該第１の組の一時点画像と当該第２の組の一時点画像とを識別することと、
前記第１の組の一時点画像と前記第２の組の一時点画像との間の直近の共通時間状態を備える、前記第１の組の一時点画像と前記第２の組の一時点画像との間の共通一時点画像を識別することと、
前記第１のストレージプール上の第３の組の一時点画像を識別することであって、
前記共通一時点画像の前記時間状態と、
前記アプリケーションデータを前記第２のストレージプールにバックアップするようにスケジュールされたバックアップ機能の時間状態と
の間の時間状態を備える、当該第３の組の一時点画像を識別することと、
前記第３の組の一時点画像における各一時点画像についての差分情報に基づいて、複合差分情報を生成することと、
前記スケジュールされたバックアップ機能の前記時間状態について前記アプリケーションデータのバックアップコピーを生成するために、前記第２の一時点画像でコンパイルされる前記第２のストレージプールに前記複合差分情報を伝送することとを動作可能な、データ管理機関を備える、システム。
【請求項３２】
差分情報は、ビットマップの各ビットが１次ストレージデータの一部に対応するビットマップ情報を含み、データが変化したことを示すように設定される前記ビットマップのそれらの部分のための新たなデータを含む、請求項３１に記載のシステム。
【請求項３３】
差分情報はエクステント情報を含む、請求項３１に記載のシステム。
【請求項３４】
複数のバックアップ機能は、非連続的な時間状態の異なる隔たりをそれぞれ用いて、および、前記異なる隔たりに対応して生成された異なる複合差分情報をそれぞれ用いて、同時に行われるようにスケジュールされる、請求項３１に記載のシステム。
【請求項３５】
時間状態間の差分情報を用いてデータのバックアップコピーからストレージプールに前記データを復元するためのシステムであって、
ストレージプールが時間状態についてアプリケーションデータの一時点画像を有する、当該時間状態を示す履歴情報を保持し、
ストレージプールにおけるアプリケーションデータを規定の時間状態について前記データの一時点画像に復元し、
前記規定の時間状態より前の時間状態について前記ストレージプールにおける前記データの前の一時点画像の存在を識別し、
前記規定の時間状態と前記前の時間状態との間の時間状態を用いて、前記データの各一時点画像についての差分情報から複合差分情報を生成し、および、
データの前記バックアップコピーから前記ストレージプールに前記複合差分情報を送信することであって、前記差分情報が、どのアプリケーションデータが変化したかと、前記規定の時間状態と前記規定の時間状態より前の前記時間状態との間の前記時間について前記変化したアプリケーションデータの前記内容とを示す、当該複合差分情報を送信するように動作可能である、データ管理機関を備える、システム。
【請求項３６】
差分情報は、ビットマップの各ビットが１次ストレージデータの一部に対応するビットマップ情報を含み、データが変化したことを示すように設定される前記ビットマップのそれらの部分のためのバックアップデータを含む、請求項３５に記載のシステム。
【請求項３７】
差分情報はエクステント情報を含む、請求項３５に記載のシステム。
【請求項３８】
前記前の時間状態および前記規定の時間状態は、非連続的な時間状態である、請求項３５に記載のシステム。
【請求項３９】
所定のデータ管理機能を実行するためにカレンダーに基づいて非均一スケジュールを規定するサービスレベルアグリーメント（ＳＬＡ）に従って、データを管理するシステムであって、
前記所定のデータ管理機能を始動するように構成されたプロセッサと、
前記プロセッサによる実行のための命令を含むメモリと、
データオブジェクトを提供するためのストレージシステムとを備え、
前記プロセッサは、前記データオブジェクトを使用する対応するアプリケーションと関連付けられた電子的ＳＬＡを受信するように構成され、前記電子的ＳＬＡは、前記データオブジェクトについてのサービスレベルポリシーの収集を含み、各サービスレベルポリシーは、データのためのソースプールと、コピーが前記ソースプールにおける前記データで作られるべきところである宛先プールと、当該ポリシーについての動作の前記頻度を示すコピー頻度と、期限が切れることが許可される前に所与のコピーがどのくらいの間保持されるべきであるかを示す保持期間と、前記ポリシーが実施される動作の時間および日を示すスケジュール情報とを規定し、前記電子的ＳＬＡ内の前記ポリシーの収集は、
前記データオブジェクト上で実行される複数のデータ管理機能のためのスケジュールであって、
前記複数のデータ管理機能が少なくともスナップショット機能およびバックアップ機能を含み、
前記複数のデータ管理機能からの各データ管理機能のための前記スケジュールが、前記ポリシーの収集から前記データ管理機能のための少なくとも１つのサービスレベルポリシーによって規定される、スケジュールを表現し、
前記複数のデータ管理機能のための前記スケジュールは、前記少なくとも１つのデータ管理機能について複数のスケジュールされた動作の頻度および日を含む前記複数のデータ管理機能からの少なくとも１つのデータ管理機能のための非均一スケジュールを含み、前記サービスレベルポリシーの収集は、
第１のソースプールにおける第１のデータを第１の宛先プールにコピーするために、前記複数のスケジュールされた頻度から第１のスケジュールされた頻度を規定する第１のサービスレベルポリシーと、
前記第１のソースプールにおける前記第１のデータを前記第１の宛先プールにコピーするために、前記複数のスケジュールされた頻度から第２のスケジュールされた頻度を規定し、前記第１のスケジュールされた頻度は前記第２のスケジュールされた頻度とは異なる、第２のサービスレベルポリシーと、
前記データオブジェクト上で実行されるべきである前記複数のデータ管理機能のための複数の保持期間であって、前記複数のデータ管理機能からの各データ管理機能のための前記保持期間が、前記データ管理機能のための少なくとも１つのサービスレベルポリシーによって規定される、複数の保持期間とを含み、
前記プロセッサは、前記電子的ＳＬＡの前記要件を満たすために前記複数のデータ管理機能をスケジュールするように構成され、前記要件は、（ａ）前記複数のデータ管理機能のための前記スケジュールと、（ｂ）前記複数のデータ管理機能からの前記少なくとも１つのデータ管理機能のための前記非均一スケジュールと、（ｃ）前記複数のデータ管理機能のための前記複数の保持期間とを含む、システム。
【請求項４０】
２つ以上のコピー動作が前記ソースプールと前記宛先プールとの間で同じ瞬間に行われるようにスケジュールされる場合、前記２つ以上のコピー動作のうちの１つだけが前記データ管理機関によって実行され、当該コピーは、前記２つ以上のスケジュールされたコピー動作に対応する最も長い保持期間と関連付けられる、請求項３９に記載のシステム。
【請求項４１】
準備動作は、アプリケーションデータと関連して格納する前記アプリケーションについてのメタデータを収集する前記データ管理機関を含む、請求項３９に記載のシステム。
【請求項４２】
準備動作はアプリケーション静止動作を含む、請求項３９に記載のシステム。
【請求項４３】
前記アプリケーション静止動作は、アプリケーションデータを更に更新することから前記アプリケーションをフリーズすることを含む、請求項４２に記載のシステム。
【請求項４４】
前記アプリケーション静止動作は、アプリケーションデータの前記アプリケーションサーバの前記入出力キャッシュをフラッシュすることを含む、請求項４２に記載のシステム。
【請求項４５】
前記データ管理機関は、スケジュールされたコピー動作を最も長い保持期間および最も短いコピー頻度のうちの１つに基づいて、順番に実行するように構成される、請求項３９に記載のシステム。
【請求項４６】
１次ストレージに対する余剰なアクセス動作を削減する形で、複数の所定のデータ管理機能を実行するためのシステムであって、
データ管理機能を実行するためのデータ管理機関であって、少なくとも、
１次ストレージデータの一時点画像を生成し、前記一時点画像を２次ストレージに格納するように作動可能なスナップショット機能と、
データの少なくとも１つのバックアップコピーをバックアップストレージに生成するように作動可能な少なくとも１つのバックアップ機能とを含み、データ管理機能を実行するためのスケジュールを規定する電子的サービスレベルアグリーメント（ＳＬＡ）に応答する、データ管理機関を備え、
データの一時点画像は、規定の時点におけるデータの完全な画像への参照と、もっと後の規定の時間に前記データの変化を示す差分データとを含み、
同時に実行される２つ以上のデータ管理機能を必要とし、前記１次ストレージデータの少なくとも同じ部分を伴う、前記スケジュールに応答して、前記データ管理機関は、
前記１次ストレージデータの一時点画像を生成し、前記一時点画像を前記２次ストレージに格納し、
前記一時点画像と前記バックアップストレージに格納された前に格納されたバックアップコピーとの間の差分データを計算し、
前記１次ストレージが、同時に実行される前記２つ以上のデータ管理機能を満たすために１度だけアクセスされるように、前記１次データの前記前に格納されたバックアップコピーを更新するために前記差分データを前記バックアップストレージに通信する、システム。
【請求項４７】
２次ストレージにある１次ストレージデータの前記一時点画像は、性能を最適化された２次ストレージ上に格納される、請求項４６に記載のシステム。
【請求項４８】
１次ストレージデータの前記一時点画像の前記バックアップコピーは、遠隔ストレージ上に格納される、請求項４６に記載のシステム。
【請求項４９】
１次ストレージデータの前記一時点画像の前記バックアップコピーは、容量を最適化されたストレージに格納される、請求項４６に記載のシステム。
【請求項５０】
１次ストレージデータの前記一時点画像の前記バックアップコピーは、容量を最適化されたストレージ上に重複排除された画像として格納される、請求項４９に記載のシステム。
【請求項５１】
差分データは、ビットマップの各ビットが１次ストレージデータの一部に対応するビットマップ情報を含み、データが変化したことを示すように設定される前記ビットマップのそれらの部分のための新たなデータを含む、請求項４６に記載のシステム。
【請求項５２】
差分データはエクステント情報を含む、請求項４６に記載のシステム。
【請求項５３】
前記データ管理機関は、データの一時点画像を提供するために前記１次ストレージを呼び出す論理部を含み、前記一時点画像を前記１次ストレージから検索する論理部を含む、請求項４６に記載のシステム。
【国際調査報告】
2013543198.tif 000020