(57)【特許請求の範囲】
【請求項１】
アプリケーションの可用性を管理するためのコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実行され、
前記コンピューティングデバイス内の識別モジュールによって、フェールオーバークラスタの第１のクラスタノード上で実行するアプリケーションはクラスタ対応ではないことを識別する工程と、
前記識別モジュールが前記アプリケーションはクラスタ対応ではないことを識別する工程に応じて、前記識別モジュールによって、前記アプリケーションに対する構成データをストレージ場所へコピーするべきであることをモニタリングモジュールに通知する工程と、
前記モニタリングモジュールによって、前記フェールオーバークラスタの第２のクラスタノードがアクセス可能なストレージ場所へ前記アプリケーションの構成データをコピーする工程と、
前記第１のクラスタノードの障害を検出する工程と、
前記第２のクラスタノードに前記構成データを復元する工程と、
前記構成データに従って前記第２のクラスタノード上で前記アプリケーションを実行する工程と
を含むコンピュータ実装方法。
【請求項２】
前記第１のクラスタノード上で前記アプリケーションを起動するという要求を受け取る工程をさらに含み、
前記第１のクラスタノード上で実行する前記アプリケーションを識別する工程は、前記アプリケーションを起動するという前記要求を受け取る工程を含み、
前記アプリケーションの前記構成データをコピーする工程は、前記構成データの初期のバックアップを取る工程を含む、請求項１に記載の方法。
【請求項３】
前記アプリケーションの前記構成データが変化したことを判断する工程をさらに含み、前記アプリケーションの前記構成データをコピーする工程は、前記アプリケーションの前記構成データが変化したという前記判断に応じて実行される、請求項１に記載の方法。
【請求項４】
前記アプリケーションの前記構成データが変化したことを判断する工程は、
前記アプリケーションの前記構成データを格納する前記第１のクラスタノード上のディレクトリをモニタする工程と、
前記モニタしたディレクトリ内のデータの変化を検出する工程と
を含む、請求項３に記載の方法。
【請求項５】
既存の構成データと前記復元した構成データにおいて同じ設定および／またはオプションの単一コピーのみを保存することによって、ならびに、前記既存の構成データと前記復元した構成データにおいて異なる設定および／またはオプションの両方のコピーを保存することによって、既に前記第２のクラスタノード上に存在する構成データと前記復元した構成データとの差分マージを行う工程をさらに含む、請求項１に記載の方法。
【請求項６】
前記第１のクラスタノードおよび前記第２のクラスタノードは同じホストシステム上で実行され、
前記第１のクラスタノードおよび前記第２のクラスタノードの少なくとも１つは、前記ホストシステム上でゲストシステムとして実行される仮想マシンとして実装される、請求項１に記載の方法。
【請求項７】
アプリケーションの可用性を管理するためのシステムであって、
フェールオーバークラスタの第１のクラスタノード上で実行するアプリケーションはクラスタ対応ではないことを識別し、
前記アプリケーションはクラスタ対応ではないことを識別する前記工程に応じて、前記アプリケーションに対する構成データをストレージ場所へコピーするべきであることをモニタリングモジュールに通知する
ようプログラムされた識別モジュールと、
前記フェールオーバークラスタの第２のクラスタノードがアクセス可能なストレージ場所へ前記アプリケーションの構成データをコピーするようプログラムされたモニタリングモジュールと、
前記第１のクラスタノード上にインストールされた第１のクラスタエージェントであって、前記モニタリングモジュールと通信するようプログラムされた第１のクラスタエージェントと、
前記第２のクラスタノード上にインストールされた第２のクラスタエージェントであって、
前記第１のクラスタノードの障害を検出し、
前記第２のクラスタノードに前記構成データを復元し、
前記構成データに従って前記第２のクラスタノード上で前記アプリケーションを実行するようプログラムされた第２のクラスタエージェントと、
前記識別モジュール、前記モニタリングモジュール、前記第１のクラスタエージェントおよび前記第２のクラスタエージェントを実行するよう構成された少なくとも１つのプロセッサと
を備えるシステム。
【請求項８】
前記第１のクラスタエージェントは、前記第１のクラスタノード上で前記アプリケーションを起動するという要求を受け取るようさらにプログラムされ、
前記識別モジュールは、前記アプリケーションを起動するという前記要求を受け取る工程によって、前記第１のクラスタノード上で実行する前記アプリケーションを識別するようプログラムされ、
前記モニタリングモジュールは、前記構成データの初期のバックアップを取る工程によって、前記アプリケーションの前記構成データをコピーするようプログラムされた、請求項７に記載のシステム。
【請求項９】
前記第１のクラスタエージェントは、前記アプリケーションの前記構成データが変化したことを判断するようさらにプログラムされ、
前記モニタリングモジュールは、前記アプリケーションの前記構成データが変化したという前記判断に応じて前記アプリケーションの前記構成データをコピーするようプログラムされた、請求項７に記載のシステム。
【請求項１０】
前記第１のクラスタエージェントは、
前記アプリケーションの前記構成データを格納する前記第１のクラスタノード上でディレクトリをモニタする工程によって、
前記モニタしたディレクトリ内のデータの変化を検出する工程によって、
前記アプリケーションの前記構成データが変化したことを判断するようプログラムされた、請求項９に記載のシステム。
【請求項１１】
前記第２のクラスタエージェントは、既存の構成データと前記復元した構成データにおいて同じ設定および／またはオプションの単一コピーのみを保存することによって、ならびに、前記既存の構成データと前記復元した構成データにおいて異なる設定および／またはオプションの両方のコピーを保存することによって、既に前記第２のクラスタノード上に存在する前記アプリケーションの構成データと前記復元した構成データとの差分マージを行うようさらにプログラムされた、請求項７に記載のシステム。
【請求項１２】
コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、
前記コンピューティングデバイス内の識別モジュールによって、フェールオーバークラスタの第１のクラスタノード上で実行するアプリケーションはクラスタ対応ではないことを識別させ、
前記識別モジュールが前記アプリケーションはクラスタ対応ではないことを識別する工程に応じて、前記アプリケーションに対する構成データをストレージ場所へコピーするべきであることをモニタリングモジュールに通知させ、
前記モニタリングモジュールによって、前記フェールオーバークラスタの第２のクラスタノードがアクセス可能なストレージ場所へ前記アプリケーションの構成データをコピーさせ、
前記第１のクラスタノードの障害を検出させ、
前記第２のクラスタノードに前記構成データを復元させ、
前記構成データに従って前記第２のクラスタノード上で前記アプリケーションを実行させる、
１つまたは複数のコンピュータ実行可能命令を含む、コンピュータ可読記憶媒体。
【請求項１３】
前記１つまたは複数のコンピュータ実行可能命令は、前記コンピューティングデバイスに、
前記第１のクラスタノード上で前記アプリケーションを起動するという要求を受け取らせ、
前記アプリケーションを起動するという前記要求を受け取る工程によって、前記第１のクラスタノード上で実行する前記アプリケーションを識別させ、
前記構成データの初期のバックアップを取る工程によって、前記アプリケーションの前記構成データをコピーさせるようプログラムされた、請求項１２に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記１つまたは複数のコンピュータ実行可能命令は、前記コンピューティングデバイスに、
前記アプリケーションの前記構成データが変化したことを判断させ、
前記アプリケーションの前記構成データが変化したという前記判断に応じて前記アプリケーションの前記構成データをコピーさせるようプログラムされた、請求項１２に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記１つまたは複数のコンピュータ実行可能命令は、前記コンピューティングデバイスに、
前記構成データを復元する際、前記構成データ内に含まれるノード特有の情報を変換させるようプログラムされた、請求項１２に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
事業継続およびディザスタリカバリは、業務を中断させる災害の発生後に、重要なビジネスアプリケーションの観点から、通常（またはほぼ通常）業務を回復する能力を言及する。事業継続およびディザスタリカバリには、ミッションクリティカルなアプリケーションおよびこれらのアプリケーションが依存するデータを取り出し、ビジネス要件で規定されるようにできる限り速やかにユーザがそれらを利用できるようにする能力が必要とされ得る。ダウンタイムにかかるコストが大きい場合は、プロセスの自動化を伴うことになる。最小のダウンタイムが要求されるミッションクリティカルなアプリケーションに対しては、ディザスタリカバリプロセスは、高度に自動化され、回復力に富む必要がある場合がある。
【背景技術】
【０００２】
クラスタリング技術は、そのような高度に自動化され、回復力に富むディザスタリカバリを提供することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
クラスタは、さまざまな組合せで共有記憶装置に接続される複数のシステムを含み得る。クラスタサーバソフトウェアは、クラスタで実行されるアプリケーションをモニタおよび制御し、さまざまなハードウェアまたはソフトウェアの欠点に応じてアプリケーションを再起動することができる。残念ながら、アプリケーションは、クラスタ環境で実行するよう構成されていない場合が多い。したがって、必要なのは、クラスタ対応ではない可能性のあるソフトウェアアプリケーションまでクラスタリング技術を拡大するためのメカニズムである。
【課題を解決するための手段】
【０００４】
以下でさらに詳細に説明されるように、本開示は、概して、アプリケーションの可用性を管理するためのシステムおよび方法に関する。例えば、アプリケーションの可用性を管理するための方法は、フェールオーバークラスタの第１のクラスタノード上で実行するアプリケーションを識別する工程を含み得る。また、本方法は、フェールオーバークラスタの第２のクラスタノードがアクセス可能なストレージ場所へアプリケーションの構成データをコピーする工程も含み得る。本方法は、第１のクラスタノードの障害を検出する工程と、第２のクラスタノードに構成データを復元する工程と、構成データに従って第２のクラスタノード上でアプリケーションを実行する工程とをさらに含み得る。
【０００５】
いくつかの実施形態では、本方法は、第１のクラスタノード上でアプリケーションを起動するという要求を受け取る工程を含み得る。そのような実施形態では、第１のクラスタノード上で実行するアプリケーションを識別する工程は、アプリケーションを起動するという要求を受け取る工程を含み得、アプリケーションの構成データをコピーする工程は、構成データの初期のバックアップを取る工程を含み得る。それに加えてまたは代替法として、本方法は、アプリケーションの構成データが変化したことを判断する工程を含み得る。そのような実施形態では、アプリケーションの構成データをコピーする工程は、アプリケーションの構成データが変化したという判断に応じて実行することができる。さまざまな実施形態によれば、アプリケーションの構成データが変化したことを判断する工程は、アプリケーションの構成データを格納する第１のクラスタノード上のディレクトリをモニタする工程と、モニタしたディレクトリ内のデータの変化を検出する工程とを含み得る。
【０００６】
少なくとも１つの実施形態によれば、本方法は、アプリケーションを停止するという要求を受け取る工程を含み得る。そのような実施形態では、第１のクラスタノード上で実行するアプリケーションを識別する工程は、アプリケーションを起動するという要求を受け取る工程を含み得、アプリケーションの構成データをコピーする工程は、アプリケーションを停止した後で構成データのバックアップを取る工程を含み得る。ある実施形態では、本方法は、既に第２のクラスタノード上に格納されたアプリケーションの構成データと復元した構成データとをマージする工程を含み得る。少なくとも１つの実施形態では、アプリケーションは、非クラスタ対応アプリケーションを含み得る。
【０００７】
いくつかの実施形態では、アプリケーションの可用性を管理するためのシステムは、フェールオーバークラスタの第１のクラスタノード上で実行するアプリケーションを識別するようプログラムされた識別モジュールを含み得る。また、システムは、フェールオーバークラスタの第２のクラスタノードがアクセス可能なストレージ場所へアプリケーションの構成データをコピーするようプログラムされたモニタリングモジュールを含み得る。システムは、第１のクラスタノード上にインストールされた第１のクラスタエージェントであって、モニタリングモジュールと通信するようプログラムされた第１のクラスタエージェントをさらに含み得る。システムは、第２のクラスタノード上にインストールされた第２のクラスタエージェントであって、第１のクラスタノードの障害を検出し、第２のクラスタノードに構成データを復元し、構成データに従って第２のクラスタノード上でアプリケーションを実行するようプログラムされた第２のクラスタエージェントを含み得る。
【０００８】
いくつかの実施形態では、第１のクラスタエージェントは、第１のクラスタノード上でアプリケーションを起動するという要求を受け取るようさらにプログラムされ得、識別モジュールは、アプリケーションを起動するという要求を受け取る工程によって、第１のクラスタノード上で実行するアプリケーションを識別するようプログラムされ得、モニタリングモジュールは、構成データの初期のバックアップを取る工程によって、アプリケーションの構成データをコピーするようプログラムされ得る。
【０００９】
さまざまな実施形態によれば、第１のクラスタエージェントは、アプリケーションの構成データが変化したことを判断するようさらにプログラムされ得、モニタリングモジュールは、アプリケーションの構成データが変化したという判断に応じてアプリケーションの構成データをコピーするようプログラムされ得る。
【００１０】
ある実施形態では、第１のクラスタエージェントは、アプリケーションの構成データを格納する第１のクラスタノード上でディレクトリをモニタする工程によって、および、モニタしたディレクトリ内のデータの変化を検出する工程によって、アプリケーションの構成データが変化したことを判断するようプログラムされ得る。それに加えてまたは代替法として、第１のクラスタエージェントは、アプリケーションを停止するという要求を受け取るようプログラムされ得、識別モジュールは、アプリケーションを起動するという要求を受け取る工程によって、第１のクラスタノード上で実行するアプリケーションを識別するようプログラムされ得、モニタリングモジュールは、アプリケーションを停止した後で構成データのバックアップを取る工程によって、アプリケーションの構成データをコピーするようプログラムされ得る。少なくとも１つの実施形態では、第２のクラスタエージェントは、既に第２のクラスタノード上に格納されたアプリケーションの構成データと復元した構成データとをマージするようさらにプログラムされ得る。
【００１１】
上述の実施形態のいずれかからの特徴は、本明細書に記載される一般原理に従って、互いに組み合わせて使用することができる。これらのおよび他の実施形態、特徴および利点は、添付の図面および特許請求の範囲と併せて、以下の詳細な説明を読み進むに従って、より完全に理解されよう。
【００１２】
添付の図面は、いくつかの例示的な実施形態を示し、本明細書の一部である。以下の説明と併せて、これらの図面は、本開示のさまざまな原理を実証および説明する。
【図面の簡単な説明】
【００１３】
【図１】アプリケーションの可用性を管理するための例示的なシステムのブロック図である。
【図２】アプリケーションの可用性を管理するための例示的なシステムのブロック図である。
【図３】アプリケーションの可用性を管理するための例示的な方法のフロー図である。
【図４】本明細書に記載されるおよび／または示される実施形態の１つまたは複数を実装することができる例示的なコンピューティングシステムのブロック図である。
【図５】本明細書に記載されるおよび／または示される実施形態の１つまたは複数を実装することができる例示的なコンピューティングネットワークのブロック図である。
【００１４】
図面全体を通して、同一の参照文字および説明は、同様な要素を示すが、必ずしも同一の要素である必要はない。本明細書に記載される例示的な実施形態はさまざまな変更形態および代替形態を取ることができるが、図面では特定の実施形態が一例として示されており、本明細書に詳細に記載される。しかし、本明細書に記載される例示的な実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の特許請求の範囲の範囲内に収まるすべての変更形態、均等物および代替形態をカバーする。
【発明を実施するための形態】
【００１５】
以下でさらに詳細に説明されるように、本開示は、概して、アプリケーションの可用性を管理するためのシステムおよび方法に関する。本開示の実施形態は、障害が発生したクラスタノードとフェールオーバークラスタノードの両方ともアクセス可能なストレージ場所にアプリケーション構成データを格納することによって、非クラスタ対応アプリケーションを高可用性にするための方法およびシステムを提供することができる。例えば、第１のクラスタノード上のクラスタエージェント、および、アプリケーションの構成データが入っている場所を特定することができる。クラスタエージェントは、アプリケーションの構成データが入っている場所を特定する情報をモニタリングモジュールに提供することができ、モニタリングモジュールは、変化に対してこれらの場所をモニタすることができる。
【００１６】
モニタした場所においてデータが変化すると、モニタリングモジュールは、これらの場所における構成データを、第２のクラスタノードがアクセス可能な共有ストレージ場所へ保存することができる。また、構成データは、他のトリガ（例えば、アプリケーションの起動時、アプリケーションの終了時など）に応じて、共有ストレージ場所へコピーすることもできる。第１のクラスタノードに障害が発生すれば、第２のクラスタノード上のクラスタエージェントは、共有ストレージ場所から構成データにアクセスすることができる。次いで、構成データを使用して、第２のノード上でアプリケーションを起動することができる。
【００１７】
以下では、図１および２を参照して、アプリケーションの可用性を管理するための例示的なシステムの詳細な説明を提供する。また、図３に関連して、対応するコンピュータ実装方法の詳細な説明も提供する。さらに、図４および５に関連して、本明細書に記載される実施形態の１つまたは複数を実装することができる例示的なコンピューティングシステムおよびネットワークアーキテクチャのそれぞれの詳細な説明を提供する。
【００１８】
図１は、アプリケーションの可用性を管理するための例示的なシステム１００のブロック図である。この図で示されるように、例示的なシステム１００は、１つまたは複数のタスクを実行するための１つまたは複数のモジュール１０２を含み得る。例えば、以下でさらに詳細に説明されるように、例示的なシステム１００は、フェールオーバークラスタの第１のクラスタノード上で実行するアプリケーションを識別するようプログラムされた識別モジュール１０４を含み得る。また、例示的なシステム１００は、フェールオーバークラスタの第２のクラスタノードがアクセス可能なストレージ場所へアプリケーションの構成データをコピーするようプログラムされたモニタリングモジュール１０６も含み得る。
【００１９】
さらに、以下でさらに詳細に説明されるように、例示的なシステム１００は、クラスタノードの障害を検出し、構成データを復元し、クラスタノード上でアプリケーションを実行するようプログラムされたクラスタエージェント１０８を含み得る。別々の要素として示されているが、図１のモジュール１０２の１つまたは複数は、単一のモジュールまたはアプリケーションの複数の部分を表す場合がある。
【００２０】
ある実施形態では、図１のモジュール１０２の１つまたは複数は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに１つまたは複数のタスクを実行させることができる１つまたは複数のソフトウェアアプリケーションまたはプログラムを表す場合がある。例えば、以下でさらに詳細に説明されるように、モジュール１０２の１つまたは複数は、図２で示されるデバイス（例えば、クラスタノード２０２および／またはクラスタノード２０４）、図４のコンピューティングシステム４１０および／または図５の例示的なネットワークアーキテクチャ５００の複数の部分など、１つまたは複数のコンピューティングデバイス上で実行するよう格納および構成されるソフトウェアモジュールを表す場合がある。また、図１のモジュール１０２の１つまたは複数は、１つまたは複数のタスクを実行するよう構成される１つまたは複数の専用コンピュータのすべてまたは複数の部分を表す場合もある。
【００２１】
クラスタエージェント１０８、モニタリングモジュール１０６および／または識別モジュール１０４は、クラスタモニタの一部であり得るか、または、クラスタノードを管理するための他のクラスタサーバソフトウェアであり得る。クラスタサーバソフトウェアの例としては、ＶＥＲＩＴＡＳ  ＣＬＵＳＴＥＲ  ＳＥＲＶＥＲ、ＭＩＣＲＯＳＯＦＴ  ＣＬＵＳＴＥＲ  ＳＥＲＶＥＲ、ＬＩＮＵＸ  ＣＬＵＳＴＥＲ  ＳＥＲＶＥＲおよび／または任意の他の適切なタイプのクラスタソフトウェアが挙げられる。クラスタサーバソフトウェアは、フェールオーバークラスタ（すなわち、高可用性クラスタ）を提供することができ、フェールオーバークラスタは、サービスの可用性を改善する目的で実装することができ、システムコンポーネントの障害発生時にサービスを提供するために使用される冗長ノードを用いて動作することができる。
【００２２】
システム１００は、プロセッサ１３０を含み得、プロセッサ１３０は、識別モジュール１０４、モニタリングモジュール１０６および／またはクラスタエージェント１０８を実行するよう構成され得る。プロセッサ１３０は、一般に、図４のプロセッサ４１４など、コードを実行することができる任意のデバイスを表す。
【００２３】
また、図１で示されるように、例示的なシステム１００は、構成データのデータベース１２０も含み得る。構成データのデータベース１２０は、単一のデータベースもしくはコンピューティングデバイスまたは複数のデータベースもしくはコンピューティングデバイスの複数の部分を表す場合がある。構成データのデータベース１２０は、アプリケーションの構成データを格納することができる。本明細書で使用される語句「構成データ」は、一般に、アプリケーションの構成設定およびオプションを指す。構成データは、任意のタイプのアプリケーションに対する任意のタイプまたは形式の設定およびオプションを含み得る。
【００２４】
図１の構成データのデータベース１２０は、１つまたは複数のコンピューティングデバイスの一部分を表す場合がある。例えば、構成データのデータベース１２０は、図２の共有ストレージ２０６、図４のコンピューティングシステム４１０および／または図５の例示的なネットワークアーキテクチャ５００の複数の部分の一部分を表す場合がある。あるいは、図１の構成データのデータベース１２０は、図２の共有ストレージ２０６、図４のコンピューティングシステム４１０および／または図５の例示的なネットワークアーキテクチャ５００の複数の部分など、コンピューティングデバイスがアクセスすることが可能な１つまたは複数の物理的な個別のデバイスを表す場合がある。
【００２５】
図１の例示的なシステム１００は、さまざまな方法で配備することができる。例えば、例示的なシステム１００のすべてまたは一部分は、クラウドコンピューティングまたはネットワークベースの環境の複数の部分を表す場合がある。クラウドコンピューティング環境は、インターネットを介してさまざまなサービスおよびアプリケーションを提供することができる。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットホーム、サービスとしてのインフラなど）は、ウェブブラウザまたは他のリモートインターフェースを通じてアクセスすることができる。本明細書に記載されるさまざまな機能は、リモートデスクトップ環境または任意の他のクラウドベースのコンピューティング環境を通じて提供することができる。
【００２６】
図２で示されるように、システム２００は、ネットワーク２０８を介して共有ストレージ２０６と連通するクラスタノード２０２および２０４を含み得る。クラスタノード２０２および２０４は、一般に、コンピュータ実行可能命令を読み取ることが可能な任意のタイプまたは形式のコンピューティングデバイスを表す。図２で示されるように、クラスタノード２０２は、識別モジュール１０４（ａ）、モニタリングモジュール１０６（ａ）、クラスタエージェント１０８（ａ）およびアプリケーション２０３（ａ）を含み得る。同様に、クラスタノード２０４は、識別モジュール１０４（ｂ）、モニタリングモジュール１０６（ｂ）、クラスタエージェント１０８（ｂ）およびアプリケーション２０３（ｂ）を含み得る。共有ストレージ２０６は、構成データのデータベース１２０を含み得る。
【００２７】
図２で示される例では、クラスタノード２０２および２０４は、クラスタを表す場合がある。本明細書で使用される用語「クラスタノード」は、一般に、ここに使用されるように、リンクされたコンピューティングデバイスのクラスタの一部である任意のコンピューティングデバイスを指す。クラスタノードの例としては、これらに限定されないが、ラップトップ、デスクトップ、サーバ、仮想マシン、組込みシステム、これらの１つもしくは複数の組合せ、図４の例示的なコンピューティングシステム４１０または任意の他の適切なコンピューティングデバイスもしくはシステムが挙げられる。また、クラスタは、２つを超えるノードも含み得、アプリケーションに対して高可用性を提供するよう構成され得る（例えば、クラスタは、フェールオーバー能力を提供する冗長ノードを含み得る）。
【００２８】
上述の通り、クラスタノード２０２は、アプリケーション２０３（ａ）を含み得、アプリケーション２０３（ａ）は、非クラスタ対応アプリケーションであり得る。本明細書で使用される語句「非クラスタ対応アプリケーション」は、一般に、クラスタのアプリケーションプログラミングインターフェース（「ＡＰＩ」）と呼ぶように設計されていない、ノード間でクラスタハートビートを維持できない、トランザクション処理ができない、リアルタイムでクラスタ情報をミラー化できない、および／または、その構成データ経路を変更することができないソフトウェアアプリケーションを指す。
【００２９】
クラスタノード２０２、クラスタノード２０４および共有ストレージ２０６は、ネットワーク２０８上で通信することができる。ネットワーク２０８は、一般に、通信またはデータ転送を容易にすることが可能な任意の媒体またはアーキテクチャを表す。ネットワーク２０８の例としては、これらに限定されないが、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラネットワーク（例えば、ＧＳＭネットワーク）、図５の例示的なネットワークアーキテクチャ５００または同様のものが挙げられる。ネットワーク２０４は、無線または有線接続を使用して通信またはデータ転送を容易にすることができる。
【００３０】
いくつかの実施形態では、例示的なシステム２００のすべてまたは一部分は、仮想環境で実装することができる。例えば、クラスタノード２０２および２０４は、２つの異なるホストシステム上でゲストシステムとして実行する仮想マシン（すなわち、仮想化ソフトウェアを備えた物理的なマシン）として実装することができる。そのような構成は、高可用性を提供する一方で、ホストシステム間での仮想クラスタノードのライブ移行を可能にすることができる。第２の例では、クラスタノード２０２を物理的なホストシステム上でそのまま実行する一方で、クラスタノード２０４を同じホストシステム上でゲストシステムとして実行することができる。第３の例として、クラスタノード２０２と２０４の両方とも単一のホストシステム上でゲストシステムとして実行することができる。第２および３の例は、ハードウェアを効率的に使用することができるが、高可用性の提供においてはあまり役に立たない場合もある。
【００３１】
図３は、アプリケーションの可用性を管理するための例示的なコンピュータ実装方法３００のフロー図である。図３で示される工程は、任意の適切なコンピュータ実行可能コードおよび／またはコンピューティングシステムによって実行することができる。いくつかの実施形態では、図３で示される工程は、図１のシステム１００および／または図２のシステム２００のコンポーネントの１つもしくは複数によって実行することができる。
【００３２】
図３の工程３０２では、本明細書に記載されるシステムの１つまたは複数は、高可用性クラスタの第１のクラスタノード上で実行するアプリケーションを識別することができる。例えば、識別モジュール１０４（ａ）は、クラスタノード２０２上で実行するアプリケーション２０３（ａ）を識別することができる。識別モジュール１０４（ａ）は、さまざまなコンテキストにおいてアプリケーション２０３（ａ）を識別することができる。例えば、識別モジュール１０４（ａ）は、アプリケーション２０３（ａ）を起動または停止するという要求の一部としてアプリケーション２０３（ａ）を識別することができる。
【００３３】
識別モジュール１０４（ａ）は、クラスタ対応ではないアプリケーション、したがって、従来のクラスタ環境でフェールオーバー能力を利用するようプログラムまたは構成されないアプリケーションとしてアプリケーション２０３（ａ）を識別することができる。非クラスタ対応アプリケーションとしてアプリケーション２０３（ａ）を識別した後、識別モジュール１０４（ａ）は、アプリケーション２０３（ａ）に対する構成データを共有ストレージ２０６へコピーするべきであることを、モニタリングモジュール１０６（ａ）および／またはクラスタエージェント１０８（ａ）に通知することができる。
【００３４】
図３の工程３０４では、本明細書に記載されるシステムの１つまたは複数は、高可用性クラスタの第２のクラスタノードがアクセス可能なストレージ場所へアプリケーションの構成データをコピーすることができる。例えば、モニタリングモジュール１０６（ａ）は、クラスタノード２０４がアクセス可能なストレージ場所（例えば、共有ストレージ２０６）へアプリケーション２０３（ａ）の構成データをコピーすることができる。構成データは、さまざまなコンテキストにおいてコピーすることができる。いくつかの実施形態では、アプリケーション２０３（ａ）が起動する際に、共有ストレージ場所へデータの構成をコピーすることができる。それに加えてまたは代替法として、モニタリングモジュール１０６（ａ）は、クラスタノード２０２上のアプリケーション２０３（ａ）の構成データが変化する際に、アプリケーション２０３（ａ）の構成データを共有ストレージ２０６へコピーすることができる。いくつかの実施形態では、モニタリングモジュール１０６（ａ）は、アプリケーション２０３（ａ）を停止または終了する際に、アプリケーション２０３（ａ）の構成データを共有ストレージ２０６へコピーすることができる。
【００３５】
上記の通り、アプリケーション２０３（ａ）の構成データは、アプリケーション２０３（ａ）の起動時に、共有ストレージ２０６上の構成データのデータベース１２０へコピーすることができる。そのような実施形態では、クラスタエージェント１０８（ａ）は、アプリケーション２０３（ａ）を起動するという要求を受け取ることができる。アプリケーション２０３（ａ）が起動する際に、アプリケーション２０３（ａ）に対する構成データが共有ストレージ２０６に含まれていなければ、クラスタエージェント１０８（ａ）は、モニタリングモジュール１０６（ａ）に、アプリケーション２０３（ａ）から共有ストレージ２０６へ構成データをコピーするよう促すことができる。
【００３６】
アプリケーション２０３（ａ）に対する構成データが既に共有ストレージ２０６上にあれば、クラスタエージェント１０８（ａ）は、共有ストレージ２０６上に格納された構成データをアプリケーション２０３（ａ）に適用することができる。例えば、クラスタエージェント１０８（ａ）は、アプリケーション２０３（ａ）に対する構成データを格納するクラスタノード２０２上の場所へ、共有ストレージ２０６内の構成データをコピーすることができる。いくつかの実施形態では、エージェント１０８（ａ）は、クラスタノード２０２上に既に格納されたいかなる構成データも、共有ストレージ２０６からの構成データと取り替えることができる。あるいは、クラスタエージェント１０８（ａ）は、以下でさらに詳細に論じられるように、差分マージを行うことによって、既にクラスタノード２０２上にある構成データを共有ストレージからの構成データと組み合わせることができる。
【００３７】
クラスタエージェント１０８（ａ）は、アプリケーション２０３（ａ）に対する構成データを格納するディレクトリツリー、ディレクトリツリーのセットおよび／または他の場所を識別するモニタリングモジュール１０６（ａ）に情報を提供することができる。また、クラスタエージェント１０８（ａ）は、モニタリングモジュール１０６（ａ）に、変化に対して識別された場所のモニタリングを開始するよう促すこともできる。クラスタエージェント１０８（ａ）は、任意の適切な方法でモニタリングモジュール１０６（ａ）と通信することができる。例えば、クラスタエージェント１０８（ａ）は、プロセス間通信を介して（例えば、共有メモリを使用して）モニタリングモジュール１０６（ａ）と通信することができる。
【００３８】
モニタリングモジュール１０６（ａ）は、アプリケーション２０３（ａ）の構成データに関連する各ディレクトリツリーまたは他の場所に対するファイル変更通知に登録することができる。次いで、モニタリングモジュール１０６（ａ）は、クラスタエージェント１０８（ａ）がアプリケーション２０３（ａ）を起動できることをクラスタエージェント１０８（ａ）に通知することができ、それに応じて、クラスタエージェント１０８（ａ）は、アプリケーション２０３（ａ）を起動することができる。
【００３９】
アプリケーション２０３（ａ）が実行されている場合、アプリケーション２０３（ａ）の構成データは、構成データが変化する際に、共有ストレージ２０６へコピーすることができる。例えば、モニタリングモジュール１０６（ａ）は、アプリケーション２０３（ａ）の構成データが格納される場所をモニタすることができる（例えば、変更通知に登録することによって、入出力活動をモニタすることによってなど）。モニタリングモジュール１０６（ａ）が、アプリケーション２０３（ａ）の構成データが変化したことを検出すれば、モニタリングモジュール１０６（ａ）は、アプリケーション２０３（ａ）の構成データを共有ストレージ２０６にバックアップすることができる。
【００４０】
また、構成データは、アプリケーション２０３（ａ）を停止する際に、共有ストレージ場所へコピーすることもできる。そのような実施形態では、クラスタエージェント１０８（ａ）は、アプリケーション２０３（ａ）を停止するという要求を受け取ることができる。次いで、クラスタエージェント１０８（ａ）は、アプリケーション２０３（ａ）が停止したことをモニタリングモジュール１０６（ａ）に通知することができ、モニタリングモジュール１０６（ａ）は、アプリケーション２０３（ａ）に関連する構成データを共有ストレージ２０６にバックアップすることができる。
【００４１】
図３の工程３０６では、本明細書に記載されるシステムの１つまたは複数は、第１のクラスタノードの障害を検出することができる。例えば、クラスタエージェント１０８（ｂ）は、クラスタノード２０２に障害が発生したことを判断することができる。クラスタノードの障害は、さまざまな方法で検出することができる。いくつかの実施形態では、クラスタエージェント１０８（ｂ）は、クラスタノード２０２の１つまたは複数のリソース（例えば、ディスク、ネットワークアダプタ、ファイルシステム、データベース、アプリケーションなど）に障害が発生したことを判断することによって、クラスタノード２０２の障害を検出することができる。障害が発生したリソースは、ハードウェア問題、ソフトウェア問題、オーバーロード状態である、および／または、任意の他の問題のためにもはや適正に機能していないリソースであり得る。
【００４２】
いくつかのクラスタでは、リソースは、サービスグループで構成され得、サービスグループは、協働してアプリケーションサービスをクライアントに提供するリソースのセットである。そのような実施形態では、クラスタノード２０２上のサービスグループ内のリソースに障害が発生すれば、クラスタエージェント１０８（ｂ）は、そのサービスグループ全体に対してフェールオーバー手順を開始することができる。言い換えれば、クラスタエージェント１０８（ｂ）は、クラスタエージェント１０８（ｂ）がサービスグループ内の任意のリソースの障害を検出すれば、そのサービスグループ内のそれぞれのリソースをフェールオーバーすることができる。
【００４３】
図３の工程３０８では、本明細書に記載されるシステムの１つまたは複数は、第２のクラスタに構成データを復元することができる。例えば、クラスタエージェント１０８（ｂ）は、共有ストレージ２０６からクラスタノード２０４にアプリケーション２０３（ａ）の構成データを復元することができる。構成データは、任意の適切な方法で復元することができる。例えば、構成データは、共有ストレージ２０６内の構成データのデータベース１２０からクラスタノード２０４へコピーすることができる。いくつかの実施形態では、クラスタエージェント１０８（ｂ）は、構成データへのいかなる変更も行うことなく、アプリケーション２０３（ｂ）に構成データを提供することができる（例えば、アプリケーション２０３（ｂ）に対する登録データを格納するメモリ領域へ構成データをコピーすることによって）。
【００４４】
あるいは、クラスタエージェント１０８（ｂ）は、共有ストレージ２０６からの構成データと既にクラスタノード２０４上にある構成データとをマージすることができる。クラスタエージェント１０８（ｂ）は、さまざまな理由でおよびさまざまな方法で、構成データをマージすることができる。例えば、アプリケーションの２つのインスタンスが実行されており（一方はクラスタノード２０２上で、他方はクラスタノード２０４上で）、クラスタノード２０２上で実行されているインスタンスに障害が発生すれば、クラスタノード２０２上で実行されているアプリケーションインスタンスは、クラスタノード２０４にフェールオーバーすることができる。フェールオーバーを取り扱うには、クラスタエージェント１０８（ｂ）は、構成データベース１２０からの構成データをクラスタノード２０４に復元して、復元した構成データと既にクラスタノード２０４上にある構成データ（すなわち、クラスタノード２０４上で実行するアプリケーションのインスタンスに対する構成データ）とをマージすることができる。次いで、クラスタエージェント１０８（ｂ）は、クラスタノード２０４上でアプリケーションの第２のインスタンスを起動して、復元した構成データをアプリケーションの第２のインスタンスに利用可能にすることができる。
【００４５】
クラスタエージェント１０８（ｂ）は、さまざまな方法で構成データの異なるセットをマージすることができる。例えば、クラスタエージェント１０８（ｂ）は、既存の構成データと復元した構成データにおいて同じ設定および／またはオプションの単一コピーのみを保存することによって、ならびに、既存の構成データと復元した構成データにおいて異なる設定および／またはオプションの両方のコピーを保存することによって、既存の構成データと復元した構成データとの差分マージを行うことができる。あるいは、クラスタエージェント１０８（ｂ）は、既存の構成データと復元した構成データの両方の全コピーを組み合わせることによって、フルマージャー（ｆｕｌｌ  ｍｅｒｇｅｒ）を行うことができる。
【００４６】
いくつかの実施形態では、クラスタエージェント１０８（ｂ）は、構成データを単一のファイルに組み合わせることによって、構成データの異なるセットをマージすることができる。例えば、アプリケーションの構成データは、拡張マークアップ言語（「ＸＭＬ」）ドキュメントに格納することができる。そのような実施形態では、クラスタエージェント１０８（ｂ）は、２つのＸＭＬドキュメントの完全または差分マージを行うことによって、構成データをマージすることができる。
【００４７】
いくつかの実施形態では、構成データは、ノード特有の情報、例えば、ホスト名（例えば、クラスタノード名）、グローバル一意識別子（「ＧＵＩＤ」）または任意の他のタイプのノード特有の情報を含み得る。クラスタエージェントがノード特有の情報を伴う構成データをフェールオーバークラスタノードに復元する際、クラスタエージェントは、ノード特有の情報を変換することができる。例えば、モニタリングモジュール１０６（ａ）は、ノード特有の情報を含む構成データを共有ストレージ２０６へコピーすることができる。
【００４８】
構成データを復元する工程は、ノード特有の情報を変換する工程を含み得る。構成がクラスタノード２０４に復元される場合、ノード特有の情報は、クラスタノード２０４に適用するために変換することができる。したがって、クラスタノード２０２に障害が発生すれば、クラスタエージェント１０８（ｂ）は、共有ストレージ２０６から構成データを取り出して、構成データ内のノード特有の情報を、クラスタノード２０２よりむしろクラスタノード２０４に対応するように変換することができる。
【００４９】
図３の工程３１０では、本明細書に記載されるシステムの１つまたは複数は、構成データに従って、第２のクラスタノード上でアプリケーションを実行することができる。例えば、クラスタノード２０４上のクラスタエージェント１０８（ｂ）は、共有ストレージ２０６から復元した構成データに従って、クラスタノード２０４上でアプリケーション２０３（ｂ）を実行することができる。クラスタエージェント１０８（ｂ）は、共有ストレージ２０６からの構成データに従って、アプリケーション２０３（ｂ）が復元した構成データにアクセスを有することおよび／またはアプリケーション２０３（ｂ）が復元した構成データを用いて構成されることを確実にすることによって、アプリケーション２０３（ｂ）を実行することができる。この方法で構成データを復元することによって、本明細書に記載されるシステムは、従来のクラスタ環境でフェールオーバーするよう構成されていないアプリケーションに対して高可用性を提供することができる。
【００５０】
図４は、本明細書に記載されるおよび／または示される実施形態の１つまたは複数を実装することができる例示的なコンピューティングシステム４１０のブロック図である。コンピューティングシステム４１０は、コンピュータ可読命令を実行することができる任意の単一またはマルチプロセッサコンピューティングデバイスまたはシステムを幅広く表す。コンピューティングシステム４１０の例としては、これらに限定されないが、ワークステーション、ラップトップ、クライアント側端末、サーバ、分配されたコンピューティングシステム、ハンドヘルドデバイスまたは任意の他のコンピューティングシステムもしくはデバイスが挙げられる。その最も基本的な構成では、コンピューティングシステム４１０は、少なくとも１つのプロセッサ４１４およびシステムメモリ４１６を含み得る。
【００５１】
プロセッサ４１４は、一般に、データの処理または命令の解釈および実行が可能な任意のタイプまたは形式の処理ユニットを表す。ある実施形態では、プロセッサ４１４は、ソフトウェアアプリケーションまたはモジュールから命令を受け取ることができる。これらの命令は、本明細書に記載されるおよび／または示される例示的な実施形態の１つまたは複数の機能をプロセッサ４１４に実行させることができる。例えば、プロセッサ４１４は、単独でまたは他の要素と組み合わせて、本明細書に記載される識別、コピー、検出、復元、実行、受け取り、取込み、決定、モニタリングおよび／またはマージ工程の１つまたは複数を実行することができる、および／または、実行する手段となり得る。また、プロセッサ４１４は、本明細書に記載されるおよび／または示される任意の他の工程、方法またはプロセスを実行することもできる、および／または、実行する手段ともなり得る。
【００５２】
システムメモリ４１６は、一般に、データおよび／または他のコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の揮発性または非揮発性記憶装置または媒体を表す。システムメモリ４１６の例としては、これらに限定されないが、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリまたは任意の他の適切なメモリデバイスが挙げられる。必須ではないが、ある実施形態では、コンピューティングシステム４１０は、揮発性メモリユニット（例えば、システムメモリ４１６など）と非揮発性記憶装置（例えば、以下で詳細に説明される一次記憶装置４３２など）の両方を含み得る。一例では、図１のモジュール１０２の１つまたは複数は、システムメモリ４１６にロードされ得る。
【００５３】
また、ある実施形態では、例示的なコンピューティングシステム４１０は、プロセッサ４１４およびシステムメモリ４１６に加えて、１つまたは複数のコンポーネントまたは要素も含み得る。例えば、図４で示されるように、コンピューティングシステム４１０は、メモリコントローラ４１８、入出力（Ｉ／Ｏ）コントローラ４２０および通信インターフェース４２２を含み得、その各々は、通信インフラ４１２を介して相互接続され得る。通信インフラ４１２は、一般に、コンピューティングデバイスの１つまたは複数のコンポーネント間の通信を容易にすることが可能な任意のタイプまたは形式のインフラを表す。通信インフラ４１２の例としては、これらに限定されないが、通信バス（ＩＳＡ、ＰＣＩ、ＰＣＩｅまたは同様のバスなど）およびネットワークが挙げられる。
【００５４】
メモリコントローラ４１８は、一般に、メモリもしくはデータを取り扱うまたはコンピューティングシステム４１０の１つもしくは複数のコンポーネント間の通信を制御することが可能な任意のタイプまたは形式のデバイスを表す。例えば、ある実施形態では、メモリコントローラ４１８は、通信インフラ４１２を介してプロセッサ４１４、システムメモリ４１６およびＩ／Ｏコントローラ４２０間の通信を制御することができる。ある実施形態では、メモリコントローラは、単独でまたは他の要素と組み合わせて、識別、コピー、検出、復元、実行、受け取り、取込み、決定、モニタリングおよび／またはマージなど、本明細書に記載されるおよび／または示される１つまたは複数の工程または特徴を実行することができる、および／または、実行する手段となり得る。
【００５５】
Ｉ／Ｏコントローラ４２０は、一般に、コンピューティングデバイスの入出力機能を調整および／または制御することが可能な任意のタイプまたは形式のモジュールを表す。例えば、ある実施形態では、Ｉ／Ｏコントローラ４２０は、プロセッサ４１４、システムメモリ４１６、通信インターフェース４２２、ディスプレイアダプタ４２６、入力インターフェース４３０およびストレージインターフェース４３４などのコンピューティングシステム４１０の１つまたは複数の要素間のデータ転送を制御するかまたは容易にすることができる。Ｉ／Ｏコントローラ４２０は、例えば、単独でまたは他の要素と組み合わせて、本明細書に記載される識別、コピー、検出、復元、実行、受け取り、取込み、決定、モニタリングおよび／またはマージ工程の１つまたは複数を実行する、および／または、実行する手段となるよう使用することができる。また、Ｉ／Ｏコントローラ４２０は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することもできる。
【００５６】
通信インターフェース４２２は、例示的なコンピューティングシステム４１０と１つまたは複数の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプまたは形式の通信デバイスまたはアダプタを幅広く表す。例えば、ある実施形態では、通信インターフェース４２２は、コンピューティングシステム４１０と追加のコンピューティングシステムを含むプライベートまたはパブリックネットワークとの間の通信を容易にすることができる。通信インターフェース４２２の例としては、これらに限定されないが、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデムおよび任意の他の適切なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース４２２は、インターネットなどのネットワークへの直接リンクを介してリモートサーバとの直接接続を実現することができる。また、通信インターフェース４２２は、例えば、ローカルエリアネットワーク（イーサネットネットワークなど）、パーソナルエリアネットワーク、電話もしくはケーブルネットワーク、携帯電話接続、衛星データ接続または任意の他の適切な接続を通じて、そのような接続を間接的に実現することもできる。
【００５７】
また、ある実施形態では、通信インターフェース４２２は、外部のバスまたは通信チャネルを介してコンピューティングシステム４１０と１つまたは複数の追加のネットワークまたは記憶装置との間の通信を容易にするよう構成されたホストアダプタを表す場合もある。ホストアダプタの例としては、これらに限定されないが、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ１３９４ホストアダプタ、ＳＡＴＡおよびｅＳＡＴＡホストアダプタ、ＡＴＡおよびＰＡＴＡホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネットアダプタまたは同様のものが挙げられる。また、通信インターフェース４２２は、コンピューティングシステム４１０が分配されたコンピューティングまたはリモートコンピューティングに参加することを可能にする場合もある。例えば、通信インターフェース４２２は、実行のためにリモートデバイスから命令を受け取るか、または、リモートデバイスに命令を送ることができる。ある実施形態では、通信インターフェース４２２は、単独でまたは他の要素と組み合わせて、本明細書に開示される識別、コピー、検出、復元、実行、受け取り、取込み、決定、モニタリングおよび／またはマージ工程の１つまたは複数を実行することができる、および／または、実行する手段となり得る。また、通信インターフェース４２２は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することもできる。
【００５８】
図４で示されるように、コンピューティングシステム４１０は、ディスプレイアダプタ４２６を介して通信インフラ４１２と結合される少なくとも１つのディスプレイデバイス４２４も含み得る。ディスプレイデバイス４２４は、一般に、ディスプレイアダプタ４２６によって転送された情報を視覚的に表示することが可能な任意のタイプまたは形式のデバイスを表す。同様に、ディスプレイアダプタ４２６は、一般に、ディスプレイデバイス４２４上で表示するため、通信インフラ４１２から（または、当技術分野で公知のフレームバッファから）グラフィックス、テキストおよび他のデータを転送するよう構成された任意のタイプまたは形式のデバイスを表す。
【００５９】
また、図４で示されるように、例示的なコンピューティングシステム４１０は、入力インターフェース４３０を介して通信インフラ４１２と結合される少なくとも１つの入力デバイス４２８も含み得る。入力デバイス４２８は、一般に、例示的なコンピューティングシステム４１０へのコンピュータまたは人間が生成した入力を提供することが可能な任意のタイプまたは形式の入力デバイスを表す。入力デバイス４２８の例としては、これらに限定されないが、キーボード、ポインティングデバイス、音声認識デバイスまたは任意の他の入力デバイスが挙げられる。少なくとも１つの実施形態では、入力デバイス４２８は、単独でまたは他の要素と組み合わせて、本明細書に開示される識別、コピー、検出、復元、実行、受け取り、取込み、決定、モニタリングおよび／またはマージ工程の１つまたは複数を実行することができる、および／または、実行する手段となり得る。また、入力デバイス４２８は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することもできる。
【００６０】
また、図４で示されるように、例示的なコンピューティングシステム４１０は、ストレージインターフェース４３４を介して通信インフラ４１２と結合される一次記憶装置４３２およびバックアップ記憶装置４３３も含み得る。記憶装置４３２および４３３は、一般に、データおよび／または他のコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。例えば、記憶装置４３２および４３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブまたは同様のものであり得る。ストレージインターフェース４３４は、一般に、記憶装置４３２および４３３とコンピューティングシステム４１０の他のコンポーネントとの間でデータを転送するための任意のタイプまたは形式のインターフェースまたはデバイスを表す。一例では、図１の構成データのデータベース１２０は、一次記憶装置４３２に格納することができる。
【００６１】
ある実施形態では、記憶装置４３２および４３３は、コンピュータソフトウェア、データまたは他のコンピュータ可読情報を格納するよう構成されたリムーバブルストレージユニットから読み取るおよび／または同リムーバブルストレージユニットに書き込むよう構成され得る。適切なリムーバブルストレージユニットの例としては、これらに限定されないが、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスまたは同様のものが挙げられる。また、記憶装置４３２および４３３は、コンピュータソフトウェア、データまたは他のコンピュータ可読命令をコンピューティングシステム４１０にロードすることを可能にするための他の同様の構造またはデバイスも含み得る。例えば、記憶装置４３２および４３３は、ソフトウェア、データまたは他のコンピュータ可読情報を読み取るおよび書き込むよう構成され得る。また、記憶装置４３２および４３３は、コンピューティングシステム４１０の一部であり得るか、または、他のインターフェースシステムを通じてアクセスされる別々のデバイスでもあり得る。
【００６２】
ある実施形態では、記憶装置４３２および４３３は、例えば、単独でまたは他の要素と組み合わせて、本明細書に開示される識別、コピー、検出、復元、実行、受け取り、取込み、決定、モニタリングおよび／またはマージ工程の１つまたは複数を実行する、および／または、実行する手段となるよう使用することができる。また、記憶装置４３２および４３３は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することもできる。
【００６３】
また、他の多くのデバイスまたはサブシステムを、コンピューティングシステム４１０に接続することができる。逆に、図４で示されるコンポーネントおよびデバイスのすべてが、本明細書に記載されるおよび／または示される実施形態を実施するために必ずしも存在しているわけではない。また、上記で言及されたデバイスまたはサブシステムは、図４で示されるものとは異なる方法で相互接続することもできる。また、コンピューティングシステム４１０は、任意の数のソフトウェア、ファームウェアおよび／またはハードウェア構成を使用することもできる。例えば、本明細書に開示される例示的な実施形態の１つまたは複数は、コンピュータ可読媒体上でコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令またはコンピュータ制御論理とも呼ばれる）として符号化することができる。語句「コンピュータ可読媒体」は、一般に、コンピュータ可読命令を格納または送達することが可能な任意の形式のデバイス、キャリアまたは媒体を指す。コンピュータ可読媒体の例としては、これらに限定されないが、搬送波などの伝送型の媒体、ならびに、磁気記憶媒体（例えば、ハードディスクドライブおよびフロッピーディスク）、光記憶媒体（例えば、ＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、ソリッドステートドライブおよびフラッシュメディア）および他の分配システムなどの物理的な媒体が挙げられる。
【００６４】
コンピュータプログラムが入っているコンピュータ可読媒体は、コンピューティングシステム４１０にロードすることができる。次いで、コンピュータ可読媒体上に格納されたコンピュータプログラムのすべてまたは一部分は、システムメモリ４１６ならびに／または記憶装置４３２および４３３のさまざまな部分に格納することができる。プロセッサ４１４によって実行されると、コンピューティングシステム４１０にロードされたコンピュータプログラムは、プロセッサ４１４に、本明細書に記載されるおよび／または示される例示的な実施形態の１つまたは複数の機能を実行させる、および／または、実行する手段となるようにすることができる。それに加えてまたは代替法として、本明細書に記載されるおよび／または示される例示的な実施形態の１つまたは複数は、ファームウェアおよび／またはハードウェアで実施することができる。例えば、コンピューティングシステム４１０は、本明細書に開示される例示的な実施形態の１つまたは複数を実施するよう適合された特定用途向け集積回路（ＡＳＩＣ）として構成され得る。
【００６５】
図５は、クライアントシステム５１０、５２０および５３０ならびにサーバ５４０および５４５をネットワーク５５０と結合することができる例示的なネットワークアーキテクチャ５００のブロック図である。クライアントシステム５１０、５２０および５３０は、一般に、図４の例示的なコンピューティングシステム４１０などの任意のタイプまたは形式のコンピューティングデバイスまたはシステムを表す。一例では、クライアントシステム５１０は、図１のシステム１００を含み得る。
【００６６】
同様に、サーバ５４０および５４５は、一般に、さまざまなデータベースサービスを提供するよう構成された、および／または、あるソフトウェアアプリケーションを実行するよう構成された、アプリケーションサーバまたはデータベースサーバなどのコンピューティングデバイスまたはシステムを表す。ネットワーク５５０は、一般に、例えば、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）またはインターネットを含む任意の電気通信ネットワークまたはコンピュータネットワークを表す。
【００６７】
図５で示されるように、１つまたは複数の記憶装置５６０（１）〜（Ｎ）は、サーバ５４０に直接取り付けることができる。同様に、１つまたは複数の記憶装置５７０（１）〜（Ｎ）は、サーバ５４５に直接取り付けることができる。記憶装置５６０（１）〜（Ｎ）および記憶装置５７０（１）〜（Ｎ）は、一般に、データおよび／または他のコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。ある実施形態では、記憶装置５６０（１）〜（Ｎ）および記憶装置５７０（１）〜（Ｎ）は、ＮＦＳ、ＳＭＢまたはＣＩＦＳなどのさまざまなプロトコルを使用して、サーバ５４０および５４５と通信するよう構成されたネットワーク接続記憶（ＮＡＳ）装置を表す場合がある。
【００６８】
また、サーバ５４０および５４５は、ストレージエリアネットワーク（ＳＡＮ）ファブリック５８０に接続することもできる。ＳＡＮファブリック５８０は、一般に、複数の記憶装置間の通信を容易にすることが可能な任意のタイプまたは形式のコンピュータネットワークまたはアーキテクチャを表す。ＳＡＮファブリック５８０は、サーバ５４０および５４５と複数の記憶装置５９０（１）〜（Ｎ）および／またはインテリジェントなストレージアレイ５９５との間の通信を容易にすることができる。また、ＳＡＮファブリック５８０は、装置５９０（１）〜（Ｎ）およびアレイ５９５がクライアントシステム５１０、５２０および５３０にローカルで接続されたデバイスのように見えるように、ネットワーク５５０ならびにサーバ５４０および５４５を介して、クライアントシステム５１０、５２０および５３０と記憶装置５９０（１）〜（Ｎ）および／またはインテリジェントなストレージアレイ５９５との間の通信を容易にすることもできる。記憶装置５６０（１）〜（Ｎ）および記憶装置５７０（１）〜（Ｎ）と同様に、記憶装置５９０（１）〜（Ｎ）およびインテリジェントなストレージアレイ５９５は、一般に、データおよび／またはコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。
【００６９】
ある実施形態では、図４の例示的なコンピューティングシステム４１０に関連して、図４の通信インターフェース４２２などの通信インターフェースを使用して、各クライアントシステム５１０、５２０および５３０とネットワーク５５０との間の接続性を提供することができる。クライアントシステム５１０、５２０および５３０は、例えば、ウェブブラウザまたは他のクライアントソフトウェアを使用して、サーバ５４０または５４５上の情報にアクセスできる場合がある。そのようなソフトウェアは、クライアントシステム５１０、５２０および５３０がサーバ５４０、サーバ５４５、記憶装置５６０（１）〜（Ｎ）、記憶装置５７０（１）〜（Ｎ）、記憶装置５９０（１）〜（Ｎ）またはインテリジェントなストレージアレイ５９５によってホスティングされるデータにアクセスすることを可能にすることができる。図５はデータを交換するためのネットワーク（インターネットなど）の使用について示すが、本明細書に記載されるおよび／または示される実施形態は、インターネットまたは任意の特定のネットワークベースの環境に限定されない。
【００７０】
少なくとも１つの実施形態では、本明細書に開示される例示的な実施形態の１つまたは複数のすべてまたは一部分は、コンピュータプログラムとして符号化することができ、サーバ５４０、サーバ５４５、記憶装置５６０（１）〜（Ｎ）、記憶装置５７０（１）〜（Ｎ）、記憶装置５９０（１）〜（Ｎ）、インテリジェントなストレージアレイ５９５またはそれらの任意の組合せにロードし、これらによって実行することができる。また、本明細書に開示される例示的な実施形態の１つまたは複数のすべてまたは一部分は、コンピュータプログラムとして符号化することができ、サーバ５４０に格納し、サーバ５４５によって実行し、ネットワーク５５０上でクライアントシステム５１０、５２０および５３０に分配することもできる。それに応じて、ネットワークアーキテクチャ５００は、単独でまたは他の要素と組み合わせて、本明細書に開示される識別、コピー、検出、復元、実行、受け取り、取込み、決定、モニタリングおよび／またはマージ工程の１つまたは複数を実行することができる、および／または、実行する手段となり得る。また、ネットワークアーキテクチャ５００は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することもできる。
【００７１】
上記で詳細に説明されるように、コンピューティングシステム４１０および／またはネットワークアーキテクチャ５００の１つまたは複数のコンポーネントは、単独でまたは他の要素と組み合わせて、アプリケーションの可用性を管理するための例示的な方法の１つまたは複数の工程を実行することができる、および／または、実行する手段となり得る。
【００７２】
前述の開示は特定のブロック図、フローチャートおよび例を使用してさまざまな実施形態について記載しているが、本明細書に記載されるおよび／または示される各ブロック図のコンポーネント、フローチャートの工程、オペレーションおよび／またはコンポーネントは、広範囲にわたるハードウェア、ソフトウェアまたはファームウェア（または、それらの任意の組合せ）構成を使用して、個別におよび／または一括して実装することができる。さらに、他のコンポーネント内に含まれるコンポーネントのいかなる開示も、他の多くのアーキテクチャを実装して同じ機能性を達成することができるため、本来は例示的なものであると見なすべきである。
【００７３】
本明細書に記載されるおよび／または示されるプロセスパラメータおよび工程の順序は単なる例示として与えられるものであり、要望通り変更することができる。例えば、本明細書に記載されるおよび／または示される工程は特定の順番で示されるまたは論じられる場合があるが、これらの工程は、必ずしも示されるまたは論じられる順番で実行する必要があるわけではない。本明細書に記載されるおよび／または示されるさまざまな例示的な方法は、本明細書に記載されるまたは示される工程の１つもしくは複数を省略するか、または、開示される工程に加えて追加の工程を含めることもできる。
【００７４】
完全に機能的なコンピューティングシステムとの関連でさまざまな実施形態が本明細書に記載されるおよび／または示されるが、これらの例示的な実施形態の１つまたは複数は、実際に分配を行うために使用される特定のタイプのコンピュータ可読媒体に関わらず、プログラム製品としてさまざまな形式で分配され得る。また、本明細書に開示される実施形態は、ある一定のタスクを実行するソフトウェアモジュールを使用して実施することもできる。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上またはコンピューティングシステムに格納することができるスクリプト、バッチまたは他の実行可能なファイルを含み得る。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書に開示される例示的な実施形態の１つまたは複数を実行するようコンピューティングシステムを構成することができる。
【００７５】
ある実施形態では、本明細書に開示されるソフトウェアモジュールの１つまたは複数は、クラウドコンピューティング環境で実装することができる。クラウドコンピューティング環境は、インターネットを介してさまざまなサービスおよびアプリケーションを提供することができる。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットホーム、サービスとしてのインフラなど）は、ウェブブラウザまたは他のリモートインターフェースを通じてアクセスすることができる。本明細書に記載されるさまざまな機能は、リモートデスクトップ環境または任意の他のクラウドベースのコンピューティング環境を通じて提供することができる。例えば、クラウドコンピューティング環境からおよび／もしくはクラウドコンピューティング環境へデータをスキャンすることができ、ならびに／または、モジュール１０２の１つもしくは複数をクラウドコンピューティング環境で動作することができる。
【００７６】
さらに、本明細書に記載される１つまたは複数のモジュールは、データ、物理的デバイスおよび／または物理的デバイスの表現をある形式から別の形式へ変換することができる。例えば、本明細書で示されるシステムは、コンピューティングデバイスを、本明細書に記載される１つまたは複数のモジュールをクラスタノードに配備することによって、および、構成データをノードに回復することによって、フェールオーバークラスタノードに変換することができる。
【００７７】
先の説明は、当業者が本明細書に開示される例示的な実施形態のさまざまな態様を最良に利用できるよう提供されている。この例示的な説明は、包括的であるまたは開示される形態と全く同一の形態に限定することを意図しない。多くの変更形態および変形形態を、本開示の精神および範囲から逸脱することなく作成することができる。本明細書に開示される実施形態は、すべての点において、限定的なものではなく例示的なものとして見なされるべきである。本開示の範囲を決定する際には、添付の特許請求の範囲およびその均等物を参照すべきである。
【００７８】
特に断りのない限り、本明細書および特許請求の範囲で使用される単数形「ａ」または「ａｎ」は、「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ）」の意味に解釈されるものとする。さらに、使い易さを考慮して、本明細書および特許請求の範囲で使用される語「を含む（ｉｎｃｌｕｄｉｎｇ）」および「を有する（ｈａｖｉｎｇ）」は、語「備える、含む（ｃｏｍｐｒｉｓｉｎｇ）」と交換可能であり、同じ意味を有する。
【図１】
0005562444.tif 000002
【図２】
0005562444.tif 000003
【図３】
0005562444.tif 000004
【図４】
0005562444.tif 000005
【図５】
0005562444.tif 000006