(57)【特許請求の範囲】
【請求項１】
複数のサーバを備えるデータセンタで動作する複数の仮想マシンの各々について、単位時間に送受信されるデータの量である通信量を前記データの送信元と宛先に関連付けた観測結果を受信する受信部と、
前記通信量が大きいほど前記送信元と前記宛先の間の相関度が大きくなるように相関度を算出する相関度算出部と、
前記相関度が相対的に大きい仮想マシンのグループである配置グループを求め、当該配置グループに含まれる仮想マシンを同一のサーバに配置した配置候補を算出する候補算出部と、
前記複数の仮想マシンの配置を前記配置候補に合わせるための仮想マシンの移動に起因するデータの送受信が前記データセンタ中のネットワークにかける負荷の大きさである移動負荷を算出するとともに、前記移動負荷が閾値以下である場合、前記配置候補と同じ配置にするために移動させる仮想マシンに、移動先のサーバを指示する移動指示メッセージを生成する移動負荷算出部と、
前記移動指示メッセージを送信する送信部
を備え、
前記候補算出部は、前記相関度が相対的に大きい仮想マシンの組み合わせと、前記複数の仮想マシンのうち前記組み合わせに含まれていない仮想マシンとの間の相関度を用いて、前記配置グループを生成する
ことを特徴とする通信装置。
【請求項２】
前記移動負荷算出部は、
前記移動負荷が前記閾値以下の場合、前記複数の仮想マシンの配置を前記配置候補と同一の配置にすることを決定して前記移動指示メッセージを生成し、
前記移動負荷が閾値より大きい場合は、前記複数の仮想マシンの配置を前記配置候補と同一の配置にしないことを決定して、前記複数の仮想マシンのいずれに宛てた移動指示メッセージも生成しない
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記移動負荷算出部は、前記複数の仮想マシンの配置を前記配置候補に合わせるために移動される仮想マシンである移動仮想マシンの各々について、前記移動仮想マシンの移動により発生する負荷を表す移動コストを計算し、
前記移動コストの総和を前記移動負荷とし、
前記移動コストは、前記移動仮想マシンの移動により送受信されるデータの量である移動トラフィック量が大きいほど大きくなり、前記移動仮想マシンが残存する時間の長さが長いほど大きくなるように計算される
ことを特徴とする請求項１もしくは２に記載の通信装置。
【請求項４】
前記複数のサーバ同士の接続を特定する情報であるネットワーク情報を備え、
前記候補算出部は、前記ネットワークに対称性がある場合、算出した第１の配置候補と等価な第２の配置候補を求めて、前記第１および第２の配置候補を前記移動負荷算出部に出力し、
前記移動負荷算出部は、第１の配置候補について求められた第１の移動負荷が、第２の配置候補について求められた第２の移動負荷よりも小さい場合、前記第１の移動負荷を前記閾値と比較し、
前記第１の移動負荷が前記閾値よりも小さい場合、前記複数の仮想マシンを前記第１の配置候補と同一の配置に配置することを決定して、前記移動指示メッセージを生成する
ことを特徴とする請求項１〜３のいずれか１項に記載の通信装置。
【請求項５】
前記複数のサーバから、前記仮想マシンが配置されていないサーバを、省電力モードに設定する省電力サーバとして検出するとともに、前記省電力モードに設定することを指示する省電力指示メッセージを生成する省電力箇所検出部をさらに備え、
前記送信部は、前記省電力指示メッセージを前記省電力サーバに送信する
ことを特徴とする請求項１〜４のいずれか１項に記載の通信装置。
【請求項６】
前記相関度算出部は、第１の仮想マシンと第２の仮想マシンの間の相関度を、
前記第１の仮想マシンと前記第２の仮想マシンの間の通信で送受信されるデータ量が多いほど大きな値とし、
前記第１の仮想マシンと前記第２の仮想マシンの間で発生する通信の頻度が高いほど大きな値とし、
前記第１の仮想マシンと前記第２の仮想マシンの間で発生する通信の継続時間が長いほど大きな値とする
ことを特徴とする請求項１〜５のいずれか１項に記載の通信装置。
【請求項７】
前記複数の仮想マシンの各々について、前記データセンタの外部に位置する外部通信装置との間で単位時間に送受信されるデータの量である外部トラフィック量を取得する外部トラフィック取得部と、
前記複数のサーバの各々について、前記データセンタの外部に位置する外部通信装置の間の通信を中継するゲートウェイ装置から、前記データセンタ内の第１のサーバまでのホップ数である第１のホップ数と、前記ゲートウェイ装置から前記データセンタ内の第２のサーバまでのホップ数である第２のホップ数を記憶する記憶部
をさらに備え、
前記候補算出部は、前記ゲートウェイ装置から前記第１のサーバまでの第１のホップ数が、前記ゲートウェイ装置から前記第２のサーバまでの第２のホップ数よりも小さい場合、前記外部トラフィック量が大きい仮想マシンほど前記第１のサーバに配置されやすくなるように、前記配置候補を算出する
ことを特徴とする請求項１〜６のいずれか１項に記載の通信装置。
【請求項８】
複数のサーバを備えるデータセンタで動作する複数の仮想マシンの各々について、単位時間に送受信されるデータの量である通信量を前記データの送信元と宛先に関連付けた観測結果を受信し、
前記通信量が大きいほど前記送信元と前記宛先の間の相関度が大きくなるように相関度を算出し、
前記相関度が相対的に大きい仮想マシンの組み合わせと、前記複数の仮想マシンのうち前記組み合わせに含まれていない仮想マシンとの間の相関度を用いて、配置グループを生成し、
前記配置グループに含まれる仮想マシンを同一のサーバに配置した配置候補を算出し、
前記複数の仮想マシンの配置を前記配置候補に合わせるための仮想マシンの移動に起因するデータの送受信が前記データセンタ中のネットワークにかける負荷の大きさである移動負荷を算出し、
前記移動負荷が閾値以下である場合、前記配置候補と同じ配置にするために移動させる仮想マシンに、移動先のサーバを指示する移動指示メッセージを送信する
ことを特徴とする通信方法。
【請求項９】
複数のサーバを備えるデータセンタで動作する複数の仮想マシンの各々について、単位時間に送受信されるデータの量である通信量を前記データの送信元と宛先に関連付けた観測結果を受信し、
前記通信量が大きいほど前記送信元と前記宛先の間の相関度が大きくなるように相関度を算出し、
前記相関度が相対的に大きい仮想マシンの組み合わせと、前記複数の仮想マシンのうち前記組み合わせに含まれていない仮想マシンとの間の相関度を用いて配置グループを生成し、
前記配置グループに含まれる仮想マシンを同一のサーバに配置した配置候補を算出し、
前記複数の仮想マシンの配置を前記配置候補に合わせるための仮想マシンの移動に起因するデータの送受信が前記データセンタ中のネットワークにかける負荷の大きさである移動負荷を算出し、
前記移動負荷が閾値以下である場合、前記配置候補と同じ配置にするために移動させる仮想マシンに、移動先のサーバを指示する移動指示メッセージを送信する
処理を通信装置に実施させることを特徴とする通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の通信装置を含むネットワークにおける通信に関する。
【背景技術】
【０００２】
近年、ネットワークと仮想マシン（Virtual Machine、ＶＭ）を用いたクラウドコンピューティングが普及してきている。クラウドコンピューティングに用いられるデータセンタには複数のサーバが設置されることがあり、仮想マシンはサーバ中で動作する。さらに１つのサーバ中で複数の仮想マシンが動作することもある。データセンタで仮想マシンを配置もしくは移動する場合、管理を容易にするなどの目的により、同一のテナントで使用される仮想マシンがなるべく同一の物理サーバに配置されることがある。また、物理サーバを有効活用するために、１つの物理サーバになるべく多くの仮想マシンが配置されることもある。仮想マシンはアプリケーションを実行するために用いるデータや、アプリケーションの実行結果を他の仮想マシンやサーバなどとの間で送受信する。このため、１つのデータセンタ中の複数の仮想マシンの間での通信が発生することがある。さらに、データセンタＡに設置されているサーバで動作している仮想マシンが、データセンタＡとは異なるデータセンタＢに設置されているサーバで動作する仮想マシンと通信する場合もある。
【０００３】
関連する技術として、仮想マシンがネットワークセグメントを越えて物理サーバ間を移動できるようにする方法が提案されている。この方法を用いて空調や照明などの設備が共通する物理サーバに優先的に仮想マシンを配置することにより、効率的に電力消費を削減することが提案されている。さらに、異なる物理マシンで実行されている２つの仮想マシンの間で一定以上の通信量を伴う通信の回数が閾値を越えたとき、これらの２つの仮想マシンが同じ物理マシンで実行されるように配置を決定する方法も提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２６６９９号公報
【特許文献２】特開２０１０−１４０１３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
クラウドコンピューティングの普及に伴い、データセンタ内で送受信されるデータ量やデータセンタ間で送受信されるデータ量が急増してきているため、通信量の増大に対応できるようなシステムが求められている。しかし、特定の物理サーバに優先的に仮想サーバを配置する方法では、データセンタ内で発生する通信について考慮していない。このため、仮想サーバが複数の物理サーバに分けて配置された場合、仮想サーバの配置によっては、物理サーバを結ぶネットワークを経由するデータの量が多くなることや、送信元と宛先の間を中継する中継装置の数が多くなることがある。このような場合、データセンタ内の回線を効率的に利用できなくなってしまう。また、一定以上の通信量を伴う通信の回数が閾値を越えた２つの仮想マシンが同じ物理マシンで実行されるように配置を決定する方法でも、仮想サーバの配置を変更するために発生する通信については考慮されていない。このため、仮想サーバを移動させるための処理が重すぎて、かえってデータセンタ内の通信を圧迫してしまうおそれもある。
【０００６】
本発明は、データセンタ内の回線を効率的に利用できる通信方法を提案することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態に係る通信装置は、受信部、相関度算出部、候補算出部、移動負荷算出部、および、送信部を備える。受信部は、複数のサーバを備えるデータセンタで動作する複数の仮想マシンの各々について、単位時間に送受信されるデータの量である通信量を前記データの送信元と宛先に関連付けた観測結果を受信する。相関度算出部は、前記通信量が大きいほど前記送信元と前記宛先の間の相関度が大きくなるように相関度を算出する。候補算出部は、前記相関度が相対的に大きい仮想マシンの組み合わせを優先的に同一のサーバに配置した配置候補を算出する。移動負荷算出部は、前記複数の仮想マシンの配置を前記配置候補に合わせるための仮想マシンの移動に起因するデータの送受信が前記データセンタ中のネットワークにかける負荷の大きさである移動負荷を算出する。さらに、移動負荷算出部は、前記移動負荷が閾値以下である場合、前記配置候補と同じ配置にするために移動させる仮想マシンに、移動先のサーバを指示する移動指示メッセージを生成する。送信部は、前記移動指示メッセージを送信する。
【発明の効果】
【０００８】
データセンタ内の回線を効率的に利用できる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る通信方法の例を示す図である。
【図２】管理サーバの構成の例を示す図である。
【図３】相関度テーブルの例を示す図である。
【図４】外部トラフィック量テーブルの例を示す図である。
【図５】移動コストテーブルの例を示す図である。
【図６】サーバおよび管理サーバのハードウェア構成の例を示す図である。
【図７】データセンタ中のネットワークの例を示す図である。
【図８】ネットワーク情報の例を示す図である。
【図９】初期値データの例を示す図である。
【図１０】相関度テーブルの例を示す図である。
【図１１】仮想マシンの配置方法の例を説明する図である。
【図１２】相関度の計算結果の例を示す図である。
【図１３】相関度の計算結果の例を示す図である。
【図１４】相関度の計算結果の例を示す図である。
【図１５】仮想マシンの配置の例を示す図である。
【図１６】各サーバに配置された配置グループ同士の相関度の例を示す図である。
【図１７】配置候補の算出方法の例を説明するフローチャートである。
【図１８】仮想マシンの配置の例を示す図である。
【図１９】仮想スイッチで保持されるテーブルの例を示す。
【図２０】通知メッセージのフォーマットの例を示す図である。
【図２１】移動コストテーブルの例を示す図である。
【図２２】等価な配置候補の例を示す図である。
【図２３】得られた総移動コストの値の例を示す図である。
【図２４】移動指示メッセージのフォーマットの例を示す図である。
【図２５】データセンタの運用中の管理サーバの動作の例を説明するフローチャートである。
【図２６】非対称のネットワークの例を示す図である。
【図２７】仮想マシンＶＭ１〜ＶＭ１６の外部トラフィック量の例を示す図である。
【図２８】第２の実施形態にかかる方法での仮想マシンの配置の例を示す図である。
【図２９】仮想マシンの配置の例を示す図である。
【図３０】リンク毎トラフィックテーブルの例を示す図である。
【図３１】省電力指示メッセージのフォーマットの例を示す図である。
【図３２】省電力箇所検出部の動作の例を説明するフローチャートである。
【図３３】データセンタの運用中の管理サーバの動作の例を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
図１に、実施形態に係る通信方法の例を示す。図１の例では、データセンタに３台のサーバ１０（１０ａ〜１０ｃ）と２つのスイッチ２０（２０ａ、２０ｂ）、管理サーバ３０が含まれているものとする。サーバ１０には、複数の仮想マシンを設置することができる。ここでは、最初はサーバ１０ａに仮想マシンＶＭ１とＶＭ２が設置され、サーバ１０ｃに仮想マシンＶＭ３が設置されているものとする。各々のサーバ１０では、仮想スイッチ５（５ａ〜５ｃ）が動作する。個々の仮想スイッチ５では、接続されている仮想マシンの通信量を、データの送信元と宛先に対応付けて観測し、仮想マシンの通信の状況を管理サーバ３０に通知する。例えば、仮想スイッチ５ａは、仮想マシンＶＭ１とＶＭ２について、各々の仮想マシンが行っている通信で送受信されるデータ量を示す情報を、データの送信元と宛先に対応付けて管理サーバ３０に通知する（矢印Ａ）。同様に、仮想スイッチ５ｂおよび５ｃも、矢印ＢおよびＣに示すように、管理サーバ３０への通知を行う。
【００１１】
管理サーバ３０は、通知された情報から、仮想マシンの間の相関度を計算する。以下の説明で「相関度」は、２台の仮想マシンの間の通信量の指標とする数値であるものとし、相関度が大きいほど、２台の仮想マシンの間の通信量が多いことを示すものとする。管理サーバ３０は、相関度の大きな仮想マシン同士がなるべく同じサーバ１０に配置される場合の配置を、配置候補として算出する。従って、配置候補では、異なるサーバに配置されている仮想マシンＶＭ同士の相関度がなるべく小さくなるように調整されているともいえる。
【００１２】
次に、管理サーバ３０は、求めた配置候補どおりに仮想マシンを配置する際の仮想マシンの移動に伴って発生するデータの送受信が、データセンタ中のネットワークにかける負荷（移動負荷）を計算する。移動負荷が閾値未満であれば、管理サーバ３０は、配置候補に従って、仮想マシンを移動させる。例えば、配置候補では、サーバ１０ａに仮想マシンＶＭ１、ＶＭ２が配置され、サーバ１０ｂに仮想マシンＶＭ３が配置されるとする。移動負荷が閾値よりも小さい場合、管理サーバ３０は、矢印Ｄに示す指示メッセージを仮想マシンＶＭ３に送信することにより、仮想マシンＶＭ３をサーバ１０ｃからサーバ１０ｂに移動させる。一方、移動負荷が閾値以上であれば、管理サーバ３０は、配置候補に従って仮想マシンを移動させるために発生する負荷が大きいため、配置候補どおりに仮想マシンを配置してもネットワークの負荷を軽減できないと判断する。そこで、管理サーバ３０は仮想マシンの配置を変更しない。
【００１３】
このため、図１に示す方法を用いることにより、データセンタ内の回線が効率的に利用される。さらに、管理サーバ３０が、移動負荷を閾値と比較した上で仮想マシンの移動を行うため、仮想サーバを移動させるための処理が重すぎてデータセンタ内の通信を圧迫してしまう状況を回避することもできる。
【００１４】
＜装置構成＞
図２は、管理サーバ３０の構成の例を示す。管理サーバ３０は、受信部３１、送信部３２、移動負荷算出部４０、移動コストテーブル４１、配置設計部５０、相関度テーブル５４、外部トラフィック量テーブル５５、記憶部６０を備える。さらに、オプションとして、管理サーバ３０は、省電力箇所検出部３３を備えることもできる。
【００１５】
受信部３１はサーバ１０から送信されたデータ等を受信する。例えば、受信部３１は、各仮想マシンで行われている通信により送受信されているデータの量を特定するために用いられる情報を受信する。以下の説明では、各仮想マシンで行われている通信で送受信されているデータの量を特定するために用いられる情報を「トラフィック情報」と記載することがある。トラフィック情報には、データセンタ内で行われる通信の情報の他に、データセンタの外部に位置する外部通信装置との間で仮想マシンが行う通信（外部トラフィック）の情報が含まれる。
【００１６】
送信部３２は、管理サーバ３０からサーバ１０に向けて送信される制御情報やデータ等を送信する。例えば、送信部３２は、仮想マシンを移動させるための制御メッセージを、移動させる対象の仮想マシンが配置されているサーバ１０に向けて送信する。
【００１７】
配置設計部５０は、相関度算出部５１、候補算出部５２、外部トラフィック取得部５３を備える。相関度算出部５１は、サーバ１０から得られたトラフィック情報を用いて、２台の仮想マシンの間の相関度を計算する。仮想マシンの運用が開始される前に仮想マシンの配置を決定する場合、相関度算出部５１は、初期値データ６２に記録されているトラフィック情報を用いて相関度を計算する。相関度算出部５１の計算結果は、相関度テーブル５４に記録される。図３に相関度テーブル５４の例を示す。図３は、仮想マシンＶＭ１〜ＶＭ４の４台の仮想マシンが動作している場合に計算される相関度の例を示している。送信元の仮想マシンの番号と宛先の仮想マシンの番号が交わった欄に記載されている値が、送信元の仮想マシンと宛先の仮想マシンの間の相関度である。従って、仮想マシンＶＭ１〜ＶＭ４が動作している場合、ＶＭ１とＶＭ２の間、ＶＭ１とＶＭ３の間、ＶＭ１とＶＭ４の間、ＶＭ２とＶＭ３の間、ＶＭ２とＶＭ４の間、ＶＭ３とＶＭ４の間の双方向の通信についての１２種類の相関度が計算される。相関度の計算方法については後で詳しく説明する。
【００１８】
候補算出部５２は、相関度テーブル５４とネットワーク情報６１を用いて、配置候補を計算する。以下の記載で、配置候補は、相関度の高い仮想マシン同士をなるべく同一のサーバ１０に配置した場合の配置である。配置候補の通りに仮想マシンを配置するために行われる仮想マシンの移動に起因するネットワークへの負荷が一定以下の場合、その配置候補が仮想マシンの配置として採用され得る。ネットワーク情報６１は、データセンタ中のネットワークのトポロジーを特定するための情報である。候補算出部５２は、ネットワーク情報６１により、サーバ１０間の接続の状況を特定することができる。ネットワーク情報６１には、例えば、サーバ１０の各々が接続されているスイッチを特定する情報や同一のセグメントに含まれるサーバ１０を特定する情報、各サーバ１０についてのゲートウェイ装置からのホップ数などが含まれる。候補算出部５２は、配置候補を求めるとき、相関度の大きな仮想マシン同士がなるべく同じサーバ１０に配置されるようにし、同じサーバ１０に配置できない場合でも、できるだけ同じセグメント内のサーバ１０に配置されるようにする。候補算出部５２の動作については、後で詳しく説明する。
【００１９】
外部トラフィック取得部５３は、受信部３１を介してサーバ１０から受信したトラフィック情報から、各仮想マシンの外部トラフィック量を抽出して、得られた値を外部トラフィック量テーブル５５に記録する。以下、ネットワーク上を単位時間当たりに流れるデータ量を「トラフィック」と記載することがある。また、以下の説明では、特定の回線を１秒に流れるデータ量をｂｐｓ（Bits Per Second）で示すものとする。図４に外部トラフィック量テーブル５５の例を示す。
【００２０】
移動負荷算出部４０は、現在の仮想マシンの配置状況を記憶している。移動負荷算出部４０は、候補算出部５２で得られた配置候補と現在の仮想マシンの配置状況を比較することにより、配置候補に従って仮想マシンを配置するために移動される仮想マシンを特定する。移動負荷算出部４０は、配置候補に従って配置を変更するために移動される仮想マシンの各々について、仮想マシンの移動により発生するネットワークへの負荷を表す移動コストを計算する。移動コストの計算方法については後述する。なお、移動コストの値が高いことは、仮想マシンを移動させる際にネットワークにかかる負担が大きいことを示す。移動負荷算出部４０は得られた移動コストを移動コストテーブル４１に記録する。移動コストテーブル４１の例を図５に示す。移動負荷算出部４０は、配置候補ごとに、移動コストの総和である移動負荷（総移動コスト）を求める。さらに、移動負荷算出部４０は、予め移動閾値を記憶しており、求めた移動負荷が移動閾値未満の場合に、配置候補どおりに仮想マシンを配置することを決定する。なお、移動負荷算出部４０は、移動負荷が移動閾値以下の場合に、配置候補を採用するように設定されても良い。なお、移動閾値は、配置候補に沿って仮想マシンの配置を変更することにより減らすことができるネットワーク中のトラフィックが、仮想マシンを移動することによって発生するトラフィックよりも大きくなる値に設定されるものとする。
【００２１】
省電力箇所検出部３３は、仮想マシンが配置されていないサーバ１０を、省電力モードに設定する対象として検出する。以下の説明では、仮想マシンが配置されていないサーバ１０を「省電力サーバ」と記載することがある。また、省電力箇所検出部３３は、いずれのサーバ１０にもデータの中継を行っていないスイッチ２０も、電力消費を抑える対象として検出する。省電力箇所検出部３３は、省電力サーバやデータを中継していないスイッチ２０の電力消費の設定を省電力モードにすることを要求する省電力指示メッセージを生成する。送信部３２は、省電力指示メッセージを宛先に向けて送信する。なお、省電力モードは、消費電力量を低減することができる任意のモードとすることができる。例えば、省電力モードはスリープモード、休止モードなどであっても良い。また、DVS(Dynamic Voltage Scaling)/ALR(Adaptive Link Rate)機能を持つサーバ１０やスイッチ２０において、トラフィックに応じてパラメータ制御を行うことにより、消費電力を低減させた状態も、省電力モードに含まれる。
【００２２】
記憶部６０は、ネットワーク情報６１と初期値データ６２を格納する他、管理サーバ３０の処理で得られたデータなどを適宜、記憶する。また、現在の仮想マシンの配置状況が記憶部６０に記録されていても良く、その場合、移動負荷算出部４０は、移動コストの計算の際に、配置状況を記憶部６０から取得する。
【００２３】
図６は、サーバ１０および管理サーバ３０のハードウェア構成の例を示す。サーバ１０と管理サーバ３０のいずれも、Central Processing Unit（ＣＰＵ）７１、メモリ７２、入力装置７３、出力装置７４、バス７５、外部記憶装置７６、媒体駆動装置７７、ネットワーク接続装置７９を備える。例えば、サーバ１０と管理サーバ３０のいずれもコンピュータにより実現される場合がある。
【００２４】
管理サーバ３０では、ＣＰＵ７１は、プログラムを実行することにより、移動負荷算出部４０、配置設計部５０、省電力箇所検出部３３として動作する。メモリ７２は、記憶部６０として動作する他、移動コストテーブル４１、相関度テーブル５４、外部トラフィック量テーブル５５を格納する。また、管理サーバ３０は、ネットワーク情報６１や初期値データ６２などのデータを、ネットワーク８０もしくは可搬記憶媒体７８から取得することもできる。ネットワーク接続装置７９は、受信部３１および送信部３２として動作する。
【００２５】
一方、サーバ１０では、ＣＰＵ７１は仮想スイッチ５や仮想マシンとして動作する。また、ネットワーク接続装置７９は、他のサーバ１０や管理サーバ３０との間で通信を行う際のインタフェースとして動作する。
【００２６】
入力装置７３は、例えば、ボタン、キーボードやマウスなどであり、オペレータは、入力装置７３を用いて管理サーバ３０にネットワーク情報６１や初期値データ６２を入力できる。出力装置７４は、ディスプレイなどとして実現される。バス７５は、ＣＰＵ７１、メモリ７２、入力装置７３、出力装置７４、外部記憶装置７６、媒体駆動装置７７、ネットワーク接続装置７９の間を、相互にデータの受け渡しが行えるように接続する。外部記憶装置７６は、プログラムやデータなどを格納し、適宜、格納している情報をＣＰＵ７１などに提供する。媒体駆動装置７７は、メモリ７２や外部記憶装置７６のデータを可搬記憶媒体７８に出力することができ、また、可搬記憶媒体７８からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体７８は、フロッピイディスク、Magneto-Optical（ＭＯ）ディスク、Compact Disc Recordable（ＣＤ−Ｒ）やDigital Versatile Disk Recordable（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。
【００２７】
＜第１の実施形態＞
図７は、データセンタ中のネットワークの例を示す。図７に示すネットワークには、ＳＷ１〜ＳＷ３の３台のスイッチ２０と、ＳＶ１〜ＳＶ４の４台のサーバ１０が含まれている。ＳＶ１とＳＶ２はＳＷ１に接続されており、ＳＶ３とＳＶ４はＳＷ２に接続されている。さらに、ＳＷ３は、ＳＷ１、ＳＷ２、ゲートウェイ（ＧＷ）に接続されているものとする。
【００２８】
図８は、ネットワーク情報６１の例を示す。図８は、図７のネットワークに含まれている管理サーバ３０が保持するネットワーク情報６１の例を示している。ネットワーク情報６１は、各サーバ１０について、ゲートウェイを起点としたときのホップ数とゲートウェイからサーバ１０に至るまでに経由するスイッチ２０が記録されている。候補算出部５２は、例えば、ＳＶ１とＳＶ２のように、経由するスイッチ２０の組み合わせが一致するサーバ１０同士を、同一のセグメントに位置するサーバ１０同士であると認識することができる。さらに、ネットワーク情報６１には、各サーバ１０で動作できる仮想マシンの最大数（配置最大値）や、各サーバ１０で動作する仮想スイッチなどの情報も含まれる。図８の例では、ＳＶ１〜ＳＶ４のいずれのサーバ１０でも、４台までの仮想マシンを配置することができる。さらに、ネットワーク情報６１には、各サーバ１０に割り当てられたアドレス情報が含まれていても良い。
【００２９】
以下、図７で示すネットワークにおいて第１の実施形態で行われる動作を、運用開始前の配置の決定が行われる場合の動作、運用状況の監視、配置候補の再計算と仮想マシンの配置を変更するために行われる動作に分けて説明する。以下の例では、ＶＭ１〜ＶＭ１６の１６台の仮想マシンが配置される場合について説明する。
【００３０】
〔運用開始前の配置の決定〕
まず、相関度算出部５１が、初期値データ６２に含まれているトラフィック情報を用いて、仮想マシン同士の相関度を求める。相関度Ｐは次式で求められるものとする。
Ｐ＝ａ×ｘ＋ｂ×ｙ＋ｃ×ｚ  
ここで、ａ、ｂ、ｃは係数であり、相関度算出部５１に予め記憶されている値であるものとする。また、ｘは帯域パラメータ、ｙは頻度パラメータ、ｚは継続時間パラメータである。帯域パラメータ（ｘ）は、個々の仮想マシンで行われる通信に使用される帯域（ｂｐｓ）Ｘの値を、通信に使用される帯域の最大値Ｘｍａｘで除算することにより正規化した値である。すなわち、ｘ＝Ｘ／Ｘｍａｘであり、ｘは０〜１の間の値をとる。
【００３１】
ｙは個々の通信について単位時間あたりに発生する回数Ｙを求め、得られたＹの最大値（Ｙｍａｘ）でＹを除算することにより正規化された値（ｙ＝Ｙ／Ｙｍａｘ）である。また、ｚは、個々の通信について継続時間の平均値Ｚを求め、得られたＺの最大値（Ｚｍａｘ）でＺを除算することにより正規化された値（ｚ＝Ｚ／Ｚｍａｘ）である。従って、ｙとｚも０〜１の値をとる。仮想マシンの運用が開始される前のｘ、ｙ、ｚの値は、オペレータが経験則に基づいて計算で見積ってもよく、また、簡単な予備実験で得られた実測値に基づいて算出してもよい。初期値データ６２の例を図９に示す。図９のテーブルには、送信元の仮想マシン（ＳｒｃＶＭ）と宛先の仮想マシン（ＤｓｔＶＭ）に対応付けて、ｘ、ｙ、ｚのパラメータが記録されている。
【００３２】
係数のａ、ｂ、ｃの値は、優先したいパラメータの影響を大きくできるように、実装に応じて、もしくは、経験則に基づいて、オペレータが任意に設定することができる。例えば、通信に使用される帯域が及ぼす影響を重視して相関度を求める場合、ａ＝１，ｂ＝０，ｃ＝０に設定される場合がある。また、各パラメータを例えば金銭的価値に与える影響の大きさを反映する値に設定することもできる。なお、値が０である係数との積を計算されているパラメータの大きさは、相関度の計算に考慮されていないことになる。
【００３３】
例えば、通信帯域の係数（ａ）、通信の発生頻度の係数（ｂ）、通信の継続時間の係数（ｃ）の値がそれぞれ、ａ＝６、ｂ＝５、ｃ＝５であるとする。この場合に、相関度算出部５１は、ＶＭ１とＶＭ２の相関度Ｐ２−１を
Ｐ２−１＝ａ×ｘ＋ｂ×ｙ＋ｃ×ｚ＝６×１＋５×０．８＋５×１＝１５
と計算する。なお、Ｐの添え字の最初の数字は送信元の仮想マシンの番号であり、ハイフンの後の数字は宛先の仮想マシンの番号を表すものとする。同様に相関度算出部５１は、他の仮想マシンの組み合わせについても相関度を計算し、相関度テーブル５４に記録する。相関度テーブル５４の例を図１０に示す。
【００３４】
次に、配置候補の算出方法の例を説明する。相関度の計算が終わると、候補算出部５２は、以下の手順により配置候補を算出できる。運用前は、仮想マシンの配置が行われていないので、仮想マシンの移動は発生しない。このため、算出された配置候補に沿って仮想マシンが配置される。
【００３５】
（１）候補算出部５２は、相関度テーブル５４を参照して、相関度が最も大きい仮想マシンの組み合わせを抽出し、ネットワーク中の１つのサーバ１０に配置する。例えば、図１０の例では、ＶＭ１とＶＭ２の間の相関度はＰ１−２＝１５であり、他の仮想マシンの組み合わせについて得られた相関度よりも大きい。そこで、候補算出部５２は、ＶＭ１とＶＭ２をＳＶ１〜ＳＶ４から選択した１つのサーバ１０に配置する。図１１（ａ）の例では、ＶＭ１とＶＭ２がＳＶ１に配置されている。
【００３６】
（２）候補算出部５２は、手順（１）で配置した２つの仮想マシンを１つのグループ（配置グループ）とみなし、配置グループと配置されていない仮想マシンとの間の相関度を求める。ここで、ある仮想マシンを宛先としたときの配置グループと仮想マシン間の相関度は、配置グループに含まれている仮想マシンの各々が送信元として宛先の仮想マシンに通信するときの相関度の総和である。一方、ある仮想マシンを送信元としたときの配置グループと仮想マシン間の相関度は、送信元の仮想マシンが配置グループに含まれている仮想マシンの各々に通信するときの相関度の総和である。例えば、図１１（ａ）の場合は、ＶＭ１とＶＭ２が配置グループである。そこで、候補算出部５２は、配置グループに含まれている仮想マシンを送信元とし、ＶＭ３を宛先とした場合のＶＭ３と配置グループの間の相関度は、図１０の値を用いて、Ｐ１−３＋Ｐ２−３＝１４＋１４＝２８とする。図１２に配置グループと未配置の仮想マシンとの間の相関度の計算結果の例を示す。図１２の例では、配置グループにＶＭ１とＶＭ２が含まれている。
【００３７】
（３）候補算出部５２は、配置グループが配置されているサーバ１０に新たな仮想マシンを配置できる場合、配置グループとの間の相関度が最も大きな仮想マシンを、配置グループと同じサーバ１０に配置する。この例では、ＳＶ１には４つの仮想マシンを配置することができるので、候補算出部５２は図１１（ｂ）に示すように、ＶＭ３をＳＶ１に配置する。
【００３８】
（４）新たな仮想マシンを配置すると、配置された仮想マシンを配置グループに加えて、配置グループと未配置の仮想マシンとの間の相関度を求める。計算方法は、手順（２）と同様である。例えば、ＶＭ４を宛先とした場合のＶＭ４と配置グループの間の相関度は、図１０の値を用いて、Ｐ１−４＋Ｐ２−４＋Ｐ３−４＝１３＋１３＋１３＝３９となる。図１３（ａ）に配置グループと配置されていない仮想マシンとの間の相関度の計算結果の例を示す。
【００３９】
（５）配置グループが配置されているサーバ１０に仮想マシンを配置できなくなるまで、手順（３）（４）の処理と同様の処理が繰り返される。ここでは、ＶＭ４がＳＶ１に配置される。さらに、配置グループと配置されていない仮想マシンとの間の相関度は図１３（ｂ）のとおりに求められる。
【００４０】
（６）配置グループが配置されているサーバ１０に仮想マシンを配置できなくなると、候補算出部５２は、配置グループとの相関度が最も大きい仮想マシンを、配置グループが配置されているサーバからのホップ数がなるべく小さいサーバに配置する。このとき、候補算出部５２は、ネットワーク情報６１を確認し、配置グループが配置されているサーバ１０と同じセグメントに配置されているサーバ１０に優先的に仮想マシンを配置する。図１３（ｂ）の例では、配置グループと仮想マシンＶＭ５の相関度が最も大きい。さらに、図７、図８に示すように、配置グループが配置されているサーバＳＶ１と同じセグメントにサーバＳＶ２があり、サーバＳＶ２には仮想マシンの配置が可能である。そこで、候補算出部５２は、仮想マシンＶＭ５をサーバＳＶ２に配置する。
【００４１】
（７）候補算出部５２は、手順（６）で配置した仮想マシンとの相関度が最も大きい仮想マシンを、手順（６）で仮想マシンを配置したサーバ１０に配置する。図１３（ｂ）の例では、配置されていない仮想マシンの中で、ＶＭ５との相関度が最大の仮想マシンはＶＭ６である。そこで、候補算出部５２は、仮想マシンＶＭ６をサーバＳＶ２に配置する。候補算出部５２は、手順（２）と同様にサーバＳＶ２に配置された配置グループと未配置の仮想マシンとの間の相関度を求める。また、サーバＳＶ１に配置されている配置グループとサーバＳＶ２に配置されている配置グループの間の相関度も求める。サーバＳＶ１に配置されている配置グループが送信元、サーバＳＶ２に配置されている配置グループが宛先である場合の両者の間の相関度は、
Ｐ１−５＋Ｐ２−５＋Ｐ３−５＋Ｐ４−５＋Ｐ１−６＋Ｐ２−６＋Ｐ３−６＋Ｐ４−６
＝１２＋１２＋１２＋１２＋１１＋１１＋１１＋１１＝９２
で表される。
【００４２】
（８）候補算出部５２は、さらに、仮想マシンを配置しているサーバ１０に仮想マシンを配置できなくなるまで、手順（３）（４）の処理と同様の処理を繰り返す。また、仮想マシンを配置しているサーバ１０に仮想マシンを配置できなくなると手順（６）、（７）と同様の処理を行う。その結果、
サーバＳＶ１に配置された仮想マシン：ＶＭ１〜ＶＭ４
サーバＳＶ２に配置された仮想マシン：ＶＭ５〜ＶＭ８
サーバＳＶ３に配置された仮想マシン：ＶＭ９〜ＶＭ１２
サーバＳＶ４に配置された仮想マシン：ＶＭ１３〜ＶＭ１６
となる。仮想マシンＶＭ１〜ＶＭ１６の配置を図１５に示す。このとき、各サーバに配置された配置グループ同士の相関度は図１６に示すようになる。図１５と図１６から、本実施形態にかかる方法によって、相関度の高い配置グループ同士がなるべく同一セグメントに配置されるように配置が行われる。
【００４３】
手順（１）〜（８）で説明した方法は配置候補の算出方法の１つであり、配置候補の算出方法は実装に応じて変更される場合がある。例えば、手順（１）〜（８）の説明では、外部トラフィック量を考慮していないが、相関度が同じ仮想マシンの組み合わせが複数ある場合は、外部トラフィック量の多いものを優先的に配置することもできる。この場合、外部へのトラフィック量を予めオペレータが予測して初期値データ６２に入力しておくものとする。
【００４４】
図１７は、配置候補の算出方法の例を説明するフローチャートである。図１７の例では、新たな仮想マシンを追加することができる配置グループを「基準グループ」と記載している。また、図１７に示す方法では、候補算出部５２は、任意の方法で選択された仮想マシンの１つを最初の基準グループのメンバーとして、基準グループとの相関度が大きい仮想マシンから順に配置を決定する。なお、図１７の例では、スイッチ２０の番号は、サーバ１０に接続されているスイッチ２０のほうが、サーバ１０に接続されずにスイッチ２０同士を接続しているスイッチ２０よりも小さな番号になるように設定されている場合に用いられる方法を示している。
【００４５】
まず、候補算出部５２は、基準グループのメンバーと基準スイッチを決定し、基準グループを基準スイッチに接続されているサーバに配置する（ステップＳ１）。ここでは、候補算出部５２は、付された番号が最小の仮想マシンを最初の基準グループのメンバーとし、付された番号が最小のスイッチ２０を基準スイッチとする。候補算出部５２は、基準グループとの間の相関度（Ｐ）が最も大きい仮想マシンを選択する（ステップＳ２）。基準グループとの間の相関度が最大の仮想マシンが複数存在する場合、候補算出部５２は、外部トラフィック量が多い仮想マシンを選択する（ステップＳ３でＹｅｓ、ステップＳ４）。一方、基準グループとの間の相関度が最大の仮想マシンが１つの場合、ステップＳ４の処理は行われない（ステップＳ３でＮｏ）。候補算出部５２は、選択した仮想マシンを基準スイッチの配下のサーバ１０に配置する（ステップＳ５）。このとき、候補算出部５２は、なるべく、基準グループが配置されているサーバ１０に、選択した仮想マシンを配置する。候補算出部５２は、配置が終わっていない仮想マシンがあるかを確認し、全ての仮想マシンの配置が終わった場合、処理を終了する（ステップＳ６でＮｏ）。
【００４６】
まだ配置されていない仮想マシンがある場合、候補算出部５２は、基準スイッチに接続されているサーバ１０には最大数の仮想マシンが配置済みであるかを確認する（ステップＳ７）。最大数の仮想マシンが配置済みである場合、候補算出部５２は、現在の基準スイッチに付された番号より１つ大きな番号が付されたスイッチを新たな基準スイッチにする（ステップＳ７でＹｅｓ、ステップＳ８）。ここで、候補算出部５２は、サーバに接続されているスイッチの最大数よりも基準スイッチの番号が大きい場合は、エラーであると判定して、処理を終了する（ステップＳ９でＹｅｓ、ステップＳ１０）。一方、基準スイッチの番号がサーバに接続されているスイッチの最大数以下の場合、候補算出部５２は、基準グループを更新してステップＳ２以降の処理を繰り返す（ステップＳ９でＮｏ、ステップＳ１１）。ステップＳ７において、最大数の仮想マシンが配置されていないと判定された場合も、候補算出部５２は、基準グループを更新してステップＳ２以降の処理を繰り返す（ステップＳ７でＮｏ、ステップＳ１１）。
【００４７】
〔運用状況の監視と移動コストの計算〕
図１８は、仮想マシンの配置の例を示す。以下、運用中の仮想マシンの配置が図１８のとおりである場合を例として、管理サーバ３０が個々のサーバ１０から通信の状況を把握するために行う動作の例を説明する。図１８の例では、仮想マシンの配置は、
サーバＳＶ１に配置された仮想マシン：ＶＭ１、ＶＭ２、ＶＭ７、ＶＭ８
サーバＳＶ２に配置された仮想マシン：ＶＭ３、ＶＭ４、ＶＭ５、ＶＭ６
サーバＳＶ３に配置された仮想マシン：ＶＭ９、ＶＭ１０、ＶＭ１３、ＶＭ１４
サーバＳＶ４に配置された仮想マシン：ＶＭ１１、ＶＭ１２、ＶＭ１５、ＶＭ１６
となっている。
【００４８】
各仮想スイッチ５（５ａ〜５ｄ）は、その仮想スイッチ５に接続されている仮想マシンで行われている通信について、通信帯域（Ｘ）、通信の発生頻度（Ｙ）、通信の平均継続時間（Ｚ）を、データの送信元と宛先の組み合わせごとに求める。さらに、仮想スイッチ５は、接続されている個々の仮想マシンについて、仮想マシンを他のサーバ１０に移動する場合に発生するトラフィック量（Ｕ）を求める。以下の記載では、仮想マシンを移動する場合に発生するトラフィック量のことを「移動トラフィック量」と記載することがある。移動トラフィック量は、仮想マシンが占有するメモリ量であり、仮想マシンの移動に伴って移動されるデータの量を表す。なお、仮想マシンの移動は、任意のライブマイグレーション技術が用いられても良く、仮想スイッチ５は、使用されるライブマイグレーションの方法に応じて、移動トラフィック量を計算するものとする。さらに、仮想スイッチ５は、個々の仮想マシンについて存続時間（Ｖ）も予測する。存続時間（Ｖ）の計算方法は実装に応じて決定される。例えば、存続時間（Ｖ）は、通信の平均時間の半分の時間として計算される場合がある。
【００４９】
図１８の例では、仮想スイッチ５ａは、仮想マシンＶＭ１、ＶＭ２、ＶＭ７、ＶＭ８の各々で行われている通信や、ＶＭ１、ＶＭ２、ＶＭ７、ＶＭ８の各々が移動する場合に発生する移動トラフィックなどを求める。同様に、仮想スイッチ５ｂは、サーバＳＶ２に配置されている仮想マシンＶＭ３、ＶＭ４、ＶＭ５、ＶＭ６に関する値を求め、仮想スイッチ５ｃは、サーバＳＶ３に配置されている仮想マシンＶＭ９、ＶＭ１０、ＶＭ１３、ＶＭ１４に関する値を求める。また、仮想スイッチ５ｄは、サーバＳＶ４に配置されている仮想マシンＶＭ１１、ＶＭ１２、ＶＭ１５、ＶＭ１６に関する値を求める。なお、各仮想スイッチ５は、宛先アドレスがゲートウェイのポートに設定されている通信を、外部へのトラフィックとして観測するものとする。
【００５０】
図１９（ａ）と図１９（ｂ）に、仮想スイッチ５ａで保持されるテーブルの例を示す。仮想スイッチ５は、通信帯域、通信の発生頻度、通信の平均継続時間などのトラフィック情報や、仮想マシンの移動トラフィック、存続時間などの情報を、管理サーバ３０に通知する。
【００５１】
図２０に、トラフィック情報や仮想マシンの移動トラフィック、存続時間などの情報の通知に用いられる通知メッセージのフォーマットの例を示す。図２０は、通信帯域（Ｘ）を通知するために、各サーバ１０から管理サーバ３０宛に送信されるメッセージの例を示している。通知メッセージには、宛先アドレスフィールド、送信元アドレスフィールド、データ種別フィールド、データ数フィールド、データフィールドが含まれる。宛先ＩＰ（Internet Protocol）アドレスは管理サーバ３０のアドレスであり、送信元ＩＰアドレスは、メッセージを送信するサーバ１０のアドレスである。以下の説明では、管理サーバ３０のＩＰアドレスは１９２．１６８．１．１、サーバＳＶ１のＩＰアドレスは１９２．１６８．１．１００であるものとする。データ種別フィールドには、そのメッセージにより通知される情報を特定する情報が記録される。この例では、通信帯域が通知されているので、Ｘが記録される。なお、複数の種類のデータが１つのメッセージで送信される場合、データ種別フィールドには送受信されるデータの種別と、データが記録されている位置などを特定するための情報を含むこともできるものとする。
【００５２】
データ数フィールドには、データフィールド中に格納されているデータの数が記録される。この例では８個のデータがデータフィールドに含まれることを示している。各データはデータの宛先（DstVM）の仮想マシンの識別子、データの送信元（SrcVM）の仮想マシンの識別子に対応付けられている。この例では、宛先仮想マシンと送信元仮想マシンの識別子に、宛先と送信元の間で送受信されるデータのトラフィック（Mbps）が対応付けられている。例えば、データ＃１は、仮想マシンＶＭ２からＶＭ１への通信では５Ｍｂｐｓの帯域が使用されていることを示している。さらに、仮想スイッチ５は、同様の通知メッセージを用いて、その他の情報も管理サーバ３０に送信することができる。
【００５３】
管理サーバ３０の受信部３１は、サーバ１０から通知メッセージを受信すると、移動負荷算出部４０に出力する。移動負荷算出部４０は、通知メッセージ中のデータ種別フィールドの内容を確認する。移動負荷算出部４０は、通知メッセージ中に仮想マシンの移動トラフィック、存続時間など、仮想マシンの移動に関連する情報が含まれている場合、それらの情報を抽出し、仮想マシンの識別子に関連付けて記憶する。
【００５４】
受信部３１から入力された通知メッセージ中に、通信帯域などの各通信についての情報が含まれている場合、移動負荷算出部４０は、通知メッセージを相関度算出部５１と外部トラフィック取得部５３に出力する。相関度算出部５１は、移動負荷算出部４０から入力された通知メッセージに含まれているデータのうち、送信元と宛先がいずれもデータセンタ内の仮想マシンである通信に関するデータを取得する。相関度算出部５１は、通信帯域、通信の発生頻度、通信の平均継続時間などの個々の通信に関する情報を、個々の通信の送信元と宛先の組み合わせに対応付けて記憶する。外部トラフィック取得部５３は、データの送信元と宛先のいずれかが外部通信装置もしくはゲートウェイのポートである通信に関するデータを取得する。外部トラフィック取得部５３は、取得したデータを仮想マシンに関連付けて、外部トラフィック量テーブル５５に記録する。
【００５５】
ここで説明したような運用状況の確認、通知などは、例えば、１０分ごとや１時間ごとなどの一定期間ごとに行われるものとする。なお、運用状況の確認の頻度は、管理サーバ３０やサーバ１０の処理負荷やネットワークの負荷などに応じて任意に設定されるものとする。
【００５６】
次に、移動コストの計算について説明する。「移動コスト」は、ある仮想マシンについて、現在配置されているサーバ１０から他のサーバ１０へのライブマイグレーションを行うときに、ネットワークにかかる負荷である。移動コストが大きいことは、その仮想マシンを移動させる際に用いられるトラフィック量が大きいことや、金銭的コストがかかるなど、仮想マシンの移動に起因する負担が大きいことを示す。移動負荷算出部４０は、通知メッセージに含まれている情報を用いて、各仮想マシンについて、次式から移動コストＱを計算する。
Ｑ＝ｄ×ｕ＋ｅ×ｖ
ここで、ｄ、ｅは係数であり、移動負荷算出部４０に記憶されているものとする。また、ｕは移動トラフィックパラメータ、ｖは残存時間パラメータである。移動トラフィックパラメータ（ｕ）は、各仮想マシンについて移動する場合に発生する移動トラフィック量（ｂｐｓ）Ｕの値を、移動トラフィック量の最大値Ｕｍａｘで除算することにより正規化した値である。すなわち、ｕ＝Ｕ／Ｕｍａｘであり、ｕは０〜１の間の値をとる。また、ｖは、個々の仮想マシンについて残存時間の平均値Ｖを求め、得られた最大値（Ｖｍａｘ）でＶを除算することにより正規化された値（ｖ＝Ｖ／Ｖｍａｘ）である。従って、ｖも０〜１の値をとる。係数のｄ、ｅの値は、優先したいパラメータの影響を大きくできるように、実装に応じて、もしくは、経験則に基づいて、オペレータが任意に設定することができる。例えば、ライブマイグレーションに使用される帯域が及ぼす影響を重視して相関度を求める場合、ｄ＝１，ｅ＝０に設定される場合がある。また、各パラメータを例えば金銭的価値に与える影響の大きさを反映する値に設定することもできる。なお、値が０である係数との積が求められているパラメータは、移動コストの計算に考慮されていないことになる。移動負荷算出部４０は、算出した移動コストを移動コストテーブル４１に記録する。図２１に、移動コストテーブル４１の例を示す。
【００５７】
〔配置候補の再計算と運用中の仮想マシンの配置の変更〕
通知メッセージにより新たな運用状況が通知されると、相関度算出部５１は、最新の情報に基づいて相関度を計算しなおす。相関度の計算方法は、前述のとおりである。相関度算出部５１は、最新の相関度の値を用いて相関度テーブル５４を更新する。また、移動負荷算出部４０も新たなデータが通知メッセージにより通知されれば、移動コストを再計算して、移動コストテーブル４１を更新する。
【００５８】
以下、運用中の仮想マシンの配置は図１８のとおりであるが、仮想マシンＶＭ１〜ＶＭ１６の間の通信状況から計算された最新の相関度は図１０に示すとおりである場合に行われる動作の例を説明する。すなわち、相関度テーブル５４は図１０のように更新されたものとする。また、最新の移動コストテーブル４１は、図２１のとおりであるものとする。
【００５９】
相関度テーブル５４が更新されると、候補算出部５２は、新たな配置候補を算出する。配置候補の計算方法は、手順（１）〜（８）で説明した方法と同様である。ただし、運用中に配置候補が再計算された場合は、運用前に配置候補が計算された場合とは異なり、すでに仮想マシンが配置されているため、仮想マシンの移動が発生する。そこで、管理サーバ３０は、計算した結果を用いて仮想マシンを配置する前に、配置候補に沿って仮想マシンを配置するために発生する通信がネットワークにかける負担を以下の手順により見積もり、採用する配置を決定する。
【００６０】
（１１）候補算出部５２は、計算した配置候補と、ネットワーク情報６１から、データセンタ内のネットワークを効率化できる可能性がある全ての配置候補を求める。例えば、候補算出部５２は、前述の手順（１）〜（８）により、図１５に示す配置候補を計算したとする。すると、候補算出部５２は、ネットワーク情報６１から、ネットワークの対称性を考慮すると、計算した配置候補と等価な配置候補があるかを確認する。ここでは、データセンタ内のネットワークは図７と図８で示すとおりであるため、配置される仮想マシンの組み合わせ（配置グループ）を、次の３種類の方法で交換しても等価の配置候補が得られる。
（ａ）サーバＳＶ１とサーバＳＶ２での交換
（ｂ）サーバＳＶ３とサーバＳＶ４での交換
（ｃ）サーバＳＶ１とサーバＳＶ２の組み合わせと、サーバＳＶ３とサーバＳＶ４の組み合わせでの交換
従って、２の３乗である８通りの等価な配置候補が考えられる。
【００６１】
図２２は、等価な配置候補の例を示す図である。図２２のパターン１は、図１５に示す計算結果である。パターン２では、パターン１でサーバＳＶ１に配置されている仮想マシンの組み合わせがサーバＳＶ２に配置され、パターン１でサーバＳＶ２に配置されている仮想マシンの組み合わせがサーバＳＶ１に配置されている。パターン３では、パターン１でサーバＳＶ３に配置されている仮想マシンの組み合わせがサーバＳＶ４に配置され、パターン１でサーバＳＶ４に配置されている仮想マシンの組み合わせがサーバＳＶ３に配置されている。パターン４では、サーバＳＶ１、ＳＶ２ではパターン２と同様に仮想マシンが配置され、サーバＳＶ３、ＳＶ４ではパターン３と同様に仮想マシンが配置されている。
【００６２】
パターン５では、パターン１でサーバＳＶ１、ＳＶ２に配置されている仮想マシンがサーバＳＶ３、ＳＶ４に配置され、パターン１でサーバＳＶ３、ＳＶ４に配置されている仮想マシンがサーバＳＶ１、ＳＶ２に配置されている。同様に、パターン６では、パターン２でサーバＳＶ１、ＳＶ２に配置されている仮想マシンがサーバＳＶ３、ＳＶ４に配置され、パターン２でサーバＳＶ３、ＳＶ４に配置されている仮想マシンがサーバＳＶ１、ＳＶ２に配置されている。パターン７では、パターン３でサーバＳＶ１、ＳＶ２に配置されている仮想マシンがサーバＳＶ３、ＳＶ４に配置され、パターン３でサーバＳＶ３、ＳＶ４に配置されている仮想マシンがサーバＳＶ１、ＳＶ２に配置されている。パターン８では、パターン４でサーバＳＶ１、ＳＶ２に配置されている仮想マシンがサーバＳＶ３、ＳＶ４に配置され、パターン４でサーバＳＶ３、ＳＶ４に配置されている仮想マシンがサーバＳＶ１、ＳＶ２に配置されている。
【００６３】
（１２）候補算出部５２は、手順（１１）で得られた全ての配置候補を移動負荷算出部４０に出力する。移動負荷算出部４０は、入力された各配置候補と、現在の配置を比較して、移動する対象の仮想マシンを特定する。さらに、候補算出部５２は、移動する仮想マシンの各々について求められた移動コストの総和（総移動コスト）を求める。
【００６４】
例えば、図１８に示す配置からパターン１に変更する場合、移動する仮想マシンは、ＶＭ３、ＶＭ４、ＶＭ７、ＶＭ８、ＶＭ１１、ＶＭ１２、ＶＭ１３、ＶＭ１４である。そこで、図１８に示す配置からパターン１に変更する場合の総移動コストは、
ＱＶＭ３＋ＱＶＭ４＋ＱＶＭ７＋ＱＶＭ８＋ＱＶＭ１１＋ＱＶＭ１２＋ＱＶＭ１３＋ＱＶＭ１４
＝３＋４＋７＋８＋１１＋１２＋１３＋１４＝７２
となる。
【００６５】
配置候補がパターン２であれば、移動する仮想マシンは、ＶＭ１、ＶＭ２、ＶＭ５、ＶＭ６、ＶＭ１１、ＶＭ１２、ＶＭ１３、ＶＭ１４である。そこで、図１８に示す配置からパターン２に変更する場合の総移動コストは、
ＱＶＭ１＋ＱＶＭ２＋ＱＶＭ５＋ＱＶＭ６＋ＱＶＭ１１＋ＱＶＭ１２＋ＱＶＭ１３＋ＱＶＭ１４
＝１＋２＋５＋６＋１１＋１２＋１３＋１４＝６４
である。候補算出部５２は、他のパターンについても同様の方法により総移動コストを求める。図１８に示す配置からパターン１〜８に変更する場合に発生する総移動コストを求めて得られた値の例を図２３に示す。この例では、総移動コストは、仮想マシンの移動に伴って発生するデータの送受信が、データセンタ中のネットワークにかける負荷の指標である。従って、この例では、総移動コストは、移動負荷の指標であるといえる。
【００６６】
（１３）移動負荷算出部４０は、各配置候補について総移動コストを算出すると、総移動コストが最小であるパターンを認識する。総移動コストが最小である配置候補の総移動コストが予め記憶している移動閾値以下であれば、移動負荷算出部４０は、総移動コストが最小の配置候補に従って仮想マシンを配置することを決定する。図２３の例では、パターン２のときの総移動コストが最小値となっている。そこで、移動負荷算出部４０は、パターン２のときの総移動コストが移動閾値以下であれば、パターン２に従って仮想マシンを配置する。ここで移動閾値が８０である場合、パターン２での総移動コスト＝６４は移動閾値より小さい。そこで、移動負荷算出部４０は、パターン２に示す配置に仮想マシンを配置することを決定する。
【００６７】
（１４）移動負荷算出部４０は、配置を変更する仮想マシンに対して移動先のサーバ１０を特定する移動指示メッセージを送信する。図２４に移動指示メッセージのフォーマットの例を示す。移動指示メッセージには、宛先アドレスフィールド、送信元アドレスフィールド、移動仮想マシンフィールド、移動先サーバフィールドが含まれる。宛先アドレスフィールドには、移動させる対象の仮想マシンが配置されているサーバ１０のアドレスが記録される。送信元アドレスフィールドには、管理サーバ３０のアドレスが記録される。移動仮想マシンフィールドには、移動させる対象の仮想マシンに割り振られた識別子が記録される。移動先サーバフィールドには、移動仮想マシンフィールドに記載された識別子で識別される仮想マシンの移動先のサーバ１０に対応付けられた番号が記録される。図２４は、仮想マシンＶＭ１をサーバＳＶ１からＳＶ２に移動させるときに用いられるメッセージの例である。宛先アドレスはサーバＳＶ１のアドレス（１９２．１６８．１．１００）であり、移動させる対象の仮想マシンの識別子はＶＭ１、移動先のサーバ１０はＳＶ２である。移動負荷算出部４０は、ＶＭ１の他にも、ＶＭ２、ＶＭ５、ＶＭ６、ＶＭ１１、ＶＭ１２、ＶＭ１３、ＶＭ１４に対して同様の移動指示メッセージを送信することにより、仮想マシンを移動させる。その結果、図２２のパターン２に示すように仮想マシンＶＭが配置される。
【００６８】
図２５は、データセンタの運用中の管理サーバ３０の動作の例を説明するフローチャートである。図２５の例では、相関度算出部５１はタイマを備えているものとする。相関度算出部５１は、定期割りこみタイマをスタートさせ、タイムアウトするまで待機する（ステップＳ２１、Ｓ２２）。相関度算出部５１は相関度テーブル５４を更新し、候補算出部５２は、更新された相関度テーブル５４を用いて配置候補を求める（ステップＳ２３）。このとき、候補算出部５２はネットワーク情報６１も確認し、ネットワークの対称性に基づいて等価な配置候補も求める。移動負荷算出部４０は、得られた配置候補の各々について、現在の配置パターンから変更する場合の総移動コストを算出する（ステップＳ２４）。移動負荷算出部４０は、得られた総移動コストの最小値を特定し、最小値が移動閾値以下であるかを確認する（ステップＳ２５）。最小値が移動閾値以下であれば、移動負荷算出部４０は仮想マシンの移動を行う（ステップＳ２５でＹｅｓ、ステップＳ２６）。一方、最小値が移動閾値より大きい場合、ステップＳ２１以降の処理を繰り返す（ステップＳ２５でＮｏ）。なお、図２５は一例であり、例えば、ステップＳ２５では移動閾値より小さい場合に仮想マシンの移動を行うように変形される場合もある。また、非対称のネットワークの場合、ステップＳ２３では１つの配置候補が求められ、ステップＳ２５では求められた配置候補について計算された総移動コストと移動閾値が比較される。
【００６９】
以上説明したように、本実施形態に係る方法を用いることにより、総移動コストが移動閾値以下の場合、データセンタ内の回線が効率的に利用されるように、仮想マシンの配置が変更される。従って、データセンタ内の通信が効率化される。さらに、総移動コストが移動閾値よりも大きい配置候補に沿った仮想マシンの配置が行われないため、仮想サーバを移動させるための処理が重すぎてデータセンタ内の通信を圧迫してしまう状況を回避することもできる。
【００７０】
このように、本実施形態にかかる方法が用いられるデータセンタでは、データセンタの回線を有効に活用できるため、本実施形態にかかる方法を用いないデータセンタに比べて、比較的スペックの低い機器を用いてデータセンタを構築することができる。また、本実施形態にかかる方法を用いないデータセンタに比べて、本実施形態に係るデータセンタでは、使用する機器の数を減らすことが可能な場合もありえる。従って、データセンタを設計、運用する際のコストを削減することができる。
【００７１】
＜第２の実施形態＞
第２の実施形態では、非対称のネットワークにおいて、外部トラフィック量を重視して配置候補を決定する場合の例について説明する。なお、第２の実施形態においても、配置候補が算出された後で、仮想マシンを配置候補に沿って配置するかを決定する方法は第１の実施形態と同様である。また、移動コストの計算方法や運用状況の監視方法も第１の実施形態と同様である。なお、各仮想スイッチ５は、宛先アドレスがゲートウェイのポートに設定されている通信を、外部へのトラフィックとして観測するものとする。
【００７２】
図２６は、非対称のネットワークの例を示す。データセンタ内のネットワークは、ゲートウェイを介して外部ネットワークに接続されている。ここで、外部ネットワークの例として、イントラネットやインターネットが挙げられる。図２６のネットワークには、サーバＳＶ５〜ＳＶ８の４つのサーバが含まれているものとする。スイッチＳＷ４はゲートウェイに接続されており、サーバＳＶ５にも接続されている。従って、ゲートウェイからサーバＳＶ５までのホップ数は２である。サーバＳＶ６とＳＶ７は、スイッチＳＷ５に接続されており、いずれもゲートウェイからのホップ数は３である。サーバＳＶ８は、スイッチＳＷ６に接続されており、ＳＷ４〜ＳＷ６を介してゲートウェイに接続されているので、ゲートウェイを起点にしたときのホップ数は４である。さらに、いずれのサーバにも４つまでの仮想マシンを配置することができるものとする。
【００７３】
図２７は、仮想マシンＶＭ１〜ＶＭ１６の外部トラフィック量の例を示す。本実施形態では、運用前に仮想マシンの配置を決定する段階から外部トラフィック量を用いるので、図２７に示すデータが初期値データ６２に含まれているものとする。なお、初期値データ６２は、第１の実施形態と同様に、オペレータが計算や簡易実験などで設定した値を記録することができる。候補算出部５２は、ネットワーク情報６１を参照して、データセンタの外部へのトラフィックが多い仮想マシンをゲートウェイからのホップ数の小さいサーバ１０に配置する。ここでは外部トラフィックの値が図２７に示すとおりであるので、外部トラフィックが比較的大きい仮想マシンＶＭ１３〜ＶＭ１６は、サーバＳＶ５（ホップ数２）に配置される。一方、外部トラフィックが比較的小さい仮想マシンＶＭ１〜ＶＭ４は、サーバＳＶ８（ホップ数４）に配置される。その他の仮想マシンＶＭ５〜ＶＭ１２は、サーバＳＶ６もしくはＳＶ７（ホップ数３）に配置される。
【００７４】
図２８に、第２の実施形態にかかる方法での仮想マシンの配置の例を示す。なお、ゲートウェイがネットワークの最上位の階層に置かれ、さらにゲートウェイに直接接続されているサーバ１０が含まれているネットワークでは、外部トラフィック量が最大の仮想マシンは、ゲートウェイに直接接続されているサーバ１０に配置される。
【００７５】
運用が開始された後は、第１の実施形態で述べた方法により、外部トラフィック取得部５３は、外部トラフィック量を監視して、外部トラフィック量テーブル５５を更新する。運用が開始された後は、候補算出部５２は、外部トラフィック量テーブル５５の値に基づいて配置候補を求める。候補算出部５２が求めた配置候補に配置を変更する場合の総移動コストの値が移動閾値以下の場合、配置候補に応じて仮想マシンの配置が変更される。
【００７６】
本実施形態によると、外部トラフィック量が多い仮想マシンほどゲートウェイからのホップ数の小さいサーバに配置されるため、データセンタの内部のネットワークを効率的に利用できる。さらに、総移動コストに基づいて仮想マシンを移動するかが決定されるため、仮想サーバを移動させるための処理による輻輳も避けられる。
【００７７】
＜第３の実施形態＞
本実施形態では、仮想マシンが配置されていないサーバ１０が有る場合、そのサーバ１０を省電力モードに設定することにより、データセンタ内の消費電力を低下させる方法について述べる。なお、仮想マシンを配置する方法、および、仮想マシンの配置を変更する方法は、第１もしくは第２の実施形態で説明した方法と同様である。なお、本実施形態では、管理サーバ３０は、省電力箇所検出部３３を備えるものとする。
【００７８】
仮想マシンの移動により、図２９に示すように仮想マシンが配置されたとする。また、ここで、矢印Ａ〜Ｃで示すように、以下の通信が行われているものとする。
Ａ：仮想マシンＶＭ４と外部通信装置の間の通信
Ｂ：仮想マシンＶＭ１とＶＭ３の間の通信
Ｃ；仮想マシンＶＭ１とＶＭ２の間の通信
【００７９】
省電力箇所検出部３３は、移動負荷算出部４０、相関度テーブル５４、外部トラフィック量テーブル５５、ネットワーク情報６１などにアクセスすることにより、通信が行われている箇所を特定する。省電力箇所検出部３３は特定した結果を、リンク毎トラフィックテーブルに記録する。
【００８０】
図３０は、リンク毎トラフィックテーブルの例を示す。リンク毎トラフィックテーブルは省電力箇所検出部３３に保持されている。図３０の例では、縦の欄は出力元の装置、横の欄は入力先の装置を表す。縦の欄が出力元の装置で、横の欄が入力先の装置となっているセルに、それぞれの装置の間でトラフィックが発生しているかが記録される。ここでは、トラフィックが発生している場合、セルの値が１に設定され、トラフィックが発生していない場合は０（図３０では見やすくするために空欄とする）であるものとする。
【００８１】
省電力箇所検出部３３は、仮想マシンＶＭ４と外部通信装置の間の通信があることを外部トラフィック量テーブル５５から認識する。また、省電力箇所検出部３３は、移動負荷算出部４０にアクセスして仮想マシンＶＭ４がサーバＳＶ５に配置されていることを認識する。そこで、ネットワーク情報６１を参照することにより、省電力箇所検出部３３は、スイッチＳＷ４から出力されたデータがサーバＳＶ５に入力されることと、サーバＳＶ５から出力されたデータがスイッチＳＷ４に入力されることを認識する。そこで、省電力箇所検出部３３は、記憶しているテーブル中の（Ｏｕｔ，Ｉｎ）＝（スイッチＳＷ４，サーバＳＶ５）のセルと、（Ｏｕｔ，Ｉｎ）＝（サーバＳＶ５，スイッチＳＷ４）のセルの値を１に設定する。さらに、仮想マシンＶＭ４の通信先が外部装置であることから、ゲートウェイとスイッチＳＷ４の間でも通信が発生しているので、（Ｏｕｔ，Ｉｎ）＝（スイッチＳＷ４，ゲートウェイ）と、（Ｏｕｔ，Ｉｎ）＝（ゲートウェイ，スイッチＳＷ４）のセルの値も１に設定される。同様に、図２９のトラフィックの全てについても処理された結果、リンク毎トラフィックテーブルは図３０のようになる。
【００８２】
省電力箇所検出部３３は、リンク毎トラフィックテーブルの縦と横の欄の全てが０となっている装置があるかをチェックする。図３０の場合、スイッチＳＷ６とサーバＳＶ８では、縦と横の全ての欄の値が０になっている。すると、省電力箇所検出部３３は、スイッチＳＷ６とサーバＳＶ８は通信に使用されていないと判断する。そこで。省電力箇所検出部３３は、使用されていないことを特定した装置に、省電力指示メッセージを送信する。省電力指示メッセージのフォーマットの例を図３１に示す。図３１に示す省電力指示メッセージは、送信元アドレスフィールド、宛先アドレスフィールド、要求動作フィールドを備える。送信元アドレスフィールドには管理サーバ３０のアドレスが記録され、宛先アドレスフィールドには、省電力箇所検出部３３によって特定された装置のアドレスが記録される。なお、個々の装置のアドレスは予めネットワーク情報６１に記録されているものとする。要求動作フィールド＝１は、省電力モードの設定指示、要求動作フィールド＝０は、省電力モードの解除指示を意味するものとする。省電力箇所検出部３３は、省電力指示メッセージを生成して、送信部３２に出力する。送信部３２は、宛先に向けて省電力指示メッセージを送信する。
【００８３】
ネットワーク中の各装置は、要求動作フィールド＝１に設定された省電力指示メッセージを受信すると省電力モードに移行する。一方、要求動作フィールド＝０に設定された省電力指示メッセージを受信すると、ネットワーク中の各装置は、省電力モードを解除する。
【００８４】
図３２は、省電力箇所検出部３３の動作の例を説明するフローチャートである。省電力箇所検出部３３は、リンク毎トラフィックテーブルにトラフィックの状況を反映させる（ステップＳ３１）。省電力箇所検出部３３は、リンク毎トラフィックテーブル中で、縦と横の欄の全てが０となっている装置があるかをチェックする（ステップＳ３２）。リンク毎トラフィックテーブル中で、縦と横の欄の全てが０となっている装置が無い場合、省電力箇所検出部３３は処理を終了する（ステップＳ３２でＮｏ）。リンク毎トラフィックテーブル中で、縦と横の欄の全てが０である装置を特定できた場合、省電力箇所検出部３３は、省電力指示メッセージを生成し、送信部３２を介して特定した装置に送信する（ステップＳ３２でＹｅｓ、ステップＳ３３）。
【００８５】
図３３は、データセンタの運用中の管理サーバの動作の例を説明するフローチャートである。ステップＳ４１〜Ｓ４６は、図２５を参照しながら説明したステップＳ２１〜Ｓ２６と同様である。省電力箇所検出部３３は、トラフィックを収容していない装置があるかを確認する（ステップＳ４７）。トラフィックを収容していない装置が特定できた場合、管理サーバ３０は、特定した装置に省電力指示メッセージを送信する（ステップＳ４７でＹｅｓ、ステップＳ４８）。トラフィックを収容していない装置が特定できない場合、管理サーバ３０は、ステップＳ４１以降の処理を繰り返す。
【００８６】
＜その他＞
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００８７】
例えば、相関度や移動コストの計算式は、実装に応じて変形されることがある。例えば、相関度Ｐ＝ｘ×ｙ×ｚ、移動コストＱ＝ｕ×ｖと変形されてもよい。
また、以上の説明で示したテーブルに含まれている情報要素の種類やメッセージのフォーマットは一例であり、実装に応じて変形されることがある。
【００８８】
第３の実施形態は、第１もしくは第２の実施形態と組み合わせて実施される。さらに、第３の実施形態では非対称なネットワークでの例を用いて説明したが、対称なネットワークでも第３の実施形態で述べた方法を用いることができる。
【００８９】
また、第２の実施形態において、配置候補を求める際に、外部トラフィック量と相関度を併用するように変形することもできる。例えば、図２８のサーバＳＶ６とＳＶ７のように、ゲートウェイからのホップ数が同一のサーバ１０が複数ある場合、相関度が大きい仮想マシン同士がなるべく同一のサーバ１０に配置されるようにすることができる。例えば、図２８の場合、相関度算出部５１は仮想マシンＶＭ５〜ＶＭ１２の相関度を求め、得られた相関度に基づいて、第１の実施形態で説明した方法と同様にして、ＶＭ５〜ＶＭ１２をサーバＳＶ６とＳＶ７に配置できる。
【符号の説明】
【００９０】
５  仮想スイッチ
１０  サーバ
２０  スイッチ
３０  管理サーバ
３１  受信部
３２  送信部
３３  省電力箇所検出部
４０  移動負荷算出部
４１  移動コストテーブル
５０  配置設計部
５１  相関度算出部
５２  候補算出部
５３  外部トラフィック取得部
５４  相関度テーブル
５５  外部トラフィック量テーブル
６０  記憶部
６１  ネットワーク情報
６２  初期値データ
７１  ＣＰＵ
７２  メモリ
７３  入力装置
７４  出力装置
７５  バス
７６  外部記憶装置
７７  媒体駆動装置
７８  可搬記憶媒体
７９  ネットワーク接続装置
８０  ネットワーク
【図１】
0005768651.tif 000002
【図２】
0005768651.tif 000003
【図３】
0005768651.tif 000004
【図４】
0005768651.tif 000005
【図５】
0005768651.tif 000006
【図６】
0005768651.tif 000007
【図７】
0005768651.tif 000008
【図８】
0005768651.tif 000009
【図９】
0005768651.tif 000010
【図１０】
0005768651.tif 000011
【図１１】
0005768651.tif 000012
【図１３】
0005768651.tif 000013
【図１４】
0005768651.tif 000014
【図１５】
0005768651.tif 000015
【図１６】
0005768651.tif 000016
【図１７】
0005768651.tif 000017
【図１８】
0005768651.tif 000018
【図１９】
0005768651.tif 000019
【図２０】
0005768651.tif 000020
【図２１】
0005768651.tif 000021
【図２２】
0005768651.tif 000022
【図２４】
0005768651.tif 000023
【図２５】
0005768651.tif 000024
【図２６】
0005768651.tif 000025
【図２７】
0005768651.tif 000026
【図２８】
0005768651.tif 000027
【図２９】
0005768651.tif 000028
【図３１】
0005768651.tif 000029
【図３２】
0005768651.tif 000030
【図３３】
0005768651.tif 000031
【図１２】
0005768651.tif 000032
【図２３】
0005768651.tif 000033
【図３０】
0005768651.tif 000034