(57)【要約】効率的なデータ複製のためのシステム及び方法が本明細書に記載される。リモートサーバは、リモートサーバ上に既に存在するソースオブジェクト内のデータを表すオブジェクトハッシュのセットと、リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を生成する。ソースローカル重複排除ストアは、ソースオブジェクトの特定された部分を、リモートサーバに送信して、リモートサーバ上にソースオブジェクトを複製する。ガベージコレクション予測のためのシステム及び方法もまた、本明細書に記載される。累積差分カウントは、ノードが時間グラフに追加されると更新され、剥奪差分カウントは、ノードが時間グラフから除去されると更新される。ガベージコレクションの結果は、累積差分カウント及び剥奪差分カウントのうちの少なくとも１つに基づいて予測される。
2016524220.tif 000002
【特許請求の範囲】
【請求項１】
リモートサーバ上に既に記憶されているデータに基づいて、ソースローカル重複排除ストアから前記リモートサーバにオブジェクトを複製して、前記ローカル重複排除ストアから前記リモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法であって、
前記ソースローカル重複排除ストアによって、前記リモートサーバに、前記ソースローカル重複排除ストアから前記リモートサーバに複製されるソースオブジェクトのハッシュセットを送信することと、
前記ソースローカル重複排除ストアによって、前記リモートサーバから、
前記リモートサーバ上に既に存在する前記ソースオブジェクト内のデータを表すオブジェクトハッシュセットと、
前記リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を含む、データを受信することと、
前記ソースローカル重複排除ストアによって、前記受信されたデータに基づいて前記リモートサーバ上に存在しない前記ソースオブジェクトの部分を特定することと、
前記ソースローカル重複排除ストアによって、前記ソースオブジェクトを複製するために前記リモートサーバ上に存在しない前記ソースオブジェクトの前記部分のみが前記リモートサーバにコピーされるように、前記ソースオブジェクトの前記特定された部分を、前記リモートサーバに伝送して、前記リモートサーバ上に前記ソースオブジェクトを複製することと、を含む、前記方法。
【請求項２】
前記ソースオブジェクトのハッシュを生成することは、前記ソースオブジェクトの一部であるより高深度のオブジェクトのハッシュセットを生成することを含む、請求項１に記載の前記方法。
【請求項３】
前記リモートオブジェクトセットを前記リモートサーバに送信することにより、前記リモートサーバに、前記ソースハッシュセットに基づいて第１の合成オブジェクトを作成させる、請求項１に記載の前記方法。
【請求項４】
前記リモートサーバからの前記データに基づいて第２の合成オブジェクトを作成することをさらに含み、前記第２の合成オブジェクトは、前記第１の合成オブジェクトと同一である、請求項３に記載の前記方法。
【請求項５】
特定することは、
前記第２の合成オブジェクトと、前記ソースオブジェクトとの間の差分のセットを計算することと、
前記差分のセットを前記リモートサーバに伝送することと、をさらに含む、請求項４に記載の前記方法。
【請求項６】
前記差分のセットを前記リモートサーバに送信することにより、前記リモートコンテンツアドレス可能ストアに、前記第１の合成オブジェクトと前記差分のセットとを含むリモートオブジェクトを集めさせ、前記リモートオブジェクトは、前記ソースオブジェクトと同一である、請求項５に記載の前記方法。
【請求項７】
リモートサーバ上に既に記憶されているデータに基づいて、ソースローカル重複排除ストアから前記リモートサーバにオブジェクトを複製して、前記ローカル重複排除ストアから前記リモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法であって、
前記リモートサーバによって、前記ソースローカル重複排除ストアから前記リモートサーバに複製されるソースオブジェクトのハッシュセットを受信することと、
前記リモートサーバによって、
前記リモートサーバ上に既に存在する前記ソースオブジェクト内のデータを表すオブジェクトハッシュセットと、
前記リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を含む、データを生成することと、
前記ソースローカル重複排除ストアが、前記リモートサーバ上に既に存在する前記ソースオブジェクトからのデータを特定することができ、それによって、前記ソースオブジェクトを複製するために前記リモートサーバ上に存在しない前記ソースオブジェクトの残りのデータのみが前記リモートサーバにコピーされるように、前記リモートサーバによって、前記生成されたデータを前記ソースローカル重複排除ストアに送信することと、を含む、前記方法。
【請求項８】
前記ソースオブジェクトの前記ハッシュセットを受信することは、前記ソースオブジェクトの一部であるより高深度のオブジェクトのハッシュを受信することを含む、請求項７に記載の前記方法。
【請求項９】
前記ソースハッシュセットに基づいて第１の合成オブジェクトを作成することをさらに含む、請求項７に記載の前記方法。
【請求項１０】
前記生成されたデータを前記リモートサーバから前記ソースローカル重複排除ストアに送信することにより、前記ソースローカル重複排除ストアに、前記リモートサーバからの前記データに基づいて第２の合成オブジェクトを作成させ、前記第２の合成オブジェクトは、前記第１の合成オブジェクトと同一である、請求項９に記載の前記方法。
【請求項１１】
前記ソースローカル重複排除ストアから、前記第２の合成オブジェクトと前記ソースオブジェクトとの間の差分のセットを受信することをさらに含む、請求項１０に記載の前記方法。
【請求項１２】
前記第１の合成オブジェクトと、前記差分セットとを含む、リモートオブジェクトを集めることをさらに含み、前記リモートオブジェクトは、前記ソースオブジェクトと同一である、請求項１１に記載の前記方法。
【請求項１３】
リモートサーバ上に既に記憶されているデータに基づいて、ソースローカル重複排除ストアから前記リモートサーバにオブジェクトを複製して、前記ローカル重複排除ストアから前記リモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法であって、
前記ソースローカル重複排除ストアによって、前記リモートサーバに、前記ソースローカル重複排除ストアから前記リモートサーバに複製されるソースオブジェクトのハッシュセットを送信することと、
前記リモートサーバによって、
前記リモートサーバ上に既に存在する前記ソースオブジェクト内のデータを表すオブジェクトハッシュセットと、
前記リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を含む、データを生成することと、
前記リモートサーバによって、前記生成されたデータを前記ソースローカル重複排除ストアに伝送することと、
前記ソースローカル重複排除ストアによって、前記受信されたデータに基づいて、前記リモートサーバ上に存在しない前記ソースオブジェクトの部分を特定することと、
前記ソースローカル重複排除ストアによって、前記ソースオブジェクトを複製するために前記リモートサーバ上に存在しない前記ソースオブジェクトの前記部分のみが前記リモートサーバにコピーされるように、前記ソースオブジェクトの前記特定された部分を、前記リモートサーバに伝送して、前記リモートサーバ上に前記ソースオブジェクトを複製することと、
前記リモートサーバによって、前記リモートサーバ上に既に存在する前記ソースオブジェクト内のデータを表す前記オブジェクトハッシュセットを含むリモートオブジェクトと、前記特定された部分と、を集めることと、を含み、前記リモートオブジェクトは、前記ソースオブジェクトと同一である、前記方法。
【請求項１４】
重複排除化データストアについてのファイルシステムデータの取り込み及び消去の情報を流すことを維持して、ガベージコレクション操作を行うことなく前記重複排除化データストアでの前記ガベージコレクション操作の結果を予測する、コンピュータで処理される方法であって、
コンピュータデバイスによって、時間グラフを維持することであって、前記時間グラフはノードを含み、前記ノードはオブジェクトに対するハッシュ参照を含む、時間グラフを維持することと、
前記コンピュータデバイスによって、ノードが前記時間グラフに追加されたときに、前記時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新することと、
前記コンピュータデバイスによって、ノードが前記時間グラフから除去されたときに、前記除去されたノードによって参照されるが、前記除去されたノードの親ノードまたは前記除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新することと、
前記コンピュータデバイスによって、前記累積差分カウント及び前記剥奪差分カウントのうちの少なくとも１つに基づいて、前記ガベージコレクションの結果を予測することと、を含む、前記方法。
【請求項１５】
前記ガベージコレクションの結果を予測することは、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されない、データ記憶の量を決定することを含む、請求項１４に記載の前記方法。
【請求項１６】
前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の量を決定することは、前記累積差分カウントと前記剥奪差分カウントとの比率を決定することを含む、請求項１５に記載の前記方法。
【請求項１７】
前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の前記量が閾値を超えたときに、前記コンピュータデバイスによってガベージコレクションを行うことをさらに含む、請求項１５に記載の前記方法。
【請求項１８】
重複排除化データストアのファイルシステムデータの取り込み及び削除の情報を流すことを維持して、ガベージコレクション操作を行うことなく、前記重複排除化データストアでの前記ガベージコレクション操作の結果を予測するためのコンピュータで処理されるシステムであって、プロセッサに、
時間グラフを維持することであって、前記時間グラフはノードを含み、前記ノードはオブジェクトへのハッシュ参照を含む、時間グラフを維持することと、
ノードが前記時間グラフに追加されたときに、前記時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新することと、
ノードが前記時間グラフから除去されたときに、前記除去されたノードによって参照されるが、前記除去されたノードの親ノードまたは前記除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新することと、
前記累積差分カウント及び前記剥奪差分カウントのうちの少なくとも１つに基づいて、前記ガベージコレクションの結果を予測することと、を行わせるように構成される、メモリに記憶されたモジュールを起動するように構成される、前記プロセッサを含む、前記システム。
【請求項１９】
前記ガベージコレクションの結果を予測することは、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されない、データ記憶の量を決定することを含む、請求項１８に記載の前記コンピュータで処理されるシステム。
【請求項２０】
前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の量を決定することは、前記累積差分カウントと前記剥奪差分カウントとの比率を決定することを含む、請求項１９に記載の前記コンピュータで処理されるシステム。
【請求項２１】
メモリに記憶される前記モジュールは、さらに、前記プロセッサに、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の前記量が閾値を超えたときに、ガベージコレクションを行わせるように構成される、請求項１９に記載の前記方法。
【請求項２２】
非一過性コンピュータ可読媒体であって、装置に、
時間グラフを維持することであって、前記時間グラフはノードを含み、前記ノードはオブジェクトへのハッシュ参照を含む、時間グラフを維持することと、
ノードが前記時間グラフに追加されたときに、前記時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新することと、
ノードが前記時間グラフから除去されたときに、前記除去されたノードによって参照されるが、前記除去されたノードの親ノードまたは前記除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新することと、
前記累積差分カウント及び前記剥奪差分カウントのうちの少なくとも１つに基づいて、前記ガベージコレクションの結果を予測することと、を行わせるように操作可能な実行可能命令を有する、前記非一過性コンピュータ可読媒体。
【請求項２３】
前記ガベージコレクションの結果を予測することは、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の量を決定することを含む、請求項２２に記載の前記非一過性コンピュータ可読媒体。
【請求項２４】
前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の量を決定することは、前記累積差分カウントと前記剥奪差分カウントとの比率を決定することを含む、請求項２３に記載の前記非一過性コンピュータ可読媒体。
【請求項２５】
前記実行可能命令は、さらに、装置に、前記重複排除化データストアによって使用されるが、オブジェクトによって参照されないデータ記憶の前記量が、閾値を超えたときに、ガベージコレクションを行わせるように操作可能である、請求項２３に記載の前記非一過性コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、データ管理、データ保護、障害復旧、及びビジネス継続に関する。より具体的には、本発明は、効率的なデータ複製及びガベージコレクション予測のためのシステム及び方法に関する。
【背景技術】
【０００２】
アプリケーションデータのライフサイクルを管理するためのビジネス要件は、従来的に、それぞれがライフサイクルの一部に対応する複数の点ソリューションを展開することによって達成されてきた。これは、結果として、データの複数のコピーが作成され、個々の記憶装置レポジトリに複数回移動される、複雑かつ高価な基盤をもたらしている。サーバ仮想化の採用により、単純で軽く低費用のコンピュータ基盤が増えてきた。これは、仮想ホスト及び記憶装置のより大規模な展開をもたらし、新たな計算モデルと現在のデータ管理実装との間のギャップをさらに悪化させている。
【０００３】
ビジネスサービスを提供するアプリケーションは、それらのデータの、そのライフサイクルの種々の段階での記憶に依存する。図１は、給与管理等のビジネスサービスの基底となるデータベース等のアプリケーションのデータに適用される、典型的なデータ管理操作セットを示す。ビジネスサービスを提供するために、アプリケーション１０２は、何らかの契約レベルの信頼性及び可用性を有する一次データ記憶装置１２２を必要とする。
【０００４】
バックアップ１０４は、ハードウェアもしくはソフトエアの故障または人的過誤による破損からの保護、または一次データ記憶装置の保護のために作製される。典型的には、バックアップは、１日１回または週１回、ローカルディスクまたはテープ１２４に作製され、より少ない頻度（週１回または月１回）でリモートの物理的に安全な位置１２５に移動され得る。
【０００５】
同じデータベースに基づく新しいアプリケーションの同時の開発及び試験１０６は、開発チームが、データのもう１つのコピー１２６へのアクセスを有することを必要とする。そのようなスナップショットは、開発スケジュールに応じて、週１回作製され得る。
【０００６】
法的及び自発的なポリシーのコンプライアンス１０８は、一部のデータが将来的に安全にアクセスするために数年間保管されることを必要とし、通常、データは、長期アーカイビングシステム１２８に定期的に（例えば、月１回）コピーされる。
【０００７】
障害復旧サービス１１０は、一次ビジネスサービスを提供するシステムが何らかの物理的障害により障害を起こした場合にデータの壊滅的な消失から保護する。一次データは、他の制約（費用等）を考慮して実現可能な程度に頻繁に、物理的に異なる位置にコピーされる１３０。障害が起きた場合には、一次サイトが再構築され、データは安全なコピーから戻される。
【０００８】
ビジネス継続サービス１１２は、一次サイトに障害が起きた場合に、ビジネスサービスの継続を確保するための設備を提供する。通常、これは、一次データのロックステップ直前（ｉｎ  ｎｅａｒ−ｌｏｃｋｓｔｅｐｓ）にある一次データのホットコピー１３２、ならびに入来する要求をビジネス継続サーバに切り替えるための重複システム及びアプリケーション及び機序を必要とする。
【０００９】
このように、データ管理は、現在のところ、ライフサイクルの異なる部分を管理する点アプリケーションの集合である。これは、過去２０年間にわたるデータ管理ソリューションの進化の結果である。
【００１０】
上述のもの等、現在のデータ管理アーキテクチャ及び実装は、複数のアプリケーションがデータライフサイクル管理の異なる部分に対応することを伴い、これらのすべては、ある特定の共通の機能：（ａ）アプリケーションデータのコピーを作製すること（この動作の頻度は、一般には目標復旧時点（ＲＰＯ）と称される）、（ｂ）専用の記憶レポジトリに、典型的には独自の形式で、データのコピーを記憶すること、ならびに（ｃ）保持時間として測定される、ある特定の期間の間、コピーを保持すること、を行う。点ソリューションのそれぞれにおける主な違いは、ＲＰＯの頻度、保持時間、及び使用される個々のレポジトリの特徴、例えば、容量、費用、及び地理的な位置におけるものである。
【００１１】
一連の先行特許出願、例えば、米国第１２／９４７，３７５号において、データ管理仮想化を使用した、データを管理するためのシステム及び方法が提示されている。バックアップ、複製、及びアーカイビングといったデータ管理アクティビティは、それらが、個々にかつ別個に構成及び起動される必要がないという点で、仮想化されている。代わりに、ユーザは、データのライフサイクルに関してそれらのビジネス要件を定義し、データ管理仮想化システムが、これらの操作を自動で行う。スナップショットが一次記憶装置から二次記憶装置に取られ、このスナップショットが、次いで、他の二次記憶装置へのバックアップ操作に使用される。本質的に、任意の数のこれらのバックアップが作製され、サービスレベル合意によって示されるレベルのデータ保護を提供する。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
任意の近傍オブジェクトの使用は、それと、複製されているオブジェクトとの差分の程度に関わらず、インデックス内のこれらのデータハッシュの検索が必要とされないため、複製効率を、リモートシステム上に既に存在するその構成的データチャンクの割合に比例する程度まで増加させ得る。
【課題を解決するための手段】
【００１３】
コンテンツアドレス可能ストア（例えば、図１２を参照されたい）にツリーとしてオブジェクトを集め、それを表すための方法を参照すると、所与の深度の任意のハッシュがリモートストア上に存在する場合、それよりも低深度の構成ハッシュも、したがって存在しているはずであることがさらに推察され得る。このように、複製する際により高深度の（greater-depth）ハッシュを一致させることは、通常、より低深度のハッシュの一致よりも効率的である。例として１つのそのような実装において、各深度１ハッシュは２ＭｉＢのデータを表し得、５１２個の深度０ハッシュはそれぞれが４ＫｉＢのデータを表す。この例を考えると、深度１ハッシュの検索の成功は、インデックス検索操作の回数を５１１回低減させるであろう。
【００１４】
参照されない記憶データにおおよそ近い量が、どの時点においても即座に計算され得るように、重複排除ストアへのオブジェクトの取り込み及び重複排除ストアからのオブジェクトの消去を通じて統計セットを維持することによって、ガベージコレクションプロセス（例えば、マーク／スイーププロセス）の実行の可能性のあるペイオフを推算するためのシステム及び方法もまた、本明細書に記載される。これは、実行プロセスによって、またはエンドユーザによって、ガベージコレクションのマーク及びスイーププロセスに時間を投じることが妥当であるかどうかに関しての決定がなされ得ることを可能にする。これを提供する重複排除ストアの特徴には、オブジェクトの時間的ツリー、差分付け、及び／または処理中のわずかなコピーが含まれ得る。
【００１５】
開示される主題によると、ガベージコレクションの有効性を予測するために合成の近傍値及び履歴ツリーに基づく統計を複製に使用するためのシステム、方法、及び非一過性コンピュータ可読媒体が、提供される。
【００１６】
開示される主題は、複製のためのデータオブジェクトを作成するための方法を含む。コンピューティングデバイスは、ソースデータストア及びターゲットデータストアの両方に、複製のための空のデータオブジェクトを作成する。コンピューティングデバイスは、ソースデータストア上の複製されるソースデータオブジェクトのハッシュ値セットを決定する。コンピューティングデバイスは、このハッシュ値セットをリモートデータストアに伝送する。コンピューティングデバイスは、リモートデータストアから応答データを受信し、この応答データは、ハッシュ値セットのうちのどのハッシュ値がリモートデータストアに存在しているかを示す第１のデータと、ハッシュ値セットのうちのどのハッシュ値がリモートデータストアに存在していないかを示す第２のデータと、を含む。コンピューティングデバイスは、第１のデータ、第２のデータ、及び複製のための空のデータオブジェクトに基づいて複製のための完全なデータオブジェクトを生成する。
【００１７】
開示される主題は、記憶デバイスから返還され得る記憶の量を予測するための方法を含む。コンピューティングデバイスは、基本オブジェクトと、記憶デバイスに記憶されている基本オブジェクトの１つ以上のより新しい代のオブジェクトとの間の差分の累積差分を計算する。コンピューティングデバイスは、記憶デバイスから除去されているより新しい代のオブジェクトのうちの１つ以上に基づいて、剥奪差分を計算する。コンピューティングデバイスは、累積差分及び剥奪差分に基づいて、記憶デバイスから返還され得る記憶の量を計算する。
【００１８】
いくつかの実施形態において、本明細書に記載される技法は、リモートサーバに既に記憶されているデータに基づいて、ソースローカル重複排除ストアからリモートサーバにオブジェクトを複製して、ローカル重複排除ストアからリモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法を提供する。本方法は、ソースローカル重複排除ストアからリモートサーバに、ソースローカル重複排除ストアからリモートサーバに複製されるソースオブジェクトのハッシュのセットを送信することを含む。本方法は、ソースローカル重複排除ストアによって、リモートサーバ上に既に存在しているソースオブジェクト内のデータを表すオブジェクトハッシュのセットと、リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を含むデータを、リモートサーバから受信することを含む。本方法は、ソースローカル重複排除ストアによって、受信されたデータに基づいて、リモートサーバ上に存在しないソースオブジェクトの部分を特定することを含む。本方法は、ソースローカル重複排除ストアによって、ソースオブジェクトを複製するためにリモートサーバ上に存在しないソースオブジェクトの部分のみがリモートサーバにコピーされるように、ソースオブジェクトの特定された部分をリモートサーバに伝送して、リモートサーバ上にソースオブジェクトを複製することを含む。
【００１９】
いくつかの実施形態において、本明細書に記載される技法は、リモートサーバに既に記憶されているデータに基づいて、ソースローカル重複排除ストアからリモートサーバにオブジェクトを複製して、ローカル重複排除ストアからリモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法を提供する。本方法は、リモートサーバによって、ソースローカル重複排除ストアからリモートサーバに複製されるソースオブジェクトのハッシュのセットを受信することを含む。本方法は、リモートサーバによって、リモートサーバ上に既に存在するソースオブジェクト内のデータを表すオブジェクトハッシュのセットと、リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を生成することを含む。本方法は、ソースローカル重複排除ストアが、リモートサーバ上に既に存在するソースオブジェクトからのデータを特定することができ、それによって、ソースオブジェクトを複製するためにリモートサーバ上に存在しないソースオブジェクトの残りのデータのみがリモートサーバにコピーされるように、リモートサーバによって、生成されたデータをソースローカル重複排除ストアに送信することを含む。
【００２０】
いくつかの実施形態において、本明細書に記載される技法は、リモートサーバに既に記憶されているデータに基づいて、ソースローカル重複排除ストアからリモートサーバにオブジェクトを複製して、ローカル重複排除ストアからリモートサーバに送信される重複データの量を低減する、コンピュータで処理される方法を提供する。本方法は、ソースローカル重複排除ストアからリモートサーバに、ソースローカル重複排除ストアからリモートサーバに複製されるソースオブジェクトのハッシュのセットを送信することを含む。本方法は、リモートサーバによって、リモートサーバ上に既に存在するソースオブジェクト内のデータを表すオブジェクトハッシュのセットと、リモートサーバ上に存在しないソースオブジェクトハッシュを示すデータと、を生成することを含む。本方法は、リモートサーバによって、生成されたデータをソースローカル重複排除ストアに伝送することを含む。本方法は、ソースローカル重複排除ストアによって、受信されたデータに基づいて、リモートサーバ上に存在しないソースオブジェクトの部分を特定することを含む。本方法は、ソースローカル重複排除ストアによって、ソースオブジェクトを複製するためにリモートサーバ上に存在しないソースオブジェクトの部分のみがリモートサーバにコピーされるように、ソースオブジェクトの特定された部分をリモートサーバに伝送して、リモートサーバ上にソースオブジェクトを複製することを含む。本方法は、リモートサーバによって、リモートサーバ上に既に存在するソースオブジェクト内のデータを表すオブジェクトハッシュのセットを含むリモートオブジェクトと、特定された部分と、を集めることを含み、ここで、リモートオブジェクトは、ソースオブジェクトと同一である。
【００２１】
いくつかの実施形態において、本明細書に記載される技法は、重複排除化データストアについてのファイルシステムデータの取り込み及び消去の情報を流すことを維持して、ガベージコレクション操作を行うことなく重複排除化データストアでのガベージコレクション操作の結果を予測するコンピュータで処理される方法を提供する。本方法は、コンピュータデバイスによって、時間グラフを維持することを含み、時間グラフはノードを含み、ノードはオブジェクトに対するハッシュ参照を含む。本方法は、コンピュータデバイスによって、ノードが時間グラフに追加されたときに、時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新することを含む。本方法は、コンピュータデバイスによって、ノードが時間グラフから除去されたときに、除去されたノードによって参照されるが除去されたノードの親ノードまたは除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新することを含む。本方法は、コンピュータデバイスによって、累積差分カウントと剥奪差分カウントのうちの少なくとも１つに基づいて、ガベージコレクションの結果を予測することを含む。
【００２２】
いくつかの実施形態において、本明細書に記載される技法は、重複排除化データストアについてのファイルシステムデータの取り込み及び消去の情報を流すことを維持して、ガベージコレクション操作を行うことなく重複排除化データストアでのガベージコレクション操作の結果を予測するためのコンピュータ化されたシステムを提供し、このシステムは、プロセッサに時間グラフを維持させるように構成される、メモリに記憶されたモジュールを起動するように構成されるプロセッサを含み、時間グラフはノードを含み、ノードはオブジェクトに対するハッシュ参照を含む。メモリに記憶されたモジュールは、プロセッサに、ノードが時間グラフに追加されたときに累積差分カウントを更新させるように構成され、累積差分カウントは、時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む。メモリに記憶されたモジュールは、プロセッサに、ノードが時間グラフから除去されたときに、除去されたノードによって参照されるが除去されたノードの親ノードまたは除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新させるように構成される。メモリに記憶されたモジュールは、プロセッサに、累積差分カウント及び剥奪差分カウントのうちの少なくとも１つに基づいてガベージコレクションの結果を予測させるように構成される。
【００２３】
いくつかの実施形態において、本明細書に記載される技法は、装置に、時間グラフ（時間グラフはノードを含み、ノードはオブジェクトに対するハッシュ参照を含む）を維持させるように操作可能な実行可能命令を有する、非一過性コンピュータ可読媒体を提供する。実行可能命令は、装置に、ノードが時間グラフに追加されたときに、時間グラフにおける親ノードとその子ノードとの間のいくつかのハッシュ差分を含む累積差分カウントを更新させるように操作可能である。実行可能命令は、装置に、ノードが時間グラフから除去されたときに、除去されたノードによって参照されるが除去されたノードの親ノードまたは除去されたノードの任意の子ノードのいずれによっても参照されないいくつかのハッシュ差分を含む剥奪差分カウントを更新させるように操作可能である。実行可能命令は、装置に、累積差分カウント及び剥奪差分カウントのうちの少なくとも１つに基づいて、ガベージコレクションの結果を予測させるように操作可能である。
【００２４】
開示される手段のこれら及び他の機能は、図面、発明を実施するための形態、及び特許請求の範囲を考察した後に、より完全に理解されるであろう。本明細書に用いられる表現及び用語は、説明の目的のためであり、制限するとみなされるものではないことを理解されたい。
【図面の簡単な説明】
【００２５】
【図１】ビジネスサービスのデータライフサイクルを管理するために配置される現在の方法の簡略図である。
【図２】単一のデータ管理仮想化システムによる、データのそのライフサイクル全体の管理の概要である。
【図３】データ管理仮想化システム簡略化されたブロック図である。
【図４】データ管理仮想化エンジンの図である。
【図５】オブジェクト管理及びデータ移動エンジンを図示する。
【図６】記憶プールマネージャを示す。
【図７】サービスレベル合意の分解を示す。
【図８】アプリケーション特化モジュールを図示する。
【図９】サービスポリシーマネージャを示す。
【図１０】サービスポリシースケジューラのフローチャートである。
【図１１】コンテンツアドレス可能記憶（ＣＡＳ）プロバイダのブロック図である。
【図１２】ＣＡＳシステム内のオブジェクトハンドルの定義を示す。
【図１３】ＣＡＳ内のオブジェクトのために記憶された時間的関係グラフのデータモデル及び操作を示す。
【図１４】ＣＡＳにおけるガベージコレクションアルゴリズムの操作を表す図である。
【図１５】オブジェクトをＣＡＳにコピーする操作のフローチャートである。
【図１６】データ管理仮想化システムの典型的な配置のシステム図である。
【図１７】データ管理仮想化システムで使用するための特徴的な物理サーバデバイスのスキーム図である。
【図１８】本発明のある特定の実施形態とともに使用されるデータフィンガープリントのデータモデルを示すスキーム図である。
【図１９】データフィンガープリンティングを組み込むデータ管理仮想化システムの配置のシステムアーキテクチャ図である。
【図２０】ハイブリッドシーディングアルゴリズムを使用してオブジェクトをコピーする操作のプロセス図である。
【図２１】ビジネス継続のための複製を提供するデータ管理仮想化システムの操作のプロセス図である。
【図２２】いくつかの実施形態による、計算することができる新しい統計を定義する例示的なテーブルである。
【図２３Ａ】いくつかの実施形態による、時間的ツリー構造の例示的な図を示す。
【図２３Ｂ】いくつかの実施形態による、論理的累積差分統計の例示的な図である。
【図２４】いくつかの実施形態による、論理的累積差分統計を計算する例示的な図である。
【図２５Ａ】いくつかの実施形態による、時間的ツリー構造からオブジェクトを除去する例示的な図である。
【図２５Ｂ】いくつかの実施形態による、論理的剥奪差分統計の例示的な図である。
【図２６Ａ】いくつかの実施形態による、使用される物理的空間の統計の例示的な図である。
【図２６Ｂ】いくつかの実施形態による、図２６Ａで使用される物理的空間の統計を計算するために使用される時間的ツリーの例示的な図である。
【図２７】それ以外には決定され得る既存の近傍がない場合に、複製のための近傍オブジェクトを合成で作成するための方法を図示する。
【図２８】それ以外には決定され得る既存の近傍がない場合に、複製のための合成近傍を合成で作成するための方法を図示する。
【図２９】それ以外には決定され得る既存の近傍がない場合に、複製のための完全な復元段階を合成で行うための方法を図示する。
【発明を実施するための形態】
【００２６】
以下の説明において、開示される主題の十分な理解を提供するために、開示される主題のシステム及び方法、ならびにそのようなシステム及び方法が動作し得る環境に関する多数の具体的な詳細が記載される。しかしながら、当業者であれば、開示される主題が、そのような具体的な詳細なしに実施され得ること、ならびに当該技術分野で周知のある特定の特徴が、開示される主題の不必要な混乱を避けるために、詳細には記載されていないことを理解するであろう。加えて、以下に提供される実施形態は例示であること、ならびに開示される主題の範囲内の他のシステム及び方法が存在することが企図されることが、理解されるであろう。
【００２７】
本開示は、２つのオブジェクトをそれらのデータオブジェクトのライフにわたって比較するために使用され得る仮想記憶プールに記憶されたオブジェクトのデータフィンガープリントを生成することに関する。
【００２８】
本開示はまた、異なる仮想記憶プールを使用したコピー及び差分付け操作を行うためにハイブリッドシーディングを使用する、改善されたインクリメンタルコピー性能のための方法にも関する。
【００２９】
本開示はまた、記憶プールのパイプラインを使用した障害復旧及びビジネス継続のためのデータ複製の機序にも関する。
【００３０】
以下に記載されるデータ管理仮想化システムにおいて、ユーザは、データのライフサイクルに関するビジネス要件を定義し、データ管理仮想化システムが、これらの操作を自動で行う。スナップショットが一次記憶装置から二次記憶装置に取られ、このスナップショットが、次いで、他の二次記憶装置へのバックアップ操作に使用される。本質的に、任意の数のこれらのバックアップが作製され、サービスレベル合意によって示されるレベルのデータ保護を提供する。
【００３１】
データ管理エンジンは、第１の記憶プールにアプリケーションデータのポイントインタイム（ｐｏｉｎｔ−ｉｎ−ｔｉｍｅ）イメージを作成するためのスナップショット操作のシーケンスを実行するように操作可能であり、各継続的なポイントインタイムイメージは、アプリケーションデータの特定の継続した時間状態に対応し、各スナップショット操作は、どのアプリケーションデータが変化したか、及び対応する時間状態の変化したアプリケーションデータのコンテンツを示す差分情報を作成する。データ管理エンジンはまた、非連続的な時間状態で実行がスケジュールされているアプリケーションデータに対して少なくとも１つのバックアップ機能を実行するように操作可能であり、データの対応するバックアップコピーについてアプリケーションデータに行われた最後のバックアップ機能の時間状態を示す、時間状態情報を有する履歴情報も十分に維持する。データ管理エンジンは、アプリケーションデータに行われた最後のバックアップ機能の時間状態と、アプリケーションデータに行われる現在スケジュールされているバックアップ機能の時間状態との間の各時間状態の差分情報から、複合（ｃｏｍｐｏｓｉｔｅ）差分情報を作成し、複合差分情報を第２の記憶プールに送信し、最後の時間状態におけるデータのバックアップコピーでコンパイルして、現在の時間状態のためのデータのバックアップコピーを作成する。
【００３２】
本開示によるデータ管理仮想化技術は、以下の原理に基づくアーキテクチャ及び実装に基づく。
【００３３】
第１に、アプリケーションのビジネス要件を、そのデータライフサイクル全体のサービスレベル合意（ＳＬＡ）により定義する。ＳＬＡは、単一のＲＰＯである目標保持及び復旧時間（ＲＴＯ）よりも上位である。それは、データライフサイクルの各段階のデータ保護特徴について記述する。各アプリケーションは、異なるＳＬＡを有し得る。
【００３４】
第２に、データ保護ライフサイクルを管理する統一データ管理仮想化エンジンを提供し、データを、記憶容量及びネットワーク帯域が改善された種々の記憶レポジトリにわたって移動させる。データ管理仮想化システムは、経時的に変化したデータの部分を追跡すること、ならびにコピー及び移動が行われる必要があるデータ量を低減させるデータ重複排除及び圧縮アルゴリズムによって、現代の記憶システムの拡張機能を利用することによりこれらの改善を達成する。
【００３５】
第３に、ライフサイクル内の複数の要素の基礎となるアプリケーションデータの単一のマスターコピーを活用する。バックアップ、アーカイブ、及び複製等のデータ管理操作の多くは、保護されるデータの安定な一貫性コピーに依存する。データ管理仮想化システムは、複数の目的のためにデータの単一のコピーを活用する。このシステムによって維持されるデータの単一のインスタンスは、各データ管理機能が必要に応じてそこから追加のコピーを作成することができる、ソースとして機能し得る。これは、従来のアプローチではアプリケーションデータが複数の独立したデータ管理アプリケーションによって複数回コピーされる必要があることと対照的である。
【００３６】
第４に、物理的記憶リソースを抽象化して、ローカル及びリモートディスク、ソリッドステートメモリ、テープ及び光媒体、プライベート、パブリック、及び／またはハイブリッド記憶クラウドを含む異なるクラスの記憶装置から仮想化される一連のデータ保護記憶プールにする。記憶プールは、種類、物理的位置、または基底の記憶技術に依存しないアクセスを提供する。データのライフサイクルに関するビジネス要件は、データを異なる時点で異なる種類の記憶媒体にコピーすることを要求し得る。データ管理仮想化システムは、ユーザが異なる記憶媒体を記憶プール、例えば、早期復旧（Ｑｕｉｃｋ  Ｒｅｃｏｖｅｒｙ）プール（これには、高速ディスクが含まれ得る）及び費用効率的な長期記憶プール（これは、高容量ディスク上の重複排除化ストアまたはテープライブラリであり得る）に分類及び統合することを可能にする。データ管理仮想化システムは、これらのプールの間でデータを移動させて、各記憶媒体の固有の特徴を活用することができる。記憶プールの抽象化は、種類、物理的位置、または基底の記憶技術に依存しないアクセスを提供する。
【００３７】
第５に、基底のデバイスの機能及び重複排除後のアプリケーションデータを用いて、記憶プールと障害位置との間のデータの移動を改善する。データ管理仮想化システムは、記憶プールを含む記憶システムの機能を発見し、これらの機能を利用して、データを効率的に移動させる。記憶システムが、あるデータ量のスナップショットまたはクローンを作成する機能をサポートするディスクアレイである場合、データ管理仮想化システムは、１つの場所からデータを読み出し、それを別の場所に書き込むのではなく、この機能を利用し、スナップショットを使用して、データのコピーを作製する。同様に、記憶システムが、変更追跡をサポートする場合、データ管理仮想化システムは、その変更のみを古いコピーに更新して、新しいコピーを効率的に作成する。データをネットワーク全体で移動させるとき、データ管理仮想化システムは、ネットワークの反対側で既に利用可能なデータを送信することを回避する重複排除及び圧縮アルゴリズムを使用する。
【００３８】
データ移動を改善する１つの重要な態様は、アプリケーションデータが長期にわたり徐々に変化することを認識することである。今日作製されるアプリケーションのコピーは、一般に、昨日作製された同じアプリケーションのコピーに多くの類似性を有する。実際に、データの今日のコピーは、一連のデルタ変換を伴う昨日のコピーとして表すことができ、ここで、デルタ変換自体のサイズは、通常、コピーそのものにおけるデータのすべてよりも大幅に小さい。データ管理仮想化システムは、これらの変換を、ビットマップまたはエクステントリストの形式でキャプチャし、記録する。本システムの一実施形態において、基底の記憶リソース、すなわちディスクアレイまたはサーバ仮想化システムは、ボリュームまたはファイルになされた変更を追跡することができ、これらの環境において、データ管理仮想化システムは、これらの変更リストを得るように記憶リソースに問い合わせし、保護されているデータとともにそれらを保存する。
【００３９】
データ管理仮想化システムの好ましい実施形態において、アプリケーションの一次データアクセス経路を傍受（ｅａｖｅｓｄｒｏｐ）する機序が存在し、これは、データ管理仮想化システムが、アプリケーションデータのどの部分が修正されたかを調べ、修正されたデータ自体のビットマップを生成することを可能にする。例えば、アプリケーションが、特定の期間にブロック１００、２００、及び３００を修正すると、データ管理仮想化システムは、これらのイベントを傍受し、これらの特定のブロックが修正されたことを示すビットマップを作成する。アプリケーションデータの次のコピーを処理するときに、データ管理仮想化システムは、これらのみが修正されたブロックであることを認識しているため、ブロック１００、２００、及び３００のみを処理することになる。
【００４０】
本システムの一実施形態において、アプリケーションのための一次記憶装置が、現代のディスクアレイまたは記憶装置仮想化機器である場合、データ管理仮想化システムは、データの初期コピーを作製する基底の記憶デバイスのポイントインタイムスナップショット機能を利用する。この仮想コピー機序は、初期コピーを作製する迅速、効率的、かつ影響の少ない技法であり、これは、すべてのビットが一緒にコピーまたは記憶されることを保証するものではない。代わりに、仮想コピーは、コピーがアクセス時に再構築されることを可能にする、コピーオンライトボリュームビットマップまたはエクステント等、メタデータ及びデータ構造を維持することによって構築される。コピーは、アプリケーション及び一次記憶デバイスに軽い影響を有する。別の実施形態において、アプリケーションがＶＭｗａｒｅまたはＸｅｎ等のサーバ仮想化システムに基づく場合、データ管理仮想化システムは、サーバ仮想化システムに内蔵された類似の仮想マシンスナップショット機能を使用する。仮想コピー機能が利用できない場合、データ管理仮想化システムは、その独自の内蔵スナップショット機序を含み得る。
【００４１】
システムがサポートするデータ管理機能のすべての基底にあるデータプリミティブとしてスナップショットを使用することが可能である。これは軽量であるため、要求された操作自体はスナップショットでない場合ですら、スナップショットを内部操作として使用することができ、これは、他の操作を可能にし、促進するために作成される。
【００４２】
スナップショットの作成時には、イメージがアプリケーションによって使用することができる状態に復元され得るように、固有のスナップショットまたは固有のイメージを作成するために伴われるある特定の準備操作が存在し得る。これらの準備操作は、ポリシーに従ってスケジュールされているバックアップコピー等、スナップショットがシステム内の複数のデータ管理機能にわたって活用される場合ですら、１回行われるだけでよい。準備操作には、データキャッシュのフラッシュ及びアプリケーション状態の凍結を含むアプリケーション休止が含まれ得、さらに、当該技術分野で既知の他の操作及びアプリケーションからイメージとともに記憶されるメタデータ情報を収集することといった完全なイメージを保持するのに有用な他の操作も含まれ得る。
【００４３】
図２は、仮想化データ管理システムが、これらの原理に従って上述のデータライフサイクル要件に対処することができる、１つの手段を図示する。
【００４４】
ローカルバックアップ要件を満たすために、効率的なスナップショットのシーケンスが、ローカル高可用性記憶装置２０２内に作製される。これらのスナップショットうちのいくつかを使用して、別のコピーを作製することなく開発／試験要件を満たす。ローカルバックアップのより長期の保持のために、コピーが長期ローカル記憶装置２０４に効率的に作製され、これは、この実装では、重複排除を用いてコピーの繰り返しを低減させる。長期記憶装置内のコピーは、ＳＬＡによって適用される保持ポリシーに応じて、バックアップとしてアクセスされ得るか、またはアーカイブとして扱われる。データのコピーが、リモートバックアップ及びビジネス継続の要件を満たすためにリモート記憶装置２０６に作製され、ここでも、単一のコピーセットが両方の目的を満たす。リモートバックアップ及び障害復旧の代替策として、データのさらなるコピーが、商業的またはプライベートのクラウド記憶プロバイダによってホストされるリポジトリ２０８に効率的に作製され得る。
【００４５】
データ管理仮想化システム
図３は、上述の原理を実装するデータ管理仮想化システムの高レベルの構成要素を図示する。好ましくは、本システムは、以下にさらに記載されるこれらの基本的な機能構成要素を含む。
【００４６】
アプリケーション３００は、データを作製し、それを所有する。これは、何らかのコンピュータ計算の必要性を満たすためにユーザによって展開されているソフトウェア、例えば、電子メールシステム、データベースシステム、または財務報告システムである。アプリケーションは、典型的に、サーバ上で起動し、記憶装置を利用する。例示の目的で、１つのアプリケーションのみが示されている。現実的には、単一のデータ管理仮想化システムによって管理される数百またはさらには数千のアプリケーションが存在し得る。
【００４７】
記憶リソース３０２は、アプリケーションデータがそのライフサイクルを通して記憶される場所である。記憶リソースは、ユーザがデータ記憶要件に対処するために所有している、内部ディスクドライブ、ディスクアレイ、光学及びテープ記憶ライブラリ、ならびにクラウドに基づく記憶システムを含む、物理的な記憶資源である。記憶リソースには、アプリケーションデータのオンラインのアクティブなコピーが記憶される一次記憶装置３１０、及び追加のアプリケーションデータコピーがバックアップ、障害復旧、アーカイブ、報告、及び他の用途といった目的で記憶される二次記憶装置３１２が含まれる。二次記憶リソースは、一次記憶装置と同じ筐体内の追加の記憶装置、ならびに同じデータセンタ、別の位置、またはインターネット上の類似または異なる記憶技術に基づく記憶装置を含み得る。
【００４８】
１つ以上の管理ワークステーション３０８は、ユーザが、アプリケーションデータのライフサイクルを定義するサービスレベル合意（ＳＬＡ）３０４を規定することを可能にする。管理ワークステーションは、データ管理仮想化システムを構成、監視、または制御するために使用されるデスクトップもしくはラップトップコンピュータ、またはモバイルコンピューティングデバイスである。サービスレベル合意は、アプリケーションデータの二次コピーの作成、保持、及び消去に関連する詳細なビジネス要件をキャプチャする詳細な規定である。ＳＬＡは、従来的なデータ管理アプリケーションにおいて単一のクラスの二次記憶装置に関するコピーの頻度及び予測される復元時間を表すのに使用される単純なＲＴＯ及びＲＰＯよりも上位である。ＳＬＡは、データライフサイクル規定内の複数の段階をキャプチャし、各クラスの二次記憶装置内で不均一な頻度及び保持規定を可能にする。ＳＬＡは、図７により詳細に記載される。
【００４９】
データ管理仮想化エンジン３０６は、アプリケーションデータのライフサイクルのすべてをＳＬＡで指定される通りに管理する。それは、潜在的に、多数のアプリケーションに関する多数のＳＬＡを管理する。データ管理仮想化エンジンは、管理ワークステーションを通じてユーザからの入力を受け取り、アプリケーションとやりとりして、アプリケーションの一次記憶リソースを発見する。データ管理仮想化エンジンは、どのデータを保護する必要があり、どの二次記憶リソースがこの保護の必要性を満たすのに最良であるかを決定する。例えば、企業が、ビジネス継続目的ならびにバックアップ目的で、非常に短い間隔でその会計データのコピーを必要とすると指定する場合、エンジンは、適切なＳＬＡセットに従って、短い間隔で第１の記憶プールに会計データのコピーを作成し、さらにより長い間隔で第２の記憶プールに会計データのバックアップコピーを作成することを決定し得る。これは、記憶アプリケーションのビジネス要件によって決定され得る。
【００５０】
エンジンは、次いで、利用可能な記憶リソースの高度な機能を使用して、アプリケーションデータのコピーを作製する。上述の例において、エンジンは、記憶機器の内蔵仮想コピーまたはスナップショット機能を使用して、短い間隔のビジネス継続コピーをスケジュールし得る。データ管理仮想化エンジンは、ＳＬＡにおいてキャプチャされるビジネス要件を満たすために、記憶リソース間でアプリケーションデータを移動させる。データ管理仮想化エンジンは、図４により詳細に記載される。
【００５１】
全体としてのデータ管理仮想化システムは、単一のホストコンピュータシステムまたは機器内に配置され得るか、またはそれは、１つの論理エンティティであるが、汎用及び専用システムのネットワーク全体に物理的に分配されたものであり得る。本システムのある特定の構成要素はまた、コンピューティングまたは記憶クラウド内に配置されてもよい。
【００５２】
データ管理仮想化システムの一実施形態において、データ管理仮想化エンジンは、大部分が、フォールトトレラントな冗長コンピュータ対上の複数のプロセスとして動作する。データ管理仮想化エンジンのある特定の構成要素は、アプリケーションサーバ内のアプリケーション付近で動作し得る。いくつかの他の構成要素は、記憶ファブリックまたは記憶システム自体内で、一次及び二次記憶装置の付近で動作し得る。管理ステーションは、典型的に、安全なネットワークを介してエンジンに接続する、デスクトップ及びラップトップコンピュータ、ならびにモバイルデバイスである。
【００５３】
データ管理仮想化エンジン
図４は、本発明のある特定の実施形態によるデータ管理仮想化エンジン３０６の構造的概要を図示する。３０６エンジンには、以下のモジュールが含まれる。
【００５４】
アプリケーション特化モジュール４０２。このモジュールは、アプリケーション３００からのメタデータを制御及び収集することに関与する。アプリケーションのメタデータには、アプリケーションの種類、その構造に関する詳細、そのデータストアの位置、その現在の動作状態等、アプリケーションに関する情報が含まれる。アプリケーションの動作を制御することには、キャッシュデータをディスクにフラッシュすること、アプリケーションのＩ／Ｏを凍結及び解凍すること、ログファイルのローテーション及び打ち切りを行うこと、ならびにアプリケーションを強制終了及び再起動すること等の動作が含まれる。アプリケーション特化モジュールは、以下に記載されるサービスレベルポリシーエンジン４０６からのコマンドに応答して、これらの動作を行い、メタデータを送信及び受信する。アプリケーション特化モジュールは、図８と関連してより詳細に記載される。
【００５５】
サーバレベルポリシーエンジン４０６。このモジュールは、ユーザがアプリケーションデータのコピーの作成、移動、及び消去に関する決定を行うことによって提供される、ＳＬＡ３０４上で動作する。各ＳＬＡは、１つのアプリケーションの保護に関するビジネス要件について記述する。サーバレベルポリシーエンジンは、各ＳＬＡを分析し、それぞれが１つの記憶位置から別の記憶位置へのアプリケーションデータのコピーを伴う一連の動作に到達する。サービスレベルポリシーエンジンは、次いで、これらの動作をレビューして、優先順位及び従属性を決定し、データ移動作業をスケジュールし、それを開始する。サービスレベルポリシーエンジンは、図９と関連してより詳細に記載される。
【００５６】
オブジェクトマネージャ及びデータ移動エンジン４１０。このモジュールは、アプリケーションデータ、アプリケーションメタデータ、及びポリシーエンジンからの命令に従って異なる記憶プールを経て移動するＳＬＡからなる複合オブジェクトを作成する。オブジェクトマネージャは、アプリケーション３００に属するライブ一次データ４１３に基づいて、または別のプール内の既存のコピー、例えば、４１５から、特定のプールにアプリケーションデータのコピーを作成するコマンドの形態で、サービスポリシーエンジン４０６から命令を受信する。オブジェクトマネージャ及びデータ移動エンジンによって作成される複合オブジェクトのコピーは、それが、アプリケーションデータだけでなく、アプリケーションメタデータ及びアプリケーションに関するＳＬＡもまた含むという点で、自己包含型かつ自己記述型である。オブジェクトマネージャ及びデータ移動エンジンは、図５と関連してより詳細に記載される。
【００５７】
記憶プールマネージャ４１２。このモジュールは、基底の物理記憶リソース３０２を適合してそれらを抽象化し、それらを仮想記憶プール４１８として提示する、構成要素である。物理記憶リソースは、ユーザが、ユーザのアプリケーションのデータのライフサイクルをサポートする目的で配置した、ディスクアレイ及びテープライブラリといった実際の記憶資源である。これらの記憶リソースは、ディスク、テープ、フラッシュメモリ、または光学記憶装置といった、異なる記憶技術に基づき得る。記憶リソースはまた、異なる地理的な位置、費用、及び速度属性を有し得、異なるプロトコルをサポートし得る。記憶プールマネージャの役割は、記憶リソースを組み合わせ、統合し、それらのプログラミングインターフェース間の違いをマスクすることである。記憶プールマネージャは、特徴のある記憶プールのセットとして物理記憶リソースをオブジェクトマネージャ４１０に提示し、これらの特徴が、これらのプールをアプリケーションデータのライフサイクルにおける特定の段階に好適なものにしている。記憶プールマネージャは、図６と関連してより詳細に記載される。
【００５８】
オブジェクトマネージャ及びデータ移動エンジン
図５は、オブジェクトマネージャ及びデータ移動エンジン４１０を図示する。オブジェクトマネージャ及びデータ移動エンジンは、プールマネージャ５０４によってそれに提示される仮想記憶リソース５１０を発見し、それを用いる。それは、サービスレベルポリシーエンジン４０６からの要求を受けて、仮想記憶プール内のリソースからデータ記憶オブジェクのトインスタンスを作成してそれを維持し、これは、サービスレベルポリシーエンジンからの命令に従って、仮想記憶プールから、記憶オブジェクトのインスタンス間でアプリケーションデータをコピーする。コピーのために選択されたターゲットプールは、選択されているビジネス動作、例えば、バックアップ、複製、または復元を暗に示す。サービスレベルポリシーエンジンは、オブジェクトマネージャ（同じシステム上）に対してローカルか、またはリモートのいずれかで存在し、標準的なネットワーク通信上のプロトコルを使用して通信する。好ましい実施形態ではＴＣＰ／ＩＰが使用され得るが、これは、十分に理解されており、広く利用可能であり、わずかな修正によりサービスレベルポリシーエンジンがオブジェクトマネージャに対してローカルまたはリモートに位置付けられることを可能にするためである。
【００５９】
一実施形態において、本システムは、実装の簡易さのため、オブジェクトマネージャと同じコンピュータシステム上にサービスレベルポリシーエンジンを配置し得る。別の実施形態において、本システムは、アプリケーションに有益または便宜的である場合に、設計を変更することなく、それぞれが構成要素のサブセットをホストする、複数のシステムを採用してもよい。
【００６０】
オブジェクトマネージャ５０１及び記憶プールマネージャ５０４は、記憶リソースとそれらの記憶リソースを使用するコンピュータシステム（ユーザのアプリケーションが存在する）とを相互接続する、コンピュータシステムプラットフォーム上に存在し得るソフトウェア構成要素である。相互接続プラットフォームへのこれらのソフトウェア構成要素の設置は、好ましい実施形態として指定され、そのようなアプリケーションに広く使用される通信プロトコル（例えば、ファイバーチャネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）、ｉＳＣＳＩ等）を介して顧客システムを記憶装置に接続する能力を提供し得、さらに種々のソフトウェア構成要素の配置の容易さを提供し得る。
【００６１】
オブジェクトマネージャ５０１及び記憶プールマネージャ５０４は、プラットフォームによって利用可能となるアプリケーションプログラミングインターフェースを介して基底の記憶装置仮想化プラットフォームと通信する。これらのインターフェースは、ソフトウェア構成要素がコンピュータシステムの挙動、ならびにそれがどのようにして記憶リソースとユーザのアプリケーションが存在するコンピュータシステムとを相互接続するかを問い合わせし、それを制御することを可能にする。構成要素は、実施では一般的なモジュール方式技術を適用して、所与のプラットフォームに特有の相互通信コードの置き換えを可能にする。
【００６２】
オブジェクトマネージャ及び記憶プールマネージャは、プロトコルを介して通信する。これらは、コンピュータシステムで典型的に利用可能な標準的なネットワーキングプロトコル、例えば、ＴＣＰ／ＩＰ、または標準的なプロセス間通信（ＩＰＣ）機序で伝送される。これにより、構成要素が同じコンピュータプラットフォーム上、またはネットワークによって接続される複数のコンピュータプラットフォーム上に存在する場合に、具体的なコンピュータプラットフォームに応じて、構成要素間での同程度の通信が可能となる。現在の構成は、配置の容易さのため、すべてのローカルソフトウェア構成要素が同じコンピュータシステム上に存在している。これは、上述のように、設計の厳格な要件ではなく、必要に応じて将来的に再構成されてもよい。
【００６３】
オブジェクトマネージャ
オブジェクトマネージャ５０１は、データ記憶オブジェクトを維持するためのソフトウェア構成要素であり、それを制御するためのプロトコル操作セットを提供する。操作には、オブジェクト間のデータの作成、破壊、複写、及びコピー、オブジェクトへのアクセスを維持すること、ならびに特に、コピーを作成するために使用される記憶プールの指定を可能にすることが含まれる。すべてのプールにサポートされる共通の機能サブセットはないが、しかしながら、好ましい実施形態においては、一次プールは、性能が最適化されたもの、すなわち、待ち時間が短いものであり得、一方で、バックアップまたは複製プールは、容量が最適化されたもの、すなわち、大きなデータ量をサポートし、コンテンツアドレス可能なものであり得る。プールは、リモートまたはローカルであり得る。記憶プールは、ユーザがビジネス決定を行うことができる手段を含む、種々の基準、例えば、１ギガバイト当たりの記憶の費用に従って分類される。
【００６４】
第１に、装置が異なるビジネス目的に割り当てられるため、記憶装置が引き出される特定の記憶デバイスは、関連する費用及び他の実施上の考慮点とともに、考慮する点であり得る。いくつかのデバイスは、実際のハードウェアですらないがサービスとして提供される容量であり得、そのようなリソースの選択は、現実的なビジネス目的で行われ得る。
【００６５】
第２に、ネットワークトポロジーの「近接性」が考慮され、近い記憶装置は、典型的に、待ち時間が短く高価でないネットワークリソースによって接続されるが、遠い記憶装置は、待ち時間が長く帯域が制限される高価なネットワークリソースによって接続され得、逆に言うと、リソースに対する記憶プールの距離は、地理的な多様性によりローカルリソースに影響を及ぼす物理的障害から保護する場合に、有益であり得る。
【００６６】
第３に、記憶装置最適化の特徴が考慮され、ここで、一部の記憶装置は、空間効率的に最適化されるが、データを記憶し得る前にその分析または変換を行うための計算時間及びリソースを必要とし、一方で他の記憶装置は、比較して「性能的に最適化」され、この場合、比較してより多くの記憶リソースを使用するが、データを変換するとしても比較して非常に短い計算時間またはリソースを使用する。
【００６７】
第４に、「アクセス速度」の特徴が考慮され、ここで、記憶装置コンピュータプラットフォームに固有の一部のリソースは、例えば、仮想ＳＣＳＩブロックデバイスとして、ユーザのアプリケーションに容易かつ迅速に利用可能となり、一方でいくつかは、間接的に使用することしかできない。これらの復旧の容易さ及び速度は、しばしば、使用される記憶装置の種類によって左右され、これにより、それが好適に分類されることを可能にする。
【００６８】
第５に、使用される記憶の量及び所与のプール内で利用可能な量が考慮され、これは、使用される記憶装置の容量の集中または拡散のいずれかを行うことが有益であり得るためである。
【００６９】
以下に記載されるサービスレベルポリシーエンジンは、ユーザによって提供されるＳＬＡと分類基準とを組み合わせて、アプリケーションデータをいつどのように維持するか、及びサービスレベル合意（ＳＬＡ）を満たすために必要とされるリソースをどの記憶プールから引き出すかを決定する。
【００７０】
オブジェクトマネージャ５０１は、性能プール内のデータオブジェクト上で実行される一連の操作を追跡し、それらの操作を、オブジェクトを他の記憶プール、特に、容量的に最適化されたものに移動させる他の操作と相関させるために、履歴機序を作成、維持、及び利用する。各データオブジェクトに関するこの一連の記録は、一次プール内のすべてのデータオブジェクトについてオブジェクトマネージャで維持され、まず一次データオブジェクトによって相関された後、操作順序、すなわち、各オブジェクトのタイムライン及びすべてのそのようなタイムラインのリストによって相関される。実行される各操作は、所与の時点におけるデータオブジェクトの状態をキャプチャするために、基底の仮想化プリミティブを用いる。
【００７１】
加えて、基底の記憶装置仮想化機器は、データオブジェクト内のデータの部分の修正を示す、ビットマップ等内部データ構造を露出させ、その取り出しを可能にするように修正され得る。これらのデータ構造を利用して、ある時点におけるデータオブジェクトの状態、例えば、データオブジェクトのスナップショットをキャプチャし、特定の時点で取得されたスナップショット間の差分を提供し、それによって、最適なバックアップ及び復元を可能にする。具体的な実装及びデータ構造は、様々な供給業者からの様々な機器によって多様であり得るが、データ構造は、データオブジェクトに対する変更を追跡するために用いられ、記憶装置は、変化したオブジェクトの部分の元の状態を保持するために用いられ、データ構造における指標は、記憶装置に保持されているデータに対応する。スナップショットにアクセスする際、データ構造が参照され、変更された部分については、現在のデータではなく、保存されたデータがアクセスされるが、これは、データオブジェクトが、その範囲が示されるように修正されているためである。用いられる典型的なデータ構造は、各ビットがデータオブジェクトのセクションに対応するものである。ビットの設定は、セクションがスナップショット操作の時点の後に修正されたことを示す。基底のスナップショットのプリミティブ機序は、スナップショットオブジェクトが存在する限り、これを維持する。
【００７２】
上述のタイムラインは、それを基底のシステムから得ることができるように、操作が開始された時間、それが停止された時間（発生した場合）、スナップショットオブジェクトへの参照、内部データ構造（例えば、ビットマップまたはエクステントリスト）への参照を含む、所与の一次データオブジェクトに対するスナップショット操作のリストを維持する。所与の時点におけるデータオブジェクトの状態を別のプールにコピーした結果への参照もまた維持され、例として、データオブジェクトの状態を、コンテンツアドレス指定を使用して容量最適化プール４０７にコピーすることにより、オブジェクトハンドルが得られる。そのオブジェクトハンドルは、所与のスナップショットに対応し、スナップショット操作とともにタイムラインに記憶される。この相関は、好適な開始点を特定するために使用される。
【００７３】
最適なバックアップ及び復元は、所望される開始点から終了点までの操作のリストを参照する。時間順の操作リスト及びそれらの対応するデータ構造（ビットマップ）は、開始から終了までの連続した時系列が実現されるように構築され、この系列には操作の開始時間の間にギャップは存在しない。これにより、データオブジェクトに対するすべての変更が、対応するビットマップデータ構造によって表されることを確実にする。開始から終了までのすべての操作を取り出す必要はなく、同時に存在するデータオブジェクト及び基底のスナップショットは、時間が重複しており、追跡されていない変更が発生した時間に、ギャップが存在しないことのみが必要とされる。ビットマップは、ある特定の記憶ブロックが変化したことを示すが、その変化が何であるかは示さず、ビットマップは、時間間隔で生じるすべての変化のセットを認識するために追加され得るか、または一緒に構成され得る。ある時点の状態にアクセスするためにこのデータ構造を使用する代わりに、本システムは、データ構造が、時間が進むにつれて修正されるデータを表すという事実を利用する。むしろ、データオブジェクトの最終状態は示される範囲でアクセスされ、したがって、所与の開始時間から終了時間までの所与のデータオブジェクトに対する変更のセットが返却される。
【００７４】
バックアップ操作は、この時系列、相関参照、及び内部データ構造へのアクセスを利用して、バックアップ操作を実現する。同様に、これは、相補的な方式のシステムを使用して、復元操作を達成する。特定のステップは、以下に、「最適なバックアップ／復元」の節に記載される。
【００７５】
仮想記憶プールの種類
図５は、代表的な記憶プールの種類を図示する。１つの一次記憶プール及び２つの二次記憶プールがこの図では示されているが、さらに多数のものがいくつかの実施形態では構成されてもよい。
【００７６】
一次記憶プール５０７−ユーザアプリケーションがそのデータを記憶するデータオブジェクトを作成するために使用される記憶リソースを含む。これは、主としてデータ管理仮想化エンジンの操作を達成するために存在する他の記憶プールとは対照的である。
【００７７】
性能最適化プール５０８−高性能バックアップ（すなわち、以下に記載されるポイントインタイム複製）、ならびにユーザアプリケーションによるバックアップイメージへの高速アクセスを提供することができる、仮想記憶プール。
【００７８】
容量最適化プール５０９−主として、以下に記載される重複排除技法の使用によって高度に空間効率的な方式でのデータオブジェクトの記憶を提供する、仮想記憶プール。この仮想記憶プールは、データオブジェクトのコピーへのアクセスを提供するが、その主要な目的のため、上述の性能最適化プールとは対照的に、高性能ではない。
【００７９】
初期配置は、上述の記憶プールを、最小限の操作セットとして含む。設計は、上に例示された基準の種々の組み合わせを表す様々な種類の複数のプール、ならびに将来的な配置において記憶装置のすべてを表すのに便利なように、複数のプールマネージャを十分に予期する。上に例示されるトレードオフは、コンピュータデータ記憶システムの典型である。
【００８０】
実用的な観点から、これらの３つのプールは、非常に単純な方式でほとんどのユーザ要件に対処する、好ましい実施形態を表す。ほとんどのユーザは、早期復旧を可能にする、緊急の復元の必要性のための１つの記憶プールと、低費用で、多数のイメージを長期間保持することができる１つの他のプールとを有する場合に、データ保護のビジネス要件のほぼすべてが、ほとんど妥協することなく満たされ得ることを見出すであろう。
【００８１】
各プールにおけるデータの形式は、プール内で使用される目的及び技術によって決定される。例えば、早期復旧プールは、必要とされる変換（ｔｒａｎｓｌａｔｉｏｎ）を最小化させ、復旧の速度を改善するために、元のデータに非常に類似した形式で維持される。長期記憶プールは、一方で、重複排除及び圧縮を用いてデータのサイズを低減させ、それによって記憶装置の費用を低減させる。
【００８２】
オブジェクト管理操作５０５
オブジェクトマネージャ５０１は、サービスレベルポリシーエンジン４０６によってそれに送信される命令に従って、仮想記憶プール４１８から、データ記憶オブジェクト５０３のインスタンスを作成し、それを維持する。オブジェクトマネージャは、５つの主要な領域のデータオブジェクト操作を提供する：ポイントインタイム重複またはコピー作成（広く「スナップショット」と称される）、標準的なコピー作成、オブジェクト維持、マッピング及びアクセス維持、ならびに収集。
【００８３】
オブジェクト管理操作にはまた、仮想記憶プール自体を維持し、それらに関する情報を取り出すための一連のリソース発見操作が含まれる。プールマネージャ５０４は、最終的に、これらに関する機能性を提供する。
【００８４】
ポイントインタイムコピー（「スナップショット」）操作
スナップショット操作は、特定の時点で、初期オブジェクトインスタンスを表すデータオブジェクトインスタンスを作成する。より具体的には、スナップショット操作は、指定された仮想記憶プールのリソースを使用して、ある集合のメンバの完全な仮想コピーを作成する。これは、データ記憶オブジェクトと呼ばれる。ある時点で存在していたデータ記憶オブジェクトが利用可能となるように、データ記憶オブジェクトの複数の状態が長期間維持される。上述のように、仮想コピーは、重複データのすべてのビットをディスクにコピー及び記憶する代わりに、コピーオンライトまたは他のインバンド技術を使用して、軽量な方式でコピーが作成されることを可能にする、基底の記憶装置仮想化ＡＰＩを使用して実装されるコピーである。これは、いくつかの実施形態では、ＥＭＣ、ｖｍｗａｒｅ、またはＩＢＭによって提供されるもの等、市販の基底の記憶装置仮想化システムの機能にアクセスするように記述されるソフトウェアモジュールを使用して実装され得る。そのような基底の仮想化が利用可能でない場合には、記載されるシステムは、知力の劣ったハードウェアとのインターフェース接続のためのその独自の仮想化層を提供し得る。
【００８５】
スナップショット操作は、イメージデータが固有となるように、また、スナップショットが、スナップショットの時点におけるアプリケーションの状態を復元するために使用され得るように、アプリケーションが、データの状態を特定の時点に凍結させることを必要とする。他の準備ステップもまた必要とされ得る。これらは、後続の節で記載されるアプリケーション特化モジュール３０２によってハンドルされる。ライブアプリケーションについては、したがって、最も軽量な操作が所望される。
【００８６】
スナップショット操作は、システム内のすべてのより高レベルの操作のためのプリミティブデータとして使用される。実際には、それらは、特定の時点におけるデータの状態へのアクセスを提供する。同様に、スナップショットは、典型的に、ディスク上で何が変化したかと何が存在するかを区別する、コピーオンライト技法を使用して実装されるため、これらのスナップショットは、データをシステム全体にわたって効率的にコピーするためにも構築されるか、または一緒に追加され得る、差分を提供する。スナップショットの形式は、以下に記載されるデータムーバ５０２によってコピーされるデータの形式であり得る。
【００８７】
標準的なコピー操作
コピー操作がスナップショットではない場合、これは、標準的なコピー操作と考えられ得る。標準的なコピー操作は、１つの記憶プール内のソースデータオブジェクトのすべてまたはサブセットを、別の記憶プール内のデータオブジェクトにコピーする。結果は、２つの異なるオブジェクトである。使用され得る標準的なコピー操作の１つの種類は、初期「ベースライン」コピーである。これは、典型的に、データが、最初に１つの仮想記憶プールから別のものに、例えば、性能最適化プールから容量最適化プールにコピーされるときに行われる。変更されたデータまたは差分のみが、ターゲットオブジェクトを更新するためにターゲット記憶プールにコピーされる、別の種類の標準的なコピー操作が使用されてもよい。これは、初期ベースラインコピーが、既に行われた後に生じる。
【００８８】
データ仮想化システムが最初に初期化される際にベースラインコピーが必要とされるとはいえ、オブジェクトの完全に網羅したバージョンが、毎回コピーが作製されるたびにシステムに保存される必要はない。これは、各仮想コピーが、完全なコピーへのアクセスを提供するためである。いずれのデルタまたは差分も、ベースラインに関連してではなく、仮想コピーに関連して表され得る。これは、一連の変化リストを通過する一般的なステップを事実上排除することの肯定的な影響を有する。
【００８９】
標準的なコピー操作は、データ記憶オブジェクト間のデータの移動をもたらし、データ記憶オブジェクト自体を維持するための、プールマネージャによって供給され、データムーバによって受信される一連の命令または要求によって開始される。このコピー操作は、指定された仮想記憶プールのリソースを使用して指定されたデータ記憶オブジェクトのコピーを作成することを可能にする。結果は、記憶プール内のターゲットデータオブジェクト内にあるソースデータオブジェクトのコピーである。
【００９０】
スナップショット及びコピーの操作は、それぞれ、準備操作及び起動操作を伴って構成される。準備及び起動の２つのステップは、準備段階の典型である長時間のリソース割り当て操作が、起動から分離されることを可能にする。スナップショット操作のポイントインタイム特徴を満たすために短時間中断するだけでよく、実際には、達成するのに有限だがゼロではない時間を要する、アプリケーションが、これを必要とする。コピー及びスナップショットの操作についても同様に、この２ステップの準備及び起動構造は、ポリシーエンジンが、すべての集合メンバについてリソースが割り当てられ得る場合にのみ、操作を進めることを可能にする。
【００９１】
オブジェクト維持
オブジェクト維持操作は、作成、破壊、複写を含む、データオブジェクトを維持するための一連の操作である。オブジェクトマネージャ及びデータムーバは、プール要求ブローカ（詳細は以下）によって提供される機能性を使用して、これらの操作を実装する。データオブジェクトは、グローバルレベルで、各記憶プールで、または好ましくはその両方で、維持され得る。
【００９２】
コレクション
コレクション操作は、補助的な機能である。コレクションは、オブジェクトマネージャによってメモリに維持されるリストである、抽象的なソフトウェア概念である。それらは、ポリシーエンジン２０６が、コレクション内のメンバのすべてにわたって一連の操作を要求することを可能にし、すべてのメンバに対して要求の一貫性アプリケーションを可能にする。コレクションの使用は、複数のデータ記憶オブジェクトが、すべて正確に同時にキャプチャされるように、ポイントインタイムスナップショットの同時起動を可能にし、これは、典型的に論理的に正しい復元のためにアプリケーションによって必要とされるためである。コレクションの使用は、コレクションのすべてのメンバにわたるコピー操作の便宜的な要求を可能にし、ここで、アプリケーションは、複数の記憶オブジェクトを論理的な統一体として使用する。
【００９３】
リソース発見操作
オブジェクトマネージャは、オブジェクト管理操作５０５をプールマネージャ５０４に発行することによって、仮想記憶プールを発見し、プールのそれぞれに関して得られた情報を使用して、所与の要求に関して必要とされる基準を満たすものを選択するか、または一致するものがない場合には、デフォルトのプールを選択し、オブジェクトマネージャが、次いで、選択された仮想記憶プールからのリソースを使用してデータ記憶オブジェクトを作成し得る。
【００９４】
マッピング及びアクセス
オブジェクトマネージャはまた、外部アプリケーションに対するこれらのオブジェクトの可用性を許容及び維持するために、オブジェクト管理操作セットを提供する。第１のセットは、ユーザのアプリケーションが存在するコンピュータを登録及び登録削除するための操作である。コンピュータは、使用中の記憶ネットワークに典型的な識別（例えば、ファイバーチャネルＷＷＰＮ、ｉＳＣＳＩ識別等）によって登録される。第２のセットは、「マッピング」操作であり、オブジェクトが作成される記憶プールによって許可されると、データ記憶オブジェクトは、ユーザアプリケーションが存在するコンピュータに対して「マッピング」され得る、すなわち、使用が可能となり得る。
【００９５】
この可用性は、記憶装置、例えば、ネットワーク上のファイバーチャネルディスクまたはｉＳＣＳＩデバイス、ファイル共有ネットワーク上のファイルシステム等としてＳＡＮに提示されるブロックデバイスに適切な形式を取り、アプリケーションコンピュータ上でオペレーティングシステムによって使用可能である。同様に、「マッピング解除」操作は、ユーザアプリケーションに対するネットワーク上の仮想記憶デバイスの可用性を逆転させる。この方式では、１つのアプリケーション、すなわち、バックアップのために記憶されるデータは、その後で別のコンピュータでの別のアプリケーション、すなわち、復元に利用可能となり得る。
【００９６】
５０２データムーバ
データムーバ５０２は、スナップショット（ポイントインタイム）コピー要求及び標準的なコピー要求に関するオブジェクトマネージャから受信した命令に従って、種々のデータ記憶オブジェクト５０３間でデータの読み出し及び書き込みを行う、オブジェクトマネージャ及びデータムーバ内のソフトウェア構成要素である。データムーバは、システム全体にわたってデータオブジェクト間でデータの読み出し及び書き込みを行うための操作を提供する。データムーバはまた、オブジェクトマネージャがその実行を要求している、長時間の操作の状態の問い合わせ及び維持を行う操作を提供する。
【００９７】
データムーバは、その操作を達成するために、プール機能性プロバイダ（図６を参照されたい）からの機能性を使用する。スナップショット機能性プロバイダ６０８は、特定の時点における初期オブジェクトインスタンスを表すデータオブジェクトインスタンスの作成を可能にする。差分エンジン機能性プロバイダ６１４は、時間的連鎖で関連する２つのデータオブジェクト間の差分に関する記述を要求するために使用される。コンテンツアドレス可能プールに記憶されたデータオブジェクトについては、いずれの２つの任意のデータオブジェクト間の差分を提供することができる、特別な機能性が提供される。この機能性はまた、いくつかの事例においては、基底の記憶装置仮想化システムによって、また他の事例においては、商品記憶に加えてこれを実装するモジュールによって、性能最適化プールに提供される。データムーバ５０２は、差分に関する情報を使用して、データオブジェクト５０３のインスタンス間でコピーするデータセットを選択する。
【００９８】
所与のプールについては、差分エンジンプロバイダは、データ記憶オブジェクトの長期にわたる２つの状態の間の差分の具体的な表示を提供する。スナップショットプロバイダについては、２つの時点の間の変化は、データ記憶オブジェクトの所与の部分への書き込みとして記録される。一実施形態において、差分は、ビットマップとして表される。各ビットが、第１のもので始まり、最後まで昇順で順序付けられたデータオブジェクト範囲のリストに対応する、ビットマップとして表され、ここで、セットビットは、修正された領域を示す。このビットマップは、基底の記憶装置仮想化システムによって使用されるコピーオンライトビットマップから導出される。別の実施形態において、差分は、変更されたデータ範囲に対応するエクステントのリストとして表され得る。コンテンツアドレス可能記憶プロバイダ６１０については、表示は、以下に記載され、２つのコンテンツアドレス可能データオブジェクトの異なる部分を効率的に決定するために使用される。
【００９９】
データムーバは、この情報を使用して、異なるセクションのみをコピーし、その結果、データオブジェクトの新しいバージョンが、既存のバージョンから、まずそれを複製し、差分のリストを取得した後に、そのリスト内のそれらの差分に対応するデータのみ移動させることによって、作成され得るようになる。データムーバ５０２は、差分のリストをトラバースし、ソースデータオブジェクトからターゲットデータオブジェクトに、示された範囲を移動させる。（データバックアップ及び復元の最適な方法を参照されたい）。
【０１００】
５０６コピー操作−要求変換及び命令
オブジェクトマネージャ５０１は、仮想記憶プール４１８内のデータオブジェクト間でデータをコピーするように、一連の操作を通じてデータムーバ５０２に命令する。このプロシージャには、以下のステップが含まれ、これは命令の受信で開始する。
【０１０１】
第１に、コレクション要求を作成する。コレクションの名称が返却される。
【０１０２】
第２に、オブジェクトをコレクションに追加する。上記からのコレクション名称、ならびにコピーされるソースデータオブジェクトの名称及び２つの先行物、すなわち、差分が取得されるソース記憶リソースプール内のデータオブジェクト、及びターゲット記憶リソースプール内の対応するデータオブジェクトの名称が使用される。このステップは、このセットで操作される各ソースデータオブジェクトに対して繰り返される。
【０１０３】
第３に、コピー要求を準備する。コレクション名称、ならびにターゲットとして機能する記憶リソースプールが供給される。準備コマンドは、オブジェクトマネージャに、記憶プールマネージャに接触して、コレクション内のソースのそれぞれに対応する、必要なターゲットデータオブジェクトを作成するように命令する。準備コマンドはまた、複写されるターゲット記憶リソースプール内の対応するデータオブジェクトを供給し、それによって、プロバイダは、提供されたオブジェクトを複写し、それをターゲットオブジェクトとして使用することができる。コピー要求の参照名称が返却される。
【０１０４】
第４に、コピー要求を起動する。上記で返却されたコピー要求の参照名称が供給される。データムーバは、所与のソースオブジェクトを、その対応するターゲットオブジェクトにコピーするように命令される。各要求は、参照名称、ならびに全体のジョブ（ソースターゲット対の全セット）を記述するシーケンス番号、ならびに各個別のソースターゲット対について記述するシーケンス番号を含む。ソースターゲット対に加えて、対応する先行物の名称が、コピー命令の一部として供給される。
【０１０５】
第５に、コピーエンジンは、ソースプール内のデータオブジェクトの名称を使用して、先行物とソースとの間の差分を、ソースにおいて差分エンジンから取得する。示される差分が、次いで、ソースからターゲットに伝送される。一実施形態において、これらの差分は、ビットマップ及びデータとして伝送される。別の実施形態において、これらの差分は、エクステントリスト及びデータとして伝送される。
【０１０６】
５０３データ記憶オブジェクト
データ記憶オブジェクトは、コンピュータデータ処理装置及びソフトウェアによく知られたイディオム及び方法を使用して、アプリケーションデータの記憶及び取り出しを可能にする、ソフトウェア構築物である。実際には、これらは、現在のところ、コンテンツの指定子がそこから構築され、その中のデータを一意に特定する、記憶ネットワーク上のＳＣＳＩブロックデバイス、例えば、ＳＣＳＩ  ＬＵＮ、またはコンテンツアドレス可能コンテナの形態を取る。データ記憶オブジェクトは、プールマネージャに命令を発行することによって作成及び維持される。アプリケーションを持続させるための実際の記憶は、データ記憶オブジェクトが作成された仮想記憶プールから引き出される。
【０１０７】
データ記憶オブジェクトの構造は、それが作成される記憶プールに応じて多様である。記憶ネットワーク上のブロックデバイスの形態を取るオブジェクトについては、所与のブロックデバイスのデータオブジェクトのデータ構造は、デバイス識別子に対するデータオブジェクト内のブロックのそれぞれの論理ブロックアドレス（ＬＢＡ）と実際の記憶位置のＬＢＡとの間のマッピングを実装する。データオブジェクトの識別子を使用して、使用されるマッピングのセットを特定する。現在の実施形態は、基底の物理的コンピュータプラットフォームによって提供されるサービスに頼っており、また、ビットマップまたはエクステントリストといったその内部データ構造に頼っている。
【０１０８】
コンテンツアドレス可能コンテナの形態を取るオブジェクトについては、コンテンツ署名が識別子として使用され、データオブジェクトは、重複排除に関する節で以下に記載されるように記憶される。
【０１０９】
５０４プールマネージャ
プールマネージャ５０４は、仮想記憶リソースを管理するためのソフトウェア構成要素であり、関連する機能性及び特徴は以下に記載される通りである。オブジェクトマネージャ５０１及びデータ移動エンジン５０２は、データ記憶オブジェクト５０３を維持するために、１つ以上のプールマネージャ５０４と通信する。
【０１１０】
５１０仮想記憶リソース
仮想記憶リソース５１０は、以下に記載されるように、記憶プール機能を実装するためにプールマネージャに利用可能となる様々な種類の記憶装置である。この実施形態において、記憶装置バーチャライザを使用して、種々の外部ファイバーチャネルまたはｉＳＣＳＩ記憶装置ＬＵＮを、仮想化された記憶装置として、プールマネージャ５０４に提示する。
【０１１１】
記憶プールマネージャ
図６は、記憶プールマネージャ５０４をさらに図示する。記憶プールマネージャの目的は、基底の仮想記憶リソースを記憶リソースプールとしてオブジェクトマネージャ／データムーバに提示することであり、これらは、システムの他の構成要素によって利用される、共通のインターフェースを有する記憶装置及びデータ管理機能性を抽象化したものである。典型的には、これらの共通のインターフェースには、特定の時間状態と関連付けられたデータオブジェクトを特定及びアドレス指定するための機序、ならびにビットマップまたはエクステントの形態でデータオブジェクト間の差分を生成するための機序が含まれる。この実施形態において、プールマネージャは、一次記憶プール、性能最適化プール、及び容量最適化プールを提示する。共通のインターフェースは、オブジェクトマネージャが、これらのプール内のデータ記憶オブジェクトを、他のデータ記憶オブジェクトのコピーとして、または新しいオブジェクトとしてのいずれかとして、作成及び消去することを可能にし、データムーバは、データ記憶オブジェクト間でデータを移動させることができ、また、データオブジェクトの差分付け操作の結果を使用することができる。
【０１１２】
記憶プールマネージャは、類似の機能性の多様な実装に共通のインターフェースを実装するための典型的なアーキテクチャを有し、ここでは、いくつかの機能性が、「スマートな」基底のリソースによって提供され、他の機能性が、あまり機能性でない基底のリソースの上に実装されるはずである。
【０１１３】
プール要求ブローカ６０２及びプール機能性プロバイダ６０４は、オブジェクトマネージャ／データムーバと同じプロセスでか、またはローカルもしくはネットワークプロトコル、例えばＴＣＰを介して通信する別のプロセスでのいずれかで実行する、ソフトウェアモジュールである。この実施形態において、プロバイダには、一次記憶プロバイダ６０６、スナップショットプロバイダ６０８、コンテンツアドレス可能プロバイダ６１０、及び差分エンジンプロバイダ６１４が含まれ、これらは、以下にさらに記載される。別の実施形態において、プロバイダのセットは、本明細書に示されるものの上位セットであり得る。
【０１１４】
仮想記憶リソース５１０は、記憶プール機能を実装するためにプールマネージャに利用可能となる異なる種類の記憶装置である。この実施形態において、仮想記憶リソースには、プールマネージャと同じハードウェアで動作し、プログラムに基づくインターフェースを通じてアクセス可能な（データ及び管理操作の両方に）記憶装置仮想化システムからのＳＣＳＩ論理ユニットのセットが含まれ、標準的なブロック記憶機能性に加えて、スナップショットの作成及び消去、ならびにボリュームの変化した部分の追跡を含む追加の機能が、利用可能である。別の実施形態において、仮想リソースは、類似の機能を呈する外部記憶システムからのものであり得るか、あるいはインターフェース（例えば、ファイルシステムを通じて、またはＣＩＦＳ、ｉＳＣＳＩ、もしくはＣＤＭＩ等のネットワークインターフェースを通じてアクセスされる）、機能（例えば、リソースがコピーオンライトスナップショットを作製する操作をサポートするかどうか）、または非機能的側面（例えば、高速／容量の制限、例えば、ソリッドステートディスクと、ＳＡＴＡディスク等の低速／高容量）が異なり得る。利用可能な機能及びインターフェースは、どのプロバイダが、仮想記憶リソースを消費することができるか、及びどのプール機能性が１つ以上のプロバイダによってプールマネージャ内に実装される必要があるかを決定し、例えば、コンテンツアドレス可能記憶プロバイダのこの実装は、「ダム」記憶装置のみを必要とし、この実装は、すべてがコンテンツアドレス可能プロバイダ６１０内であり、基底のコンテンツアドレス可能仮想記憶リソースは、より単純な「パススルー」プロバイダの代わりに使用され得る。対照的に、スナップショットプロバイダのこの実装は、ほとんどが「パススルー」であり、早期ポイントインタイムコピー操作を呈する記憶装置を必要とする。
【０１１５】
プール要求ブローカ６０２は、構成された仮想記憶リソース５１０に対してプール機能性プロバイダの適切なセットを実行することによって、記憶プールに特化した機能に関する要求にサービスする、単純なソフトウェア構成要素である。サービスされ得る要求には、プールにオブジェクトを作成すること、プールからオブジェクトを消去すること、データをオブジェクトに書き込むこと、データをオブジェクトから読み出すこと、プール内でオブジェクトをコピーすること、プール間でオブジェクトをコピーすること、プール内の２つのオブジェクト間の差分の概要を要求することが含まれるが、これらに限定されない。
【０１１６】
一次記憶プロバイダ６０６は、管理が、ファイバーチャネル、ｉＳＣＳＩ、ＮＦＳ、またはＣＩＦＳ等のインターフェースを介してアプリケーションに直接公開されもする仮想記憶リソースとインターフェース接続すること（例えば、スナップショットの作成及び消去、ならびにファイルの変更された部分の追跡）を可能にする。
【０１１７】
スナップショットプロバイダ６０８は、一次リソースプールからデータのポイントインタイムコピーを作製する機能を実装する。これにより、スナップショットが入った別のリソースプールの抽象化が作成される。実装されるとき、ポイントインタイムコピーは、一次リソースプールからのオブジェクトのコピーオンライトスナップショットであり、コピーオンライトコピーを収容するために第２の仮想記憶リソースを消費し、これは、この管理機能性が、一次記憶装置及びスナップショットプロバイダに使用される仮想記憶リソースによって呈されるためである。
【０１１８】
差分エンジンプロバイダ６１４は、時間的連鎖で関連付けられた、比較されるプール内の２つのオブジェクトに関する要求を満たし得る。２つのオブジェクト間の差分セクションは、例えば、ビットマップまたはエクステントを使用して、プロバイダに特化した手段で特定及び要約される。例えば、差分セクションは、各セットビットが、２つのオブジェクトが異なる場所の固定のサイズ領域を示すビットマップとして表され得るか、または差分は、一連の機能コールまたはコールバックとしてプロシージャ的に表されてもよい。
【０１１９】
プールが基づく仮想記憶リソースに応じて、またはプールを実装する他のプロバイダに応じて、差分エンジンは、種々の手段で効率的に結果を生成することができる。実装されるとき、スナップショットプロバイダを介して実装されたプールで作動する差分エンジンは、スナップショットプロバイダのコピーオンライトの性質を使用して、スナップショットが作製されているオブジェクトに対する変更を追跡する。単一の変化する一次オブジェクトの連続したスナップショットは、したがって、スナップショットプロバイダによってそれらとともに記憶される差分の記録を有し、スナップショットプールの差分エンジンは、単純に、この変更の記録を取り出す。さらに、実装されるとき、コンテンツアドレス可能プロバイダを介して実装されたプールで作動する差分エンジンは、コンテンツアドレス可能実装の効率的なツリー構造（下記、図１２を参照されたい）を使用して、必要に応じてオブジェクト間の迅速な比較を行う。
【０１２０】
コンテンツアドレス可能プロバイダ６１０は、１度だけ書き込めるコンテンツアドレス可能インターフェースをそれが消費する仮想記憶リソースに実装する。これは、読み出し、書き込み、複写、及び消去操作を満たす。それぞれの書き込みまたはコピーされたオブジェクトは、そのコンテンツから導出される固有のハンドルによって特定される。コンテンツアドレス可能プロバイダは、以下にさらに記載される（図１１）。
【０１２１】
プールマネージャ操作
動作時に、プール要求ブローカ５０２は、プールまたはオブジェクトに対するコピー、スナップショット、または消去といったデータ操作動作に関する要求を許容する。要求ブローカは、プールもしくはオブジェクトの名称を確認するか、またはそれを参照することにより、プール５０４からのどのプロバイダコードを実行するかを決定する。次いで、ブローカは、入来するサービス要求を、特定のプール機能性プロバイダによってハンドルされ得る形態に変換させ、適切なプロバイダ操作シーケンスを呼び出す。
【０１２２】
例えば、入来要求は、一次記憶プール内のボリュームから、スナップショットプールにスナップショットを作製するように依頼し得る。入来要求は、名称によって一次記憶プール内のオブジェクト（ボリューム）を特定し、名称と操作（スナップショット）の組み合わせが、基底のスナップショット機能を使用して一次プールからポイントインタイムスナップショットを作製することができるスナップショットプロバイダが呼び出されるべきであることを決定する。このスナップショットプロバイダは、要求を、基底の記憶装置仮想化機器によって実行される本来のコピーオンライト機能によって必要とされる正確な形態、例えば、ビットマップまたはエクステントに変換し、これは、本来のコピーオンライト機能の結果を、オブジェクトマネージャに返却され、プールマネージャに対する今後の要求に使用され得る、記憶ボリュームハンドルに変換する。
【０１２３】
オブジェクトマネージャ及びデータムーバを使用したデータバックアップの最適な手段
データバックアップの最適な手段は、ビットマップ、エクステント、またはオブジェクトムーバによって記憶される他の時間的差分情報を使用することによって、コピーする必要のあるデータの量を最小化しながら、長期にわたるアプリケーションデータオブジェクトの連続したバージョンを作製する、一連の操作である。それは、アプリケーションデータをデータ記憶オブジェクトに記憶し、それを、経時的な変化が容易に特定できるように、種々の変化を経時的にアプリケーションデータに関連付けるメタデータと関連付ける。
【０１２４】
好ましい実施形態において、プロシージャには以下のステップが含まれる：
１．機序は、データ記憶オブジェクト内のアプリケーションデータの初期参照状態、例えば、Ｔ０を提供する。
２．後続のインスタンス（バージョン）が、差分エンジンプロバイダを有する仮想記憶プール内のデータ記憶オブジェクトの経時的な必要性に基づいて作成される。
３．各連続したバージョン、例えば、Ｔ４、Ｔ５は、仮想記憶プールに差分エンジンプロバイダを使用して、Ｔ５が、Ｔ４に対する参照として、かつＴ５とＴ４との間の差分のセットとして記憶されるように、それと、それよりも前に作成されたインスタンスとの間の差分を取得する。
４．コピーエンジンは、１つのデータオブジェクト（ソース）から別のデータオブジェクト（目的地）にデータをコピーする要求を受信する。
５．目的地オブジェクトが作成される仮想記憶プールが、ソースデータオブジェクトの以前のバージョンから作成された他のオブジェクトを含まない場合、新しいオブジェクトが、目的地の仮想記憶プールに作成され、ソースデータオブジェクトの全コンテンツが、目的地オブジェクトにコピーされ、プロシージャは完了する。それ以外の場合は、次のステップに続く。
６．目的地オブジェクトが作成される仮想記憶プールが、ソースデータオブジェクトの以前のバージョンから作成されたオブジェクトを含有する場合、ソースデータオブジェクトの仮想記憶プール内の対応する以前のバージョンが存在する、目的地仮想記憶プール内の最近作成された以前のバージョンが選択される。例えば、Ｔ５のコピーが、スナップショットプールから開始され、時間Ｔ３で作成されるオブジェクトがターゲットで利用可能な最も最近のバージョンである場合、Ｔ３が以前のバージョンとして選択される。
７．前のステップで特定された初期バージョンで開始し、これからコピーされるソースデータオブジェクトで終了する、ソースデータオブジェクトのバージョンに関する時間順のリストを構築する。上述の例では、スナップショットプールにおいて、オブジェクトのすべての状態が利用可能であるが、Ｔ３を含み、それ以降の状態、すなわち、Ｔ３、Ｔ４、Ｔ５のみが、対象のものである。
８．リストの最初のバージョンから最後のものまで、差分のすべてが表示されるように、各連続したバージョン間の差分の対応するリストを構築する。両方の差分付けを行い、データのどの部分が変化し、どの部分が対応する時間の新しいデータを含むかを特定する。これにより、ターゲットバージョンからソースバージョンの差分、例えば、Ｔ３とＴ５との間の差分のセットを作成する。
９．ステップ６で特定された、以前のバージョンのオブジェクトを目的地仮想記憶プールに、例えば、オブジェクトＴ３をターゲットストアに、複製することによって、目的地オブジェクトを作成する。
１０．ステップ８で作成されたリスト内の特定された差分のセットを、ソースデータオブジェクトから目的地オブジェクトにコピーし、プロシージャが完了する。
【０１２５】
目的地仮想記憶プール内の各データオブジェクトは、完全である、すなわち、それは、全データオブジェクトを表し、他の時点での状態または表示に対する外部参照を必要とすることなく、その時点のアプリケーションデータのすべてへのアクセスを可能にする。オブジェクトは、ベースライン状態から現在の状態まで、すべてのデルタを再生することなく、アクセス可能である。さらに、目的地仮想記憶プールにおけるデータオブジェクトの初期及び後続のバージョンの複写は、その中のアプリケーションデータコンテンツの徹底的な複写を必要としない。最後に、第２及び後続の状態に到達するためには、上述のように、データ記憶オブジェクトのコンテンツの徹底的なトラバーサル、伝送、または複製を伴うことなく、追跡及び維持される変更の伝送のみを必要とする。
【０１２６】
オブジェクトマネージャ及びデータムーバを使用したデータ復元の最適な手段
直感的に、データ復元のための最適な手段は、データバックアップのための最適な手段の逆である。所与の時点における目的地仮想記憶プール内のデータオブジェクトの所望される状態を再現するためのプロシージャには、以下のステップが含まれる。
１．再現される所望の状態に対応する、差分エンジンプロバイダを有する別の仮想プール内のデータオブジェクトのバージョンを特定する。これは、ソース仮想記憶プール内のソースデータオブジェクトである。
２．目的地仮想記憶プール内の再現されるデータオブジェクトの先行するバージョンを特定する。
３．ステップ２においてデータオブジェクトのバージョンが特定されない場合は、目的地仮想記憶プールに新しい目的地オブジェクトを作成し、ソースデータオブジェクトから目的地データオブジェクトにデータをコピーする。プロシージャが完了する。それ以外の場合は、以下のステップに続く。
４．データオブジェクトのバージョンがステップ２で特定された場合、ステップ２で特定されたデータオブジェクトに対応する、ソース仮想記憶プール内のデータオブジェクトを特定する。
５．ステップ４でデータオブジェクトが特定されない場合、目的地仮想記憶プールに新しい目的地オブジェクトを作成し、ソースデータオブジェクトから目的地データオブジェクトにデータをコピーする。プロシージャが完了する。それ以外の場合は、以下のステップに続く。
６．ステップ２で特定されたデータオブジェクトを複写することによって、目的地仮想記憶プールに新しい目的地データオブジェクトを作成する。
７．差分エンジンプロバイダをソース仮想記憶プールに用いて、ステップ１で特定されたデータオブジェクトとステップ４で特定されたデータオブジェクトとの間の差分のセットを得る。
８．ステップ７で作成されたリストによって特定されるデータを、ソースデータオブジェクトから目的地データオブジェクトにコピーする。プロシージャが完了する。
【０１２７】
所望の状態へのアクセスは、完全なものであり、他のコンテナまたは他の状態への外部参照を必要としない。参照状態を考慮して所望の状態を確立することは、徹底的なトラバースも徹底的な伝送も必要とせず、ソース仮想記憶プール内の提供される表示によって示される、取り出された変更のみが必要である。
【０１２８】
サービスレベル合意
図７は、サービスレベル合意を図示する。サービスレベル合意は、アプリケーションデータの二次コピーに関する詳細なビジネス要件をキャプチャする。最も単純な記述では、ビジネス要件は、コピーがいつ及びどの頻度で作成されるか、それらがどのくらい保持されるか、ならびにこれらのコピーがどの種類の記憶プールに存在するかを定義する。この単純化した記述は、ビジネス要件のいくつかの側面をキャプチャしない。所与の種類のプールに関するコピー作成の頻度は、一日のうちのすべての時間、及び１週間のうちのすべての日にわたって、均一である必要はない。一日のうちのある特定の時間、または１週間もしくは１カ月のうちのある特定の日は、アプリケーションデータにおけるより重要な（またはあまり重要でない）期間を表し得、したがって、より頻繁な（またはあまり頻繁でない）コピーを要求し得る。同様に、特定のプール内のアプリケーションデータのすべてのコピーが、同じ期間保持されることが必要とされない場合がある。例えば、月１回の処理の最後に作成されたアプリケーションデータは、月の中頃に作成された同じ記憶プール内のコピーよりも長い期間保持される必要がある場合がある。
【０１２９】
ある特定の実施形態のサービスレベル合意３０４は、ビジネス要件に存在するこれらの複雑性のすべてを表すように設計されている。サービスレベル合意は、名称属性、説明属性、ハウスキーピング属性、及びサービスレベルポリシーのコレクションという４つの主要な部分を有する。上述のように、１つのアプリケーションに１つのＳＬＡがある。
【０１３０】
名称属性７０１は、各サービスレベル合意が、固有の名称を有することを可能にする。
【０１３１】
説明属性７０２は、ユーザが、サービスレベル合意に有用な説明を割り当てることができるものである。
【０１３２】
サービスレベル合意はまた、それの維持及び訂正を可能にする、いくつかのハウスキーピング属性７０３を有する。これらの属性には、所有者識別、作成日時、修正及びアクセス、優先順位、有効／無効フラグが含まれるが、これらに限定されない。
【０１３３】
サービスレベル合意はまた、複数のサービスレベルポリシー７０５を含有する。いくつかのサービスレベル合意は、単一のサービスレベルポリシーを有するだけであり得る。より具体的には、単一のＳＬＡは、数十のポリシーを含有し得る。
【０１３４】
各サービスレベルポリシーは、ある特定の実施形態において、少なくとも次のものを含む：ソース記憶プール位置７０６及び種類７０８；ターゲット記憶プール位置７１０及び種類７１２；期間として表されるコピー作成の頻度７１４；期間として表されるコピー保持の長さ７１６；この特定のサービスレベルポリシーに関して一日の間の操作時間７１８；ならびにこのサービスレベルポリシーが適用される週、月、または年間の日数７２０。
【０１３５】
各サービスレベルポリシーは、ソース及びターゲット記憶プール、ならびにこれらの記憶プール間の所望されるアプリケーションデータのコピーの頻度を指定する。さらに、サービスレベルポリシーは、その操作時間、及びそれが適用される日数を指定する。各サービスレベルポリシーは、アプリケーションデータの保護のためのビジネス要件における、１つのステートメントの表示である。例えば、特定のアプリケーションが、毎月、月締めの後にアーカイブコピーが作成され、３年間保持されるビジネス要件を有する場合、これは、その月の最終日の夜中１２時にローカルバックアップ記憶プールから長期アーカイブ記憶プールへのコピーを３年間の保持とともに必要とするサービスレベルポリシーに変換され得る。
【０１３６】
すべてのサービスレベルポリシーは、ソース及び目的地のプール及び位置の特定の組み合わせを有し、例えば、ソース一次記憶プールと目的地ローカルスナップショットプールは、総合すると、その特定の目的地プールにコピーを作成するためのビジネス要件を指定する。ビジネス要件は、例えば、スナップショットコピーが通常の作業時間の間は１時間に１回作成されるが、これらの時間外では４時間に１回作成されることを指示し得る。同じソース及びターゲット記憶プールを有する２つのサービスレベルポリシーは、サービスポリシーエンジンによって実施され得る形態で、これらの要件を効果的にキャプチャする。
【０１３７】
サービスレベル合意のこれらの形態は、毎日、毎週、及び毎月のビジネスアクテビティのスケジュールの表示を可能にし、したがって、従来的なＲＰＯ及びＲＰＯに基づくスキームよりもさらに正確にアプリケーションデータを保護及び管理するためのビジネス要件をキャプチャする。操作時間、及び１年のうちの数日、数週間、及び数ヶ月での操作を可能にすることにより、スケジューリングは、「カレンダーベース」で発生し得る。
【０１３８】
総合すると、ある特定の組み合わせのソースと目的地、例えば、「ソース：ローカル一次及び目的地：ローカル性能最適化」を有するサービスレベルポリシーのすべてが、１種類の記憶について非均一のデータ保護要件をキャプチャする。単一のＲＰＯ数は、一方で、１日中及びすべての日にわたって、データ保護の１つの均一な頻度を強制する。例えば、ある組み合わせのサービスレベルポリシーは、多数のスナップショットが１０分間等の短い時間の間保存され、より少ない数のスナップショットが８時間等のより長期間保存されるように要求し得、これは、誤って削除されてしまった少量の情報が、１０分前以内の状態に戻り得ると同時に、１０分に１回取得されるすべてのスナップショットの記憶オーバーヘッドを必要とすることなく、より長い対象期間（ｔｉｍｅ  ｈｏｒｉｚｏｎ）で、実質的なデータ保護を提供することを可能にする。別の例として、バックアップデータ保護機能は、作業の週の間は１つの頻度で、週末の間は別の頻度で動作する、所与の１つのポリシーであり得る。
【０１３９】
異なるクラスのソース及び目的地記憶装置のすべてに関するサービスレベルポリシーが含まれる場合、サービスレベル合意は、ローカルスナップショット、ローカル長期ストア、オフサイト記憶装置、アーカイブ等を含む、アプリケーション全体のデータ保護要件のすべてを完全にキャプチャする。ＳＬＡ内のポリシーのコレクションは、所与の機能がいつ実行されるべきであるかを表すことができ、所与のデータソースに行われるべき複数のデータ管理機能を表すことができる。
【０１４０】
サービスレベル合意は、管理ワークステーション上のユーザインターフェースを通じてユーザによって作成及び修正される。これらの合意は、サービスポリシーエンジンによって構造化ＳＱＬデータベースまたはそれが管理する他のレポジトリに記憶される、電子文書である。ポリシーは、その通常のスケジューリングアルゴリズムを通じて、サービスポリシーエンジンによって取り出され、電子的に分析され、それに基づいて起動される。
【０１４１】
図８は、アプリケーション特化モジュール４０２を図示する。アプリケーション特化モジュールは、アプリケーション３００（以下に記載される）に近接して動作し、アプリケーション及びその動作環境とやりとりして、データ管理操作に必要とされるメタデータを集め、アプリケーションに問い合わせし、それを制御する。
【０１４２】
アプリケーション特化モジュールは、アプリケーションサービスプロセス及びデーモン８０１、アプリケーション構成データ８０２、オペレーティングシステム記憶サービス８０３（Ｗｉｎｄｏｗｓ（登録商標）でのＶＳＳ及びＶＤＳ等）、論理ボリューム管理及びファイルシステムサービス８０４、ならびにオペレーティングシステムドライバ及びモジュール８０５を含む、アプリケーションの種々の構成要素及び動作環境とやりとりする。
【０１４３】
アプリケーション特化モジュールは、サービスポリシーエンジン４０６からの制御コマンドに応答してこれらの操作を行う。アプリケーションとのこれらのやりとりには、メタデータ収集及びアプリケーション一貫性の２つの目的がある。
【０１４４】
メタデータ収集は、アプリケーション特化モジュールが、アプリケーションに関するメタデータを収集するプロセスである。いくつかの実施形態において、メタデータには、アプリケーションの構成パラメータ；アプリケーションの状態及びステータス；アプリケーションの制御ファイル及び起動／終了スクリプト；アプリケーションのデータファイル、ジャーナル、及びトランザクションログの位置；ならびにシンボリックリンク、ファイルシステムマウントポイント、論理ボリューム名称、及びアプリケーションデータへのアクセスに影響を及ぼし得る他のそのようなエンティティといった情報が含まれる。
【０１４５】
メタデータは、アプリケーションデータ及びＳＬＡ情報とともに収集され、保存される。これにより、システム内のアプリケーションデータの各コピーがそこに含まれ、アプリケーションデータの再構築に必要とされる詳細のすべてを含むことが保証される。
【０１４６】
アプリケーション一貫性は、アプリケーションデータのコピーが作成されるときに、そのコピーが有効であり、アプリケーションの有効なインスタンスに復元され得ることを確実にする動作のセットである。これは、アプリケーションが有効であり、そのオンラインの操作可能な状態であると同時に、保護されることをビジネス要件が指定する場合に、重要である。アプリケーションは、そのデータストア内で相互依存的なデータ関係を有し得、これらが一貫性のある状態でコピーされない場合、有効な復元可能イメージを提供することはない。
【０１４７】
アプリケーション一貫性を達成する実際のプロセスは、アプリケーションによって様々である。いくつかのアプリケーションは、キャッシュデータをディスクへと出す単純なフラッシュコマンドを有する。いくつかのアプリケーションは、アプリケーションが、アプリケーションデータが変化している場合ですら一貫性を保証する様式でその操作がジャーナルされることを確実にする、ホットバックアップモードをサポートする。いくつかのアプリケーションは、一貫性を確保するために、ＶＳＳ及びＶＤＳ等のオペレーティングシステム記憶サービスとのやりとりを必要とする。アプリケーション特化モジュールは、特定のアプリケーションで機能し、そのアプリケーションの一貫性を確保する、特別な目的で作られたものである。アプリケーション特化モジュールは、アプリケーションデータの一貫したスナップショットを提供するために、基底の記憶装置仮想化デバイス及びオブジェクトマネージャとやりとりする。
【０１４８】
効率のために、アプリケーション特化モジュール４０２の好ましい実施形態は、アプリケーション３００と同じサーバ上で動作する。これにより、アプリケーションとのやりとりにおける最小限の待ち時間を保証し、アプリケーションホスト上の記憶サービス及びファイルシステムへのアクセスを提供する。アプリケーションホストは、典型的に、一次記憶装置とみなされ、これは、次いで、性能最適化ストアにスナップショットされる。
【０１４９】
準備ステップを最小化することを含めて、動作しているアプリケーションの干渉を最小化するために、アプリケーション特化モジュールは、特定の時間におけるアプリケーションデータへのアクセスが必要とされる場合、及びその時間のスナップショットが、オブジェクトマネージャによって追跡したときにシステム内のどこにも存在しない場合に、スナップショットを作成するようにトリガされるのみである。スナップショットが作製された時間を追跡することによって、オブジェクトマネージャは、二次容量最適化プールから発行することができるバックアップ及び複製についての複数の要求を満たすことを含む、性能最適化データストアからの後続のデータ要求を満たすことができる。オブジェクトマネージャは、性能最適化ストアにオブジェクトハンドルを提供することができる可能性があり、スナップショットの形式に特異的な本来の形式で、性能最適化ストアに指示することができ、これは、基底の記憶機器に依存する。いくつかの実施形態において、この形式は、どのブロックが変化したかを示す１つ以上のＬＵＮビットマップと組み合わされたアプリケーションデータであり得、他の実施形態では、これは、特定のエクステントであり得る。データ移行に使用される形式は、したがって、ビットマップまたはエクステントを使用して、２つのスナップショット間のデルタまたは差分のみを移行することができるものである。
【０１５０】
アプリケーションのバージョン番号等のメタデータもまた、スナップショットとともに各アプリケーションに関して記憶され得る。ＳＬＡポリシーが実行されると、アプリケーションメタデータが読み出され、ポリシーに使用される。このメタデータは、データオブジェクトとともに記憶される。各ＳＬＡについて、アプリケーションメタデータは、軽量スナップショット操作の際に１度読み出されるのみであり、そのときに発生するキャッシュのフラッシュ等の準備操作は、軽量スナップショット操作の際に１度行われるのみであるが、そのメタデータとともに、アプリケーションデータのこのコピーが、複数のデータ管理機能に使用され得る。
【０１５１】
サービスポリシーエンジン
図９は、サービスポリシーエンジン４０６を図示する。サービスポリシーエンジンは、サービスポリシースケジューラ９０２を含み、これは、ユーザによって構成されるサービスレベル合意のすべてを調べ、サービスレベル合意を満たすスケジューリング決定を行う。これは、情報をキャプチャし、それを長期間保持するために、いくつかの実施形態において、構成されたサービスレベル合意が保持及び更新されるＳＬＡストア９０４；論理記憶プール名称と実際の記憶プールとの間のマッピングを提供するリソースプロファイルストア９０６；情報が、期限が切れていない種々のプール内への作成が成功した以前のコピーに関して分類される、保護カタログストア９０８；ならびに、集中型履歴ストア９１０を含む、複数のデータストアに頼る。
【０１５２】
履歴ストア９１０は、タイムスタンプ、種々の記憶プール内の各アプリケーションの以前のコピーの順序及び階層を含む、過去のアクティビティに関する履歴情報が、すべてのデータ管理アプリケーションの使用のために保存されるところである。例えば、午後１時に開始し、午後９時に失効するようにスケジュールされる、一次データストアから容量最適化データストアへのスナップショットコピーは、午前１１時及び午後１２時に行われた同じソース及びターゲットのスナップショットについての関連オブジェクトデータもまた含む、時間的データストア内の履歴ストア９１０に記録される。
【０１５３】
これらのストアは、サービスポリシーエンジンによって管理される。例えば、ユーザが、管理ワークステーションを通じて、サービスレベル合意を作成すると、またはその中のポリシーのうちの１つを修正すると、この新しいＳＬＡをそのストアに保持し、ＳＬＡによって指定されるようにコピーをスケジューリングすることによってこの修正に反応するのは、サービスポリシーエンジンである。同様に、サービスポリシーエンジンが、記憶プールにアプリケーションの新しいコピーをもたらすデータ移動ジョブを無事に完了させると、記憶ポリシーエンジンは、履歴ストアを更新し、結果としてこのコピーが、将来的な決定に組み込まれるようになる。
【０１５４】
サービスポリシーエンジンによって使用される種々のストアの好ましい実施形態は、サービスポリシーエンジンに近接した関係データベース管理システム内のテーブルの形態である。これは、ストアに問い合わせし、それを更新するときに一貫したトランザクション動作を確実にし、相互依存データの取り出しにおける柔軟性を可能にする。
【０１５５】
サービスポリシースケジューラ９０２のスケジューリングアルゴリズムを、図１０に図示する。サービスポリシースケジューラが、１つの記憶プールから別の記憶プールに、アプリケーションデータのコピーを作成する必要があると決定すると、それは、データ移動リクエスタ及びモニタのタスクを開始する９１２。これらのタスクは、再発生するタスクではなく、それらが完了したときに終結する。サービスレベルポリシーが指定される方式に応じて、複数のこれらのリクエスタが、同時に操作可能であり得る。
【０１５６】
サービスポリシースケジューラは、どの追加タスクに取り組むかを決定する際、サービスレベル合意の優先順位を考慮する。例えば、１つのサービスレベル合意は、ミッションクリティカルなアプリケーションの保護を指定しているために高い優先順位を有し、一方で別のＳＬＡは、試験データベースの保護を指定しているために、低い優先順位を有する場合、サービスポリシーエンジンは、ミッションクリティカルなアプリケーションの保護のみを実行することを選択し得、低い優先順位のアプリケーションの保護を延期するか、または完全に省略し得る。これは、サービスポリシーエンジンが、より高い優先順位のＳＬＡをより低い優先順位のＳＬＡよりも前にスケジューリングすることによって達成される。好ましい実施形態において、そのような状況では、監査の目的で、サービスポリシーエンジンはまた、管理ワークステーションへの通知イベントをトリガする。
【０１５７】
ポリシースケジューリングアルゴリズム
図１０は、ポリシースケジュールエンジンのフローチャートを図示する。ポリシースケジュールエンジンは、定義されたすべてのＳＬＡを継続的に繰り返す。ＳＬＡのすべての最後に到達すると、短い時間、例えば、１０秒間スリープし、再びＳＬＡの確認を再開する。各ＳＬＡには、１つのアプリケーションについての完全なデータ保護ビジネス要件が含まれ、したがって、ＳＬＡのすべては、アプリケーションのすべてを表す。
【０１５８】
各ＳＬＡについて、スケジュールエンジンは、同じソースプール及び目的地プールを有するサービスレベルポリシーのすべてを一緒に収集し１００４、プロセスは１０００で記載され、１００２においてＳＬＡセット内のＳＬＡのへと反復される。総合すると、サービスレベルポリシーのこのサブセットは、ソース記憶プールからその特定の目的地記憶プールへのコピーに関する要件のすべてを表す。
【０１５９】
サービスレベルポリシーのこのサブセットのうち、サービスポリシースケジューラは、その日に適用されないか、またはそれらの操作時間外であるポリシーを破棄する。残っているポリシー中で、最も短い頻度を有するポリシーを見出し１００６、履歴データ及び履歴ストア９１０に基づいて、次の１００８で実行される必要のある最も長い保持時間を有するものを見出す。
【０１６０】
次に、新しいコピーの期限はまだであるため、コピーが既に進行中であるため、またはコピーする新しいデータが存在しないため、現時点でアプリケーションデータの新しいコピーを作製することを無視する一連のチェック１０１０〜１０１４が存在する。これらの条件のうちのいずれかが当てはまる場合、サービスポリシースケジューラは、ソース及び目的地プールの次の組み合わせに進む１００４。これらの条件がいずれも当てはまらない場合、新しいコピーが開始される。コピーは、このＳＬＡ内の対応するサービスレベルポリシーに指定されるように実行される１０１６。
【０１６１】
次に、スケジューラは、同じサービスレベル合意の次のソース及び目的地プールの組み合わせに進む１０１８。異なる組み合わせがそれ以上に存在しない場合、スケジューラは、次のサービスレベル合意に進む１０２０。
【０１６２】
サービスポリシースケジューラは、すべてのサービスレベル合意のすべてのソース／目的地プールの組み合わせを経た後、短期間一時停止し、その後でサイクルを再開する。
【０１６３】
スナップショットストア及びバックアップストアを有する、２つのポリシーのみが定義された単純な例示的システムは、以下のようにサービスポリシースケジューラとやりとりする。１つが「１時間に１回バックアップし、バックアップを４時間保持する」と示し、もう１つが「２時間に１回バックアップし、バックアップを８時間保持する」と示す、２つのポリシーを考慮すると、結果は、毎時間１つのスナップショットを取り、このスナップショットは、それぞれがバックアップストアにコピーされるが、スナップショットストア及びバックアップストアの両方で、異なる時間の間保持される。「２時間に１回のバックアップ」ポリシーは、システムアドミニストレータによって午後１２時に実施されるようにスケジュールされる。
【０１６４】
午後４時に、サービスポリシースケジューラがステップ１０００での操作を開始すると、ステップ１００２では２つのポリシーを発見する。（午後１２時から２時間の倍数が経過しているため、両方のポリシーが適用される）。ステップ１００４では１つのソース及び目的地プールの組み合わせしか存在しない。ステップ１００６では２つの頻度が存在し、システムは、２時間の頻度よりも短いため、１時間の頻度を選択する。ステップ１００８では異なる保持時間を有する２つの操作が存在し、システムは、より長い保持時間値を有するため、８時間の保持時間を有する操作を選択する。４時間の要件を満たすために１つのコピーが作製され、８時間の要件を満たす別のコピーが作製される代わりに、２つの要件は、より長い８時間の要件に融合され、単一のスナップショットコピー操作によって満たされる。システムは、ステップ１０１０がコピーの期限であることを判定し、履歴ストア９１０で関連オブジェクトをチェックし、コピーが既にターゲット（ステップ９１２で）及びソース（ステップ９１４で）において作製されているかどうかを判定する。これらのチェックを通過すると、システムは、ステップ９１６でコピーを開始し、そのプロセスにおいて、スナップショットが作製され、スナップショットストアに保存されるようにトリガする。スナップショットは、次いで、スナップショットストアからバックアップストアにコピーされる。システムは、次いで、スリープに進み１０２２、１０秒間等の短期間の後に再度起動する。結果は、バックアップストアにおけるコピー及びスナップショットストアにおけるコピーであり、ここで、偶数時間のスナップショットは８時間持続し、奇数時間のスナップショットは４時間持続する。バックアップストア及びスナップショットストアの偶数時間のスナップショットには、いずれも、８時間の保持期間がタグされ、その時間になると別のプロセスによってシステムから自動で消去される。
【０１６５】
両方のポリシーが適用されるとはいえ、いずれのポリシーも、単一のコピーによって満たされるため、２時に２つのスナップショットを取るか、または２つのバックアップコピーを作製する理由はないことに留意されたい。これらのスナップショットを組み合わせ、融合させることは、結果として、複数の別個のポリシーの柔軟性を保持しながら、不必要な操作を減少させる。同様に、異なる保持時間を有する同じターゲットに関して同時に２つのポリシーが有効となることが、有用であり得る。所与の例では、２時間毎のコピーよりもより多くの１時間毎のコピーが保持され、結果として現在により近い時点での復元のためのさらなる精度をもたらす。例えば、以前のシステムでは、午後７時３０分に、損傷が午後の早い時間から発見された場合、バックアップは、過去４時間の各時間、午後４時、５時、６時、７時が利用可能となる。同様に、さらに２つのバックアップが、午後２時から午後１２時まで保持されているだろう。
【０１６６】
コンテンツアドレス可能ストア
図１１は、コンテンツアドレス可能プロバイダ５１０のコンテンツアドレスストアを実装するモジュールのブロック図である。
【０１６７】
コンテンツアドレス可能ストア５１０の実装は、前述のスナップショットを通じて実装される性能最適化プールの場合のように、コピーインまたはコピーアウトよりも容量に関して最適化された記憶リソースプールを提供し、したがって、典型的に、オフラインバックアップ、複製、及びリモートバックアップに使用される。コンテンツアドレス可能記憶装置は、１度のみ異なるオブジェクトの共通のサブセットを記憶する手段を提供し、ここで、それらの共有のサブセットは、サイズが様々であり得るが、典型的には４キロバイト程度に小さいものであり得る。コンテンツアドレス可能ストアの記憶オーバーヘッドは、スナップショットストアと比較して低いが、アクセス時間は、通常、より高い。一般に、コンテンツアドレス可能ストア内のオブジェクトは、それらのコンテンツを大きな割合で共有し得るにも関わらず、互いに固有の関係性を持たないが、この実装では、履歴の関係性もまた維持され、これが、記述される種々の最適化を可能にするものである。これは、スナップショットが、固有に連鎖を形成し、それぞれが以前のスナップショットまたはベースラインコピーからのデルタだけを記憶する、スナップショットストアとは対照的である。具体的には、コンテンツアドレス可能ストアは、単一のオブジェクト内で複数回繰り返されるデータサブセットの１つのコピーのみを記憶し、一方でスナップショットに基づくストアは、あらゆるオブジェクトの少なくとも１つの完全なコピーを記憶する。
【０１６８】
コンテンツアドレス可能ストア５１０は、同じプロセスでか、またはＴＣＰ等のローカルトランスポートを介して通信する別個のプロセスでのいずれかで、プールマネージャと同じシステムで実行するソフトウェアモジュールである。この実施形態において、コンテンツアドレス可能ストアモジュールは、異なる構成要素からのソフトウェア障害の影響を最小化することができるように、別個のプロセスで起動する。
【０１６９】
このモジュールの目的は、高度に速度効率的な方式でコンテンツを重複排除すること（すなわち、１つまたは複数のデータオブジェクト内で繰り返されるコンテンツが１度だけ記憶されることを確実にすること）によって、データ記憶オブジェクト４０３の記憶を可能にすることができる。
【０１７０】
コンテンツアドレス可能ストアモジュールは、プログラムに基づくＡＰＩを介してプールマネージャにサービスを提供する。これらのサービスには、以下のものが含まれる。
【０１７１】
マッピングをハンドルするためのオブジェクト１１０２：オブジェクトは、ＡＰＩを介してデータをストアに書き込むことによって作成され得、データが完全に書き込まれると、ＡＰＩは、オブジェクトのコンテンツによって決定されるオブジェクトハンドルを返却する。対照的に、データは、ハンドルを提供することによってオブジェクト内のオフセットからバイトストリームとして読み出され得る。ハンドルがどのように構築されるかについての詳細は、図１２の説明と併せて説明される。
【０１７２】
時間的ツリー管理１１０４は、記憶されたデータオブジェクト間の親／子関係を追跡する。データオブジェクトがストア５１０に書き込まれると、ＡＰＩは、それが、既にストア内にある親オブジェクトに対する子として関連付けられることを可能にする。これは、コンテンツアドレス可能ストアに、子オブジェクトが親の変化形であることを示す。単一の親は、異なる変化形を有する複数の子を有し得、例えば、アプリケーションデータが、ある期間定期的にストアに保存された場合などには、初期のコピーが復元され、後続の変化形のための新しい開始点として使用される。時間的ツリー管理操作及びデータモデルは、以下により詳細に説明される。
【０１７３】
差分エンジン１１０６は、ストア内の２つの任意のオブジェクト間の差分領域の概要を生成し得る。差分付け操作は、比較される２つのオブジェクトのハンドルを指定するＡＰＩを介して呼び出され、差分概要の形態は、連続的な差分セクションのオフセット及びサイズを有するコールバックのシーケンスである。差分は、並行して、２つのハッシュ化オブジェクト表示を比較することによって計算される。
【０１７４】
ガベージコレクタ１１０８は、ストアを分析して、いずれのオブジェクトハンドルによっても参照されない保存データを見出し、このデータに与えられた記憶空間の返還要求を行うサービスである。多くのデータが複数のオブジェクトハンドルによって参照されること、すなわち、データがデータオブジェクト間で共有されることは、コンテンツアドレス可能ストアの性質であり、一部のデータが単一のオブジェクトハンドルによって参照されるが、どのオブジェクトハンドルによっても参照されない（オブジェクトハンドルが、コンテンツアドレス可能システムから消去されている場合のように）データは、新しいデータで安全に上書きされ得る。
【０１７５】
オブジェクトレプリケータ１１１０は、２つの異なるコンテンツアドレス可能ストア間でデータオブジェクトを複写するためのサービスである。複数のコンテンツアドレス可能ストアを使用して、オフラインバックアップまたはリモートバックアップ等の追加のビジネス要件を満たすことができる。
【０１７６】
これらのサービスは、図１１に示される機能モジュールを使用して実装される。データハッシュモジュール１１１２は、固定のサイズ上限まで、データチャンクに関する固定長キーを生成する。例えば、この実施形態において、ハッシュジェネレータがキーを作製するチャンクの最大サイズは、６４ＫｉＢである。固定長キーは、使用されたハッシュスキームを示すようにタグ付けされたハッシュか、または損失を伴わないアルゴリズム符号化のうちのいずれかである。この実施形態で使用されるハッシュスキームは、ＳＨＡ−１であり、これは、分配が均一であり、ハッシュ衝突の可能性がほぼゼロであり、衝突を検出し、それに対処するために設備をこのシステムに組み込む必要がない、安全な暗号的ハッシュを生成する。
【０１７７】
データハンドルキャッシュ１１１４は、データの一時的な記憶及びハンドル対データのマッピングを提供する、メモリ内のデータベースを管理するソフトウェアモジュールである。
【０１７８】
永続的ハンドル管理インデックス１１０４は、ＣＡＨ対データのマッピングの信頼性のある永続的データベースである。この実施形態において、これは、ハッシュジェネレータからのハッシュを、このハッシュのデータを含む永続的データストア１１１８内のページにマッピングする、Ｂツリーとして実装される。完全なＢツリーは、ある時点でメモリ内に保有されないため、効率のために、この実施形態はまた、メモリ内のブルームフィルタを使用して、存在しないことがわかっているハッシュの高価なＢツリー検索を回避する。
【０１７９】
永続的データ記憶モジュール１１１８は、長期永続的記憶装置にデータ及びハンドルを記憶し、データが記憶されている場所を示すトークンを返却する。ハンドル／トークン対は、後で、データの取り出しに使用される。データは、永続的記憶装置に書き込まれているため、それは、この実施形態ではｚｌｉｂを使用して実装されている、損失のないデータ圧縮１１２０の層と、この実施形態では有効でない任意選択的な可逆的暗号化１１２２の層を通過する。
【０１８０】
例えば、データオブジェクトをコンテンツアドレス可能ストアにコピーすることは、オブジェクト／ハンドルマッパーサービスによって提供される操作であり、これは、入来するオブジェクトが記憶され、ハンドルがリクエスタに返却されるためである。オブジェクト／ハンドルマッパーは、入来するオブジェクトを読み取り、ハッシュがデータハッシュジェネレータによって生成されるように要求し、データを永続的データ記憶装置に記憶し、ハンドルを永続的ハンドル管理インデックスに記憶する。データハンドルキャッシュは、ハンドルに関するデータの将来的な早期検索のために更新され続ける。永続的データ記憶装置に記憶されたデータは、ディスクに書き込まれる前に圧縮され、（任意で）暗号化される。典型的に、データオブジェクトにおいてコピーを行う要求は、オブジェクトに関する履歴の記録を作製するために時間的ツリー管理サービスも呼び出し、これはまた、永続的データ記憶装置を介して継続される。
【０１８１】
別の例として、そのハンドルが与えられたコンテンツアドレス可能ストアからデータオブジェクトをコピーすることは、オブジェクト／ハンドルマッパーサービスによって提供される別の操作である。ハンドルは、対応するデータの位置を特定するために、データハンドルキャッシュ内で検索され、データが、キャッシュ内で紛失している場合、永続的インデックスが使用され、データの位置がディスク上で特定されると、それが、永続的データ記憶モジュール（これが、ディスクデータを復号化し、解凍する）によって取り出され、再構築されて、リクエスタに返却される。
【０１８２】
コンテンツアドレス可能ストアハンドル
図１２は、コンテンツアドレス指定されたオブジェクトのハンドルがどのように生成されるかを示す。データオブジェクトマネージャは、コンテンツアドレス可能ハンドルを有するすべてのコンテンツアドレス可能オブジェクトを参照する。このハンドルは、３つの部から作製されている。第１の部１２０１は、ハンドルが直接示す基底のデータオブジェクトのサイズである。第２の部１２０２は、それが示すオブジェクトの深度である。第３の１２０３は、それが示すオブジェクトのハッシュである。フィールド１２０３は、任意で、ハッシュが基底のデータの損失を伴わない符号化であることを示すタグを含む。このタグは、アルゴリズム符号化として使用されるデータのランレングス符号化（ＲＬＥ）の形態（データチャンクが、十分に短いＲＬＥとして完全に表され得る場合に）等、使用される符号化スキームを示す。基底のデータオブジェクトが、損失を伴わない符号化として表すには大きすぎる場合、ハッシュからポインタへのマッピングまたはデータへの参照は、永続的ハンドル管理インデックス１１０４に別個に記憶される。
【０１８３】
コンテンツアドレス可能オブジェクトに関するデータは、チャンク１２０４に分割される。各チャンクのサイズは、１つのコンテンツアドレス可能ハンドル１２０５によってアドレス可能なはずである。データは、データハッシュモジュール１１０２によってハッシュされ、チャンクのハッシュを使用してハンドルが作製される。オブジェクトのデータが１つのチャンクに収まる場合、作成されたハンドルが、オブジェクトの最終的なハンドルである。そうでない場合、ハンドル自体が、一緒にチャンク１２０６に分類され、ハッシュが、各ハンドル群に対して生成される。ハンドルのこの分類は、生成されるハンドル１２０８が１つだけになるまで継続し１２０７、これが、オブジェクトのハンドルとなる。
【０１８４】
オブジェクトが、コンテンツハンドルから再構築される（記憶リソースプールのコピーアウト操作）とき、上位レベルのコンテンツハンドルの参照先を取得して、次のレベルのコンテンツハンドルのリストを得る。深度０のハンドルが得られるまでコンテンツハンドルのさらなるリストを得るために、今度はこれらの参照先が取得される。これらは、ハンドル管理インデックスもしくはキャッシュ内のハンドルを検索することによって、または（ランレングス符号化等のアルゴリズムハッシュの場合には）確定的に全コンテンツに拡張することによってのいずれかで、データに拡張される。
【０１８５】
時間的ツリー管理
図１３は、コンテンツアドレス可能ストア内に記憶されたデータオブジェクトに関して作成される、時間的ツリーの関係を図示する。この特定のデータ構造は、コンテンツアドレス可能ストア内でのみ用いられる。時間的ツリー管理モジュールは、永続的ストア内に、各コンテンツアドレス指定されたデータオブジェクトを親（これは、ヌルであり得、一連のリビジョンの最初のものを示す）と関連付けるデータ構造１３０２を維持する。ツリーの個々のノードは、単一のハッシュ値を含む。このハッシュ値は、ハッシュが深度０のハッシュである場合はデータのチャンクを参照するか、またはハッシュが深度１またはそれ以上のハッシュである場合は他のハッシュのリストを参照する。ハッシュ値にマッピングされた参照は、永続的ハンドル管理インデックス１１０４内に含まれる。いくつかの実施形態において、ツリーのエッジは、重さまたは長さを有し得、これらは、近傍を見出すためのアルゴリズムで使用され得る。
【０１８６】
これは、標準的なツリーデータ構造であり、モジュールは、標準的な操作の動作をサポートする、具体的には：１３１０追加：親の下にリーフを追加することであり、これは、初期状態１３０２と追加後の状態１３０４との間としてツリーに変化をもたらす；ならびに１３１２除去：ノードを除去すること（及び、その子をその親に再び親子関係付けること）であり、これは、追加後の状態１３０４と除去後の状態１３０６との間としてツリーに変化をもたらす。
【０１８７】
「追加」操作は、オブジェクトが外部プールからＣＡＳにコピーインされる場合に使用され得る。コピーインが、データバックアップに最適な手段によるものである場合、またはオブジェクトが異なるＣＡＳプールを起源とする場合、プレディセッサ（ｐｒｅｄｅｃｅｓｓｏｒ）オブジェクトが指定されることが要求され、追加操作は、このプレディセッサ／サクセッサ（ｓｕｃｃｅｓｓｏｒ）の関係を記録するために呼び出される。
【０１８８】
「除去」操作は、ポリシーマネージャがオブジェクトの保持期間の期限が切れたと判定した場合に、オブジェクトマネージャによって呼び出される。これは、時間的ツリー内にそれを参照するオブジェクトを有さないＣＡＳに記憶されたデータを導き得、したがって、後続のガベージコレクションパスは、そのデータのために記憶空間を再利用が可能であるとして解放することができる。
【０１８９】
単一のプレディセッサが複数のサクセッサまたは子ノードを有することが可能であることに留意されたい。例えば、これは、オブジェクトが、元々Ｔ１時点で作成され、Ｔ２時点で修正され、修正形が、復元操作によって元に戻され、後続の修正形が、Ｔ３時点で作成された場合に、生じ得る。この例において、Ｔ１は、状態Ｔ２及び状態Ｔ３という２つの子を有する。
【０１９０】
異なるＣＡＳプールを使用して、リモート位置において障害復旧を提供すること等、異なるビジネス目標を達成することができる。１つのＣＡＳから別のＣＡＳにコピーする際、コピーは、ターゲットＣＡＳの本来の重複排除機能を利用するために、ハッシュ及びオフセットとして送信され得る。任意の新しいハッシュによって示される基底のデータもまた、必要に応じて送信される。
【０１９１】
時間的ツリー構造は、種々のサービスの実装の一部として読み出されるか、ナビゲートされる。
・ガベージコレクションは、以下に記載されるように、「マーク」段階の費用を低減させるために、ツリーをナビゲートする
・異なるＣＡＳプールへの複製は、既に他のＣＡＳプールに移行されていることも既知である時間的ツリー内の近傍セットを見出し、それによって、小さな差分セットのみを追加で移行することが必要となる
・データ復元に最適な手段は、時間的ツリーを使用して、復元操作の基礎として使用することができるプレディセッサを見出す。ＣＡＳの時間的ツリーデータ構造において、子は、例えば、アーカイブポリシーによって指示される、後続のバージョンである。複数の子が、同じ親ノードでサポートされ、この事例は、親ノードが変更され、復元の基礎として使用され、その後で再度変更される場合に生じ得る。
【０１９２】
ＣＡＳ差分エンジン
ＣＡＳ差分エンジン１１０６は、図１１及び１２にあるように、ハッシュ値またはハンドルによって特定される２つのオブジェクトを比較し、オブジェクトデータが異なることがわかっているオブジェクト内のオフセット及びエクステントのシーケンスを生成する。このシーケンスは、図１２のハッシュデータ構造において並行して２つのオブジェクトツリーをトラバースすることによって達成される。ツリートラバーサルは、標準的な深度または幅優先トラバーサルである。トラバーサル中に、現在の深度のハッシュが比較される。ノードのハッシュが、両側間で同一である場合、ツリーをさらに降下する必要はなく、そのため、トラバーサルは停止され得る。ノードのハッシュが同一でない場合、トラバーサルは、次の最も低いレベルのツリーへの降下を継続する。トラバーサルが、その対応物に同一でない深度０ハッシュに達すると、非同一のデータが発生した比較されているデータオブジェクトへの絶対オフセットが、データ長とともに、出力シーケンスに排出される。一方のオブジェクトのサイズがもう一方よりも小さい場合、そのトラバーサルは、より早期に完了し、他方のトラバーサルで遭遇するすべての後続のオフセットは、差分として排出される。
【０１９３】
差分付けによるガベージコレクション
図１１のもとに示されるように、ガベージコレクタは、特定のＣＡＳストアを分析して、ＣＡＳストア時間的データ構造内のいずれのオブジェクトハンドルによっても参照されない保存データを見出し、このデータに与えられた記憶空間の返還要求を行う、サービスである。ガベージコレクションは、標準的な「マーク及びスイープ」のアプローチを使用する。「マーク」段階は、非常に高価であり得るため、マーク段階に使用されるアルゴリズムが、同じデータが何度も参照され得るとしてもそれを複数回マークすることを最小化させるように試みるが、しかしながら、マーク段階を完了させる必要があり、スイープ段階後にマークされていないデータは後で新しいデータによって上書きされ、結果としてストアからのデータ消失をもたらし得るため、マークされないまま残る参照データがないことを確実にする。
【０１９４】
参照データをマークするのに用いられるアルゴリズムは、ＣＡＳ内のオブジェクトが、図１３に示されるデータ構造を使用して時間的関係でグラフに配置されるという事実を使用する。これらのグラフのエッジを共有するオブジェクトは、それらのデータの小さなサブセットのみが異なる傾向にあり、オブジェクトがプレディセッサから作成されるときに出現する任意の新しいデータチャンクが、任意の２つの他のオブジェクト間に再度出現することは稀である。したがって、ガベージコレクションのマーク段階は、時間的グラフの各関連する構成要素をプロセスする。
【０１９５】
図１４は、ある特定の実施形態において時間的関係を使用するガベージコレクションの例である。矢印１４０２によって示される、時間的関係を有するデータ構造の深度優先の検索が行われる。ツリートラバーサルを開始する開始ノード１４０４を取る。ノード１４０４は、ツリーのルーツであり、どのオブジェクトも参照しない。ノード１４０６は、オブジェクト１のハッシュ値及びオブジェクト２のハッシュ値を示す、オブジェクトＨ１及びＨ２への参照を含む。ノード１４０６によって参照されるすべての深度０、深度１、及びより高位のデータオブジェクト、ここではＨ１及びＨ２が列挙され、参照されるとしてマークされる。
【０１９６】
次に、ノード１４０８がプロセスされる。これは、マークが行われているノード１４０６とエッジを共有するため、差分エンジンが１４０６によって参照されるオブジェクトと、１４０８によって参照されるオブジェクトとの間の差分に適用され、マークされていないオブジェクトに存在するが、マークされたオブジェクトには存在しない、深度０、深度１、及びより高位のハッシュのセットを得る。この図において、ノード１４０８には存在するが、ノード１４０６には存在しないハッシュは、Ｈ３であり、そのため、Ｈ３が参照されるとしてマークされる。このプロシージャは、すべてのエッジが網羅されるまで継続される。
【０１９７】
先行技術のアルゴリズム１４１８及び現在の実施形態１４２０によって生成される結果の比較は、ノード１４０８が先行技術のアルゴリズムによってプロセスされると、既に確認されたハッシュＨ１及びＨ２が、新しいハッシュＨ３とともに出力ストリームに排出されることを示す。現在の実施形態１４２０は、既に確認されたハッシュを出力ストリームに排出せず、新しいハッシュＨ３、Ｈ４、Ｈ５、Ｈ６、Ｈ７のみが、出力ストリームに排出され、対応して性能が改善される。この方法は、データが、１回を上回ってマークされないことを保証するものではないことに留意されたい。例えば、ハッシュ値Ｈ４が、ノード１４１６で独立して発生する場合、これは、独立して二回目のマークが行われるであろう。
【０１９８】
オブジェクトをＣＡＳにコピーする
別のプールからＣＡＳへのオブジェクトのコピーは、図１２にあるようにオブジェクトハンドルによって参照されるデータ構造を生成するために、図１１に記載されるソフトウェアモジュールを使用する。プロセスへの入力は、（ａ）深度０ハンドルを作製するのに適切にサイズ設定された指定のオフセットのデータチャンクのシーケンス、及び任意に（ｂ）同じオブジェクトの以前のバージョンである。黙示的に、新しいオブジェクトは、入力データが提供され、それ自体が以前のバージョンとは異なる場合を除き、以前のバージョンと同一となる。コピーイン操作のアルゴリズムは、図１５のフローチャートに図示される。
【０１９９】
以前のバージョン（ｂ）が提供される場合、シーケンス（ａ）は、（ｂ）からの変化の希薄なセットであり得る。オブジェクトがコピーされ、数カ所のみが以前のオブジェクトと異なることがわかっている場合、これは、コピーインされるデータの量を大幅に低減させ、したがって、必要とされる計算及びｉ／ｏアクティビティを低減させ得る。これは、例えば、オブジェクトが前述のデータバックアップに最適な手段によってコピーされる場合に当てはまる。
【０２００】
シーケンス（ａ）が、大部分がプレディセッサから変化していないセクションを含むとしても、プレディセッサ（ｂ）を特定することにより、コピーインプロシージャが、データが実際に変化したかに関する早期チェックを行うことを可能にし、したがって、ＣＡＳへの入力を提供するいくつかの他の記憶プールにおいて差分エンジンに可能となり得るものよりも精細なレベルの粒度で、データの重複を回避することを可能にする。
【０２０１】
黙示的には、そのため、新しいオブジェクトは、入力データが提供され、それ自体が以前のバージョンとは異なる場合を除き、以前のバージョンと同一となる。コピーイン操作のアルゴリズムは、図１５のフローチャートに図示される。
【０２０２】
プロセスは、時間的ストア内の任意にサイズ決定されたデータオブジェクトが提供されると、ステップ１５００で開始して、１５０２に進み、ここで、プレディセッサオブジェクト内のハッシュ値が提供される場合、それによって参照されるありとあらゆるハッシュ（深度０から最高レベルまで）が列挙される。これが、プレディセッサ内に既に含まれているデータを記憶することを回避するための迅速なチェックとして使用されることになる。
【０２０３】
ステップ１５０４において、プレディセッサが入力される場合、コンテンツアドレス可能データストアの時間的データ構造にそのクローンの参照を作成する。このクローンが更新されて、新しいオブジェクトとなる。したがって、新しいオブジェクトは、コピーするソースプールからＣＡＳにコピーされる差分によって修正されるプレディセッサのコピーとなる。
【０２０４】
ステップ１５０６、１５０８において、データムーバ５０２は、データをＣＡＳへと押し出す。このデータは、オブジェクト参照及びオフセットによって達成され、これは、データのターゲット位置である。新しいオブジェクトに移動される必要があるのはプレディセッサからの差分のみであるため、このデータは、わずかであり得る。この時点で、入来データは、それぞれが単一の深度０ハッシュによって参照され得るのに十分に小さくサイズ決定された深度０チャンクに分割される。
【０２０５】
ステップ１５１０において、データハッシュモジュールは、各深度０チャンクについてのハッシュを生成する。
【０２０６】
ステップ１５１２において、同じオフセットでプレディセッサハッシュを読み出す。データのハッシュが、同じオフセットでプレディセッサのハッシュと一致する場合、どのデータも記憶する必要がなく、深度１及びより高位のオブジェクトは、この深度０チャンクに関して更新される必要がない。この場合、データの次の深度０チャンクの許容に戻る。これにより、高価なグローバル検索を行う必要なく、時間的重複排除を達成する。ソースシステムは、理想的には、ＣＡＳ内に既に記憶されているデータからの差分のみを送信するとはいえ、このチェックは、ソースシステムが、異なるレベルの粒度で差分付けを行う場合、またはデータが変更されたとしてマークされるが、その以前に記憶された値に変更し戻されている場合に、必要であり得る。差分付けは、例えば、ソースシステムが、３２ＫｉＢ境界値でデルタを作成するスナップショットプールであり、ＣＡＳストアが、４ＫｉＢのチャンクにハッシュを作成する場合に、異なるレベルの粒度で行われ得る。
【０２０７】
一致が見出されない場合、データは、ハッシュされ、記憶され得る。データの書き込みは、提供されたオフセットで開始し、新しいデータがなくなったら終了する。データが記憶されると、ステップ１５１６で、オフセットが依然として同じ深度１のオブジェクト内に含まれている場合、深度１、深度２、及びすべてのより高位のオブジェクト１５１８が更新され、各レベルで新しいハッシュを生成し、深度０、深度１、及びすべてのより高位のオブジェクトが、ステップ１５１４でローカルキャッシュに記憶される。
【０２０８】
しかしながら、ステップ１５２０で、記憶されるデータの量が、深度１のチャンクサイズを上回り、オフセットが、新しい深度１オブジェクトに含まれる場合、現在の深度１は、ストアにフラッシュされる必要があり、これは、それが既にそこに記憶されることが決定している場合を除く。第１に、グローバルインデックス１１１６において検索する。そこでそれが見出された場合、深度１及びすべての関連する深度０オブジェクトをローカルキャッシュから除去し、新しいチャンク１５２２に進む。
【０２０９】
ステップ１５２４において、グローバルインデックスを訪問することを回避するための迅速なチェックとして、ローカルキャッシュ内の各深度０、深度１、及びより高位のオブジェクトを検索し、１５０２において確立されたローカルストア内のそのハッシュを検索する。一致するものをすべて破棄する。
【０２１０】
ステップ１５２６において、ローカルキャッシュ内の各深度０、深度１、及びより高位のオブジェクトに対して、グローバルインデックス１１１６内のそのハッシュを検索する。一致するものをすべて破棄する。これにより、データがグローバルに重複排除されることを確実にする。
【０２１１】
ステップ１５２８において、ローカルキャッシュから永続的ストアにすべての残りのコンテンツを記憶し、次いで、新しいチャンクのプロセスを継続する。
【０２１２】
ＣＡＳからオブジェクトを読み出すことは、より単純なプロセスであり、ＣＡＳの多くの実装で共通している。オブジェクトのハンドルは、グローバルインデックスによって永続的データオブジェクトにマッピングされ、必要とされるオフセットは、この永続的データ内から読み出される。いくつかの場合において、オブジェクトハンドルツリー内の複数の深度を通して再帰することが必要な場合がある。
【０２１３】
ＣＡＳオブジェクトネットワーク複製
図１１の下に記載されるように、レプリケータ１１１０は、２つの異なるコンテンツアドレス可能ストア間でデータオブジェクトを複写するサービスである。複製のプロセスは、１つのストアから読み出して、別のストアに書き込むことを通じて達成され得るが、このアーキテクチャは、ローカルまたはワイドエリアネットワーク等の帯域幅が制限される接続よりも効率的な複製を可能にする。
【０２１４】
各ＣＡＳストア上で動作する複製システムは、図１３に記載される時間的関係構造とともに、上述の差分エンジンサービスを使用し、ＣＡＳストアによって使用される時間的データ構造内に、オブジェクト毎に、どのリモートストアにオブジェクトが複製されているかについての記録を記憶する。これは、ある特定のデータストアにおけるオブジェクトの存在に関する決定的な認識を提供する。
【０２１５】
時間的データ構造を使用することにより、システムが、どのオブジェクトがどのデータストアに存在するかを決定することを可能にする。この情報は、データムーバ及び差分エンジンによって、ターゲットデータストアを最新にするためのコピー操作中に、ネットワーク上で送信されるデータの最小のサブセットを決定するために使用される。例えば、データオブジェクトＯが、Ｔ３時点でボストンにあるサーバからシアトルにあるリモートサーバにコピーされた場合、保護カタログストア９０８は、Ｔ３時点のオブジェクトＯがボストン及びシアトルの両方に存在することを記憶する。Ｔ５時点で、ボストンからシアトルへの後続のコピー中に、時間的データ構造は、ボストンにあるソースサーバでの差分付けに使用されるはずの、シアトルにあるオブジェクトＯの以前の状態を判定するように構築される。ボストンのサーバは、Ｔ５とＴ３との差分を取得し、その差分をシアトルのサーバに送信する。
【０２１６】
オブジェクトＡを複製するプロセスが、次に続き、既にターゲットストアに複製されており、ローカルストア内のＡの近傍であるとして記録されているオブジェクトＡ０を特定する。そのようなオブジェクトＡ０が存在しない場合、Ａをリモートストアに送信し、それを送信されたとしてローカルに記録する。ローカルオブジェクトをリモートストアに送信するために、本明細書で具現化される典型的な方法は、オブジェクト内のすべてのハッシュ及びデータチャンクのオフセットを送信し、どのハッシュがリモートで存在しないデータを表すかに関してリモートストアに問い合わせし、必要とされるデータをリモートストアに送信する（この実施形態では、データ及びハッシュの送信は、それらをＴＣＰデータストリームに組み込むことによって実装される）。
【０２１７】
対照的に、Ａ０が特定された場合、差分エンジンを起動して、Ａに存在するが、Ａ０には存在しないデータチャンクを特定する。これは、リモートストアに送信する必要があるデータの上位セットであるはずである。Ａに存在するがＡ０には存在しないチャンクのハッシュ及びオフセットを送信する。どのハッシュがリモートに存在しないデータを表すかに関してリモートストアに問い合わせ、必要とされるデータをリモートストアに送信する。
【０２１８】
サンプル配置アーキテクチャ
図１６は、データ管理仮想化（ＤＭＶ）システムの一実施形態におけるソフトウェア及びハードウェア構成要素を示す。システム内のソフトウェアは、３つの分散された構成要素として実行する。
【０２１９】
ホストエージェントソフトウェア１６０２ａ、１６０２ｂ、１６０２ｃは、上述のアプリケーション特化モジュールのうちのいくつかを実装する。これは、そのデータが管理されているものと同じサーバ１６１０ａ、１６１０ｂ、１６１０ｃで実行する。
【０２２０】
ＤＭＶサーバソフトウェア１６０４ａ、１６０４ｂは、本明細書に記載されるシステムの残りを実装する。これは、高度に利用可能な仮想化記憶サービスも提供する１セットのＬｉｎｕｘ（登録商標）サーバ１６１２、１６１４上で動作する。
【０２２１】
システムは、デスクトップまたはラップトップコンピュータ１６２０で動作する管理クライアントソフトウェア１６０６によって制御される。
【０２２２】
これらのソフトウェア構成要素は、ＩＰネットワーク１６２８上でネットワーク接続を介して互いと通信する。データ管理仮想化システムは、パブリックインターネット基幹等、ＩＰネットワーク上の一次サイト１６２２とデータ複製（ＤＲ）サイト１６２４との間で互いに通信する。
【０２２３】
一次及びＤＲサイトにおいてＤＭＶシステムは、ファイバーチャネルネットワーク１６２６を介して１つ以上のＳＡＮ記憶システム１６１６、１６１８にアクセスする。一次アプリケーションを起動しているサーバは、ＤＭＶシステムによって仮想化された記憶装置にアクセスし、ＤＭＶシステムは、ファイバーチャネルネットワーク上のファイバーチャネルを介して、またはＩＰネットワーク上のｉＳＣＳＩを介して記憶装置にアクセスする。リモートＤＲサイトにおいてＤＭＶシステムは、Ｌｉｎｕｘ（登録商標）サーバ１６２８上のＤＭＶサーバソフトウェア１６０４ｃの並列インスタンスを起動する。Ｌｉｎｕｘ（登録商標）サーバ１６２８はまた、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅａｒｖｉｃｅ  ＥＣ２インスタンスまたは他の同様のクラウドコンピューテーションリソースであり得る。
【０２２４】
図１７は、本発明のある特定の実施形態に従って、ある特定の要素が実装され得る、コンピュータ化されたシステムの様々な構成要素を示す図である。示される論理モジュールは、揮発性メモリ１７０２、ハードドライブ等の永続的記憶デバイス１７０８、プロセッサ１７０３、及びネットワークインターフェース１７０４を含む、ホストコンピュータ１７０１上に実装され得る。ネットワークインターフェースを使用して、システムコンピュータは、他の実施形態の中でも、ＳＡＮまたはファイバーチャネルデバイス上で記憶プール１７０５、１７０６とやりとりする。図１７は、システムコンピュータが、種々の記憶プールとは分かれているシステムを図示するが、記憶プールのうちのいくつかまたはすべてが、ホストコンピュータ内に収容され、ネットワークインターフェースの必要性を排除してもよい。プログラムプロセスは、図１７に示されるように、単一のホストで実行され得るか、または複数のホストに分配されてもよい。
【０２２５】
図１７に示されるホストコンピュータは、アドミニストラティブワークステーションとして機能し得るか、またはアプリケーション及びアプリケーション特化エージェント４０２を実装し得るか、またはデータ仮想化システム自体を含む、本明細書に記載されるありとあらゆる論理的モジュールを実装し得るか、または物理的媒体の記憶プールをシステムに提示するための記憶コントローラとして機能し得る。ワークステーションは、グラフィック表示デバイス１７０７、ならびにマウス１７０９及びキーボード１７１０等の入力デバイスに接続され得る。あるいは、アクティブなユーザのワークステーションには、ハンドヘルドデバイスが含まれ得る。
【０２２６】
本明細書全体を通じて、ソフトウェア構成要素を参照するが、ソフトウェア構成要素へのすべての参照は、ハードウェア上で動作するソフトウェアに適用されることが意図される。同様に、本明細書で参照されるオブジェクト及びデータ構造は、揮発性または不揮発性のいずれかのメモリに実際に記憶されるデータ構造に適用されることが意図される。同様に、サーバは、ソフトウェアに適用されることが意図され、エンジンは、ソフトウェアに適用されることが意図され、これらはすべて図１７に記載されるコンピュータシステム等のハードウェアで動作する。
【０２２７】
コピーの正確性保証のためのデータフィンガープリント
図１８は、本発明のある特定の実施形態に従って、仮想記憶プール内に記憶されたオブジェクトについてのデータフィンガープリントを生成するための方法を図示する。
【０２２８】
データフィンガープリントは、データオブジェクトがどのように記憶されるかにかかわらず、独立して生成され得る、データオブジェクトの短いバイナリダイジェストであり、同一のパラメータで同一の入力データに対して複数回生成される場合は同一である。フィンガープリントの有用な特性は、固定サイズであること、すべての記憶プール内のデータオブジェクトを生成するのが早いこと、及び異なるデータオブジェクトが同一のフィンガープリントを有する可能性が低いことである。
【０２２９】
データフィンガープリントは、チェックサムまたはハッシュとは異なる。例えば、フィンガープリントは、オブジェクト全体ではなくオブジェクトのサンプルに関してのみ取得される。データオブジェクトの小さい割合のバイナリダイジェストを取得することは、データオブジェクト全体のフィンガープリントを提供するのに十分である。データフィンガープリントは、データのごく一部における読み出し及び計算のみを必要とするため、このようなフィンガープリントは、チェックサムまたはハッシュと比較して、コンピュータ的に安価または効率的である。
【０２３０】
これらのデータフィンガープリントはまた、単一のデータオブジェクトが複数のフィンガープリントを有し得る点でも異なる。データオブジェクトのライフにわたって、複数のフィンガープリントが、データオブジェクトの代毎に１回、メタデータとしてオブジェクトとともに記憶される。複数のフィンガープリントは、データオブジェクトの複数のコピー及び代にわたって持続する。
【０２３１】
データフィンガープリントは、２つのオブジェクトを比較して、それらが同じデータオブジェクトであるかを決定するために、使用され得る。２つのオブジェクトのデータフィンガープリントが異なる場合、２つのオブジェクトは、決定的に、異なると言うことができる。チェックサムのように、データフィンガープリントは、したがって、データオブジェクトのコピーされたかまたは記憶されたバージョンの間のデータの整合性の測定または試験を提供するために使用され得る。同じデータフィンガープリントを有する２つのデータオブジェクトは、必ずしも同じオブジェクトではない場合がある。
【０２３２】
複数のフィンガープリントが、１つのオブジェクトから取得されるため、データフィンガープリントは、増加した信頼性で２つのオブジェクトを比較するために使用され得る。後続のリビジョンでのフィンガープリントの一致は、すべての以前のコピーが正確であったという信頼度を増加させる。フィンガープリントが一致しない場合、これは、このコピーまたは以前のコピーのいずれかが正確でないことを示す。コピーのそれぞれの次の代について、その代またはリビジョンの対応するフィンガープリントに対して新しいフィンガープリントが計算され、検証され得る。
【０２３３】
２つのデータオブジェクトが、それらの対応するデータフィンガープリントを比較することによって比較される場合、対応するフィンガープリントは、２つのデータオブジェクトが異なることを、確実性を有して結論付けることが可能である。しかしながら、対応するフィンガープリントが一致した場合、対応するデータオブジェクトが同一である必要があると結論付けることはできない。例えば、デジタル写真またはイメージデータを示す２つのデータオブジェクトを想定し、データフィンガープリントを取得することは、各イメージの一部分のチェックサムまたはバイナリダイジェストを取得することを含み得る。各イメージの単一の部分に基づいて２つのデータオブジェクトを比較することは、それらが同じイメージであることを必ずしも示すわけではない。しかしながら、２つのイメージの複数の部分が同一である場合、増加した信頼性で、２つのイメージが同じイメージであると結論付けることが可能である。
【０２３４】
データフィンガープリントの計算は、入力データオブジェクトのサブセットまたは部分を選択する、選択機能を必要とし得、これは、動的であり得る。任意のそのような機能が使用され、１つの具体的な例は、ある特定の実施形態と関連して以下に記載される。この機能は、データオブジェクトの全体にわたって展開されるデータオブジェクトの小さな部分を選択し得る。データの部分を選択するこの戦略は、大きなデータチャンクが１つの時点で修正されることが多い典型的な記憶ワークロードに有用であり得、データオブジェクト内で後半に分散された比較的多数の非連続的なデータの部分またはエクステントを選択することによって、選択機能は、データオブジェクトにおける大きな連続的な変更が検出され得る確率を増加させる。この機能は時間とともに変化し得るか、またはその出力を、種々の入力またはパラメータに基づいて行い得る。
【０２３５】
選択機能の選定は、理想的には、データオブジェクトのコンテンツの認識により行われるべきである。代によって変化する傾向にあるデータオブジェクトの部分は、フィンガープリントの計算に含まれるべきである。静的であるか、または類似のオブジェクトでは同一である傾向にあるデータオブジェクトの部分は、フィンガープリントに含まれないはずである。例えば、静的な傾向にあるディスクラベル及びパーティションテーブルは、通常、フィンガープリントに含まれないはずであり、これは、これらが同じオブジェクトの多数の代にわたって一致するためである。ファイルシステムを含むボリュームの末端は、未使用空間となることが多く、この領域は、フィンガープリントの計算に使用されるものではなく、これは、その差別値を増加させることなく、計算及びＩＯコストをフィンガープリントに追加することになるためである。
【０２３６】
選択機能によって選択されるサブセットの合計サイズが増加するにつれ、データフィンガープリントがデータに対するすべての変更をキャプチャする確率が、サブセットがデータオブジェクト全体に等しくなりこの時点で確率が１となるまで増加することは、明らかである。しかしながら、選択機能は、変化を検出する確率の増加という目標と、一貫して早いフィンガープリンティング時間を提供するという目標とのバランスを取ることができる。本開示のシステムは、複数のデータフィンガープリントが同じデータオブジェクトに対して取得されることを可能にするため、このトレードオフは、明示的に許容される。複数のフィンガープリントは、フィンガープリントの数が多くなるにつれ、データオブジェクト内のチェックされないバイト数がゼロに向かって減少するため、エラーチェックの確率の増加も同様に提供することができる。
【０２３７】
データフィンガープリンティング機能は、いくつかの実施形態において、以下のように動作し得る。データオブジェクト１８１０は、任意の仮想記憶プール内に記憶された任意のファイルであり、例えば、データ保護またはアーカイビングワークフローの一部として記憶されたディスクイメージである。スタート１８２０は、ファイル内のオフセットまたは位置を表す数である。ピリオド１８３０は、ファイル内のオフセット間の距離を表す数である。データサンプル１８４０は、データオブジェクト内からのデータのサブセットである。チャンクチェックサム１８５０は、ファイル内の特定のデータに適用される算術的チェックサム操作の結果である。データフィンガープリント１８６０は、データオブジェクト１８１０のコンテンツならびにパラメータスタート１８２０及びピリオド１８３０から確定的に導出される単一の数値である。他のパラメータ及び他のパラメータ的機能が、ある特定の実施形態で使用されてもよい。
【０２３８】
データサンプル１８４０は、この図では４ＫＢである、固定長のチャンクに分割される。各チャンクに関して、チャンクチェックサム１８５０が、データストリームについて計算され、ここで、チェックサムには、チャンク内のデータ及びチャンク内のデータのＳＨＡ−１ハッシュが含まれる。使用される１つのチェックサムアルゴリズムは、フレッチャー−３２法（ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｆｌｅｔｃｈｅｒ'ｓ＿ｃｈｅｃｋｓｕｍ）である。これらのチャンクチェックサムは、次いで、一緒にモジュロ２６４に追加され、チャンクのチェックサムの算術的合計は、データフィンガープリント１８６０であり、スタート及びピリオドによってパラメータ化される。複数のハッシュ値またはチェックサムを合わせて単一のハッシュ値にするための他の方法が、本発明のある特定の実施形態において企図され得る。単一のハッシュ値が、簡略化のためには好ましい。単一のハッシュ値が、どのデータサブセットがチャンクチェックサムの生成に使用されたかを示す必要はない。
【０２３９】
一実施形態において、データフィンガープリントは、データオブジェクトの対象のセクションに焦点を当てる他の機能を使用して行われ得、ここで、ある特定のセクションは、種々の手段を使用して、対象であると決定され得る。対象のセクションは、頻繁に変化すると判定されるか、または頻繁に変化する傾向にある、セクションであり得る。データオブジェクトのコンテンツまたはデータオブジェクトの部分の変化の頻度に関する先験的情報が使用され得る。例えば、システムが、データオブジェクトがディスクイメージであることを検出する場合、システムは、分割マップはほとんど変化しないため、ボリューム分割マップを無視し得る。別の例として、システムが、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ文書を記憶していること、及びその文書のヘッダが変化する可能性は低いことを認識している場合、それは、文書の本文及びテキスト領域を「対象」として指定し得、それらの領域をフィンガープリントすることを選択し得る。「対象」領域のフィンガープリンティングは、いくつかの実施形態において、データサンプルが、まず対象データ領域を特定し、次に対象データ領域のわずかなサブセットを生成するアルゴリズムを使用して、対象データ領域内でサンプルを取る領域を特定することによって選択される、図１８に類似の手段で行われ得る。
【０２４０】
好ましい実施形態において、記載されるフィンガープリンティングアルゴリズムは、非常に小さなオーバーヘッドを有し、したがって、フィンガープリンティングは、しばしば行われ得る。しかしながら、プールがオフラインテープを含む等の場合には、すべてのデータをフィンガープリンティングすることは、合理的なオーバーヘッドを有することができない。
【０２４１】
図１９は、本発明のある特定の実施形態に従って、データフィンガープリントがどのようにしてコピー操作における正確性の保証に使用されるかを図示する。
【０２４２】
オブジェクトマネージャ５０１に関して上述された操作に加えて、パラメータのセットを考慮してデータオブジェクトのフィンガープリントを生成する追加の操作が定義される（操作１９３０）。分類されるすべてのデータオブジェクトのフィンガープリンティングが行われ、このフィンガープリントは、すべての他のメタデータとともに記憶される。
【０２４３】
オブジェクトが分類されると、オブジェクトマネージャ５０１は、データオブジェクトのフィンガープリントの要求を各プールに行い得る。第１のフィンガープリントは、第１の記憶最適化プールまたはスナップショットプールで生成され、カタログストアに記憶される。データオブジェクトが軽量スナップショット操作を使用してまず性能最適化プール５０８に記憶された後、データ移動リクエスタ９１２は、フィンガープリントに関するパラメータセットを生成し、それらを使用して、オブジェクトマネージャ５０１からフィンガープリントを要求する（操作１９１０）。代わりに、オブジェクトマネージャは、性能最適化プールからフィンガープリントを要求する（操作１９４０）。性能最適化プールは、フィンガープリントを生成することができる。好ましい実施形態において、プールマネージャ５０４によって管理されるすべてのプールは、フィンガープリントを生成することができる。新しいフィンガープリントは、上述のオブジェクトに関する他のメタデータとともに保護カタログストア９０８に記憶される（操作１９３０）。
【０２４４】
容量最適化プールへのコピー（操作１９５０）等、任意の後続のコピー要求（操作１９１０）の後、フィンガープリントが、ターゲットオブジェクトに関してターゲットプールから要求される（操作１９３０、操作１９６０）。いったん生成されると、記憶されているフィンガープリントは、次いで、各後続のプールに送られ、ここで、新たに計算されたフィンガープリントが、次いで、コピーによるエラーが生じていないことを保証するために、記憶されているフィンガープリントに対して検証される。各後続のプールは、再度フィンガープリントを計算し、計算されたフィンガープリントを、記憶されているフィンガープリントに対して検証してもよい。
【０２４５】
フィンガープリントを生成するために、データオブジェクト１８１０は、スタート１８２０及びピリオド１８３０のパラメータによって定義される通常の間隔でサンプリングされる。各サンプルは、固定サイズであり、この図では６４ＫＢである。一実施形態において、パラメータピリオドは、それが、データオブジェクトのおおよそ１／１０００のサイズとなるように選定され、スタートは、擬似乱数ジェネレータに従って、０からピリオドの範囲で選定される。
【０２４６】
データオブジェクトの各新しいリビジョンまたは代について、スタートパラメータが修正され得、データオブジェクトの異なる領域のデータフィンガープリントをもたらす。オブジェクトのサイズは、しかしながら、ある特定の状況でのみ変化する。オブジェクトサイズが一定にとどまる場合、ピリオドも一定にとどまる。オブジェクトサイズが変化すると、ピリオドも同様に変化することになる。フィンガープリントの計算が、短時間及び／または一定時間で行われることを確実にするために、１／１０００（０．００１）または別のわずかなピリオドが選択される。データフィンガープリンティング操作に使用されるデータオブジェクトのサブセットを生成するために使用される関数に応じて、他のパラメータが、スタートパラメータの代わりに修正されてもよい。結果は、データフィンガープリントが、データオブジェクトの異なる領域から生成されることももたらすことであり、その結果、累積データフィンガープリントが、時間とともに増加するデータオブジェクトの比率のフィンガープリンティングをもたらす。
【０２４７】
複数の代のデータオブジェクトが、本開示の別の箇所に記載されるように、サービスレベル合意（ＳＬＡ）とのやりとりの結果として作成される。例えば、１時間に１回のスナップショット操作をスケジュールするＳＬＡを考えると、追加の代のデータオブジェクトが、１時間に１回作成されることになる。各追加の代について、新しいデータフィンガープリントが作成され、送信される。データオブジェクトが以前の代から現在の代で変化していない場合、データそのものは送信される必要はないが、わずかなデータフィンガープリンティング操作がデータオブジェクト全体にわたってすべての変化をキャプチャする確率をインクリメンタルに増加させるために、フィンガープリントは関係なくターゲットデータプールに送信される。
【０２４８】
異なる記憶プールは、異なる操作をサポートし得るため、フィンガープリント操作は、システム内の１つ以上の記憶プールによってサポートされ得る。プールは、プール要求ブローカ６０２等の操作マネージャによって仲介される。好ましい実施形態において、フィンガープリント操作は、すべてのプールによってサポートされる。
【０２４９】
フィンガープリンティングは、データオブジェクトのライフタイムの間、メタデータとともにとどまる。これにより、フィンガープリンティングが、復元の際、ならびにコピーまたはデータ記憶、アクセス、及び復旧の他の段階の際にも使用されることを可能にし、これが、データの観点から真のデータツーデータメタデータを提供する。復元の際のフィンガープリンティングは、以下のように行われる。復元操作がオブジェクトマネージャ５０１によって要求されると、フィンガープリント操作が、復元されたデータで行われ得る。このフィンガープリント操作は、復元操作の前または後に行われ得る。フィンガープリント操作を用いることによって、データオブジェクトの以前に記憶されたすべてのリビジョンが、上述のフィンガープリント検証方法に従って、データの現在の復元コピーを検証するために使用される。これは、典型的なＩ／Ｏ経路ＣＲＣ保護とは異なる手段で、インクリメンタル認識を利用する。
【０２５０】
上述のように、仮想記憶プール間のオブジェクトの各コピーは、インクリメンタルであり、ターゲットプールに存在しないことがわかっているソースオブジェクトからのデータのみを移行する。オブジェクトの１つの代におけるコピーの際の任意のエラーは、後続の代においても依然として存在することになるということが、これから導かれる。実際に、そのようなエラーが生成され得る。データフィンガープリントの使用は、異なる仮想記憶プール内のオブジェクトのコピーが、同じコンテンツを有するというチェックを提供する。
【０２５１】
データフィンガープリント方法の選定はまた、チェックにおける信頼性レベルを制御する：ピリオド（１８３０）がより小さく作成されるにつれ、フィンガープリントを生成する費用は上昇し、プールから読み出す必要のあるデータが多いほど、データがコピーエラーを有するにもかかわらず、一致するフィンガープリントを生成する確率は減少する。
【０２５２】
しかしながら、単一のオブジェクトの連続する代については、異なる値がパラメータスタート（１８２０）に使用され得る。これは、単一のオブジェクトの連続する代のコピーを繰り返すことより、任意のコピーエラーが最終的に捕捉され得ない確率が、漸近的にゼロまで減少することを確実にする。
【０２５３】
改善されたインクリメンタルコピー性能のためのハイブリッドシーディング
データ管理仮想化が使用される場合、プール間でデータオブジェクトのライフサイクル中に必要とされる異なる操作を分離し、それによって、各プールの最高品質のものを利用して、より優れた性能を提供することが可能となる。各プールが異なる特性を有するためにオブジェクトが複数の場所に記憶されるのと同様に、他の操作もまた、データが記憶されている各場所の最良の特性に基づき得る。以下に記載される方法では、所与のプールからデータを移行させるのが早い場合、そのプールは、データを移行するのに使用され得る。これは、そのプールの属性に基づいて、ある種の多重化を効果的に行っている。特定の状況に最良であるプールに基づいて、異なるプールが選択され得る。
【０２５４】
図２０は、移動されるオブジェクトのコピーが、１つを上回る仮想記憶プールに既に存在するいくつかの実施形態において、オブジェクトマネージャ及びデータムーバを使用するデータのバックアップ及び復元のための改善された方法を図示する。
【０２５５】
以下に記載されるプロシージャは、ハイブリッドシーディングと称され、これは、データが、複数の記憶プールにコピーまたは「シード」され、これが後でデータを別のプールにコピーするために使用されるという事実にちなんで名付けられている。移行される大量のデータが存在する場合に、大きな価値がある。しかしながら、この方法を行う費用は低く、そのためこの方法は、大小両方の移行に使用され得る。
【０２５６】
性能最適化プール２０１０は、プール内のオブジェクトからデータ及びメタデータを取り出すことが迅速であるという特性を有する仮想記憶プールであり、例えば、スナップショットプールである。
【０２５７】
容量最適化プール２０２０は、より遅いデータ及びメタデータの取り出し特徴を有する仮想記憶プール、例えば、コンテンツアドレス可能ストアである。ターゲットプール２０３０は、データをプール２０２０からコピーするためのターゲットである仮想記憶プール、例えば、リモートシステム上のコンテンツアドレス可能ストアである。各プールは、異なる性能特徴を有する：容量最適化プールは、差分を行うときに良好に機能し、性能最適化プールは、バルクデータを取り出す際に良好に機能する。特定のタスクに関して一方のプールがもう一方のプールよりも良好に機能する場合、それは、他のプールと比較してそのタスクに関して比較的高性能を有すると言うことができる。
【０２５８】
オブジェクトＡ２、２０４０は、記憶プール２０２０に既にコピーされているデータオブジェクトである。オブジェクトＡ３、２０５０は、記憶プール２０３０内のオブジェクトＡ２の以前のコピーである。オブジェクトＢ１  ２０６０は、記憶プール２０１０内のデータオブジェクトであり、これは、オブジェクトＡに対する変化の結果である、すなわち、これは、Ａのより新しい代またはバージョンである。オブジェクトＢ２、２０７０は、記憶プール２０２０内のオブジェクトＢ１の以前のコピーの結果である。オブジェクトＢ３、２０８０は、ターゲットプール２０３０内のオブジェクトＢ２のコピーの意図される結果である。
【０２５９】
オブジェクトマネージャ５０１（示されない）は、データオブジェクトを含むデータストアにデータオブジェクトをコピーするためのコマンドを指示するコントローラとして働く。この場合、容量最適化プール２０２０から容量最適化プール２０３０へのコピーであるオブジェクトＢ２、２０７０のコピー操作は、ハイブリッドシーティングを使用して最適化される。
【０２６０】
操作２１００において、差分エンジン６１４は、そこでオブジェクトに適用される差分をターゲットプール２０３０にコピーする前にオブジェクトＡ２とＢ２との間の差分を計算するように、オブジェクトマネージャによって命令される。これは、結果として、記憶プール２０２０が、記憶プール２０３０よりも高い性能の差分付けを行うことができ、したがって記憶プール２０２０が差分付け操作を行うべきであることを決定する、論理の実行をもたらす。この論理は、記憶プール２０２０内に存在し得るか、またはオブジェクトマネージャ５０１内に存在し得るか、または記憶装置仮想化システム内の他の場所に存在し得る。Ａ２は、記憶プール２０３０にＡ３としてコピーされているため、及びＢ２は、記憶プール２０１０からプール２０２０にＢ１としてコピーされているため、操作２１００の結果もまた、オブジェクトＡ３とＢ１とのデルタである。このデルタまたは差分のセットは、ある種の差分詳細として特徴付けられ得る。
【０２６１】
操作２２００において、Ａ３とＢ１とのデルタ（示されない）は、記憶プール２０２０において以前に計算された差分に従って、記憶プール２０１０から記憶プール２０３０にコピーされ、オブジェクトＡ３に適用されるように、オブジェクトマネージャによって要求される。コピーは、いくつかの実施形態において、記憶プール２０１０と記憶プール２０３０との間の直接接続によって行われ得る。この差分付け操作とバルクデータコピー操作との区別は、結果として、容量最適化プール２０２０において、性能最適化プール２０１０において可能であろうものよりも高性能な差分付け操作をもたらす。この区別はまた、コピーが容量最適化プール２０２０から行われた場合に可能であったであろうものよりも高性能な、性能最適化プール２０２０からのコピーをもたらす。
【０２６２】
ある特定の実施形態において、各記憶プールの論理は、単一の集中コントローラによって提供され得、この場合、本明細書に記載されるメッセージは、コントローラ内で生じるが、他の実施形態において、１つ以上の記憶モジュールの論理は、記憶プール自体のコンピューティングリソースで実行され得る。コピー操作は、データムーバによって、またはいくつかの実施形態においては容量最適化プール２０２０もしくは他のプールによって、要求され得る。
【０２６３】
これにより、Ａから変更されたすべてのデータのプール２０１０からプール２０３０へのコピーが完了し、結果として、オブジェクトＢ１、Ｂ２、及びＢ３は、プール２０１０、２０２０、及び２０３０間で同期される。
【０２６４】
この方法は、少なくとも以下の前提条件下で適用される：オブジェクトＡが、２つのプールに同一のコピー、すなわち、容量最適化プール２０２０にコピーＡ２（２０４０）、及び別のターゲット容量最適化プール２０３０にコピーＡ３（２０５０）を有する。これらは、例えば、記憶プール２０１０から、プール２０２０を介してプール２０３０に、以前にコピーした結果であり得る。オブジェクトＢは、Ａのより新しいバージョンであり、２つのプールに同一のコピー、第１の性能最適化プール２０１０にコピーＢ１及び容量最適化プール２０２０にコピーＢ２を有する。例えば、Ｂは、プール２０１０からプール２０２０にバックアップとして既にコピーされている。オブジェクトＢは、第１の容量最適化プール２０２０から、第２のターゲットプール２０３０にコピーされることになる。第１のプール２０１０からのデータの取り出し時間は、第２のプール２０２０からのものよりもさらに良好である。例えば、プール２０１０は、企業クラスの一次記憶装置に基づくが、プール２０２０は、アーカイビングまたはバックアップにより好適な低費用または長待ち時間デバイスである。
【０２６５】
この方法は、第２のプールから第３のプールへの全体的なオブジェクトコピー時間を改善する。前述のように、コピーは、プール２０２０内の差分付けエンジンを呼び出すことによって、Ａ２とＢ２との間の差分セットを提供するように実行される。具体的には、差分エンジンによって生成される差分は、オブジェクトの変化したセクションについての記述であり、データそのものではない。例えば、差分は、変化したデータオブジェクト内のエクステントを示す（オフセット、長さ）対のセットを含み得る。
【０２６６】
以前の実装においては、セクション間の差分は、オブジェクトＢ２及びオブジェクトＢ３からの読み出しによって生成され、次いで、差分をオブジェクトＢ３に適用して、必要とされるコピーを達成する。しかしながら、本明細書に例示される方法では、差分は、プール２０２０内の差分エンジンによって生成されるが、データは、プール２０１０内のオブジェクトから読み出される、すなわち、セクションが、オブジェクトＢ１及びＢ２から読み出され、次いで、オブジェクトＢ３に適用されて、必要とされるコピーを達成する。
【０２６７】
１つの前提条件が、プール２０１０からの読み出し時間がプール２０２０からのものよりも良好であることであったため、これは、改善されたコピー速度を得ることができる。
【０２６８】
類似の方法もまた、復元操作の際に使用され得る。復元を行う際、差分付け及びバルクデータコピーは分離され得、バルクコピー作業は、差分付け操作を行うストアからではなく、最速であるデータストアから行われ得る。
【０２６９】
別の一般的な意味では、このプールによる操作の分離は、操作のハイブリダイゼーションを構築する。異なる操作は、異なる記憶プールで行われ、これらの操作は、仮想化層によって組み合わされて単一の操作となる。さらなるそのようなアプリケーションが存在し得る。例えば、性能プールにおける２つのオブジェクトを比較することは、困難な作業であり得るが、比較操作は、同じデータオブジェクトを含む２つのコンテンツアドレス可能プールで行われ得る。
【０２７０】
ビジネス継続性の複製
図２１は、いくつかの実施形態による障害復旧及びビジネス継続のためのデータ複製の機序を図示する。
【０２７１】
複製及びフェイルオーバーは、ビジネス論理及びデータが、リモートサイトにおいてホットバックアップで維持される、十分に理解された操作である。フェイルオーバーは、操作をリモートサイトに移行させる。複製は、データをリモートサイトに移行させる。これによって、記憶プールのパイプラインがデータ管理仮想化と併せて使用され、移行されるデータの量を低減させる、新しい複製方法が、以下に記載される。この方法はまた、双方向の継続的重複排除化複製を可能にする。
【０２７２】
ビジネス継続及び障害復旧は、ＩＴ業界において十分に確立された業務である。操作のために、データが一次位置から二次位置に定期的に複製されることに依存する。二次位置における複製物は、一貫していなければならない、すなわち、それは、二次位置で二次アプリケーションサーバを起動するのに使用され得るように、一次位置のある時点におけるデータの状態を表す必要がある。一次アプリケーションサーバが利用不可能となった場合に、二次アプリケーションサーバが、データを非常に迅速に使用して起動され得るように、複製物は、素早くアクセスできる必要がある。また、複製物は、待ち時間が短い必要がある、すなわち、データが二次位置でアプリケーションサーバに利用可能となると、それは、典型的には分単位で測定される、可能な限り最近である一次サーバ上の時点の一致時点を表す必要がある。
【０２７３】
複製に加えて、同期バック（ｓｙｎｃ−ｂａｃｋ）操作もまたサポートされ得る。同期バックは、データが、バックアップ部位から主サイトに移行し戻されるときに行われる操作である。言い換えると、データコピー矢印の方向は、逆方向を指す。同期バックは、フェイルバックをサポート及び可能にし、これは、フェイルオーバーを逆転させ、操作を一次サーバに移行し戻す、操作である。
【０２７４】
典型的に、ビジネスップリケーションは、同期が発生している間、動作し続けるため、複数の同期バックを行うことができる必要がある。したがって、同期バックは効率的である必要がある。
【０２７５】
一次位置２１００は、ビジネスがアプリケーションまたはデータサービスを提供する位置である。
【０２７６】
一次アプリケーションサーバ２１０１は、何らかのネットワークインターフェース上でローカルまたはリモートに消費され得るビジネスサービスを送達する、１つ以上のそのようなサーバを表す、位置２１００にあるサーバである。
【０２７７】
スタンバイ位置２１１０は、ビジネスが、一次位置においてサービスの可用性に何らかの障害が起きた場合に、代替的にアプリケーションまたはデータサービスを提供することができる位置である。例えば、一次位置での停電は、ウェブサーバが利用不可能となることを引き起こし得、この場合、バックアップ位置にあるウェブサーバが、通常は一次位置に導かれるであろう要求に応答するように構成され得る。
【０２７８】
一次データＡ、２１２０は、一次アプリケーションサーバの操作のために読み出し及び書き込みが行われるライブデータである。これには、例えば、ウェブアプリケーションインターフェースのためのトランザクションをサービスするデータベースが含まれ得る。好ましい実施形態において、これは、記憶ネットワーク上で一次アプリケーションサーバにエクスポートされるＬＵＮである。別の好ましい実施形態において、これは、仮想マシンのディスクイメージである。
【０２７９】
一次位置２１００において、一次プール２１３０は、一次アプリケーションサーバの操作についての記憶がそこから割り当てられる、一次記憶リソースプールである。これは、典型的に、企業クラスのＳＡＮ記憶アレイであろう。性能最適化プール２１３１は、前述のように、軽量スナップショット操作及び差分付けをサポートする、データ保護のための記憶プールである。好ましい実装において、これは、低費用ネットワーク化記憶装置に基づくスナップショットプールである。容量最適化プール２１３２は、差分付け操作をサポートする記憶プールである。好ましい実装において、これは、重複排除コンテンツアドレス可能ストアである。
【０２８０】
スタンバイ位置２１１０において、容量最適化プール２１３３は、スタンバイ位置にある記憶プールであり、これが、差分付け操作をサポートする。ここでも、好ましい実装において、これは、重複排除コンテンツアドレス可能ストアである。性能最適化プール２１３４は、典型的にはコンテンツアドレス可能ストアの場合よりも早いアクセス時間を有する、スタンバイ位置にある記憶プールである。好ましい実装において、これは、低費用ネットワーク化記憶装置に基づくスナップショットプールである。一次プール２１３５は、記憶が、スタンバイアプリケーションサーバの実行のためにそこから割り当てられる、記憶プールである。これは、例えば、企業クラスのＳＡＮ記憶アレイであり得る。
【０２８１】
一次データオブジェクトＡのコピーＡ１  ２１２１、Ａ２  ２１２２、Ａ３  ２１２３、Ａ４  ２１２４、Ａ５  ２１２５は、記載されるように、記憶プールのそれぞれに作成される正確なデータコピーである。連続的なコピー操作２１４０は、以下により詳細に記載されるであろう。これらの操作は、前述のように、サービスポリシーエンジン５０１によって発行され、オブジェクトマネージャ５０１によって各記憶プールに仲介される。サービスポリシーエンジン、オブジェクトマネージャ、及び他のコントローラの論理的な実装は、集中サーバに実装され得るか、またはネットワーク全体に分配され得る。
【０２８２】
前述のように操作及び構成要素を合わせるこの方法の目的は、ビジネス継続のためのこれらの目標を満たし、同時にネットワーク接続に対する負荷を低減させること、及びデータ保護のための複製に加えて、ビジネス継続のために専用のネットワーク帯域を全く必要としないことである。言い換えると、この目的は、一次位置から二次位置へのデータの非同期ミラーリングの効果を提供することであり得る。
【０２８３】
要約される３つの操作フローがある。
【０２８４】
通常のデータ複製
【０２８５】
フェイルオーバー：複製されたデータを使用する
【０２８６】
同期バック：スタンバイ変化を一次プールに提示し戻す
【０２８７】
１．通常のデータ複製
【０２８８】
サービスポリシーエンジンは、一次データＡの仮想コピーが、順に各プールに作成されるように、操作を整列させることに関与する。サービスポリシーエンジンは、オブジェクトマネージャへのコピー要求を発行し、オブジェクトマネージャは、これらの要求を、プール対の間で軽量スナップショットまたは効率的なインクリメンタルコピー操作に仲介する。したがって、実行される第１の操作は、一次データＡの現在の状態の軽量スナップショットを作製することであり；実行される第２の操作は、スナップショットＡ１内の変化したエクステントのみを容量最適化プールにコピーし、新しいコンテンツアドレス指定されたオブジェクトＡ２を生成することであり；第３の操作は、コンテンツアドレス可能ストア間の効率的な複製を使用して、第１の容量最適化プールにおけるデータ重複排除に起因して最小限のデータを有する新しいコンテンツアドレス指定されたオブジェクトＡ３を生成することであり；第４の操作は第２の性能最適なプール内の以前のオブジェクトをＡ４に更新するために、Ａ３とその以前のリビジョンとの間の変化のみを適用することである。
【０２８９】
仮想Ａ４が完全に定義され、かつ好ましい実装では前述のようにフィンガープリント一致機序を用いて検証された時点で、同じオブジェクトのいくつかの以前のリビジョンが、ここで、第２の性能最適化プールから及び他の中継プールから除去され得る。好ましい実装においては、最新のリビジョン及び１つ前のリビジョンが保持されるが、他のリビジョンは除去される。これにより、各プール内の差分エンジン実装が、新しい仮想コピーが移行されると毎回、的確に近い一致を見出すことを可能にする。
【０２９０】
いくつかの実施形態において、スタンバイ位置にある容量最適化プール２１３３は、一次位置にある容量最適化プール２１３２からメタデータを受信し、一次位置の性能最適化プール２１３１からデータを受信し、それによって、バルクデータ移行により高速なスループットを提供することができる。他の実施形態において、容量最適化プール２１３３は、一次位置からメタデータを受信し得、それを性能最適化プール２１３４に即座に送信し得る。他の実施形態において、一次位置にある容量最適化プール２１３２または性能最適化プール２１３１のうちの１つまたは両方が、容量最適化プール２１３３及び性能最適なプール２１３４を目的地として、メタデータ及びデータをリモート位置に送信し得る。性能最適化プール２１３４を目的地として指定し、データを即座に性能最適化プール２１３４にコピーすることにより、可能な限り短い時間でリモート性能プールに更新されたデータを提供し、データ消失が生じ得るバックアップ間の時間ウインドウを低減させ、リモートフェイルオーバー位置が、可能な限り少ないデータ消失で操作を再開することを可能にする。
【０２９１】
リモート性能最適化プールは、常に、少なくとも１つの完全なより古いデータコピーを元のシステム上に有するため、リモートプール上のデータへのアクセスは、ほぼ瞬時に提供され得る。リモートサイト上のデータは、ローカルサイトのデータに依存するものではなく、ビジネスアプリケーションによって容易に使用することができる本来の形式で記憶される。フェイルオーバーが発生した場合、リモート性能最適化プール上のデータは、限られた時間長内で利用可能となり、この時間長は、記憶されたデータのサイズ及びローカルサイトとリモートサイトとの間のデータリンクの待ち時間もしくは可用性に依存しない。データは、リモートサイトにおいて本来の形式で記憶されるため、いくつかの実施形態では、ローカルサイトとリモートサイトとの間でデータを本来の形式で直接コピーすることが可能である。
【０２９２】
好ましい実装において、これらの仮想コピー操作は、それらの間に遅延を有してか、または遅延を有さずに、継続的または連続的に実行するようにスケジュールされ、オペレータによって選択され得る通常の間隔で起動される全シーケンスは、数分から数時間まで多様である。
【０２９３】
別の実装において、全シーケンスは、それが完了すると、再開するようにプログラムされる。
【０２９４】
別の実装において、操作は、シーケンスの開始付近の操作が、シーケンスの終了付近の操作と重なるように、緊密にパイプライン化される。これにより、待ち時間を低減させるが、最大のリソース消費を被る。
【０２９５】
他の実装において、システムは、複数の動作が同時に発生し得るように、並列の様式で動作する。
【０２９６】
２．フェイルオーバー−複製されたデータを使用する
【０２９７】
一次アプリケーションサーバが損傷するか、またはそうでなければ利用不可能となった場合、スタンバイアプリケーションサーバは、可能な限り最近の一次側からの既知の良好なデータを用いて操作を行う必要がある。本明細書に記載される機序において、スタンバイ性能最適化プールに最も最近のデータオブジェクトから仮想コピーが作製されて、スタンバイアプリケーションサーバによって参照及び修正されるディスクイメージまたは論理ユニット番号（ＬＵＮ）としてもう一度使用され得る、データオブジェクトを得る。好ましい実装において、仮想コピーは、軽量コピー操作を使用してスタンバイ一次プールに作製される。
【０２９８】
３．同期バック：スタンバイ変化を一次プールに提示し戻す
【０２９９】
典型的に、スタンバイサイトは、一次サイトほど良好にリソースまたは接続性がプロビジョニングされておらず、そのため、一次サイトがもう一度利用可能となると、問題のビジネスサービスは、もう一度一次サイトで提供されることが好ましい。しかしながら、二次サイトがビジネスサービスを提供している間にデータになされたいずれの変更も、一次サイトに複製して戻される必要がある。
【０３００】
この機序において、これは、Ａ５の修正されたバージョンから、一次データＡの新しいバージョンへの効率的な仮想コピー操作のシーケンスによって達成され、したがって、
【０３０１】
Ｂ５の空間効率的なスナップショットであり、Ａ５の修正されたバージョンであるＢ４は、性能最適化プール２１３４で作製される。
【０３０２】
スタンバイ容量最適化プールにおいてコンテンツアドレス指定されたオブジジェクトであるＢ３は、Ｂ４において変更されたエクステントのみの効率的なコピーによって作製される。
【０３０３】
Ｂ３のコピーであるＢ２は、重複排除化データの最小限の移行によって、一次容量最適化データに作製される。
【０３０４】
一次性能最適化プールにおけるＢｉは、差分エンジンを使用した効率的コピーによって、効率的に生成される。
【０３０５】
Ｂｉは、次いで、種々の手段で一次アプリケーションサーバに復元するためにオペレータに利用可能となる。好ましい実装において、Ｂ＾の仮想コピーが、軽量スナップショット操作を使用して作製され、ＬＵＮまたはディスクイメージとして一次アプリケーションサーバに提示される。別の実装において、Ｂ＾からのデータは、ＬＵＮまたはディスクイメージＡ上に完全にコピーされる。別の実装において、Ｂ＾の仮想コピーが、軽量スナップショット操作を使用して作製され、ＬＵＮまたはディスクイメージとして新しい一次アプリケーションサーバ（物理サーバまたは仮想マシンであり得る）に提示される。
【０３０６】
この方法は、フェイルオーバー／複製サイト一次プール２１３５が、瞬間的アクセスまたは非常に短いアクセス時間、及び効率的かつ最近の一次プール２１３０データの移行を提供すると同時に、データ管理仮想化システムの利点も提供する、高性能データストアとなることを可能にする。最適化は、上述のインテリジェント重複排除及び他の方法の使用によって、可能となる。
【０３０７】
前述のものは、本主題のより適当な特徴のうちの一部をまとめたものである。これらの特徴は、単なる例示とみなされるべきである。多数の他の有益な結果は、本主題を異なる方式で適用することによって、または後述のように本主題を修正することによって、得ることができる。
【０３０８】
データ複製及びガベージコレクション予測
図１１において上述のように、２つのコンテンツアドレス可能ストア（６１０）間での効率的なオブジェクト複製は、複製されるオブジェクトとともに差分エンジンプロバイダ（６１４）に指定される近傍オブジェクトの選定によって促進され得る。存在する場合、近傍は、複製されているオブジェクトと同じ時間的ツリー内に存在する。
【０３０９】
オブジェクトが初めて複製されている場合、そのような近傍は存在しないことが多い。オブジェクトの構成的データチャンクが一度も複製されたことがない程度は、複製の効率に良い影響を及ぼす。これは、一度も複製されたことがないデータのハッシュは、それらのデータが保持される必要が有るかどうかを決定するためにインデックス検索を必要としないため、しばしば起こる。対照的に、構成的データチャンクが、以前のワークフローによって既に複製されているオブジェクトの複製は、近傍オブジェクトなしに提示される場合、オブジェクトの構成的データチャンクがリモートシステムに提示されるかどうかに関して迅速な決定的な解答を展開することができないため、非効率的である。非効率性の程度は、リモートシステムに存在する構成的データチャンクの割合に正比例し得る。
【０３１０】
したがって、リソース及びネットワーク可用性が要因として排除されているクラスタの対を複製することを考えると、効率が最も低い複製ワークフローは、差分付けのために提示されている近傍オブジェクトは存在しないが、複製されているオブジェクト内のデータの一部または大部分がリモートシステム上に存在するものであることが多い。このワークフローは、少なくとも２つの実質的なシナリオで発生する。第１のシナリオは、所与のオブジェクトがリモートで重複排除化されており、「ビジネス継続のための複製」（例えば、図２１を参照されたい）が初めてそれに適用されているものである。例えば、図１３において時間的ツリーを参照すると、システムは、「ビジネス継続のための複製」を行うときに、新しい時間的ツリーを作製し、このツリーは、時間的ツリーによって参照される同じハッシュの一部または全部を参照し得る。このシナリオには近傍は存在しない。
【０３１１】
第２のシナリオは、適切な近傍オブジェクトがリモート重複排除ストア上で期限切れとなるが、近傍値オブジェクトデータの一部または全部が、リモート重複排除ストア上に依然として存在しているものである。例えば、近傍は、ディスク記憶を保存するために、誤って消去されるか、またはポリシー（例えば、図７に示されるサービスレベルポリシーを参照されたい）によって消去されてしまう可能性がある。このような例においては、基底のハッシュの一部またはすべては、リモートシステム上に依然として存在し得る。
【０３１２】
上で説明されたもの等、重複排除コンテンツアドレス可能ストアにおいて、いったん記憶されたデータチャンクは、いくつかの異なるオブジェクトによって参照され得る。書き込みデータによって消費されている記憶装置は、通常、そこに記憶されたデータが必要とされなくなった場合にのみ、再使用のために解放され得る。特定の位置に記憶されたデータが、必要とされなくなったことを決定することは、しばしば、種々の手段によって達成され得る高価なプロセスである。しばしば採用される方法は、ガベージコレクション、典型的には、マーク／スイープガベージコレクションプロセスである。
【０３１３】
数十または数百テラバイト規模の記憶データでは、ガベージコレクションのマーク及びスイープの両方の段階は、時間がかかり得る（数日または数週間）。ほとんどの場合では、スイープ段階が開始するまで使用のために返却される記憶がないため、ガベージコレクションの「マーク」段階を実行する前に、マーク及びスイーププロセスが実行された場合におおよそどれほどのペイオフになるか（例えば、どれほどの記憶空間が、現在、重複排除ストア内に記憶された非参照データによって消費されているか）を認識することが有用である。
【０３１４】
ガベージコレクションの有効性を予測するための履歴ツリーに基づく統計
本明細書に開示される技法の実施形態は、（ａ）コンテンツアドレス可能重複排除ストアに適した統計のセット、（ｂ）それらの統計の計算及び維持のための操作のセット、（ｃ）特定のビジネス値を得るために統計に適用され得る式のセットからなり得る。例えば、ＬＯＧＩＣＡＬ＿ＡＣＣＵＭＵＬＡＴＥＤ＿ＤＩＦＦＳ及びＬＯＧＩＣＡＬ＿ＤＩＶＥＳＴＥＤ＿ＤＩＦＦＳの定義、ならびにガベージコレクションによって返還要求される可能性のある空間をこれらから予測するために使用される式が、本明細書に記載される。このような統計は、追加及び消去操作を通じて正確に維持され得る。
【０３１５】
図２２は、いくつかの実施形態に従って計算され得る新しい統計を定義する例示的なテーブルである。このテーブルには、４０００１  ＬＯＧＩＣＡＬ＿ＡＣＣＵＭＵＬＡＴＥＤ＿ＤＩＦＦＳ（または「ＬＡＤ」）、４０００２  ＬＯＧＩＣＡＬ＿ＤＩＶＥＳＴＥＤ＿ＤＩＦＦＳ（または「ＬＤＤ」）、４０００３  ＴＯＴＡＬ＿ＣＨＵＮＫＳ＿ＩＮＤＥＸＥＤ（または「ＴＣＩ」）、及び４０００４  ＰＨＹＳＩＣＡＬ＿ＳＰＡＣＥ＿ＵＳＥＤ（または「ＰＳＵ」）が含まれる。
【０３１６】
これらの統計は、永続的データベースまたはシステムメモリに記憶され得る数値であり得、可能性のあるガベージコレクション（「ＧＣ」）のマーク及びスイープ段階の費用及び値に関する計算を行うために任意の時点で問い合わせられ得る。特定の実装において、これらの統計は、重複排除ストア自体と同じ記憶媒体上に永続的メタデータとして記憶され、ストアに変更がなされたときにトランザクション的に更新される。
【０３１７】
４０００１  ＬＯＧＩＣＡＬ＿ＡＣＣＵＭＵＬＡＴＥＤ＿ＤＩＦＦＳ（ＬＡＤ）は、重複排除ストア内のオブジェクトの連続した代の間のデータの異なるチャンクのカウントの合計である。ＬＡＤの例示的な定義は、図２３Ａに関連して記載され、ＬＡＤの例示的な計算は、図２４に関連して記載される。
【０３１８】
４０００２  ＬＯＧＩＣＡＬ＿ＤＩＶＥＳＴＥＤ＿ＤＩＦＦＳ（ＬＤＤ）は、ＬＯＧＩＣＡＬ＿ＡＣＣＵＭＵＬＡＴＥＤ＿ＤＩＦＦＳが、重複排除ストアから１つ以上のオブジェクトを除去する操作によって低減されていることがわかっている量である。ＬＤＤの例示的な計算は、図２５Ａ〜２５Ｂに関連して記載される。
【０３１９】
４０００３  ＰＨＹＳＩＣＡＬ＿ＳＰＡＣＥ＿ＵＳＥＤ（ＰＳＵ）は、データが書き込まれているすべての記憶装置によって占有されているサイズであり、参照されるデータと参照されないデータの両方を含めてデータが記憶装置に書き込まれる際の可能性のある圧縮を考慮に入れる。ＰＳＵの計算例は、図２６Ａ〜２６Ｂに関連して記載される。
【０３２０】
図２３Ａは、いくつかの実施形態による時間的ツリー構造の例示的な図を図示する。図２３Ａは、重複排除ストア内のオブジェクトの代が追跡される、時間的ツリー構造を示す。時間的ツリー構造は、空またはヌルのオブジェクト４１００１、オブジェクト４１００２（Ａ）、オブジェクト４１００３（Ｂ）、オブジェクト４１００４（Ｃ）、オブジェクト４１００５（Ｄ）、及びオブジェクト４１００６（Ｅ）を含む。オブジェクト（例えば、４１０３（Ｂ））の任意の代と、その親（例えば、４１０２（Ａ））との間で、いくつかの対応するデータチャンクが同一であり、いくつかは異なる。
【０３２１】
ＬＡＤは、異なるデータチャンクのカウントの合計である。
【０３２２】
４１００１は、空またはヌルのオブジェクトであり、データチャンクを含まない。
【０３２３】
４１００２（Ａ）オブジェクトは、Ｈ１、Ｈ２として示されるチャンクを含む。その親（O）からの差分カウントは、２である。
【０３２４】
４１００３（Ｂ）オブジェクトは、Ｈ１、Ｈ２、Ｈ３として示されるチャンクを含む。対応するその親（Ａ）からの差分のセットは、｛Ｈ３｝であり、差分のカウントは１である。
【０３２５】
４１００４（Ｃ）オブジェクトは、Ｈ１、Ｈ２、Ｈ３、Ｈ４として示さえるチャンクを含む。対応するその親（Ｂ）からの差分のセットは、｛Ｈ４｝であり、差分のカウントは１である。
【０３２６】
４１００５（Ｄ）オブジェクトは、Ｈ１、Ｈ２、Ｈ３、Ｈ４、Ｈ５として示されるチャンクを含む。対応するその親（Ｃ）からの差分のセットは、｛Ｈ５｝であり、差分のカウントは１である。
【０３２７】
４１００６（Ｅ）オブジェクトは、Ｈ１、Ｈ２、Ｈ３、Ｈ６として示されるチャンクを含む。これは、親（Ｂ）を４１００４（Ｃ）と共有する。対応するその親（Ｂ）からの差分のセットは、｛Ｈ６｝であり、差分のカウントは１である。
【０３２８】
図２３Ｂは、いくつかの実施形態による統計４０００１ＬＡＤの図である。図２３Ｂは、この時間的ツリー内のオブジェクトの代間の累積差分４１００７の完全なセットを示し、差分カウントの完全なセットを計算するとＬＡＤ＝６となる。大規模な用途では、多数の時間的ツリーが親として（O）を共有し、ＬＡＤが、これらのツリーすべての累積差分カウントの合計であり得ることに留意されたい。
【０３２９】
したがって、ＬＡＤの値は、重複排除ストアに記憶されているおおよその総データである。それは、すべての固有のデータチャンクを少なくとも１回カウントするため、過少見積もりとはならない。実際には、例えば、同じデータチャンクが２つの無関係のオブジェクトで使用される場合、または同じデータチャンクが同じ特定のオブジェクトか、もしくはその後続の代の２つの異なる位置で使用される場合、またはデータチャンクが、オブジェクトの１つの代で使用され、後続の代では使用されず、それよりも後の代で再度使用される場合に、多数のデータチャンクが２回カウントされるため、過大見積もりとなる。これは、過大見積もりは定数因子であり、ωと示すことができると仮定するための合理的な見積もりである。
【０３３０】
図２４は、いくつかの実施形態によるＬＯＧＩＣＡＬ  ＡＣＣＵＭＵＬＡＴＥＤ  ＤＩＦＦＳを計算する例示的な図である。図２４は、オブジェクト４２００２（Ｆ）及び結果として得られるオブジェクト４２００２（Ｆ）からの累積差分４２００３を図２３Ａの時間的ツリー上に構築する。ＬＡＤは、時間的オブジェクトツリーを通し、差分付けエンジンを使用してオブジェクトの後続の代の間の差分を計算することによって、任意の時点で評価され得る。しかしながら、大きなストアでは、このような計算は、ＧＣマーク段階に時間が匹敵し得る。より現実的に、かついくつかの実施形態において実装されるように、ＬＡＤ統計は、１回計算され、オブジェクトが重複排除ストアに追加されるか、またはそこから削除されると、更新され得る。
【０３３１】
４２００１は、オブジェクトＦ（４２００２）をオブジェクトＥ（４１００６）の子として追加する。
【０３３２】
４２００２オブジェクトＦは、オブジェクトＥのより新しい代であり、少しの変化を有する：第２のオフセットでＨ２がＨ５となり、第４のオフセットでＨ４がＨ６となる。
【０３３３】
４２００３は、オブジェクトＦが作成されるときに計算される累積差分を示す。Ｈ５及びＨ６は、オブジェクトＦの作成の際に新しいコンテンツとして特定され、そのため、累積差分カウントは２となる。結果として、図２３Ｂからの７のＬＡＤは、２ずつインクリメントされ、９のＬＡＤをもたらす。
【０３３４】
データチャンクがＦ等の新しいオブジェクトの作成時にどのように特定されるかを確認するためには、例えば、図１５を参照されたい。上述のように、新しいオブジェクトの変更されたデータを、ステップ１５１２でプレディセッサ内のデータと比較して、一致が見出された場合さらなるチェック及びデータ記憶を回避する。ＬＡＤの正しい値を維持するために、ＬＡＤ統計は、ステップ１５１２が一致を見出さないたびに（例えば、１５１２と１５１６との間のグラフのエッジがトラバースされるたびに）毎回１ずつインクリメントされ得る。
【０３３５】
図２５Ａは、いくつかの実施形態による時間的ツリー構造からオブジェクトを除去する例示的な図である。図２５Ａに示されるプロセスは、各ノードに異なる数のハッシュ値が存在する場合、例えば、ＦがＨ１、Ｈ２のみを有し、ＧがＨ１、Ｈ２、Ｈ３、及びＨ４を有し、ＨがＨ３、Ｈ６を有する場合に適用されることに留意されたい。異なる数のハッシュ値が存在する場合、いくつかの実施形態において、より小さいハッシュ値セットを有するノードには、より大きなセット内のハッシュ値の数と等しくなるようにハッシュ値の数を増加させるために、所定の値（例えば、ゼロ）を有する追加のハッシュ値がパディングされ得る。上述の例を継続すると、Ｆ及びＨには、Ｇの長さと一致するように、ゼロがパディングされ得る。
【０３３６】
４３００２オブジェクトＦは、重複排除ストア内のオブジェクトであり、この例においては、データチャンクＨ１、Ｈ５、Ｈ３、Ｈ６から構成される。
【０３３７】
４３００４オブジェクトＧは、オブジェクトＦの中間サクセッサであり、これは、オフセット３にデータチャンクＨ７を有し、オフセット４にＨ８を有することが、オブジェクトＦとは異なる。
【０３３８】
４３００６オブジェクトＨは、オブジェクトＧの中間サクセッサであり、これは、オフセット２にデータチャンクＨ２を有し、オフセット４にＨ９を有することが、オブジェクトＧとは異なる。
【０３３９】
４３００８オブジェクトＧは、オブジェクトＦとオブジェクトＨとの間から４３００８で除去され、ＬＤＤが、適宜更新される。
【０３４０】
図２５Ｂは、いくつかの実施形態による、ＬＯＧＩＣＡＬ  ＤＩＶＥＳＴＥＤ  ＤＩＦＦＳ統計を計算するための例示的な図である。ＬＤＤは、単調に増加するＬＡＤ値（例えば、図２４に記載のように計算される）と、図２３ＢからのＬＡＤの定義との間の差分をカウントする。オブジェクトが、重複排除ストアから除去されると、ＬＡＤの影響が計算され、ＬＡＤを即座に減少されるのではなく、負の変更が、ＬＤＤに累積される。
【０３４１】
４３０１０は、差分リストＧ−Ｆであり、Ｆの同じ位置におけるデータチャンクとは異なるＧからのデータチャンクのリストである。このリストは、Ｇ−Ｆが、オフセット３のデータチャンクＨ７及びオフセット４のＨ８からなることを示す。
【０３４２】
４３０１２は、差分リストＨ−Ｇであり、これは、Ｇの対応する位置におけるデータチャンクとは異なる、Ｈからのデータチャンクのリストである。このリストは、Ｈ−Ｇが、オフセット２のデータチャンクＨ２及びオフセット４のＨ９からなることを示す。
【０３４３】
４３０１４は、剥奪差分のリスト、すなわち、Ｇ内のある特定のオフセットには存在したが、そのオフセットのＦにもＨにも存在しなかったデータチャンクである。これは、２つの差分リストＧ−Ｆ及びＨ−Ｇを比較し、Ｈ−Ｇの同じオフセットに異なるチャンクが存在するＧ−Ｆからのチャンクのみを保持することによって、計算される。「Ｂを削除する」操作のためのＬＤＤの計算は、したがって、４３０１４でキャプチャされる差分の数である。したがって、４３０１０におけるＨ８から４３０１２におけるＨ９への変化のように、値が両方の時間で変化した場合、それは剥奪される。Ｆ、Ｇ、Ｈが、すべて同じサイズでない場合に、より短いオブジェクトが、ゼロだけを含むチャンク等何らかの固定コンテンツデータチャンクの一連の反復を使用してより長いオブジェクトの長さにパディングされることを想定することによって、剥奪差分計算カウントが計算され得る。
【０３４４】
図２６Ａは、いくつかの実施形態による、図２６Ｂに示されるツリーのＰＨＹＳＩＣＡＬ  ＳＰＡＣＥ  ＵＳＥＤ（「ＰＳＵ」）統計の計算の例示的な図である。この図において、オブジェクトＡ〜Ｈは、前の図に記載されるものと同じ内容である。各オブジェクトは、固有であるか、または時間的ツリーにおいて、近傍または遠位のいずれかの他のオブジェクトと共有される、データチャンクの混合を含み得る。いくつかの実施形態において、各ハッシュ値（Ｈ１〜Ｈ９）に対応するデータチャンクは、１回だけ記憶媒体に書き込まれる。さらに、データは記憶媒体に書き込まれる際、それは、複数の標準的または周知の圧縮ツールを使用して、圧縮され得る。統計的ＰＨＹＳＩＣＡＬ  ＳＰＡＣＥ  ＵＳＥＤは、ハッシュＨ１〜Ｈ９に対応するデータチャンクの圧縮後のサイズの合計である。図２６Ａ〜２Ｂに示される例において、ＰＳＵは、オブジェクトＧが消去されたとマークされているにもかかわらず、Ｈ８のデータのサイズを組み込む。Ｈ８の物理的空間は、完全なガベージコレクション操作までは返還要求されず、そのためその操作までは、Ｈ８は依然としてＰＳＵに寄与する。
【０３４５】
これらの統計を考えると、重複排除ストアによって使用される記憶の見積もりは、任意のオブジェクトによって参照されるデータを含まず、したがって、完全なガベージコレクション操作によって返還要求され得る物理的な記憶の量は、この式によって考慮され得る：
2016524220.tif 000003
【０３４６】
式中、
Ｓｒｅｃｌａｉｍａｂｌｅは、使用されるが参照されない記憶の量である。
【０３４７】
ＬＤＤは、上述の統計的ＬＯＧＩＣＡＬ＿ＤＩＶＥＳＴＥＤ＿ＤＩＦＦＳである。
【０３４８】
ＬＡＤは、上述の統計的ＬＯＧＩＣＡＬ＿ＡＣＣＵＭＵＬＡＴＥＤ＿ＤＩＦＦＳである。
【０３４９】
ＰＳＵは、上述の統計的ＰＨＹＳＩＣＡＬ＿ＳＰＡＣＥ＿ＵＳＥＤである。
【０３５０】
有利なことに、Ｓｒｅｃｌａｉｍａｂｌｅに関して上に示される式は、ガベージコレクションのマーク及びスイープ両方の段階を実行することによって返還要求され得る記憶の量の良好な即座の見積もりとして使用され得る。
【０３５１】
図２６Ａ〜２６Ｂの例において、完全な図を分析することによって、記憶されたちょうど１つのデータチャンク（参照されない）、すなわち、Ｈ８としてインデックス付けされたチャンクが存在することを理解することができる。これは、完全なガベージコレクション及びスイープ操作によって返還要求され得る実際の物理的空間が、１つのデータチャンクのための記憶空間であろうことを意味する。この例において、Ｓｒｅｃｌａｉｍａｂｌｅは、ＰＳＵ＊ＬＤＤ／ＬＡＤ＝９＊１／１１＝０．８２として計算される。したがって、０．８２というＳｒｅｃｌａｉｍａｂｌｅ値は、ＧＣ操作により返還要求され得る１つの参照されないデータチャンクの良好な見積もりである。当業者であれば、これは、例証的な例であることを意味することを認識することができる。いくつかの例では、数十、数百、または数千の返還要求可能なオブジェクト（例えば、合計数百ギガバイト）が存在し得る。別の例として、９個のＨ１〜Ｈ９のそれぞれは、サイズがテラバイト（ＴＢ）であり得る。システムは、ＧＣ操作を実行する前に、３つ以上のＴＢが返還要求され得るようになるまで待機するように構成され得る。より大規模な例では、正しい値と見積もられた値との間のエラーは、さらに大きくなり得るが、正確な値を得るために全ストアを分析する費用は、見積もりを計算するものよりもかなり大きくなり得るため、実用的ではない。
【０３５２】
Ｓｒｅｃｌａｉｍａｂｌｅ見積もりは、ガベージコレクション操作をトリガするための閾値として使用され得る。例えば、閾値は、周期的に評価され得、次いで、ガベージコレクションは、所与の固定値または所与のＰＳＵのパーセンテージを超えた場合に開始される。上述のように、９個のデータチャンクＨ１〜Ｈ９のそれぞれのサイズがテラバイト（ＴＢ）である場合、閾値は、Ｓｒｅｃｌａｉｍａｂｌｅが３を上回るまで待機するように設定され得る（例えば、３つ以上のＴＢがＧＣ操作を実行する前に変換要求され得るように）。
【０３５３】
いくつかの実施形態において、容量プランニングのため等、（ＬＤＤ／ＬＡＤ）＊ＰＳＵの上昇は、重複排除ストア内のオブジェクトのセットの複数の代を記憶するために必要とされる未加工記憶の上昇率を示すために使用され得、したがって、追加の記憶装置をそのようなシステムに利用可能にするための長期計画に含まれ得る。
【０３５４】
データ複製のための合成近傍
データオブジェクトをワイドエリアネットワーク上で１つのサーバから別のサーバに複製する際、そのオブジェクトのどの部分が既に複製されているかに関する知識を用いて複製を開始することが効率的である。この知識は、送信されていないそのオブジェクトの基底のデータの部分のみを送信する必要があるという点で、複製プロセスをより効率的にするのを補助し得る。この知識なしでは、元のサーバは、しばしば、目的地サーバ上のそのオブジェクトにおいて各データ片を検索しなければならない。両方のサーバに記憶されたデータの量が大きくなるにつれ、このようなナイーブ検索の費用が、幾何学的により高価となり得る。
【０３５５】
理想的には、操作サーバが、近傍オブジェクトへの参照を提供することができる。これが可能でない場合には、合成近傍プロセスが、ある時点のリモートサーバ上のデータのある時点の大部分を検索し、次いで、この参照オブジェクトを、元のサーバ及び目的地サーバの両方に人工的に作成することによって、そのような参照オブジェクトを作成する。この近傍が作成されると、複製は、より効率的に進行し、前回のデータ検索の際に見出されなかったデータのみを送信する。これは、近傍オブジェクトが指定されていない場合に、複製時間を大幅に低減させることができる。
【０３５６】
図２７は、それ以外には決定され得る既存の近傍がない場合に、複製のための近傍オブジェクトを合成で作成するための方法を図示する。図２７に示されるように、ローカル重複排除ストア２４５０とリモート重複排除ストア２４５６との間の発見メッセージ交換によって達成されるこのワークフローるは、複製されるオブジェクトＯＲ２４０１（ローカル重複排除ストア２４５０に記憶される）の近傍オブジェクトＯＳＡ２４００を作成し、これは、複製されているオブジェクトの一部であり、リモート重複排除ストア２４５６に存在することが、リモートデバイス２４５８に既知であるより高深度のオブジェクトからなり、オブジェクトの最初からそれらの適切なオフセットにおいて、適切なより高深度のハッシュがリモートターゲット上で見出されなかったエクステントにゼロ充填マッピング実行が点在している。
【０３５７】
この方法は、選定されたより高深度の(greater-depth)サイズ（例えば、２ＭｉＢ）のゼロＯｚ２４０２からなるオブジェクトが、すべてのシステムで利用可能となるように、合成近傍オブジェクトのゼロ充填部分の作成のための基礎として機能するように構成され得る。例えば、Ｏｚが、各コンテンツアドレス可能ストア上に、その初期化中に作成され得る。Ｏｚは、すべての装置で同じ好ましいより高深度のサイズを有して構成され得、これは、ゼロだけで構成されるため、その構築には、特別な考慮は必要とされない。
【０３５８】
いくつかの実施形態において、近傍合成の効率に追加するために、完全に密集されたより高深度のオブジェクトのみが一致される。例えば、すべての高深度オブジェクトが、Ｏｚのサイズの倍数としてサイズ付けされるわけではなく、そうなるであろうこともない。したがって、例えば、近傍を構築する際、システムは、切り捨てられてＯｚのサイズの最も近い倍数とされるサイズで近傍を構築するように構成され得る。これは、長さが選択されたより高深度のオブジェクトのサイズの整数倍ではないオブジェクトの最後でハッシュを一致させるために、長さが１〜選択されたより高深度のオブジェクトのサイズとの間である、可変長のより高深度のオブジェクトが事前に作成される必要性、及びその存在を継続的に管理する必要性を回避することができる。例えば、これは、Ｏｚにカスタムサイズのゼロ充填リマインダを構築する必要性を排除することができる。Ｏｚは、その導入及び初期化の際に各コンテンツアドレス可能ストアに作成される（例えば、図２７のローカル重複排除ストア、及びリモート重複排除ストア）。
【０３５９】
リモート重複排除ワークフロー中に、実行可能な近傍が存在しないと判断された場合、合成アンセストリーワークフローが呼び出される。結果として得られる近傍ＯＳＡ２４００が、それが、前述のように、近傍として指定されたか、または共通の近傍のネゴシエーションによって到達したかのように、代わりにリモート重複排除ワークフローに入れられる。
【０３６０】
この時点で、リモート重複排除ワークフローにおいて、ソースローカル重複排除ストア２４５０とターゲットリモート重複排除ストア２４５６との間に接続が既に確立されている（例えば、ローカルビジネスプロセスエンジン２４５２及びリモートビジネスプロセスエンジン２４５４によって）。ローカルビジネスプロセスエンジン２４５２は、ローカル重複排除ストア２４５０上に空のオブジェクトを作成し、リモートビジネスプロセスエンジン２４５４は、リモート重複排除ストア２４５６上に空のオブジェクトを作成し、この空のオブジェクトは、合成近傍を生成するための段階において発達する。
【０３６１】
図２８は、それ以外には決定され得る既存の近傍がない場合に、複製のための合成近傍を合成で作成するための方法を図示する。図２７及び２８を参照して、ステップ２５００で、ソースオブジェクトは、その構成的高深度ハッシュに関してスキャンされ、これが、次いで、リモートクラスタに送信されるネットワークメッセージＭＳＡ２４０３にグループ分けされる。ローカルビジネスプロセスエンジン２４５２は、ネットワークメッセージ２４０３を使用して、２４０５でリモートビジネスプロセスエンジン２４５４によりハッシュの存在を調べる。リモートビジネスプロセスエンジン２４５４は、より高深度のハッシュのそれぞれに関して、２４０３でリモートクラスタに存在するかどうかを決定する。見出されなかったメッセージ内の各ハッシュについては、ゼロのハッシュが代わりにメッセージに入れられる。ステップ２５０１において、ハッシュのすべてに関して検索された後、リモートデバイス２４５８は、結果として得られたメッセージを使用して、それが表すデータ２５０１の量（例えば、２ＧｉＢ）（図２７の２４０６に示される）によって、リモート重複排除ストア２４５６で構築中の合成近傍ＯＳＡ２４００を発達させる。ステップ２５０２において、リモートビジネスプロセスエンジン２４５４は、次に、メッセージ（見出されたハッシュのアセンブルページ２４０７）をソースローカル重複排除ストア２４５０に送信し戻し、ここで、ステップ２５０３において、それが、ローカル重複排除ストアで構築中の合成近傍ＯＳＡ２４００を発達させるためにに同様に使用される（図２７の２４０８で示される）。複製されるオブジェクト内のより高深度のハッシュの完全なセットは、ハッシュがデータの全高深度ハッシュを表さない場合に、最大で最終の高深度ハッシュまで（これは含まない）、一連のこれらのメッセージとして送信される。図２７に示されるように、ステップ２４０９において、ステップ２４０３、２４０５、２４０６、２４０７、及び２４０８は、さらなるハッシュが存在しなくなるまで繰り返す。これらのメッセージが構築され、交換されると、同じ合成近傍オブジェクトが、ソース及びターゲットの両方のクラスタに存在することになる。
【０３６２】
合成近傍ＯＳＡ２４００が構築されたため、上述のリモート複製ワークフローは、近傍（そこではＡ０と称される）が合成されたというよりは発見されたかのように継続される（図２７のステップ２４１０及び２４１１）。複製されているオブジェクトＯＲ２４０１と合成近傍との間の差分は、したがって、リモートコンテンツアドレス可能ストア（リモートコンテンツのアドレス可能なストア：remote content addressable store）に伝送され、オブジェクトＯＲ２４０１は、そこでアセンブルされ、結果として、上述のフローが完了し、オブジェクトＯＲ２４０１がリモートコンテンツアドレス可能ストアに存在するようになる。
【０３６３】
「ビジネス継続のための複製」下の「通常のデータ複製」の実装では、複製を行うオブジェクトＯＲ２４０１とその近傍との間の相違は、いずれもスタンバイ位置にあるコンテンツアドレス可能ストアのオブジェクトターゲット及び目的地デバイスＤＯＵＴ２４０４の両方に、同時に書き込まれる。この戦略は、この事例のターゲットデバイスが、これらの差分を適用する前に既に近傍オブジェクトと同期されているという事実に基づく。近傍が以前には存在していなかった合成近傍ワークフローの場合には、しかしながら、ターゲットデバイスは、近傍オブジェクトと同期されていない場合がある。このように、合成アンセストリが行われる時にターゲットデバイスＤＯＵＴ２４０４にステップ２４１２及び２４１３（例えば、図２９に示される）で必要とされる追加の完全復元段階が存在する。完全復元段階の間に、オブジェクトＯＲ２４０１全体が、コンテンツアドレス可能ストアからターゲットデバイスＤＯＵＴ２４０４に書き込まれる。図２９は、それ以外には決定され得る既存の近傍がない場合に、複製のための完全な復元段階を合成で行うための方法を図示する。このプロセスにおいて、オブジェクトは、合理的なサイズ２５１０（一実装では６４ＫｉＢ）の小片で読み出され、これらの小片が、効率的な方式２５１１でターゲットデバイスＤＯＵＴ２４０４に書き込まれる。データの各セットがターゲットデバイスＤＯＵＴ２４０４に書き込まれた後、この操作の進捗報告を更新する時間であるかどうかを決定するために、チェックが行われる。そうである場合、進捗が、リモートコンテンツアドレス可能ストアからローカルコンテンツアドレス可能ストア２５１２に送信される。もうコピーするデータが存在しないため、操作は完了する。
【０３６４】
進捗報告
この方法はまた、進捗を表す技法を組み込むことができる。進捗報告は、ユーザがそれを認識することができるように、ユーザインターフェースに利用可能に作製され得る。それは、通常、０から、複製されているオブジェクトの長さの間の数として表される。例えば、進捗は、おおよそ一定の速度で複製の２つの段階を通じて表され得る。例えば、２つの段階は、合成近傍構築及びリモート複製として特徴付けられる。進捗報告は、しばしば、送信されるデータのセットを前もって認識していないネットワーク通信ワークフローにとっては困難な問題である。例えば、その複製が完了までに数日かかり得る企業顧客では、意味のある進捗報告を提供することができることは、顧客がＩＴ操作を計画するのを補助する。本明細書に記載される技法を使用して、正確な進捗報告を提供することができる。
【０３６５】
合成アンセストリ構築段階の間の進捗は、複製されるオブジェクトのサイズ（例えば、全体の進捗）の０〜５０％の数で報告される：
2016524220.tif 000004
【０３６６】
式中、
Ｑは、複製されているオブジェクトＯのサイズである。
Ｌ１ｆは、複製オブジェクトＯから見出されたより高レベルのハッシュの数である。
Ｌ１ｔは、複製オブジェクトＯ内に含まれるより高レベルのハッシュの総数である。
【０３６７】
合成アンセストリ段階が完了すると、これまでにエラーが存在しないと仮定して、従来的な複製段階が取られ、合成近傍オブジェクトが、複製されているオブジェクトに対する近傍として使用される。
【０３６８】
リモート複製段階の間の進捗は、ＰＳＡの最終値から全体の進捗の５０％の間の数として報告される：
2016524220.tif 000005
【０３６９】
式中、
ＰＳＡは、上述のように、合成アンセストリ段階中に前もって計算された全進捗である。
Ｐｍｅｒｇｅは、複製段階の直線進捗（０から複製されるオブジェクトの長さまで）である。
Ｑは、複製されているオブジェクトＯのサイズである。
【０３７０】
合成近傍とビジネス継続のための複製とを組み合わせた完全なターゲット復元段階の間の進捗は、複製されているオブジェクトのサイズの５０％〜１００％として報告される：
2016524220.tif 000006
【０３７１】
式中、
Ｏｓｉｚｅは、複製されるオブジェクトのバイト単位でのサイズである。
ＰＲＳＴは、ターゲットデバイスへの復元から報告される進捗（複製されるオブジェクトのサイズの５０％〜１００％）であり、：
2016524220.tif 000007
【０３７２】
によって計算され、式中、
ＰＲＲは、上述のように、リモートデバイスの復元の直線進捗である。
【０３７３】
本明細書に記載される主題は、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア（本明細書に開示される構造的手段及びその構造的同等物、またはそれらの組み合わせを含む、）において実装され得る。本明細書に記載される主題は、データ処理装置（例えば、プログラム可能なプロセッサ、コンピュータ、または複数のコンピュータ）による実行のため、またはその操作の制御のために、情報担体（例えば、機械可読記憶デバイス）に明確に具現化されるか、または伝播シグナルに具現化される１つ以上のコンピュータプログラム等の１つ以上のコンピュータプログラム製品として実装され得る。コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる）は、コンパイラ型言語またはインタープリタ型言語を含む、任意の形態のプログラミング言語で記述され得、これは、独立型プログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境での使用に好適な他の単位として含む、任意の形態で展開され得る。コンピュータプログラムは、必ずしもファイルに対応するわけではない。プログラムは、他のプログラムまたはデータを保持するファイルの一部分、問題のプログラム専用の単一のファイル、または複数の調整されたファイル（ｃｏｏｒｄｉｎａｔｅｄ  ｆｉｌｅ）（例えば、１つ以上のモジュール、サブプログラム、またはコードの部分を記憶するファイル）に記憶され得る。コンピュータプログラムは、１つのコンピュータ上、または１つのサイト、もしくは複数のサイトにわたって分配され、通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように配置され得る。
【０３７４】
本明細書に記載されるプロセス及び論理フロー（本明細書に記載される主題の方法ステップを含む）は、入力データを操作し、出力を生成することによって、本明細書に記載される主題の機能を実行するように、１つ以上のコンピュータプログラムを実行する１つ以上のプログラム可能なプロセッサによって実行され得る。プロセス及び論理フローはまた、特殊目的論理回路、例えば、ＦＰＧＡ（フィールドプログラム可能ゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）によって実行され得、本明細書に記載される主題の装置は、それらとして実装され得る。
【０３７５】
コンピュータプログラムの実行に好適なプロセッサには、例として、汎用及び特殊目的の両方のマイクロプロセッサ、ならびにあらゆる種類のデジタルコンピュータの任意の１つ以上のプロセッサが挙げられる。一般に、プロセッサは、読み出し専用メモリもしくはランダムアクセスメモリまたはその両方から、命令及びデータを受信するであろう。コンピュータの必須の構成要素は、命令を実行するためのプロセッサと、命令及びデータを記憶するための１つ以上のメモリデバイスである。一般に、コンピュータには、データを記憶するための１つ以上の大容量記憶デバイス、例えば、磁気、光磁気ディスク、または光ディスクが、それらからデータを受信するか、もしくはそれらにデータを移行させるか、またはその両方のために、含まれるか、またはそれらに操作可能に接続されるであろう。コンピュータプログラム命令及びデータを具現化するのに好適な情報担体には、あらゆる形態の不揮発性メモリが挙げられ、例としては、半導体メモリデバイス（例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリデバイス）；磁気ディスク（例えば、内蔵ハードディスクまたは取り外し可能ディスク）；光磁気ディスク；及び光ディスク（例えば、ＣＤ及びＤＶＤディスク）が挙げられる。プロセッサ及びメモリは、特殊目的論理回路が補充されるか、またはそこに組み込まれ得る。
【０３７６】
ユーザとのやりとりを提供するために、本明細書に記載される主題は、ユーザに情報を提示するためのディスプレイデバイス、例えば、ＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタ、ならびに、ユーザがそれによってコンピュータに入力を提供することができるキーボード及びポインティングデバイス（例えば、マウスまたはトラックボール）を有するコンピュータに実装され得る。他の種類のデバイスもまた、ユーザとのやりとりを提供するために使用され得る。例えば、ユーザに提供されるフィードバックは、感覚的フィードバック（例えば、視覚的フィードバック、聴覚的フィードバック、または触知的フィードバック）の任意の形態であり得、ユーザからの入力は、音、音声、または触覚による入力を含む、任意の形態で受信され得る。
【０３７７】
本明細書に記載される主題は、バックエンド構成要素（例えば、データサーバ）、ミドルウェア構成要素（例えば、アプリケーションサーバ）、またはフロントエンド構成要素（例えば、ユーザがそれを通じて本明細書に記載される主題の実装とやりとりし得る、グラフィカルユーザインターフェースを有するクライアントコンピュータまたはウェブブラウザ）、またはこのようなバックエンド、ミドルウェア、及びフロントエンド構成要素の任意の組み合わせを含むコンピューティングシステムに実装され得る。本システムの構成要素は、デジタルデータ通信の任意の形態または媒体、例えば、通信ネットワークによって相互接続され得る。通信ネットワークの例には、ローカルエリアネットワーク（「ＬＡＮ」）及びワイドエリアネットワーク（「ＷＡＮ」）、例えば、インターネットが含まれる。
【０３７８】
開示される主題は、その用途が、以下の説明に記載されるかまたは図面に例示される、構成の詳細及び構成要素の配置に制限されないことを理解されたい。開示される主題は、他の実施形態及び種々の手段での実施及び実行が可能である。さらに、本明細書に用いられる表現及び用語は、説明の目的のためであり、制限するものと考えられるものではない。
【０３７９】
このように、当業者であれば、本開示が基づく概念が、開示される主題のいくつかの目的を実行するために、他の構造、方法、及びシステムの設計の基礎として容易に利用され得ることを理解するであろう。したがって、特許請求の範囲が、開示される主題の精神及び範囲を逸脱することがない限り、そのような同等の構造を含むとみなされることが、重要である。
【０３８０】
開示される主題は、前述の例示的な実施形態において記載され、例示されてきたが、本開示が、単なる例として作製されていること、ならびに添付の特許請求の範囲によってのみ制限される開示される主題の趣旨及び範囲から逸脱することなく、開示される主題の実装の詳細に多数の変更がなされ得ることを理解されたい。
【図２２】
2016524220.tif 000008
【図２３Ａ】
2016524220.tif 000009
【図１】
2016524220.tif 000010
【図２】
2016524220.tif 000011
【図３】
2016524220.tif 000012
【図４】
2016524220.tif 000013
【図５】
2016524220.tif 000014
【図６】
2016524220.tif 000015
【図７】
2016524220.tif 000016
【図８】
2016524220.tif 000017
【図９】
2016524220.tif 000018
【図１０】
2016524220.tif 000019
【図１１】
2016524220.tif 000020
【図１２】
2016524220.tif 000021
【図１３】
2016524220.tif 000022
【図１４】
2016524220.tif 000023
【図１５】
2016524220.tif 000024
【図１６】
2016524220.tif 000025
【図１７】
2016524220.tif 000026
【図１８】
2016524220.tif 000027
【図１９】
2016524220.tif 000028
【図２０】
2016524220.tif 000029
【図２１】
2016524220.tif 000030
【図２３Ｂ】
2016524220.tif 000031
【図２４】
2016524220.tif 000032
【図２５Ａ】
2016524220.tif 000033
【図２５Ｂ】
2016524220.tif 000034
【図２６Ａ】
2016524220.tif 000035
【図２６Ｂ】
2016524220.tif 000036
【図２７】
2016524220.tif 000037
【図２８】
2016524220.tif 000038
【図２９】
2016524220.tif 000039
【国際調査報告】
2016524220.tif 000040
2016524220.tif 000041
2016524220.tif 000042
2016524220.tif 000043
2016524220.tif 000044