(57)【要約】  チェックポインティング耐故障ネットワーク・アーキテクチャは、バックアップ・コンピュータシステムが主コンピュータシステムから遠隔に位置することを可能にする。中間コンピュータシステムは、チェックポイント情報のバックアップＶＭへの伝送を効果的な方法で管理するために、主コンピュータシステムとバックアップ・コンピュータシステムの間にある。中間コンピュータシステムは、高帯域幅接続を通じて主ＶＭにネットワーク化されるが、低帯域幅接続を通じてバックアップＶＭにネットワーク化される。中間コンピュータシステムは、主ＶＭによって、最も長い間変更されていないメモリページに対応する更新されたデータを識別して、低帯域幅接続を通じてこの種の更新されたデータをバックアップＶＭに送信する。このような方法で、この種のメモリページが将来再び更新される見込みが多いので、中間コンピュータシステムは、低帯域幅接続の帯域幅容量を節約して、つい最近変更されたメモリページに対応する更新されたデータを抑制する。
2013529343.tif 000002
【特許請求の範囲】
【請求項１】
主コンピュータシステムの更新された状態を中間コンピュータシステムを通じてバックアップ・コンピュータシステムに送信する方法において、前記バックアップ・コンピュータシステムは、チェックポイントで前記中間コンピュータシステムにより受信された前記主コンピュータシステムの変更された状態のタイムリーな伝送をサポートしない低帯域幅接続を通じて前記中間コンピュータシステムにネットワーク化される方法であって、
前記中間コンピュータシステムにおいて、高帯域幅接続を通じて前記主コンピュータシステムからチェックポイント情報パケットを周期的に受信するステップであって、各チェックポイント情報パケットは、前に受信されたチェックポイント情報パケット以来変更された前記主コンピュータシステムのメモリページに対応する更新されたデータを含むステップと、
前記中間コンピュータシステムに格納された前記主コンピュータシステムのメモリページの各コピーが、前記主コンピュータシステムによって最も長い間更新されていなくて、前記バックアップ・コンピュータシステムに送信されなかったメモリページのコピーであるかどうか継続的に決定するステップと、
最も長い間更新されていないメモリページであると決定された各メモリページの各コピーの更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するステップと、
を含む方法。
【請求項２】
前記主コンピュータシステムの故障通知を受信するステップと、
前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するステップと、
を更に含む請求項１記載の方法。
【請求項３】
前記主コンピュータシステムによってごく最近変更された未送付のメモリページに対応する更新されたデータが最初に送信される請求項２記載の方法。
【請求項４】
前記主コンピュータシステムが第１の故障領域にあり、そして前記中間コンピュータシステムが第２の故障領域にある請求項１記載の方法。
【請求項５】
前記周期的に受信するステップが、前記中間コンピュータシステムで動作する第１のスレッドにより実行され、そして前記継続的に決定及び送信するステップが、前記中間コンピュータシステムで動作する第２のスレッドにより実行される請求項１記載の方法。
【請求項６】
前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップ・コンピュータシステムがバックアップ仮想計算機のホストを務める第２のサーバである請求項１記載の方法。
【請求項７】
前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項１記載の方法。
【請求項８】
前記継続的に決定するステップが、
前記配列の前記エントリを横断して、現行のチェックポイント変数を前記配列の各エントリの前記チェックポイント数と比較するステップと、
前記エントリの前記チェックポイント数が前記現行のチェックポイント変数に等しい場合は、エントリの前記中間コンピュータシステムに格納された前記対応するメモリページの前記コピーの更新されたデータを送信するステップと、
前記配列の最後のエントリを分析した後に前記現行のチェックポイント変数を増やすステップと、
前記配列の始まりに戻るステップと、
を更に含む請求項７記載の方法。
【請求項９】
中間コンピュータシステムのプロセッサにより実行されるときに、主コンピュータシステムの更新された状態をバックアップ・コンピュータシステムに送信する命令を含むコンピュータ可読記憶媒体であって、前記バックアップ・コンピュータシステムは、
前記中間コンピュータシステムにおいて、高帯域幅接続を通じて前記主コンピュータシステムからチェックポイント情報パケットを周期的に受信するステップであって、各チェックポイント情報パケットは、前に受信されたチェックポイント情報パケット以来変更された前記主コンピュータシステムのメモリページに対応する更新されたデータを含むステップと、
前記中間コンピュータシステムに格納された前記主コンピュータシステムのメモリページの各コピーが、前記主コンピュータシステムによって最も長い間更新されていなくて、前記バックアップ・コンピュータシステムに送信されなかったメモリページのコピーであるかどうか継続的に決定するステップと、
最も長い間更新されていないメモリページであると決定した各メモリページの各コピーの更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するステップと、
を実行することによって、チェックポイントで前記中間コンピュータシステムにより受信される前記主コンピュータシステムの変更された状態のタイムリーな伝送をサポートしない低帯域幅接続を通じて前記中間コンピュータシステムにネットワーク化されるコンピュータ可読記憶媒体。
【請求項１０】
中間コンピュータシステムの前記プロセッサが、
前記主コンピュータシステムの故障通知を受信するステップと、
前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するステップと、
を更に実行する請求項９記載のコンピュータ可読記憶媒体。
【請求項１１】
前記主コンピュータシステムによってごく最近変更された未送付のメモリページに対応する更新されたデータが最初に送信される請求項１０記載のコンピュータ可読記憶媒体。
【請求項１２】
前記主コンピュータシステムが第１の故障領域にあり、そして前記中間コンピュータシステムが第２の故障領域にある請求項９記載のコンピュータ可読記憶媒体。
【請求項１３】
前記周期的に受信するステップが、前記中間コンピュータシステムで動作する第１のスレッドにより実行され、そして前記継続的に決定及び送信するステップが、前記中間コンピュータシステムで動作する第２のスレッドにより実行される請求項９記載のコンピュータ可読記憶媒体。
【請求項１４】
前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップ・コンピュータシステムがバックアップ仮想計算機のホストを務める第２のサーバである請求項９記載のコンピュータ可読記憶媒体。
【請求項１５】
前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項９記載のコンピュータ可読記憶媒体。
【請求項１６】
前記継続的に決定するステップが、
前記配列の前記エントリを横断して、現行のチェックポイント変数を前記配列の各エントリの前記チェックポイント数と比較するステップと、
前記エントリの前記チェックポイント数が前記現行のチェックポイント変数に等しい場合は、エントリの前記中間コンピュータシステムに格納された前記対応するメモリページの前記コピーの更新されたデータを送信するステップと、
前記配列の最後のエントリを分析した後に前記現行のチェックポイント変数を増やすステップと、
前記配列の始まりに戻るステップと、
を更に含む請求項１５記載のコンピュータ可読記憶媒体。
【請求項１７】
主コンピュータシステムの更新された状態をバックアップ・コンピュータシステムに送信するように構成されるコンピュータシステムであって、
第１の故障領域にあり、そして前に送信されたチェックポイント情報パケット以来変更された該主コンピュータシステムのメモリページに対応する更新されたデータを含むチェックポイント情報パケットを送信するように構成される該主コンピュータシステムと、
第２の故障領域にあり、そして高帯域幅接続を通じて前記主コンピュータシステムに接続している中間コンピュータシステムであって、前記送信されたチェックポイント情報パケットを受信して、該中間コンピュータシステムに格納された最も長い間変更されていないメモリページに対応する更新されたデータを低帯域幅接続を通じてバックアップ・コンピュータシステムに送信するように構成される中間コンピュータシステムと、
を備えるコンピュータシステム。
【請求項１８】
前記中間コンピュータシステムが、前記主コンピュータシステムの故障通知を受信して、前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するように更に構成される請求項１７記載のコンピュータシステム。
【請求項１９】
前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップ・コンピュータシステムがバックアップ仮想計算機のホストを務める第２のサーバである請求項１８記載のコンピュータシステム。
【請求項２０】
前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項１７記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遠隔仮想計算機全体にわたって耐故障チェックポインティングを達成するための方法及びシステムに関する。
【背景技術】
【０００２】
[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]複数の例は、単一の例として本願明細書に記載されている構成要素、動作、又は構造のために提供されることができる。最後に、さまざまな構成要素、動作、及びデータストアの間の境界はいくぶん任意であり、そして特定の動作は特定の例証を示す構成との関連で例示される。機能の他の割当ては構想されて、本発明の範囲に入ることができる。一般に、例示的な構成で別々の構成要素として提示される構造及び機能は、複合された構造又は構成要素として実現できる。同様に、単一の構成要素として提示される構造及び機能は別々の構成要素として実現できる。これらの、そしてまた他の変形、変更、追加、及び改良は添付の請求の範囲内に入ることができる。
【図１Ａ】
2013529343.tif 000003
【図１Ｂ】
2013529343.tif 000004
【図２】
2013529343.tif 000005
【図３】
2013529343.tif 000006
【国際調査報告】
2013529343.tif 000007
2013529343.tif 000008
2013529343.tif 000009