(57)【要約】【課題】仮想マシンの復元に要する時間を短縮する。【解決手段】実施形態の情報処理装置は、複数のプロセッサと、読出手段と、格納手段と、マッピング手段と、復元制御手段と、を備える。読出手段は、ゲストＯＳが動作している仮想マシンの状態を保存する際、ゲストＯＳが使用していた仮想アドレス空間の情報を仮想アドレス空間を分割した領域毎に読み出す。格納手段は、読出手段により読み出された領域毎の情報と仮想マシンの復元時にメモリ上のアドレス空間に当該情報を書き込む位置情報とを対応付けて記憶手段に格納する。マッピング手段は、記憶手段に記憶された位置情報に基づいて記憶手段に記憶された情報の復元先となる仮想アドレス空間をアドレス空間上にマッピングする。復元制御手段は、記憶手段に記憶された領域の情報をそれぞれ異なるプロセッサに割り当て領域の情報を仮想アドレス空間上に復元させる処理を複数のプロセッサで並行して行わせる。【選択図】図２
2013134749.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
ゲストＯＳが動作している仮想マシンの状態を保存する際に、前記ゲストＯＳが使用していた仮想アドレス空間の情報を、当該仮想アドレス空間を分割した領域毎に読み出す読出手段と、
前記読出手段により読み出された前記領域毎の前記情報と前記仮想マシンの復元時にメモリ上のアドレス空間に当該情報を書き込む位置情報とを対応付けて記憶手段に格納する格納手段と、
前記記憶手段に記憶された位置情報に基づいて、前記記憶手段に記憶された前記情報の復元先となる仮想アドレス空間を前記アドレス空間上にマッピングするマッピング手段と、
前記記憶手段に記憶された前記領域の情報をそれぞれ異なるプロセッサに割り当て、前記領域の情報を前記仮想アドレス空間上に復元させる処理を前記複数のプロセッサで並行して行わせる復元制御手段と、
を備える情報処理装置。
【請求項２】
前記読出手段は、前記仮想アドレス空間の情報を予め定められたデータサイズ単位で読み出す請求項１に記載の情報処理装置。
【請求項３】
前記データサイズ単位で読み出された前記情報を圧縮する圧縮手段をさらに備え、
前記格納手段は、前記圧縮手段で圧縮された前記情報と圧縮された当該情報を前記記憶手段に格納した位置を示したオフセット位置とを対応付けて前記記憶手段に格納する請求項２に記載の情報処理装置。
【請求項４】
前記格納手段は、前記読出手段が前記情報を読み出した前記仮想アドレス空間上の位置情報が、前記アドレス空間上の位置情報と同じであるか否かを示すダイレクトマップ情報と、前記読出手段により読み出された前記情報とを対応付けて前記記憶手段に格納し、
前記マッピング手段は、前記ダイレクトマップ情報に従ってマッピングを行う請求項１乃至３のいずれか１つに記載の情報処理装置。
【請求項５】
前記格納手段は、前記読出出段により読み出された前記領域毎の前記情報が、前記仮想マシンを起動させた段階で復元させておく必要のある情報であるか否かを示す復元フラグを前記記憶手段に格納し、
前記復元制御手段は、前記復元フラグに基づいて、前記仮想マシンを起動させた段階で復元させておく必要のある前記記憶手段に記憶された前記領域の前記情報を復元させ、前記仮想マシンを復元した後、仮想マシン上で行われる処理に応じて他の前記領域の情報を復元させる請求項１乃至４のいずれか１つに記載の情報処理装置。
【請求項６】
情報処理装置で実行される仮想マシン制御方法であって、
読出手段が、ゲストＯＳが動作している仮想マシンの状態を保存する際に、前記ゲストＯＳが使用していた仮想アドレス空間の情報を、当該仮想アドレス空間を分割した領域毎に読み出す読出ステップと、
格納手段が、前記読出ステップにより読み出された前記領域毎の前記情報と前記仮想マシンの復元時にメモリ上のアドレス空間に当該情報を書き込む位置情報とを対応付けて記憶手段に格納する格納ステップと、
マッピング手段が、前記記憶手段に記憶された位置情報に基づいて、前記記憶手段に記憶された前記情報の復元先となる仮想アドレス空間を前記アドレス空間上にマッピングするマッピングステップと、
復元制御手段が、前記記憶手段に記憶された前記領域の情報をそれぞれ異なるプロセッサに割り当て、前記領域の情報を前記仮想アドレス空間上に復元させる処理を前記複数のプロセッサで並行して行わせる復元制御ステップと、
を含むことを特徴とする仮想マシン制御方法。
【請求項７】
複数のプロセッサを備えたコンピュータに対して、
ゲストＯＳが動作している仮想マシンの状態を保存する際に、前記ゲストＯＳが使用していた仮想アドレス空間の情報を、当該仮想アドレス空間を分割した領域毎に読み出す読出ステップと、
前記読出ステップにより読み出された前記領域毎の前記情報と前記仮想マシンの復元時にメモリ上のアドレス空間に当該情報を書き込む位置情報とを対応付けて記憶手段に格納する格納ステップと、
前記記憶手段に記憶された位置情報に基づいて、前記記憶手段に記憶された前記情報の復元先となる仮想アドレス空間を前記アドレス空間上にマッピングするマッピングステップと、
前記記憶手段に記憶された前記領域の情報をそれぞれ異なるプロセッサに割り当て、前記領域の情報を前記仮想アドレス空間上に復元させる処理を前記複数のプロセッサで並行して行わせる復元制御ステップと、
を実行させるための仮想マシン制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、仮想マシン制御方法、及び仮想マシン制御プログラムに関する。
【背景技術】
【０００２】
従来から、ソフトウェアによってハードウェア資源をエミュレートし、仮想的な情報処理装置を実現する仮想マシン技術が提案されている。仮想マシン上では、仮想マシンを構成する仮想的なハードウェア上でＯＳ（以下、ゲストＯＳと称す）が動作している。このゲストＯＳは、通常のＯＳと同様に、情報処理装置のメモリ資源を利用している。
【０００３】
そして、ゲストＯＳが参照していたアドレス空間を、仮想マシンの実行状態と共に記憶装置にスナップショットイメージとして保存し、任意のタイミングで当該スナップショットイメージを参照することで、仮想マシンの環境に復元する技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１７６２２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術においては、仮想マシンの環境が復元されるまでの時間については考慮されていない。
【０００６】
本発明は、上記に鑑みてなされたものであって、仮想マシンの環境が復元されるまでの時間を短縮する情報処理装置、仮想マシン制御方法、及び仮想マシン制御プログラムを提供する。
【課題を解決するための手段】
【０００７】
実施形態の情報処理装置は、複数のプロセッサと、読出手段と、格納手段と、マッピング手段と、復元制御手段と、を備える。読出手段は、ゲストＯＳが動作している仮想マシンの状態を保存する際に、ゲストＯＳが使用していた仮想アドレス空間の情報を、当該仮想アドレス空間を分割した領域毎に読み出す。格納手段は、読出手段により読み出された領域毎の情報と仮想マシンの復元時にメモリ上のアドレス空間に当該情報を書き込む位置情報とを対応付けて記憶手段に格納する。マッピング手段は、記憶手段に記憶された位置情報に基づいて、記憶手段に記憶された情報の復元先となる仮想アドレス空間をアドレス空間上にマッピングする。復元制御手段は、記憶手段に記憶された領域の情報をそれぞれ異なるプロセッサに割り当て、領域の情報を仮想アドレス空間上に復元させる処理を複数のプロセッサで並行して行わせる。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態にかかる情報処理装置のハードウェア構成の例を示した図である。
【図２】図２は、第１の実施形態にかかる情報処理装置上で実現されるソフトウェア構成を示した図である。
【図３】図３は、ゲストＯＳが使用しているゲスト物理アドレス空間と、実際のＲＡＭの物理アドレス空間と、の対応関係を示したメモリマッピングを示した図である。
【図４】図４は、第１の実施形態にかかるダイレクトマップ情報を示した図である。
【図５】図５は、第１の実施形態にかかる読出部により認識された段階のページフレーム割当領域情報のテーブル構造を示した図である。
【図６】図６は、ゲスト物理ページフレーム番号と物理ページフレーム番号とが一致するか否かに従って生成されたページフレーム割当領域情報のテーブル構造を示した図である。
【図７】図７は、ノーマルページ又はスーパーページであるかに従って生成されたページフレーム割当領域情報のテーブル構造を示した図である。
【図８】図８は、スーパーページ又はスーパーページの倍数の単位で分割された後のページフレーム範囲を表した図とする。
【図９】図９は、第１の実施形態にかかる仮想マシン保存データファイルに格納されたヘッダのデータ構造情報を示した図である。
【図１０】図１０は、第１の実施の形態にかかる情報処理装置における、仮想マシンの保存処理の手順を示すフローチャートである。
【図１１】図１１は、第１の実施の形態にかかる情報処理装置が、ゲストＯＳが使用していたページフレームを、仮想マシン保存データファイルに格納するまでを示した図である。
【図１２】図１２は、第１の実施の形態にかかる情報処理装置における、仮想マシン２０３の復元処理の手順を示すフローチャートである。
【図１３】図１３は、第２の実施形態にかかる仮想マシン保存データファイルのヘッダのデータ構造を示した図である。
【発明を実施するための形態】
【０００９】
図１は、本実施形態にかかる情報処理装置のハードウェア構成の例を示した図である。図１に示すように、情報処理装置１００は、ＲＡＭ１０１と、ＲＯＭ１０２と、マルチコアプロセッサ１０３と、記憶装置１０４と、これらを接続するバスと、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００１０】
マルチコアプロセッサ１０３は、記憶装置１０４に記憶された任意のプログラムを読み出して、当該プログラムを実行する。その際、マルチコアプロセッサ１０３は、ＲＡＭ１０１を作業領域として用いる。
【００１１】
マルチコアプロセッサ１０３は、１つのプロセッサ・パッケージに内に複数のプロセッサ・コアを含んだ構成である。本実施形態は、マルチコアプロセッサ１０３に格納されたプロセッサ・コアの数を制限するものではなく、２以上格納されていればよい。なお、本実施形態では、複数のプロセッサを備えた例として、マルチコアプロセッサを備えた例について説明するが、このような態様に制限するものではなく、プロセッサ・パッケージを複数備えた態様でも良い。
【００１２】
本実施形態にかかるマルチコアプロセッサ１０３には、メモリ管理ユニット(Memory  Management  Unit)が格納されている。メモリ管理ユニットは、仮想マシンが使用するゲスト物理アドレス空間を、情報処理装置１００が有する物理アドレス空間に変換する機能を備える。
【００１３】
本実施形態にかかるマルチコアプロセッサ１０３内のメモリ管理ユニットは、物理アドレス空間を、ページフレーム単位で管理する。本実施形態では、物理アドレス空間を、ノーマルページとスーパーページとの２種類のページフレームで管理する。ノーマルページを通常のページサイズとする。プロセッサのアーキテクチャに依存するが、そして、ノーマルページ（４ｋＢｙｔｅ）よりも大きな単位サイズでメモリマップが構築されたページを、スーパーページ（２ＭＢｙｔｅ）と称する。スーパーページのページフレーム番号は0x200単位となる。各バイト数は、本実施形態にかかるマルチコアプロセッサ１０３のアーキテクチャに依存して定められたものであり、本実施形態はノーマルページとスーパーページのサイズを制限するものではない。ノーマルページが４ｋＢｙｔｅ以外のサイズであっても良いし、スーパーページが２ＭＢｙｔｅ以外のサイズであっても良い。
【００１４】
そして、本実施形態では、メモリ管理ユニットが、ページ単位でアドレス変換を行った場合でも、物理アドレス空間の変換前後で、所定のアドレス下位ビットは変化しない。また、本実施形態では、所定のアドレス上位ビットを、ページフレーム番号とする。
【００１５】
図２は、情報処理装置１００上で実現されるソフトウェア構成を示した図である。図２に示すように、マルチコアプロセッサ１０３上で、仮想マシンモニタ２０２と、制御プログラム２０１と、仮想マシン２０３と、を実行する。これにより、ユーザは、情報処理装置１００を利用することで、ゲストＯＳ２２１が提供するサービスを利用できる。
【００１６】
仮想マシンモニタ（Virtual  Machine  monitor）２０２は、コンピュータを仮想化することで、複数のＯＳを並列に実行可能とするソフトウェアとする。仮想マシンモニタ２０２は、情報処理装置１００のハードウェア資源を、仮想マシンに必要な分量のリソースだけ割り当てる。
【００１７】
例えば、仮想マシンモニタ２０２は、情報処理装置１００の物理アドレス空間を、仮想マシン２０３のゲストＯＳ２２１が使用するゲスト物理アドレス空間に割り当てる際の対応付けを行う。そして、メモリ管理ユニットは、当該対応付けに従って、物理アドレス空間の変換を行う。
【００１８】
仮想マシン２０３上では、ゲストＯＳ２２１が実行されている。ゲストＯＳ２２１は、ゲスト物理アドレス空間を利用して、処理を行っている。ゲストＯＳ２２１は、仮想マシンモニタ２０２の上で実現される仮想マシン２０３で実行される。
【００１９】
ゲストＯＳ２２１が使用するゲスト物理アドレス空間は、物理アドレス空間と異なる仮想的なアドレス空間とする。図２は、説明を容易にするため、仮想マシン２０３が１つしか示されていないが、複数の仮想マシンが実行されても良い。その際、仮想マシン毎に異なるＯＳが動作しても良い。
【００２０】
図３は、ゲストＯＳ２２１が使用しているゲスト物理アドレス空間と、実際のＲＡＭ１０１の物理アドレス空間との対応関係を示したメモリマッピングを示した図である。図３のゲスト物理アドレス空間３０１が、ゲストＯＳ２２１が使用するアドレス空間であり、物理アドレス空間３０２が、ＲＡＭ１０１上の物理アドレス空間である。本実施形態では、ページを４ｋ単位とする。そして、アドレスを４ｋバイトで除算して算出された番号をページフレーム番号とする。
【００２１】
本実施形態では、マルチコアプロセッサ１０３以外のメモリにアクセスするデバイスがアドレスマップの変換に対応可能とは限らないため、ゲストＯＳ２２１が使用するゲスト物理アドレス空間３０１の大部分は、実際の物理アドレス空間３０２と一致するように考慮して、仮想マシンモニタ２０２がマッピングを構築している。図３に示す例では、0x0010＿0000から0x9D00＿0000までの領域である。
【００２２】
また、複数のゲストＯＳが動作している場合、その他のゲストＯＳについても同様に、必要に応じてアドレス空間が割り当てられる。一方、ゲストＯＳが使用しないアドレス空間は、仮想マシンモニタ２０２及び制御プログラム２０１によって使用される。
【００２３】
図２に戻り、情報処理装置１００では、仮想マシン２０３の環境を復元する際、ゲストＯＳ２２１が使用していたゲスト物理アドレス空間３０１を、仮想マシン２０３の実行状態と共に、仮想マシン保存データファイル２５１として記憶装置１０４に保存される。
【００２４】
このように、仮想マシン保存データファイル２５１には、少なくとも図３に示されたゲスト物理アドレス空間３０１を格納する必要がある。そして、仮想マシン２０３の使用環境の向上を図るためには、仮想マシン保存データファイル２５１の効率的な保存方法及び復元方法が要求される。
【００２５】
制御プログラム２０１は、仮想マシンモニタ２０２と連携してゲストＯＳ２２１の管理、制御を行う。制御プログラム２０１は、制御部２１１と、読出部２１２と、圧縮部２１３と、格納部２１４と、復元部２１５と、を備える。
【００２６】
そして、制御プログラム２０１は、仮想マシン２０３を復元できるよう、仮想マシン２０３の状態を、仮想マシン保存データファイル２５１に格納する。そして、仮想マシン２０３を再び起動させる際に、制御プログラム２０１が、記憶装置１０４に格納されている仮想マシン保存データファイル２５１を読み出し、読み出したデータから、仮想マシン２０３の状態を復元する。この仮想マシン保存データファイル２５１は、ゲストＯＳ２２１が通常に起動した後に取得されたものとする。
【００２７】
制御部２１１は、仮想マシンモニタ２０２が最初に起動するプログラムであり、情報処理装置１００の処理制御を行う。また、制御部２１１は、仮想マシン２０３で直接アクセスさせないデバイスの制御を行い、各ゲストＯＳ（例えばゲストＯＳ２２１）に対して仮想的なデバイスを提供している。例えば、記憶装置１０４の実際の制御用ドライバは、制御部２１１に存在し、各ゲストＯＳには制御部２１１が仮想的なディスクへアクセスするためのサービスを提供する。
【００２８】
読出部２１２は、仮想マシン２０３の状態を保存する際に、ゲストＯＳ２２１が使用していたゲスト物理アドレス空間の構造を認識した後、当該ゲスト物理アドレス空間に格納されていた情報を、当該ゲスト物理アドレス空間を分割したページ単位で読み出す。
【００２９】
読出部２１２は、ゲスト物理ページ毎に、ＲＡＭ１０１の物理アドレス空間にマッピングされているゲスト物理ページフレームと、物理ページフレーム、の番号が一致するか否かを認識する。このように、本実施形態は、ゲスト物理アドレス空間のゲスト物理ページがマッピングされたＲＡＭ１０１の物理アドレス空間の範囲を、ゲスト物理ページフレームと称する。
【００３０】
そして、読出部２１２は、ゲスト物理アドレス空間のゲスト物理ページフレームと、当該ゲスト物理ページのマッピング先の物理ページフレームと、の番号が一致している範囲と、そうでない範囲と、に分割し、ダイレクトマップ情報を生成する。
【００３１】
図４が、ダイレクトマップ情報を示した図である。図４に示すように、ゲスト物理ページフレーム開始番号と、ゲスト物理ページフレーム終了番号と、ダイレクトマップ情報と、を対応付けて記憶する。ダイレクトマップ情報は、ゲスト物理ページフレームと物理ページフレームの番号とが同一の番号でダイレクトにマッピングされているか否かを示すフラグとする。本実施形態では、ゲスト物理ページフレームと物理ページフレームの番号とが一致する場合、ダイレクトマップ情報にダイレクトと設定し、ゲスト物理ページフレームと物理ページフレームの番号とが一致しない場合に、ダイレクトマップ情報に非ダイレクトと設定する。
【００３２】
さらに、読出部２１２は、ゲスト物理ページがマッピングされている、物理アドレス空間内のゲスト物理ページフレームの範囲を認識する。本実施形態では、各ゲスト物理ページがマッピングされている、ゲスト物理ページフレームの範囲を、ページフレーム割当領域情報と称す。
【００３３】
図５は、読出部２１２により認識された段階のページフレーム割当領域情報のテーブル構造を示した図である。図５に示すように、読出部２１２は、ゲスト物理ページフレームを、連続している範囲毎に分割し、ページフレーム割当領域情報を生成する。
【００３４】
次に、読出部２１２は、図４に示されたダイレクトマップ情報を参照して、図５のページフレーム割当領域情報で示された範囲を、さらに、ダイレクトマップ情報が異なる範囲を分割し、図６に示すページフレーム割当領域情報を生成する。図６は、ダイレクトマップ情報が異なる範囲を分割して生成されたページフレーム割当領域情報のテーブル構造を示した図である。図６に示すページフレーム割当領域情報は、ゲスト物理ページフレーム開始番号と、ゲスト物理ページフレーム終了番号と、ダイレクトマップ情報と、を対応付けて記憶している。このようにして、ダイレクトマップ情報が考慮されたページフレーム割当領域情報が生成される。なお、本実施形態では、ゲスト物理ページフレーム開始番号とゲスト物理ページフレーム終了番号との間の範囲を、ページフレーム範囲と称する。
【００３５】
読出部２１２は、図６に示されたページフレーム割当領域情報の各エントリで示されたページフレーム範囲を、さらに、スーパーページであるか否かに応じて分割する。読出部２１２は、図６のページフレーム割当領域情報の各エントリで示されたページフレーム範囲のデータサイズがスーパーページ以上であるか否かを判定する。そして、読出部２１２は、当該範囲のデータサイズがスーパーページ以上であると判定された場合、ページフレーム開始番号を確認し、スーパーページとノーマルページとの境界を検出する。そして、読出部２１２は、図６のページフレーム割当領域情報の各エントリで示されたページフレーム範囲を、さらに、ノーマルページとスーパーページとで分割し、図７に示すページフレーム割当領域情報を生成する。図７は、ノーマルページ又はスーパーページであるかに従って生成されたページフレーム割当領域情報のテーブル構造を示した図である。図７に示すページフレーム割当領域情報は、ゲスト物理ページフレー開始番号と、ゲスト物理ページフレーム終了番号と、ダイレクトマップ情報と、ページサイズ情報と、を対応付けて記憶している。ページサイズ情報は、当該エントリで示されたページフレーム範囲が、スーパーページ又はノーマルページであるかを識別する情報とする。
【００３６】
そして、読出部２１２は、図７に示されたページフレーム割当領域情報に従って、スーパーページより大きなサイズの範囲を、スーパーページ又はスーパーページの倍数の単位で分割する。図８は、スーパーページ又はスーパーページの倍数の単位で分割された後のページフレーム範囲を表した図とする。図８に示す例では、分割されたページフレーム範囲毎に、当該範囲のゲスト物理ページフレーム開始番号と、当該範囲のゲスト物理ページフレーム終了番号と、ダイレクトマップ情報と、ページサイズ情報と、が示されている。
【００３７】
そして、本実施形態に係る情報処理装置１００では、仮想マシン２０３を復元する際、マルチコアプロセッサ１０３の各コアに、図８に示されたページフレーム範囲毎に復元処理を割り当てる。これにより、復元処理が並列化されているため、仮想マシン２０３を使用可能になるまでの処理が短縮できる。
【００３８】
圧縮部２１３は、図８で示されたページフレーム範囲毎に、読出部２１２により読み出されたデータを圧縮する。
【００３９】
格納部２１４は、圧縮部２１３により圧縮されたページフレーム範囲毎のデータを、仮想マシン保存データファイル２５１に追加保存していく。その際、格納部２１４は、仮想マシン保存データファイル２５１のヘッダに、追加保存されたページフレーム単位のデータの物理アドレス空間におけるマップ先を示したゲスト物理ページフレーム番号、及び当該ゲスト物理ページフレームの仮想マシン保存データファイル２５１内のオフセットを対応付けて格納する。さらに、格納部２１４は、ページフレーム単位で、ダイレクトマップ情報及びページサイズ情報も、仮想マシン保存データファイル２５１に格納する。
【００４０】
図９は、第１の実施形態にかかる仮想マシン保存データファイル２５１に格納されたヘッダのデータ構造情報を示した図である。図９に示すように、ヘッダ情報には、ページフレーム単位で、ゲスト物理ページフレーム開始番号と、ゲスト物理ページフレーム終了番号と、ダイレクトマップ情報と、ページサイズ情報と、保存オフセットと、を対応付けて記憶している。ゲスト物理ページフレーム開始番号と、ゲスト物理ページフレーム終了番号と、ダイレクトマップ情報と、ページサイズ情報とは、図８と同様とする。保存オフセットは、ゲスト物理ページフレーム開始番号からゲスト物理ページフレーム終了番号で示される範囲のデータであって、圧縮部２１３により圧縮された後のデータが、仮想マシン保存データファイル２５１に格納されたオフセット位置とする。
【００４１】
本実施形態にかかる情報処理装置１００の格納部２１４は、仮想マシン２０３の状態を保存する際、ページフレーム範囲毎に、当該ページフレーム範囲のデータの格納先となるオフセット位置（保存オフセット）を、ヘッダに格納する。ところで、圧縮部２１３が、同一データサイズのページフレーム範囲毎にデータを圧縮した場合でも、圧縮された後の複数のデータのデータサイズは互いに異なる。そして、格納部２１４が、圧縮されたデータを仮想マシン保存データファイル２５１に追加格納すると、ページフレーム範囲毎のデータの格納位置が把握できなくなる。そこで、本実施形態にかかる格納部２１４は、圧縮されたページフレーム範囲毎のデータの格納先を示した保存オフセットを、仮想マシン保存データファイル２５１のヘッダに格納する。
【００４２】
これにより、仮想マシン２０３を復元する際に、仮想マシン保存データファイル２５１のヘッダを参照するだけで、仮想マシン２０３を復元するために必要な処理を認識できる。これにより、ゲスト物理アドレス空間の再構築処理を効率的にできる。
【００４３】
図９に示す例では、ページフレーム範囲毎に、ダイレクトマップ情報が対応付けられている。そして、復元部２１５が仮想マシン２０３を復元する際に、ダイレクトマップ情報を参照することで、ページフレーム毎に、ゲスト物理ページと、物理ページフレームと、が一致しているか否かを認識できる。これにより、ゲスト物理アドレス空間の再構築の効率を向上させることができる。
【００４４】
図９に示す例では、ページフレーム範囲毎に、ページサイズ情報が対応付けられている。これにより、復元部２１５が仮想マシン２０３を復元する際に、ページサイズ情報を参照し、ページサイズを含めて効率的に復元可能となる。
【００４５】
図９に示す例では、連続するページフレーム範囲毎に、ページフレームのデータを圧縮して保存している。なお、本実施形態では、連続するページフレーム範囲毎に圧縮する例とするが、ページフレーム範囲に制限するものではなく、ページサイズの倍数である一定以上の連続する範囲を圧縮する技術であればよい。これにより、仮想マシンを復元するために必要なデータを保存するスペースを削減できる。さらに、記憶装置１０４のリード性能が低い場合に、読み出すサイズが削減されるため、仮想マシン保存データファイル２５１全てを読み出すまでの時間を短縮できる。これにより、情報処理装置１００は、仮想マシン２０３を高速に復元できる。
【００４６】
記憶装置１０４は、ＨＤＤやＳＳＤなど様々な記憶手段を用いることができる。特に、記憶装置１０４にＨＤＤが適用された場合に、制御プログラム２０１は、記憶装置１０４からデータをシーケンシャルに読み出せる。これにより、情報処理装置１００は、効率的に仮想マシン２０３の復元処理を行うことができる。
【００４７】
そして、格納部２１４が、仮想マシン保存データファイル２５１に対して、復元する順序に従ってデータを格納することで、仮想マシン２０３を復元する際に、逐次的に記憶装置１０４に対してアクセスできる。
【００４８】
復元部２１５は、仮想マシン２０３を復元する際に、仮想マシン保存データファイル２５１を記憶装置１０４から読み出し、復元制御を行う。復元部２１５は、仮想マシン保存データファイル２５１のヘッダの情報を、仮想マシンモニタ２０２に受け渡す。
【００４９】
仮想マシンモニタ２０２が、仮想マシン保存データファイル２５１のヘッダに格納されている情報に従って、ゲスト物理アドレス空間と、実際の物理アドレス空間と、の間のマッピングを行う。その際、仮想マシンモニタ２０２は、ヘッダに格納されているダイレクトマップ情報及びページサイズ情報に従う。
【００５０】
復元部２１５は、マルチコアプロセッサ１０３のコアの数だけ処理スレッドを生成する。そして、復元部２１５は、仮想マシン保存データファイル２５１に記憶された、ページフレーム範囲毎のデータを、それぞれ異なる処理スレッドに割り当てる。そして、処理スレッドは、ページフレーム範囲毎のデータを、ゲスト物理アドレス空間に復元させる処理を行う。これにより、復元部２１５は、マルチコアプロセッサ１０３のコアの数だけ、復元処理を並列して行わせることができる。
【００５１】
ところで、仮想マシン保存データファイル２５１に記憶されたデータは、圧縮部２１３により圧縮されている。そこで、処理スレッドは、仮想マシン保存データファイル２５１から、ページフレーム範囲毎のデータを読み出した後、当該データの伸張処理を行う。その後、処理スレッドは、伸張処理後のデータを用いて、ゲストＯＳ２２１が使用するゲスト物理アドレス空間に復元するための処理を行う。その際、処理スレッドは、当該データを、当該データと対応付けられているゲスト物理ページフレーム番号が指し示すアドレスに復元させる。
【００５２】
本実施形態にかかる情報処理装置１００の制御プログラム２０１は、マルチコアプロセッサ１０３のプロセッサ・コア数だけ処理スレッドを生成する。そして、制御プログラム２０１は、処理スレッドの数だけ並列してページフレーム範囲毎に圧縮されたデータの伸張処理を行わせる。当該伸張処理は、ページフレームの並び順に応じて逐次的に実行される。また、記憶装置１０４のリード性能が低い場合、ページフレーム単位のデータをゲスト物理アドレス空間に復元する際、仮想マシン保存データファイル２５１の先読み処理を明示的に行わせる。これにより、ページフレームのデータの読み出しと伸張処理との並列性を確保し、復元時間を短縮できる。
【００５３】
本実施形態では、仮想マシン保存データファイル２５１に、ページフレーム範囲毎に分割してデータを格納した。これにより、制御プログラム２０１が、仮想マシン保存データファイル２５１を用いて、仮想マシン２０３の復元を行う際に、データを読み出す処理と、読み出したデータを伸張する処理と、伸張したデータをゲスト物理アドレス空間に復元する処理とを、各プロセッサ・コアで並列して行うことができる。例えば、マルチコアプロセッサに４個のプロセッサ・コアが格納されていれば、４並列で上述した処理を行うことができる。
【００５４】
次に、本実施の形態にかかる情報処理装置１００における、仮想マシン２０３の保存処理について説明する。図１０は、本実施の形態にかかる情報処理装置１００における上述した処理の手順を示すフローチャートである。
【００５５】
まず、制御プログラム２０１の読出部２１２は、ゲスト物理ページフレーム番号と、物理ページフレーム番号と、を仮想マシンモニタ２０２から取得し、ゲスト物理ページフレーム番号と物理ページフレーム番号と一致しているか否かを確認して、図４に示したダイレクトマップ情報を生成する（ステップＳ１００１）。
【００５６】
次に、読出部２１２は、ゲストＯＳ２２１が使用していたゲスト物理ページが物理ページにマッピングされている、物理アドレス空間のゲスト物理ページフレーム範囲を認識し、図５に示されるようなページフレーム割当領域情報を生成する（ステップＳ１００２）。
【００５７】
そして、読出部２１２は、ダイレクトマップ情報に従って分割した、図６に示すようなページフレーム割当領域情報を生成する（ステップＳ１００３）。
【００５８】
次に、読出部２１２は、図６のページフレーム割当領域情報の各エントリを、ノーマルページとスーパーページとで分割し、図７に示されたページフレーム割当領域情報を生成する（ステップＳ１００４）。
【００５９】
その後、読出部２１２は、図７に示されたページフレーム割当領域情報の各エントリを、ノーマルページ、スーパーページ又はスーパーページの倍数の単位で分割し、図８に示すページフレーム範囲を生成する（ステップＳ１００５）。
【００６０】
そして、制御プログラム２０１は、ステップＳ１００６〜Ｓ１０１０で示される処理を、ステップＳ１００５で生成されたページフレーム範囲毎に繰り返す（ステップＳ１００６）。
【００６１】
読出部２１２は、仮想マシン２０３を用いて、ゲストＯＳ２２１のページフレーム毎に、当該ページフレーム範囲に格納されているデータを、制御プログラム２０１が参照可能な物理アドレス空間にマップして参照可能とする（ステップＳ１００７）。
【００６２】
その後、圧縮部２１３が、マップして参照可能とされた、ページフレーム範囲のデータを圧縮する（ステップＳ１００８）。
【００６３】
そして、格納部２１４が、圧縮されたページフレーム範囲のデータを、仮想マシン保存データファイル２５１に書き込む（ステップＳ１００９）。
【００６４】
図１１は、情報処理装置１００が、ゲストＯＳ２２１が使用していたページフレームを、仮想マシン保存データファイル２５１に格納するまでを示した図である。図１１に示すように、制御プログラム２０１は、ゲストＯＳ２２１を使用していたページフレームを直接参照できない。そこで、制御プログラム２０１は、仮想マシンモニタ２０２へ要求を行って、ゲストＯＳ２２１が使用しているページフレームを、制御プログラム２０１が参照可能な物理アドレス空間にマップして参照可能とする（ステップＳ１１０１）。これにより、制御プログラム２０１は、当該ページフレームを参照できるので、当該ページフレームを圧縮して、仮想マシン保存データファイル２５１に格納する（ステップＳ１１０２）。
【００６５】
図１０に戻り、情報処理装置１００では、ゲストＯＳ２２１が使用していたゲスト物理アドレス空間全てのページフレームを、仮想マシン保存データファイル２５１に書き込むことで、ステップＳ１００６〜Ｓ１００９の処理が終了する。
【００６６】
そして、格納部２１４は、図８で示した情報を含んだ、図９に示すようなヘッダの情報を生成し、仮想マシン保存データファイル２５１にヘッダとして付与することで処理を終了する（ステップＳ１０１１）。また、格納部２１４は、ステップＳ１００９で保存した位置を示した、仮想マシン保存データファイル２５１上の保存オフセットも、ヘッダ情報に書き込んでおく。
【００６７】
以上のように、本実施形態にかかる情報処理装置１００は、仮想マシンの状態を仮想マシン保存データファイル２５１に保存することができる。
【００６８】
次に、本実施の形態にかかる情報処理装置１００における、仮想マシン２０３の復元処理について説明する。図１２は、本実施の形態にかかる情報処理装置１００における上述した処理の手順を示すフローチャートである。
【００６９】
復元部２１５は、仮想マシン保存データファイル２５１から、ヘッダ情報を読み出す（ステップＳ１２０１）。
【００７０】
次に復元部２１５は、ステップＳ１２０２〜Ｓ１２０４で示される処理を、ヘッダ情報に格納されているページフレーム範囲の数だけ繰り返す（ステップＳ１２０２）。
【００７１】
その後、仮想マシンモニタ２０２が、復元部２１５からの要求に従って、ページフレーム範囲毎に、当該ページフレーム範囲に対応する、ゲスト物理アドレス空間のマッピングを追加要求する（ステップＳ１２０３）。
【００７２】
そして、復元部２１５は、ヘッダ情報に格納されているページフレーム範囲について全てマッピングが終了した時点で、ループ処理を終了する（ステップＳ１２０４）。
【００７３】
復元部２１５は、マルチコアプロセッサ１０３のプロセッサ・コアの数を取得し、当該コアの数だけ、ページデータ復元用の処理スレッドを生成する（ステップＳ１２０５）。
【００７４】
そして、復元部２１５は、ヘッダ以降のデータについて先読みを指示する（ステップＳ１２０６）。なお、この先読み指示は、ステップＳ１２０７〜Ｓ１２１０の処理に間に合うようにデータが先読みされればよく、実際にはステップＳ１２０７〜Ｓ１２１０の処理と並列的に行われる。これにより、読み出しを効率的に行うことができる。なお、実際にページフレームを読み捨てる処理でも良いし、ゲストＯＳの先読み用のインタフェースを使っても良い。
【００７５】
そして、ステップＳ１２０７〜Ｓ１２１０間での処理は、ページデータ復元用の処理スレッドの数に応じて並列して行われる。
【００７６】
そして、各処理スレッドは、仮想マシン保存データファイル２５１に未処理のページフレーム範囲のデータがあるか否かを判定する（ステップＳ１２０７）。
【００７７】
各処理スレッドは、仮想マシン保存データファイル２５１に未処理のページフレームのデータがあると判定した場合（ステップＳ１２０７：Ｙｅｓ）、復元対象のページフレーム範囲について、仮想マシンモニタ２０２に対し、制御プログラムのゲスト物理アドレス空間（仮想メモリ空間）へマップし書き込み可能とする要求を行う（ステップＳ１２０８）。
【００７８】
その後、各処理スレッドは、仮想マシン保存データファイル２５１から、ヘッダ情報の保存オフセットに従って未処理のページフレーム範囲の圧縮データを取得する（ステップＳ１２０９）。
【００７９】
そして、各処理スレッドは、復元対象のページフレーム範囲のマップ先へ圧縮データを伸張する（ステップＳ１２１０）。その後、ステップＳ１２０７から処理が開始される。
【００８０】
そして、各処理スレッドは、未処理のページフレーム範囲のデータがなくなったと判定した場合（ステップＳ１２０７：Ｎｏ）、ステップＳ１２１１の処理に遷移し、当該処理スレッドが終了される（ステップＳ１２１１）。
【００８１】
そして、復元部２１５は、全ての処理スレッドが終了するまで待機する（ステップＳ１２１２）。全ての処理スレッドが終了した時点で、ゲストＯＳ２２１が使用していたゲスト物理アドレス空間が全て復元できたものとして処理を終了する。
【００８２】
上述した処理手順により、本実施形態にかかる情報処理装置１００は、マルチコアプロセッサ１０３のプロセッサ・コアの数に応じた並列処理で、仮想マシン２０３を復元できる。
【００８３】
（第２の実施形態）
第１の実施形態では、仮想マシン２０３を復元する際に、ゲスト物理アドレス空間の全てマップする例について説明した。しかしながら、全てマップすることに制限するものではなく、ゲスト物理アドレス空間の特定のページフレーム範囲だけ復元し、ゲストＯＳの実行再開と並行して、オンデマンドで他のページフレーム範囲を復元しても良い。
【００８４】
本実施形態にかかる情報処理装置１００は、第１の実施形態と同様として説明を省略する。そして、第２の実施形態にかかる制御プログラム２０１が、仮想マシン保存データファイル２５１を生成する際に、ヘッダの構造のみ異なる。
【００８５】
図１３は、第２の実施形態にかかる仮想マシン保存データファイル２５１のヘッダのデータ構造を示した図である。第２の実施形態にかかるヘッダは、第１の実施形態のヘッダのデータ構造と比べて、復元フラグが追加されている。復元フラグは、ページフレーム範囲毎に、仮想マシン２０３を起動させた段階で復元させておく必要のある情報であるか否かを示すフラグとする。なお、ページフレーム範囲毎の復元フラグは、実施の態様に応じて設定されるものとして、設定基準について説明を省略する。
【００８６】
復元部２１５は、ページフレーム範囲を復元する際に、当該ページフレーム範囲と対応付けられている復元フラグに基づいて、当該ページフレーム範囲が、仮想マシン２０３を起動させた段階で復元させておく必要があるか否かを判定し、必要と判定した場合に当該ページフレーム範囲を処理スレッドに復元させる。復元させておく必要がないと判定した場合に、仮想マシンを復元した後、仮想マシン上で行われている処理に応じて、復元させなかったページフレーム範囲のうち、必要となったページフレーム範囲のデータを順次、伸張、復元させる。
【００８７】
第２の実施形態では、必要なページフレーム範囲だけ復元させることで、ゲストＯＳを高速に実行可能な状態まで復元できる。これにより、ユーザは、素早くゲストＯＳを利用可能できる。
【００８８】
上述した第１〜第２の実施形態にかかる情報処理装置１００では、マルチコアプロセッサ１０３のプロセッサ・コアの数に合わせて並列して、復元処理を行うことができるため、仮想マシンモニタ２０２を復元するまでの時間を短縮できる。
【００８９】
さらに、上述した第１〜第２の実施形態にかかる情報処理装置１００では、ダイレクトマップ情報ページ及びマップページサイズ情報に基づいて分割したページフレーム範囲単位で復元を行うことで、並列処理が容易となる。
【００９０】
また、上述した第１〜第２の実施形態にかかる情報処理装置１００では、ページフレーム範囲のデータを圧縮すると共に、保存オフセットをヘッダに書き込むこととした。これにより、圧縮されたデータであっても並列して処理を行うことを可能にするとともに、記憶装置１０４の使用容量を削減できる。さらに、記憶装置１０４のリード性能が低い場合には、読み出すデータ量を削減できるので、処理の高速化を図ることができる。
【００９１】
上述した実施形態の情報処理装置で実行される仮想マシンモニタ及び制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００９２】
さらに、上述した実施形態の情報処理装置で実行される仮想マシンモニタ及び制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施形態の情報処理装置で実行される仮想マシンモニタ及び制御プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００９３】
上述した実施形態の情報処理装置で実行される仮想マシンモニタ及び制御プログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはマルチコアプロセッサ１０３が記憶装置１０４から仮想マシンモニタ及び制御プログラムを読み出して実行することにより上記各部がＲＡＭ１０１上にロードされ、上記各部がＲＡＭ１０１上に生成されるようになっている。
【００９４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９５】
１００…情報処理装置、１０１…ＲＡＭ、１０２…ＲＯＭ、１０３…マルチコアプロセッサ、１０４…記憶装置、２０１…制御プログラム、２０２…仮想マシンモニタ、２０３…仮想マシン、２１１…制御部、２１２…読出部、２１３…圧縮部、２１４…格納部、２１５…復元部、２２１…ゲストＯＳ、２５１…仮想マシン保存データファイル。
【図１】
2013134749.tif 000003
【図２】
2013134749.tif 000004
【図３】
2013134749.tif 000005
【図４】
2013134749.tif 000006
【図５】
2013134749.tif 000007
【図６】
2013134749.tif 000008
【図７】
2013134749.tif 000009
【図８】
2013134749.tif 000010
【図９】
2013134749.tif 000011
【図１０】
2013134749.tif 000012
【図１１】
2013134749.tif 000013
【図１２】
2013134749.tif 000014
【図１３】
2013134749.tif 000015