(57)【要約】  仮想計算機制御プログラム１７１は、ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定部１７１ｂと、ダンプ対象設定部１７１ｂによってフラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域のフラグを解除するダンプ実行部１７１ｃと、仮想計算機上で動作するゲストＯＳの実行を制御し、ゲストＯＳがダンプ対象設定部１７１ｂによってフラグが設定されたメモリ領域へアクセスしようとした場合に、ダンプ実行部１７１ｃによってそのメモリ領域のフラグが解除されるまで、ゲストＯＳの実行を停止させる仮想計算機制御部１７１ａとを有する
2008114395.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機上でゲストＯＳを動作させ、該ゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプする仮想計算機制御プログラムであって、
前記ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定部と、
前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域の前記フラグを解除するダンプ実行部と、
前記仮想計算機上で動作するゲストＯＳの実行を制御し、該ゲストＯＳが前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域へアクセスしようとした場合に、前記ダンプ実行部によって該メモリ領域のフラグが解除されるまで、該ゲストＯＳの実行を停止させる仮想計算機制御部と
を有することを特徴とする仮想計算機制御プログラム。
【請求項２】
前記仮想計算機制御部は、仮想計算機上で動作しているゲストＯＳに障害が発生した場合に、前記ダンプ対象設定部による前記フラグの設定完了後、前記ダンプ実行部によるダンプが完了する前に、該仮想計算機上で該ゲストＯＳを再起動させることを特徴とする請求項１に記載の仮想計算機制御プログラム。
【請求項３】
前記ダンプ実行部は、前記仮想計算機制御部によって停止された前記ゲストＯＳがアクセスしようとしていたメモリ領域を優先してダンプすることを特徴とする請求項１に記載の仮想計算機制御プログラム。
【請求項４】
前記仮想計算機制御部は、障害が発生した前記ゲストＯＳが動作していた仮想計算機とは別の仮想計算機を実現することができるだけの空きメモリがある場合に、該空きメモリを使用して実現した仮想計算機上で前記ゲストＯＳを再起動させることを特徴とする請求項１〜３のいずれか一つに記載の仮想計算機制御プログラム。
【請求項５】
仮想計算機上でゲストＯＳを動作させ、該ゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプする仮想計算機制御システムであって、
前記ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定部と、
前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域の前記フラグを解除するダンプ実行部と、
前記仮想計算機上で動作するゲストＯＳの実行を制御し、該ゲストＯＳが前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域へアクセスしようとした場合に、前記ダンプ実行部によって該メモリ領域のフラグが解除されるまで、該ゲストＯＳの実行を停止させる仮想計算機制御部と
を有することを特徴とする仮想計算機制御システム。
【請求項６】
前記仮想計算機制御部は、仮想計算機上で動作しているゲストＯＳに障害が発生した場合に、前記ダンプ対象設定部による前記フラグの設定完了後、前記ダンプ実行部によるダンプが完了する前に、該仮想計算機上で該ゲストＯＳを再起動させることを特徴とする請求項５に記載の仮想計算機制御システム。
【請求項７】
前記ダンプ実行部は、前記仮想計算機制御部によって停止された前記ゲストＯＳがアクセスしようとしていたメモリ領域を優先してダンプすることを特徴とする請求項５に記載の仮想計算機制御システム。
【請求項８】
前記仮想計算機制御部は、障害が発生した前記ゲストＯＳが動作していた仮想計算機とは別の仮想計算機を実現することができるだけの空きメモリがある場合に、該空きメモリを使用して実現した仮想計算機上で前記ゲストＯＳを再起動させることを特徴とする請求項５〜７のいずれか一つに記載の仮想計算機制御システム。
【請求項９】
仮想計算機上で動作するゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプするダンプ採取方法であって、
前記ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定工程と、
前記ダンプ対象設定工程において前記フラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域の前記フラグを解除するダンプ実行工程と、
前記仮想計算機上で動作するゲストＯＳの実行を制御し、該ゲストＯＳが前記ダンプ対象設定工程において前記フラグが設定されたメモリ領域へアクセスしようとした場合に、前記ダンプ実行部において該メモリ領域のフラグが解除されるまで、該ゲストＯＳの実行を停止させる仮想計算機制御工程とを有し、
前記ダンプ実行工程と前記仮想計算機制御工程が平行して実行されることを特徴とするダンプ採取方法。
【請求項１０】
前記ダンプ実行工程は、前記仮想計算機制御工程によって停止された前記ゲストＯＳがアクセスしようとしていたメモリ領域を優先してダンプすることを特徴とする請求項９に記載のダンプ採取方法。
【請求項１１】
前記仮想計算機制御工程は、障害が発生した前記ゲストＯＳが動作していた仮想計算機とは別の仮想計算機を実現することができるだけの空きメモリがある場合に、該空きメモリを使用して実現した仮想計算機上で前記ゲストＯＳを再起動させることを特徴とする請求項９または１０に記載のダンプ採取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機上で動作するゲストＯＳに障害が発生した場合にゲストＯＳが使用していた各メモリ領域をファイルにダンプする仮想計算機制御プログラム、仮想計算機制御システムおよびダンプ採取方法に関し、特に、ゲストＯＳを改造することなく、速やかにゲストＯＳを再起動させつつ、ダウンしたゲストＯＳが使用していた各メモリ領域をダンプすることができる仮想計算機制御プログラム、仮想計算機制御システムおよびダンプ採取方法に関する。
【背景技術】
【０００２】
コンピュータ上に、仮想計算機をソフトウェアによって実現し、仮想計算機上でＯＳやアプリケーションを実行することを可能にする仮想計算機技術が知られている。このような仮想計算機上でＯＳやアプリケーションを動作させる場合、ＯＳのダウンが発生したときに、障害の原因を調査するために、ＯＳが使用しているメモリの内容をダンプして保存することが必要になる。【０００３】
従来、ダンプの採取中は、情報保持のためにＯＳを再起動することができなかった。このため、ＯＳのダウンにより停止した業務は、ダンプの採取が完了するまで再開することができず、業務の再開が遅延するという問題があった。この問題は、近年、ＯＳが使用するメモリ量が増大し、ダンプの採取に要する時間が長くなる傾向があるために、益々重大なものとなっていた。【０００４】
この問題を解決するため、特許文献１では、ＯＳを改造することにより、ＯＳのカーネル部分のダンプと再起動を先行して行い、業務を再開させながら並行して他の部分のダンプを採取する技術が開示されている。また、特許文献２には、障害が発生した仮想計算機のメモリを待機系の仮想計算機に転記し、ダンプを待機系の仮想計算機に行わせることで、業務の再開を早める技術が開示されている。【０００５】
【特許文献１】特開平１０−３３３９４４号公報
【特許文献２】特開２００１−２９０６７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１において開示されている技術は、仮想計算機上で動作させるＯＳを改造することが前提となっており、コンパイル済の状態で市販される一般的なＯＳを仮想計算機上で動作させる場合には適用することができない。また、特許文献２において開示されている技術は、仮想計算機間でのメモリの転記が必要であり、その分だけ業務の再開が遅延してしまう。【０００７】
本発明は、上記に鑑みてなされたものであり、仮想計算機上で動作させるＯＳを改造することなく、仮想計算機上で動作するＯＳがダウンした場合に、速やかにＯＳを再起動させつつ、ダウンしたＯＳが使用していたメモリをダンプすることができる仮想計算機制御プログラム、仮想計算機制御システムおよびダンプ採取方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明の一つの態様では、仮想計算機上でゲストＯＳを動作させ、該ゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプする仮想計算機制御プログラムであって、前記ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定部と、前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域の前記フラグを解除するダンプ実行部と、前記仮想計算機上で動作するゲストＯＳの実行を制御し、該ゲストＯＳが前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域へアクセスしようとした場合に、前記ダンプ実行部によって該メモリ領域のフラグが解除されるまで、該ゲストＯＳの実行を停止させる仮想計算機制御部とを有することを特徴とする。【０００９】
この発明の態様によれば、ダウンしたゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定し、そのメモリ領域のダンプが完了した後にそのフラグを解除することとし、さらに、フラグが解除されていないメモリ領域にゲストＯＳがアクセスしようとした場合にフラグが解除させるまでゲストＯＳを停止させることとしたので、ダンプの採取とゲストＯＳの再起動を平行して行うことが可能になり、もって、仮想計算機上で動作させるＯＳを改造することなく、速やかにＯＳを再起動させつつ、ダウンしたＯＳが使用していたメモリをダンプすることができる。【００１０】
また、本発明の他の態様では、上記の発明の態様において、前記仮想計算機制御部は、仮想計算機上で動作しているゲストＯＳに障害が発生した場合に、前記ダンプ対象設定部による前記フラグの設定完了後、前記ダンプ実行部によるダンプが完了する前に、該仮想計算機上で該ゲストＯＳを再起動させることを特徴とする。【００１１】
この発明の態様によれば、ダンプが完了する前にゲストＯＳの再起動を開始することとしたので、速やかにＯＳを再起動させることができる。【００１２】
また、本発明の他の態様では、上記の発明の態様において、前記ダンプ実行部は、前記仮想計算機制御部によって停止された前記ゲストＯＳがアクセスしようとしていたメモリ領域を優先してダンプすることを特徴とする。【００１３】
この発明の態様によれば、ダウンしたゲストＯＳがアクセスしようとしたメモリ領域を優先してダンプするようにしたので、ダンプが終了するまでゲストＯＳを待機させる時間が短くなり、速やかにＯＳを再起動させることができる。【００１４】
また、本発明の他の態様では、上記の発明の態様において、前記仮想計算機制御部は、障害が発生した前記ゲストＯＳが動作していた仮想計算機とは別の仮想計算機を実現することができるだけの空きメモリがある場合に、該空きメモリを使用して実現した仮想計算機上で前記ゲストＯＳを再起動させることを特徴とする。【００１５】
この発明の態様によれば、十分な量の未使用のメモリがある場合に、そのメモリを使用して別の仮想計算機を実現し、その新たな仮想計算機でゲストＯＳを再起動させることとしたので、極めて速やかにゲストＯＳを再起動させることができる。【００１６】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１７】
本発明の一つの態様によれば、ダウンしたゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定し、そのメモリ領域のダンプが完了した後にそのフラグを解除することとし、さらに、フラグが解除されていないメモリ領域にゲストＯＳがアクセスしようとした場合にフラグが解除させるまでゲストＯＳを停止させることとしたので、ダンプの採取とゲストＯＳの再起動を平行して行うことが可能になり、もって、仮想計算機上で動作させるＯＳを改造することなく、速やかにＯＳを再起動させつつ、ダウンしたＯＳが使用していたメモリをダンプすることができるという効果を奏する。【００１８】
また、本発明の他の態様によれば、ダンプが完了する前にゲストＯＳの再起動を開始することとしたので、速やかにゲストＯＳを再起動させることができるという効果を奏する。【００１９】
また、本発明の他の態様によれば、ダウンしたゲストＯＳがアクセスしようとしたメモリ領域を優先してダンプするようにしたので、ダンプが終了するまでゲストＯＳを待機させる時間が短くなり、速やかにＯＳを再起動させることができるという効果を奏する。【００２０】
また、本発明の他の態様によれば、十分な量の未使用のメモリがある場合に、そのメモリを使用して別の仮想計算機を実現し、その新たな仮想計算機でゲストＯＳを再起動させることとしたので、極めて速やかにＯＳを再起動させることができるという効果を奏する。
【図面の簡単な説明】
【００２１】
【図１】図１は、本実施例に係る仮想計算機制御システムについて説明するための図である。
【図２】図２は、図１に示した計算機の構成を示すブロック図である。
【図３】図３は、仮想計算機制御プログラムの構成を示す図である。
【図４】図４は、仮想計算機制御プログラムが実行状態にある場合における仮想計算機管理テーブルの一例を示す図である。
【図５】図５は、仮想計算機制御プログラムが実行状態にある場合におけるアドレス変換テーブルの一例を示す図である。
【図６】図６は、仮想計算機制御部の動作を示すフローチャートである。
【図７】図７は、ダンプ実行部の動作を示すフローチャートである。
【符号の説明】
【００２２】
１    仮想計算機制御システム
１０    計算機
２０    ホストＯＳ
３０    仮想計算機制御プロセス
３１ａ、３１ｂ  仮想計算機
４０ａ、４０ｂ  ゲストＯＳ
５０ａ〜５０ｅ  アプリケーション
１１０    ＣＰＵ
１２０    入力装置
１３０    モニタ
１４０    媒体読取り装置
１５０    ネットワークインターフェース装置
１６０    ＲＡＭ
１７０    ハードディスク装置
１７１    仮想計算機制御プログラム
１７１ａ  仮想計算機制御部
１７１ｂ  ダンプ対象設定部
１７１ｃ  ダンプ実行部
１７１ｄ  仮想計算機管理テーブル
１７１ｅ  アドレス変換テーブル
１７２    仮想計算機イメージデータ
１７３    ダンプファイル
１８０    バス
【発明を実施するための最良の形態】
【００２３】
以下に、本発明に係る仮想計算機制御プログラム、仮想計算機制御システムおよびダンプ採取方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２４】
まず、本実施例に係る仮想計算機制御システムについて説明する。図１は、本実施例に係る仮想計算機制御システム１について説明するための図である。計算機１０は、物理的な計算機であり、各種演算処理を実行するＣＰＵ（Central  Processing  Unit）や、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）等を有する。【００２５】
ホストＯＳ２０は、計算機１０上で動作するアプリケーション５０ａ等の各種アプリケーションに種々のサービスを提供する基本ソフトである。ホストＯＳ２０は、通常は単にＯＳと呼ばれるが、本明細書では、物理的な計算機上で動作するＯＳと、仮想計算機上で動作するＯＳとを区別するために、前者をホストＯＳと呼び、後者をゲストＯＳと呼ぶこととする。【００２６】
仮想計算機制御プロセス３０は、本実施例に係る仮想計算機制御プログラムが実行状態になったプロセスであり、仮想計算機３１ａおよび３１ｂのような仮想的な計算機を実現し、それらの上でゲストＯＳ４０ａや４０ｂのようなゲストＯＳを稼動させる。ゲストＯＳ４０ａおよび４０ｂは、計算機１０に導入すればホストＯＳとして動作することが可能な通常の基本ソフトであり、それぞれ、アプリケーション５０ｂおよび５０ｃや、アプリケーション５０ｄおよび５０ｅのような各種アプリケーションに対して種々のサービスを提供する。なお、ホストＯＳ２０、ゲストＯＳ４０ａおよび４０ｂは、それぞれ、同じ種類のＯＳであってもよいし、異なる種類のＯＳであってもよい。【００２７】
仮想計算機制御プロセス３０は、Ｈｙｐｅｒｖｉｓｏｒとも呼ばれ、仮想計算機の資源へのアクセスを物理的な計算機の資源へのアクセスに置き換えたり、仮想計算機間での競合する処理を調停したりといった制御を行う。また、仮想計算機制御プロセス３０は、ゲストＯＳ４０ａや４０ｂが障害によりダウンした場合に、その原因を調査することを可能にするため、ダウンしたゲストＯＳが使用していたメモリの内容を計算機１０が備えるハードディスク装置等にダンプファイル１７３として保存する機能をもつ。【００２８】
ゲストＯＳがダウンした場合、そのゲストＯＳ上で動作するアプリケーションが提供していたサービスを早期に回復させるため、できるだけ速やかにゲストＯＳとアプリケーションを再起動する必要がある。しかしながら、ダンプが完了する前に、ＯＳ等の再起動によってダンプ対象のメモリが上書きされてはならない。【００２９】
この矛盾する課題を解決するため、仮想計算機制御プロセス３０は、ゲストＯＳがダウンした場合に、新たな仮想計算機を実現することができるだけの未使用のメモリがあれば、そのメモリを使用して新たな仮想計算機を実現してその上でゲストＯＳを再起動させ、それと平行して、ゲストＯＳのダウンが発生した仮想計算機にダンプを行わせる。【００３０】
この場合、仮想計算機間でのメモリの転記等をともなわずに極めて速やかにＯＳの再起動が開始され、ゲストＯＳの再起動とダンプ処理との間での処理の競合も発生しないため、非常に短期間のうちに、ゲストＯＳの再起動とサービスの提供再開を実現することができる。【００３１】
また、仮想計算機制御プロセス３０は、ゲストＯＳがダウンした場合に、新たな仮想計算機を実現することができるだけの未使用のメモリがなければ、ゲストＯＳが使用していたメモリの各ページにダンプ処理中である旨のフラグを設定した後に、その仮想計算機上で、ゲストＯＳの再起動と、ダンプの実行とを平行して行わせる。【００３２】
この場合、仮想計算機制御プロセス３０は、再起動したゲストＯＳがダンプの完了していないページにアクセスしようとした場合に、そのページのダンプが完了するまでゲストＯＳの実行を一時的に停止させることにより、ゲストＯＳの再起動とダンプ処理の競合の問題を解決する。【００３３】
一般に、ゲストＯＳとアプリケーションの再実行に要する時間は、ダンプに要する時間よりも短いため、このようにゲストＯＳ等の再起動とダンプ処理を平行実行することにより、一時的にゲストＯＳの実行が停止されることはあっても、ダンプ処理の終了時には、ゲストＯＳ等の再起動が完了していることになり、ダンプ処理の完了後にゲストＯＳ等の再起動を行う場合と比較して、短時間でサービスの提供を再開することができる。【００３４】
次に、仮想計算機制御プロセス３０の起動の仕組みについて説明する。図２は、図１に示した計算機１０の構成を示すブロック図である。同図に示すように、計算機１０は、各種演算処理を実行するＣＰＵ１１０と、ユーザからのデータの入力を受け付ける入力装置１２０と、各種情報を表示するモニタ１３０と、記録媒体からプログラム等を読み取る媒体読取り装置１４０と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置１５０と、各種情報を一時記憶するＲＡＭ１６０と、ハードディスク装置１７０とをバス１８０で接続して構成される。【００３５】
そして、ハードディスク装置１７０には、仮想計算機制御プログラム１７１が記憶される。そして、ＣＰＵ１１０が仮想計算機制御プログラム１７１をハードディスク装置１７０から読み出してＲＡＭ１６０に展開することにより、仮想計算機制御プログラム１７１は、仮想計算機制御プロセス３０として機能するようになる。【００３６】
そして、仮想計算機制御プロセス３０は、ハードディスク装置１７０に記憶されている仮想計算機イメージデータ１７２を読み出して、自身に割り当たられている仮想記憶上の領域に展開することにより、仮想計算機を実現し、仮想計算機イメージデータ１７２に含まれるゲストＯＳをその上で起動させる。そして、起動したゲストＯＳは、やはり仮想計算機イメージデータ１７２に含まれるアプリケーションを起動し、サービスの提供を開始させる。【００３７】
そして、仮想計算機制御プロセス３０は、ゲストＯＳや、ゲストＯＳから起動されたアプリケーションを仮想計算機上で動作させるために必要な各種制御を実行し、ゲストＯＳが障害でダウンした場合には、ゲストＯＳが使用していたメモリの内容をハードディスク装置１７０にダンプファイル１７３として記憶させる。【００３８】
次に、図２に示した仮想計算機制御プログラム１７１の構成について説明する。図３は、仮想計算機制御プログラム１７１の構成を示す図である。同図に示すように、仮想計算機制御プログラム１７１は、仮想計算機制御部１７１ａと、ダンプ対象設定部１７１ｂと、ダンプ実行部１７１ｃと、仮想計算機管理テーブル１７１ｄと、アドレス変換テーブル１７１ｅとを有する。【００３９】
仮想計算機制御部１７１ａは、仮想計算機上でゲストＯＳやアプリケーションを動作させるために必要な各種制御を実行する制御部である。仮想計算機制御部１７１ａは、仮想計算機上で動作するゲストＯＳのダウンを検出すると、ゲストＯＳが使用していたメモリの各ページをダンプ対象に設定するようにダンプ対象設定部１７１ｂに指示し、ダンプ対象設定部１７１ｂによってダンプ対象とされたページをダンプするようにダンプ実行部１７１ｃに指示する。【００４０】
そして、これらの指示をした後、仮想計算機制御部１７１ａは、ダウンしたゲストＯＳを再起動させる。具体的には、既に説明したように、十分な空きメモリがある場合は、その空きメモリを使ってゲストＯＳを起動させ、十分な空きメモリがない場合は、ゲストＯＳがダウンした仮想計算機上でゲストＯＳを再起動させ、ダンプが未完了のページへのメモリアクセスが発生した場合は、そのページのダンプが完了するまで、ゲストＯＳの動作を一時停止させる。【００４１】
ダンプ対象設定部１７１ｂは、ダウンしたゲストＯＳが使用していたメモリの各ページに対応するアドレス変換テーブル１７１ｅのエントリのダンプフラグを“ｏｎ”に設定する処理部である。【００４２】
ダンプ実行部１７１ｃは、ダンプ対象設定部１７１ｂによってダンプフラグが“ｏｎ”に設定されたエントリに対応するページを順次ダンプファイル１７３に書き出していく処理部である。ダンプ実行部１７１ｃは、ゲストＯＳがダンプの完了を待って一時停止されている場合、ダンプの完了を待っているページを優先して先にダンプすることにより、ゲストＯＳ等の再起動を早める。【００４３】
仮想計算機管理テーブル１７１ｄは、仮想計算機に関する情報が保持されるテーブルである。仮想計算機制御プログラム１７１が実行状態にある場合における仮想計算機管理テーブル１７１ｄの一例を図４に示す。同図に示すように、仮想計算機管理テーブル１７１ｄは、ＶＭＩＤ、メモリ割当量、ステータス、ダンプ待ちページ番号といった項目を有する。【００４４】
ＶＭＩＤは、仮想計算機を識別するための識別番号であり、メモリ割当量は、その仮想計算機に割り当てられているメモリ量である。ステータスは、仮想計算機の状態を示し、  “ｒｕｎ”  、“ｐａｕｓｅ”もしくは“ｎｏ＿ｕｓｅ”のいずれかの値をとる。“ｒｕｎ”は、仮想計算機が稼動中であることを意味し、“ｐａｕｓｅ”は、仮想計算機がダンプの完了を待って一時停止状態にあることを意味する。また、“ｎｏ＿ｕｓｅ”は、その仮想計算機が使用されていないことを意味する。ダンプ待ちページ番号は、仮想計算機がダンプの完了を待っているページの番号を示す。【００４５】
アドレス変換テーブル１７１ｅは、仮想計算機においてメモリアクセスに用いられるアドレスを、ホストＯＳ上で動作するアプリケーション等がメモリアクセスに用いるアドレスへページ単位で変換するためのテーブルである。仮想計算機制御プログラム１７１が実行状態にある場合におけるアドレス変換テーブル１７１ｅの一例を図５に示す。同図に示すように、アドレス変換テーブル１７１ｅは、ページ番号、ゲストアドレス、ホストアドレス、ダンプフラグといった項目を有し、仮想計算機毎にテーブルが存在する。【００４６】
ページ番号は、ページを識別するための番号である。ゲストＯＳは、仮想計算機の記憶空間におけるそのページのアドレスであり、ホストアドレスは、ホストＯＳの仮想記憶空間におけるそのページのアドレスである。ダンプフラグは、ダンプ対象設定部１７１ｂによって、ダンプ対象のページが“ｏｎ”に設定されるフラグである。【００４７】
次に、図３に示した仮想計算機制御プログラム１７１の動作について説明する。図６は、仮想計算機制御部１７１ａの動作を示すフローチャートである。なお、同図に示すフローチャートは、ゲストＯＳのダウンが検出されてから、ダンプが完了するまでの動作を表しており、説明を簡単にするため、ゲストＯＳがダウンした仮想計算機以外の仮想計算機の制御のために必要な動作の図示を省略している。【００４８】
同図に示すように、ゲストＯＳのダウンが検出されると（ステップＳ１０１）、仮想計算機制御部１７１ａは、ゲストＯＳが使用していたメモリの各ページに対応するアドレス変換テーブル１７１ｅのエントリのダンプフラグを“ｏｎ”に設定するようにダンプ対象設定部１７１ｂに指示し（ステップＳ１０２）、ダンプ対象設定部１７１ｂによってダンプ対象とされたページのダンプを開始するようにダンプ実行部１７１ｃに指示する（ステップＳ１０３）。【００４９】
そして、仮想計算機制御部１７１ａは、仮想計算機管理テーブル１７１ｄを参照して、ゲストＯＳがダウンした仮想計算機のメモリ割当量を取得する（ステップＳ１０４）。そしてそのゲストＯＳの代替となる仮想計算機、すなわち、同量以上のメモリを割り当てられており、ステータスが“ｎｏ＿ｕｓｅ”である仮想計算機が仮想計算機管理テーブル１７１ｄにあれば（ステップＳ１０５肯定）、その仮想計算機上でゲストＯＳを再起動し、その仮想計算機のステータスを“ｒｕｎ”へ変更する（ステップＳ１０６）。【００５０】
そして、ダンプ実行部１７１ｃよるダンプが完了するのを待ち（ステップＳ１０７否定）、ダンプが完了したならば（ステップＳ１０７肯定）、ダンプが完了した仮想計算機のステータスを“ｎｏ＿ｕｓｅ”へ変更する（ステップＳ１０８）。【００５１】
一方、代替となる仮想計算機が仮想計算機管理テーブル１７１ｄになければ（ステップＳ１０５否定）、現在の仮想計算機上でゲストＯＳを再起動させる（ステップＳ１０９）。そして、ゲストＯＳからのメモリアクセス要求を処理するためにアドレス変換テーブル１７１ｅを参照した際に、当該のページのダンプフラグの値が“ｏｎ”である場合、すなわち、当該のページがダンプ対象であるがダンプの採取がまだ完了していない場合には（ステップＳ１１０肯定）、ゲストＯＳのステータスを“ｐａｕｓｅ”へ変更して一時停止にし（ステップＳ１１１）、ダンプ待ちページ番号に、アクセス要求があったページのページ番号を設定する（ステップＳ１１２）。【００５２】
そして、設定したダンプ待ちページ番号が“０”にクリアされるのを待ち（ステップＳ１１３否定）、ダンプ待ちページ番号がクリアされたならば（ステップＳ１１３肯定）、ゲストＯＳのステータスを“ｒｕｎ”へ変更して一時停止を解除する（ステップＳ１１４）。そして、このようなメモリアクセスの監視を、ダンプ実行部１７１ｃによるダンプの採取が完了するまで継続する。【００５３】
図７は、ダンプ実行部１７１ｃの動作を示すフローチャートである。同図に示すように、ダンプ実行部１７１ｃは、ダンプ開始の指示を受け付けると（ステップＳ２０１）、仮想計算機管理テーブル１７１ｄを参照して、ダンプ対象の仮想計算機のダンプ待ちページ番号の値を確認する（ステップＳ２０２）。【００５４】
ここで、ダンプ待ちページ番号の値が“０”でなければ（ステップＳ２０３否定）、アドレス変換テーブル１７１ｅを参照して、ダンプ待ちページ番号に対応するページのダンプフラグの値を確認する（ステップＳ２０４）。そして、ダンプフラグの値が“ｏｎ”であれば（ステップＳ２０５肯定）、ダンプ待ちページ番号に対応するページをダンプ対象に選定する（ステップＳ２０６）。【００５５】
そして、選定したページのダンプを実行し（ステップＳ２０７）、ダンプ待ちページ番号の値を“０”にクリアし（ステップＳ２０８）、ダンプしたページのダンプフラグを“ｏｆｆ”に変更した後（ステップＳ２０９）、ステップＳ２０２から処理を再開する。【００５６】
一方、ダンプ待ちページ番号の値が“０”の場合（ステップＳ２０３肯定）、もしくは、ダンプ待ちページ番号に対応するページのダンプフラグの値が“ｏｎ”でない場合は（ステップＳ２０５否定）、ダンプ実行部１７１ｃは、アドレス変換テーブル１７１ｅを参照して、ダンプフラグの値が“ｏｎ”であるページの一つをダンプ対象に選定する（ステップＳ２１０）。【００５７】
そして、該当するページがあった場合は（ステップＳ２１１肯定）、選定したページのダンプを実行し（ステップＳ２１２）、ダンプしたページのダンプフラグを“ｏｆｆ”に変更した後（ステップＳ２０９）、ステップＳ２０２から処理を再開する。該当するページがなかった場合は（ステップＳ２１１否定）ダンプが完了した旨を仮想計算機制御部１７１ａへ通知した後（ステップＳ２１３）、処理を終了する。【００５８】
上述してきたように、本実施例では、ダウンしたゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定し、そのメモリ領域のダンプが完了した後にそのフラグを解除することとし、さらに、フラグが解除されていないメモリ領域にゲストＯＳがアクセスしようとした場合にフラグが解除させるまでゲストＯＳを停止させることとしたので、ダンプの採取とゲストＯＳの再起動を平行して行うことが可能になり、もって、仮想計算機上で動作させるＯＳを改造することなく、速やかにＯＳを再起動させつつ、ダウンしたＯＳが使用していたメモリをダンプすることができる。【００５９】
また、十分な量の未使用のメモリがある場合には、そのメモリを使用して別の仮想計算機を実現し、その新たな仮想計算機でゲストＯＳを再起動させることとしたので、極めて速やかにＯＳを再起動させることができるという効果を奏する。【００６０】
なお、上記の実施例ではページ単位でダンプの進行状況を管理することとしたが、ページ以外の単位でダンプの進行状況を管理することとしてもよい。また、上記の実施例では、アドレス変換のためのテーブルにダンプの進行状況を示すフラグを設けることとしたが、このフラグを別のテーブルに設けることとしてもよい。
【産業上の利用可能性】
【００６１】
以上のように、本発明に係る仮想計算機制御プログラム、仮想計算機制御システムおよびダンプ採取方法は、仮想計算機上で動作するゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプする場合に有用であり、特に、ゲストＯＳを改造することなく、速やかにゲストＯＳを再起動させつつ、ダウンしたゲストＯＳが使用していた各メモリ領域をダンプすることが必要な場合に適している。
【図１】
2008114395.tif 000003
【図２】
2008114395.tif 000004
【図３】
2008114395.tif 000005
【図４】
2008114395.tif 000006
【図５】
2008114395.tif 000007
【図６】
2008114395.tif 000008
【図７】
2008114395.tif 000009
【手続補正書】
【提出日】平成21年5月14日(2009.5.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想計算機上でゲストＯＳを動作させ、該ゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプする仮想計算機制御プログラムであって、
前記ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定部と、
前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域の前記フラグを解除するダンプ実行部と、
前記仮想計算機上で動作するゲストＯＳの実行を制御し、該ゲストＯＳが前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域へアクセスしようとした場合に、前記ダンプ実行部によって該メモリ領域のフラグが解除されるまで、該ゲストＯＳの実行を停止させる仮想計算機制御部と
を有することを特徴とする仮想計算機制御プログラム。
【請求項２】
前記仮想計算機制御部は、仮想計算機上で動作しているゲストＯＳに障害が発生した場合に、前記ダンプ対象設定部による前記フラグの設定完了後、前記ダンプ実行部によるダンプが完了する前に、該仮想計算機上で該ゲストＯＳを再起動させることを特徴とする請求項１に記載の仮想計算機制御プログラム。
【請求項３】
前記ダンプ実行部は、前記仮想計算機制御部によって停止された前記ゲストＯＳがアクセスしようとしていたメモリ領域を優先してダンプすることを特徴とする請求項１に記載の仮想計算機制御プログラム。
【請求項４】
前記仮想計算機制御部は、障害が発生した前記ゲストＯＳが動作していた仮想計算機とは別の仮想計算機を実現することができるだけの空きメモリがある場合に、該空きメモリを使用して実現した仮想計算機上で前記ゲストＯＳを再起動させることを特徴とする請求項１〜３のいずれか一つに記載の仮想計算機制御プログラム。
【請求項５】
仮想計算機上でゲストＯＳを動作させ、該ゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプする仮想計算機制御システムであって、
前記ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定部と、
前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域の前記フラグを解除するダンプ実行部と、
前記仮想計算機上で動作するゲストＯＳの実行を制御し、該ゲストＯＳが前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域へアクセスしようとした場合に、前記ダンプ実行部によって該メモリ領域のフラグが解除されるまで、該ゲストＯＳの実行を停止させる仮想計算機制御部と
を有することを特徴とする仮想計算機制御システム。
【請求項６】
仮想計算機上で動作するゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプするダンプ採取方法であって、
前記ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定工程と、
前記ダンプ対象設定工程において前記フラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域の前記フラグを解除するダンプ実行工程と、
前記仮想計算機上で動作するゲストＯＳの実行を制御し、該ゲストＯＳが前記ダンプ対象設定工程において前記フラグが設定されたメモリ領域へアクセスしようとした場合に、前記ダンプ実行部において該メモリ領域のフラグが解除されるまで、該ゲストＯＳの実行を停止させる仮想計算機制御工程とを有し、
前記ダンプ実行工程と前記仮想計算機制御工程が平行して実行されることを特徴とするダンプ採取方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機上で動作するゲストＯＳに障害が発生した場合にゲストＯＳが使用していた各メモリ領域をファイルにダンプする仮想計算機ダンプ採取プログラム、ダンプ採取システムおよびダンプ採取方法に関し、特に、ゲストＯＳを改造することなく、速やかにゲストＯＳを再起動させつつ、ダウンしたゲストＯＳが使用していた各メモリ領域をダンプすることができる仮想計算機ダンプ採取プログラム、ダンプ採取システムおよびダンプ採取方法に関する。
【背景技術】
【０００２】
コンピュータ上に、仮想計算機をソフトウェアによって実現し、仮想計算機上でＯＳやアプリケーションを実行することを可能にする仮想計算機技術が知られている。このような仮想計算機上でＯＳやアプリケーションを動作させる場合、ＯＳのダウンが発生したときに、障害の原因を調査するために、ＯＳが使用しているメモリの内容をダンプして保存することが必要になる。
【０００３】
従来、ダンプの採取中は、情報保持のためにＯＳを再起動することができなかった。このため、ＯＳのダウンにより停止した業務は、ダンプの採取が完了するまで再開することができず、業務の再開が遅延するという問題があった。この問題は、近年、ＯＳが使用するメモリ量が増大し、ダンプの採取に要する時間が長くなる傾向があるために、益々重大なものとなっていた。
【０００４】
この問題を解決するため、特許文献１では、ＯＳを改造することにより、ＯＳのカーネル部分のダンプと再起動を先行して行い、業務を再開させながら並行して他の部分のダンプを採取する技術が開示されている。また、特許文献２には、障害が発生した仮想計算機のメモリを待機系の仮想計算機に転記し、ダンプを待機系の仮想計算機に行わせることで、業務の再開を早める技術が開示されている。
【０００５】
【特許文献１】特開平１０−３３３９４４号公報
【特許文献２】特開２００１−２９０６７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１において開示されている技術は、仮想計算機上で動作させるＯＳを改造することが前提となっており、コンパイル済の状態で市販される一般的なＯＳを仮想計算機上で動作させる場合には適用することができない。また、特許文献２において開示されている技術は、仮想計算機間でのメモリの転記が必要であり、その分だけ業務の再開が遅延してしまう。
【０００７】
本発明は、上記に鑑みてなされたものであり、仮想計算機上で動作させるＯＳを改造することなく、仮想計算機上で動作するＯＳがダウンした場合に、速やかにＯＳを再起動させつつ、ダウンしたＯＳが使用していたメモリをダンプすることができる仮想計算機ダンプ採取プログラム（仮想計算機制御プログラム）、ダンプ採取システム（仮想計算機制御システム）およびダンプ採取方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明の一つの態様では、仮想計算機上でゲストＯＳを動作させ、該ゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプする仮想計算機制御プログラムであって、前記ゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定するダンプ対象設定部と、前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域をファイルにダンプし、ダンプが完了したメモリ領域の前記フラグを解除するダンプ実行部と、前記仮想計算機上で動作するゲストＯＳの実行を制御し、該ゲストＯＳが前記ダンプ対象設定部によって前記フラグが設定されたメモリ領域へアクセスしようとした場合に、前記ダンプ実行部によって該メモリ領域のフラグが解除されるまで、該ゲストＯＳの実行を停止させる仮想計算機制御部とを有することを特徴とする。
【０００９】
この発明の態様によれば、ダウンしたゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定し、そのメモリ領域のダンプが完了した後にそのフラグを解除することとし、さらに、フラグが解除されていないメモリ領域にゲストＯＳがアクセスしようとした場合にフラグが解除させるまでゲストＯＳを停止させることとしたので、ダンプの採取とゲストＯＳの再起動を平行して行うことが可能になり、もって、仮想計算機上で動作させるＯＳを改造することなく、速やかにＯＳを再起動させつつ、ダウンしたＯＳが使用していたメモリをダンプすることができる。
【００１０】
また、本発明の他の態様では、上記の発明の態様において、前記仮想計算機制御部は、仮想計算機上で動作しているゲストＯＳに障害が発生した場合に、前記ダンプ対象設定部による前記フラグの設定完了後、前記ダンプ実行部によるダンプが完了する前に、該仮想計算機上で該ゲストＯＳを再起動させることを特徴とする。
【００１１】
この発明の態様によれば、ダンプが完了する前にゲストＯＳの再起動を開始することとしたので、速やかにＯＳを再起動させることができる。
【００１２】
また、本発明の他の態様では、上記の発明の態様において、前記ダンプ実行部は、前記仮想計算機制御部によって停止された前記ゲストＯＳがアクセスしようとしていたメモリ領域を優先してダンプすることを特徴とする。
【００１３】
この発明の態様によれば、ダウンしたゲストＯＳがアクセスしようとしたメモリ領域を優先してダンプするようにしたので、ダンプが終了するまでゲストＯＳを待機させる時間が短くなり、速やかにＯＳを再起動させることができる。
【００１４】
また、本発明の他の態様では、上記の発明の態様において、前記仮想計算機制御部は、障害が発生した前記ゲストＯＳが動作していた仮想計算機とは別の仮想計算機を実現することができるだけの空きメモリがある場合に、該空きメモリを使用して実現した仮想計算機上で前記ゲストＯＳを再起動させることを特徴とする。
【００１５】
この発明の態様によれば、十分な量の未使用のメモリがある場合に、そのメモリを使用して別の仮想計算機を実現し、その新たな仮想計算機でゲストＯＳを再起動させることとしたので、極めて速やかにゲストＯＳを再起動させることができる。
【００１６】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１７】
本発明の一つの態様によれば、ダウンしたゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定し、そのメモリ領域のダンプが完了した後にそのフラグを解除することとし、さらに、フラグが解除されていないメモリ領域にゲストＯＳがアクセスしようとした場合にフラグが解除させるまでゲストＯＳを停止させることとしたので、ダンプの採取とゲストＯＳの再起動を平行して行うことが可能になり、もって、仮想計算機上で動作させるＯＳを改造することなく、速やかにＯＳを再起動させつつ、ダウンしたＯＳが使用していたメモリをダンプすることができるという効果を奏する。
【００１８】
また、本発明の他の態様によれば、ダンプが完了する前にゲストＯＳの再起動を開始することとしたので、速やかにゲストＯＳを再起動させることができるという効果を奏する。
【００１９】
また、本発明の他の態様によれば、ダウンしたゲストＯＳがアクセスしようとしたメモリ領域を優先してダンプするようにしたので、ダンプが終了するまでゲストＯＳを待機させる時間が短くなり、速やかにＯＳを再起動させることができるという効果を奏する。
【００２０】
また、本発明の他の態様によれば、十分な量の未使用のメモリがある場合に、そのメモリを使用して別の仮想計算機を実現し、その新たな仮想計算機でゲストＯＳを再起動させることとしたので、極めて速やかにＯＳを再起動させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に、本発明に係る仮想計算機制御プログラム、仮想計算機制御システムおよびダンプ採取方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２２】
まず、本実施例に係る仮想計算機制御システムについて説明する。図１は、本実施例に係る仮想計算機制御システム１について説明するための図である。計算機１０は、物理的な計算機であり、各種演算処理を実行するＣＰＵ（Central  Processing  Unit）や、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）等を有する。
【００２３】
ホストＯＳ２０は、計算機１０上で動作するアプリケーション５０ａ等の各種アプリケーションに種々のサービスを提供する基本ソフトである。ホストＯＳ２０は、通常は単にＯＳと呼ばれるが、本明細書では、物理的な計算機上で動作するＯＳと、仮想計算機上で動作するＯＳとを区別するために、前者をホストＯＳと呼び、後者をゲストＯＳと呼ぶこととする。
【００２４】
仮想計算機制御プロセス３０は、本実施例に係る仮想計算機制御プログラムが実行状態になったプロセスであり、仮想計算機３１ａおよび３１ｂのような仮想的な計算機を実現し、それらの上でゲストＯＳ４０ａや４０ｂのようなゲストＯＳを稼動させる。ゲストＯＳ４０ａおよび４０ｂは、計算機１０に導入すればホストＯＳとして動作することが可能な通常の基本ソフトであり、それぞれ、アプリケーション５０ｂおよび５０ｃや、アプリケーション５０ｄおよび５０ｅのような各種アプリケーションに対して種々のサービスを提供する。なお、ホストＯＳ２０、ゲストＯＳ４０ａおよび４０ｂは、それぞれ、同じ種類のＯＳであってもよいし、異なる種類のＯＳであってもよい。
【００２５】
仮想計算機制御プロセス３０は、Ｈｙｐｅｒｖｉｓｏｒとも呼ばれ、仮想計算機の資源へのアクセスを物理的な計算機の資源へのアクセスに置き換えたり、仮想計算機間での競合する処理を調停したりといった制御を行う。また、仮想計算機制御プロセス３０は、ゲストＯＳ４０ａや４０ｂが障害によりダウンした場合に、その原因を調査することを可能にするため、ダウンしたゲストＯＳが使用していたメモリの内容を計算機１０が備えるハードディスク装置等にダンプファイル１７３として保存する機能をもつ。
【００２６】
ゲストＯＳがダウンした場合、そのゲストＯＳ上で動作するアプリケーションが提供していたサービスを早期に回復させるため、できるだけ速やかにゲストＯＳとアプリケーションを再起動する必要がある。しかしながら、ダンプが完了する前に、ＯＳ等の再起動によってダンプ対象のメモリが上書きされてはならない。
【００２７】
この矛盾する課題を解決するため、仮想計算機制御プロセス３０は、ゲストＯＳがダウンした場合に、新たな仮想計算機を実現することができるだけの未使用のメモリがあれば、そのメモリを使用して新たな仮想計算機を実現してその上でゲストＯＳを再起動させ、それと平行して、ゲストＯＳのダウンが発生した仮想計算機にダンプを行わせる。
【００２８】
この場合、仮想計算機間でのメモリの転記等をともなわずに極めて速やかにＯＳの再起動が開始され、ゲストＯＳの再起動とダンプ処理との間での処理の競合も発生しないため、非常に短期間のうちに、ゲストＯＳの再起動とサービスの提供再開を実現することができる。
【００２９】
また、仮想計算機制御プロセス３０は、ゲストＯＳがダウンした場合に、新たな仮想計算機を実現することができるだけの未使用のメモリがなければ、ゲストＯＳが使用していたメモリの各ページにダンプ処理中である旨のフラグを設定した後に、その仮想計算機上で、ゲストＯＳの再起動と、ダンプの実行とを平行して行わせる。
【００３０】
この場合、仮想計算機制御プロセス３０は、再起動したゲストＯＳがダンプの完了していないページにアクセスしようとした場合に、そのページのダンプが完了するまでゲストＯＳの実行を一時的に停止させることにより、ゲストＯＳの再起動とダンプ処理の競合の問題を解決する。
【００３１】
一般に、ゲストＯＳとアプリケーションの再実行に要する時間は、ダンプに要する時間よりも短いため、このようにゲストＯＳ等の再起動とダンプ処理を平行実行することにより、一時的にゲストＯＳの実行が停止されることはあっても、ダンプ処理の終了時には、ゲストＯＳ等の再起動が完了していることになり、ダンプ処理の完了後にゲストＯＳ等の再起動を行う場合と比較して、短時間でサービスの提供を再開することができる。
【００３２】
次に、仮想計算機制御プロセス３０の起動の仕組みについて説明する。図２は、図１に示した計算機１０の構成を示すブロック図である。同図に示すように、計算機１０は、各種演算処理を実行するＣＰＵ１１０と、ユーザからのデータの入力を受け付ける入力装置１２０と、各種情報を表示するモニタ１３０と、記録媒体からプログラム等を読み取る媒体読取り装置１４０と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置１５０と、各種情報を一時記憶するＲＡＭ１６０と、ハードディスク装置１７０とをバス１８０で接続して構成される。
【００３３】
そして、ハードディスク装置１７０には、仮想計算機制御プログラム１７１が記憶される。そして、ＣＰＵ１１０が仮想計算機制御プログラム１７１をハードディスク装置１７０から読み出してＲＡＭ１６０に展開することにより、仮想計算機制御プログラム１７１は、仮想計算機制御プロセス３０として機能するようになる。
【００３４】
そして、仮想計算機制御プロセス３０は、ハードディスク装置１７０に記憶されている仮想計算機イメージデータ１７２を読み出して、自身に割り当たられている仮想記憶上の領域に展開することにより、仮想計算機を実現し、仮想計算機イメージデータ１７２に含まれるゲストＯＳをその上で起動させる。そして、起動したゲストＯＳは、やはり仮想計算機イメージデータ１７２に含まれるアプリケーションを起動し、サービスの提供を開始させる。
【００３５】
そして、仮想計算機制御プロセス３０は、ゲストＯＳや、ゲストＯＳから起動されたアプリケーションを仮想計算機上で動作させるために必要な各種制御を実行し、ゲストＯＳが障害でダウンした場合には、ゲストＯＳが使用していたメモリの内容をハードディスク装置１７０にダンプファイル１７３として記憶させる。
【００３６】
次に、図２に示した仮想計算機制御プログラム１７１の構成について説明する。図３は、仮想計算機制御プログラム１７１の構成を示す図である。同図に示すように、仮想計算機制御プログラム１７１は、仮想計算機制御部１７１ａと、ダンプ対象設定部１７１ｂと、ダンプ実行部１７１ｃと、仮想計算機管理テーブル１７１ｄと、アドレス変換テーブル１７１ｅとを有する。
【００３７】
仮想計算機制御部１７１ａは、仮想計算機上でゲストＯＳやアプリケーションを動作させるために必要な各種制御を実行する制御部である。仮想計算機制御部１７１ａは、仮想計算機上で動作するゲストＯＳのダウンを検出すると、ゲストＯＳが使用していたメモリの各ページをダンプ対象に設定するようにダンプ対象設定部１７１ｂに指示し、ダンプ対象設定部１７１ｂによってダンプ対象とされたページをダンプするようにダンプ実行部１７１ｃに指示する。
【００３８】
そして、これらの指示をした後、仮想計算機制御部１７１ａは、ダウンしたゲストＯＳを再起動させる。具体的には、既に説明したように、十分な空きメモリがある場合は、その空きメモリを使ってゲストＯＳを起動させ、十分な空きメモリがない場合は、ゲストＯＳがダウンした仮想計算機上でゲストＯＳを再起動させ、ダンプが未完了のページへのメモリアクセスが発生した場合は、そのページのダンプが完了するまで、ゲストＯＳの動作を一時停止させる。
【００３９】
ダンプ対象設定部１７１ｂは、ダウンしたゲストＯＳが使用していたメモリの各ページに対応するアドレス変換テーブル１７１ｅのエントリのダンプフラグを“ｏｎ”に設定する処理部である。
【００４０】
ダンプ実行部１７１ｃは、ダンプ対象設定部１７１ｂによってダンプフラグが“ｏｎ”に設定されたエントリに対応するページを順次ダンプファイル１７３に書き出していく処理部である。ダンプ実行部１７１ｃは、ゲストＯＳがダンプの完了を待って一時停止されている場合、ダンプの完了を待っているページを優先して先にダンプすることにより、ゲストＯＳ等の再起動を早める。
【００４１】
仮想計算機管理テーブル１７１ｄは、仮想計算機に関する情報が保持されるテーブルである。仮想計算機制御プログラム１７１が実行状態にある場合における仮想計算機管理テーブル１７１ｄの一例を図４に示す。同図に示すように、仮想計算機管理テーブル１７１ｄは、ＶＭＩＤ、メモリ割当量、ステータス、ダンプ待ちページ番号といった項目を有する。
【００４２】
ＶＭＩＤは、仮想計算機を識別するための識別番号であり、メモリ割当量は、その仮想計算機に割り当てられているメモリ量である。ステータスは、仮想計算機の状態を示し、“ｒｕｎ”、“ｐａｕｓｅ”もしくは“ｎｏ＿ｕｓｅ”のいずれかの値をとる。“ｒｕｎ”は、仮想計算機が稼動中であることを意味し、“ｐａｕｓｅ”は、仮想計算機がダンプの完了を待って一時停止状態にあることを意味する。また、“ｎｏ＿ｕｓｅ”は、その仮想計算機が使用されていないことを意味する。ダンプ待ちページ番号は、仮想計算機がダンプの完了を待っているページの番号を示す。
【００４３】
アドレス変換テーブル１７１ｅは、仮想計算機においてメモリアクセスに用いられるアドレスを、ホストＯＳ上で動作するアプリケーション等がメモリアクセスに用いるアドレスへページ単位で変換するためのテーブルである。仮想計算機制御プログラム１７１が実行状態にある場合におけるアドレス変換テーブル１７１ｅの一例を図５に示す。同図に示すように、アドレス変換テーブル１７１ｅは、ページ番号、ゲストアドレス、ホストアドレス、ダンプフラグといった項目を有し、仮想計算機毎にテーブルが存在する。
【００４４】
ページ番号は、ページを識別するための番号である。ゲストＯＳは、仮想計算機の記憶空間におけるそのページのアドレスであり、ホストアドレスは、ホストＯＳの仮想記憶空間におけるそのページのアドレスである。ダンプフラグは、ダンプ対象設定部１７１ｂによって、ダンプ対象のページが“ｏｎ”に設定されるフラグである。
【００４５】
次に、図３に示した仮想計算機制御プログラム１７１の動作について説明する。図６は、仮想計算機制御部１７１ａの動作を示すフローチャートである。なお、同図に示すフローチャートは、ゲストＯＳのダウンが検出されてから、ダンプが完了するまでの動作を表しており、説明を簡単にするため、ゲストＯＳがダウンした仮想計算機以外の仮想計算機の制御のために必要な動作の図示を省略している。
【００４６】
同図に示すように、ゲストＯＳのダウンが検出されると（ステップＳ１０１）、仮想計算機制御部１７１ａは、ゲストＯＳが使用していたメモリの各ページに対応するアドレス変換テーブル１７１ｅのエントリのダンプフラグを“ｏｎ”に設定するようにダンプ対象設定部１７１ｂに指示し（ステップＳ１０２）、ダンプ対象設定部１７１ｂによってダンプ対象とされたページのダンプを開始するようにダンプ実行部１７１ｃに指示する（ステップＳ１０３）。
【００４７】
そして、仮想計算機制御部１７１ａは、仮想計算機管理テーブル１７１ｄを参照して、ゲストＯＳがダウンした仮想計算機のメモリ割当量を取得する（ステップＳ１０４）。そしてそのゲストＯＳの代替となる仮想計算機、すなわち、同量以上のメモリを割り当てられており、ステータスが“ｎｏ＿ｕｓｅ”である仮想計算機が仮想計算機管理テーブル１７１ｄにあれば（ステップＳ１０５肯定）、その仮想計算機上でゲストＯＳを再起動し、その仮想計算機のステータスを“ｒｕｎ”へ変更する（ステップＳ１０６）。
【００４８】
そして、ダンプ実行部１７１ｃよるダンプが完了するのを待ち（ステップＳ１０７否定）、ダンプが完了したならば（ステップＳ１０７肯定）、ダンプが完了した仮想計算機のステータスを“ｎｏ＿ｕｓｅ”へ変更する（ステップＳ１０８）。
【００４９】
一方、代替となる仮想計算機が仮想計算機管理テーブル１７１ｄになければ（ステップＳ１０５否定）、現在の仮想計算機上でゲストＯＳを再起動させる（ステップＳ１０９）。そして、ゲストＯＳからのメモリアクセス要求を処理するためにアドレス変換テーブル１７１ｅを参照した際に、当該のページのダンプフラグの値が“ｏｎ”である場合、すなわち、当該のページがダンプ対象であるがダンプの採取がまだ完了していない場合には（ステップＳ１１０肯定）、ゲストＯＳのステータスを“ｐａｕｓｅ”へ変更して一時停止にし（ステップＳ１１１）、ダンプ待ちページ番号に、アクセス要求があったページのページ番号を設定する（ステップＳ１１２）。
【００５０】
そして、設定したダンプ待ちページ番号が“０”にクリアされるのを待ち（ステップＳ１１３否定）、ダンプ待ちページ番号がクリアされたならば（ステップＳ１１３肯定）、ゲストＯＳのステータスを“ｒｕｎ”へ変更して一時停止を解除する（ステップＳ１１４）。そして、このようなメモリアクセスの監視を、ダンプ実行部１７１ｃによるダンプの採取が完了するまで継続する。
【００５１】
図７は、ダンプ実行部１７１ｃの動作を示すフローチャートである。同図に示すように、ダンプ実行部１７１ｃは、ダンプ開始の指示を受け付けると（ステップＳ２０１）、仮想計算機管理テーブル１７１ｄを参照して、ダンプ対象の仮想計算機のダンプ待ちページ番号の値を確認する（ステップＳ２０２）。
【００５２】
ここで、ダンプ待ちページ番号の値が“０”でなければ（ステップＳ２０３否定）、アドレス変換テーブル１７１ｅを参照して、ダンプ待ちページ番号に対応するページのダンプフラグの値を確認する（ステップＳ２０４）。そして、ダンプフラグの値が“ｏｎ”であれば（ステップＳ２０５肯定）、ダンプ待ちページ番号に対応するページをダンプ対象に選定する（ステップＳ２０６）。
【００５３】
そして、選定したページのダンプを実行し（ステップＳ２０７）、ダンプ待ちページ番号の値を“０”にクリアし（ステップＳ２０８）、ダンプしたページのダンプフラグを“ｏｆｆ”に変更した後（ステップＳ２０９）、ステップＳ２０２から処理を再開する。
【００５４】
一方、ダンプ待ちページ番号の値が“０”の場合（ステップＳ２０３肯定）、もしくは、ダンプ待ちページ番号に対応するページのダンプフラグの値が“ｏｎ”でない場合は（ステップＳ２０５否定）、ダンプ実行部１７１ｃは、アドレス変換テーブル１７１ｅを参照して、ダンプフラグの値が“ｏｎ”であるページの一つをダンプ対象に選定する（ステップＳ２１０）。
【００５５】
そして、該当するページがあった場合は（ステップＳ２１１肯定）、選定したページのダンプを実行し（ステップＳ２１２）、ダンプしたページのダンプフラグを“ｏｆｆ”に変更した後（ステップＳ２０９）、ステップＳ２０２から処理を再開する。該当するページがなかった場合は（ステップＳ２１１否定）ダンプが完了した旨を仮想計算機制御部１７１ａへ通知した後（ステップＳ２１３）、処理を終了する。
【００５６】
上述してきたように、本実施例では、ダウンしたゲストＯＳが使用していた各メモリ領域にダンプ対象である旨を示すフラグを設定し、そのメモリ領域のダンプが完了した後にそのフラグを解除することとし、さらに、フラグが解除されていないメモリ領域にゲストＯＳがアクセスしようとした場合にフラグが解除させるまでゲストＯＳを停止させることとしたので、ダンプの採取とゲストＯＳの再起動を平行して行うことが可能になり、もって、仮想計算機上で動作させるＯＳを改造することなく、速やかにＯＳを再起動させつつ、ダウンしたＯＳが使用していたメモリをダンプすることができる。
【００５７】
また、十分な量の未使用のメモリがある場合には、そのメモリを使用して別の仮想計算機を実現し、その新たな仮想計算機でゲストＯＳを再起動させることとしたので、極めて速やかにＯＳを再起動させることができるという効果を奏する。
【００５８】
なお、上記の実施例ではページ単位でダンプの進行状況を管理することとしたが、ページ以外の単位でダンプの進行状況を管理することとしてもよい。また、上記の実施例では、アドレス変換のためのテーブルにダンプの進行状況を示すフラグを設けることとしたが、このフラグを別のテーブルに設けることとしてもよい。
【産業上の利用可能性】
【００５９】
以上のように、本発明に係る仮想計算機制御プログラム、仮想計算機制御システムおよびダンプ採取方法は、仮想計算機上で動作するゲストＯＳに障害が発生した場合に該ゲストＯＳが使用していた各メモリ領域をファイルにダンプする場合に有用であり、特に、ゲストＯＳを改造することなく、速やかにゲストＯＳを再起動させつつ、ダウンしたゲストＯＳが使用していた各メモリ領域をダンプすることが必要な場合に適している。
【図面の簡単な説明】
【００６０】
【図１】図１は、本実施例に係る仮想計算機制御システムについて説明するための図である。
【図２】図２は、図１に示した計算機の構成を示すブロック図である。
【図３】図３は、仮想計算機制御プログラムの構成を示す図である。
【図４】図４は、仮想計算機制御プログラムが実行状態にある場合における仮想計算機管理テーブルの一例を示す図である。
【図５】図５は、仮想計算機制御プログラムが実行状態にある場合におけるアドレス変換テーブルの一例を示す図である。
【図６】図６は、仮想計算機制御部の動作を示すフローチャートである。
【図７】図７は、ダンプ実行部の動作を示すフローチャートである。
【符号の説明】
【００６１】
１    仮想計算機制御システム
１０    計算機
２０    ホストＯＳ
３０    仮想計算機制御プロセス
３１ａ、３１ｂ  仮想計算機
４０ａ、４０ｂ  ゲストＯＳ
５０ａ〜５０ｅ  アプリケーション
１１０    ＣＰＵ
１２０    入力装置
１３０    モニタ
１４０    媒体読取り装置
１５０    ネットワークインターフェース装置
１６０    ＲＡＭ
１７０    ハードディスク装置
１７１    仮想計算機制御プログラム
１７１ａ  仮想計算機制御部
１７１ｂ  ダンプ対象設定部
１７１ｃ  ダンプ実行部
１７１ｄ  仮想計算機管理テーブル
１７１ｅ  アドレス変換テーブル
１７２    仮想計算機イメージデータ
１７３    ダンプファイル
１８０    バス
【国際調査報告】
2008114395.tif 000010
2008114395.tif 000011
2008114395.tif 000012
2008114395.tif 000013