(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンが動作するコンピュータに設けられ、一つの仮想マシンのメモリ内容をレジューム時に復元するメモリ内容復元装置であって、
前記複数の仮想マシン毎に前記メモリ内容を格納可能な第１格納部と、
前記メモリ内容を複数に分割した分割メモリ内容を識別するためのメモリ識別子を含む第１メモリ情報を生成して前記第１格納部に保存し、前記メモリ内容を前記メモリ識別子により分割し、前記分割メモリ内容が同じものに対して同じメモリ識別子を生成するメモリ情報生成管理部と、
前記第１格納部よりアクセス速度が遅い第２格納部と、
前記一つの仮想マシンにサスペンドの指示がなされると、前記第１格納部に格納された前記一つの仮想マシンの全ての前記第１メモリ情報と、前記分割メモリ内容とを取得し、前記メモリ識別子を含む第２メモリ情報を生成し、前記第２メモリ情報と、前記分割メモリ内容と、を前記第２格納部に保存するメモリ保存部と、
前記一つの仮想マシンにレジュームの指示がなされると、前記第２メモリ情報に含まれるメモリ識別子と前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれるメモリ識別子とを比較し、前記第２メモリ情報に含まれるメモリ識別子と同一のメモリ識別子が前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれている場合は、前記一つの仮想マシン以外の仮想マシンの前記第１格納部に格納されている前記分割メモリ内容を用いて前記一つの仮想マシンの前記メモリ内容を復元し、前記第２メモリ情報に含まれるメモリ識別子と同一のメモリ識別子が前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれていない場合は、前記第２格納部に格納されている前記分割メモリ内容を用いて前記一つの仮想マシンの前記メモリ内容を復元するメモリ復元部と、
を備えたメモリ内容復元装置。
【請求項２】
前記メモリ保存部は、前記分割メモリ内容を含む分割メモリイメージを生成して前記第２格納部に保存する、請求項１に記載のメモリ内容復元装置。
【請求項３】
前記分割メモリ内容が同じで、前記第１メモリ情報が異なるものが複数あるとき、前記メモリ識別子を統合するメモリ統合部をさらに備える、請求項１又は２項に記載のメモリ内容復元装置。
【請求項４】
前記メモリ復元部は、前記第２格納部に格納された前記第２メモリ情報を読み出した後に前記第２格納部をオフし、読み出した前記第２メモリ情報に含まれる前記メモリ識別子と、前記一つの仮想マシン以外の仮想マシンの前記第１格納部に格納された前記第１メモリ情報に含まれるメモリ識別子とを比較し、前記読み出したメモリ識別子が前記一つの仮想マシン以外の仮想マシンの前記第１格納部に格納されたメモリ識別子に存在している第１リストと、存在していない第２リストとを作成し、前記第２リストが存在するときに前記第２格納部をオンして前記第２リストにある前記メモリ識別子に対応する分割メモリイメージを前記第２格納部から読み出し、読み出した後に前記第２格納部をオフし、前記読み出した分割メモリイメージと、前記第１リストにある前記一つの仮想マシン以外の仮想マシンの前記第１格納部に格納された分割メモリイメージと、から前記メモリ内容を復元する、請求項２又は３に記載のメモリ内容復元装置。
【請求項５】
前記第２格納部は、
前記分割メモリ内容を格納する第３格納部と、
前記メモリ識別子を格納する第４格納部と、を有する、請求項１から４のいずれか１項に記載のメモリ内容復元装置。
【請求項６】
前記第４格納部は、前記第３格納部に比べて容量が小さくかつアクセス速度が速い、記憶部である、請求項５に記載のメモリ内容復元装置。
【請求項７】
複数の仮想マシンが動作するコンピュータに設けられ、一つの仮想マシンのメモリ内容をレジューム時に復元するメモリ内容復元方法であって、
前記メモリ内容を分割した複数の分割メモリ内容を識別するためのメモリ識別子を含む第１メモリ情報を生成して第１格納部に保存し、前記メモリ内容を前記メモリ識別子により分割し、前記分割メモリ内容が同じものに対して同じメモリ識別子を生成するメモリ情報生成管理ステップと、
一つの仮想マシンにサスペンドの指示がなされると、前記第１格納部に格納された前記一つの仮想マシンの全ての前記第１メモリ情報と、前記分割メモリ内容と、を取得し、前記メモリ識別子を含む第２メモリ情報を生成し、前記第２メモリ情報と、前記分割メモリ内容と、を前記第１格納部よりアクセス速度が遅い第２格納部に保存するメモリ保存ステップと、
前記一つの仮想マシンにレジュームの指示がなされると、前記第２メモリ情報に含まれるメモリ識別子と前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれるメモリ識別子とを比較する比較ステップと、
前記第２メモリ情報に含まれるメモリ識別子と同一のメモリ識別子が前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれている場合は、前記一つの仮想マシン以外の仮想マシンの前記第１格納部に格納されている前記分割メモリ内容を用いて前記一つの仮想マシンの前記メモリ内容を復元し、前記第２メモリ情報に含まれるメモリ識別子と同一のメモリ識別子が前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれていない場合は、前記第２格納部に格納されている前記分割メモリ内容を用いて前記一つの仮想マシンの前記メモリ内容を復元するメモリ復元ステップと、
を含む仮想マシンのメモリ内容復元方法。
【請求項８】
複数の仮想マシンが動作するコンピュータに設けられ、一つの仮想マシンのメモリ内容をレジューム時に復元するメモリ内容復元プログラムであって、
前記メモリ内容を分割した複数の分割メモリ内容を識別するためのメモリ識別子を含む第１メモリ情報を生成して第１格納部に保存し、前記メモリ内容を前記メモリ識別子により分割し、前記分割メモリ内容が同じものに対して同じメモリ識別子を生成するメモリ情報生成管理機能と、
一つの仮想マシンにサスペンドの指示がなされると、前記第１格納部に格納された前記一つの仮想マシンの全ての前記第１メモリ情報と、前記分割メモリ内容と、を取得し、前記メモリ識別子を含む第２メモリ情報を生成し、前記第２メモリ情報と、前記分割メモリ内容と、を前記第１格納部よりアクセス速度が遅い第２格納部に保存するメモリ保存機能と、
前記一つの仮想マシンにレジュームの指示がなされると、前記第２メモリ情報に含まれるメモリ識別子と前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれるメモリ識別子とを比較する比較機能と、
前記第２メモリ情報に含まれるメモリ識別子と同一のメモリ識別子が前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれている場合は、前記一つの仮想マシン以外の仮想マシンの前記第１格納部に格納されている前記分割メモリ内容を用いて前記一つの仮想マシンの前記メモリ内容を復元し、前記第２メモリ情報に含まれるメモリ識別子と同一のメモリ識別子が前記一つの仮想マシン以外の仮想マシンの前記第１メモリ情報に含まれていない場合は、前記第２格納部に格納されている前記分割メモリ内容を用いて前記一つの仮想マシンの前記メモリ内容を復元するメモリ復元機能と、
を実現する仮想マシンのメモリ内容復元プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシンが動作するコンピュータに設けられ、仮想マシンのメモリ内容をレジューム時に復元するメモリ内容復元装置、メモリ内容復元方法及びメモリ内容復元プログラムに関する。
【背景技術】
【０００２】
コンピュータにおいて、オペレーションシステム（以下、単にＯＳと記す）の起動やシャットダウンの時間を省略して作業の中断・再開が素早くできるようにサスペンド・レジューム機能が備わっているものが知られている。通常のコンピュータにおけるサスペンド・レジューム機能では、使用を中断するとき、メモリへの給電を継続することで、メモリの内容をそのまま残し、ＣＰＵなどのハードウェアの電源を落とす(サスペンド)。そして、使用を再開するとき、ＣＰＵなどのハードウェアの電源を入れてメモリに残っているメモリ内容でＯＳに制御を移す（レジューム）ことで中断時から再開することが行われている。
【０００３】
ハイパーバイザ上で複数の仮想マシンを動作させるコンピュータにおいても、仮想マシン毎にサスペンド・レジューム機能を実現できると便利である。しかし、仮想マシンでは、内部のメモリを複数の仮想マシンで分割して使用している。このため、通常のコンピュータのサスペンドのようにサスペンドした仮想マシンのメモリの内容をそのまま残しておくと、サスペンド中に他の仮想マシンを動作できなくなる。
【０００４】
複数の仮想マシンを動作させるコンピュータにおいて、サスペンド・レジューム機能を実現している情報処理システムが従来知られている（たとえば、特許文献１参照）。従来の情報処理システムでは、サスペンド時にメモリの内容をファイルにしてハードディスクに保存する。レジューム時には、ハードディスクからファイルを読み出してメモリにその内容をコピーすることにより、サスペンド・レジューム機能を実現している。
【特許文献１】特開２００７−２３３８１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のサスペンド・レジューム機能では、近年のＣＰＵの機能の進化やデバイスの増加、メモリ容量の増加の影響により、サスペンドする際にハードディスクに作成されるファイルの容量が増加し、レジューム時にファイルをメモリにコピーする時間が長くなり、レジューム時間が長くなるという問題がある。
とくに、仮想マシンの場合、仮想マシンに割り当てるメモリ量の増加に応じて、ファイルの大きさが変化するので、メモリ量の増加に応じてレジューム時間が長くなるという問題がある。
【０００６】
本発明の課題は、複数の仮想マシンが動作するコンピュータシステムにおいて、レジューム時間を短縮できるようにすることにある。
【課題を解決するための手段】
【０００７】
本願に開示するメモリ内容復元装置は、複数の仮想マシンが動作するコンピュータシステムに設けられ、一つの仮想マシンのメモリ内容をレジューム時に復元する装置であって、第１格納部と、メモリ情報生成管理部と、第２格納部と、メモリ保存部と、メモリ復元部と、を備えている。第１格納部は、複数の仮想マシン毎にメモリ内容を格納可能なものである。メモリ情報生成管理部は、メモリ内容を複数に分割した分割メモリ内容を識別するためのメモリ識別子を生成して第１格納部に保存し、メモリ内容をメモリ識別子により分割して管理する。第２格納部は、第１格納部よりアクセス速度が遅いものである。メモリ保存部は、一つの仮想マシンがサスペンドされると、第１格納部に格納された一つの仮想マシンの全てのメモリ識別子と、分割メモリ内容とを取得し、取得したメモリ識別子と、分割メモリ内容と、を第２格納部に保存する。メモリ復元部は、一つの仮想マシンがレジュームされると、第１格納部に格納されたメモリ識別子と第２格納部に格納されたメモリ識別子とを比較し、第１格納部に存在しないメモリ識別子に応じた分割メモリ内容を第２格納部から読み込み、読み込んだ分割メモリ内容と、第１格納部に存在するメモリ識別子に応じた分割メモリ内容と、から一つの仮想マシンの前記メモリ内容を復元する。
【０００８】
このような構成によれば、他の仮想マシンで使用しているメモリ内容で同じものがあればそれが使用され、アクセス速度の遅い第２格納部よりメモリ内容を読み込むことがなくなるという働きにより、仮想マシンをレジュームする時間を短縮するという効果を奏する。
このメモリ内容復元装置では、たとえば、ある仮想マシンの第１格納部で新しいアドレスが使用されると、メモリ情報生成管理部でそのメモリ内容を分割した分割メモリ内容を識別するためのメモリ識別子が生成され、生成されたメモリ識別子が第１格納部に格納され、メモリ識別子によりメモリ内容が分割して管理される。
【０００９】
このような構成によれば、新しく使用されるメモリ領域に対して新しいメモリ識別子を割り当て、メモリ内容の比較にメモリ識別子を用いることが可能となるという働きにより、レジュームにおけるメモリ内容比較を短縮することができ、結果、仮想マシンのレジューム時間を短縮するという効果を奏する。
そして、仮想マシンがサスペンドされると第１格納部からメモリ識別子により分割メモリ内容を取得し、メモリ識別子と、分割メモリ内容とが、アクセス速度が遅い第２格納部に保存される。これにより、サスペンドされた仮想マシンが占有していた領域が開放され使用可能になる。
【００１０】
このような構成によれば、第１格納部におけるメモリ識別子とメモリ内容が第２格納部に保存され第１格納部から削除されるという働きにより、別の仮想マシンをレジュームすることが可能になるという効果を奏する。
そしてレジュームされると、サスペンドしていない第１格納部に格納されたメモリ識別子と第２格納部に格納されたメモリ識別子とを比較し、第１格納部に存在しない分割メモリ内容を第２格納部から読み込み、読み込んだ分割メモリ内容と、第１格納部にある分割メモリ内容と、から一つの仮想マシンのメモリ内容を復元する。
【００１１】
このような構成によれば、他の可能マシンで使用しているメモリ内容で同じものがあればそれが使用され、アクセス速度の遅い第２格納部よりメモリ内容を読み込むことがなくなるという働きにより、仮想マシンをレジュームする時間を短縮するという効果を奏する。
ここでは、仮想マシンのメモリ内容を分割メモリ内容に分割して管理し、レジューム時には、第１格納部にない分割メモリ内容だけをアクセス速度が遅い第２格納部から読み込んでメモリ内容を復元している。このため、アクセス速度が遅い第２格納部にメモリ内容を格納してもレジューム時間を短縮できるようになる。
【００１２】
なお、本願に開示するメモリ内容復元装置の構成要素または構成要素の任意の組合せを、方法、情報処理装置などの各種装置、回路、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも、他の態様として有効である。
【発明の効果】
【００１３】
開示されたメモリ内容復元装置、メモリ内容復元方法及びメモリ内容復元プログラムでは、メモリ内容を分割メモリ内容に分割して管理し、レジューム時には、第１格納部にない分割メモリ内容だけをアクセス速度が遅い第２格納部から読み込んでメモリ内容を復元している。このため、アクセス速度が遅い第２格納部にメモリ内容を格納してもレジューム時間を短縮できるようになる。
【発明を実施するための最良の形態】
【００１４】
＜第１実施形態＞
図１において、第１実施形態によるメモリ内容分復元装置３０（図３）は、ネットワーク１０に接続されたコンピュータ１２でメモリ内容復元プログラムにより動作する。メモリ内容復元プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭやフレキシブルディスクなどの記録媒体に格納された状態で頒布される。コンピュータ１２は、ハイパーバイザ上で複数の仮想マシンが動作するように構成されている。メモリ内容復元プログラムは、図７に示すように，複数の仮想マシン３０ａ，３０ｂ，３０ｃ・・・が動作するコンピュータ１２上で、たとえばバックグラウンドで動作し、仮想マシン３０ａ，３０ｂ，３０ｃ・・・のレジューム時のレジューム時間を短縮するために使用される。
【００１５】
コンピュータ１２のハードウェアは、図２に示すように、ＣＰＵ２４，ＲＯＭ２５，ＲＡＭ２６，I／Ｏ  ＩＦ（入出力インターフェイス）２７がマザーボード上に搭載されたコンピュータ本体１６と、コンピュータ本体１６とI／Ｏ  ＩＦ２７により接続された、キーボード１７及びマウス１８を含む操作部１９と、ネットワーク接続用のＬＡＮカード２０と、ハードディスク２１と、モニタ２２と、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体を用いてプログラムのインストールなどに使用するためのディスクドライブ２３と、で構成されている。コンピュータ１２には、ＯＳとして、たとえば、Ｗｉｎｄｏｗｓ  ＸＰ（登録商標）が搭載されている。
【００１６】
＜メモリ内容復元装置の構成＞
メモリ内容復元装置３０の機能構成（メモリ内容復元プログラムの構成）は、図３に示すように、複数の仮想マシン３０ａ，３０ｂ，３０ｃ・・・（図７）毎にメモリ内容ＭＣを格納可能な第１格納部としての高速で揮発性を有する記憶素子であるＲＡＭ２６と、仮想マシンの動作中に第１メモリ情報ＦＭＩを生成し、ＲＡＭ２６内のメモリ内容ＭＣを分割して管理するメモリ情報生成管理部４０と、ＲＡＭ２６よりアクセス速度が遅い第２格納部としての不揮発性を有する記憶素子であるハードディスク（ＨＤ）２１と、仮想マシンのレジュームまでにメモリ内容ＭＣをハードディスク２１に保存するメモリ保存部４１と、仮想マシンのレジューム時にメモリ内容ＭＣを復元するメモリ復元部４２と、を備えている。
【００１７】
メモリ情報生成管理部４０は、メモリ内容ＭＣを所定の分割単位（たとえば、物理メモリフレームの単位である４Ｋバイト）毎に複数の分割メモリ内容ＤＭＣに分割して管理する。メモリ情報生成管理部４０は、分割メモリ内容ＤＭＣを識別するためのメモリ識別子ＩＤ１を含む第１メモリ情報ＦＭＩを生成してＲＡＭ２６に保存する。
メモリ情報生成管理部４０は、第１メモリ情報生成部５０と、第１メモリ情報生成部５０を制御する第１メモリ情報生成制御部５１と、メモリ識別子ＩＤ１を管理制御するメモリ情報管理制御部５２と、メモリ内容ＭＣを監視するメモリ監視部５３と、を有している。
【００１８】
第１メモリ情報生成部５０はメモリ監視部５３から新しいアドレスの使用やメモリ内容ＭＣの変更等が通知されると、新しいメモリ識別子ＩＤ１を作成する。また、第１メモリ情報生成部５０は、新しいメモリ識別子ＩＤ１を生成すると、第１メモリ情報生成制御部５１により制御されて、メモリ識別子ＩＤ１を元に、図８に示した第１メモリ情報ＦＭＩを生成する。
【００１９】
第１メモリ情報ＦＭＩは、メモリ内容ＭＣを４Ｋバイト毎に分割した分割メモリ内容ＤＭＣでメモリ内容ＭＣを管理するためのものである。生成された第１メモリ情報ＦＭＩは、第１メモリ情報生成制御部５１によりＲＡＭ２６内に保存される。第１メモリ情報ＦＭＩは、図８に示すように、分割された分割メモリ内容ＤＭＣを識別するためのメモリ識別子ＩＤ１と、分割メモリ内容ＤＭＣのハッシュ値と、更新日付と、仮想マシンを識別するためのマシン識別子ＩＤ２と、分割メモリ内容ＤＭＣの先頭のアドレス値を示すメモリアドレスと、分割メモリ内容ＤＭＣのサイズを示すサイズとから構成されている。なお、この実施形態では、分割メモリ内容ＤＭＣのサイズは前述したように、４Ｋバイトである。この実施形態では、サイズは４Kバイト固定であるが、分割メモリ内容ＤＭＣをまとめて管理することで、分割サイズを４Kバイトの倍数として管理することも可能である。また、アドレスは、ＲＡＭ２６におけるアドレスを示すのではなく、仮想マシンが動作するときに認識している仮想的な物理メモリのアドレスを示す。
【００２０】
メモリ情報管理制御部５２は、生成したメモリ識別子ＩＤ１が重複していないか管理したり、メモリ内容が重複する異なるメモリ識別子ＩＤ１が見つかると、メモリ識別子ＩＤ１を統合したりする。また、メモリ情報管理制御部５２は、メモリ識別子ＩＤ１の使用状況を管理するために、使用済みのメモリ識別子ＩＤ１の管理テーブルを有している。
ＲＡＭ２６には、図７に示すように、ＲＡＭ２６内に格納された仮想マシン毎のメモリ内容ＭＣと、前述した第１メモリ情報ＦＭＩとが格納されている。
【００２１】
メモリ保存部４１は、一つの仮想マシンのレジュームまでに（たとえば、サスペンド時に）、ＲＡＭ２６に格納された仮想マシンの全ての第１メモリ情報ＦＭＩと、分割メモリ内容ＤＭＣとを取得し、レジュームイメージＲＩを生成する。
レジュームイメージＲＩは、分割メモリ内容ＤＭＣをハードディスク２１に格納するための第２メモリ情報ＳＭＩと、分割メモリ内容ＤＭＣを含む分割メモリイメージＤＭＩと、仮想マシンの状態を表す情報とが含まれる。仮想マシンの状態を表す情報としては、サスペンド時のＣＰＵ２４の状態（レジスタの値）やハードディスク２１等のデバイスの状態（レジューム後にすぐに動作できるだけの情報）が含まれる。メモリ保存部４１は、生成されたレジュームイメージをハードディスク２１に保存する。
【００２２】
メモリ保存部４１は、図５に示すように、メモリ保存処理を制御するメモリ保存制御部５５と、第２メモリ情報ＳＭＩを生成する第２メモリ情報生成部５６と、レジュームイメージＲＩのうちの分割メモリイメージＤＭＩを作成するメモリイメージ作成部５７と、を有している。また、ハードディスク２１の読み出し・書き込みを制御するＲ／Ｗ制御部５８を有している。
【００２３】
第２メモリ情報ＳＭＩは、第１メモリ情報ＦＭＩを元に第２メモリ情報生成部５６で生成される。第２メモリ情報ＳＭＩの一例を図９に示す。図９では、第２メモリ情報ＳＭＩは、第１メモリ情報ＦＭＩの構成のうち、メモリアドレスとサイズに代えて、分割メモリイメージＤＭＩがハードディスク２１上のどの場所にあるかを示す分割メモリインデックスＤＭＩＮＤＸを有している。なお、第２メモリ情報ＳＭＩと分割メモリイメージＤＭＩとを分けてハードディスク２１に格納する場合は、メモリ識別子ＩＤ１と分割メモリイメージＤＭＩとを対応付けるために分割メモリイメージインデックスＤＭＩＮＤＸが必要である。しかし、第２メモリ情報ＳＭＩと分割メモリイメージＤＭＩとを分けないで、個々の第２メモリ情報ＳＭＩに続いて分割メモリイメージＤＭＩを格納する場合は、分割メモリインデックスＤＭＩＮＤＸは不要である。
【００２４】
分割メモリイメージＤＭＩの一例を図１０に示す。図１０では、分割メモリイメージＤＭＩは、第１メモリ情報ＦＭＩに含まれる、メモリ識別子ＩＤ１、メモリアドレス、及びサイズと、分割メモリ内容ＤＭＣとで構成されている。分割メモリイメージＤＭＩは、前述したようにメモリイメージ作成部５７で作成される。作成された第２メモリ情報ＳＭＩ及び分割メモリイメージＤＭＩは、Ｒ／Ｗ制御部６３を介してハードディスク２１に分けて保存される。ここで、アドレスは、ＲＡＭ２６におけるアドレスを示すのではなく、仮想マシンが動作するときに認識している仮想的な物理メモリのアドレスを示す。
【００２５】
ハードディスク２１には、第２メモリ情報ＳＭＩ及び分割メモリイメージＤＭＩを含むレジュームイメージＲＩがファイルの形式で格納されている。第２メモリ情報ＳＭＩ、分割メモリイメージＤＭＩは、レジュームイメージＲＩと同じファイルとしてもよいし、別のファイルとして格納してもよい。
メモリ復元部４２は、一つの仮想マシンのレジューム時に、ＲＡＭ２６に格納された残りの仮想マシンの第１メモリ情報ＦＭＩに含まれるメモリ識別子ＩＤ１と、ハードディスク２１に格納された第２メモリ情報ＳＭＩのメモリ識別子ＩＤ１とを比較し、残りの仮想マシンにない分割メモリイメージＤＭＩをハードディスク２１から読み込み、読み込んだ分割メモリイメージＤＭＩの分割メモリ内容ＤＭＣと、残りの仮想マシンで管理された分割メモリ内容ＤＭＣと、から一つの仮想マシンのメモリ内容ＭＣを復元する。
【００２６】
メモリ復元部４２は、図６に示すように、メモリ復元処理を制御するメモリ復元制御部６０と、メモリ識別子ＩＤ１を残りの仮想マシンの第１メモリ情報から検索する識別子検索部６１と、メモリ内容を復元するメモリ内容作成部６２と、を有している。また、ハードディスク２１の読み出し・書き込みを制御するＲ／Ｗ制御部６３を有している。
復元制御部６０は、レジューム操作がなされると、Ｒ／Ｗ制御部６３を制御して、ハードディスク２１から第２メモリ情報ＳＭＩを読み込ませ、そのメモリ識別子ＩＤ１を識別子検索部６１に送る。識別子検索部６１は、ＲＡＭ２６から第１メモリ情報ＳＭＩを読み込んで２つのメモリ識別子ＩＤ１を比較する。メモリ内容作成部６２は、識別子検索部６１の比較結果をもとに、ハードディスク２１から残りの仮想マシンにないメモリ識別子ＩＤ１に対応する分割メモリイメージＤＭＩを読み込み、読み込んだ分割メモリイメージＤＭＩから分割メモリ内容ＤＭＣを取り出し、残りの仮想マシンにあるメモリ内容をＲＡＭ２６のメモリ内容ＭＣから読み込んで、レジュームした仮想マシンのメモリ内容を生成し、ＲＡＭ２６に書き込み、仮想マシンのメモリ内容を復元する。
【００２７】
＜メモリ内容復元装置の動作＞
図１１〜図１４に示すフローチャートに基づき、メモリ内容復元装置３０の動作について説明する。
メモリ内容復元装置３０は、仮想マシンのメモリ内容を管理するメモリ情報生成管理処理、仮想マシンをサスペンドするメモリ保存処理、仮想マシンをレジュームするメモリ復元処理を行う。図１１は、これら３つの処理を制御する一例を示す。図１１において、ステップＳ１では、メモリ情報生成管理部４０による図１２に示すメモリ情報生成管理処理が実行される。ステップＳ２では、サスペンドの指示がなされたか否かを判断する。サスペンドの指示は、たとえば、仮想マシンを使用しているユーザが仮想マシン上のＯＳにてサスペンドを指示する、または、仮想マシンを管理している管理者が仮想マシンをサスペンドするようコンソールにおいてコマンドを実行したり、ＧＵＩなどを用いて指示する。ステップＳ３では、レジュームの指示がなされたか否かを判断する。レジュームの指示は、たとえば、仮想マシンを管理している管理者が仮想マシンをレジュームするようコンソールにおいてコマンドを実行したり、ＧＵＩなどを用いて指示する。そしてステップＳ１に戻る。これらの処理を繰り返し行う。サスペンドの指示がなされると、ステップＳ２からステップＳ４に移行し、図１３に示すメモリ保存処理を実行する。レジュームが指示されるとステップＳ３からステップＳ５に移行し、図１４に示すメモリ復元処理を実行する。
【００２８】
＜メモリ情報生成管理処理＞
メモリ情報の生成は、仮想マシンによって新たに、あるアドレスから始まるメモリ領域が使用されたり、メモリ内容ＭＣが変更されたりするとなされる。メモリ情報の生成管理処理について、図１２に示すフローチャートに基づいて説明する。
図１２に示すメモリ情報生成管理処理では、ステップＳ１０において、メモリ監視部５３がＲＡＭ２６内の新たにあるアドレスから始まるメモリ領域が使用されたか否かを判断する。仮想マシンは、メモリ領域の使用を開始する場合には、ページテーブルを作成する。このページテーブル作成時に、新たにメモリ領域が使用されたと判断する。ステップＳ１１では、メモリ監視部５３がＲＡＭ２６内のメモリ内容ＭＣが仮想マシンの動作により変更されたか否かを判断する。メモリ内容ＭＣが変更されたか否かの検出には、たとえば、ＲＡＭ２６への書き込みに対してページフォルト、すなわち、ＣＰＵが要求した論理ページがＲＡＭ２６上にないページであるときに、発生する割込みが発生するように、ページテーブルを構成する。そして、ページフォルトが発生すると、メモリ内容ＭＣが変更されたと判断するようにすればよい。
【００２９】
ステップＳ１２では、メモリ情報管理制御部５２がＲＡＭ２６内にメモリ内容ＭＣが同じでメモリ識別子ＩＤ１が異なるものがあるか否かを判断する。
ここでは、ステップＳ１０、ステップＳ１１、ステップＳ１２が順番に、判定されるように説明しているが、これらの判定処理は、並列に行うことが可能である。また、ステップＳ１０、ステップＳ１１は、メモリ監視部５３によって、新たにメモリを使用したり、メモリに変更があった際に、その都度、判定されて処理を行うこともできる。ステップＳ１２は、仮想マシンによる処理が行われていない場合（仮想マシンがＨＬＴしている）にのみ判定を行ったり、定期的（１秒間に１回など）に判定を行ったりといった形で行うことも可能である。
【００３０】
新たなアドレスが使用されたと判断するとステップＳ１０からステップＳ１３に移行しメモリ生成処理を行う。ステップＳ１３では、第１メモリ情報生成部５０が新たなメモリ識別子ＩＤ１を生成する。すると、ステップＳ１４でメモリ情報管理制御部５２が全ての仮想マシンの第１メモリ情報ＦＭＩ内のメモリ識別子ＩＤ１をチェックする。同じメモリ識別子ＩＤ１が存在すると、ステップＳ１３に戻り、違うメモリ識別子ＩＤ１を第１メモリ情報生成部５０に生成させる。したがって、違うメモリ識別子ＩＤ１が生成されるまでステップＳ１３及びステップＳ１４の処理を繰り返す。
【００３１】
生成されたメモリ識別子ＩＤ１が他のメモリ識別子ＩＤ１と異なる場合はステップＳ１５に移行する。ステップＳ１５では、第１メモリ情報生成部５０が、分割メモリ内容ＤＭＣのハッシュ値を計算し、図８に示したような第１メモリ情報ＦＭＩを生成しＲＡＭ２６に書き込み、ステップＳ１１に移行する。
メモリ内容ＭＣが変更されている場合には、メモリ変更の検出後、どの仮想マシンのメモリ内容に対するメモリ変更であるかをメモリ監視部５３にて確認し、第１メモリ情報ＦＭＩのどのメモリ識別子ＩＤ１が変更の対象となるかを、メモリ情報管理制御部５２へ通知する。そしてステップＳ１１からステップＳ１６に移行してメモリ変更処理を行う。ステップＳ１６では、メモリ情報管理制御部５２が、上記ステップＳ１３と同様に新たなメモリ識別子ＩＤ１を生成する。ステップＳ１７では、ステップＳ１４と同様にメモリ情報管理制御部５２が全ての仮想マシンの第１メモリ情報ＦＭＩ内のメモリ識別子ＩＤ１をチェックする。そして、違うメモリ識別子ＩＤ１が生成されるまでステップＳ１６及びステップＳ１７の処理を繰り返す。
【００３２】
このとき、他に同じメモリ識別子ＩＤ１を使用している仮想マシンがないことが確認されるため、今後メモリ変更が発生してもメモリ識別子ＩＤ１の変更は必要ないと判断し、メモリ監視部５３における監視対象から外すことも可能である。これにより、メモリ変更時にページフォルトなどによって検知する必要がなくなり、メモリ監視による仮想マシンへのオーバーヘッドを軽減することが可能となる。
【００３３】
生成されたメモリ識別子ＩＤ１が他のメモリ識別子ＩＤ１と異なる場合はステップＳ１７からステップＳ１８に移行してメモリ情報変更処理を行う。ステップＳ１８では、第１メモリ情報生成部５０が、変更された分割メモリ内容ＤＭＣのハッシュ値を計算し第１メモリ情報ＦＭＩを変更してＲＡＭ２６に書き込む。なお、メモリ監視部による監視対象から外す場合には、ハッシュ値が分割メモリ内容ＤＭＣの内容と一致しなくなるため、ハッシュ値は無効な値（たとえば、すべて０）に設定しておく。そして、ステップＳ１２に移行する。
【００３４】
メモリ内容ＭＣが同じで異なるメモリ識別子ＩＤ１が割り振られているものがある場合には、ステップＳ１２からステップＳ１９に移行する。なお、メモリ内容ＭＣの相違を判断する場合には、まず、第１メモリ情報ＦＭＩに含まれるハッシュ値を比較し、ハッシュが同じもののメモリ内容ＭＣを読み出して、メモリ内容ＭＣの全部が同じか否かを判断する。これにより、最初からメモリ内容ＭＣ同士を比較する場合に比べてメモリ内容ＭＣの比較処理を短縮できる。メモリ情報の比較対象として、サスペンド中の仮想マシンの第２メモリ情報ＳＭＩを対象とすることも可能である。そのときは、Ｒ／Ｗ制御部によりハードディスクから第２メモリ情報ＳＭＩを読み込みハッシュ値を比較する。ハッシュ値が同じ場合は、Ｒ／Ｗ制御部によりハードディスクから分割メモリイメージＤＭＩを読み込み、分割メモリ内容ＤＭＣを取得し、メモリ内容ＭＣと同じか否かを判断する。
【００３５】
ここでは、第１メモリ情報ＦＭＩどうし、もしくは、第１メモリ情報ＦＭＩと第２メモリ情報ＳＭＩとの比較を説明しているが、第２メモリ情報ＳＭＩどうしの比較も可能である。
ステップＳ１９では、片方のメモリ識別子ＩＤ１を変更する。この処理はメモリ情報管理制御部５２で行われる。このとき、更新日時は、統合を行った日時に変更するのではなく、統合したメモリ情報の更新日時に変更する。これにより、第１メモリ情報ＦＭＩのうち、メモリ識別子ＩＤ１と、ハッシュ値と、更新日時は、同じものになる。
【００３６】
上述のように、メモリ統合処理の契機について、特に限定はない。例えば、ある一定周期で行ったり、仮想マシンの動作に影響しないように、コンピュータ１２における仮想マシンの稼働率から処理を行うタイミングを決めたりすることもできる。統合処理が開始されると、ある仮想マシンの第１メモリ情報ＦＭＩのメモリ識別子ＩＤ１を統合対象として選択し、そのメモリ識別子ＩＤ１に対応する分割メモリ内容ＤＭＣと同じ内容の分割メモリ内容ＤＭＣがないか比較する。比較の結果、同じ内容の分割メモリ内容ＤＭＣが見つかれば、前述したように、ステップＳ１９で対応するメモリ識別子ＩＤ１と対象としたメモリ識別子ＩＤ１とで片方のメモリ識別子ＩＤ１と統合を行う。分割メモリ内容ＤＭＣの比較方法、メモリ識別子ＩＤ１の統合方法は、後に詳細に述べるが、例えば、分割メモリ内容ＤＭＣは全内容比較し、メモリ識別子ＩＤ１は小さい値へと統合するという方法が考えられる。
【００３７】
ステップＳ２０では、第１メモリ情報ＦＭＩへメモリ識別子ＩＤ１と更新日時の変更を反映する。
以上がメモリ識別子ＩＤ１の統合の一連の流れである。メモリ識別子ＩＤ１の統合によって、統合対象となったメモリ識別子ＩＤ１の数は減っていくが、完全になくなることはない。そのため、この統合処理はずっと動作することになる。また、仮想マシンの数に応じて統合対象が増えることが考えられ、統合処理にかかる時間が多くなる可能性がある。そこで、同じメモリ識別子ＩＤ１が割り振られている分割メモリ内容ＤＭＣのメモリ識別子ＩＤ１の個数に対する割合などから判断して統合処理を休止することも可能である。休止や再開の条件は、上記に限定されるものではない。
【００３８】
メモリ識別子ＩＤ１の統合方法としては、番号の小さいメモリ識別子へ統合、メモリに存在し続けているメモリ識別子へ統合、使用頻度の高いメモリ識別子へ統合、変更回数の少ないメモリ識別子へ統合等も考えられる。
番号の小さいメモリ識別子へ統合する方法は、単純な方法である。しかし、メモリ識別子を割り振る際に、小さい番号から割り振っていくことで、より小さいメモリ識別子へと統合すれば、最終的には、最小のメモリ識別子に行き着くという方法であり、統合に終りがあることが特徴である。
【００３９】
メモリ（ＲＡＭ２６）に存在し続けているメモリ識別子へ統合する方法は、より多くの時間メモリに存在しているメモリ識別子に統合することにより、レジューム時にそのメモリ識別子がメモリに存在していることを期待する方法である。ディスクなどに保存されているメモリイメージの比較時には、どちらのメモリ識別子へ統合するか別途方法が必要となるが、第２メモリ情報ＳＭＩにメモリ（ＲＡＭ２６）に存在していた期間やサスペンドした時間などを記録することで、それら期間や時間の比較によって統合するメモリ識別子を選択することが考えられる。また、期間を、仮想マシンとして動作中にメモリ識別子を統合された場合に、統合したメモリ識別子の情報を引き継ぐ(期間をそのまま複製したり、両メモリ識別子の期間を足し合わせたり、両メモリ識別子の期間の平均をとったりするなど)ことで、メモリに存在し続けているという状態をサスペンド中にも考慮することが可能である。
【００４０】
使用頻度の高いメモリ識別子へ統合する場合、仮想マシンで使用される回数が多いということは、よりメモリに存在している可能性が高いということを示している。メモリ識別子の使用回数をカウントしておき、それを元にメモリ識別子を統合する。ディスクなどに保存されているメモリイメージの比較時のために、メモリ識別子の使用回数は、ハイパーバイザや管理用仮想マシンだけでなく、ディスクなどに保存されているメモリイメージを比較している箇所でも参照できる必要がある。
【００４１】
変更回数の少ないメモリ識別子へ統合する場合、変更回数の少ないメモリ識別子とは、メモリ識別子が変わることが少ないことを意味している。まったく変更がなければ、そのメモリ識別子はずっと同じで居続ける可能性もある。このことから、変更回数の少ないメモリ識別子へ統合されるということは、変更されるメモリ内容もそのまま変更されないものとなり、変更回数の少ないメモリ識別子を活用して、あらかじめレジュームする仮想マシンにそのメモリ識別子のメモリ内容を用意しておくなどの制御にも利用できる。
【００４２】
＜メモリ保存処理＞
仮想マシンのサスペンドは、仮想マシンを停止し、ＣＰＵやデバイスの状態、および、メモリ内容ＭＣを含めてレジュームイメージをハードディスク２１に保存することで行われる。ハードディスク２１への保存が終わると、ＲＡＭ２６内の第１メモリ情報ＦＭＩ及びメモリ内容ＭＣは消去される。メモリ内容ＭＣの保存処理について、図１３に示すフローチャートに基づいて説明する。
【００４３】
サスペンドと判断されると、図１３のステップＳ３１で、第２メモリ情報生成部５６がＲＡＭ２６内の第１メモリ情報ＦＭＩを、たとえばメモリ識別子ＩＤ１が小さいものから順に取得する。ステップＳ３２では、取得した第１メモリ情報ＦＭＩを元にして、ハードディスク２１にメモリ内容を保存するための図９に示す第２メモリ情報ＳＭＩを作成し、Ｒ／Ｗ制御部５８を介してハードディスク２１に保存する。ステップＳ３３では、メモリイメージ作成部５７が第１メモリ情報ＦＭＩに該当するメモリ内容ＭＣの一部をＲＡＭ２６から取得する。ステップＳ３４では、メモリイメージ作成部５７が取得したメモリ内容ＭＣの一部から図１０に示す分割メモリイメージＤＭＩを作成し、Ｒ／Ｗ制御部５８を介してハードディスク２１に保存する。ステップＳ３５では、サスペンドして仮想マシンのすべてのメモリ識別子ＩＤ１に対して分割メモリイメージＤＭＩの保存処理が終了したか否かを判断し、保存していない場合は、ステップＳ３１に戻り、次のメモリ識別子ＩＤ１の第１メモリ情報ＦＭＩを取得する。サスペンドした仮想マシンの全てのメモリ識別子ＩＤ１に応じた分割メモリイメージＤＭＩの保存が終了するとメインルーチンに戻る。
【００４４】
なお、保存処理では、レジュームイメージＲＩを構成するその他のデータ（たとえばＣＰＵの状態やデバイスの状態等）もハードディスクに保存されるが、その点については説明を省略する。
＜メモリ復元処理＞
仮想マシンのレジュームは、レジュームイメージから、サスペンド時のＣＰＵやデバイスの状態、およびメモリ内容を復元し、仮想マシンを再開することで行われる。
【００４５】
このメモリ復元処理の概略処理動作を、レジューム動作を模式化した図７により説明する。図７において、仮想マシン３０ａのレジュームが始まると、ハードディスク２１内の第２メモリ情報ＳＭＩが読み込まれ、読み込まれた第２メモリ情報ＳＭＩに含まれるメモリ識別子ＩＤ１と同じものが、その他の仮想マシン３０ｂ，３０ｃの第１メモリ情報ＦＭＩに含まれるメモリ識別子ＩＤ１にあるか否かを判断して、同じものについては、その他の仮想マシン３０ｂ，３０ｃからのメモリ内容で仮想マシン３０ａのメモリ内容を生成する。たとえば、図７では、仮想マシン３０ｂにメモリ識別子ＩＤ１「０」，「１」があり、仮想マシン３０ｃにメモリ識別子「４」があるので、それに対応する分割メモリ内容ＤＭＣで仮想マシン３０ａの分割メモリ内容ＤＭＣ「０」，「１」，「４」を作成する。そして、その他の仮想マシン３０ｂ，３０ｃに存在しないメモリ識別子ＩＤ１「５」の分割メモリ内容ＤＭＣだけをハードディスク２１から読み込み、分割メモリ内容ＤＭＣ「５」を作成する。
【００４６】
レジューム時には、ＣＰＵやデバイスの状態を示す情報も読み込まれるが、それらの説明を省略する。
次に、メモリ内容復元処理について図１４に示すフローチャートに基づいて具体的に説明する。
仮想マシンのレジュームにより、メモリ内容を復元するようメモリ復元制御部６０が呼び出される。レジュームする仮想マシンの第２メモリ情報ＳＭＩをＲ／Ｗ制御部６３がハードディスク２１から、たとえばメモリ識別子ＩＤ１が小さいものから順に読み込み、読み込んだ第２メモリ情報ＳＭＩのメモリ識別子ＩＤ１を識別子検索部６１に渡す。識別子検索部６１では、ステップＳ４１で第２メモリ情報ＳＭＩにおけるメモリ識別子ＩＤ１と同じメモリ識別子ＩＤ１が、稼働中のその他の仮想マシンの第１メモリ情報ＦＭＩを一つずつ読み出して第１メモリ情報ＦＭＩのメモリ識別子ＩＤ１にあるか否か検索する。このとき、メモリ識別子ＩＤ１がおなじでも、更新日時が異なるものは同じではないと判断する。
【００４７】
仮想マシン用のメモリ内容ＭＣの格納方法としては、例えば、新たに領域を確保して、内容をコピーする方法や、同じ物理メモリを共用するように、ページマップを設定する方法が考えられる。しかしながら、同じメモリ識別子のメモリ内容ＭＣの作成方法が、これら方法に限定されるわけではない。
その他の仮想マシンの第１メモリ情報ＦＭＩ内に読み込んだ第２メモリ情報ＳＭＩと同じメモリ識別子ＩＤ１がある場合は、ステップＳ４２に移行する。ステップＳ４２では、メモリ内容作成部６２がＲＡＭ２６から同じメモリ識別子ＩＤ１の分割メモリ内容ＤＭＣを読み込み、メモリ内容ＭＣを作成し、そのメモリ識別子ＩＤ１の第１メモリ情報ＦＭＩを作成し、ステップＳ４５に移行する。
【００４８】
その他の仮想マシンの第１メモリ情報ＦＭＩ内に読み込んだ第２メモリ情報ＳＭＩと同じメモリ識別子ＩＤ１がない場合は、ステップＳ４３に移行する。ステップＳ４３では、メモリ識別子ＩＤ１が示す分割メモリ内容ＤＭＩをメモリ内容作成部６２がＲ／Ｗ制御部６３を介してハードディスク２１から読み込む。ステップＳ４４では、読み込んだ分割メモリイメージＤＭＩの分割メモリ内容ＤＭＣで仮想マシンのメモリ内容ＭＣを作成し、そのメモリ識別子ＩＤ１の第１メモリ情報ＦＭＩを作成し、ステップＳ４５に移行する。ステップＳ４５では、第２メモリ情報ＳＭＩに含まれる全てのメモリ識別子ＩＤ１に対する処理が終了したか否かを判断する。第２メモリ情報ＳＭＩに含まれる全てのメモリ識別子ＩＤ１に対する処理が終了していないと判断するとステップＳ４１に戻り、次のメモリ識別子ＩＤ１を含む第２メモリ情報ＳＭＩを読み込んで同じメモリ識別子ＩＤ１が第１メモリ情報ＦＭＩ内にあるか否かを判断する。レジュームした仮想マシンの全てのメモリ識別子ＩＤ１に応じたメモリ内容ＭＣの作成が終了するとメインルーチンに戻る。
【００４９】
ここでは、メモリ内容ＭＣを分割メモリ内容ＤＭＣに分割して管理し、レジューム時には、残りの仮想マシンにない分割メモリ内容ＤＭＣだけをアクセス速度が遅いハードディスク２１から読み込んでメモリ内容を復元している。このため、アクセス速度が遅いハードディスク２１にメモリ内容を格納してもレジューム時間を短縮できるようになる。
また、分割メモリ内容が同じメモリ識別子に対して同じメモリ識別子を割り振っているので、メモリ格納容量を削減可能になる。
【００５０】
さらに、第２メモリ情報ＳＭＩとして分割メモリイメージＤＭＩのハードディスク２１内の格納位置を示す分割メモリイメージインデックスＤＭＩＮＤＸを格納しているので、第２メモリ情報ＳＭＩと分割メモリイメージＤＭＩとを別々にハードディスク２１に格納しても、分割メモリイメージインデックスＤＭＩＮＤＸを参照することにより簡単に読み出すことができる。
【００５１】
＜第２実施形態＞
第２実施形態では、図１５に示すメモリ復元部１４２において、レジューム時の省電力化を図っている。
メモリ復元部１４２は、図１５に示すように、メモリ復元処理を制御するメモリ復元制御部１６０と、後述するリスト１及び２を作成するリスト作成部１６１と、メモリ内容を復元するメモリ内容作成部１６２と、を有している。また、ハードディスク２１の読み出し・書き込みを制御するＲ／Ｗ制御部１６３と、ハードディスク２１の電源をオンオフする電源制御部１６４と、を有している。ＲＡＭ１２６には、リスト１及びリスト２を格納するリスト格納部１６５が設けられている。
【００５２】
復元制御部１６０は、レジューム操作がなされると、Ｒ／Ｗ制御部１６３を制御して、ハードディスク２１から第２メモリ情報ＳＭＩを読み込ませ、そのメモリ識別子ＩＤ１をリスト作成部１６１に送る。このとき、ハードディスク２１を必要なときだけオンする。リスト作成部１６１は、ＲＡＭ１２６から第１メモリ情報ＦＭＩを読み込んで２つのメモリ識別子ＩＤ１を比較し、ハードディスク２１から読み出したメモリ識別子がＲＡＭ１２６に格納されたメモリ識別子ＩＤ１に存在しているリスト１と、存在していないリスト２とを作成し、ＲＡＭ１２６内のリスト格納部１６５に格納する。メモリ内容作成部１６２は、リスト１及びリスト２を参照し、リスト２にあるメモリ識別子ＩＤ１の分割メモリ内容ＤＭＣをハードディスク２１から読み込み、リスト１にある分割メモリ内容ＤＭＣをＲＡＭ１２６のメモリ内容ＭＣから読み込む。このときもハードディスク２１を必要なときだけオンする。そして、ハードディスク２１及びＲＡＭ１２６から読み込んだ分割メモリ内容ＤＭＣによりレジュームした仮想マシンのメモリ内容を生成し、ＲＡＭ１２６に書き込み、仮想マシンのメモリ内容を復元する。
【００５３】
具体的には、仮想マシンのレジュームにより、メモリ内容を復元するようメモリ内容作成部１６２が呼び出される。すると、図１６のステップＳ５１で電源制御部１６４がハードディスク２１の電源をオンする。ステップＳ５２では、ハードディスク２１から第２メモ情報ＳＭＩを全て読み込む。ステップＳ５３では、ハードディスク２１の電源をオフする。ステップＳ５４では、リスト作成部１６１により、ハードディスク２１から読み込んだ第２メモリ情報ＳＭＩに含まれるメモリ識別子ＩＤ１と、残りの仮想マシンのＲＡＭ１２６の第１メモリ情報ＦＭＩに含まれるメモリ識別子ＩＤ１とを比較し、前述したリスト１及び２を作成する。ステップＳ５５では、リスト２が存在するか否か、すなわち、ハードディスク２１から読み出したメモリ識別子ＩＤ１が残りの仮想マシンのメモリ識別子ＩＤ１にないものがあるか否かを判断する。
【００５４】
リスト２がある場合、つまり一部又は全てのメモリ識別子ＩＤ１が残りの仮想マシンの第１メモリ情報ＦＭＩに含まれない場合は、ステップＳ５５からステップＳ５６に移行し、ハードディスク２１の電源をオンする。ステップＳ５７では、リスト２に基づき、リスト２にあるメモリ識別子ＩＤ１に応じた分割メモリ内容ＤＭＣをハードディスク２１から全て読み込む。ステップＳ５８では、ハードディスク２１の電源をオフする。ステップＳ５９では、ハードディスク２１から読み込んだ分割メモリ内容ＤＭＣにより仮想マシンのメモリ内容ＭＣを生成する。ステップＳ６０では、リスト１に基づき、ＲＡＭ１２６から第２メモリ情報ＳＭＩのメモリ識別子ＩＤ１に応じた仮想マシンの分割メモリ内容ＤＭＣを読み込んでメモリ内容ＭＣを作成する。
【００５５】
リスト２がない場合、つまり全てのメモリ識別子ＩＤ１が残りの仮想マシンの第１メモリ情報ＦＭＩに含まれる場合は、ステップＳ６０にスキップし、リスト１に基づき、ＲＡＭ１２６から第２メモリ情報ＳＭＩのメモリ識別子ＩＤ１に応じた仮想マシンの分割メモリ内容を読み込んでメモリ内容ＭＣを作成する。
復元処理では、作成したメモリ内容ＭＣの個々の分割メモリ内容ＤＭＣに対応する第１メモリ情報ＦＭＩも作成する。
【００５６】
ここでは、ハードディスク２１に格納された第２メモリ情報ＳＭＩを読み込むとき及びハードディスク２１に格納された分割メモリ内容を読み込むときだけ、すなわち、ハードディスク２１へのアクセスが必要なときだけ、ハードディスク２１がオンさせているので、レジューム処理の省電力化を図ることができる。
＜第３実施形態＞
第１及び第２実施形態では、ハードディスク２１に第２メモリ情報ＳＭＩと分割メモリイメージＤＭＩと、を格納しているが、第２メモリ情報ＳＭＩと分割メモリイメージＤＭＩとを分けて格納してもよい。図１７において、メモリ復元部１４２及びＲＡＭ１２６の構成は、第２実施形態の図１５に示したものと同じ構成である。
【００５７】
第２メモリ情報ＳＭＩと分割メモリイメージＤＭＩとを格納する第２格納部は、分割メモリイメージＤＭＩを格納するハードディスク（第３格納部の一例）１２１と、第２メモリ情報ＳＭＩを格納する、ハードディスク１２１より容量が小さくがアクセス速度が速いフラッシュメモリ（ＦＭ）（第４格納部の一例）１２８とを有している。第２メモリ情報ＳＭＩは、分割メモリイメージＤＭＩに比べて容量が小さい。このため、容量が小さいフラッシュメモリ１２８に保存可能である。
【００５８】
復元制御部１６０は、レジューム操作がなされると、Ｒ／Ｗ制御部１６３を制御してフラッシュメモリ１２８から第２メモリ情報ＳＭＩを読み込ませ、そのメモリ識別子ＩＤ１をリスト作成部１６１に送る。このとき、フラッシュメモリ１２８を必要なときだけオンする。リスト作成部１６１は、ＲＡＭ１２６から第１メモリ情報ＳＭＩを読み込んで２つのメモリ識別子ＩＤ１を比較し、フラッシュメモリ１２８から読み出したメモリ識別子がＲＡＭ１２６に格納されたメモリ識別子ＩＤ１に存在しているリスト１と、存在していないリスト２とを作成し、ＲＡＭ１２６内のリスト格納部１６５に格納する。メモリ内容作成部１６２は、リスト１及びリスト２を参照し、リスト２にあるメモリ識別子ＩＤ１の分割メモリ内容ＤＭＣをハードディスク１２１から読み込み、リスト１にある分割メモリ内容ＤＭＣをＲＡＭ１２６のメモリ内容ＭＣから読み込む。このときはハードディスク２１を必要なときだけオンする。そして、ハードディスク１２１及びＲＡＭ１２６から読み込んだ分割メモリ内容ＤＭＣによりレジュームした仮想マシンのメモリ内容を生成し、ＲＡＭ１２６に書き込み、仮想マシンのメモリ内容を復元する。
【００５９】
具体的には、仮想マシンのレジュームにより、メモリ内容を復元するようメモリ復元制御部１６０が呼び出される。すると、図１８のステップＳ７１で電源制御部１６４がフラッシュメモリ１２８の電源をオンする。ステップＳ７２では、フラッシュメモリ１２８から第２メモリ情報ＳＭＩを全て読み込む。ステップＳ７３では、フラッシュメモリ１２８の電源をオフする。ステップＳ７４では、リスト作成部１６１により、フラッシュメモリ１２８から読み込んだ第２メモリ情報ＳＭＩに含まれるメモリ識別子ＩＤ１と、残りの仮想マシンのＲＡＭ１２６の第１メモリ情報ＦＭＩに含まれるメモリ識別子ＩＤ１とを比較し、前述したリスト１及び２を作成する。ステップＳ７５では、リスト２が存在するか否か、すなわち、フラッシュメモリ１２８から読み出したメモリ識別子ＩＤ１が残りの仮想マシンのメモリ識別子ＩＤ１にないものがあるか否かを判断する。
【００６０】
リスト２がある場合、つまり一部又は全てのメモリ識別子ＩＤ１が残りの仮想マシンの第１メモリ情報ＦＭＩに含まれない場合は、ステップＳ７５からステップＳ７６に移行し、ハードディスク１２１の電源をオンする。ステップＳ７７では、ハードディスク１２１が起動したか否かを判断する。起動していない場合には、起動するまでステップＳ７８に移行し、リスト１に基づき、ＲＡＭ１２６から第２メモリ情報ＳＭＩのメモリ識別子ＩＤ１に応じた仮想マシンの分割メモリ内容を読み込んでメモリ内容ＭＣの一部又は全部を作成する。これにより、ハードディスク１２１が起動するまでにメモリ内容ＭＣの一部を生成できる。
【００６１】
起動している場合は、ステップＳ７７からステップＳ７９に移行する。ステップＳ７９では、リスト２に基づき、リスト２にあるメモリ識別子ＩＤ１に応じた分割メモリ内容ＤＭＣをハードディスク１２１から全て読み込む。ステップＳ８０では、ハードディスク１２１の電源をオフする。ステップＳ８１では、ハードディスク１２１から読み込んだ分割メモリ内容ＤＭＣにより仮想マシンのメモリ内容ＭＣを生成する。ステップＳ８２では、リスト１に基づき、ＲＡＭ１２６から第２メモリ情報ＳＭＩのメモリ識別子ＩＤ１に応じた仮想マシンの分割メモリ内容ＤＭＣを読み込んでメモリ内容ＭＣを作成する。
【００６２】
リスト２がない場合、つまり全てのメモリ識別子ＩＤ１が残りの仮想マシンの第１メモリ情報ＦＭＩに含まれる場合は、ステップＳ８２にスキップし、リスト１に基づき、ＲＡＭ１２６から第２メモリ情報ＳＭＩのメモリ識別子ＩＤ１に応じた仮想マシンの分割メモリ内容を読み込んでメモリ内容ＭＣを作成する。
復元処理では、作成したメモリ内容ＭＣの個々の分割メモリ内容ＤＭＣに対応する第１メモリ情報ＦＭＩも作成する。
【００６３】
ここでは、フラッシュメモリ１２８に格納された第２メモリ情報ＳＭＩを読み込むとき及びハードディスク１２１に格納された分割メモリ内容を読み込むときだけ、すなわち、ハードディスク２１へのアクセスが必要なときだけ、フラッシュメモリ１２８及びハードディスク１２１をオンさせているので、レジューム処理の省電力化を図ることができる。しかも、分割メモリイメージＤＭＩより容量が小さくて済む第２メモリ情報ＳＭＩをハードディスク１２１より省電力でアクセス速度が速いフラッシュメモリ等の半導体不揮発性素子を採用しているので、さらにレジュームの省電力化と高速化を図ることができる。
【００６４】
＜他の実施形態＞
（ａ）前記実施形態では、メモリ内容ＭＣの分割単位として４Ｋバイトを採用したが、分割単位はこれに限定されない。たとえば、ＯＳのページングによるマップ単位の一つである２Ｍバイトであってもよい。このように、ＯＳがメモリを管理している単位に分割単位を揃えると、分割管理をしやすくなるが、分割単位としてＯＳがメモリを管理している単位に揃えなくてもよい。
【００６５】
（ｂ）前記実施形態では、新たなメモリ識別子ＩＤ１を生成すると、それと同じメモリ識別子があるか否かを判定している。この判定を省略するために、メモリ情報管理制御部５２が有している管理テーブルを参照し、第１メモリ情報生成部５０がメモリ識別子を生成するときに、管理テーブル内にある使用済みのメモリ識別子を割り振らないようにしてもよい。図１９は、メモリ識別子を数値とし、小さい値から使用する場合の管理テーブルの例である。使用済みメモリ識別子の現在値と、それより小さな値で使用されなくなったメモリ識別子の値のリストから構成される。使用されなくなったメモリ識別子とは、メモリ情報統合時に、統合された識別子のことである。
【００６６】
（ｃ）前記実施形態では、分割メモリイメージＤＭＩを格納する第２格納部としてハードディスクを開示したが、第２格納部は、ハードディスクに限定されず、比較的容量が大きい書き込み可能なものであればよく、たとえば、ＲＡＭディスクやプログラマブルＲＯＭ等の書き換え可能な半導体記憶素子や光ディスク駆動装置等の記憶装置やＮＦＳやＮＡＳなどのネットワークを介した記憶装置であってもよい。
【００６７】
（ｄ）前記第３実施形態では、アクセス速度が速い第４格納部としてフラッシュメモリを開示したが、第４格納部はフラッシュメモリに限定されない。たとえば、ＲＡＭディスクやプログラマブルＲＯＭ等の書き換え可能な半導体記憶素子やハードディスク、光ディスク駆動装置等の記憶装置、ＮＦＳやＮＡＳなどのネットワークを介した記憶装置でもよい。
【００６８】
（ｅ）前記３つの実施形態では、第１メモリ情報ＦＭＩと第２メモリ情報ＳＭＩとでデータ構成を変えているが、同じであってもよい。
（ｆ）第１メモリ情報ＦＭＩ及び第２メモリ情報ＳＭＩのデータ構成は前記実施形態に限定されるものではなく、少なくともメモリ識別子ＩＤ１と更新日時が含まれていればよい。たとえば、分割メモリ内容ＤＭＣの比較を容易にするためにハッシュ値を入れているが、ハッシュ値を入れなくてもよい。
【００６９】
＜付記＞
（付記１）
複数の仮想マシンが動作するコンピュータに設けられ、一つの仮想マシンのメモリ内容をレジューム時に復元するメモリ内容復元装置であって、
前記複数の仮想マシン毎に前記メモリ内容を格納可能な第１格納部と、
前記メモリ内容を複数に分割した分割メモリ内容を識別するためのメモリ識別子を生成して前記第１格納部に保存し、前記メモリ内容を前記メモリ識別子により分割して管理するメモリ情報生成管理部と、
前記第１格納部よりアクセス速度が遅い第２格納部と、
前記一つの仮想マシンがサスペンドされると、前記第１格納部に格納された前記一つの仮想マシンの全ての前記メモリ識別子と、前記分割メモリ内容とを取得し、取得した前記メモリ識別子と、前記分割メモリ内容と、を前記第２格納部に保存するメモリ保存部と、
前記一つの仮想マシンがレジュームされると、前記第１格納部に格納されたメモリ識別子と前記第２格納部に格納されたメモリ識別子とを比較し、前記第１格納部に存在しないメモリ識別子に応じた分割メモリ内容を前記第２格納部から読み込み、読み込んだ前記分割メモリ内容と、前記第１格納部に存在する前記メモリ識別子に応じた分割メモリ内容と、から前記一つの仮想マシンの前記メモリ内容を復元するメモリ復元部と、
を備えたメモリ内容復元装置。
【００７０】
（付記２）
前記メモリ情報生成管理部では、所定容量毎に前記メモリ内容を分割し、前記分割メモリ内容が同じものに対して同じメモリ識別子を生成する、付記１に記載のメモリ内容復元装置。
（付記３）
前記メモリ情報生成管理部は、前記メモリ識別子を含む第１メモリ情報を生成して前記第１格納部に格納し、
前記メモリ保存部は、前記メモリ識別子を含む第２メモリ情報を生成して前記第２格納部に保存する、付記１又は２に記載のメモリ内容復元装置。
【００７１】
（付記４）
前記メモリ保存部は、前記分割メモリ内容を含む分割メモリイメージを生成して前記第２格納部に保存する、付記３に記載のメモリ内容復元装置。
（付記５）
前記メモリ情報生成管理部及び前記メモリ保存部は、前記第１及び第２メモリ情報として、前記メモリ識別子に加えて、前記分割メモリ内容のハッシュ値と、前記分割メモリ内容の更新日時と、前記仮想マシンのマシン識別子と、を前記第１及び第２格納部に各別に保存する、付記４に記載のメモリ内容復元装置。
【００７２】
（付記６）
前記メモリ情報生成管理部は、前記第１メモリ情報として、前記分割メモリ内容の前記第１格納部上でのアドレス及びサイズをさらに前記第１格納部に保存する、付記４又は５に記載のメモリ内容復元装置。
（付記７）
前記メモリ保存部は、前記第２メモリ情報として、前記分割メモリイメージの前記第２格納部内の格納位置を示すメモリイメージインデックスをさらに前記第２格納部に保存する、付記４から６のいずれか１項に記載のメモリ内容復元装置。
【００７３】
（付記８）
前記メモリ保存部は、前記分割メモリイメージとして、前記分割メモリ内容に加えて、前記メモリ識別子と、前記アドレス及びサイズとを前記第２格納部に保存する、付記４から８のいずれか１項に記載のメモリ内容復元装置。
（付記９）
前記メモリ情報生成管理部は、前記メモリ識別子と前記更新日時の少なくともひとつが異なる場合、前記第１メモリ情報が異なると判断して前記第１メモリ情報を生成する、付記５から８のいずれか１項に記載のメモリ内容復元装置。
【００７４】
（付記１０）
前記メモリ復元部は、前記メモリ識別子と前記更新日時の少なくともひとつが異なる場合、前記第１メモリ情報と前記第２メモリ情報とが異なると判断して前記メモリ内容を復元する、付記５から９のいずれか１項に記載のメモリ内容復元装置。
（付記１１）
前記分割メモリ内容が同じで、前記メモリ識別子が異なるものが複数あるとき、前記メモリ識別子を統合するメモリ統合部をさらに備える、付記５から１０のいずれか１項に記載のメモリ内容復元装置。
【００７５】
（付記１２）
前記メモリ統合部は、前記第１メモリ情報を統合するとき、前記更新日時を変更しない、付記１１に記載のメモリ内容復元装置。
（付記１３）
前記メモリ復元部は、前記第２格納部に格納された前記第２メモリ情報を読み出した後に前記第２格納部をオフし、読み出した前記第２メモリ情報に含まれる前記メモリ識別子と、前記第１格納部に格納された前記第１メモリ情報に含まれるメモリ識別子とを比較し、前記読み出したメモリ識別子が前記第１格納部に格納されたメモリ識別子に存在している第１リストと、存在していない第２リストとを作成し、前記第２リストが存在するときに前記第２格納部をオンして前記第２リストにある前記メモリ識別子に対応する分割メモリイメージを前記第２格納部から読み出し、読み出した後に前記第２格納部をオフし、前記読み出した分割メモリイメージと、前記第１リストにある前記第１格納部に格納された分割メモリイメージと、から前記メモリ内容を復元する、付記４から１２のいずれか１項に記載のメモリ内容復元装置。
（付記１４）
前記第２格納部は、
前記分割メモリ内容を格納する第３格納部と、
前記メモリ識別子を格納する第４格納部と、を有する、付記１から１３のいずれか１項に記載のメモリ内容復元装置。
（付記１５）
前記第４格納部は、前記第３格納部に比べて容量が小さくかつアクセス速度が速い、記憶部である、付記１４に記載のメモリ内容復元装置。
（付記１６）
複数の仮想マシンが動作するコンピュータに設けられ、一つの仮想マシンのメモリ内容をレジューム時に復元するメモリ内容復元方法であって、
前記メモリ内容を分割した複数の分割メモリ内容を識別するためのメモリ識別子を生成して第１格納部に保存し、前記メモリ内容を前記メモリ識別子により分割して管理するメモリ情報生成管理ステップと、
一つの仮想マシンがサスペンドされると、前記第１格納部に格納された全ての前記メモリ識別子と、前記分割メモリ内容と、を取得し、取得した前記メモリ識別子と、前記分割メモリ内容と、を前記第１格納部よりアクセス速度が遅い第２格納部に保存するメモリ保存ステップと、
前記一つの仮想マシンがレジュームされると、前記第１格納部に格納されたメモリ識別子と前記第２格納部に格納されたメモリ識別子とを比較する比較ステップと、
前記第１格納部に存在しないメモリ識別子に応じた分割メモリ内容を前記第２格納部から読み込み、読み込んだ前記分割メモリ内容と、前記第１格納部に存在するメモリ識別子に応じた前記分割メモリ内容と、から前記一つの仮想マシンの前記メモリ内容を復元するメモリ復元ステップと、
を含む仮想マシンのメモリ内容復元方法。
【００７６】
（付記１７）
複数の仮想マシンが動作するコンピュータに設けられ、一つの仮想マシンのメモリ内容をレジューム時に復元するメモリ内容復元プログラムであって、
前記メモリ内容を分割した複数の分割メモリ内容を識別するためのメモリ識別子を生成して第１格納部に保存し、前記メモリ内容を前記メモリ識別子により分割して管理するメモリ情報生成管理機能と、
一つの仮想マシンがサスペンドされると、前記第１格納部に格納された全ての前記メモリ識別子と、前記分割メモリ内容と、を取得し、取得した前記メモリ識別子と、前記分割メモリ内容と、を前記第１格納部よりアクセス速度が遅い第２格納部に保存するメモリ保存機能と、
前記一つの仮想マシンがレジュームされると、前記第１格納部に格納されたメモリ識別子と前記第２格納部に格納されたメモリ識別子とを比較する比較機能と、
前記第１格納部に存在しないメモリ識別子に応じた分割メモリ内容を前記第２格納部から読み込み、読み込んだ前記分割メモリ内容と、前記第１格納部に存在するメモリ識別子に応じた前記分割メモリ内容と、から前記一つの仮想マシンの前記メモリ内容を復元するメモリ復元機能と、
を実現する仮想マシンのメモリ内容復元プログラム。
【産業上の利用可能性】
【００７７】
開示のメモリ内容復元装置は、ネットワークに接続されたコンピュータからアクセスされるサーバ機で複数の仮想マシンを動作させるのに好適である。
【図面の簡単な説明】
【００７８】
【図１】メモリ内容復元装置が動作するネットワークの構成を示すブロック図。
【図２】メモリ内容復元装置が動作するコンピュータのブロック図。
【図３】メモリ内容復元装置のソフトウェア構成を示すブロック図。
【図４】メモリ情報生成管理部のソフトウェア構成を示すブロック図。
【図５】メモリ保存部のソフトウェア構成を示すブロック図。
【図６】メモリ復元部のソフトウェア構成を示すブロック図。
【図７】仮想マシンのレジュームの処理内容を示す模式図。
【図８】第１メモリ情報のデータ構成を示す図。
【図９】第２メモリ情報のデータ構成を示す図。
【図１０】分割メモリイメージのデータ構成を示す図。
【図１１】メモリ内容復元装置のメインルーチンの処理内容を示すフローチャート。
【図１２】メモリ情報生成管理処理サブルーチンの処理内容を示すフローチャート。
【図１３】メモリ保存処理サブルーチンの処理内容を示すフローチャート。
【図１４】メモリ復元処理サブルーチンの処理内容を示すフローチャート。
【図１５】第２実施形態の図６に相当する図。
【図１６】第２実施形態の図１４に相当する図。
【図１７】第３実施形態の図６に相当する図。
【図１８】第３実施形態の図１４に相当する図。
【図１９】管理テーブルのデータ構成を示す図。
【符号の説明】
【００７９】
１２  コンピュータ
２１  ハードディスク（第２格納部の一例）
２６  ＲＡＭ（第１格納部の一例）
３０  メモリ内容復元装置
４０  メモリ情報生成管理部
４１  メモリ保存部
４２  メモリ復元部
１２１  ハードディスク（第３格納部の一例）
１２８  フラッシュメモリ（第４格納部の一例）
ＩＤ１  メモリ識別子
ＦＭＩ  第１メモリ情報
ＳＭＩ  第２メモリ情報
ＭＣ  メモリ内容
ＤＭＣ  分割メモリ内容
ＤＭＩ  分割メモリイメージ
【図１】
0005012599.tif 000002
【図２】
0005012599.tif 000003
【図３】
0005012599.tif 000004
【図４】
0005012599.tif 000005
【図５】
0005012599.tif 000006
【図６】
0005012599.tif 000007
【図７】
0005012599.tif 000008
【図８】
0005012599.tif 000009
【図９】
0005012599.tif 000010
【図１０】
0005012599.tif 000011
【図１１】
0005012599.tif 000012
【図１２】
0005012599.tif 000013
【図１３】
0005012599.tif 000014
【図１４】
0005012599.tif 000015
【図１５】
0005012599.tif 000016
【図１６】
0005012599.tif 000017
【図１７】
0005012599.tif 000018
【図１８】
0005012599.tif 000019
【図１９】
0005012599.tif 000020