(57)【要約】【課題】仮想マシンの移動計画をより適切に立案することができ、また、移動計画の立案の頻発を抑制することができるようにする。【解決手段】ネットワーク帯域確保手段２００が、ネットワーク帯域の予約を行う。そして、動的負荷分散機構３００は、ネットワーク帯域確保手段２００が予約したネットワーク帯域に基づいて、仮想マシン４００の移動計画を立案する。これにより、動的負荷分散機構３００は、ネットワーク帯域の安定した（確保された）状態において、仮想マシン４００の移動計画をより適切に立案することができる。また、ネットワーク帯域の安定した状態で仮想マシン４００の移動実行することで、移動計画に沿って仮想マシン４００の移動を実行することができ、移動計画の立案の頻発を抑制することができる。【選択図】図１
2013200615.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク帯域の予約を行うネットワーク帯域確保手段と、
前記ネットワーク帯域確保手段が予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案手段と、
前記移動計画立案手段が立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行手段と、
を具備することを特徴とする仮想マシン移動制御システム。
【請求項２】
ネットワーク帯域計算手段と、
仮想マシン移動時間推定手段と、
を具備し、
前記ネットワーク帯域計算手段は、最大移動許容時間と、移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量と、当該仮想マシンのメモリ使用量とから、当該仮想マシンの移動に必要なネットワーク帯域を計算し、
前記ネットワーク帯域確保手段は、前記ネットワーク帯域計算手段が計算した、前記仮想マシンの移動に必要なネットワーク帯域に基づいて、前記ネットワーク帯域の予約を行い、
前記仮想マシン移動時間推定手段は、前記ネットワーク帯域確保手段が予約したネットワーク帯域に基づいて、仮想マシンの移動時間を推定し、
前記移動計画立案手段は、前記仮想マシン移動時間推定手段が推定した前記仮想マシンの移動時間に基づいて、前記仮想マシンの移動計画を立案する、
ことを特徴とする請求項１に記載の仮想マシン移動制御システム。
【請求項３】
前記移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量の測定値と測定時刻とを対応付けて記憶するメモリ書き換え量格納部と、
前記メモリ書き換え量格納部が記憶する前記メモリ書き換え量の測定値および測定時刻に基づいて、前記移動対象となる仮想マシンの将来時刻における単位時間当たりのメモリ書き換え量を推定するメモリ書き換え量推定手段と、
を具備し、
前記ネットワーク帯域計算手段は、前記メモリ書き換え量推定手段が推定した、前記将来時刻における単位時間当たりのメモリ書き換え量に基づいて、前記仮想マシンの移動に必要なネットワーク帯域を計算する、
ことを特徴とする請求項２に記載の仮想マシン移動制御システム。
【請求項４】
使用されているネットワーク帯域を測定するネットワーク帯域測定手段を具備し、
前記ネットワーク帯域計算手段は、前記ネットワーク帯域測定手段が測定した前記使用されているネットワーク帯域に基づいて、予約する前記ネットワーク帯域を調整する、
ことを特徴とする請求項２または３に記載の仮想マシン移動制御システム。
【請求項５】
前記ネットワーク帯域計算手段は、前記ネットワーク帯域測定手段が測定した前記使用されているネットワーク帯域と、前記仮想マシンの移動に必要なネットワーク帯域との総和が、ネットワークの最大帯域を超えないように、予約する前記ネットワーク帯域を調整する、
ことを特徴とする請求項４に記載の仮想マシン移動制御システム。
【請求項６】
仮想マシン移動制御システムの仮想マシン移動方法であって、
ネットワーク帯域の予約を行うネットワーク帯域確保ステップと、
前記ネットワーク帯域確保ステップにて予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案ステップと、
前記移動計画立案ステップにて立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行ステップと、
を具備することを特徴とする仮想マシン移動方法。
【請求項７】
ネットワーク帯域計算ステップと、
仮想マシン移動時間推定ステップと、
を具備し、
前記ネットワーク帯域計算ステップでは、最大移動許容時間と、移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量と、当該仮想マシンのメモリ使用量とから、当該仮想マシンの移動に必要なネットワーク帯域を計算し、
前記ネットワーク帯域確保ステップでは、前記ネットワーク帯域計算ステップにて計算した、前記仮想マシンの移動に必要なネットワーク帯域に基づいて、前記ネットワーク帯域の予約を行い、
前記仮想マシン移動時間推定ステップでは、前記ネットワーク帯域確保ステップにて予約したネットワーク帯域に基づいて、仮想マシンの移動時間を推定し、
前記移動計画立案ステップでは、前記仮想マシン移動時間推定ステップにて推定した前記仮想マシンの移動時間に基づいて、前記仮想マシンの移動計画を立案する、
ことを特徴とする請求項６に記載の仮想マシン移動方法。
【請求項８】
前記仮想マシン移動制御システムは、前記移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量の測定値と測定時刻とを対応付けて記憶するメモリ書き換え量格納部を具備し、
前記仮想マシン移動方法は、
前記メモリ書き換え量格納部が記憶する前記メモリ書き換え量の測定値および測定時刻に基づいて、前記移動対象となる仮想マシンの将来時刻における単位時間当たりのメモリ書き換え量を推定するメモリ書き換え量推定ステップを具備し、
前記ネットワーク帯域計算ステップでは、前記メモリ書き換え量推定ステップにて推定した、前記将来時刻における単位時間当たりのメモリ書き換え量に基づいて、前記仮想マシンの移動に必要なネットワーク帯域を計算する、
ことを特徴とする請求項７に記載の仮想マシン移動方法。
【請求項９】
使用されているネットワーク帯域を測定するネットワーク帯域測定ステップを具備し、
前記ネットワーク帯域計算ステップでは、前記ネットワーク帯域測定ステップにて測定した前記使用されているネットワーク帯域に基づいて、前記仮想マシンの移動に必要なネットワーク帯域を調整する、
ことを特徴とする請求項７または８に記載の仮想マシン移動方法。
【請求項１０】
仮想マシン移動制御システムとしてのコンピュータに、
ネットワーク帯域の予約を行うネットワーク帯域確保ステップと、
前記ネットワーク帯域確保ステップにて予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案ステップと、
前記移動計画立案ステップにて立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン移動制御システム、仮想マシン移動方法およびプログラムに関する。
【背景技術】
【０００２】
仮想マシンの移動に関連して幾つかの技術が提案されている。例えば、特許文献１には、仮想マシンの移動計画を立案し、実行する仮想マシン移動制御装置が示されている。
図１３は、特許文献１に示されている仮想マシン移動制御装置の構成を示すブロック図である。この仮想マシン移動制御装置１０１０は、仮想マシン監視部１０１１、移動計画立案部１０１２、所要時間推計部１０１３、評価部１０１４、計画実行部１０１５を有する。また、仮想マシン移動制御装置１０１０は、仮想マシン１０３０が動作している物理マシン１０２０と接続されている。
【０００３】
この仮想マシン移動制御装置１０１０は、物理マシン１０２０で稼動する仮想マシン１０３０の移動状況に応じて、仮想マシン１０３０が現在稼動している物理マシン１０２０から他の物理マシン１０２０へ移動するための移動計画を移動計画立案部１０１２で立案する。そして、仮想マシン移動制御装置１０１０は、立案した移動計画の移動所要時間と現在実行中の仮想マシン１０３０の移動計画の移動所要時間を評価部１０１４で比較し、立案された移動計画と現在実行中の仮想マシン１０３０の移動計画とでは、どちらの移動計画の終了時刻が早いかを評価する。計画実行部１０１５は、評価部１０１４によって評価された結果、立案された移動計画の終了時刻が現在実行中の仮想マシン１０３０の移動計画の終了時刻よりも早い場合には、立案された移動計画を実行する。
これにより、ユーザ数や、サービスの利用量の変化が激しい状況下であっても、仮想マシンの移動にかかる所要時間を短縮することが可能であるとされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１３８１８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ユーザ数やサービスの利用量の変動が激しい状況下では、特許文献１に記載の仮想マシン移動制御装置が仮想マシンを移動させる際の転送スループット、言い換えると、仮想マシンの移動に利用できるネットワーク帯域が変動する。例えば、特許文献１に記載の仮想マシン移動制御装置が移動所要時間を推定した後、移動計画立案までの間にネットワーク帯域が変動すると、当該仮想マシン移動制御装置は、現状（計画立案時の状況）に適した移動計画を立案できないおそれがある。このため、当該仮想マシン移動装置が、移動所要時間を短縮できないおそれがある。
【０００６】
また、特許文献１に記載の仮想マシン移動制御装置が、現状に適した移動計画を立案できた場合でも、その後のネットワーク帯域の変動に対応するために、移動計画の立案を頻繁に行う必要が生じ得る。移動計画の立案を頻繁に行うことで、当該仮想マシン移動制御装置の負荷が上昇してしまう。
【０００７】
本発明は、上述の課題を解決することのできる仮想マシン移動制御システム、仮想マシン移動方法およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
この発明は上述した課題を解決するためになされたもので、本発明の一態様による仮想マシン移動制御システムは、ネットワーク帯域の予約を行うネットワーク帯域確保手段と、前記ネットワーク帯域確保手段が予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案手段と、前記移動計画立案手段が立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行手段と、を具備することを特徴とする。
【０００９】
また、本発明の一態様による仮想マシン移動方法は、仮想マシン移動制御システムの仮想マシン移動方法であって、ネットワーク帯域の予約を行うネットワーク帯域確保ステップと、前記ネットワーク帯域確保手段が予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案ステップと、前記移動計画立案手段が立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行ステップと、を具備することを特徴とする。
【００１０】
また、本発明の一態様によるプログラムは、仮想マシン移動制御システムとしてのコンピュータに、ネットワーク帯域の予約を行うネットワーク帯域確保ステップと、前記ネットワーク帯域確保手段が予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案ステップと、前記移動計画立案手段が立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行ステップと、を実行させるためのプログラムである。
【発明の効果】
【００１１】
本発明によれば、仮想マシンの移動計画をより適切に立案することができ、また、移動計画の立案の頻発を抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態における仮想マシン移動制御システムの機能構成を示す概略ブロック図である。
【図２】同実施形態においてメモリ書き換え量格納部が記憶するデータのデータ構造例を示す説明図である。
【図３】同実施形態において動的負荷分散機構が生成する移動計画の一例を示す説明図である。
【図４】同実施形態において、仮想マシン移動制御システムが、仮想マシンの移動予約を設定する処理手順を示すフローチャートである。
【図５】同実施形態における仮想マシン移動制御システムの、より具体的な構成例を示す概略構成図である。
【図６】本発明の第２の実施形態における仮想マシン移動制御システムの機能構成を示す概略ブロック図である。
【図７】同実施形態においてメモリ書き換え量格納部が記憶するデータのデータ構造例を示す説明図である。
【図８】同実施形態において、仮想マシン移動制御システムが、仮想マシンの移動予約を設定する処理手順を示すフローチャートである。
【図９】同実施形態において、メモリ書き換え量推定手段が、仮想マシンのメモリ書き換え量を推定（予測）する処理の手順を示すフローチャートである。
【図１０】本発明の第３の実施形態における仮想マシン移動制御システムの機能構成を示す概略ブロック図である。
【図１１】同実施形態において、仮想マシン移動制御システムが、仮想マシンの移動予約を設定する処理手順を示すフローチャートである。
【図１２】仮想マシン移動制御システムにおける本発明の最小構成を示す概略ブロック図である。
【図１３】特許文献１に示されている仮想マシン移動制御装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
＜第１の実施形態＞
以下、図面を参照して、本発明の実施の形態について説明する。
図１は、本発明の第１の実施形態における仮想マシン移動制御システムの機能構成を示す概略ブロック図である。同図において、仮想マシン移動制御システム１は、仮想マシン４００と、メモリ書き換え量監視手段５００と、メモリ書き換え量格納部６００と、仮想マシン移動安定化装置１００と、動的負荷分散機構（移動計画立案手段）３００と、仮想マシン移動実行手段７００と、ネットワーク帯域確保手段２００とを具備する。仮想マシン移動安定化装置１００は、ネットワーク帯域計算手段１１０と、仮想マシン移動時間推定手段１２０とを具備する。
【００１４】
仮想マシン４００は、物理マシン上で、コンピュータを擬似的に構築するプログラムであり、本発明における移動対象である。ここで、仮想マシン移動制御システム１は、仮想マシン４００を構築可能（プログラムとしての仮想マシン４００を実行可能）な複数の物理マシンに接続されて通信可能である。また、物理マシン同士もネットワークで接続されて通信可能である。そして、仮想マシン移動制御システム１は、仮想マシン４００を構築するためのデータ（プログラムを含む）を物理マシン間で伝送させることで、仮想マシンを物理マシン間で移動させる。
【００１５】
メモリ書き換え量監視手段５００は、仮想マシン４００のメモリ書き換えを監視し、単位時間当たりのメモリ書き換え量を測定する。ここで、仮想マシンのメモリ書き換えとは、仮想マシンの移動に際して伝送されるデータ（例えば、仮想マシンの構成や状態を示すデータや、仮想マシンが記憶するデータなど各種データ）の更新であり、データの追加（新規登録）および削除を含む。
メモリ書き換え量監視手段５００は、測定したメモリ書き換え量をメモリ書き換え量格納部６００に記憶させる。
【００１６】
メモリ書き換え量格納部６００は、メモリ書き換え量監視手段５００が測定した、仮想マシン４００のメモリ書き換え量を格納（記憶）する。
図２は、メモリ書き換え量格納部６００が記憶するデータのデータ構造例を示す説明図である。同図において、メモリ書き換え量格納部６００は、テーブル（表）形式のデータを格納（記憶）しており、１行が１つの仮想マシン４００に対応している。
【００１７】
図２に示すデータ構造にて、メモリ書き換え量格納部６００は、仮想マシン４００毎に、仮想マシン名６０１と、仮想マシン４００のメモリ使用量６０２と、単位時間当たりのメモリ書き換え量６０３とを格納している。ここで、仮想マシン４００のメモリ使用量とは、当該仮想マシン４００の移動に際して伝送されるデータのデータ量である。以下では、メモリ書き換え量格納部６００が記憶するデータを、「メモリ書き換え量データ」と称する。
なお、図２では、メモリ書き換え量の単位時間を１秒としているが、これに限らない。例えばミリ秒など、様々な単位時間を用いることができる。
メモリ書き換え量格納部６００は、メモリ書き換え量監視手段５００の書き込みに従ってデータを記憶し、記憶しているデータを、ネットワーク帯域計算手段１００の読み込みに従って出力する。
【００１８】
動的負荷分散機構３００は、２つの役割を有する。１つは、仮想マシン移動安定化装置１００（ネットワーク帯域計算手段１１０）へ、仮想マシン４００の最大移動許容時間を出力することである。ここで、仮想マシン４００の最大移動許容時間とは、仮想マシン４００の移動に許容される上限時間であり、仮想マシン４００の移動を何分、もしくは何秒以内に終了させることの要求を示す。
動的負荷分散機構３００は、この要求を、仮想マシン毎に、仮想マシン名と仮想マシン４００の最大移動許容時間との組み合わせとして仮想マシン移動安定化装置１００へ出力する。
【００１９】
ここで、動的負荷分散機構３００が最大移動許容時間を取得する方法として、様々な方法を用いることができる。例えば、動的負荷分散機構３００が、最大移動許容時間を、一律の定数あるいは仮想マシン毎の定数として予め記憶するようにしてもよい。あるいは、動的負荷分散機構３００が、最大移動許容時間を入力するユーザ操作を受け付けるようにしてもよい。
動的負荷分散機構３００のもう一つの役割は、仮想マシン移動安定化装置１００から出力される仮想マシン移動所要時間を元に、仮想マシン４００の移動計画を立案することである。
【００２０】
なお、本実施形態では、仮想マシン移動制御システム１が、物理マシンの負荷分散を目的として仮想マシン４００の移動を行う場合について説明する。例えば、仮想マシンサーバを複数備えるデータセンターにおけるサーバ負荷の分散に、仮想マシン移動制御システム１を用いることができる。
ただし、本発明は、仮想マシンの移動目的に依存しない。例えば、物理マシンの稼働台数の削減など、様々な目的で仮想マシン４００の移動を行う際に、本発明を適用し得る。例えば、仮想マシンサーバを複数備えるデータセンターにおいて、サーバ稼働台数を低減させ、サーバ消費電力を削減するために、仮想マシン移動制御システム１を用いることができる。
【００２１】
図３は、動的負荷分散機構３００が生成する移動計画の一例を示す説明図である。同図を参照すると、動的負荷分散機構３００が生成する移動計画は、時刻（移動開始時刻）３０１と、仮想マシン名３０２と、移動先物理マシン名３０３とを含む。この移動計画を元に、動的負荷分散機構３００は、仮想マシン移動実行手段７００に対して仮想マシン４００の移動を命令する。動的負荷分散機構３００は、自らの生成した移動計画を記憶しておき、当該移動計画に基づいて、仮想マシン移動実行手段７００に移動命令を出力する。
【００２２】
仮想マシン移動実行手段７００は、動的負荷分散機構３００からの移動命令に基づいて、仮想マシン４００を移動させる。
ネットワーク帯域確保手段２００は、ネットワーク帯域の予約と開放との手段を提供する。予約されたネットワーク帯域は他のプログラムによって利用されることは無い。例えば、帯域幅が１Ｇｂｐｓ（ギガビット毎秒）のネットワークが、仮想マシン４００の移動元と移動先の間に存在すると仮定する。そのうち、ネットワーク帯域確保手段２００が、１０Ｍｂｐｓ（メガビット毎秒）の帯域を、ある仮想マシン４００の移動用に予約したとすると、他のプログラムは最大でも９９０Ｍｂｐｓのネットワーク帯域しか使えない。
【００２３】
ネットワーク帯域確保手段２００は、ネットワーク経路とネットワーク帯域との入力情報を、仮想マシン移動安定化装置１００（ネットワーク帯域計算手段１１０）から受けて、ネットワーク帯域の予約を行う。そして、ネットワーク帯域確保手段２００は、出力情報として、実際に確保できたネットワーク帯域を、仮想マシン移動安定化装置１００（ネットワーク帯域計算手段１１０）へ出力する。
【００２４】
仮想マシン移動安定化装置１００において、ネットワーク帯域計算手段１１０は、動的負荷分散機構３００からの、最大移動許容時間と、移動対象となる仮想マシン４００のメモリ書き換え量と、移動対象となる仮想マシン４００のメモリ使用量とから、当該仮想マシン４００の移動に必要なネットワーク帯域を計算する。そして、ネットワーク帯域計算手段１１０は、ネットワーク帯域確保手段２００に対して、計算したネットワーク帯域の予約を要求する。
【００２５】
ここで、ネットワーク帯域計算手段１１０が行う帯域の計算方法の例について説明する。
まず、仮想マシン４００のメモリ使用量をＭ、ネットワーク帯域（当該仮想マシン４００の移動に用いられるネットワーク帯域）をｔｐ、当該仮想マシン４００の単位時間当たりのメモリ書き換え量をｒで示す。すると、当該仮想マシン４００のメモリ使用量Ｍを移動（データ転送）するのに要する時間は、Ｍ／ｔｐとなる。この時間Ｍ／ｔｐの間に書き換えられたデータの転送に要する時間は、（Ｍ／ｔｐ）ｒとなる。さらに、このデータ転送の間に書き換えられたデータの転送が必要になる、というように、ｉ番目のデータ転送に要する時間は、数式（１）のように示される。
【００２６】
【数１】
2013200615.tif 000003
【００２７】
ここで、転送元と転送先とでデータの差異が充分小さくなるようデータ転送を繰り返すことを想定して、データ転送回数ｎをｎ→∞とすると、当該仮想マシン４００の転送に要する時間（最大転送時間）Ｔは、数式（２）のように示される。
【００２８】
【数２】
2013200615.tif 000004
【００２９】
ただし、ｔｐ＞ｒを条件とする。すなわち、単位時間当たりのメモリ書き換え量以上のネットワーク帯域を確保できない場合、仮想マシン４００の転送を完了させることができない。
数式（２）についてネットワーク帯域ｔｐを左辺とする等式に書き換えると、数式（３）が得られる。
【００３０】
【数３】
2013200615.tif 000005
【００３１】
ここで、ｖｍ１は、移動対象となる１つ以上の仮想マシン４００のうちの１つを示す。また、ｔｐｖｍ１、Ｍｖｍ１、Ｔｖｍ１、ｒｖｍ１は、それぞれ、仮想マシンｖｍ１の移動に必要なネットワーク帯域、仮想マシンｖｍ１のメモリ使用量、仮想マシンｖｍ１の最大転送時間、仮想マシンｖｍ１の単位時間当たりのメモリ書き換え量を示す。移動対象となる仮想マシン４００が複数ある場合、仮想マシンｖｍ２、ｖｍ３・・・についても同様である。
【００３２】
ネットワーク帯域計算手段１１０は、この数式（３）に、最大移動許容時間と、仮想マシン４００のメモリ書き換え量と、仮想マシン４００のメモリサイズとを代入して、必要なネットワーク帯域を計算する。具体的には、ネットワーク帯域計算手段１１０は、メモリ書き換え量格納部６００から、仮想マシンのメモリ使用量を読み出して、仮想マシン４００のメモリサイズとして用いる。また、ネットワーク帯域計算手段１１０は、メモリ書き換え量格納部６００から、１秒当たりの平均書き換え量を読み出して、仮想マシン４００のメモリ書き換え量として用いる。仮想マシン４００は、これらのデータと、動的負荷分散機構３００からの最大移動許容時間とを数式（３）に代入して、必要なネットワーク帯域を計算する。
【００３３】
ただし、数式（４）に示すとおり、あるネットワークを利用して移動する仮想マシン４００がＮ個（Ｎは自然数）存在する場合、仮想マシン４００の移動に必要なネットワーク帯域の総和が、予約できる最大ネットワーク帯域を超えてはならない。
【００３４】
【数４】
2013200615.tif 000006
【００３５】
数式（４）において、ｔｐｖｍ１、ｔｐｖｍ２、・・・、ｔｐｖｍＮは、それぞれ、仮想マシンｖｍ１、ｖｍ２、・・・、ｖｍＮの移動に必要なネットワーク帯域を示す。また、ｔｐｍａｘは、仮想マシン４００の移動に必要なネットワーク帯域の総和を示す。
仮想マシン４００の移動に必要なネットワーク帯域の総和が、予約できる最大ネットワーク帯域を超える場合、ネットワーク帯域計算手段１１０は、必要なネットワーク帯域の調整を行う。具体的には、ネットワーク帯域計算手段１１０は、移動する仮想マシン４００で必要なネットワーク帯域の総和が、予約できる最大ネットワーク帯域を超えないように調整する。例えば、ネットワーク帯域計算手段１１０は、個々の仮想マシン４００の移動に用いるネットワーク帯域を、ｔｐ＞ｒの範囲内で減らすか、各仮想マシン４００の移動優先度を元に、当該仮想マシン４００のいくつかを移動対象から除外する。
【００３６】
調整を行っても、仮想マシン４００の移動に必要なネットワーク帯域の総和が、予約できる最大ネットワーク帯域を必ず超えてしまう場合、ネットワーク帯域計算手段１１０は、動的負荷分散機構３００に対して、予約に失敗したことを通知する。一方、仮想マシン４００の移動に必要なネットワーク帯域を全て予約できる場合、ネットワーク帯域計算手段１１０は、ネットワーク帯域確保手段２００を用いて、当該ネットワーク帯域を予約する。ネットワーク帯域の予約後、ネットワーク帯域計算手段１１０は、実際に予約できたネットワーク帯域を仮想マシン移動時間推定手段１２０に通知する。
【００３７】
仮想マシン移動時間推定手段１２０は、ネットワーク帯域確保手段２００で実際に確保されたネットワーク帯域を受け取って、仮想マシン４００の移動時間を推定する。仮想マシン移動時間推定手段１２０は、数式（２）を用いて移動時間を推定し、推定結果を、仮想マシン名と推定移動時間との組み合わせにて、動的負荷分散機構３００へ通知する。
【００３８】
なお、仮想マシン４００の移動に利用可能なネットワークが複数存在していてもよい。この場合、ネットワーク帯域計算手段１１０は、ネットワーク毎にこれら帯域の計算を行なう。
例えば、仮想マシン４００の移動に利用可能なネットワークが4本存在する場合、より具体的には、仮想マシン４００の移動元に接続されているネットワークケーブルが４本あり、それぞれが独立した経路を持っている場合、それぞれのネットワークに対してネットワーク帯域計算手段１１０を設ける。それぞれのネットワーク帯域計算手段１１０は、それぞれのネットワークの予約できる最大ネットワーク帯域を予め記憶している。
この場合、動的負荷分散機構３００は、仮想マシン名と当該仮想マシン４００の最大移動許容時間とに加えて、ネットワーク名を、ネットワーク帯域計算手段１１０に出力する。
【００３９】
次に、図４を参照して仮想マシン移動制御システム１の動作について説明する。
図４は、仮想マシン移動制御システム１が、仮想マシンの移動予約を設定する処理手順を示すフローチャートである。
【００４０】
同図の処理において、まず、動的負荷分散機構３００が、仮想マシン移動安定化装置１００（ネットワーク帯域計算手段１１０）へ、仮想マシン４００毎の最大移動許容時間を出力する（ステップＳ１）。具体的には、動的負荷分散機構３００は、仮想マシン４００の仮想マシン名と当該仮想マシン４００の最大移動許容時間との組み合わせにて、仮想マシン４００毎の最大移動許容時間を出力する。
【００４１】
次に、ネットワーク帯域計算手段１１０は、当該仮想マシン４００のメモリ使用量と単位時間当たりのメモリ書き換え量とを、メモリ書き換え量格納部６００から読み込む（ステップＳ２）。
次に、ネットワーク帯域計算手段１１０は、各仮想マシンの移動に必要となるネットワーク帯域を計算する（ステップＳ３）。例えば、ネットワーク帯域計算手段１１０は、数式（３）を移動対象となる仮想マシン４００毎に適用して、ネットワーク帯域を計算する。
【００４２】
次に、ネットワーク帯域計算手段１１０は、移動対象となる仮想マシン４００で必要なネットワーク帯域の総和が、予約できる最大ネットワーク帯域を超えているかどうかを判定する（ステップＳ４）。
超えていると判定した場合（ステップＳ４のＹＥＳ）、ネットワーク帯域計算手段１１０は、計算した仮想マシン４００毎のネットワーク帯域を縮小する（ステップＳ５）。その際、ネットワーク帯域計算手段１１０が、仮想マシン４００毎に一律に縮小しても良いし、優先度を設けて、優先的に縮小する仮想マシン４００を決めておいても良い。
【００４３】
そして、ネットワーク帯域計算手段１１０は、移動対象となる仮想マシン４００のうち、当該仮想マシン４００のためのネットワーク帯域よりも、当該仮想マシン４００の単位時間当たりのメモリ書き換え量が多いものが存在するか否かを判定する（ステップＳ６）。
【００４４】
存在すると判定した場合（ステップＳ６のＹＥＳ）、ネットワーク帯域割り当て不可能として、動的負荷分散機構３００に通知する。一方、移動対象となる仮想マシン４００の全てについて、当該仮想マシン４００のためのネットワーク帯域よりも、当該仮想マシン４００の単位時間当たりのメモリ書き換え量が少ないと判定した場合（ステップＳ６のＮＯ）、仮想マシン移動時間推定手段１２０が、各仮想マシンの移動時間を推定する。
【００４５】
一方、移動対象となる仮想マシン４００で必要なネットワーク帯域の総和が、予約できる最大ネットワーク帯域を超えていないと判定した場合（ステップＳ４のＮＯ）、ネットワーク帯域計算手段１１０は、ネットワーク帯域確保手段２００に仮想マシン毎のネットワーク帯域予約要求を出し、ネットワーク帯域確保手段２００は、要求に従ってネットワーク帯域を予約する（ステップＳ７）。
【００４６】
そして、仮想マシン移動時間推定手段１２０は、ネットワーク帯域確保手段２００が実際に予約できたネットワーク帯域に基づいて、仮想マシン４００の移動時間を推定する（ステップＳ８）。
その後、同図の処理を終了し、動的負荷分散機構３００は、各仮想マシンの推定移動時間を元に、仮想マシン４００の移動計画を立案する。そして、仮想マシン移動実行手段７００は、動的負荷分散機構３００が立案した移動計画に従って、仮想マシンの移動を実行する。
【００４７】
以上のように、ネットワーク帯域計算手段１１０は、移動対象となる仮想マシン４００の単位時間当たりのメモリ書き換え量、当該仮想マシン４００のメモリ量、ならびに当該仮想マシン４００の最大移動許容時間から、必要となるネットワーク帯域を計算する。
これにより、ネットワーク帯域計算手段１１０は、仮想マシン４００の移動に必要なネットワーク帯域を、より正確に求めることができる。
【００４８】
そして、ネットワーク帯域確保手段２００は、ネットワーク帯域計算手段１１０が求めたネットワーク帯域に基づいて、ネットワーク帯域の予約を行う。
これにより、ネットワーク帯域確保手段２００は、より適切にネットワーク帯域の予約を行うことができ、必要以上にネットワーク帯域を確保する事態や、ネットワーク帯域が不足する事態を低減させることができる。
【００４９】
また、仮想マシン移動時間推定手段１２０は、ネットワーク帯域確保手段２００が予約したネットワーク帯域に基づいて仮想マシン４００の移動時間を推定する。
これにより、仮想マシン移動時間推定手段１２０は、ネットワーク帯域の安定した（確保された）状態における仮想マシン４００の移動時間を推定することができ、仮想マシン４００の移動時間（移動にかかる所要時間）をより正確に推定することができる。
【００５０】
また、動的負荷分散機構３００は、ネットワーク帯域確保手段２００が予約したネットワーク帯域に基づいて、仮想マシン４００の移動計画を立案する。
これにより、動的負荷分散機構３００は、ネットワーク帯域の安定した（確保された）状態において、仮想マシン４００の移動計画をより適切に立案することができる。すなわち、動的負荷分散機構３００は、より短時間で移動完了可能な移動計画を立案することができる。
特に、動的負荷分散機構３００は、仮想マシン移動時間推定手段１２０が推定した仮想マシン４００の移動時間に基づいて移動計画を立案することで、仮想マシン４００の移動計画をより適切に立案することができる。
【００５１】
そして、仮想マシン移動実行手段７００は、動的負荷分散機構３００が立案した移動計画に従って、仮想マシン４００の移動を実行する。
これにより、仮想マシン移動実行手段７００は、ネットワーク帯域確保手段２００が予約したネットワーク帯域に基づいて、ネットワーク帯域の安定した（確保された）状態において、仮想マシンの移動を安定的に行なうことができる。
【００５２】
特に、仮想マシン移動実行手段７００は、動的負荷分散機構３００が立案した移動計画に沿って（ほぼ移動計画どおりに）、仮想マシン４００の移動を実行することができ、移動計画の見直しを行なう回数を少なくすることができる。すなわち、移動計画の立案の頻発を抑制することができる。
なお、仮想マシン移動制御システムは、例えば、単位時間当たりのメモリ書き換え量が大きく変化した場合に、移動計画の見直しを行なう。
【００５３】
次に、仮想マシン移動制御システム１の、より具体的な構成例について説明する。
図５は、仮想マシン移動制御システム１の、より具体的な構成例を示す概略構成図である。同図において、図１の仮想マシン４００は、ＫＶＭ（Kernel-based Virtual Machine）８００にて構築される。ＫＶＭは、Ｌｉｎｕｘ（登録商標）のカーネルをハイパーバイザとして構築する仮想マシンである。また、図１のメモリ書き換え量監視手段５００は、Ｌｉｎｕｘカーネルモジュール８１０（Ｌｉｎｕｘは登録商標）にて構築される。
【００５４】
また、図１のメモリ書き換え量格納部６００は、ＳＱＬサーバ８２０にて構築される。ＳＱＬサーバは、リレーショナル・データベース管理サーバであり、各種データを記憶する。
また、図１の仮想マシン移動実行手段７００は、ｌｉｂｖｉｒｔデーモン８４０にて構築される。ｌｉｂｖｉｒｔは、仮想マシンの制御を抽象化したライブラリである。
【００５５】
また、ネットワーク帯域確保手段２００は、オープンフロー（Open Flow）スイッチ８３０にて構築される。オープンフロースイッチは、オープンフローコントローラにて制御可能なスイッチである。仮想マシン移動制御システム１では、仮想マシン移動安定化装置１００が、オープンフロースイッチを制御して、ネットワーク帯域の予約を行わせる。
【００５６】
図５に示す構成において、Ｌｉｎｕｘカーネルモジュール８１０（Ｌｉｎｕｘは登録商標）は、ＫＶＭ８００のページテーブルを参照し、メモリ書き換え量を計算する。ここで、ページテーブルとは、ページエントリから構成されるテーブルである。ページテーブルは、ページング方式の仮想記憶システムにおいて、仮想アドレスと物理アドレスとのマッピングを格納する。また、ページエントリとは、ページ単位に区切られたメモリ領域の状態を保持するデータである。ページエントリには、ダーティービットと呼ばれる、ページが書き換えられたかどうかを示す情報が備えられている。
【００５７】
Ｌｉｎｕｘカーネルモジュール８１０（Ｌｉｎｕｘは登録商標）は、定期的にダーティービットを参照することによってメモリ書き換え量を計算する。例えば、Ｌｉｎｕｘカーネルモジュール８１０（Ｌｉｎｕｘは登録商標）は、１秒毎にダーティービットを参照して、単位時間１秒にてメモリ書き換え量を計算する。ここで、Ｌｉｎｕｘカーネルモジュール８１０（Ｌｉｎｕｘは登録商標）は、参照後、ダーティービットをクリアする（ＯＦＦにする）。従って、次の参照にてダーティービットがＯＮになっていることを検出することで、Ｌｉｎｕｘカーネルモジュール８１０（Ｌｉｎｕｘは登録商標）は、単位時間のうちに、当該ダーティービットに対応するページに書き換えが発生したことを検出できる。
【００５８】
ＳＱＬサーバ８２０は、仮想マシン毎のメモリ書き換え量を格納する。具体的には、ＳＱＬサーバ８２０は、仮想マシン名とメモリ書き換え量とを属性情報として、仮想マシンの数だけエントリを持つデータベースとして、メモリ書き換え量を格納する。
ｌｉｂｖｉｒｔデーモン８４０は、ＫＶＭ８００のライブマイグレーションを実行する。ここで、ライブマイグレーションとは、仮想マシンをある物理マシンから他の物理マシンへ移動することを指す。
【００５９】
オープンフロースイッチ８３０は、ネットワーク帯域予約手段を提供する。オープンフロースイッチ８３０は、ネットワークスイッチの一種であり、フロー毎、つまり、仮想マシンの移動に使われるネットワーク毎にネットワークの速度やその他の振る舞いを制御できるネットワークスイッチである。
例えば、OpenFlowSwitch Specification Version 1.1.0のＡ．２．２節には、オープンフロースイッチ８３０における具体的なネットワーク帯域の予約方法が記載されている。その概略は次の通りである。仮想マシンの移動に使うネットワーク（オープンフロースイッチ８３０におけるフロー）毎にキューを生成し、当該キューのコンフィギュレーションに、最大データ転送保証を設定する。このように、オープンフロースイッチ８３０は、仮想マシンの移動（データ転送）フローをキューに格納し、各物理マシンに転送されるデータ量を制御することができる（従って、ネットワーク帯域を予約し、確保することができる）。
【００６０】
＜第２の実施形態＞
次に、本発明の第２の実施形態について図面を参照して説明する。
図６は、本発明の第２の実施形態における仮想マシン移動制御システムの機能構成を示す概略ブロック図である。同図において、仮想マシン移動制御システム２は、仮想マシン４００と、メモリ書き換え量監視手段５００と、メモリ書き換え量格納部６００Ｂと、仮想マシン移動安定化装置１００Ｂと、動的負荷分散機構３００と、仮想マシン移動実行手段７００と、ネットワーク帯域確保手段２００とを具備する。仮想マシン移動安定化装置１００Ｂは、ネットワーク帯域計算手段１１０Ｂと、仮想マシン移動時間推定手段１２０と、メモリ書き換え量推定手段１３０とを具備する。
【００６１】
同図に示す仮想マシン移動制御システム２は、仮想マシン移動制御システム１（図１）が具備する各部に加えて、メモリ書き換え量推定手段１３０を具備する。また、メモリ書き換え量推定手段１３０の追加に伴って、ネットワーク帯域計算手段１１０Ｂおよびメモリ書き換え量格納部６００Ｂが扱うデータの構造が、仮想マシン移動制御システム１の場合と異なっている。
【００６２】
図７は、メモリ書き換え量格納部６００Ｂが記憶するデータのデータ構造例を示す説明図である。同図において、メモリ書き換え量格納部６００Ｂは、仮想マシン４００毎にテーブル形式のデータを格納している。各テーブルには、仮想マシン名６０１と、仮想マシンのメモリ使用量６０２と、単位時間当たりのメモリ書き換え量６０３とに加えて、状態取得時刻６０４が含まれている。当該データ構造にて、メモリ書き換え量格納部６００Ｂは、状態取得時刻６０４における仮想マシンのメモリ使用量６０２と１秒当たりの平均書き換え量６０３との履歴を複数記憶している。
【００６３】
なお、図７に示されるメモリ書き換え量格納部６００Ｂのデータの例では、仮想マシン毎のテーブルエントリ数が３つになっているが、このエントリ数は２つ以上であればよい。また、仮想マシン毎にエントリ数が異なっていてもよい。
メモリ書き換え量格納部６００Ｂは、メモリ書き換え量監視手段５００からの書き込みに従ってデータを記憶し、記憶しているデータを、メモリ書き換え量推定手段１３０の読み込みに従って出力する。
【００６４】
ネットワーク帯域計算手段１１０Ｂは、ネットワーク帯域計算手段１１０（図１）とは異なり、メモリ書き換え量推定手段１３０に対して、移動対象となる仮想マシン４００の将来（要求時よりも未来）のメモリ書き換え量を要求する。ネットワーク帯域計算手段１１０Ｂは、仮想マシン名と推定の必要な時刻とをメモリ書き換え量推定手段１３０へ出力して、当該時刻のメモリ書き換え量を、メモリ書き換え量推定手段１３０から受け取る。例えば、ネットワーク帯域計算手段１１０Ｂは、仮想マシン４００の最大移動許容時間を２で割った値、つまり移動の中間時刻を算出して、推定の必要な時刻とする。
ネットワーク帯域計算手段１１０Ｂは、メモリ書き換え量推定手段１３０からのメモリ書き換え量（推定値）に基づいて、ネットワーク帯域計算手段１１０（図１）と同様に、仮想マシン４００の移動に必要なネットワーク帯域を計算する。そして、ネットワーク帯域計算手段１１０Ｂは、ネットワーク帯域確保手段２００に対して、計算したネットワーク帯域の予約を要求する。また、ネットワーク帯域計算手段１１０Ｂは、ネットワーク帯域計算手段１１０（図１）と同様に、ネットワーク帯域の調整等も行う。
【００６５】
メモリ書き換え量推定手段１３０は、メモリ書き換え量格納部６００Ｂに格納されている状態取得時刻と１秒当たりの平均書き換え量（仮想マシン４００毎のメモリ書き換え量）との複数の組から、仮想マシン４００の将来のメモリ書き換え量を推定（予測）する。具体的な例としては、メモリ書き換え量推定手段１３０は、仮想マシン４００毎に格納されている、状態取得時刻と単位時間当たりのメモリ書き換え量との組み合わせを、メモリ書き換え量格納部６００Ｂから複数読み込む。そして、メモリ書き換え量推定手段１３０は、最小二乗法により、読み出したメモリ書き換え量に対する、メモリ書き換え量の予測関数を計算する。
【００６６】
ここで、最小二乗法は、例えば（ｘ，ｙ）の組からなるＮ個のデータに対して、最も当てはまる近時関数を求める方法である。例えば、直線式ｙ＝ａｘ＋ｂを求める場合、係数ａは、数式（５）により求められる。
【００６７】
【数５】
2013200615.tif 000007
【００６８】
また、係数ｂは、数式（６）により求められる。
【００６９】
【数６】
2013200615.tif 000008
【００７０】
最小二乗法を用いて、直線式だけではなく、２次関数、３次関数など多次の近似関数を求めることもできる。
このように、メモリ書き換え量推定手段１３０は、状態取得時刻と単位時間当たりのメモリ書き換え量との複数の組み合わせから、状態取得時刻と単位時間当たりのメモリ書き換え量との関係を示す近似式を求める。そして、メモリ書き換え量推定手段１３０は、得られた式に推定の必要な時刻（将来時刻）を代入することで、当該時刻における単位時間当たりのメモリ書き換え量を求める。
【００７１】
ただし、メモリ書き換え量推定手段１３０が将来のメモリ書き換え量を推定（計算）する方法は、最小二乗法を用いる方法に限らない。状態取得時刻と単位時間当たりのメモリ書き換え量の組み合わせから、当該メモリ書き換え量を求めることのできる方法であればよい。
メモリ書き換え量推定手段１３０は、得られたメモリ書き換え量を、ネットワーク帯域計算手段１１０Ｂに出力する。
【００７２】
図８は、仮想マシン移動制御システム２が、仮想マシン４００の移動予約を設定する処理手順を示すフローチャートである。同図の処理手順において、ステップＳ１およびＳ３〜Ｓ８は、図４の場合と同様である。図８の処理手順は、図４の処理手順のうち、ステップＳ２を、メモリ書き換え量推定手段１３０の動作を示すステップＳ９に置き換えたものとなっている。
【００７３】
次に、図９を参照して、メモリ書き換え量推定手段１３０の動作について説明する。
図９は、メモリ書き換え量推定手段１３０が、仮想マシン４００のメモリ書き換え量を推定（予測）する処理の手順を示すフローチャートである。メモリ書き換え量推定手段１３０は、図８のステップＳ９にて、図９の処理を行う。
【００７４】
図９の処理において、メモリ書き換え量推定手段１３０は、まず、仮想マシン４００の状態取得時刻を読み込む（ステップＳ１０）、次に、メモリ書き換え量推定手段１３０は、当該仮想マシン４００のメモリ書き換え量を読み込む（ステップＳ１１）。この２つのステップでは、次の近似関数を計算する際に必要な数だけ、状態取得時刻とメモリ書き換え量の組を読み込む。読み込む組み合わせの数が多いほど、近似関数の精度は高くなる。
【００７５】
次に、メモリ書き換え量推定手段１３０は、近似関数を計算する（ステップＳ１２）。そして、メモリ書き換え量推定手段１３０は、ある時点（推定の必要な時刻）におけるメモリ書き換え量を計算する（ステップＳ１３）。例えば、近似関数がｙ＝ａｘ＋ｂであり、５秒後のメモリ書き換え量を計算したい場合、メモリ書き換え量推定手段１３０は、Ｙ＝５ａ＋ｂとなるＹ、つまり、メモリ書き換え量を計算する。
ただし、メモリ書き換え量推定手段１３０の説明で述べたように、計算される将来のメモリ書き換え量推定は、状態取得時刻と単位時間当たりのメモリ書き換え量の組み合わせから計算できれば、最小二乗法以外の方法を用いてもよい。
【００７６】
以上のように、メモリ書き換え量推定手段１３０は、仮想マシン４００の、将来時刻における単位時間当たりのメモリ書き換え量を推定する。そして、ネットワーク帯域計算手段１１０Ｂは、メモリ書き換え量推定手段１３０が推定した、将来時刻における単位時間当たりのメモリ書き換え量に基づいて、当該仮想マシン４００の移動に必要なネットワーク帯域を計算する。
これにより、ネットワーク帯域計算手段１１０Ｂは、仮想マシン４００の移動に必要なネットワーク帯域を、より高精度に算出することができる。
そして、ネットワーク帯域確保手段２００は、ネットワーク帯域計算手段１１０Ｂが求めたネットワーク帯域に基づいて、ネットワーク帯域の予約を行うことで、より適切にネットワーク帯域の予約を行うことができる。
【００７７】
また、仮想マシン移動時間推定手段１２０は、ネットワーク帯域確保手段２００が予約したネットワーク帯域と、メモリ書き換え量推定手段１３０が推定した、将来時刻におけるメモリ書き換え量に基づいて、仮想マシン４００の移動時間を推定する。
仮想マシン４００の移動時におけるメモリ書き換え量に基づいて推定を行うことで、仮想マシン移動時間推定手段１２０は、仮想マシン４００の移動時間（移動にかかる所要時間）を、さらに正確に推定し得る。
そして、動的負荷分散機構３００は、仮想マシン移動時間推定手段１２０が将来時刻におけるメモリ書き換え量に基づいて推定した仮想マシン４００の移動時間を用いて、仮想マシン４００の移動計画を立案する。これにより、動的負荷分散機構３００は、仮想マシン４００の移動計画をさらに適切に立案し得る。
【００７８】
＜第３の実施形態＞
次に、本発明の第３の実施形態について図面を参照して説明する。
図１０は、本発明の第３の実施形態における仮想マシン移動制御システムの機能構成を示す概略ブロック図である。同図において、仮想マシン移動制御システム３は、仮想マシン４００と、メモリ書き換え量監視手段５００と、メモリ書き換え量格納部６００と、仮想マシン移動安定化装置１００Ｃと、動的負荷分散機構３００と、仮想マシン移動実行手段７００と、ネットワーク帯域確保手段２００とを具備する。仮想マシン移動安定化装置１００Ｃは、ネットワーク帯域計算手段１１０Ｃと、仮想マシン移動時間推定手段１２０と、ネットワーク帯域測定手段１４０とを具備する。
【００７９】
同図に示す仮想マシン移動制御システム３は、仮想マシン移動制御システム１（図１）が具備する各部に加えて、ネットワーク帯域測定手段１４０を具備する。また、ネットワーク帯域測定手段１４０の追加に伴って、ネットワーク帯域計算手段１１０Ｃの動作が、ネットワーク帯域計算手段１１０（図１）の場合と異なっている。
【００８０】
ネットワーク帯域測定手段１４０は、１つのネットワークについて、利用可能なネットワーク帯域を測定する。具体的には、ネットワーク帯域測定手段１４０は、まず、当該ネットワーク上で測定用のデータ通信を行い、現在使われて（利用されて）いないネットワーク帯域を測定する。次に、ネットワーク帯域測定手段１４０は、測定したネットワーク帯域を、当該ネットワークが有する最大帯域から減算して、現在利用されているネットワーク帯域を算出する。
【００８１】
例として、１Ｇｂｐｓの帯域を持つネットワーク上でのネットワーク利用帯域の測定方法を示す。ネットワーク帯域測定手段１４０は、まず、ｉｐｅｒｆなどの既存のネットワーク帯域測定プログラムを用いて、利用可能なネットワーク帯域、すなわち現在使われていないネットワーク帯域を測定する。仮に、現在使われていないネットワーク帯域が１００Ｍｂｐｓだとすると、９００Ｍｂｐｓが現在利用されているネットワーク帯域であることがわかる。
ネットワーク帯域測定手段１４０は、測定したネットワーク帯域を、ネットワーク帯域測定手段内に格納しておく。
【００８２】
ネットワーク帯域計算手段１１０Ｃは、ネットワーク帯域計算手段１１０（図１）とは異なり、ネットワーク帯域測定手段１４０に対して、現在利用されているネットワーク帯域を要求し、その結果を用いて、ネットワーク帯域の計算を行なう。具体的には、ネットワーク帯域計算手段１１０Ｃは、当該仮想マシン４００のメモリ使用量と、メモリ書き換え量と、当該仮想マシン４００の最大移動許容時間とから、当該仮想マシン４００の移動に必要なネットワーク帯域を計算する。ネットワーク帯域計算手段１１０Ｃは、移動対象となる仮想マシン４００毎に当該計算を行って、必要なネットワーク帯域の総和を求める。そして、ネットワーク帯域計算手段１１０Ｃは、得られた総和に、ネットワーク帯域測定手段によって得た現在利用中のネットワーク帯域を加える。そして、ネットワーク帯域計算手段１１０Ｃは、得られた値が当該ネットワークの持つ最大帯域を超えているかどうか判定する。超えていなければ、そのままネットワーク帯域を予約できる。一方、超えていれば、これから予約するネットワーク帯域を縮小するか、そのまま予約するかを判断する。
なお、調整（ネットワーク帯域の縮小）を行っても、ネットワーク帯域の総和が、予約できる最大ネットワーク帯域を必ず超えてしまう場合、ネットワーク帯域計算手段１１０Ｃは、動的負荷分散機構３００に対して、予約に失敗したことを通知する。一方、予約に成功した場合、ネットワーク帯域計算手段１１０Ｃは、ネットワーク帯域計算手段１１０（図１）と同様、実際に予約できたネットワーク帯域を仮想マシン移動時間推定手段１２０に通知する。
【００８３】
第１の実施形態でも説明したとおり、ネットワーク帯域が予約されれば、他のプログラムは当該予約帯域を利用することができなくなる。つまり、予約帯域の総和と現在利用中のネットワーク帯域の総和が、当該ネットワークの最大帯域を超えている状態でネットワーク帯域を予約すれば、現在、ネットワークを利用中のプログラムのネットワーク通信を圧迫することになる。
そこで、ネットワーク帯域計算手段１１０Ｃがネットワーク帯域の調整を行うことで、ネットワークを利用中のプログラムへの影響を低減させることができる。
【００８４】
図１１は、仮想マシン移動制御システム３が、仮想マシン４００の移動予約を設定する処理手順を示すフローチャートである。同図の処理手順において、ステップＳ１〜Ｓ３およびＳ４〜Ｓ８は、図４の場合と同様である。図１１の処理手順では、ステップＳ３とＳ４との間に、ステップＳ１４が挿入されている。
【００８５】
ステップＳ１４は、計算したネットワークの総和に現在のネットワーク使用量を加算するというステップであり、現在のネットワーク使用量は、ネットワーク帯域測定手段１４０によって測定されているものとする。また、図中のステップＳ５において、縮小すべきネットワーク帯域は、これから予約するネットワーク帯域であっても、現在利用されているネットワーク帯域であってもどちらでもよい。これから予約するネットワーク帯域を縮小する場合は、ステップＳ６の条件を必ず確認する必要があるが、現在利用されているネットワーク帯域を縮小する場合、つまり計算された予約帯域はそのまま予約する場合、ステップＳ６は必ず「ＮＯ」となる。
【００８６】
以上のように、ネットワーク帯域測定手段１４０は、現在利用中のネットワーク帯域を測定する。そして、ネットワーク帯域計算手段１１０Ｃは、現在利用中のネットワーク帯域（測定値）に基づいて、予約すべきネットワーク帯域の決定や調整を行う。
これにより、ネットワーク帯域計算手段１１Ｃは、現在利用中のネットワーク帯域を考慮しつつ、仮想マシンの移動に必要なネットワーク帯域を（ネットワーク帯域確保手段を介して）予約することができる。従って、仮想マシン移動制御システム３では、仮想マシンの移動に使われるネットワーク帯域と他のサービス・プログラムで利用されるネットワーク帯域とを混在させることができ、他のサービス・プログラムで利用されるネットワーク帯域への影響を低減させ得る。
【００８７】
次に、図１２を参照して、仮想マシン移動制御システム１における最小構成について説明する。図１２は、図１に示した各部のうち、仮想マシン移動制御システム１における本発明の最小構成を示す概略ブロック図である。同図において、図１に示した仮想マシン移動制御システム１の各部のうち、ネットワーク帯域確保手段２００と、動的負荷分散機構３００と、仮想マシン移動実行手段７００とが示されている。
【００８８】
この構成において、図１に示した構成に基づいて上述したのと同様、ネットワーク帯域確保手段２００が、ネットワーク帯域の予約を行う。そして、動的負荷分散機構３００は、ネットワーク帯域確保手段２００が予約したネットワーク帯域に基づいて、仮想マシン４００の移動計画を立案する。そして、仮想マシン移動実行手段７００は、動的負荷分散機構３００が立案した移動計画に従って、仮想マシン４００の移動を実行する。
これにより、動的負荷分散機構３００は、ネットワーク帯域の安定した（確保された）状態において、仮想マシン４００の移動計画をより適切に立案することができる。また、仮想マシン移動実行手段７００が、ネットワーク帯域の安定した状態で仮想マシン４００の移動実行することで、移動計画に沿って仮想マシン４００の移動を実行することができ、移動計画の立案の頻発を抑制することができる。
【００８９】
なお、仮想マシン移動制御システム１〜３の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００９０】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００９１】
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、以下には限られない。
【００９２】
（付記１）ネットワーク帯域の予約を行うネットワーク帯域確保手段と、前記ネットワーク帯域確保手段が予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案手段と、前記移動計画立案手段が立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行手段と、を具備することを特徴とする仮想マシン移動制御システム。
【００９３】
（付記２）ネットワーク帯域計算手段と、仮想マシン移動時間推定手段と、を具備し、前記ネットワーク帯域計算手段は、最大移動許容時間と、移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量と、当該仮想マシンのメモリ使用量とから、当該仮想マシンの移動に必要なネットワーク帯域を計算し、前記ネットワーク帯域確保手段は、前記ネットワーク帯域計算手段が計算した、前記仮想マシンの移動に必要なネットワーク帯域に基づいて、前記ネットワーク帯域の予約を行い、前記仮想マシン移動時間推定手段は、前記ネットワーク帯域確保手段が予約したネットワーク帯域に基づいて、仮想マシンの移動時間を推定し、前記移動計画立案手段は、前記仮想マシン移動時間推定手段が推定した前記仮想マシンの移動時間に基づいて、前記仮想マシンの移動計画を立案する、ことを特徴とする付記１に記載の仮想マシン移動制御システム。
【００９４】
（付記３）前記移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量の測定値と測定時刻とを対応付けて記憶するメモリ書き換え量格納部と、前記メモリ書き換え量格納部が記憶する前記メモリ書き換え量の測定値および測定時刻に基づいて、前記移動対象となる仮想マシンの将来時刻における単位時間当たりのメモリ書き換え量を推定するメモリ書き換え量推定手段と、を具備し、前記ネットワーク帯域計算手段は、前記メモリ書き換え量推定手段が推定した、前記将来時刻における単位時間当たりのメモリ書き換え量に基づいて、前記仮想マシンの移動に必要なネットワーク帯域を計算する、ことを特徴とする付記２に記載の仮想マシン移動制御システム。
【００９５】
（付記４）使用されているネットワーク帯域を測定するネットワーク帯域測定手段を具備し、前記ネットワーク帯域計算手段は、前記ネットワーク帯域測定手段が測定した前記使用されているネットワーク帯域に基づいて、予約する前記ネットワーク帯域を調整する、ことを特徴とする付記２または３に記載の仮想マシン移動制御システム。
【００９６】
（付記５）前記ネットワーク帯域計算手段は、前記ネットワーク帯域測定手段が測定した前記使用されているネットワーク帯域と、前記仮想マシンの移動に必要なネットワーク帯域との総和が、ネットワークの最大帯域を超えないように、予約する前記ネットワーク帯域を調整する、ことを特徴とする付記４に記載の仮想マシン移動制御システム。
【００９７】
（付記６）前記ネットワーク帯域計算手段は、前記ネットワーク帯域測定手段が測定した前記使用されているネットワーク帯域と、前記仮想マシンの移動に必要なネットワーク帯域との総和が、ネットワークの最大帯域を超えないように調整できない場合、ネットワーク帯域の予約に失敗したことを通知する、ことを特徴とする付記５に記載の仮想マシン移動制御システム。
【００９８】
（付記７）仮想マシン移動制御システムの仮想マシン移動方法であって、ネットワーク帯域の予約を行うネットワーク帯域確保ステップと、前記ネットワーク帯域確保ステップにて予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案ステップと、前記移動計画立案ステップにて立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行ステップと、を具備することを特徴とする仮想マシン移動方法。
【００９９】
（付記８）ネットワーク帯域計算ステップと、仮想マシン移動時間推定ステップと、を具備し、前記ネットワーク帯域計算ステップでは、最大移動許容時間と、移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量と、当該仮想マシンのメモリ使用量とから、当該仮想マシンの移動に必要なネットワーク帯域を計算し、前記ネットワーク帯域確保ステップでは、前記ネットワーク帯域計算ステップにて計算した、前記仮想マシンの移動に必要なネットワーク帯域に基づいて、前記ネットワーク帯域の予約を行い、前記仮想マシン移動時間推定ステップでは、前記ネットワーク帯域確保ステップにて予約したネットワーク帯域に基づいて、仮想マシンの移動時間を推定し、前記移動計画立案ステップでは、前記仮想マシン移動時間推定ステップにて推定した前記仮想マシンの移動時間に基づいて、前記仮想マシンの移動計画を立案する、ことを特徴とする付記７に記載の仮想マシン移動方法。
【０１００】
（付記９）前記仮想マシン移動制御システムは、前記移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量の測定値と測定時刻とを対応付けて記憶するメモリ書き換え量格納部を具備し、前記仮想マシン移動方法は、前記メモリ書き換え量格納部が記憶する前記メモリ書き換え量の測定値および測定時刻に基づいて、前記移動対象となる仮想マシンの将来時刻における単位時間当たりのメモリ書き換え量を推定するメモリ書き換え量推定ステップを具備し、前記ネットワーク帯域計算ステップでは、前記メモリ書き換え量推定ステップにて推定した、前記将来時刻における単位時間当たりのメモリ書き換え量に基づいて、前記仮想マシンの移動に必要なネットワーク帯域を計算する、ことを特徴とする付記８に記載の仮想マシン移動方法。
【０１０１】
（付記１０）使用されているネットワーク帯域を測定するネットワーク帯域測定ステップを具備し、前記ネットワーク帯域計算ステップでは、前記ネットワーク帯域測定ステップにて測定した前記使用されているネットワーク帯域に基づいて、前記仮想マシンの移動に必要なネットワーク帯域を調整する、ことを特徴とする付記８または９に記載の仮想マシン移動方法。
【０１０２】
（付記１１）前記ネットワーク帯域計算ステップでは、前記ネットワーク帯域測定ステップにて測定した前記使用されているネットワーク帯域と、前記仮想マシンの移動に必要なネットワーク帯域との総和が、ネットワークの最大帯域を超えないように、予約する前記ネットワーク帯域を調整する、ことを特徴とする付記１０に記載の仮想マシン移動方法。
【０１０３】
（付記１２）前記ネットワーク帯域計算ステップでは、前記ネットワーク帯域測定ステップにて測定した前記使用されているネットワーク帯域と、前記仮想マシンの移動に必要なネットワーク帯域との総和が、ネットワークの最大帯域を超えないように調整できない場合、ネットワーク帯域の予約に失敗したことを通知する、ことを特徴とする請求項１１に記載の仮想マシン移動方法。
【０１０４】
（付記１３）仮想マシン移動制御システムとしてのコンピュータに、ネットワーク帯域の予約を行うネットワーク帯域確保ステップと、前記ネットワーク帯域確保ステップにて予約したネットワーク帯域に基づいて仮想マシンの移動計画を立案する移動計画立案ステップと、前記移動計画立案ステップにて立案した前記仮想マシンの移動計画に基づいて、仮想マシンの移動を実行する仮想マシン移動実行ステップと、を実行させるためのプログラム。
【０１０５】
（付記１４）前記コンピュータに、ネットワーク帯域計算ステップと、仮想マシン移動時間推定ステップと、を実行させ、前記ネットワーク帯域計算ステップでは、最大移動許容時間と、移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量と、当該仮想マシンのメモリ使用量とから、当該仮想マシンの移動に必要なネットワーク帯域を計算させ、前記ネットワーク帯域確保ステップでは、前記ネットワーク帯域計算ステップにて計算した、前記仮想マシンの移動に必要なネットワーク帯域に基づいて、前記ネットワーク帯域の予約を行わせ、前記仮想マシン移動時間推定ステップでは、前記ネットワーク帯域確保ステップにて予約したネットワーク帯域に基づいて、仮想マシンの移動時間を推定させ、前記移動計画立案ステップでは、前記仮想マシン移動時間推定ステップにて推定した前記仮想マシンの移動時間に基づいて、前記仮想マシンの移動計画を立案させる、ことを特徴とする付記１３に記載のプログラム。
【０１０６】
（付記１５）前記移動対象となる仮想マシンにおける単位時間当たりのメモリ書き換え量の測定値と測定時刻とを対応付けて記憶するメモリ書き換え量格納部を具備する前記コンピュータに、前記メモリ書き換え量格納部が記憶する前記メモリ書き換え量の測定値および測定時刻に基づいて、前記移動対象となる仮想マシンの将来時刻における単位時間当たりのメモリ書き換え量を推定するメモリ書き換え量推定ステップを実行させ、前記ネットワーク帯域計算ステップでは、前記メモリ書き換え量推定ステップにて推定した、前記将来時刻における単位時間当たりのメモリ書き換え量に基づいて、前記仮想マシンの移動に必要なネットワーク帯域を計算させる、ことを特徴とする付記１４に記載のプログラム。
【０１０７】
（付記１６）前記コンピュータに、使用されているネットワーク帯域を測定するネットワーク帯域測定ステップを実行させ、前記ネットワーク帯域計算ステップでは、前記ネットワーク帯域測定ステップにて測定した前記使用されているネットワーク帯域に基づいて、前記仮想マシンの移動に必要なネットワーク帯域を調整させる、ことを特徴とする付記１４または１５に記載のプログラム。
【０１０８】
（付記１７）前記コンピュータに、前記ネットワーク帯域計算ステップでは、前記ネットワーク帯域測定ステップにて測定した前記使用されているネットワーク帯域と、前記仮想マシンの移動に必要なネットワーク帯域との総和が、ネットワークの最大帯域を超えないように、予約する前記ネットワーク帯域を調整させる、ことを特徴とする付記１６に記載のプログラム。
【０１０９】
（付記１８）前記コンピュータに、前記ネットワーク帯域計算ステップでは、前記ネットワーク帯域測定ステップにて測定した前記使用されているネットワーク帯域と、前記仮想マシンの移動に必要なネットワーク帯域との総和が、ネットワークの最大帯域を超えないように調整できない場合、ネットワーク帯域の予約に失敗したことを通知させる、ことを特徴とする付記１７に記載の仮想マシン移動方法。
【符号の説明】
【０１１０】
１００、１００Ｂ、１００Ｃ  仮想マシン移動安定化装置
１１０、１１０Ｂ、１１０Ｃ  ネットワーク帯域計算手段
１２０  仮想マシン移動時間推定手段
１３０  メモリ書き換え量推定手段
１４０  ネットワーク帯域測定手段
２００  ネットワーク帯域確保手段
３００  動的負荷分散機構
４００  仮想マシン
５００  メモリ書き換え量監視手段
６００、６００Ｂ  メモリ書き換え量格納部
７００  仮想マシン移動実行手段
【図１】
2013200615.tif 000009
【図２】
2013200615.tif 000010
【図３】
2013200615.tif 000011
【図４】
2013200615.tif 000012
【図５】
2013200615.tif 000013
【図６】
2013200615.tif 000014
【図７】
2013200615.tif 000015
【図８】
2013200615.tif 000016
【図９】
2013200615.tif 000017
【図１０】
2013200615.tif 000018
【図１１】
2013200615.tif 000019
【図１２】
2013200615.tif 000020
【図１３】
2013200615.tif 000021