(57)【特許請求の範囲】
【請求項１】
複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する第１の情報および前記複数の既存仮想マシンそれぞれの過去の負荷状況を示す履歴情報を記憶する記憶部と、
前記複数の物理マシンの何れかに過去の負荷情報が存在しない新しい仮想マシンを配置する際に、当該仮想マシンの利用形態に関する第２の情報と、前記第１の情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの前記履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、演算部と、
を有する負荷分散管理装置。
【請求項２】
前記演算部は、新たに配置する前記仮想マシンと同じユーザにより利用されている前記複数の既存仮想マシンの中から前記既存仮想マシンを１つ以上選択し、選択した前記既存仮想マシン毎の過去の所定時点における負荷の合計を、選択した前記既存仮想マシンの数に１を加算した数で割った平均負荷を用いて、前記配置先候補の物理マシンの負荷を予測する、請求項１記載の負荷分散管理装置。
【請求項３】
前記演算部は、２以上の既存仮想マシンを選択した場合、前記２以上の既存仮想マシンそれぞれの負荷の差または偏差に応じて、前記平均負荷を用いて前記配置先候補の物理マシンの負荷を予測するか、または、前記２以上の既存仮想マシンそれぞれの負荷の最大値を用いて前記配置先候補の物理マシンの負荷を予測するか、を選択する、請求項２記載の負荷分散管理装置。
【請求項４】
前記演算部は、選択した前記既存仮想マシンの数に基づいて、前記履歴情報に含まれる当該既存仮想マシン毎の負荷の情報を補正する、請求項２または３記載の負荷分散管理装置。
【請求項５】
前記演算部は、前記第１および前記第２の情報に加え、前記複数の既存仮想マシンそれぞれの作成日時に基づいて、前記既存仮想マシンを選択する、請求項１記載の負荷分散管理装置。
【請求項６】
前記演算部は、前記複数の既存仮想マシンのうち、作成日時が新しく、かつ、負荷が所定値よりも高い既存仮想マシンを優先して複数選択し、選択した前記既存仮想マシン毎の過去の所定時点の負荷を用いて、前記配置先候補の物理マシンの負荷を予測する、請求項５記載の負荷分散管理装置。
【請求項７】
前記演算部は、前記第１および前記第２の情報に含まれる前記利用形態に関する複数の項目それぞれの設定値の一致度に基づいて、前記既存仮想マシンを選択する、請求項１乃至６の何れか１項に記載の負荷分散管理装置。
【請求項８】
コンピュータが、
複数の物理マシンの何れかに過去の負荷情報が存在しない新しい仮想マシンを配置する際に、前記仮想マシンの利用形態に関する情報と、前記複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、
制御方法。
【請求項９】
複数の物理マシンの何れかに過去の負荷情報が存在しない新しい仮想マシンを配置する際に、前記仮想マシンの利用形態に関する情報と、前記複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は負荷分散管理装置、制御方法およびプログラムに関する。
【背景技術】
【０００２】
情報処理の分野では、物理的なコンピュータ（物理マシンや物理ホストと呼ぶことがある）上で、複数の仮想的なコンピュータ（仮想マシンや論理ホストと呼ぶことがある）を動作させる仮想化技術が利用されている。各仮想マシン上では、ＯＳ（Operating System）などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。例えば、ハイパーバイザと呼ばれるソフトウェアが、ＣＰＵ（Central Processing Unit）の処理能力やＲＡＭ（Random Access Memory）の記憶領域を、演算のリソースとして複数の仮想マシンに割り振ることがある。
【０００３】
ところで、物理マシンが備えるリソースは有限である。一方、ユーザの利用状況により仮想マシンの処理負荷（すなわち、仮想マシンに割り当てたリソースの負荷）も時間経過に伴い増減し得る。そこで、複数の物理マシンを用いて複数の仮想マシンを動作させる際に、当初の仮想マシンの配置を改めることが考えられている。
【０００４】
例えば、仮想サーバの現在までの所定期間における負荷の情報から、同仮想サーバについて、毎週、各時間の負荷値についての移動平均処理を実行することで、同仮想サーバの将来の負荷を予測する提案がある。この提案では、仮想サーバの負荷値の総和が物理サーバの処理能力の許容範囲内となるよう仮想サーバの配置換えを行う。
【０００５】
また、任意の物理サーバでリソース使用率が予め設定した高負荷閾値を超えた場合に、リソース使用率が比較的低い他の物理サーバに仮想サーバを移動させることで、各物理サーバのリソース使用率の平準化を行う提案もある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１０／１４０１８３号
【特許文献２】国際公開第２００８／１０２７３９号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
複数の物理マシンに対し、配置済の複数の仮想マシン（既存仮想マシン）に加え、新しい仮想マシンが配置されることもある。新しい仮想マシンについては過去の負荷情報が存在しないため、上記方法により当該仮想マシンの負荷を予測することは困難である。そこで、新しい仮想マシンの配置先の物理マシンをどのようにして決定するかが問題となる。
【０００８】
例えば、新しい仮想マシンの配置先の物理マシンを、ラウンドロビン（物理マシンを順番に選択する方法）で決定したり、配置時点で負荷が最小の物理マシンと決定したりすることも考えられる。しかし、新しい仮想マシンを配置した物理マシンの負荷が、配置当初は許容範囲内であっても、それ以降も許容範囲内であるとは限らない。新たに配置した仮想マシンの負荷が想定外に高まると、物理マシンの負荷が過大になるおそれがある。
【０００９】
１つの側面では、本発明は、配置先の物理マシンを適切に選択できる負荷分散管理装置、制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、負荷分散管理装置が提供される。この負荷分散管理装置は、記憶部と演算部とを有する。記憶部は、複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する第１の情報および複数の既存仮想マシンそれぞれの過去の負荷状況を示す履歴情報を記憶する。演算部は、複数の物理マシンの何れかに過去の負荷情報が存在しない新しい仮想マシンを配置する際に、当該仮想マシンの利用形態に関する第２の情報と、第１の情報とに基づいて既存仮想マシンを選択し、選択した既存仮想マシンの履歴情報を用いて、仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて仮想マシンの配置先の物理マシンを決定する。
【００１１】
また、１つの態様では、制御方法が提供される。この制御方法では、コンピュータが、複数の物理マシンの何れかに過去の負荷情報が存在しない新しい仮想マシンを配置する際に、当該仮想マシンの利用形態に関する情報と、複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する情報とに基づいて既存仮想マシンを選択し、選択した既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて仮想マシンの配置先の物理マシンを決定する。
【００１２】
また、１つの態様では、プログラムが提供される。このプログラムは、複数の物理マシンの何れかに過去の負荷情報が存在しない新しい仮想マシンを配置する際に、当該仮想マシンの利用形態に関する情報と、複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する情報とに基づいて既存仮想マシンを選択し、選択した既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて仮想マシンの配置先の物理マシンを決定する、処理をコンピュータに実行させる。
【発明の効果】
【００１３】
１つの側面では、配置先の物理マシンを適切に選択できる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の負荷分散管理装置の例を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】管理サーバのハードウェア例を示す図である。
【図４】仮想マシンの例を示す図である。
【図５】管理サーバの機能例を示す図である。
【図６】物理マシン管理テーブルの例を示す図である。
【図７】ストレージ管理テーブルの例を示す図である。
【図８】閾値テーブルの例を示す図である。
【図９】ＶＭ管理テーブルの例を示す図である。
【図１０】負荷履歴テーブルの例を示す図である。
【図１１】ＶＭタイプテーブルの例を示す図である。
【図１２】負荷収集処理の例を示すフローチャートである。
【図１３】ＶＭ配置処理の例を示すフローチャートである。
【図１４】物理マシン選択処理の例を示すフローチャートである。
【図１５】現在のＣＰＵ／ＮＷ使用量の予測の例を示すフローチャートである。
【図１６】他の方法による予測の例を示すフローチャートである。
【図１７】既存ＶＭのサンプリングの例を示す図である。
【図１８】ＣＰＵ／ＮＷ使用量の未来予測の例を示すフローチャートである。
【図１９】他の方法による未来予測の例を示すフローチャートである。
【図２０】物理マシンの未来の負荷の予測例を示す図である。
【図２１】ストレージ選択処理の例を示すフローチャートである。
【図２２】負荷履歴補正処理の例を示すフローチャートである。
【図２３】新規ＶＭの配置例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の負荷分散管理装置の例を示す図である。負荷分散管理装置１は、ネットワークを介して物理マシン２，３，４と通信可能である。物理マシン２，３，４は、ＣＰＵやＲＡＭなどの物理的なリソースを用いて仮想マシンを動作させる。物理マシン２，３，４は、ハイパーバイザを実行してもよい。例えば、ハイパーバイザが、物理マシン２，３，４の物理的なリソースを仮想マシンに割り当て、物理マシン２，３，４上で仮想マシンを動作させてもよい。
【００１６】
負荷分散管理装置１は、物理マシン２，３，４に対する仮想マシンの配置を管理することで、物理マシン２，３，４の負荷を分散させる。負荷分散管理装置１は、記憶部１ａおよび演算部１ｂを有する。
【００１７】
記憶部１ａは、ＲＡＭなどの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、ＣＰＵ、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。演算部１ｂはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１８】
記憶部１ａは、物理マシン２，３，４に配置済みである既存の仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂそれぞれの利用形態に関する第１の情報を記憶する。既存の仮想マシン（既存仮想マシン）とは、現時点よりも前に物理マシン２，３，４上で動作した実績のある仮想マシンである。
【００１９】
仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂそれぞれの利用形態に関する第１の情報は、仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂがどのように利用されているかを示す情報である。第１の情報は、例えば仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂそれぞれに関する次のような情報を含む。（１）スペック（割り当てられたリソース量）の情報。（２）利用されるソフトウェア（ＯＳやミドルウェアなどを含む）の情報。（３）主な用途（例えば、ＧＵＩ（Graphical User Interface）提供、業務アプリケーション実行、または、データベース管理など）の情報。（４）接続するネットワークの数。
【００２０】
記憶部１ａは、仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂそれぞれの過去の負荷状況を示す履歴情報を記憶する。履歴情報は、仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂそれぞれによるリソース（物理マシンが備えるＣＰＵやＲＡＭなど）の使用率や通信量などで表される負荷の情報を含む。
【００２１】
演算部１ｂは、物理マシン２，３，４の何れかに仮想マシンを新たに配置する際に、記憶部１ａに記憶された第１の情報と、配置対象の仮想マシン（新規仮想マシン）の利用形態に関する第２の情報とに基づいて既存仮想マシンを選択する。演算部１ｂは、既存仮想マシンを１つ選択してもよいし、複数選択してもよい。
【００２２】
配置対象の仮想マシンの利用形態に関する第２の情報は、新規仮想マシンがどのように利用されるかを示す情報である。例えば、第２の情報は、第１の情報の例と同様に、スペック、利用されるソフトウェア、主な用途および接続するネットワーク数などの情報を含み得る。例えば、演算部１ｂは、新規仮想マシンのスペックや利用されるソフトウェアなどの情報５を取得する。情報５の内容は、例えば、新規仮想マシンの配置要求とともにユーザによって指定される。演算部１ｂは、取得した情報５に応じて、新規仮想マシンの利用形態に関する第２の情報を特定する。
【００２３】
演算部１ｂは、仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂそれぞれの第１の情報と第２の情報とを対比することで、仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂの少なくとも何れかを選択する。例えば、演算部１ｂは、新規仮想マシンと上記（１）〜（４）の情報が一致あるいは近似する既存仮想マシンを選択する。
【００２４】
より具体的には、演算部１ｂは、上記（１）〜（４）の各情報の全部または一部が新規仮想マシンと一致する既存仮想マシンを選択することが考えられる。あるいは、演算部１ｂは、上記（１）〜（４）の各情報の一致の度合い（差が小さい程、一致の度合いを大きくする）を求め、上記（１）〜（４）それぞれの情報の一致の度合いの合計が最大となる既存仮想マシンを選択してもよい。（２）および（３）の情報については、利用されるソフトウェアの機能の類似性や用途の類似性に応じて、ソフトウェアの機能同士、あるいは仮想マシンの用途同士の一致の度合いを定めた情報を記憶部１ａに予め格納しておいてもよい。そうすれば、演算部１ｂは、記憶部１ａに記憶された当該情報を参照して、（２）や（３）の項目の一致の度合いを決定できる。
【００２５】
演算部１ｂは、選択した既存仮想マシンの過去の負荷状況を示す履歴情報を記憶部１ａから取得する。演算部１ｂは、当該履歴情報を用いて、新規仮想マシンの配置先候補の物理マシンの負荷を予測する。予測対象の期間（例えば、１週間や１カ月など）は予め定められる。
【００２６】
例えば、演算部１ｂは、既存仮想マシンとして仮想マシン３ａを選択しているとする。演算部１ｂは、仮想マシン３ａの過去の負荷状況を示す履歴情報を用いて、物理マシン２，３，４に新規仮想マシンを配置した場合の未来の負荷を予測する。例えば、演算部１ｂは、仮想マシン３ａの過去の負荷を新規仮想マシンの負荷とみなして、将来の１週間分の物理マシン２，３，４の負荷を予測してもよい。あるいは、演算部１ｂは、仮想マシン３ａと新規仮想マシンとが同じユーザ（または、テナント）によって利用されるのであれば、仮想マシン３ａの負荷を、新規仮想マシンおよび仮想マシン３ａで等分した負荷を、新規仮想マシンの負荷としてもよい。
【００２７】
演算部１ｂは、仮想マシン２ａ，２ｂの直近の過去１週間の負荷と、仮想マシン３ａの直近の過去１週間の負荷とを、曜日／時刻毎に加算することで、新規仮想マシンを物理マシン２に配置した場合の、物理マシン２の未来の同曜日／時刻毎の負荷を算出する。グラフ６は、物理マシン２の未来（例えば、次の１週間）の負荷の予測結果を例示するグラフである。
【００２８】
演算部１ｂは、仮想マシン３ａ，３ｂの直近の過去１週間の負荷と、仮想マシン３ａの直近の過去１週間の負荷とを、曜日／時刻毎に加算することで、新規仮想マシンを物理マシン３に配置した場合の、物理マシン３の未来の同曜日／時刻毎の負荷を算出する。グラフ６ａは、物理マシン３の未来（例えば、次の１週間）の負荷の予測結果を例示するグラフである。
【００２９】
演算部１ｂは、仮想マシン４ａ，４ｂの直近の過去１週間の負荷と、仮想マシン３ａの直近の過去１週間の負荷とを、曜日／時刻毎に加算することで、新規仮想マシンを物理マシン４に配置した場合の、物理マシン４の未来の同曜日／時刻毎の負荷を算出する。グラフ６ｂは、物理マシン４の未来（例えば、次の１週間）の負荷の予測結果を例示するグラフである。
【００３０】
あるいは、演算部１ｂは、既存仮想マシンとして、仮想マシン３ａ，４ａを選択したとすれば、仮想マシン３ａ，４ａの過去の負荷状況を示す履歴情報を用いて、物理マシン２，３，４に新規仮想マシンを配置した場合の未来の負荷を予測し得る。例えば、演算部１ｂは、仮想マシン３ａ，４ａと新規仮想マシンとが同じユーザ（または、テナント）によって利用されるのであれば、過去の各時点における仮想マシン３ａ，４ａの負荷の合計値を、仮想マシン３ａ，４ａの数＋１（“＋１”は新規仮想マシン分）で割った値を、新規仮想マシンの同曜日／時刻の未来の負荷とみなして、将来の負荷を予測してもよい。あるいは、演算部１ｂは、より安全に、仮想マシン３ａ，４ａの過去の各時点における負荷のうちの大きい方の負荷を、新規仮想マシンの同曜日／時刻の未来の負荷とみなして、将来の負荷を予測してもよい。
【００３１】
演算部１ｂは、予測結果に応じて新規仮想マシンの配置先の物理マシンを決定する。例えば、物理マシン２，３，４それぞれの負荷に対して閾値を設け、予測した期間において負荷が閾値に達しない物理マシンを、配置先の物理マシンと決定する。グラフ６，６ａ，６ｂの例によれば、グラフ６，６ａは、予測対象期間内に負荷が閾値以上になるときがある。一方、グラフ６ｂは予測対象期間内に負荷が閾値以上になるときがない。よって、演算部１ｂは、新規仮想マシンの配置先を物理マシン４と決定する。演算部１ｂは、決定した物理マシンに対して、新規仮想マシンの実行開始を指示する。
【００３２】
予測対象期間内に負荷が閾値以上になるときがない物理マシンが複数ある場合もある。その場合、演算部１ｂは、当該複数の物理マシン（負荷が閾値以上になるときがない物理マシン）のうち、予測対象期間内のピーク時の負荷（最大負荷）が最小である物理マシンを選択してもよい。あるいは、演算部１ｂは、当該複数の物理マシンのうち、予測対象期間内の負荷の平均値が最小である物理マシンを選択してもよい。
【００３３】
負荷分散管理装置１によれば、物理マシン２，３，４の何れかに仮想マシンを新たに配置する際に、当該仮想マシンの利用形態に関する情報と、物理マシン２，３，４に配置済みである既存の仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂ（既存仮想マシン）それぞれの利用形態に関する情報とに基づいて既存仮想マシンが選択される。選択された既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、新規仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて仮想マシンの配置先の物理マシンを決定する。これにより、配置先の物理マシンを適切に選択できる。
【００３４】
ここで、物理マシン２，３，４に新規仮想マシンを配置するとき、新規仮想マシンについては過去の負荷情報が存在しないため、既存の方法により当該新規仮想マシンの負荷を予測することはできない。そこで、新規仮想マシンの配置先の物理マシンをどのようにして決定するかが問題となる。
【００３５】
例えば、新しい仮想マシンの配置先の物理マシンを、ラウンドロビンで決定したり、配置時点で負荷が最小のものと決定したりすることも考えられる。しかし、新しい仮想マシンを配置した物理マシンの負荷が、配置当初は許容値以下であっても、それ以降も許容値以下であるとは限らない。新たに配置した仮想マシンの負荷が想定外に高まると、物理マシンの負荷が過大になるおそれがある。負荷が許容値を超えると、物理マシンおよび物理マシン上の仮想マシンの動作に悪影響を及ぼすおそれがある。また、動作への悪影響を回避／改善するために、仮想マシンを別の物理マシンに移動させるための作業や処理負担が発生し得る。
【００３６】
これに対し、負荷分散管理装置１は、配置済みの仮想マシン２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂのうち、新規仮想マシンと利用形態の類似する仮想マシンの負荷の履歴を利用することで、物理マシン２，３，４の負荷を精度良く予測できる。新規仮想マシンは、利用形態が類似する既存仮想マシンと同様の用途で利用される可能性が高く、新規仮想マシンの負荷も既存仮想マシンの負荷との関係性が強いと考えられるからである。
【００３７】
特に、同じユーザ（または、テナント）が利用する既存仮想マシンを選択する場合、当該既存仮想マシンの負荷を、既存仮想マシンと新規仮想マシンとに分配するように新規仮想マシンの負荷を予測することで、新規仮想マシンの負荷の予測の精度を向上し得る。既存仮想マシンと新規仮想マシンとが同じユーザ（または、テナント）により同様の用途で利用される可能性が高い場合、選択された既存仮想マシンの負荷の一部が、新規仮想マシンに割り振られる可能性が高いと考えられるからである。
【００３８】
負荷分散管理装置１は、当該予測結果に応じて新規仮想マシンの配置先の物理マシンを決定することで、ラウンドロビンや配置時点の物理マシン２，３，４の負荷で新規仮想マシンの配置先を決定するよりも、配置先の物理マシンを適切に選択できる。すなわち、新規仮想マシンを配置した物理マシンの負荷が将来において許容値を超過する可能性を軽減できる。また、仮想マシンを別の物理マシンに移動させなければならない状況が発生する可能性を軽減でき、運用の効率化を図れる。
【００３９】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムの例を示す図である。第２の実施の形態の情報処理システムは、管理サーバ１００、仮想化管理サーバ２００、物理マシン３００，３００ａ，３００ｂおよびストレージプール４００を有する。管理サーバ１００、仮想化管理サーバ２００、物理マシン３００，３００ａ，３００ｂおよびストレージプール４００は、ネットワーク１０に接続されている。
【００４０】
ネットワーク１０は、例えば、データセンタ内に敷設されたＬＡＮ（Local Area Network）である。ネットワーク１０は、ネットワーク２０に接続されている。ネットワーク２０は、例えば、インターネットやＷＡＮ（Wide Area Network）などの広域ネットワークである。ネットワーク２０には、クライアント２１，２２が接続されている。クライアント２１，２２は、ユーザが利用するクライアントコンピュータである。
【００４１】
ユーザは、クライアント２１，２２を操作して、物理マシン３００，３００ａ，３００ｂ上で動作する仮想マシンを利用できる。すなわち、ユーザは、サーバコンピュータ（物理マシン）やストレージ装置を自身で管理しなくても、データセンタに設けられたサーバコンピュータやストレージ装置が備えるリソースを利用できる。このようなコンピュータの利用形態は、クラウドコンピューティングと呼ばれることがある。データセンタ内のリソースを借り受けているユーザを、テナントと称することがある。
【００４２】
管理サーバ１００は、物理マシン３００，３００ａ，３００ｂに対する仮想マシンの配置を管理するサーバコンピュータである。管理サーバ１００は、物理マシン３００，３００ａ，３００ｂの何れかに新規仮想マシンを配置する際に、物理マシン３００，３００ａ，３００ｂの未来の負荷を予測し、予測結果に応じて新規仮想マシンの配置先の物理マシンを決定する。管理サーバ１００は、第１の実施の形態の負荷分散管理装置１の一例である。
【００４３】
仮想化管理サーバ２００は、物理マシン３００，３００ａ，３００ｂの負荷の情報を収集し、管理サーバ１００に提供する。ただし、管理サーバ１００は、物理マシン３００，３００ａ，３００ｂから負荷の情報を直接収集してもよい。その場合、仮想化管理サーバ２００は省略されてもよい。
【００４４】
物理マシン３００，３００ａ，３００ｂは、複数の仮想マシンを実行可能なサーバコンピュータである。物理マシン３００，３００ａ，３００ｂは、ハイパーバイザを実行する。物理マシン３００，３００ａ，３００ｂそれぞれのハイパーバイザは、物理マシン３００，３００ａ，３００ｂが備える物理的なリソースを用いて仮想マシンを動作させる。なお、仮想マシンをＶＭ（Virtual Machine）と略記することがある。
【００４５】
ストレージプール４００は、ＨＤＤを複数搭載するストレージ装置である。ストレージプール４００に含まれるＨＤＤは、各仮想マシンの補助記憶装置として用いられる。以下の説明では、ストレージプール４００に含まれるＨＤＤの１つの集合体を指して、ストレージと称する。ストレージプール４００は、複数のストレージを有する。なお、ストレージプール４００は、ＨＤＤに代えて、あるいは、ＨＤＤと併せて、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を有してもよい。
【００４６】
図３は、管理サーバのハードウェア例を示す図である。管理サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、読み取り装置１０６および通信インタフェース１０７を有する。各ユニットは管理サーバ１００のバスに接続されている。仮想化管理サーバ２００、物理マシン３００，３００ａ，３００ｂおよびクライアント２１，２２も管理サーバ１００と同様のユニットを用いて実現できる。
【００４７】
プロセッサ１０１は、管理サーバ１００の情報処理を制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００４８】
ＲＡＭ１０２は、管理サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００４９】
ＨＤＤ１０３は、管理サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。管理サーバ１００は、フラッシュメモリやＳＳＤなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００５０】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、管理サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００５１】
入力信号処理部１０５は、管理サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００５２】
読み取り装置１０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００５３】
通信インタフェース１０７は、ネットワーク１０を介して他の装置と通信を行う。通信インタフェース１０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００５４】
図４は、仮想マシンの例を示す図である。物理マシン３００は、ハードウェア層３１０、ハイパーバイザ３２０および仮想マシン３３０，３４０，３５０を含む。
ハードウェア層３１０は、物理マシン３００が備えるＣＰＵ（以下に示す仮想ＣＰＵと区別するために物理ＣＰＵと称することがある）、ＲＡＭおよび通信インタフェースなどを含む物理的なリソースの集合である。
【００５５】
ハイパーバイザ３２０は、ハードウェア層３１０のリソースを用いて、仮想マシンを動作させる。ハイパーバイザ３２０は、物理ＣＰＵの処理能力やＲＡＭの記憶領域を演算のリソースとして仮想マシン３３０，３４０，３５０に割り当てる。ハイパーバイザ３２０は、各仮想マシンがハードウェア層のリソースを共用できるように、仮想マシン３３０，３４０，３５０からのハードウェア層３１０へのアクセスを調停する。ハイパーバイザ３２０は、仮想マシンモニタ（ＶＭＭ：Virtual Machine Monitor）と呼ばれることもある。
【００５６】
ここで、ハイパーバイザ３２０が各仮想マシンに割り当てる物理ＣＰＵの処理能力の単位を仮想ＣＰＵと呼ぶことがある。例えば、仮想ＣＰＵは、物理ＣＰＵを利用可能な時間を複数のタイムスライスに時分割した場合のタイムスライスに対応させることができる。例えば、１つの仮想ＣＰＵは、物理ＣＰＵの利用可能時間において仮想マシンの処理のために周期的に割り当てられる１つのタイムスライス（当該仮想マシンに対して周期的に割り当てられる時間の集合）に対応する。ハイパーバイザ３２０は、各仮想マシンに割り当てられた仮想ＣＰＵを用いて、各仮想マシンの処理を順番に実行する。なお、１つの仮想ＣＰＵに複数のタイムスライスを対応させてもよい。
【００５７】
仮想ＣＰＵの割当量は、仮想ＣＰＵの個数で表せる。例えば、１つのタイムスライスを仮想マシン３３０に割り当てるなら、仮想マシン３３０の仮想ＣＰＵ数は１である。２つのタイムスライスを仮想マシン３３０に割り当てるなら、仮想マシン３３０の仮想ＣＰＵ数は２である。
【００５８】
また、ある物理マシン上における１仮想ＣＰＵあたりのクロック数は、物理ＣＰＵのクロック数の合計（クロック数×物理ＣＰＵのコア数×物理ＣＰＵ数）を当該物理マシン上の仮想ＣＰＵ数の合計で割った値となる。例えば、３ＧＨｚのクロック数で動作するコアを４つもつ物理ＣＰＵを２つ搭載した物理マシンにおいて、１６個の仮想ＣＰＵを実現する場合、１仮想ＣＰＵ当たりのクロック数は、（３ＧＨｚ×４×２）／１６＝１．５ＧＨｚとなる。
【００５９】
ハイパーバイザ３２０は、物理マシン３００が有するＲＡＭの記憶領域（メモリ領域）を論理的に分割して、仮想マシン３３０，３４０，３５０に割り当てる。ＲＡＭの割当量はＧＢ（Giga Bytes）などメモリ領域のサイズで表せる。
【００６０】
ハイパーバイザ３２０は、ストレージプール４００が有する複数のストレージの記憶領域（ＨＤＤ領域）を論理的に分割して、仮想マシン３３０，３４０，３５０に割り当てる。ストレージの割当量はＧＢなどＨＤＤ領域のサイズで表せる。ここで、ストレージプール４００は、ストレージ４１０，４２０，４３０を有する。例えば、ハイパーバイザ３２０は、ストレージ４１０の一部のＨＤＤ領域を仮想マシン３３０に割り当てる。
【００６１】
仮想マシン３３０，３４０，３５０は、自身に割り当てられたリソースを用いて、それぞれ独立にＯＳを実行する。仮想マシン３３０，３４０，３５０は、他の仮想マシンと同一のＯＳを実行することもできるし、他の仮想マシンとは異なるＯＳを実行することもできる。
【００６２】
なお、物理マシン３００ａ，３００ｂも同様にして仮想マシンを実行する。また、以下の説明において、物理マシン３００，３００ａ，３００ｂが備えるハードウェア（仮想マシンに割り当て可能な物理ＣＰＵやメモリなど）の性能は同一とする。ただし、物理マシン３００，３００ａ，３００ｂが備えるハードウェアの性能は異なっていてもよい。
【００６３】
図５は、管理サーバの機能例を示す図である。管理サーバ１００は、記憶部１１０、監視部１２０、選択部１３０および配置部１４０を有する。記憶部１１０は、ＲＡＭ１０２やＨＤＤ１０３の記憶領域を用いて実現できる。監視部１２０、選択部１３０および配置部１４０は、プロセッサ１０１がＲＡＭ１０２に記憶されたプログラムを実行することで実現され得る。
【００６４】
記憶部１１０は、物理マシン３００，３００ａ，３００ｂおよび物理マシン３００，３００ａ，３００ｂに配置された複数の仮想マシンの管理情報を記憶する。管理情報は、物理マシンに対する仮想マシンの割当状況や仮想マシンに対するストレージの割当状況を示す情報を含む。管理情報は、物理マシンの負荷を示す情報、ストレージの負荷を示す情報および各仮想マシンの負荷を示す情報などを含む。
【００６５】
記憶部１１０は、各仮想マシンの利用形態に関する情報を記憶する。利用形態に関する情報は、例えば、仮想マシンに割り当てられた仮想ＣＰＵ数、仮想ＣＰＵのクロック数、メモリ容量、ＨＤＤ容量（ディスク容量）および接続するネットワークの数、利用されるＯＳやミドルウェア（ＭＷ：Middle Ware）などのソフトウェアの情報を含む。
【００６６】
監視部１２０は、物理マシン３００，３００ａ，３００ｂ、各仮想マシンおよびストレージの負荷の情報を、仮想化管理サーバ２００から定期的に取得し、記憶部１１０に格納する。なお、監視部１２０は、物理マシン３００，３００ａ，３００ｂ、各仮想マシンおよびストレージの負荷の情報を、物理マシン３００，３００ａ，３００ｂおよびストレージプール４００から直接取得してもよい。
【００６７】
選択部１３０は、新たな仮想マシン（新規仮想マシン）の配置要求をクライアント２１，２２から受け付ける。配置要求は、新規仮想マシンの利用形態に関する情報を含む。選択部１３０は、受け付けた配置要求と、記憶部１１０に記憶された各仮想マシンの利用形態に関する情報とに基づいて、新規仮想マシンと利用形態の類似する既存仮想マシンを選択する。
【００６８】
選択部１３０は、選択した既存仮想マシンの過去の負荷の情報を記憶部１１０から取得する。選択部１３０は、取得した負荷の情報を用いて新規仮想マシンの配置先候補である各物理マシンの未来の所定期間における負荷を予測する。所定期間（予測対象期間）としては、１週間や１カ月間など、仮想マシンの負荷に周期的な特徴が現れ得る期間が考えられる。例えば、システムにおいて、１週間を周期として仮想マシンの負荷が変動する傾向があれば、予測対象期間を１週間とすることが考えられる。あるいは、１カ月を周期として仮想マシンの負荷が変動する傾向があれば、予測対象期間を１カ月とすることが考えられる。
【００６９】
選択部１３０は、各物理マシンの未来の負荷の予測結果に応じて、新規仮想マシンの配置先の物理マシンを決定する。具体的には、選択部１３０は、予測対象期間の間、予測した負荷が、予め定められた閾値以上にならない物理マシンを、新規仮想マシンの配置先の物理マシンと決定する。
【００７０】
配置部１４０は、選択部１３０により新規仮想マシンの配置先として決定された物理マシンに、当該新規仮想マシンを配置する。具体的には、配置部１４０は、決定した物理マシンのハイパーバイザに、新規仮想マシンの起動を指示する。すると、当該物理マシンのハイパーバイザは、新規仮想マシンの起動を開始する。
【００７１】
図６は、物理マシン管理テーブルの例を示す図である。物理マシン管理テーブル１１１は、記憶部１１０に格納される。物理マシン管理テーブル１１１は、物理マシン名、ＣＰＵ使用量、ＮＷ（NetWork）使用量および動作中ＶＭ名の項目を含む。
【００７２】
物理マシン名の項目には、物理マシンの名称（識別情報）が登録される。ＣＰＵ使用量の項目には、物理マシンが有する物理ＣＰＵの使用量が百分率で登録される。ＮＷ使用量の項目には、物理マシンが有する通信インタフェースの使用量が登録される。通信インタフェースの使用量は、単位時間当たりの送受信データ量で表される。例えば、通信インタフェースの使用量をＭＢ（Mega-Bytes）／ｓ（second）（メガバイト毎秒）で表す。動作中ＶＭ名の項目には、物理マシンで動作している仮想マシンの名称（識別情報）が登録される。
【００７３】
例えば、物理マシン管理テーブル１１１には、物理マシン名が“ＳＶ１”、ＣＰＵ使用量が“８０％”、ＮＷ使用量が“５５０ＭＢ／ｓ”、動作中ＶＭ名が“ｕｓｅｒＡ−ｖｍ１，ｕｓｅｒＢ−ｖｍ１，ｕｓｅｒＣ−ｖｍ１”という情報が登録される。
【００７４】
これは、物理マシン名“ＳＶ１”で示される物理マシンの物理ＣＰＵの使用量が８０％、通信インタフェースの使用量が５５０ＭＢ／ｓであることを示す。また、当該物理マシン上で、ＶＭ名“ｕｓｅｒＡ−ｖｍ１，ｕｓｅｒＢ−ｖｍ１，ｕｓｅｒＣ−ｖｍ１”で示される３つの仮想マシンが動作中であることを示す。
【００７５】
ここで、“ＳＶ１”は、物理マシン３００の物理マシン名である。“ＳＶ２”は、物理マシン３００ａの物理マシン名である。“ＳＶ３”は、物理マシン３００ｂの物理マシン名である。“ｕｓｅｒＡ−ｖｍ１”は、仮想マシン３３０のＶＭ名である。“ｕｓｅｒＢ−ｖｍ１”は、仮想マシン３４０のＶＭ名である。“ｕｓｅｒＣ−ｖｍ１”は、仮想マシン３５０のＶＭ名である。
【００７６】
図７は、ストレージ管理テーブルの例を示す図である。ストレージ管理テーブル１１２は、記憶部１１０に格納される。ストレージ管理テーブル１１２は、ストレージ名、ストレージアクセス量およびストレージ使用中ＶＭ名の項目を含む。
【００７７】
ストレージ名の項目には、ストレージの名称（識別情報）が登録される。ストレージアクセス量の項目には、ストレージに対して発生した単位時間当たりの読み出しデータ量および書き込みデータ量の合計が登録される。例えば、ストレージアクセス量をＭＢ／ｓで表す。ストレージ使用中ＶＭ名の項目には、ストレージを使用している仮想マシンの名称（識別情報）が登録される。
【００７８】
例えば、ストレージ管理テーブル１１２には、ストレージ名が“ＳＴＧ１”、ストレージアクセス量が“３００ＭＢ／ｓ”、ストレージ使用中ＶＭ名が“ｕｓｅｒＡ−ｖｍ１，ｕｓｅｒＢ−ｖｍ１，ｕｓｅｒＣ−ｖｍ１，ｕｓｅｒＤ−ｖｍ１”という情報が登録される。
【００７９】
これは、ストレージ名“ＳＴＧ１”で示されるストレージにおけるストレージアクセス量が３００ＭＢ／ｓであることを示す。また、ＶＭ名“ｕｓｅｒＡ−ｖｍ１，ｕｓｅｒＢ−ｖｍ１，ｕｓｅｒＣ−ｖｍ１，ｕｓｅｒＤ−ｖｍ１”で示される４つの仮想マシンが、当該ストレージを使用していることを示す。
【００８０】
ここで、“ＳＴＧ１”は、ストレージ４１０のストレージ名である。“ＳＴＧ２”は、ストレージ４２０のストレージ名である。“ＳＴＧ３”は、ストレージ４３０のストレージ名である。
【００８１】
図８は、閾値テーブルの例を示す図である。閾値テーブル１１３は、記憶部１１０に格納される。閾値テーブル１１３は、負荷種別および閾値の項目を含む。負荷種別の項目には、計測される負荷の種別を示す情報が登録される。閾値の項目には、当該負荷の種別に対応する閾値が登録される。
【００８２】
例えば、閾値テーブル１１３には、負荷種別が“ＣＰＵ使用量”、閾値が“８０％”という情報が登録される。これは、１つの物理マシンについて、物理ＣＰＵの使用量の閾値が８０％であることを示す。すなわち、１つの物理マシンにおける物理ＣＰＵの使用量として８０％未満が許容値であり、８０％以上が上限超過ということになる。
【００８３】
また、閾値テーブル１１３には、負荷種別が“ＮＷ使用量”、閾値が“１０００ＭＢ／ｓ”という情報が登録される。これは、１つの物理マシンについて、通信インタフェースの使用量の閾値が１０００ＭＢ／ｓであることを示す。すなわち、１つの物理マシンにおける通信インタフェースの使用量として１０００ＭＢ／ｓ未満が許容値であり、１０００ＭＢ／ｓ以上が上限超過ということになる。
【００８４】
また、閾値テーブル１１３には、負荷種別が“ストレージアクセス量”、閾値が“３２０ＭＢ／ｓ”という情報が登録される。これは、１つのストレージについて、アクセス量の閾値が３２０ＭＢ／ｓであることを示す。すなわち、１つのストレージにおけるアクセス量として、３２０ＭＢ／ｓ未満が許容値であり、３２０ＭＢ以上が上限超過ということになる。
【００８５】
図９は、ＶＭ管理テーブルの例を示す図である。ＶＭ管理テーブル１１４は、記憶部１１０に格納される。ＶＭ管理テーブル１１４は、テナント名、ＶＭ名、ＶＭタイプおよび作成日時の項目を含む。
【００８６】
テナント名の項目には、仮想マシンを利用しているテナントの名称（識別情報）が登録される。ＶＭ名の項目には、ＶＭの識別情報が登録される。ＶＭタイプの項目には、仮想マシンの利用形態の種別（ＶＭタイプ）を示す情報が登録される。仮想マシンのタイプは、例えば、仮想ＣＰＵ数、仮想ＣＰＵのクロック数、メモリ容量、ディスク容量などを含む。作成日時の項目には、仮想マシンが作成された日時（仮想マシンの利用が開始された日時）が登録される。
【００８７】
例えば、ＶＭ管理テーブル１１４には、テナント名が“ｕｓｅｒＡ”、ＶＭ名が“ｕｓｅｒＡ−ｖｍ１”、ＶＭタイプが“ｉｍａｇｅ−ａ”、作成日時が“２０１４／０６／０１  ０：００”という情報が登録されている。
【００８８】
これは、ＶＭ名“ｕｓｅｒＡ−ｖｍ１”で示される仮想マシン３３０がテナント名“ｕｓｅｒＡ”で示されるテナントにより利用されていること、仮想マシン３３０のＶＭタイプが“ｉｍａｇｅ−ａ”で示されるＶＭタイプであることを示す。また、仮想マシン３３０が２０１４年６月１日０時００分に作成されたことを示す。
【００８９】
図１０は、負荷履歴テーブルの例を示す図である。負荷履歴テーブル１１５は、記憶部１１０に格納される複数の負荷履歴テーブルのうちの１つである。負荷履歴テーブル１１５は、ＶＭ名“ｕｓｅｒＡ−ｖｍ１”で示される仮想マシンに対応する負荷履歴テーブルである。記憶部１１０は、他の仮想マシンに関する負荷履歴テーブルも記憶する。記憶部１１０は、仮想マシン毎の負荷履歴テーブルを記憶する。負荷履歴テーブル１１５は、日付、時刻、ＣＰＵ使用量、ＮＷ使用量およびストレージアクセス量の項目を含む。
【００９０】
日付の項目は、負荷を取得した日付が登録される。時刻の項目には、負荷を取得した時刻が登録される。ＣＰＵ使用量の項目には、仮想マシンによる物理ＣＰＵの使用量が百分率で登録される。ＮＷ使用量の項目には、当該仮想マシンによる通信ネットワークの使用量が登録される。ストレージアクセス量の項目には、当該仮想マシンによるストレージアクセス量が登録される。
【００９１】
例えば、負荷履歴テーブル１１５には、日付が“２０１４／７／１”、時刻が“００：００：００”、ＣＰＵ使用量が“２０％”、ＮＷ使用量が“６０ＭＢ／ｓ”、ストレージアクセス量が“３０ＭＢ／ｓ”という情報が登録される。
【００９２】
これは、ＶＭ名“ｕｓｅｒＡ−ｖｍ１”で示される仮想マシン３３０が、２０１４年７月１日午前０時０分０秒において、物理ＣＰＵを２０％分使用していたことを示す。また、仮想マシン３３０が、同時刻において、物理マシン３００の通信インタフェースを介して６０ＭＢ／ｓでデータを送受信していたこと、ストレージ４１０に対して３０ＭＢ／ｓでデータアクセスを行っていたことを示す。
【００９３】
図１１は、ＶＭタイプテーブルの例を示す図である。ＶＭタイプテーブル１１６は、記憶部１１０に格納される。ＶＭタイプテーブル１１６は、ＶＭタイプ、スペック、ＯＳ、ＭＷ（Middle Ware）および負荷分散の項目を含む。
【００９４】
ＶＭタイプの項目には、ＶＭタイプが登録される。スペックの項目には、仮想マシンおよび当該仮想マシンが利用するストレージなどに関する情報が登録される。具体的には、スペックとして、仮想ＣＰＵ数、クロック数、メモリ容量、ディスク容量および接続ＮＷ数が登録される。仮想ＣＰＵ数は、仮想マシンに割り当てられる仮想ＣＰＵの数である。クロック数は、仮想ＣＰＵの動作周波数である。メモリ容量は、仮想マシンに割り当てられるＲＡＭの容量である。ディスク容量は、仮想マシンに割り当てられるストレージの記憶領域の容量である。接続ＮＷ数は、仮想マシンが接続するネットワークの数である。
【００９５】
ＯＳの項目には、仮想マシンで利用されるＯＳの種別（または、ＯＳの名称）が登録される。ＭＷの項目には、仮想マシンで利用されるＭＷの種別（または、ＭＷの名称）が登録される。負荷分散の項目には、負荷分散構成の利用の有無が登録される。
【００９６】
例えば、ＶＭタイプテーブル１１６には、ＶＭタイプが“ｉｍａｇｅ−ａ”、仮想ＣＰＵ数が“２”、クロック数が“２ＧＨｚ”、メモリ容量が“２ＧＢ”、ディスク容量が“５０ＧＢ”、接続ＮＷ数が“２”、ＯＳが“ＯＳ−Ｗ”、ＭＷが“ＭＷ１”、負荷分散が“あり”という情報が登録されている。
【００９７】
これは、ＶＭタイプ“ｉｍａｇｅ−ａ”の仮想マシンは、クロック数２ＧＨｚの仮想ＣＰＵを２つ割り当てられており、メモリ容量が２ＧＢ、ディスク容量が５０ＧＢ、接続するネットワーク数が２であることを示す。また、同仮想マシンは、ＯＳとしてＯＳ−Ｗを、ＭＷとしてＭＷ１を利用し、負荷分散構成を利用していることを示す。
【００９８】
ＶＭタイプで識別される項目の一例として、仮想マシンのスペック、利用ＯＳ、利用ＭＷおよび負荷分散構成の利用有無を挙げたが、例示した項目に代えて、または例示した項目に加えて、他の項目を識別可能にすることも考えられる。例えば、該当の仮想マシンがＷｅｂ３階層のシステムのうちの、Ｗｅｂ層、ＡＰ層またはＤＢ層の何れで使用されるものであるかをＶＭタイプで識別することも考えられる。また、例えば、ファイアウォールの冗長構成の利用の有無をＶＭタイプで識別することも考えられる。
【００９９】
次に、管理サーバ１００による具体的な処理手順を説明する。以下の説明では、新規仮想マシンを新規ＶＭ、既存仮想マシンを既存ＶＭと表記することがある（特に図中）。
図１２は、負荷収集処理の例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【０１００】
（Ｓ１０１）監視部１２０は、スケジュールされたタイミング（例えば、１０秒、３０秒または１分などの周期）で、物理マシン３００，３００ａ，３００ｂの負荷の情報（物理ＣＰＵ使用量およびＮＷ使用量）を収集する。監視部１２０は、ストレージ４１０，４２０，４３０の負荷の情報（ストレージアクセス量）を収集する。監視部１２０は、複数の既存仮想マシンそれぞれの負荷の情報（物理ＣＰＵ使用量、ＮＷ使用量およびストレージアクセス量）を収集する。監視部１２０は、負荷の情報を、仮想化管理サーバ２００を介して取得してもよいし、物理マシン３００，３００ａ，３００ｂおよびストレージプール４００から直接取得してもよい。
【０１０１】
（Ｓ１０２）監視部１２０は、物理マシン３００，３００ａ，３００ｂの負荷の情報を物理マシン管理テーブル１１１に保存する（ＣＰＵ使用量およびＮＷ使用量の項目の登録値を上書きする）。監視部１２０は、ストレージ４１０，４２０，４３０の負荷の情報をストレージ管理テーブル１１２に保存する（ストレージアクセス量の項目の登録値を上書きする）。
【０１０２】
（Ｓ１０３）監視部１２０は、各既存仮想マシンの負荷の情報を、既存仮想マシン毎の負荷履歴テーブルに保存する。例えば、ＶＭ名“ｕｓｅｒＡ−ｖｍ１”の仮想マシンの負荷は、負荷を収集した時刻に対応付けて、負荷履歴テーブル１１５に保存される。そして、処理をステップＳ１０１に進める（次の収集タイミングまで待機する）。
【０１０３】
このようにして、管理サーバ１００は各既存仮想マシンの負荷の情報を定期的に収集し、保存することで、各既存仮想マシンの負荷の履歴情報を管理する。管理サーバ１００は、新規仮想マシンの配置要求を受け付けると、各既存仮想マシンの負荷の履歴情報を用いて、新規仮想マシンの配置先候補の物理マシンの未来の負荷を予測し、予測結果に応じて新規仮想マシンの配置先の物理マシンを決定する。
【０１０４】
図１３は、ＶＭ配置処理の例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
（Ｓ１）選択部１３０は、新規仮想マシンの配置要求を、クライアント２１から受け付ける。新規仮想マシンの配置要求には、新規仮想マシンのＶＭタイプの情報が含まれる。
【０１０５】
（Ｓ２）選択部１３０は、複数の物理マシンの中から、新規仮想マシンの配置先とする物理マシンを選択する。物理マシンの選択処理の詳細については後述する。
（Ｓ３）選択部１３０は、複数のストレージの中から、新規仮想マシンに割り当てるストレージを選択する。ストレージの選択処理の詳細については後述する。
【０１０６】
（Ｓ４）配置部１４０は、選択部１３０により選択された物理マシンに、新規仮想マシンを配置する。具体的には、配置部１４０は、当該物理マシンで動作するハイパーバイザに、新規仮想マシンの起動を指示する。当該物理マシンで動作するハイパーバイザは、配置部１４０の指示に応じて、新規仮想マシンの起動を開始させる。このとき、配置部１４０は、選択部１３０により選択されたストレージを新規仮想マシンに割り当てる。
【０１０７】
（Ｓ５）配置部１４０は、新規仮想マシンの情報を各テーブルに記録する。具体的には、配置部１４０は、物理マシン管理テーブル１１１において、配置先となった物理マシンの動作中ＶＭ名の項目に、新規仮想マシンのＶＭ名を追加する。また、配置部１４０は、ストレージ管理テーブル１１２において、割当対象となったストレージのストレージ使用中ＶＭ名の項目に、新規仮想マシンのＶＭ名を追加する。更に、配置部１４０は、ＶＭ管理テーブル１１４に新規仮想マシンのエントリを追加する。なお、監視部１２０は、負荷の履歴情報を保存するために、新規仮想マシンに対応する負荷履歴テーブルを新たに作成して記憶部１１０に格納し、新規仮想マシンに対する負荷の記録を開始する。
【０１０８】
（Ｓ６）選択部１３０は、ステップＳ２における物理マシンの選択結果に応じて、既存仮想マシン毎の負荷履歴テーブルにおける各種負荷の値を補正する。負荷履歴補正処理の詳細については後述する。
【０１０９】
図１４は、物理マシン選択処理の例を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。図１４に示す手順は、図１３のステップＳ２に相当する。
【０１１０】
（Ｓ１１）選択部１３０は、物理マシン３００，３００ａ，３００ｂの中から物理マシンを１つ選択する。なお、選択部１３０は、ステップＳ１２以降の手順を既に実行済みの物理マシンを選択の対象から除外する。
【０１１１】
（Ｓ１２）選択部１３０は、物理マシン管理テーブル１１１を参照して、選択した物理マシンのＣＰＵ使用量ａを取得する。選択部１３０は、ＣＰＵ使用量ａが閾値テーブル１１３に登録されたＣＰＵ使用量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップＳ１１に進める。閾値未満である場合、処理をステップＳ１３に進める。ここで、閾値テーブル１１３には、ＣＰＵ使用量の閾値として８０％が登録されている。例えば、ステップＳ１１で物理マシン３００が選択されているとする。物理マシン管理テーブル１１１によれば、物理マシン３００のＣＰＵ使用量ａ＝８０％である。この場合、選択部１３０は、ＣＰＵ使用量ａ＝８０％が閾値８０％以上であると判定する。あるいは、ステップＳ１１で物理マシン３００ａが選択されているとする。物理マシン管理テーブル１１１によれば、物理マシン３００ａのＣＰＵ使用量ａ＝５０％である。この場合、選択部１３０は、ＣＰＵ使用量ａ＝５０％が閾値８０％未満であると判定する。
【０１１２】
（Ｓ１３）選択部１３０は、物理マシン管理テーブル１１１を参照して、選択した物理マシンのＮＷ使用量ｂを取得する。選択部１３０は、ＮＷ使用量ｂが閾値テーブル１１３に登録されたＮＷ使用量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップＳ１１に進める。閾値未満である場合、処理をステップＳ１４に進める。ここで、閾値テーブル１１３には、ＮＷ使用量の閾値として１０００ＭＢ／ｓが登録されている。例えば、物理マシン管理テーブル１１１によれば、物理マシン３００ａのＮＷ使用量ｂ＝４２０ＭＢ／ｓである。この場合、選択部１３０は、ＮＷ使用量ｂ＝４２０ＭＢ／ｓが閾値１０００ＭＢ／ｓ未満であると判定する。
【０１１３】
（Ｓ１４）選択部１３０は、物理マシン管理テーブル１１１およびＶＭ管理テーブル１１４を参照して、着目している物理マシンに、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシン（既存仮想マシン）を配置済みであるか否かを判定する。配置済みである場合、処理をステップＳ１１に進める。配置済みでない場合、処理をステップＳ１５に進める。例えば、選択部１３０は、物理マシン管理テーブル１１１を参照して、着目している物理マシン上で動作中のＶＭ名を取得する。選択部１３０は、ＶＭ管理テーブル１１４を参照して、取得したＶＭ名に対応するテナント名を取得する。選択部１３０は、取得したテナント名に、配置要求を行ったテナントのテナント名が含まれるか否かを判定することで、当該ステップＳ１４の判定を行える。含まれれば、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシンを当該物理マシンに配置済みである。含まれなければ、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシンを当該物理マシンに配置済みでない。
【０１１４】
（Ｓ１５）選択部１３０は、新規仮想マシンと利用形態が類似する既存仮想マシンを選択し、当該既存仮想マシンの負荷の情報を用いて、新規仮想マシンの現在のＣＰＵ使用量ａ１およびＮＷ使用量ｂ１を予測する。ここで、新規仮想マシンの現在のＣＰＵ使用量の予測値は、新規仮想マシンが何れかの物理マシン上で現在稼働していると仮定した場合のＣＰＵ使用量の予測値と考えてもよい。同様に、新規仮想マシンの現在のＮＷ使用量の予測値とは、新規仮想マシンが何れかの物理マシン上で現在稼働していると仮定した場合のＮＷ使用量の予測値と考えてもよい。
【０１１５】
（Ｓ１６）選択部１３０は、ステップＳ１２の判定に用いたＣＰＵ使用量ａおよびステップＳ１５で予測したＣＰＵ使用量ａ１の和ａ＋ａ１が、閾値テーブル１１３に登録されたＣＰＵ使用量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップＳ１１に進める。閾値未満である場合、処理をステップＳ１７に進める。
【０１１６】
（Ｓ１７）選択部１３０は、ステップＳ１３の判定に用いたＮＷ使用量ｂおよびステップＳ１５で予測したＮＷ使用量ｂ１の和ｂ＋ｂ１が、閾値テーブル１１３に登録されたＮＷ使用量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップＳ１１に進める。閾値未満である場合、処理をステップＳ１８に進める。
【０１１７】
（Ｓ１８）選択部１３０は、新規仮想マシンと利用形態が類似する既存仮想マシンを選択し、当該既存仮想マシンの過去の負荷の履歴情報を用いて、新規仮想マシンの未来のＣＰＵ使用量および未来のＮＷ使用量を予測する。予測方法の詳細については後述する。
【０１１８】
（Ｓ１９）選択部１３０は、ステップＳ１８の予測結果に応じて、未来の何れかの時点において、着目する物理マシンのＣＰＵ使用量が閾値テーブル１１３に登録された閾値以上になるか否かを判定する。閾値以上になる場合、処理をステップＳ１１に進める。閾値未満である場合、処理をステップＳ２０に進める。
【０１１９】
（Ｓ２０）選択部１３０は、ステップＳ１８の予測結果に応じて、未来の何れかの時点において、着目する物理マシンのＮＷ使用量が閾値テーブル１１３に登録された閾値以上になるか否かを判定する。閾値以上になる場合、処理をステップＳ１１に進める。閾値未満である場合、処理をステップＳ２１に進める。
【０１２０】
（Ｓ２１）選択部１３０は、着目する物理マシンを新規仮想マシンの配置先に決定する。選択部１３０は、決定した結果を配置部１４０に通知する。
図１５は、現在のＣＰＵ／ＮＷ使用量の予測の例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。図１５に示す手順は、図１４のステップＳ１５に相当する。
【０１２１】
（Ｓ３１）選択部１３０は、物理マシン管理テーブル１１１およびＶＭ管理テーブル１１４を参照して、新規仮想マシンと同一テナントかつ同一ＶＭタイプの既存仮想マシンがあるか否かを判定する。ある場合、処理をステップＳ３２に進める。ない場合、処理をステップＳ３８に進める。選択部１３０は、ＶＭタイプで示される複数の項目の全てが一致する場合に、同一ＶＭタイプと判断する。ただし、選択部１３０は、ＶＭタイプで示される複数の項目の主要な一部（例えば、スペック、ＯＳおよびＭＷの組、または、スペックおよびＯＳの組など）が一致する場合に、同一ＶＭタイプと判断してもよい。
【０１２２】
（Ｓ３２）選択部１３０は、新規仮想マシンと同一テナントかつ同一ＶＭタイプの既存仮想マシン（着目する既存仮想マシン）が１つであるか否かを判定する。１つではない、すなわち、複数である場合、処理をステップＳ３３に進める。１つである場合、処理をステップＳ３６に進める。
【０１２３】
（Ｓ３３）選択部１３０は、着目する複数の既存仮想マシンそれぞれの現在の負荷が同等であるか否かを判定する。同等でない場合、処理をステップＳ３４に進める。同等である場合、処理をステップＳ３６に進める。「同等である」とは、例えば着目する複数の既存仮想マシンそれぞれの現在の負荷に関する偏差（例えば、分散または標準偏差）が、所定値よりも小さいことを意味する。選択部１３０は、ＣＰＵ使用量およびＮＷ使用量のそれぞれに対して分散を求め、両方がそれぞれの所定値よりも小さい場合に、着目する複数の既存仮想マシンそれぞれの現在の負荷が同等であると判定する。ＣＰＵ使用量およびＮＷ使用量それぞれに関する分散の何れか一方が所定値以上であれば、着目する複数の既存仮想マシンそれぞれの現在の負荷は同等ではない。なお、既存仮想マシンが２つの場合は、分散の代わりに、両方の負荷の差を求め、当該差が所定値よりも小さいときに同等と判断してもよい（当該差が所定値以上であれば同等でない）。
【０１２４】
ここで、監視部１２０は、ステップＳ３３の処理を行うために、着目する複数の既存仮想マシンそれぞれの現在の負荷を、仮想化管理サーバ２００または物理マシン３００，３００ａ，３００ｂから取得し、選択部１３０に提供してもよい。あるいは、選択部１３０は、記憶部１１０に記憶された各既存仮想マシンの負荷履歴テーブルを参照して、着目する複数の既存仮想マシンそれぞれの最新の負荷を、現在の負荷とみなして、ステップＳ３３の処理を実行してもよい。ただし、より最近の負荷を予測するという観点からは、前者の取得方法の方が好ましい。現在の負荷の取得方法は以降のステップでも同様である。
【０１２５】
（Ｓ３４）選択部１３０は、着目する複数の既存仮想マシンの現在のＣＰＵ使用量のうち最大の値を、新規仮想マシンによる現在のＣＰＵ使用量ａ１（予測値）とする。
（Ｓ３５）選択部１３０は、着目する複数の既存仮想マシンの現在のＮＷ使用量のうち最大の値を、新規仮想マシンによる現在のＮＷ使用量ｂ１（予測値）とする。そして、処理を終了する。
【０１２６】
（Ｓ３６）選択部１３０は、着目する既存仮想マシン（１つの場合もあるし、複数の場合もある）の現在のＣＰＵ使用量の合計値を、（着目する既存仮想マシン数＋１）で割った値を、新規仮想マシンによる現在のＣＰＵ使用量ａ１とする。着目する既存仮想マシンが１つの場合は、当該１つの既存仮想マシンの現在のＣＰＵ使用量を当該合計値としてよい。
【０１２７】
（Ｓ３７）選択部１３０は、着目する既存仮想マシン（１つの場合もあるし、複数の場合もある）の現在のＮＷ使用量の合計値を、（着目する既存仮想マシン数＋１）で割った値を、新規仮想マシンによる現在のＮＷ使用量ｂ１とする。着目する既存仮想マシンが１つの場合は、当該１つの既存仮想マシンの現在のＮＷ使用量を当該合計値としてよい。そして、処理を終了する。
【０１２８】
（Ｓ３８）選択部１３０は、他の方法を用いて、新規仮想マシンの現在の負荷を予測する。他の方法の詳細については後述する。
なお、ステップＳ３４，Ｓ３５において、複数の既存仮想マシンの現在の最大負荷を新規仮想マシンの負荷の予測値とする理由は、物理マシンの負荷の予測値が小さく見積もられてしまうことを防止するためである。物理マシンの負荷の予測値が小さく見積もられてしまうと、実際の運用時に、新規仮想マシンを配置した物理マシンの負荷が過大になるおそれがある。そこで、選択部１３０は、着目する複数の既存仮想マシンの負荷のばらつきが比較的大きい場合は、既存仮想マシンの最大負荷を新規仮想マシンの負荷の予測値とすることで、物理マシンの負荷が過大にならないように配置先を選択する。
【０１２９】
また、ステップＳ３６，Ｓ３７において、着目する既存仮想マシンの現在の負荷の合計値を、（着目する既存仮想マシン数＋１）で割った値を、新規仮想マシンによる現在の負荷の予測値とする理由は、新規仮想マシンの負荷の予測精度をより高めるためである。すなわち、同一ＶＭタイプの既存仮想マシンが存在する場合、新規仮想マシンも当該既存仮想マシンと同様に利用される可能性が高い。更に、既存仮想マシンが１つであるか、または、既存仮想マシンが複数かつ複数の既存仮想マシンの負荷のばらつきが小さい場合は、新規仮想マシンの配置に伴い、新規仮想マシンを含めて既存仮想マシンの負荷が分散される可能性がある。そこで、この場合、選択部１３０は、着目する既存仮想マシンの現在の負荷の合計値を、（着目する既存仮想マシン数＋１）で割った値を、新規仮想マシンによる現在の負荷の予測値とする。
【０１３０】
図１６は、他の方法による予測の例を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。図１６に示す手順は、図１５のステップＳ３８に相当する。
【０１３１】
（Ｓ４１）選択部１３０は、新規仮想マシンのスペックが属するスペックグループと同一のスペックグループに属する既存仮想マシンの現在の負荷情報（ＣＰＵ使用量およびＮＷ使用量）を取得する。ここで、スペックグループとは、仮想マシンのスペックに応じて区分されるグループである。例えば、スペックグループとしては、次のようなＬｏｗ、Ｍｉｄ、Ｈｉｇｈの３区分が考えられる。Ｌｏｗは、仮想ＣＰＵのクロック数１ＧＨｚ以下かつメモリ容量２ＧＢ以下のスペックグループである（例えば、仮想ＣＰＵのクロック数１ＧＨｚ以下を選択する場合、２ＧＢよりも大きなメモリ容量の選択が制限される）。Ｍｉｄは、仮想ＣＰＵのクロック数が１ＧＨｚよりも大きく３ＧＨｚ未満かつメモリ容量が２ＧＢよりも大きく８ＧＢ未満のスペックグループである（例えば、仮想ＣＰＵのクロック数に１ＧＨｚよりも大きく３ＧＨｚ未満の値を選択する場合、２ＧＢ以下または８ＧＢ以上のメモリ容量の選択が制限される）。Ｈｉｇｈは、仮想ＣＰＵのクロック数が３ＧＨｚ以上かつメモリ容量８ＧＢ以上のスペックグループである（例えば、仮想ＣＰＵのクロック数３ＧＨｚ以上を選択する場合、８ＧＢよりも小さなメモリ容量の選択が制限される）。例えば、新規仮想マシンのスペックが、仮想ＣＰＵのクロック数２ＧＨｚかつメモリ容量４ＧＢであれば、新規仮想マシンはＭｉｄのスペックグループに属することになる。この場合、選択部１３０は、Ｍｉｄのスペックグループに属する複数の既存仮想マシンについて現在の負荷情報を取得する。現在の負荷情報の取得方法は、図１５のステップＳ３３で例示した方法と同様である。
【０１３２】
（Ｓ４２）選択部１３０は、ステップＳ４１で取得した負荷情報およびＶＭ管理テーブル１１４に基づいて、最近作成され、かつ、現在の負荷が比較的高負荷である既存仮想マシンをＮ（Ｎは正の整数）個サンプリングする。Ｎの値は予め記憶部１１０に記憶される（例えば、Ｎ＝１０，２０、あるいは、全既存仮想マシン数の１０％をＮとするなど）。ここでは、負荷情報として、例えば、ＣＰＵ使用量を利用する。あるいは、ＣＰＵ使用量とＮＷ使用量との両方を加味して、各既存仮想マシンの負荷を評価してもよい（例えば、ＣＰＵ使用量およびＮＷ使用量それぞれを所定のルールにより負荷の指標値に変換し、２つの指標値の合計を１つの既存仮想マシンの負荷とするなど）。
【０１３３】
（Ｓ４３）選択部１３０は、サンプリングしたＮ個の既存仮想マシンのＣＰＵ使用量の平均値を、新規仮想マシンによる現在のＣＰＵ使用量ａ１とする。
（Ｓ４４）選択部１３０は、サンプリングしたＮ個の既存仮想マシンのＮＷ使用量の平均値を、新規仮想マシンによる現在のＮＷ使用量ｂ１とする。
【０１３４】
図１７は、既存ＶＭのサンプリングの例を示す図である。例えば、選択部１３０は、新規仮想マシンがＭｉｄレベルのスペックグループに属する場合、当該Ｍｉｄレベルのスペックグループに属する各既存仮想マシンについて、作成日時および負荷の大きさに対する分布を得ることができる。新規仮想マシンと同じスペックグループに属する既存仮想マシンの負荷の情報を用いることで、新規仮想マシンの負荷の予測の精度を向上できる。
【０１３５】
図１７では横軸で作成日時を、縦軸で負荷の大きさを示している。横軸の右側ほど作成日時は古く、横軸の左側ほど作成日時は新しい。縦軸の下側ほど負荷は小さく、縦軸の上側ほど負荷は大きい。この２軸に対してプロットされた白い点の１つが、あるスペックグループ（例えば、Ｍｉｄレベルのスペックグループ）に属する１つの既存仮想マシンに相当する。
【０１３６】
選択部１３０は、図１７の分布のうち、作成日時が新しく、かつ、負荷が比較的大きい既存仮想マシンを、例えば１０個サンプリングする。領域Ｒは、サンプリング対象となる１０個の既存仮想マシンに対応する点を囲む領域である。例えば、選択部１３０は、作成日時が新しいものから古いものへと順番に、負荷が所定値以上ある既存仮想マシンを１０個抽出する。
【０１３７】
ここで、既存仮想マシンをスペックグループで絞り込んだとしても、当該スペックグループに属する既存仮想マシンの中には、スペック選択が過剰であったものや、ワークロードがピークを過ぎたもの（古いもの）が残存している可能性がある。このような既存仮想マシンの負荷の情報を用いると、新規仮想マシンの負荷が比較的小さく見積もられてしまうおそれがある。そこで、選択部１３０は、作成日時が新しく、かつ、負荷が比較的大きい既存仮想マシンをサンプリング対象とすることで、新規仮想マシンの負荷が小さめに見積もられてしまうことを抑制する。これにより、新規仮想マシンを割り当てた物理マシンの負荷が過大になることを防止する。
【０１３８】
なお、選択部１３０は、新規仮想マシンと同じテナントの既存仮想マシンのみをサンプリングの対象としてもよい。また、新規仮想マシンと同じテナントの既存仮想マシンおよび新規仮想マシンのテナントとは異なるテナントの既存仮想マシンの両方をサンプリングの対象としてもよい。
【０１３９】
図１８は、ＣＰＵ／ＮＷ使用量の未来予測の例を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。図１８に示す手順は、図１４のステップＳ１８に相当する。
【０１４０】
（Ｓ５１）選択部１３０は、物理マシン管理テーブル１１１およびＶＭ管理テーブル１１４を参照して、新規仮想マシンと同一テナントかつ同一ＶＭタイプの既存仮想マシンがあるか否かを判定する。ある場合、処理をステップＳ５２に進める。ない場合、処理をステップＳ６２に進める。具体的な判定方法は、ステップＳ３１と同様である。
【０１４１】
（Ｓ５２）選択部１３０は、新規仮想マシンと同一テナントかつ同一ＶＭタイプの既存仮想マシン（着目する既存仮想マシン）が１つであるか否かを判定する。１つではない、すなわち、複数である場合、処理をステップＳ５３に進める。１つである場合、処理をステップＳ５８に進める。なお、選択部１３０は、ステップＳ５１，Ｓ５２において、ステップＳ３１，Ｓ３２の判定結果をそのまま用いて、分岐先のステップを決定してもよい。
【０１４２】
（Ｓ５３）選択部１３０は、着目する複数の既存仮想マシンそれぞれの現在の負荷が同等であるか否かを判定する。同等でない場合、処理をステップＳ５４に進める。同等である場合、処理をステップＳ５８に進める。選択部１３０は、図１５のステップＳ３３の判定結果に応じて、ステップＳ５３の判定を行ってもよい。すなわち、ステップＳ３３で同等であると判定している場合は、本ステップＳ５３でも同等と判定し、ステップＳ３３で同等でないと判定している場合は、本ステップＳ５３でも同等でないと判定してもよい。あるいは、選択部１３０は、現在の時点だけでなく、過去の複数の時点（例えば、５時間前からの１時間置きの時点、１２０時間前からの２４時間置きの時点など）において、同等であるか（負荷の分散値または２つの既存仮想マシンの負荷の差が所定値よりも小さいか）を判定してもよい。そして、選択部１３０は、全ての時点において同等であればステップＳ５３の判定結果を同等とし、何れかの時点で同等でなければステップＳ５３の判定結果を同等でないと判定してもよい。なお、既存仮想マシンの過去の負荷は、記憶部１１０に格納された負荷履歴テーブルに記録されている。
【０１４３】
（Ｓ５４）選択部１３０は、ステップＳ５５，Ｓ５６の処理を予測対象時点毎に繰り返し実行する。ここで、予測対象時点は、例えば、現時点から所定の時間（１分間、５分間または１０分間など）置きの複数の時点である。例えば、１分置きであれば、現時点から１分後、２分後、３分後、・・・の時点が予測対象時点となる。１０分置きであれば、現時点から１０分後、２０分後、３０分後、・・・の時点が予測対象時点となる。予測対象時点の終点は、現時点から１週間後、１カ月後などである（現時点から終点までの期間が予測対象期間となる）。
【０１４４】
予測対象時点は、負荷履歴テーブルに登録された過去の時点に対応づけることができる。例えば、予測対象期間が１週間であれば、１分後の予測対象時点を、１分後の予測対象時点から１週間前の時点に対応させる。同様に、１０分後の予測対象時点を、１０分後の予測対象時点から１週間前の時点に対応させる。また、予測対象期間が１カ月であれば、１分後の予測対象時点を、１分後の予測対象時点の１カ月前の時点に対応させる。１０分後の予測対象時点を、１０分後の予測対象時点から１カ月前の時点に対応させる。以下の説明では、予測対象時点に対応する過去の時点を指して、着目時点と称する。選択部１３０は、予測対象時点に対応する着目時点を特定して、以下のステップＳ５５，Ｓ５６を繰り返し実行することになる。
【０１４５】
（Ｓ５５）選択部１３０は、既存仮想マシン毎の負荷履歴テーブルを参照して、着目する複数の既存仮想マシンそれぞれの着目時点のＣＰＵ使用量の最大値を、当該着目時点に対応する予測対象時点における新規仮想マシンのＣＰＵ使用量の予測値とする。
【０１４６】
（Ｓ５６）選択部１３０は、既存仮想マシン毎の負荷履歴テーブルを参照して、着目する複数の既存仮想マシンそれぞれの着目時点のＮＷ使用量の最大値を、当該着目時点に対応する予測対象時点における新規仮想マシンのＮＷ使用量の予測値とする。なお、ステップＳ５５，Ｓ５６において、複数の既存仮想マシンの着目時点の最大負荷を新規仮想マシンの負荷の予測値とする理由は、図１５のステップＳ３４，Ｓ３５と同様に、物理マシンの負荷の予測値が小さく見積もられてしまうことを防止するためである。
【０１４７】
（Ｓ５７）選択部１３０は、全ての予測対象時点について、ステップＳ５５，Ｓ５６の処理を実行すると処理を終了する。
（Ｓ５８）選択部１３０は、ステップＳ５９，Ｓ６０の処理を予測対象時点毎に繰り返し実行する。予測対象時点の考え方は、ステップＳ５４で説明した内容と同様である。選択部１３０は、予測対象時点に対応する着目時点を特定して、以下のステップＳ５９，Ｓ６０を繰り返し実行することになる。
【０１４８】
（Ｓ５９）選択部１３０は、着目する複数の既存仮想マシンそれぞれの着目時点のＣＰＵ使用量の合計値を、（着目する既存仮想マシン数＋１）で割った値を、当該着目時点に対応する予測対象時点における新規仮想マシンのＣＰＵ使用量の予測値とする。着目する既存仮想マシンが１つの場合は、当該１つの既存仮想マシンの着目時点のＣＰＵ使用量を当該合計値としてよい。選択部１３０は、各既存仮想マシンの着目時点毎のＣＰＵ使用量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
【０１４９】
（Ｓ６０）選択部１３０は、着目する複数の既存仮想マシンそれぞれの着目時点のＮＷ使用量の合計値を、（着目する既存仮想マシン数＋１）で割った値を、当該着目時点に対応する予測対象時点における新規仮想マシンのＮＷ使用量の予測値とする。着目する既存仮想マシンが１つの場合は、当該１つの既存仮想マシンの着目時点のＮＷ使用量を当該合計値としてよい。選択部１３０は、各既存仮想マシンの着目時点毎のＮＷ使用量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
【０１５０】
なお、ステップＳ５９，Ｓ６０において、着目する複数の既存仮想マシンそれぞれの着目時点の負荷の合計値を、（着目する既存仮想マシン数＋１）で割った値を、当該着目時点に対応する予測対象時点における新規仮想マシンの負荷の予測値とする理由は、図１５のステップＳ３６，Ｓ３７と同様に、新規仮想マシンの負荷の予測精度を高めるためである。
【０１５１】
（Ｓ６１）選択部１３０は、全ての予測対象時点について、ステップＳ５９，Ｓ６０の処理を実行すると処理を終了する。
（Ｓ６２）選択部１３０は、他の方法を用いて、新規仮想マシンの未来の負荷を予測する。他の方法の詳細については後述する。
【０１５２】
図１９は、他の方法による未来予測の例を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。図１９に示す手順は、図１８のステップＳ６２に相当する。ここで、図１９の手順が実行されるとき、図１６の手順を実行済みであり、Ｎ個の既存仮想マシンをサンプリング済みである。
【０１５３】
（Ｓ７１）選択部１３０は、同一スペックグループ内でサンプリングされたＮ個の既存仮想マシンの負荷履歴テーブルを取得する。
（Ｓ７２）選択部１３０は、ステップＳ７３，Ｓ７４の処理を予測対象時点毎に繰り返し実行する。予測対象時点および着目時点の考え方は、図１８のステップＳ５４で説明した考え方と同様である。選択部１３０は、予測対象時点に対応する着目時点を特定して、以下のステップＳ７３，Ｓ７４を繰り返し実行することになる。
【０１５４】
（Ｓ７３）選択部１３０は、サンプリングされたＮ個の既存仮想マシンの着目時点のＣＰＵ使用量の平均値を、当該着目時点に対応する予測対象時点における新規仮想マシンのＣＰＵ使用量の予測値とする。選択部１３０は、各既存仮想マシンの着目時点毎のＣＰＵ使用量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
【０１５５】
（Ｓ７４）選択部１３０は、サンプリングされたＮ個の既存仮想マシンの着目時点のＮＷ使用量の平均値を、当該着目時点に対応する予測対象時点における新規仮想マシンのＮＷ使用量の予測値とする。選択部１３０は、各既存仮想マシンの着目時点毎のＮＷ使用量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
【０１５６】
（Ｓ７５）選択部１３０は、全ての予測対象時点について、ステップＳ７３，Ｓ７４の処理を実行すると処理を終了する。
このようにして、管理サーバ１００は、新規仮想マシンを配置した場合の負荷を予測する。なお、選択部１３０は、図１４のステップＳ１５，Ｓ１８の処理を、最初の物理マシン選択時に一回実行し、新規仮想マシンの負荷の予測結果を記憶部１１０に保存しておけば、後は当該予測結果を用いて、各物理マシンの負荷を見積もれる。
【０１５７】
このため、２つ目以降に選択された物理マシンに対し、ステップＳ１５において、選択部１３０は、新規仮想マシンに対して予測された現在のＣＰＵ使用量ａ１およびＮＷ使用量ｂ１を、記憶部１１０から取得してもよい。同様に、２つ目以降に選択された物理マシンに対し、ステップＳ１８において、選択部１３０は、新規仮想マシンのＣＰＵおよびＮＷ使用量の未来予測の結果を記憶部１１０から取得してもよい。あるいは、選択部１３０は、ステップＳ１５，Ｓ１８をステップＳ１の後で、かつ、ステップＳ２の前に実行し、予測結果を記憶部１１０に保存しておくことも考えられる。
【０１５８】
図２０は、物理マシンの未来の負荷の予測例を示す図である。図２０（Ａ）は、物理マシン３００における８月１日（日曜日）〜８月７日（土曜日）までの１週間の負荷（例えば、ＣＰＵ使用量）の予測結果を例示している。例えば、管理サーバ１００は、直前の１週間（７月２５日（日曜日）〜７月３１日（土曜日））の負荷履歴から、当該予測結果を得られる。系列Ｍ１は、既存の仮想マシン３３０の予測負荷の系列である。系列Ｍ２は、既存の仮想マシン３４０の予測負荷の系列である。系列Ｍ３は、既存の仮想マシン３５０の予測負荷の系列である。系列Ｘは、新規仮想マシンの予測負荷の系列である。系列Ｍは、系列Ｍ１，Ｍ２，Ｍ３，Ｘで表される各予測対象時点の負荷を、予測対象時点毎に合計して得られた物理マシン３００の予測負荷の系列である。
【０１５９】
図２０の例では、予測対象期間を１週間とする。例えば、７月２５日と８月１日とは同じ曜日なので、７月２５日（日曜日）のある時刻の既存仮想マシン３３０，３４０，３５０それぞれの負荷を、８月１日（日曜日）の同時刻の既存仮想マシン３３０，３４０，３５０それぞれの負荷に対応させることができる。同様に、７月２５日（日曜日）のある時刻のある既存仮想マシンの負荷を用いて予測された新規仮想マシンの負荷を８月１日の同時刻の新規仮想マシンの負荷に対応させることができる。他の日の各時刻についても同様である。
【０１６０】
図２０（Ａ）の予測結果によれば、例えば、８月５日（木曜日）と８月６日（金曜日）とで物理マシン３００の負荷が閾値を超えてしまう。このため、選択部１３０は、物理マシン３００を、新規仮想マシンの配置先として選択しない。
【０１６１】
図２０（Ｂ）は、物理マシン３００ａにおける８月１日（日曜日）〜８月７日（土曜日）までの１週間の負荷（例えば、ＣＰＵ使用量）の予測結果を例示している。系列Ｎ１は、物理マシン３００ａで動作する第１の既存仮想マシンの予測負荷の系列である。系列Ｎ２は、物理マシン３００ａで動作する第２の既存仮想マシンの予測負荷の系列である。系列Ｎ３は、物理マシン３００ａで動作する第３の既存仮想マシンの予測負荷の系列である。系列Ｘは、新規仮想マシンの予測負荷の系列であり、図２０（Ａ）で示した系列Ｘと同一である。系列Ｎは、系列Ｎ１，Ｎ２，Ｎ３，Ｘで表される各予測対象時点の負荷を、予測対象時点毎に合計して得られた物理マシン３００ａ単位の予測負荷の系列である。
【０１６２】
図２０（Ｂ）で示される予測結果によれば、予測対象期間内において、物理マシン３００ａの負荷が閾値を超えることはない。このため、選択部１３０は、物理マシン３００ａを、新規仮想マシンの配置先として選択する。
【０１６３】
ところで、図１５のステップＳ３１や図１８のステップＳ５１では、新規仮想マシンと同一テナントかつ同一ＶＭタイプの既存仮想マシンを選択するものとしたが、スペックなどが類似する既存仮想マシンを選択することも考えられる。図１３のステップＳ１において、新規仮想マシンのＶＭタイプが指定される代わりに、新規仮想マシンに関し、何れのＶＭタイプにも該当しないスペックなどが指定されることも考えられるからである。
【０１６４】
例えば、管理サーバ１００は、各既存仮想マシンについて、スペック、ＯＳ、ＭＷおよび負荷分散の利用有無などの情報を記憶部１１０に記録しておく。そして、選択部１３０は、新規仮想マシンに対して指定されたスペック、ＯＳ、ＭＷおよび負荷分散の利用有無などの情報を、記憶部１１０に記憶された各既存仮想マシンの情報と比較し、新規仮想マシンと、各既存仮想マシンとの類似度を計算する。
【０１６５】
より具体的には、ＯＳ、ＭＷおよび負荷分散の利用有無については、同じか、相違するかに応じた一致度をそれぞれ決定する。例えば、一致すれば一致度を正の所定値とし、一致しなければ一致度を０とする。また、スペックについては、仮想ＣＰＵ数、クロック数、メモリ容量、ディスク容量および接続ＮＷ数それぞれについて、近似する度合い（差）に応じた一致度をそれぞれ決定する。例えば、仮想ＣＰＵ数などの同じ項目同士の値の差が小さいほど一致度を大きな値とする。各項目について決定した一致度の合計を、新規仮想マシンと、既存仮想マシンとの類似度とする。
【０１６６】
上記で例示したように一致度を決定すれば、類似度の値が大きいほど、類似する度合も大きくなる。このため、選択部１３０は、新規仮想マシンとの類似度が最大（あるいは、大きい方から所定数個）の既存仮想マシンを選択すれば、新規仮想マシンと利用形態の類似する複数の既存仮想マシンを選択できる。このとき、選択部１３０は、類似度が一定値以上の既存仮想マシンが存在しない場合に、ステップＳ３８やステップＳ６２を実行してもよい。
【０１６７】
更に、図１４の物理マシンの選択処理では、順番に選択された物理マシンのうち、最初にステップＳ２０でＮｏの判定となった物理マシンが選択されることになる。一方、物理マシンの他の選択方法も考えられる。例えば、選択部１３０は、全物理マシンに対して、図１４の選択処理を実行してもよい。その上で、選択部１３０は、新規仮想マシンを配置したときに予測される負荷の予測対象期間における最大値（または、平均値）が、最小となる物理マシンを、新規仮想マシンの配置先として選択してもよい。
【０１６８】
また、上記の説明では、予測対象期間を１週間としたが、１カ月など他の時間幅としてもよい。例えば、予測対象期間を１カ月とするなら、前月の第１月曜の負荷実績を次月の第１月曜の負荷予測に用い、前月の第２月曜の負荷実績を次月の第２月曜の負荷予測に用いるというように、同じ曜日であっても第何週に属するかによって更に区別して、予測し得る。
【０１６９】
図２１は、ストレージ選択処理の例を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。図２１に示す手順は、図１３のステップＳ３に相当する。
【０１７０】
（Ｓ８１）選択部１３０は、ストレージ４１０，４２０，４３０の中からストレージを１つ選択する。なお、選択部１３０は、ステップＳ８２以降の手順を既に実行済みのストレージを選択の対象から除外する。
【０１７１】
（Ｓ８２）選択部１３０は、ストレージ管理テーブル１１２を参照して、選択したストレージのストレージアクセス量ｃを取得する。選択部１３０は、ストレージアクセス量ｃが閾値テーブル１１３に登録されたストレージアクセス量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップＳ８１に進める。閾値未満である場合、処理をステップＳ８３に進める。ここで、閾値テーブル１１３には、ストレージアクセス量の閾値として３２０ＭＢ／ｓが登録されている。例えば、ステップＳ８１でストレージ４１０が選択されているとする。ストレージ管理テーブル１１２によれば、ストレージ４１０のストレージアクセス量ｃ＝３００ＭＢ／ｓである。この場合、選択部１３０は、ストレージアクセス量ｃ＝３００ＭＢ／ｓが閾値３２０ＭＢ／ｓ未満であると判定する。
【０１７２】
（Ｓ８３）選択部１３０は、着目するストレージが属するストレージグループに、新規仮想マシンの配置要求元のテナントと同一テナントの既存仮想マシンが利用する他のストレージがあるか否かを判定する。当該他のストレージがある場合、処理をステップＳ８１に進める。当該他のストレージがない場合、処理をステップＳ８４に進める。ストレージグループとは、ストレージプール４００における複数のストレージの集合である。例えば、ストレージ４１０，４２０が第１のストレージグループに属し、ストレージ４３０が第２のストレージグループに属することを示す情報が記憶部１１０に予め格納される。選択部１３０は、記憶部１１０に記憶された当該情報を参照することで、ステップＳ８３の判定を行える。
【０１７３】
（Ｓ８４）選択部１３０は、ストレージ管理テーブル１１２およびＶＭ管理テーブル１１４を参照して、新規仮想マシンの配置要求元のテナントと同一テナントの既存仮想マシンが、着目するストレージを利用しているか否かを判定する。利用している場合、処理をステップＳ８１に進める。利用していない場合、処理をステップＳ８５に進める。例えば、選択部１３０は、ストレージ管理テーブル１１２を参照して、着目しているストレージ上で動作中のＶＭ名を取得する。選択部１３０は、ＶＭ管理テーブル１１４を参照して、取得したＶＭ名に対応するテナント名を取得する。選択部１３０は、取得したテナント名に、配置要求を行ったテナントのテナント名が含まれるか否かを判定することで、当該ステップＳ８４の判定を行える。含まれれば、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシンが当該ストレージを利用中である。含まれなければ、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシンが当該ストレージを利用中でない。
【０１７４】
（Ｓ８５）選択部１３０は、新規仮想マシンによる現在のストレージアクセス量ｃ１を予測する。予測方法は、図１５，１６の手順と同様である（ステップＳ３３の判定は各既存仮想マシンの現ストレージアクセス量を用いて行える）。選択部１３０は、ＣＰＵ使用量ａ１およびＮＷ使用量ｂ１の代わりに、ストレージアクセス量ｃ１を予測する。例えば、ステップＳ３４，Ｓ３５に相当する処理を実行する場合、着目する複数の既存仮想マシンの現在のストレージアクセス量のうち、最大の値をｃ１とする。または、ステップＳ３６，Ｓ３７に相当する処理を実行する場合、着目する既存仮想マシンのストレージアクセス量の合計値を、（既存仮想マシン数＋１）で割った値をｃ１とする。または、ステップＳ４３，Ｓ４４に相当する処理を実行する場合、サンプリングしたＮ個の既存仮想マシンのストレージアクセス量の平均値をｃ１とする（既存仮想マシンをサンプリングする際の負荷情報として、各既存仮想マシンのストレージアクセス量を用いてもよい）。
【０１７５】
（Ｓ８６）選択部１３０は、ステップＳ８２の判定に用いたストレージアクセス量ｃおよびステップＳ８５で予測したストレージアクセス量ｃ１の和ｃ＋ｃ１が、閾値テーブル１１３に登録されたストレージアクセス量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップＳ８１に進める。閾値未満である場合、処理をステップＳ８７に進める。
【０１７６】
（Ｓ８７）選択部１３０は、新規仮想マシンによるストレージアクセス量の未来予測を行う。予測方法は、図１８，１９の手順と同様である。選択部１３０は、ＣＰＵ使用量およびＮＷ使用量の代わりに、ストレージアクセス量を予測する（ステップＳ５３の判定は各既存仮想マシンの現ストレージアクセス量または過去のストレージアクセス量を用いて行える）。例えば、ステップＳ５５，Ｓ５６に相当する処理を実行する場合、着目する複数の既存仮想マシンの着目時点のストレージアクセス量のうち最大の値を、当該着目時点に対応する予測対象時点における新規仮想マシンのストレージアクセス量とする。または、ステップＳ５９，Ｓ６０に相当する処理を実行する場合、着目する既存仮想マシンの着目時点におけるストレージアクセス量の合計値を、（既存仮想マシン数＋１）で割った値を、当該着目時点に対応する予測対象時点における新規仮想マシンのストレージアクセス量とする。または、ステップＳ７３，Ｓ７４に相当する処理を実行する場合、サンプリングしたＮ個の既存仮想マシンの着目時点のストレージアクセス量の平均値を、当該着目時点に対応する予測対象時点における新規仮想マシンのストレージアクセス量とする。選択部１３０は、各既存仮想マシンの着目時点のストレージアクセス量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
【０１７７】
（Ｓ８８）選択部１３０は、ステップＳ８７の予測結果に応じて、着目するストレージの未来のストレージアクセス量が閾値以上になるか否かを判定する。閾値以上になる場合、処理をステップＳ８１に進める。閾値未満である場合、処理をステップＳ８９に進める。ステップＳ８８におけるストレージの未来のストレージアクセス量の予測方法は、図２０で例示した物理マシンの未来の負荷の予測方法と同様である。すなわち、（予測対象期間内の）ある予測対象時点における、当該ストレージを使用する既存仮想マシンによるストレージアクセス量と、新規仮想マシンによるストレージアクセス量（予測アクセス量）との和が、当該時点におけるストレージ単位のストレージアクセス量である。選択部１３０は、全ての予測対象時点において、ストレージ単位のストレージアクセス量が閾値未満であれば、処理をステップＳ８９に進める。選択部１３０は、何れかの予測対象時点で、ストレージ単位のストレージアクセス量が閾値以上であれば、処理をステップＳ８１に進める。
【０１７８】
（Ｓ８９）選択部１３０は、着目するストレージを新規仮想マシンに割り当てると決定する。選択部１３０は、決定した結果を配置部１４０に通知する。
このようにして、管理サーバ１００は、新規仮想マシンに割り当てるストレージを選択する。これにより、新規仮想マシンの配置に伴って、ストレージ４１０，４２０，４３０の負荷が過大となることを抑制できる。
【０１７９】
図２２は、負荷履歴補正処理の例を示すフローチャートである。以下、図２２に示す処理をステップ番号に沿って説明する。図２２に示す手順は、図１３のステップＳ６に相当する。
【０１８０】
（Ｓ９１）選択部１３０は、新規仮想マシンの追加により既存仮想マシンの負荷が下がる予測をしたか否かを判定する。既存仮想マシンの負荷が下がる予測をした場合、処理をステップＳ９２に進める。既存仮想マシンの負荷が下がる予測をしていない場合、処理を終了する。ここで、「新規仮想マシンの追加により既存仮想マシンの負荷が下がる予測」とは、図１５のステップＳ３６，Ｓ３７の予測処理および図１８のステップＳ５９，Ｓ６０の予測処理である。すなわち、選択部１３０は、当該ステップＳ３６，Ｓ３７またはステップＳ５９，Ｓ６０の少なくとも何れかの処理を行っている場合、「既存仮想マシンの負荷が下がる予測をした」と判定する。選択部１３０は、当該ステップＳ３６，Ｓ３７またはステップＳ５９，Ｓ６０の何れの処理も行っていない場合、「既存仮想マシンの負荷が下がる予測をしていない」と判定する。
【０１８１】
（Ｓ９２）選択部１３０は、図１５のステップＳ３６，Ｓ３７および図１８のステップＳ５９，Ｓ６０において着目した既存仮想マシンの負荷履歴テーブルに含まれる各時点の負荷値（ＣＰＵおよびＮＷ使用量）を補正する。具体的には、選択部１３０は、各時点の負荷値に｛既存仮想マシン数／（既存仮想マシン数＋１）｝を乗じた値を補正後の負荷値とする。ここで、当該既存仮想マシン数は今回新たに配置した新規仮想マシンの数を含まない（当該既存仮想マシン数は、ステップＳ３６，Ｓ３７，Ｓ５９，Ｓ６０の計算で用いた既存仮想マシン数と同じ値となる）。
【０１８２】
このようにして、管理サーバ１００は、既存仮想マシンの負荷履歴テーブルの値を補正する。それ以降に、他の新規仮想マシンの配置先の物理マシンを選択する際に、今回配置した新規仮想マシンによる既存仮想マシンの負荷の減少分を考慮して、当該他の新規仮想マシンの負荷および各物理マシンの負荷を予測できるようにするためである。これにより、各物理マシンの負荷の予測精度をより高めることができる。
【０１８３】
図２３は、新規ＶＭの配置例を示す図である。例えば、複数の物理マシン上で動作する複数の既存仮想マシンには、様々なテナントによって利用される仮想マシンが含まれる。管理サーバ１００は、これから新規に配置しようとする仮想マシンの負荷予測を行うために、複数の既存仮想マシンのうち、適切な既存仮想マシンを選択する。管理サーバ１００は、選択した既存仮想マシンの負荷を用いて、新規仮想マシンの負荷を予測することで、予測の精度を向上し得る。
【０１８４】
例えば、既存仮想マシン全体には、テナントＡ，Ｂ，Ｃの仮想マシンが含まれている。また、テナントＡが行う業務においても業務α，β，γなど、種々の業務が存在している。１つの業務の中でも仮想マシンで利用されるＯＳやＭＷなどの種類は様々である。
【０１８５】
そこで、管理サーバ１００は、新規仮想マシンと同一テナントかつ同一ＶＭタイプ（または類似のＶＭタイプ）という条件により、既存仮想マシンを絞り込む。同一テナントかつ同一ＶＭタイプの既存仮想マシンと新規仮想マシンとは、同じ用途で利用される可能性が高いからである。例えば、テナントＡの業務αに注目する。業務αは、Ｗｅｂ３階層のシステムで構築されている。この場合、Ｗｅｂサーバとして利用される各仮想マシンは、同一ＶＭタイプが選択される可能性が高い。ＡＰサーバとして利用される各仮想マシンは、同一ＶＭタイプが選択される可能性が高い。ＤＢサーバとして利用される各仮想マシンは、同一ＶＭタイプが選択される可能性が高い。
【０１８６】
例えば、テナントＡが新規仮想マシンの配置を要求するとき、当該新規仮想マシンのＶＭタイプが、テナントＡのＷｅｂサーバ群と同一（あるいは、類似の）ＶＭタイプであれば、新規仮想マシンもＷｅｂサーバとして利用される可能性が高い。よって、テナントＡの当該ＶＭタイプの既存仮想マシン群の負荷履歴を用いて新規仮想マシンの負荷を予測することで、適格な予測を行える。このようにして、管理サーバ１００は、配置先候補の物理マシンの負荷予測の高精度化を図り、適切な配備先の物理マシンの選定を可能にする。
【０１８７】
なお、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１８８】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【０１８９】
以上の第１，第２の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する第１の情報および前記複数の既存仮想マシンそれぞれの過去の負荷状況を示す履歴情報を記憶する記憶部と、
前記複数の物理マシンの何れかに仮想マシンを新たに配置する際に、前記第１の情報と前記仮想マシンの利用形態に関する第２の情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの前記履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、演算部と、
を有する負荷分散管理装置。
【０１９０】
（付記２）  前記演算部は、新たに配置する前記仮想マシンと同じユーザにより利用されている前記複数の既存仮想マシンの中から前記既存仮想マシンを１つ以上選択し、選択した前記既存仮想マシン毎の過去の所定時点における負荷の合計を、選択した前記既存仮想マシンの数に１を加算した数で割った平均負荷を用いて、前記配置先候補の物理マシンの負荷を予測する、付記１記載の負荷分散管理装置。
【０１９１】
（付記３）  前記演算部は、２以上の既存仮想マシンを選択した場合、前記２以上の既存仮想マシンそれぞれの負荷の差または偏差に応じて、前記平均負荷を用いて前記配置先候補の物理マシンの負荷を予測するか、または、前記２以上の既存仮想マシンそれぞれの負荷の最大値を用いて前記配置先候補の物理マシンの負荷を予測するか、を選択する、付記２記載の負荷分散管理装置。
【０１９２】
（付記４）  前記演算部は、選択した前記既存仮想マシンの数に基づいて、前記履歴情報に含まれる当該既存仮想マシン毎の負荷の情報を補正する、付記２または３記載の負荷分散管理装置。
【０１９３】
（付記５）  前記演算部は、前記第１および前記第２の情報に加え、前記複数の既存仮想マシンそれぞれの作成日時に基づいて、前記既存仮想マシンを選択する、付記１記載の負荷分散管理装置。
【０１９４】
（付記６）  前記演算部は、前記複数の既存仮想マシンのうち、作成日時が新しく、かつ、負荷が所定値よりも高い既存仮想マシンを優先して複数選択し、選択した前記既存仮想マシン毎の過去の所定時点の負荷を用いて、前記配置先候補の物理マシンの負荷を予測する、付記５記載の負荷分散管理装置。
【０１９５】
（付記７）  前記利用形態の情報は、仮想マシンに割り当てられるリソース量、仮想マシンにより利用されるソフトウェアおよび仮想マシンに対して適用されるサービス種別の少なくとも何れかの項目を含む、付記１乃至６の何れか１つに記載の負荷分散管理装置。
【０１９６】
（付記８）  前記演算部は、前記第１および前記第２の情報に含まれる前記利用形態に関する複数の項目それぞれの設定値の一致度に基づいて、前記既存仮想マシンを選択する、付記１乃至７の何れか１つに記載の負荷分散管理装置。
【０１９７】
（付記９）  前記複数の既存仮想マシンそれぞれは、複数のストレージの何れかにアクセス可能であり、
前記履歴情報は、前記複数の既存仮想マシンそれぞれによるストレージに対するアクセス量の履歴を含み、
前記演算部は、選択した前記既存仮想マシンによるストレージに対するアクセス量の履歴に基づいて、前記仮想マシンを配置することによる前記複数のストレージそれぞれのアクセス量を予測し、予測結果に応じて前記仮想マシンによりアクセス可能にするストレージを決定する、付記１乃至８の何れか１つに記載の負荷分散管理装置。
【０１９８】
（付記１０）  前記演算部は、前記仮想マシンの配置先候補の複数の物理マシンのうち、未来の所定期間の予測された負荷が閾値以上とならない物理マシンを前記仮想マシンの配置先と決定する、付記１乃至９の何れか１つに記載の負荷分散管理装置。
【０１９９】
（付記１１）  コンピュータが、
複数の物理マシンの何れかに仮想マシンを新たに配置する際に、前記仮想マシンの利用形態に関する情報と、前記複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、
制御方法。
【０２００】
（付記１２）  複数の物理マシンの何れかに仮想マシンを新たに配置する際に、前記仮想マシンの利用形態に関する情報と、前記複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、
処理をコンピュータに実行させるプログラム。
【符号の説明】
【０２０１】
１  負荷分散管理装置
１ａ  記憶部
１ｂ  演算部
２，３，４  物理マシン
２ａ，２ｂ，３ａ，３ｂ，４ａ，４ｂ  仮想マシン
５  新規仮想マシンの情報
６，６ａ，６ｂ  グラフ
【図１】
0006455035.tif 000002
【図２】
0006455035.tif 000003
【図３】
0006455035.tif 000004
【図４】
0006455035.tif 000005
【図５】
0006455035.tif 000006
【図６】
0006455035.tif 000007
【図７】
0006455035.tif 000008
【図８】
0006455035.tif 000009
【図９】
0006455035.tif 000010
【図１０】
0006455035.tif 000011
【図１１】
0006455035.tif 000012
【図１２】
0006455035.tif 000013
【図１３】
0006455035.tif 000014
【図１４】
0006455035.tif 000015
【図１５】
0006455035.tif 000016
【図１６】
0006455035.tif 000017
【図１７】
0006455035.tif 000018
【図１８】
0006455035.tif 000019
【図１９】
0006455035.tif 000020
【図２０】
0006455035.tif 000021
【図２１】
0006455035.tif 000022
【図２２】
0006455035.tif 000023
【図２３】
0006455035.tif 000024