(57)【要約】【課題】  仮想計算機管理のための方法およびこれをサポートするシステムを提供する。【解決手段】  チェックポイント・プロセスを使用して１次仮想計算機（４０２）から２次仮想計算機（４０６）へのデータの転送を制御する、ミラーリングされた仮想計算機環境では、内部ネットワーク（４００）により、１次仮想計算機はチェックポイントの発生を待つ必要なしに他の仮想計算機（４０４）とネットワーク・パケットを交換することができる。特定の仮想計算機のネットワーク・トラフィックを見ることができるすべての１次仮想計算機が、チェックポイントが完了するまで、外部環境に影響を及ぼすことができないことを保証するためのメカニズムが提供される。これは、すべての１次仮想計算機間のチェックポイントを同期させ、１つの仮想計算機が故障した場合に、すべての仮想計算機がそのそれぞれの２次仮想計算機にフェイルオーバすることを保証することによって達成される。【選択図】  図３
2014503904.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機のクラスタを操作するための方法であって、前記クラスタが２つまたはそれ以上の１次仮想計算機を含み、それぞれの仮想計算機が外部データ・バスにリンクされ、それぞれの１次仮想計算機がデータを生成して前記外部バス上でこれを送信し、前記外部バスからデータを受信して処理するように動作可能であり、
ａ．前記クラスタのそれぞれの１次仮想計算機について、フェイルオーバが発生した場合にその１次仮想計算機のタスクを引き受けるようにそれぞれの２次仮想計算機を維持するためにチェックポイント手順を使用することと、
ｂ．フェイルオーバ時に、それぞれの前記２次仮想計算機により、フェイルオーバ・イベントの直前のチェックポイントからそのそれぞれの１次仮想計算機のタスクを引き受けさせること
を含み、
前記クラスタのそれぞれの１次仮想計算機が、内部バスを介してすべてのまたはそれぞれの他の１次仮想計算機からデータを受信し、受信時にこれを処理するように接続され、前記方法が、
ｃ．前記クラスタのすべての１次仮想計算機に関するチェックポイントを同期させることと、
ｄ．前記クラスタのそれぞれの１次仮想計算機について、次のチェックポイントが発生するまで、受信した内部バス・データを基礎として生成したデータを外部バスにリリースするのを防止することと、
ｅ．前記クラスタの１つの１次仮想計算機のフェイルオーバ時に、前記クラスタのすべての１次仮想計算機により、そのそれぞれの２次仮想計算機にフェイルオーバさせること
をさらに含む、方法。
【請求項２】
前記クラスタの少なくとも１つの１次仮想計算機について、前記クラスタ内のフェイルオーバの発生時に、前記少なくとも１つの１次仮想計算機が前のチェックポイント以降に内部バス・データを受信したかどうかを判断し、受信していない場合、前記クラスタの他の１次仮想計算機がフェイルオーバするときに、前記少なくとも１つの１次仮想計算機がそのそれぞれの２次仮想計算機にフェイルオーバするのを防止する、請求項１記載の方法。
【請求項３】
前記クラスタが少なくとも１つの追加の１次仮想計算機をさらに含み、前記方法が、前記クラスタの他の１次仮想計算機がフェイルオーバするときに前記少なくとも１つの追加の１次計算機の動作を停止することをさらに含む、請求項１または請求項２記載の方法。
【請求項４】
前記クラスタのすべてのまたはそれぞれの前記追加の１次仮想計算機が、前記内部バスを介してすべてのまたはそれぞれの他の１次仮想計算機からデータを受信し、受信時にこれを処理するように接続され、前記方法が、
前記クラスタのすべてのまたはそれぞれの追加の１次仮想計算機について、次のチェックポイントが発生するまで、受信した内部バス・データを基礎として生成したデータを外部バスにリリースするのを防止すること
をさらに含む、請求項３記載の方法。
【請求項５】
フェイルオーバに続いて、それぞれの２次仮想計算機を新しいクラスタ内の１次仮想計算機として再指定し、新しいそれぞれの２次仮想計算機を指定することをさらに含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
１つまたは複数のデータ記憶装置と結合された少なくとも１つのプロセッサ・デバイスを有するコンピュータ・システムを含む装置であって、前記システムが仮想計算機のクラスタを操作するように構成され、前記クラスタが２つまたはそれ以上の１次仮想計算機を含み、それぞれの仮想計算機が外部データ・バスにリンクされ、
ａ．それぞれの１次仮想計算機がデータを生成して前記外部バス上でこれを送信し、前記外部バスからデータを受信して処理するように動作可能であり、
ｂ．前記クラスタのそれぞれの１次仮想計算機について、前記システムが、チェックポイント手順により、フェイルオーバが発生した場合にその１次仮想計算機のタスクを引き受けるようにそれぞれの２次仮想計算機を維持し、
ｃ．フェイルオーバの検出時に、前記システムがそのそれぞれの２次仮想計算機にそれぞれの１次仮想計算機のタスクを転送し、それぞれの２次仮想計算機が、フェイルオーバ・イベントの直前のチェックポイントにおいてそのそれぞれの１次仮想計算機の状態をミラーリングし、
ｄ．前記システムが、前記クラスタのすべての１次仮想計算機に関するチェックポイントを同期するように制御し、
ｅ．前記システムが内部バス・メカニズムをさらに含み、前記クラスタのそれぞれの１次仮想計算機が、前記内部バスを介してすべてのまたはそれぞれの他の１次仮想計算機からデータを受信し、受信時にこれを処理するように接続され、
ｆ．前記１つまたは複数の記憶装置を使用して、前記クラスタのそれぞれの１次仮想計算機が、受信した内部バス・データを基礎として生成した外部バス・データをバッファリングし、次のチェックポイントが発生したときにこれを外部バスにリリースし、
ｇ．前記クラスタの１つの１次仮想計算機のフェイルオーバ時に、前記システムが、そのそれぞれの２次仮想計算機にフェイルオーバするよう、前記クラスタのすべての１次仮想計算機に指示する、装置。
【請求項７】
それぞれの１次および２次仮想計算機が、それぞれのハイパーバイザにより前記システムの残りの部分にリンクされる、請求項６記載の装置。
【請求項８】
前記クラスタのすべての１次仮想計算機が単一のプロセッサ・デバイスによってホストとして処理され、単一のハイパーバイザによりリンクされる、請求項７記載の装置。
【請求項９】
前記クラスタの１次仮想計算機が２つまたはそれ以上のプロセッサ・デバイスによってホストとして処理され、それぞれのハイパーバイザが内部バス・データの交換のために接続される、請求項７記載の装置。
【請求項１０】
前記クラスタの少なくとも１つの１次仮想計算機について、前記クラスタ内のフェイルオーバの発生時に、前記システムが、前記少なくとも１つの１次仮想計算機が前のチェックポイント以降に内部バス・データを受信したかどうかを判断し、受信していない場合、前記クラスタの他の１次仮想計算機がフェイルオーバするときに、前記少なくとも１つの１次仮想計算機がそのそれぞれの２次仮想計算機にフェイルオーバするのを前記システムにより防止される、請求項６ないし９のいずれかに記載の装置。
【請求項１１】
前記クラスタが、前記クラスタの他の１次仮想計算機がフェイルオーバするときにその動作が前記システムによって停止される、少なくとも１つの追加の１次仮想計算機をさらに含む、請求項６ないし１０のいずれかに記載の装置。
【請求項１２】
前記クラスタのすべてのまたはそれぞれの前記追加の１次仮想計算機が、前記内部バスを介してすべてのまたはそれぞれの他の１次仮想計算機からデータを受信し、受信時にこれを処理するように接続され、
前記１つまたは複数の記憶装置を使用して、前記クラスタのすべてのまたはそれぞれの前記追加の１次仮想計算機が、受信した内部バス・データを基礎として生成した外部バス・データをバッファリングし、次のチェックポイントが発生したときにこれを外部バスにリリースする、請求項１１記載の装置。
【請求項１３】
コンピュータ可読媒体上に保管され、デジタル・コンピュータの内部メモリにロード可能であり、コンピュータ上で実行されるときに、請求項１ないし６のいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【請求項１４】
クライアント・コンピュータにおいて第１のコンピュータ・リソースを作成するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
処理回路によって読み取り可能であり、請求項１ないし６のいずれかに記載の方法を実行するための方法を実行するために前記処理回路による実行のための命令を保管するコンピュータ可読記憶媒体
を含む、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システム上で実行される仮想計算機（virtualmachine）の管理のための方法に関し、特に、障害が発生しているかまたは故障した仮想計算機から動作を引き継ぐためにバックアップまたは交換用仮想計算機が使用可能であるフォールト・トレラント・システムに関する。さらに、本発明は、このような方法を実現するためのソフトウェア・ユーティリティに関し、このような方法を実現するために構成されたコンピュータ・システムにも関する。
【背景技術】
【０００２】
コンピュータ・システムでは、仮想計算機の使用がますます一般的になり、個々のプログラムまたはプロセスからオペレーティング・システム全体まで何でも処理するために個々の仮想計算機が提供されている。個々のプロセッサは１つまたは複数のこのような仮想計算機をホストとして処理することができ、仮想計算機をサポートするプロセッサ・ソフトウェア層は仮想計算機モニターまたはハイパーバイザと呼ばれている。複数の仮想計算機が互いに切り離されていることは仮想計算機を使用する際の特定の利点であるが、多くの状況で仮想計算機間の相互通信が必要であることも事実である。
【０００３】
フォールト・トレラント・システム（典型的に、サーバ・アーキテクチャまたは警報システムなどの重要性の高いシステム）では、あるコンポーネントの故障時に、交換品に切り替えて最小限の中断で動作を続行できるようにする、バックアップの備えがなされている。複数の仮想計算機からなるシステムでは、バックアップの備えは、場合によっては、障害が発生した場合にその内部で交換用仮想計算機をインスタンス化できる、接続されているが物理的に分離している計算機上の追加の処理能力を含む。認識されるように、遅延を最小限にするために、交換用仮想計算機は、可能な限り迅速に障害が発生している計算機の動作に着手できなければならず、したがって、障害が発生している計算機がそのプログラムまたはプロセス内のどこに達していたかを認識して、そのポイントから動作を再開できなければならない。１つのオプションは第１の計算機と並行して交換用計算機を実行することであり、交換用計算機は第１の計算機と同じ入力データを受信し、その出力が抑制されて、第１の計算機の正確なミラーになるようになっているが、この構成は交換用計算機の動作を維持するために処理能力が重複するという点で費用がかかる。米国特許出願第２００８／０１８９４６８号（Ｓｃｈｍｉｄｔ他）および米国特許第７２１３２４６号（ｖａｎ  Ｒｉｅｔｓｃｈｏｔｅ他）には、代替戦略を使用する複数仮想計算機のシステムが記載されている。動作時に、所与の仮想計算機について、第１の計算機の故障時に交換用仮想計算機の作成を可能にするために、その計算機の記述と現在の計算機の状態データが定期的に収集されて保管される。米国特許出願第２００８／０１５５２０８号（Ｈｉｌｔｇｅｎ他）には、同様のシステムが記載され、収集した状態データの処理に関するセキュリティの側面が論じられている。このようなシステムは、並列仮想計算機を実行するより処理オーバヘッドが低くなるが、動作を引き継ぐ前に交換用仮想計算機をインスタンス化することがまず必要になるので、障害が発生した場合の移行が遅くなる。
【０００４】
仮想計算機ミラーは、障害が発生した場合にほとんど即座に第２の計算機上で再始動できるように仮想計算機を実行する方法である。状態データは１次仮想計算機と２次計算機との間で頻繁に交換される。これは、１次仮想計算機の状態が定期的に収集されて２次計算機に転送される、１次仮想計算機のチェックポインティングという技法によって行われる。チェックポインティング仮想計算機システムの一例は米国特許出願第２０１０／０１０７１５８号（Ｃｈｅｎ他）に記載されている。障害が発生した場合、２次仮想計算機は故障前の最後のチェックポイントにおける１次計算機のミラーになり、そのチェックポイントから動作を引き継ぐことができる。認識されるように、チェックポイント間の間隔が短いほど、２次仮想計算機の状態が１次計算機の状態に近くなる。しかし、チェックポイント動作に対する処理オーバヘッドが発生するので、チェックポインティングのオーバヘッドと頻度との間でバランスを取らなければならない。チェックポインティング・システムに関するもう１つの問題は、障害イベントの両側で１次仮想計算機とそのそれぞれの２次計算機によって発生する外部ネットワーク・トラフィックの重複を回避するために、次のチェックポイントを通過するまで１次仮想計算機が発生した外部ネットワーク・データ・パケットをバッファリングしなければならないことである。このバッファリング要件は、特に比較的長いチェックポイント間隔を使用する場合に、動作に遅延をもたらすものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願第２００８／０１８９４６８号
【特許文献２】米国特許第７２１３２４６号
【特許文献３】米国特許出願第２００８／０１５５２０８号
【特許文献４】米国特許出願第２０１０／０１０７１５８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、当技術分野では前述の問題に対処する必要がある。
【課題を解決するための手段】
【０００７】
本発明の第１の態様により、仮想計算機のクラスタを操作するための方法が提供され、前記クラスタが２つまたはそれ以上の１次仮想計算機を含み、それぞれの仮想計算機が外部データ・バスにリンクされ、それぞれの１次仮想計算機がデータを生成して前記外部バス上でこれを送信し、前記外部バスからデータを受信して処理するように動作可能であり、
ａ）前記クラスタのそれぞれの１次仮想計算機について、フェイルオーバが発生した場合にその１次仮想計算機のタスクを引き受けるようにそれぞれの２次仮想計算機を維持するためにチェックポイント手順を使用することと、
ｂ）フェイルオーバ時に、それぞれの前記２次仮想計算機により、フェイルオーバ・イベントの直前のチェックポイントからそのそれぞれの１次仮想計算機のタスクを引き受けさせること
を含み、
前記クラスタのそれぞれの１次仮想計算機が、内部バスを介してすべてのまたはそれぞれの他の１次仮想計算機からデータを受信し、受信時にこれを処理するように接続され、この方法は、
ｃ）前記クラスタのすべての１次仮想計算機に関するチェックポイントを同期させることと、
ｄ）前記クラスタのそれぞれの１次仮想計算機について、次のチェックポイントが発生するまで、受信した内部バス・データを基礎として生成したデータを外部バスにリリースするのを防止することと、
ｅ）前記クラスタの１つの１次仮想計算機のフェイルオーバ時に、前記クラスタのすべての１次仮想計算機により、そのそれぞれの２次仮想計算機にフェイルオーバさせること
をさらに含む。
【０００８】
内部バスの使用により、仮想計算機は、チェックポイントの通過を待つ必要なしに、クラスタの他の仮想計算機からデータを受信して処理することができる。チェックポイントを同期させ、すべての１次仮想計算機を一緒にフェイルオーバすることにより、スプリアス外部バス・トラフィックが発生する可能性が回避される。
【０００９】
このような方法では、前記クラスタの少なくとも１つの１次仮想計算機について、クラスタ内のフェイルオーバの発生時に、前記少なくとも１つの１次仮想計算機が前のチェックポイント以降に内部バス・データを受信していないと判断された場合、クラスタの他の１次仮想計算機がフェイルオーバするときに、前記少なくとも１つの１次仮想計算機がそのそれぞれの２次仮想計算機にフェイルオーバするのを防止することができる。換言すれば、前のチェックポイント以降に内部バス・データを受信した１次仮想計算機のみがフェイルオーバされる。
【００１０】
クラスタは少なくとも１つの追加の１次仮想計算機をさらに含むことができ、この方法は、クラスタの他の１次仮想計算機がフェイルオーバするときにその追加の１次計算機の動作を停止することをさらに含み、これによりそれぞれの２次計算機を備えていない１次仮想計算機に対する対処が可能になる。このような構成では、前記クラスタのすべてのまたはそれぞれのこのような追加の１次仮想計算機は、前記内部バスを介してすべてのまたはそれぞれの他の１次仮想計算機からデータを受信し、受信時にこれを処理するように接続することができ、この方法は、前記クラスタのすべてのまたはそれぞれの追加の１次仮想計算機について、次のチェックポイントが発生するまで、受信した内部バス・データを基礎として生成したデータを外部バスにリリースするのを防止することをさらに含む。
【００１１】
フェイルオーバに続いて、それぞれの２次仮想計算機を新しいクラスタ内の１次仮想計算機として再指定することができ、新しいそれぞれの２次仮想計算機を指定することができる。
【００１２】
また、本発明により、１つまたは複数のデータ記憶装置と結合された少なくとも１つのプロセッサ・デバイスを有するコンピュータ・システムを含む装置が提供され、前記システムが仮想計算機のクラスタを操作するように構成され、前記クラスタが２つまたはそれ以上の１次仮想計算機を含み、それぞれの仮想計算機が外部データ・バスにリンクされ、
１．それぞれの１次仮想計算機がデータを生成して前記外部バス上でこれを送信し、前記外部バスからデータを受信して処理するように動作可能であり、
２．前記クラスタのそれぞれの１次仮想計算機について、前記システムが、チェックポイント手順により、フェイルオーバが発生した場合にその１次仮想計算機のタスクを引き受けるようにそれぞれの２次仮想計算機を維持し、
３．フェイルオーバの検出時に、前記システムがそのそれぞれの２次仮想計算機にそれぞれの１次仮想計算機のタスクを転送し、それぞれの２次仮想計算機が、フェイルオーバ・イベントの直前のチェックポイントにおいてそのそれぞれの１次仮想計算機の状態をミラーリングし、
４．このシステムが、前記クラスタのすべての１次仮想計算機に関するチェックポイントを同期するように制御し、
５．このシステムが内部バス・メカニズムをさらに含み、前記クラスタのそれぞれの１次仮想計算機が、前記内部バスを介してすべてのまたはそれぞれの他の１次仮想計算機からデータを受信し、受信時にこれを処理するように接続され、
６．前記１つまたは複数の記憶装置を使用して、前記クラスタのそれぞれの１次仮想計算機が、受信した内部バス・データを基礎として生成した外部バス・データをバッファリングし、次のチェックポイントが発生したときにこれを外部バスにリリースし、
７．前記クラスタの１つの１次仮想計算機のフェイルオーバ時に、前記システムが、そのそれぞれの２次仮想計算機にフェイルオーバするよう、前記クラスタのすべての１次仮想計算機に指示する。
【００１３】
このような装置では、それぞれの１次および２次仮想計算機は、それぞれのハイパーバイザによりシステムの残りの部分に適切にリンクされる。一実施形態では、前記クラスタのすべての１次仮想計算機は単一のプロセッサ・デバイスによってホストとして処理され、単一のハイパーバイザによりリンクすることができる。代わって、前記クラスタの１次仮想計算機は２つまたはそれ以上のプロセッサ・デバイスによってホストとして処理することができ、それぞれのハイパーバイザは内部バス・データの交換のために接続される。
【００１４】
上記のように、クラスタの少なくとも１つの１次仮想計算機について、クラスタ内のフェイルオーバの発生時に、前記システムは、前記少なくとも１つの１次仮想計算機が前のチェックポイント以降に内部バス・データを受信したかどうかを判断することができ、受信していない場合、クラスタの他の１次仮想計算機がフェイルオーバするときに、前記少なくとも１つの１次仮想計算機がそのそれぞれの２次仮想計算機にフェイルオーバするのを前記システムにより防止することができる。
【００１５】
クラスタは、クラスタの他の１次仮想計算機がフェイルオーバするときにその動作がシステムによって停止される、少なくとも１つの追加の１次仮想計算機をさらに含むことができる。前記クラスタのすべてのまたはそれぞれの前記追加の１次仮想計算機は、前記内部バスを介してすべてのまたはそれぞれの他の１次仮想計算機からデータを受信し、受信時にこれを処理するように接続することができ、前記１つまたは複数の記憶装置を使用して、受信した内部バス・データを基礎としてすべてのまたはそれぞれの追加の１次仮想計算機によって生成した外部バス・データをバッファリングし、次のチェックポイントが発生したときにこれを外部バスにリリースするように構成することができる。
【００１６】
他の態様から見ると、本発明は、クライアント・コンピュータにおいて第１のコンピュータ・リソースを作成するためのコンピュータ・プログラム製品（computer program product）を提供し、このコンピュータ・プログラム製品は、処理回路によって読み取り可能であり、本発明の諸ステップを実行するための方法を実行するために処理回路による実行のための命令を保管するコンピュータ可読記憶媒体を含む。
【００１７】
他の態様から見ると、本発明は、コンピュータ可読媒体上に保管され、デジタル・コンピュータの内部メモリにロード可能であり、コンピュータ上で実行されるときに、本発明の諸ステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【００１８】
有利なことに、本発明は、ネットワーク通信の性能を改善し、特に、チェックポインティングを使用してシステム上で実行している仮想計算機間の通信に関する待ち時間を短縮するための方法を提供する。
【００１９】
本発明の概要では本発明の必要な特徴をすべて列挙しているわけではなく、このような特徴の一部の組み合わせも本発明を包含することができる。
【００２０】
次に、以下の図に例示されているように、好ましい諸実施形態に関連して、例としてのみ、本発明について説明する。
【図面の簡単な説明】
【００２１】
【図１】本発明の好ましい一実施形態を実現可能である、従来技術によるコンピュータのコンポーネントを示すブロック図である。
【図２】本発明の好ましい一実施形態により、それぞれが複数の仮想計算機をホストとして処理する、リンクされた一対のプロセッサ・デバイスを表す図である。
【図３】本発明の好ましい一実施形態により、チェックポインティング・プロセス中のデータ転送を示す図である。
【図４】本発明の好ましい一実施形態により、チェックポインティング・プロセスによる外部ネットワーク・データの据え置き出力を示す図である。
【図５】本発明の好ましい一実施形態により、チェックポイント間隔の満了以前の内部ネットワークの備えおよびデータの転送を示す図である。
【発明を実施するための形態】
【００２２】
図１は、本発明を実施するのに適したコンピュータ・システムのコンポーネントを概略的に表している。中央演算処理装置（ＣＰＵ）のプロセッサ１０は、アドレスおよびデータ・バス１６によりランダム・アクセス・メモリＲＡＭ１２および読み取り専用メモリＲＯＭ１４に結合される。また、ＣＰＵ１０の機能を補い、浮動小数点演算、グラフィクス処理、信号処理、および暗号化などのプロセスを処理するコプロセッサ・デバイス４２もアドレスおよびデータ・バス１６を介してＣＰＵ１０に接続される。これらの内部ハードウェア装置１０、１２、１４、４２のそれぞれは、バス１６への接続をサポートする、それぞれのインターフェース（図示せず）を含む。これらのインターフェースは、従来の形式であり、より詳細に説明する必要はない。
【００２３】
また、いくつかの外部ハードウェア装置のインターフェース段階（全般的に１８で示されている）もバス１６を介してＣＰＵ１０に接続される。第１のインターフェース段階２０は、マウス２２あるいはキーボード２４またはその両方などの外部入出力装置の接続をサポートする。第２のインターフェース段階２６は、ディスプレイ画面２８あるいはヘッドホンまたはスピーカなどのオーディオ出力装置３０などの外部出力装置の接続をサポートする。第３のインターフェース段階３２は、コンピュータ可読媒体の形の外部データ記憶装置の接続をサポートし、このような外部記憶装置は、図示の通り、取り外し可能な光または磁気ディスク３４によって提供する（適切に構成されたディスク・リーダ３６によってアクセスする）ことができる。代わってまたはさらに、外部記憶装置は、拡張ドライブまたはメモリ・スティックなどのソリッドステート・メモリ・デバイスの形にすることができる。第４のインターフェース段階３８は、たとえば、ローカル・エリア・ネットワークＬＡＮによるかまたはインターネットを介して、有線または無線ネットワーク４０によるこのシステムとリモート・デバイスまたはシステムとの接続をサポートする。
【００２４】
図２は、ネットワーク１０４を介して接続された第１の物理計算機（プロセッサ・デバイス）１００および第２の物理計算機１０２を示している。計算機１００、１０２のそれぞれは、それぞれのハイパーバイザ１０６、１０８を提供する。第１のハイパーバイザ１０６は、２つの１次仮想計算機（ＶＭＰ）１１０、１１２および１つの２次仮想計算機（ＶＭＳ）１１４をホストとして処理する。第２のハイパーバイザ１０８は、１つの１次仮想計算機１１６および２つの２次仮想計算機１１８、１２０をホストとして処理する。３つの１次仮想計算機１１０、１１２、１２０は、以下により詳細に述べるように、データの交換のためのクラスタを形成し、それぞれがそれぞれ１つの２次仮想計算機１１６、１１８、１１４に関連付けられる。仮想計算機ミラーは、障害が発生した場合にほとんど即座に第２の計算機上で再始動できるように仮想計算機（ＶＭ）を実行する方法である。図示の例では、１次仮想計算機１１２が故障した場合、その動作は２次仮想計算機１１８上で再始動される。
【００２５】
状態データは、１次仮想計算機およびそのそれぞれの２次計算機から定期的に渡される。これは、１次計算機の状態を収集し、それを２次計算機に転送することを含む、１次仮想計算機のチェックポインティングにより行われる。本明細書に記載されている本発明は、ネットワーク通信の性能を改善し、特に、同じかまたは個別の物理計算機上で実行している１次仮想計算機ＶＭＰ間の通信に関する待ち時間を短縮するための方法である。
【００２６】
図３は、チェックポインティング・プロセスにおける１次仮想計算機ＰＲＩと２次仮想計算機ＳＥＣとの間のデータの転送を示している。チェックポイントが発生すると、いくつかの動作が行われる。
１．２００で１次仮想計算機ＰＲＩのＣＰＵスレッドのすべてが休止される。
２．２０２でそれぞれの仮想計算機スレッドのＣＰＵ状態が収集される。
３．２０４で前のチェックポイント以降に変更されたメモリ・ページが収集される。
４．２０６でメモリ変更およびＣＰＵ状態が２次仮想計算機ＳＥＣに転送される。
５．２０８で１次仮想計算機が再開される。
【００２７】
当業者によって十分理解されるように、これらの動作のうちのいくつかは、並列にまたは意味的に同等の順序で行うことができる。たとえば、２次仮想計算機ＳＥＣへの転送が行われる前に、１次仮想計算機ＰＲＩを再開することができる。２次仮想計算機に関するわずかな時間のずれ（offset）は、２０６における転送に要した時間によるものである。１次仮想計算機と２次仮想計算機との間の高速データ接続により、このずれは無視してよいものと見なすことができ、明瞭にするために、このずれは以降の図から省略される。プロセス中の２つの設定間隔は、チェックポイント間隔ＣＩＮＴとチェックポイント待ち時間ＣＬＡＴである。この図から分かるように、チェックポイント間隔ＣＩＮＴは、好ましくは、再始動遅延とプロセッサ・オーバヘッドとの間のトレードオフとして前に決定された固定持続期間である。チェックポイント待ち時間ＣＬＡＴは、１次仮想計算機に関するＣＰＵ状態２０２およびメモリ状態２０４を収集して２次仮想計算機に送信するのに要した時間であり、１次仮想計算機がそれに割り当てられたタスクを実行した期間２１０に追加されたときにチェックポイント間隔ＣＩＮＴを構成するものである。
【００２８】
フェイルオーバは、ミラーリングされた１次仮想計算機が実行していた作業を２次仮想計算機が引き継ぐプロセスである。これは、１次仮想計算機またはハードウェアが故障したときに発生する。フェイルオーバが行われると、２次仮想計算機は前のチェックポイントから再開することになり、このチェックポイント以降に１次仮想計算機が実行した作業（たとえば、ＣＰＵサイクル、メモリへの変更）は失われる。
【００２９】
コンピュータは、仮想かどうかを問わず、単独で存在することはない。コンピュータは、外部環境にとって可視の動作を実行する。最も顕著なことに、コンピュータはネットワーク・トラフィックを送信し、情報をディスクに保管する。この保管の側面は本発明に含まれないので、ここでは扱わない。
【００３０】
上記のように、フェイルオーバが行われると、２次計算機は前のチェックポイントから再開する。これは、外部環境がそのチェックポイントに対応する状態を反映しなければならないことを意味する。ネットワーク・パケットの場合、これは、そのチェックポイントが２次仮想計算機によって受信されるまでそのパケットをリリースできない（外界から見えない）ことを意味する。図４に示されているように、１次仮想計算機３００および２次仮想計算機３０２は、図３ならびに全般的に３０４で示されているように、チェックポイント動作を実行する。３０６で、１次仮想計算機は外部バスまたはネットワーク３０８を介して前方への伝送のためのデータ・パケットを生成する。このパケットは直ちにリリースできないので、次のチェックポイントが完了するまで待ち行列３１０内に置かれ、次のチェックポイントが完了したポイント３１２で外部ネットワークにリリースされる。対照的に、１次仮想計算機向けの着信パケットであって、ポイント３１４で外部ネットワーク上で受信されたものは、遅延なしにその仮想計算機に直接渡される。
【００３１】
外部環境との対話を制御することは、仮想計算機ミラーリング・ソリューションの重要な部分であり、このようなソリューションの性能を決定する際に重要なコンポーネントである。ネットワーク動作の遅延（待ち時間の増加）は深刻な性能劣化を引き起こす可能性があるので、このような劣化を最小限にできるソリューションが好ましい。
【００３２】
本発明は、チェックポイントの発生を待つ必要なしに、ミラーリングされた仮想計算機からのネットワーク・パケットを他の仮想計算機から見えるようにするものである。これを達成するために、そのネットワーク・トラフィックを「見る」ことができるすべての他の仮想計算機が
１．そのチェックポイントが完了するまで外部環境に影響を及ぼす可能性がないことと、
２．送信側の障害が発生した場合にネットワーク・トラフィックが見られる前の状態に戻ることができなければならないこと
を保証するメカニズムが所定の位置に配置される。
【００３３】
すべての仮想計算機がミラーリングされる環境は、以下のようにすることにより、これらの目標にかなうように構成される。
●すべての仮想計算機間でチェックポイントを同期させることと、
●いずれか１つが故障した場合にすべての１次仮想計算機がそのそれぞれの２次仮想計算機にフェイルオーバすることを保証すること。いずれか１つの仮想計算機が故障した場合に、実行し続けるために、すべての仮想計算機を破壊（ならびに再現）しなければならないので、この技法は相互保証ネットワーク破壊（mutually assured network destruction）と記述することができる。
【００３４】
図５は、チェックポイント間で発生する可能性のあるネットワーク・イベントを示している。この図および以下の説明は、本発明の作用と、障害が発生した場合に見られていなかったはずのネットワーク・トラフィックが外部に影響を及ぼす可能性がないことを保証しながらネットワーク・トラフィックの待ち時間を短縮するために本発明を使用する方法について示している。この図では、内部ネットワーク４００は、相互保証ネットワーク破壊プールまたはクラスタ内にリンクされた、ミラーリングされた仮想計算機４０２、４０４間のネットワークと見なされる。
【００３５】
実行はポイント４２０から始まり、時間は右に向かって増加する。２次仮想計算機４０６はすでに存在しており、以降のステップは１つのチェックポイント間隔中に発生する可能性のあるイベントのサブセットを示している。
【００３６】
ポイント４２２で、１次仮想計算機４０２は外部ネットワーク４０８上の計算機にネットワーク・パケットを送信することを要求し、これは（次のチェックポイント間隔に続く）その後のある時期に送信する準備ができている待ち行列４１０に保管される。
【００３７】
ポイント４２４で、１次仮想計算機４０２は内部ネットワーク４００上の計算機４０４にネットワーク・パケットを送信することを要求し、これはその仮想計算機に直接送信される。
【００３８】
ポイント４２６で、パケットはネットワーク４０８によって受信され、これは直ちに１次仮想計算機４０２に送信される。一般に特別な処理は不要であり、その理由は、イーサネットなどのネットワークが本質的に損失が大きいものであり、仮想計算機が故障した場合にそのパケットを再送できるためである。再送すべきかどうかの判断は、典型的に、実行中のアプリケーションまで下がることになり、たとえば、ストリーミング・オーディオ・ブロードキャストでは、失われたパケットは一般に再送されない。
【００３９】
ポイント４２８で、チェックポイントに達し、１次仮想計算機４０２は瞬間的に「休止」される。ＣＰＵ状態と、前のチェックポイント以降に変更されたページが収集される。ＣＰＵ状態と変更されたページの２次仮想計算機４０６への転送が始まる。
【００４０】
ポイント４３０で、ＣＰＵ状態／変更されたページの転送が完了する。このポイントで、チェックポイントはコミットされたと言われ、変更されたページおよびＣＰＵ状態が２次仮想計算機４０２に適用される。次に、外部ネットワークに関する待機ネットワーク・トラフィックをリリースすることができる。
【００４１】
クラスタ内のすべての１次仮想計算機が正しく実行している限り、すべてのチェックポイントについて上記の諸ステップが繰り返される。しかし、１次仮想計算機のいずれかが故障した場合、これらの１次仮想計算機はすべて、その対応する２次計算機にフェイルオーバしなければならない。
【００４２】
相互保証破壊プールは、（内部ネットワーク４００を介して）遅延なしにネットワーク・パケットを通信できる仮想計算機のクラスタである。上記のように、チェックポイントを同期させ、いずれか１つの仮想計算機が故障した場合にクラスタ内のすべての仮想計算機がその２次仮想計算機にフェイルオーバすることを保証することによって、これが達成される。
【００４３】
チェックポイントを同期させるために、それぞれの仮想計算機を制御するハイパーバイザが通信しなければならない。これを達成するための最も容易な方法は、１つのハイパーバイザを備え、同じ物理計算機上ですべての仮想計算機を実行することである。しかし、複数のハイパーバイザを可能にするために、物理計算機間の所定の位置に短待ち時間通信リンクを配置することができる。このような構成では、内部ネットワークと外部ネットワークが同じ物理接続を共用することができるが、内部ネットワーク上のネットワーク・トラフィックも外界（すなわち、外部ネットワーク）から切り離さなければならない。
【００４４】
２次仮想計算機には配置に関する制限がなく、異なる物理計算機上に位置することができ、特別なネットワーク接続を必要としない。しかし、２次仮想計算機が内部ネットワークに接続されず、１次計算機として指定されず、新しいそれぞれの２次仮想計算機が定義されない場合、この構成において計算機が２次計算機にフェイルオーバした後、相互保証破壊プールは動作し続けることができない。
【００４５】
上記のシステムに対する変更例では、相互保証ネットワーク破壊は全体的ではなく部分的であり、１次仮想計算機のうちの１つが故障した場合に、その仮想計算機からのトラフィックを見たことがあるプール内の他の仮想計算機のみがフェイルオーバする必要がある。したがって、最後のチェックポイント以降に障害が発生している計算機からのネットワーク・トラフィックをどの仮想計算機が受信したかを把握するようにシステムが構築される場合、このような仮想計算機のみがフェイルオーバする必要がある。これは、最後のチェックポイント以降にいかなるネットワーク・トラフィックも送信されなかった場合に、障害が発生している仮想計算機のみがフェイルオーバしなければならないことを意味する。
【００４６】
他の変更例では、相互保証破壊プール内のすべての計算機をミラーリングしなければならないと前に述べたが、これが常に該当する必要はない。これが最も有用な構成である可能性はあるが、有効な構成はもう１つ存在する。すべての仮想計算機をミラーリングしなければならないわけではないが、すべての仮想計算機では、ミラーリングされた計算機上のチェックポイントが完了するまで、外部から見えるトランザクションをすべて遅延させなければならない。この状況で障害が発生した場合、ミラーリングされた計算機は（上記のように）フェイルオーバしなければならず、ミラーリングされない計算機は停止しなければならない。
【００４７】
本発明の諸実施形態について上記で説明してきたが、本発明の技術範囲は上記の諸実施形態の範囲に限定されない。この諸実施形態に対し様々な変更および改良を行うことができることは、当業者にとって明白なことであるはずである。このような変更または改良を含む実現例が本発明の技術範囲に包含されることは、特許請求の範囲の記述から明白である。
【図１】
2014503904.tif 000003
【図２】
2014503904.tif 000004
【図３】
2014503904.tif 000005
【図４】
2014503904.tif 000006
【図５】
2014503904.tif 000007
【国際調査報告】
2014503904.tif 000008
2014503904.tif 000009
2014503904.tif 000010