(57)【要約】【課題】仮想マシン間の通信品質を保証するように、各仮想マシンを物理サーバに配置すること。【解決手段】ＶＭ配置装置１は、仮想マシン２の配置先の候補となる物理サーバ４およびその物理サーバ４間を接続して仮想マシン２間の通信を転送するスイッチ３を含めて構成されるネットワークトポロジの情報とが格納されている記憶手段と、ネットワークトポロジを参照して、各仮想マシン２間の通信が通過するスイッチ３を特定し、その特定したスイッチ３が扱うＶＭ使用量の総和であるＳＷ使用量をスイッチ３ごとに収集し、ＳＷ使用量がスイッチ３の通信容量を超過しないように、仮想マシン２の配置先となる物理サーバ４を決定する配置先算出部１６と、を有する。【選択図】図１
2015225560.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン間の通信量であるＶＭ使用量の情報と、前記仮想マシンの配置先の候補となる物理サーバおよびその物理サーバ間を接続して前記仮想マシン間の通信を転送するスイッチを含めて構成されるネットワークトポロジの情報とが格納されている記憶手段と、
前記ネットワークトポロジを参照して、各前記仮想マシン間の通信が通過する前記スイッチを特定し、その特定した前記スイッチが扱う前記ＶＭ使用量の総和であるＳＷ使用量を前記スイッチごとに収集し、
前記ＳＷ使用量が前記スイッチの通信容量を超過しないように、前記仮想マシンの配置先となる前記物理サーバを決定する配置処理部と、を有することを特徴とする
仮想マシン配置装置。
【請求項２】
前記配置処理部は、前記仮想マシン間の前記ＶＭ使用量と、その仮想マシン間のホップ数との積を前記仮想マシン間の通信評価値とし、前記ネットワークトポロジに配置される各前記仮想マシン間の通信評価値の総和が最小になるように、前記仮想マシンの配置先となる前記物理サーバを決定することを特徴とする
請求項１に記載の仮想マシン配置装置。
【請求項３】
前記配置処理部は、
未配置の前記仮想マシンの集合から配置先を決定する前記仮想マシンを選択するときに、所定の仮想マシンからみてその通信相手となる前記仮想マシンとの間の前記ＶＭ使用量が多いほど、前記所定の仮想マシンを早い順序で配置先を決定し、
前記ネットワークトポロジ内の前記物理サーバの集合から配置先となる前記物理サーバを選択するときに、所定の物理サーバからみてその近傍に接続される前記スイッチの通信容量の余裕が多いほど、前記所定の物理サーバを早い順序で配置先を決定することを特徴とする
請求項１または請求項２に記載の仮想マシン配置装置。
【請求項４】
前記配置処理部は、配置済みの前記仮想マシン間の通信を転送する前記スイッチのうち、現時点での前記ＳＷ使用量が前記スイッチの通信容量を超過している前記スイッチが存在する場合は、その超過している前記スイッチが担当していた前記ＶＭ使用量の少なくとも一部を別の前記スイッチが担当するように、担当していた前記ＶＭ使用量に関する仮想マシンペアのうちの少なくとも１つの前記仮想マシンを別の前記物理サーバへと現時点で再配置することを特徴とする
請求項１ないし請求項３のいずれか１項に記載の仮想マシン配置装置。
【請求項５】
前記配置処理部は、配置済みの前記仮想マシン間の通信を転送する前記スイッチのうち、将来時点での前記ＳＷ使用量が前記スイッチの通信容量を超過すると予測される前記スイッチが存在する場合は、その超過が予測される前記スイッチが担当する前記ＶＭ使用量の少なくとも一部を別の前記スイッチが担当するように、担当する前記ＶＭ使用量に関する仮想マシンペアのうちの少なくとも１つの前記仮想マシンを別の前記物理サーバへと将来時点で再配置することを特徴とする
請求項１ないし請求項３のいずれか１項に記載の仮想マシン配置装置。
【請求項６】
記憶手段と、配置処理部とを有する仮想マシン配置装置による仮想マシン配置方法であって、
前記記憶手段には、仮想マシン間の通信量であるＶＭ使用量の情報と、前記仮想マシンの配置先の候補となる物理サーバおよびその物理サーバ間を接続して前記仮想マシン間の通信を転送するスイッチを含めて構成されるネットワークトポロジの情報とが格納されており、
前記配置処理部は、
前記ネットワークトポロジを参照して、各前記仮想マシン間の通信が通過する前記スイッチを特定し、その特定した前記スイッチが扱う前記ＶＭ使用量の総和であるＳＷ使用量を前記スイッチごとに収集し、
前記ＳＷ使用量が前記スイッチの通信容量を超過しないように、前記仮想マシンの配置先となる前記物理サーバを決定することを特徴とする
仮想マシン配置方法。
【請求項７】
請求項６に記載の仮想マシン配置方法を、コンピュータである前記仮想マシン配置装置に実行させるための仮想マシン配置プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン配置装置、仮想マシン配置方法、および、仮想マシン配置プログラムの技術に関する。
【背景技術】
【０００２】
近年、データセンタなどでサーバの仮想化によるサーバ集約が検討されている。１台の物理的なサーバ上に、複数台の論理的なサーバ（仮想マシン）を構築することにより、物理的なサーバの台数を集約できる。仮想マシンの負荷量が同じであっても、仮想化システム全体の性能は、各仮想マシンがどの物理サーバに配置されるかという配置状況によって大きく変化する。配置状況がよくないと、ある計算機資源だけが過剰に使用されてしまうものの、別の計算機資源は使用されないという非効率な状態も発生する。
【０００３】
そこで、特許文献１には、使用リソース量の大きい仮想マシンから順に、移動対象の仮想マシン候補として抽出することで、リソース使用効率を向上させる方法が記載されている。
また、特許文献２には、仮想マシン間の依存関係を考慮して仮想マシンを配置するために、通信量の多い２台の仮想マシン同士を、同じ物理マシンで実行されるように配置する方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２３９０９５号公報
【特許文献２】特開２０１０−１４０１３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、エンドツーエンドで仮想マシン間の通信品質（ＱｏＳ：Quality of Service）を保証するためには、物理サーバと仮想マシンとの関係や、仮想マシン同士の関係だけに着目して仮想マシンの配置先を決定するだけでは、不充分である。
【０００６】
仮想化システムの構成要素として、仮想マシンを搭載する物理サーバだけでなく、それらの物理サーバ間のトラフィックを転送する通信装置（スイッチ）も存在する。よって、いくら物理サーバ単体で処理能力に余裕があっても、複数のトラフィックが１台のスイッチに集中してしまうと、そのスイッチがボトルネックとなって仮想マシン間の通信遅延が発生してしまう。
【０００７】
そこで、本発明は、仮想マシン間の通信品質を保証するように、各仮想マシンを物理サーバに配置することを、主な課題とする。
【課題を解決するための手段】
【０００８】
前記課題を解決するために、本発明の仮想マシン配置装置は、仮想マシン間の通信量であるＶＭ使用量の情報と、前記仮想マシンの配置先の候補となる物理サーバおよびその物理サーバ間を接続して前記仮想マシン間の通信を転送するスイッチを含めて構成されるネットワークトポロジの情報とが格納されている記憶手段と、前記ネットワークトポロジを参照して、各前記仮想マシン間の通信が通過する前記スイッチを特定し、その特定した前記スイッチが扱う前記ＶＭ使用量の総和であるＳＷ使用量を前記スイッチごとに収集し、前記ＳＷ使用量がスイッチの通信容量を超過しないように、前記仮想マシンの配置先となる前記物理サーバを決定する配置処理部とを有することを特徴とする。
【０００９】
これにより、スイッチの通信容量の超過を回避するようにあらかじめ考慮して仮想マシンの配置先の候補となる物理サーバを選択するので、仮想マシン間の通信品質を保証するように、各仮想マシンを物理サーバに配置することができる。
【００１０】
本発明は、前記配置処理部が、前記仮想マシン間の前記ＶＭ使用量と、その仮想マシン間のホップ数との積を前記仮想マシン間の通信評価値とし、前記ネットワークトポロジに配置される各前記仮想マシン間の通信評価値の総和が最小になるように、前記仮想マシンの配置先となる前記物理サーバを決定することを特徴とする。
【００１１】
これにより、ネットワーク全体のＶＭ使用量が最小化されることで、ネットワーク全体の利用効率を向上させることができる。
【００１２】
本発明は、前記配置処理部が、未配置の前記仮想マシンの集合から配置先を決定する前記仮想マシンを選択するときに、所定の仮想マシンからみてその通信相手となる前記仮想マシンとの間の前記ＶＭ使用量が多いほど、前記所定の仮想マシンを早い順序で配置先を決定し、前記ネットワークトポロジ内の前記物理サーバの集合から配置先となる前記物理サーバを選択するときに、所定の物理サーバからみてその近傍に接続される前記スイッチの通信容量の余裕が多いほど、前記所定の物理サーバを早い順序で配置先を決定することを特徴とする。
【００１３】
これにより通信容量の大きいスイッチの周辺により通信量の大きい仮想マシンを配置可能となり、ネットワーク全体で適切なネットワークリソース配分が可能となる。
【００１４】
本発明は、前記配置処理部が、配置済みの前記仮想マシン間の通信を転送する前記スイッチのうち、現時点での前記ＳＷ使用量が前記スイッチの通信容量を超過している前記スイッチが存在する場合が、その超過している前記スイッチが担当していた前記ＶＭ使用量の少なくとも一部を別の前記スイッチが担当するように、担当していた前記ＶＭ使用量に関する前記仮想マシンペアのうちの少なくとも１つの前記仮想マシンを別の前記物理サーバへと現時点で再配置することを特徴とする。
【００１５】
これにより、現時点で発生してしまったスイッチの通信容量の超過を早急に解消できる。
【００１６】
本発明は、前記配置処理部が、配置済みの前記仮想マシン間の通信を転送する前記スイッチのうち、将来時点での前記ＳＷ使用量が前記スイッチの通信容量を超過すると予測される前記スイッチが存在する場合が、その超過が予測される前記スイッチが担当する前記ＶＭ使用量の少なくとも一部を別の前記スイッチが担当するように、担当する前記ＶＭ使用量に関する前記仮想マシンペアのうちの少なくとも１つの前記仮想マシンを別の前記物理サーバへと将来時点で再配置することを特徴とする。
【００１７】
これにより、将来時点で発生が予測されるスイッチの通信容量の超過を、未然に防止できる。
【発明の効果】
【００１８】
本発明によれば、仮想マシン間の通信品質を保証するように、各仮想マシンを物理サーバに配置することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に関する仮想化システムを示す構成図である。
【図２】本発明の一実施形態に関するＶＭ使用量予測部による予測値などのグラフ（図２（ａ））と、ＮＷ情報管理部（図２（ｂ））とを示す説明図である。
【図３】本発明の一実施形態に関するＶＭ使用量の一例（図３（ａ））と、ＮＷ情報の一例（図３（ｂ））と、図３（ｂ）のＮＷ情報に対して、図３（ａ）のＶＭ使用量をもとにしたＶＭ配置部の初期配置処理（図３（ｃ））を示す説明図である。
【図４】本発明の一実施形態に関するＶＭ使用量の一例（図４（ａ））と、ＮＷ情報の一例（図４（ｂ））と、図４（ｂ）のＮＷ情報に対して、図４（ａ）のＶＭ使用量をもとにしたＶＭ配置部の初期配置処理（図４（ｃ））を示す説明図である。
【図５】本発明の一実施形態に関するＶＭ配置部の初期配置処理を示すフロー説明図である。
【図６】本発明の一実施形態に関する再配置を要する状況（図６（ａ））と、その状況から再配置を実行した後の状況（図６（ｂ））とを示す説明図である。
【図７】本発明の一実施形態に関する図６（ａ）の再配置を要する状況が現時点で発生した旨を示すグラフ（図７（ａ））と、図６（ｂ）の再配置を現時点で実行した旨を示すグラフ（図７（ｂ））である。
【図８】本発明の一実施形態に関する図６（ａ）の再配置を要する状況が将来時点で発生した旨を示すグラフ（図８（ａ））と、図６（ｂ）の再配置を将来時点で実行した旨を示すグラフ（図８（ｂ））である。
【図９】本発明の一実施形態に関するＶＭ配置部の再配置処理を示すフロー説明図である。
【発明を実施するための形態】
【００２０】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
【００２１】
図１は、仮想化システムを示す構成図である。仮想化システムは、ＶＭ配置装置１と、物理サーバ４と、スイッチ３とを含めて構成される。これらの仮想化システムを構成する各装置は、それぞれＣＰＵ（Central Processing Unit）とメモリとハードディスク（記憶手段）とネットワークインタフェースを有するコンピュータとして構成され、このコンピュータは、ＣＰＵが、メモリ上に読み込んだプログラムを実行することにより、各処理部を動作させる。
ＶＭ配置装置１は、仮想マシン２ごとに、その配置先となる物理サーバ４を決定する。
なお、仮想マシン２は、物理サーバ４の計算機資源を利用し、コンピュータの動作をエミュレートした計算機環境である。以下、物理サーバ４をＰＳ（Physical Server）と略し、仮想マシン２をＶＭ（Virtual Machine）と略し、スイッチ３をＳＷ（SWitch）と略す場合もある。
【００２２】
ＶＭ配置装置１は、ＶＭ使用量予測部１１と、ＳＷ使用量予測部１２と、ＳＷ容量管理部１３と、ＮＷ情報管理部１４と、ＶＭスコア算出部１５と、配置先算出部１６と、ＶＭ配置部１７と、ＶＭ情報受信部１８と、ＳＷ情報受信部１９と、ＰＳスコア算出部１０ａと、ＰＳ使用量収集部１０ｂとを有する。
仮想マシン２は、ＶＭ使用量収集部２１と、ＶＭ情報転送部２２とを有する。
スイッチ３は、ＳＷ使用量収集部３１と、ＳＷ情報転送部３２とを有する。
物理サーバ４は、ＰＳ使用量収集部４１と、ＰＳ情報転送部４２とを有する。
以下、図１の各構成要素の詳細を説明する。
【００２３】
ＶＭ使用量収集部２１は、所定期間ごとに、自身のＶＭと、その通信先のＶＭとのペアごとのＶＭ使用量（実測値）を収集する。なお、ＶＭ使用量とは、ＶＭペアの通信（トラフィック）を転送するために使用する通信資源の量である。
ＶＭ情報転送部２２は、ＶＭ使用量収集部２１が収集したＶＭ使用量などの自身のＶＭに関する情報を、ＶＭ情報受信部１８に対して送信する。
ＶＭ情報受信部１８は、ＶＭ情報転送部２２から各ＶＭに関する情報を受信する。
【００２４】
ＶＭ使用量予測部１１は、ＶＭ情報受信部１８が受信したＶＭ使用量の実測値から、今後の所定期間におけるＶＭ使用量の予測値を計算する。なお、ＶＭ使用量予測部１１は、所定のＶＭペアにおけるＶＭ使用量の実測値が更新されるたびに、その実測値をもとにしたＶＭ使用量の予測値を再計算する。
図２（ａ）は、ＶＭ使用量予測部１１による予測値などを示すグラフである。グラフの横軸は時刻を示し、縦軸は所定のＶＭペア間のＶＭ使用量を示す。
例えば、現在時刻を１０月１１日（10/11と表記）の14:00とする。
グラフの実線は、過去のトラフィック傾向を示すＶＭ使用量の実測値である。前日（10/10）は朝から夜までの一日の実測値が計測されており、今日（10/11）は朝から14:00までの実測値が計測されている。
グラフの破線は、実測値をもとにしたＶＭ使用量の予測値である。今日は14:00から夜までの予測値が計算されている。
例えば、図２（ａ）のグラフの横軸（定義域）を１日とすると、前日の実測値から、朝（グラフの左側）は使用量が少なく、昼（グラフの中央側）は使用量が増加し、夕方（グラフのやや右側）は使用量が減少し、夜（グラフの右側）は使用量が増加するという過去のトラフィック傾向がわかる。
そして、今日の朝から14:00までの実測値は、前日の同時刻の実測値よりもＶＭ使用量が若干高いものの、全体的な傾向が類似する。
よって、今日14:00から夜までの予測値は、過去の（前日の）トラフィック傾向に類似することが期待されるので、今日の予測値は、前日の同時刻の実測値よりも若干高い値をなぞるようにして計算される。例えば、前日の夕方（16:00）の実測値が低くなっているので、本日の夕方（16:00）の予測値も低くする。また、前日の夜（19:00）の実測値が高くなっているので、本日の夜（19:00）の予測値も高くする。
【００２５】
図１に戻って、ＶＭスコア算出部１５は、仮想マシン２ごとにその仮想マシン２が次のキーＶＭ（詳細は、図３）としての選ばれやすさを示す「ＶＭスコア」を算出する。ＶＭスコアは、高いほど次のＶＭの配置先として選ばれやすくなるとともに、高いほど配置済みのＶＭについてのリセット対象としても選ばれやすくなる。以下、ＶＭスコアの計算方法を例示する。
【００２６】
１つめのＶＭスコアの計算方法として、所定のＶＭとその通信先のＶＭとの間のＶＭペアについて、ＶＭペアごとのＶＭ使用量（所定期間における平均値）が大きい（例えば、ＶＭ使用量が所定閾値を超える）か否かを判定し、ＶＭ使用量が大きい通信先のＶＭの台数が多いほど、所定のＶＭに対するＶＭスコアを高くする方法がある。
【００２７】
２つめのＶＭスコアの計算方法として、所定のＶＭについてのＶＭ使用量（所定期間における平均値）を、所定のＶＭからみた通信先のＶＭごとに計算し、所定のＶＭについてのＶＭ使用量の合計値が大きいほど、所定のＶＭに対するＶＭスコアを高くする方法がある。
【００２８】
なお、ＶＭスコア算出部１５は、ＶＭスコアの計算に用いるＶＭ使用量として、ＶＭ使用量予測部１１からの予測値と、ＶＭ情報受信部１８からの実測値とをそれぞれ受信する。そして、ＶＭスコア算出部１５は、受信したＶＭ使用量が更新されるたびに、ＶＭスコアを再計算する。
【００２９】
ＳＷ使用量収集部３１は、所定期間ごとに、自身のＳＷについてのＳＷ使用量（実測値）を収集する。ＳＷ使用量とは、ＳＷがＶＭペアの通信を転送するために使用する通信資源の量であり、具体的には、あるＳＷの使用量とは、そのＳＷを通過する経路のＶＭ使用量の総和である。
ＳＷ情報転送部３２は、ＳＷ使用量収集部３１が収集したＳＷ使用量などの自身のＳＷに関する情報を、ＳＷ情報受信部１９に対して送信する。
ＳＷ情報受信部１９は、ＳＷ情報転送部３２から各ＳＷに関する情報を受信する。
ＳＷ容量管理部１３は、各ＳＷに関する情報として、ＳＷ情報受信部１９が受信したＳＷ使用量と、あらかじめＳＷごとに登録されているＳＷ容量（ＳＷの通信能力から求まるＳＷの通信容量）とを管理する。
【００３０】
ＳＷ使用量予測部１２は、ＶＭ使用量予測部１１が予測したＶＭ使用量と、配置先算出部１６が決定したＶＭの配置関係とをもとに、単位時間あたりの各ＳＷの使用量を予測する。なお、ＳＷ使用量予測部１２は、入力パラメータ（ＶＭ使用量、ＶＭの配置関係）が更新されるたびに、各ＳＷの使用量の予測値が再計算される。
【００３１】
ＰＳ使用量収集部４１は、所定期間ごとに、自身の物理サーバ４についてのＰＳ使用量（実測値）や搭載ＶＭ数を収集する。ＰＳ使用量とは、物理サーバ４が使用する通信資源の量である。搭載ＶＭ数とは、自身の物理サーバ４に配置（搭載）されているＶＭの数である。
ＰＳ情報転送部４２は、ＰＳ使用量収集部４１が収集した自身の物理サーバ４に関する情報を、ＰＳスコア算出部１０ａおよびＮＷ情報管理部１４に対してそれぞれ送信する。
ＰＳ使用量収集部１０ｂは、各物理サーバ４のＰＳ情報転送部４２から送信されたＰＳ使用量や搭載ＶＭ数を収集する。
【００３２】
ＮＷ情報管理部１４は、ＶＭの配置対象であるネットワークシステムのトポロジ情報を、あらかじめ管理者などから受け付けて管理する。トポロジ情報とは、例えば、以下の情報である。
・各物理サーバ間の経路情報
・各物理サーバ間の経路ごとの経路ホップ数情報
・各経路に存在するＳＷ情報
図２（ｂ）は、ＮＷ情報管理部１４が管理するトポロジ情報を示す説明図である。スイッチ３（ＳＷ１〜ＳＷ５）と、物理サーバ４（ＰＳ１〜ＰＳ４）とが図示したように接続されている。
【００３３】
図１に戻って、ＰＳスコア算出部１０ａは、物理サーバ４ごとにその物理サーバ４が次のＶＭの配置先としての選ばれやすさを示す「ＰＳスコア」を算出する。ＰＳスコアは、高いほど次のＶＭの配置先としての選ばれやすくなる。以下、ＰＳスコアの計算方法を例示する。
【００３４】
１つめのＰＳスコアの計算方法は、自身の物理サーバ４からみてＮホップ（例えば、Ｎ＝１）以内のスイッチ３に着目し、それらのスイッチ３のうちの所定期間継続して空き通信容量が所定値以上の（換言すると、余裕のある）スイッチ３の台数が多いほど、ＰＳスコアを高くする方法である。
【００３５】
２つめのＰＳスコアの計算方法は、自身の物理サーバ４からみてＮホップ（例えば、Ｎ＝１）以内のスイッチ３に着目し、着目した各スイッチ３の所定期間中の空き通信容量の合計値が大きいほど、ＰＳスコアを高くする方法である。
【００３６】
なお、スイッチ３ごとの空き通信容量は、スイッチ３の容量（通信能力）からスイッチ３の使用量を減じたものである。ＰＳスコア算出部１０ａは、スイッチ３の使用量として、ＳＷ使用量予測部１２からの予測値と、ＳＷ容量管理部１３からの実測値とをそれぞれ受信する。ＰＳスコア算出部１０ａは、受信したスイッチ３の使用量が更新されるたびに、ＰＳスコアを再算出する。
【００３７】
配置先算出部１６は、仮想マシン２ごとに、その配置先となる物理サーバ４を配置ポリシをもとに決定する。配置ポリシは、下記の（ルール１）〜（ルール５）をすべて満たすように、各ＶＭの配置先を決定することである。または、（ルール１）〜（ルール５）のうちの少なくとも１つの条件を満たすように、各ＶＭの配置先を決定することである。
（ルール１）ＶＭスコアが高い（使用量が大きく、混んでいるＶＭ）順に、対象ＶＭを選択し、その対象ＶＭとの間で使用量が大きいキーＶＭを選択する。
（ルール２）ＰＳスコアが高い（使用量が小さく、空いているＰＳ）順に、配置先の物理サーバ４を選択する。
（ルール３）ネットワーク全体のスイッチ３が中継する通信量を最小化するように、（ルール１）で選択した対象ＶＭとキーＶＭとを、（ルール２）で選択した物理サーバ４に配置する。
（ルール４）各ＳＷの物理制約条件（ＳＷ使用量≦ＳＷ容量）を満たす。
（ルール５）各ＰＳの物理制約条件（ＰＳ使用量≦ＰＳ容量や、搭載ＶＭ数≦搭載ＶＭ上限数）を満たす。
【００３８】
配置先算出部１６は、前記した配置ポリシを満たすか否かを判断するため、ＶＭの初期配置時には、他の各処理部から以下の情報を取得する。図１では、情報の流れを示す矢印のうち、配置先算出部１６に流れる矢印の一部を省略している。
・ＶＭ使用量の予測値（ＶＭ使用量予測部１１から）
・ＳＷ容量（ＳＷ容量管理部１３から）
・トポロジ情報（ＮＷ情報管理部１４から）
・ＶＭスコア（ＶＭスコア算出部１５から）
・ＰＳスコア（ＰＳスコア算出部１０ａから）
・ＰＳ使用量や搭載ＶＭ数（ＰＳ使用量収集部１０ｂから）
【００３９】
さらに、配置先算出部１６は、前記した配置ポリシを満たすか否かを判断するため、ＶＭの再配置時には、前記した初期配置時に取得した情報に加え、他の各処理部から以下の情報を取得する。
・ＳＷ使用量の実測値（ＳＷ情報受信部１９から）
・ＶＭ使用量の実測値（ＶＭ情報受信部１８から）
【００４０】
ＶＭ配置部１７は、配置先算出部１６からのＶＭの初期配置の指示および再配置の指示に従い、実際に各仮想マシン２を各物理サーバ４へと配置する。なお、配置先算出部１６とＶＭ配置部１７とを１つの配置処理部として構成してもよい。
【００４１】
図３（ａ）は、ＶＭ情報受信部１８が受信した各ＶＭペアにおけるＶＭ使用量の一例を示す説明図である。６つの仮想マシン２（ＶＭ１〜ＶＭ６）のうち、直接接続されているＶＭペア（ＶＭ１とＶＭ２など）は、ＶＭペア間の通信が発生するものであり、その通信量（ＶＭ使用量）をリンクの近傍に記載する（例えば、ＶＭ１−ＶＭ２間のＶＭ使用量は「４０」）。
なお、説明を簡単にするために、各ＶＭ使用量を時間経過にかかわらず一定の値としたが、実際は、各ＶＭ使用量は逐次更新される。
【００４２】
また、ＶＭペアの接続線のうち、閾値「３０」以上のＶＭ使用量が発生する接続線を太線で表記している。この太線の接続線は、「対象ＶＭ」と「キーＶＭ」との関係を示す。ＶＭ配置部１７は、ある対象ＶＭ（例えば、ＶＭ１）を選択すると、その対象ＶＭに対して太線の接続線で接続されている他のＶＭ（ＶＭ１に対するＶＭ２，ＶＭ３，ＶＭ４）をキーＶＭとして選択する。
なお、キーＶＭとは、対象ＶＭとの間でのＶＭ使用量（所定期間における平均値など）が所定量（閾値「３０」）を超える通信を行うＶＭである。
【００４３】
図３（ｂ）は、ＮＷ情報管理部１４が管理するＮＷ情報の一例を示す説明図である。説明を簡単にするために、図２（ｂ）よりも単純なトポロジを例示する。
ここで、各物理サーバ４（ＰＳ１〜ＰＳ３）について、それぞれの収容ＶＭ上限数を「２」と仮定する。例えば、ＰＳ１には、対象ＶＭ（ＶＭ１）と、そのキーＶＭ（ＶＭ２）との２台を収容できるが、３台目のキーＶＭ（ＶＭ３）は収容できない。
【００４４】
図３（ｃ）は、図３（ｂ）のＮＷ情報に対して、図３（ａ）のＶＭ使用量をもとにしたＶＭ配置部１７の初期配置処理を示す説明図である。
以下、表の列要素が示す各段階（第１段階〜第５段階）において、徐々に仮想マシン２が配置されていく様子を説明する。表の行要素は、図３（ａ）の各仮想マシン２と、図３（ｂ）の各スイッチ３とを示す。
表の各セルの内容について、仮想マシン２のセルには、「対象ＶＭ」や「キーＶＭ」などの現在の選択状況や、「（ＰＳ２）」などの現在の配置先の物理サーバ４が記載される。スイッチ３のセルには、「１１０／１５０」などの分数形式が記載され、分母が自身の容量を示し、分子が現在の割り当て済みの使用量を示す。
【００４５】
第１段階では、ＶＭ配置部１７は、（ルール１）に従い、ＶＭスコアが最高のＶＭ１を対象ＶＭとして選択する。ＶＭ１は、太線で接続される通信相手（キーＶＭ）が多い（３台）上に、ＶＭ使用量の合計値（30+40+50=120）も他のＶＭ２〜６よりも大きいために、ＶＭスコアが最高になる。
そして、ＶＭ配置部１７は、（ルール２）に従い、ＰＳスコアが高いＰＳ２を、対象ＶＭ（ＶＭ１）の配置先として決定する。なお、ＰＳ２は、１ホップ以内に存在するＳＷ１，ＳＷ２がともに所定閾値（５０）より大きい空き通信容量を有しており、かつ、その２台の空き通信容量の合計値（80+150）が最大であるため、ＰＳスコアが他のＰＳ１，ＰＳ３より高くなる。
さらに、ＶＭ配置部１７は、図３（ａ）で説明したように、対象ＶＭ（ＶＭ１）から太線で接続される通信相手（ＶＭ２，ＶＭ３，ＶＭ４）をそれぞれキーＶＭとして選択する。
【００４６】
第２段階では、ＶＭ配置部１７は、収容ＶＭ上限数「２」という（ルール５）と、（ルール３）とに従い、キーＶＭのうちの最高のＶＭ使用量（５０）であるＶＭ３だけをＶＭ１と同じ（０ホップの）ＰＳ２に配置する。
第３段階では、ＶＭ配置部１７は、（ルール３）に従い、残りのキーＶＭ（ＶＭ２，４）を対象ＶＭ（ＶＭ１）からなるべく近く（１ホップ）になるＰＳ３に配置する。ここで、ＶＭ配置部１７は、ＰＳ２（ＶＭ１，ＶＭ３）と、ＰＳ３（ＶＭ２，ＶＭ４）との間のＶＭ使用量の総和は「40+30+40=110」であり、ＰＳ２−ＰＳ３間を中継するＳＷ２の容量（150）以内に収まっているので、（ルール４）も満たすようにＰＳ３を選択している。また、ＶＭ配置部１７は、収容ＶＭ上限数「２」という（ルール５）を満たすようにＰＳ３を選択している。
【００４７】
第４段階では、ＶＭ配置部１７は、初回の対象ＶＭ（ＶＭ１）とそのキーＶＭ（ＶＭ２，ＶＭ３，ＶＭ４）が配置済みになったので、２回目の対象ＶＭ（ＶＭ５）とそのキーＶＭ（ＶＭ６）とを第１段階と同様に選択する。この選択処理では、配置済みになった各ＶＭ（ＶＭ１〜ＶＭ４）は選択対象から除外される。
第５段階では、ＶＭ配置部１７は、第１段階〜第３段階と同様に、各配置ポリシを満たすように、第４段階で選択したＶＭ５，６をともにＰＳ１へと配置する。
【００４８】
図４（ａ）は、ＶＭ使用量の一例を示す説明図であり、図３（ａ）とは別の構成である。
図４（ｂ）は、ＮＷ情報の一例を示す説明図であり、図３（ｂ）とは別の構成である。
図４（ｃ）は、図４（ｂ）のＮＷ情報に対して、図４（ａ）のＶＭ使用量をもとにしたＶＭ配置部１７の初期配置処理を示す説明図である。図４（ｃ）では、図３（ｃ）と異なり、いったん配置した仮想マシン２の配置をリセット（解除）するケースを説明する。
【００４９】
図４（ｃ）の第１段階では、図３（ｃ）の第１段階〜第３段階で説明したように、ＶＭ配置部１７は、（ルール１）に従い、ＶＭスコアが最高のＶＭ１を対象ＶＭとして選択し、（ルール２）に従い、ＰＳスコアが高いＰＳ２を、対象ＶＭ（ＶＭ１）の配置先として決定する。そして、ＶＭ配置部１７は、（ルール３）に従い、残りのキーＶＭ（ＶＭ２，４）を対象ＶＭ（ＶＭ１）からなるべく近く（１ホップ）になるＰＳ１に配置する。
【００５０】
図４（ｃ）の第２段階では、ＶＭ配置部１７は、（ルール１）に従い、次の対象ＶＭとしてＶＭ５を選択し、そのキーＶＭとしてＶＭ５を選択する。しかし、（ルール５）により搭載ＶＭ上限数に余裕のあるＶＭ５の配置先候補（ＰＳ３，ＰＳ４）のどちらにＶＭ５を配置しても、そのＶＭ５とＶＭペアをなすＶＭ４がＰＳ１に配置済みのため、そのＶＭペアの通信量「５０」がＳＷ１を通過することで、ＳＷ１の通信量超過（１３０／９０）が発生してしまう。
【００５１】
図４（ｃ）の第３段階では、ＶＭ配置部１７は、第２段階で問題となった配置済みのＶＭ４をリセットする。これにより、未配置のＶＭは、ＶＭ４，ＶＭ５，ＶＭ６となる。
図４（ｃ）の第４段階では、ＶＭ配置部１７は、（ルール１）への例外処理として、第３段階でリセットしたＶＭ４を、ＶＭスコアが高いＶＭ５よりも優先して今回の対象ＶＭとする。よって、ＶＭ４と太線で接続されるＶＭ５が今回のキーＶＭとなる。ＶＭ配置部１７は、（ルール２）に従い、ＰＳスコアが高いＰＳ３を、対象ＶＭ（ＶＭ４）の配置先として決定し、（ルール３）に従い、キーＶＭ（ＶＭ５）を対象ＶＭ（ＶＭ１）からなるべく近く（０ホップ）になるＰＳ３に配置する。
図４（ｃ）の第５段階では、ＶＭ配置部１７は、残りのＶＭ６を、配置ポリシを満たすＰＳ４へと配置する。
【００５２】
図５は、ＶＭ配置部１７の初期配置処理を示すフロー説明図である。
Ｓ１０１として、ＶＭ配置部１７は、未配置のＶＭが存在するか否かを判定する。Ｓ１０１でＹｅｓならＳ１０２に進み、Ｎｏなら終了する。そのため、ＶＭ配置部１７は、ＶＭごとに現在配置済みか否かを示す情報と、配置済みである場合にはその配置先の物理サーバ４を示す情報とを、記憶手段にて管理する。
Ｓ１０２として、ＶＭ配置部１７は、（ルール１）により、未配置ＶＭから対象ＶＭを選択する。例えば、図３（ｃ）の第１段階では、ＶＭ１が対象ＶＭとして選択される。なお、（ルール１）では、ＶＭスコアが高い順に複数台のＶＭを選択してもよい。
【００５３】
Ｓ１０３として、ＶＭ配置部１７は、図３（ａ）で説明したように、選択した対象ＶＭからキーＶＭを選択する。例えば、図３（ｃ）の第１段階では、ＶＭ２，ＶＭ３，ＶＭ４が対象ＶＭ（ＶＭ１）のキーＶＭとして選択される。
Ｓ１０４として、ＶＭ配置部１７は、（ルール２）、（ルール５）により配置先ＰＳを選択する。例えば、図３（ｃ）の第１段階では、ＰＳスコアが高く、他に搭載するＶＭが存在していないＰＳ２が配置先ＰＳとして選択される。なお、（ルール２）では、ＰＳスコアが高い順に複数台のＰＳを選択してもよい。
【００５４】
Ｓ１０５として、ＶＭ配置部１７は、Ｓ１０２で選択した対象ＶＭと、Ｓ１０３で選択したキーＶＭとを（ルール３）により、Ｓ１０４で選択した配置先ＰＳ（や他のＰＳ）に配置する。
例えば、図３（ｃ）の第１段階では、Ｓ１０２で選択した対象ＶＭ１を、Ｓ１０４で選択したＰＳ２に配置する。また、図３（ｃ）の第２段階では、Ｓ１０３で選択したキーＶＭ３を、Ｓ１０４で選択したＰＳ２に配置する。さらに、図３（ｃ）の第３段階では、Ｓ１０３で選択したキーＶＭ２，４を、ＰＳ３に配置する。
【００５５】
なお、（ルール３）を満たすか否かは、ネットワーク全体の通信量の評価式を元に判定される。まず、ＶＭ配置部１７は、Ｓ１０２で選択した対象ＶＭと、Ｓ１０３で選択したキーＶＭとの組み合わせごとのＶＭペア集合を形成し、それらのＶＭペアのＶＭ使用量（所定期間における合計値）の総和を、合計通信量とする。なお、ＶＭペアのＶＭ使用量には、ＶＭペア間のホップ数を重み付け（乗算）してもよい。ＶＭペアの両方が同じ物理サーバ４上に配置されるときには、ホップ数が０なので、そのＶＭペアのＶＭ使用量も０となる。つまり、選択した各ＶＭ間のホップ数をなるべく小さくなるように配置すれば、合計通信量も小さくなる。
【００５６】
そして、ＶＭ配置部１７は、Ｓ１０２で選択した対象ＶＭと、Ｓ１０３で選択したキーＶＭとをそれぞれＳ１０４の配置先ＰＳのいずれかに配置するようにさまざまな配置先の組み合わせを試す（仮配置する）ことにより、合計通信量が最小になる組み合わせを発見する。
なお、Ｓ１０３で選択したキーＶＭが配置済みである場合、配置ポリシを満たしつつ、（ルール３）の合計通信量が改善する（より小さくなる）場合は、その配置済みのキーＶＭをリセットした後、Ｓ１０５で再配置してもよい。
【００５７】
Ｓ１０６として、ＶＭ配置部１７は、Ｓ１０５の配置処理により、各スイッチ３が（ルール４）を満たすか否かを判定する。Ｓ１０６でＹｅｓならＳ１０１に戻り、ＮｏならＳ１０７に進む。
例えば、図３（ｃ）の第３段階では、ＳＷ２の通信量が「１１０／１５０」で容量内に収まっているので、（ルール４）を満たす。
一方、図４（ｃ）の第２段階では、ＳＷ１の通信量が「１３０／９０」で容量を超過しているので、（ルール４）を満たさない。
ここで、配置済みの対象ＶＭのＶＭスコアが高いほど、ＳＷの容量（１１０／１５０の分母「１５０」など）を示す閾値を低く設定してもよい。
【００５８】
Ｓ１０７として、ＶＭ配置部１７は、今回Ｓ１０５で配置したキーＶＭをリセットし、そのリセットしたＶＭを次回の対象ＶＭとして選択し、Ｓ１０３に戻る。
例えば、図４（ｃ）の第３段階では、第２段階でキーＶＭとして配置したＶＭ４をリセットしており、そのＶＭ４が第４段階の対象ＶＭとして選択されている。
なお、ＶＭ配置部１７は、無限ループを防ぐために、各ＶＭについて、すでに試行した配置先の履歴を保持し、以前に試行して失敗した配置先の物理サーバ４を、次回以降の配置先に候補から除外することが、望ましい。
【００５９】
図６（ａ）は、再配置を要する状況を示す説明図である。ＰＳ１にはＶＭ１とＶＭ２とが配置され、ＰＳ２にはＶＭ３とＶＭ４とが配置され、ＰＳ３にはＶＭ５が配置されている。ここで、ＶＭ１−ＶＭ３ペア間のＶＭ使用量が大きいため、そのＶＭペア間の経路上に位置するＳＷ１のＳＷ使用量が増大し、ＳＷ１に輻輳が発生する場合を考える。
図６（ｂ）は、図６（ａ）から再配置を実行した後の状況を示す説明図である。ＶＭ配置部１７は、ＰＳ１からＶＭ１をリセット（配置解除）し、その後にＶＭ１をＰＳ３へと再配置する。これにより、ＶＭ１−ＶＭ３ペア間のＶＭ使用量は引き続き大きいものの、その経路上に位置するＳＷ２のＳＷ容量には余裕があるため、ＳＷ１，ＳＷ２の輻輳を発生させずに済む。
【００６０】
図７（ａ）は、図６（ａ）の再配置を要する状況が現時点で発生した旨を示すグラフである。まず、現時点のＳＷ１のＳＷ使用量（実測値）は、ＶＭ１−ＶＭ３ペア間のＶＭ使用量だけでなく、他のＶＭ使用量と合わせると、閾値が示すＳＷ容量を超過してしまっている。一方、現時点のＳＷ２のＳＷ使用量は、まだ余裕があり、仮にＶＭ１−ＶＭ３ペア間のＶＭ使用量を追加したとしても、現時点から所定期間先まで（実測値だけでなく予測値も含む）は、ＳＷ２のＳＷ容量を超過しない。
そこで、ＶＭ配置部１７は、（ルール４）と（ルール５）とに従い、ＳＷの物理制約条件を双方のＳＷ１，ＳＷ２が満たすように、ＶＭ１−ＶＭ３ペア間のＶＭ使用量を、ＳＷ１からＳＷ２へと再配置する（そのために、ＶＭ１をＰＳ３へと再配置する）ことを決定する。
【００６１】
図７（ｂ）は、図６（ｂ）の再配置を現時点で実行した旨を示すグラフである。双方のＳＷ１，ＳＷ２ともに、ＳＷ使用量が閾値（ＳＷ容量）内に収まることで、（ルール４）を満たすことができる。なお、ＶＭ配置部１７は、（ルール５）の搭載ＶＭ上限数の制約を満たすために、すでに上限の２台のＶＭが搭載されているＰＳ２を再配置先の候補から除外する。
【００６２】
図８（ａ）は、図６（ａ）の再配置を要する状況が将来時点（時刻ｔ）で発生した旨を示すグラフである。図８（ｂ）は、図６（ｂ）の再配置を将来時点（時刻ｔ）で実行した旨を示すグラフである。
図８と図７とを比較すると、ＳＷ１のＳＷ容量の超過時点が現時点から将来時点（時刻ｔ）へと置き換わっている。つまり、図８では現時点においては、ＳＷ１のＳＷ容量は超過しない。
【００６３】
図８（ａ）では、将来時点（時刻ｔ）でのＳＷ１のＶＭ使用量（予測値）は、ＶＭ１−ＶＭ３ペア間のＶＭ使用量だけでなく、他のＶＭ使用量と合わせると、閾値が示すＳＷ容量を超過してしまっている。一方、将来時点（時刻ｔ）でのＳＷ２のＶＭ使用量（予測値）は、まだ余裕があり、仮にＶＭ１−ＶＭ３ペア間のＶＭ使用量を追加したとしても、将来時点（時刻ｔ）から所定期間先までは、ＳＷ２のＳＷ容量を超過しないと予測される。
【００６４】
そこで、図８（ｂ）に示すように、ＶＭ配置部１７は、（ルール４）に従い、ＳＷの物理制約条件を双方のＳＷ１，ＳＷ２が満たすように、ＶＭ１−ＶＭ３ペア間のＶＭ使用量を、ＳＷ１から再配置することを決定する。なお、図７（ｂ）と異なり、ＶＭ配置部１７は、配置ポリシを満たすＶＭ使用量の再配置先（図では、ＳＷ２）の決定を、現時点ではなく将来時点（時刻ｔ）の直前に行ってもよい。つまり、ＶＭ１のリセット処理と、ＶＭ１の再配置処理は、現時点ではなく将来時点（時刻ｔ）の直前に行ってもよい。
これにより、各ＳＷのＳＷ使用量として、予測値よりも精度の高い実測値を活用することができるので、確実に空きのあるＳＷをＶＭ使用量の再配置先として選ぶことができる。
【００６５】
図９は、ＶＭ配置部１７の再配置処理を示すフロー説明図である。
Ｓ２０１として、ＶＭ配置部１７は、ＶＭ配置状況が配置ポリシを満たしているか否かを判断する材料として、ＶＭ使用量およびＳＷ使用量をそれぞれ取得する（詳細は、図１の説明）。
Ｓ２０２として、ＶＭ配置部１７は、各スイッチ３が（ルール４）の物理制約条件（ＳＷ使用量≦ＳＷ容量）を満たすか否かを判定する。Ｓ２０２でＹｅｓなら終了し、ＮｏならＳ２０３に進む。例えば、図６（ａ）のＳＷ１は、（ルール４）を満たさないために輻輳してしまった例である。
【００６６】
Ｓ２０３として、ＶＭ配置部１７は、Ｓ２０２で（ルール４）を満たさないスイッチ３に対して、そのスイッチ３が収容するＶＭ使用量のうちの割合が大きいＶＭペア（図６〜図８では、「ＶＭ１−ＶＭ３のペア」）を選択する。
Ｓ２０４として、ＶＭ配置部１７は、（ルール４）と（ルール５）とに従い、ＶＭ使用量の再配置先を検索する。例えば、図７（ａ）や図８（ａ）では、ＳＷ使用量が空いているＳＷ２が検索される。
Ｓ２０５として、ＶＭ配置部１７は、Ｓ２０４で再配置先が発見されたか否かを判定する。Ｓ２０５でＹｅｓならＳ２０６に進み、ＮｏならＳ２０８に進む。図６〜図８では、ＶＭ１の再配置先としてＰＳ３が発見されている（Ｓ２０５でＹｅｓ）。
【００６７】
Ｓ２０６として、ＶＭ配置部１７は、ＶＭペアの片方（図６〜図８では、「ＶＭ１」）をリセットし、ＶＭペアのＶＭ使用量がＳ２０４で検索したスイッチ３を通過するように、リセットしたＶＭを別の物理サーバ４（図６〜図８では、「ＰＳ３」）に再配置する。この再配置処理は、配置済ＶＭの配置リセットを実行しない指示をつけて、図５の初期配置処理を呼び出すことで実現される。
Ｓ２０７として、ＶＭ配置部１７は、Ｓ２０６の再配置に成功したか否かを判定する。Ｓ２０７でＹｅｓならＳ２０２に戻り、ＮｏならＳ２０８に進む。
【００６８】
Ｓ２０８として、ＶＭ配置部１７は、ＶＭペアの両方（図６〜図８では、「ＶＭ１とＶＭ３」）をリセットし、そのリセットしたＶＭを再配置するために、図５の初期配置処理を呼び出す。そして、Ｓ２０８の後は、処理をＳ２０２へ戻す。
【００６９】
以上説明した図９の各処理の実行時刻について、図７のように、再配置を要する状況が現時点で発生した場合は、Ｓ２０１〜Ｓ２０８の各処理を現時点で実行する。
一方、図８のように、再配置を要する状況が将来時点（時刻ｔ）で発生することを予測した場合は、Ｓ２０２〜Ｓ２０３を現時点で実行し、それ以降の各処理（Ｓ２０４〜Ｓ２０８）を、将来時点（時刻ｔ）の直前まで待ってから実行する。
【００７０】
以上説明した本実施形態では、図３，図４で示したように、（ルール４）に従って、各スイッチ３の容量が超過しないように、対象ＶＭやキーＶＭを初期配置していくことで、仮想マシン間の通信品質を保証するように、各仮想マシンを物理サーバに配置することができる。
さらに、図６〜図８で示したように、過去の初期配置の時点では（ルール４）を満たしていても、トラフィックの変動などにより、現時点や将来時点で（ルール４）を満たさなくなる事象に対して、配置済みの仮想マシン２を再配置することによって、事後的に（ルール４）を満たすように改善することができる。
【符号の説明】
【００７１】
１      ＶＭ配置装置（仮想マシン配置装置）
２      ＶＭ（仮想マシン）
３      ＳＷ（スイッチ）
４      物理サーバ
１１    ＶＭ使用量予測部
１２    ＳＷ使用量予測部
１３    ＳＷ容量管理部
１４    ＮＷ情報管理部
１５    ＶＭスコア算出部
１６    配置先算出部（配置処理部）
１７    ＶＭ配置部（配置処理部）
１８    ＶＭ情報受信部
１９    ＳＷ情報受信部
１０ａ  ＰＳスコア算出部
１０ｂ  ＰＳ使用量収集部
２１    ＶＭ使用量収集部
２２    ＶＭ情報転送部
３１    ＳＷ使用量収集部
３２    ＳＷ情報転送部
４１    ＰＳ使用量収集部
４２    ＰＳ情報転送部
【図１】
2015225560.tif 000003
【図２】
2015225560.tif 000004
【図３】
2015225560.tif 000005
【図４】
2015225560.tif 000006
【図５】
2015225560.tif 000007
【図６】
2015225560.tif 000008
【図７】
2015225560.tif 000009
【図８】
2015225560.tif 000010
【図９】
2015225560.tif 000011