(57)【要約】  仮想計算機に異常が発生してメモリダンプを採取する際に、メモリダンプとリブートを並列に行う仮想計算機システムにおいて、リソースの使用効率を向上させることを目的とする。仮想計算機に発生した異常が検知された段階で、メモリダンプを行う保存処理部が最小限のリソースを使用して生成される。保存処理部はメモリダンプを実行し、それと並行して、仮想計算機の初期化処理が実行される。メモリダンプが完了した後、生成した保存処理部は削除される。
2013136457.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機の障害を検知する検知部と、
前記仮想計算機が動作するために割り当てられる記憶領域を含む第一の記憶部と、
前記第一の記憶部に格納された情報を格納する第二の記憶部と、
前記第一の記憶部に格納された情報を前記第二の記憶部に保存する保存処理部と、
前記仮想計算機の障害が前記検知部によって検知された場合、前記保存処理部を生成する生成部と、
前記保存処理部による前記保存が完了した場合、前記保存処理部を削除する削除部と、
を備えることを特徴とする仮想計算機システム。
【請求項２】
前記仮想計算機システムは、さらに、
前記仮想計算機の障害が前記検知部によって検知された場合、前記第一の記憶部に対する前記仮想計算機からのアクセスを制限する制限部
を備えることを特徴とする請求項１に記載の仮想計算機システム。
【請求項３】
前記仮想計算機システムにおいて、
前記制限部は、前記保存の進行に従って、前記第一の記憶部に対する前記仮想計算機からのアクセスを可能にする
ことを特徴とする請求項２に記載の仮想計算機システム。
【請求項４】
前記仮想計算機システムは、さらに、
前記仮想計算機の物理アドレスと仮想計算機システムの物理アドレスが対応付けられた情報であるマッピング情報を格納するマッピング情報格納部と、
前記第一の記憶部の領域のうち前記保存が完了した部分の物理アドレスである保存済みアドレスが格納された保存済みアドレス格納部と、
前記アクセスが制限された領域に対する前記仮想計算機からのアクセスが発生した場合に、前記保存済みアドレス格納部から前記保存済みアドレスを取得し、前記マッピング情報格納部に格納された前記マッピング情報のうち、前記アクセスされた仮想計算機の物理アドレスに対応する仮想計算機システムの物理アドレスを、前記取得した前記保存済みアドレスに変換する変換部
を備えることを特徴とする請求項３に記載の仮想計算機システム。
【請求項５】
前記仮想計算機システムにおいて、
前記仮想計算機は、仮想計算機を停止せずにデバイスを認識する認識機能を備え、
前記制限部は、前記保存の進行に従って、前記第一の記憶部の領域のうち前記保存が完了した部分を、前記認識機能を用いて、前記仮想計算機に認識させることにより、前記第一の記憶部に対する前記仮想計算機からのアクセスを可能にする
ことを特徴とする請求項２に記載の仮想計算機システム。
【請求項６】
仮想計算機の障害を検知し、
前記仮想計算機の障害が検知された場合、前記仮想計算機が動作するために割り当てられる記憶領域を含む第一の記憶部に格納された情報を、前記第一の記憶部に格納された情報を格納する第二の記憶部に保存する保存処理部を生成し、
前記保存が完了した場合、前記保存処理部を削除する
処理をコンピュータに実行させることを特徴とする情報保存処理プログラム。
【請求項７】
前記仮想計算機の障害が検知された場合、前記第一の記憶部に対する前記仮想計算機からのアクセスを制限する
処理をコンピュータに実行させることを特徴とする請求項６に記載の情報保存処理プログラム。
【請求項８】
前記保存の進行に従って、前記第一の記憶部に対する前記仮想計算機からのアクセスを可能にする
処理をコンピュータに実行させることを特徴とする請求項７に記載の情報保存処理プログラム。
【請求項９】
前記第一の記憶部の領域のうち前記保存が完了した部分の物理アドレスである保存済みアドレスを保存済みアドレス格納部に格納し、
前記アクセスが制限された領域に対する、前記仮想計算機からのアクセスが発生した場合に、前記保存済みアドレス格納部から前記保存済みアドレスを取得し、前記仮想計算機の物理アドレスと仮想計算機システムの物理アドレスが対応付けられた情報のうち、前記アクセスされた仮想計算機の物理アドレスに対応する仮想計算機システムの物理アドレスを、前記取得した前記保存済みアドレスに変換する
処理をコンピュータに実行させることを特徴とする請求項８に記載の情報保存処理プログラム。
【請求項１０】
前記保存の進行に従って、前記第一の記憶部の領域のうち前記保存が完了した部分を、仮想計算機を停止せずにデバイスを認識する前記認識機能を用いて、前記仮想計算機に認識させることにより、前記第一の記憶部に対する前記仮想計算機からのアクセスを可能にする
処理をコンピュータに実行させることを特徴とする請求項７に記載の情報保存処理プログラム。
【請求項１１】
仮想計算機の障害を検知し、
前記仮想計算機の障害が検知された場合、前記仮想計算機が動作するために割り当てられる記憶領域を含む第一の記憶部に格納された情報を、前記第一の記憶部に格納された情報を格納する第二の記憶部に保存する保存処理部を生成し、
前記保存が完了した場合、前記保存処理部を削除する
処理をコンピュータに実行させることを特徴とする情報保存処理方法。
【請求項１２】
前記仮想計算機の障害が検知された場合、前記第一の記憶部に対する前記仮想計算機からのアクセスを制限する
処理をコンピュータに実行させることを特徴とする請求項１１に記載の情報保存処理方法。
【請求項１３】
前記保存の進行に従って、前記第一の記憶部に対する前記仮想計算機からのアクセスを可能にする
処理をコンピュータに実行させることを特徴とする請求項１２に記載の情報保存処理方法。
【請求項１４】
前記第一の記憶部の領域のうち前記保存が完了した部分の物理アドレスである保存済みアドレスを保存済みアドレス格納部に格納し、
前記アクセスが制限された領域に対する、前記仮想計算機からのアクセスが発生した場合に、前記保存済みアドレス格納部から前記保存済みアドレスを取得し、前記仮想計算機の物理アドレスと仮想計算機システムの物理アドレスが対応付けられた情報のうち、前記アクセスされた仮想計算機の物理アドレスに対応する仮想計算機システムの物理アドレスを、前記取得した前記保存済みアドレスに変換する
処理をコンピュータに実行させることを特徴とする請求項１３に記載の情報保存処理方法。
【請求項１５】
前記保存の進行に従って、前記第一の記憶部の領域のうち前記保存が完了した部分を、仮想計算機を停止せずにデバイスを認識する前記認識機能を用いて、前記仮想計算機に認識させることにより、前記第一の記憶部に対する前記仮想計算機からのアクセスを可能にする
処理をコンピュータに実行させることを特徴とする請求項１２に記載の情報保存処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、仮想計算機についての技術に関する。
【背景技術】
【０００２】
システムに異常が発生した場合、その原因調査のために異常発生時のCPU（Central Processing Unit）とメモリの状態についての情報が使用される。この情報はダンプファイルとして補助記憶装置に保存され、事後の原因調査に活用される。異常が発生した場合、システムはダンプファイルを作成した後に、再起動を行って業務処理を再開する。【０００３】
異常発生時に通常のシステムリセットで再起動を行うと、メモリコントローラの初期化やBIOS（Basic Input/Output System）のメモリチェック、OS（Operating System）の初期化処理によって障害発生時のメモリの内容が破壊されてしまう。上記のような破壊からメモリの内容を保護するために、システムリセットの前にメモリダンプが実行される。【０００４】
メモリの全ての領域を対象にしたメモリダンプでは、処理時間はメモリの容量に比例する。システムのメモリ容量は年々増加しているため、業務停止時間も延びる傾向にある。【０００５】
図1は、ダンプ処理の流れの一例を示し、ダンプ処理と業務停止時間との関連を示す。図1において、業務運用中に障害が発生すると（S101）、INIT割り込みでサーバを再起動し（S102）、メモリダンプを行う（S103）。ダンプ終了後、システムリセットが発行され（S104）、システムは再起動し（S105）、通常運用に移行する（S106）。近年は、ダンプ処理に数十分から数時間の時間がかかり、長時間業務が停止する。【０００６】
ダンプ時間を短縮するための方法として、計算機に障害が発生した場合、業務処理を再開するのと同時にダンプ処理を開始し、業務処理と平行してダンプ処理を行う方法がある。この方法では、業務を実行する仮想計算機に加えて、メモリダンプ用の仮想計算機を常時待機させる。業務用の仮想計算機で異常が発生した場合に、メモリダンプ用の仮想計算機がダンプを行い、それと平行して、業務用の仮想計算機がリブートする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−１２２３３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記方法ではダンプ処理に備えてダンプ処理用の仮想計算機を常駐させるため、仮想計算機一台分のリソースが追加で要求され、リソース面での効率が悪かった。【０００９】
上記課題に鑑み、本実施形態では、メモリダンプとリブートを並列に行う仮想計算機システムにおいて、リソースの使用効率を向上させた仮想計算機システムを提供する。
【課題を解決するための手段】
【００１０】
仮想計算機システムは、検知部、第一の記憶部、第二の記憶部、保存処理部、生成部、削除部を含む。検知部は、仮想計算機の障害を検知する。第一の記憶部は、仮想計算機が動作するために割り当てられる記憶領域を含む。第二の記憶部は、第一の記憶部に格納された情報を格納する。保存処理部は、第一の記憶部に格納された情報を第二の記憶部に保存する。生成部は、仮想計算機の障害が前記検知部によって検知された場合、保存処理部を生成する。削除部は、保存処理部による前記保存が完了した場合、保存処理部を削除する。
【発明の効果】
【００１１】
メモリダンプとリブートを並列に行う仮想計算機システムにおいて、リソースの使用効率を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】システムのダンプ処理と業務停止時間の関連図を示す。
【図２】本実施形態に係る仮想計算機システムの構成を示す。
【図３】第1の実施形態に係る仮想計算機システムの構成を示す。
【図４】ページテーブルの構成例を示す。
【図５】ダンプ処理のメモリ割り当てを説明するための図を示す。
【図６】第1の実施形態に係るメモリダンプ処理のフローを示す。
【図７】第2の実施形態に係る仮想計算機システムの構成を示す。
【図８】第2の実施形態に係る未使用領域プールの構成を示す。
【図９】第2の実施形態に係るメモリダンプ処理のフローを示す。
【図１０】第3の実施形態に係る業務VMのアドレス空間を、OSブート用領域とホットアド領域に分割することを説明するための図を示す。
【図１１】第3の実施形態に係る仮想計算機システムの構成を示す。
【図１２】第3の実施形態に係るメモリダンプ処理のフローを示す。
【発明を実施するための形態】
【００１３】
図2は、本実施形態における仮想計算機システムの一例を示す。仮想計算機システム1は、検知部2と第一の記憶部3、第二の記憶部4、保存処理部5、生成部6、削除部7、制御部8、マッピング情報格納部9、保存済みアドレス格納部10、変換部11を含む。
【００１４】
検知部2は、仮想計算機の障害を検知する。仮想計算機は、プログラムが動作するためのハードウェアの一式をソフトウェアによって実現したものである。
【００１５】
第一の記憶部3は、仮想計算機が動作するために割り当てられる記憶領域である。
第二の記憶部4は、第一の記憶部3に格納された情報を格納する。
【００１６】
保存処理部5は、第一の記憶部3に格納された情報を第二の記憶部4に保存する。
生成部6は、仮想計算機の障害が検知部2によって検知された場合、保存処理部5を生成する。
【００１７】
削除部7は、保存処理部5による保存が完了した場合、保存処理部5を削除する。
制御部8は、仮想計算機の障害が検知部2によって検知された場合、第一の記憶部3に対する仮想計算機からのアクセスを制限する。また、制御部8は、保存処理部5の保存の進行に従って、第一の記憶部3に対する仮想計算機からのアクセスを可能にする。
【００１８】
マッピング情報格納部9は、仮想計算機の物理アドレスと仮想計算機システムの物理アドレスが対応付けられた情報であるマッピング情報を格納する。
【００１９】
保存済みアドレス格納部10は、第一の記憶部3の領域のうち保存処理部5による保存が完了した部分の物理アドレスが格納される。
【００２０】
変換部11は、制限された領域に対する仮想計算機からのアクセスが発生した場合に、マッピング情報格納部9に格納されたマッピング情報の仮想計算機システムの物理アドレスを、保存済みアドレス格納部10から取得したアドレスに変換する。
【００２１】
本実施形態の詳細を以下に説明する。
（第1の実施形態）
図3は、第1の実施形態における仮想計算機システムの構成の一例を示す。
【００２２】
仮想計算機システム1は、プロセッサ301とメモリ302、ハイパーバイザ303、アクセス調停機能304、割り当て調整機能305、業務VM306、ページテーブル307、業務アプリケーション308、ダンプVM309、ダンプツール310、補助記憶装置311を含む。メモリ302は、図2の第一の記憶部3の一例として挙げられる。ハイパーバイザ303は、図2の検知部2、生成部6、削除部7、変換部11の一例として挙げられる。アクセス調停機能304及び割り当て調整機能305は、図2の制御部8の一例として挙げられる。ページテーブル307は、図2のマッピング情報格納部9の一例として挙げられる。ダンプVM309は、図2の保存処理部5の一例として挙げられる。補助記憶装置311は、図2の第二の記憶部4の一例として挙げられる。
【００２３】
仮想計算機システム1では、プロセッサ301によってハイパーバイザ303と呼ばれる制御プログラムが実行される。
【００２４】
メモリ302は、仮想計算機システム1の物理メモリであり、ハイパーバイザ303によって、仮想計算機に割り当てられる。
【００２５】
ハイパーバイザ303はハードウェア上で直接動作し、仮想計算機を動作させる。
第1の実施形態において、ハイパーバイザ303上で動作する仮想計算機は、用途に応じて二種類に分けられる。一つは、通常の業務処理等で使用されるような汎用目的の仮想計算機である。もう一つは、メモリダンプを専用で行う用途で用いられる仮想計算機である。
【００２６】
説明の便宜上、以下では、業務アプリケーションを実行する等、一般的な使用を目的とする仮想計算機を業務VM306と呼び、メモリダンプを行う用途で用いられる仮想計算機をダンプVM309と呼ぶ。
【００２７】
例えば、業務VM306ではOSが稼動し、OS上で業務アプリケーション308が実行される。ダンプVM309ではOSは稼動せず、ダンプVM309はBIOSのダンプ機能であるダンプツール310を利用してメモリダンプを行う。ダンプVM309は、異常が発生した業務VM306のメモリにアクセスし、補助記憶装置311にメモリの内容を保存する。
【００２８】
ハイパーバイザ303は仮想計算機を動作させる等の仮想化機能に加え、アクセス調停機能304と割り当て調整機能305を有する。アクセス調停機能304と割り当て調整機能305は、ダンプVM309のダンプ処理と、業務VM306の初期化及びその後の処理とを平行して行うための機能である。具体的には、アクセス調停機能304と割り当て調整機能305はお互いに協調動作することにより、業務VM306とダンプVM309の二つのVMに割り当てるメモリ領域を制御する。処理開始時点では、ダンプVM309にすべてのメモリが割り当てられ、順次、ダンプ処理が完了した領域が業務VM306に割り当てられていく。メモリの割り当てを制御することにより、障害発生時のメモリの情報の破壊を防ぎながら、業務VM306とダンプVM309の平行処理が可能になる。
【００２９】
アクセス調停機能304は、メモリダンプの終わっていないメモリ領域を業務VM306がアクセスして障害発生時のメモリの情報を破壊することを防ぐ。具体的には、アクセス調停機能304は、業務VM306から未ダンプメモリ領域に対する書き込みアクセスを禁止することによりメモリ内のデータの破壊を防止する。この機能の詳細は後ほど説明する。
【００３０】
割り当て調整機能305は、メモリダンプが終了したメモリ領域に対して業務VM306からのアクセスを可能にし、業務VM306の使用可能メモリを増加させる機能である。具体的には、割り当て調整機能305は、業務VM306のページテーブル307の設定を変更することにより業務VM306の使用可能メモリを増加させる。この処理の詳細は後ほど説明する。
【００３１】
ページテーブル307は、ゲスト物理アドレスと、ホスト物理アドレスの変換を行うテーブルである。ゲスト物理アドレスは、仮想計算機の物理アドレスである。ホスト物理アドレスは、仮想計算機システムの物理アドレスである。仮想計算機は、メモリ302にアクセスする際、ページテーブル307の情報を使用して、ホスト物理アドレスを取得する。ページテーブル307はBIOS内に保持される。
【００３２】
ページテーブル307は、仮想計算機ごとに一つずつ作成し、同一仮想計算機内のCPUは全て同一のページテーブル307を参照してもよい。逆に、仮想計算機が異なる場合は、それぞれ異なるページテーブル307を参照してもよい。
【００３３】
ページテーブル307の構造の一例を図4に示す。図4の”Physical Address”401は、エントリが指し示すホスト物理アドレスである。図4のX、W、Rビット（許可ビット402）は、エントリが指し示すアドレス範囲がアクセス可能か否かを示す許可ビットであり、それぞれ、エントリが指し示すアドレス範囲が「実行可能」、「書き込み可能」、「読み取り可能」な領域であることを示す。仮想計算機からのメモリアクセスが、ページテーブル307での変換範囲外である場合、または許可ビット402で禁止されているアクセスである場合には、ページング例外が発生し、CPUはハイパーバイザ303に処理を移す。尚、ページテーブル307は、多段階のページテーブルによりアドレスの変換を行う構成としてもよい。この場合、”Physical Address”401は、エントリから参照する下位テーブルのアドレスまたはホスト物理アドレスの一部を指し示す。
【００３４】
以下、第1の実施形態の処理の流れの一例について説明する。
通常運用時は業務VM306だけが動作する。業務VM306に障害が発生すると、ハイパーバイザ303は、メモリダンプのための処理を開始する。すなわち、障害検知直後、ハイパーバイザ303はダンプVM309を作成し、作成されたダンプVM309は業務VM306のメモリ領域のダンプを開始する。
【００３５】
メモリダンプ中は業務VM306とダンプVM309の二つの仮想計算機が並列動作する。業務VM306は初期化処理を行い、ダンプVM309はダンプ処理を行う。ダンプ処理が進むにつれ、業務VM306とダンプVM309の間でメモリ領域の割り当てが変更される。ダンプ処理開始時点では、ダンプVM309にすべての業務VM306のメモリ領域が割り当てられる。ダンプ処理の進行にしたがって、ダンプが完了した領域が業務VM306に割り当てられ、業務VM306に割り当てられるメモリ量が徐々に増加する。最終的に全てのメモリ領域のダンプ処理が完了すると、全メモリ領域が業務VM306に割り当てられる。その後、ダンプVM309は破棄される。
【００３６】
この様子を図5（A）から図5（C）で説明する。
図5（A）は通常運用時のメモリ使用状況を示す。図5（A）のように通常運用時にはダンプVM309は存在せず、業務VM306のメモリは業務VM306のみに割り当てられている。
【００３７】
図5（B）は、ダンプ処理中のメモリ使用状況を示す。通常運用時に業務VM306に割り当てられていたメモリ領域がダンプVM309に割り当てられ、ダンプVM309は、ダンプVM309に割り当てられたメモリ領域をダンプファイルとして補助記憶装置311に書き出す。補助記憶装置311への書き出しが完了したメモリ領域は、業務VM306に割り当てられる。
【００３８】
図5（B）の斜線部分は一回のダンプ対象領域を示す。一回のダンプ対象領域のダンプが完了する毎に、メモリの割り当てが変更され、業務VM306にダンプが完了したメモリ領域が割り当てられる。
【００３９】
図5（C）は割り当て変更後のメモリ使用状況を示す。図5（B）と図5（C）を比べて分かるように、ダンプ処理が進むにつれ、業務VM306が使用するメモリ領域が増え、ダンプVM309が使用するメモリ領域が減る。
【００４０】
このようにダンプ処理を繰り返し、ダンプVM309は割り当てられた全メモリ領域をダンプする。全メモリ領域のダンプ終了後、ハイパーバイザ303はダンプVM309を破棄して、通常運用である図5（A）の状態に復帰する。
【００４１】
次に、ダンプVM309の作成時の動作について説明する。
ダンプVM309は、ハイパーバイザ303によって、業務VM306の障害発生直後に作成される。作成の際に使用される設定ファイルはBIOS上の記憶部に保存されている。設定ファイルには、例えば、ダンプファイルの出力先の情報、及び一回のダンプ量が保存されてもよい。
【００４２】
ダンプ対象領域の指定は、ダンプVM309が、業務VM306のページテーブル307をコピーしたものを自身のページテーブル307として用いることにより実現する。すなわち、ダンプVM309の作成時に、ハイパーバイザ303が、業務VM306のページテーブル307をコピーして、ダンプVM309が使用するページテーブル307として設定する。
【００４３】
ダンプVM309自身が使用するメモリ領域は、業務VM306のメモリ領域とは別に予め確保されている。ダンプVM309自身が使用するメモリ領域は、業務VM306のページテーブル307のコピーをメモリ上で制御できるだけの量があれば足る。ダンプVM309では、OSの起動は行わず、また、ダンプ処理もBIOSの機能を利用して行うからである。このように構成することにより、最小限の追加リソースでダンプ処理が可能になる。
【００４４】
次に、業務VM306とダンプVM309のメモリ割り当て制御の方法について説明する。
業務VM306とダンプVM309のメモリの割り当て制御には、業務VM306及びダンプVM309のページテーブル307を利用する。
【００４５】
メモリの割り当て制御は、具体的には、アクセス調停機能304及び割り当て調整機能305が、業務VM306のページテーブル307の許可ビット402の設定を変更することにより実現する。
【００４６】
業務VM306の障害発生直後には、アクセス調停機能304は、ページテーブル307の全てのメモリ領域の許可ビット402を書き込み禁止に設定する。その後、割り当て調整機能305は、ダンプが完了したメモリ領域に対して、順次、許可ビット402の値を書き込み可能に変更することにより、業務VM306からのダンプが完了したメモリに対するアクセスを可能にする。
【００４７】
ページテーブル307の許可ビット402で不許可とされているアクセスが発生すると、ページング例外が発生し、業務VM306からハイパーバイザ303にプロセッサ301の処理（動作モード）が移行する。
【００４８】
また、ダンプが完了したメモリ領域に対して、ダンプVM309からのアクセスを禁止してもよい。この場合、ダンプVM309のページテーブル307の許可ビット402をアクセス禁止に設定すればよい。
【００４９】
次に、第1の実施形態の処理の流れの詳細を、図6のフローチャートを用いて説明する。
第1の実施形態の仮想計算機システム1は図6に示すように、業務VM306とダンプVM309、ハイパーバイザ303の仮想化機能、アクセス調停機能304、割り当て調整機能305を含む。フローチャートでは異常発生から運用再開までを説明する。
【００５０】
業務VM306で異常が発生すると（S601）、業務VM306で実行中のOSがダンプ処理のための例外を生成し、ハイパーバイザ303に例外を投げる（S602）。
【００５１】
ハイパーバイザ303は、業務VM306から投げられた例外をキャッチし異常を検知すると、ダンプVM309を生成し、ダンプVM309の起動を行う（S603）。ダンプVM309は、BIOSに保存された設定ファイルをハイパーバイザ303によって読み込まれて作成される。ダンプVM309の作成時に、ハイパーバイザ303は、業務VM306の全てのメモリ領域をダンプVM309に割り当てる。すなわち、ハイパーバイザ303は、ダンプVM309のページテーブル307を、業務VM306のページテーブル307をコピーすることにより作成する。また、ダンプVM309の起動時に、ハイパーバイザ303は、ダンプ処理のための例外をダンプVM309に送信することにより、ダンプVM309にダンプ処理を実行させる。
【００５２】
次に、ハイパーバイザ303は、業務VM306からの全メモリ領域に対する書き込みアクセスを禁止する（S604）。すなわち、ハイパーバイザ303は、業務VM306のページテーブル307の全てのアドレスの許可ビット402の値を書込み禁止に設定する。それにより、業務VM306がどのアドレスに書き込みアクセスをしても、ページング例外が発生することとなる。ここで、読み込みアクセスについてはアクセスを禁止しなくてもよい。また、書き込み禁止に設定するのは、保護対象とする任意のメモリ領域としてもよい。
【００５３】
次に、ハイパーバイザ303は業務VM306をリセットし再起動する（S605）。この段階でダンプVM309と業務VM306は並列動作を開始する。
【００５４】
S620〜S626の処理は、ダンプ開始からダンプ完了までのダンプVM309の動作に関するものである。
【００５５】
ダンプVM309はBIOSの機能で実現するダンプツール310を用いてメモリダンプを開始する（S620）。このとき、ダンプVM309は、出力先として指定した補助記憶装置311に業務VM306のメモリの内容を書き出す（S621）。予め指定した、一度にダンプするメモリ量のダンプが完了したら、処理はS622に移行する。S620及びS621で用いる、出力先及び一度にダンプするメモリ量は、ハイパーバイザ303によってダンプVM309の作成時（S603）に読み込まれる設定ファイルに記載されている。
【００５６】
S622及びS623では、補助記憶装置311に書き出し終えたメモリ領域をダンプ済み領域として、業務VM306から使用可能にする動作に関するものである。
ダンプVM309は、ダンプが完了した領域を割り当て調整機能305に通知する（S622）。
【００５７】
次に、割り当て調整機能305は、S622で通知を受けたダンプ済み領域に対して、業務VM306のページテーブル307を設定して業務VM306からのアクセスを可能にする（S623）。具体的には、割り当て調整機能305は、ページテーブル307の許可ビット402の値を書込み禁止から書き込み可能に変更する。これにより業務VM306からのメモリアクセス時にページング例外が発生せず、メモリへの書き込みが可能になる。このとき、ダンプ済みの領域をダンプVM309からアクセス不可とするように、割り当て調整機能305は、ダンプVM309のページテーブル307の許可ビット402をアクセス禁止に設定してもよい。
【００５８】
次に、ダンプVM309は、すべてのメモリ領域のダンプが完了したか否かを判定する（S624）。完了と判定された場合、S620-S624のループ処理を終了し、S625に処理が移行する。完了していないと判定された場合、S620に処理が戻る。
【００５９】
S625では、ダンプVM309はダンプ処理の完了をハイパーバイザ303に通知する。ハイパーバイザ303は通知を受け取ると、ダンプVM309の破棄を行う（S626）。
【００６０】
S606〜S613は、ダンプVM309の起動からダンプ処理完了までの業務VM306の動作に関するものである。
【００６１】
ダンプVM309の処理開始とともに、業務VM306ではBIOSやOS等による初期化処理が開始される（S606〜S612）。初期化処理の開始時点では、業務VM306にはメモリが割り当てられていないが、この時点では、初期化処理はメモリを使用せず、CPUのキャッシュメモリだけで初期化処理が開始される。その後、業務VM306の初期化処理が進むと、業務VM306からのメモリに対するアクセスが発生するようになる。
【００６２】
業務VM306からのメモリアクセス時（S607）に、そのアクセスがダンプ未完領域に対する書き込みアクセスであった場合は、例外が発生する（S608）。業務VM306はメモリアクセスを行う場合、必ず自身のページテーブル307を参照し、どのホスト物理アドレスにアクセスするのかを判断する。その際、業務VM306は、アクセス先のアドレスの許可ビット402を確認し、許可されていない動作であれば、例外を発生させる。S604で設定したように、ダンプ未完了領域の許可ビット402は書込み禁止の設定となっているため、その領域に対して書き込みアクセスを行うとページング例外が発生することとなる。
【００６３】
S608で発生した例外は、ハイパーバイザ303によりキャッチされ、ハイパーバイザ303は、業務VM306を停止する（S609）。
【００６４】
次に、ハイパーバイザ303は、業務VM306のページテーブル307を監視し、S607でアクセスされたメモリ領域が使用可能になるまで待機する（S610）。すなわち、アクセス調停機能304は、ページテーブル307をポーリングして、対象メモリ領域がアクセス可能になるまで監視し続ける。その後、割り当て調整機能305によって業務VM306のページテーブル307が更新され、アクセスが許可される（S623）と、S611に処理が移行する。
【００６５】
S611では、ハイパーバイザ303は業務VM306を再開する。業務VM306は、S608で中断された時点から処理を再開する。
【００６６】
次に、S612において、全てのメモリ領域のダンプが完了している場合、処理は通常の業務状態（S613）に移行する。ダンプ未完了領域が存在する場合は、S606に処理が戻る。
【００６７】
以上、第1の実施形態を説明した。尚、制限するアクセスは、書き込みアクセスに加えて、読み込みアクセスや実行アクセスを制限しても良い。
【００６８】
（第2の実施形態）
第1の実施形態では、業務VM306がアクセスしたアドレスのメモリダンプが完了しないために、他にダンプが完了しているメモリ領域が存在しているにもかかわらず、業務VM306の処理が長時間停止したままになる可能性がある。これを防ぐための方法として、業務VM306とダンプVM309のメモリ割り当ての変更を行う際に、未使用領域プールを用いる方法を説明する。
【００６９】
第2の実施形態の構成図を図7に示す。図7は図3に未使用領域プール700を追加したものである。未使用領域プール700は、ダンプ済みメモリ領域を一元管理するためのものである。未使用領域プール700は、図2の保存済みアドレス格納部10の一例として挙げられる。図7に示すように、未使用領域プール700はBIOS上で保持される。
【００７０】
未使用領域プール700の表構造を図8に示す。未使用領域プール700は、「インデックス」800a、「開始アドレス」800bと「終了アドレス」800cのフィールドを有する。「開始アドレス」800bには、未使用領域の開始アドレスが格納される。「終了アドレス」800cには、未使用領域の終了アドレスが格納される。
【００７１】
ハイパーバイザ303は、ダンプが完了したメモリ領域を、未使用領域として未使用領域プール700にプールしておく。そしてページング例外が発生したときに、ハイパーバイザ303は、プールしていたメモリを業務VM306に使用可能メモリとして割り当てる。具体的には、ハイパーバイザ303は、業務VM306がアクセスした仮想物理アドレスに対応付けられたホスト物理アドレスを、プールしていたメモリのホスト物理アドレスに変更する。ページング例外発生時に、プールしているメモリが無い場合は、第1の実施形態と同じ方法で業務VM306を停止し、ダンプ済みのメモリ領域が生まれるまで待機する。
【００７２】
本実施例の処理のフローチャートを図9に示す。図9は、図6と比較して点線で囲った部分が異なる。
【００７３】
業務VM306を停止（S909）後、アクセス調停機能304は、未使用領域プール700を参照してメモリの未使用領域が存在するか否かの判定を行う（S910）。具体的には、アクセス調停機能304は、未使用領域プール700にエントリが存在するか否かで、未使用領域が存在するか否かの判定を行う。未使用領域が存在しない場合は、未使用領域が割り当て調整機能305によって未使用領域プール700に登録される（S923）まで、アクセス調停機能304は、未使用領域プール700をポーリングして監視する。未使用領域が存在する場合は、S911に処理が移行する。
【００７４】
一方、割り当て調整機能305は、ダンプVM309からダンプ済みの領域が通知されたら（S922）、ダンプ済みの領域を未使用領域プール700に登録する（S923）。具体的には、未使用領域プール700の開始アドレス800bと終了アドレスフィールド800cに、ダンプ済みの領域の開始アドレスと終了アドレスをそれぞれ登録する。
【００７５】
S911において、未使用領域が存在すると判定された場合、アクセス調停機能304は、未使用領域プール700から未使用領域を取得する。そして、アクセス調停機能304は、業務VM306のページテーブル307の、S907でアクセスされた仮想物理アドレスに対応するホスト物理アドレスを、取得した未使用領域のアドレスに変更する（S911）。また、アクセス調停機能304は、取得した未使用領域に対するアクセスを可能にするために、取得した未使用領域に対して、ページテーブル307の許可ビット402を書き込み可能に設定する。さらに、アクセス調停機能304は、未使用領域プール700から使用した領域を削除する。未使用領域からの使用した領域の削除の具体的な動作としては、例えば、未使用領域プール700のエントリを削除する又は分割する、もしくは、開始又は終了アドレスフィールドの値を変更してよい。また、例えば未使用領域プール700から取得する未使用領域アドレスは、未使用領域プール700のエントリの開始アドレスから行うなど順序づけてもよい。その後、処理はS912に遷移し、業務VM306の処理が再開される。
【００７６】
第2の実施形態では、プールしているメモリがある限りは業務VM306が停止することはない。そのため、業務VM306がダンプ待ちのために停止する時間が減り、業務VM306の性能が改善する。
【００７７】
（第3の実施形態）
次に、メモリ割り当ての変更方法として、仮想計算機を停止せずにデバイスを追加認識させるホットアド機能を用いる方法について説明する。
【００７８】
この方法は、業務VM306がOSブート済みであり、業務VM306で稼働するOSがメモリのホットアド機能に対応していることを前提とする。OSブートまでは、第一実施形態又は第二の実施形態の方法で、メモリの割り当ての制御を行う。
【００７９】
第1及び第2の実施形態において、業務VM306とダンプVM309のメモリの割り当ての制御は、ハイパーバイザ303のアクセス調停機能304及び割り当て調整機能305が行っていた。それに対して、第3の実施形態のOS起動後では、メモリホットアド機能を用いてメモリの割り当ての制御を行う。具体的には、ハイパーバイザ303は、業務VM306のOS起動時に、未ダンプの領域をOSからデバイスとして認識できないように設定し、ダンプが完了したメモリ領域を、順次メモリホットアド機能を用いて、OSに追加認識させていく。これにより、業務VM306のOSが認識しているメモリ領域は、ダンプが完了したメモリ領域のみとなる。よって、未ダンプ領域へのアクセスは発生しないため、業務VM306からの未ダンプ領域に対するアクセスによるページング例外は発生しない。したがって、アクセス調停機能304による動作停止も発生しない。
【００８０】
この方法では、業務VM306のアドレス空間を、図10の様にOSブート用領域とホットアド領域に分ける。
【００８１】
OS起動時に、業務VM306はOSが使用するメモリの容量をOSに通知し、OSは通知された容量のメモリを認識する。第3の実施形態では、通知されるメモリの容量は、OSブート用領域の大きさとする。OSブート用領域の大きさは、OSをブートするのに十分な量とし、この領域でOSがブートする。メモリ容量の通知は、BIOSの機能やACPI（Advanced Configuration and Power Interface）機能などの技術で行ってよい。ACPI機能は、OSがBIOSと連携してコンピュータ内部の各パーツの電力を管理する機能である。
【００８２】
OS起動直後には、ホットアド領域のメモリはOSから認識されていないが、ダンプが完了するに従って、随時OSに認識されていく。
業務アプリケーション308は主にホットアド領域のメモリで動作する。
【００８３】
図11は、第3の実施形態の業務VM306のOS起動後の一構成例を示す。図3と比較すると、図11では、業務VM306内にOS1100が追加されている。第3の実施形態の仮想計算機システム1はACPI機能1102に対応する。また、第3の実施形態のOS1100起動後におけるハイパーバイザ303は、アクセス調停機能304と割り当て調整機能305の代わりに、メモリホットアド機能1101を有する。
【００８４】
第3の実施形態の方法と、第1または第2の実施形態の方法とは、OSブート後の動作が異なる。OSブートまでは、第1または第2の実施形態の方法で業務VM306とダンプVM309が動作し、OSブート領域のメモリ調整を行う。OSブート後は、ハイパーバイザ303は、アクセス調停機能304及びメモリ割り当て機能305の代わりにホットアド機能を用いたメモリの調整を行う。以下では、OSブート後の動作を説明する。
【００８５】
図12に第3の実施形態のフローチャートを示す。図6と比較して、点線で囲った部分の処理が追加になる。
【００８６】
S1224で、ハイパーバイザ303は、OS1100がブート完了後か否かの判定を行う。具体的には、ハイパーバイザ303はACPI機能1102の初期化が完了しているか否かで、OS1100のブートが完了したか否かを判定する。すなわち、初期化が完了していればOS1100のブートは完了していると判定する。ブートが完了していると判定された場合、処理はS1225に遷移する。ブートが完了していない場合は、処理はS1228に遷移し、第1の実施形態又は第2の実施形態と同様の処理が継続される。
【００８７】
S1225からのホットアド通知を受け取ると、ACPIは、イベント割り込み(SCI)を発行する（S1226）。この割り込みは業務VM306のOS1100によってキャッチされ、OS1100はダンプが完了したメモリ領域を、自身が使用するメモリとして認識する（S1227）。その結果、OS1100で使用可能なメモリ領域が増加する。
【００８８】
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。本実施形態では、ダンプ処理を行う主体を仮想計算機として定義したが、仮想計算機に限定されない。
【符号の説明】
【００８９】
１      仮想計算機システム
２      検知部
３      第一の記憶部
４      第二の記憶部
５      保存処理部
６      生成部
７      削除部
８      制限部
９      マッピング情報格納部
１０      保存済みアドレス格納部
１１      変換部
【図１】
2013136457.tif 000003
【図２】
2013136457.tif 000004
【図３】
2013136457.tif 000005
【図４】
2013136457.tif 000006
【図５】
2013136457.tif 000007
【図６】
2013136457.tif 000008
【図７】
2013136457.tif 000009
【図８】
2013136457.tif 000010
【図９】
2013136457.tif 000011
【図１０】
2013136457.tif 000012
【図１１】
2013136457.tif 000013
【図１２】
2013136457.tif 000014
【手続補正書】
【提出日】平成26年9月10日(2014.9.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想計算機の障害を検知する検知部と、
前記仮想計算機が動作するために割り当てられる記憶領域を含む第一の記憶部と、
前記第一の記憶部に格納された情報を格納する第二の記憶部と、
前記第一の記憶部に格納された情報を前記第二の記憶部に保存する保存処理部と、
前記仮想計算機の障害が前記検知部によって検知された場合、前記保存処理部を生成する生成部と、
前記仮想計算機の障害が前記検知部によって検知された場合、前記第一の記憶部に対する前記仮想計算機からのアクセスを制限する制限部と、
前記保存処理部による前記保存が完了した場合、前記保存処理部を削除する削除部と、
を備えることを特徴とする仮想計算機システム。
【請求項２】
前記仮想計算機システムにおいて、
前記制限部は、前記保存の進行に従って、前記第一の記憶部に対する前記仮想計算機からのアクセスを可能にする
ことを特徴とする請求項１に記載の仮想計算機システム。
【請求項３】
前記仮想計算機システムは、さらに、
前記仮想計算機の物理アドレスと仮想計算機システムの物理アドレスが対応付けられた情報であるマッピング情報を格納するマッピング情報格納部と、
前記第一の記憶部の領域のうち前記保存が完了した部分の物理アドレスである保存済みアドレスが格納された保存済みアドレス格納部と、
前記アクセスが制限された領域に対する前記仮想計算機からのアクセスが発生した場合に、前記保存済みアドレス格納部から前記保存済みアドレスを取得し、前記マッピング情報格納部に格納された前記マッピング情報のうち、前記アクセスされた仮想計算機の物理アドレスに対応する仮想計算機システムの物理アドレスを、前記取得した前記保存済みアドレスに変換する変換部
を備えることを特徴とする請求項２に記載の仮想計算機システム。
【請求項４】
前記仮想計算機システムにおいて、
前記仮想計算機は、仮想計算機を停止せずにデバイスを認識する認識機能を備え、
前記制限部は、前記保存の進行に従って、前記第一の記憶部の領域のうち前記保存が完了した部分を、前記認識機能を用いて、前記仮想計算機に認識させることにより、前記第一の記憶部に対する前記仮想計算機からのアクセスを可能にする
ことを特徴とする請求項１に記載の仮想計算機システム。
【請求項５】
仮想計算機の障害を検知し、
前記仮想計算機の障害が検知された場合、前記仮想計算機が動作するために割り当てられる記憶領域を含む第一の記憶部に格納された情報を、前記第一の記憶部に格納された情報を格納する第二の記憶部に保存する保存処理部を生成し、
前記仮想計算機の障害が検知された場合、前記第一の記憶部に対する前記仮想計算機からのアクセスを制限し、
前記保存が完了した場合、前記保存処理部を削除する
処理をコンピュータに実行させることを特徴とする情報保存処理プログラム。
【請求項６】
仮想計算機の障害を検知し、
前記仮想計算機の障害が検知された場合、前記仮想計算機が動作するために割り当てられる記憶領域を含む第一の記憶部に格納された情報を、前記第一の記憶部に格納された情報を格納する第二の記憶部に保存する保存処理部を生成し、
前記仮想計算機の障害が検知された場合、前記第一の記憶部に対する前記仮想計算機からのアクセスを制限し、
前記保存が完了した場合、前記保存処理部を削除する
処理をコンピュータが実行することを特徴とする情報保存処理方法。
【国際調査報告】
2013136457.tif 000015
2013136457.tif 000016
2013136457.tif 000017
2013136457.tif 000018