(57)【要約】【課題】情報処理装置内で動作するＶＭが使用するメモリの記憶量が不足する場合に、そのＶＭに他の情報処理装置のメモリを使用させる。【解決手段】判定部２１２は、ＶＭが要求する追加記憶量が、第１記憶部２１１の記憶容量のうちＶＭに対して割り当て可能な記憶量を超えるか否かを判定する。制御部２１３は、追加記憶量が割り当て可能な記憶量を超えると判定部２１２が判定した場合、追加記憶量のうち第１記憶部２１１内で不足する不足記憶量を、他の情報処理装置内の第２記憶部から割り当て可能であるか否かを判定する。そして、制御部２１３は、不足記憶量を第２記憶部から割り当て可能であると判定した場合、他の情報処理装置に対して不足記憶量の割り当てを要求する。【選択図】図２
2019159562.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンを動作させる情報処理装置であって、
前記仮想マシンが使用するデータを記憶する第１記憶部と、
前記仮想マシンが要求する追加記憶量が、前記第１記憶部の記憶容量のうち前記仮想マシンに対して割り当て可能な記憶量を超えるか否かを判定する判定部と、
前記追加記憶量が前記割り当て可能な記憶量を超えると前記判定部が判定した場合、前記追加記憶量のうち前記第１記憶部内で不足する不足記憶量を、他の情報処理装置内の第２記憶部から割り当て可能であるか否かを判定し、前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記他の情報処理装置に対して前記不足記憶量の割り当てを要求する制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記他の情報処理装置内で動作する仮想マシンモニタに対して、前記不足記憶量を示す問い合わせを送信し、前記仮想マシンモニタから受信する応答に基づいて、前記不足記憶量を前記第２記憶部から割り当て可能であるか否かを判定し、前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記仮想マシンモニタに対して前記不足記憶量の割り当てを要求することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御部は、前記他の情報処理装置内で動作する仮想マシンモニタに対して、前記不足記憶量を含む使用記憶量を示す問い合わせを送信し、前記仮想マシンモニタから受信する応答に基づいて、前記使用記憶量を前記第２記憶部から割り当て可能であるか否かを判定し、前記使用記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記仮想マシンモニタに対して前記使用記憶量の割り当てを要求することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記制御部は、前記仮想マシンが要求した読み出しデータの論理アドレスが前記第２記憶部内の記憶領域に対応する場合、前記仮想マシンモニタに対して前記読み出しデータを要求し、前記仮想マシンモニタから前記読み出しデータを受信し、受信した前記読み出しデータを前記第１記憶部内のキャッシュ領域に書き込み、前記キャッシュ領域に対応する論理アドレスを前記仮想マシンに通知することを特徴とする請求項２又は３記載の情報処理装置。
【請求項５】
前記第１記憶部は、前記仮想マシンに割り当てられた第１記憶領域と、前記仮想マシンに割り当てられた前記第２記憶部内の第２記憶領域に格納されているデータをキャッシュするキャッシュ領域とを含み、
前記制御部は、前記追加記憶量が前記割り当て可能な記憶量を超えると前記判定部が判定した場合、前記第１記憶領域の更新された部分を示す第１更新情報と、前記キャッシュ領域の更新された部分を示す第２更新情報とを生成し、前記仮想マシンが発行した書き込みデータの論理アドレスが前記第２記憶領域に対応する場合、前記書き込みデータを前記キャッシュ領域に書き込み、前記キャッシュ領域が更新されたことを示す情報を前記第２更新情報に記録し、前記キャッシュ領域内の前記書き込みデータに対応する論理アドレスを前記仮想マシンに通知し、前記第２更新情報に基づいて、前記キャッシュ領域内の前記書き込みデータと前記書き込みデータの論理アドレスとを、前記仮想マシンモニタへ送信することを特徴とする請求項２又は３記載の情報処理装置。
【請求項６】
前記制御部は、前記仮想マシンを前記他の情報処理装置へ移動させる場合、前記第１記憶領域全体が更新されたことを示す情報を前記第１更新情報に記録し、前記第１更新情報に基づいて、前記第１記憶領域内のデータと前記仮想マシンの制御情報とを、前記仮想マシンモニタへ送信することを特徴とする請求項５記載の情報処理装置。
【請求項７】
第１情報処理装置と第２情報処理装置とを備える情報処理システムであって、
前記第１情報処理装置は、
前記第１情報処理装置内で動作する仮想マシンが使用するデータを記憶する第１記憶部と、
前記仮想マシンが要求する追加記憶量が、前記第１記憶部の記憶容量のうち前記仮想マシンに対して割り当て可能な記憶量を超えるか否かを判定する判定部と、
前記追加記憶量が前記割り当て可能な記憶量を超えると前記判定部が判定した場合、前記追加記憶量のうち前記第１記憶部内で不足する不足記憶量を、前記第２情報処理装置内の第２記憶部から割り当て可能であるか否かを判定し、前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記第２情報処理装置に対して前記不足記憶量の割り当てを要求する制御部と、
を含むことを特徴とする情報処理システム。
【請求項８】
仮想マシンを動作させる第１情報処理装置のためのプログラムであって、
前記仮想マシンが要求する追加記憶量が、前記仮想マシンが使用するデータを記憶する、前記第１情報処理装置内の第１記憶部の記憶容量のうち、前記仮想マシンに対して割り当て可能な記憶量を超えるか否かを判定し、
前記追加記憶量が前記割り当て可能な記憶量を超えると判定した場合、前記追加記憶量のうち前記第１記憶部内で不足する不足記憶量を、第２情報処理装置内の第２記憶部から割り当て可能であるか否かを判定し、
前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記第２情報処理装置に対して前記不足記憶量の割り当てを要求する、
処理を前記第１情報処理装置に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、及びプログラムに関する。
【背景技術】
【０００２】
サーバの仮想化技術を用いた情報処理システムでは、物理サーバ内で１つ又は複数の仮想マシン（Virtual Machine，ＶＭ）を動作させることで、多数の物理サーバが行っていた情報処理を少数の物理サーバに集約することが可能になる。物理サーバには、仮想化ソフトウェアである仮想マシンモニタ（Virtual Machine Monitor，ＶＭＭ）が搭載され、ＶＭＭ上で１つ又は複数のＶＭが動作する。ＶＭＭは、ハイパーバイザと呼ばれることもある。
【０００３】
仮想化技術に関連して、仮想計算機システムにおけるＣＰＵ（Central Processing Unit）及びメモリの割り当て方法が知られている（例えば、特許文献１〜特許文献４を参照）。
【０００４】
以下では、ハードウェアである「物理サーバ」を、単に「サーバ」と記載することがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１４／１４１４１９号パンフレット
【特許文献２】特開平１１−３１６７４７号公報
【特許文献３】特開２００８−２４３２０３号公報
【特許文献４】米国特許出願公開第２０１６／０１２４７７４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のＶＭが稼働しているサーバにおいて、ＶＭが使用するメモリの記憶量が不足すると、いずれかのＶＭが強制的に終了させられることがある。
【０００７】
なお、かかる問題は、サーバ内でＶＭが動作する場合に限らず、他の情報処理装置内でＶＭが動作する場合においても生ずるものである。
【０００８】
１つの側面において、本発明は、情報処理装置内で動作するＶＭが使用するメモリの記憶量が不足する場合に、そのＶＭに他の情報処理装置のメモリを使用させることを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、情報処理装置は、第１記憶部、判定部、及び制御部を含み、ＶＭを動作させる。第１記憶部は、ＶＭが使用するデータを記憶する。
【００１０】
判定部は、ＶＭが要求する追加記憶量が、第１記憶部の記憶容量のうちＶＭに対して割り当て可能な記憶量を超えるか否かを判定する。制御部は、追加記憶量が割り当て可能な記憶量を超えると判定部が判定した場合、追加記憶量のうち第１記憶部内で不足する不足記憶量を、他の情報処理装置内の第２記憶部から割り当て可能であるか否かを判定する。そして、制御部は、不足記憶量を第２記憶部から割り当て可能であると判定した場合、他の情報処理装置に対して不足記憶量の割り当てを要求する。
【発明の効果】
【００１１】
１つの実施形態によれば、情報処理装置内で動作するＶＭが使用するメモリの記憶量が不足する場合に、そのＶＭに他の情報処理装置のメモリを使用させることができる。
【図面の簡単な説明】
【００１２】
【図１】ＶＭを示す図である。
【図２】情報処理装置の機能的構成図である。
【図３】制御処理のフローチャートである。
【図４】情報処理システムの機能的構成図である。
【図５】メモリの記憶領域を示す図である。
【図６】メモリ枯渇が近くなった状態における記憶領域を示す図である。
【図７】メモリ枯渇が発生した状態における記憶領域を示す図である。
【図８】ＶＭに対して割り当てられた記憶領域を示す図である。
【図９】制御処理の具体例を示すフローチャートである。
【図１０】読み出し制御処理を示す図である。
【図１１】読み出し制御処理のフローチャートである。
【図１２】読み出し制御処理のシーケンスを示す図である。
【図１３】書き込み制御処理のシーケンスを示す図である。
【図１４】更新情報を示す図である。
【図１５】更新情報生成処理のフローチャートである。
【図１６】ライブマイグレーションを示す図である。
【図１７】定期監視処理のフローチャートである。
【図１８】情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、実施形態を詳細に説明する。
複数のＶＭが稼働しているサーバにおいて、メモリ枯渇警報が発生すると、いくつかのＶＭが強制的に終了させられることがある。この事象は、主として、以下の２つの原因により発生すると考えられる。
【００１４】
（１）ＶＭが行う処理の負荷が高くなることで、ＶＭが使用するメモリの記憶量が増加する。このため、低負荷の処理を前提として複数のＶＭを配備しているサーバにおいて、メモリ枯渇警報が発生する。
（２）サーバ内で動作しているハイパーバイザのメモリリークによって、メモリの記憶量が消費され、ＶＭが使用できる記憶量が減少して、メモリ枯渇警報が発生する。
【００１５】
図１は、サーバ内で動作するＶＭの例を示している。サーバ１０１内では、ＶＭ１１１−１〜ＶＭ１１１−３及びハイパーバイザ１１２が動作している。各ＶＭ１１１−ｉ（ｉ＝１〜３）は、バルーンドライバ１２１−ｉを含み、ハイパーバイザ１１２は、バルーン管理部１３１を含む。バルーン管理部１３１は、バルーンドライバ１２１−ｉからの要求に応じて、サーバ１０１内のメモリ１１３の記憶量を、ＶＭ１１１−ｉに対して割り当てる。
【００１６】
例えば、ＶＭ１１１−１が行う処理の負荷が高くなると、バルーンドライバ１２１−１は、ＶＭ１１１−１が使用する追加記憶量の割り当てを、バルーン管理部１３１に対して要求する。バルーン管理部１３１は、サーバ１０１内のメモリ１１３の未使用の記憶量（残存記憶量）をチェックし、要求された追加記憶量が残存記憶量以下である場合、その追加記憶量をＶＭ１１１−１に対して割り当てる。
【００１７】
一方、追加記憶量が残存記憶量を超えている場合、メモリ枯渇警報が発生し、ＶＭ１１１−１〜ＶＭ１１１−３のうち、いずれかのＶＭが強制的に終了させられる。
【００１８】
このように、バルーン管理部１３１がメモリ１１３の記憶量を動的に割り当てることで、ＶＭ１１１−１〜ＶＭ１１１−３の負荷が一定値に達するまでは、それらのＶＭの間で記憶量を融通し合うことができる。しかし、一定値を超える負荷がＶＭ１１１−１〜ＶＭ１１１−３にかかった場合、メモリ１１３の記憶量が不足して、処理の継続が困難になる。
【００１９】
図２は、実施形態の情報処理装置の機能的構成例を示している。図２の情報処理装置２０１は、第１記憶部２１１、判定部２１２、及び制御部２１３を含み、ＶＭを動作させる。第１記憶部２１１は、ＶＭが使用するデータを記憶する。
【００２０】
図３は、図２の情報処理装置２０１が行う制御処理の例を示すフローチャートである。まず、判定部２１２は、ＶＭが要求する追加記憶量が、第１記憶部２１１の記憶容量のうちＶＭに対して割り当て可能な記憶量を超えるか否かを判定する（ステップ３０１）。
【００２１】
追加記憶量が割り当て可能な記憶量を超えると判定部２１２が判定した場合、制御部２１３は、追加記憶量のうち第１記憶部２１１内で不足する不足記憶量を、他の情報処理装置内の第２記憶部から割り当て可能であるか否かを判定する（ステップ３０２）。そして、制御部２１３は、不足記憶量を第２記憶部から割り当て可能であると判定した場合、他の情報処理装置に対して不足記憶量の割り当てを要求する（ステップ３０３）。
【００２２】
図２の情報処理装置２０１によれば、情報処理装置２０１内で動作するＶＭが使用するメモリの記憶量が不足する場合に、そのＶＭに他の情報処理装置のメモリを使用させることができる。
【００２３】
図４は、図２の情報処理装置２０１を含む情報処理システムの機能的構成例を示している。図４の情報処理システムは、サーバ４０１及びサーバ４０２を含む。サーバ４０１は、メモリ４１３を含み、サーバ４０２は、メモリ４４３を含む。メモリ４１３及びメモリ４４３は、物理メモリである。サーバ４０１は、通信ネットワーク４０３を介して、サーバ４０２と通信することができる。
【００２４】
サーバ４０１は、図２の情報処理装置２０１に対応し、メモリ４１３は、第１記憶部２１１に対応する。サーバ４０２は、他の情報処理装置に対応し、メモリ４４３は、第２記憶部に対応する。
【００２５】
サーバ４０１内では、ＶＭ４１１−１〜ＶＭ４１１−３及びハイパーバイザ４１２が動作している。各ＶＭ４１１−ｉ（ｉ＝１〜３）は、バルーンドライバ４２１−ｉを含む。ハイパーバイザ４１２は、バルーン管理部４３１、ＬＭ（Live Migration）制御部４３２、ローカル記憶制御部４３３、及びリモート記憶制御部４３４を含む。
【００２６】
サーバ４０２内では、ＶＭ４４１及びハイパーバイザ４４２が動作している。ＶＭ４４１は、バルーンドライバ４５１を含む。ハイパーバイザ４４２は、バルーン管理部４６１、ＬＭ制御部４６２、ローカル記憶制御部４６３、及びリモート記憶制御部４６４を含む。
【００２７】
サーバ４０１のバルーン管理部４３１は、バルーンドライバ４２１−ｉが要求する追加記憶量が、メモリ４１３の記憶容量のうちＶＭ４１１−ｉに対して割り当て可能な記憶量を超えるか否かを判定する。ＶＭ４１１−ｉに対して割り当て可能な記憶量は、メモリ４１３の残存記憶量であってもよく、残存記憶量よりも少ない値であってもよい。追加記憶量が割り当て可能な記憶量以下である場合、バルーン管理部４３１は、追加記憶量をＶＭ４１１−ｉに対して割り当てる。
【００２８】
追加記憶量が割り当て可能な記憶量を超える場合、バルーン管理部４３１は、サーバ４０２のメモリ４４３が記憶するデータをキャッシュするキャッシュ領域を、メモリ４１３内に確保する。そして、リモート記憶制御部４３４は、追加記憶量のうちメモリ４１３内で不足する不足記憶量を、メモリ４４３から割り当て可能であるか否かを判定する。不足記憶量をメモリ４４３から割り当て可能である場合、リモート記憶制御部４３４は、サーバ４０２のハイパーバイザ４４２に対して不足記憶量の割り当てを要求する。
【００２９】
サーバ４０２のローカル記憶制御部４６３は、リモート記憶制御部４３４から要求された不足記憶量の記憶領域を、メモリ４４３内に確保する。そして、ローカル記憶制御部４６３は、不足記憶量の記憶領域を確保したことを示す応答を、リモート記憶制御部４３４に対して送信する。
【００３０】
ローカル記憶制御部４３３は、メモリ４１３のページテーブルエントリ（Page Table Entry，ＰＴＥ）を更新する。ＰＴＥは、各ＶＭ４１１−ｉが使用する論理アドレス（仮想物理アドレス）と、メモリ４１３の物理アドレスとの間の変換に用いられる。
【００３１】
ＬＭ制御部４３２は、ＶＭ４１１−ｉがメモリ４１３内のキャッシュ領域を使用している使用時間を監視する。そして、キャッシュ領域の使用時間が所定時間を超えた場合、ＬＭ制御部４３２は、ＶＭ４１１−ｉのライブマイグレーションを実行して、ＶＭ４１１−ｉをサーバ４０２へ移動させる。
【００３２】
バルーン管理部４３１によって実現される機能は、図２の判定部２１２が行う処理に対応し、ＬＭ制御部４３２、ローカル記憶制御部４３３、及びリモート記憶制御部４３４によって実現される機能は、制御部２１３が行う処理に対応する。
【００３３】
サーバ４０２のバルーン管理部４６１、ＬＭ制御部４６２、ローカル記憶制御部４６３、及びリモート記憶制御部４６４は、バルーン管理部４３１、ＬＭ制御部４３２、ローカル記憶制御部４３３、及びリモート記憶制御部４３４と同様の処理を行うことができる。
【００３４】
サーバ４０１又はサーバ４０２内で動作するＶＭの個数は、１つ又は３つに限られず、１以上の整数であればよい。情報処理システムは、３台以上のサーバを含んでいてもよい。
【００３５】
図５は、サーバ４０１内でＶＭ４１１−１及びＶＭ４１１−２のみが動作している場合のメモリ４１３の記憶領域の例を示している。図５のメモリ４１３は、ハイパーバイザ領域５０１、ＶＭ必須領域５０２−１、ＶＭ必須領域５０２−２、及びバルーン領域５０３を含む。
【００３６】
ハイパーバイザ領域５０１は、ハイパーバイザ４１２によって使用される記憶領域であり、ＶＭ必須領域５０２−ｉ（ｉ＝１，２）は、ＶＭ４１１−ｉに対して静的に割り当てられる記憶領域である。バルーン領域５０３は、バルーン管理部４３１によって確保される記憶領域であり、ＶＭ付加領域５０４−１及びＶＭ付加領域５０４−２を含む。ＶＭ付加領域５０４−ｉは、バルーン管理部４３１により、ＶＭ４１１−ｉに対して動的に割り当てられる。
【００３７】
この例では、バルーン領域５０３の全領域が、ローカル領域５０５に対応する。ローカル領域５０５は、同一サーバ内で動作するＶＭ間で、必要に応じて確保される領域である。メモリ４１３の記憶容量は５ＧＢ（Giga Byte）であり、各領域で使用されている記憶量は、以下の通りである。
【００３８】
ハイパーバイザ領域５０１  １ＧＢ
ＶＭ必須領域５０２−１    １ＧＢ
ＶＭ必須領域５０２−２    １ＧＢ
ＶＭ付加領域５０４−１    ０．５ＧＢ
ＶＭ付加領域５０４−２    ０．５ＧＢ
【００３９】
この場合、使用されている記憶量の合計は４ＧＢであり、残存記憶量は１ＧＢである。
【００４０】
図６は、バルーン管理部４３１がＶＭ４１１−１に対して０．５ＧＢの追加記憶量を割り当てることによって、メモリ枯渇が近くなった状態における、メモリ４１３の記憶領域の例を示している。図６の各領域で使用されている記憶量は、以下の通りである。
【００４１】
ハイパーバイザ領域５０１  １ＧＢ
ＶＭ必須領域５０２−１    １ＧＢ
ＶＭ必須領域５０２−２    １ＧＢ
ＶＭ付加領域５０４−１    １ＧＢ
ＶＭ付加領域５０４−２    ０．５ＧＢ
【００４２】
この場合、ＶＭ付加領域５０４−１の記憶量が０．５ＧＢだけ増加し、使用されている記憶量の合計が４．５ＧＢになり、残存記憶量は０．５ＧＢに減少している。
【００４３】
図７は、ＶＭ４１１−１がさらに追加記憶量を要求することによって、メモリ枯渇が発生した状態における、メモリ４１３の記憶領域の例を示している。図７の各領域で使用されている記憶量は、以下の通りである。
【００４４】
ハイパーバイザ領域５０１  １ＧＢ
ＶＭ必須領域５０２−１    １ＧＢ
ＶＭ必須領域５０２−２    １ＧＢ
ＶＭ付加領域５０４−１    ２．５ＧＢ
ＶＭ付加領域５０４−２    ０．５ＧＢ
【００４５】
この場合、ＶＭ付加領域５０４−１の記憶量がさらに１．５ＧＢだけ増加し、使用されている記憶量の合計が６ＧＢになり、メモリ４１３の記憶容量を超えている。
【００４６】
そこで、ＶＭ付加領域５０４−１の一部として、サーバ４０２のメモリ４４３の記憶領域が割り当てられ、メモリ４１３内にキャッシュ領域５０６が確保される。キャッシュ領域５０６は、異なるサーバ内で動作するＶＭ間で、必要に応じて確保される領域である。バルーン領域５０３は、ローカル領域５０５及びキャッシュ領域５０６を含む。
【００４７】
ＶＭ４１１−１がメモリ４４３内のデータに対するアクセスを要求した場合、リモート記憶制御部４３４は、キャッシュ領域５０６を介してメモリ４４３内のデータにアクセスする。
【００４８】
図８は、ＶＭ４１１−１に対して割り当てられたメモリ４１３及びメモリ４４３の記憶領域の例を示している。この例では、サーバ４０１のメモリ４１３のメモリモジュール８０１〜メモリモジュール８０３に、ＶＭ必須領域５０２−１、ローカル領域８０４、及びキャッシュ領域５０６が設定される。ローカル領域８０４は、図７のローカル領域５０５のうち、ＶＭ４１１−１に対して割り当てられた記憶領域に対応する。
【００４９】
また、サーバ４０２のメモリ４４３には、リモート領域８１１及びリモート領域８１２が設定される。リモート領域８１１の記憶量は、ＶＭ必須領域５０２−１とローカル領域８０４とを併せた記憶量に相当し、ライブマイグレーションによってＶＭ４１１−１がサーバ４０２へ移動するときに、リモート領域８１１がＶＭ４１１−１に対して割り当てられる。
【００５０】
リモート領域８１２の記憶量は、メモリ４１３内で不足する不足記憶量に相当し、ＶＭ４１１−１は、キャッシュ領域５０６を介してリモート領域８１２のデータにアクセスする。ＶＭ４１１−１がリモート領域８１２のデータにアクセスする方法としては、例えば、プロセッサエミュレータであるＱＥＭＵにおける、メモリバックエンドファイルの技術を適用すすることができる。
【００５１】
メモリバックエンドファイルの技術では、ハードディスク内に格納されたファイルが、アドレス可能なメモリとして扱われる。具体的には、メモリ内のキャッシュ領域のアドレスがファイルのアドレスとして用いられ、特定のアドレスがアクセスされたときに、ハードディスク内のファイルから、該当する記憶領域のデータがメモリへ転送される。
【００５２】
この技術におけるハードディスクをサーバ４０２のメモリ４４３に置き換えることで、キャッシュ領域５０６の特定のアドレスがアクセスされたときに、メモリ４４３内の該当する記憶領域のデータを、キャッシュ領域５０６へ転送することができる。
【００５３】
図４の情報処理システムによれば、サーバ４０１内でメモリ枯渇警報が発生した場合に、ＶＭ４１１−ｉに対してサーバ４０２のメモリ４４３を使用させることができる。これにより、ＶＭ４１１−１〜ＶＭ４１１−３を強制的に終了させることなく、継続して動作させることが可能になる。
【００５４】
図９は、図４のハイパーバイザ４１２が行う制御処理の具体例を示すフローチャートである。まず、バルーン管理部４３１は、ＶＭ４１１−ｉのバルーンドライバ４２１−ｉから追記記憶量の割り当て要求を受け付け（ステップ９０１）、追加記憶量がメモリ４１３から割り当て可能な記憶量を超えるか否かを判定する（ステップ９０２）。例えば、バルーン管理部４３１は、現在のバルーン領域５０３の記憶量と追加記憶量との合計がバルーン警告値を超える場合に、追加記憶量が割り当て可能な記憶量を超えると判定することができる。
【００５５】
追加記憶量が割り当て可能な記憶量を超える場合（ステップ９０２，ＹＥＳ）、バルーン管理部４３１は、メモリ４１３から割り当て可能な記憶量をＶＭ４１１−ｉに対して割り当て、メモリ４１３内にキャッシュ領域を確保する（ステップ９０３）。そして、ローカル記憶制御部４３３は、そのキャッシュ領域の論理アドレスを、ＶＭ４１１−ｉが使用するＰＴＥに登録する（ステップ９０４）。
【００５６】
次に、リモート記憶制御部４３４は、サーバ４０２のハイパーバイザ４４２に対して、不足記憶量を示す問い合わせを送信する（ステップ９０５）。不足記憶量は、追加記憶量と、メモリ４１３から割り当てた記憶量との差分に相当する。
【００５７】
ハイパーバイザ４４２のバルーン管理部４６１は、メモリ４４３から不足記憶量を割り当て可能であるか否かを示す応答を、リモート記憶制御部４３４へ送信する。そして、リモート記憶制御部４３４は、ハイパーバイザ４４２から受信した応答に基づいて、メモリ４４３から不足記憶量を割り当て可能であるか否かを判定する。
【００５８】
メモリ４４３から不足記憶量を割り当て可能であると判定した場合、リモート記憶制御部４３４は、ハイパーバイザ４４２に対して不足記憶量の割り当てを要求する（ステップ９０６）。そして、バルーン管理部４６１は、メモリ４４３から不足記憶量をＶＭ４１１−ｉに対して割り当て、ローカル記憶制御部４６３は、割り当てられた記憶領域の論理アドレスを、ＶＭ４１１−ｉが使用するＰＴＥに登録する。
【００５９】
次に、リモート記憶制御部４３４は、不足記憶量の記憶領域を確保したことを示す応答を、ハイパーバイザ４４２から受信する（ステップ９０７）。そして、バルーン管理部４３１は、追加記憶量を割り当てたことをバルーンドライバ４２１−ｉに通知し（ステップ９０８）、ローカル記憶制御部４３３は、メモリ４１３に対する定期監視を行う（ステップ９０９）。
【００６０】
追加記憶量が割り当て可能な記憶量以下である場合（ステップ９０２，ＮＯ）、バルーン管理部４３１は、メモリ４１３から追加記憶量をＶＭ４１１−ｉに対して割り当てる（ステップ９１０）。そして、ローカル記憶制御部４３３は、ステップ９０８以降の処理を行う。
【００６１】
図９の制御処理によれば、リモート記憶制御部４３４は、ステップ９０５においてハイパーバイザ４４２に対して問い合わせを送信することで、メモリ４４３から不足記憶量を割り当て可能であるか否かを判定することができる。
【００６２】
なお、リモート記憶制御部４３４は、不足記憶量を示す問い合わせの代わりに、不足記憶量を含む使用記憶量を示す問い合わせを送信することもできる。使用記憶量としては、例えば、図８のリモート領域８１１とリモート領域８１２とを併せた記憶量を用いることができる。
【００６３】
この場合、リモート記憶制御部４３４は、ハイパーバイザ４４２から受信した応答に基づいて、メモリ４４３から使用記憶量を割り当て可能であるか否かを判定する。そして、使用記憶量を割り当て可能であると判定した場合、リモート記憶制御部４３４は、ハイパーバイザ４４２に対して使用記憶量の割り当てを要求する。
【００６４】
リモート領域８１１とリモート領域８１２とを併せた使用記憶量を、事前にメモリ４４３から割り当てておくことで、ＶＭ４１１−１のライブマイグレーションを迅速に実行することが可能になる。
【００６５】
情報処理システムが３台以上のサーバを含んでいる場合、リモート記憶制御部４３４は、各サーバのハイパーバイザに対して問い合わせを送信し、各サーバから受信した応答に基づいて、不足記憶量の割り当てを要求する要求先のサーバを決定する。
【００６６】
図１０は、ＶＭ４１１−ｉがサーバ４０２のメモリ４４３からデータを読み出す場合に、ハイパーバイザ４１２が行う読み出し制御処理の例を示している。図１０の読み出し制御処理は、以下の手順で行われる。
【００６７】
Ｐ１：ＶＭ４１１−ｉが、サーバ４０１のハードディスク１００２又はサーバ４０２のメモリ４４３に対応する論理アドレスを含む読み出し要求を発行し、サーバ４０１内のハードウェア１００１においてページフォルト（ページ例外）が発生する。
【００６８】
Ｐ２：ハードウェア１００１により例外処理が行われ、ハイパーバイザ４１２のリモート記憶制御部４３４によるページ処理に移行する。リモート記憶制御部４３４は、ＶＭ４１１−ｉの識別情報と、読み出し要求に含まれる論理アドレスとをチェックする。
【００６９】
Ｐ３：論理アドレスがハードディスク１００２に対応する場合、リモート記憶制御部４３４は、ハードディスク１００２からデータを読み出す。一方、論理アドレスがメモリ４４３に対応する場合、リモート記憶制御部４３４は、メモリ４４３からデータを読み出す。
【００７０】
Ｐ４：リモート記憶制御部４３４は、ハードディスク１００２又はメモリ４４３から読み出したデータを、メモリ４１３内のキャッシュ領域に書き込み、ローカル記憶制御部４３３は、ＰＴＥを更新する。
【００７１】
Ｐ５：ローカル記憶制御部４３３は、データが書き込まれたキャッシュ領域の論理アドレスをＶＭ４１１−ｉに通知し、ＶＭ４１１−ｉは、通知された論理アドレスを用いて、キャッシュ領域からデータを読み出す。
【００７２】
図１１は、図１０の読み出し制御処理の例を示すフローチャートである。まず、ローカル記憶制御部４３３は、ＶＭ４１１−ｉから読み出し要求を受け付け、ＰＴＥにより、読み出し要求に含まれる論理アドレスを物理アドレスに変換して、物理アドレスをハードウェア１００１へ転送する（ステップ１１０１）。
【００７３】
ハードウェア１００１は、物理アドレスがメモリ４１３に対応するか否かを判定し（ステップ１１０２）、物理アドレスがメモリ４１３に対応する場合（ステップ１１０２，ＹＥＳ）、その物理アドレスに対するアクセスを許可する（ステップ１１０８）。
【００７４】
一方、物理アドレスがメモリ４１３に対応しない場合（ステップ１１０２，ＮＯ）、ページフォルトを発生させる（ステップ１１０３）。そして、リモート記憶制御部４３４は、ページ処理を行って（ステップ１１０４）、アクセス要求に含まれる論理アドレスがメモリ４４３に対応するか否かをチェックする（ステップ１１０５）。
【００７５】
論理アドレスがメモリ４４３に対応する場合（ステップ１１０５，ＹＥＳ）、リモート記憶制御部４３４は、メモリ４４３からデータを読み出し、読み出したデータをメモリ４１３内のキャッシュ領域に書き込む（ステップ１１０６）。そして、ローカル記憶制御部４３３は、書き込まれたデータの論理アドレス及び物理アドレスをＰＴＥに登録する。
【００７６】
次に、ローカル記憶制御部４３３は、書き込まれたデータの論理アドレスをＶＭ４１１−ｉに通知する（ステップ１１０７）。
【００７７】
一方、論理アドレスがハードディスク１００２に対応する場合（ステップ１１０５，ＮＯ）、リモート記憶制御部４３４は、ハードディスク１００２からデータを読み出し、読み出したデータをメモリ４１３内のキャッシュ領域に書き込む（ステップ１１０９）。そして、ローカル記憶制御部４３３は、書き込まれたデータの論理アドレス及び物理アドレスをＰＴＥに登録し、リモート記憶制御部４３４は、ステップ１１０７の処理を行う。
【００７８】
ＶＭ４１１−ｉがサーバ４０２のメモリ４４３にデータを書き込む場合も、ハイパーバイザ４１２は、図１０及び図１１と同様にして書き込み制御処理を行う。
【００７９】
図１２は、ハイパーバイザ４１２が行う読み出し制御処理のシーケンスの例を示している。図１２の読み出し制御処理は、以下の手順で行われる。
【００８０】
Ｐ１１：サーバ４０１のＶＭ４１１−ｉは、サーバ４０２のメモリ４４３に対応する論理アドレスを含む読み出し要求を転送し、ローカル記憶制御部４３３は、ＰＴＥ１２０１により、その論理アドレスを物理アドレスに変換する。物理アドレスがメモリ４１３内のキャッシュ領域に対応する場合、ローカル記憶制御部４３３は、キャッシュ領域からデータ（読み出しデータ）を読み出して、ＶＭ４１１−ｉへ転送する。
【００８１】
Ｐ１２：物理アドレスがメモリ４１３に対応しない場合、ページフォルトが発生する。
Ｐ１３：リモート記憶制御部４３４は、読み出し要求に含まれる論理アドレスを含むリモート読み出し要求を、サーバ４０２のローカル記憶制御部４６３へ送信する。
【００８２】
Ｐ１４：ローカル記憶制御部４６３は、ＰＴＥ１２０２により、リモート読み出し要求に含まれる論理アドレスを物理アドレスに変換する。
【００８３】
Ｐ１５：ローカル記憶制御部４６３は、物理アドレスを用いてメモリ４４３にアクセスし、メモリ４４３からデータ（読み出しデータ）を読み出す。
【００８４】
Ｐ１６：ローカル記憶制御部４６３は、読み出しデータをリモート記憶制御部４３４へ送信する。
【００８５】
Ｐ１７：リモート記憶制御部４３４は、メモリ４１３内のキャッシュ領域を獲得する。
Ｐ１８：リモート記憶制御部４３４は、ローカル記憶制御部４６３から受信した読み出しデータを、キャッシュ領域に書き込む。
【００８６】
Ｐ１９：ローカル記憶制御部４３３は、書き込まれた読み出しデータの論理アドレス及び物理アドレスを、ＰＴＥ１２０１に登録する。
【００８７】
Ｐ２０：ローカル記憶制御部４３３は、読み出しデータの論理アドレスをＶＭ４１１−ｉに通知する。
【００８８】
図１２の読み出し制御処理によれば、ＶＭ４１１−ｉがサーバ４０２のメモリ４４３から、メモリ４１３内のキャッシュ領域を介して、データを読み出すことが可能になる。
【００８９】
図１３は、ハイパーバイザ４１２が行う書き込み制御処理のシーケンスの例を示している。図１３の書き込み制御処理は、以下の手順で行われる。
【００９０】
Ｐ３１：サーバ４０１のＶＭ４１１−ｉは、サーバ４０２のメモリ４４３に対応する論理アドレスを含む書き込み要求を転送し、ローカル記憶制御部４３３は、ＰＴＥ１２０１により、その論理アドレスを物理アドレスに変換する。物理アドレスがメモリ４１３内のキャッシュ領域に対応する場合、ローカル記憶制御部４３３は、書き込みデータをキャッシュ領域に書き込んで、書き込み完了をＶＭ４１１−ｉに通知する。
【００９１】
Ｐ３２：物理アドレスがメモリ４１３に対応しない場合、ページフォルトが発生する。
Ｐ３３：リモート記憶制御部４３４は、メモリ４１３内のキャッシュ領域を獲得する。
【００９２】
Ｐ３４：リモート記憶制御部４３４は、書き込みデータをキャッシュ領域に書き込む。
Ｐ３５：ローカル記憶制御部４３３は、書き込まれた書き込みデータの論理アドレス及び物理アドレスを、ＰＴＥ１２０１に登録する。
【００９３】
Ｐ３６：ローカル記憶制御部４３３は、書き込み完了及び書き込みデータの論理アドレスを、ＶＭ４１１−ｉに通知する。
【００９４】
その後、バックグラウンドにおいて、以下の手順でサーバ４０１からサーバ４０２へ書き込みデータが転送される。
【００９５】
Ｐ４１：リモート記憶制御部４３４は、書き込み要求に含まれる論理アドレスと書き込みデータとを、サーバ４０２のローカル記憶制御部４６３へ送信する。
【００９６】
Ｐ４２：ローカル記憶制御部４６３は、ＰＴＥ１２０２により、受信した論理アドレスを物理アドレスに変換する。
【００９７】
Ｐ４３：ローカル記憶制御部４６３は、物理アドレスを用いてメモリ４４３にアクセスし、メモリ４４３に書き込みデータを書き込む。
【００９８】
Ｐ４４：ローカル記憶制御部４６３は、書き込み完了をリモート記憶制御部４３４に通知する。
【００９９】
図１３の書き込み制御処理によれば、ＶＭ４１１−ｉがサーバ４０２のメモリ４４３に対して、メモリ４１３内のキャッシュ領域を介して、データを書き込むことが可能になる。
【０１００】
ところで、サーバ４０１からサーバ４０２へ書き込みデータを転送する際に、メモリ４１３の記憶領域の更新された部分を示す更新情報を用いることができる。この場合、メモリ４１３の複数の部分それぞれが更新されたか否かを示すビットマップが、更新情報として用いられる。複数の部分は、複数のページであってもよい。
【０１０１】
図１４は、ＶＭ４１１−ｉのための更新情報の例を示している。サーバ４０１のローカル記憶制御部４３３は、ＶＭ４１１−ｉのためのキャッシュ領域がメモリ４１３内に確保された場合、必須領域テーブル１４０１、ローカル領域テーブル１４０２、及びリモート領域テーブル１４０３を生成する。
【０１０２】
必須領域テーブル１４０１は、メモリ４１３内のＶＭ必須領域の更新情報であり、ローカル領域テーブル１４０２は、ＶＭ付加領域内のローカル領域の更新情報であり、リモート領域テーブル１４０３は、ＶＭ付加領域内のキャッシュ領域の更新情報である。
【０１０３】
サーバ４０２のローカル記憶制御部４６３は、リモート領域テーブル１４０４を生成する。リモート領域テーブル１４０４は、ＶＭ４１１−ｉに対して割り当てられたメモリ４４３の記憶領域の更新情報である。
【０１０４】
メモリ４１３又はメモリ４４３のデータが更新された場合、更新された部分に対応する更新情報のビットが論理“１”（オン）に設定される。オンに設定されたビットは、ダーティビットと呼ばれることがある。
【０１０５】
必須領域テーブル１４０１及びローカル領域テーブル１４０２は、ＶＭ４１１−ｉのライブマイグレーションを実行する際に利用される。一方、リモート領域テーブル１４０３及びリモート領域テーブル１４０４は、サーバ４０１からサーバ４０２へ書き込みデータを転送する際に利用される。
【０１０６】
図１５は、更新情報生成処理の例を示すフローチャートである。図１５の更新情報生成処理は、例えば、図９のステップ９０６において行われる。まず、ローカル記憶制御部４３３は、メモリ４１３の更新情報として、必須領域テーブル１４０１、ローカル領域テーブル１４０２、及びリモート領域テーブル１４０３を生成する（ステップ１５０１）。
【０１０７】
次に、ローカル記憶制御部４３３は、ローカル記憶制御部４６３に対して、メモリ４４３の更新情報の生成を要求し（ステップ１５０２）、ローカル記憶制御部４６３は、リモート領域テーブル１４０４を生成する。
【０１０８】
図１３の手順Ｐ３４において、ローカル記憶制御部４３３は、キャッシュ領域内で書き込みデータが書き込まれた部分に対応する、リモート領域テーブル１４０３のビットを、ダーティビットに変更する。これにより、キャッシュ領域が更新されたことを示す情報が、リモート領域テーブル１４０３に記録される。
【０１０９】
リモート記憶制御部４３４は、リモート領域テーブル１４０３を一定間隔でチェックする。リモート領域テーブル１４０３にダーティビットが設定されている場合、リモート記憶制御部４３４は、手順Ｐ４１において、ダーティビットに対応する部分のデータをキャッシュ領域から読み出して、ローカル記憶制御部４６３へ送信する。そして、ローカル記憶制御部４３３は、そのダーティビットを論理“０”（オフ）に変更する。これにより、キャッシュ領域が更新されたことを示す情報がリセットされる。
【０１１０】
手順Ｐ４３において、ローカル記憶制御部４６３は、メモリ４４３内で書き込みデータが書き込まれた部分に対応する、リモート領域テーブル１４０４のビットを、ダーティビットに変更する。これにより、メモリ４４３の記憶領域が更新されたことを示す情報が、リモート領域テーブル１４０４に記録される。
【０１１１】
図１４の更新情報を用いることで、各ＶＭ４１１−ｉのメモリ空間の更新状況をリアルタイムに管理することができる。これにより、キャッシュ領域内の書き込みデータを、サーバ４０１からサーバ４０２へバックグラウンドで転送することが可能になるとともに、ＶＭ４１１−ｉのライブマイグレーションを、所望のタイミングで実行することが可能になる。
【０１１２】
図１６は、ＶＭ４１１−ｉのライブマイグレーションの例を示している。ＶＭ４１１−ｉのライブマイグレーションは、ＶＭ４１１−ｉによるキャッシュ領域の使用時間が所定時間を超えた場合に実行される。
【０１１３】
ＶＭ４１１−ｉのライブマイグレーションは、プレライブマイグレーション又はポストライブマイグレーションのいずれであってもよい。プレライブマイグレーションの場合、メモリ４１３内のデータがメモリ４４３へコピーされた後に、ＶＭ４１１−ｉのＣＰＵ制御情報がハイパーバイザ４４２へ転送される。ＣＰＵ制御情報は、ＶＭ４１１−ｉが行う処理の進捗状況等を示す制御情報である。一方、ポストライブマイグレーションの場合、ＶＭ４１１−ｉのＣＰＵ制御情報がハイパーバイザ４４２へ転送された後に、メモリ４１３内のデータがメモリ４４３へコピーされる。
【０１１４】
プレライブマイグレーションは、例えば、以下の手順で実行される。
Ｐ５１：ＬＭ制御部４３２は、必須領域テーブル１４０１及びローカル領域テーブル１４０２のすべてのビットを、ダーティビットに変更する。
【０１１５】
Ｐ５２：ＬＭ制御部４３２は、ダーティビットに対応する部分のデータをメモリ４１３から順に読み出して、ＬＭ制御部４６２へ転送し、ＬＭ制御部４６２は、受信したデータをメモリ４４３に書き込む。ＬＭ制御部４３２は、ダーティビットの個数が閾値以下に減少するまで、データ転送を繰り返す。
【０１１６】
Ｐ５３：ダーティビットの個数が閾値以下に減少した場合、ＬＭ制御部４３２は、ＶＭ４１１−ｉの動作を一時停止させ、ＣＰＵ制御情報と残りの部分のデータとを、ＬＭ制御部４６２へ転送する。
【０１１７】
Ｐ５４：ＬＭ制御部４６２は、受信したＣＰＵ制御情報を用いて、サーバ４０２内でＶＭ４１１−ｉを再稼働させる。
【０１１８】
一方、ポストライブマイグレーションは、例えば、以下の手順で実行される。
Ｐ６１：ＬＭ制御部４３２は、ＶＭ４１１−ｉの動作を一時停止させる。
【０１１９】
Ｐ６２：ＬＭ制御部４３２は、ＣＰＵ制御情報をＬＭ制御部４６２へ転送する。
Ｐ６３：ＬＭ制御部４６２は、受信したＣＰＵ制御情報を用いて、サーバ４０２内でＶＭ４１１−ｉを再稼働させる。
【０１２０】
Ｐ６４：ＬＭ制御部４３２は、ＶＭ４１１−ｉがアクセスした部分のデータを、オンデマンドでメモリ４１３から読み出して、ＬＭ制御部４６２へ転送するとともに、残りの部分のデータを、並行してＬＭ制御部４６２へ転送する。ＬＭ制御部４６２は、受信したデータをメモリ４４３に書き込む。
【０１２１】
バルーン管理部４３１は、各ＶＭ４１１−ｉが使用するキャッシュ領域に対する最終アクセス時刻を記録しておく。そして、バルーン管理部４３１は、バルーン領域の未使用の記憶量が所定値以下に減少した場合、最終アクセス時刻の古い順に、キャッシュ領域を削除する。これにより、メモリ４１３内に、新たなキャッシュ領域を確保することが可能になる。
【０１２２】
図１７は、図９のステップ９０９における定期監視処理の例を示すフローチャートである。まず、ローカル記憶制御部４３３は、メモリ４１３の使用状況を一定間隔で監視し（ステップ１７０１）、バルーン管理部４３１がローカル領域として使用可能な記憶量が、所定値以上変化したか否かをチェックする（ステップ１７０２）。使用可能な記憶量の変化が所定値未満である場合（ステップ１７０２，ＮＯ）、ローカル記憶制御部４３３は、ステップ１７０１及びステップ１７０２の処理を繰り返す。
【０１２３】
一方、使用可能な記憶量の変化が所定値以上である場合（ステップ１７０２，ＹＥＳ）、ローカル記憶制御部４３３は、使用可能な記憶量が増加したか否かをチェックする（ステップ１７０３）。使用可能な記憶量が増加した場合（ステップ１７０３，ＹＥＳ）、ローカル記憶制御部４３３は、キャッシュ領域のデータをローカル領域へ移動させる（ステップ１７０４）。
【０１２４】
一方、使用可能な記憶量が減少した場合（ステップ１７０３，ＮＯ）、ローカル記憶制御部４３３は、ローカル領域のデータをキャッシュ領域へ移動させる（ステップ１７０５）。
【０１２５】
図１のサーバ１０１の構成は一例に過ぎず、サーバ１０１の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【０１２６】
図２の情報処理装置２０１の構成は一例に過ぎず、情報処理装置２０１の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【０１２７】
図４の情報処理システムの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、情報処理システムは、３台以上のサーバを含んでいてもよい。
【０１２８】
図３、図９、図１１、図１５、及び図１７のフローチャートは一例に過ぎず、情報処理システムの構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、ローカル領域とキャッシュ領域との間でデータを移動させる必要がない場合は、図９のステップ９０９の定期監視処理を省略することができる。
【０１２９】
図５〜図８に示した記憶領域は一例に過ぎず、記憶領域の割り当て結果は、稼働しているＶＭの個数及び負荷に応じて変化する。図１０及び図１２の読み出し制御処理と図１３の書き込み制御処理は一例に過ぎず、これらの制御処理は、情報処理システムの構成又は条件に応じて変化する。
【０１３０】
図１４の更新情報は一例に過ぎず、更新情報は、情報処理システムの構成又は条件に応じて変化する。図１６のライブマイグレーションは一例に過ぎず、ライブマイグレーションにおけるＶＭの移動元サーバ及び移動先サーバは、情報処理システムの構成又は条件に応じて変化する。
【０１３１】
図１８は、図２の情報処理装置２０１、図４のサーバ４０１、又はサーバ４０２として用いられる情報処理装置（コンピュータ）のハードウェア構成例を示している。図１８の情報処理装置は、ＣＰＵ１８０１、メモリ１８０２、入力装置１８０３、出力装置１８０４、補助記憶装置１８０５、媒体駆動装置１８０６、及びネットワーク接続装置１８０７を含む。これらの構成要素はバス１８０８により互いに接続されている。
【０１３２】
メモリ１８０２は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ１８０２は、図２の第１記憶部２１１、図４のメモリ４１３、又はメモリ４４３として用いることができる。
【０１３３】
ＣＰＵ１８０１（プロセッサ）は、例えば、メモリ１８０２を利用してプログラムを実行することにより、図２の判定部２１２及び制御部２１３として動作する。
【０１３４】
ＣＰＵ１８０１は、メモリ１８０２を利用してプログラムを実行することにより、図４のＶＭ４１１−１〜ＶＭ４１１−３及びハイパーバイザ４１２を動作させる。ＣＰＵ１８０１は、プログラムを実行することにより、バルーンドライバ４２１−１〜バルーンドライバ４２１−３も動作させる。ＣＰＵ１８０１は、プログラムを実行することにより、バルーン管理部４３１、ＬＭ制御部４３２、ローカル記憶制御部４３３、及びリモート記憶制御部４３４も動作させる。
【０１３５】
ＣＰＵ１８０１は、プログラムを実行することにより、ＶＭ４４１及びハイパーバイザ４４２も動作させる。ＣＰＵ１８０１は、プログラムを実行することにより、バルーンドライバ４５１、バルーン管理部４６１、ＬＭ制御部４６２、ローカル記憶制御部４６３、及びリモート記憶制御部４６４も動作させる。
【０１３６】
入力装置１８０３は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置１８０４は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。
【０１３７】
補助記憶装置１８０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置１８０５は、ハードディスクドライブであってもよい。情報処理装置は、補助記憶装置１８０５にプログラム及びデータを格納しておき、それらをメモリ１８０２にロードして使用することができる。
【０１３８】
媒体駆動装置１８０６は、可搬型記録媒体１８０９を駆動し、その記録内容にアクセスする。可搬型記録媒体１８０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体１８０９は、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＵＳＢ（Universal Serial Bus）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体１８０９にプログラム及びデータを格納しておき、それらをメモリ１８０２にロードして使用することができる。
【０１３９】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ１８０２、補助記憶装置１８０５、又は可搬型記録媒体１８０９のような、物理的な（非一時的な）記録媒体である。
【０１４０】
ネットワーク接続装置１８０７は、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置は、ネットワーク接続装置１８０７を介して他の情報処理装置と通信する。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置１８０７を介して受信し、それらをメモリ１８０２にロードして使用することもできる。
【０１４１】
なお、情報処理装置が図１８のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータとのインタフェースが不要である場合は、入力装置１８０３及び出力装置１８０４を省略してもよい。また、可搬型記録媒体１８０９を使用しない場合は、媒体駆動装置１８０６を省略してもよい。
【０１４２】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１４３】
図１乃至図１８を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
仮想マシンを動作させる情報処理装置であって、
前記仮想マシンが使用するデータを記憶する第１記憶部と、
前記仮想マシンが要求する追加記憶量が、前記第１記憶部の記憶容量のうち前記仮想マシンに対して割り当て可能な記憶量を超えるか否かを判定する判定部と、
前記追加記憶量が前記割り当て可能な記憶量を超えると前記判定部が判定した場合、前記追加記憶量のうち前記第１記憶部内で不足する不足記憶量を、他の情報処理装置内の第２記憶部から割り当て可能であるか否かを判定し、前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記他の情報処理装置に対して前記不足記憶量の割り当てを要求する制御部と、
を備えることを特徴とする情報処理装置。
（付記２）
前記制御部は、前記他の情報処理装置内で動作する仮想マシンモニタに対して、前記不足記憶量を示す問い合わせを送信し、前記仮想マシンモニタから受信する応答に基づいて、前記不足記憶量を前記第２記憶部から割り当て可能であるか否かを判定し、前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記仮想マシンモニタに対して前記不足記憶量の割り当てを要求することを特徴とする付記１記載の情報処理装置。
（付記３）
前記制御部は、前記他の情報処理装置内で動作する仮想マシンモニタに対して、前記不足記憶量を含む使用記憶量を示す問い合わせを送信し、前記仮想マシンモニタから受信する応答に基づいて、前記使用記憶量を前記第２記憶部から割り当て可能であるか否かを判定し、前記使用記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記仮想マシンモニタに対して前記使用記憶量の割り当てを要求することを特徴とする付記１記載の情報処理装置。
（付記４）
前記制御部は、前記仮想マシンが要求した読み出しデータの論理アドレスが前記第２記憶部内の記憶領域に対応する場合、前記仮想マシンモニタに対して前記読み出しデータを要求し、前記仮想マシンモニタから前記読み出しデータを受信し、受信した前記読み出しデータを前記第１記憶部内のキャッシュ領域に書き込み、前記キャッシュ領域に対応する論理アドレスを前記仮想マシンに通知することを特徴とする付記２又は３記載の情報処理装置。
（付記５）
前記第１記憶部は、前記仮想マシンに割り当てられた第１記憶領域と、前記仮想マシンに割り当てられた前記第２記憶部内の第２記憶領域に格納されているデータをキャッシュするキャッシュ領域とを含み、
前記制御部は、前記追加記憶量が前記割り当て可能な記憶量を超えると前記判定部が判定した場合、前記第１記憶領域の更新された部分を示す第１更新情報と、前記キャッシュ領域の更新された部分を示す第２更新情報とを生成し、前記仮想マシンが発行した書き込みデータの論理アドレスが前記第２記憶領域に対応する場合、前記書き込みデータを前記キャッシュ領域に書き込み、前記キャッシュ領域が更新されたことを示す情報を前記第２更新情報に記録し、前記キャッシュ領域内の前記書き込みデータに対応する論理アドレスを前記仮想マシンに通知し、前記第２更新情報に基づいて、前記キャッシュ領域内の前記書き込みデータと前記書き込みデータの論理アドレスとを、前記仮想マシンモニタへ送信することを特徴とする付記２又は３記載の情報処理装置。
（付記６）
前記制御部は、前記仮想マシンを前記他の情報処理装置へ移動させる場合、前記第１記憶領域全体が更新されたことを示す情報を前記第１更新情報に記録し、前記第１更新情報に基づいて、前記第１記憶領域内のデータと前記仮想マシンの制御情報とを、前記仮想マシンモニタへ送信することを特徴とする付記５記載の情報処理装置。
（付記７）
第１情報処理装置と第２情報処理装置とを備える情報処理システムであって、
前記第１情報処理装置は、
前記第１情報処理装置内で動作する仮想マシンが使用するデータを記憶する第１記憶部と、
前記仮想マシンが要求する追加記憶量が、前記第１記憶部の記憶容量のうち前記仮想マシンに対して割り当て可能な記憶量を超えるか否かを判定する判定部と、
前記追加記憶量が前記割り当て可能な記憶量を超えると前記判定部が判定した場合、前記追加記憶量のうち前記第１記憶部内で不足する不足記憶量を、前記第２情報処理装置内の第２記憶部から割り当て可能であるか否かを判定し、前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記第２情報処理装置に対して前記不足記憶量の割り当てを要求する制御部と、
を含むことを特徴とする情報処理システム。
（付記８）
前記制御部は、前記第２情報処理装置内で動作する仮想マシンモニタに対して、前記不足記憶量を示す問い合わせを送信し、前記仮想マシンモニタから受信する応答に基づいて、前記不足記憶量を前記第２記憶部から割り当て可能であるか否かを判定し、前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記仮想マシンモニタに対して前記不足記憶量の割り当てを要求することを特徴とする付記７記載の情報処理システム。
（付記９）
前記制御部は、前記第２情報処理装置内で動作する仮想マシンモニタに対して、前記不足記憶量を含む使用記憶量を示す問い合わせを送信し、前記仮想マシンモニタから受信する応答に基づいて、前記使用記憶量を前記第２記憶部から割り当て可能であるか否かを判定し、前記使用記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記仮想マシンモニタに対して前記使用記憶量の割り当てを要求することを特徴とする付記７記載の情報処理システム。
（付記１０）
前記制御部は、前記仮想マシンが要求した読み出しデータの論理アドレスが前記第２記憶部内の記憶領域に対応する場合、前記仮想マシンモニタに対して前記読み出しデータを要求し、前記仮想マシンモニタから前記読み出しデータを受信し、受信した前記読み出しデータを前記第１記憶部内のキャッシュ領域に書き込み、前記キャッシュ領域に対応する論理アドレスを前記仮想マシンに通知することを特徴とする付記８又は９記載の情報処理システム。
（付記１１）
前記第１記憶部は、前記仮想マシンに割り当てられた第１記憶領域と、前記仮想マシンに割り当てられた前記第２記憶部内の第２記憶領域に格納されているデータをキャッシュするキャッシュ領域とを含み、
前記制御部は、前記追加記憶量が前記割り当て可能な記憶量を超えると前記判定部が判定した場合、前記第１記憶領域の更新された部分を示す第１更新情報と、前記キャッシュ領域の更新された部分を示す第２更新情報とを生成し、前記仮想マシンが発行した書き込みデータの論理アドレスが前記第２記憶領域に対応する場合、前記書き込みデータを前記キャッシュ領域に書き込み、前記キャッシュ領域が更新されたことを示す情報を前記第２更新情報に記録し、前記キャッシュ領域内の前記書き込みデータに対応する論理アドレスを前記仮想マシンに通知し、前記第２更新情報に基づいて、前記キャッシュ領域内の前記書き込みデータと前記書き込みデータの論理アドレスとを、前記仮想マシンモニタへ送信することを特徴とする付記８又は９記載の情報処理システム。
（付記１２）
前記制御部は、前記仮想マシンを前記第２情報処理装置へ移動させる場合、前記第１記憶領域全体が更新されたことを示す情報を前記第１更新情報に記録し、前記第１更新情報に基づいて、前記第１記憶領域内のデータと前記仮想マシンの制御情報とを、前記仮想マシンモニタへ送信することを特徴とする付記１１記載の情報処理システム。
（付記１３）
仮想マシンを動作させる第１情報処理装置のためのプログラムであって、
前記仮想マシンが要求する追加記憶量が、前記仮想マシンが使用するデータを記憶する、前記第１情報処理装置内の第１記憶部の記憶容量のうち、前記仮想マシンに対して割り当て可能な記憶量を超えるか否かを判定し、
前記追加記憶量が前記割り当て可能な記憶量を超えると判定した場合、前記追加記憶量のうち前記第１記憶部内で不足する不足記憶量を、第２情報処理装置内の第２記憶部から割り当て可能であるか否かを判定し、
前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記第２情報処理装置に対して前記不足記憶量の割り当てを要求する、
処理を前記第１情報処理装置に実行させるためのプログラム。
（付記１４）
前記第１情報処理装置は、前記第２情報処理装置内で動作する仮想マシンモニタに対して、前記不足記憶量を示す問い合わせを送信し、前記仮想マシンモニタから受信する応答に基づいて、前記不足記憶量を前記第２記憶部から割り当て可能であるか否かを判定し、前記不足記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記仮想マシンモニタに対して前記不足記憶量の割り当てを要求することを特徴とする付記１３記載のプログラム。
（付記１５）
前記第１情報処理装置は、前記第２情報処理装置内で動作する仮想マシンモニタに対して、前記不足記憶量を含む使用記憶量を示す問い合わせを送信し、前記仮想マシンモニタから受信する応答に基づいて、前記使用記憶量を前記第２記憶部から割り当て可能であるか否かを判定し、前記使用記憶量を前記第２記憶部から割り当て可能であると判定した場合、前記仮想マシンモニタに対して前記使用記憶量の割り当てを要求することを特徴とする付記１３記載のプログラム。
（付記１６）
前記第１情報処理装置は、前記仮想マシンが要求した読み出しデータの論理アドレスが前記第２記憶部内の記憶領域に対応する場合、前記仮想マシンモニタに対して前記読み出しデータを要求し、前記仮想マシンモニタから前記読み出しデータを受信し、受信した前記読み出しデータを前記第１記憶部内のキャッシュ領域に書き込み、前記キャッシュ領域に対応する論理アドレスを前記仮想マシンに通知することを特徴とする付記１３又は１４記載のプログラム。
（付記１７）
前記第１記憶部は、前記仮想マシンに割り当てられた第１記憶領域と、前記仮想マシンに割り当てられた前記第２記憶部内の第２記憶領域に格納されているデータをキャッシュするキャッシュ領域とを含み、
前記第１情報処理装置は、前記追加記憶量が前記割り当て可能な記憶量を超えると前記判定部が判定した場合、前記第１記憶領域の更新された部分を示す第１更新情報と、前記キャッシュ領域の更新された部分を示す第２更新情報とを生成し、前記仮想マシンが発行した書き込みデータの論理アドレスが前記第２記憶領域に対応する場合、前記書き込みデータを前記キャッシュ領域に書き込み、前記キャッシュ領域が更新されたことを示す情報を前記第２更新情報に記録し、前記キャッシュ領域内の前記書き込みデータに対応する論理アドレスを前記仮想マシンに通知し、前記第２更新情報に基づいて、前記キャッシュ領域内の前記書き込みデータと前記書き込みデータの論理アドレスとを、前記仮想マシンモニタへ送信することを特徴とする付記１３又は１４記載のプログラム。
（付記１８）
前記第１情報処理装置は、前記仮想マシンを前記他の情報処理装置へ移動させる場合、前記第１記憶領域全体が更新されたことを示す情報を前記第１更新情報に記録し、前記第１更新情報に基づいて、前記第１記憶領域内のデータと前記仮想マシンの制御情報とを、前記仮想マシンモニタへ送信することを特徴とする付記１７記載のプログラム。
【符号の説明】
【０１４４】
１０１、４０１〜４０３  サーバ
１１１−１〜１１１−３、４１１−１〜４１１−３、４４１  ＶＭ
１１２、４１２、４４２  ハイパーバイザ
１１３、４１３、４４３  メモリ
１２１−１〜１２１−３、４２１−１〜４２１−３、４５１  バルーンドライバ
１３１、４３１、４６１  バルーン管理部
２０１  情報処理装置
２１１  第１記憶部
２１２  判定部
２１３  制御部
４０３  通信ネットワーク
４３２、４６２  ＬＭ制御部
４３３、４６３  ローカル記憶制御部
４３４、４６４  リモート記憶制御部
５０１  ハイパーバイザ領域
５０２−１、５０２−２  ＶＭ必須領域
５０３  バルーン領域
５０４−１、５０４−２  ＶＭ付加領域
５０５、８０４  ローカル領域
５０６  キャッシュ領域
８０１〜８０３  メモリモジュール
８１１、８１２  リモート領域
１００１  ハードウェア
１００２  ハードディスク
１４０１  必須領域テーブル
１４０２  ローカル領域テーブル
１４０３、１４０４  リモート領域テーブル
１８０１  ＣＰＵ
１８０２  メモリ
１８０３  入力装置
１８０４  出力装置
１８０５  補助記憶装置
１８０６  媒体駆動装置
１８０７  ネットワーク接続装置
１８０８  バス
１８０９  可搬型記録媒体
【図１】
2019159562.tif 000003
【図２】
2019159562.tif 000004
【図３】
2019159562.tif 000005
【図４】
2019159562.tif 000006
【図５】
2019159562.tif 000007
【図６】
2019159562.tif 000008
【図７】
2019159562.tif 000009
【図８】
2019159562.tif 000010
【図９】
2019159562.tif 000011
【図１０】
2019159562.tif 000012
【図１１】
2019159562.tif 000013
【図１２】
2019159562.tif 000014
【図１３】
2019159562.tif 000015
【図１４】
2019159562.tif 000016
【図１５】
2019159562.tif 000017
【図１６】
2019159562.tif 000018
【図１７】
2019159562.tif 000019
【図１８】
2019159562.tif 000020