(57)【要約】【課題】ＦＴサーバにおいて、仮想計算機の停止時間を短くする。【解決手段】稼働系の仮想計算機601は、第１のグループにグループ分けされた複数の小領域603と、第２のグループにグループ分けされた複数の小領域603から構成されるメモリ602を備えている。転送制御手段605は、チェックポイント検出手段604でチェックポイントが検出された時、仮想計算機601を一時停止させて、前回のチェックポイント以降に更新されたメモリ602の小領域603の内の、第１のグループに属する小領域603のデータを転送バッファ（図示せず）にコピーすると共に、第２のグループに属する小領域を書き込み禁止にした後、仮想計算機601を再稼働する。更に、書き込み禁止にされている小領域603のデータを転送バッファにコピーして書き込み解除すると共に、転送バッファにコピーされている小領域のデータを物理計算機７００へ転送する。【選択図】図１１
2014178981.tif 000002
【特許請求の範囲】
【請求項１】
稼働系の仮想計算機が動作する第１の物理計算機と、待機系の仮想計算機が動作する第２の物理計算機とを備え、
前記稼働系の仮想計算機は、第１のグループにグループ分けされた複数の小領域と、第２のグループにグループ分けされた複数の小領域とから構成されるメモリを備え、
前記第１の物理計算機は、
チェックポイントを検出するチェックポイント検出手段と、
前記チェックポイント検出手段でチェックポイントが検出された時、前記稼働系の仮想計算機を一時停止させて、前回のチェックポイント以降に更新された前記メモリの前記小領域の内の、前記第１のグループに属する小領域のデータを転送バッファにコピーすると共に、前記第２のグループに属する小領域を書き込み禁止にした後、前記稼働系の仮想計算機を再稼働する第１の処理と、前記書き込み禁止にされている小領域のデータを前記転送バッファにコピーして書き込み禁止を解除すると共に、前記転送バッファにコピーされている小領域のデータを前記第２の物理計算機へ転送する第２の処理とを行う転送制御手段とを備えることを特徴とするフォールトトレラントサーバ。
【請求項２】
請求項１記載のフォールトトレラントサーバにおいて、
前記転送制御手段は、書き込み禁止にされている小領域に対する書き込み要求が発生した場合は、前記稼働系の仮想計算機を一時停止させて前記書き込み要求が発生した小領域のデータを前記転送バッファにコピーし、その後、前記稼働系の仮想計算機を再稼働させて前記転送バッファにコピーしておいた、前記書き込み要求の発生した小領域のデータを前記第２に物理計算機へ転送する処理を行うことを特徴とするフォールトトレラントサーバ。
【請求項３】
請求項１記載のフォールトトレラントサーバにおいて、
前記稼働系の仮想計算機上で動作するゲストＯＳに対して、複数の小領域から構成される複数のメモリ領域のアクセス距離を不均一に見せかける不均一手段を備え、且つ、
前記第１のグループに属する小領域は、アクセス距離がアクセス距離閾値未満のメモリ領域上の小領域であり、
前記第２のグループに属する小領域は、アクセス距離がアクセス距離閾値以上のメモリ領域上の小領域であることを特徴とするフォールトトレラントサーバ。
【請求項４】
請求項１記載のフォールトトレラントサーバにおいて、
前記稼働系の仮想計算機上で動作するゲストＯＳに対して、複数の小領域から構成される複数のメモリ領域のアクセス距離を不均一に見せかける不均一手段を備え、且つ、
前記第１のグループに属する小領域は、境界アドレス未満のアドレスを有する小領域であり、
前記第２のグループに属する小領域は、前記境界アドレス以上のアドレスを有する小領域であることを特徴とするフォールトトレラントサーバ。
【請求項５】
請求項４記載のフォールトトレラントサーバにおいて、
先頭アドレスが境界アドレスとなっているメモリ領域におけるページフォールト例外の発生回数が上限閾値を超える場合は、前記境界アドレスを、前記メモリ領域よりもアクセス距離が長いメモリ領域の内の最もアクセス距離が短いメモリ領域の先頭アドレスに変更し、下限閾値を下回る場合は、前記境界アドレスを、前記メモリ領域よりもアクセス距離が短いメモリ領域の内の最もアクセス距離が長いメモリ領域の先頭アドレスに変更する境界アドレス決定手段とを備えたことを特徴とするフォールトトレラントサーバ。
【請求項６】
請求項１記載のフォールトトレラントサーバにおいて、
前記複数の小領域それぞれの書き込み頻度を管理する書き込み履歴管理手段を備え、且つ、
前記第１のグループに属する小領域は、前記書き込み履歴管理手段で管理されている書き込み頻度が閾値以上の小領域であり、
前記第２のグループに属する小領域は、前記書き込み履歴管理手段で管理されている書き込み頻度が閾値未満の小領域であることを特徴とするフォールトトレラントサーバ。
【請求項７】
第１のグループにグループ分けされた複数の小領域と、第２のグループにグループ分けされた複数の小領域とから構成されるメモリを有する稼働系の仮想計算機が動作する物理計算機であって、
チェックポイントを検出するチェックポイント検出手段と、
前記チェックポイント検出手段でチェックポイントが検出された時、前記稼働系の仮想計算機を一時停止させて、前回のチェックポイント以降に更新された前記メモリの前記小領域の内の、前記第１のグループに属する小領域のデータを転送バッファにコピーすると共に、前記第２のグループに属する小領域を書き込み禁止にした後、前記稼働系の仮想計算機を再稼働する第１の処理と、前記書き込み禁止にされている小領域のデータを前記転送バッファにコピーして書き込み禁止を解除すると共に、前記転送バッファにコピーされている小領域のデータを他の物理計算機へ転送する第２の処理とを行う転送制御手段とを備えることを特徴とする物理計算機。
【請求項８】
第１のグループにグループ分けされた複数の小領域と、第２のグループにグループ分けされた複数の小領域とから構成されるメモリを有する稼働系の仮想計算機と、チェックポイント検出手段と、転送制御手段とを備えたコンピュータが実行する転送方法であって、
前記チェックポイント検出手段が、チェックポイントを検出し、
転送制御手段が、前記チェックポイント検出手段でチェックポイントが検出された時、前記稼働系の仮想計算機を一時停止させて、前回のチェックポイント以降に更新された前記メモリの前記小領域の内の、前記第１のグループに属する小領域のデータを転送バッファにコピーすると共に、前記第２のグループに属する小領域を書き込み禁止にした後、前記稼働系の仮想計算機を再稼働する第１の処理と、前記書き込み禁止にされている小領域のデータを前記転送バッファにコピーして書き込み禁止を解除すると共に、前記転送バッファにコピーされている小領域のデータを他の物理計算機へ転送する第２の処理とを行うことを特徴とする転送方法。
【請求項９】
第１のグループにグループ分けされた複数の小領域と、第２のグループにグループ分けされた複数の小領域とから構成されるメモリを有する稼働系の仮想計算機が動作するコンピュータを、
チェックポイントを検出するチェックポイント検出手段、
前記チェックポイント検出手段でチェックポイントが検出された時、前記稼働系の仮想計算機を一時停止させて、前回のチェックポイント以降に更新された前記メモリの前記小領域の内の、前記第１のグループに属する小領域のデータを転送バッファにコピーすると共に、前記第２のグループに属する小領域を書き込み禁止にした後、前記稼働系の仮想計算機を再稼働する第１の処理と、前記書き込み禁止にされている小領域のデータを前記転送バッファにコピーして書き込み禁止を解除すると共に、前記転送バッファにコピーされている小領域のデータを他の物理計算機へ転送する第２の処理とを行う転送制御手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントサーバ、物理計算機、転送方法、及び、プログラムに関する。
【背景技術】
【０００２】
可用性を高めた計算機システムとして、フォールトトレラントサーバ(Fault Tolerant server；ＦＴサーバ)が知られており、その実現方式は、ハードウェア方式とソフトウェア方式とに大別される。
【０００３】
ハードウェア方式のＦＴサーバは、ＣＰＵ、メモリ、ストレージなどの主要なハードウェアコンポーネントを冗長化する。ＣＰＵやメモリ、チップセットを含むモジュールをＣＰＵサブシステム、各種ＩＯデバイスを含むモジュールをＩＯサブシステムと呼ぶ。ＣＰＵサブシステムとＩＯサブシステムとで二重化の方式が異なる。ＣＰＵサブシステムは、クロック単位でハードウェア的に完全に同期させる。これをロックステップと呼ぶ。両方とも完全に同じ動作をしているので、故障発生時は対象となるＣＰＵサブシステムを論理的に切り離し、正常なＣＰＵサブシステムで動作を続行させる。故に、ＣＰＵサブシステムには稼働系、待機系の概念はない。他方、ＩＯサブシステムは、一方を稼働系、他方を待機系として使用し、ソフトウェアによる二重化制御を行う。稼働系のＩＯサブシステムで故障が発生した場合、これをソフトウェアで検出し、直ちに待機系側に切り替える。ハードウェア方式のＦＴサーバは、極めて高い可用性を実現することができる。しかし、特殊なハードウェアで構成されるため、同程度の性能を持つＰＣサーバと比較して導入コストがかかる。
【０００４】
ソフトウェア方式のＦＴサーバは、物理計算機上で複数のＯＳを動作させることを可能とした仮想化技術を使用する。物理計算機上に仮想的に構築される計算機を、仮想計算機あるいは仮想マシンと呼ぶ。ソフトウェア方式のＦＴサーバでは、物理計算機を冗長化し、稼働系の仮想計算機と待機系の仮想計算機とをそれぞれ異なる物理計算機上に配置する。稼働系の仮想計算機が属する物理計算機でハードウェアの故障等の障害が発生した場合、その仮想計算機が行っている処理を他の物理計算機上の待機系の仮想計算機で継続して実行する。アプリケーションやＯＳから見て、透過的にサービスを継続するために、ソフトウェア方式のＦＴサーバでは、稼働系と待機系の仮想計算機の状態を一致させる処理、即ち同期を行う。
【０００５】
ここで、図１２を参照してソフトウェア方式のＦＴサーバについて説明する。図１２を参照すると、物理計算機１０１０と物理計算機１０２０とが通信路１０３０を通して相互に通信可能に接続されている。
【０００６】
物理計算機１０１０は、仮想計算機環境を提供するＶＭＭ（Virtual Machine Monitor；スーパーバイザともいう）１０１１と、ＶＭＭ１０１１が提供する仮想計算機環境の下で動作する稼働系の仮想計算機１０１３と、仮想計算機１０１３上で動作するゲストＯＳ（ゲストオペレーティングシステム）とを備えている。
【０００７】
また、物理計算機１０２０は、仮想計算機環境を提供するＶＭＭ１０２１と、ＶＭＭ１０２１が提供する仮想計算機環境の下で動作する待機系の仮想計算機１０２３とを備えている。なお、待機系の仮想計算機１０２３上ではゲストＯＳは動作していないので、破線で示している。
【０００８】
上述したように、ＦＴサーバでは、稼働系と待機系の仮想計算機１０１３，１０２３の状態を一致させている。このため、物理計算機１０１０やＶＭＭ１０１１に障害が発生して、現用系の仮想計算機１０１３の動作が継続不可となった場合、稼働系の仮想計算機１０１３が行っていた処理を待機系の仮想計算機１０２３で継続して行うことができる。
【０００９】
仮想計算機１０１３，１０２３を同期させる処理の内、最も時間を要する処理は、メモリ（ゲスト物理メモリ）の内容を一致させる処理である。一般的なコンピュータシステムでは、メモリはページという一定の大きさの単位で管理されており、書き込みが行われたかどうかをチェックすることができるのもページ単位である。このため、メモリ内容を一致させる処理は、ページ単位で行われる。
【００１０】
例えば、非特許文献では下記の方法（ここでは、バルクコピー法と呼ぶ）により、メモリ１０１４，１０２４の内容を一致させるようにしている。チェックポイントが到来すると、稼働系の仮想計算機１０１３を一旦停止させることで、メモリ１０１４への更新を遮断し、前回のチェックポイント以降に更新があったメモリ１０１４上のページ（ダーティページ）の全てを、転送バッファ１０１２にコピーする。そして、ローカルコピーが完了すると、停止させていた稼働系の仮想計算機１０１３を再稼働させ、並行して、転送バッファ１０１２にコピーしておいたダーティページを物理計算機１０２０へ転送する。これにより、物理計算機１０２０内のＶＭＭ１０２１が物理計算機１０１０から送られてきたダーティページを待機系の仮想計算機１０２３のメモリ１０２４にコピーし、両メモリ１０１４，１０２４の内容を一致させる。
【００１１】
また、コピーオンライト（ＣＯＷ）法と呼ばれる方法も知られている。ＣＯＷ法では、チェックポイントが到来すると、稼働系の仮想計算機１０１３の動作を一旦停止させることで、メモリ１０１４への更新を遮断し、例えば、ページテーブルのダーティページと関連するエントリに書き込み禁止フラグを設定することにより、ダーティページを書き込み禁止にする。全てのダーティページを書き込み禁止にすると、稼働系の仮想計算機１０１３を再稼働させ、メモリ１０１４上のダーティページを転送バッファ１０１２にコピーし、書き込み禁止を解除する。そして、転送バッファ１０１２へのコピーと並行して転送バッファにコピーしたダーティページを物理計算機１０２０へ転送する。なお、書き込み禁止となっているダーティページに対する書き込み要求が発生した場合（ページフォールト例外が発生した場合）は、稼働系の仮想計算機１０１３を一旦停止させ、書き込み要求が発生したダーティページを転送バッファ１０１２にコピーし、書き込み禁止を解除する。その後、稼働系の仮想計算機１０１３を再稼働させ、並行して、転送バッファ１０１２にコピーしたダーティページを物理計算機１０２０へ送信する。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】Brendan Cully、外５名、“Remus:High Availability via Asynchronous Virtual Machine Replication”、[online]、[平成２５年３月５日検索]、インターネット〈URL: http://nss.cs.ubc.ca/remus/papers/remus-nsdi08.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述したように、稼働系の仮想計算機のメモリ内容と待機系の仮想計算機のメモリ内容とを一致させる方法として、ＣＯＷ法とバルクコピー法との２通りの方法がある。
【００１４】
しかしながら、ＣＯＷ法を使用した方が仮想計算機の停止時間が短縮されるケースがある一方で、逆にバルクコピー法を使用した方が仮想計算機の停止時間が短縮されるケースが存在する。このため、ＣＯＷ法を使用するか、バルクコピー法を使用するかがメモリ全体で固定化されている手法では、仮想計算機の停止時間を短縮することは困難である。
【００１５】
[本発明の目的]
そこで、本発明の目的は、上述した課題、即ち、ＣＯＷ法を使用するか、バルクコピー法を使用するかがメモリ全体で固定化されている手法では、仮想計算機の停止時間を短縮することは困難である、という課題を解決したフォールトトレラントサーバを提供することにある。
【課題を解決するための手段】
【００１６】
本発明に係るフォールトトレラントサーバは、
稼働系の仮想計算機が動作する第１の物理計算機と、待機系の仮想計算機が動作する第２の物理計算機とを備え、
前記稼働系の仮想計算機は、第１のグループにグループ分けされた複数の小領域と、第２のグループにグループ分けされた複数の小領域とから構成されるメモリを備え、
前記第１の物理計算機は、
チェックポイントを検出するチェックポイント検出手段と、
前記チェックポイント検出手段でチェックポイントが検出された時、前記稼働系の仮想計算機を一時停止させて、前回のチェックポイント以降に更新された前記メモリの前記小領域の内の、前記第１のグループに属する小領域のデータを転送バッファにコピーすると共に、前記第２のグループに属する小領域を書き込み禁止にした後、前記稼働系の仮想計算機を再稼働する第１の処理と、前記書き込み禁止にされている小領域のデータを前記転送バッファにコピーして書き込み禁止を解除すると共に、前記転送バッファにコピーされている小領域のデータを前記第２の物理計算機へ転送する第２の処理とを行う転送制御手段とを備えることを特徴とする。
【００１７】
本発明に係る物理計算機は、
第１のグループにグループ分けされた複数の小領域と、第２のグループにグループ分けされた複数の小領域とから構成されるメモリを有する稼働系の仮想計算機が動作する物理計算機であって、
チェックポイントを検出するチェックポイント検出手段と、
前記チェックポイント検出手段でチェックポイントが検出された時、前記稼働系の仮想計算機を一時停止させて、前回のチェックポイント以降に更新された前記メモリの前記小領域の内の、前記第１のグループに属する小領域のデータを転送バッファにコピーすると共に、前記第２のグループに属する小領域を書き込み禁止にした後、前記稼働系の仮想計算機を再稼働する第１の処理と、前記書き込み禁止にされている小領域のデータを前記転送バッファにコピーして書き込み禁止を解除すると共に、前記転送バッファにコピーされている小領域のデータを他の物理計算機へ転送する第２の処理とを行う転送制御手段とを備える。
【００１８】
本発明に係る転送方法は、
第１のグループにグループ分けされた複数の小領域と、第２のグループにグループ分けされた複数の小領域とから構成されるメモリを有する稼働系の仮想計算機と、チェックポイント検出手段と、転送制御手段とを備えたコンピュータが実行する転送方法であって、
前記チェックポイント検出手段が、チェックポイントを検出し、
転送制御手段が、前記チェックポイント検出手段でチェックポイントが検出された時、前記稼働系の仮想計算機を一時停止させて、前回のチェックポイント以降に更新された前記メモリの前記小領域の内の、前記第１のグループに属する小領域のデータを転送バッファにコピーすると共に、前記第２のグループに属する小領域を書き込み禁止にした後、前記稼働系の仮想計算機を再稼働する第１の処理と、前記書き込み禁止にされている小領域のデータを前記転送バッファにコピーして書き込み禁止を解除すると共に、前記転送バッファにコピーされている小領域のデータを他の物理計算機へ転送する第２の処理とを行う。
【００１９】
本発明に係るプログラムは、
第１のグループにグループ分けされた複数の小領域と、第２のグループにグループ分けされた複数の小領域とから構成されるメモリを有する稼働系の仮想計算機が動作するコンピュータを、
チェックポイントを検出するチェックポイント検出手段、
前記チェックポイント検出手段でチェックポイントが検出された時、前記稼働系の仮想計算機を一時停止させて、前回のチェックポイント以降に更新された前記メモリの前記小領域の内の、前記第１のグループに属する小領域のデータを転送バッファにコピーすると共に、前記第２のグループに属する小領域を書き込み禁止にした後、前記稼働系の仮想計算機を再稼働する第１の処理と、前記書き込み禁止にされている小領域のデータを前記転送バッファにコピーして書き込み禁止を解除すると共に、前記転送バッファにコピーされている小領域のデータを他の物理計算機へ転送する第２の処理とを行う転送制御手段として機能させる。
【発明の効果】
【００２０】
本発明によれば、ＣＯＷ法だけを利用する場合やバルクコピー法だけを利用する場合に比較して稼働系の仮想計算機の停止時間を短くすることができるという効果を得ることができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施の形態に係るＦＴサーバの構成例を示すブロック図である。
【図２】不均一手段１０９を説明するための図である。
【図３】不均一手段１０９の実現方法を説明するための図である。
【図４】チェックポイント時の動作を説明するためのシーケンス図である。
【図５】制御手段１０３の処理例を示すフローチャートである。
【図６】第１の転送手段１０４の処理例を示すフローチャートである。
【図７】第２の転送手段１０５の処理例を示すフローチャートである。
【図８】メモリ領域とダーティページの転送方法との関係を示す図である。
【図９】境界アドレス決定手段１０６の処理例を示すフローチャートである。
【図１０】本発明の第２の実施の形態に係るＦＴサーバの構成例を示すブロック図である。
【図１１】本発明の第２の実施の形態に係るＦＴサーバの構成例を示すブロック図である。
【図１２】ソフトウェア方式のＦＴサーバを説明するためのブロック図である。
【発明を実施するための形態】
【００２２】
次に、図面を参照して本発明の実施の形態について詳細に説明する。
【００２３】
図１を参照すると、本発明の第１の実施の形態に係るＦＴサーバは、物理計算機１００と物理計算機２００とを備えており、両者は通信路３００を介して相互に通信可能に接続されている。
【００２４】
物理計算機１００は、仮想計算機環境を提供するＶＭＭ１０１と、ＶＭＭ１０１によって提供される仮想計算機環境の下で動作する稼働系の仮想計算機１０８と、仮想計算機１０８上で動作するゲストＯＳ１１１とを備えている。また、物理計算機２００は、仮想計算機環境を提供するＶＭＭ２０１と、ＶＭＭ２０１によって提供される仮想計算機環境の下で動作する待機系の仮想計算機２０３とを備えている。
【００２５】
ゲストＯＳ１１１は、ＮＵＭＡ(Non-Uniform Memory Architecture）に対応したＯＳである。なお、ＮＵＭＡは、ＣＰＵからのメモリへのアクセス距離（アクセスコスト）が均一でないアーキテクチャである。
【００２６】
仮想計算機１０８は、不均一手段１０９と、メモリ（ゲスト物理メモリ）１１０とを備えている。メモリ１１０は、複数のページから構成されている。不均一手段１０９は、ゲストＯＳ１１１に対して、実際とは異なるアクセス距離を与えることで、仮想計算機１０８のＣＰＵ（仮想ＣＰＵ）からメモリ１１０へのアクセス距離が不均一であるように見せかける機能を有する。例えば、図２に示すように、ノードＮ１に配置されている仮想計算機１０８のＣＰＵ１,ＣＰＵ２から同一ノードＮ１に配置されているメモリ領域ＭＤ１（アドレス「０〜Ａ」）へのアクセス距離が最も短く、隣接ノードＮ２に配置されているメモリ領域ＭＤ２（アドレス「Ａ＋１〜２Ａ＋１」）へのアクセス距離が第２目に短く、ノードＮｎに配置されているメモリ領域ＭＤｎ（アドレス「ｎＡ＋ｎ〜（ｎ＋１）Ａ＋ｎ」）への距離が最も長いと見せかける。なお、本実施の形態では、アクセス距離が短いメモリ領域ほど、そのアドレスが小さくなっている。また、各メモリ領域ＭＤ１〜ＭＤｎは、複数のページから構成されている。
【００２７】
このような機能を有する不均一手段１０９は、仮想計算機１０８上の仮想ＢＩＯＳ(Basic Input Output System)によって実現される。より具体的には、図３に示すように、ＢＩＯＳのＡＣＰＩ(Advanced Configuration and Power Interface)テーブルのSRAT(Static Resource Affinity Table)に「ＣＰＵとメモリアドレスがどのノードに属するかを示す情報」を設定し、SLIT(System Locality Information Table）にノード間の距離を設定する。このような設定を行うことにより、ＮＵＭＡに対応しているゲストＯＳに、ＣＰＵからのメモリへのアクセス距離が図２に示すようになっていると認識させることができる。そして、ＮＵＭＡに対応しているゲストＯＳ１１１は、頻繁にアクセスするデータをアクセス距離が短いメモリ領域に、そうでないデータをアクセス距離が長いメモリ領域に配置しようとする。従って、書き込みを含むアクセス頻度の高いページ程、アクセス距離が短い、アドレスが小さいメモリ領域に配置される。
【００２８】
ＶＭＭ１０１は、チェックポイント検出手段１０２と、制御手段１０３と、第１の転送手段１０４と、第２の転送手段１０５と、境界アドレス決定手段１０６と、転送バッファ１０７とを備えている。
【００２９】
チェックポイント検出手段１０２は、稼働系の仮想計算機１０８のメモリ内容と待機系の仮想計算機２０３のメモリ内容とを一致させるタイミングであるチェックポイントを検出する機能を有する。
【００３０】
制御手段１０３は、チェックポイント検出手段１０２によってチェックポイントが検出されたとき、仮想計算機１０８を一時停止させる機能や、第１および第２の転送手段１０４，１０５を制御する機能等を有する。
【００３１】
第１の転送手段１０４は、制御手段１０３からの指示に従って、ダーティページの内、そのアドレス（例えば、先頭アドレス）が、境界アドレス決定手段１０６によって決定されている境界アドレス未満のダーティページを、バルクコピー法により物理計算機２００へ転送する機能を有する。
【００３２】
第２の転送手段１０５は、制御手段１０３からの指示に従って、ダーティページの内、そのアドレスが境界アドレス以上のダーティページを、ＣＯＷ法により物理計算機２００へ転送する機能を有する。
【００３３】
境界アドレス決定手段１０６は、ダーティページをバルクコピー法によって転送するのか、ＣＯＷ法によって転送するのかを判定するために使用する境界アドレスを、ページフォールト例外の発生回数に基づいて決定する機能を有する。
【００３４】
転送バッファ１０７には、物理計算機２００へ転送するダーティページが一時的に記録される。
【００３５】
なお、チェックポイント検出手段１０２、制御手段１０３、第１の転送手段１０４、第２の転送手段１０５、境界アドレス決定手段１０６、及び、不均一手段１０９は、ディスク、半導体メモリ、その他の記録媒体に記録されている上記各手段を実現するためのプログラムをコンピュータに読み取らせ、コンピュータの動作を上記プログラムに従って制御することにより実現可能である。
【００３６】
物理計算機２００上の仮想計算機２０３は、メモリ２０４を備えている。また、物理計算機２００上のＶＭＭ２０１は、コピー手段２０２を備えている。コピー手段２０２は、物理計算機１００から送られてくるダーティページをメモリ２０４にコピーし、メモリ２０４の内容をメモリ１１０の内容と一致させる機能を有する。
【００３７】
次に、本実施の形態の動作を図４〜図９を参照して詳細に説明する。図４はチェックポイント時の動作を説明するためのシーケンス図、図５は制御手段１０３の処理例を示すフローチャート、図６は第１の転送手段１０４の処理例を示すフローチャート、図７は第２の転送手段１０５の処理例を示すフローチャート、図８はメモリ領域とダーティページの転送方法（バルクコピー法、ＣＯＷ法）との関係を示す図、図９は境界アドレス決定手段１０６の処理例を示すフローチャートである。
【００３８】
図４に示すように、時刻ｔ１において、稼働系の仮想計算機１０８が動作している物理計算機１００内のチェックポイント検出手段１０２がチェックポイントＣＰ１を検出したとする。
【００３９】
制御手段１０３は、チェックポイント検出手段１０２が時刻ｔ１においてチェックポイントＣＰ１を検出すると、図５のフローチャートに示すように、稼働系の仮想計算機１０８を一時停止させる（ステップＳ５１）。その後、制御手段１０３は、第１及び第２の転送手段１０４，１０５を起動し、転送手段１０４，１０５からコピー完了通知、書き込み禁止完了通知が送られてくるのを待つ（ステップＳ５２，Ｓ５３）。
【００４０】
これにより、第１及び第２の転送手段１０４，１０５は、それぞれ図６及び図７のフローチャートに示す処理を行う。
【００４１】
第１の転送手段１０４は、制御手段１０３によって起動されると、図６のフローチャートに示すように、ダーティページの１つに注目し、そのダーティページのアドレスが境界アドレス決定手段１０６によって決定されている境界アドレス未満であるか否かを判定する（ステップＳ６１，Ｓ６３）。そして、ダーティページのアドレスが境界アドレス未満である場合は、そのダーティページをバルクコピー法によって転送するため、転送バッファ１０７にコピーする（ステップＳ６３がＹｅｓ、Ｓ６４）。これに対して、ダーティページのアドレスが境界アドレス以上の場合は、次のダーティページに注目する（ステップＳ６３がＮｏ、Ｓ６１）。
【００４２】
例えば、図８に示すように、境界アドレスが「２Ａ＋２」である場合は、メモリ領域ＭＤ１，ＭＤ２上のダーティページであれば、転送バッファ１０７にコピーする。つまり、ＣＰＵ１,ＣＰＵ２からのアクセス距離が短く、頻繁にアクセスされるメモリ領域ＭＤ１,ＭＤ２上のダーティページは、書き込みが行われる頻度が高いと判断し、バルクコピー法で転送するために転送バッファ１０７にコピーする。
【００４３】
第１の転送手段１０３は、全てのダーティページについて上述した処理を行うと（ステップＳ６２がＮｏ）、制御手段１０３に対してコピー完了通知を送る（ステップＳ６５）。
【００４４】
一方、第２の転送手段１０５は、制御手段１０３によって起動されると、図７のフローチャートに示すように、ダーティページの１つに注目し、そのダーティページのアドレスが境界アドレス決定手段１０６によって決定されている境界アドレス以上であるか否かを判定する（ステップＳ７１，Ｓ７３）。そして、ダーティページのアドレスが境界アドレス以上である場合は、ＣＯＷ法でダーティページを転送するために、例えば、ページテーブル（図示せず）の上記ダーティページに対応するエントリに書き込み禁止フラグを設定し、上記ダーティページを書き込み禁止にする（ステップＳ７３がＹｅｓ,Ｓ７４）。これに対して、ダーティページのアドレスが境界アドレス未満の場合は、次のダーティページに注目する（ステップＳ７３がＮｏ,ステップＳ７１）。
【００４５】
例えば、図８に示すように、境界アドレスが「２Ａ＋２」である場合は、メモリ領域ＭＤ３〜ＭＤｎ上のダーティページが書き込み禁止にされる。つまり、ＣＰＵからのアクセス距離が長く、アクセス頻度が低いダーティページは、書き込みが行われる頻度が低いと判断し、ＣＯＷ法でダーティページを転送するために、ダーティページを書き込み禁止にする。
【００４６】
第２の転送手段１０５は、全てのダーティページについて上述した処理を行うと（ステップＳ７２がＮｏ）、制御手段１０３に対して書き込み禁止完了通知を送る（ステップＳ７５）。
【００４７】
制御手段１０３は、第１の転送手段１０４からのコピー完了通知と、第２の転送手段１０５からの書き込み完了通知との両方を受信すると（図５のステップＳ５３がＹｅｓ）、仮想計算機１０８を再稼働する（ステップＳ５４、図４の時刻ｔ２）。
【００４８】
第２の転送手段１０５は、ステップＳ７５の処理が完了すると、書き込み禁止になっているダーティページの１つに注目し（ステップS７６）、そのダーティページを転送バッファ１０７にコピーし、書き込み禁止を解除する（ステップS７８）。また、ステップS７８では、可能であれば、転送バッファ１０７にコピーした上記ダーティページを物理計算機２００へ転送する。物理計算機２００のコピー手段２０２は、物理計算機１００から送られてきたダーティページをメモリ２０４にコピーする。
【００４９】
ここで、第２の転送手段１０５により転送するダーティページは、書き込み頻度が少ないダーティページであるので、ページフォールト例外が発生する頻度は少ないが、ページフォールト例外が発生した場合には、次のような処理が行われる。
【００５０】
制御手段１０３は、時刻ｔ３（図４参照）においてページフォールト例外が発生したことを検出すると（図５のステップS５５がＹｅｓ）、仮想計算機１０８を一時停止させる（ステップS５６）。その後、第２の転送手段１０５に対してページフォールト例外発生通知を送信し、第２の転送手段１０５から解除完了通知が送られてくるのを待つ（ステップS５７，S５８）。
【００５１】
第２の転送手段１０５は、ページフォールト例外発生通知を受信すると（図７のステップS７９がＹｅｓ）、ページフォールト例外が発生したダーティページを転送バッファ１０７にコピーし、コピーが完了すると、上記ダーティページの書き込み禁止を解除する（ステップS８０）。次いで、第２の転送手段１０５は、制御手段１０３に対して書き込み禁止を解除したことを示す解除通知を送信する（ステップS８１）。制御手段１０３は、禁止解除通知を受信すると（図５のステップS５８）、仮想計算機１０８を再稼働させ（ステップS５９、図４の時刻ｔ４）、その後、再びステップS５５の処理を行う。
【００５２】
第２の転送手段１０５は、解除完了通知を送信した後、転送バッファ１０７にコピーした、ページフォールト例外が発生したダーティページを物理計算機２００へ送信し（ステップS８２）、再びステップS７６の処理を行う。そして、書き込み禁止になっている全てのダーティページに対して上述した処理を行うと（ステップＳ７７がＹｅｓ）、処理を終了する。
【００５３】
一方、第１の転送手段１０４は、ステップＳ６５の処理が完了した後、転送バッファ１０７にコピーされているダーティページを物理計算機２００へ転送する（ステップＳ６６、図４の時刻ｔ２〜ｔ６）。
【００５４】
次に、境界アドレス決定手段１０６の動作を、図９（Ａ），（Ｂ）のフローチャートを参照して説明する。
【００５５】
境界アドレス決定手段１０６は、チェックポイント検出手段１０３でチェックポイントが検出される毎に、ＣＯＷ法を適用するメモリ領域の内の最もアドレスが小さいメモリ領域において、次のチェックポイントが検出されるまでの間に発生したページフォールト例外の発生回数をカウントし、カウント値を例外発生回数記憶部（図示せず）に記録する（ステップＳ９１）。例えば、図８に示すように、境界アドレスが「２Ａ＋２」になっている場合には、メモリ領域ＭＤ３において発生してページフォールト回数をカウントし、カウント値を例外発生回数記憶部に記録する。
【００５６】
また、境界アドレス決定手段１０６は、チェックポイント検出手段１０２がチェックポイントをＭ回（Ｍは１以上で、動作環境に応じて決定する）検出する毎に、図９（Ｂ）のフローチャートに示す処理を行う。
【００５７】
境界アドレス決定手段１０６は、先ず、例外発生回数記憶部に記録されている過去Ｍ回分のページフォールト例外の発生回数（記録時期が新しいものからＭ個）が、全て上限閾値Ｔｈmaxを超えているか否かを判定する（ステップＳ９２）。なお、上限閾値Ｔｈmaxは、ＣＯＷ法でダーティページを転送した方が、バルクコピー法でダーティページを転送するよりも仮想計算機１０８の停止時間を短くすることができるページフォールト例外の発生回数（実際にＦＴサーバを稼働させて求める）の最大値に基づいて定める。例えば、上限閾値Ｔｈmaxは、実際に求めた最大値よりも、所定値だけ大きい値とすることができる。
【００５８】
そして、上限閾値Ｔｈmaxを超えている場合（ステップＳ９２がＹｅｓ）は、境界アドレスを１つ後ろのメモリ領域のアドレス（例えば、先頭アドレス）に変更する（ステップＳ９４）。例えば、ＣＯＷ法を適用するメモリ領域の内の最もアドレスが小さいメモリ領域が、図８に示すようにメモリ領域ＭＤ３である場合には、メモリ領域ＭＤ４の先頭アドレス「３Ａ＋３」を新たな境界アドレスに変更する。ここで、メモリ領域ＭＤ３におけるページフォールト例外の発生回数が上限閾値Ｔｈmaxを超えるということは、メモリ領域ＭＤ３のダーティページをＣＯＷ法で転送すると、バルクコピー法で転送する場合に比較して仮想計算機１０８の停止時間が長くなるということである。そこで、メモリ領域ＭＤ３のダーティページがバルクコピー法で転送されるようにするため、境界アドレスをメモリ領域ＭＤ４のアドレスに変更する。
【００５９】
これに対して、上限閾値Ｔｈmax以下の場合（ステップＳ９２がＮｏ）は、例外発生回数記憶部に記録されている過去Ｍ回分のページフォールト例外の発生回数が全て下限閾値Ｔｈmin（Ｔｈmin＜Ｔｈmax）を下回っているか否かを判定する（ステップＳ９３）。なお、下限閾値Ｔｈminは、ＣＯＷ法でダーティページを転送した方が、バルクコピー法でダーティページを転送するよりも仮想計算機１０８の停止時間を短くすることができるページフォールト例外の発生回数（実際にＦＴサーバを稼働させて求める）の最大値に基づいて定める。例えば、下限閾値Ｔｈminは、実際に求めた最大値よりも、所定値だけ小さい値とすることができる。
【００６０】
そして、下限閾値Ｔｈmin以上である場合（ステップＳ９３がＮｏ）は、処理を終了する。これに対して、下限閾値Ｔｈminを下回っている場合（ステップＳ９３がＹｅｓ）は、境界アドレスを１つ前のメモリ領域のアドレスに変更する（ステップＳ９５）。例えば、ＣＯＷ法を適用するメモリ領域の内、アドレスが最も小さいメモリ領域が、図８に示すようにメモリ領域ＭＤ３である場合には、メモリＭＤ２のアドレス「Ａ＋１」が新たな境界アドレスとなる。ここで、ページフォールト例外の発生回数が下限閾値Ｔｈminを下回るということは、メモリ領域ＭＤ３の次にアクセス距離が短いメモリ領域ＭＤ２のダーティページをＣＯＷ法で転送すると、バルクコピー法で転送する場合に比較して仮想計算機１０８の停止時間を短くできる可能性があるということである。そこで、メモリ領域ＭＤ２のダーティページがＣＯＷ法で転送されるようにするため、境界アドレスをメモリ領域ＭＤ２のアドレスに変更する。
【００６１】
なお、上述した実施の形態では、境界アドレスとダーティページのアドレスとの比較結果に基づいて、ダーティページの転送方法をバルクコピー法にするか、ＣＯＷ法にするかを決定するようにしたが、アクセス距離（境界アクセス距離）とダーティページが属するメモリ領域のアクセス距離との比較結果に基づいて、ダーティページの転送方法を決定するようにしてもよい。例えば、図８に示すメモリ領域ＭＤ１，ＭＤ２，ＭＤ３，…，ＭＤｎのアクセス距離が１，２，３，…，ｎの場合、メモリ領域ＭＤ１，ＭＤ２上のダーティページをバルクコピー法で転送し、メモリ領域ＭＤ３〜ＭＤｎ上のダーティページをＣＯＷ法で転送するのであれば、境界アクセス距離を「３」とし、且つ、アクセス距離が境界アクセス距離未満のメモリ領域上のダーティページはバルクコピー法で転送し、境界アクセス距離以上のメモリ領域上のダーティページはＣＯＷ法で転送するようにすれば良い。また、物理計算機として、ＮＵＭＡアーキテクチャの計算機を適用しても良いことは勿論である。また、上述した説明では、第２の転送手段１０５は、ダーティページを転送バッファ１０７にコピーしてから物理計算機２００へ転送するようにしたが、転送バッファ１０７を介さず、メモリ１１０上のダーティページを直接物理計算機２００へ転送するようにしてもよい。
【００６２】
[第１の実施の形態の効果]
本実施の形態によれば、ＣＯＷ法だけを利用する場合やバルクコピー法だけを利用する場合に比較して、稼働系の仮想計算機の停止時間を短くすることができるという効果を得ることができる。その理由は、書き込みが行われる頻度が高いダーティページは、バルクコピー法で転送し、書き込みがおこなわれる頻度が低いダーティページは、ＣＯＷ法で転送するようにしているからである。
【００６３】
また、本実施の形態によれば、ダーティページをバルクコピー法によって転送するのか、ＣＯＷ法によって転送するのかを判定するために使用する境界アドレスを、適切なものにすることができるという効果を得ることができる。その理由は、ページフォールトの発生回数に基づいて、境界アドレスを変更するようにしているからである。
【００６４】
[本発明の第２の実施の形態]
次に、本発明の第２に実施の形態に係るＦＴサーバについて説明する。
【００６５】
図１０を参照すると、本実施の形態にかかるＦＴサーバは、稼働系の仮想計算機４０１が動作する第１の物理計算機４００と、待機系の仮想計算機５０１が動作する第２の物理計算機５００とを備えている。
【００６６】
稼働系の仮想計算機４０１は、第１のグループにグループ分けされた複数の小領域４０３と、第２のグループにグループ分けされた複数の小領域４０３とから構成されるメモリ４０２を備えている。小領域４０３は、例えば、ページまたはセグメントであって良い。
【００６７】
書き込み履歴管理手段４０６は、複数の小領域４０３それぞれの書き込み頻度を管理する。本実施の形態では、書き込み履歴管理手段４０６で管理されている書き込み頻度が閾値以上の小領域４０３は、第１のグループにグループ分けされ、閾値未満の小領域４０３は、第２のグループにグループ分けされる。
【００６８】
転送制御手段４０５は、以下に示す第１〜第３の処理を行う。
【００６９】
・「第１の処理」
チェックポイント検出手段４０４でチェックポイントが検出された時、稼働系の仮想計算機４０１を一時停止させて、前回のチェックポイント以降に更新されたメモリ４０２の小領域４０３の内の、第１のグループに属する小領域４０３のデータを転送バッファ（図示せず）にコピーすると共に、第２のグループに属する小領域を書き込み禁止にした後、稼働系の仮想計算機を再稼働する処理。
【００７０】
・「第２の処理」
書き込み禁止にされている小領域４０３のデータを転送バッファにコピーして書き込み禁止を解除すると共に、転送バッファにコピーされている小領域のデータを第２の物理計算機５００へ転送する処理。
【００７１】
・「第３の処理」
書き込み禁止にされている小領域に対する書き込み要求が発生した場合（ページフォールト例外が発生した場合）は、稼働系の仮想計算機４０１を一時停止させて上記書き込み要求が発生した小領域４０３のデータを転送バッファにコピーし、その後、稼働系の仮想計算機４０１を再稼働させて転送バッファにコピーした書き込み要求の発生した小領域のデータを第２に物理計算機５００へ転送する。
【００７２】
第２の物理計算機５００は、第１に物理計算機４００から送られてきたデータをメモリ５０２にコピーすることにより、メモリ４０２，５０４の内容を一致させる。
【００７３】
[第２の実施の形態の効果]
本実施の形態によれば、稼働系の仮想計算機の停止時間を短くすることができるという効果を得ることができる。その理由は、書き込みが行われる頻度が低いメモリの小領域と、書き込みが行われる頻度が高い小領域とで、異なる方法を利用して稼働系と待機系のメモリ内容を一致させるようにしているからである。
【００７４】
[本発明の第３の実施の形態]
次に、本発明の第３の実施の形態にかかるＦＴサーバについて説明する。
【００７５】
図１１を参照すると、本実施の形態のＦＴサーバは、稼働系の仮想計算機６０１が動作する第１の物理計算機６００と、待機系の仮想計算機が７０１動作する第２の物理計算機７００とを備えている。
【００７６】
稼働系の仮想計算機６０１は、第１のグループにグループ分けされた複数の小領域６０３と、第２のグループにグループ分けされた複数の小領域６０３とから構成されるメモリ６０２を備えている。小領域は、例えば、ページやセグメントであって良い。
【００７７】
転送制御手段６０５は、以下に示す第１及び第２の処理を行う。
【００７８】
・「第１の処理」
チェックポイント検出手段６０４でチェックポイントが検出された時、稼働系の仮想計算機６０１を一時停止させて、前回のチェックポイント以降に更新されたメモリ６０２の小領域６０３の内の、第１のグループに属する小領域６０３のデータを転送バッファ（図示せず）にコピーすると共に、第２のグループに属する小領域を書き込み禁止にした後、稼働系の仮想計算機を再稼働する処理。
【００７９】
・「第２の処理」
書き込み禁止にされている小領域６０３のデータを転送バッファにコピーして書き込み禁止を解除すると共に、転送バッファにコピーされている小領域のデータを第２の物理計算機７００へ転送する処理。
【００８０】
[第３の実施の形態の効果]
本発明によれば、稼働系の仮想計算機の停止時間を短くすることができるという効果を得ることができる。その理由は、メモリを構成する小領域を第１、第２のグループにグループ分けし、グループ毎に異なる方法を利用して稼働系と待機系のメモリ内容を一致させるようにしているからである。
【産業上の利用可能性】
【００８１】
本発明は、仮想計算機のメモリ内容を他の仮想計算機のメモリにコピーするソフトウェア方式のＦＴサーバに利用できる。更に、本発明は、クラスタシステムや、仮想計算機のライブマイグレーション処理にも利用できる。
【符号の説明】
【００８２】
１００・・・物理計算機
１０１・・・ＶＭＭ
１０２・・・チェックポイント検出手段
１０３・・・制御手段
１０４・・・第１の転送手段
１０５・・・第２の転送手段
１０６・・・境界アドレス決定手段
１０７・・・転送バッファ
１０８・・・仮想計算機（稼働系）
１０９・・・不均一手段
１１０・・・メモリ
１１１・・・ゲストＯＳ
２００・・・物理計算機
２０１・・・ＶＭＭ
２０２・・・コピー手段
２０３・・・仮想計算機（待機系）
２０４・・・メモリ
４００・・・第１の物理計算機
４０１・・・仮想計算機（稼働系）
４０２・・・メモリ
４０３・・・小領域
４０４・・・チェックポイント検出部
４０５・・・転送制御手段
４０６・・・書き込み履歴管理手段
５００・・・第２の物理計算機
５０１・・・仮想計算機（待機系）
６００・・・物理計算機
６０１・・・仮想計算機（稼働系）
６０２・・・メモリ
６０３・・・小領域
６０４・・・チェックポイント検出手段
６０５・・・転送制御手段
７００・・・物理計算機
７０１・・・仮想計算機
【図１】
2014178981.tif 000003
【図２】
2014178981.tif 000004
【図３】
2014178981.tif 000005
【図４】
2014178981.tif 000006
【図５】
2014178981.tif 000007
【図６】
2014178981.tif 000008
【図７】
2014178981.tif 000009
【図８】
2014178981.tif 000010
【図９】
2014178981.tif 000011
【図１０】
2014178981.tif 000012
【図１１】
2014178981.tif 000013
【図１２】
2014178981.tif 000014