(57)【特許請求の範囲】
【請求項１】
第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す予測負荷を記憶する記憶手段と、
前記予測負荷に基づいて、前記仮想マシンを実行するコンピュータの割り当てを行う割り当て手段と、
前記第１のタイミングにおける前記予測負荷と、前記第１のタイミングで測定された負荷との間の差異が閾値を超える場合、前記測定された負荷に基づいて、前記第１のタイミングより後の前記第２のタイミングにおける前記予測負荷を修正する予測修正手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記第２のタイミングは、前記第１のタイミングと曜日および時間帯の少なくとも一方が共通するタイミングであることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記予測修正手段は、前記予測負荷と前記測定された負荷との間の差異が前記閾値を超える場合、前記第２のタイミングに加えて、前記第１のタイミングが属する時間帯に続く第３のタイミングにおける前記予測負荷を修正することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記割り当て手段は、前記予測負荷に基づいて、将来の各タイミングにおける前記割り当ての変更の発生を予測し、前記割り当ての変更の回数が最も小さくなるように、現在の割り当てを決定することを特徴とする請求項１記載の情報処理装置。
【請求項５】
情報処理装置が実行する仮想マシン管理方法であって、
第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す予測負荷を記憶する記憶手段を参照し、
前記第１のタイミングにおける前記予測負荷と前記第１のタイミングで測定された負荷との間の差異が閾値を超える場合、前記測定された負荷に基づいて、前記第１のタイミングより後の前記第２のタイミングにおける前記予測負荷を修正し、
修正された前記予測負荷に基づいて、前記仮想マシンを実行するコンピュータの割り当てを行う、
ことを特徴とする仮想マシン管理方法。
【請求項６】
コンピュータに、
第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す予測負荷を記憶する記憶手段を参照し、
前記第１のタイミングにおける前記予測負荷と前記第１のタイミングで測定された負荷との間の差異が閾値を超える場合、前記測定された負荷に基づいて、前記第１のタイミングより後の前記第２のタイミングにおける前記予測負荷を修正し、
修正された前記予測負荷に基づいて、前記仮想マシンを実行するコンピュータの割り当てを行う、
処理を実行させることを特徴とする仮想マシン管理プログラム。
【請求項７】
第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す予測負荷を記憶する記憶手段と、
前記予測負荷に基づいて、前記仮想マシンを実行するコンピュータの割り当てを行う割り当て手段と、
前記第１のタイミングにおける前記予測負荷と、前記第１のタイミングで測定された負荷との間のずれを検出すると、前記測定された負荷に基づいて、前記第１のタイミングより後の前記第２のタイミングにおける前記予測負荷を修正する予測修正手段と、
を有し、
前記割り当て手段は、前記予測負荷に基づいて、将来の各タイミングにおける前記割り当ての変更の発生を予測し、前記割り当ての変更の回数が最も小さくなるように、現在の割り当てを決定する、
ことを特徴とする情報処理装置。
【請求項８】
コンピュータに、
第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す予測負荷を記憶する記憶手段を参照し、
前記第１のタイミングにおける前記予測負荷と前記第１のタイミングで測定された負荷との間のずれを検出すると、前記測定された負荷に基づいて、前記第１のタイミングより後の前記第２のタイミングにおける前記予測負荷を修正し、
修正された前記予測負荷に基づいて、将来の各タイミングにおける前記仮想マシンを実行するコンピュータの割り当ての変更の発生を予測し、前記割り当ての変更の回数が最も小さくなるように、現在の割り当てを決定する、
処理を実行させることを特徴とする仮想マシン管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムに関する。
【背景技術】
【０００２】
現在、情報処理の分野では、物理的なコンピュータ上で、１またはそれ以上の仮想的なコンピュータ（仮想マシンと呼ぶことがある）を実行する仮想化技術が利用されている。それぞれの仮想マシンにおいて、オペレーティングシステム（ＯＳ：Operating System）が実行される。仮想マシンを実行する物理的なコンピュータでは、例えば、ＣＰＵ（Central Processing Unit）やＲＡＭ（Random Access Memory）などのリソースを仮想マシンに割り当てるソフトウェア（ハイパーバイザと呼ぶことがある）が実行される。各仮想マシンのＯＳは、ハイパーバイザから割り当てられたリソースの範囲内で、アプリケーションプログラムのスケジューリングなどの制御を行う。
【０００３】
複数の物理的なコンピュータを含む情報処理システムには、仮想マシンを実行するコンピュータを動的に変更できるものがある。例えば、仮想マシンを終了させずに、ハイパーバイザ間で仮想マシンに関するデータを移動させることができる技術がある。仮想マシンをコンピュータ間で移動させることで、負荷の平準化を図り、特定の物理的なコンピュータに負荷が集中することを抑制することができる。
【０００４】
なお、リソース使用率が低い物理マシンを検出すると、当該物理マシンで稼働している仮想マシンの負荷の低い状態が一定期間継続するか判断し、継続すると判断した場合は、当該仮想マシンを他の物理マシンに移動させる方法が提案されている。また、仮想マシンの負荷のサイクルを示す関数を算出し、算出した関数を用いて物理マシンのリソース不足を事前に検出し、仮想マシンの移動をスケジューリングする方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１５１９２号公報（段落［００４６］）
【特許文献２】特開２０１０−１１７７６０号公報（段落［０００５］）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、仮想マシンの負荷の傾向は、様々な要因で変化し、事前に正確に予測することが困難であることも多い。このため、事前に予測した負荷の傾向に基づいて仮想マシンの配置を決定するだけでは、予測時点からの時間の経過に伴って、次第に仮想マシンの配置が適切でなくなり、十分に負荷の平準化が図られない状態になるおそれがある。
【０００７】
本発明はこのような点に鑑みてなされたものであり、負荷の変化に応じて仮想マシンの効率的な配置を行えるようにした情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
記憶手段と割り当て手段と予測修正手段とを有する情報処理装置が提供される。記憶手段は、第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す負荷予測を記憶する。割り当て手段は、負荷予測に基づいて、仮想マシンを実行するコンピュータの割り当てを行う。予測修正手段は、第１のタイミングにおける予測負荷と、第１のタイミングで測定された負荷との間の差異が閾値を超える場合、測定された負荷に基づいて、第１のタイミングより後の第２のタイミングにおける予測負荷を修正する。
【０００９】
また、情報処理装置が実行する仮想マシン管理方法が提供される。この仮想マシン管理方法では、第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す予測負荷を記憶する記憶手段を参照して、第１のタイミングにおける予測負荷と第１のタイミングで測定された負荷との間の差異が閾値を超える場合、測定された負荷に基づいて、第１のタイミングより後の第２のタイミングにおける予測負荷を修正する。修正された予測負荷に基づいて、仮想マシンを実行するコンピュータの割り当てを行う。また、コンピュータに実行させる仮想マシン管理プログラムが提供される。
また、記憶手段と割り当て手段と予測修正手段とを有する情報処理装置が提供される。記憶手段は、第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す予測負荷を記憶する。割り当て手段は、予測負荷に基づいて、仮想マシンを実行するコンピュータの割り当てを行う。予測修正手段は、第１のタイミングにおける予測負荷と、第１のタイミングで測定された負荷との間のずれを検出すると、測定された負荷に基づいて、第１のタイミングより後の第２のタイミングにおける予測負荷を修正する。更に、割り当て手段は、予測負荷に基づいて、将来の各タイミングにおける割り当ての変更の発生を予測し、割り当ての変更の回数が最も小さくなるように、現在の割り当てを決定する。
また、仮想マシン管理プログラムが提供される。この仮想マシン管理プログラムは、コンピュータに、第１のタイミングおよび第２のタイミングのそれぞれにおける仮想マシンの負荷の予測を示す予測負荷を記憶する記憶手段を参照し、第１のタイミングにおける予測負荷と第１のタイミングで測定された負荷との間のずれを検出すると、測定された負荷に基づいて、第１のタイミングより後の第２のタイミングにおける予測負荷を修正し、修正された予測負荷に基づいて、将来の各タイミングにおける仮想マシンを実行するコンピュータの割り当ての変更の発生を予測し、割り当ての変更の回数が最も小さくなるように、現在の割り当てを決定する、処理を実行させる。
【発明の効果】
【００１０】
上記情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムによれば、負荷の変化に応じて仮想マシンの効率的な配置を行える。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の情報処理システムを示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】管理サーバのハードウェア例を示すブロック図である。
【図４】実行サーバの仮想マシンの配置例を示すブロック図である。
【図５】管理サーバの機能を示すブロック図である。
【図６】リソース管理テーブルのデータ構造例を示す図である。
【図７】負荷カレンダーのデータ構造例を示す第１の図である。
【図８】負荷カレンダーのデータ構造例を示す第２の図である。
【図９】負荷カレンダーのデータ構造例を示す第３の図である。
【図１０】負荷予測処理を示すフローチャートである。
【図１１】次月の負荷カレンダーの作成処理を示すフローチャートである。
【図１２】第２の実施の形態の配置替え処理を示すフローチャートである。
【図１３】第３の実施の形態の配置替え処理を示すフローチャートである。
【図１４】第４の実施の形態の配置替え処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムを示す図である。第１の実施の形態の情報処理システムは、情報処理装置１、および、コンピュータ２を含む複数のコンピュータを有する。情報処理装置１は、複数のコンピュータと通信が可能である。情報処理装置１は、仮想マシン２ａ，２ｂの配置を管理する。複数のコンピュータは、例えば、情報処理装置１からの指示に従って仮想マシンを動作させるためのハイパーバイザを実行する。情報処理装置１は、記憶手段１ａ、割り当て手段１ｂおよび予測修正手段１ｃを有する。
【００１３】
記憶手段１ａは、複数の異なるタイミングそれぞれにおける仮想マシン２ａ，２ｂの予測される負荷を示す負荷情報を記憶する。例えば、負荷情報は、時間帯毎に複数日分（例えば、１ヶ月分）の予測される負荷の値を含む。負荷の値としては、例えば、ＣＰＵ使用率やメモリ使用率などを用いることが考えられる。
【００１４】
ここで、予測される負荷とは、例えば、ある時点で実測の負荷を取得した際に、他の月内の同一時期（第一週目や最終週など）、他の週の同一曜日、同一時間帯などを当該実測の負荷に基づき予測して得られる負荷である。例えば、実測の負荷を取得した時点と同一時間帯については、未来の同一時間帯も当該実測の負荷になると予測することが考えられる。
【００１５】
割り当て手段１ｂは、記憶手段１ａが記憶する負荷情報が示す予測される負荷に基づいて、仮想マシン２ａ，２ｂを実行するコンピュータの割り当てを行う。例えば、各時間帯の始点で、当該時間帯の予測される負荷の値に基づいて、負荷が平準化されるように割り当てを見直す。割り当て手段１ｂは、例えば、仮想マシン２ａ，２ｂを実行するコンピュータとしてコンピュータ２を選択する。その場合、例えば、コンピュータ２のハイパーバイザは、情報処理装置１からの指示に従って仮想マシン２ａ，２ｂを動作させる。
【００１６】
予測修正手段１ｃは、第１のタイミングにおける予測される負荷と仮想マシン２ａ，２ｂの測定された負荷との間の差異を検出する。測定された負荷を示す情報は、例えば、コンピュータ２から収集される。予測修正手段１ｃは、予測される負荷の値と測定された負荷の値との差が閾値を超えるときに、差異が検出されたと判定してもよい。差異が検出されると、予測修正手段１ｃは、測定された負荷に基づいて、第１のタイミングより後の第２のタイミングの予測される負荷を修正し、負荷情報を更新する。第２のタイミングは、第１のタイミングに応じたものであり、例えば、曜日や時間帯などの属性の少なくとも１つが第１のタイミングと共通するタイミングである。
【００１７】
情報処理装置１では、予測修正手段１ｃにより、負荷情報を記憶する記憶手段１ａが参照され、第１のタイミングにおける予測される負荷と測定された負荷との間の差異が検出される。すると、予測修正手段１ｃにより、測定された負荷に基づいて、第１のタイミングより後の、第１のタイミングに応じた第２のタイミングにおける予測される負荷が修正される。そして、割り当て手段１ｂにより、修正された予測される負荷に基づいて、仮想マシン２ａ，２ｂを実行するコンピュータの割り当てが行われる。
【００１８】
これにより、負荷の変化に柔軟に対応して仮想マシン２ａ，２ｂの効率的な配置を行えるようになる。例えば、仮想マシン２ａ，２ｂの負荷の傾向（変動サイクルなど）は、新たなアプリケーションプログラムの運用開始や既存のアプリケーションプログラムの運用終了などの様々な要因で変化し得る。このため、過去に算出した負荷の傾向が、現在の負荷の傾向に合わなくなる可能性がある。この点、情報処理装置１は、予測される負荷と測定された負荷との間の差異が検出されると、検出されたタイミングに対応する将来のタイミング（例えば、曜日や時間帯が同じタイミング）の負荷の予測を動的に修正する。よって、負荷の傾向の変化に迅速に対応し、負荷の平準化が失敗する可能性を低減できる。
【００１９】
以下に説明する第２の実施の形態では、複数のサーバコンピュータ上で複数の仮想マシンを実行して、ユーザが所望するアプリケーションプログラムを当該仮想マシン上で実行する情報処理システムの例を示す。
【００２０】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態に係る情報処理システムは、複数のサーバコンピュータ（以下、単にサーバということもある）上で実行される複数の仮想マシンは端末装置からの要求を受け付け、要求に応じたアプリケーションプログラムの処理を実行して端末装置に応答する。
【００２１】
この情報処理システムは、管理サーバ１００および実行サーバ２００，２００ａ，２００ｂを含む。管理サーバ１００、実行サーバ２００，２００ａ，２００ｂは、ネットワーク１０に接続されている。更に、端末装置２１がネットワーク１０に接続されている。
【００２２】
端末装置２１は、ユーザが操作する情報処理装置である。端末装置２１は、実行サーバ２００，２００ａ，２００ｂで実行される仮想マシンに対して処理の実行を要求する。端末装置２１は、実行サーバ２００，２００ａ，２００ｂから要求に対する処理結果を受信する。
【００２３】
管理サーバ１００は、仮想マシンに対する実行サーバ２００，２００ａ，２００ｂの割り当てを管理するサーバコンピュータである。すなわち、管理サーバ１００は仮想マシンの配置替えや、それに伴う仮想マシンの起動・停止などの制御を行う。
【００２４】
実行サーバ２００，２００ａ，２００ｂは、仮想マシンを実行するサーバコンピュータである。ここで、実行サーバ２００，２００ａ，２００ｂのサーバ名はそれぞれ“Ｓｅｒｖｅｒ１”、“Ｓｅｒｖｅｒ２”、“Ｓｅｒｖｅｒ３”である。
【００２５】
図３は、管理サーバのハードウェア例を示すブロック図である。管理サーバ１００は、ＣＰＵ１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ１０３、ＨＤＤ（Hard Disk Drive）１０４、グラフィック処理装置１０５、入力インタフェース１０６、記録媒体読取装置１０７および通信インタフェース１０８を有する。
【００２６】
ＣＰＵ１０１は、ＯＳプログラムやアプリケーションプログラムを実行して、管理サーバ１００全体を制御する。
ＲＯＭ１０２は、管理サーバ１００の起動時に実行されるＢＩＯＳ（Basic Input / Output System）プログラムなどの所定のプログラムを記憶する。ＲＯＭ１０２は、書き換え可能な不揮発性メモリであってもよい。
【００２７】
ＲＡＭ１０３は、ＣＰＵ１０１が実行するＯＳプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０３は、ＣＰＵ１０１の処理に用いられるデータの少なくとも一部を一時的に記憶する。
【００２８】
ＨＤＤ１０４は、ＯＳプログラムやアプリケーションプログラムを記憶する。また、ＨＤＤ１０４は、ＣＰＵ１０１の処理に用いられるデータを記憶する。なお、ＨＤＤ１０４に代えて（または、ＨＤＤ１０４と併せて）、ＳＳＤ（Solid State Drive）など他の種類の不揮発性の記憶装置を用いてもよい。
【００２９】
グラフィック処理装置１０５は、モニタ１１に接続される。グラフィック処理装置１０５は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１に表示させる。
入力インタフェース１０６は、キーボード１２やマウス１３などの入力デバイスに接続される。入力インタフェース１０６は、入力デバイスから送られる入力信号をＣＰＵ１０１に出力する。
【００３０】
記録媒体読取装置１０７は、記録媒体１４に格納されたデータを読み取る読取装置である。記録媒体１４には、例えば、管理サーバ１００に実行させるプログラムが記録されている。管理サーバ１００は、例えば、記録媒体１４に記録された仮想マシン管理プログラムを実行することで、後述するような仮想マシン管理機能を実現することができる。すなわち、仮想マシン管理プログラムはコンピュータ読み取り可能な記録媒体１４に記録して配布することが可能である。
【００３１】
記録媒体１４としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ／ＲＷ／ＲＡＭなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。半導体メモリには、ＵＳＢ（Universal Serial Bus）メモリなどのフラッシュメモリがある。
【００３２】
通信インタフェース１０８は、ネットワーク１０に接続される。通信インタフェース１０８は、ネットワーク１０を介して実行サーバ２００，２００ａ，２００ｂおよび端末装置２１とデータ通信を行える。
【００３３】
なお、ネットワーク１０に接続された他のサーバコンピュータ（図示せず）に仮想マシン管理プログラムを格納しておいてもよい。その場合、管理サーバ１００は、当該サーバコンピュータから仮想マシン管理プログラムをダウンロードして実行することもできる。
【００３４】
実行サーバ２００，２００ａ，２００ｂおよび端末装置２１も管理サーバ１００と同様のハードウェア構成により実現できる。
図４は、実行サーバの仮想マシンの配置例を示すブロック図である。実行サーバ２００は、ハードウェア層２１０、ハイパーバイザ２２０および仮想マシン層２３０を有する。
【００３５】
ハードウェア層２１０は、実行サーバ２００が備えるハードウェア資源（以下、リソースということもある）が属する階層である。ハードウェア資源としては、例えばＣＰＵ、ＲＡＭ、ＨＤＤおよび通信インタフェースなどがある。
【００３６】
ハイパーバイザ２２０は、実行サーバ２００上で仮想マシンを実現する。ハイパーバイザ２２０は、管理サーバ１００の指示に基づいて各仮想マシンに対するリソースの割り当てを行い、各仮想マシンの起動・停止を実行する。また、ハイパーバイザ２２０は、各仮想マシンがハードウェア層２１０上の資源を共同で利用できるよう各仮想マシンのリソースへのアクセスを調停する。更に、ハイパーバイザ２２０は各仮想マシンに割り当てたリソースの使用状況を監視する。
【００３７】
仮想マシン層２３０は、ハイパーバイザ２２０により実行サーバ２００上に実現された仮想マシンが属する階層である。仮想マシン層２３０には、複数の仮想マシン２３１，２３２，２３３が含まれる。仮想マシン２３１，２３２，２３３では、それぞれ独立のＯＳを実行している。実行するＯＳはハイパーバイザ２２０により指定される。仮想マシン２３１，２３２，２３３が実行するＯＳはそれぞれ同一でもよいし、異なっていてもよい。ユーザは、端末装置２１を操作して仮想マシン２３１，２３２，２３３に個別にアプリケーションプログラムをインストールし、当該アプリケーションの機能を利用できる。
【００３８】
なお、実行サーバ２００ａ，２００ｂも実行サーバ２００と同様の構成により実現できる。
図５は、管理サーバの機能を示すブロック図である。管理サーバ１００は、仮想マシン情報記憶部１１０、負荷データ処理部１２０および仮想マシン配置部１３０を有する。これらのユニットの機能は、ＣＰＵ１０１が仮想マシン管理プログラムを実行することにより管理サーバ１００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【００３９】
仮想マシン情報記憶部１１０は、仮想マシンに割り当てたリソースを管理するリソース管理テーブルおよび各仮想マシンの負荷の予測を管理する負荷カレンダーを記憶する。リソース管理テーブルには、仮想マシンを配置した実行サーバ、実行サーバから仮想マシンに割り当てたリソースが設定される。負荷カレンダーには、各日付につき予測された負荷が設定される。
【００４０】
負荷データ処理部１２０は、実行サーバ２００，２００ａ，２００ｂから各仮想マシンで測定された負荷を示す測定データを収集し、収集した測定データに基づいて負荷を予測する。負荷データ処理部１２０は、負荷データ収集部１２１および負荷予測部１２２を有する。
【００４１】
負荷データ収集部１２１は、実行サーバ２００，２００ａ，２００ｂ上のハイパーバイザから各仮想マシンに割り当てられたリソースの負荷を収集する。負荷データ収集部１２１は、収集した負荷を仮想マシン情報記憶部１１０に格納された負荷カレンダーに記録する。
【００４２】
負荷予測部１２２は、仮想マシン情報記憶部１１０に記憶された負荷カレンダーに基づいて、未来のタイミングにおける予測した負荷を、当該負荷カレンダーに記録する。
仮想マシン配置部１３０は、仮想マシン情報記憶部１１０に記憶された負荷カレンダーに基づいて、実行サーバ２００，２００ａ，２００ｂ上の仮想マシンの配置を行う。仮想マシン配置部１３０は、予測値読込部１３１および配置管理部１３２を有する。
【００４３】
予測値読込部１３１は、仮想マシン情報記憶部１１０に記憶された負荷カレンダーを読み込む。
配置管理部１３２は、予測値読込部１３１が読み込んだ負荷カレンダーに基づいて、仮想マシンの配置を管理する。具体的には、配置管理部１３２は、実行サーバ２００，２００ａ，２００ｂに、実行サーバ２００，２００ａ，２００ｂ間での仮想マシンの配置替えを指示する。また、配置管理部１３２は、実行サーバ２００，２００ａ，２００ｂの電源制御も行う。例えば、実行サーバ２００，２００ａ，２００ｂのうち、仮想マシンを実行していないサーバがあれば、当該サーバの電源を切断して省電力化を図る。また、現在起動している実行サーバで能力不足であれば、電源オフ中の実行サーバの電源を投入して、実行サーバの能力を補う。
【００４４】
図６は、リソース管理テーブルのデータ構造例を示す図である。リソース管理テーブル１１１は、仮想マシン情報記憶部１１０に格納される。リソース管理テーブル１１１には、ＶＭ（Virtual Machine）名、用途、サーバ、ＣＰＵ割当およびメモリ割当を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連づけられて、１つの仮想マシンに割り当てられたリソースの情報を示す。
【００４５】
ＶＭ名の項目には、仮想マシンの名称が設定される。用途の項目には、仮想マシンの用途が設定される。サーバの項目には、実行サーバの名称が設定される。ＣＰＵ割当の項目には、割り当てられたＣＰＵの動作周波数に相当する値が設定される。メモリ割当の項目には、割り当てられたＲＡＭのメモリサイズに相当する値が設定される。
【００４６】
例えば、リソース管理テーブル１１１には、ＶＭ名が“ＶＭ１”、用途が“メール”、サーバが“Ｓｅｒｖｅｒ１”、ＣＰＵ割当が“１ＧＨｚ（Giga Hertz）”、メモリ割当が“１ＧＢ（Giga Bites）”という情報が設定される。これは、仮想マシン“ＶＭ１”が、“メール”サーバの用途として、実行サーバ２００で実行されており、当該仮想マシンに対して、“１ＧＨｚ”相当のＣＰＵ、“１ＧＢ”相当のＲＡＭが割り当てられていることを示している。
【００４７】
ここで、リソース管理テーブル１１１中、用途の項目には、“メール”以外にも“日次”、“週次”、“月次”、“個人向け”および“週末向け”が設定されている。
“日次”は、日次業務用のアプリケーションを実行する日次業務サーバとしての用途を示している。日次業務用のアプリケーションは、例えば出退勤管理のアプリケーションなどである。
【００４８】
“週次”は、週次業務用のアプリケーションを実行する週次業務サーバとしての用途を示している。週次業務用のアプリケーションは、例えば経費精算のアプリケーションなどである。
【００４９】
“月次”は、月次業務用のアプリケーションを実行する月次業務サーバとしての用途を示している。月次業務用のアプリケーションは、例えば月次決算のアプリケーションなどである。
【００５０】
“個人向け”は、個人向けのアプリケーションを実行する個人向け業務サーバとしての用途を示している。個人向けのアプリケーションは、例えばオンラインショップといった個人向けの電子商取引のアプリケーションなどである。
【００５１】
“週末向け”は、週末向けのアプリケーションを実行する週末向け業務サーバとしての用途を示している。週末向けのアプリケーションは、例えば交通手段や宿泊先の検索・予約を行う検索システムのアプリケーションなどである。
【００５２】
各仮想マシンの負荷は、１日の中の時間帯、１週間の中の日にち、月の中の日にちと、その用途に応じて変動するのが一般的である。例えば、企業向けのサーバであれば、日中や月末に負荷が高くなり、早朝や夜間には負荷が低くなる。個人向けのサーバであれば、早朝は負荷が低く、日中は平均的で、夜間は負荷が高くなる。週末向けのサービスの場合、週末などの休日前夜に負荷が高くなる。
【００５３】
なお、リソース管理テーブル１１１には、仮想マシンに割り当てるリソースとしてＣＰＵおよびＲＡＭを例示したが、その他のリソース（例えば、ＨＤＤやネットワーク）を管理してもよい。
【００５４】
図７は、負荷カレンダーのデータ構造例を示す第１の図である。負荷カレンダー１１２は、仮想マシン情報記憶部１１０に格納される。図７では、負荷カレンダー１１２中、今月の負荷に関するデータの一部を例示している。負荷カレンダー１１２には、時刻、ＶＭ名および負荷データを設定するための項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの仮想マシンの負荷の予測を示す。
【００５５】
時刻の項目には、時間帯を示す情報が設定される。ＶＭ名の項目には、仮想マシンの名称が設定される。負荷データを設定するための項目には、各日付の予測された負荷（予測データ）または測定された負荷（測定データ）が設定される。
【００５６】
ここで、仮想マシンの負荷という場合、以下では、仮想マシンに割り当てられたＣＰＵリソースの使用率を示すものとする。ただし、仮想マシンに割り当てられたＲＡＭリソースの使用率や、その他のリソースの使用率を示してもよい。更に、１つのリソースの使用率に限らず２以上のリソースの使用率を総合して、仮想マシンの負荷としてもよい。
【００５７】
例えば、負荷カレンダー１１２には、時刻が“９：００−９：５９”、ＶＭ名が“ＶＭ１”、１日（日曜日）の負荷が“１０％”、２日（月曜日）〜６日（金曜日）の負荷が“５０％”、７日（土曜日）の負荷が“１０％”という情報が設定される。
【００５８】
これは、仮想マシンＶＭ１につき、１日（日曜日）の時刻９時台においてＣＰＵ使用率が１０％であることを示す。同様に、２日（月曜日）〜６日（金曜日）の同時間帯においてＣＰＵ使用率が５０％であることを示す。更に、７日（土曜日）の同時間帯においてＣＰＵ使用率が１０％であることを示す。
【００５９】
ここで、ＶＭ１について時刻１０時台の情報を参照すると、２日（月曜日）〜６日（金曜日）の負荷が“２０％”となっており、朝の早い時間帯（９時台）でＶＭ１の負荷が高まることが分かる。リソース管理テーブル１１１によれば、ＶＭ１の用途はメールサーバであり、出社後の電子メールの一斉受信が要因と考えられる。
【００６０】
図８は、負荷カレンダーのデータ構造例を示す第２の図である。図８では、負荷カレンダー１１２中、今月の負荷に関するデータの一部を例示している。
例えば、負荷カレンダー１１２には、時刻が“１７：００−１７：５９”、ＶＭ名が“ＶＭ２”、１日（日曜日）の負荷が“０％”、２日（月曜日）〜６日（金曜日）の負荷が“６０％”、７日（土曜日）の負荷が“０％”という情報が設定される。
【００６１】
これは、仮想マシンＶＭ２につき、１日（日曜日）の１７時台においてＣＰＵ使用率が０％であることを示す。同様に、２日（月曜日）〜６日（金曜日）の同時間帯においてＣＰＵ使用率が６０％であることを示す。更に、７日（土曜日）の同時間帯においてＣＰＵ使用率が０％であることを示す。リソース管理テーブル１１１によれば、ＶＭ２の用途は日次業務サーバであり、終業時間帯（１７時台）で日次業務が行われることが要因と考えられる。
【００６２】
また、例えば、負荷カレンダー１１２には、時刻が“１７：００−１７：５９”、ＶＭ名が“ＶＭ３”、１日（日曜日）〜５日（木曜日）の負荷が“０％”、６日（金曜日）の負荷が“４０％”、７日（土曜日）の負荷が“０％”という情報が設定される。
【００６３】
これは、仮想マシンＶＭ３につき、１日（日曜日）〜５日（木曜日）の１７時台においてＣＰＵ使用率が０％であることを示す。同様に、６日（金曜日）の同時間帯においてＣＰＵ使用率が４０％であることを示す。更に、７日（土曜日）の同時間帯においてＣＰＵ使用率が０％であることを示す。すなわち、ＶＭ３は金曜日の終業時間帯の負荷が高い。リソース管理テーブル１１１によれば、ＶＭ３の用途は週次業務サーバであり、週末の終業時間帯で週次業務が行われることが要因と考えられる。
【００６４】
また、例えば、負荷カレンダー１１２には、時刻が“２２：００−２２：５９”、ＶＭ名が“ＶＭ５”、１日（日曜日）〜７日（土曜日）の負荷が“５０％”という情報が設定される。
【００６５】
これは、仮想マシンＶＭ５につき、１日（日曜日）〜７日（土曜日）の２２時台においてＣＰＵ使用率が５０％であることを示す。すなわち、ＶＭ５は夜中の時間帯の負荷が高い。リソース管理テーブル１１１によれば、ＶＭ５の用途は個人向け業務サーバであり、日中よりも夜間に利用されることが多いことが要因と考えられる。
【００６６】
また、例えば、負荷カレンダー１１２には、時刻が“２２：００−２２：５９”、ＶＭ名が“ＶＭ６”、１日（日曜日）〜５日（木曜日）までの負荷が“１０％”、６日（金曜日）および７日（土曜日）の負荷が“４０％”という情報が設定される。
【００６７】
これは、仮想マシンＶＭ６につき、１日（日曜日）〜５日（木曜日）までの２２時台においてＣＰＵ使用率が１０％であることを示す。また、６日（金曜日）および７日（土曜日）の同時間帯においてＣＰＵ使用率が４０％であることを示す。すなわち、ＶＭ６は、週末の夜中の時間帯に負荷が高い。リソース管理テーブル１１１によれば、ＶＭ６の用途は週末向け業務サーバであり、週末の、特に夜間に利用されることが多いことが要因と考えられる。
【００６８】
図９は、負荷カレンダーのデータ構造例を示す第３の図である。図９では、負荷カレンダー１１２中、今月の負荷に関するデータの一部を例示している。また、図９では、来月の負荷カレンダーの一部も例示している。
【００６９】
例えば、負荷カレンダー１１２中、今月の負荷に関するデータの一部を例示している。例えば、負荷カレンダー１１２には、時刻が“９：００−９：５９”、ＶＭ名が“ＶＭ４”、２９日（日曜日）の負荷が“０％”、３０日（月曜日）および３１日（火曜日）の負荷が“６０％”という情報が設定される。
【００７０】
これは、仮想マシンＶＭ４につき、２９日（日曜日）の９時台においてＣＰＵ使用率が０％と予測されていることを示す。また、３０日（月曜日）および３１日（火曜日）の同時間帯においてＣＰＵ使用率が６０％と予測されていることを示す。
【００７１】
更に、負荷カレンダー１１２には、来月のカレンダーの一部として、来月の日付の欄が設けられている。来月のカレンダーには、今月のカレンダーの負荷データに基づいて負荷の予測値が設定される。
【００７２】
次に、以上の構成の管理サーバ１００の処理手順を説明する。
図１０は、負荷予測処理を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００７３】
（ステップＳ１１）負荷データ収集部１２１は、前回の測定データ収集処理から一定時間が経過したか否かを判定する。一定時間が経過した場合、処理をステップＳ１２に進める。一定時間が経過していない場合、待機する（処理をステップＳ１１に進める）。負荷データ収集部１２１が測定データを収集する周期は運用に応じて決定できる。例えば、１時間とする。負荷カレンダー１１２は、１時間おきに測定データを取得する場合の例である。それ以外にも、１０分、３０分、１日などとしてもよい。また、測定データは、ある時点の瞬間値とする他、所定間隔で取得したデータの平均値としてもよい。
【００７４】
（ステップＳ１２）負荷データ収集部１２１は、実行サーバ２００，２００ａ，２００ｂのハイパーバイザに各仮想マシンの負荷を問い合わせる。負荷データ収集部１２１は、各ハイパーバイザから測定データを取得する。
【００７５】
（ステップＳ１３）負荷データ収集部１２１は、仮想マシン情報記憶部１１０に記憶された負荷カレンダー１１２の当日の現時間帯に取得した測定データを格納する。
（ステップＳ１４）負荷データ収集部１２１は、ステップＳ１３のデータ格納処理が１回目のデータ格納であったか否かを判定する。１回目である場合、処理をステップＳ１５に進める。１回目でない場合、処理をステップＳ１６に進める。ここで、「データ格納処理が１回目である」とは、負荷カレンダー１１２に設定された現時間帯のデータが無い状態（当該時間帯において予測データが未格納の状態）で設定することを意味する。
【００７６】
（ステップＳ１５）負荷予測部１２２は、負荷カレンダー１１２の本日以降の同一月内、同一時間帯の欄に、取得した各仮想マシンの測定データを格納する。ここで格納されたデータは、本日以外の日の予測データである。そして、処理をステップＳ１１に進める。例えば、負荷予測部１２２は１日（日曜日）の９時に１回目のＶＭ１の測定データを取得したとする。すると、負荷予測部１２２は、１日“９：００−９：５９”に測定データを格納するとともに、ＶＭ１について、１日から３１日の“９：００−９：５９”にも、取得した測定データを予測データとして格納する。ＶＭ２〜ＶＭ６についても同様である。
【００７７】
（ステップＳ１６）負荷予測部１２２は、前に格納されていた予測データと測定データとの差が大きいか否かを判定する。差が大きい場合、処理をステップＳ１７に進める。差が大きくない場合、処理をステップＳ１１に進める。差が大きいか否かは、測定データが予測データの所定パーセント以内にあるか否かによって判定できる。当該パーセンテージを運用に応じて、例えば５％、１０％、２０％などと設定できる。
【００７８】
（ステップＳ１７）負荷予測部１２２は、本日が休日であるか否かを判定する。休日である場合、処理をステップＳ１８に進める。休日でない場合、処理をステップＳ１９に進める。休日とは、土曜日、日曜日、祝日および年末年始などである。
【００７９】
（ステップＳ１８）負荷予測部１２２は、負荷カレンダー１１２の本日以降の同一月内、同一時間帯の欄に、取得した各仮想マシンの測定データを、予測データとして格納する。そして、処理をステップＳ１１に進める。
【００８０】
（ステップＳ１９）負荷予測部１２２は、本日が月曜日であるか否かを判定する。月曜日である場合、処理をステップＳ２０に進める。月曜日でない場合、処理をステップＳ２１に進める。
【００８１】
（ステップＳ２０）負荷予測部１２２は、負荷カレンダー１１２の本日以降の同一月内の平日の、同一時間帯に、取得した各仮想マシンの測定データを、予測データとして格納する。そして、処理をステップＳ１１に進める。
【００８２】
（ステップＳ２１）負荷予測部１２２は、負荷カレンダー１１２の本日以降の同一月内の同一曜日の同一時間帯に、取得した各仮想マシンの測定データを、予測データとして格納する。
【００８３】
（ステップＳ２２）負荷予測部１２２は、監視を終了するか否かを判定する。監視終了する場合、負荷データ収集処理を終了する。監視を終了しない場合、処理をステップＳ１１に進める。
【００８４】
このようにして、負荷データ収集部１２１は、実行サーバ２００，２００ａ，２００ｂのハイパーバイザから定期的に各仮想マシンの測定データを取得する。負荷予測部１２２は、負荷データ収集部１２１が取得した測定データに基づき負荷カレンダー１１２を更新する。
【００８５】
負荷予測部１２２は、ステップＳ１５で示したように最初に測定データを格納する際には、同月内の全ての日の同一時間帯に同一データを格納する。これにより、将来の同じ時間の負荷を予測する。このため、１日を経過すると負荷カレンダー１１２には、１か月分の予測データが格納されることになる。
【００８６】
また、負荷予測部１２２は、負荷カレンダー１１２に測定データを格納する際に、予測データが既に格納されていた場合には、予測データと測定データとの差異を検出する。差異が検出された場合、測定データに基づき当日に対応する本日以降の日の予測データを更新する。まとめると次の通りである。
【００８７】
（１）本日が休日であれば、本日以降の同月内で同一曜日、同一時間帯の予測データを、測定データに置き換える。
（２）本日が月曜日であれば、本日以降の同月内の平日で同一時間帯の予測データを、測定データに置き換える。
【００８８】
（３）本日が休日でもなく、月曜日でもなければ、本日以降の同月内で同一曜日、同一時間帯の予測データを、測定データに置き換える。
以上のように、予測データと測定データとで差異がある場合に、予測データを測定データに修正する。これにより、負荷カレンダー１１２に各仮想マシンの現在の利用状況を適正に反映できる。
【００８９】
なお、図１０では、同月内において、負荷カレンダー１１２に予測データを設定し、また、当該予測データを修正する処理を説明した。このように月単位で負荷カレンダー１１２の設定を行う他、年単位で負荷カレンダー１１２の設定を行ってもよい。
【００９０】
次に、次月カレンダーの負荷データの設定処理を説明する。
図１１は、次月の負荷カレンダーの作成処理を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００９１】
（ステップＳ３１）負荷予測部１２２は、仮想マシン情報記憶部１１０に記憶された負荷カレンダー１１２を本日から逆順に１日遡る。
（ステップＳ３２）負荷予測部１２２は、負荷データが格納済みであるか否かを判定する。格納済みである場合、処理をステップＳ３４に進める。未格納である場合、処理をステップＳ３３に進める。
【００９２】
（ステップＳ３３）負荷予測部１２２は、次の週の同一曜日、同一時間帯の負荷データを現在参照中の日付に格納する。
（ステップＳ３４）負荷予測部１２２は、今月の１日まで処理済か否かを判定する。１日目まで処理済の場合、処理をステップＳ３５に進める。１日まで処理済でない場合、処理をステップＳ３１に進める。
【００９３】
（ステップＳ３５）負荷予測部１２２は、今月の負荷データを曜日換算して次月のカレンダーに格納する。例えば、今月の１日が日曜日で次月の１日が水曜日の場合、次のようにして曜日が同じ日同士（第１日曜同士、第２日曜同士など）で反映を行う（以下の日付以外の日付についても同様である）。
【００９４】
（１）今月の１日（日曜日）の負荷データを次月の５日（日曜日）に格納する。
（２）今月の２日（月曜日）の負荷データを次月の６日（月曜日）に格納する。
（３）今月の３日（火曜日）の負荷データを次月の７日（火曜日）に格納する。
【００９５】
（４）今月の４日（水曜日）の負荷データを次月の１日（水曜日）に格納する。
（ステップＳ３６）負荷予測部１２２は、今月よりも来月の方が日数が多いか否かを判定する。来月の方が日数が多い場合、処理をステップＳ３７に進める。今月の方が日数が多い場合、次月カレンダーの負荷データ設定処理を終了する。例えば、今月が３０日まで、次月が３１日までの場合には、来月の方が日数が多いと判定する。
【００９６】
（ステップＳ３７）負荷予測部１２２は、次月のカレンダーの月末分のデータを補完する。なぜなら、今月より来月の方が日数が多い場合、ステップＳ３５の処理では負荷データが未設定の日付が生じ得るためである。具体的には、負荷データ未格納の日付につき、前の週の同じ曜日の負荷データを格納する。例えば、３１日の負荷データが未格納であれば、前の週の同じ曜日である２４日の負荷データを３１日に格納する。
【００９７】
このようにして、負荷予測部１２２は今月のカレンダーに基づき、次月のカレンダーに予め負荷データを設定する。ここで設定された負荷データは次月の予測データである。負荷予測部１２２は、次月に入って測定データが取得されると、図１０と同様の処理により次月のカレンダーを測定データに基づいて更新する。
【００９８】
図１２は、第２の実施の形態の配置替え処理を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
（ステップＳ４１）配置管理部１３２は、前回の配置替え処理から一定時間が経過したか否かを判定する。一定時間が経過した場合、処理をステップＳ４２に進める。一定時間が経過していない場合、待機する（処理をステップＳ４１に進める）。予測値読込部１３１が配置替えを行う周期は運用に応じて決定できる。例えば、負荷データ収集部１２１による負荷データ収集処理と合わせて１時間とする。
【００９９】
（ステップＳ４２）予測値読込部１３１は、仮想マシン情報記憶部１１０に記憶された負荷カレンダー１１２を参照して、次の時間帯の予測データを読み込む。配置管理部１３２は、仮想マシン情報記憶部１１０に記憶されたリソース管理テーブル１１１を参照して、負荷予測の合計で電源オフできる実行サーバがあるか否かを判定する。電源オフできるサーバがある場合、処理をステップＳ４３に進める。電源オフできるサーバがない場合、処理をステップＳ４５に進める。当該判定は、実行サーバ全体につき、予測される負荷合計と総リソース量とを比較することで行える。配置替えにより、実行サーバ１台分のリソース量だけ余裕ができれば、電源オフできる実行サーバがあると判定できる。
【０１００】
（ステップＳ４３）配置管理部１３２は、高負荷が予測される仮想マシンが分散するよう配置替えすると共に、仮想マシンを片寄せする。仮想マシンの分散は、例えば各実行サーバ（電源オフ対象の実行サーバを除く）の負荷を平準化するように行う。そして、片寄せにより、仮想マシンが配置されない実行サーバをつくる。配置管理部１３２は、仮想マシンの配置替えに伴いリソース管理テーブル１１１を更新する。
【０１０１】
（ステップＳ４４）配置管理部１３２は、不要になった実行サーバ（仮想マシンが配置されない実行サーバ）の電源をオフにする。そして、処理をステップＳ４１に進める。
（ステップＳ４５）配置管理部１３２は、負荷予想の合計は、電源オンの実行サーバ全体の性能範囲内であるか否かを判定する。全体の性能範囲内でない場合、処理をステップＳ４６に進める。全体の性能範囲内である場合、処理をステップＳ４７に進める。当該判定は、ステップＳ４２と同様に、電源オンの実行サーバ全体につき、予測される負荷合計と総リソース量とを比較することで行える。予測される負荷合計に対応するためのリソース量が現在の総リソース量を超えていれば、全体の性能範囲内でないと判定できる。
【０１０２】
（ステップＳ４６）配置管理部１３２は、電源オフの実行サーバの電源を投入する。そして、処理をステップＳ４７に進める。
（ステップＳ４７）配置管理部１３２は、仮想マシンを分散させて、全実行サーバで負荷が均一になるようにする。配置管理部１３２は、仮想マシンの配置替えに伴いリソース管理テーブル１１１を更新する。
【０１０３】
（ステップＳ４８）配置管理部１３２は、監視を終了するか否かを判定する。監視終了する場合、仮想マシンの配置替え処理を終了する。監視を終了しない場合、処理をステップＳ４１に進める。
【０１０４】
このように、配置管理部１３２は、次の時間帯の予測データに基づいて、仮想マシンの配置替えを行う。配置管理部１３２は、配置替えの結果、電源オフできる実行サーバがあれば、当該実行サーバを電源オフして省電力化を図る。
【０１０５】
また、配置管理部１３２は、電源オンの実行サーバ全体では、次の時間帯で能力不足が予測されれば、電源オフされた実行サーバの電源をオンにして実行サーバ全体の能力を補強する。配置管理部１３２は、補強した上で仮想マシンの配置替えを行う。
【０１０６】
なお、ステップＳ４３，Ｓ４７における仮想マシンの配置替えは、例えば次のような手順で行える。配置管理部１３２は、次の処理を移動元の実行サーバのハイパーバイザおよび移動先の実行サーバのハイパーバイザに指示する。（１）移動先でリソースを予約する。（２）移動元で仮想マシンに割り当てたメモリ領域のデータを、移動先で仮想マシンに割り当てたメモリ領域にコピーする。（３）移動元で仮想マシンを停止させ、移動元から移動先へ当該仮想マシンのＣＰＵ状態をコピーする。（４）移動先で仮想マシンを再開し、移動元でリソースを解放する。（５）移動先の仮想マシンでネットワーク設定（アドレス等）を更新する。そして、処理を終了する。
【０１０７】
以上のように配置管理部１３２は、負荷予測部１２２による予測結果に基づいて、仮想マシンの配置替えを行う。これにより、仮想マシンの利用状況の変化に柔軟に対応して、仮想マシンの効率的な配置を行える。また、負荷が低い場合には、一部の実行サーバの電源をオフにして省電力を図れる。
【０１０８】
更に、次の時間帯の負荷予測に応じて、予め実行サーバの電源をオンにして仮想マシンの配置替えを行う。ここで、例えば高負荷を検知してから実行サーバの電源をオンにすると、当該実行サーバの復電時間中に他の実行サーバで高負荷状態となり処理遅延が生じ得る。そこで、上記のように負荷予測に応じて予め実行サーバの電源をオンにしておけば、処理遅延の発生を抑制できる。
【０１０９】
［第３の実施の形態］
以下、第３の実施の形態を図面を参照して詳細に説明する。前述の第２の実施の形態との相違点について主に説明し、同様の事項に関しては説明を省略する。
【０１１０】
第２の実施の形態では、配置管理部１３２は、一定時間間隔（例えば、１時間ごと）に仮想マシンの配置替えを行うものとした。しかしながら、一定時間間隔で配置替えを行うとすると、その間隔ごとに仮想マシンの移動が発生する可能性がある。このため、配置替えの間隔が短いと仮想マシンの移動回数が多くなる可能性がある。
【０１１１】
一方、仮想マシンの移動には、移動処理自体を実行するための負荷を伴う。このため、仮想マシンの移動回数は少ない方が好ましい。そこで、第３の実施の形態では、仮想マシンの移動回数が少なくなるように配置替えを行う。
【０１１２】
ここで、第３の実施の形態の情報処理システムの構成は、図２で説明した第２の実施の形態の情報処理システムの構成と同様であるため、説明を省略する。また、第３の実施の形態の管理サーバの機能構成は、図５で説明した第２の実施の形態の管理サーバ１００の機能構成と同様であるため、説明を省略する。第３の実施の形態の管理サーバについても、管理サーバ１００と同一の符号を用いて各構成を示すものとする。
【０１１３】
以下、第３の実施の形態の仮想マシンの配置替え処理の手順を説明する。以下に示す処理は、例えば、図１２のステップＳ４３，Ｓ４７に適用できる。
図１３は、第３の実施の形態の配置替え処理を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１１４】
（ステップＳ５１）配置管理部１３２は、全実行サーバ（電源オフ対象を除く）に対して、仮想マシンの配置パターンを全て算出する。配置パターンとは、仮想マシン１つに着目して、現在の配置から当該仮想マシンを移動させた場合、および移動させない場合にとり得る仮想マシン配置のパターンである。例えば、実行サーバ２００，２００ａ，２００ｂ上で仮想マシンＶＭ１〜ＶＭ６を移動させる配置パターンの数は、３（実行サーバ数）×６（仮想マシン数）＝１８通りである。
【０１１５】
（ステップＳ５２）配置管理部１３２は、ステップＳ５１で取得した配置パターンから１つを選択する。
（ステップＳ５３）配置管理部１３２は、仮想マシン情報記憶部１１０に記憶された負荷カレンダー１１２に基づいて、当該配置パターンにより月末までの仮想マシンの移動をシミュレートする。配置管理部１３２は、シミュレートの結果により当該配置パターンを選択した場合の仮想マシンの移動回数（割り当て変更の回数）を算出する。配置管理部１３２は、算出した移動回数を配置パターンに対応付けて仮想マシン情報記憶部１１０に格納する。
【０１１６】
（ステップＳ５４）配置管理部１３２は、ステップＳ５１で取得した全配置パターンでシミュレートによる仮想マシンの移動回数を算出したか判定する。全配置パターンで移動回数を算出した場合、処理をステップＳ５５に進める。移動回数を未算出の配置パターンがある場合、処理をステップＳ５２に進める。
【０１１７】
（ステップＳ５５）配置管理部１３２は、全配置パターンのうち移動回数が最小の配置パターンを特定する。
（ステップＳ５６）配置管理部１３２は、特定した配置パターンにより仮想マシンの配置替えを行う。
【０１１８】
このようにして、配置管理部１３２は、移動回数が最小となるような配置パターンを特定して仮想マシンの配置替えを行う。これにより、仮想マシンの移動処理に伴う負荷の増大を抑制できる。
【０１１９】
なお、上記ステップＳ５１において、例えば、実行サーバや仮想マシンの数が多い場合など全配置パターンで移動回数を算出すると処理負荷に影響を与えるおそれもある。そこで、ランダムに選択した幾つかの配置パターンでシミュレーションを行い、移動回数を見積ることで、移動回数の少ない配置パターンを近似的に求めることも考えられる。このようにすれば、全配置パターンで移動回数を算出するよりも処理負荷を軽減できる。
【０１２０】
［第４の実施の形態］
以下、第４の実施の形態を図面を参照して詳細に説明する。前述の第２，第３の実施の形態との相違点について主に説明し、同様の事項に関しては説明を省略する。
【０１２１】
第２の実施の形態では、高負荷の実行サーバが発生しないよう仮想マシンの配置替えを行うようにした。しかしながら、仮想マシンの業務によっては、仮想マシンが予想外の高負荷になる場合がある。例えば、仮想マシンで新しいサービスを開始し、そのサービスを多数のユーザが利用開始した場合などである。
【０１２２】
その場合、予想外に高負荷になった仮想マシンを移動すると、移動処理に時間を要したり、移動後に高負荷の仮想マシンが一時的に利用不可になったりする、などの弊害が生ずるおそれがある。したがって、このように予想外に高負荷になった仮想マシンが発生した場合には、当該仮想マシン以外の仮想マシンを他の実行サーバに移動させる方が好ましい。そこで、第４の実施の形態では、予想外の高負荷を検出した仮想マシン以外の仮想マシンの配置替えを行う。
【０１２３】
ここで、第４の実施の形態の情報処理システムの構成は、図２で説明した第２の実施の形態の情報処理システムの構成と同様であるため、説明を省略する。また、第４の実施の形態の管理サーバの機能構成は、図５で説明した第２の実施の形態の管理サーバ１００の機能構成と同様であるため、説明を省略する。第４の実施の形態の管理サーバについても、管理サーバ１００と同一の符号を用いて各構成を示すものとする。
【０１２４】
以下、第４の実施の形態の仮想マシンの配置替え処理の手順を説明する。本処理は、図１０で説明した第２の実施の形態の負荷データ収集処理と並行して実行できる。
図１４は、第４の実施の形態の配置替え処理を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１２５】
（ステップＳ６１）負荷データ収集部１２１は、実行サーバ２００，２００ａ，２００ｂから測定データを取得した際に、仮想マシンの高負荷を検知する。負荷データ収集部１２１は、例えば、負荷カレンダー１１２に設定された同日、同時間帯の予測データを超えた場合に、当該仮想マシンの高負荷を検知する。または、測定データが予め定められた閾値を超えた場合に、当該仮想マシンの高負荷を検知してもよい。この検知処理は、例えば、図１０のステップＳ１６と並行して行える。
【０１２６】
（ステップＳ６２）負荷データ収集部１２１は、測定データが予測データに対して所定割合（例えば、３０％や４０％程度）以上、差があるか否かを判定する。所定割合以上の差がある場合、処理をステップＳ６３に進める。所定割合以上の差がない場合、処理をステップＳ６４に進める。
【０１２７】
（ステップＳ６３）負荷予測部１２２は、当該仮想マシンの次の時間帯の予測データを、取得した測定データに置換する。
（ステップＳ６４）配置管理部１３２は、高負荷を検知した仮想マシンを実行する実行サーバで負荷の最も低い仮想マシンを１つ選択する。
【０１２８】
（ステップＳ６５）配置管理部１３２は、当該実行サーバ以外の他の実行サーバを１つ選択する。例えば、実行サーバ単体の負荷が最も低い実行サーバを選択する。
（ステップＳ６６）配置管理部１３２は、他の実行サーバに選択した仮想マシンの負荷を加算する。
【０１２９】
（ステップＳ６７）配置管理部１３２は、他の実行サーバが高負荷にならないか否か判定する。高負荷にならない場合、処理をステップＳ６８に進める。高負荷になる場合、処理をステップＳ６５に進める。高負荷であるか否かは、例えば、他の実行サーバの負荷が閾値以上になるか否かにより判定できる。
【０１３０】
（ステップＳ６８）配置管理部１３２は、他の実行サーバに選択した仮想マシンを配置替えする。
（ステップＳ６９）配置管理部１３２は、高負荷と検知された仮想マシンを実行する実行サーバ単体の負荷を取得する。
【０１３１】
（ステップＳ７０）配置管理部１３２は、当該実行サーバの能力に余裕があるか否かを判定する。余裕がある場合、仮想マシンの配置替え処理を終了する。余裕がない場合、処理をステップＳ６４に進める。配置管理部１３２は、例えば、実行サーバ単体としての負荷が一定以下に下がった場合に、当該実行サーバに余裕ができたと判定する。
【０１３２】
このようにして、配置管理部１３２は、予想外に高負荷となった仮想マシンが検出された場合には、当該実行サーバの能力に余裕ができるまで、その仮想マシン以外の仮想マシンの配置替えを行う。これにより、高負荷となった仮想マシンを移動させずに済むので、仮想マシンの移動に伴う処理負荷を一層軽減することができる。
【０１３３】
更に、負荷予測部１２２は、予想外に高負荷となった仮想マシンが検出された場合には、次の時間帯の予測データを、取得した測定データで置き換える。このようにする理由は次の通りである。
【０１３４】
図１０で示した第２の実施の形態の負荷データ収集処理では、同一曜日の同一時間に将来の予測データとして測定データを格納している。このため、予想外に高負荷が発生した仮想マシンの次の時間帯の予測データは、低いままの可能性がある。すると、現在の高負荷状態が次の時間帯まで継続した場合に、次の時間帯の測定データを収集した際、測定データと予測データとの差異が検出される可能性が高くなる。このため、次の時間帯において、高負荷状態の仮想マシンが現在の実行サーバから別の実行サーバに移動されてしまうおそれがある。
【０１３５】
そこで、上記のように、予想外に高負荷となった仮想マシンが検出された場合には、次の時間帯の予測データを、取得した測定データで置き換える。これによって、高負荷状態が次の時間帯まで継続されたとしても、当該仮想マシンが別の実行サーバへ移動されることを抑制できる。
【０１３６】
なお、第４の実施の形態の場合、次の時間帯までに、当該仮想マシンの負荷が低下して標準に戻ることが考えられる。その場合、次の時間帯で測定データを取得したタイミングで、測定データと予測データとの間で差異が検出され得る。その際、当該仮想マシンは別の実行サーバへ移動され得る。この場合には、当該仮想マシンは高負荷状態ではないため、当該仮想マシンを移動させることによる処理遅延が生じる可能性は低いと考えられる。
【符号の説明】
【０１３７】
１  情報処理装置
１ａ  記憶手段
１ｂ  割り当て手段
１ｃ  予測修正手段
２  コンピュータ
２ａ，２ｂ  仮想マシン
【図１】
0005664339.tif 000002
【図２】
0005664339.tif 000003
【図３】
0005664339.tif 000004
【図４】
0005664339.tif 000005
【図５】
0005664339.tif 000006
【図６】
0005664339.tif 000007
【図７】
0005664339.tif 000008
【図８】
0005664339.tif 000009
【図９】
0005664339.tif 000010
【図１０】
0005664339.tif 000011
【図１１】
0005664339.tif 000012
【図１２】
0005664339.tif 000013
【図１３】
0005664339.tif 000014
【図１４】
0005664339.tif 000015