(57)【要約】  仮想マシン管理装置（１０）は、取得部（１３）と、特定部（１４）と、移動処理部（１５）とを有する。取得部（１３）は数のサーバ装置において動作する複数の仮想マシンが互いに通信を行う通信データ量を取得する。特定部（１４）は各サーバ装置間の通信距離に基づき、通信データ量が所定量以上である一対の仮想マシンの何れか一方の仮想マシンを実行するサーバ装置からの通信距離が当該一対の仮想マシンが動作するサーバ装置間の通信距離よりも短いサーバ装置を特定する。移動処理部（１５）は特定されたサーバ装置へ前記一対の仮想マシンの他方の仮想マシンを移動させる処理を実行する。
2013038547.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバ装置において動作する複数の仮想マシンが互いに通信を行う通信データ量を取得する取得部と、
各サーバ装置間の通信距離に基づき、前記取得部により取得された通信データ量が所定量以上である一対の仮想マシンの何れか一方の仮想マシンを実行するサーバ装置からの通信距離が当該一対の仮想マシンが動作するサーバ装置間の通信距離よりも短いサーバ装置を特定する特定部と、
前記特定部により特定されたサーバ装置へ前記一対の仮想マシンの他方の仮想マシンを移動させる処理を実行する移動処理部と、
を有することを特徴とする仮想マシン管理装置。
【請求項２】
前記取得部は、各サーバ装置から通信距離に関する情報を取得し、
前記特定部は、各サーバ装置から取得した情報に基づいて各サーバ装置間の通信距離を特定する
ことを特徴とする請求項１に記載の仮想マシン管理装置。
【請求項３】
前記特定部は、前記一対の仮想マシンの他方の仮想マシンを移動させた場合における当該他方の仮想マシンと通信を行う他の仮想マシンとの通信距離が所定値以上低下し、かつ前記一方の仮想マシンを実行するサーバ装置からの通信距離が前記一対の仮想マシンが動作するサーバ装置間の通信距離よりも短いサーバ装置を特定する
ことを特徴とする請求項１または２に記載の仮想マシン管理装置。
【請求項４】
前記特定部は、通信データ量が所定量以上かつ通信距離が所定距離以上である一対の仮想マシンについて前記特定を行う
ことを特徴とする請求項１または２に記載の仮想マシン管理装置。
【請求項５】
前記特定部は、前記一対の仮想マシンのうち負荷が低いサーバ装置で動作する仮想マシンを前記一方の仮想マシンとし、負荷が高いサーバ装置で動作する仮想マシンを前記他方の仮想マシンとして、前記一方の仮想マシンを実行するサーバ装置からの通信距離が当該一対の仮想マシンが動作するサーバ装置間の通信距離よりも短いサーバ装置を特定する
ことを特徴とする請求項１または２に記載の仮想マシン管理装置。
【請求項６】
コンピュータに、
仮想マシンが動作する各サーバ装置間の通信距離に基づき、通信データ量が所定量以上である一対の仮想マシンの何れか一方の仮想マシンを実行するサーバ装置からの通信距離が当該一対の仮想マシンが動作するサーバ装置間の通信距離よりも短いサーバ装置を特定し、
特定されたサーバ装置へ前記一対の仮想マシンの他方の仮想マシンを移動させる処理を実行する
各処理を実行させることを特徴とする仮想マシン移動制御プログラム。
【請求項７】
コンピュータが、
仮想マシンが動作する各サーバ装置間の通信距離に基づき、通信データ量が所定量以上である一対の仮想マシンの何れか一方の仮想マシンを実行するサーバ装置からの通信距離が当該一対の仮想マシンが動作するサーバ装置間の通信距離よりも短いサーバ装置を特定し、
特定されたサーバ装置へ前記一対の仮想マシンの他方の仮想マシンを移動させる処理を実行する
各処理を実行することを特徴とする仮想マシン移動制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン管理装置、仮想マシン移動制御プログラムおよび仮想マシン移動制御方法に関する。
【背景技術】
【０００２】
近年、物理サーバ上で、仮想マシン（Virtual  Machine）を動作させる仮想化技術が利用されている。例えば、データセンタでは、仮想化ソフトウエアを利用して複数の物理サーバ上に仮想マシンを動作させる環境が増加している。この仮想化ソフトウエアは、物理サーバ上で動作する仮想マシンを他の物理サーバ上へ移動する機能がある。かかる移動は、「マイグレーション」とも称される。【０００３】
このように仮想マシンが動作する複数の物理サーバの負荷分散を図る技術として、例えば、負荷の高い物理サーバから負荷の低い物理サーバに仮想マシンをマイグレーションする方法がある。また、負荷分散を図る技術として、消費電力及びＩ／Ｏ量の少なくとも１つを条件として、複数の計算処理を複数の仮想マシンに分散させるパターンごとのコストを算出し、コストが最小となるパターンを選択する技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２１８３０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術は、特定の物理サーバに負荷が偏らないように分散できるものの、仮想マシン同士が通信を行い、その仮想マシン同士の通信距離が離れていると、ネットワークのトラフィックが増え、ネットワークに遅延が発生する場合がある。【０００６】
１つの側面では、ネットワークに遅延が発生することを抑制できる仮想マシン管理装置、仮想マシン移動制御プログラムおよび仮想マシン移動制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の案では、仮想マシン管理装置は、取得部と、特定部と、移動処理部を有する。取得部は、仮想マシン管理装置は、複数のサーバ装置において動作する複数の仮想マシンが互いに通信を行う通信データ量を取得する取得部を有する。特定部は、前記取得部により取得された通信データ量が所定量以上である一対の仮想マシンを特定する。そして、特定部は、各サーバ装置間の通信距離に基づき、特定した一対の仮想マシンの何れか一方の仮想マシンを実行するサーバ装置からの通信距離が当該一対の仮想マシンが動作するサーバ装置間の通信距離よりも短いサーバ装置を特定する。移動処理部は、前記特定部により特定されたサーバ装置へ前記一対の仮想マシンの他方の仮想マシンを移動させる処理を実行する。
【発明の効果】
【０００８】
ネットワークに遅延が発生することを抑制できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、サーバ装置を含むシステムの全体構成を示す図である。
【図２】図２は、実施例２に係るシステムの機能的な構成の一例を示す図である。
【図３】図３は、サーバ装置の記憶部に記憶された第１テーブルのデータ構成の一例を示す図である。
【図４】図４は、管理サーバの記憶部に記憶された第２テーブルのデータ構成の一例を示す図である。
【図５】図５は、管理サーバの記憶部に記憶された第３テーブルのデータ構成の一例を示す図である。
【図６】図６は、各サーバ装置間の通信距離を特定した結果の一例を示す図である。
【図７】図７は、移動先のサーバ装置を特定する流れの一例を示す図である。
【図８】図８は、移動先のサーバ装置を特定する流れの別な一例を示す図である。
【図９】図９は、仮想マシン移動制御処理の手順を示すフローチャートである。
【図１０】図１０は、仮想マシン移動制御処理の手順を示すフローチャートである。
【図１１】図１１は、仮想マシン移動制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本発明にかかる仮想マシン管理装置、仮想マシン移動制御プログラムおよび仮想マシン移動制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１１】
実施例１に係る仮想マシン管理装置１０について説明する。図１は、仮想マシン管理装置を含むシステムの全体構成を示す図である。仮想マシン管理装置１０は、複数のサーバ装置１２においてそれぞれ動作する、コンピュータを仮想化した仮想マシンを管理する物理サーバであり、例えば、データセンタや各企業に設けられた管理用のサーバコンピュータである。仮想マシン管理装置１０は、ネットワーク１１を介してサーバ装置１２と互いに通信可能とする。サーバ装置１２は、仮想化ソフトウエアを実行して仮想化ソフトウエア上で仮想マシンを動作させる。また、各サーバ装置１２は、ネットワーク１１を介して互いに仮想マシンのマイグレーションを行うことができる。かかるネットワーク１１の一態様としては、有線または無線を問わず、インターネット（Internet）、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の通信網が挙げられる。【００１２】
図１に示すように、仮想マシン管理装置１０は、取得部１３と、特定部１４と、移動処理部１５とを有する。【００１３】
取得部１３は、サーバ装置１２から各種情報を取得する。例えば、取得部１３は、サーバ装置１２から送信される仮想マシンが互いに通信を行った通信データ量に関する情報を受信することにより、各仮想マシンが互いに通信を行った通信データ量を取得する。【００１４】
特定部１４は、仮想マシンの移動先となるサーバ装置を特定する。例えば、特定部１４は、通信データ量が所定量以上である一対の仮想マシンを求める。この所定量は、例えば、２００バイトなど一定の値として定めてもよい。また、所定量は、ネットワーク１１を伝送される全通信データ量の一定の割合として定めてもよい。また、所定量は、ネットワーク１１のトラフィック状態に応じて変更してもよい。例えば、ネットワーク１１のトラフィックが多い場合は値を低く、ネットワーク１１のトラフィックが少ない場合は値を高く変更してもよい。このように、通信データ量が所定量以上である一対の仮想マシンを求めることにより、ネットワーク１１への負荷が多い仮想マシンをマイグレーションの候補として抽出できる。特定部１４は、各サーバ装置１２間の通信距離に基づき、求めた一対の仮想マシンの何れか一方の仮想マシンを実行するサーバ装置１２からの通信距離が当該一対の仮想マシンが動作するサーバ装置１２間の通信距離よりも短いサーバ装置１２を特定する。【００１５】
各サーバ装置１２間の通信距離は、管理者などが設定してもよい。また、各サーバ装置１２間の通信距離は、各サーバ装置１２から取得した情報に基づいて特定してもよい。例えば、特定部１４は、各サーバ装置１２へ他のサーバ装置１２との通信距離の測定を指示し、各サーバ装置１２から応答された通信距離を示す情報に基づいて各サーバ装置１２間の通信距離を特定してもよい。なお、各サーバ装置１２から通信距離を示す情報が得られる場合、特定部１４は、各サーバ装置１２へ通信距離の測定の指示を行わなくてもよい。通信距離としては、例えば、ホップ数が挙げられる。ホップ数は、通信相手に到達するまでにパケットが経由したルータなどの中継装置の数を示す。通信経路が、ルータによって複数のネットワークが接続された構成の場合、各ネットワークの通信状態が異なる場合がある。また、ルータ数が多くなるほど中継回数が多くなり、通信データの中継の処理時間も多くなる。このため、中継されるルータが多くなるほどネットワークの遅延やデータ損失が起こりやすくなる。すなわち、ホップ数が多いほど遅延やデータ損失しやすくなる。このため、ホップ数は、ネットワーク上での通信距離を表す情報として用いることができる。ホップ数は、ＴＴＬ（Time  To  Live）を１から順にカウントアップさせながら通信相手に対して例えばＰＩＮＧ（Packet  Internet  Groper）を送信することにより、測定できる。【００１６】
移動処理部１５は、仮想マシンを移動させる処理を実行する。例えば、移動処理部１５は、特定部１４により特定されたサーバ装置１２へ一対の仮想マシンの他方の仮想マシンを移動させる処理を実行する。この移動させる処理は、例えば、各サーバ装置１２上で実行された仮想化ソフトウエアが仮想マシンの移動を行う場合、仮想マシンの移動元、移動先のサーバ装置１２に対して移動を指示する処理である。また、例えば、仮想マシン管理装置１０が管理する仮想マシンに関する情報を変更することにより、仮想マシンの移動を行う場合、仮想マシンが移動先のサーバ装置１２で動作するように仮想マシンに関する情報を更新する処理である。なお、図１の例では、機能的な構成を示したため、取得部１３、特定部１４、移動処理部１５を別に分けているが、例えば、１つのデバイスで構成してもよい。デバイスの一例としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路が挙げられる。なお、デバイスとして、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路を採用することもできる。【００１７】
このように、仮想マシン管理装置１０は、複数のサーバ装置１２において動作する複数の仮想マシンが互いに通信を行う通信データ量を取得する。また、仮想マシン管理装置１０は、通信データ量が所定量以上である一対の仮想マシンを求める。仮想マシン管理装置１０は、各サーバ装置１２間の通信距離に基づき、一対の仮想マシンの何れか一方の仮想マシンを実行するサーバ装置１２からの通信距離が当該一対の仮想マシンが動作するサーバ装置１２間の通信距離よりも短いサーバ装置１２を特定する。そして、仮想マシン管理装置１０は、特定されたサーバ装置１２へ一対の仮想マシンの他方の仮想マシンを移動させる処理を実行する。この結果、特定されたサーバ装置１２へ他方の仮想マシンが移動し、通信データ量が所定量以上である一対の仮想マシンが動作するサーバ装置１２間の通信距離が短くなる。これにより、ネットワーク１１の一部で一対の仮想マシン間の通信データが流れなくなり、ネットワーク１１全体でのトラフィックが減少する。したがって、仮想マシン管理装置１０よれば、ネットワーク１１に遅延が発生することを抑制できる。また、この仮想マシンの移動により、一対の仮想マシンが動作するサーバ装置１２間の通信距離が短くなり、移動前に比べてネットワーク１１の遅延やデータ損失が起こりづらくなるため、一対の仮想マシンが安定して通信を行うことができる。
【実施例２】
【００１８】
実施例２について説明する。実施例２では、複数のサーバ装置３０で仮想マシンであるＶＭゲスト３３が動作し、各サーバ装置３０で動作するＶＭゲスト３３を管理サーバ４０で管理するシステム２０について説明する。図２は、実施例２に係るシステムの機能的な構成の一例を示す図である。システム２０は、複数のサーバ装置３０と、管理サーバ４０とを有する。各サーバ装置３０と管理サーバ４０との間は、ネットワーク２１を介して通信可能に接続される。かかるネットワーク２１の一態様としては、有線または無線を問わず、インターネット、ＬＡＮやＶＰＮなどの任意の通信網が挙げられる。【００１９】
サーバ装置３０は、仮想マシンであるＶＭゲスト３３を動作させることが可能とされた機器であり、他のサーバ装置３０との間でＶＭゲスト３３のマイグレーションを行う。管理サーバ４０は、各サーバ装置３０で動作するＶＭゲスト３３を管理しており、各サーバ装置３０へＶＭゲスト３３のマイグレーション指示を送信する。このマイグレーション指示には、移動対象とするＶＭゲスト３３に関する情報や移動元、移動先を示す情報などの情報が含まれる。なお、図２の例では、サーバ装置３０を３つ図示したが、サーバ装置３０が２つ、または４つ以上であってもよい。また、図２の例では、管理サーバ４０を１つ図示したが、管理サーバ４０が２つ以上であってもよい。【００２０】
図２に示すように、サーバ装置３０は、記憶部３１と、ＶＭホスト３２とを有する。【００２１】
記憶部３１は、各種情報を記憶する。例えば、記憶部３１は、第１テーブル３１ａを記憶する。記憶部３１のデバイスの一例としては、フラッシュメモリやＮＶＳＲＡＭ(Non  Volatile  Static  Random  Access  Memory)などのデータを書き換え可能な半導体メモリや、ハードディスク、光ディスクなどの記憶装置が挙げられる。【００２２】
第１テーブル３１ａは、後述するＶＭホスト３２により測定された各ＶＭゲスト３３間の通信距離および通信データ量を管理するテーブルである。図３は、サーバ装置の記憶部に記憶された第１テーブルのデータ構成の一例を示す図である。図３に示すように、第１テーブル３１ａは、通信元仮想サーバ名、通信先仮想サーバ名、距離、通信データ量の各項目を有する。通信元仮想サーバ名の項目は、通信元となるＶＭゲスト３３の名前を記憶する領域である。通信先仮想サーバ名の項目は、通信先となるＶＭゲスト３３の名前を記憶する領域である。距離の項目は、通信を行うＶＭゲスト３３間の通信距離を記憶する領域である。本実施例では、通信距離としてホップ数を記憶する。通信データ量の項目は、通信を行うＶＭゲスト３３間の通信データ量を記憶する領域である。通信データ量は、例えば、ビット単位やバイト単位としてもよい。また、通信データ量は、例えば、ｂｐｓ（Bits  Per  Second）などの単位時間あたりの通信データ量としてもよい。本実施例では、通信データ量の項目はキロビット単位での通信データ量を示す。【００２３】
図３の例では、名前が「Ａ」のＶＭゲスト３３は、名前が「Ｂ」のＶＭゲスト３３と通信を行っており、通信距離が「５」であり、通信データ量が「１００」であることを示す。また、名前が「Ａ」のＶＭゲスト３３は、名前が「Ｃ」のＶＭゲスト３３と通信を行っており、通信距離が「３」であり、通信データ量が「２００」であることを示す。また、名前が「Ａ」のＶＭゲスト３３は、名前が「Ｄ」のＶＭゲスト３３と通信を行っており、通信距離が「３」であり、通信データ量が「３００」であることを示す。【００２４】
ＶＭホスト３２は、コンピュータシステムの動作環境を仮想的に実現する仮想化ソフトウエアの制御プログラムであり、ＶＭゲスト３３を動作させる制御を行う。また、ＶＭホスト３２は、管理サーバ４０から受信したマイグレーション指示に応じて、他のサーバ装置３０との間でのＶＭゲスト３３のマイグレーションの制御を行う。ＶＭゲスト３３は、ＶＭホスト３２によって提供された環境でユーザに提供される処理を担う仮想マシンである。ＶＭゲスト３３は、仮想環境においてアプリケーションやファームウェアなどのプログラムの処理を実行する。また、ＶＭゲスト３３は、他のＶＭゲスト３３と通信を行うことができる。各サーバ装置３０のＶＭホスト３２は、動作させている各ＶＭホスト３２の通信状態を監視しており、各ＶＭホスト３２と他のＶＭホスト３２とのホップ数を測定する。また、ＶＭホスト３２は、各ＶＭホスト３２と他のＶＭホスト３２とそれぞれ所定の期間の間に互いに通信を行う通信データ量を測定する。この所定の期間は、各ＶＭゲスト３３間の平均的な通信データ量を測定できる期間であれば特に限定されず、例えば、数秒から数分の期間であってもよい。ホップ数や通信データ量を測定するタイミングは、日毎や週毎など一定期間毎であってもよく、サーバ装置３０から通信データ量の測定が指示されたタイミングとしてもよい。ＶＭホスト３２は、測定したＶＭゲスト３３間のホップ数および通信データ量を第１テーブル３１ａに記憶する。また、ＶＭホスト３２は、測定したホップ数および通信データ量を管理サーバ４０へ送信する。ＶＭホスト３２は、測定したホップ数および通信データ量の送信が完了とすると、第１テーブル３１ａに記憶されたホップ数および通信データ量を消去する。【００２５】
管理サーバ４０は、通信制御Ｉ／Ｆ部４１と、記憶部４２と、制御部４３とを有する。【００２６】
通信制御Ｉ／Ｆ部４１は、少なくとも１つのポートを有し、各サーバ装置３０と管理サーバ４０との間の通信を制御するインタフェースである。例えば、通信制御Ｉ／Ｆ部４１は、サーバ装置３０へＶＭゲスト３３のマイグレーション指示を送信する。また、通信制御Ｉ／Ｆ部４１は、各サーバ装置３０のＶＭホスト３２から送信された各ＶＭゲスト３３間のホップ数および通信データ量を受信する。【００２７】
記憶部４２は、各種情報を記憶する。例えば、記憶部４２は、第２テーブル４２ａおよび第３テーブル４２ｂを記憶する。記憶部４２のデバイスの一例としては、フラッシュメモリやＮＶＳＲＡＭなどのデータを書き換え可能な半導体メモリや、ハードディスク、光ディスクなどの記憶装置が挙げられる。【００２８】
第２テーブル４２ａは、管理サーバ４０の管理下にあるＶＭホスト３２およびＶＭゲスト３３を管理するテーブルである。図４は、管理サーバの記憶部に記憶された第２テーブルのデータ構成の一例を示す図である。図４に示すように、第２テーブル４２ａは、サーバ装置名、ＶＭホスト名、ＶＭゲスト名の各項目を有する。サーバ装置名の項目は、各サーバ装置３０の名前を記憶する領域である。ＶＭホスト名の項目は、それぞれのサーバ装置３０で動作するＶＭホスト３２の名前を記憶する領域である。ＶＭゲスト名の項目は、各ＶＭゲスト３３上で動作するＶＭゲスト３３の名前を記憶する領域である。【００２９】
図４の例では、名前が「ＰＭ１」のサーバ装置３０は、名前が「ａ」のＶＭホスト３２が動作し、そのＶＭホスト３２上で名前が「Ｂ」のＶＭゲスト３３が動作していることを示す。また、名前が「ＰＭ２」のサーバ装置３０は、名前が「ｂ」のＶＭホスト３２が動作し、そのＶＭホスト３２上で名前が「Ａ」のＶＭゲスト３３が動作していることを示す。また、名前が「ＰＭ３」のサーバ装置３０は、名前が「ｃ」のＶＭホスト３２が動作し、そのＶＭホスト３２上で名前が「Ｃ」と「Ｄ」のＶＭゲスト３３が動作していることを示す。【００３０】
第３テーブル４２ｂは、各サーバ装置３０のＶＭホスト３２から受信した各ＶＭゲスト３３間のホップ数および通信データ量を管理するテーブルである。図５は、管理サーバの記憶部に記憶された第３テーブルのデータ構成の一例を示す図である。図５に示すように、第３テーブル４２ｂは、図３に示した第１テーブル３１ａと同様に、通信元仮想サーバ名、通信先仮想サーバ名、距離、通信データ量の各項目を有する。なお、各項目は、第１テーブル３１ａと同様であるため、項目の説明を省略する。【００３１】
図５の例では、通信元のＶＭゲスト３３が「Ａ」であるデータについては、図３に同様のデータが記憶されている。また、図３の例では、通信元のＶＭゲスト３３が、「Ｂ」、「Ｃ」、「Ｄ」のデータも記憶されている。図３の例では、名前が「Ｂ」のＶＭゲスト３３は、名前が「Ａ」のＶＭゲスト３３と通信を行っており、通信距離が「５」であり、通信データ量が「１００」であることを示す。また、名前が「Ｂ」のＶＭゲスト３３は、名前が「Ｄ」のＶＭゲスト３３と通信を行っており、通信距離が「１０」であり、通信データ量が「５００」であることを示す。また、名前が「Ｃ」のＶＭゲスト３３は、名前が「Ａ」のＶＭゲスト３３と通信を行っており、通信距離が「３」であり、通信データ量が「２００」であることを示す。また、名前が「Ｄ」のＶＭゲスト３３は、名前が「Ａ」のＶＭゲスト３３と通信を行っており、通信距離が「３」であり、通信データ量が「３００」であることを示す。また、名前が「Ｄ」のＶＭゲスト３３は、名前が「Ｂ」のＶＭゲスト３３と通信を行っており、通信距離が「１０」であり、通信データ量が「５００」であることを示す。【００３２】
図２の説明に戻り、制御部４３は、例えば、内部メモリ等を有するＣＰＵなどの電子回路であり、ＶＭホスト管理部４４と、取得部４５と、特定部４６と、移動処理部４７とを有する。【００３３】
ＶＭホスト管理部４４は、各サーバ装置３０のＶＭホスト３２およびＶＭゲスト３３を管理する。例えば、ＶＭホスト管理部４４は、各サーバ装置３０のＶＭホスト３２およびＶＭゲスト３３と通信を行って、各サーバ装置３０上で動作するＶＭホスト３２およびＶＭゲスト３３を特定し、第２テーブル４２ａを更新する。【００３４】
取得部４５は、通信制御Ｉ／Ｆ部４１により受信することにより取得した各サーバ装置３０のＶＭホスト３２から受信した各ＶＭゲスト３３間のホップ数および通信データ量を第３テーブル４２ｂに記憶させる。【００３５】
特定部４６は、第３テーブル４２ｂに記憶された各ＶＭゲスト３３間のホップ数、および第２テーブル４２ａに記憶された各ＶＭゲスト３３が動作するサーバ装置３０の情報に基づき、各サーバ装置３０間の通信距離を特定する。【００３６】
図６は、各サーバ装置間の通信距離を特定した結果の一例を示す図である。図６の例では、名前が「ＰＭ１」のサーバ装置３０と名前が「ＰＭ２」のサーバ装置３０の通信距離は、「５」であることを示す。また、名前が「ＰＭ１」のサーバ装置３０と名前が「ＰＭ３」のサーバ装置３０の通信距離は、「１０」であることを示す。また、名前が「ＰＭ２」のサーバ装置３０と名前が「ＰＭ３」のサーバ装置３０の通信距離は、「３」であることを示す。【００３７】
特定部４６は、第３テーブル４２ｂに記憶された各ＶＭゲスト３３間のホップ数および通信データ量に基づき、通信データ量が所定量以上かつ通信距離が所定距離以上である一対のＶＭゲスト３３を検索する。この所定量は、例えば、２００ビットなど一定の値としてもよく、ネットワークを伝送される全通信データ量の一定の割合としてもよい。また、所定量は、ネットワーク２１のトラフィック状態に応じて変更してもよい。また、所定距離も、例えば、ホップ数が４など一定の値として定めてもよく、ネットワーク２１のトラフィック状態に応じて変更してもよい。例えば、ネットワーク２１のトラフィックが多い場合は値を低く、ネットワーク２１のトラフィックが少ない場合は値を高く変更してもよい。このように、通信距離が所定距離以上である一対のＶＭゲスト３３を求めることにより、以前のマイグレーションにより通信距離が所定距離未満となったＶＭゲスト３３をマイグレーションの候補から除外できる。また、ＶＭゲスト３３間の通信距離が小さく、トラフィックの軽減効果が低いＶＭゲスト３３を移動候補から除外できる。【００３８】
特定部４６は、検索された一対のＶＭゲスト３３のうち負荷が低いサーバ装置３０で動作するＶＭゲスト３３を一方のＶＭゲスト３３と特定し、負荷が高いサーバ装置３０で動作するＶＭゲスト３３を他方のＶＭゲスト３３と特定する。この負荷の例としては、ＣＰＵの使用率や、メモリ使用率がある。各サーバ装置３０の負荷は、ＶＭホスト管理部４４が各サーバ装置３０を管理する際にＣＰＵの使用率や、メモリ使用率を収集している場合、ＶＭホスト管理部４４から取得する。また、各サーバ装置３０の負荷は、特定部４６が各サーバ装置３０に対して負荷の通知を要求し、各サーバ装置３０から負荷の通知により取得してもよい。【００３９】
特定部４６は、他方のＶＭゲスト３３を一方のＶＭゲスト３３を実行するサーバ装置３０に移動させた場合における他方のＶＭゲスト３３と通信を行う他のＶＭゲスト３３との通信距離の変化を算出する。つまり、一対のＶＭゲスト３３を負荷が低いサーバ装置３０に集約した場合の通信距離の変化を算出する。そして、特定部４６は、通信距離が所定値以上低下する場合、一方のＶＭゲスト３３を実行するサーバ装置３０を移動先のサーバ装置３０と特定する。【００４０】
一方、特定部４６は、通信距離が所定値以上低下しない場合、一方のＶＭゲスト３３を実行するサーバ装置３０からの通信距離が所定距離以下でかつ一対のＶＭゲスト３３が動作するサーバ装置３０間の通信距離よりも短い各サーバ装置３０を特定する。特定部４６は、特定した各サーバ装置３０に他方のＶＭゲスト３３を移動させた場合における他方のＶＭゲスト３３と通信を行う他のＶＭゲスト３３の通信距離の変化をそれぞれ算出する。そして、特定部４６は、通信距離が所定値以上低下するサーバ装置３０を移動先のサーバ装置３０と特定する。なお、通信距離が所定値以上低下するサーバ装置３０が複数ある場合、特定部４６は、一対のＶＭゲスト３３が動作するサーバ装置３０からの通信距離が最も短いサーバ装置３０を移動先のサーバ装置３０と特定する。【００４１】
移動処理部４７は、移動先と特定されたサーバ装置３０のＣＰＵの使用率が所定値以下の場合、移動先のサーバ装置３０へ他方のＶＭゲスト３３を移動させる処理を実行する。このように、移動先のサーバ装置３０のＣＰＵの使用率が所定値以下の場合に他方のＶＭゲスト３３を移動させることにより、負荷が高いサーバ装置３０へＶＭゲスト３３を移動することを防止できる。【００４２】
次に、管理サーバ４０による移動先のサーバ装置を特定する流れを説明する。図７は、移動先のサーバ装置を特定する流れの一例を示す図である。図７の例では、図６に示したように、「ＰＭ１」と「ＰＭ２」のサーバ装置３０の通信距離を「５」とし、「ＰＭ１」と「ＰＭ３」のサーバ装置３０の通信距離を「１０」とし、「ＰＭ２」と「ＰＭ３」のサーバ装置３０の通信距離を「３」とする。また、同一サーバ装置３０上の通信距離を「１」とする。また、図７の例では、「ＰＭ１」のサーバ装置３０は、「Ｂ」のＶＭゲスト３３が動作し、「ＰＭ２」のサーバ装置３０は、「Ａ」のＶＭゲスト３３が動作し、「ＰＭ３」のサーバ装置３０は、「Ｃ」と「Ｄ」のＶＭゲスト３３が動作する。また、図７の例では、「Ａ」と「Ｂ」のＶＭゲスト３３が通信し、「Ａ」と「Ｃ」のＶＭゲスト３３が通信し、「Ａ」と「Ｄ」のＶＭゲスト３３が通信し、「Ｂ」と「Ｄ」のＶＭゲスト３３が通信を行う。また、各サーバ装置３０で測定された通信データ量は、図５に示した値とする。【００４３】
特定部４６は、第３テーブル４２ｂに記憶された各ＶＭゲスト３３間のホップ数が「４」以上かつ通信データ量が「２００」以上である一対のＶＭゲスト３３を検索するものとする。この場合、図５に示すように、「Ｂ」と「Ｄ」のＶＭゲスト３３間の通信距離は、「１０」であり、通信データ量が「５００」であるため、「Ａ」と「Ｄ」の一対のＶＭゲスト３３が検索される。特定部４６は、移動対象を特定する際に用いる通信データ量の所定量や通通信距離の所定値の値を小さくするほど、検索されるＶＭゲスト３３の対が多くなり、ＶＭゲスト３３の移動が頻繁に起こりやすくなる。【００４４】
「Ｄ」のＶＭゲスト３３を「Ｂ」のＶＭゲスト３３が動作する「ＰＭ１」のサーバ装置３０に移動させる場合を考える。特定部４６が移動先のサーバ装置３０と特定する際に用いる所定値を「３」とする。【００４５】
「Ｄ」のＶＭゲスト３３は、「Ａ」と「Ｂ」のＶＭゲスト３３と通信している。よって、移動により、「Ｂ」と「Ｄ」のＶＭゲスト３３間、および「Ａ」と「Ｄ」のＶＭゲスト３３間の通信距離が変化し、それ以外の通信距離は変化しない。この移動により「Ｂ」と「Ｄ」のＶＭゲスト３３間の通信距離が１０→１になり、「Ａ」と「Ｄ」のＶＭゲスト３３間の通信距離が３→５になる。よって、通信距離の変化量は、（１０−１）＋(３−５)＝７と算出され、変化量が所定値「３」よりも大きい。よって、特定部４６は、「ＰＭ１」のサーバ装置３０を「Ｄ」のＶＭゲスト３３の移動先のサーバ装置３０と特定する。【００４６】
図８は、移動先のサーバ装置を特定する流れの別な一例を示す図である。図８の例でも、図６に示したように、「ＰＭ１」と「ＰＭ２」のサーバ装置３０の通信距離を「５」とし、「ＰＭ１」と「ＰＭ３」のサーバ装置３０の通信距離を「１０」とし、「ＰＭ２」と「ＰＭ３」のサーバ装置３０の通信距離を「３」とする。また、同一サーバ装置３０上の通信距離を「１」とする。また、図８の例でも、「ＰＭ１」のサーバ装置３０は、「Ｂ」のＶＭゲスト３３が動作し、「ＰＭ２」のサーバ装置３０は、「Ａ」のＶＭゲスト３３が動作し、「ＰＭ３」のサーバ装置３０は、「Ｃ」と「Ｄ」のＶＭゲスト３３が動作する。また、図８の例では、「Ａ」と「Ｂ」のＶＭゲスト３３が通信し、「Ａ」と「Ｃ」のＶＭゲスト３３が通信し、「Ｂ」と「Ｄ」のＶＭゲスト３３が通信し、「Ｃ」と「Ｄ」のＶＭゲスト３３が通信を行っている。【００４７】
例えば、「Ｄ」のＶＭゲスト３３を「ＰＭ１」のサーバ装置３０に移動させる場合を考える。特定部４６が移動先のサーバ装置３０と特定する際に用いる所定値を「３」とする。この移動により「Ｂ」と「Ｄ」のＶＭゲスト３３間の通信距離が１０→１になり、「Ｃ」と「Ｄ」のＶＭゲスト３３間の通信距離が１→１０になる。よって、通信距離の変化量は、（１０−１）＋（１−１０）＝０と算出され、変化量が所定値「３」よりも小さい。よって、特定部４６は、「ＰＭ１」のサーバ装置３０を「Ｄ」のＶＭゲスト３３の移動先のサーバ装置３０と特定しない。【００４８】
一方、例えば、「Ｄ」のＶＭゲスト３３を「ＰＭ２」のサーバ装置３０に移動させる場合を考える。特定部４６が移動先のサーバ装置３０と特定する際に用いる所定値を「３」とする。この移動により「Ｂ」と「Ｄ」のＶＭゲスト３３間の通信距離が１０→５になり、「Ｃ」と「Ｄ」のＶＭゲスト３３間の通信距離が１→３になる。よって、通信距離の変化量は、（１０−５）＋(１−３)＝３と算出され、変化量が所定値「３」以上である。よって、特定部４６は、「ＰＭ２」のサーバ装置３０を「Ｄ」のＶＭゲスト３３の移動先のサーバ装置３０と特定される。【００４９】
次に、本実施例に係る管理サーバ４０による移動先のサーバ装置を特定する際の処理の流れを説明する。図９、１０は、仮想マシン移動制御処理の手順を示すフローチャートである。この仮想マシン移動制御処理は、例えば、日毎や週毎など所定のタイミングで実行される。【００５０】
図９に示すように、特定部４６は、第３テーブル４２ｂに記憶された各ＶＭゲスト３３間のホップ数、および第２テーブル４２ａに記憶された各ＶＭゲスト３３とサーバ装置３０の情報に基づき、各サーバ装置３０間の通信距離を特定する（ステップＳ１０）。特定部４６は、第３テーブル４２ｂから通信データ量の大きい順に、通信を行った一対のＶＭゲスト３３を選択する（ステップＳ１１）。特定部４６は、選択された一対のＶＭゲスト３３間の通信データ量が所定量以上であるか否かを判定する（ステップＳ１２）。通信データ量が所定量未満である場合（ステップＳ１２否定）、特定部４６は、通信を行った一対のＶＭゲスト３３を全て選択したか否かを判定する（ステップＳ１３）。全て選択した場合（ステップＳ１３肯定）、処理終了となる。一方、未選択のものがある場合（ステップＳ１３否定）、ステップＳ１１へ移行する。【００５１】
一方、通信データ量が所定量以上である場合（ステップＳ１２肯定）、特定部４６は、一対のＶＭゲスト３３間の通信距離が所定距離以上であるか否かを判定する（ステップＳ１４）。通信距離が所定距離未満である場合（ステップＳ１４否定）、上記ステップＳ１３へ移行する。通信距離が所定距離以上である場合（ステップＳ１４肯定）、特定部４６は、負荷が高いサーバ装置３０で動作する他方のＶＭゲスト３３を一方のＶＭゲスト３３を実行するサーバ装置３０に移動させた場合の通信距離の変化を算出する（ステップＳ１５）。特定部４６は、算出された通信距離が所定値以上低下したか否かを判定する（ステップＳ１６）。通信距離が所定値以上低下していない場合（ステップＳ１６否定）、後述するステップＳ２０へ移行する。一方、通信距離が所定値以上低下した場合（ステップＳ１６肯定）、移動処理部４７は、一方のＶＭゲスト３３を実行するサーバ装置３０のＣＰＵ使用率が所定値以下であるか否かを判定する（ステップＳ１７）。ＣＰＵ使用率が所定値以下ではない場合（ステップＳ１７否定）、後述するステップＳ２０へ移行する。一方、ＣＰＵ使用率が所定値以下である場合（ステップＳ１７肯定）、移動処理部４７は、一方のＶＭゲスト３３が動作するサーバ装置３０へ他方のＶＭゲスト３３を移動させる処理を実行し（ステップＳ１８）、ステップＳ１１へ移行する。【００５２】
図１０に示すように、特定部４６は、一方のＶＭゲスト３３を実行するサーバ装置３０からの通信距離が所定距離以下でかつ一対のＶＭゲスト３３が動作するサーバ装置３０間の通信距離よりも短い各サーバ装置３０を特定する（ステップＳ２０）。特定部４６は、一方のＶＭゲスト３３を実行するサーバ装置３０からの通信距離が短い順に特定したサーバ装置３０を選択する（ステップＳ２１）。特定部４６は、選択したサーバ装置３０に他方のＶＭゲスト３３を移動させた場合における他方のＶＭゲスト３３と通信を行う他のＶＭゲスト３３の通信距離の変化をそれぞれ算出する（ステップＳ２２）。特定部４６は、算出された通信距離が所定値以上低下したか否かを判定する（ステップＳ２３）。通信距離が所定値以上低下していない場合（ステップＳ２３否定）、特定部４６は、特定されたサーバ装置３０を全て選択済みか否かを判定する（ステップＳ２４）。未選択のものがある場合（ステップＳ２４否定）、特定部４６は、ステップＳ２１へ移行する。一方、全て選択済みの場合、図９に示すステップＳ１１へ移行する。一方、通信距離が所定値以上低下した場合（ステップＳ２３肯定）、移動処理部４７は、一方のＶＭゲスト３３を実行するサーバ装置３０のＣＰＵ使用率が所定値以下であるか否かを判定する（ステップＳ２５）。ＣＰＵ使用率が所定値以下ではない場合（ステップＳ２５否定）、ステップＳ２４へ移行する。一方ＣＰＵ使用率が所定値以下である場合（ステップＳ２５肯定）、移動処理部４７は、選択されたサーバ装置３０へ他方のＶＭゲスト３３を移動させる処理を実行し（ステップＳ２６）、図９に示すステップＳ１１へ移行する。【００５３】
このように、サーバ装置３０は、他方のＶＭゲスト３３を移動させた場合における当該他方のＶＭゲスト３３と通信を行う他のＶＭゲスト３３との通信距離が所定値以上低下するサーバ装置を移動先のサーバ装置３０と特定する。よって、サーバ装置３０によれば、システム全体でのネットワークのトラフィックを軽減できる。【００５４】
また、サーバ装置３０は、通信データ量が所定量以上かつ通信距離が所定距離以上である一対のＶＭゲスト３３について移動先となるサーバ装置３０の特定を行う。よって、サーバ装置３０によれば、トラフィックの軽減効果が大きいＶＭゲスト３３を抽出できる。【００５５】
また、サーバ装置３０は、一対のＶＭゲスト３３が動作するサーバ装置３０のうち一方のＶＭゲスト３３が動作する負荷が低いサーバ装置３０を基準として、負荷の高いサーバ装置３０で動作するＶＭゲスト３３を移動させる。よって、サーバ装置３０によれば、負荷の高いサーバ装置３０の負荷を軽減できる。【００５６】
また、サーバ装置３０は、最初に、一対のＶＭゲスト３３の他方のＶＭゲスト３３を一方のＶＭゲスト３３が動作するサーバ装置３０に移動可能かの判定を行う。よって、サーバ装置３０によれば、一対のＶＭゲスト３３の通信距離が近い状態に移動させることができる。また、サーバ装置３０は、次に、一方のＶＭゲスト３３が動作するサーバ装置３０に近いサーバ装置３０に移動可能かの判定を行う。よって、サーバ装置３０によれば、一方のＶＭゲスト３３と他方のＶＭゲスト３３を同じサーバ装置３０に移動させることができない場合でも、一対のＶＭゲスト３３の通信距離が近い状態に移動させることができる。
【実施例３】
【００５７】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。【００５８】
例えば、上記の実施例では、各サーバ装置３０が通信データ量および通信距離を送信する場合について説明したが、開示の装置はこれに限定されない。例えば、管理サーバ４０がネットワークを監視して各サーバ装置３０が通信データ量、通信距離を取得してもよい。【００５９】
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップＳでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップＳを省略することもできる。【００６０】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図２に示すＶＭホスト管理部４４、取得部４５、特定部４６の各処理部が適宜統合されてもよい。また、特定部４６の処理が各サーバ装置間の通信距離を特定する処理を行う第１特定部と、通信距離よりも短いサーバ装置を特定する処理を行う第２特定部に分離されてもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。【００６１】
［仮想マシン移動制御プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図１１は、仮想マシン移動制御プログラムを実行するコンピュータを示す図である。【００６２】
図１１に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３００〜３４０の各部は、バス４００を介して接続される。ＨＤＤ３３０には、図２に示した第２テーブル４２ａ、第３テーブル４２ｂ各々と同様の機能を有するテーブルが記憶される。【００６３】
ＲＯＭ３２０には上記の実施例１に示す特定部１４、移動処理部１５、または上記の実施例２に示す特定部４６、移動処理部４７と同様の機能を発揮する仮想マシン移動制御プログラム３２０ａが予め記憶される。なお、仮想マシン移動制御プログラム３２０ａについては、適宜分離しても良い。【００６４】
そして、ＣＰＵ３１０が、仮想マシン移動制御プログラム３２０ａをＲＯＭ３２０から読み出して実行することで、実施例１、２に示した各制御部と同様の動作を実行する。すなわち、仮想マシン移動制御プログラム３２０ａは、実施例１に示した特定部１４、移動処理部１５、あるいは実施例２に示した特定部４６、移動処理部４７と同様の動作を実行する。【００６５】
なお、上記した仮想マシン移動制御プログラム３２０ａについては、必ずしも最初からＨＤＤ３３０に記憶させることを要しない。【００６６】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの可搬用の物理媒体３５０にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。【００６７】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００６８】
１０    仮想マシン管理装置
１２    サーバ装置
１３    取得部
１４    特定部
１５    移動処理部
２０    システム
３０    サーバ装置
３２    ＶＭホスト
３３    ＶＭゲスト
４０    管理サーバ
４２ａ  第２テーブル
４２ｂ  第３テーブル
４２    記憶部
４３    制御部
４４    ＶＭホスト管理部
４５    取得部
４６    第１特定部
４７    移動処理部
【図１】
2013038547.tif 000003
【図２】
2013038547.tif 000004
【図３】
2013038547.tif 000005
【図４】
2013038547.tif 000006
【図５】
2013038547.tif 000007
【図６】
2013038547.tif 000008
【図７】
2013038547.tif 000009
【図８】
2013038547.tif 000010
【図９】
2013038547.tif 000011
【図１０】
2013038547.tif 000012
【図１１】
2013038547.tif 000013
【国際調査報告】
2013038547.tif 000014
2013038547.tif 000015
2013038547.tif 000016
2013038547.tif 000017