主コンピュータシステムの更新された状態を中間コンピュータシステムを通じてバックアップコンピュータシステムに送信する方法において、前記バックアップコンピュータシステムは、チェックポイントで前記中間コンピュータシステムにより受信された前記主コンピュータシステムの変更された状態のタイムリーな伝送をサポートしない低帯域幅接続を通じて前記中間コンピュータシステムにネットワーク化される方法であって、前記中間コンピュータシステムにおいて、高帯域幅接続を通じて前記主コンピュータシステムからチェックポイント情報パケットを周期的に受信するステップであって、各チェックポイント情報パケットは、前に受信されたチェックポイント情報パケット以来変更された前記主コンピュータシステムのメモリページに対応する更新されたデータを含むステップと、前記中間コンピュータシステムに格納された前記主コンピュータシステムのメモリページの各コピーが、前記主コンピュータシステムによって最も長い間更新されていなくて、前記バックアップコンピュータシステムに送信されなかったメモリページのコピーであるかどうか継続的に決定するステップと、最も長い間更新されていないメモリページであると決定された各メモリページの各コピーの更新されたデータを前記低帯域幅接続を通じて前記バックアップコンピュータシステムに送信するステップと、を含む方法。前記主コンピュータシステムの故障通知を受信するステップと、前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップコンピュータシステムに送信するステップと、を更に含む請求項1記載の方法。前記主コンピュータシステムによってごく最近変更された未送付のメモリページに対応する更新されたデータが最初に送信される請求項2記載の方法。前記主コンピュータシステムが第1の故障領域にあり、そして前記中間コンピュータシステムが第2の故障領域にある請求項1記載の方法。前記周期的に受信するステップが、前記中間コンピュータシステムで動作する第1のスレッドにより実行され、そして前記継続的に決定及び送信するステップが、前記中間コンピュータシステムで動作する第2のスレッドにより実行される請求項1記載の方法。前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップコンピュータシステムがバックアップ仮想計算機のホストを務める第2のサーバである請求項1記載の方法。前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項1記載の方法。前記継続的に決定するステップが、前記配列の前記エントリを横断して、現行のチェックポイント変数を前記配列の各エントリの前記チェックポイント数と比較するステップと、前記エントリの前記チェックポイント数が前記現行のチェックポイント変数に等しい場合は、エントリの前記中間コンピュータシステムに格納された前記対応するメモリページの前記コピーの更新されたデータを送信するステップと、前記配列の最後のエントリを分析した後に前記現行のチェックポイント変数を増やすステップと、前記配列の始まりに戻るステップと、を更に含む請求項7記載の方法。中間コンピュータシステムのプロセッサにより実行されるときに、主コンピュータシステムの更新された状態をバックアップコンピュータシステムに送信する命令を含むコンピュータ可読記憶媒体であって、前記バックアップコンピュータシステムは、前記中間コンピュータシステムにおいて、高帯域幅接続を通じて前記主コンピュータシステムからチェックポイント情報パケットを周期的に受信するステップであって、各チェックポイント情報パケットは、前に受信されたチェックポイント情報パケット以来変更された前記主コンピュータシステムのメモリページに対応する更新されたデータを含むステップと、前記中間コンピュータシステムに格納された前記主コンピュータシステムのメモリページの各コピーが、前記主コンピュータシステムによって最も長い間更新されていなくて、前記バックアップコンピュータシステムに送信されなかったメモリページのコピーであるかどうか継続的に決定するステップと、最も長い間更新されていないメモリページであると決定した各メモリページの各コピーの更新されたデータを前記低帯域幅接続を通じて前記バックアップコンピュータシステムに送信するステップと、を実行することによって、チェックポイントで前記中間コンピュータシステムにより受信される前記主コンピュータシステムの変更された状態のタイムリーな伝送をサポートしない低帯域幅接続を通じて前記中間コンピュータシステムにネットワーク化されるコンピュータ可読記憶媒体。中間コンピュータシステムの前記プロセッサが、前記主コンピュータシステムの故障通知を受信するステップと、前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップコンピュータシステムに送信するステップと、を更に実行する請求項9記載のコンピュータ可読記憶媒体。前記主コンピュータシステムによってごく最近変更された未送付のメモリページに対応する更新されたデータが最初に送信される請求項10記載のコンピュータ可読記憶媒体。前記主コンピュータシステムが第1の故障領域にあり、そして前記中間コンピュータシステムが第2の故障領域にある請求項9記載のコンピュータ可読記憶媒体。前記周期的に受信するステップが、前記中間コンピュータシステムで動作する第1のスレッドにより実行され、そして前記継続的に決定及び送信するステップが、前記中間コンピュータシステムで動作する第2のスレッドにより実行される請求項9記載のコンピュータ可読記憶媒体。前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップコンピュータシステムがバックアップ仮想計算機のホストを務める第2のサーバである請求項9記載のコンピュータ可読記憶媒体。前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項9記載のコンピュータ可読記憶媒体。前記継続的に決定するステップが、前記配列の前記エントリを横断して、現行のチェックポイント変数を前記配列の各エントリの前記チェックポイント数と比較するステップと、前記エントリの前記チェックポイント数が前記現行のチェックポイント変数に等しい場合は、エントリの前記中間コンピュータシステムに格納された前記対応するメモリページの前記コピーの更新されたデータを送信するステップと、前記配列の最後のエントリを分析した後に前記現行のチェックポイント変数を増やすステップと、前記配列の始まりに戻るステップと、を更に含む請求項15記載のコンピュータ可読記憶媒体。主コンピュータシステムの更新された状態をバックアップコンピュータシステムに送信するように構成されるコンピュータシステムであって、第1の故障領域にあり、そして前に送信されたチェックポイント情報パケット以来変更された該主コンピュータシステムのメモリページに対応する更新されたデータを含むチェックポイント情報パケットを送信するように構成される該主コンピュータシステムと、第2の故障領域にあり、そして高帯域幅接続を通じて前記主コンピュータシステムに接続している中間コンピュータシステムであって、前記送信されたチェックポイント情報パケットを受信して、該中間コンピュータシステムに格納された最も長い間変更されていないメモリページに対応する更新されたデータを低帯域幅接続を通じてバックアップコンピュータシステムに送信するように構成される中間コンピュータシステムと、を備えるコンピュータシステム。前記中間コンピュータシステムが、前記主コンピュータシステムの故障通知を受信して、前記中間コンピュータシステムに格納された各未送付のメモリページに対応する更新されたデータを前記低帯域幅接続を通じて前記バックアップコンピュータシステムに送信するように更に構成される請求項17記載のコンピュータシステム。前記主コンピュータシステムが主仮想計算機のホストを務めるサーバであり、そして前記バックアップコンピュータシステムがバックアップ仮想計算機のホストを務める第2のサーバである請求項18記載のコンピュータシステム。前記中間コンピュータシステムが前記主コンピュータシステムの各メモリページに対応するエントリの配列を維持し、前記配列の各エントリは、前記中間コンピュータシステムに格納された前記対応するメモリページのコピーへの参照及び前記コピーが前記中間コンピュータシステムにより受信されたチェックポイントを識別するチェックポイント数を含む請求項17記載のコンピュータシステム。0003VM耐故障性は、決定性再生、チェックポインティング、又は2つの混成を使用して設けることができて、それは2008年8月28日に出願された特許文献1に開示され、それの内容全体を本願明細書に引用したものとする。再生技術については、主VMの命令ストリーム例えば、主VMの命令ストリーム内の非決定性事象の基本的部分は、リアルタイムで例えば、主VMのハイパーバイザ層又は仮想計算機モニタ構成要素によって、に捕獲されて、同期方法で主VMの実行を再生するために、バックアップVM例えば、異なる故障領域におそらくあるに送信される。主VMが故障する場合は、バックアップVMは識別可能な時間損失なしで引き継ぐことができる。再生技術が速い回復時間を有する強力な耐故障性解決案を提供する一方、例えば、SMP対称的マルチプロセシングアーキテクチャを複数の仮想CPUでサポートする仮想計算機の場合のように、非決定性事象が命令ストリーム内で確認するためにより頻度が高いか、又はより困難になるとき、それはより実現性がない。0004再生技術とは対照的に、チェックポインティングベースの耐故障性技術は、SMPベースの仮想計算機を含む様々な仮想アーキテクチャをサポートするそれらの機能においてより柔軟性がある。仮想計算機システムにおいて、チェックポイントを生成して使用する技術は、特許文献2に開示されて、それの内容全体を本願明細書に引用したものとする。チェックポインティングの場合は、主VMは、前のチェックポイントから主VMの状態になされるいかなる変更も決定するために、実行の過程各々チェックポイントと呼ばれるこの種のスタン期間中に、周期的にスタンされる即ち、実行は一時的に停止する。一旦この種の変更が決定されると、それは、変更をその現行状態に併合することが可能であるバックアップVMに送信され、それによってチェックポイント時に主VMの正確な状態を反映する。主VMの故障の通知だけに応じて、バックアップVMは、主VMの格納された状態をそれ自体の実行状態にロードすることによって動作し始める。しかしながら、送信された状態のチェックポイント情報の潜在的に大きいサイズ例えば、数ギガバイト及びこの種の状態をバックアップVMに送信するために周期的チェックポイントで主VMをスタンする必要のため、スタン期間がネットワーク帯域幅限界によって長くならないように、バックアップVMは十分に高い帯域幅で主VMにネットワーク化されなければならない。この制約は、現在、チェックポイント情報を効果的に送信するために、主VMから地理的に遠く離れている位置に、又はバックアップVMが不十分な帯域幅性能を有するネットワーク接続を使用して主VMに接続している方法でバックアップVMの位置を決める性能を制限する。0005本発明の1つ以上の実施形態によって、チェックポインティング情報を受信するバックアップVMが主VMから遠隔に位置することが可能である。この種の実施形態では、効果的な方法でチェックポイント情報のバックアップVMへの伝送を管理するために、主要なVMとバックアップVMの間に中間コンピュータシステムを位置させる。中間コンピュータシステムは、高帯域幅接続を通じて主VMにネットワーク化されるが、より低い帯域幅接続を通じてバックアップVMにネットワーク化される。各チェックポイントの間、中間コンピュータシステムは、前のチェックポイント時から変更された主要なVMの状態のメモリページに対応する主VMから更新されたデータを受信して、格納する。中間コンピュータシステムは、主VMによって最も長い間変更されていないメモリページに対応する更新されたデータを継続的に識別して、この種の更新されたデータをバックアップVMに低帯域幅接続を通じて送信する。このようにして、この種のメモリページは将来再び更新される可能性が大きいので、中間コンピュータシステムは、低帯域幅接続の帯域幅容量を節約して、より最近変更されたメモリページに対応する更新されたデータを抑制する。一実施形態において、中間コンピュータシステムの故障が主VMの故障と相関しないように、中間コンピュータシステムは主VMの故障領域とは別の故障領域にある。0006本発明の実施形態は、中間コンピュータシステムによって主コンピュータシステムの更新された状態をバックアップコンピュータシステムに送信する方法を提供し、そこにおいて、バックアップコンピュータシステムは、チェックポイントで中間コンピュータシステムにより受信された主コンピュータシステムの変更された状態のタイムリーな伝送をサポートしない低帯域幅接続を通じて中間コンピュータシステムにネットワーク化される。この方法は、中間コンピュータシステムにおいて高帯域幅接続を通じて主コンピュータシステムからチェックポイント情報パケットを周期的に受信するステップと、中間コンピュータシステムに格納された主コンピュータシステムのメモリページの各コピーが、主コンピュータシステムによって最も長い間更新されていなくて、バックアップコンピュータシステムに送信されなかったメモリページのコピーであるかどうか継続的に決定するステップと、最も長い間更新されていないメモリページであると決定した各メモリページの各コピーの更新されたデータを低帯域幅接続を通じてバックアップコンピュータシステムに送信するステップとを含む。この方法では、中間コンピュータシステムで受信される各チェックポイント情報パケットは、前に受信されたチェックポイント情報パケット以来変更された主コンピュータシステムのメモリページに対応する更新されたデータを含む。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を位置させる柔軟性を提供する。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のプロセッサ又はマザーボードの比較的より信頼性が高い部分にセットされることができる。0013図2は、中間コンピュータシステムを使用して主要な仮想計算機の更新された状態をバックアップ仮想計算機に送信するためのフロー図を示す。一実施形態において、主VM100のホストを務める主サーバ105は、チェックポインティングモジュール又は他のチェックポインティング機能をそのハイパーバイザに含む。更に以下に詳述されるように、この種のチェックポインティングモジュールは、チェックポイント情報パケットを高帯域幅接続120を通じて各チェックポイントの中間システム115へ送信する。各チェックポイント情報パケットは、前に送信されたチェックポイント情報パケットからの主VM100のメモリ及びエミュレートされた装置、特定の実施形態において、の状態の変化を反映する情報を含む。一実施形態において、主サーバ105のハイパーバイザによるチェックポイント情報パケットの伝送は、例えば、約1秒当たり50~100回の割合で行われる。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により生成されるありとあらゆるアウトバウンドネットワークパケットを遅延させて、キューに入れる。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の状態に基づくことを確実にする。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の制限された帯域幅性能を保存する。0017ステップ234において、中間システム115が主VM100の故障を検出する又はさもなければそれについて通知される場合は、ステップ236で、中間システム115はバックアップサーバ135に主VM100の故障を通知して、主VM100のその格納されたスナップショットのいかなる未送付のメモリページもバックアップサーバ135に送信する。ステップ238において、バックアップサーバ135は、主VM100の故障の通知及びメモリページを受信して、ステップ240において、受信したメモリページを主VM100のためのその復元された状態に組み込んで、バックアップVM130として主VM100の実行を再開する。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時期又は年代記号として表わされるを含む。0019受信スレッド306と呼ばれるスレッドは、主サーバ105から例えば、ステップ214の各次のチェックポイント情報パケットからと同様にステップ202の第1のスナップショットからの主VM100のメモリページの受信を管理する。ステップ308において、高帯域幅接続120経由で主サーバ105から受信されるメモリページごとに、受信スレッド306は中間システム115のメモリにメモリページを格納する。ステップ310において、受信スレッド306は、格納されたメモリページの記憶アドレスを受信したメモリページに対応するデータ構造300のエントリの参照フィールド302へ挿入する。ステップ312において、受信スレッド306は現行のチェックポイント数でエントリのチェックポイント数フィールド304を更新する。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の次のエントリへ移動する。0021ステップ330において、送信スレッド314が主VM100の故障の通知を受信する場合は、ステップ332において、送信スレッド314はデータ構造300を横断して、aチェックポイント数304がチェックポイント変数316より大きい、又はbチェックポイント数304がチェックポイント変数316に等しくて、インデックスが現行の配列インデックス318以上である各エントリで参照されるメモリページ即ち、メモリページがバックアップサーバ135にまだ送信されなかったことを示すを送信する。一実施形態において、ステップ330において主VM100の故障の通知を受信すると即座に、送信スレッド314は、例えば、より新しいメモリページがよりコールドなメモリページページよりバックアップVM130の次の実行の間にアクセスされそうであるという推定の下で、バックアップVM130がスナップショットのすべての未送付のメモリページを受信する前に実行を始めることを可能にする努力において、それらのチェックポイント数フィールド304で最も高い値を有するそれらのメモリページを送信することによって、より新しいメモリページを最初に送信し始める。0022送信スレッド314がデータ構造を横断して、受信スレッド308がメモリページを高帯域接続120を通じて各チェックポイントで受信して更新する速度より著しく遅いより低い帯域幅接続140による速度でコールドメモリページをバックアップサーバ135に送信できると認識しなければならない。このように、チェックポイント変数316の値は、受信スレッド306により受信されるチェックポイント情報パケットの実際の現行のチェックポイント数より小さいままである。より新しいメモリページを保留して、コールドメモリページを送信することによって、中間システム115は、このように、低帯域幅接続140の帯域幅容量が、近い将来に更新されたデータによって上書きされるおそれがあるメモリページの伝送に浪費される即ち、受信されるのより少ないメモリページが中間システム115により送信されるという可能性を減らす。0023図3で説明したデータ構造300及び技術は単に例示であり、そして様々な代替のデータ構造及び技術が、メモリページがコールドであるかどうか決定する即ち、どのようにコールドが規定また評価できるかについての異なる概念によってために利用できると認識しなければならない。例えば、図3の代替の実施形態は、エントリに対応するメモリページがバックアップVM130にすでに送信されたかどうかを示すデータ構造300の各エントリにおける伝送ビットを含むことができる。別の代替の実施形態は、主VMのスナップショットのメモリページによって指標を付けられるエントリの配列を利用しデータ構造300と同様、そこにおいて配列の各エントリは、格納されたメモリページへの参照参照フィールド302と同様及びカウンタ値を含む。このような実施形態では、受信チェックポイント情報パケットが対応する更新されたメモリページを含むたびに、受信スレッドはエントリのカウンタ値を増やす。同時に、送信スレッドは配列を絶えず繰り返して、予め指定された小さいカウンタ値を有するエントリに対応するメモリページを送信する。この種の実施形態は、コールドを規定するために、最も長い間変更されていないよりはむしろ変更頻度が最も低いメモリページの概念を利用する。更に別の代替の実施形態は、この種のメモリページが更新されたチェックポイントに対応するメモリページごとにチェックポイント数のリストを維持するデータ構造を利用する。この種のデータ構造は、さまざまな方法で、コールドメモリページ、例えば、チェックポイント数の最も小さいリストを有するメモリページ、又はチェックポイントの連続数に対して不変のままだった例えば、変更頻度が最も低い、又は最も長い間変更されていない、その他メモリページを特定するか又は規定するために柔軟性を提供する。0024さまざまな変更態様及び改変が、添付の請求項に記載したように本発明のより広い精神と範囲を逸脱せずに、本願明細書に記載されている特定の実施形態になされることができると認識しなければならない。例えば、前述の説明が、主サーバ105及び中間システム115が完全なメモリページを送信するこの種のメモリページが変更された場合実施形態に集中したが、代替の実施形態が、それらの伝送の前に主サーバ105及び中間システム115のどちらか又は両方でメモリページに違う技術又は他の圧縮技術を適用できると認識しなければならない。この種の代替の実施形態は、このように完全なメモリページ自体よりもむしろメモリページに対応する更新されたデータだけを送信できる。同様に、前述の実施形態が単一の中間システム115について述べたけれども、実施形態が、異なる故障領域において、可能な限りの複数の中間システムを取り入れることができて、その結果、すべての中間システムの故障の確率はごくわずかであると認識しなければならない。加えて、前述の実施形態が、主及びバックアップVMを使用して概説されたが、非仮想化システムを含む、他の主及びバックアップコンピュータシステムは、本願明細書における教示と整合して用いることができる。0025本願明細書において記載されているさまざまな実施形態は、コンピュータシステムに格納されるデータを含むさまざまなコンピュータ実行動作を使用できる。例えば、これらの動作は通常、必然的にではなく、物理的な量の物理的操作を必要とすることがあり、これらの量は電気又は磁気信号という形をとることができて、それら、又はそれらの表現は格納され、転送され、結合され、比較されるか、又は操作されうる。更に、この種の操作は、しばしば、生成、識別、決定、又は比較などの用語で呼ばれる。本発明の1つ以上の実施形態の一部を形成する本願明細書に記載したいかなる動作も、有用な機械動作でありえる。加えて、本発明の1つ以上の実施形態は、これらの動作を実行する装置又は機器にも関する。機器は特定の必要な目的のために特別に構成されることができるか、あるいはそれはコンピュータに格納されたコンピュータプログラムによって選択的に作動するか又は構成される多目的コンピュータでもよい。特に、さまざまな多目的機械が本願明細書の教示に従って書かれたコンピュータプログラムを用いて使用できるか、又は必要な動作を実行するためにより専門の機器を構成することがより便利な場合がある。0026本願明細書に記載されているさまざまな実施形態は、携帯用装置、マイクロプロセッサシステム、マイクロプロセッサベースであるかプログラム可能な家電、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成を用いて実施できる。0027本発明の1つ以上の実施形態は、1つ以上のコンピュータプログラムとして、又は1つ以上の計算機可読媒体で実現される1つ以上のコンピュータプログラムモジュールとして実施されることができる。用語計算機可読媒体は、コンピュータシステムにその後で入力されることができるデータを格納できるいかなるデータ記憶装置をも指し、計算機可読媒体は、コンピュータプログラムがコンピュータによって読み込まれることを可能にする方法でそれを実現するために、いかなる既存又はその後開発された技術に基づいてもよい。計算機可読媒体の例は、ハードドライブ、ネットワーク接続ストレージNAS、読出し専用メモリ、ランダムアクセスメモリ例えば、フラッシュメモリ装置、CDコンパクトディスクCD―ROM、CD―R、又はCD―RW、DVDデジタル多用途ディスク、磁気テープ、ならびに他の光学及び非光学データ記憶装置を含む。計算機可読コードが分散方式で格納されて、実行されるように、計算機可読媒体はネットワーク結合コンピュータシステムに分散されることもできる。0028本発明の1つ以上の実施形態が明確に理解するためにいくぶん詳細に説明されたけれども、特定の改変と変更態様が請求項の範囲内でなされうることは明らかである。したがって、記載の実施形態は例示的であって、限定的ではないと考えるべきであり、そして請求項の範囲は本願明細書に示された詳細に限られず、請求項の範囲及び相当の中で変更できる。請求項において、明確に請求項において述べられない限り、要素及び/又はステップは動作のいかなる特定の順序も意味しない。0029複数の例は、単一の例として本願明細書に記載されている構成要素、動作、又は構造のために提供されることができる。最後に、さまざまな構成要素、動作、及びデータストアの間の境界はいくぶん任意であり、そして特定の動作は特定の例証を示す構成との関連で例示される。機能の他の割当ては構想されて、本発明の範囲に入ることができる。一般に、例示的な構成で別々の構成要素として提示される構造及び機能は、複合された構造又は構成要素として実現できる。同様に、単一の構成要素として提示される構造及び機能は別々の構成要素として実現できる。これらの、そしてまた他の変形、変更、追加、及び改良は添付の請求の範囲内に入ることができる。