(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて、アプリケーション依存関係情報を利用してバックアップサービス操作を効率的に実行する方法であって、
前記コンピュータは、アプリケーション依存関係情報を１つのアプリケーションおよび他のアプリケーションの間で通信するためのアプリケーション依存関係アプリケーションプログラムインターフェース（ＡＰＩ）と、共通ソフトウェアエージェントと、前記エージェントによって利用される記憶コンポーネントと、バックアップサービスとを備え、
前記コンピュータシステムにロードされたアプリケーションを登録する処理と、
少なくとも１つのアプリケーション依存関係情報を前記記憶コンポーネントに記憶する処理と、
前記記憶コンポーネントからの前記アプリケーション依存関係情報を前記バックアップサービスに通信する処理と
を含み、前記バックアップサービスがアプリケーションのフリーズ順序の決定を含み、前記バックアップサービスが、決定された前記アプリケーションのフリーズ順序を反映する順序でアプリケーションフリーズを実行すること
を含むことを特徴とする方法。
【請求項２】
前記バックアップサービスがスナップショットサービスを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーション依存関係アプリケーションプログラムインターフェース（ＡＰＩ）を前記コンピュータシステムにロードする処理をさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記バックアップサービス操作に関連して使用するために、前記バックアップサービスが共通のソフトウェアエージェントに１組のアプリケーション依存関係情報を要求する処理をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記１組のアプリケーション依存関係情報が、前記復元操作を首尾よく完了させるための、前記記憶コンポーネントからの最小限の１組の情報であることを特徴とする請求項４に記載の方法。
【請求項６】
前記エージェントが少なくとも１つの登録済みアプリケーションに、前記サービスによって要求された前記１組のアプリケーション依存関係情報からの情報を求める要求を発行する処理をさらに含むことを特徴とする請求項４に記載の方法。
【請求項７】
少なくとも１つの登録済みアプリケーションが前記エージェントからの要求に応えて前記エージェントに情報を通信する処理をさらに含み、前記情報が前記少なくとも１つのアプリケーションの前記コンピュータシステムをまたいで存在する外部依存関係に関することを特徴とする請求項１に記載の方法。
【請求項８】
アプリケーションを登録解除する処理をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記ＡＰＩプロトコルがＸＭＬプロトコルであることを特徴とする請求項１に記載の方法。
【請求項１０】
前記エージェントが、階層的アプリケーション依存関係を反映する表形式で、前記アプリケーション依存関係情報を前記記憶コンポーネントに記憶することを特徴とする請求項１に記載の方法。
【請求項１１】
クライアントコンピュータに請求項１に記載の処理を実行するよう命令するコンピュータで実行可能な命令を有することを特徴とする、コンピュータ可読媒体。
【請求項１２】
請求項１に記載のアプリケーション依存関係アプリケーションプログラムインターフェース（ＡＰＩ）のためのプログラムであって、該プログラムは請求項１に記載のコンピュータシステム内のコンピュータにより実行されることを特徴とするプログラム。
【請求項１３】
少なくとも１つのアプリケーションが、それに関連する少なくとも１つの外部データ依存関係を有する、前記システムにロードされた複数のアプリケーションと、
アプリケーション依存関係情報を記憶するための記憶コンポーネントと、
前記システム中のアプリケーションプログラムインターフェース（ＡＰＩ）の通信プロトコルに従って機能して、前記エージェントから前記ＡＰＩに通信されたアプリケーション依存関係情報を処理し、前記アプリケーション依存関係情報を前記記憶コンポーネントに記憶するエージェントと、
前記エージェントに１組のアプリケーション依存関係情報を求める要求を行うサービスであって、前記エージェントが、サービスからの要求に応えて前記アプリケーション依存関係情報を収集し記憶しパッケージ化し、前記サービスによるさらなる処理のために前記サービスに前記１組のアプリケーション依存関係情報を引き渡すサービスと
を含み、前記エージェントが前記情報を引き渡す先の前記サービスが、バックアップサービスであり、前記サービスが前記依存関係情報に基づいてアプリケーションフリーズ順序を決定することを特徴とするコンピュータシステム。
【請求項１４】
前記サービスがスナップショットサービスを含むことを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１５】
前記エージェントが、階層的アプリケーション依存関係を反映する表形式で前記アプリケーション依存関係情報を記憶コンポーネントに記憶することを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１６】
前記１組のアプリケーション依存関係情報が、前記サービスを首尾よく完了させるための、前記記憶コンポーネントからの最小限の１組の情報であることを特徴とする請求項１３に記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
(発明の背景)
(発明の分野)
本発明は、コンピュータシステムの諸側面のバックアップまたは復元に関する。より詳細には、本発明は、アプリケーション依存関係に関する情報を記憶して、コンピュータシステムがその依存関係情報に関連するクラッシュ前の状態に効率的に復帰できるようにするための方法およびシステムに関する。本発明はまた、バックアップ情報が入手可能なポイントインタイムに関する復元操作を対象とする。さらに、本発明は、既知または所望の事前のシステム構成へのロールバックが望ましい可能性がある状況を対象とする。
【０００２】
(従来の開発の簡単な説明)
コンピュータシステムがクラッシュし、またはシステムがフリーズすると、些細なことから復元不可能なことまで及ぶ多くの結果が生じ得る。独立型コンピュータまたはクライアントコンピュータでは、ローカルシステムのクラッシュによって作業プロダクト(work product)の喪失が起こり得る。例えば、正しく保管されなかったものは失われてその後のアクセスまたは使用ができなくなる可能性がある。さらに、コンピュータシステムを再起動しなければならず、その結果さらに時間がかかることに、ユーザが不便さを感じるかもしれない。ネットワークサーバおよび他のコンピュータシステムの場合には、システムクラッシュは、多数のユーザ、クライアント、および/または顧客に、より広範な影響を及ぼし得る。コンピュータシステムがますます複雑になるにつれて、全体的に言えば、プログラマは、コンピュータまたはアプリケーションが「フリーズ」または「クラッシュ」するシステム状態を完全になくすことができなくなったように思われる。
【０００３】
「事前状態への復元」シナリオでは、システムを所望の事前状態に復元することが望まれる。これは、例えば新しいソフトウェアをインストールして新しいシステムが期待通りに動作しないときに有用である。
【０００４】
システムクラッシュまたはフリーズの確率がゼロでないことが真実であると受け入れて、回復として知られる、コンピュータシステムをクラッシュした状態から安定した状態に回復する処理の改善に関する研究の分野が生まれた。システムの不安定状態からの回復が、多くの研究および開発の主題となった。
【０００５】
一般に、再起動または再実行回復の目的は、クラッシュした後、クラッシュ直前にコンピュータシステムが動作していた、事前の正しいと推定される状態に、または整合性のある1組のバックアップ情報が知られているポイントインタイムに、コンピュータシステムを復帰させることである。アプリケーション依存関係の全てに関する整合性のある状態のポイントインタイム情報が確保できないために、復元またはバックアップサービスが誤ってアプリケーションの状態を誤った状態に設定変更することがあり、あるいはバックアップまたは回復中のアプリケーション、ボリューム、または他のオブジェクトについて安定な状態に回復させるためには、コンピュータシステムのあらゆる処理のリソースをきわめて大量に使う力まかせのフリーズまたはフラッシュが必要となることがある。
【０００６】
例えば、データベースシステムの設計者は、失われたデータ量、クラッシュ前の動作状態に回復するために必要な仕事量、および通常動作時のデータベースシステムに回復が及ぼす性能上の影響を最小限に抑える、データベース回復技術の設計を試みてきた。しかし、復元またはバックアップサービスの前に、ファイル保管操作、レジストリ書込み操作、データベース記憶操作、アクティブディレクトリ書込み操作に関する依存関係、または他の同様の依存関係が存在するときには、原子的ポイントインタイムのクラッシュ前状態への回復が望ましい。
【０００７】
開発されたあるタイプの効率的なバックアップ技術は、ボリュームのスナップショットを提供するスナップショットプロバイダを利用する。システムがクラッシュしたときにボリュームをファイル毎に力づくで回復させる代わりに、スナップショットによってコンピュータシステムの状態を任意のポイントインタイムで「フリーズ」させることができ、その結果はるかに速くリソースをあまり使わないバックアップ処理が可能になる。一般に、スナップショットを時間t0で生成するように要求し、そのスナップショットの生成は時間t0でのボリュームデータを反映したものになる。t0の後は、スナップショット自体の内容をバックアップすることができ、したがって差分データまたはファイルを使用することによってフルバックアップが避けられ、その結果システムが事前の時間から変化したデータのみに効率的に作用することが可能になる。
【０００８】
米国特許出願第09/505,447号「Support for Multiple Temporal Snapshots of Same Volume」(2000年2月16日出願、Cabrera他)、米国特許出願第09/505,344号「Kernel-Based Crash-Consistency Coordinator」(2000年2月16日出願、Golds他)、および米国特許出願第09/505,450号「System and Method for Growing Differential File on a Base Volume of a Snapshot」(2000年2月16日出願、Kusters他)は、概してバックアップ処理に関し、スナップショットシステムの様々な側面を対象としている。これらの特許出願をスナップショットサービスの提供に関する背景情報として、参照により本明細書に組み込む。
【０００９】
しかし、ボリューム、アプリケーション、または他のオブジェクトについてバックアップまたは復元サービスを実行しようとするときには、バックアップまたは復元する所与のオブジェクトについて、原子的ポイントインタイムでのオブジェクトの状態を知らなければならないという問題にしばしば直面する。したがって、「スナップショット」について適時にオブジェクトの状態がわかっている最新のポイントインタイムが、オブジェクトを復元できる最新のポイントインタイムである。
【００１０】
同様に、バックアップまたはスナップショットサービスを提供中の場合、スナップショットが原子的ポイントインタイムに関する情報を整合的に反映するように、バックアップするオブジェクトの依存関係情報を適時にかつ正しい順序でフリーズしなければならない。
【００１１】
バックアップする所与のオブジェクトが依存する、アプリケーション、タスク、または他のオブジェクトの状態を、そのような単独のポイントインタイムについて抽出できない場合には、他のタスクに対してあるタスクをバックアップし終えるのに要する任意の時間量によってそれらのアプリケーション、タスク、またはオブジェクト内のデータが破損されることがあるので、バックアップ処理が損なわれる可能性がある。まず、タスクが異なると、通常それを完了するのにかかる時間が異なる。すなわち、読取り操作を完了するのにかかる時間は、書込み操作を完了するのにかかる時間とは異なる。システムリソースが動的に使用されるときには、ファイルシステムに関連する書込み操作などの同じタスクであっても、完了するのに異なる時間がかかる可能性がある。さらに、多数のアプリケーションが同じオブジェクトに書き込んでいるのか、あるいは多数のアプリケーションが同じオブジェクトに依存していて、その結果そのバックアップサービスが気付くことができない依存関係を生み出しているのかがわからないことがある。
【００１２】
したがって、所与のボリューム、アプリケーション、またはオブジェクトについて適切にバックアップまたは復元をする操作では、所与のオブジェクトの依存関係に応じた特定の順序で、ある処理またはファイルを最初にフリーズさせる(当面はそれに関連してそれ以上書込みをしない)必要があるかもしれない。特に、原子的ポイントインタイムに関する状態情報がポイントインタイムバックアップ情報を提供する上で極めて重要であるスナップショットサービスに関しては、どのアプリケーションまたは処理だけがどのような順序で作用を受ける（フリーズされる）必要があるかをインテリジェントに決定することが有利である。
【００１３】
どのアプリケーションを、復元すべきオブジェクトの以前の既知の状態への復元操作から除外できるか情報に基づいて決定することがさらに有益であり、復元処理がさらに効率よくなるはずである。
【００１４】
しばしば、システムクラッシュまたはフリーズには、問題のあるほんの少数のファイルまたは処理のみが関与していることがある。例えばアプリケーションが応答していないときには、一般に、システムから見て応答していないアプリケーションだけを終了させ、あるいはプログラムの応答をフリーズさせている可能性のあるアプリケーション依存関係を見つけることが望ましい。実際、アプリケーションAのプログラマが、アプリケーションAを実行するために所与のコンピュータシステムにインストールされる他のアプリケーションB、C、Dなどの全ての組合せおよびその順序(permutation)を予測できないことがよくある。アプリケーションAの動作状態は、正しく実行させるためにアプリケーションAのシステム空間にある、他の特定のアプリケーション、記憶コンポーネント、処理、およびファイルに依存することがあり、これらの依存関係が動的に変化し得る。したがって、それが垂直または水平に依存する可能性のあるオブジェクトをフリーズさせることによってアプリケーションAの状態を原子的ポイントインタイムでフリーズさせる方法が有用であり、適時にスナップショットについてデータのボリューム全体をフリーズさせる(単独オブジェクトのバックアップに必要とされるよりもはるかに多くフリーズする)ことに勝る大きな改善となる。その依存関係によって決まる順序でアンラベル(unravel)しなければならない埋め込み型の依存関係が存在することがあるので、バックアップ操作より前に、バックアップ中の所与のオブジェクトが依存し得るオブジェクトを正しい順序でフリーズまたはフラッシュしなければならない。
【００１５】
したがって、リソースから見てコンピュータシステムのオブジェクトのフルバックアップまたは復元が望ましくないので、クラッシュから遡及的に回復する、またはスナップショットサービスなどのバックアップを実施する方法は、オブジェクトの依存関係に基づく選択的で効率的な正しい順序で特定のデータを選択的かつインテリジェントにフリーズすることによって、回復フィールドをさらに有用なものにする。
【００１６】
米国特許出願第268,146号「Database Computer System Using Logical Logging to Extend Recovery」(1999年3月15日出願、Lomet他)は、回復処理時のロギングのコストを低減する論理ロギング操作を利用する技術を記載している。フラッシュ依存関係からノード型オブジェクトを隠す(unexpose)識別操作の導入による、アプリケーションのフラッシュ依存関係情報のオンザフライアンラッピング(unwrapping)が開示されている。したがって、システムクラッシュの場合、アプリケーション依存関係の問題は論理ロギング操作を介して既に論じられており、アンラベル(unravel)またはアンラップ(unwrap)された依存関係に関連して直面する回復の問題はない。しかし、この技術では階層的オブジェクト依存関係情報に基づいてオブジェクトをフリーズする順序を決定せず、その結果、それを使用して全てのオブジェクト依存関係にわたって所与のポイントインタイムについてのオブジェクト状態をフリーズすることができない。
【００１７】
したがって、選択的で効率的な正しい順序でアプリケーション依存関係情報を選択的かつ明示的に分析することによって、クラッシュから遡及的に回復する、またはバックアップまたは復旧操作を実行する方法を提供することが望ましい。ボリュームスナップショット依存関係に関する情報、すなわち、所与のポイントインタイムについて、どのアプリケーションが他のどのアプリケーションに依存するかに関する、階層的な情報を保持することがさらに有益である。この後者のアプリケーションもさらに依存関係をもつことがあり、その後も同様である。クラッシュからの回復に関連するボリュームスナップショット依存関係情報を使用して、クラッシュした状態からの回復処理を改善できることがさらに望ましい。アプリケーションが依存するオブジェクトに関する情報をアプリケーションが運ぶための、単一プロトコルを提供することがいっそう望ましい。
【００１８】
(発明の概要)
本発明は、一般に、不安定な、フリーズした、またはクラッシュした状態になる可能性のあるコンピュータシステムに関する。好適実施形態では、ターゲットオブジェクトに関する依存関係情報の表を繰り返し作成できるように、アプリケーションプログラムインターフェース(API)プロトコルを使用して、登録済みのアプリケーションにアプリケーション依存関係情報に関する要求を出す。所与のボリュームまたはオブジェクトについて全てのアプリケーション依存関係が同時に捕捉されるときには、ボリューム全体またはオブジェクト全体のプログラムおよびデータ依存関係情報を所与の時間保持することができる。この依存関係情報へのアクセスによって、コンピュータシステムが、所与のボリュームまたはオブジェクトのスナップショットなどのバックアップもしくは復旧に関連して、どのファイルをどのような順序でフリーズまたはフラッシュするかだけでなく、どのボリュームまたはオブジェクトをフリーズ処理から除外できるかわかるので有利である。
【００１９】
サービスからアプリケーション依存関係情報を求める要求がされた後、コンピュータシステムは、依存関係情報を変換または処理し、それによって所与の1組のボリュームまたはオブジェクトにおける回復イベントを順序付けることができる。その1組のボリュームまたはオブジェクトは、同じ場所に配置することも、ネットワーク環境を介して互いに離して配置することもできる。好適実施形態では、システムとアプリケーションの間の反復的な協働処理、およびアプリケーションプログラムインターフェース(API)に関する共通のプロトコルに関連して、依存関係情報が生成される。したがって、アプリケーションは、記憶コンポーネントを有する共通のソフトウェアエージェントにその外部依存関係を通信し、それによって、整合性のあるポイントインタイムでのターゲットオブジェクトについてのアプリケーション依存関係に関する、表、リスト、または他の編成情報を保持することができる。この表、リスト、または他の編成情報は、バックアップ、復旧、回復処理などのサービスの一部として、または整合性のあるポイントインタイムのアプリケーション依存関係情報がそのサービスに有用であるサービスの一部として使用することができるので有利である。
【００２０】
本発明の他の特徴を以下に述べる。
【００２１】
ボリュームスナップショット依存関係情報を提供するためのシステムおよび装置について、添付の図面を参照してさらに説明する。
【００２２】
(好ましい実施の形態の詳細な説明)
本発明は、その使用によって、不安定な、フリーズした、またはクラッシュした状態を引き起こす可能性のあるコンピュータシステムに関する。所与のボリューム(または他のターゲットオブジェクト)について全てのアプリケーション依存関係が同時に捕捉されるときには、ボリューム全体のプログラムおよびデータ依存関係情報を所与の時間保持することができる。このボリューム依存関係情報にアクセスすることによって、バックアップ、復元、または他の回復処理で、コンピュータシステムが、どのファイルを含み、含まれたファイルをどのように順序付けるべきかわかるので有利である。同様に、どのファイルを処理から除外できるかもわかる。
【００２３】
アプリケーション依存関係とは、ファイル、レジストリキー、データベースレコード、アクティブディレクトリ構成要素、IISメタベースなどのうちの1つまたは複数のものに関する、アプリケーション状態依存関係の階層的編成を指す。
【００２４】
好適実施形態では、アプリケーションプログラムインターフェース(API)依存関係モジュールが、ターゲットオブジェクトへの依存関係を有する特定のオブジェクトに関するアプリケーション依存関係情報を要求する。その依存関係情報は、システムとアプリケーションの間の反復的な協働処理に関連して生成される。協働処理の結果、アプリケーションはその外部依存関係を共通のソフトウェアエージェントに通信し、それによってアプリケーション依存関係に関する情報の表またはリストを記憶コンポーネントに保持することができる。これで、クラッシュまたはフリーズした場合に、コンピュータシステムがボリューム(またはターゲットオブジェクト)のスナップショット依存関係情報を変換または処理し、それによって所与の1組のボリュームにおける回復イベントを順序付けることができる。この情報の表またはリストを持続させて、ターゲットオブジェクトの状態および/または依存関係が変化しないままである、別のバックアップ、復旧、または回復処理の一部として後で再使用することができるので有利である。
【００２５】
好適実施形態では、バックアップまたはスナップショットサービスが、サービスのバックアップまたはスナップショット操作に関連してアプリケーション依存関係情報を使用する。したがって、バックアップサービスは、依存関係の階層構造に基づいて、バックアップを首尾よく完了させるために、どのアプリケーションおよび処理を他のものより先にフリーズさせる必要があるかわかっている。同様に、スナップショットサービスは、依存関係の階層に基づいてスナップショットを首尾よく完了するために、他より先にどのアプリケーションおよび処理をフリーズする必要があるかわかっている。スナップショットが、順序外れのアプリケーションフリーズ、および発明の背景で述べたような他の潜在的なデータ破損に敏感であるので、整合性のあるポイントインタイムシステム、ボリューム、またはオブジェクトスナップショットは、本発明に特によく適している。
【００２６】
前述のように、本発明は改善されたシステムクラッシュ回復技術を提供する。本発明は、従来技術の欠点に様々な方法で対処する。前述のように、システムクラッシュ回復技術に関連する問題点は、ボリュームスナップショット依存関係に関する情報が、バックアップまたは回復処理、あるいはアプリケーション依存関係情報の使用に適した他のサービスに関連する使用のためには利用可能でないことである。本発明のインフラストラクチャは、アプリケーション依存関係情報を記憶して、システムのクラッシュ前状態への復帰に関連して、またはバックアップまたはスナップショット処理あるいは他のサービスに関連して使用するために、アプリケーションおよび他のオブジェクトとの通信を保持するAPIを提供する。
【００２７】
本発明によれば、所与の時間のシステムのアプリケーションに関するアプリケーション依存関係情報をシステムクラッシュの前後を通じて持続させることができ、また、いくつかまたは多くのターゲットオブジェクトの依存関係を特定の順序で復元することが望ましい復元操作で、その依存関係情報を使用することができる。例えば、サービスを事前設定された規則または他の規則に従って定期的に呼び出すことができ、それによってサービスはターゲットオブジェクトに関する依存関係データの整合性のある1組のポイントインタイムを決定するようシステムに要求する。後の、所与の時間についての依存関係情報の使用には、例えばバックアップまたはクラッシュ回復手順の前に、どのアプリケーションをどのような順序で書込み操作からフリーズさせるか決定することを含むことができる。
【００２８】
図1および以下の説明は、本発明を実行できる適切なコンピュータ環境についての簡潔で一般的な説明を提供しようとするものである。必ずしも必要ではないが、本発明は、クライアントワークステーションまたはサーバなどのコンピュータによって実行中のプログラムモジュールなど、コンピュータで実行可能な命令の一般的な状況で説明する。一般にプログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実現する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに本発明が、ハンドヘルド装置、マルチプロセッサシステム、マルチプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含めて他のコンピュータシステム構成によって実行できることが当業者には理解されよう。本発明はまた、通信ネットワークによってリンクされたリモート処理装置によってタスクが実行される、分散型コンピュータ環境でも実行することができる。分散型コンピュータ環境では、プログラムモジュールをローカルメモリ記憶装置およびリモートメモリ記憶装置の両方に配置することができる。
【００２９】
図1に示すように、例示的な汎用コンピュータシステムとしては従来のパーソナルコンピュータ20などが含まれ、それは、処理ユニット21、システムメモリ22、およびシステムメモリを含む様々なシステムコンポーネントを処理ユニット21に結合させるシステムバス23を備える。システムバス23は、様々なバスアーキテクチャのうちのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのバス構造のうちのどれでもよい。システムメモリは、読取り専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。起動時などに、パーソナルコンピュータ20内のエレメント間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)26が、ROM24中に格納されている。パーソナルコンピュータ20はさらに、ハードディスク(図示せず)から読み取りそれに書き込むハードディスクドライブ27、着脱可能磁気ディスク29から読み取りそれに書き込む磁気ディスクドライブ28、CD-ROMや他の光媒体などの着脱可能光ディスク31から読み取りそれに書き込む光ディスクドライブ30を含むことができる。ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれハードディスクドライブインターフェース32、磁気ディスクドライブインターフェース33、および光ドライブインターフェース34によってシステムバス23に接続されている。ドライブおよびその関連コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびパーソナルコンピュータ20用の他のデータの不揮発性記憶を行う。本明細書で説明した例示的な環境では、ハードディスク、着脱可能磁気ディスク29、および着脱可能光ディスク31を使用するが、例示的な操作環境では、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイ(Bernoulli)カートリッジ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)など、コンピュータによってアクセス可能なデータを記憶できる他のタイプのコンピュータ可読媒体も使用できることが当業者には理解されよう。
【００３０】
ハードディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25には、オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37、およびプログラムデータ38を含めて、いくつかのプログラムモジュールを記憶することができる。ユーザは、キーボード40やポインティング装置42などの入力装置によって、パーソナルコンピュータ20にコマンドおよび情報を入力することができる。他の入力装置(図示せず)としては、マイクロホン、ジョイスティック、ゲームパッド、サテライトディスク、スキャナーなどがある。前述および他の入力装置は、しばしばシステムバスに結合されたシリアルポートインターフェース46によって処理ユニット21に接続されるが、他のインターフェース、例えばパラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などによって接続することもできる。モニタ47または他のタイプの表示装置も、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続される。パーソナルコンピュータは、通常モニタ47に加えてスピーカやプリンタなど他の周辺出力装置(図示せず)も含む。
【００３１】
パーソナルコンピュータ20は、リモートコンピュータ49など1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ49は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共通ネットワークノードとすることができ、図1にはメモリ記憶装置50のみを示したが、通常はパーソナルコンピュータ20に関して前述したエレメントの多くまたは全てを含む。図1に示す論理接続には、ローカルエリアネットワーク(LAN)51および広域ネットワーク(WAN)52がある。このようなネットワーク環境は、オフィス、エンタープライズワイドコンピュータネットワーク、イントラネット、およびインターネットでは一般的なものである。
【００３２】
LANネットワーク環境で使用するときには、パーソナルコンピュータ20は、ネットワークインターフェースまたはアダプタ53によってLAN51に接続される。WANネットワーク環境で使用するときには、パーソナルコンピュータ20は、通常インターネットなど広域ネットワーク52における通信を確立するモデム54または他の手段を含む。モデム54は、内部でも外部でもよく、シリアルポートインターフェース46を介してシステムバス23に接続される。ネットワーク環境では、パーソナルコンピュータ20またはその一部分に関して示されたプログラムモジュールを、リモートメモリ記憶装置に記憶することができる。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されたい。
【００３３】
前述のコンピュータがコンピュータネットワークの一部として配置でき、本発明が、どんな数のメモリまたは記憶ユニットを有するどのようなコンピュータシステムにも、ならびにどんな数のボリュームに生じるどのような数のアプリケーションおよび処理にも関係することに留意されたい。したがって、本発明は、ネットワーク環境に配置された、リモートまたはローカル記憶装置を有するサーバコンピュータおよびクライアントコンピュータの両方に適用することができる。図2は、サーバがネットワークを介してクライアントコンピュータと通信する、本発明を使用することができる例示的なネットワーク環境を示す図である。図のように、いくつかのサーバ10a、10bなどが、通信ネットワーク14(LAN、WAN、イントラネット、またはインターネットとすることができる)を介していくつかのクライアントコンピュータ20a、20b、20cなどに相互接続されている。通信ネットワーク14がインターネットであるネットワーク環境では、例えば、サーバ10を、クライアント20がハイパーテキスト転送プロトコル(HTTP)など既知のいくつかのプロトコルのいずれかを介して通信するウェブサーバとすることができる。
【００３４】
各クライアントコンピュータ20およびサーバコンピュータ10には、様々なアプリケーションプログラムモジュール36、他のプログラムモジュール37、およびプログラムデータ38、ならびに様々なタイプの記憶エレメントまたはオブジェクトへの通信またはアクセスを備えることができる。したがって、各コンピュータ10または20は、それに関連するアプリケーション依存関係情報を有することができ、その依存関係はシステムにわたって存在することができ、ボリューム内依存関係、ボリューム間依存関係、および/またはネットワークをまたぐ依存関係、アプリケーション状態が外部に依存する他のタイプの依存関係がそれに含まれる。
【００３５】
したがって本発明は、ネットワークにアクセスしそれと対話するクライアントコンピュータと、クライアントコンピュータと対話するサーバコンピュータとを有する、コンピュータネットワーク環境で使用することができる。前述のように、本発明によれば、アプリケーション(または他のオブジェクト)、共通のソフトウェアエージェント、レジストリ、記憶コンポーネント、およびサービスのうちの1つまたは複数のものの間でのアプリケーション依存関係情報の通信に関連してAPIプロトコルを使用する。このAPIは、様々なネットワークまたはシステムアーキテクチャと共に実行でき、図示し説明した例に限られるものではない。
【００３６】
図３Ａおよび図３Ｂは、サービスに関連して使用するために記憶装置内に捕捉される、潜在的なアプリケーション依存関係情報の垂直または水平のアスペクトを反映する状態依存関係の例示的な階層構造を示す。図3Aでは、アプリケーションXがアプリケーションYおよびZと通信し、それによってアプリケーションYがデータベース400aの読取りアクセスを実行し、アプリケーションZはデータベース400bに書込みアクセスを実行する。アプリケーションXは、ファイルオブジェクトF1およびF2にも書き込むことができる。サービスは、この情報を、例えばバックアップや復元操作に関連して、ポイントインタイムで捕捉されたものとして使用することができる。したがって、アプリケーションXのポイントインタイム状態依存関係を知ることが、あるタイプのシステムサービス操作に大きな利益となり得る。図3Bは、共にデータベース400cに書込み操作を実行する、アプリケーション1および2における階層情報を示す。これらの書込み操作の一方または両方が、別のものよりも長く、同時に発生し、あるいはデータベース400cのデータを破損することがある。したがって、原子的ポイントインタイムでのアプリケーション1および2のアプリケーション依存関係に関する情報は、例えばクラッシュ後のアプリケーション1の復元処理に大いに役立つ。アプリケーション1の復元を試みる前にアプリケーション2がフリーズしていない場合には、エラーが起こることがある。さらに、階層的な依存関係情報がわかれば、アプリケーション1および2に関するバックアップ操作に役立つ。アプリケーション状態の階層構造のこれらの例にはアプリケーションおよびデータベースが含まれるが、依存関係を有するデータは、他の同様のオブジェクトに対して依存関係を有する、ファイル、データベースレコード、レジストリキー、アクティブディレクトリ構成要素、IISメタベースなどを含めて、多くの様々なタイプの記憶エレメントに記憶できることを理解されたい。
【００３７】
図4は、本発明のAPIによって使用される、アプリケーション依存関係情報を記憶するための例示的なデータ構造を示す。したがって、データベースやハードディスクメモリなどの記憶コンポーネント12は、それに記憶された依存関係情報のリストまたは表を備えることができる。本発明によれば、個々のリストまたは表は、例えば階層的な依存関係情報や捕獲時間情報、ならびにその情報を使用できるサービスに関する他の情報など、ヘッダ12aおよび指数部12bを含むことができる。好適実施形態では、階層的な依存関係情報12bはXML形式で表されるが、アプリケーション依存関係情報の表示および通信に適切な任意の形式にすることもできる。
【００３８】
前述のように、本発明はシステムとアプリケーションの間の協働処理を含む。図5のシステムアーキテクチャで示すように、登録済み(破線で示す)のアプリケーションは、その依存関係情報を求める要求に応えて、その外部依存関係を共通ソフトウェアエージェント510に通信することができる。したがって、サービス500は、所与のポイントインタイムについてのターゲットオブジェクトに関するアプリケーション依存関係情報を要求することができる。ターゲットオブジェクトを登録した後には、エージェント510がターゲットオブジェクトにターゲットオブジェクトのアプリケーション依存関係を求める要求をし、それによってターゲットオブジェクトの依存関係に関する情報の表またはリストの記憶コンポーネント12への記憶を開始することができる。次いで、アプリケーションに依存関係情報をさらに要求することによって、ターゲットオブジェクトのさらなる依存関係について調査する。この反復処理によって、ターゲットオブジェクトの依存関係の完全なリストを作成し、記憶コンポーネント12に記憶する。次いでその完全なリストを、エージェント510を介してサービス500に通信する。サービス500は、ターゲットオブジェクトについて整合性のあるポイントインタイム依存関係を生成するための一般的なサービスとすることができ、バックアップ、スナップショット、または復元サービスとは別々にまたはそれらに関連して使用することができる。
【００３９】
APIプロトコルによって、アプリケーション依存関係情報を収集するためサービス規則に基づき依存関係情報に関してアプリケーションにスケジュール呼び出しを行うことが可能になる。さらに、本発明のAPIによって実現されたインフラストラクチャにアプリケーションを登録またはインストールすることができ、それによって初期の1組の状態依存関係を同時に記憶するためにエージェントに通信することができる。アプリケーション自体に関する状態が変化するか、あるいは1組の完全な依存関係情報を定期的にスケジュールし(エージェント510またはサービス500により)収集できるときはいつでも、アプリケーションがアプリケーション依存関係情報を発行することも技術的に実現可能である。したがって、本発明のAPIプロトコルにより、アプリケーションはそれが他のどのオブジェクトまたはアプリケーションに依存しているかを理解することができる。すなわち、アプリケーションはそれ自体の依存関係を認識している。さらに、本発明のAPIとアプリケーションApp1からAppN、エージェント510および/またはバックアップサービス500との間の通信のための例示的な形式は、XMLであるが、やはり特定の形式に限られるものではないことに留意されたい。
【００４０】
図6は、記憶コンポーネント12に記憶されエージェント510によって管理されるアプリケーション依存関係情報を、サービス操作に関連してサービスによって使用する、本発明による例示的なシーケンスの流れ図である。例えば600で、本発明のAPIプロトコルによって与えられたインフラストラクチャにアプリケーションを登録することができる。アプリケーションは、いつでも登録または登録解除することができる。610で、アプリケーション依存関係が望ましい情報であるか判断する。620で、サービス500が、特定のボリューム、アプリケーション、データベース、および/またはターゲットオブジェクトなどに関する依存関係情報を要求する。630で、エージェント510は、API依存関係モジュールにターゲットオブジェクトに関する要求を行い、オブジェクトに関する1組の依存関係情報を取得する。640で、エージェント510は、ターゲットオブジェクトに様々な程度で依存するある登録済みアプリケーションに依存関係情報を要求する。エージェントが、サービスから要求されたターゲットオブジェクトの依存関係に限られた要求を発行することが好ましい。
【００４１】
640から660で、ターゲットオブジェクト(例えば、図3AのアプリケーションXで示される階層情報)に関する依存関係情報の完全バージョンが記憶コンポーネント１２に記憶されるまで、1組の完全な依存関係情報を求める様々な要求に従って、エージェント510に依存関係情報を繰り返し引渡す。ターゲットオブジェクトに関する1組の完全な依存関係情報の要求が満たされたので、660ではそのアプリケーションから引き渡されるそれ以上のアプリケーション依存関係情報はない。670で、エージェント510はサービス500に依存関係情報を通信する。好適実施形態では、サービスからの要求を満たすのに必要な依存関係情報の最低限の量だけをサービス500に通信する。680で、階層的依存関係情報をサービスによって処理し使用する。これで、690でサービスからの要求が満たされ、任意でフローを610に戻すことができる。
【００４２】
図6の例示的なシーケンスを一般のサービス500に関連して述べたが、回復のための処理、アプリケーション相互作用を含む処理、またはアプリケーションが他のアプリケーションおよびオブジェクト操作に関して考慮される処理のいずれにも、アプリケーション依存関係情報を広範囲に使用することが考えられる。
【００４３】
図7は、本発明に従って記憶されたアプリケーション依存関係情報を使用してバックアップまたはスナップショット操作を実行する好適実施形態を示す、本発明による例示的なバックアップシーケンスの流れ図である。図7は、図6のアーキテクチャにオーバーレイする、特定のタイプのサービス、フルバックアップ操作などのバックアップサービス、またはスナップショットサービスを示す。一般的なサービス500について説明したが、より具体的なサービスも使用することができる。本発明の好適実施形態では、710ではバックアップサービスに関連したアプリケーション依存関係情報が望ましく、720でターゲットオブジェクトについての情報を要求する。予めスケジュールされた依存関係情報の集合物があるため依存関係情報がすでに存在する場合、フローを770にスキップさせてバックアップサービスに情報を通信することができ、そうでない場合には図6のように630から660の動作を実行する。
【００４４】
次に、780で、ターゲットオブジェクトの依存関係情報からフリーズ順序を決定し、そのフリーズ順序を実行する。例えば、図3Bに示した階層的依存関係状況を用いて、780の動作に関連して使用できるフラッシュまたはフリーズ順序の決定および実行を示すことができる。例えば、ターゲットオブジェクトアプリケーション1に適切なバックアップサービスまたは復元などの他のサービスを実行するために、エージェント510によって収集されバックアップサービスに提供されたアプリケーション依存関係情報に基づき、バックアップサービスでは最初にアプリケーション2をフリーズまたはフラッシュさせ、次いでアプリケーション1をフリーズまたはフラッシュさせようと決定することができる。バックアップまたはスナップショットサービスにおいてコンピュータシステムのオブジェクトが適切な順序でフリーズした後、アプリケーション依存関係に関わらず790でバックアップまたはスナップショットサービスの操作を終了することができる。他のサービス操作を行うために、再度フローを710に戻すことができる。
【００４５】
本明細書で述べた様々な技術は、ハードウェアまたはソフトウェアによって、あるいは適切であれば両方の組合せによって実行することができる。したがって、本発明の方法および装置、あるいは特定の態様またはその一部分は、フロッピー（登録商標）ディスケット、CD-ROM、ハードドライブ、他の機械可読記憶媒体など、有形媒体で実施されるプログラムコード(すなわち命令)の形を取ることができ、そのプログラムコードがコンピュータなどの機械によってロードされ実行されるときには、その機械が本発明を実施する装置になる。プログラム可能なコンピュータでプログラムコードを実行する場合、コンピュータは通常、プロセッサ、プロセッサによって可読の記憶媒体(揮発性および不揮発性メモリ、および/または記憶エレメントを含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を備える。コンピュータシステムと通信するために、1つまたは複数のプログラムを高水準の手続き型言語またはオブジェクト指向プログラミング言語で実行することが好ましい。ただし、必要であれば、アセンブリ言語または機械語でプログラムを実行することもできる。いずれの場合にも、言語は、コンパイル済みまたはインタープリタ型言語であり、ハードウェアのインプリメンテーションと組み合わせることができる。
【００４６】
本発明の方法および装置は、電気的配線またはケーブル配線、光ファイバ、または他の形の伝送など、いくつかの伝送媒体によって伝送されるプログラムコードの形で実施することもでき、EPROM、ゲートアレイ、プログラム可能論理デバイス(PLD)、クライアントコンピュータ、ビデオレコーダなどの機械によってプログラムコードを受け取りロードし実行するときには、その機械が本発明を実施する装置になる。汎用プロセッサで実行する場合、プログラムコードがプロセッサと相まって、本発明のインデックス機能を実行する働きをする独特の装置を提供する。例えば、本発明の記憶技術およびスナップショット技術は、常に、それぞれデータの記憶またはデータのスナップショットの取得に関連して使用されるハードウェアとソフトウェアの組合せとすることができる。
【００４７】
本発明について様々な形の好適実施形態に関連して説明したが、本発明から逸脱することなく本発明と同じ機能を実行する、他の同様の実施形態を使用でき、あるいは説明した実施形態を修正および追加できることが理解されよう。例えば、好適実施形態では、依存関係情報の通信プロトコルとしてXMLを使用したが、本発明による依存関係情報の引渡しには多くの様々な通信およびネットワークプロトコルが適している可能性があることを理解されたい。さらに、ハンドヘルド装置オペレーティングシステムおよび他のアプリケーション特有のオペレーティングシステムを含めて、様々なコンピュータプラットフォームが考えられることを強調しておきたい。したがって、本発明はどの単独の実施形態にも限られるものではなく、添付の特許請求の範囲の範囲内で解釈すべきである。
【図面の簡単な説明】
【図１】  本発明の諸態様を組み込める汎用コンピュータを表すブロック図である。
【図２】  本発明の方法および装置をそれに関連して実行できるサーバを備える、例示的なネットワーク環境を表すブロック図である。
【図３Ａ】  本発明によるアプリケーション依存関係情報の例示的な階層構造を表すブロック図である。
【図３Ｂ】  本発明によるアプリケーション依存関係情報の例示的な階層構造を表すブロック図である。
【図４】  本発明によるアプリケーション依存関係情報を記憶する例示的な記憶コンポーネントのブロック図である。
【図５】  アプリケーション依存関係情報を記憶コンポーネントに通信する、本発明による例示的なシーケンスの流れ図である。
【図６】  サービスが、記憶コンポーネントに記憶されたアプリケーション依存関係情報を要求し利用する、本発明による例示的なシーケンスの流れ図である。
【図７】  本発明により記憶されたアプリケーション依存関係情報を利用してバックアップまたはスナップショット操作を実行する好適実施形態を示す、本発明による例示的なシーケンスの流れ図である。
【図１】
0004570312.tif 000002
【図２】
0004570312.tif 000003
【図３Ａ】
0004570312.tif 000004
【図３Ｂ】
0004570312.tif 000005
【図４】
0004570312.tif 000006
【図５】
0004570312.tif 000007
【図６】
0004570312.tif 000008
【図７】
0004570312.tif 000009