(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5661176
(24)【登録日】2014年12月12日
(45)【発行日】2015年1月28日
(54)【発明の名称】遠隔仮想計算機全体にわたって耐故障チェックポインティングを達成するための方法及びシステム
(51)【国際特許分類】
G06F 11/20 20060101AFI20150108BHJP
G06F 9/46 20060101ALI20150108BHJP
【FI】
G06F11/20 310C
G06F9/46 350
【請求項の数】20
【全頁数】16
(21)【出願番号】特願2013-511338(P2013-511338)
(86)(22)【出願日】2011年5月18日
(65)【公表番号】特表2013-529343(P2013-529343A)
(43)【公表日】2013年7月18日
(86)【国際出願番号】US2011037032
(87)【国際公開番号】WO2011146645
(87)【国際公開日】20111124
【審査請求日】2013年3月21日
(31)【優先権主張番号】12/781,875
(32)【優先日】2010年5月18日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】510108504
【氏名又は名称】ヴイエムウェア インク
【氏名又は名称原語表記】VMware, Inc.
(74)【代理人】
【識別番号】100085372
【弁理士】
【氏名又は名称】須田 正義
(72)【発明者】
【氏名】アゲセン,オーレ
(72)【発明者】
【氏名】ムミディ,ラヴィプラサド
(72)【発明者】
【氏名】サブラマニアム,プラタップ
【審査官】
▲高▼橋 正▲徳▼
(56)【参考文献】
【文献】
特開2007−200294(JP,A)
【文献】
特開2006−011848(JP,A)
【文献】
特開2005−190455(JP,A)
【文献】
特開2009−116859(JP,A)
【文献】
特開2003−084995(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/16−11/20,
G06F 9/46− 9/54
(57)【特許請求の範囲】
【請求項1】
主コンピュータシステムの更新された状態を中間コンピュータシステムを通じてバックアップ・コンピュータシステムに送信する方法において、前記バックアップ・コンピュータシステムは、チェックポイントで前記中間コンピュータシステムにより受信された前記主コンピュータシステムの変更された状態のタイムリーな伝送をサポートしない低帯域幅接続を通じて前記中間コンピュータシステムにネットワーク化される方法であって、
前記中間コンピュータシステムにおいて、高帯域幅接続を通じて前記主コンピュータシステムからチェックポイント情報パケットを周期的に受信するステップであって、各チェックポイント情報パケットは、前に受信されたチェックポイント情報パケット以来変更された前記主コンピュータシステムのメモリページに対応する更新されたデータを含むステップと、
前記中間コンピュータシステムに格納された前記主コンピュータシステムのメモリページの各コピーが、前記主コンピュータシステムによって最も長い間更新されていなくて、前記バックアップ・コンピュータシステムに送信されなかったメモリページのコピーであるかどうか継続的に決定するステップと、
最も長い間更新されていないメモリページであると決定された各メモリページの各コピーの更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するステップと、
を含む方法。
【請求項2】
前記主コンピュータシステムの故障通知を受信するステップと、
前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するステップと、
を更に含む請求項1記載の方法。
【請求項3】
前記主コンピュータシステムによって最後に変更された未送付のメモリページに対応する更新されたデータが最初に送信される請求項2記載の方法。
【請求項4】
前記主コンピュータシステムが第1の故障領域にあり、そして前記中間コンピュータシステムが第2の故障領域にある請求項1記載の方法。
【請求項5】
前記周期的に受信するステップが、前記中間コンピュータシステムで動作する第1のスレッドにより実行され、そして前記継続的に決定及び送信するステップが、前記中間コンピュータシステムで動作する第2のスレッドにより実行される請求項1記載の方法。
【請求項6】
前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップ・コンピュータシステムがバックアップ仮想計算機のホストを務める第2のサーバである請求項1記載の方法。
【請求項7】
前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項1記載の方法。
【請求項8】
前記継続的に決定するステップが、
前記配列の前記エントリを横断して、現行のチェックポイント変数を前記配列の各エントリの前記チェックポイント数と比較するステップと、
前記エントリの前記チェックポイント数が前記現行のチェックポイント変数に等しい場合は、エントリの前記中間コンピュータシステムに格納された前記対応するメモリページの前記コピーの更新されたデータを送信するステップと、
前記配列の最後のエントリを分析した後に前記現行のチェックポイント変数を増やすステップと、
前記配列の始まりに戻るステップと、
を更に含む請求項7記載の方法。
【請求項9】
中間コンピュータシステムのプロセッサにより実行されるときに、主コンピュータシステムの更新された状態をバックアップ・コンピュータシステムに送信する命令を含むコンピュータ可読記憶媒体であって、前記バックアップ・コンピュータシステムは、
前記中間コンピュータシステムにおいて、高帯域幅接続を通じて前記主コンピュータシステムからチェックポイント情報パケットを周期的に受信するステップであって、各チェックポイント情報パケットは、前に受信されたチェックポイント情報パケット以来変更された前記主コンピュータシステムのメモリページに対応する更新されたデータを含むステップと、
前記中間コンピュータシステムに格納された前記主コンピュータシステムのメモリページの各コピーが、前記主コンピュータシステムによって最も長い間更新されていなくて、前記バックアップ・コンピュータシステムに送信されなかったメモリページのコピーであるかどうか継続的に決定するステップと、
最も長い間更新されていないメモリページであると決定した各メモリページの各コピーの更新されたデータを低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するステップと、
を実行することによって、チェックポイントで前記中間コンピュータシステムにより受信される前記主コンピュータシステムの変更された状態のタイムリーな伝送をサポートしない前記低帯域幅接続を通じて前記中間コンピュータシステムにネットワーク化されるコンピュータ可読記憶媒体。
【請求項10】
中間コンピュータシステムの前記プロセッサが、
前記主コンピュータシステムの故障通知を受信するステップと、
前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するステップと、
を更に実行する請求項9記載のコンピュータ可読記憶媒体。
【請求項11】
前記主コンピュータシステムによって最後に変更された未送付のメモリページに対応する更新されたデータが最初に送信される請求項10記載のコンピュータ可読記憶媒体。
【請求項12】
前記主コンピュータシステムが第1の故障領域にあり、そして前記中間コンピュータシステムが第2の故障領域にある請求項9記載のコンピュータ可読記憶媒体。
【請求項13】
前記周期的に受信するステップが、前記中間コンピュータシステムで動作する第1のスレッドにより実行され、そして前記継続的に決定及び送信するステップが、前記中間コンピュータシステムで動作する第2のスレッドにより実行される請求項9記載のコンピュータ可読記憶媒体。
【請求項14】
前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップ・コンピュータシステムがバックアップ仮想計算機のホストを務める第2のサーバである請求項9記載のコンピュータ可読記憶媒体。
【請求項15】
前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項9記載のコンピュータ可読記憶媒体。
【請求項16】
前記継続的に決定するステップが、
前記配列の前記エントリを横断して、現行のチェックポイント変数を前記配列の各エントリの前記チェックポイント数と比較するステップと、
前記エントリの前記チェックポイント数が前記現行のチェックポイント変数に等しい場合は、エントリの前記中間コンピュータシステムに格納された前記対応するメモリページの前記コピーの更新されたデータを送信するステップと、
前記配列の最後のエントリを分析した後に前記現行のチェックポイント変数を増やすステップと、
前記配列の始まりに戻るステップと、
を更に含む請求項15記載のコンピュータ可読記憶媒体。
【請求項17】
主コンピュータシステムの更新された状態をバックアップ・コンピュータシステムに送信するように構成されるコンピュータシステムであって、
第1の故障領域にあり、そして前に送信されたチェックポイント情報パケット以来変更された該主コンピュータシステムのメモリページに対応する更新されたデータを含むチェックポイント情報パケットを送信するように構成される該主コンピュータシステムと、
第2の故障領域にあり、そして高帯域幅接続を通じて前記主コンピュータシステムに接続している中間コンピュータシステムであって、前記送信されたチェックポイント情報パケットを受信して、該中間コンピュータシステムに格納された最も長い間変更されていないメモリページに対応する更新されたデータを低帯域幅接続を通じてバックアップ・コンピュータシステムに送信するように構成される中間コンピュータシステムと、
を備えるコンピュータシステム。
【請求項18】
前記中間コンピュータシステムが、前記主コンピュータシステムの故障通知を受信して、前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップ・コンピュータシステムに送信するように更に構成される請求項17記載のコンピュータシステム。
【請求項19】
前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップ・コンピュータシステムがバックアップ仮想計算機のホストを務める第2のサーバである請求項18記載のコンピュータシステム。
【請求項20】
前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項17記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、遠隔仮想計算機全体にわたって耐故障チェックポインティングを達成するための方法及びシステムに関する。
【背景技術】
【0002】
[0001]大規模な企業がそのデータセンターの基礎として仮想化プラットフォームを採用し続けるにつれて、仮想計算機(VM)の耐故障性は、仮想化プラットフォーム・プロバイダによって提供されるますます重要になる特徴になった。仮想化されたデータセンターの単一ホスト・サーバが複数のVMをサポートすることができるので、そのホスト・サーバの故障は、故障したホスト・サーバで作動するいろいろなVMにより提供された多数のサービスを停止させる場合がある。従って、企業がそのサービスの品質を維持できるように、仮想化プラットフォームは、異なるホスト・サーバで故障したVMを急速に復活させる機構を提供する必要がある。
[0002]現在では、主VMに耐故障性を施すことは、通常は、主仮想計算機のサーバと異なる「故障領域」にあるサーバで作動するバックアップVMを設けることにより達成される。故障領域は、通常、故障領域におけるホスト・サーバの1つの故障により、故障領域におけるホスト・サーバのより高い確率の故障に結果としてなる多くの指定された属性及び/又は特徴を共有する単独のデータセンタ(又は複数のデータセンタ)の一組のホスト・サーバとして表現することができる。そのデータセンター故障領域を規定するために企業により利用される属性及び/又は特徴は、災害のタイプ及び企業が達成することを望む回復のレベルに依存する。例えば、企業は、ホスト・サーバの物理的近接度(記憶ラック位置、地理的な位置、その他)、共有ハードウェア(ネットワーク化された記憶装置、電源、物理的な接続、その他)へのこの種のサーバの依存、又はソフトウェア技術(共有ファイルシステム、その他)などに基づいてその故障領域を規定することを選択できる。よく構成された故障領域は、1つの故障領域におけるVMの故障の異なる故障領域における別のVMの故障との相関性を最小化する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願第12/259,762号明細書
【特許文献2】米国特許第7,529,897号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
[0003]VM耐故障性は、決定性再生、チェックポインティング、又は2つの混成を使用して設けることができて、それは2008年8月28日に出願された特許文献1に開示され、それの内容全体を本願明細書に引用したものとする。再生技術については、主VMの命令ストリーム(例えば、主VMの命令ストリーム内の非決定性事象)の基本的部分は、リアルタイムで(例えば、主VMのハイパーバイザ層又は仮想計算機モニタ構成要素によって、)に捕獲されて、同期方法で主VMの実行を「再生する」ために、バックアップVM(例えば、異なる故障領域におそらくある)に送信される。主VMが故障する場合は、バックアップVMは識別可能な時間損失なしで引き継ぐことができる。再生技術が速い回復時間を有する強力な耐故障性解決案を提供する一方、例えば、SMP(対称的マルチプロセシング)アーキテクチャを複数の仮想CPUでサポートする仮想計算機の場合のように、非決定性事象が命令ストリーム内で確認するためにより頻度が高いか、又はより困難になるとき、それはより実現性がない。
【0005】
[0004]再生技術とは対照的に、チェックポインティング・ベースの耐故障性技術は、SMPベースの仮想計算機を含む様々な仮想アーキテクチャをサポートするそれらの機能においてより柔軟性がある。仮想計算機システムにおいて、チェックポイントを生成して使用する技術は、特許文献2に開示されて、それの内容全体を本願明細書に引用したものとする。チェックポインティングの場合は、主VMは、前のチェックポイントから主VMの状態になされるいかなる変更も決定するために、実行の過程(各々「チェックポイント」と呼ばれるこの種のスタン期間)中に、周期的にスタンされる(即ち、実行は一時的に停止する)。一旦この種の変更が決定されると、それは、変更をその現行状態に併合することが可能であるバックアップVMに送信され、それによってチェックポイント時に主VMの正確な状態を反映する。主VMの故障の通知だけに応じて、バックアップVMは、主VMの格納された状態をそれ自体の実行状態にロードすることによって動作し始める。しかしながら、送信された状態のチェックポイント情報の潜在的に大きいサイズ(例えば、数ギガバイト)及びこの種の状態をバックアップVMに送信するために周期的チェックポイントで主VMをスタンする必要のため、スタン期間がネットワーク帯域幅限界によって長くならないように、バックアップVMは十分に高い帯域幅で主VMにネットワーク化されなければならない。この制約は、現在、チェックポイント情報を効果的に送信するために、主VMから地理的に遠く離れている位置に、又はバックアップVMが不十分な帯域幅性能を有するネットワーク接続を使用して主VMに接続している方法でバックアップVMの位置を決める性能を制限する。
【課題を解決するための手段】
【0006】
[0005]本発明の1つ以上の実施形態によって、チェックポインティング情報を受信するバックアップVMが主VMから遠隔に位置することが可能である。この種の実施形態では、効果的な方法でチェックポイント情報のバックアップVMへの伝送を管理するために、主要なVMとバックアップVMの間に中間コンピュータシステムを位置させる。中間コンピュータシステムは、高帯域幅接続を通じて主VMにネットワーク化されるが、より低い帯域幅接続を通じてバックアップVMにネットワーク化される。各チェックポイントの間、中間コンピュータシステムは、前のチェックポイント時から変更された主要なVMの状態のメモリページに対応する主VMから更新されたデータを受信して、格納する。中間コンピュータシステムは、主VMによって最も長い間変更されていないメモリページに対応する更新されたデータを継続的に識別して、この種の更新されたデータをバックアップVMに低帯域幅接続を通じて送信する。このようにして、この種のメモリページは将来再び更新される可能性が大きいので、中間コンピュータシステムは、低帯域幅接続の帯域幅容量を節約して、より最近変更されたメモリページに対応する更新されたデータを抑制する。一実施形態において、中間コンピュータシステムの故障が主VMの故障と相関しないように、中間コンピュータシステムは主VMの故障領域とは別の故障領域にある。
【0007】
[0006]本発明の実施形態は、中間コンピュータシステムによって主コンピュータシステムの更新された状態をバックアップ・コンピュータシステムに送信する方法を提供し、そこにおいて、バックアップ・コンピュータシステムは、チェックポイントで中間コンピュータシステムにより受信された主コンピュータシステムの変更された状態のタイムリーな伝送をサポートしない低帯域幅接続を通じて中間コンピュータシステムにネットワーク化される。この方法は、中間コンピュータシステムにおいて高帯域幅接続を通じて主コンピュータシステムからチェックポイント情報パケットを周期的に受信するステップと、中間コンピュータシステムに格納された主コンピュータシステムのメモリページの各コピーが、主コンピュータシステムによって最も長い間更新されていなくて、バックアップ・コンピュータシステムに送信されなかったメモリページのコピーであるかどうか継続的に決定するステップと、最も長い間更新されていないメモリページであると決定した各メモリページの各コピーの更新されたデータを低帯域幅接続を通じてバックアップ・コンピュータシステムに送信するステップとを含む。この方法では、中間コンピュータシステムで受信される各チェックポイント情報パケットは、前に受信されたチェックポイント情報パケット以来変更された主コンピュータシステムのメモリページに対応する更新されたデータを含む。
【図面の簡単な説明】
【0008】
【
図1A】[0007]中間コンピュータシステムを使用する主及びバックアップ仮想計算機のためのネットワーク・アーキテクチャの実施形態のブロック図を示す。
【
図1B】[0008]中間コンピュータシステムを使用する主及びバックアップ仮想計算機のためのネットワーク・アーキテクチャの第2実施形態のブロック図を示す。
【
図2】[0009]中間コンピュータシステムを使用して主仮想計算機の更新された状態をバックアップ仮想計算機に送信するためのフロー図を示す。
【
図3】[0010]中間コンピュータシステムでコールド・メモリページを送信するためのデータ構造を示す。
【発明を実施するための形態】
【0009】
[0011]
図1Aは、中間コンピュータシステムを使用する主及びバックアップ仮想計算機のためのネットワーク・アーキテクチャの実施形態のブロック図を示す。主VM100は、データセンターの故障領域110の主サーバ105にある。仮想計算機をサポートする主サーバ105の1つの実施例は、VMwareのESX(商標)ハイパーバイザ製品を走らせるサーバであり、それはカリフォルニア州パロアルトのVMware社から市販されている(但し、いかなる仮想化技術も、Xen(登録商標)、Microsoft(登録商標) Hyper―Vなどを含み、本願明細書において教示と整合して用いられることが可能であると認識しなければならない)。高帯域幅接続120がサーバ105と中間システム115の間に配置されることができるように、中間コンピュータシステム115(以下、「中間システム」)はサーバ105の十分近くに位置している。高帯域幅接続120は、更に後述するように、主VMの100の実行の間に主VM100と中間システム115の間のチェックポイント情報の伝送をサポートするために充分な帯域幅性能を提供する。例えば、一実施形態において、高帯域幅接続120は、中間システム115が1秒当たり50〜100回の割合で主VM100からチェックポイント情報を効果的に受信するために、充分な帯域幅性能を提供し、チェックポイント情報の各セットは複数のギガバイトのデータを潜在的に含む。中間システム115が、高帯域幅接続120を可能にするために主VM100と物理的に充分近くにあるにもかかわらず、中間システム115はまた主VM100の故障領域110と異なる故障領域125にあり、その結果、主VM100(又はサーバ105)の故障は中間システム115の故障と相関していない(又は有意な相関性を有しない)。
図1Aに更に示すように、バックアップVM130は、故障領域125を中間システム115と共有するバックアップ・サーバ135にある。中間システム115とバックアップVM130の間の低帯域幅接続140は、中間システム115及び/又は主VM100と地理的に遠く離れた位置にバックアップVM130を位置させる柔軟性を提供する。
【0010】
[0012]
図IBは、中間コンピュータシステムを使用する主及びバックアップ仮想計算機のためのネットワーク・アーキテクチャの第2実施形態のブロック図を示す。
図IBに示すように、中間システム115及びバックアップ・サーバ135のバックアップVM130は、それぞれ、異なる故障領域125及び145にある。例えば、一実施形態において、主VM100は、故障領域110も含むブレード主サーバ105にある。中間システム115は、ブレード主サーバ105と同じシャシーを利用する第2ブレードサーバであるが、異なる故障領域125を含む。中間システム115は、(例えば、ブレード主サーバ105及び中間システム115は、それぞれ、異なる故障領域110及び125に結果としてなる異なる故障特徴を呈するように、)シャシーの底部に配置されるブレード主サーバ105に影響を及ぼすことがある水害から守るために、例えば、シャシーの上に配置することができる。高帯域幅接続120は、この種の実施形態において、シャシーのPCI―eバックプレーンによって容易になる。バックアップ・サーバ135のバックアップVM130は、本実施形態において地理的に遠隔位置にあることがありえる。例えば、主VM100及び中間システム115がカリフォルニア州パロアルトのデータセンターに位置する場合は、バックアップVM130は、マサチューセッツ州ボストンの異なるデータセンターに位置することがありえる。他の実施形態では、中間システム115は、管理の強化のために、変更されたNIC若しくはルータ又は他のエッジデバイスとして、例えば、サブネットの端に位置することがありえる。あるいは、中間システム115の機能は、主サーバ105自体内で実施されて、例えば、主サーバ105のプロセッサ又はマザーボードの比較的より信頼性が高い部分にセットされることができる。
【0011】
[0013]
図2は、中間コンピュータシステムを使用して主要な仮想計算機の更新された状態をバックアップ仮想計算機に送信するためのフロー図を示す。一実施形態において、主VM100のホストを務める主サーバ105は、チェックポインティング・モジュール(又は他のチェックポインティング機能)をそのハイパーバイザに含む。更に以下に詳述されるように、この種のチェックポインティング・モジュールは、チェックポイント情報パケットを高帯域幅接続120を通じて各チェックポイントの中間システム115へ送信する。各チェックポイント情報パケットは、前に送信されたチェックポイント情報パケットからの主VM100のメモリ(及びエミュレートされた装置、特定の実施形態において、)の状態の変化を反映する情報を含む。一実施形態において、主サーバ105のハイパーバイザによるチェックポイント情報パケットの伝送は、例えば、約1秒当たり50〜100回の割合で行われる。
【0012】
[0014]ステップ200において、主サーバ105のハイパーバイザは主VM100のインスタンスを生成する。ステップ202において、主サーバ105のハイパーバイザは、主VM100の状態の第1のスナップショットを撮って、スナップショットを中間システム115に送信する。第1のスナップショットは、主VM100のメモリの状態(及び、特定の実施形態では、エミュレートされた装置の状態)を形成する複数のメモリページから成る。例えば、一実施形態において、各メモリページは、4GBの仮想RAMで構成される主VM100が約百万のメモリページの第1のスナップショット・サイズを有するように、4KBのサイズを有する。VMwareのESX(商標)仮想化プラットフォームを利用する実施形態において、VMwareのVMotion技術は、この種の第1のスナップショットを作成して、送信するために用いることができる。ステップ204において、中間システム115は第1のスナップショットを受信して、格納する。ステップ206において、主VM100のハイパーバイザはタイマーを開始して、チェックポイント情報パケットを生成するために、チェックポイントの開始を周期的にトリガする(例えば、1秒当たり50〜100回など)。タイマーの満了の前に、ステップ208で、ハイパーバイザは、主VM100により生成されるありとあらゆるアウトバウンド・ネットワーク・パケットを遅延させて、キューに入れる。
【0013】
[0015]一旦タイマーがステップ210において満了すると、ハイパーバイザは、ステップ212で主VM100をスタンする(即ち、その実行状態をフリーズする)ことによって、チェックポイントを開始して、スタンされた主VM100の現在の状態を反映するチェックポイント情報パケットを生成して、ステップ214でチェックポイント情報パケットを中間システム115に送信する。一実施形態において、チェックポイント情報パケットは、前に送信されたチェックポイント情報パケット以来(又は第1のチェックポイント情報パケットの第1のスナップショット以来)主VM100の実行中に更新された第1のスナップショットのメモリページ(又はその部分)のサブセットを含む。様々な技術が、例えば、メモリ仮想化のために使用されるページテーブル及びページ・ディレクトリのハードウェア制御ダーティ・ビットによって、この種の変更ページを検出するための主サーバ105で利用可能であるハードウェアを利用することを含み、主VM100の更新されたメモリページを識別するために利用できると認識しなければならない。ステップ216において、中間システム115は送信されたチェックポイント情報パケットをうまく受信して、ステップ218において、成功した受信の肯定応答を主サーバ105へ返信する。一旦主サーバ105のハイパーバイザが送信された肯定応答をステップ220において受信すると、ハイパーバイザはステップ222において、主VM100の実行を再開して、ステップ208へ戻る前に、ステップ224において、すべてのキューに入れられたネットワーク・パケットを(ステップ208から)解放する。ステップ208においてアウトバウンド・ネットワーク・パケットを遅延させて、キューに入れて、ステップ220においてチェックポイント情報パケットの受領についての中間システム115から肯定応答を受信した後にだけそれらを解放することは、主VM100の故障の状態でバックアップ・サーバ135による主VM100の回復が、外部の構成要素とのネットワーク通信(即ち、受取人を混乱させずに回復された状態にしてから後にアウトバウンド・ネットワーク・パケットを再送信し、それが予想しているインバウンド・ネットワーク・パケットを再受信するなど)を適切に再開できる主VM100の状態に基づくことを確実にする。
【0014】
[0016]一方、ステップ226で、中間システム115は、ステップ216において受信したチェックポイント情報パケットの更新されたメモリページ(又はその部分)で主VM100の状態のその格納されたスナップショットを更新する。ステップ216及び226におけるチェックポイント情報パケットのその連続受信及び主VM100の状態のその格納されたスナップショットの更新と同時に、中間システム115はまた、ステップ228において主VM100によって最近又はごく最近変更されたそれらの受信したメモリページを継続的に(例えば、別の実行方法又はスレッドなどによって)決定して、バックアップ・サーバ135に送信する(この種の最近又はごく最近変更されたメモリページは本明細書において「コールド」メモリページと称される)。ステップ230において、バックアップ・サーバ135のハイパーバイザは、これらのコールド・メモリページを受信して、ステップ232において、バックアップVM130のための主VM100のその復元された状態にコールド・メモリページを組み込む。中間システム115が、ステップ228において、「コールド」メモリページをバックアップ・サーバ135に送信するだけであるので、バックアップVM130により維持される主VM100の復元された状態が、主VM100のいかなる特定の過去の「チェックポイントされた」状態の完成された状態も必ずしも反映できるというわけではないと認識しなければならない。即ち、バックアップ・サーバ135に特定のチェックポイントで主VM100の状態を反映するメモリページの完全なセットを提供するために必要な場合であっても、中間システム115によって、「より新しい(hotter)」(即ち、より最近変更された)とみなされるメモリページは引き止められて、バックアップ・サーバ135に送信されない。この種のより新しいメモリページを引き止めることは、バックアップVM130が主VM100の故障に因っていかなる措置をもとることを必要とする前に、より新しいメモリページが再び変更されるという仮定に基づいて、中間システム115とバックアップ・サーバ135の間の低帯域幅接続140の制限された帯域幅性能を保存する。
【0015】
[0017]ステップ234において、中間システム115が主VM100の故障を検出する(又はさもなければそれについて通知される)場合は、ステップ236で、中間システム115はバックアップ・サーバ135に主VM100の故障を通知して、主VM100のその格納されたスナップショットのいかなる未送付のメモリページもバックアップ・サーバ135に送信する。ステップ238において、バックアップ・サーバ135は、主VM100の故障の通知及びメモリページを受信して、ステップ240において、受信したメモリページを主VM100のためのその復元された状態に組み込んで、バックアップVM130として主VM100の実行を再開する。
【0016】
[0018]
図3は、中間コンピュータシステムでコールド・メモリページを送信するためのデータ構造を示す。一実施形態において、中間システム115は、仮想化プラットフォームを実行する主サーバ105及びバックアップ・サーバ135とは対照的に、主サーバ105からチェックポイント情報パケットを受信して、データ構造300で維持される情報に基づくようにメモリページをバックアップ・サーバ135に送信する、1つ以上のプロセス(例えば、又はスレッドなど)を実行する非仮想化されたコンピュータシステムである(但し、中間システム115が別の実施形態の仮想計算機においても実施されることができると認識しなければならない)。
図3に示すように、データ構造300は、主VM100の第1のスナップショットを含むメモリページ0〜N―1のうちの1つにそれぞれ対応するエントリの配列である(例えば、
図2のステップ202参照)。この種の各エントリは、主サーバ105から受信したメモリページのコピーを格納する中間システム115のメモリの位置に対する参照フィールド302(例えば、アドレス・ポインタ)及び中間システム115がメモリページのその現行コピーを受信したチェックポイントを示すチェックポイント数フィールド304(時期又は年代記号として表わされる)を含む。
【0017】
[0019]受信スレッド306と呼ばれるスレッドは、主サーバ105から(例えば、ステップ214の各次のチェックポイント情報パケットからと同様にステップ202の第1のスナップショットから)の主VM100のメモリページの受信を管理する。ステップ308において、高帯域幅接続120経由で主サーバ105から受信されるメモリページごとに、受信スレッド306は中間システム115のメモリにメモリページを格納する。ステップ310において、受信スレッド306は、格納されたメモリページの記憶アドレスを受信したメモリページに対応するデータ構造300のエントリの参照フィールド302へ挿入する。ステップ312において、受信スレッド306は現行のチェックポイント数でエントリのチェックポイント数フィールド304を更新する。
【0018】
[0020]送信スレッド314と呼ばれる同時に実行中のスレッドは、
図2のステップ228で説明したように(低帯域幅接続140を経由して)「コールド」メモリページ(例えば、最も長い間変更されていない)のバックアップ・サーバ135への送信を管理する。送信スレッド314は、送信スレッド314がその実行の間に作用しているデータ構造300の現行のエントリを示す現行の配列インデックス318と同様に、送信スレッド314が現在作用しているチェックポイント数を示すチェックポイント変数316を維持する。チェックポイント変数316はゼロ(例えば、この種のエントリが
図2のステップ204において受信される第1のスナップショットから受信されるメモリページに対応するとき、データ構造300の各エントリのチェックポイント数フィールド304の値)まで初期化されて、現行の配列インデックス318はデータ構造300の第1のエントリのインデックス(例えば、ゼロのインデックス)に初期化される。送信スレッド314は、データ構造300の第1のエントリ(例えば、メモリページ0のエントリ)で始まり、そしてこの種のエントリのチェックポイント数フィールド304がステップ320においてチェックポイント変数316に合致する場合、ステップ322において、送信スレッド314は、エントリの参照フィールド302において参照されるメモリページ(即ち、この種のメモリページは「コールド」メモリページである)を低帯域幅接続140を経由してバックアップ・サーバ135へ送信し始める。ステップ324において、メモリページの成功した受信についてのバックアップ・サーバ135からの肯定応答を受信すると即座に、送信スレッド314は、現行の配列インデックス318がデータ構造300の最後のエントリのインデックスを表すかどうか決定する。送信スレッド314が、現行の配列インデックス318がデータ構造300の最後のエントリのインデックスを表すと決定する場合は、ステップ326において、送信スレッド314はチェックポイント変数316を増やし、現行の配列インデックス318をデータ構造300の第1のエントリのインデックス(例えば、ゼロのインデックス)にリセットし、そしてデータ構造300の始めに戻る。さもなければ、送信スレッド314は現行の配列インデックス318を増やして、ステップ328においてデータ構造300の次のエントリへ移動する。
【0019】
[0021]ステップ330において、送信スレッド314が主VM100の故障の通知を受信する場合は、ステップ332において、送信スレッド314はデータ構造300を横断して、(a)チェックポイント数304がチェックポイント変数316より大きい、又は(b)チェックポイント数304がチェックポイント変数316に等しくて、インデックスが現行の配列インデックス318以上である各エントリで参照されるメモリページ(即ち、メモリページがバックアップ・サーバ135にまだ送信されなかったことを示す)を送信する。一実施形態において、ステップ330において主VM100の故障の通知を受信すると即座に、送信スレッド314は、例えば、より新しいメモリページがよりコールドなメモリページページよりバックアップVM130の次の実行の間にアクセスされそうであるという推定の下で、バックアップVM130がスナップショットのすべての未送付のメモリページを受信する前に実行を始めることを可能にする努力において、それらのチェックポイント数フィールド304で最も高い値を有するそれらのメモリページを送信することによって、より新しいメモリページを最初に送信し始める。
【0020】
[0022]送信スレッド314がデータ構造を横断して、受信スレッド308がメモリページを高帯域接続120を通じて各チェックポイントで受信して更新する速度より著しく遅いより低い帯域幅接続140による速度でコールド・メモリページをバックアップ・サーバ135に送信できると認識しなければならない。このように、チェックポイント変数316の値は、受信スレッド306により受信されるチェックポイント情報パケットの実際の現行のチェックポイント数より小さいままである。より新しいメモリページを保留して、コールド・メモリページを送信することによって、中間システム115は、このように、低帯域幅接続140の帯域幅容量が、近い将来に更新されたデータによって上書きされるおそれがあるメモリページの伝送に浪費される(即ち、受信されるのより少ないメモリページが中間システム115により送信される)という可能性を減らす。
【0021】
[0023]
図3で説明したデータ構造300及び技術は単に例示であり、そして様々な代替のデータ構造及び技術が、メモリページが「コールド」であるかどうか決定する(即ち、どのように「コールド」が規定また評価できるかについての異なる概念によって)ために利用できると認識しなければならない。例えば、
図3の代替の実施形態は、エントリに対応するメモリページがバックアップVM130にすでに送信されたかどうかを示すデータ構造300の各エントリにおける伝送ビットを含むことができる。別の代替の実施形態は、主VMのスナップショットのメモリページによって指標を付けられるエントリの配列を利用し(データ構造300と同様)、そこにおいて配列の各エントリは、格納されたメモリページへの参照(参照フィールド302と同様)及びカウンタ値を含む。このような実施形態では、受信チェックポイント情報パケットが対応する更新されたメモリページを含むたびに、受信スレッドはエントリのカウンタ値を増やす。同時に、送信スレッドは配列を絶えず繰り返して、予め指定された小さいカウンタ値を有するエントリに対応するメモリページを送信する。この種の実施形態は、「コールド」を規定するために、最も長い間変更されていないよりはむしろ変更頻度が最も低いメモリページの概念を利用する。更に別の代替の実施形態は、この種のメモリページが更新されたチェックポイントに対応するメモリページごとにチェックポイント数のリストを維持するデータ構造を利用する。この種のデータ構造は、さまざまな方法で、「コールド」メモリページ、例えば、チェックポイント数の最も小さいリストを有するメモリページ、又はチェックポイントの連続数に対して不変のままだった(例えば、変更頻度が最も低い、又は最も長い間変更されていない、その他)メモリページを特定するか又は規定するために柔軟性を提供する。
【0022】
[0024]さまざまな変更態様及び改変が、添付の請求項に記載したように本発明のより広い精神と範囲を逸脱せずに、本願明細書に記載されている特定の実施形態になされることができると認識しなければならない。例えば、前述の説明が、主サーバ105及び中間システム115が完全なメモリページを送信する(この種のメモリページが変更された場合)実施形態に集中したが、代替の実施形態が、それらの伝送の前に主サーバ105及び中間システム115のどちらか又は両方でメモリページに違う技術又は他の圧縮技術を適用できると認識しなければならない。この種の代替の実施形態は、このように完全なメモリページ自体よりもむしろメモリページに対応する更新されたデータだけを送信できる。同様に、前述の実施形態が単一の中間システム115について述べたけれども、実施形態が、異なる故障領域において、可能な限りの複数の中間システムを取り入れることができて、その結果、すべての中間システムの故障の確率はごくわずかであると認識しなければならない。加えて、前述の実施形態が、主及びバックアップVMを使用して概説されたが、非仮想化システムを含む、他の主及びバックアップ・コンピュータシステムは、本願明細書における教示と整合して用いることができる。
【0023】
[0025]本願明細書において記載されているさまざまな実施形態は、コンピュータシステムに格納されるデータを含むさまざまなコンピュータ実行動作を使用できる。例えば、これらの動作は通常、必然的にではなく、物理的な量の物理的操作を必要とすることがあり、これらの量は電気又は磁気信号という形をとることができて、それら、又はそれらの表現は格納され、転送され、結合され、比較されるか、又は操作されうる。更に、この種の操作は、しばしば、生成、識別、決定、又は比較などの用語で呼ばれる。本発明の1つ以上の実施形態の一部を形成する本願明細書に記載したいかなる動作も、有用な機械動作でありえる。加えて、本発明の1つ以上の実施形態は、これらの動作を実行する装置又は機器にも関する。機器は特定の必要な目的のために特別に構成されることができるか、あるいはそれはコンピュータに格納されたコンピュータプログラムによって選択的に作動するか又は構成される多目的コンピュータでもよい。特に、さまざまな多目的機械が本願明細書の教示に従って書かれたコンピュータプログラムを用いて使用できるか、又は必要な動作を実行するためにより専門の機器を構成することがより便利な場合がある。
【0024】
[0026]本願明細書に記載されているさまざまな実施形態は、携帯用装置、マイクロプロセッサシステム、マイクロプロセッサ・ベースであるかプログラム可能な家電、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成を用いて実施できる。
【0025】
[0027]本発明の1つ以上の実施形態は、1つ以上のコンピュータプログラムとして、又は1つ以上の計算機可読媒体で実現される1つ以上のコンピュータプログラム・モジュールとして実施されることができる。用語「計算機可読媒体」は、コンピュータシステムにその後で入力されることができるデータを格納できるいかなるデータ記憶装置をも指し、計算機可読媒体は、コンピュータプログラムがコンピュータによって読み込まれることを可能にする方法でそれを実現するために、いかなる既存又はその後開発された技術に基づいてもよい。計算機可読媒体の例は、ハード・ドライブ、ネットワーク接続ストレージ(NAS)、読出し専用メモリ、ランダムアクセス・メモリ(例えば、フラッシュメモリ装置)、CD(コンパクトディスク)CD―ROM、CD―R、又はCD―RW、DVD(デジタル多用途ディスク)、磁気テープ、ならびに他の光学及び非光学データ記憶装置を含む。計算機可読コードが分散方式で格納されて、実行されるように、計算機可読媒体はネットワーク結合コンピュータシステムに分散されることもできる。
【0026】
[0028]本発明の1つ以上の実施形態が明確に理解するためにいくぶん詳細に説明されたけれども、特定の改変と変更態様が請求項の範囲内でなされうることは明らかである。したがって、記載の実施形態は例示的であって、限定的ではないと考えるべきであり、そして請求項の範囲は本願明細書に示された詳細に限られず、請求項の範囲及び相当の中で変更できる。請求項において、明確に請求項において述べられない限り、要素及び/又はステップは動作のいかなる特定の順序も意味しない。
【0027】
[0029]複数の例は、単一の例として本願明細書に記載されている構成要素、動作、又は構造のために提供されることができる。最後に、さまざまな構成要素、動作、及びデータストアの間の境界はいくぶん任意であり、そして特定の動作は特定の例証を示す構成との関連で例示される。機能の他の割当ては構想されて、本発明の範囲に入ることができる。一般に、例示的な構成で別々の構成要素として提示される構造及び機能は、複合された構造又は構成要素として実現できる。同様に、単一の構成要素として提示される構造及び機能は別々の構成要素として実現できる。これらの、そしてまた他の変形、変更、追加、及び改良は添付の請求の範囲内に入ることができる。