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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許6128526仮想計算機のクラスタを操作するための方法、装置、コンピュータ・プログラム、およびコンピュータ・プログラム製品
<>
  • 特許6128526-仮想計算機のクラスタを操作するための方法、装置、コンピュータ・プログラム、およびコンピュータ・プログラム製品 図000002
  • 特許6128526-仮想計算機のクラスタを操作するための方法、装置、コンピュータ・プログラム、およびコンピュータ・プログラム製品 図000003
  • 特許6128526-仮想計算機のクラスタを操作するための方法、装置、コンピュータ・プログラム、およびコンピュータ・プログラム製品 図000004
  • 特許6128526-仮想計算機のクラスタを操作するための方法、装置、コンピュータ・プログラム、およびコンピュータ・プログラム製品 図000005
  • 特許6128526-仮想計算機のクラスタを操作するための方法、装置、コンピュータ・プログラム、およびコンピュータ・プログラム製品 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6128526
(24)【登録日】2017年4月21日
(45)【発行日】2017年5月17日
(54)【発明の名称】仮想計算機のクラスタを操作するための方法、装置、コンピュータ・プログラム、およびコンピュータ・プログラム製品
(51)【国際特許分類】
   G06F 11/20 20060101AFI20170508BHJP
   G06F 9/46 20060101ALI20170508BHJP
【FI】
   G06F11/20 697
   G06F11/20 692
   G06F9/46 350
【請求項の数】12
【全頁数】14
(21)【出願番号】特願2013-545275(P2013-545275)
(86)(22)【出願日】2011年12月19日
(65)【公表番号】特表2014-503904(P2014-503904A)
(43)【公表日】2014年2月13日
(86)【国際出願番号】EP2011073262
(87)【国際公開番号】WO2012084839
(87)【国際公開日】20120628
【審査請求日】2014年7月11日
(31)【優先権主張番号】10196296.7
(32)【優先日】2010年12月21日
(33)【優先権主張国】EP
【前置審査】
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】マクニーニ、アダム、ジェイムズ
(72)【発明者】
【氏名】マルケイ、ジェイムズ
【審査官】 三坂 敏夫
(56)【参考文献】
【文献】 特開2008−140198(JP,A)
【文献】 特開2009−116859(JP,A)
【文献】 特開2010−160660(JP,A)
【文献】 米国特許出願公開第2008/0201602(US,A1)
【文献】 特開平09−251404(JP,A)
【文献】 Minjia ZHANG et al.,"VirtCFT: A Transparent VM-Level Fault-Tolerant System for Virtual Clusters",IEEE 16th International Conference on Parallel and Distributed Systems (ICPADS),2010 ,米国,IEEE,2010年12月10日,pages:147-154
【文献】 Brendan CULLY et al.,"Remus: High Availability via Asynchronous Virtual Machine Replication",NSDI'08: 5th USENIX Symposium on Networked Systems Design and Implementation,カナダ,The University of British Columbia,2008年 4月16日,pages:161-174,[平成27年7月21日検索]、インターネットURL:https://www.usenix.org/legacy/events/nsdi08/tech/full_papers/cully/cully.pdf
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/20
G06F 9/46
(57)【特許請求の範囲】
【請求項1】
仮想計算機のクラスタを操作するための方法であって、前記クラスタが2つまたはそれ以上の1次仮想計算機を含み、それぞれの仮想計算機が外部データ・バスにリンクされ、それぞれの1次仮想計算機がデータを生成して前記外部バス上でこれを送信し、及び前記外部バスからデータを受信して処理するように動作可能であり、
前記クラスタの1次仮想計算機のそれぞれについて、フェイルオーバが発生した場合に当該1次仮想計算機のタスクを引き受けるようにそれぞれの2次仮想計算機を維持するためにチェックポイント手順を使用するステップと、
フェイルオーバ時に、そのそれぞれの2次仮想計算機により、フェイルオーバ・イベントの直前のチェックポイントからそのそれぞれの1次仮想計算機のタスクを引き受けさせるステップであって、前記それぞれの1次仮想計算機が、内部バスを介して他の1次仮想計算機のすべてまたはそれぞれからデータを受信し、受信時にこれを処理するように接続される、前記受けさせるステップと、
前記クラスタの1次仮想計算機のすべて間で前記チェックポイントを同期させるステップと、
前記クラスタの1次仮想計算機のそれぞれについて、次のチェックポイントが発生するまで、受信した内部バス・データに基づいて生成されたデータを外部バスにリリースするのを防止するステップと、
前記クラスタの1次仮想計算機の1つのフェイルオーバ時に、前記クラスタの1次仮想計算機のすべてをそのそれぞれの2次仮想計算機にフェイルオーバさせるステップと
を含み、
前記クラスタの障害が発生していない少なくとも1つの1次仮想計算機について、前記クラスタ内のフェイルオーバの発生時に、前記少なくとも1つの1次仮想計算機が直前のチェックポイント以降に内部バス・データを受信したかどうかを判断し、受信していない場合、前記クラスタの他の1次仮想計算機がフェイルオーバするときに、前記少なくとも1つの1次仮想計算機がそのそれぞれの2次仮想計算機にフェイルオーバするのを防止する、
前記方法。
【請求項2】
前記クラスタが少なくとも1つの追加の1次仮想計算機をさらに含み、前記方法が、前記クラスタの他の1次仮想計算機がフェイルオーバするときに前記少なくとも1つの追加の1次計算機の動作を停止するステップをさらに含む、請求項1記載の方法。
【請求項3】
前記クラスタの前記追加の1次仮想計算機のすべてのまたはそれぞれが、前記内部バスを介して他の1次仮想計算機すべてのまたはそれぞれのからデータを受信し、受信時にこれを処理するように接続され、
前記方法が、
前記クラスタの追加の1次仮想計算機のすべてのまたはそれぞれについて、次のチェックポイントが発生するまで、受信した内部バス・データを基礎として生成したデータを外部バスにリリースするのを防止するステップ
をさらに含む、請求項に記載の方法。
【請求項4】
フェイルオーバに続いて、それぞれの2次仮想計算機を新しいクラスタ内の1次仮想計算機として再指定し、新しいそれぞれの2次仮想計算機を指定するステップをさらに含む、請求項1〜のいずれか一項に記載の方法。
【請求項5】
1つまたは複数のデータ記憶装置と結合された少なくとも1つのプロセッサ・デバイスを有するコンピュータ・システムを含む装置であって、前記システムが仮想計算機のクラスタを操作するように構成され、前記クラスタが2つまたはそれ以上の1次仮想計算機を含み、それぞれの仮想計算機が外部データ・バスにリンクされ、
それぞれの1次仮想計算機がデータを生成して前記外部バス上でこれを送信し、前記外部バスからデータを受信して処理するように動作可能であり、
前記クラスタの1次仮想計算機のそれぞれについて、前記システムが、チェックポイント手順により、フェイルオーバが発生した場合に当該1次仮想計算機のタスクを引き受けるようにそれぞれの2次仮想計算機を維持し、
フェイルオーバの検出時に、前記システムがそのそれぞれの2次仮想計算機にそれぞれの1次仮想計算機のタスクを転送し、それぞれの2次仮想計算機が、フェイルオーバ・イベントの直前のチェックポイントにおいてそのそれぞれの1次仮想計算機の状態をミラーリングし、
前記システムが、前記クラスタの1次仮想計算機のすべて間で前記チェックポイントを同期するように制御し、
前記システムが内部バス・メカニズムをさらに含み、前記クラスタの1次仮想計算機のそれぞれが、前記内部バスを介して他の1次仮想計算機のすべてまたはそれぞれからデータを受信し、受信時にこれを処理するように接続され、
前記1つまたは複数の記憶装置を使用して、前記クラスタの1次仮想計算機のそれぞれが、受信した内部バス・データに基づいて生成された外部バス・データをバッファリングし、次のチェックポイントが発生したときにこれを外部バスにリリースし、
前記クラスタの1次仮想計算機の1つのフェイルオーバ時に、前記システムが、前記クラスタの1次仮想計算機のすべてをそのそれぞれの2次仮想計算機にフェイルオーバするように指示し、
前記クラスタの障害が発生していない少なくとも1つの1次仮想計算機について、前記クラスタ内のフェイルオーバの発生時に、前記システムが、前記少なくとも1つの1次仮想計算機が直前のチェックポイント以降に内部バス・データを受信したかどうかを判断し、受信していない場合、前記クラスタの他の1次仮想計算機がフェイルオーバするときに、前記少なくとも1つの1次仮想計算機がそのそれぞれの2次仮想計算機にフェイルオーバするのを前記システムにより防止する、
前記装置。
【請求項6】
それぞれの1次および2次仮想計算機が、それぞれのハイパーバイザにより前記システムの残りの部分にリンクされる、請求項に記載の装置。
【請求項7】
前記クラスタの1次仮想計算機のすべてが単一のプロセッサ・デバイスによってホストとして処理され、単一のハイパーバイザによりリンクされる、請求項に記載の装置。
【請求項8】
前記クラスタの1次仮想計算機が2つまたはそれ以上のプロセッサ・デバイスによってホストとして処理され、それぞれのハイパーバイザが内部バス・データの交換のために接続される、請求項に記載の装置。
【請求項9】
前記クラスタが、前記クラスタの他の1次仮想計算機がフェイルオーバするときにその動作が前記システムによって停止される、少なくとも1つの追加の1次仮想計算機をさらに含む、請求項のいずれか一項に記載の装置。
【請求項10】
前記クラスタの前記追加の1次仮想計算機のすべてのまたはそれぞれが、前記内部バスを介して他の1次仮想計算機のすべてのまたはそれぞれからデータを受信し、受信時にこれを処理するように接続され、
前記1つまたは複数の記憶装置を使用して、前記クラスタの前記追加の1次仮想計算機のすべてのまたはそれぞれが、受信した内部バス・データを基礎として生成した外部バス・データをバッファリングし、次のチェックポイントが発生したときにこれを外部バスにリリースする、請求項に記載の装置。
【請求項11】
コンピュータ可読媒体上に保管され、デジタル・コンピュータの内部メモリにロード可能であり、コンピュータ上で実行されるときに、請求項1〜のいずれか一項に記載の方法の各ステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【請求項12】
処理回路によって読み取り可能であり、請求項1〜のいずれか一項に記載の方法の各ステップを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・システム上で実行される仮想計算機(virtualmachine)の管理のための方法に関し、特に、障害が発生しているかまたは故障した仮想計算機から動作を引き継ぐためにバックアップまたは交換用仮想計算機が使用可能であるフォールト・トレラント・システムに関する。さらに、本発明は、このような方法を実現するためのソフトウェア・ユーティリティに関し、このような方法を実現するために構成されたコンピュータ・システムにも関する。
【背景技術】
【0002】
コンピュータ・システムでは、仮想計算機の使用がますます一般的になり、個々のプログラムまたはプロセスからオペレーティング・システム全体まで何でも処理するために個々の仮想計算機が提供されている。個々のプロセッサは1つまたは複数のこのような仮想計算機をホストとして処理することができ、仮想計算機をサポートするプロセッサ・ソフトウェア層は仮想計算機モニターまたはハイパーバイザと呼ばれている。複数の仮想計算機が互いに切り離されていることは仮想計算機を使用する際の特定の利点であるが、多くの状況で仮想計算機間の相互通信が必要であることも事実である。
【0003】
フォールト・トレラント・システム(典型的に、サーバ・アーキテクチャまたは警報システムなどの重要性の高いシステム)では、あるコンポーネントの故障時に、交換品に切り替えて最小限の中断で動作を続行できるようにする、バックアップの備えがなされている。複数の仮想計算機からなるシステムでは、バックアップの備えは、場合によっては、障害が発生した場合にその内部で交換用仮想計算機をインスタンス化できる、接続されているが物理的に分離している計算機上の追加の処理能力を含む。認識されるように、遅延を最小限にするために、交換用仮想計算機は、可能な限り迅速に障害が発生している計算機の動作に着手できなければならず、したがって、障害が発生している計算機がそのプログラムまたはプロセス内のどこに達していたかを認識して、そのポイントから動作を再開できなければならない。1つのオプションは第1の計算機と並行して交換用計算機を実行することであり、交換用計算機は第1の計算機と同じ入力データを受信し、その出力が抑制されて、第1の計算機の正確なミラーになるようになっているが、この構成は交換用計算機の動作を維持するために処理能力が重複するという点で費用がかかる。米国特許出願第2008/0189468号(Schmidt他)および米国特許第7213246号(van Rietschote他)には、代替戦略を使用する複数仮想計算機のシステムが記載されている。動作時に、所与の仮想計算機について、第1の計算機の故障時に交換用仮想計算機の作成を可能にするために、その計算機の記述と現在の計算機の状態データが定期的に収集されて保管される。米国特許出願第2008/0155208号(Hiltgen他)には、同様のシステムが記載され、収集した状態データの処理に関するセキュリティの側面が論じられている。このようなシステムは、並列仮想計算機を実行するより処理オーバヘッドが低くなるが、動作を引き継ぐ前に交換用仮想計算機をインスタンス化することがまず必要になるので、障害が発生した場合の移行が遅くなる。
【0004】
仮想計算機ミラーは、障害が発生した場合にほとんど即座に第2の計算機上で再始動できるように仮想計算機を実行する方法である。状態データは1次仮想計算機と2次計算機との間で頻繁に交換される。これは、1次仮想計算機の状態が定期的に収集されて2次計算機に転送される、1次仮想計算機のチェックポインティングという技法によって行われる。チェックポインティング仮想計算機システムの一例は米国特許出願第2010/0107158号(Chen他)に記載されている。障害が発生した場合、2次仮想計算機は故障前の最後のチェックポイントにおける1次計算機のミラーになり、そのチェックポイントから動作を引き継ぐことができる。認識されるように、チェックポイント間の間隔が短いほど、2次仮想計算機の状態が1次計算機の状態に近くなる。しかし、チェックポイント動作に対する処理オーバヘッドが発生するので、チェックポインティングのオーバヘッドと頻度との間でバランスを取らなければならない。チェックポインティング・システムに関するもう1つの問題は、障害イベントの両側で1次仮想計算機とそのそれぞれの2次計算機によって発生する外部ネットワーク・トラフィックの重複を回避するために、次のチェックポイントを通過するまで1次仮想計算機が発生した外部ネットワーク・データ・パケットをバッファリングしなければならないことである。このバッファリング要件は、特に比較的長いチェックポイント間隔を使用する場合に、動作に遅延をもたらすものである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願第2008/0189468号
【特許文献2】米国特許第7213246号
【特許文献3】米国特許出願第2008/0155208号
【特許文献4】米国特許出願第2010/0107158号
【発明の概要】
【発明が解決しようとする課題】
【0006】
したがって、当技術分野では前述の問題に対処する必要がある。
【課題を解決するための手段】
【0007】
本発明の第1の態様により、仮想計算機のクラスタを操作するための方法が提供され、前記クラスタが2つまたはそれ以上の1次仮想計算機を含み、それぞれの仮想計算機が外部データ・バスにリンクされ、それぞれの1次仮想計算機がデータを生成して前記外部バス上でこれを送信し、前記外部バスからデータを受信して処理するように動作可能であり、
a)前記クラスタのそれぞれの1次仮想計算機について、フェイルオーバが発生した場合にその1次仮想計算機のタスクを引き受けるようにそれぞれの2次仮想計算機を維持するためにチェックポイント手順を使用することと、
b)フェイルオーバ時に、それぞれの前記2次仮想計算機により、フェイルオーバ・イベントの直前のチェックポイントからそのそれぞれの1次仮想計算機のタスクを引き受けさせること
を含み、
前記クラスタのそれぞれの1次仮想計算機が、内部バスを介してすべてのまたはそれぞれの他の1次仮想計算機からデータを受信し、受信時にこれを処理するように接続され、この方法は、
c)前記クラスタのすべての1次仮想計算機に関するチェックポイントを同期させることと、
d)前記クラスタのそれぞれの1次仮想計算機について、次のチェックポイントが発生するまで、受信した内部バス・データを基礎として生成したデータを外部バスにリリースするのを防止することと、
e)前記クラスタの1つの1次仮想計算機のフェイルオーバ時に、前記クラスタのすべての1次仮想計算機により、そのそれぞれの2次仮想計算機にフェイルオーバさせること
をさらに含む。
【0008】
内部バスの使用により、仮想計算機は、チェックポイントの通過を待つ必要なしに、クラスタの他の仮想計算機からデータを受信して処理することができる。チェックポイントを同期させ、すべての1次仮想計算機を一緒にフェイルオーバすることにより、スプリアス外部バス・トラフィックが発生する可能性が回避される。
【0009】
このような方法では、前記クラスタの少なくとも1つの1次仮想計算機について、クラスタ内のフェイルオーバの発生時に、前記少なくとも1つの1次仮想計算機が前のチェックポイント以降に内部バス・データを受信していないと判断された場合、クラスタの他の1次仮想計算機がフェイルオーバするときに、前記少なくとも1つの1次仮想計算機がそのそれぞれの2次仮想計算機にフェイルオーバするのを防止することができる。換言すれば、前のチェックポイント以降に内部バス・データを受信した1次仮想計算機のみがフェイルオーバされる。
【0010】
クラスタは少なくとも1つの追加の1次仮想計算機をさらに含むことができ、この方法は、クラスタの他の1次仮想計算機がフェイルオーバするときにその追加の1次計算機の動作を停止することをさらに含み、これによりそれぞれの2次計算機を備えていない1次仮想計算機に対する対処が可能になる。このような構成では、前記クラスタのすべてのまたはそれぞれのこのような追加の1次仮想計算機は、前記内部バスを介してすべてのまたはそれぞれの他の1次仮想計算機からデータを受信し、受信時にこれを処理するように接続することができ、この方法は、前記クラスタのすべてのまたはそれぞれの追加の1次仮想計算機について、次のチェックポイントが発生するまで、受信した内部バス・データを基礎として生成したデータを外部バスにリリースするのを防止することをさらに含む。
【0011】
フェイルオーバに続いて、それぞれの2次仮想計算機を新しいクラスタ内の1次仮想計算機として再指定することができ、新しいそれぞれの2次仮想計算機を指定することができる。
【0012】
また、本発明により、1つまたは複数のデータ記憶装置と結合された少なくとも1つのプロセッサ・デバイスを有するコンピュータ・システムを含む装置が提供され、前記システムが仮想計算機のクラスタを操作するように構成され、前記クラスタが2つまたはそれ以上の1次仮想計算機を含み、それぞれの仮想計算機が外部データ・バスにリンクされ、
1.それぞれの1次仮想計算機がデータを生成して前記外部バス上でこれを送信し、前記外部バスからデータを受信して処理するように動作可能であり、
2.前記クラスタのそれぞれの1次仮想計算機について、前記システムが、チェックポイント手順により、フェイルオーバが発生した場合にその1次仮想計算機のタスクを引き受けるようにそれぞれの2次仮想計算機を維持し、
3.フェイルオーバの検出時に、前記システムがそのそれぞれの2次仮想計算機にそれぞれの1次仮想計算機のタスクを転送し、それぞれの2次仮想計算機が、フェイルオーバ・イベントの直前のチェックポイントにおいてそのそれぞれの1次仮想計算機の状態をミラーリングし、
4.このシステムが、前記クラスタのすべての1次仮想計算機に関するチェックポイントを同期するように制御し、
5.このシステムが内部バス・メカニズムをさらに含み、前記クラスタのそれぞれの1次仮想計算機が、前記内部バスを介してすべてのまたはそれぞれの他の1次仮想計算機からデータを受信し、受信時にこれを処理するように接続され、
6.前記1つまたは複数の記憶装置を使用して、前記クラスタのそれぞれの1次仮想計算機が、受信した内部バス・データを基礎として生成した外部バス・データをバッファリングし、次のチェックポイントが発生したときにこれを外部バスにリリースし、
7.前記クラスタの1つの1次仮想計算機のフェイルオーバ時に、前記システムが、そのそれぞれの2次仮想計算機にフェイルオーバするよう、前記クラスタのすべての1次仮想計算機に指示する。
【0013】
このような装置では、それぞれの1次および2次仮想計算機は、それぞれのハイパーバイザによりシステムの残りの部分に適切にリンクされる。一実施形態では、前記クラスタのすべての1次仮想計算機は単一のプロセッサ・デバイスによってホストとして処理され、単一のハイパーバイザによりリンクすることができる。代わって、前記クラスタの1次仮想計算機は2つまたはそれ以上のプロセッサ・デバイスによってホストとして処理することができ、それぞれのハイパーバイザは内部バス・データの交換のために接続される。
【0014】
上記のように、クラスタの少なくとも1つの1次仮想計算機について、クラスタ内のフェイルオーバの発生時に、前記システムは、前記少なくとも1つの1次仮想計算機が前のチェックポイント以降に内部バス・データを受信したかどうかを判断することができ、受信していない場合、クラスタの他の1次仮想計算機がフェイルオーバするときに、前記少なくとも1つの1次仮想計算機がそのそれぞれの2次仮想計算機にフェイルオーバするのを前記システムにより防止することができる。
【0015】
クラスタは、クラスタの他の1次仮想計算機がフェイルオーバするときにその動作がシステムによって停止される、少なくとも1つの追加の1次仮想計算機をさらに含むことができる。前記クラスタのすべてのまたはそれぞれの前記追加の1次仮想計算機は、前記内部バスを介してすべてのまたはそれぞれの他の1次仮想計算機からデータを受信し、受信時にこれを処理するように接続することができ、前記1つまたは複数の記憶装置を使用して、受信した内部バス・データを基礎としてすべてのまたはそれぞれの追加の1次仮想計算機によって生成した外部バス・データをバッファリングし、次のチェックポイントが発生したときにこれを外部バスにリリースするように構成することができる。
【0016】
他の態様から見ると、本発明は、クライアント・コンピュータにおいて第1のコンピュータ・リソースを作成するためのコンピュータ・プログラム製品(computer program product)を提供し、このコンピュータ・プログラム製品は、処理回路によって読み取り可能であり、本発明の諸ステップを実行するための方法を実行するために処理回路による実行のための命令を保管するコンピュータ可読記憶媒体を含む。
【0017】
他の態様から見ると、本発明は、コンピュータ可読媒体上に保管され、デジタル・コンピュータの内部メモリにロード可能であり、コンピュータ上で実行されるときに、本発明の諸ステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【0018】
有利なことに、本発明は、ネットワーク通信の性能を改善し、特に、チェックポインティングを使用してシステム上で実行している仮想計算機間の通信に関する待ち時間を短縮するための方法を提供する。
【0019】
本発明の概要では本発明の必要な特徴をすべて列挙しているわけではなく、このような特徴の一部の組み合わせも本発明を包含することができる。
【0020】
次に、以下の図に例示されているように、好ましい諸実施形態に関連して、例としてのみ、本発明について説明する。
【図面の簡単な説明】
【0021】
図1】本発明の好ましい一実施形態を実現可能である、従来技術によるコンピュータのコンポーネントを示すブロック図である。
図2】本発明の好ましい一実施形態により、それぞれが複数の仮想計算機をホストとして処理する、リンクされた一対のプロセッサ・デバイスを表す図である。
図3】本発明の好ましい一実施形態により、チェックポインティング・プロセス中のデータ転送を示す図である。
図4】本発明の好ましい一実施形態により、チェックポインティング・プロセスによる外部ネットワーク・データの据え置き出力を示す図である。
図5】本発明の好ましい一実施形態により、チェックポイント間隔の満了以前の内部ネットワークの備えおよびデータの転送を示す図である。
【発明を実施するための形態】
【0022】
図1は、本発明を実施するのに適したコンピュータ・システムのコンポーネントを概略的に表している。中央演算処理装置(CPU)のプロセッサ10は、アドレスおよびデータ・バス16によりランダム・アクセス・メモリRAM12および読み取り専用メモリROM14に結合される。また、CPU10の機能を補い、浮動小数点演算、グラフィクス処理、信号処理、および暗号化などのプロセスを処理するコプロセッサ・デバイス42もアドレスおよびデータ・バス16を介してCPU10に接続される。これらの内部ハードウェア装置10、12、14、42のそれぞれは、バス16への接続をサポートする、それぞれのインターフェース(図示せず)を含む。これらのインターフェースは、従来の形式であり、より詳細に説明する必要はない。
【0023】
また、いくつかの外部ハードウェア装置のインターフェース段階(全般的に18で示されている)もバス16を介してCPU10に接続される。第1のインターフェース段階20は、マウス22あるいはキーボード24またはその両方などの外部入出力装置の接続をサポートする。第2のインターフェース段階26は、ディスプレイ画面28あるいはヘッドホンまたはスピーカなどのオーディオ出力装置30などの外部出力装置の接続をサポートする。第3のインターフェース段階32は、コンピュータ可読媒体の形の外部データ記憶装置の接続をサポートし、このような外部記憶装置は、図示の通り、取り外し可能な光または磁気ディスク34によって提供する(適切に構成されたディスク・リーダ36によってアクセスする)ことができる。代わってまたはさらに、外部記憶装置は、拡張ドライブまたはメモリ・スティックなどのソリッドステート・メモリ・デバイスの形にすることができる。第4のインターフェース段階38は、たとえば、ローカル・エリア・ネットワークLANによるかまたはインターネットを介して、有線または無線ネットワーク40によるこのシステムとリモート・デバイスまたはシステムとの接続をサポートする。
【0024】
図2は、ネットワーク104を介して接続された第1の物理計算機(プロセッサ・デバイス)100および第2の物理計算機102を示している。計算機100、102のそれぞれは、それぞれのハイパーバイザ106、108を提供する。第1のハイパーバイザ106は、2つの1次仮想計算機(VMP)110、112および1つの2次仮想計算機(VMS)114をホストとして処理する。第2のハイパーバイザ108は、1つの1次仮想計算機116および2つの2次仮想計算機118、120をホストとして処理する。3つの1次仮想計算機110、112、120は、以下により詳細に述べるように、データの交換のためのクラスタを形成し、それぞれがそれぞれ1つの2次仮想計算機116、118、114に関連付けられる。仮想計算機ミラーは、障害が発生した場合にほとんど即座に第2の計算機上で再始動できるように仮想計算機(VM)を実行する方法である。図示の例では、1次仮想計算機112が故障した場合、その動作は2次仮想計算機118上で再始動される。
【0025】
状態データは、1次仮想計算機およびそのそれぞれの2次計算機から定期的に渡される。これは、1次計算機の状態を収集し、それを2次計算機に転送することを含む、1次仮想計算機のチェックポインティングにより行われる。本明細書に記載されている本発明は、ネットワーク通信の性能を改善し、特に、同じかまたは個別の物理計算機上で実行している1次仮想計算機VMP間の通信に関する待ち時間を短縮するための方法である。
【0026】
図3は、チェックポインティング・プロセスにおける1次仮想計算機PRIと2次仮想計算機SECとの間のデータの転送を示している。チェックポイントが発生すると、いくつかの動作が行われる。
1.200で1次仮想計算機PRIのCPUスレッドのすべてが休止される。
2.202でそれぞれの仮想計算機スレッドのCPU状態が収集される。
3.204で前のチェックポイント以降に変更されたメモリ・ページが収集される。
4.206でメモリ変更およびCPU状態が2次仮想計算機SECに転送される。
5.208で1次仮想計算機が再開される。
【0027】
当業者によって十分理解されるように、これらの動作のうちのいくつかは、並列にまたは意味的に同等の順序で行うことができる。たとえば、2次仮想計算機SECへの転送が行われる前に、1次仮想計算機PRIを再開することができる。2次仮想計算機に関するわずかな時間のずれ(offset)は、206における転送に要した時間によるものである。1次仮想計算機と2次仮想計算機との間の高速データ接続により、このずれは無視してよいものと見なすことができ、明瞭にするために、このずれは以降の図から省略される。プロセス中の2つの設定間隔は、チェックポイント間隔CINTとチェックポイント待ち時間CLATである。この図から分かるように、チェックポイント間隔CINTは、好ましくは、再始動遅延とプロセッサ・オーバヘッドとの間のトレードオフとして前に決定された固定持続期間である。チェックポイント待ち時間CLATは、1次仮想計算機に関するCPU状態202およびメモリ状態204を収集して2次仮想計算機に送信するのに要した時間であり、1次仮想計算機がそれに割り当てられたタスクを実行した期間210に追加されたときにチェックポイント間隔CINTを構成するものである。
【0028】
フェイルオーバは、ミラーリングされた1次仮想計算機が実行していた作業を2次仮想計算機が引き継ぐプロセスである。これは、1次仮想計算機またはハードウェアが故障したときに発生する。フェイルオーバが行われると、2次仮想計算機は前のチェックポイントから再開することになり、このチェックポイント以降に1次仮想計算機が実行した作業(たとえば、CPUサイクル、メモリへの変更)は失われる。
【0029】
コンピュータは、仮想かどうかを問わず、単独で存在することはない。コンピュータは、外部環境にとって可視の動作を実行する。最も顕著なことに、コンピュータはネットワーク・トラフィックを送信し、情報をディスクに保管する。この保管の側面は本発明に含まれないので、ここでは扱わない。
【0030】
上記のように、フェイルオーバが行われると、2次計算機は前のチェックポイントから再開する。これは、外部環境がそのチェックポイントに対応する状態を反映しなければならないことを意味する。ネットワーク・パケットの場合、これは、そのチェックポイントが2次仮想計算機によって受信されるまでそのパケットをリリースできない(外界から見えない)ことを意味する。図4に示されているように、1次仮想計算機300および2次仮想計算機302は、図3ならびに全般的に304で示されているように、チェックポイント動作を実行する。306で、1次仮想計算機は外部バスまたはネットワーク308を介して前方への伝送のためのデータ・パケットを生成する。このパケットは直ちにリリースできないので、次のチェックポイントが完了するまで待ち行列310内に置かれ、次のチェックポイントが完了したポイント312で外部ネットワークにリリースされる。対照的に、1次仮想計算機向けの着信パケットであって、ポイント314で外部ネットワーク上で受信されたものは、遅延なしにその仮想計算機に直接渡される。
【0031】
外部環境との対話を制御することは、仮想計算機ミラーリング・ソリューションの重要な部分であり、このようなソリューションの性能を決定する際に重要なコンポーネントである。ネットワーク動作の遅延(待ち時間の増加)は深刻な性能劣化を引き起こす可能性があるので、このような劣化を最小限にできるソリューションが好ましい。
【0032】
本発明は、チェックポイントの発生を待つ必要なしに、ミラーリングされた仮想計算機からのネットワーク・パケットを他の仮想計算機から見えるようにするものである。これを達成するために、そのネットワーク・トラフィックを「見る」ことができるすべての他の仮想計算機が
1.そのチェックポイントが完了するまで外部環境に影響を及ぼす可能性がないことと、
2.送信側の障害が発生した場合にネットワーク・トラフィックが見られる前の状態に戻ることができなければならないこと
を保証するメカニズムが所定の位置に配置される。
【0033】
すべての仮想計算機がミラーリングされる環境は、以下のようにすることにより、これらの目標にかなうように構成される。
●すべての仮想計算機間でチェックポイントを同期させることと、
●いずれか1つが故障した場合にすべての1次仮想計算機がそのそれぞれの2次仮想計算機にフェイルオーバすることを保証すること。いずれか1つの仮想計算機が故障した場合に、実行し続けるために、すべての仮想計算機を破壊(ならびに再現)しなければならないので、この技法は相互保証ネットワーク破壊(mutually assured network destruction)と記述することができる。
【0034】
図5は、チェックポイント間で発生する可能性のあるネットワーク・イベントを示している。この図および以下の説明は、本発明の作用と、障害が発生した場合に見られていなかったはずのネットワーク・トラフィックが外部に影響を及ぼす可能性がないことを保証しながらネットワーク・トラフィックの待ち時間を短縮するために本発明を使用する方法について示している。この図では、内部ネットワーク400は、相互保証ネットワーク破壊プールまたはクラスタ内にリンクされた、ミラーリングされた仮想計算機402、404間のネットワークと見なされる。
【0035】
実行はポイント420から始まり、時間は右に向かって増加する。2次仮想計算機406はすでに存在しており、以降のステップは1つのチェックポイント間隔中に発生する可能性のあるイベントのサブセットを示している。
【0036】
ポイント422で、1次仮想計算機402は外部ネットワーク408上の計算機にネットワーク・パケットを送信することを要求し、これは(次のチェックポイント間隔に続く)その後のある時期に送信する準備ができている待ち行列410に保管される。
【0037】
ポイント424で、1次仮想計算機402は内部ネットワーク400上の計算機404にネットワーク・パケットを送信することを要求し、これはその仮想計算機に直接送信される。
【0038】
ポイント426で、パケットはネットワーク408によって受信され、これは直ちに1次仮想計算機402に送信される。一般に特別な処理は不要であり、その理由は、イーサネットなどのネットワークが本質的に損失が大きいものであり、仮想計算機が故障した場合にそのパケットを再送できるためである。再送すべきかどうかの判断は、典型的に、実行中のアプリケーションまで下がることになり、たとえば、ストリーミング・オーディオ・ブロードキャストでは、失われたパケットは一般に再送されない。
【0039】
ポイント428で、チェックポイントに達し、1次仮想計算機402は瞬間的に「休止」される。CPU状態と、前のチェックポイント以降に変更されたページが収集される。CPU状態と変更されたページの2次仮想計算機406への転送が始まる。
【0040】
ポイント430で、CPU状態/変更されたページの転送が完了する。このポイントで、チェックポイントはコミットされたと言われ、変更されたページおよびCPU状態が2次仮想計算機402に適用される。次に、外部ネットワークに関する待機ネットワーク・トラフィックをリリースすることができる。
【0041】
クラスタ内のすべての1次仮想計算機が正しく実行している限り、すべてのチェックポイントについて上記の諸ステップが繰り返される。しかし、1次仮想計算機のいずれかが故障した場合、これらの1次仮想計算機はすべて、その対応する2次計算機にフェイルオーバしなければならない。
【0042】
相互保証破壊プールは、(内部ネットワーク400を介して)遅延なしにネットワーク・パケットを通信できる仮想計算機のクラスタである。上記のように、チェックポイントを同期させ、いずれか1つの仮想計算機が故障した場合にクラスタ内のすべての仮想計算機がその2次仮想計算機にフェイルオーバすることを保証することによって、これが達成される。
【0043】
チェックポイントを同期させるために、それぞれの仮想計算機を制御するハイパーバイザが通信しなければならない。これを達成するための最も容易な方法は、1つのハイパーバイザを備え、同じ物理計算機上ですべての仮想計算機を実行することである。しかし、複数のハイパーバイザを可能にするために、物理計算機間の所定の位置に短待ち時間通信リンクを配置することができる。このような構成では、内部ネットワークと外部ネットワークが同じ物理接続を共用することができるが、内部ネットワーク上のネットワーク・トラフィックも外界(すなわち、外部ネットワーク)から切り離さなければならない。
【0044】
2次仮想計算機には配置に関する制限がなく、異なる物理計算機上に位置することができ、特別なネットワーク接続を必要としない。しかし、2次仮想計算機が内部ネットワークに接続されず、1次計算機として指定されず、新しいそれぞれの2次仮想計算機が定義されない場合、この構成において計算機が2次計算機にフェイルオーバした後、相互保証破壊プールは動作し続けることができない。
【0045】
上記のシステムに対する変更例では、相互保証ネットワーク破壊は全体的ではなく部分的であり、1次仮想計算機のうちの1つが故障した場合に、その仮想計算機からのトラフィックを見たことがあるプール内の他の仮想計算機のみがフェイルオーバする必要がある。したがって、最後のチェックポイント以降に障害が発生している計算機からのネットワーク・トラフィックをどの仮想計算機が受信したかを把握するようにシステムが構築される場合、このような仮想計算機のみがフェイルオーバする必要がある。これは、最後のチェックポイント以降にいかなるネットワーク・トラフィックも送信されなかった場合に、障害が発生している仮想計算機のみがフェイルオーバしなければならないことを意味する。
【0046】
他の変更例では、相互保証破壊プール内のすべての計算機をミラーリングしなければならないと前に述べたが、これが常に該当する必要はない。これが最も有用な構成である可能性はあるが、有効な構成はもう1つ存在する。すべての仮想計算機をミラーリングしなければならないわけではないが、すべての仮想計算機では、ミラーリングされた計算機上のチェックポイントが完了するまで、外部から見えるトランザクションをすべて遅延させなければならない。この状況で障害が発生した場合、ミラーリングされた計算機は(上記のように)フェイルオーバしなければならず、ミラーリングされない計算機は停止しなければならない。
【0047】
本発明の諸実施形態について上記で説明してきたが、本発明の技術範囲は上記の諸実施形態の範囲に限定されない。この諸実施形態に対し様々な変更および改良を行うことができることは、当業者にとって明白なことであるはずである。このような変更または改良を含む実現例が本発明の技術範囲に包含されることは、特許請求の範囲の記述から明白である。
図1
図2
図3
図4
図5