(57)【要約】  本発明は、クラスタの種々のノードに跨ってアプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法、システムおよびコンピュータプログラム製品に及ぶ。本発明は１つのノード上でボリュームのスナップショットを開始することを可能にし、ここでは、スナップショットが生成される前に、クラスタ内のすべてのアプリケーションがそれらのデータをボリュームにパーシストするためにそのボリュームを使用する。したがって、スナップショットは、そのボリュームを使用するクラスタ内のすべてのアプリケーションに対してアプリケーション間の統一性を有する、また、本発明は、生成されたスナップショットに対してポストスナップショット処理を実行することを種々のノード上のアプリケーションにより行うのを可能にする。本発明は、クラスタの複数のノードに跨るアプリケーションによって共有されるボリュームのアプリケーション間の統一性を有するスナップショットを既存のバックアップシステムにより生成するのを可能にすることに配慮したクラスタではない既存のバックアップシステム内で使用され得る。
2015506507.tif 000002
【特許請求の範囲】
【請求項１】
バックアップアプリケーションと、バックアップコーディネータと、少なくとも１つのアプリケーションと、ストレージプロバイダと、クラスタサービスと、クラスタライタとを含む、クラスタの第１のノードにおいて、共有されるボリュームを使用する前記クラスタの２つ以上のノード上のアプリケーションに対してアプリケーション間の統一性(consistency)を有する前記共有されるボリューム(shared volume)のスナップショットを生成するための方法であって、
第１のノード上のバックアップコーディネータのところでバックアップアプリケーションから要求を受信するステップであって、前記要求が、前記第１のノード上の少なくとも１つのアプリケーションおよび前記クラスタ内の少なくとも１つの他のノード上の少なくとも１つのアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを要求し、前記第１のノード上および前記少なくとも１つの他のノード上の前記少なくとも１つのアプリケーションの各々がライタを含み、前記第１のノードおよび前記少なくとも１つの他のノードの各々がクラスタライタおよびクラスタサービスをさらに含む、ステップと、
前記バックアップコーディネータにより、前記第１のノード上の前記クラスタライタおよび各ライタにフリーズコマンドを送信するステップであって、前記フリーズコマンドが、前記第１のノード上の前記クラスタライタおよび各ライタにアプリケーションデータを前記共有されるボリュームにパーシスト(persist)するように命令する、ステップと、
前記第１のノード上の前記クラスタライタにより、前記第１のノード上の前記クラスタサービスに前記フリーズ(freeze)コマンドの通知を送信するステップと、
前記第１のノード上の前記クラスタサービスにより、各々の前記少なくとも１つの他のノード上の前記クラスタサービスに前記フリーズコマンドの通知を送信するステップであって、前記通知(notification)が、各々の前記少なくとも１つの他のノード上で前記共有されるボリュームのバックアッププロセスを開始することを、各々の前記少なくとも１つの他のノード上の前記クラスタサービスに命令する、ステップと、
前記第１のノード上の前記クラスタライタにより、前記フリーズコマンドから戻る前に各々の前記少なくとも１つの他のノード上の前記クラスタサービスからの通知を待つステップであって、前記通知が、前記対応するノード上の各ライタが前記共有されるボリュームに対して対応するアプリケーションデータをパーシストしたことを示す、ステップと、
各々の前記少なくとも１つの他のノード上の前記クラスタサービスから前記通知を受信した後、前記第１のノード上の前記クラスタライタにより、前記フリーズコマンドから戻るステップと、
前記第１のノード上の前記クラスタライタが前記フリーズコマンドから戻った後で、前記バックアップコーディネータにより、前記ストレージプロバイダに要求を送信するステップであって、前記要求により、前記ストレージプロバイダが前記共有されるボリュームのスナップショットを生成し、前記スナップショットが、前記第１のノード上および前記共有されるボリュームを使用する前記少なくとも１つの他のノード上の各アプリケーションに対してアプリケーション間の統一性を有する、ステップと、
を含む方法。
【請求項２】
前記ストレージプロバイダに前記共有されるボリュームのスナップショットを生成させる前記要求を前記ストレージプロバイダに送信する前に、前記バックアップコーディネータにより、前記共有されるボリュームがファイルシステムメタデータをパーシストするように、前記共有されるボリュームにフラッシュアンドホールド(flush and hold)コマンドを送信するステップ
をさらに含む、請求項１に記載の方法。
【請求項３】
前記スナップショットが生成された後、前記バックアップコーディネータにより、前記第１のノード上の前記クラスタライタおよび前記ライタのうちの少なくとも１つのライタにポストスナップショットコマンドを送信するステップと、
前記第１のノード上の前記クラスタライタにより、前記第１のノード上の前記クラスタサービスに前記ポストスナップショットコマンドの通知を送信するステップと、
前記第１のノード上の前記クラスタサービスにより、各々の前記少なくとも１つの他のノード上の前記クラスタサービスに前記ポストスナップショット(post snapshot)コマンドの通知を送信するステップと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記ポストスナップショットコマンドを送信される、前記第１のノード上の前記ライタのうちの前記少なくとも１つのライタが、ハイパーバイザ(hypervisor)アプリケーションのライタを備える、請求項３に記載の方法。
【請求項５】
前記第１のノード上の前記クラスタライタにより、各々の前記少なくとも１つの他のノード上の前記クラスタサービスから通知を待つステップであって、前記通知が、各々の前記少なくとも１つの他のノード上で前記バックアッププロセスが完了したことを示す、ステップと、
前記第１のノード上の前記クラスタライタにより、前記バックアッププロセスが完了したことの前記通知を、各々の前記少なくとも１つの他のノード上の前記クラスタサービスから受信するステップと
をさらに含む請求項３に記載の方法。
【請求項６】
前記バックアッププロセスが完了したことの前記通知を、各々の前記少なくとも１つの他のノード上の前記クラスタサービスから受信した後、前記第１のノード上の前記クラスタライタにより、前記ポストスナップショットコマンドから戻るステップ
をさらに含む、請求項５に記載の方法。
【請求項７】
前記第１のノード上の前記クラスタライタおよび前記少なくとも１つのライタが前記ポストスナップショットコマンドから戻った後、前記バックアップコーディネータが前記スナップショットが成功裏に完了したことを前記バックアップアプリケーションに通知するステップ
をさらに含む、請求項６に記載の方法。
【請求項８】
バックアップコーディネータと、少なくとも１つのアプリケーションと、ヘルパープロバイダと、クラスタサービスと、クラスタライタとを含む、クラスタのノードにおいて、共有されるボリュームのバックアッププロセスが前記クラスタの別のノード上で開始されたことの通知に応答するための方法であって、
共有されるボリュームのバックアッププロセスが前記クラスタ内の第２のノードで開始されたことの通知を前記第１のノード上のクラスタサービスのところで受信するステップであって、前記共有されるボリュームが各々の前記第１および第２のノード上の少なくとも１つのアプリケーションによって使用され、前記通知が前記第２のノード上のクラスタサービスから受信され、前記第２のノード上のクラスタライタによりフリーズコマンドが受信されたことを示す、ステップと、
前記第１のノード上の前記クラスタサービスにより、前記第１のノード上のバックアップコーディネータに要求を送信するステップであって、前記要求が前記共有されるボリュームのスナップショットを生成することを要求する、ステップと、
前記バックアップコーディネータにより、前記第１のノード上の前記少なくとも１つのアプリケーションのクラスタライタおよびライタにフリーズコマンドを送信するステップであって、前記フリーズコマンドが、前記クラスタライタおよび前記少なくとも１つのライタに、アプリケーションデータを前記共有されるボリュームにパーシストすることを命令する、ステップと、
前記クラスタライタおよび前記少なくとも１つのライタが前記フリーズコマンドから戻った後で、前記バックアップコーディネータにより、前記第１のノード上のヘルパープロバイダにコミットコマンドを送信するステップと、
前記第１のノード上の前記ヘルパープロバイダにより、前記第１のノード上の前記クラスタサービスに前記コミットコマンドの通知を送信するステップであって、前記ヘルパープロバイダが前記コミットコマンドをブロックする、ステップと、
前記第１のノード上の前記クラスタサービスにより、前記コミットコマンドが受信されたことの通知を前記第２のノード上の前記クラスタライタに送信するステップであって、それにより、前記第１のノード上の各ライタが対応するアプリケーションのデータを前記共有されるボリュームにパーシストしたことが示される、ステップと
を含む方法。
【請求項９】
前記共有されるボリュームのスナップショットを生成することの、前記第１のノード上の前記クラスタサービスによって送信される前記要求が、前記スナップショットを生成するのに使用するのに前記ヘルパーライタを指定する、請求項８に記載の方法。
【請求項１０】
前記第１のノード上の前記クラスタサービスにより、前記第２のノード上の前記クラスタライタによりポストスナップショットコマンドが受信されたことの通知を、前記第２のノード上の前記クラスタサービスから受信するステップ
をさらに含む、請求項８に記載の方法。
【請求項１１】
前記第１のノード上の前記クラスタサービスにより、前記第２のノード上の前記クラスタライタにより前記ポストスナップショットコマンドが受信されたことの通知を前記ヘルパープロバイダに送信するステップ
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記ヘルパー(helper)プロバイダにより、前記コミットコマンドから戻るステップ
をさらに含む、請求項１１に記載の方法。
【請求項１３】
前記第１のノード上の前記クラスタライタおよび前記少なくとも１つのライタにより、ポストスナップショット(post snapshot)コマンドを受信するステップと、
前記少なくとも１つのライタにより、バーチャルスナップショット上でポスト処理(post processing)を実行するステップと
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記第１のノード上の前記クラスタライタおよび前記少なくとも１つのライタが前記ポストスナップショットコマンドから戻った後、前記バックアップコーディネータが、前記スナップショットが前記第１のノード上で成功裏に生成されたことを前記第１のノード上の前記クラスタサービスに通知するステップと、
前記通知に応答して、前記第１のノード上の前記クラスタサービスが、前記スナップショットが前記第１のノード上で成功裏に完了したことを前記第２のノード上の前記クラスタライタに通知するステップであって、それにより、前記少なくとも１つのライタの各々が前記第１のノード上で前記ポストスナップショットコマンドを処理したことが前記第２のノード上の前記クラスタライタに示される、ステップと
をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記第１のノード上の前記クラスタライタが前記第１のノード上の前記バーチャルスナップショットを消去する(deleting)ステップ
をさらに含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明の一実施例は、例えば、アプリケーション間の統一性を有する共有されるボリュームのスナップショットに関する。
【背景技術】
【０００２】
[0001]コンピュータシステムおよび関連する技術は社会の多くの側面に影響する。実際、情報を処理するためのコンピュータシステムの能力は生活の仕方および仕事の仕方を変化させている。現在、コンピュータシステムは、一般に、コンピュータシステムの出現前では手動で実行されていたような多くのタスク（例えば、ワードプロセッシング、スケジューリング、会計など）を実行する。より最近では、コンピュータシステムは、有線コンピュータネットワークおよび無線コンピュータネットワークの両方を形成するために互いに結合されたり他の電子デバイスに結合されたりし、それらの有線コンピュータネットワークおよび無線コンピュータネットワークを介して、コンピュータシステムおよび他の電子デバイスが電子データを転送することができる。したがって、多数の計算タスクを実行することは多くの異なるコンピュータシステムおよび／または多くの異なる計算機環境に分散される。
【０００３】
[0002]分散環境内でアプリケーションをホストにより処理することがより一般的になってきている。例えば、アプリケーションはしばしばノードクラスタのうちの１つのノード（例えば、サーバ）上でホストにより処理される。クラスタ内では、異なるアプリケーションが異なるノード上でホストにより処理され得るが、各々が１つまたは複数の共通のストレージボリュームにアクセスすることができる。言い換えると、１つのストレージが、クラスタのうちの種々のノードに跨る多くの異なるアプリケーションによってアクセスされ得る。
【０００４】
[0003]図１がこのタイプの環境を描いている。示されるように、クラスタ１００がノード１０１〜１０３を有する。この例示のクラスタでは、各ノードが、コーディネータと、バックアップアプリケーションと、ストレージプロバイダと、２つのアプリケーションとを有する。しかし、ノードは任意の数のアプリケーションさらには複数のストレージプロバイダを有することができる。この実施例では、各アプリケーションがデータを記憶するためにストレージ１０４上でボリューム１０４ａを使用する。
【０００５】
[0004]図１に描かれるコンポーネントは、クラスタ環境さらには非クラスタ環境でバックアップを実行するのに使用されている従来技術のバックアップシステムを示す。このタイプのバックアップシステムで使用され得るコーディネータの一例はＭｉｃｒｏｓｏｆｔのＶｏｌｕｍｅ  Ｓｈａｄｏｗ  Ｃｏｐｙ  Ｓｅｒｖｉｃｅ（ＶＳＳ）である。このバックアップシステムでは、コーディネータ１１０〜１３０が、ボリューム１０４ａなどの共有されるボリュームのバックアップをコーディネートするのに使用される。このバックアップはボリューム１０４ａのポイントインタイムイメージ（ｐｏｉｎｔ−ｉｎ−ｔｉｍｅ  ｉｍａｇｅ）（すなわち、スナップショット）を含むことができる。スナップショットを生成することはノード１０１上で行われる形で説明されるが、ノード上でボリューム１０４ａのスナップショットを生成するための同様のステップは各ノード上で実行され得る。言い換えると、ノード１０１〜１０３上の各コーディネータはボリュームのスナップショットを生成するために同様に機能する。
【０００６】
[0005]ノード１０１上でスナップショットを生成するために、バックアップアプリケーション１１４が、スナップショットを生成するための要求をコーディネータ１１０に送信する。この要求では、バックアップアプリケーション１１４が、スナップショットを生成するのに使用されるべきストレージプロバイダ（この実施例では、ストレージプロバイダ１１３）を指定する。コーディネータ１１０は、スナップショットを準備することをライタに命令するためにノード１０１上の各プリケーションのライタ（ライタ１１１ａおよび１１２ａ）に連絡される。この連絡はフリーズコマンドと称される。
【０００７】
[0006]このような準備には、インメモリキャッシュをディスクへフラッシュすること、スナップショットが生成されるまでアプリケーションによる書き込みをサスペンド（すなわち、フリージング）することが含まれる。このようにして、各ライタにより、スナップショットが生成される前にすべてのアプリケーションデータがボリューム１０４ａに確実にパーシスト（ｐｅｒｓｉｓｔ）される。各ライタがフリーズコマンドから戻ると、コーディネータ１１０が、ファイルシステムメタデータをボリューム１０４ａにパーシストしてボリューム１０４ａに対する書き込みをサスペンドすることなどにより、スナップショットのための準備をボリューム１０４ａに命令する。この連絡はフラッシュアンドホールドコマンド（ｆｌｕｓｈ  ａｎｄ  ｈｏｌｄ  ｃｏｍｍａｎｄ）と称される。
【０００８】
[0007]ボリューム１０４ａがフラッシュアンドホールドコマンドから戻ると、コーディネータ１１０がボリューム１０４ａのスナップショットを生成するようにストレージプロバイダ１１３に命令する。これはコミットコマンドと称される。１つのストレージプロバイダが示されるが、ノードは、ストレージ１０４のためのハードウェアコントローラに直接にインターフェースするためのハードウェアストレージプロバイダ、または、オペレーティングシステム（例えば、ファイルシステム）にインターフェースするためのソフトウェアストレージプロバイダなどの、複数のストレージプロバイダを採用することができる。本発明の目的において、スナップショット生成するのに使用されるストレージプロバイダの種類は重要ではない。
【０００９】
[0008]ストレージプロバイダ１１３がボリューム１０４ａのスナップショットを生成する。このスナップショットは、単一のポイントインタイム（例えば、各ライタがノード１０１上の各アプリケーションのデータをボリューム１０４ａおよび１０４ｂにパーシストした後のポイントインタイムがそのキャッシュをフラッシュする）において存在するときのボリューム１０４ａの中身のコピーである。このスナップショットが生成されてストレージプロバイダ１１３がコミットコマンドから戻ると、コーディネータ１１０が、処理を再開することが可能であることをボリューム１０４ａに命令し（リリースコマンドと称される）、ボリューム１０４ａへの書き込みをアプリケーションが再開することができることを各ライタに命令する（ソーコマンド（ｔｈａｗ  ｃｏｍｍａｎｄ）と称される）。明らかなように、このバックアッププロセスは、スナップショットの生成中にアプリケーションが実行を継続するのを可能にする。アプリケーションは、フリーズコマンドおよびソーコマンドを受信するときの間においてボリューム１０４ａへ書き込みを行うことのみが防止される。しかし、アプリケーションはこの時間においてボリューム１０４ａの読み込みを継続することはできる。
【００１０】
[0009]このバックアッププロセスは、フラッシュアンドホールドコマンドがスナップショットが生成される前に、すべてのファイルシステムデータにパーシストされることによりファイルシステム間の統一性を有するようなボリューム１０４ａのポイントインタイムスナップショットを作る。また、このポイントインタイムスナップショットは、この実施例ではノード１０１であるスナップショットが開始されるところのノード上で動作する各アプリケーションに対してアプリケーション間の統一性を有する。その理由は、フリーズコマンドにより各アプリケーションがそのデータをボリューム１０４ａにパーシストするからである。
【００１１】
[0010]しかし、この従来技術のバックアッププロセスがクラスタ環境で使用される場合、ボリューム１０４ａのポイントインタイムスナップショットはノード１０２または１０３上で動作する各アプリケーションに対してアプリケーション間の統一性を有さない。その理由は、コーディネータ１１０がクラスタ内の他のノード（例えば、ノード１０２および１０３）に連絡されないためである。より具体的には、この従来技術のバックアップシステムは、１つのノード上のコーディネータが別のノード上のコーディネータまたはライタに連絡するのを可能にするように構成されない。したがって、アプリケーション１２１、１２２、１３１および１３２はノード１０１上でスナップショットが生成される前にボリューム１０４ａにパーシストされていないインメモリキャッシュ（または、パーシストされない他のデータ）を包含し、したがって、このパーシストされていないデータはスナップショットに含まれないことになる。
【００１２】
[0011]そのため、クラスタ内の各アプリケーションでポイントインタイムスナップショットを生成するための従来技術のバックアップシステムでは、ユーザがクラスタ内の各々のノード上でスナップショットを開始しなければならない。例えば、ユーザは、上述したものと同じプロセスの後でボリューム１０４ａの個別のポイントインタイムスナップショットを生成することを目的としてコーディネータ１２０および１３０にそれぞれ連絡するために、各々のノード１０２および１０３上でバックアップアプリケーション１２４および１３４を使用する。これにより、クラスタ内の各ノード上で個別のスナップショットが生成される。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
[0012]本発明は、種々のノードに跨ってアプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法、システムおよびコンピュータプログラム製品に及ぶ。本発明は１つのノード上でボリュームのスナップショットを開始することを可能にし、ここでは、スナップショットが生成される前に、クラスタ内のすべてのアプリケーションがそれらのデータをボリュームにパーシストするためにそのボリュームを使用する。したがって、スナップショットは、そのボリュームを使用するクラスタ内のすべてのアプリケーションに対してアプリケーション間の統一性を有する。また、本発明は、ノード上で生成されたスナップショットに対してポストスナップショット処理を実行することを他のノード上のアプリケーションにより行うのを可能にする。
【課題を解決するための手段】
【００１４】
[0013]一実施形態では、要求がクラスタの第１のノード上のバックアップコーディネータのところで受信される。要求がバックアップアプリケーションから受信され、クラスタ内の第１のノード上および少なくとも１つの他のノード上の少なくとも１つのアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを要求する。第１のノード上および少なくとも１つの他のノード上の少なくとも１つのアプリケーションの各々がライタを含む。第１のノード上および少なくとも１つの他のノードの各々がクラスタライタを含む。
【００１５】
[0014]バックアップコーディネータが第１のノード上のクラスタライタおよび各ライタにフリーズコマンドを送信する。フリーズコマンドが、第１のノード上のクラスタライタおよび各ライタに、アプリケーションデータを共有されるボリュームにパーシストするように命令する。次いで、第１のノード上のクラスタライタがフリーズコマンドの通知を第１のノード上のクラスタサービスに送信する。第１のノード上のクラスタサービスがフリーズコマンドの通知を各々の少なくとも１つの他のノード上のクラスタサービスに送信する。この通知が、各々の少なくとも１つの他のノード上で共有されるボリュームのバックアッププロセスを開始するように、各々の少なくとも１つの他のノード上のクラスタサービスに命令する。
【００１６】
[0015]第１のノード上のクラスタライタが、フリーズコマンドから戻る前に、各々の少なくとも１つの他のノード上のクラスタサービスからの通知を待つ。この通知は、対応するノード上の各ライタが対応するアプリケーションデータを共有されるボリュームにパーシストしたことを示す。各々の少なくとも１つの他のノード上のクラスタサービスから通知を受信すると、第１のノード上のクラスタライタがフリーズコマンドから戻る。
【００１７】
[0016]第１のノード上のクラスタライタがフリーズコマンドから戻ると、バックアップコーディネータが第１のノード上のストレージプロバイダに要求を送信する。この要求により、ストレージプロバイダが共有されるボリュームのスナップショットを生成する。スナップショットは、共有されるボリュームを使用する第１のノード上および少なくとも１つの他のノード上の各アプリケーションに対してアプリケーション間の統一性を有する。
【００１８】
[0017]別の実施形態では、通知が第１のノード上のクラスタサービスのところで受信される。この通知が、クラスタ内の第２のノード上で共有されるボリュームのバックアッププロセスが開始されたことを示す。共有されるボリュームが、第１のノードおよび第２のノードの各々の上の少なくとも１つのアプリケーションによって使用される。通知が第２のノード上のクラスタサービスから受信され、第２のノード上のクラスタライタによりフリーズコマンドが受信されたことを示す。
【００１９】
[0018]第１のノード上のクラスタサービスが第１のノード上のバックアップコーディネータに要求を送信する。この要求が、共有されるボリュームのスナップショットを生成することを要求する。バックアップコーディネータが、第１のノード上の少なくとも１つのアプリケーションのクラスタライタおよびライタにフリーズコマンドを送信する。このフリーズコマンドが、クラスタライタおよび少なくとも１つのライタに、アプリケーションデータを共有されるボリュームにパーシストすることを命令する。
【００２０】
[0019]クラスタライタおよび少なくとも１つのライタがフリーズコマンドから戻った後、バックアップコーディネータが第１のノード上のヘルパープロバイダ（ｈｅｌｐｅｒ  ｐｒｏｖｉｄｅｒ）にコミットコマンドを送信する。第１のノード上のヘルパープロバイダが第１のノード上のクラスタサービスにコミットコマンドの通知を送信する。ヘルパープロバイダがコミットコマンドをブロックする。次いで、第１のノード上のクラスタサービスが、コミットコマンドが受信されてしたがって共有されるボリュームに対して第１のノード上の各ライタが対応するアプリケーションのデータをパーシストしたことを示す通知を第２のノード上のクラスタライタに送信する。
【００２１】
[0020]この概要は概念の選択肢を簡単な形で導入するために提供されるものであり、この概念の選択肢は以下の詳細な説明でさらに説明される。この概要は特許請求される主題の重要な特徴または本質的な特徴を示すことを意図されず、また、特許請求される主題の範囲を決定することを補助するものとして使用されることも意図されない。
【００２２】
[0021]本発明の追加の特徴および利点が以下の説明に記載されており、以下の説明から部分的に明らかとなるかまたは本発明を実施することによって認識され得る。添付の特許請求の範囲で具体的に明示される器具および組み合わせにより本発明のこれらの特徴および利点が実現され得、得られる。本発明のこれらのおよび他の特徴が以下の説明よりより完全に明確となるか、または、以下に記載される通りに本発明を実施することによって認識され得る。
【００２３】
[0022]本発明の上に列記した利点および特徴ならびに他の利点および特徴を得るための手法を説明するために、上で簡単に説明した本発明を、添付図面に示される本発明の特定の実施形態を参照しながらより具体的に説明する。これらの図面が本発明の典型的な実施形態のみを描いており、したがって本発明の範囲を限定するものとしてみなされないことを理解した上で、添付図面を使用して本発明をより具体的かつより詳細に記載して説明する。
【図面の簡単な説明】
【００２４】
【図１】[0023]従来技術のバックアップシステムのコンポーネントを有するノードの例示のクラスタを示す図である。
【図２】[0024]本発明の実施形態による、バックアップシステムのコンポーネントを有するノードの例示のクラスタを示す図である。
【図３】[0025]バックアッププロセス中の一連の連絡を示している、ノードの例示のクラスタを示す図である。
【図４】[0026]バックアッププロセス中の別の一連の連絡を示している、ノードの例示のクラスタを示す図である。
【図５】[0027]クラスタ内の複数のノード上のアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを開始するための例示の方法を示すフローチャートである。
【図６】[0028]共有されるボリュームのスナップショットを生成することがクラスタの別のノード上で開始されたことの通知に反応するための例示の方法を示すフローチャートである。
【発明を実施するための形態】
【００２５】
[0029]本発明は、種々のノードに跨ってアプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成すための方法、システムおよびコンピュータプログラム製品に及ぶ。本発明は１つのノード上でボリュームのスナップショットを開始することを可能にし、ここでは、スナップショットが生成される前に、クラスタ内のすべてのアプリケーションがそれらのデータをボリュームにパーシストするためにそのボリュームを使用する。したがって、スナップショットは、そのボリュームを使用するクラスタ内のすべてのアプリケーションに対してアプリケーション間の統一性を有する、また、本発明は、ノード上で生成されたスナップショットに対してポストスナップショット処理を実行することを他のノード上のアプリケーションにより行うのを可能にする。
【００２６】
[0030]一実施形態では、要求がクラスタの第１のノード上のバックアップコーディネータのところで受信される。要求はバックアップアプリケーションから受信され、クラスタ内の第１のノード上および少なくとも１つの他のノード上の少なくとも１つのアプリケーションによって使用される共有のボリュームのスナップショットを生成することを要求する。第１のノード上および少なくとも１つの他のノード上の少なくとも１つのアプリケーションの各々がライタを含む。また、第１のノードおよび少なくとも１つの他のノードの各々がクラスタライタを含む。
【００２７】
[0031]バックアップコーディネータが第１のノード上のクラスタライタおよび各ライタにフリーズコマンドを送信する。フリーズコマンドが、第１のノード上のクラスタライタおよび各ライタに、アプリケーションデータを共有されるボリュームにパーシストするように命令する。次いで、第１のノード上のクラスタライタがフリーズコマンドの通知を第１のノード上のクラスタサービスに送信する。第１のノード上のクラスタサービスがフリーズコマンドの通知を各々の少なくとも１つの他のノード上のクラスタサービスに送信する。この通知が、各々の少なくとも１つの他のノード上で共有されるボリュームのバックアッププロセスを開始するように、各々の少なくとも１つの他のノード上のクラスタサービスに命令する。
【００２８】
[0032]第１のノード上のクラスタライタが、フリーズコマンドから戻る前に、各々の少なくとも１つの他のノード上のクラスタサービスからの通知を待つ。この通知は、対応するノード上の各ライタが対応するアプリケーションデータを共有されるボリュームにパーシストしたことを示す。各々の少なくとも１つの他のノード上のクラスタサービスから通知を受信すると、第１のノード上のクラスタライタがフリーズコマンドから戻る。
【００２９】
[0033]第１のノード上のクラスタライタがフリーズコマンドから戻ると、バックアップコーディネータが第１のノード上のストレージプロバイダに要求を送信する。この要求により、ストレージプロバイダが共有されるボリュームのスナップショットを生成する。スナップショットは、共有されるボリュームを使用する第１のノード上および少なくとも１つの他のノード上の各アプリケーションに対してアプリケーション間の統一性を有する。
【００３０】
[0034]別の実施形態では、通知が第１のノード上のクラスタサービスのところで受信される。この通知は、クラスタ内の第２のノード上で共有されるボリュームのバックアッププロセスが開始されたことを示す。共有されるボリュームが、第１のノードおよび第２のノードの各々の上の少なくとも１つのアプリケーションによって使用される。通知が第２のノード上のクラスタサービスから受信され、第２のノード上のクラスタライタによりフリーズコマンドが受信されたことを示す。
【００３１】
[0035]第１のノード上のクラスタサービスが第１のノード上のバックアップコーディネータに要求を送信する。この要求が、共有されるボリュームのスナップショットを生成することを要求する。バックアップコーディネータが、第１のノード上の少なくとも１つのアプリケーションのクラスタライタおよびライタにフリーズコマンドを送信する。このフリーズコマンドが、クラスタライタおよび少なくとも１つのライタに、アプリケーションデータを共有されるボリュームにパーシストすることを命令する。
【００３２】
[0036]クラスタライタおよび少なくとも１つのライタがフリーズコマンドから戻った後、バックアップコーディネータが第１のノード上のヘルパープロバイダにコミットコマンドを送信する。第１のノード上のヘルパープロバイダが第１のノード上のクラスタサービスにコミットコマンドの通知を送信する。ヘルパープロバイダがコミットコマンドをブロックする。次いで、第１のノード上のクラスタサービスが、コミットコマンドが受信されてしたがって共有されるボリュームに対して第１のノード上の各ライタが対応するアプリケーションのデータをパーシストしたことを示す通知を第２のノード上のクラスタライタに送信する。
【００３３】
[0037]本発明の実施形態は、後でより詳細に説明するように、例えば１つまたは複数のプロセッサおよびシステムメモリなどの、コンピュータハードウェアを有する専用または汎用のコンピュータを備えることができるかまたは利用することができる。本発明の範囲内にある実施形態はまた、コンピュータ実行可能命令および／またはデータ構造を実行または記憶するための物理媒体または他のコンピュータ可読媒体を有する。このようなコンピュータ可読媒体は、汎用または専用のコンピュータシステムによってアクセスされ得る任意の入手可能な媒体であってよい。コンピュータ実行可能命令を記憶するコンピュータ可読媒体はコンピュータストレージ媒体（デバイス）である。コンピュータ実行可能命令を実行するコンピュータ可読媒体は伝送媒体である。したがって、限定しないが例えば、本発明の実施形態は、コンピュータストレージ媒体（デバイス）および伝送媒体の、異なる種類の少なくとも２つの個別のコンピュータ可読媒体を備えることができる。
【００３４】
[0038]コンピュータストレージ媒体（デバイス）は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ソリッドステートドライブ（ＳＳＤ）（例えば、ＲＡＭに基づく）、フラッシュメモリ、相変化メモリ（ＰＣＭ）、他の種類のメモリ、他の光学ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、コンピュータ実行可能命令またはデータ構造の形態の所望されるプログラムコード手段を記憶するのに使用され得かつ汎用または専用のコンピュータによってアクセスされ得る任意の他の媒体を含む。
【００３５】
[0039]「ネットワーク」は、コンピュータシステム間および／またはモジュール間ならびに／あるいは他の電子デバイス間で電子データを転送することができる１つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続（有線、無線、あるいは、有線または無線の組み合わせ）を介してコンピュータに移送されるかまたは提供されると、コンピュータが適切にその接続を移送媒体とみなす。移送媒体は、コンピュータ実行可能命令またはデータ構造の形態の所望されるプログラムコード手段を実行するのに使用され得かつ汎用または専用のコンピュータによってアクセスされ得るネットワークおよび／またはデータリンクを含んでよい。また、上記の組み合わせもコンピュータ可読媒体の範囲に包含されるべきである。
【００３６】
[0040]また、種々のコンピュータシステムコンポーネントに到達すると、コンピュータ実行可能命令またはデータ構造の形態のプログラムコード手段が移送媒体からコンピュータストレージ媒体（デバイス）へとの自動で転送され得る（逆も同様である）。例えば、ネットワークまたはデータリンクを介して受信されるコンピュータ実行可能命令またはデータ構造はネットワークインターフェースモジュール（例えば、「ＮＩＣ」）内のＲＡＭでバッファされ得、コンピュータシステムのところにあるコンピュータシステムＲＡＭおよび／または低揮発性コンピュータストレージ媒体（ｌｅｓｓ  ｖｏｌａｔｉｌｅ  ｃｏｍｐｕｔｅｒ  ｓｔｏｒａｇｅ  ｍｅｄｉａ）（デバイス）へと最終的に転送され得る。したがって、コンピュータストレージ媒体（デバイス）は、やはり移送媒体を利用する（または、主として移動媒体を利用する）コンピュータシステムコンポーネントに含まれてよいことを理解されたい。
【００３７】
[0041]コンピュータ実行可能命令は例えば命令およびデータを含み、プロセッサによって実行されると、汎用のコンピュータ、専用のコンピュータまたは専用の処理デバイスに特定の機能または機能のグループを実行させる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間的フォーマット命令、またはさらにはソースコードであってよい。本主題は構造的特徴および／または方法論的行為に特有の専門用語で説明されるが、添付の特許請求の範囲で定義される主題が上で説明される特徴または行為に必ずしも限定されないことを理解されたい。むしろ、説明される特徴および行為は特許請求の範囲を実施する例示の形態として開示される。
【００３８】
[0042]本発明が、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能のコンシューマ電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、タブレット、ページャ、ルータおよびスイッチなどを含めた、多くの種類のコンピュータシステム構成を用いるネットワーク計算機環境で実施され得ることを当業者であれば認識するであろう。本発明はまた、分散システム環境でも実施され得、ここでは、ネットワークを介してリンクされる（有線データリンク、無線データリンク、または、有線データリンクと無線データリンクとの組み合わせによる）ローカルコンピュータシステムおよびリモートコンピュータシステムの両方がタスクを実行する。分散システム環境では、プログラムモジュールがローカルメモリストレージデバイスおよびリモートメモリストレージデバイスの両方に配置され得る。
【００３９】
[0043]図２が、図１に示されるクラスタ１００と同じノードを有するクラスタ２００を示す。クラスタ２００内の各ノードは、分かり易いようにバックアップアプリケーション１２４および１３４ならびにストレージプロバイダ１２３および１３３が示されないことを除いて同じコンポーネントを有する（ただし、これらは、ノード１０２および１０３からバックアップを開始することを所望される場合などにはこれらのノード上に存在してよい）。さらに、各ノードはクラスタサービスおよびクラスタライタを含むものとして示される。これらのクラスタサービスおよびクラスタライタは、ボリューム１０４ａを使用するクラスタ２００内のすべてのアプリケーションに対してアプリケーション間の統一性を有するボリューム１０４ａのスナップショットを生成することを可能にする。これらのクラスタサービスおよびクラスタライタは、図１で説明される従来技術のバックアップシステム内で従来技術のバックアップシステムによりクラスタ全体にわたってアプリケーション間の統一性を有するスナップショット(ｃｌｕｓｔｅｒ  ｗｉｄｅ  ａｐｐｌｉｃａｔｉｏｎ  ｃｏｎｓｉｓｔｅｎｔ  ｓｎａｐｓｈｏｔｓ）を生成するのを可能にするように構成される。
【００４０】
[0044]図１に関連して説明したように、バックアップアプリケーション１１４がコーディネータ１１０に連絡されることによりボリューム１０４ａのスナップショットを生成することを開始することができる。この連絡には、スナップショットを生成するのに使用されるべきストレージプロバイダ１１３を指定することが含まれる。バックアップアプリケーション１１４からの要求に応答して、コーディネータ１１０が、ライタ１１１ａおよび１１２ａさらにはクラスタライタ２０１にフリーズコマンドを送信する（ライタ１１１ａおよび１１２ａと同様のクラスタライタ２０１がライタとしてコーディネータ１１０に登録されることにより）。
【００４１】
[0045]図１に関連して上述したように、ライタ１１１ａおよび１１２ａがフリーズコマンドに応答する。しかし、フリーズコマンドに応答して、クラスタライタ２０１がノード１０１上のクラスタサービス２０４に連絡され、これがさらにクラスタの他のノード上のクラスタサービスに連絡される。したがって、ノード１０１上でフリーズコマンドが生成されたことの通知がクラスタサービス２０４からクラスタサービス２０５および２０６へとブロードキャスト（ｂｒｏａｄｃａｓｔ）される。
【００４２】
[0046]クラスタサービス２０４にフリーズコマンドを通知した後、クラスタライタ２０１がクラスタサービス２０５および２０６の各々から応答を受信するまで待つ（つまり、フリーズコマンドから戻らない）。フリーズコマンドへ応答することを待つことにより、クラスタライタ２０１がコーディネータ１１０がバックアッププロセスを進行することを防止する。
【００４３】
[0047]クラスタサービスがクラスタ内の別のノード上でフリーズコマンドが生成されたことの通知を受信すると、クラスタサービスが対応するノード上でスナップショットを生成することを開始するためのバックアップアプリケーションとして機能する。例えば、クラスタサービス２０５がクラスタサービス２０４から通知を受信すると、クラスタサービス２０５が、ノード１０２上でスナップショットを生成することを開始するためにコーディネータ１２０に連絡される。クラスタサービス２０５が、ノード１０２上でスナップショットを生成するためにヘルパープロバイダ２２３を使用することを指定する。同様に、クラスタサービス２０６がクラスタサービス２０４から通知を受信すると、クラスタサービス２０６がノード１０３上でスナップショットを生成することを開始するためにコーディネータ１３０に連絡される。クラスタサービス２０６が、ノード１０３上でスナップショットを生成するためにヘルパープロバイダ２３３を使用することを指定する。
【００４４】
[0048]その結果、コーディネータ１２０および１３０が、フリーズコマンドをノード上の各ライタに送信することによりノード１０２および１０３上でそれぞれスナップショットを生成することを開始する。例えば、コーディネータ１２０がライタ１２１ａおよび１２２ａさらにはクラスタライタ２０２へとフリーズコマンドを送信し、コーディネータ１３０がライタ１３１ａおよび１３２ａさらにはクラスタライタ２０３へとフリーズコマンドを送信する。図１に関連して説明したように、フリーズコマンドが、そのインメモリデータをパーシストすることなどにより各ライタにスナップショットを生成することを準備させる。クラスタライタ２０２および２０３が単純にフリーズコマンドから戻る。
【００４５】
[0049]ノード１０２および１０３上のライタがフリーズコマンドから戻った後、コーディネータ１２０および１３０がボリューム１０４ａにフラッシュアンドホールドコマンドを送信する。これらのフラッシュアンドホールドコマンドを処理するための手法は本発明では重要ではない。本発明に関して、コーディネータ１２０および１３０からのこれらのフラッシュアンドホールドコマンドがボリューム１０４ａへと最終的に誘導されないことを理解されたい（その理由は、後で説明するように、コーディネータ１１０によりフラッシュアンドホールドコマンドがボリューム１０４ａに送信されるからである）。
【００４６】
[0050]次いで、コーディネータ１２０および１３０がヘルパープロバイダ２２３および２３３にそれぞれコミットコマンドを送信する（その理由は、スナップショットを開始するためのそれぞれの要求でヘルパープロバイダ２２３および２３３が指定されることによる）。ヘルパープロバイダ２２３および２３３がブロッキングによりコミットコマンドに応答する。言い換えると、ヘルパープロバイダ２２３および２３３は最初にコーディネータ１２０および１３０に応答するわけではない。また、ヘルパープロバイダ２２３および２３３はボリューム１０４ａのスナップショットを生成しない（ストレージプロバイダにコミットコマンドが送信される場合には生成する）。
【００４７】
[0051]代わりに、ヘルパープロバイダ２２３および２３３がクラスタサービス２０５および２０６のそれぞれにコミットコマンドを通知する。これに応答して、クラスタサービス２０５および２０６の各々がクラスタライタ２０１に通知する。これらの通知は、各々のノード１０２および１０３上でフリーズコマンドが成功裏に完了したことをクラスタライタ２０１に知らせ、それによりノード１０２および１０３上のアプリケーションがそれらのデータをボリューム１０４ａに成功裏にパーシストしたことが示される。
【００４８】
[0052]ヘルパープロバイダ２２３および２３３がコミットコマンドをブロックすることから、コーディネータ１２０および１３０はボリューム１０４ａまたはそれぞれのライタにリリースコマンドまたはソーコマンドに送信せず、それにより、ノード１０１上でスナップショットが生成されるまでライタがボリューム１０４ａを修正することが防止される。
【００４９】
[0053]クラスタライタ２０１がクラスタライタ２０２および２０３から通知を受信すると、クラスタライタ２０１がフリーズコマンドから戻る（つまり、フリーズコマンドに応答して処理が完了したことをコーディネータ１１０に知らせる）。次いで、コーディネータ１１０が上述したようにフラッシュアンドホールドコマンドおよびコミットコマンドを進行させ、それによりストレージプロバイダ１１３内でボリューム１０４ａのスナップショットが生成される。このスナップショットはボリューム１０４ａを使用するクラスタ内のすべてのアプリケーションに対してアプリケーション間の統一性を有する。その理由は、スナップショットが生成される前に各アプリケーションがそのデータをボリューム１０４にパーシストするからである。
【００５０】
[0054]図３が別のクラスタ３００を描いている。クラスタ３００は、クラスタ全体にわたってアプリケーション間の統一性を有するスナップショットを生成するための、本発明によって採用されるバックアッププロセスをより良好に説明するために参照する単純化されたクラスタである（すなわち、クラスタ２００に示されるコンポーネントのサブセット）。以下の番号付きのステップが図３の番号付きの矢印に対応する。
【００５１】
（１）バックアップアプリケーション３１４が、コーディネータ３１０がストレージプロバイダ３１３を使用してボリューム３０４ａのスナップショットの生成を開始することを要求する。
【００５２】
（２）コーディネータ３１０がライタ３１１ａおよびクラスタライタ３５１にフリーズコマンドを送信する。ライタ３１１ａがフリーズコマンドを処理し、ある時点で戻る。
（３）クラスタライタ３５１がノード３０１上のクラスタサービス３６１にフリーズコマンドを通知してブロックする。
【００５３】
（４）クラスタサービス３６１がクラスタサービス３６２にフリーズコマンドを通知する。
（５）クラスタサービス３６２が、コーディネータ３２０がヘルパープロバイダ３２３を使用してボリューム３０４ａのスナップショットの生成を開始することを要求する。
【００５４】
（６）コーディネータ３２０が、ライタ３２１ａおよびクラスタライタ３５２にフリーズコマンドを送信する。ライタ３２１ａがフリーズコマンドを処理し、ある時点で戻る。クラスタライタ３５２が単純にフリーズコマンドから戻る。
【００５５】
（７）コーディネータ３２０がフラッシュアンドホールドコマンドをボリューム３０４ａに送信する。フレッシュアンドホールドコマンドがボリューム３０４ａに送信されずに処理される。
【００５６】
（８）コーディネータ３２０がコミットコマンドをヘルパープロバイダ３２３に送信する。
（９）ヘルパープロバイダ３２３がコミットコマンドの通知をクラスタサービス３６２に送信してブロックする。
【００５７】
（１０）クラスタサービス３６２がクラスタライタ３５１にコミットコマンドを通知する。
（１１）クラスタライタ３５１がフリーズコマンドから戻る。
【００５８】
（１２）コーディネータ３１０がフレッシュアンドホールドコマンドをボリューム３０４ａに送信する。ボリューム３０４ａがフレッシュアンドホールドコマンドを処理して戻る。
【００５９】
（１３）コーディネータ３１０がコミットコマンドをストレージプロバイダ３１３に送信する。
（１４）ストレージプロバイダ３１３がボリューム３０４ａのスナップショットを生成する。
【００６０】
[0055]再び図２を参照すると、ボリューム１０４ａのスナップショットが生成された後、バックアッププロセスを仕上げるための種々の追加のステップが実行される。スナップショットが生成された後、コーディネータ１１０がポストスナップショットコマンドをライタのうちの少なくとも一部（例えば、ハイパーバイザライタおよびクラスタライタ）に送信し、それにより、スナップショットを仕上げる（例えば、テープに書き込む）前に、生成されたスナップショットに対してライタがいくらかの最小の処理を実行することが可能となる。この最小の処理は一般にはアプリケーション自体のデータを修正することに限定される（例えば、部分的に割り当てられたトランザクションをロールバックする）。
【００６１】
[0056]クラスタライタ２０１がポストスナップショットコマンドを受信すると、クラスタライタ２０１がクラスタサービス２０４に通知し、クラスタサービス２０４がポストスナップショットコマンドの通知をクラスタサービス２０５および２０６に送信する。次いで、クラスタライタ２０１が、ポストスナップショットコマンドから戻る前にクラスタサービス２０５および２０６の各々から応答がくるまで待つ。この意味では、クラスタライタ２０１は、フリーズコマンドを取り扱うときと正に同じ形でポストスナップショットコマンドを取り扱う（つまり、ブロックする）。
【００６２】
[0057]ポストスナップショットコマンドを他のノードに通知することの理由は、他のノード上のライタによりスナップショットに対してポストスナップショット処理を実行するのを可能にすることである。実際のスナップショットはノード１０１上に位置することから、バーチャルスナップショットが各々のノード１０２および１０３上に生成される。本願の権利者が所有する、「ＢＡＣＫＵＰ  ＡＮＤ  ＲＥＳＴＯＲＥ  ＯＦ  ＤＡＴＡ  ＦＲＯＭ  ＡＮＹ  ＣＬＵＳＴＥＲ  ＮＯＤＥ（任意のクラスタノードからのデータのバックアップおよび復元）」と題される２０１０年１２月１７日に出願された米国特許出願第１２／９７１，９８１号が、ポストスナップショット処理を実行するためにバーチャルスナップショットを使用する手法を説明している。
【００６３】
[0058]ポストスナップショットコマンドの通知を受信すると、クラスタサービス２０５および２０６がヘルパープロバイダ２２３および２３３のそれぞれに通知する。この時点まで、ヘルパープロバイダ２２３および２３３がコミットコマンドをブロックする。ポストスナップショットコマンドがノード１０１に送信されたことの通知は、ヘルパープロバイダ２２３および２３３に対して、それらがコミットコマンドから戻ることができることを示している。
【００６４】
[0059]ヘルパープロバイダ２２３および２３３がコミットコマンドから戻ると、コーディネータ１２０および１３０の各々がそれぞれのノード上のライタのうちの少なくとも一部にポストスナップショットコマンドを送信する。これにより、各ノード上の各ライタに、生成されたスナップショットに対して追加の処理を実行するための機会が与えられる。フリーズコマンドの場合と同様に、クラスタライタ２０２および２０３もまたポストスナップショットコマンドを受信して単純に戻る。
【００６５】
[0060]ノード１０２および１０３上の各ライタがポストスナップショットコマンドから戻ると、コーディネータ１２０および１３０がバックアッププロセスを仕上げることができ（例えば、リリースコマンドおよびソーコマンドを送信することにより）、クラスタサービス２０５および２０６のそれぞれにスナップショットが完了したことを通知することができる。クラスタサービス２０５および２０６が、ノード１０２および１０３上でバックアップアプリケーションとして機能することから（すなわち、これらがバックアッププロセスを開始する）、この通知を受信する。次いで、クラスタサービス２０５および２０６が、ノード１０２および１０３上のバックアッププロセスが完了したことをクラスタライタ２０１に通知する。
【００６６】
[0061]クラスタライタ２０１が他の各々のノード上のバックアッププロセスが完了したことの通知を受信すると、クラスタライタ２０１がポストスナップショットコマンドから戻り、それにより、コーディネータ１１０がノード１０１上でバックアッププロセスを仕上げることが可能となる（例えば、リリースコマンドおよびソーコマンドを送信することにより）。次いで、コーディネータ１１０が、バックアップアプリケーション１１４にスナップショットが成功裏に生成されたことを通知する。次いで、バックアップアプリケーション１１４が、スナップショットを用いて所望されることを実行することができる（例えば、スナップショットをテープにコピーする）。
【００６７】
[0062]図３と同様に、図４がクラスタ３００を描いており、ポストスナップショット処理を実行するステップをより良好に説明するためにこの図４を参照する。図３のステップ１〜１３を実行した後、以下の番号付きのステップが実行され得る。
【００６８】
（１）コーディネータ３１０がライタ３１１ａおよびクラスタライタ３５１にポストスナップショットコマンドを送信する。ライタ３１１ａがポストスナップショットコマンドを処理し、ある時点で戻る。
【００６９】
（２）クラスタライタ３５１がクラスタサービス３６１にポストスナップショットコマンドを通知し、ブロックする。
（３）クラスタサービス３６１がクラスタサービス３６２にポストスナップショットコマンドを通知する。
【００７０】
（４）クラスタサービス３６２が、ポストスナップショットコマンドがノード３０１上のクラスタライタ３５１によって受信されたことをヘルパープロバイダ３２３に通知する。
【００７１】
（５）ヘルパープロバイダ３２３がコミットコマンドから戻る。
（６）コーディネータ３２０がポストスナップショットコマンドをライタ３２１ａおよびクラスタライタ３５２に送信する。ライタ３２１ａがポストスナップショットコマンドを処理し、ある時点で戻る。クラスタライタ３５２が単純に戻る。
【００７２】
（７）各ライタがポストスナップショットコマンドから戻ると、コーディネータ３２０が、スナップショットが完了したことをクラスタサービス３６２（このクラスタサービス３６２がノード３０２上でのバックアップを要求した）に通知する。
【００７３】
（８）クラスタサービス３６２が、ノード３０２上のバックアッププロセスが完了したことをクラスタライタ３５１に通知する。
（９）クラスタライタ３５１がポストスナップショットコマンドから戻る。
【００７４】
（１０）コーディネータ３１０が、スナップショットが成功裏に生成されたことをバックアップアプリケーション３１４に通知する。
[0063]明らかなように、フリーズコマンドおよびポストスナップショットコマンドが生成されたことを他のノード上のクラスタライタに連絡するために１つのノード上のクラスタライタを使用するこのプロセスにより、これらの他のノード上のライタがこれらの他のノード上の対応するアプリケーションのデータをパーシストすることが可能となる。その結果、１つのノード上で生成されたスナップショットが、バックアップを開始したところのノード上のアプリケーションに対してのみでなく、バックアップされるボリュームを使用するクラスタ内の任意のノード上のすべてのアプリケーションに対して、アプリケーション間の統一性を有するようになる。
【００７５】
[0064]さらに、このプロセスは、バックアップシステムの基本制御フローを修正する必要なくこれらのクラスタ全体にわたってアプリケーション間の統一性を有するスナップショットを生成するために、図１に説明される従来技術のバックアップシステムを使用することを可能にする。言い換えると、各ノード上のコーディネータは本発明を実施するために修正される必要がない。クラスタライタおよびヘルパープロバイダはコーディネータからは不明瞭であり、クラスタ全体にわたってアプリケーション間の統一性を有するスナップショットを生成するために追加のステップが実行される（つまり、コーディネータと、ライタとみなされるクラスタライタと、ストレージプロバイダとみなされるヘルパープロバイダとに対して）。
【００７６】
[0065]図５が、クラスタ内の複数のノード上のアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを開始するための例示の方法５００のフローチャートを示す。図２のクラスタ２００に関連させて方法５００を説明する。
【００７７】
[0066]方法５００が、第１のノード上のバックアップコーディネータのところでバックアップアプリケーションから要求を受信する行為５０１を含む。この要求が、第１のノード上の少なくとも１つのアプリケーションおよびクラスタ内の少なくとも１つの他のノード上の少なくとも１つのアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを要求する。第１のノード上および少なくとも１つの他のノード上の少なくとも１つのアプリケーションの各々がライタを含む。また、第１のノードおよび少なくとも１つの他のノードの各々がクラスタサービスおよびクラスタライタを含む。例えば、コーディネータ１１０が、ボリューム１０４ａのスナップショットを生成することを要求するバックアップアプリケーション１１４からの要求を受信することができる。
【００７８】
[0067]方法５００が、バックアップコーディネータにより、第１のノード上のクラスタライタおよび各ライタにフリーズコマンドを送信する行為５０２を含む。フリーズコマンドが、第１のノード上のクラスタライタおよび各ライタに、アプリケーションデータを共有されるボリュームにパーシストするように命令する。例えば、コーディネータ１１０がライタ１１１ａおよび１１２ａさらにはクラスタライタ２０１にフリーズコマンドを送信することができる。
【００７９】
[0068]方法５００が、第１のノード上のクラスタライタにより、第１のノード上のクラスタサービスにフリーズコマンドの通知を送信する行為５０３を含む。例えば、クラスタライタ２０１がクラスタサービス２０４にフリーズコマンドを通知することができる。
【００８０】
[0069]方法５００が、第１のノード上のクラスタサービスにより、各々の少なくとも１つの他のノード上のクラスタサービスにフリーズコマンドの通知を送信する行為５０４を含む。この通知が、各々の少なくとも１つの他のノード上で共有されるボリュームのバックアッププロセスを開始することを、各々の少なくとも１つの他のノード上のクラスタサービスに命令する。例えば、クラスタサービス２０４がクラスタサービス２０５および２０６に通知を送信することができる。
【００８１】
[0070]方法５００が、第１のノード上のクラスタライタにより、フリーズコマンドから戻る前に各々の少なくとも１つの他のノード上のクラスタサービスからの通知を待つ行為５０５を含む。この通知が、対応するノード上の各ライタが共有されるボリュームに対して対応するアプリケーションデータをパーシストしたことを示す。例えば、クラスタライタ２０１は、ライタ１２１ａおよび１２２ａならびにライタ１３１ａおよび１３２ａのそれぞれがそれらの対応するアプリケーションデータをボリューム１０４ａにパーシストしたことを、クラスタサービス２０５およびクラスタサービス２０６がクラスタライタ２０１に通知するまで、フリーズコマンドをブロックすることができる。
【００８２】
[0071]方法５００が、各々の少なくとも１つの他のノード上のクラスタサービスから通知を受信した後、第１のノード上のクラスタライタにより、フリーズコマンドから戻る行為５０６を含む。例えば、クラスタライタ２０１は、クラスタサービス２０５および２０６から通知を受信した後でフリーズコマンドから戻ることができる。
【００８３】
[0072]方法５００が、第１のノード上のクラスタライタがフリーズコマンドから戻った後で、バックアップコーディネータにより、ストレージプロバイダに要求を送信する行為５０７を含む。この要求により、ストレージプロバイダが共有されるボリュームのスナップショットを生成し、このスナップショットが、第１のノード上および共有されるボリュームを使用する少なくとも１つの他のノード上の各アプリケーションに対してアプリケーション間の統一性を有する。例えば、コーディネータ１１０が、ストレージプロバイダ１１３がボリューム１０４ａのスナップショットを生成することを要求することができる。
【００８４】
[0073]図６が、共有されるボリュームのスナップショットを生成することがクラスタの別のノードで開始されたことの通知に応答するための例示の方法６００のフローチャートを示す。図２のクラスタ２００に関連させて方法６００を説明する。
【００８５】
[0074]方法６００が、共有されるボリュームのバックアッププロセスがクラスタ内の第２のノード上で開始されたことの通知を、第１のノード上のクラスタサービスのところで受信する行為６０１を含む。共有されるボリュームが各々の第１および第２のノード上の少なくとも１つのアプリケーションによって使用される。通知が第２のノード上のクラスタサービスから受信され、フリーズコマンドが第２のノード上のクラスタライタによって受信されたことを示す。例えば、クラスタサービス２０５が、コーディネータ１１０からバックアッププロセスのフリーズコマンドをクラスタライタ２０１が受信したことを示す通知をクラスタサービス２０４から受信することができる。
【００８６】
[0075]方法６００が、第１のノード上のクラスタサービスにより、第１のノード上のバックアップコーディネータに要求を送信する行為６０２を含む。この要求が共有されるボリュームのスナップショットを生成することを要求する。例えば、クラスタサービス２０５が、ボリューム１０４ａのスナップショットをノード１０２上で生成することを要求するためにコーディネータ１２０に要求を送信することができる。
【００８７】
[0076]方法６００が、バックアップコーディネータにより、第１のノード上の少なくとも1つのアプリケーションのクラスタライタおよびライタにフリーズコマンドを送信する行為６０３を含む。フリーズコマンドが、クラスタライタおよび少なくとも１つのライタに、アプリケーションデータを共有されるボリュームにパーシストすることを命令する。例えば、コーディネータ１２０がライタ１２１ａおよび１２２ａさらにはクラスタライタ２０２にフリーズコマンドを送信することができる。
【００８８】
[0077]方法６００が、クラスタライタおよび少なくとも１つのライタがフリーズコマンドから戻った後で、バックアップコーディネータにより、第１のノード上のヘルパープロバイダにコミットコマンドを送信する行為６０４を含む。例えば、コーディネータ１２０がヘルパープロバイダ２２３にコミットコマンドを送信することができる。
【００８９】
[0078]方法６００が、第１のノード上のヘルパープロバイダにより、第１のノード上のクラスタサービスにコミットコマンドの通知を送信する行為６０５を含む。ヘルパープロバイダがコミットコマンドをブロックする。例えば、ヘルパープロバイダ２２３がコミットコマンドのクラスタサービス２０５に通知することができ、次いでブロックすることができる。
【００９０】
[0079]方法６００が、第１のノード上のクラスタサービスにより、コミットコマンドが受信されたことの通知を第２のノード上のクラスタライタに送信する行為６０６を含み、それにより、第１のノード上の各ライタが対応するアプリケーションのデータを共有されるボリュームにパーシストしたことが示される。例えば、クラスタサービス２０５が、ライタ１２１ａおよび１２２ａがそれらのアプリケーションデータをボリューム１０４ａにパーシストしたことを示す通知をクラスタライタ２０１に送信することができる。
【００９１】
[0080]本発明は本発明の精神または本質的な特性から逸脱することなく他の特定の形態で具体化され得る。説明される実施形態はすべての点で単に例示的であるとみなされ、限定的であるとみなされない。したがって、本発明の範囲は、上述の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の意味および等価の範囲内にあるすべての変更形態が特許請求の範囲に包含される。
【図１】
2015506507.tif 000003
【図２】
2015506507.tif 000004
【図３】
2015506507.tif 000005
【図４】
2015506507.tif 000006
【図５】
2015506507.tif 000007
【図６】
2015506507.tif 000008
【国際調査報告】
2015506507.tif 000009
2015506507.tif 000010