特許第6238309号(P6238309)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特許6238309アプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法
<>
  • 特許6238309-アプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法 図000002
  • 特許6238309-アプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法 図000003
  • 特許6238309-アプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法 図000004
  • 特許6238309-アプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法 図000005
  • 特許6238309-アプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法 図000006
  • 特許6238309-アプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6238309
(24)【登録日】2017年11月10日
(45)【発行日】2017年11月29日
(54)【発明の名称】アプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法
(51)【国際特許分類】
   G06F 12/00 20060101AFI20171120BHJP
【FI】
   G06F12/00 531M
   G06F12/00 545A
【請求項の数】14
【全頁数】21
(21)【出願番号】特願2014-549124(P2014-549124)
(86)(22)【出願日】2012年12月12日
(65)【公表番号】特表2015-506507(P2015-506507A)
(43)【公表日】2015年3月2日
(86)【国際出願番号】US2012069029
(87)【国際公開番号】WO2013096022
(87)【国際公開日】20130627
【審査請求日】2015年11月11日
(31)【優先権主張番号】13/333,722
(32)【優先日】2011年12月21日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100120112
【弁理士】
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100119781
【弁理士】
【氏名又は名称】中村 彰吾
(72)【発明者】
【氏名】ブラゴハイン,ジョイディープ
(72)【発明者】
【氏名】シャンカー,ヴィノッド・アール
(72)【発明者】
【氏名】ダマト,アンドレア
【審査官】 井上 宏一
(56)【参考文献】
【文献】 特開2012−137977(JP,A)
【文献】 特開2006− 99406(JP,A)
【文献】 特開2008− 33829(JP,A)
【文献】 特表2001−518663(JP,A)
【文献】 米国特許出願公開第2011/0252208(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
クラスタ(100)の第1のノードにおいて実行される方法であって、当該第1のノードが、バックアップアプリケーション(124)と、バックアップコーディネータ(120)と、少なくとも1つのアプリケーション(121)と、ストレージプロバイダ(123)と、を含み、当該方法が、共有されるボリュームを使用する前記クラスタの2つ以上のノード上のアプリケーションに対してアプリケーション間の統一性を有する前記共有されるボリュームのスナップショットを生成するための方法であって、
第1のノード(102)上のバックアップコーディネータ(120)のところでバックアップアプリケーション(124)から要求を受信する(501)ステップであって、前記要求が、生成されるスナップショットが共有されるボリューム(104a)のものであり、当該共有されるボリューム(104a)が、前記第1のノード上の少なくとも1つのアプリケーション(121)によって使用され、前記クラスタ内の少なくとも1つの他のノード(101)上の少なくとも1つのアプリケーション(111)によって使用されるものであることを要求し、前記第1のノード上および前記少なくとも1つの他のノード上の前記少なくとも1つのアプリケーションの各々がライタ(111a, 121a)を含み、前記第1のノードおよび前記少なくとも1つの他のノードの各々がクラスタライタ(201, 202)およびクラスタサービス(204, 205)をさらに含む、ステップと、
前記バックアップコーディネータにより、前記第1のノード上の前記クラスタライタおよび各ライタにフリーズコマンドを送信する(502)ステップであって、前記フリーズコマンドが、前記第1のノード上の前記クラスタライタおよび各ライタにアプリケーションデータを前記共有されるボリュームにパーシストするように命令する、ステップと、
前記第1のノード上の前記クラスタライタにより、前記第1のノード上の前記クラスタサービスに前記フリーズコマンドの通知を送信する(503)ステップと、
前記第1のノード上の前記クラスタサービスにより、各々の前記少なくとも1つの他のノード上の前記クラスタサービスに前記フリーズコマンドの通知を送信する(504)ステップであって、前記通知が、各々の前記少なくとも1つの他のノード上で前記共有されるボリュームのバックアッププロセスを開始することを、各々の前記少なくとも1つの他のノード上の前記クラスタサービスに命令する、ステップと、
前記第1のノード上の前記クラスタライタが、前記フリーズコマンドを実行する前に各々の前記少なくとも1つの他のノード上の前記クラスタサービスからの通知を待つ(505)ステップであって、前記通知が、対応するノード上の各ライタが前記共有されるボリュームに対して対応するアプリケーションデータをパーシストしたことを示す、ステップと、
各々の前記少なくとも1つの他のノード上の前記クラスタサービスから前記通知を受信した(506)後、前記第1のノード上の前記クラスタライタにより、前記フリーズコマンドを実行するステップと、
前記第1のノード上の前記クラスタライタが前記フリーズコマンドを実行した後で、前記バックアップコーディネータにより、前記ストレージプロバイダに要求を送信する(507)ステップであって、前記要求により、前記ストレージプロバイダが前記共有されるボリュームのスナップショットを生成し、前記スナップショットが、前記第1のノード上および前記共有されるボリュームを使用する前記少なくとも1つの他のノード上の各アプリケーションに対してアプリケーション間の統一性を有する、ステップと、
を含む方法。
【請求項2】
前記ストレージプロバイダに前記共有されるボリュームのスナップショットを生成させる前記要求を前記ストレージプロバイダに送信する前に、前記バックアップコーディネータにより、前記共有されるボリュームがファイルシステムメタデータをパーシストするように、前記共有されるボリュームにフラッシュアンドホールドコマンドを送信するステップ
をさらに含む、請求項1に記載の方法。
【請求項3】
前記スナップショットが生成された後、前記バックアップコーディネータにより、前記第1のノード上の前記クラスタライタおよび前記ライタのうちの少なくとも1つのライタにポストスナップショットコマンドを送信するステップと、
前記第1のノード上の前記クラスタライタにより、前記第1のノード上の前記クラスタサービスに前記ポストスナップショットコマンドの通知を送信するステップと、
前記第1のノード上の前記クラスタサービスにより、各々の前記少なくとも1つの他のノード上の前記クラスタサービスに前記ポストスナップショットコマンドの通知を送信するステップと
をさらに含む、請求項1に記載の方法。
【請求項4】
前記ポストスナップショットコマンドを送信される、前記第1のノード上の前記ライタのうちの前記少なくとも1つのライタが、ハイパーバイザアプリケーションのライタを備える、請求項3に記載の方法。
【請求項5】
前記第1のノード上の前記クラスタライタにより、各々の前記少なくとも1つの他のノード上の前記クラスタサービスから通知を待つステップであって、前記通知が、各々の前記少なくとも1つの他のノード上で前記バックアッププロセスが完了したことを示す、ステップと、
前記第1のノード上の前記クラスタライタにより、前記バックアッププロセスが完了したことの前記通知を、各々の前記少なくとも1つの他のノード上の前記クラスタサービスから受信するステップと
をさらに含む請求項3に記載の方法。
【請求項6】
前記バックアッププロセスが完了したことの前記通知を、各々の前記少なくとも1つの他のノード上の前記クラスタサービスから受信した後、前記第1のノード上の前記クラスタライタにより、前記ポストスナップショットコマンドを実行するステップをさらに含む、請求項5に記載の方法。
【請求項7】
前記第1のノード上の前記クラスタライタおよび前記少なくとも1つのライタが前記ポストスナップショットコマンドを実行した後、前記バックアップコーディネータが前記スナップショットが成功裏に完了したことを前記バックアップアプリケーションに通知するステップ
をさらに含む、請求項6に記載の方法。
【請求項8】
クラスタのノード(102)において実行される方法であって、当該ノードが、バックアップコーディネータ(120)と、少なくとも1つのアプリケーション(121)と、ヘルパープロバイダ(223)と、クラスタサービス(205)と、クラスタライタ(202)とを含み、当該方法が、共有されるボリュームのバックアッププロセスが前記クラスタの別のノード上で開始されたことの通知に応答するための方法であって、
共有されるボリューム(104a)のバックアッププロセスがクラスタ内の第2のノード(101)で開始されたことの通知を第1のノード(102)上のクラスタサービス(204)のところで受信する(601)ステップであって、前記共有されるボリュームが各々の前記第1および第2のノード上の少なくとも1つのアプリケーション(121, 111)によって使用され、前記通知が前記第2のノード上のクラスタサービス(204)から受信され、前記第2のノード上のクラスタライタ(201)によりフリーズコマンドが受信されたことを示す、ステップと、
前記第1のノード上の前記クラスタサービスにより、前記第1のノード上のバックアップコーディネータ(120)に要求を送信する(602)ステップであって、前記要求が前記共有されるボリュームのスナップショットを生成することを要求する、ステップと、
前記バックアップコーディネータにより、前記第1のノード上の前記少なくとも1つのアプリケーション(121)のクラスタライタ(202)およびライタ(121a)にフリーズコマンドを送信する(603)ステップであって、前記フリーズコマンドが、前記クラスタライタおよび前記少なくとも1つのライタに、アプリケーションデータを前記共有されるボリュームにパーシストすることを命令する、ステップと、
前記クラスタライタおよび前記少なくとも1つのライタが前記フリーズコマンドを実行した(604)後に、前記バックアップコーディネータにより、前記第1のノード上のヘルパープロバイダ(223)にコミットコマンドを送信するステップと、
前記第1のノード上の前記ヘルパープロバイダにより、前記第1のノード上の前記クラスタサービスに前記コミットコマンドの通知を送信する(605)ステップであって、前記ヘルパープロバイダが前記コミットコマンドをブロックする、ステップと、
前記第1のノード上の前記クラスタサービスにより、前記コミットコマンドが受信されたことの通知を前記第2のノード上の前記クラスタライタに送信する(605)ステップであって、それにより、前記第1のノード上の各ライタが対応するアプリケーションのデータを前記共有されるボリュームにパーシストしたことが示される、ステップと
を含む方法。
【請求項9】
前記第1のノード上の前記クラスタサービスにより、前記第2のノード上の前記クラスタライタによりポストスナップショットコマンドが受信されたことの通知を、前記第2のノード上の前記クラスタサービスから受信するステップ
をさらに含む、請求項8に記載の方法。
【請求項10】
前記第1のノード上の前記クラスタサービスにより、前記第2のノード上の前記クラスタライタにより前記ポストスナップショットコマンドが受信されたことの通知を前記ヘルパープロバイダに送信するステップをさらに含む、請求項に記載の方法。
【請求項11】
前記ヘルパープロバイダにより、前記コミットコマンドを実行するステップをさらに含む、請求項10に記載の方法。
【請求項12】
前記第1のノード上の前記クラスタライタおよび前記少なくとも1つのライタにより、ポストスナップショットコマンドを受信するステップと、
前記少なくとも1つのライタにより、バーチャルスナップショット上でポスト処理を実行するステップと
をさらに含む、請求項11に記載の方法。
【請求項13】
前記第1のノード上の前記クラスタライタおよび前記少なくとも1つのライタが前記ポストスナップショットコマンドを実行した後、前記バックアップコーディネータが、前記スナップショットが前記第1のノード上で成功裏に生成されたことを前記第1のノード上の前記クラスタサービスに通知するステップと、
前記通知に応答して、前記第1のノード上の前記クラスタサービスが、前記スナップショットが前記第1のノード上で成功裏に完了したことを前記第2のノード上の前記クラスタライタに通知するステップであって、それにより、前記少なくとも1つのライタの各々が前記第1のノード上で前記ポストスナップショットコマンドを処理したことが前記第2のノード上の前記クラスタライタに示される、ステップと
をさらに含む、請求項12に記載の方法。
【請求項14】
前記第1のノード上の前記クラスタライタが前記第1のノード上の前記バーチャルスナップショットを消去するステップをさらに含む、請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願発明の一実施例は、例えば、アプリケーション間の統一性を有する共有されるボリュームのスナップショットに関する。
【背景技術】
【0002】
[0001]コンピュータシステムおよび関連する技術は社会の多くの側面に影響する。実際、情報を処理するためのコンピュータシステムの能力は生活の仕方および仕事の仕方を変化させている。現在、コンピュータシステムは、一般に、コンピュータシステムの出現前では手動で実行されていたような多くのタスク(例えば、ワードプロセッシング、スケジューリング、会計など)を実行する。より最近では、コンピュータシステムは、有線コンピュータネットワークおよび無線コンピュータネットワークの両方を形成するために互いに結合されたり他の電子デバイスに結合されたりし、それらの有線コンピュータネットワークおよび無線コンピュータネットワークを介して、コンピュータシステムおよび他の電子デバイスが電子データを転送することができる。したがって、多数の計算タスクを実行することは多くの異なるコンピュータシステムおよび/または多くの異なる計算機環境に分散される。
【0003】
[0002]分散環境内でアプリケーションをホストにより処理することがより一般的になってきている。例えば、アプリケーションはしばしばノードクラスタのうちの1つのノード(例えば、サーバ)上でホストにより処理される。クラスタ内では、異なるアプリケーションが異なるノード上でホストにより処理され得るが、各々が1つまたは複数の共通のストレージボリュームにアクセスすることができる。言い換えると、1つのストレージが、クラスタのうちの種々のノードに跨る多くの異なるアプリケーションによってアクセスされ得る。
【0004】
[0003]図1がこのタイプの環境を描いている。示されるように、クラスタ100がノード101〜103を有する。この例示のクラスタでは、各ノードが、コーディネータと、バックアップアプリケーションと、ストレージプロバイダと、2つのアプリケーションとを有する。しかし、ノードは任意の数のアプリケーションさらには複数のストレージプロバイダを有することができる。この実施例では、各アプリケーションがデータを記憶するためにストレージ104上でボリューム104aを使用する。
【0005】
[0004]図1に描かれるコンポーネントは、クラスタ環境さらには非クラスタ環境でバックアップを実行するのに使用されている従来技術のバックアップシステムを示す。このタイプのバックアップシステムで使用され得るコーディネータの一例はMicrosoftのVolume Shadow Copy Service(VSS)である。このバックアップシステムでは、コーディネータ110〜130が、ボリューム104aなどの共有されるボリュームのバックアップをコーディネートするのに使用される。このバックアップはボリューム104aのポイントインタイムイメージ(point−in−time image)(すなわち、スナップショット)を含むことができる。スナップショットを生成することはノード101上で行われる形で説明されるが、ノード上でボリューム104aのスナップショットを生成するための同様のステップは各ノード上で実行され得る。言い換えると、ノード101〜103上の各コーディネータはボリュームのスナップショットを生成するために同様に機能する。
【0006】
[0005]ノード101上でスナップショットを生成するために、バックアップアプリケーション114が、スナップショットを生成するための要求をコーディネータ110に送信する。この要求では、バックアップアプリケーション114が、スナップショットを生成するのに使用されるべきストレージプロバイダ(この実施例では、ストレージプロバイダ113)を指定する。コーディネータ110は、スナップショットを準備することをライタに命令するためにノード101上の各プリケーションのライタ(ライタ111aおよび112a)に連絡される。この連絡はフリーズコマンドと称される。
【0007】
[0006]このような準備には、インメモリキャッシュをディスクへフラッシュすること、スナップショットが生成されるまでアプリケーションによる書き込みをサスペンド(すなわち、フリージング)することが含まれる。このようにして、各ライタにより、スナップショットが生成される前にすべてのアプリケーションデータがボリューム104aに確実にパーシスト(persist)される。各ライタがフリーズコマンドから戻ると、コーディネータ110が、ファイルシステムメタデータをボリューム104aにパーシストしてボリューム104aに対する書き込みをサスペンドすることなどにより、スナップショットのための準備をボリューム104aに命令する。この連絡はフラッシュアンドホールドコマンド(flush and hold command)と称される。
【0008】
[0007]ボリューム104aがフラッシュアンドホールドコマンドから戻ると、コーディネータ110がボリューム104aのスナップショットを生成するようにストレージプロバイダ113に命令する。これはコミットコマンドと称される。1つのストレージプロバイダが示されるが、ノードは、ストレージ104のためのハードウェアコントローラに直接にインターフェースするためのハードウェアストレージプロバイダ、または、オペレーティングシステム(例えば、ファイルシステム)にインターフェースするためのソフトウェアストレージプロバイダなどの、複数のストレージプロバイダを採用することができる。本発明の目的において、スナップショット生成するのに使用されるストレージプロバイダの種類は重要ではない。
【0009】
[0008]ストレージプロバイダ113がボリューム104aのスナップショットを生成する。このスナップショットは、単一のポイントインタイム(例えば、各ライタがノード101上の各アプリケーションのデータをボリューム104aおよび104bにパーシストした後のポイントインタイムがそのキャッシュをフラッシュする)において存在するときのボリューム104aの中身のコピーである。このスナップショットが生成されてストレージプロバイダ113がコミットコマンドから戻ると、コーディネータ110が、処理を再開することが可能であることをボリューム104aに命令し(リリースコマンドと称される)、ボリューム104aへの書き込みをアプリケーションが再開することができることを各ライタに命令する(ソーコマンド(thaw command)と称される)。明らかなように、このバックアッププロセスは、スナップショットの生成中にアプリケーションが実行を継続するのを可能にする。アプリケーションは、フリーズコマンドおよびソーコマンドを受信するときの間においてボリューム104aへ書き込みを行うことのみが防止される。しかし、アプリケーションはこの時間においてボリューム104aの読み込みを継続することはできる。
【0010】
[0009]このバックアッププロセスは、フラッシュアンドホールドコマンドがスナップショットが生成される前に、すべてのファイルシステムデータにパーシストされることによりファイルシステム間の統一性を有するようなボリューム104aのポイントインタイムスナップショットを作る。また、このポイントインタイムスナップショットは、この実施例ではノード101であるスナップショットが開始されるところのノード上で動作する各アプリケーションに対してアプリケーション間の統一性を有する。その理由は、フリーズコマンドにより各アプリケーションがそのデータをボリューム104aにパーシストするからである。
【0011】
[0010]しかし、この従来技術のバックアッププロセスがクラスタ環境で使用される場合、ボリューム104aのポイントインタイムスナップショットはノード102または103上で動作する各アプリケーションに対してアプリケーション間の統一性を有さない。その理由は、コーディネータ110がクラスタ内の他のノード(例えば、ノード102および103)に連絡されないためである。より具体的には、この従来技術のバックアップシステムは、1つのノード上のコーディネータが別のノード上のコーディネータまたはライタに連絡するのを可能にするように構成されない。したがって、アプリケーション121、122、131および132はノード101上でスナップショットが生成される前にボリューム104aにパーシストされていないインメモリキャッシュ(または、パーシストされない他のデータ)を包含し、したがって、このパーシストされていないデータはスナップショットに含まれないことになる。
【0012】
[0011]そのため、クラスタ内の各アプリケーションでポイントインタイムスナップショットを生成するための従来技術のバックアップシステムでは、ユーザがクラスタ内の各々のノード上でスナップショットを開始しなければならない。例えば、ユーザは、上述したものと同じプロセスの後でボリューム104aの個別のポイントインタイムスナップショットを生成することを目的としてコーディネータ120および130にそれぞれ連絡するために、各々のノード102および103上でバックアップアプリケーション124および134を使用する。これにより、クラスタ内の各ノード上で個別のスナップショットが生成される。
【発明の概要】
【発明が解決しようとする課題】
【0013】
[0012]本発明は、種々のノードに跨ってアプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成するための方法、システムおよびコンピュータプログラム製品に及ぶ。本発明は1つのノード上でボリュームのスナップショットを開始することを可能にし、ここでは、スナップショットが生成される前に、クラスタ内のすべてのアプリケーションがそれらのデータをボリュームにパーシストするためにそのボリュームを使用する。したがって、スナップショットは、そのボリュームを使用するクラスタ内のすべてのアプリケーションに対してアプリケーション間の統一性を有する。また、本発明は、ノード上で生成されたスナップショットに対してポストスナップショット処理を実行することを他のノード上のアプリケーションにより行うのを可能にする。
【課題を解決するための手段】
【0014】
[0013]一実施形態では、要求がクラスタの第1のノード上のバックアップコーディネータのところで受信される。要求がバックアップアプリケーションから受信され、クラスタ内の第1のノード上および少なくとも1つの他のノード上の少なくとも1つのアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを要求する。第1のノード上および少なくとも1つの他のノード上の少なくとも1つのアプリケーションの各々がライタを含む。第1のノード上および少なくとも1つの他のノードの各々がクラスタライタを含む。
【0015】
[0014]バックアップコーディネータが第1のノード上のクラスタライタおよび各ライタにフリーズコマンドを送信する。フリーズコマンドが、第1のノード上のクラスタライタおよび各ライタに、アプリケーションデータを共有されるボリュームにパーシストするように命令する。次いで、第1のノード上のクラスタライタがフリーズコマンドの通知を第1のノード上のクラスタサービスに送信する。第1のノード上のクラスタサービスがフリーズコマンドの通知を各々の少なくとも1つの他のノード上のクラスタサービスに送信する。この通知が、各々の少なくとも1つの他のノード上で共有されるボリュームのバックアッププロセスを開始するように、各々の少なくとも1つの他のノード上のクラスタサービスに命令する。
【0016】
[0015]第1のノード上のクラスタライタが、フリーズコマンドから戻る前に、各々の少なくとも1つの他のノード上のクラスタサービスからの通知を待つ。この通知は、対応するノード上の各ライタが対応するアプリケーションデータを共有されるボリュームにパーシストしたことを示す。各々の少なくとも1つの他のノード上のクラスタサービスから通知を受信すると、第1のノード上のクラスタライタがフリーズコマンドから戻る。
【0017】
[0016]第1のノード上のクラスタライタがフリーズコマンドから戻ると、バックアップコーディネータが第1のノード上のストレージプロバイダに要求を送信する。この要求により、ストレージプロバイダが共有されるボリュームのスナップショットを生成する。スナップショットは、共有されるボリュームを使用する第1のノード上および少なくとも1つの他のノード上の各アプリケーションに対してアプリケーション間の統一性を有する。
【0018】
[0017]別の実施形態では、通知が第1のノード上のクラスタサービスのところで受信される。この通知が、クラスタ内の第2のノード上で共有されるボリュームのバックアッププロセスが開始されたことを示す。共有されるボリュームが、第1のノードおよび第2のノードの各々の上の少なくとも1つのアプリケーションによって使用される。通知が第2のノード上のクラスタサービスから受信され、第2のノード上のクラスタライタによりフリーズコマンドが受信されたことを示す。
【0019】
[0018]第1のノード上のクラスタサービスが第1のノード上のバックアップコーディネータに要求を送信する。この要求が、共有されるボリュームのスナップショットを生成することを要求する。バックアップコーディネータが、第1のノード上の少なくとも1つのアプリケーションのクラスタライタおよびライタにフリーズコマンドを送信する。このフリーズコマンドが、クラスタライタおよび少なくとも1つのライタに、アプリケーションデータを共有されるボリュームにパーシストすることを命令する。
【0020】
[0019]クラスタライタおよび少なくとも1つのライタがフリーズコマンドから戻った後、バックアップコーディネータが第1のノード上のヘルパープロバイダ(helper provider)にコミットコマンドを送信する。第1のノード上のヘルパープロバイダが第1のノード上のクラスタサービスにコミットコマンドの通知を送信する。ヘルパープロバイダがコミットコマンドをブロックする。次いで、第1のノード上のクラスタサービスが、コミットコマンドが受信されてしたがって共有されるボリュームに対して第1のノード上の各ライタが対応するアプリケーションのデータをパーシストしたことを示す通知を第2のノード上のクラスタライタに送信する。
【0021】
[0020]この概要は概念の選択肢を簡単な形で導入するために提供されるものであり、この概念の選択肢は以下の詳細な説明でさらに説明される。この概要は特許請求される主題の重要な特徴または本質的な特徴を示すことを意図されず、また、特許請求される主題の範囲を決定することを補助するものとして使用されることも意図されない。
【0022】
[0021]本発明の追加の特徴および利点が以下の説明に記載されており、以下の説明から部分的に明らかとなるかまたは本発明を実施することによって認識され得る。添付の特許請求の範囲で具体的に明示される器具および組み合わせにより本発明のこれらの特徴および利点が実現され得、得られる。本発明のこれらのおよび他の特徴が以下の説明よりより完全に明確となるか、または、以下に記載される通りに本発明を実施することによって認識され得る。
【0023】
[0022]本発明の上に列記した利点および特徴ならびに他の利点および特徴を得るための手法を説明するために、上で簡単に説明した本発明を、添付図面に示される本発明の特定の実施形態を参照しながらより具体的に説明する。これらの図面が本発明の典型的な実施形態のみを描いており、したがって本発明の範囲を限定するものとしてみなされないことを理解した上で、添付図面を使用して本発明をより具体的かつより詳細に記載して説明する。
【図面の簡単な説明】
【0024】
図1】[0023]従来技術のバックアップシステムのコンポーネントを有するノードの例示のクラスタを示す図である。
図2】[0024]本発明の実施形態による、バックアップシステムのコンポーネントを有するノードの例示のクラスタを示す図である。
図3】[0025]バックアッププロセス中の一連の連絡を示している、ノードの例示のクラスタを示す図である。
図4】[0026]バックアッププロセス中の別の一連の連絡を示している、ノードの例示のクラスタを示す図である。
図5】[0027]クラスタ内の複数のノード上のアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを開始するための例示の方法を示すフローチャートである。
図6】[0028]共有されるボリュームのスナップショットを生成することがクラスタの別のノード上で開始されたことの通知に反応するための例示の方法を示すフローチャートである。
【発明を実施するための形態】
【0025】
[0029]本発明は、種々のノードに跨ってアプリケーション間の統一性を有する共有されるボリュームのスナップショットを生成すための方法、システムおよびコンピュータプログラム製品に及ぶ。本発明は1つのノード上でボリュームのスナップショットを開始することを可能にし、ここでは、スナップショットが生成される前に、クラスタ内のすべてのアプリケーションがそれらのデータをボリュームにパーシストするためにそのボリュームを使用する。したがって、スナップショットは、そのボリュームを使用するクラスタ内のすべてのアプリケーションに対してアプリケーション間の統一性を有する、また、本発明は、ノード上で生成されたスナップショットに対してポストスナップショット処理を実行することを他のノード上のアプリケーションにより行うのを可能にする。
【0026】
[0030]一実施形態では、要求がクラスタの第1のノード上のバックアップコーディネータのところで受信される。要求はバックアップアプリケーションから受信され、クラスタ内の第1のノード上および少なくとも1つの他のノード上の少なくとも1つのアプリケーションによって使用される共有のボリュームのスナップショットを生成することを要求する。第1のノード上および少なくとも1つの他のノード上の少なくとも1つのアプリケーションの各々がライタを含む。また、第1のノードおよび少なくとも1つの他のノードの各々がクラスタライタを含む。
【0027】
[0031]バックアップコーディネータが第1のノード上のクラスタライタおよび各ライタにフリーズコマンドを送信する。フリーズコマンドが、第1のノード上のクラスタライタおよび各ライタに、アプリケーションデータを共有されるボリュームにパーシストするように命令する。次いで、第1のノード上のクラスタライタがフリーズコマンドの通知を第1のノード上のクラスタサービスに送信する。第1のノード上のクラスタサービスがフリーズコマンドの通知を各々の少なくとも1つの他のノード上のクラスタサービスに送信する。この通知が、各々の少なくとも1つの他のノード上で共有されるボリュームのバックアッププロセスを開始するように、各々の少なくとも1つの他のノード上のクラスタサービスに命令する。
【0028】
[0032]第1のノード上のクラスタライタが、フリーズコマンドから戻る前に、各々の少なくとも1つの他のノード上のクラスタサービスからの通知を待つ。この通知は、対応するノード上の各ライタが対応するアプリケーションデータを共有されるボリュームにパーシストしたことを示す。各々の少なくとも1つの他のノード上のクラスタサービスから通知を受信すると、第1のノード上のクラスタライタがフリーズコマンドから戻る。
【0029】
[0033]第1のノード上のクラスタライタがフリーズコマンドから戻ると、バックアップコーディネータが第1のノード上のストレージプロバイダに要求を送信する。この要求により、ストレージプロバイダが共有されるボリュームのスナップショットを生成する。スナップショットは、共有されるボリュームを使用する第1のノード上および少なくとも1つの他のノード上の各アプリケーションに対してアプリケーション間の統一性を有する。
【0030】
[0034]別の実施形態では、通知が第1のノード上のクラスタサービスのところで受信される。この通知は、クラスタ内の第2のノード上で共有されるボリュームのバックアッププロセスが開始されたことを示す。共有されるボリュームが、第1のノードおよび第2のノードの各々の上の少なくとも1つのアプリケーションによって使用される。通知が第2のノード上のクラスタサービスから受信され、第2のノード上のクラスタライタによりフリーズコマンドが受信されたことを示す。
【0031】
[0035]第1のノード上のクラスタサービスが第1のノード上のバックアップコーディネータに要求を送信する。この要求が、共有されるボリュームのスナップショットを生成することを要求する。バックアップコーディネータが、第1のノード上の少なくとも1つのアプリケーションのクラスタライタおよびライタにフリーズコマンドを送信する。このフリーズコマンドが、クラスタライタおよび少なくとも1つのライタに、アプリケーションデータを共有されるボリュームにパーシストすることを命令する。
【0032】
[0036]クラスタライタおよび少なくとも1つのライタがフリーズコマンドから戻った後、バックアップコーディネータが第1のノード上のヘルパープロバイダにコミットコマンドを送信する。第1のノード上のヘルパープロバイダが第1のノード上のクラスタサービスにコミットコマンドの通知を送信する。ヘルパープロバイダがコミットコマンドをブロックする。次いで、第1のノード上のクラスタサービスが、コミットコマンドが受信されてしたがって共有されるボリュームに対して第1のノード上の各ライタが対応するアプリケーションのデータをパーシストしたことを示す通知を第2のノード上のクラスタライタに送信する。
【0033】
[0037]本発明の実施形態は、後でより詳細に説明するように、例えば1つまたは複数のプロセッサおよびシステムメモリなどの、コンピュータハードウェアを有する専用または汎用のコンピュータを備えることができるかまたは利用することができる。本発明の範囲内にある実施形態はまた、コンピュータ実行可能命令および/またはデータ構造を実行または記憶するための物理媒体または他のコンピュータ可読媒体を有する。このようなコンピュータ可読媒体は、汎用または専用のコンピュータシステムによってアクセスされ得る任意の入手可能な媒体であってよい。コンピュータ実行可能命令を記憶するコンピュータ可読媒体はコンピュータストレージ媒体(デバイス)である。コンピュータ実行可能命令を実行するコンピュータ可読媒体は伝送媒体である。したがって、限定しないが例えば、本発明の実施形態は、コンピュータストレージ媒体(デバイス)および伝送媒体の、異なる種類の少なくとも2つの個別のコンピュータ可読媒体を備えることができる。
【0034】
[0038]コンピュータストレージ媒体(デバイス)は、RAM、ROM、EEPROM、CD−ROM、ソリッドステートドライブ(SSD)(例えば、RAMに基づく)、フラッシュメモリ、相変化メモリ(PCM)、他の種類のメモリ、他の光学ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、コンピュータ実行可能命令またはデータ構造の形態の所望されるプログラムコード手段を記憶するのに使用され得かつ汎用または専用のコンピュータによってアクセスされ得る任意の他の媒体を含む。
【0035】
[0039]「ネットワーク」は、コンピュータシステム間および/またはモジュール間ならびに/あるいは他の電子デバイス間で電子データを転送することができる1つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続(有線、無線、あるいは、有線または無線の組み合わせ)を介してコンピュータに移送されるかまたは提供されると、コンピュータが適切にその接続を移送媒体とみなす。移送媒体は、コンピュータ実行可能命令またはデータ構造の形態の所望されるプログラムコード手段を実行するのに使用され得かつ汎用または専用のコンピュータによってアクセスされ得るネットワークおよび/またはデータリンクを含んでよい。また、上記の組み合わせもコンピュータ可読媒体の範囲に包含されるべきである。
【0036】
[0040]また、種々のコンピュータシステムコンポーネントに到達すると、コンピュータ実行可能命令またはデータ構造の形態のプログラムコード手段が移送媒体からコンピュータストレージ媒体(デバイス)へとの自動で転送され得る(逆も同様である)。例えば、ネットワークまたはデータリンクを介して受信されるコンピュータ実行可能命令またはデータ構造はネットワークインターフェースモジュール(例えば、「NIC」)内のRAMでバッファされ得、コンピュータシステムのところにあるコンピュータシステムRAMおよび/または低揮発性コンピュータストレージ媒体(less volatile computer storage media)(デバイス)へと最終的に転送され得る。したがって、コンピュータストレージ媒体(デバイス)は、やはり移送媒体を利用する(または、主として移動媒体を利用する)コンピュータシステムコンポーネントに含まれてよいことを理解されたい。
【0037】
[0041]コンピュータ実行可能命令は例えば命令およびデータを含み、プロセッサによって実行されると、汎用のコンピュータ、専用のコンピュータまたは専用の処理デバイスに特定の機能または機能のグループを実行させる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間的フォーマット命令、またはさらにはソースコードであってよい。本主題は構造的特徴および/または方法論的行為に特有の専門用語で説明されるが、添付の特許請求の範囲で定義される主題が上で説明される特徴または行為に必ずしも限定されないことを理解されたい。むしろ、説明される特徴および行為は特許請求の範囲を実施する例示の形態として開示される。
【0038】
[0042]本発明が、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能のコンシューマ電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、タブレット、ページャ、ルータおよびスイッチなどを含めた、多くの種類のコンピュータシステム構成を用いるネットワーク計算機環境で実施され得ることを当業者であれば認識するであろう。本発明はまた、分散システム環境でも実施され得、ここでは、ネットワークを介してリンクされる(有線データリンク、無線データリンク、または、有線データリンクと無線データリンクとの組み合わせによる)ローカルコンピュータシステムおよびリモートコンピュータシステムの両方がタスクを実行する。分散システム環境では、プログラムモジュールがローカルメモリストレージデバイスおよびリモートメモリストレージデバイスの両方に配置され得る。
【0039】
[0043]図2が、図1に示されるクラスタ100と同じノードを有するクラスタ200を示す。クラスタ200内の各ノードは、分かり易いようにバックアップアプリケーション124および134ならびにストレージプロバイダ123および133が示されないことを除いて同じコンポーネントを有する(ただし、これらは、ノード102および103からバックアップを開始することを所望される場合などにはこれらのノード上に存在してよい)。さらに、各ノードはクラスタサービスおよびクラスタライタを含むものとして示される。これらのクラスタサービスおよびクラスタライタは、ボリューム104aを使用するクラスタ200内のすべてのアプリケーションに対してアプリケーション間の統一性を有するボリューム104aのスナップショットを生成することを可能にする。これらのクラスタサービスおよびクラスタライタは、図1で説明される従来技術のバックアップシステム内で従来技術のバックアップシステムによりクラスタ全体にわたってアプリケーション間の統一性を有するスナップショット(cluster wide application consistent snapshots)を生成するのを可能にするように構成される。
【0040】
[0044]図1に関連して説明したように、バックアップアプリケーション114がコーディネータ110に連絡されることによりボリューム104aのスナップショットを生成することを開始することができる。この連絡には、スナップショットを生成するのに使用されるべきストレージプロバイダ113を指定することが含まれる。バックアップアプリケーション114からの要求に応答して、コーディネータ110が、ライタ111aおよび112aさらにはクラスタライタ201にフリーズコマンドを送信する(ライタ111aおよび112aと同様のクラスタライタ201がライタとしてコーディネータ110に登録されることにより)。
【0041】
[0045]図1に関連して上述したように、ライタ111aおよび112aがフリーズコマンドに応答する。しかし、フリーズコマンドに応答して、クラスタライタ201がノード101上のクラスタサービス204に連絡され、これがさらにクラスタの他のノード上のクラスタサービスに連絡される。したがって、ノード101上でフリーズコマンドが生成されたことの通知がクラスタサービス204からクラスタサービス205および206へとブロードキャスト(broadcast)される。
【0042】
[0046]クラスタサービス204にフリーズコマンドを通知した後、クラスタライタ201がクラスタサービス205および206の各々から応答を受信するまで待つ(つまり、フリーズコマンドから戻らない)。フリーズコマンドへ応答することを待つことにより、クラスタライタ201がコーディネータ110がバックアッププロセスを進行することを防止する。
【0043】
[0047]クラスタサービスがクラスタ内の別のノード上でフリーズコマンドが生成されたことの通知を受信すると、クラスタサービスが対応するノード上でスナップショットを生成することを開始するためのバックアップアプリケーションとして機能する。例えば、クラスタサービス205がクラスタサービス204から通知を受信すると、クラスタサービス205が、ノード102上でスナップショットを生成することを開始するためにコーディネータ120に連絡される。クラスタサービス205が、ノード102上でスナップショットを生成するためにヘルパープロバイダ223を使用することを指定する。同様に、クラスタサービス206がクラスタサービス204から通知を受信すると、クラスタサービス206がノード103上でスナップショットを生成することを開始するためにコーディネータ130に連絡される。クラスタサービス206が、ノード103上でスナップショットを生成するためにヘルパープロバイダ233を使用することを指定する。
【0044】
[0048]その結果、コーディネータ120および130が、フリーズコマンドをノード上の各ライタに送信することによりノード102および103上でそれぞれスナップショットを生成することを開始する。例えば、コーディネータ120がライタ121aおよび122aさらにはクラスタライタ202へとフリーズコマンドを送信し、コーディネータ130がライタ131aおよび132aさらにはクラスタライタ203へとフリーズコマンドを送信する。図1に関連して説明したように、フリーズコマンドが、そのインメモリデータをパーシストすることなどにより各ライタにスナップショットを生成することを準備させる。クラスタライタ202および203が単純にフリーズコマンドから戻る。
【0045】
[0049]ノード102および103上のライタがフリーズコマンドから戻った後、コーディネータ120および130がボリューム104aにフラッシュアンドホールドコマンドを送信する。これらのフラッシュアンドホールドコマンドを処理するための手法は本発明では重要ではない。本発明に関して、コーディネータ120および130からのこれらのフラッシュアンドホールドコマンドがボリューム104aへと最終的に誘導されないことを理解されたい(その理由は、後で説明するように、コーディネータ110によりフラッシュアンドホールドコマンドがボリューム104aに送信されるからである)。
【0046】
[0050]次いで、コーディネータ120および130がヘルパープロバイダ223および233にそれぞれコミットコマンドを送信する(その理由は、スナップショットを開始するためのそれぞれの要求でヘルパープロバイダ223および233が指定されることによる)。ヘルパープロバイダ223および233がブロッキングによりコミットコマンドに応答する。言い換えると、ヘルパープロバイダ223および233は最初にコーディネータ120および130に応答するわけではない。また、ヘルパープロバイダ223および233はボリューム104aのスナップショットを生成しない(ストレージプロバイダにコミットコマンドが送信される場合には生成する)。
【0047】
[0051]代わりに、ヘルパープロバイダ223および233がクラスタサービス205および206のそれぞれにコミットコマンドを通知する。これに応答して、クラスタサービス205および206の各々がクラスタライタ201に通知する。これらの通知は、各々のノード102および103上でフリーズコマンドが成功裏に完了したことをクラスタライタ201に知らせ、それによりノード102および103上のアプリケーションがそれらのデータをボリューム104aに成功裏にパーシストしたことが示される。
【0048】
[0052]ヘルパープロバイダ223および233がコミットコマンドをブロックすることから、コーディネータ120および130はボリューム104aまたはそれぞれのライタにリリースコマンドまたはソーコマンドに送信せず、それにより、ノード101上でスナップショットが生成されるまでライタがボリューム104aを修正することが防止される。
【0049】
[0053]クラスタライタ201がクラスタライタ202および203から通知を受信すると、クラスタライタ201がフリーズコマンドから戻る(つまり、フリーズコマンドに応答して処理が完了したことをコーディネータ110に知らせる)。次いで、コーディネータ110が上述したようにフラッシュアンドホールドコマンドおよびコミットコマンドを進行させ、それによりストレージプロバイダ113内でボリューム104aのスナップショットが生成される。このスナップショットはボリューム104aを使用するクラスタ内のすべてのアプリケーションに対してアプリケーション間の統一性を有する。その理由は、スナップショットが生成される前に各アプリケーションがそのデータをボリューム104にパーシストするからである。
【0050】
[0054]図3が別のクラスタ300を描いている。クラスタ300は、クラスタ全体にわたってアプリケーション間の統一性を有するスナップショットを生成するための、本発明によって採用されるバックアッププロセスをより良好に説明するために参照する単純化されたクラスタである(すなわち、クラスタ200に示されるコンポーネントのサブセット)。以下の番号付きのステップが図3の番号付きの矢印に対応する。
【0051】
(1)バックアップアプリケーション314が、コーディネータ310がストレージプロバイダ313を使用してボリューム304aのスナップショットの生成を開始することを要求する。
【0052】
(2)コーディネータ310がライタ311aおよびクラスタライタ351にフリーズコマンドを送信する。ライタ311aがフリーズコマンドを処理し、ある時点で戻る。
(3)クラスタライタ351がノード301上のクラスタサービス361にフリーズコマンドを通知してブロックする。
【0053】
(4)クラスタサービス361がクラスタサービス362にフリーズコマンドを通知する。
(5)クラスタサービス362が、コーディネータ320がヘルパープロバイダ323を使用してボリューム304aのスナップショットの生成を開始することを要求する。
【0054】
(6)コーディネータ320が、ライタ321aおよびクラスタライタ352にフリーズコマンドを送信する。ライタ321aがフリーズコマンドを処理し、ある時点で戻る。クラスタライタ352が単純にフリーズコマンドから戻る。
【0055】
(7)コーディネータ320がフラッシュアンドホールドコマンドをボリューム304aに送信する。フレッシュアンドホールドコマンドがボリューム304aに送信されずに処理される。
【0056】
(8)コーディネータ320がコミットコマンドをヘルパープロバイダ323に送信する。
(9)ヘルパープロバイダ323がコミットコマンドの通知をクラスタサービス362に送信してブロックする。
【0057】
(10)クラスタサービス362がクラスタライタ351にコミットコマンドを通知する。
(11)クラスタライタ351がフリーズコマンドから戻る。
【0058】
(12)コーディネータ310がフレッシュアンドホールドコマンドをボリューム304aに送信する。ボリューム304aがフレッシュアンドホールドコマンドを処理して戻る。
【0059】
(13)コーディネータ310がコミットコマンドをストレージプロバイダ313に送信する。
(14)ストレージプロバイダ313がボリューム304aのスナップショットを生成する。
【0060】
[0055]再び図2を参照すると、ボリューム104aのスナップショットが生成された後、バックアッププロセスを仕上げるための種々の追加のステップが実行される。スナップショットが生成された後、コーディネータ110がポストスナップショットコマンドをライタのうちの少なくとも一部(例えば、ハイパーバイザライタおよびクラスタライタ)に送信し、それにより、スナップショットを仕上げる(例えば、テープに書き込む)前に、生成されたスナップショットに対してライタがいくらかの最小の処理を実行することが可能となる。この最小の処理は一般にはアプリケーション自体のデータを修正することに限定される(例えば、部分的に割り当てられたトランザクションをロールバックする)。
【0061】
[0056]クラスタライタ201がポストスナップショットコマンドを受信すると、クラスタライタ201がクラスタサービス204に通知し、クラスタサービス204がポストスナップショットコマンドの通知をクラスタサービス205および206に送信する。次いで、クラスタライタ201が、ポストスナップショットコマンドから戻る前にクラスタサービス205および206の各々から応答がくるまで待つ。この意味では、クラスタライタ201は、フリーズコマンドを取り扱うときと正に同じ形でポストスナップショットコマンドを取り扱う(つまり、ブロックする)。
【0062】
[0057]ポストスナップショットコマンドを他のノードに通知することの理由は、他のノード上のライタによりスナップショットに対してポストスナップショット処理を実行するのを可能にすることである。実際のスナップショットはノード101上に位置することから、バーチャルスナップショットが各々のノード102および103上に生成される。本願の権利者が所有する、「BACKUP AND RESTORE OF DATA FROM ANY CLUSTER NODE(任意のクラスタノードからのデータのバックアップおよび復元)」と題される2010年12月17日に出願された米国特許出願第12/971,981号が、ポストスナップショット処理を実行するためにバーチャルスナップショットを使用する手法を説明している。
【0063】
[0058]ポストスナップショットコマンドの通知を受信すると、クラスタサービス205および206がヘルパープロバイダ223および233のそれぞれに通知する。この時点まで、ヘルパープロバイダ223および233がコミットコマンドをブロックする。ポストスナップショットコマンドがノード101に送信されたことの通知は、ヘルパープロバイダ223および233に対して、それらがコミットコマンドから戻ることができることを示している。
【0064】
[0059]ヘルパープロバイダ223および233がコミットコマンドから戻ると、コーディネータ120および130の各々がそれぞれのノード上のライタのうちの少なくとも一部にポストスナップショットコマンドを送信する。これにより、各ノード上の各ライタに、生成されたスナップショットに対して追加の処理を実行するための機会が与えられる。フリーズコマンドの場合と同様に、クラスタライタ202および203もまたポストスナップショットコマンドを受信して単純に戻る。
【0065】
[0060]ノード102および103上の各ライタがポストスナップショットコマンドから戻ると、コーディネータ120および130がバックアッププロセスを仕上げることができ(例えば、リリースコマンドおよびソーコマンドを送信することにより)、クラスタサービス205および206のそれぞれにスナップショットが完了したことを通知することができる。クラスタサービス205および206が、ノード102および103上でバックアップアプリケーションとして機能することから(すなわち、これらがバックアッププロセスを開始する)、この通知を受信する。次いで、クラスタサービス205および206が、ノード102および103上のバックアッププロセスが完了したことをクラスタライタ201に通知する。
【0066】
[0061]クラスタライタ201が他の各々のノード上のバックアッププロセスが完了したことの通知を受信すると、クラスタライタ201がポストスナップショットコマンドから戻り、それにより、コーディネータ110がノード101上でバックアッププロセスを仕上げることが可能となる(例えば、リリースコマンドおよびソーコマンドを送信することにより)。次いで、コーディネータ110が、バックアップアプリケーション114にスナップショットが成功裏に生成されたことを通知する。次いで、バックアップアプリケーション114が、スナップショットを用いて所望されることを実行することができる(例えば、スナップショットをテープにコピーする)。
【0067】
[0062]図3と同様に、図4がクラスタ300を描いており、ポストスナップショット処理を実行するステップをより良好に説明するためにこの図4を参照する。図3のステップ1〜13を実行した後、以下の番号付きのステップが実行され得る。
【0068】
(1)コーディネータ310がライタ311aおよびクラスタライタ351にポストスナップショットコマンドを送信する。ライタ311aがポストスナップショットコマンドを処理し、ある時点で戻る。
【0069】
(2)クラスタライタ351がクラスタサービス361にポストスナップショットコマンドを通知し、ブロックする。
(3)クラスタサービス361がクラスタサービス362にポストスナップショットコマンドを通知する。
【0070】
(4)クラスタサービス362が、ポストスナップショットコマンドがノード301上のクラスタライタ351によって受信されたことをヘルパープロバイダ323に通知する。
【0071】
(5)ヘルパープロバイダ323がコミットコマンドから戻る。
(6)コーディネータ320がポストスナップショットコマンドをライタ321aおよびクラスタライタ352に送信する。ライタ321aがポストスナップショットコマンドを処理し、ある時点で戻る。クラスタライタ352が単純に戻る。
【0072】
(7)各ライタがポストスナップショットコマンドから戻ると、コーディネータ320が、スナップショットが完了したことをクラスタサービス362(このクラスタサービス362がノード302上でのバックアップを要求した)に通知する。
【0073】
(8)クラスタサービス362が、ノード302上のバックアッププロセスが完了したことをクラスタライタ351に通知する。
(9)クラスタライタ351がポストスナップショットコマンドから戻る。
【0074】
(10)コーディネータ310が、スナップショットが成功裏に生成されたことをバックアップアプリケーション314に通知する。
[0063]明らかなように、フリーズコマンドおよびポストスナップショットコマンドが生成されたことを他のノード上のクラスタライタに連絡するために1つのノード上のクラスタライタを使用するこのプロセスにより、これらの他のノード上のライタがこれらの他のノード上の対応するアプリケーションのデータをパーシストすることが可能となる。その結果、1つのノード上で生成されたスナップショットが、バックアップを開始したところのノード上のアプリケーションに対してのみでなく、バックアップされるボリュームを使用するクラスタ内の任意のノード上のすべてのアプリケーションに対して、アプリケーション間の統一性を有するようになる。
【0075】
[0064]さらに、このプロセスは、バックアップシステムの基本制御フローを修正する必要なくこれらのクラスタ全体にわたってアプリケーション間の統一性を有するスナップショットを生成するために、図1に説明される従来技術のバックアップシステムを使用することを可能にする。言い換えると、各ノード上のコーディネータは本発明を実施するために修正される必要がない。クラスタライタおよびヘルパープロバイダはコーディネータからは不明瞭であり、クラスタ全体にわたってアプリケーション間の統一性を有するスナップショットを生成するために追加のステップが実行される(つまり、コーディネータと、ライタとみなされるクラスタライタと、ストレージプロバイダとみなされるヘルパープロバイダとに対して)。
【0076】
[0065]図5が、クラスタ内の複数のノード上のアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを開始するための例示の方法500のフローチャートを示す。図2のクラスタ200に関連させて方法500を説明する。
【0077】
[0066]方法500が、第1のノード上のバックアップコーディネータのところでバックアップアプリケーションから要求を受信する行為501を含む。この要求が、第1のノード上の少なくとも1つのアプリケーションおよびクラスタ内の少なくとも1つの他のノード上の少なくとも1つのアプリケーションによって使用される共有されるボリュームのスナップショットを生成することを要求する。第1のノード上および少なくとも1つの他のノード上の少なくとも1つのアプリケーションの各々がライタを含む。また、第1のノードおよび少なくとも1つの他のノードの各々がクラスタサービスおよびクラスタライタを含む。例えば、コーディネータ110が、ボリューム104aのスナップショットを生成することを要求するバックアップアプリケーション114からの要求を受信することができる。
【0078】
[0067]方法500が、バックアップコーディネータにより、第1のノード上のクラスタライタおよび各ライタにフリーズコマンドを送信する行為502を含む。フリーズコマンドが、第1のノード上のクラスタライタおよび各ライタに、アプリケーションデータを共有されるボリュームにパーシストするように命令する。例えば、コーディネータ110がライタ111aおよび112aさらにはクラスタライタ201にフリーズコマンドを送信することができる。
【0079】
[0068]方法500が、第1のノード上のクラスタライタにより、第1のノード上のクラスタサービスにフリーズコマンドの通知を送信する行為503を含む。例えば、クラスタライタ201がクラスタサービス204にフリーズコマンドを通知することができる。
【0080】
[0069]方法500が、第1のノード上のクラスタサービスにより、各々の少なくとも1つの他のノード上のクラスタサービスにフリーズコマンドの通知を送信する行為504を含む。この通知が、各々の少なくとも1つの他のノード上で共有されるボリュームのバックアッププロセスを開始することを、各々の少なくとも1つの他のノード上のクラスタサービスに命令する。例えば、クラスタサービス204がクラスタサービス205および206に通知を送信することができる。
【0081】
[0070]方法500が、第1のノード上のクラスタライタにより、フリーズコマンドから戻る前に各々の少なくとも1つの他のノード上のクラスタサービスからの通知を待つ行為505を含む。この通知が、対応するノード上の各ライタが共有されるボリュームに対して対応するアプリケーションデータをパーシストしたことを示す。例えば、クラスタライタ201は、ライタ121aおよび122aならびにライタ131aおよび132aのそれぞれがそれらの対応するアプリケーションデータをボリューム104aにパーシストしたことを、クラスタサービス205およびクラスタサービス206がクラスタライタ201に通知するまで、フリーズコマンドをブロックすることができる。
【0082】
[0071]方法500が、各々の少なくとも1つの他のノード上のクラスタサービスから通知を受信した後、第1のノード上のクラスタライタにより、フリーズコマンドから戻る行為506を含む。例えば、クラスタライタ201は、クラスタサービス205および206から通知を受信した後でフリーズコマンドから戻ることができる。
【0083】
[0072]方法500が、第1のノード上のクラスタライタがフリーズコマンドから戻った後で、バックアップコーディネータにより、ストレージプロバイダに要求を送信する行為507を含む。この要求により、ストレージプロバイダが共有されるボリュームのスナップショットを生成し、このスナップショットが、第1のノード上および共有されるボリュームを使用する少なくとも1つの他のノード上の各アプリケーションに対してアプリケーション間の統一性を有する。例えば、コーディネータ110が、ストレージプロバイダ113がボリューム104aのスナップショットを生成することを要求することができる。
【0084】
[0073]図6が、共有されるボリュームのスナップショットを生成することがクラスタの別のノードで開始されたことの通知に応答するための例示の方法600のフローチャートを示す。図2のクラスタ200に関連させて方法600を説明する。
【0085】
[0074]方法600が、共有されるボリュームのバックアッププロセスがクラスタ内の第2のノード上で開始されたことの通知を、第1のノード上のクラスタサービスのところで受信する行為601を含む。共有されるボリュームが各々の第1および第2のノード上の少なくとも1つのアプリケーションによって使用される。通知が第2のノード上のクラスタサービスから受信され、フリーズコマンドが第2のノード上のクラスタライタによって受信されたことを示す。例えば、クラスタサービス205が、コーディネータ110からバックアッププロセスのフリーズコマンドをクラスタライタ201が受信したことを示す通知をクラスタサービス204から受信することができる。
【0086】
[0075]方法600が、第1のノード上のクラスタサービスにより、第1のノード上のバックアップコーディネータに要求を送信する行為602を含む。この要求が共有されるボリュームのスナップショットを生成することを要求する。例えば、クラスタサービス205が、ボリューム104aのスナップショットをノード102上で生成することを要求するためにコーディネータ120に要求を送信することができる。
【0087】
[0076]方法600が、バックアップコーディネータにより、第1のノード上の少なくとも1つのアプリケーションのクラスタライタおよびライタにフリーズコマンドを送信する行為603を含む。フリーズコマンドが、クラスタライタおよび少なくとも1つのライタに、アプリケーションデータを共有されるボリュームにパーシストすることを命令する。例えば、コーディネータ120がライタ121aおよび122aさらにはクラスタライタ202にフリーズコマンドを送信することができる。
【0088】
[0077]方法600が、クラスタライタおよび少なくとも1つのライタがフリーズコマンドから戻った後で、バックアップコーディネータにより、第1のノード上のヘルパープロバイダにコミットコマンドを送信する行為604を含む。例えば、コーディネータ120がヘルパープロバイダ223にコミットコマンドを送信することができる。
【0089】
[0078]方法600が、第1のノード上のヘルパープロバイダにより、第1のノード上のクラスタサービスにコミットコマンドの通知を送信する行為605を含む。ヘルパープロバイダがコミットコマンドをブロックする。例えば、ヘルパープロバイダ223がコミットコマンドのクラスタサービス205に通知することができ、次いでブロックすることができる。
【0090】
[0079]方法600が、第1のノード上のクラスタサービスにより、コミットコマンドが受信されたことの通知を第2のノード上のクラスタライタに送信する行為606を含み、それにより、第1のノード上の各ライタが対応するアプリケーションのデータを共有されるボリュームにパーシストしたことが示される。例えば、クラスタサービス205が、ライタ121aおよび122aがそれらのアプリケーションデータをボリューム104aにパーシストしたことを示す通知をクラスタライタ201に送信することができる。
【0091】
[0080]本発明は本発明の精神または本質的な特性から逸脱することなく他の特定の形態で具体化され得る。説明される実施形態はすべての点で単に例示的であるとみなされ、限定的であるとみなされない。したがって、本発明の範囲は、上述の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の意味および等価の範囲内にあるすべての変更形態が特許請求の範囲に包含される。
図1
図2
図3
図4
図5
図6