(57)【要約】【課題】複数の待機系を有しながら稼働系の性能の低下を抑えることができるフォールトトレラントシステムを提供する。【解決手段】物理計算機600は、仮想計算機610,710の同期を採るタイミングである第１のチェックポイントが検出される毎に、仮想計算機610のスナップショット差分情報を取得して物理計算機700へ送信する。物理計算機700は、物理計算機600からのスナップショット差分情報に基づいて、仮想計算機710の状態を仮想計算機610の状態に一致させ、更に、仮想計算機710,810の同期を採る第２のチェックポイントが検出される毎に、仮想計算機710のスナップショット差分情報を取得して物理計算機800へ送信する。物理計算機800は、物理計算機700からのスナップショット差分情報に基づいて、仮想計算機810の状態を仮想計算機710の状態に一致させる。【選択図】図１３
2014102724.tif 000002
【特許請求の範囲】
【請求項１】
稼働系の仮想計算機が動作する第１の物理計算機と、前記第１の物理計算機に接続され、第１の待機系の仮想計算機が動作する第２の物理計算機と、前記第２の物理計算機に接続され、第２の待機系の仮想計算機が動作する第３の物理計算機とを有し、
前記第１の物理計算機は、前記稼働系の仮想計算機と前記第１の待機系の仮想計算機との同期を採るタイミングである第１のチェックポイントが検出される毎に、前記稼働系の仮想計算機のスナップショット差分情報を取得して前記第２の物理計算機へ送信し、
前記第２の物理計算機は、前記第１の物理計算機から受信した前記稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させ、更に、前記第１の待機系の仮想計算機と前記第２の待機系の仮想計算機との同期を採る第２のチェックポイントが検出される毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機へ送信し、
前記第３の物理計算機は、前記第２の物理計算機から受信した前記第１の待機系の仮想計算機のスナップショット差分情報に基づいて、前記第２の待機系の仮想計算機の状態を前記第２のチェックポイント時点の前記第１の待機系の仮想計算機の状態に一致させる
フォールトトレラントシステム。
【請求項２】
前記第１の物理計算機と前記第２の物理計算機とは、前記第２の物理計算機と前記第３の物理計算機とを接続する通信路に比べて高速かつ広帯域な通信路によって接続されている
請求項１に記載のフォールトトレラントシステム。
【請求項３】
前記第２のチェックポイントの周期は、前記第１のチェックポイントの周期と同じ周期か、或いはより長い周期である
請求項１または２に記載のフォールトトレラントシステム。
【請求項４】
前記第１の物理計算機と前記第２の物理計算機とは、メインサイトに設置され、
前記第３の物理計算機は、前記メインサイトと地理的に離れたバックアップサイトに設置されている
請求項１乃至３の何れか１項に記載のフォールトトレラントシステム。
【請求項５】
前記第３の物理計算機に接続され、第３の待機系の仮想計算機が動作する第４の物理計算機をさらに有し、
前記第３の物理計算機は、
前記第２の待機系の仮想計算機と前記第３の待機系の仮想計算機との同期を採るタイミングである第３のチェックポイントを検出する第３のチェックポイント検出手段をさらに有し、
前記第３の物理計算機の前記スナップショット管理手段は、前記第３のチェックポイント検出手段で前記第３のチェックポイントが検出される毎に、前記第２の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機から前記第４の物理計算機へ送信する機能をさらに有し、
前記第４の物理計算機は、
前記第３の物理計算機から受信した前記第２の待機系の仮想計算機のスナップショット差分情報に基づいて、前記第３の待機系の仮想計算機の状態を前記第３のチェックポイント時点の前記第２の待機系の仮想計算機の状態に一致させる第４のスナップショット管理手段を有する
請求項１乃至４の何れか１項に記載のフォールトトレラントシステム。
【請求項６】
第１および第３の物理計算機に接続され、
第１の待機系の仮想計算機を有し、
前記第１の物理計算機から第１のチェックポイント毎に受信する、前記第１の物理計算機上で稼働する稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させ、
前記第１の待機系の仮想計算機と前記第３の物理計算機上で稼働する第２の待機系の仮想計算機との同期を採るタイミングである第２のチェックポイントを検出する毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機へ送信する
計算機。
【請求項７】
前記第１の物理計算機とは、前記第３の物理計算機と接続されている通信路に比べて高速かつ広帯域な通信路によって接続されている
請求項６に記載の計算機。
【請求項８】
前記第２のチェックポイントの周期は、前記第１のチェックポイントの周期と同じ周期か、或いはより長い周期である
請求項６または７に記載の計算機。
【請求項９】
前記第３の物理計算機が設置されているバックアップサイトとは地理的に離れた場所に存在するメインサイトに前記第１の物理計算機と共に、設置されている
請求項６乃至８の何れか１項に記載の計算機。
【請求項１０】
第１および第３の物理計算機に接続され、且つ、第１の待機系の仮想計算機を有する計算機の同期方法であって、
前記第１の物理計算機から第１のチェックポイント毎に受信する、前記第１の物理計算機上で稼働する稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させ、
前記第１の待機系の仮想計算機と前記第３の物理計算機上で稼働する第２の待機系の仮想計算機との同期を採るタイミングである第２のチェックポイントを検出する毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機へ送信する
同期方法。
【請求項１１】
前記第１の物理計算機とは、前記第３の物理計算機と接続されている通信路に比べて高速かつ広帯域な通信路によって接続されている
請求項１０に記載の同期方法。
【請求項１２】
前記第２のチェックポイントの周期は、前記第１のチェックポイントの周期と同じ周期か、或いはより長い周期である
請求項１０または１１に記載の同期方法。
【請求項１３】
前記第３の物理計算機が設置されているバックアップサイトとは地理的に離れた場所に存在するメインサイトに前記第１の物理計算機と共に、設置されている
請求項１０乃至１２の何れか１項に記載の同期方法。
【請求項１４】
稼働系の仮想計算機が動作する第１の物理計算機と、第１の待機系の仮想計算機が動作する第２の物理計算機と、第２の待機系の仮想計算機が動作する第３の物理計算機とを有するフォールトトレラントシステムの同期方法であって、
前記第１の物理計算機が、前記稼働系の仮想計算機と前記第１の待機系の仮想計算機との同期を採るタイミングである第１のチェックポイント毎に、前記第１の稼働系の仮想計算機のスナップショット差分情報を取得して前記第１の物理計算機から前記第２の物理計算機へ送信し、
前記第２の物理計算機が、前記第１の物理計算機から受信した前記稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させ、
前記第２の物理計算機が、前記第１の待機系の仮想計算機と前記第２の待機系の仮想計算機との同期を採るタイミングである第２のチェックポイント毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第２の物理計算機から前記第３の物理計算機へ送信し、
前記第３の物理計算機が、前記第２の物理計算機から受信した前記第１の待機系の仮想計算機のスナップショット差分情報に基づいて、前記第２の待機系の仮想計算機の状態を前記第２のチェックポイント時点の前記第１の待機系の仮想計算機の状態に一致させる
フォールトトレラントシステムの同期方法。
【請求項１５】
前記第１の物理計算機と前記第２の物理計算機とは、前記第２の物理計算機と前記第３の物理計算機とを接続する通信路に比べて高速かつ広帯域な通信路によって接続されている
請求項１４に記載のフォールトトレラントシステムの同期方法。
【請求項１６】
前記第２のチェックポイントの周期は、前記第１のチェックポイントの周期と同じ周期か、或いはより長い周期である
請求項１４または１５に記載のフォールトトレラントシステムの同期方法。
【請求項１７】
前記第１の物理計算機と前記第２の物理計算機とは、メインサイトに設置され、
前記第３の物理計算機は、前記メインサイトと地理的に離れたバックアップサイトに設置されている
請求項１４乃至１６の何れか１項に記載のフォールトトレラントシステムの同期方法。
【請求項１８】
第１および第３の物理計算機に接続された計算機を、
第１の待機系の仮想計算機として機能させると共に、
前記計算機に、前記第１の物理計算機から第１のチェックポイント毎に受信する、前記第１の物理計算機上で稼働する稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させる処理、および、前記第１の待機系の仮想計算機と前記第３の物理計算機上で稼働する第２の待機系の仮想計算機との同期を採るタイミングである第２のチェックポイントを検出する毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機へ送信する処理
を実行させるためのプログラム。
【請求項１９】
前記第１の物理計算機と前記計算機とは、前記第３の計算機と前記計算機とを接続する通信路に比べて高速かつ広帯域な通信路によって接続されている
請求項１８に記載のプログラム。
【請求項２０】
前記第２のチェックポイントの周期は、前記第１のチェックポイントの周期と同じ周期か、或いはより長い周期である
請求項１８または１９に記載のプログラム。
【請求項２１】
前記第１の物理計算機と前記計算機とは、メインサイトに設置され、
前記第３の物理計算機は、前記メインサイトと地理的に離れたバックアップサイトに設置されている
請求項１８乃至２０の何れか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントシステム、同期方法、計算機、およびプログラムに関する。
【背景技術】
【０００２】
可用性を高めた計算機システムとして、ホットスタンバイ構成のＨＡクラスタ（High availability cluster）、ＦＴサーバ（Fault Tolerant server）が知られている。
【０００３】
ＨＡクラスタは、複数台のサーバを相互接続し、システムの冗長化を図る。現在稼動している（稼動系）サーバに障害が発生した場合、待機系として用意されていたサーバが処理を引き継ぐため、クラスタ全体としては異常なく稼動し続けているように見える。主な方式として、アクティブスタンバイ方式とレプリケーション方式とがある。
【０００４】
アクティブスタンバイ方式のＨＡクラスタでは、運用系と待機系でストレージを共有する。運用系は、待機系を同期させるのに必要な、アプリケーションに依存した情報を共有ストレージに書き、待機系はフェイルオーバー時にこの情報を用いてリカバリを行う。即ち、アクティブスタンバイ方式では、フェイルオーバー時にアプリケーション毎のリカバリ処理が必要になるため、アプリケーションやＯＳから見て、透過的に可用性を得ることができない。また、フェイルオーバーには時間を要し、その間はサービスが提供できなくなるという問題がある。
【０００５】
レプリケーション方式のＨＡクラスタでは、運用系と待機系が個別にストレージを持ち、運用系のアプリケーションに到着したリクエストを待機系にも転送することで、待機系に運用系と同じ状態遷移をさせる。一般に、複数の系の状態を一致させることを、同期をとると言う。運用系に障害が発生して停止した場合、待機系のアプリケーションの状態は運用系と同期しているため、運用系を切り離してサービスを継続することができる。しかし、クラスタリングするアプリケーション毎にレプリケーションの仕組みを追加しなければならないため、アプリケーションやＯＳから見て、透過的に可用性を得ることができない。
【０００６】
またレプリケーション方式のＨＡクラスタの他の形態が本発明に関連する第１の関連技術として提案されている（例えば特許文献１参照）。この第１の関連技術では、稼働系のＯＳ上で稼働する処理プログラムがメモリ上の処理データを更新すると、その処理データの更新情報を稼働系から待機系へ転送することにより、稼働系と待機系の計算機の処理データを同期させる。また、この第１の関連技術では、待機系の障害に備えるために、待機系を冗長化する。そのために、稼働系は、処理データの更新情報を全ての待機系に転送するようにしている。
【０００７】
このようにＨＡクラスタでは、アプリケーションやＯＳに可用性を意識した仕組みを追加しなければならない。これに対して、ＦＴサーバでは、そのような必要性はない。即ち、ＦＴサーバは、アプリケーションやＯＳが特別な処理を必要としないで、透過的にサービスを継続することができる。ＦＴサーバを実現する方式は、ハードウェア方式とソフトウェア方式とに大別される。
【０００８】
ハードウェア方式のＦＴサーバは、ＣＰＵ、メモリ、ストレージなどの主要なハードウェアコンポーネントを冗長化する。ＣＰＵやメモリ、チップセットを含むモジュールをＣＰＵサブシステム、各種ＩＯデバイスを含むモジュールをＩＯサブシステムと呼ぶ。ＣＰＵサブシステムとＩＯサブシステムとで二重化の方式が異なる。ＣＰＵサブシステムは、クロック単位でハードウェア的に完全に同期させる。これをロックステップと呼ぶ。両方とも完全に同じ動作をしているので、故障発生時は対象となるＣＰＵサブシステムを論理的に切り離し、正常なＣＰＵサブシステムで動作を続行させる。故に、ＣＰＵサブシステムには稼働系、待機系の概念はない。他方、ＩＯサブシステムは、一方を稼働系、他方を待機系として使用し、ソフトウェアによる二重化制御を行う。稼働系のＩＯサブシステムで故障が発生した場合、これをソフトウェアで検出し、直ちに待機系側に切り替える。ハードウェア方式のＦＴサーバは、極めて高い可用性を実現することができる。しかし、特殊なハードウェアで構成されるため、同程度の性能を持つＰＣサーバと比較して導入コストがかかる。
【０００９】
ソフトウェア方式のＦＴサーバは、物理計算機上で複数のＯＳを動作させることを可能とした仮想化技術を使用する。物理計算機上に仮想的に構築される計算機を、仮想計算機あるいは仮想マシンと呼ぶ。ソフトウェア方式のＦＴサーバでは、物理計算機を冗長化し、稼働系の仮想計算機と待機系の仮想計算機とをそれぞれ異なる物理計算機上に配置する。稼働系の仮想計算機が属する物理計算機でハードウェアの故障等の障害が発生した場合、その仮想計算機が行っている処理を他の物理計算機上の待機系の仮想計算機で継続して実行する。アプリケーションやＯＳから見て、透過的にサービスを継続するために、ソフトウェア方式のＦＴサーバでは、稼働系と待機系の仮想計算機の状態を一致させる処理、すなわち同期を行う。
【００１０】
稼働系と待機系の仮想計算機を同期させる方式には、主に仮想ロックステップ方式とチェックポイント方式の２つの方式がある。仮想ロックステップ方式は、稼働系の仮想計算機に対する入力を、待機系の仮想計算機に対しても与えることにより、待機系の仮想計算機の状態を稼働系の仮想計算機と同じように遷移させる。仮想計算機間の同期に必要なデータ量が少なくて済む利点がある反面、稼働系と待機系とでＣＰＵの種類が異なると動作しないといった課題がある。
【００１１】
他方、チェックポイント方式は、定期的に、稼働系の仮想計算機のイメージ（ＣＰＵ、メモリ、ストレージなど）を待機系に送り、待機系の仮想計算機の状態を稼働系の仮想計算機の状態に一致させる。チェックポイント方式は、仮想ロックステップ方式と比較して実装が容易であり、ＣＰＵの特定の機能に依存しないため、幅広い製品に実装できる利点がある。その反面、仮想計算機のイメージはデータ量が多いため、仮想ロックステップ方式よりも１回の同期にかかるオーバーヘッドが大きいという課題がある。
【００１２】
この課題を解決するために、前回のチェックポイント以降に更新された稼働系の仮想計算機のイメージのみを待機系に送ることが本発明に関連する第２の関連技術として提案されている（例えば非特許文献１参照）。この第２の関連技術では、チェックポイントが到来すると、稼働系の仮想計算機を一旦停止させることでメインメモリへの更新を遮断し、前回のチェックポイント以降に更新のあったメインメモリのページであるダーティページの全てを、メインメモリに設けたバッファにローカルコピーする。そして、ローカルコピーを完了すると、停止させていた稼働系の仮想計算機を再起動し、並行して、上記コピーされたダーティページを上記バッファから待機系へと転送する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００９−２１７７６５号公報
【非特許文献】
【００１４】
【非特許文献１】Brendan Cully、外５名、“Remus:High Availability via Asynchronous Virtual Machine Replication”、[online]、[平成２４年９月５日検索]、インターネット〈URL:http://www.cs.ubc.ca/~andy/papers/remus-nsdi-final.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上述したように待機系を冗長化することによって、より高い可用性を得ることができる。しかしながら、待機系を冗長化すると、稼働系の性能が低下する。その理由は、本発明に関連する第１の関連技術の箇所で述べたように、稼働系は、全ての待機系に更新データを送信しなければならないため、一部待機系との間の通信遅延が即、稼働系の処理性能の低下を招くからである。このため、特にチェックポイント方式のＦＴサーバにおいて待機系を冗長化することを考えた場合、稼働系は、数十ｍｓといった短い周期で到来するチェックポイント毎に稼働系の状態を全ての待機系へ送信しなければならないので、稼働系の性能が大幅に低下することになる。
【００１６】
本発明の目的は、上述した課題、すなわち、待機系を冗長化すると稼働系の性能が低下する、という課題を解決するフォールトトレラントシステムを提供することにある。
【課題を解決するための手段】
【００１７】
本発明の第１の観点に係るフォールトトレラントシステムは、
稼働系の仮想計算機が動作する第１の物理計算機と、前記第１の物理計算機に接続され、第１の待機系の仮想計算機が動作する第２の物理計算機と、前記第２の物理計算機に接続され、第２の待機系の仮想計算機が動作する第３の物理計算機とを有し、
前記第１の物理計算機は、前記稼働系の仮想計算機と前記第１の待機系の仮想計算機との同期を採るタイミングである第１のチェックポイントが検出される毎に、前記稼働系の仮想計算機のスナップショット差分情報を取得して前記第２の物理計算機へ送信し、
前記第２の物理計算機は、前記第１の物理計算機から受信した前記稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させ、更に、前記第１の待機系の仮想計算機と前記第２の待機系の仮想計算機との同期を採る第２のチェックポイントが検出される毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機へ送信し、
前記第３の物理計算機は、前記第２の物理計算機から受信した前記第１の待機系の仮想計算機のスナップショット差分情報に基づいて、前記第２の待機系の仮想計算機の状態を前記第２のチェックポイント時点の前記第１の待機系の仮想計算機の状態に一致させる。
【００１８】
本発明の第２の観点に係る計算機は、
第１および第３の物理計算機に接続され、
第１の待機系の仮想計算機を有し、
前記第１の物理計算機から第１のチェックポイント毎に受信する、前記第１の物理計算機上で稼働する稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させ、
前記第１の待機系の仮想計算機と前記第３の物理計算機上で稼働する第２の待機系の仮想計算機との同期を採るタイミングである第２のチェックポイントを検出する毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機へ送信する。
【００１９】
本発明の第３の観点に係る同期方法は、
第１および第３の物理計算機に接続され、且つ、第１の待機系の仮想計算機を有する計算機の同期方法であって、
前記第１の物理計算機から第１のチェックポイント毎に受信する、前記第１の物理計算機上で稼働する稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させ、
前記第１の待機系の仮想計算機と前記第３の物理計算機上で稼働する第２の待機系の仮想計算機との同期を採るタイミングである第２のチェックポイントを検出する毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機へ送信する。
【００２０】
本発明の第４の観点に係るプログラムは、
第１および第３の物理計算機に接続された計算機を、
第１の待機系の仮想計算機として機能させると共に、
前記計算機に、前記第１の物理計算機から第１のチェックポイント毎に受信する、前記第１の物理計算機上で稼働する稼働系の仮想計算機のスナップショット差分情報に基づいて、前記第１の待機系の仮想計算機の状態を前記第１のチェックポイント時点の前記稼働系の仮想計算機の状態に一致させる処理、および、前記第１の待機系の仮想計算機と前記第３の物理計算機上で稼働する第２の待機系の仮想計算機との同期を採るタイミングである第２のチェックポイントを検出する毎に、前記第１の待機系の仮想計算機のスナップショット差分情報を取得して前記第３の物理計算機へ送信する処理
を実行させる。
【発明の効果】
【００２１】
本発明は上述した構成を有するため、複数の待機系を有しながら稼働系の性能の低下を抑えることができるフォールトトレラントシステムを提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施形態のブロック図である。
【図２】本発明の第１の実施形態における各物理計算機上で実施されるスナップショットの取得と同期の実行とを含む処理の流れを示すシーケンスチャートである。
【図３】本発明の第１の実施形態における複数の待機系の仮想計算機の状態遷移図である。
【図４】本発明の第１の実施形態において稼働系障害時のフェイルオーバーの一例を示す概念図である。
【図５】本発明の第１の実施形態において稼働系障害時のフェイルオーバーの他の例を示す概念図である。
【図６】本発明の第２の実施形態のブロック図である。
【図７】本発明の第２の実施形態において、メインサイト３００に設置される物理計算機３１０、３２０の構成例を示すブロック図である。
【図８】本発明の第２の実施形態において、バックアップサイト４００に配置される物理計算機４１０、４２０の構成例を示すブロック図である。
【図９】本発明の第２の実施形態の動作を説明するためのシーケンスチャートである。
【図１０】本発明の第２の実施形態において自物理計算機に対応する仮想計算機が稼働系のときの、スナップショット取得手段、スナップショット送信手段、及び、応答受信手段の処理例を示すフローチャートである。
【図１１】本発明の第２の実施形態における同期手段の処理例を示すフローチャートである。
【図１２】本発明の第２の実施形態において、自物理計算機に対応する仮想計算機が待機系のときの、スナップショット取得手段、スナップショット送信手段、及び、応答受信手段の処理例を示すフローチャートである。
【図１３】本発明の第２の実施形態のブロック図である。
【発明を実施するための形態】
【００２３】
次に本発明の実施形態について図面を参照して詳細に説明する。
[第１の実施形態]
図１を参照すると、本発明の第１の実施形態にかかるフォールトトレラントシステム１００は、ハードウェアとして３台の物理計算機１１０、１２０、１３０を有する。また、物理計算機１１０と物理計算機１２０とは通信路１４０を通じて相互に通信可能に接続され、物理計算機１２０と物理計算機１３０とは通信路１５０を通じて相互に通信可能に接続されている。
【００２４】
物理計算機１１０は、仮想計算機環境を提供するハイパーバイザ１１１と、このハイパーバイザ１１１が提供する仮想計算機環境の下で動作する仮想計算機１１２とを有する。また、物理計算機１２０は、仮想計算機環境を提供するハイパーバイザ１２１と、このハイパーバイザ１２１が提供する仮想計算機環境の下で動作する仮想計算機１２２とを有する。さらに、物理計算機１３０は、仮想計算機環境を提供するハイパーバイザ１３１と、このハイパーバイザ１３１が提供する仮想計算機環境の下で動作する仮想計算機１３２とを有する。
【００２５】
ここで、仮想計算機１１２は稼働系として動作し、仮想計算機１２２、１３２は待機系として動作する。即ち、仮想計算機１１２が動作する物理計算機１１０にハードウェア障害等の障害が発生すると、仮想計算機１１２が行っている処理を物理計算機１２０上の待機系の仮想計算機１２２で継続して実行する。また、仮想計算機１１２が動作する物理計算機１１０および仮想計算機１２２が動作する物理計算機１２０にハードウェア障害等の障害が発生すると、仮想計算機１１２が行っている処理を物理計算機１３０上の待機系の仮想計算機１３２で継続して実行する。
【００２６】
物理計算機１１０のハイパーバイザ１１１は、スナップショット管理部１１３とチェックポイント検出部１１４とを有する。
【００２７】
チェックポイント検出部１１４は、稼働系の仮想計算機１１２と待機系の仮想計算機１２２との同期を採るタイミングであるチェックポイントを検出する機能を有する。例えば、チェックポイント検出部１１４は、予め設定された時間周期Ｔ１毎にチェックポイントが到来したものと検出する。以下、チェックポイント検出部１１４が時刻ｔで検出したチェックポイントをＣＴ１ｔと記す。
【００２８】
また、スナップショット管理部１１３は、チェックポイント検出部１１４でチェックポイントが検出される毎に、稼働系の仮想計算機１１２のスナップショットを取得して物理計算機１１０から物理計算機１２０へ送信するスナップショット取得機能を有する。このスナップショット取得機能では、チェックポイントＣＴ１ｔにおける仮想計算機１１２の状態をスナップショットとして取得する。スナップショットとして取得する仮想計算機１１２の状態は、当該取得したスナップショットに基づいて仮想計算機１１２の状態を当該スナップショット時点に復元するのに必要なデータ、例えば仮想計算機１１２に割り当てられているＣＰＵの状態（プログラムカウンタやレジスタの状態）やメモリの状態を含む。
【００２９】
物理計算機１２０のハイパーバイザ１２１は、スナップショット管理部１２３とチェックポイント検出部１２４とを有する。
【００３０】
チェックポイント検出部１２４は、待機系の仮想計算機１２２と待機系の仮想計算機１３２との同期を採るタイミングであるチェックポイントを検出する機能を有する。例えば、チェックポイント検出部１２４は、予め設定された時間周期Ｔ２毎にチェックポイントが到来したものと検出する。ここで、時間周期Ｔ２は、上述した時間周期Ｔ１と同じか、或いは長い周期として設定される。即ち、Ｔ２≧Ｔ１である。以下、チェックポイント検出部１２４が時刻ｔで検出したチェックポイントをＣＴ２ｔと記す。
【００３１】
また、スナップショット管理部１２３は、物理計算機１１０から受信した稼働系の仮想計算機１１２のスナップショットに基づいて、待機系の仮想計算機１２２の状態を稼働系の仮想計算機１１２の状態に一致させる同期機能と、チェックポイント検出部１２４でチェックポイントが検出される毎に、待機系の仮想計算機１２２のスナップショットを取得して物理計算機１２０から物理計算機１３０へ送信するスナップショット取得機能とを有する。上記同期機能では、物理計算機１１０から受信した稼働系の仮想計算機１１２のチェックポイントＣＴ１ｔ時点のスナップショットに基づいて、待機系の仮想計算機１２２の状態をチェックポイントＣＴ１ｔ時点の稼働系の仮想計算機１１２の状態に一致させる。また、上記スナップショット取得機能では、チェックポイントＣＴ２ｔにおける仮想計算機１２２の状態をスナップショットとして取得する。
【００３２】
物理計算機１３０のハイパーバイザ１３１は、スナップショット管理部１３３を有する。スナップショット管理部１３３は、物理計算機１２０から受信した待機系の仮想計算機１２２のスナップショットに基づいて、待機系の仮想計算機１３２の状態を待機系の仮想計算機１２２の状態に一致させる同期機能を有する。より具体的には、物理計算機１２０から受信した待機系の仮想計算機１２２のチェックポイントＣＴ２ｔ時点のスナップショットに基づいて、待機系の仮想計算機１３２の状態をチェックポイントＣＴ２ｔ時点の待機系の仮想計算機１２２の状態に一致させる。
【００３３】
次に本実施形態にかかるフォールトトレラントシステム１００の動作を説明する。図２は、本実施形態の各物理計算機上で実施されるスナップショットの取得と同期の実行とを含む処理の流れを示すシーケンスチャートである。
【００３４】
物理計算機１１０のハイパーバイザ１１１が有するチェックポイント検出部１１４は、時間周期Ｔ１の間隔でチェックポイントＣＰ１ｔを検出する。図２には、時刻ｔ１、ｔ３、ｔ５のそれぞれで、チェックポイント検出部１１４がチェックポイントＣＴ１ｔ１、ＣＴ１ｔ３、ＣＴ１ｔ５を検出している。各々のチェックポイント時点では、以下のような処理が行われる。
【００３５】
時刻ｔ１において、チェックポイント検出部１１４がチェックポイントＣＰ１ｔ１を検出すると、自ハイパーバイザ１１１のスナップショット管理部１１３へ当該チェックポイントＣＰ１ｔ１を通知する（Ｓ１１）。スナップショット管理部１１３は、自物理計算機１１０上の稼働系の仮想計算機１１２の時刻ｔ１時点の状態をスナップショットとして取得し（Ｓ１２）、通信路１４０を通じて物理計算機１２０へ送信する（Ｓ１３）。物理計算機１２０のハイパーバイザ１２１が有するスナップショット管理部１２３は、物理計算機１１０から送信されてきた上記スナップショットを受信すると、当該受信したスナップショットに基づき、自物理計算機１２０上の待機系の仮想計算機１２２の状態を時刻ｔ１時点の稼働系の仮想計算機１１２の状態に一致させる（Ｓ１４）。
【００３６】
また時刻ｔ３において、チェックポイント検出部１１４がチェックポイントＣＰ１ｔ３を検出すると、時刻ｔ１において実行された上記処理Ｓ１１〜Ｓ１４と同様の処理Ｓ２１〜Ｓ２４が実行されることにより、物理計算機１２０上の待機系の仮想計算機１２２の状態が時刻ｔ３時点の稼働系の仮想計算機１１２の状態に一致させられる。
【００３７】
さらに時刻ｔ５において、チェックポイント検出部１１４がチェックポイントＣＰ１ｔ５を検出すると、時刻ｔ１またはｔ３において実行された上記処理Ｓ１１〜Ｓ１４またはＳ２１〜Ｓ２４と同様の処理Ｓ３１〜Ｓ３４が実行されることにより、物理計算機１２０上の待機系の仮想計算機１２２の状態が時刻ｔ５時点の稼働系の仮想計算機１１２の状態に一致させられる。
【００３８】
他方、物理計算機１２０のハイパーバイザ１２１が有するチェックポイント検出部１２４は、時間周期Ｔ２の間隔でチェックポイントＣＰ２ｔを検出する。図２には、時刻ｔ２、ｔ４のそれぞれで、チェックポイント検出部１２４がチェックポイントＣＴ２ｔ２、ＣＴ２ｔ４を検出している。ここで、ｔ１＜ｔ２＜ｔ３＜ｔ４＜ｔ５である。各々のチェックポイント時点では、以下のような処理が行われる。
【００３９】
時刻ｔ２において、チェックポイント検出部１２４がチェックポイントＣＰ２ｔ２を検出すると、自ハイパーバイザ１２１のスナップショット管理部１２３へ当該チェックポイントＣＰ２ｔ２を通知する（Ｓ１５）。スナップショット管理部１２３は、自物理計算機１２０上の待機系の仮想計算機１２２の時刻ｔ２時点の状態をスナップショットとして取得し（Ｓ１６）、通信路１５０を通じて物理計算機１３０へ送信する（Ｓ１７）。物理計算機１３０のハイパーバイザ１３１が有するスナップショット管理部１３３は、物理計算機１２０から送信されてきた上記スナップショットを受信すると、当該受信したスナップショットに基づき、自物理計算機１３０上の待機系の仮想計算機１３２の状態を時刻ｔ２時点の待機系の仮想計算機１２２の状態に一致させる（Ｓ１８）。
【００４０】
また時刻ｔ４において、チェックポイント検出部１２４がチェックポイントＣＰ２ｔ４を検出すると、時刻ｔ２において実行された上記処理Ｓ１５〜Ｓ１８と同様の処理Ｓ２５〜Ｓ２８が実行されることにより、物理計算機１３０上の待機系の仮想計算機１３２の状態が時刻ｔ４時点の待機系の仮想計算機１２２の状態に一致させられる。
【００４１】
図３は、待機系の仮想計算機１２２、１３２の状態遷移図である。待機系の仮想計算機１２２は、稼働系の仮想計算機１１２の時刻ｔ１の状態、時刻ｔ３の状態、時刻ｔ５の状態へと順に遷移する。他方、待機系の仮想計算機１３２は、待機系の仮想計算機１２２の時刻ｔ２の状態、時刻ｔ４の状態へと順に遷移する。ここで、待機系の仮想計算機１２２の状態は、稼働系の仮想計算機１１２の或る時点の状態であるから、待機系の仮想計算機１３２の状態は、待機系の稼働計算機１２２の或る時点の状態であると同時に、稼働系の仮想計算機１１２の或る時点の状態であるとも言える。従って、待機系の仮想計算機１２２の時刻ｔ２、ｔ４時点の状態が、稼働系の仮想計算機１１２の時刻ｔ１、ｔ３時点の状態である場合、待機系の仮想計算機１３２は、稼働系の仮想計算機１１２の時刻ｔ１の状態、時刻ｔ３の状態へと順に遷移する。これによって、仮想計算機１２２と仮想計算機１３２との双方が、稼働系の仮想計算機１１２の待機系となる。
【００４２】
従って、例えば図４に示されるように、物理計算機１１０にハードウェア障害等の障害が発生した場合、物理計算機１１０の稼働系の仮想計算機１１２が行っている処理を物理計算機１２０上の待機系の仮想計算機１２２で継続して実行するフェイルオーバーが可能である。
【００４３】
また、例えば図５に示されるように、時刻ｔ５以降に物理計算機１１０および物理計算機１２０の双方にハードウェア障害等の障害が発生した場合、物理計算機１１０の稼働系の仮想計算機１１２が行っている処理を物理計算機１３０上の待機系の仮想計算機１３２で継続して実行するフェイルオーバーが可能である。
【００４４】
このように本実施形態によれば、複数の待機系を有しながら稼働系の性能の低下を抑えることができるフォールトトレラントシステムを提供することができる。その理由は、稼働系の仮想計算機１１２を有する物理計算機１１０は、所定のチェックポイント毎に稼働系の仮想計算機１１２のスナップショットを取得して物理計算機１２０に送信すれば、当該物理計算機１２０上に待機系の仮想計算機１２２を生成することができ、他の待機系の仮想計算機１３２は、物理計算機１２０の自律的な動作によって他の物理計算機１３０上に生成されるためである。
【００４５】
[第２の実施形態]
次に、本発明にかかるフォールトトレラントシステムの第２の実施形態について詳細に説明する。本実施形態にかかるフォールトトレラントシステムは、遠隔地バックアップ方式によりディザスタリカバリを実現する。
【００４６】
図６を参照すると、本発明の第２の実施形態にかかるフォールトトレラントシステム２００は、ハードウェアとしてメインサイト３００に設置された２台の物理計算機３１０、３２０と、メインサイト３００から地理的に離れたバックアップサイト４００に設置された２台の物理計算機４１０、４２０とを有する。また、物理計算機３１０と物理計算機３２０とは通信路３３０を通じて相互に通信可能に接続され、物理計算機３２０と物理計算機４１０とはＷＡＮ(Wide Area Network)等のネットワーク４００を通じて相互に通信可能に接続され、物理計算機４１０と物理計算機４２０とは通信路４３０を通して相互に通信可能に接続されている。ここで、通信路３３０、４３０は、ネットワーク５００に比較して高速かつ広帯域の通信路である。
【００４７】
図７を参照すると、メインサイト３００に設置された物理計算機３１０、３２０は、それぞれ仮想計算機環境を提供するハイパーバイザ３１１、３２１と、このハイパーバイザ３１１、３２１が提供する仮想計算機環境の下で動作する仮想計算機３１２、３２２とを有する。また、図８を参照すると、バックアップサイト４００に設置された物理計算機４１０、４２０は、それぞれ仮想計算機環境を提供するハイパーバイザ４１１、４２１と、このハイパーバイザ４１１、４２１が提供する仮想計算機環境の下で動作する仮想計算機４１２、４２２とを有する。
【００４８】
ここで、仮想計算機３１２は稼働系として動作し、仮想計算機３２２、４１２、４２２は待機系として動作する。即ち、仮想計算機３１２が動作する物理計算機３１０にハードウェア障害等の障害が発生すると、仮想計算機３１２が行っている処理を物理計算機３２０上の仮想計算機３２２で継続して実行する。更に、物理計算機３２０に障害が発生すると、仮想計算機３２２が実行している処理を、バックアップサイト４００に設置されている物理計算機４１０上の仮想計算機４１２で継続して実行する。更に、物理計算機４１０に障害が発生すると、仮想計算機４１２が行っている処理を物理計算機４２０上の仮想計算機４２２で継続して実行する。
【００４９】
メインサイト３００に設置された物理計算機３１０のハイパーバイザ３１１は、スナップショット管理部３１３と、チェックポイント検出部３１４とを有する。
【００５０】
チェックポイント検出部３１４は、仮想計算機３１２と仮想計算機３２２との同期を採るためのタイミングであるチェックポイントを検出する機能を有する。例えば、チェックポイント検出部３１４は、予め定められている時間周期Ｔｃｐ１毎にチェックポイントが到来したものと検出する。
【００５１】
スナップショット管理部３１３は、スナップショット取得手段３１５と、スナップショット送信手段３１６と、応答受信手段３１７とを有する。
【００５２】
スナップショット取得手段３１５は、チェックポイント検出部３１４がチェックポイントを検出する毎に、仮想計算機３１２の動作を停止させる機能や、前回のチェックポイントにおける仮想計算機３１２の状態を示すスナップショットと今回のチェックポイントにおける仮想計算機３１２の状態を示すスナップショットとの差分を示す差分情報（スナップショット差分情報）を取得する機能を有する。
【００５３】
スナップショット送信手段３１６は、スナップショット取得手段３１５が取得したスナップショット差分情報を、通信路３３０を介して物理計算機３２０へ送信する機能を有する。
【００５４】
応答受信手段３１７は、スナップショット差分情報を正常受信したことを示す応答信号が物理計算機３２０から送られてきたとき、仮想計算機３１２を起動する機能を有する。
【００５５】
スナップショット管理部３１３、及び、チェックポイント検出部３１４はコンピュータによって実現可能であり、その場合は、例えば次のようにする。コンピュータをスナップショット管理部３１３、及び、チェックポイント検出部３１４として機能させるためのプログラムを記録したディスク、半導体メモリ、その他の記録媒体を用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上にスナップショット管理部３１３、及び、チェックポイント検出部３１４を実現する。
【００５６】
また、物理計算機３２０のハイパーバイザ３２１は、スナップショット管理部３２３と、チェックポイント検出部３２４とを有する。
【００５７】
チェックポイント検出部３２４は、仮想計算機３２２と仮想計算機４１２との同期を採るタイミングであるチェックポイントを検出する機能を有する。例えば、チェックポイント検出部３２４は、予め定められている時間周期Ｔｃｐ２毎にチェックポイントが到来したものと検出する。なお、上記時間周期Ｔｃｐ２は、上述した時間周期Ｔｃｐ１と同じ周期か、或いはよりも長い周期（Ｔｃｐ２≧Ｔｃｐ１）として設定される。
【００５８】
スナップショット管理部３２３は、スナップショット取得手段３２５と、スナップショット送信手段３２６と、応答受信手段３２７と、同期手段３２８とを有する。
【００５９】
スナップショット取得手段３２５は、仮想計算機３２２が稼働系になっている場合と、待機系になっている場合とで異なる処理を行う。仮想計算機３２２が稼働系になっている場合は、チェックポイント検出部３２４でチェックポイントが検出される毎に、仮想計算機３２２を停止させ、その後、仮想計算機３２２についてのスナップショット差分情報を取得する。また、待機系になっている場合は、チェックポイント検出部３２４でチェックポイントが検出される毎に、仮想計算機３２２についてのスナップショット差分情報を取得する。
【００６０】
スナップショット送信手段３２６は、スナップショット取得手段３２５が取得したスナップショット差分情報を、ネットワーク５００を介して物理計算機４１０へ送信する機能を有する。
【００６１】
応答受信手段３２７は、仮想計算機３２２が稼働系になっている場合と、待機系になっている場合とで異なる処理を行う。仮想計算機３２２が稼働系になっている場合は、物理計算機４１０から送られてくる応答信号を受信することにより、仮想計算機３２２を起動し、その後、制御をスナップショット取得手段３２５に渡す。また、仮想計算機３２２が待機系になっている場合は、物理計算機４１０から送られてくる応答信号を受信することにより、制御をスナップショット取得手段３２５に渡す。
【００６２】
同期手段３２８は、物理計算機３１０から送られてくる仮想計算機３１２についてのスナップショット差分情報を正常受信したとき、そのことを示す応答信号を物理計算機３１０へ送信する機能や、受信したスナップショット差分情報に基づいて、待機系の仮想計算機３２２の状態を稼働系の仮想計算機３１２の最新のチェックポイント時の状態と一致させる機能を有する。
【００６３】
なお、スナップショット管理部３２３、及び、チェックポイント検出部３２４は、前述したと同様にして、コンピュータによって実現することができる。
【００６４】
一方、図８を参照すると、バックアップサイト４００に設置された物理計算機４１０のハイパーバイザ４１１は、スナップショット管理部４１３と、チェックポイント検出部４１４とを有する。
【００６５】
チェックポイント検出部４１４は、仮想計算機４１２と仮想計算機４２２との同期を採るタイミングであるチェックポイントを検出する機能を有する。例えば、チェックポイント検出部４１４は、予め定められた所定の時間周期Ｔｃｐ３毎にチェックポイントが到来したものと検出する。なお、上記時間周期Ｔｃｐ３は、上述した時間周期Ｔｃｐ２と同じか、或いはよりも長い周期（Ｔｃｐ３≧Ｔｃｐ２）として設定される。
【００６６】
スナップショット管理部４１３は、スナップショット取得手段４１５と、スナップショット送信手段４１６と、応答受信手段４１７と、同期手段４１８とを有する。
【００６７】
スナップショット取得手段４１５は、仮想計算機４１２が稼働系になっている場合と、待機系になっている場合とで異なる処理を行う。仮想計算機４１２が稼働系になっている場合は、チェックポイント検出部４１４でチェックポイントが検出される毎に、仮想計算機４１２を停止させ、その後、仮想計算機４１２についてのスナップショット差分情報を取得する。また、待機系になっている場合は、チェックポイント検出部４１４でチェックポイントが検出される毎に、仮想計算機４１２についてのスナップショット差分情報を取得する。
【００６８】
スナップショット送信手段４１６は、スナップショット取得手段４１５が取得したスナップショット差分情報を、通信路４３０を介して物理計算機４２０へ送信する機能を有する。
【００６９】
応答受信手段４１７は、仮想計算機４１２が稼働系になっている場合と、待機系になっている場合とで異なる処理を行う。仮想計算機４１２が稼働系になっている場合は、物理計算機４２０から送られてくる応答信号を受信することにより、仮想計算機４１２を起動し、その後、制御をスナップショット取得手段４１５に渡す。また、仮想計算機４１２が待機系になっている場合は、物理計算機４２０から送られてくる応答信号を受信することにより、制御をスナップショット取得手段４１５に渡す。
【００７０】
同期手段４１８は、物理計算機３２０からの仮想計算機３２２についてのスナップショット差分情報を正常受信したとき、物理計算機３２０に対して応答信号を返す機能や、受信したスナップショット差分情報に基づいて、仮想計算機４１２の状態を仮想計算機３２２の最新のチェックポイント時の状態に一致させる機能を有する。
【００７１】
なお、スナップショット管理部４１３、及び、チェックポイント検出部４１４は、前述したと同様にしてコンピュータによって実現することができる。
【００７２】
また、物理計算機４２０のハイパーバイザ４２１が備えているスナップショット管理部４２３は、同期手段４２８を有する。
【００７３】
同期手段４２８は、物理計算機４１０から送られてきた仮想計算機４１２についてのスナップショット差分情報を正常受信したとき、応答信号を物理計算機４１０に返す機能や、受信したスナップショット差分情報に基づいて、仮想計算機４２２の状態を仮想計算機４１２の最新のチェックポイント時の状態に一致させる機能を有する。
【００７４】
なお、スナップショット管理部４２３は、前述したと同様にして、コンピュータによって実現可能である。
【００７５】
次に、図９〜図１２を参照して本実施形態にかかるフォールトトレラントシステム２００の動作を説明する。なお、図９は物理計算機３２０、４１０、４２０上の仮想計算機３２２、４１２、４２２の状態遷移を説明するためのシーケンスチャート、図１０は仮想計算機３１２、３２２、４１２が稼働系になっているときのスナップショット管理部３１３、３２３、４１３の処理例を示すフローチャート、図１１は同期手段３２８、４１８、４２８の処理例を示すフローチャート、図１２は仮想計算機３２２、４１２が待機系になっているときのスナップショット管理部３２３、４１３の処理例を示すフローチャートである。
【００７６】
図９に示すように、時刻ｔ１１において、稼働系の仮想計算機３１２が動作している物理計算機３１０内のチェックポイント検出部３１４がチェックポイント（ＣＰ）を検出したとする。
【００７７】
スナップショット取得手段３１５は、チェックポイント検出部３１４が時刻ｔ１１においてチェックポイントを検出すると（図１０のステップＳ１０１がＹｅｓ）、仮想計算機３１２を一時停止させ、その後、前回のチェックポイントにおける仮想計算機３１２の状態を示すスナップショットと今回のチェックポイントにおける仮想計算機の状態を示すスナップショットとの差分を示すスナップショット差分情報を取得する（ステップＳ１０２、Ｓ１０３）。ここで、スナップショット差分情報の取得方法としては、例えば、前回のチェックポイント以降に更新されたページ（ダーティページ）の内容をスナップショット差分情報として取得する方法を採用することができる。
【００７８】
その後、スナップショット送信手段３１６が、上記スナップショット差分情報を、通信路３３０を介して物理計算機３２０へ送信する（ステップＳ１０４）。
【００７９】
物理計算機３２０内の同期手段３２８は、スナップショット差分情報を受信すると（図１１のステップＳ１１１がＹｅｓ）、物理計算機３１０に対して応答信号を返す（ステップＳ１１２）。その後、同期手段３２８は、受信したスナップショット差分情報に基づいて、待機系の仮想計算機３２２の状態を稼働系の仮想計算機３１２の最新のチェックポイント時の状態と一致させ（ステップＳ１１３）、再び、ステップＳ１１１の処理を行う。
【００８０】
物理計算機３１０内の応答受信手段３１７は、応答信号を受信すると（図１０のステップＳ１０５がＹｅｓ）、物理計算機３２０においてスナップショット差分情報が正常受信されたと判断し、仮想計算機３１２の動作を再開させる（ステップＳ１０６）。ここで、チェックポイント検出部３１４がチェックポイントを検出してから応答受信手段３１７が応答信号を受信するまでの間（図９の時刻１１から時刻１２までの間）は、仮想計算機３１２の動作は一時的に停止する。しかし、本実施形態では、物理計算機３１０、３２０を近接配置し、且つ、ネットワーク５００に比較して広帯域の通信路３３０によって物理計算機３１０、３２０を接続しているので、通信応答の遅延を短くでき、その結果、仮想計算機３１２の停止時間を短くすることができる。
【００８１】
その後、時刻ｔ１３において、チェックポイント検出部３１４がチェックポイントを検出すると、スナップショット取得手段３１５、スナップショット送信手段３１６、応答受信手段３１７、および、同期手段３２８において前述した処理と同様の処理（図１０および図１１のフローチャートに示す処理）が行われ、待機系の仮想計算機３２２の状態が、稼働系の仮想計算機３１２の時刻ｔ１３の状態に遷移する。
【００８２】
その後、時刻ｔ１５において、物理計算機３２０内のチェックポイント検出部３２４が、チェックポイントを検出すると（図１２のステップＳ１２１がＹｅｓ）、スナップショット取得手段３２５が仮想計算機３２２についてのスナップショット差分情報を取得し、スナップショット送信手段３２６がスナップショット差分情報をネットワーク５００を介して物理計算機４１０へ送信する（ステップＳ１２２、Ｓ１２３）。
【００８３】
ここで、物理計算機３２０内のチェックポイント検出部３２４がチェックポイントを検出する時間周期Ｔｃｐ２は、前述したように物理計算機３１０内のチェックポイント検出部３１４がチェックポイントを検出する時間周期Ｔｃｐ１よりも長い周期になっている。このため、例えば、時間周期Ｔｃｐ２が時間周期Ｔｃｐ１の５倍であれば、スナップショット取得手段３２５は、物理計算機３１０からスナップショット差分情報が５回送られてくる毎に仮想計算機３２２についてのスナップショット差分情報を取得することになる。一般的に、プログラムの局所性により、物理計算機３２０における前回のチェックポイントから今回のチェックポイントまでの間に、物理計算機３１０から同じダーティページの内容が送られてくる確率が高い。このため、チェックポイント検出部３２４の時間周期Ｔｃｐ２をチェックポイント検出部３１４の時間周期Ｔｃｐ１よりも長くし、物理計算機３１０からスナップショット差分情報が複数回送られてくる毎に、仮想計算機３２２についてのスナップショット差分情報を取得する方が、時間周期Ｔｃｐ１、Ｔｃｐ２を同じ周期とし、物理計算機３１０からスナップショット差分情報が１回送られてくる毎に、スナップショット差分情報を取得する場合に比較して、トータルなデータ転送量を少なくすることができる。
【００８４】
物理計算機４１０内の同期手段４１８は、物理計算機３２０からスナップショット差分情報を受信すると（図１１のステップＳ１１１がＹｅｓ）、応答信号を物理計算機３２０に返した後、上記スナップショット差分情報に基づいて仮想計算機４１２の状態を仮想計算機３２２の最新のチェックポイント時の状態と一致させる（ステップＳ１１２、Ｓ１１３）。ここで、仮想計算機３２２の最新のチェックポイント時の状態は、仮想計算機３１２の時刻ｔ１３の状態と一致しているので、仮想計算機４１２の状態は仮想計算機３１２の時刻ｔ１３の状態に遷移することになる。
【００８５】
物理計算機３２０内の応答受信手段３２７は、時刻ｔ１６で物理計算機４１０からの応答信号を受信すると（ステップＳ１２４がＹｅｓ）、制御をスナップショット取得手段３２５に渡し、ステップＳ１２１の処理を行わせる。なお、時刻ｔ１５から時刻ｔ１６までの間においても、物理計算機３１０と物理計算機３２０との間でスナップショット差分情報および応答信号がやり取りされるが、図９では図示を省略している。
【００８６】
ここで、物理計算機３２０と物理計算機４１０とは地理的に離れた地点に設置され、且つ、ネットワーク５００は通信路３３０に比較して帯域が狭いので、物理計算機３１０、３２０間に比較して通信応答の遅延が大きなものとなる。しかし、メインサイト３００内の物理計算機３１０と物理計算機３２０との間で通信応答の遅延は非常に小さいので、物理計算機３２０、４１０間の通信応答の遅延が大きくとも、稼働系の仮想計算機３１２の処理能力を低下させることはほとんどない。
【００８７】
その後、時刻ｔ１７において、物理計算機４１０内のチェックポイント検出部４１４がチェックポイントを検出すると（図１２のステップＳ１２１がＹｅｓ）、スナップショット取得手段４１５が仮想計算機４１２についてのスナップショット差分情報を取得し、スナップショット送信手段４１６がスナップショット差分情報を通信路４３０を介して物理計算機４２０へ送信する（ステップＳ１２２、Ｓ１２３）。
【００８８】
物理計算機４２０の同期手段４２８は、スナップショット差分情報を受信すると（図１１のステップＳ１１１がＹｅｓ）、物理計算機４１０に応答信号を返し、その後、仮想計算機４２２の状態を、仮想計算機４１２の最新のチェックポイント時に状態と一致させる（ステップＳ１１２、Ｓ１１３）。ここで、仮想計算機４１２の最新のチェックポイント時の状態は、仮想計算機３１２の時刻ｔ１３の状態と一致するので、仮想計算機４２２の状態は、仮想計算機３１２の時刻ｔ１３の状態に遷移する。
【００８９】
以上説明したように、仮想計算機３２２、４１２、４２２の状態は、稼働系の仮想計算機３１２の或る時刻の状態と一致したものになる。従って、仮想計算機３２２、４１２、４２２が稼働系の仮想計算機３１２の待機系になる。
【００９０】
次に、稼働系の仮想計算機３１２が動作している物理計算機３１０にハードウェア障害等の障害が発生した場合の動作を説明する。
【００９１】
物理計算機３２０上のスナップショット管理部３２３は、稼働系の仮想計算機３１２が動作している物理計算機３１０における障害の有無を検出する。障害の検出方法は任意である。例えば、スナップショット管理部３２３は、物理計算機３１０から通信路３３０経由で物理計算機３２０に対して一定周期で送信される特定の信号（例えば、ハートビート信号）の受信の有無を検出することによって障害の有無を検出してよい。
【００９２】
スナップショット管理部３２３は、物理計算機３１０の障害を検出すると、自物理計算機３２０に対応する仮想計算機３２２を待機系から稼働系に切り替える。これにより、新たに稼働系になった仮想計算機３２２が、仮想計算機３１２で行われていた処理を継続して実行する（フェイルオーバー）。また、スナップショット管理部３２３内のスナップショット取得手段３２５、スナップショット送信手段３２６、及び、応答受信手段３２７は、自物理計算機３２０に対応する仮想計算機３２２が稼働系に切り替わったので、図１２のフローチャートに示す処理の代わりに、図１０のフローチャートに示す処理を実行する。
【００９３】
次に、物理計算機３１０に加え、物理計算機３２０にも障害が発生した場合の動作を説明する。
【００９４】
物理計算機４１０上のスナップショット管理部４１３は、稼働系の仮想計算機３２２が動作している物理計算機３２０の障害を検出すると、自物理計算機４１０に対応する仮想計算機４１２を待機系から稼働系に切り替える。これにより、新たに稼働系になった仮想計算機４１２が、仮想計算機３２２で行われている処理を継続して実行する。また、スナップショット管理部４１３内のスナップショット取得手段４１５、スナップショット送信手段４１６、及び、応答受信手段４１７は、自物理計算機４１０に対応する仮想計算機４１２が待機系に切り替わったので、図１２のフローチャートに示す処理の代わりに、図１０のフローチャートに示す処理を実行する。
【００９５】
次に、物理計算機３１０、３２０に加えて、物理計算機４１０に障害が発生した場合の動作を説明する。
【００９６】
物理計算機４２０上のスナップショット管理部４２３は、稼働系の仮想計算機４１２が動作している物理計算機４１０の障害を検出すると、自物理計算機４２０に対応する仮想計算機４２２を待機系から稼働系に切り替える。これにより、新たに稼働系になった仮想計算機４２２が、仮想計算機４１２で行われている処理を継続して実行する。また、スナップショット管理部４２３は、自物理計算機４２０に対応する仮想計算機４２２が待機系から稼働系に切り替わったので、図１２のフローチャートに示す処理の代わりに、図１０のフローチャートに示す処理を実行する。
【００９７】
なお、チェックポイント検出部３２４、４１４に関し、自物理計算機３２０、４１０に対応する仮想計算機３３２、４１２が待機系から稼働系に切り替わった場合は、チェックポイントを検出する時間周期Ｔｃｐ２、Ｔｃｐ３をより短い時間周期Ｔｃｐ２’、Ｔｃｐ３’（Ｔｃｐ１＞Ｔｃｐ１’、Ｔｃｐ２＞Ｔｃｐ２’）に変更するようにしても良い。
【００９８】
本実施形態によれば、チェックポイント検出部３２４によるチェックポイントの周期をチェックポイント検出部３１４によるチェックポイントの周期よりも長くしているので、ネットワーク５００を介して転送するスナップショット差分情報のデータ量を少なくすることができる。更に、本実施形態では、物理計算機３１０、３２０をメインサイト３００に設置し、物理計算機４１０、４２０をメインサイト４００と地理的に離れたバックアップサイト４００に設置しているので、ディザスタリカバリが可能になる。
【００９９】
[第３の実施形態]
次に、本発明に係るフォールトトレラントシステムの第３の実施形態について説明する。
【０１００】
図１３を参照すると、本実施形態に係るフォールトトレラントシステムは、稼働系の仮想計算機６１０が動作する第１の物理計算機６００と、上記第１の物理計算機６００に接続され、第１の待機系の仮想計算機７１０が動作する第２の物理計算機７００と、上記第２の物理計算機７００に接続され、第２の待機系の仮想計算機８１０が動作する第３の物理計算機８００とを有している。
【０１０１】
そして、第１の物理計算機６００は、上記稼働系の仮想計算機６１０と上記第１の待機系の仮想計算機７１０との同期を採るタイミングである第１のチェックポイントが検出される毎に、上記稼働系の仮想計算機６１０のスナップショット差分情報を取得して上記第２の物理計算機７００へ送信する。
【０１０２】
また、第２の物理計算機７００は、上記第１の物理計算機６００から受信した上記稼働系の仮想計算機６１０のスナップショット差分情報に基づいて、上記第１の待機系の仮想計算機７１０の状態を上記第１のチェックポイント時点の上記稼働系の仮想計算機６１０の状態に一致させ、更に、上記第１の待機系の仮想計算機７１０と上記第２の待機系の仮想計算機８１０との同期を採る第２のチェックポイントが検出される毎に、上記第１の待機系の仮想計算機７１０のスナップショット差分情報を取得して上記第３の物理計算機８００へ送信する。
【０１０３】
また、第３の物理計算機８００は、上記第２の物理計算機７００から受信した上記第１の待機系の仮想計算機７１０のスナップショット差分情報に基づいて、上記第２の待機系の仮想計算機８１０の状態を上記第２のチェックポイント時点の前記第１の待機系の仮想計算機７１０の状態に一致させる。
【０１０４】
このように本実施形態によれば、複数の待機系を有しながら稼働系の性能の低下を抑えることができるフォールトトレラントシステムを提供することができる。その理由は、稼働系の仮想計算機６００を有する第１の物理計算機６００は、所定のチェックポイント毎に稼働系の仮想計算機６１０のスナップショット差分情報を取得して物理計算機７００に送信すれば、第２の物理計算機７００上に第１の待機系の仮想計算機７１０を生成することができ、第２の待機系の仮想計算機８１０は、第２の物理計算機７００の自律的な動作によって第３の物理計算機８００上に生成されるためである。
【符号の説明】
【０１０５】
１００  フォールトトレラントシステム
１１０、１２０、１３０  物理計算機
１１１、１２１、１３１  ハイパーバイザ
１１２、１２２、１３２  仮想計算機
１１３、１２３、１３３  スナップショット管理部
１１４、１２４  チェックポイント検出部
２００  フォールトトレラントシステム
３００  メインサイト
３１０、３２０  物理計算機
３１１、３２１  ハイパーバイザ
３１２、３２２  仮想計算機
３１３、３２３  スナップショット管理部
３１４、３２４  チェックポイント検出部
３１５、３２５  スナップショット取得手段
３１６、３２６  スナップショット送信手段
３１７、３２７  応答受信手段
３２８  同期手段
３３０  通信路
４００  バックアップサイト
４１０、４２０  物理計算機
４１１，４２１  ハイパーバイザ
４１２、４２２  仮想計算機
４１３、４２３  スナップショット管理部
４１４  チェックポイント検出部
４１５  スナップショット取得手段
４１６  スナップショット送信手段
４１７  応答受信手段
４１８、４２８  同期手段
４３０  通信路
５００  ネットワーク
６００、７００、８００  物理計算機
６１０、７１０、８１０  仮想計算機
【図１】
2014102724.tif 000003
【図２】
2014102724.tif 000004
【図３】
2014102724.tif 000005
【図４】
2014102724.tif 000006
【図５】
2014102724.tif 000007
【図６】
2014102724.tif 000008
【図７】
2014102724.tif 000009
【図８】
2014102724.tif 000010
【図９】
2014102724.tif 000011
【図１０】
2014102724.tif 000012
【図１１】
2014102724.tif 000013
【図１２】
2014102724.tif 000014
【図１３】
2014102724.tif 000015