(57)【特許請求の範囲】
【請求項１】
仮想マシンが夫々動作する複数のサーバと通信可能なコンピュータに、
前記複数のサーバの夫々で動作する各仮想マシンが使用している物理資源量を特定可能な情報を収集する収集手順と、
各仮想マシンの動作にさらに必要となると見込まれる物理資源量である予約量を、各仮想マシンへの物理資源の割当量から、前記収集した情報により特定される、各仮想マシンが使用している物理資源量を差し引いて夫々算出する算出手順と、
前記複数のサーバの夫々で動作する仮想マシンのうち少なくとも１つを移動対象の仮想マシンとして選択するとともに、当該移動対象の仮想マシンを移動させる先の移動先サーバを前記複数のサーバのいずれかから選択する際に、当該移動先サーバで動作する仮想マシンの予約量と、当該移動対象となる仮想マシンの予約量との差が、他のサーバの仮想マシンの予約量と当該移動対象となる仮想マシンの予約量との差よりも小さくなるように選択する選択手順と、
前記移動対象の仮想マシンを、前記移動先サーバに移動させる移動手順と、
を実行させることを特徴とする仮想マシン管理プログラム。
【請求項２】
前記複数のサーバの夫々で動作する各仮想マシンが使用している物理資源の使用量を履歴として記憶装置に記録する履歴記録手順をさらに有し、
前記算出手順は、前記履歴を参照し、過去の所定期間内における各仮想マシンによる物理資源の使用量の最大値が前記割当量よりも小さいときに、前記割当量のうち、過去の所定期間内における各仮想マシンによる物理資源の使用量の最大値から、各仮想マシンが使用している物理資源量を差し引いて前記予約量を算出することを特徴とする請求項１記載の仮想マシン管理プログラム。
【請求項３】
前記算出手順は、同一サーバで動作する全ての仮想マシンについて、各仮想マシンが使用している物理資源量及び前記予約量の全部又は一部を合算したサーバ毎の必要資源量を算出し、
前記選択手順は、前記複数のサーバのいずれかにおいて、サーバの必要資源量が当該サーバの物理資源量を超えているときに、当該サーバで動作する仮想マシンのうち少なくとも１つを移動対象とすることを特徴とする請求項１又は２に記載の仮想マシン管理プログラム。
【請求項４】
前記算出手順は、同一サーバで動作する全ての仮想マシンについて、各仮想マシンが使用している物理資源量及び前記予約量の全部又は一部を合算したサーバ毎の必要資源量を算出し、
前記選択手順は、同一サーバで動作する全ての仮想マシンが使用している物理資源量が、サーバにおいて設定された物理資源量の使用可能範囲の下限値よりも下回っているサーバが存在するときに、当該サーバで動作する全ての仮想マシンを移動対象とし、
前記移動手順は、前記移動対象となる仮想マシンを前記移動先のサーバに移動させた後に、サーバを停止させることを特徴とする請求項１〜３のいずれか１つに記載の仮想マシン管理プログラム。
【請求項５】
仮想マシンが夫々動作する複数のサーバと通信可能な仮想マシン管理装置であって、
前記複数のサーバの夫々で動作する各仮想マシンが使用している物理資源量を特定可能な情報を収集する収集手段と、
各仮想マシンの動作にさらに必要となると見込まれる物理資源量である予約量を、各仮想マシンへの物理資源の割当量から、前記収集した情報により特定される、各仮想マシンが使用している物理資源量を差し引いて夫々算出する算出手段と、
前記複数のサーバの夫々で動作する仮想マシンのうち少なくとも１つを移動対象の仮想マシンとして選択するとともに、当該移動対象の仮想マシンを移動させる先の移動先サーバを前記複数のサーバのいずれかから選択する際に、当該移動先サーバで動作する仮想マシンの予約量と、当該移動対象となる仮想マシンの予約量との差が、他のサーバの仮想マシンの予約量と当該移動対象となる仮想マシンの予約量との差よりも小さくなるように選択する選択手段と、
前記移動対象の仮想マシンを、前記移動先サーバに移動させる移動手段と、
を有することを特徴とする仮想マシン管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理において仮想マシンを用いる技術に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングやシンクライアントを適用したシステム構成において、サーバにおいて仮想マシン（ＶＭ：Virtual Machine）を動作させ、利用者に提供するサービスが行われている。かかるサーバでは１つ又は複数のＶＭが動作し、各ＶＭには、ソフトウェアによって仮想化された物理資源（例えば、ＣＰＵ（Central Processing Unit）、メモリなど）が割り当てられる。そして、１台のサーバで動作するＶＭへの物理資源の割当方法として、各ＶＭによるサーバの物理資源の使用状態に応じて、動的に物理資源を割り当てる技術が提案されている。
【０００３】
一方、サーバが複数存在するシステム構成の場合には、各サーバにおいてＶＭが正常に動作できるように、次のような技術が採用されている。即ち、各サーバにおいてＶＭが使用する物理資源量がサーバの物理資源量全体に対して占める割合の上限及び下限を定めて使用許可範囲を設定し、ＶＭが使用する物理資源量の割合が使用許可範囲内になるように、ＶＭを配置する方法が行われている。具体的には、ＶＭが使用している物理資源量がサーバの全体の物理資源量に対して占める割合が使用許可範囲を上回っている場合には、他のサーバに一部のＶＭを移動（マイグレーション）させる。これにより、ＶＭの負荷が急上昇したときに、物理資源が不足することによってＶＭの処理性能が低下することを防ぐことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２０２９５９公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上述した技術では、ＶＭの集約を効率的に行うことができない。
１つの側面では、本発明はＶＭの集約を行うことを目的とする。
【課題を解決するための手段】
【０００６】
１つの案では、仮想マシンが夫々動作する複数のサーバと通信可能なコンピュータが、次の処理を行う。即ち、複数のサーバの夫々で動作する各仮想マシンが使用している物理資源量を特定可能な情報を収集する。また、各仮想マシンの動作にさらに必要となると見込まれる物理資源量である予約量を、各仮想マシンへの物理資源の割当量から、収集した情報により特定される、各仮想マシンが使用している物理資源量を差し引いて夫々算出する。さらに、複数のサーバの夫々で動作する仮想マシンのうち少なくとも１つを移動対象の仮想マシンとして選択するとともに、移動対象の仮想マシンを移動させる先の移動先サーバを複数のサーバのいずれかから選択する際に、移動先サーバで動作する仮想マシンの予約量と、移動対象となる仮想マシンの予約量との差が、他のサーバの仮想マシンの予約量と移動対象となる仮想マシンの予約量との差よりも小さくなるように選択する。そして、移動対象の仮想マシンを、移動先サーバに移動させる。
【発明の効果】
【０００７】
本発明によれば、仮想マシンを効率的に集約することができる。
【図面の簡単な説明】
【０００８】
【図１】ＶＭ管理システムの一例の全体構成図（第１実施例）である。
【図２】ＶＭ管理ＤＢの設定パラメータの一例の説明図である。
【図３】ＶＭ管理ＤＢのサーバテーブルの一例の説明図である。
【図４】ＶＭ管理ＤＢのＶＭテーブルの一例の説明図である。
【図５】ＶＭ新規追加処理の一例を示すフローチャートである。
【図６】ＶＭ配置調整処理の一例を示すフローチャートである。
【図７】ＣＰＵ予約量算出ルーチン（第１実施例）の一例を示すフローチャートである。
【図８】メモリ予約量算出ルーチン（第１実施例）の一例を示すフローチャートである。
【図９】サーバ停止ルーチンの一例を示すフローチャートである。
【図１０】ＶＭ移動ルーチンの一例を示すフローチャートである。
【図１１】第１実施例の具体例におけるＶＭテーブルの一例の説明図である。
【図１２】第１実施例の具体例におけるサーバテーブルの一例の説明図である。
【図１３】第１実施例の具体例におけるＶＭテーブルの一例の説明図である。
【図１４】ＶＭ配置例の説明図であり、（Ａ）は予約量が近いＶＭを同じサーバに集約した配置の一例、（Ｂ）は予約量に関係なくＶＭを集約した配置の一例を示す。
【図１５】ＶＭ管理システムの一例の全体構成図（第２実施例）である。
【図１６】ＶＭ管理ＤＢの履歴テーブルの一例の説明図である。
【図１７】履歴記録処理の一例を示すフローチャートである。
【図１８】ＣＰＵ予約量算出ルーチン（第２実施例）の一例を示すフローチャートである。
【図１９】メモリ予約量算出ルーチン（第２実施例）の一例を示すフローチャートである。
【図２０】第２実施例の具体例におけるＶＭテーブルの一例の説明図である。
【図２１】第２実施例の具体例におけるサーバテーブルの一例の説明図である。
【発明を実施するための形態】
【０００９】
［第１実施例］
以下、本発明を実施するための実施例について詳細に説明する。
１つの実施例では、複数のサーバと通信可能なコンピュータが次の処理を行う。即ち、これらの複数のサーバの夫々で動作する各仮想マシンが使用している物理資源量を特定可能な情報を収集する。そして、収集した情報により特定される、各仮想マシンが使用している物理資源量に基づいて、各仮想マシンの動作にさらに必要となると見込まれる物理資源量である予約量を各仮想マシンについて夫々算出する。
【００１０】
そして、複数のサーバの夫々で動作する仮想マシンのうち少なくとも１つを移動対象の仮想マシン（Ｓ）として選択するとともに、移動対象の仮想マシン（Ｓ）を移動させる先の移動先サーバを複数のサーバのいずれかから選択する際に、移動先サーバで動作する仮想マシン（Ｄ）の予約量と、移動対象となる仮想マシン（Ｓ）の予約量との差が、他のサーバの仮想マシン（Ｏ）の予約量と移動対象となる仮想マシン（Ｓ）の予約量との差よりも小さくなるように選択する。そして、移動対象の仮想マシン（Ｓ）を、仮想マシン（Ｄが動作しているサーバに移動させる。
【００１１】
このように、仮想マシンの移動を行う際に、移動対象の仮想マシンの予約量と近い予約量（好ましくは、最も近い）の仮想マシンが動作しているサーバを移動先サーバの候補として選択し、その移動先サーバに移動対象の仮想マシンを移動させることで、予約量が近い仮想マシンを集約させることができる。
【００１２】
これによれば予約量が近い複数の仮想マシンを１つのサーバに集めることができるため、当該サーバにおいては、これらの複数の仮想マシンの予約量程度の資源量を将来の処理量の変動のために確保しておけば、処理量の増加におおよそ対応することができる。
【００１３】
1つのサーバ上の夫々の仮想マシンの予約量を同程度とすることで、そのサーバが確保すべき未使用の物理資源量を必要最小限とすることができるため、仮想マシンを動作させるサーバの台数をより効率的に集約することができる。
【００１４】
なお、１つのサーバに集約されたｍ個の仮想マシンの予約量をＲ１〜Ｒｍとすると、max（Ｒ１、…、Ｒｍ）を将来な処理量の変更に備えて確保する資源量とすることもできる。
【００１５】
なお、仮想マシンは複数あってもよく、複数の仮想マシンのうち予約量が最も移動対象の仮想マシンの予約量と近い仮想マシンが動作するサーバを移動先サーバとしてもよい。
図１は、ＶＭ管理システムの一例の全体構成図である。本ＶＭ管理システムは、サーバ１〜４及び当該サーバ１〜４の夫々とネットワークを介して接続された管理マネージャ１０を有する。この管理マネージャ１０は、サーバ１〜４を総括管理するとともに、サーバ１〜４に対する各種設定や操作を遠隔制御により行う。サーバ１〜４及び管理マネージャ１０は、いずれも、少なくともＣＰＵ（Central Processing Unit）及びメモリを備えたコンピュータである。なお、図１に示すサーバの数は一例に過ぎない。
【００１６】
サーバ１〜４では、ＶＭが動作可能な環境が構築され、ハイパーバイザ上で動作する仮想オペレーティングシステムにおいて、１つ以上のＶＭが動作可能である。
管理マネージャ１０は、配置制御部１１、ＶＭ制御部１２、電源制御部１３及びＶＭ管理データベース（以下、ＶＭ管理ＤＢという）１４を有する。
【００１７】
配置制御部１１は、サーバ１〜４の物理資源の使用状態を監視するとともに、サーバ１〜４におけるＶＭの配置（即ち、サーバ１〜４のうちどのサーバでどのＶＭを動作させるか）を決定する。ここで、物理資源とは、例えば、ＣＰＵやメモリなどのハードウェア資源のことである。
【００１８】
ＶＭ制御部１２は、サーバ１〜４を遠隔制御し、配置制御部１１が決定したＶＭの配置に基づいて、ＶＭの追加や移動（マイグレーション）を行う。
電源制御部１３は、配置制御部１１が決定したＶＭの配置に基づき、必要に応じてサーバ１〜４の電源をオン又はオフにする。
【００１９】
なお、上記管理マネージャ１０の配置制御部１１、ＶＭ制御部１２、電源制御部１３の各機能は、管理マネージャ１０においてＣＰＵによりＶＭ配置制御プログラムが実行され、記憶装置、入力装置、通信を実現するポート等のハードウェア機器と協働することにより、実現される。ＶＭ配置制御プログラムは、例えば、磁気テープ、磁気ディスク、磁気ドラム、ＩＣカード、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読取可能な記録媒体に記録しておくことができる。そして、かかる記録媒体に記録されたＶＭ配置制御プログラムを管理マネージャ１０にインストールすることにより、ＶＭ配置制御プログラムを実行させることができる。
【００２０】
ＶＭ管理ＤＢ１４は、管理マネージャ１０が備える記憶装置において構築されており、少なくとも配置制御部１１がＶＭの配置を決定するために必要な情報が格納される。ＶＭ管理ＤＢ１４は、設定パラメータ１４Ａ、サーバテーブル１４Ｂ及びＶＭテーブル１４Ｃを有する。
【００２１】
設定パラメータ１４Ａは、図２に示すように、例えば、必要資源量パラメータ及び使用率下限値を有する。必要資源量パラメータ（α）は、ＶＭの動作に必要な物理資源量である必要資源量（以下、ＣＰＵの必要資源量を必要ＣＰＵ量、メモリの必要資源量を必要メモリ量という）を算出するために用いるパラメータである。また、使用率下限値は、各サーバにおける物理資源の使用率について、使用可能範囲の下限を示す値である。必要資源量パラメータ及び使用率下限値は、システム管理者等が予め任意に設定しておくことができる。
【００２２】
サーバテーブル１４Ｂは、サーバ１〜４の物理資源の使用状態を示す情報が格納されるテーブルである。図３は、サーバテーブル１４Ｂのデータ構造及びデータ内容の一例を示す。サーバテーブル１４Ｂは、サーバ名を有し、当該サーバ名に対応するサーバについて、例えば次のような情報を有する。すなわち、サーバテーブル１４Ｂは、サーバの電源状態、サーバのＣＰＵ性能（ＧＨｚ）、ＣＰＵ性能にサーバのＣＰＵ使用率を乗算して算出した値、即ち、サーバで動作する全てのＶＭによるＣＰＵ使用量を合算した値を示す合計ＣＰＵ使用量（ＧＨｚ）、ＣＰＵ性能から合計ＣＰＵ使用量を差し引いた値を示すＣＰＵ不使用量（ＧＨｚ）を有する。また、サーバテーブル１４Ｂは、仮想マシンの動作にさらに必要となると見込まれるＣＰＵ資源量であるＣＰＵ予約量につき、当該サーバで動作する全てのＶＭ分を合算した合計ＣＰＵ予約量（ＧＨｚ）、当該サーバで動作する全てのＶＭの必要ＣＰＵ量を合算した合計必要ＣＰＵ量（ＧＨｚ）、当該サーバで動作するＶＭの平均ＣＰＵ予約量（ＧＨｚ）を有する。
【００２３】
さらに、サーバテーブル１４Ｂは、当該サーバのメモリサイズ（ＧＢ）、サーバで動作する全てのＶＭによるメモリ使用量を合算した値を示す合計メモリ使用量（ＧＢ）、メモリサイズから合計メモリ使用量を差し引いた値を示すメモリ不使用量（ＧＢ）を有する。また、サーバテーブル１４Ｂは、仮想マシンの動作にさらに必要となると見込まれるメモリ資源量であるメモリ予約量につき、当該サーバで動作する全てのＶＭ分を合算した合計メモリ予約量（ＧＢ）、当該サーバで動作する全てのＶＭの必要メモリ量を合算した合計必要メモリ量（ＧＢ）、当該サーバで動作するＶＭの平均メモリ予約量（ＧＢ）を有する。
【００２４】
ＶＭテーブル１４Ｃは、ＶＭ毎のＣＰＵの使用状態を示す情報が格納されるテーブルである。そして、ＶＭテーブル１４Ｃは、図４に示すように、ＶＭ名、当該ＶＭが動作しているサーバ名、当該ＶＭへのＣＰＵ割当量（ＧＨｚ）、ＣＰＵ使用量（ＧＨｚ）、ＣＰＵ予約量（ＧＨｚ）、必要ＣＰＵ量（ＧＨｚ）を有する。また、ＶＭテーブル１４Ｃは、さらに、当該ＶＭへのメモリ割当量（ＧＢ）、現在のメモリ使用量（ＧＢ）、メモリ不使用量（ＧＢ）、メモリ予約量（ＧＢ）及び必要メモリ量（ＧＢ）を有する。
【００２５】
次に、管理マネージャ１０が実行する処理について説明する。
図５は、ＶＭ新規追加処理を示すフローチャートである。この処理は、サーバ１〜４で動作するアプリケーションによりＶＭの追加要求があったときや、ユーザ又はシステム管理者等によりＶＭの追加要求操作がなされたときに実行される。
【００２６】
ステップ１（図ではＳ１と表記している。以下同様）では、配置制御部１１が、サーバ１〜４から、各サーバで動作するＶＭによるＣＰＵ及びメモリの使用量を特定可能な情報を収集する。ここで、ＣＰＵやメモリの使用量を特定可能な情報は、例えば、使用量そのものでも、使用率であってもよい。当該情報が使用率である場合には、配置制御部１１は、サーバのＣＰＵ性能及びメモリサイズに使用率を乗算して使用量を算出する。そして、配置制御部１１は、収集した情報に基づき、サーバ毎の合計ＣＰＵ使用量及び合計メモリ使用量についてサーバテーブル１４Ｂを更新するとともに、ＶＭ毎のＣＰＵ使用量及びメモリ使用量についてＶＭテーブル１４Ｃを更新する。また、配置制御部１１は、サーバ毎の合計ＣＰＵ使用量及び各サーバのＣＰＵ性能に基づき、サーバ毎のＣＰＵ不使用量を算出し、サーバテーブル１４Ｂを更新する。さらに、配置制御部１１は同様に、サーバ毎の合計メモリ使用量及び各サーバのメモリサイズに基づき、サーバのメモリサイズからメモリ使用量を差し引いたメモリ不使用量を算出し、サーバテーブル１４Ｂを更新する。なお、各サーバのＣＰＵ性能及びメモリサイズは、当該処理において各サーバから取得してもよいし、サーバテーブル１４Ｂに予め格納しておいてもよい。
【００２７】
ステップ２では、配置制御部１１が、ＣＰＵ予約量を算出するサブルーチンを呼び出す。
ステップ３では、配置制御部１１が、メモリ予約量を算出するサブルーチンを呼び出す。
【００２８】
ステップ４では、配置制御部１１が、サーバテーブル１４Ｂに格納された物理資源の使用量に基づき、サーバ毎に、合計必要ＣＰＵ量及び合計必要メモリ量を算出する。サーバ毎の合計必要ＣＰＵ量及び合計必要メモリ量は、例えば、次のような式により算出する。
【００２９】
合計必要ＣＰＵ量＝（合計ＣＰＵ使用量）＋（合計ＣＰＵ予約量）＊α
合計必要メモリ量＝（合計メモリ使用量）＋（合計メモリ予約量）＊α
ここで、式中のαは、ＶＭ管理ＤＢ１４のパラメータ１４Ａに設定されている必要資源量パラメータである。なお、αを１に設定しておけば、サーバで動作する全てのＶＭによる物理資源の使用量及び予約量の合算値を、サーバの必要資源量とすることができる。また、αの値を調整することで、必要資源量に含める予約量の割合を調整することもできる。
【００３０】
ステップ５では、配置制御部１１が、サーバ毎の合計必要ＣＰＵ量及び合計必要メモリ量の両方を考慮した上で、ＶＭによる必要資源量が最も小さいサーバを、ＶＭの配置先として選択する。かかる選択方法として、配置制御部１１は、例えば、次の式で算出される値が最も小さいサーバを選択する。
【００３１】
ｍａｘ（合計必要ＣＰＵ量，合計必要メモリ量）
即ち、合計必要ＣＰＵ量又は合計必要メモリ量のいずれか大きいほうの値である。
ステップ６では、ＶＭ制御部１２が、ＶＭの配置先として選択されたサーバに対してＶＭを追加する。また、配置制御部１１が、ＶＭ管理ＤＢ１４のＶＭテーブル１４Ｃに、ステップ５で配置したＶＭの情報を追加する。このとき、ＶＭテーブル１４Ｃには、少なくとも、ＶＭを配置したサーバ名を示す情報を格納すればよい。
【００３２】
図６は、ＶＭ配置調整処理を示すフローチャートである。この処理は、例えば、予め管理マネージャ１０において設定された所定時間毎に実行される。
ステップ１１〜１４は、夫々図５のステップ１〜４と同様であるため、説明を省略する。
【００３３】
以下のステップ１５〜１８は、サーバ１〜４の夫々について実行される。
ステップ１５では、配置制御部１１が、処理対象サーバの合計必要ＣＰＵ量が処理対象サーバにおける合計ＣＰＵ使用量の使用可能範囲の下限値よりも下回り、かつ、処理対象サーバの合計必要メモリ量が処理対象サーバにおける合計メモリ使用量の使用可能範囲の下限値よりも下回っているか否かを判定する。処理対象サーバにおける合計ＣＰＵ使用量の下限値及び合計メモリ使用量の使用可能範囲の下限値は、例えば、次の式で算出することができる。
【００３４】
合計ＣＰＵ使用量の下限値＝（ＣＰＵ性能）＊ｓ
合計メモリ使用量の下限値＝（メモリサイズ）＊ｓ
ここで、式中のｓは、ＶＭ管理ＤＢ１４のパラメータ１４Ａに設定されている使用率下限値パラメータである。
合計必要ＣＰＵ量が合計ＣＰＵ使用量の下限値よりも下回り、かつ、合計必要メモリ量が合計メモリ使用量の下限値よりも下回っているときにはステップ１６に進み（Ｙｅｓ）、そうでないときにはステップ１７に進む（Ｎｏ）。
【００３５】
ステップ１６では、配置制御部１１が、処理対象サーバにつき、サーバ停止ルーチンを呼び出す。
ステップ１７では、配置制御部１１が、処理対象サーバの合計必要ＣＰＵ量が、処理対象サーバのＣＰＵ性能よりも上回っているか、又は、処理対象サーバの合計必要メモリ量が処理対象サーバのメモリサイズよりも上回っているか否かを判定する。合計必要ＣＰＵ量又は合計必要メモリ量のいずれかが上回っていれば、ステップ１８に進み（Ｙｅｓ）、合計必要ＣＰＵ量及び合計必要メモリ量のいずれもが上回っていないときには、ステップ１５に戻って次のサーバの処理を開始する（Ｎｏ）。
【００３６】
ステップ１８では、配置制御部１１が、ＶＭ移動ルーチンを呼び出す。
図７は、ＣＰＵ予約量算出ルーチンの処理を示すフローチャートである。
ステップ２１では、配置制御部１１が、サーバ１〜４で夫々動作するＶＭ毎にＣＰＵ予約量を算出する。このとき、ＶＭのＣＰＵ予約量は、例えば、次の式で算出する。
【００３７】
ＶＭのＣＰＵ予約量＝（ＶＭへのＣＰＵ割当量）−（ＶＭのＣＰＵ使用量）
そして、配置制御部１１は、算出したＶＭ毎のＣＰＵ予約量でＶＭテーブル１４Ｃを更新する。
【００３８】
ステップ２２では、配置制御部１１が、同一サーバで動作しているＶＭ全ての合計ＣＰＵ予約量及び平均ＣＰＵ予約量をサーバ毎に算出し、サーバテーブル１４Ｂを更新する。
図８は、メモリ予約量算出ルーチンの処理を示すフローチャートである。
【００３９】
ステップ３１では、配置制御部１１が、サーバ１〜４で夫々動作するＶＭ毎にメモリ予約量を算出する。このとき、各ＶＭのメモリ予約量は、例えば、次の式で算出する。
ＶＭのメモリ予約量＝（ＶＭへのメモリ割当量）−（ＶＭのメモリ使用量）
そして、配置制御部１１は、算出したＶＭ毎のメモリ予約量でＶＭテーブル１４Ｃを更新する。
【００４０】
ステップ３２では、配置制御部１１が、同一サーバで動作しているＶＭ全ての合計メモリ予約量及び平均メモリ予約量をサーバ毎に算出し、サーバテーブル１４Ｂを更新する。
図９は、サーバ停止ルーチンの処理を示すフローチャートである。
【００４１】
ステップ４１では、配置制御部１１が、処理対象サーバ（すなわち停止させるサーバ）で動作中の全てのＶＭの移動先となるサーバを選択する。ここでは、サーバの選択基準の一例として、移動対象となるＶＭを移動した後においても、移動先となるサーバにおける必要資源量が、サーバの物理資源の性能を超えないサーバを選択する。かかる移動先となるサーバの選択基準として、例えば、次の条件を満たすサーバを選択する。
「（移動先サーバの合計必要ＣＰＵ量）＋（移動対象となるＶＭの必要ＣＰＵ量）≦（移動先サーバのＣＰＵ性能）、かつ、（移動先サーバの合計必要メモリ量）＋（移動対象となるＶＭの必要メモリ量）≦（移動先サーバのメモリサイズ）」
なお、移動対象となるＶＭの必要ＣＰＵ量及び必要メモリ量は、例えば、次のような式により算出する。
【００４２】
必要ＣＰＵ量 ＝（ＣＰＵ使用量）＋（ＣＰＵ予約量）＊α
必要メモリ量 ＝（メモリ使用量）＋（メモリ予約量）＊α
かかる条件を満たすサーバを選択するということを換言すれば、移動対象となる仮想マシンが使用している物理資源の使用量及び当該仮想マシンの予約量に対応する物理資源量の空きを有するサーバを選択するということである。
【００４３】
ここで、配置制御部１１は、さらに、上記基準を満たすサーバのうち、サーバで動作するＶＭの予約量と移動対象となるＶＭの物理資源の予約量との差が最も小さいサーバを選択する。換言すれば、配置制御部１１は、上記基準を満たすサーバのうち、サーバで動作するＶＭの予約量と移動対象となるＶＭの物理資源の予約量とが最も近いサーバを選択する。かかるサーバを選択する方法の一例として、サーバで動作するＶＭの予約量の平均値が、移動対象のＶＭの予約量と近いサーバを選択する方法がある。また、例えば、次の式の計算結果が最も小さいサーバを選択する。
【００４４】
【数１】
0005544967.tif 000002
【００４５】
ステップ４２では、配置制御部１１が、処理対象サーバで動作する全てのＶＭを移動させることができるか否か、即ち、全てのＶＭについて、ステップ４１で示した基準を満たすサーバを選択することができたか否かを判定する。全てのＶＭを移動させることができるときには、ステップ４３に進み（Ｙｅｓ）、移動できないＶＭが存在するときには、本ルーチンを終了する。
【００４６】
ステップ４３では、ＶＭ制御部１２が、処理対象サーバで動作する全てのＶＭを、ステップ４１で配置制御部１１が選択した移動先サーバに夫々移動させる。
ステップ４４では、配置制御部１１が、ステップ４３で行ったＶＭの移動内容で、ＶＭ管理ＤＢ１４のＶＭテーブル１４Ｃを更新する。すなわち、配置制御部１１は、移動させたＶＭのサーバ名を、処理対象サーバから移動先のサーバへと変更する。
【００４７】
ステップ４５では、電源制御部１３が、処理対象サーバの電源をオフにして停止させる。
図１０は、ＶＭ移動ルーチンの処理を示すフローチャートである。
【００４８】
ステップ５１では、配置制御部１１が、処理対象サーバで動作するＶＭのうち１つのＶＭを選択する。
ステップ５２では、配置制御部１１が、ステップ５１で選択したＶＭの移動先となるサーバを選択する。この選択基準は、ステップ４１で示した選択基準と同様の基準を用いる。
【００４９】
ステップ５３では、配置制御部１１が、ステップ５１で選択したＶＭを移動させることができるか否か、即ち、ステップ４１で示した基準を満たすサーバを選択することができたか否かを判定する。ＶＭを移動させることができるときには、ステップ５４に進み（Ｙｅｓ）、一方、ＶＭを移動させることができないときには、ステップ５５に進む（Ｎｏ）。
【００５０】
ステップ５４では、配置制御部１１が、選択されたサーバにＶＭを移動させる。また、配置制御部１１は、当該ＶＭの移動内容で、ＶＭ管理ＤＢ１４のＶＭテーブル１４Ｃを更新する。即ち、配置制御部１１は、少なくとも、移動させたＶＭのサーバ名を、処理対象サーバから移動先サーバへと変更する。
【００５１】
ステップ５５では、電源制御部１３が、サーバ１〜４のうち、停止しているサーバの電源をオンにする。そして、配置制御部１１が、当該電源をオンにしたサーバにＶＭを移動させる。また、配置制御部１１は、当該ＶＭの移動内容で、ＶＭ管理ＤＢ１４のＶＭテーブル１４Ｃを更新する。なお、停止しているサーバが１つも存在しないときには、配置制御部１１は、ＶＭの移動を行わずに当該ルーチンを終了する。
【００５２】
ステップ５６では、合計必要ＣＰＵ量が処理対象サーバのＣＰＵ性能以下であり、かつ、合計必要メモリ量が処理対象サーバのメモリサイズ以下であるか否かを判定する。合計必要ＣＰＵ量が処理対象サーバのＣＰＵ性能以下であり、かつ、合計必要メモリ量が処理対象サーバのメモリサイズ以下であるときには、本サブルーチンを終了する（Ｙｅｓ）。一方、そうでないときには、ステップ５１に戻り（Ｎｏ）、次のＶＭについて処理を行う。
【００５３】
次に、ＶＭ配置調整処理（図６）において、サーバ停止ルーチン（図９）が呼び出される場合の処理につき、データの具体例を用いて説明する。
ＶＭ配置調整処理のステップ１５の判定において、図３に示すサーバテーブル１４Ｂのデータの具体例では、サーバ１の合計必要ＣＰＵ量が［０．６］であり、ＣＰＵ性能［２．０］に図２に示す使用率下限値［０．５］を乗じた値、即ち使用可能範囲の下限値［１．０］よりも少ない。また、合計必要メモリ量も［０．４］であり、メモリサイズ［４．０］に使用率下限値［０．５］を乗じた値、即ち使用可能範囲の下限値［２．０］よりも少ない。このため、配置制御部１１は、サーバ１の電源を停止させるべく、サーバ停止ルーチンを呼び出す。
【００５４】
このとき、サーバ１で動作しているＶＭは、図４に示すＶＭテーブル１４Ｃで示されるように、ＶＭ１のみである。そして、配置制御部１１は、ＶＭ１につき、移動先となるサーバを、ステップ４１の選択基準により選択する。ここで、ＶＭ１のＣＰＵ予約量は、図４のＶＭテーブル１４Ｃで示されるように［１．８］（すなわち、ＣＰＵ割当量［２．０］からＣＰＵ使用量［０．２］を差し引いた値）であり、メモリ予約量は、［０．８］（すなわち、メモリ割当量［１．０］からメモリ使用量［０．２］を差し引いた値）である。そして、図３のサーバテーブル１４Ｂを参照すると、上記ステップ４１の条件を満たし、かつ、平均ＣＰＵ予約量と移動対象のＶＭのＣＰＵ予約量［１．８］との差が小さく、また、平均メモリ予約量と移動対象のＶＭのメモリ予約量［０．２］との差が小さいサーバは、サーバ３である。このため、配置制御部１１は、サーバ３をＶＭ１の移動先サーバとして選択する。そして、ＶＭ制御部１２がＶＭ１をサーバ３に移動させる。この移動内容でＶＭテーブル１４Ｃを更新した結果が、図１１に示す内容となる。また、当該移動後に、各サーバにおける物理資源の使用状態を反映させたサーバテーブル１４Ｂが、図１２に示す内容となる。
【００５５】
さらに、ＶＭ配置調整処理（図６）において、ＶＭ移動ルーチン（図１０）が行われる場合につき、データの具体例を用いて説明する。
図１２に示すサーバテーブル１４Ｂのデータの具体例では、サーバ４は、合計必要ＣＰＵ量［３．２］がＣＰＵ性能［３．０］よりも大きい。このため、配置制御部１１は、ＶＭ配置調整処理のステップ１７の判定において、ＶＭ移動ルーチンを呼び出す。
【００５６】
このとき、サーバ４で動作しているＶＭは、図１１に示したＶＭテーブル１４Ｃで示されるように、ＶＭ６及びＶＭ７である。ここで、配置制御部１１は、まず、ＶＭ６を移動させるＶＭとして選択する。さらに、配置制御部１１は、ＶＭ６につき、移動先となるサーバを、ステップ５２の選択基準により選択する。ここで、図３のサーバテーブル１４Ｂを参照すると、上記ステップ４１の条件を満たし、かつ、平均ＣＰＵ予約量が、移動させるＶＭ６のＣＰＵ予約量［１．８］に近く、また、平均メモリ予約量が、移動させるＶＭ６のメモリ予約量［０．５］に近いサーバは、サーバ３である。このため、配置制御部１１は、サーバ３をＶＭ６の移動先サーバとして選択する。そして、ＶＭ制御部１２がＶＭ６をサーバ３に移動させる。なお、当該移動内容で更新した結果のＶＭテーブル１４Ｃが、図１３に示す内容となる。この段階で、サーバ４の合計必要ＣＰＵ量は［２．５］となり、ＣＰＵ性能［３．０］よりも小さい。このため、ＶＭ７については移動せずに、処理を終了する。
【００５７】
かかるＶＭ管理システムの処理によれば、ＶＭ配置調整処理において、複数のサーバのうち、移動対象となるＶＭの必要資源量が確保できるサーバが、ＶＭの移動先サーバとして選択される。このため、サーバで動作するＶＭのうちの１つにおいて負荷が急上昇したとしても、ＶＭの予約量、即ち、ＶＭの動作にさらに必要となると見込まれる物理資源量が確保されているため、物理資源不足による性能低下を回避することができる。したがって、人手により必要資源量の見積りやチューニングを行わなくても、適切に資源を確保でき、また、ＳＬＡ（Service Level Agreement）違反などを防ぐことができる。
【００５８】
さらに上記条件に加え、物理資源の平均予約量が移動対象となるＶＭの物理資源の予約量と近いサーバが、ＶＭの移動先サーバとして選択される。その結果、予約量が近いＶＭ同士が同じサーバに集められ、予約量の大きいVMと小さいVMとで、配置されるサーバが分離されることとなる。換言すれば、負荷が急上昇したときにさらに必要となる物理資源量が近い仮想マシン同士が同じサーバに集められることとなる。このため、最小限の物理資源量を確保するだけで、サーバで動作する各ＶＭにつき予約量を確保しつつ、効率的にＶＭを集約することができる。
【００５９】
かかる効果につき、具体例を用いて図を参照しつつ説明する。なお、ここでは説明を簡略化するため、ＣＰＵの使用状態のみに着目して説明する。例えば、図１４（Ａ）及び（Ｂ）は、ＣＰＵ割当量が夫々１ＧＨｚのＶＭであって、ＣＰＵ使用率が１００％（即ち、ＣＰＵ使用量が１ＧＨｚであり、ＣＰＵ予約量は０ＧＨｚ）のＶＭ２つ、ＣＰＵ使用率が２０％（即ち、ＣＰＵ使用量が０．２ＧＨｚであり、ＣＰＵ予約量は０．８ＧＨｚ）のＶＭ６つを、ＣＰＵ性能が２ＧＨｚのサーバ２つに配置するケースである。この場合、本ＶＭ管理システムによれば、予約量が近いＶＭ同士が同じサーバに集約されるため、図１４（Ａ）に示すような配置となる。ここで、サーバ１は、いずれのＶＭも予約量が０であり、負荷の急上昇によりこれ以上のＣＰＵ資源を必要とすることがないため、物理資源が不足することはない。一方、サーバ２についても、いずれかのＶＭの負荷が一時的に急上昇して使用率が１００％になったとしても、不使用領域が０．８ＧＨｚ確保されているため、ＶＭの性能低下を防ぐことができる。一方、図１４（Ｂ）は、これらのＶＭを、本ＶＭ管理システムによらずにサーバ２台に集約した場合の一例である。かかる配置においてＣＰＵ使用率２０％のＶＭのうちのいずれか１つのＣＰＵ使用率が一時的に急上昇したとき、サーバ１、サーバ２ともに、不使用領域が０．４ＧＨｚしか確保されていないため、ＣＰＵ使用率が６０％を超えた時点で、ＣＰＵ資源不足による性能低下のおそれがある。このように、本ＶＭ管理システムによれば、各ＶＭの負荷の一時的な急上昇に備えて物理資源を確保しつつ、ＶＭを効率的に同じサーバに集約して稼動サーバ台数を抑え、消費電力等のコスト削減を図ることができる。
【００６０】
さらに、上記実施例では、同一サーバで動作するＶＭの必要資源量の合計がサーバの使用量の下限値を下回っているときに、他のサーバへとＶＭを移動させ、当該サーバを停止させている。こうすることにより、稼動サーバ台数をさらに減らし、一層コスト削減を図ることができる。
【００６１】
なお、上記実施例のサーバ停止ルーチン及びＶＭ移動ルーチンでは、ＶＭの移動先サーバの選択において（ステップ４１及び５２）、サーバで動作するＶＭの予約量が移動対象となるＶＭの予約量と最も近いサーバを選択している。しかし、最も近いサーバに限定することなく、サーバで動作するＶＭの予約量と移動対象となるＶＭの予約量とが他のサーバよりも近いサーバを優先して選択すれば、予約量が近いＶＭを同じサーバに集約することは可能である。
【００６２】
さらに、上記ＶＭの移動先サーバの選択では、移動対象となるＶＭを移動した後においても、移動先となるサーバにおける必要資源量がサーバの物理資源の性能を超えないサーバであることを条件として、移動先サーバを選択している。しかしながら、サーバにおける必要資源量がサーバの物理資源の性能を超えるおそれがある場合であっても、サーバで動作するＶＭの予約量が移動対象となるＶＭの予約量と近いという条件を満たしたサーバであれば、当該サーバを移動先サーバとしてＶＭの移動を行うようにしてもよい。この場合、例えば、移動先となるサーバですでに動作しているＶＭのうち、移動対象となるＶＭの予約量との差が他のＶＭに比べて大きいＶＭをさらに他のサーバに移動させて物理資源量を確保した上で、ＶＭの移動を行うようにしてもよい。
【００６３】
また、上記実施例のＶＭ配置調整処理では、サーバの必要資源量が物理資源の性能を超えているときにのみ（ステップ１７）、ＶＭを移動させて配置調整を行っている。こうすることにより、物理資源量が不足する蓋然性の高いサーバの負荷を減らし、性能低下を未然に防ぐとができるとともに、無条件に配置調整を行う場合と比べると、ＶＭ移動回数を抑制しつつ、ＶＭを徐々に適切な配置にすることができる。しかし、かかる場合に限らず、例えば所定時間毎に各サーバに配置されたＶＭの予約量を監視し、予約量の近いＶＭ同士が同一サーバに配置されるように移動処理を行ってもよい。
【００６４】
さらに、ＶＭ移動ルーチンにおいて、移動対象とするＶＭを選択するとき（ステップ５１）に、予約量が大きいＶＭから優先して選択するようにしてもよい。このようにすれば、予約量が大きい、即ち、負荷が少ない可能性の高いＶＭから順に他のサーバに移動されるため、例えば、ＶＭの移動処理に伴い、ＶＭで処理している業務に支障が生じることを、できる限り回避することができる。
【００６５】
また、設定パラメータ（α）及び使用量下限値（ｓ）の値については、ＣＰＵ及びメモリの夫々について異なる値を設定してもよい。
ところで、上記第１実施例では、ＣＰＵ及びメモリの両方の使用状態に基づいて、ＶＭの配置を制御したが、例えば、ＣＰＵの使用状態のみに基づいてＶＭの配置を制御してもよい。ＣＰＵの使用状態のみに基づいてＶＭの配置を制御する変形例について、上記第１実施例との相違点を説明する。
【００６６】
サーバテーブル１４Ｂは、サーバ名と、電源状態と、ＣＰＵに関連する項目、すなわち、当該サーバのＣＰＵ性能、合計ＣＰＵ使用量、ＣＰＵ不使用量、合計ＣＰＵ予約量、合計必要ＣＰＵ量及び平均ＣＰＵ予約量を有していればよい。また、同様に、ＶＭテーブル１４Ｃについても、ＶＭ名、当該ＶＭが動作しているサーバ名、当該ＶＭのＣＰＵ割当量（ＧＨｚ）、ＣＰＵ使用量（ＧＨｚ）、ＣＰＵ予約量（ＧＨｚ）、必要ＣＰＵ量（ＧＨｚ）を有していればよい。
【００６７】
そして、ＶＭ新規追加処理（図５）においては、配置制御部１１は、ステップ１において、サーバ１〜４から、各サーバで動作するＶＭによるＣＰＵ使用量を特定可能な情報を収集する。そして、配置制御部１１は、ステップ２においてＣＰＵ予約量を算出し、ステップ４において、サーバ毎の合計必要ＣＰＵ量を算出する。そして、ステップ５において、合計必要ＣＰＵ量が最も小さいサーバにＶＭを配置する。
【００６８】
また、ＶＭ配置調整処理（図６）においては、配置制御部１１は、ステップ１５において、合計必要ＣＰＵ量が、処理対象サーバのＣＰＵ使用量の下限値よりも下回っているか否かを判定する。そして、合計必要ＣＰＵ量が、処理対象サーバのＣＰＵ使用量の下限値よりも下回っているときに、ステップ１６において、処理対象サーバにつき、サーバを停止させるサブルーチンを呼び出す。また、配置制御部１１は、ステップ１７において、合計必要ＣＰＵ量が、処理対象サーバのＣＰＵ性能を上回っているか否かを判定する。そして、配置制御部１１は、合計必要ＣＰＵ量が、処理対象サーバのＣＰＵ性能を上回っていれば、ステップ１８において、ＶＭ移動ルーチンを呼び出す。
【００６９】
さらに、サーバ停止ルーチン（図９）のステップ４１及びＶＭ移動ルーチン（図１０）のステップ５２では、ＶＭの移動先のサーバの選択基準をＣＰＵの使用状態のみにする。すなわち、次の基準を満たすものを選択すればよい。
「（移動先サーバの合計必要ＣＰＵ量）＋（移動対象となるＶＭの必要ＣＰＵ量）≦（移動先サーバのＣＰＵ性能）」
さらに、上記基準を満たすサーバのうち、サーバで動作するＶＭのＣＰＵ予約量と移動対象となるＶＭのＣＰＵ予約量との差が最も小さいサーバを選択する。かかるサーバを選択する方法の一例として、サーバで動作するＶＭのＣＰＵ予約量の平均値が、移動対象のＶＭのＣＰＵ予約量と近いサーバを選択する方法がある。
【００７０】
また、ＣＰＵの使用状態のみに基づいてＶＭの配置を制御する変形例と同様に、メモリの使用状態のみに基づいてＶＭの配置を制御することも可能である。
［第２実施例］
第２実施例におけるＶＭ管理システムでは、ＣＰＵ予約量及びメモリ予約量を、サーバにおける過去の物理資源の使用状態を考慮して算出する。なお、第１実施例と同じ構成については説明を省略する。
【００７１】
図１５は、第２実施例におけるＶＭ管理システムの全体構成である。第２実施例では、上記第１実施例における全体構成に対し、ＶＭ管理ＤＢ１４において、さらに、履歴テーブル１４Ｄを有する。
【００７２】
次に、第２実施例におけるＶＭ管理ＤＢ１４のうち、履歴テーブル１４Ｄのデータ構造について説明する。なお、設定パラメータ１４Ａ、サーバテーブル１４Ｂ及びＶＭテーブル１４Ｃは、第１実施例と同様であるため、説明を省略する。
【００７３】
履歴テーブル１４Ｄは、過去の所定期間における、サーバ１〜４で動作する各ＶＭのＣＰＵ使用量及びメモリ使用量の最大値の履歴を示す情報が格納されるテーブルである。そして、履歴テーブル１４Ｄは、図１６に示すように、ＶＭ名、当該ＶＭにおける、本日から３０日前までの夫々の日におけるＣＰＵ使用量の最大値、過去３０日間の通算のＣＰＵ使用量の最大値を有する。また、履歴テーブル１４Ｄは、当該ＶＭにおける、本日から３０日前までの夫々の日のメモリ使用量の最大値、過去３０日間の通算のメモリ使用量の最大値を有する。なお、履歴テーブル１４Ｄで記録を保持する期間（３０日）を過ぎた古い情報については、配置制御部１１が削除する。また、履歴テーブル１４Ｄで記録を保持する期間は、３０日に限らず、任意に変更することができる。
【００７４】
次に、管理マネージャ１０が実行する処理について説明する。
ここで、ＶＭ新規追加処理（図５）、ＶＭ配置調整処理（図６）、サーバ停止ルーチン（図９）及びＶＭ移動ルーチン（図１０）の処理は、夫々第１実施例と同様であるため、説明を省略する。
【００７５】
図１７は、履歴記録処理を示すフローチャートである。この処理は、例えば、予め管理マネージャ１０において設定された所定時間毎に実行される。
ステップ６１では、配置制御部１１が、サーバ１〜４から、各サーバで動作するＶＭによるＣＰＵ及びメモリの使用量を特定可能な情報を収集する。
【００７６】
ステップ６２では、ＣＰＵ又はメモリのいずれか一方又は両方の使用量が、履歴テーブル１４Ｄに記録された本日の最大値を超えていれば、ステップ６３に進む一方（Ｙｅｓ）、いずれの使用量も本日の使用量の最大値を超えていなければ、履歴記録処理を終了する（Ｎｏ）。
【００７７】
ステップ６３では、ＣＰＵ使用量が、履歴テーブル１４Ｄにおける本日のＣＰＵ使用量の最大値を超えていれば、ステップ６１で収集した使用量で、履歴テーブル１４Ｄの本日のＣＰＵ使用量の最大値を更新する。同様に、メモリ使用量が、履歴テーブル１４Ｄにおける本日のメモリ使用量の最大値を超えていれば、ステップ６１で収集した使用量で、履歴テーブル１４Ｄの本日のメモリ使用量の最大値を更新する。
【００７８】
ステップ６４では、ＣＰＵ又はメモリのいずれか一方又は両方の使用量が、過去３０日間における通算の最大値を超えていれば、ステップ６５に進む一方、いずれの使用量も通算の使用量の最大値を超えていなければ、履歴記録処理を終了する。
【００７９】
ステップ６５では、ＣＰＵ使用量が、履歴テーブル１４Ｄにおける通算のＣＰＵ使用量の最大値を超えていれば、ステップ６１で収集した使用量で、履歴テーブル１４ＤのＣＰＵ使用量の通算の最大値を更新する。同様に、メモリ使用量が、履歴テーブル１４Ｄにおける通算のメモリ使用量の最大値を超えていれば、ステップ６１で収集した使用量で、履歴テーブル１４Ｄのメモリ使用量の通算の最大値を更新する。
【００８０】
図１８は、ＣＰＵ予約量算出ルーチンの処理を示すフローチャートである。
ステップ７１では、配置制御部１１が、サーバ１〜４で動作する各ＶＭのＣＰＵ予約量を、過去のＣＰＵ使用量を考慮して算出する。具体的には、配置制御部１１は、ＣＰＵ予約量を、例えば次の式で算出する。
【００８１】
ｍｉｎ（ＣＰＵ割当量，履歴テーブル１４ＤのＣＰＵ使用量の最大値）−（ＣＰＵ使用量）
即ち、ＣＰＵ割当量又は履歴テーブル１４ＤのＣＰＵ使用量の最大値のいずれか小さいほうの値から、ＣＰＵ使用量を差し引いて算出する。
そして、配置制御部１１は、ＶＭ毎のＣＰＵ予約量でＶＭテーブル１４Ｃを更新する。
【００８２】
ステップ７２では、配置制御部１１が、サーバ１〜４で動作しているＶＭの合計ＣＰＵ予約量及び平均ＣＰＵ予約量をサーバ毎に算出し、サーバテーブル１４Ｂを更新する。
図１９は、メモリ予約量算出ルーチンの処理を示すフローチャートである。
【００８３】
ステップ８１では、配置制御部１１が、サーバ１〜４で動作する各ＶＭのメモリ予約量を、過去のメモリ使用量を考慮して算出する。具体的には、配置制御部１１は、メモリ予約量を、例えば次の式で算出する。
【００８４】
ｍｉｎ（メモリ割当量，履歴テーブル１４Ｄのメモリ使用量の最大値）−（メモリ使用量）
即ち、メモリ割当量又は履歴テーブル１４Ｄのメモリ使用量の最大値のいずれか小さいほうの値から、メモリ使用量を差し引いて算出する。
そして、配置制御部１１は、ＶＭ毎のメモリ予約量でＶＭテーブル１４Ｃを更新する。
【００８５】
ステップ８２では、配置制御部１１が、各サーバで動作しているＶＭの合計メモリ予約量及び平均メモリ予約量をサーバ毎に算出し、サーバテーブル１４Ｂを更新する。
次に、上記第２実施例におけるＣＰＵ予約量算出ルーチンの処理について、データの具体例を用いて説明する。
【００８６】
配置制御部１１が、図２０に示したＶＭテーブル１４ＣのＣＰＵ割当量及びＣＰＵ使用量に基づき、図２１に示した履歴テーブル１４Ｄの最大値を考慮してＣＰＵ予約値を算出すると、次のようになる。例えば、ＶＭ１では、ＣＰＵ割当量が［２．０］である一方、履歴テーブル１４ＤのＣＰＵ使用量の通算の最大値も［２．０］で等しい。このため、ステップ７１の処理により算出されるＣＰＵ予約量は、ＣＰＵ割当量又はＣＰＵ使用量の通算の最大値［２．０］からＣＰＵ使用量［０．２］を差し引いた［１．８］となる。一方で、例えば、ＶＭ２では、ＣＰＵ割当量が［３．０］である一方、履歴テーブル１４ＤのＣＰＵ使用量の通算の最大値は［２．８］であり、ＣＰＵ割当量よりも小さい。このため、ステップ７１の処理により算出されるＣＰＵ予約量は、ＣＰＵ使用量の通算の最大値［２．８］からＣＰＵ使用量［２．８］を差し引いた［０．０］となる。
【００８７】
かかる第２実施例に係るＶＭ管理システムの処理によれば、第１実施例に比べ、さらに次のような効果を奏する。即ち、物理資源の予約量が、過去の物理資源の使用状態を考慮して算出されるため、実際にＶＭが使用する可能性のある物理資源量により近い値となる。したがって、精度の高い予約量に基づいてＶＭの配置が決定されこととなるため、より的確にＶＭを配置することが可能となる。例えば、ＶＭの処理内容によっては、ＶＭにより使用される実際の物理資源量は、ＶＭに対する物理資源の割当量よりも少ないことがあり得る。この場合、上記の予約量の具体的な算出例に基づいて予約量を算出すると、物理資源の割当量よりも実際に使用されている物理資源量のほうが小さければ、実際に使用されている物理資源量から物理資源の使用量を差し引いた値が予約量となる。したがって、実質的に使用する見込みのない物理資源量が予約量に含まれることを回避でき、無駄な物理資源量を確保してＶＭを配置してしまうことを防ぐことができる。
【００８８】
なお、第２実施例に係るＶＭ管理システムにおいても、第１実施例と同様に、ＣＰＵのみの使用状態又はメモリのみの使用状態を考慮してＶＭの配置を行ってもよい。
以上の実施形態に関し、更に以下の付記を開示する。
【００８９】
（付記１）  仮想マシンが夫々動作する複数のサーバと通信可能なコンピュータに、前記複数のサーバの夫々で動作する各仮想マシンが使用している物理資源量を特定可能な情報を収集する収集手順と、前記収集した情報により特定される、各仮想マシンが使用している物理資源量に基づき、各仮想マシンの動作にさらに必要となると見込まれる物理資源量である予約量を、各仮想マシンについて夫々算出する算出手順と、前記複数のサーバの夫々で動作する仮想マシンのうち少なくとも１つを移動対象の仮想マシンとして選択するとともに、当該移動対象の仮想マシンを移動させる先の移動先サーバを前記複数のサーバのいずれかから選択する際に、当該移動先サーバで動作する仮想マシンの予約量と、当該移動対象となる仮想マシンの予約量との差が、他のサーバの仮想マシンの予約量と当該移動対象となる仮想マシンの予約量との差よりも小さくなるように選択する選択手順と、前記移動対象の仮想マシンを、前記移動先サーバに移動させる移動手順と、を実行させることを特徴とする仮想マシン管理プログラム。
【００９０】
（付記２）  前記算出手順は、仮想マシンへの物理資源の割当量から当該仮想マシンによる物理資源の使用量を差し引いた値を各仮想マシンの前記予約量として夫々算出することを特徴とする付記１記載の仮想マシン管理プログラム。
【００９１】
（付記３）  前記算出手順は、各サーバで動作する仮想マシンの前記予約量の平均値をサーバ毎に算出し、前記選択手順は、移動対象となる仮想マシンの予約量とサーバの予約量の平均値との差が他のサーバよりも小さいサーバを移動先サーバとして選択することを特徴とする付記１又は２に記載の仮想マシン管理プログラム。
【００９２】
（付記４）  前記複数のサーバの夫々で動作する各仮想マシンが使用している物理資源の使用量を履歴として記憶装置に記録する履歴記録手順をさらに有し、前記算出手順は、前記履歴を参照し、各仮想マシンが使用している物理資源量及び過去の所定期間内における仮想マシンによる物理資源の使用量に基づいて、前記予約量を算出することを特徴とする付記１〜３のいずれか１つに記載の仮想マシン管理プログラム。
【００９３】
（付記５）  前記算出手順は、前記履歴として記録された物理資源の使用量の中から、過去の所定期間内における仮想マシンによる物理資源の最大使用量を特定し、前記最大使用量が仮想マシンへの物理資源の割当量と一致するときには、仮想マシンへの物理資源の割当量から当該仮想マシンによる物理資源の使用量を差し引いた値を各仮想マシンの前記予約量として夫々算出する一方、前記最大使用量が仮想マシンへの物理資源の割当量よりも少ないときには、前記最大使用量から当該仮想マシンによる物理資源の使用量を差し引いた値を各仮想マシンの前記予約量として夫々算出することを特徴とする付記４記載の仮想マシン管理プログラム。
【００９４】
（付記６）  前記算出手順は、同一サーバで動作する全ての仮想マシンについて、各仮想マシンが使用している物理資源量及び前記予約量の全部又は一部を合算したサーバ毎の必要資源量を算出し、前記選択手順は、前記複数のサーバのいずれかにおいて、サーバの必要資源量が当該サーバの物理資源量を超えているときに、当該サーバで動作する仮想マシンのうち少なくとも１つを移動対象とすることを特徴とする付記１〜５のいずれか１つに記載の仮想マシン管理プログラム。
【００９５】
（付記７）  前記算出手順は、同一サーバで動作する全ての仮想マシンについて、各仮想マシンが使用している物理資源量及び前記予約量の全部又は一部を合算したサーバ毎の必要資源量を算出し、前記選択手順は、同一サーバで動作する全ての仮想マシンにより使用されている物理資源量が、サーバにおいて設定された物理資源量の使用可能範囲の下限値よりも下回っているサーバが存在するときに、当該サーバで動作する全ての仮想マシンを移動対象とし、前記配置手順は、前記配置対象となる仮想マシンを前記配置先のサーバに配置させた後に、サーバを停止させることを特徴とする付記１〜６のいずれか１つに記載の仮想マシン管理プログラム。
【００９６】
（付記８）  前記物理資源は、ＣＰＵ及び／又はメモリであることを特徴とする付記１〜７のいずれか１つに記載の仮想マシン管理プログラム。
【００９７】
（付記９）  仮想マシンが夫々動作する複数のサーバと通信可能な仮想マシン管理装置であって、前記複数のサーバの夫々で動作する各仮想マシンが使用している物理資源量を特定可能な情報を収集する収集手段と、前記収集した情報により特定される、各仮想マシンが使用している物理資源量に基づき、各仮想マシンの動作にさらに必要となると見込まれる物理資源量である予約量を、各仮想マシンについて夫々算出する算出手段と、前記複数のサーバの夫々で動作する仮想マシンのうち少なくとも１つを移動対象の仮想マシンとして選択するとともに、当該移動対象の仮想マシンを移動させる先の移動先サーバを前記複数のサーバのいずれかから選択する際に、当該移動先サーバで動作する仮想マシンの予約量と、当該移動対象となる仮想マシンの予約量との差が、他のサーバの仮想マシンの予約量と当該移動対象となる仮想マシンの予約量との差よりも小さくなるように選択する選択手段と、前記移動対象の仮想マシンを、前記移動先サーバに移動させる移動手段と、を有することを特徴とする仮想マシン管理装置。
【符号の説明】
【００９８】
１〜４  サーバ
１０  管理マネージャ
１１  配置制御部
１２  ＶＭ制御部
１３  電源制御部
１４  ＶＭ管理ＤＢ
１４Ａ  設定パラメータ
１４Ｂ  サーバテーブル
１４Ｃ  ＶＭテーブル
１４Ｄ  履歴テーブル
【図１】
0005544967.tif 000003
【図２】
0005544967.tif 000004
【図３】
0005544967.tif 000005
【図４】
0005544967.tif 000006
【図５】
0005544967.tif 000007
【図６】
0005544967.tif 000008
【図７】
0005544967.tif 000009
【図８】
0005544967.tif 000010
【図９】
0005544967.tif 000011
【図１０】
0005544967.tif 000012
【図１１】
0005544967.tif 000013
【図１２】
0005544967.tif 000014
【図１３】
0005544967.tif 000015
【図１４】
0005544967.tif 000016
【図１５】
0005544967.tif 000017
【図１６】
0005544967.tif 000018
【図１７】
0005544967.tif 000019
【図１８】
0005544967.tif 000020
【図１９】
0005544967.tif 000021
【図２０】
0005544967.tif 000022
【図２１】
0005544967.tif 000023