(57)【要約】【課題】システム全体の負荷を分散させ、効率よく安全に仮想マシンを配置および移動する。【解決手段】仮想マシン１２２および物理マシン１２０の負荷の変化を、高次方程式等の近似式によって把握または分析することで、物理マシン１２０のリソース不足の事前検出、および中長期的に見て適切な仮想マシン１２２の配置および移動を実現する。加えて、ネットワークの負荷の変化も高次方程式等の近似式によって把握または分析することで、仮想マシン１２２、物理マシン１２０、ネットワークにおいて負荷が偏らないように、仮想マシン１２２の移動をスケジューリングする。特に、物理マシン１２０や仮想マシン１２２におけるＣＰＵ負荷のピークの重複はできるだけ回避された移動スケジュールを組む。【選択図】図１
2010117760.tif 000002
【特許請求の範囲】
【請求項１】
１以上の仮想マシンを有する複数の物理マシンと通信可能に接続し、ある物理マシン上の仮想マシンを他の物理マシン上に移動する制御を実行する仮想マシン移動管理サーバにおいて、
前記仮想マシンに対する負荷と、前記負荷が測定された時期と、を対応付けた負荷情報と、
前記物理マシン上の仮想マシンを稼動したときに、前記仮想マシンに十分な資源を割り当てることを可能とする、前記物理マシンに対する負荷に関する稼動の上限を物理マシンごとに定めた第１の閾値と、
前記仮想マシンを安全に移動することを可能とする、前記物理マシンまたは前記仮想マシンに対する負荷に関する移動の上限を物理マシンまたは仮想マシンごとに定めた第２の閾値と、
少なくとも、前記移動がなされる仮想マシンである移動仮想マシンの識別情報、前記仮想マシンの移動元となる物理マシンである移動元物理マシンの識別情報、前記仮想マシンの移動先となる物理マシンである移動先物理マシンの識別情報、および前記仮想マシンの容量から定まる前記仮想マシンの移動に要する移動時間、を対応付けた移動スケジュール情報と、
を記憶する記憶部と、
前記物理マシンから当該物理マシン上の仮想マシンに対する負荷を定期的に取得し、前記取得した負荷に基づいて前記負荷情報を生成する制御と、
前記生成された負荷情報に基づいて、前記仮想マシンに対する負荷の経時変化を近似表現した仮想マシン用関数および前記物理マシンに対する負荷の経時変化を近似表現した物理マシン用関数を生成する制御と、
前記物理マシン用関数が当該第１の閾値を超える物理マシンが存在すれば、当該物理マシンを前記移動元物理マシンとし、前記移動元物理マシンの識別情報を前記移動スケジュール情報に登録する制御と、
前記移動元物理マシン上の仮想マシンの全部または一部を前記移動仮想マシンの候補とし、前記候補となった移動仮想マシンの識別情報を前記移動スケジュール情報に登録する制御と、
前記移動仮想マシンを移動することにより、移動先となる物理マシンの前記物理マシン用関数と前記移動仮想マシンの前記仮想マシン関数との和が前記移動先となる物理マシンに定めた第１の閾値を超えない物理マシンが存在すれば、当該物理マシンを前記移動先物理マシンの候補とし、前記候補となった前記移動先物理マシンの識別情報を前記移動スケジュール情報に登録する制御と、
前記スケジュール情報に登録された、前記移動元物理マシンの前記物理マシン用関数と、前記移動仮想マシンの前記仮想マシン関数と、前記移動先物理マシンの前記物理マシン用関数とが、それぞれ前記移動元物理マシンに定めた第２の閾値と、前記移動仮想マシンに定めた第２の閾値と、前記移動先物理マシンに定めた第２の閾値とを超えない時間帯が存在し、かつ、前記移動仮想マシンの移動時間が前記時間帯に含まれれば、前記時間帯において前記移動仮想マシンを移動する制御と、
を実行する制御部と、
を有する
ことを特徴とする仮想マシン移動管理サーバ。
【請求項２】
前記記憶部は、
前記物理マシンの識別情報と、前記物理マシンの仕様情報と、前記仕様情報に基づいて定めた係数と、を対応付けた係数情報を記憶し、
前記制御部は、
前記係数情報の係数を、当該物理マシン上の仮想マシンの前記仮想マシン用関数に作用させ、または当該物理マシンの前記物理マシン用関数に作用させることにより、前記仮想マシン用関数または前記物理マシン用関数を補正する制御を実行する
ことを特徴とする請求項１に記載の仮想マシン移動管理サーバ。
【請求項３】
前記制御部は、
前記移動元物理マシンの前記物理マシン用関数に含まれるピークと重複する、前記移動仮想マシンの前記仮想マシン用関数に含まれるピークが存在すれば、当該仮想マシンを前記移動仮想マシンの候補であると優先的に定める制御を実行する
ことを特徴とする請求項１に記載の仮想マシン移動管理サーバ。
【請求項４】
前記制御部は、
前記移動仮想マシンの前記仮想マシン用関数に含まれるピークと重複する、前記移動先物理マシンの前記物理マシン用関数に含まれるピークが存在すれば、当該物理マシン以外の物理マシンを前記移動先物理マシンの候補であると優先的に定める制御を実行する
ことを特徴とする請求項１に記載の仮想マシン移動管理サーバ。
【請求項５】
前記制御部は、
前記記憶部に記憶された新たな移動スケジュール情報に含まれる移動時間が、既に決定した他の移動スケジュール情報に含まれる移動時間と全部または一部で重複し、かつ、新たな移動スケジュール情報に含まれる移動元物理マシンの識別情報および移動先物理マシンの識別情報の少なくとも一つがそれぞれ、既に決定した他の移動スケジュール情報に含まれる移動元物理マシンの識別情報および移動先物理マシンの識別情報と一致するとき、当該新たな移動スケジュール情報に基づいた仮想マシンの移動の制御は実行しない
ことを特徴とする請求項１に記載の仮想マシン移動管理サーバ。
【請求項６】
１以上の仮想マシンを有する複数の物理マシンと通信可能に接続し、ある物理マシン上の仮想マシンを他の物理マシン上に移動する制御を実行する仮想マシン移動管理サーバにおける仮想マシン移動方法において、
前記仮想マシン移動管理サーバの記憶部は、
前記仮想マシンに対する負荷と、前記負荷が測定された時期と、を対応付けた負荷情報と、
前記物理マシン上の仮想マシンを稼動したときに、前記仮想マシンに十分な資源を割り当てることを可能とする、前記物理マシンに対する負荷に関する稼動の上限を物理マシンごとに定めた第１の閾値と、
前記仮想マシンを安全に移動することを可能とする、前記物理マシンまたは前記仮想マシンに対する負荷に関する移動の上限を物理マシンまたは仮想マシンごとに定めた第２の閾値と、
少なくとも、前記移動がなされる仮想マシンである移動仮想マシンの識別情報、前記仮想マシンの移動元となる物理マシンである移動元物理マシンの識別情報、前記仮想マシンの移動先となる物理マシンである移動先物理マシンの識別情報、および前記仮想マシンの容量から定まる前記仮想マシンの移動に要する移動時間、を対応付けた移動スケジュール情報と、
を記憶しており、
前記仮想マシン移動管理サーバの制御部は、
前記物理マシンから当該物理マシン上の仮想マシンに対する負荷を定期的に取得し、前記取得した負荷に基づいて前記負荷情報を生成するステップと、
前記生成された負荷情報に基づいて、前記仮想マシンに対する負荷の経時変化を近似表現した仮想マシン用関数および前記物理マシンに対する負荷の経時変化を近似表現した物理マシン用関数を生成するステップと、
前記物理マシン用関数が当該第１の閾値を超える物理マシンが存在すれば、当該物理マシンを前記移動元物理マシンとし、前記移動元物理マシンの識別情報を前記移動スケジュール情報に登録するステップと、
前記移動元物理マシン上の仮想マシンの全部または一部を前記移動仮想マシンの候補とし、前記候補となった移動仮想マシンの識別情報を前記移動スケジュール情報に登録するステップと、
前記移動仮想マシンを移動することにより、移動先となる物理マシンの前記物理マシン用関数と前記移動仮想マシンの前記仮想マシン関数との和が前記移動先となる物理マシンに定めた第１の閾値を超えない物理マシンが存在すれば、当該物理マシンを前記移動先物理マシンの候補とし、前記候補となった前記移動先物理マシンの識別情報を前記移動スケジュール情報に登録するステップと、
前記スケジュール情報に登録された、前記移動元物理マシンの前記物理マシン用関数と、前記移動仮想マシンの前記仮想マシン関数と、前記移動先物理マシンの前記物理マシン用関数とが、それぞれ前記移動元物理マシンに定めた第２の閾値と、前記移動仮想マシンに定めた第２の閾値と、前記移動先物理マシンに定めた第２の閾値とを超えない時間帯が存在し、かつ、前記移動仮想マシンの移動時間が前記時間帯に含まれれば、前記時間帯において前記移動仮想マシンを移動するステップと、
を実行する
ことを特徴とする仮想マシン移動方法。
【請求項７】
前記仮想マシン移動管理サーバの記憶部は、
前記物理マシンの識別情報と、前記物理マシンの仕様情報と、前記仕様情報に基づいて定めた係数と、を対応付けた係数情報を記憶し、
前記仮想マシン移動管理サーバの制御部は、
前記係数情報の係数を、当該物理マシン上の仮想マシンの前記仮想マシン用関数に作用させ、または当該物理マシンの前記物理マシン用関数に作用させることにより、前記仮想マシン用関数または前記物理マシン用関数を補正するステップを実行する
ことを特徴とする請求項６に記載の仮想マシン移動方法。
【請求項８】
前記仮想マシン移動管理サーバの制御部は、
前記移動元物理マシンの前記物理マシン用関数に含まれるピークと重複する、前記移動仮想マシンの前記仮想マシン用関数に含まれるピークが存在すれば、当該仮想マシンを前記移動仮想マシンの候補であると優先的に定めるステップを実行する
ことを特徴とする請求項６に記載の仮想マシン移動方法。
【請求項９】
前記仮想マシン移動管理サーバの制御部は、
前記移動仮想マシンの前記仮想マシン用関数に含まれるピークと重複する、前記移動先物理マシンの前記物理マシン用関数に含まれるピークが存在すれば、当該物理マシン以外の物理マシンを前記移動先物理マシンの候補であると優先的に定めるステップを実行する
ことを特徴とする請求項６に記載の仮想マシン移動方法。
【請求項１０】
前記仮想マシン移動管理サーバの制御部は、
前記記憶部に記憶された新たな移動スケジュール情報に含まれる移動時間が、既に決定した他の移動スケジュール情報に含まれる移動時間と全部または一部で重複し、かつ、新たな移動スケジュール情報に含まれる移動元物理マシンの識別情報および移動先物理マシンの識別情報の少なくとも一つがそれぞれ、既に決定した他の移動スケジュール情報に含まれる移動元物理マシンの識別情報および移動先物理マシンの識別情報と一致するとき、当該新たな移動スケジュール情報に基づいた仮想マシンの移動のステップは実行しない
ことを特徴とする請求項６に記載の仮想マシン移動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化環境を実現するシステムにおける仮想マシンの配置および移動を管理する技術に関する。
【背景技術】
【０００２】
従来は、特許文献１に記載されているように、複数の仮想マシンを複数の物理マシンに配置する際、仮想マシンや物理マシンのパフォーマンスのデータの測定値をそのまま比較し、最適なパフォーマンスとなる配置を算出していた。
【特許文献１】特開２００５−１１５６５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このような従来技術では、パフォーマンス値の最大または最少を考慮して仮想マシンを配置することはできるとしているが、負荷のピークの重複による負荷の偏りを低減または回避して仮想マシンを配置することはできない。一般に、ピーク時は負荷の変動の幅が大きく、異なる業務の同時刻のピーク同士を同一物理マシンで実行すると負荷の変動が一層大きくなり、リソース不足になるリスクが大きくなる、という課題がある。
また、オンデマンドな仮想マシンの移動検討および移動実施においては、仮想マシンの移動が同時多発し、これによりネットワーク負荷が増大する、という課題がある。
このような課題が存在している以上、従来技術によるパフォーマンスは決して最適とはいえない。
【０００４】
前記事情を鑑みて、本発明では、システム全体の負荷を分散させ、効率よく安全に仮想マシンを配置および移動することを目的とする。
【課題を解決するための手段】
【０００５】
本発明では、仮想マシン、物理マシン、必要に応じてネットワークの負荷の変化等を考慮し、仮想マシンの移動スケジュールを事前に決定する。
具体的には、仮想マシン、物理マシン、必要に応じてネットワークの負荷のサイクル（経時変化）を、関数を使用して把握・分析する。これらの複数の関数の和や差の値、交点の有無等を判断の根拠にして、物理マシンのリソース不足の事前検出、および中長期的に見て適切な仮想マシンの配置を実現する。さらに、仮想マシンを移動する場合も、仮想マシンや物理マシン等、移動に関係するシステムの負荷のサイクルを、関数を使用して把握・分析し、負荷が偏らない（ピークを作らない）ように、移動をスケジューリングする。
詳細は後記する。
【発明の効果】
【０００６】
本発明により、システム全体の負荷を分散させ、効率よく安全に仮想マシンを配置および移動することができる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明を実施するための最良の形態（以下、実施形態という。）を図面に基づいて詳細に説明する。
【０００８】
本発明は、過去の実績から今後の傾向を算出し、この傾向を元に、今後の仮想化環境を最適化するシステムである。仮想化環境の最適化とは、リソース不足や負荷の偏りが発生しない仮想化環境を実現することである。本システムでは、仮想化環境を最適化するために、定期的に仮想化環境を分析し、リソース不足の恐れがある物理マシンの事前検出、仮想マシンの適切な配置、仮想マシンを移動する際のスケジューリングなどをおこなう。
【０００９】
また、本システムは本システム単独で使用するほか、オンデマンドで仮想マシンを移動するシステムと併用することも可能である。オンデマンドで仮想マシンを移動したために物理マシンのリソース不足が懸念される場合でも、本システムが定期的に最適化するため、事前にリソース不足を回避できる。
【００１０】
≪構成≫
図１は、本実施形態の一例である、仮想マシン移動システム（以下、単に、「システム」と称する場合もある。）の構成を示すものである。本実施形態では、ネットワーク１４０で通信可能に接続された管理サーバ１００と物理マシン１２０で実現されている。また、管理サーバ１００には、ＨＤＤ（Hard Disk Drive：記憶部）１３０が接続されている。
【００１１】
管理サーバ１００は、メモリ（記憶部）１０１、ＣＰＵ（Central Processing Unit：制御部）１１３、ＮＩＣ（Network Interface Card）１１４、Ｉ／Ｏ（Input/Output）１１５を備える。
【００１２】
メモリ１０１には、ＣＰＵ１１３による実行を具現化する処理部として、高次方程式処理部１０３、移動判定部１０７および移動処理部１１０が備えられている。
高次方程式処理部１０３には、高次方程式算出部１０４、閾値超え判定部１０５およびピーク重複判定部１０６、といった処理部が備えられている。
移動判定部１０７には、移動仮想マシン候補選出部１０８、移動先物理マシン候補選出部１０９、といった処理部が備えられている。
移動処理部１１０は、スケジュール調整部１１１、移動実行部１１２、といった処理部が備えられている。
これら処理部による機能については後記する。
【００１３】
ＨＤＤ１３０には、ＣＰＵ使用率測定データテーブル１３１、係数表テーブル１３２、ＣＰＵ使用率の高次方程式テーブル１３３、仮想／物理マシンの相関テーブル１３４、マシンの各種閾値テーブル１３５、ピーク判定値テーブル１３６および移動スケジュールテーブル１３７が格納される。管理サーバ１００はＩ／Ｏ１１５を介してこれらの各種テーブルにあるデータを取得したり、これらの各種テーブルに対してデータの登録を実行したりする。
【００１４】
物理マシン１２０は、メモリ１２１、ＣＰＵ１２３、ＮＩＣ１２４を備える。メモリ１２１には、１以上の仮想マシン１２２が格納される。換言すれば、物理マシン１２０は、１以上の仮想マシンを構成する機能を備えている。
【００１５】
本実施形態では、高次方程式を算出したり仮想マシン１２２の移動要否およびそのタイミングを判定したりするためのデータとしてＣＰＵ１２３の使用率を使用しているが、メモリ１２１の使用率やＩ／Ｏ使用率等、他のデータを使用しても良い。
また、本実施形態では、高次方程式処理部１０３やＣＰＵ使用率測定データテーブル１３１、係数表テーブル１３２、ＣＰＵ使用率の高次方程式テーブル１３３、マシンの各種閾値テーブル１３５が管理サーバ１００のＨＤＤ１３０に格納されているが、これらは物理マシン１２０または他のマシンに格納されていても良い。
【００１６】
≪各種テーブルの詳細≫
次に、ＨＤＤ１３０に格納された各種テーブルの詳細について説明する。
図２から図８は、ＨＤＤ１３０に格納される各種テーブル１３１から１３７のデータ構造を図示したものである。
【００１７】
図２に示すＣＰＵ使用率測定データテーブル１３１は、物理マシン１２０のＣＰＵ１２３を使用する仮想マシン１２２のＣＰＵ使用率を、仮想マシン１２２のリソース使用率として定期的に測定したデータを格納するテーブルである。ＣＰＵ使用率測定データテーブル１３１には、ＣＰＵの利用率の測定を行う月日が登録される日付１３１１、その月日において定期的に測定を行うと定めた時刻において測定されたＣＰＵ使用率（％）が登録される測定値１３１２、といったフィールドが備えられている。ＣＰＵ使用率測定データテーブル１３１は、仮想マシン１２２ごとに設けられており、物理マシン１２０は、その物理マシン１２０上の仮想マシン１２２のＣＰＵ使用率を周知の方法で測定することができ、その測定したデータを管理サーバ１００に送信することにより、このテーブルが作成される。
なお、ＣＰＵ使用率測定データテーブル１３１に登録される測定データは、前記のように仮想マシン１２２のものであっても良いし、物理マシン１２０のものであっても良い。また、仮想マシン移動システム全体のものであっても良い。
【００１８】
図３に示す係数表テーブル１３２は、システムを構成する物理マシン１２０の性能差を補正する係数を格納するテーブルである。係数表テーブル１３２には、物理マシン１２０を識別する機能を有する名称が登録される物理マシン１３２１、その物理マシン１２０のスペック（仕様情報）を示し、その物理マシンに使用されているＣＰＵのクロック周波数（ＧＨｚ）が登録されるＣＰＵ１３２２、前記スペックに応じて各物理マシン間の性能差を補正する係数が登録される係数１３２３、といったフィールドが備えられている。係数１３２３に登録される係数の測定方法としては、例えば、ベンチマークによる測定方法がある。
【００１９】
図４に示すＣＰＵ使用率の高次方程式テーブル１３３は、仮想マシン１２２のＣＰＵ使用率のサイクルを高次方程式で近似表現したものを格納するテーブルである。ＣＰＵ使用率の高次方程式テーブル１３３には、ＣＰＵの利用率の測定を行われた日（曜日等）や月等が登録される日付１３３１と、前記高次方程式における各項の係数が登録される項１３３２、といったフィールドが備えられている。高次方程式の算出に使用するデータは、ＣＰＵ使用率測定データテーブル１３１を係数表テーブル１３２で補正したデータである。そして、そのデータを基に、例えば、最小二乗法を用いて前記高次方程式を算出する。なお、ＣＰＵ使用率の高次方程式テーブル１３３に登録される高次方程式は、物理マシン１２０のものであっても良い。
【００２０】
本実施形態では、日単位、週単位、月単位の高次方程式を保持しているが、必要に応じて年単位も加えたり、日単位だけ保持したりしても良い。
また、本実施形態では、仮想マシンおよび物理マシンのＣＰＵ使用率のサイクルを近似するために高次方程式を使用しているが、三角関数や複素関数、指数対数関数等、他の関数を使用しても良い。
【００２１】
図５に示す仮想／物理マシンの相関テーブル１３４は、どの物理マシンがどの仮想マシンを有しているか、という相関関係を格納するテーブルである。また、このテーブルは、物理マシンおよび仮想マシンごとにフラグを立てるための領域を保持している。仮想／物理マシンの相関テーブル１３４には、本システムを構成する物理マシンを識別する機能を有する名称が登録される物理マシン名１３４１、その物理マシンに割り当てるフラグが登録される物理マシン用フラグ１３４２、当該物理マシン上の仮想マシンを識別する機能を有する名称が登録される仮想マシン名１３４３、その仮想マシンに割り当てるフラグが登録される仮想マシン用フラグ１３４４、といったフィールドが備えられている。
【００２２】
本実施形態では、物理マシン用フラグ１３４２の使用目的は、移動先物理マシン候補選出部１０９における仮想マシンの移動先候補（移動先物理マシン候補）の目印を設定することである。ある物理マシンが仮想マシンの移動先候補として決定した場合、当該物理マシン用フラグ１３４２には「１」というフラグが登録され、そうでない場合には、「０」というフラグが登録される。また、仮想マシン用フラグ１３４４の使用目的は、移動仮想マシン候補選出部１０８により優先的に移動する仮想マシン候補（移動仮想マシン候補）の目印を設定することである。ある仮想マシンが移動仮想マシン候補として決定した場合、当該仮想マシン用フラグ１３４４には「１」というフラグが登録され、そうでない場合には、「０」というフラグが登録される。これ等の他にも、移動禁止の仮想マシンやメンテナンス予定の物理マシンの目印を設定すること等を目的に、これらのフラグを使用しても良い。
【００２３】
図６に示すマシンの各種閾値テーブル１３５は、物理マシンおよび仮想マシンごとに、仮想化環境の実現に関するある目的を果たすときの許容範囲を示す閾値を格納するテーブルである。具体的には、このテーブルは、仮想マシンを稼働（配置）するという目的および仮想マシンを移動するという目的を果たしても良いとするリソースの使用率を示すＣＰＵ使用率（％）の上限を格納する。基本的には、本システムは、この上限を超えてしまうような目的を遂行する処理は実行しない。
【００２４】
マシンの各種閾値テーブル１３５には、本システムを構成する物理マシンおよび仮想マシンを識別する機能を有する名称が登録されるマシン１３５３、仮想マシンの稼動に関する上限を示すＣＰＵ使用率が登録される仮想マシン稼動上限（第１の閾値）１３５１、仮想マシンの移動に関する上限を示すＣＰＵ使用率が登録される仮想マシン移動上限（第２の閾値）１３５２、といったフィールドが備えられている。
【００２５】
仮想マシン稼働上限１３５１は、物理マシンにのみ設定される。仮想マシン稼働上限は、物理マシン上で仮想マシンを稼働した際に、各仮想マシンに十分にＣＰＵリソース（資源）を割り当てられる、と考えられる物理マシンのＣＰＵ使用率の上限である。仮想マシン稼働上限１３５１の値を超えた場合は、その物理マシンから別の物理マシンへ、仮想マシンをいくつか移動することが望ましい。
仮想マシン移動上限１３５２は、物理マシンおよび仮想マシンに設定される。仮想マシン移動上限は、物理マシンにおいては、その物理マシン上の他の仮想マシン等に影響を与えずに安全に仮想マシンを移動できる、と考えられるＣＰＵ使用率の上限である。また、仮想マシンにおいては、実行中のアプリケーション等に影響を与えずに安全にその仮想マシンを移動できる、と考えられるＣＰＵ使用率の上限である。仮想マシン移動上限１３５２の値を超えた場合は、仮想マシンの移動に時間がかかったり、失敗したりする可能性がある。
【００２６】
これらのＣＰＵ使用率は、高次方程式の値と比較するためのものである。また、これらのＣＰＵ使用率を設定する際は、物理マシンのオーバーヘッドやマージンを加味して設定することが望ましい。
本実施形態では、閾値としてＣＰＵ使用率を使用しているが、メモリ使用率やＩ／Ｏ使用率等の他のデータを使用しても良い。
また、本実施形態では、仮想マシン稼働上限１３５１と仮想マシン移動上限１３５２の２つのみを保持しているが、同時実行可能な仮想マシンの数等の他の値を保持しても良い。
【００２７】
図７に示すピーク判定値テーブル１３６は、高次方程式で表現したＣＰＵ使用率のサイクルのうち、どの部分を負荷のピークとして定義するかを示した値を格納するテーブルである。ピーク判定値テーブル１３６は、負荷のピークを定義する判定値が登録される判定値１３６１といったフィールドが備えられている。本実施形態では、高次方程式の値を、その最小値を０、最大値を１とした場合、0.85以上になる部分をピークとして定義している。つまり、判定値１３６１に登録される判定値を0.85とする。
【００２８】
図８に示す移動スケジュールテーブル１３７は、仮想マシンの移動スケジュールを格納するテーブルである。具体的には、どの仮想マシンをどの物理マシンからどの物理マシンに何時に移動するか、また、移動にかかる時間は何分か、という情報が移動スケジュールとして定まる。そのために、移動スケジュールテーブル１３７には、仮想マシンの移動の開始時刻が登録される開始時刻１３７１、仮想マシンの移動時間が登録される移動時間１３７２、移動する仮想マシンを識別する機能を有する名称が登録される仮想マシン１３７３、仮想マシンの移動元である物理マシンを識別する機能を有する名称が登録される移動元物理マシン１３７４、仮想マシンの移動先である物理マシンを識別する機能を有する名称が登録される移動先物理マシン１３７５、といったフィールドが備えられている。
【００２９】
≪高次方程式の概要≫
図９から図１１を参照して、高次方程式算出部１０４で算出する高次方程式の概要について説明する。具体的には、ＣＰＵ使用率測定データテーブル１３１のデータから、ＣＰＵ使用率における仮想マシンの高次方程式を算出する。さらに、仮想マシンの高次方程式から物理マシンの高次方程式を算出する。なお、ＣＰＵ使用率に限らず、メモリ使用率やＩ／Ｏ使用率も下記と同様の手順で算出できる。
【００３０】
図９は、ＣＰＵ使用率の測定データであって物理マシンのスペックを考慮して補正したものをプロットしたグラフを図示したものである。仮想マシン１２２のＣＰＵ使用率の測定データは、ＣＰＵ使用率測定データテーブル１３１に登録されるが、この登録されたデータに対して、係数表テーブル１３２の係数１３２３に登録された係数を用いて補正がなされる。その結果、その補正がなされた補正済のＣＰＵ使用率データのプロット２０１が、ＣＰＵ使用率（％）の軸と、時刻ｔの軸からなるグラフ上になされる。
【００３１】
図１０は、仮想マシンの高次方程式およびそのグラフを図示したものである。この高次方程式Ｆ（ｘ）２０２は、補正済のＣＰＵ使用率データのプロット２０１を基に、例えば最小二乗法を用いて求められる。本実施形態では、この仮想マシンの最大ＣＰＵ使用率は40％であり、高次方程式Ｆ（ｘ）２０２で描かれる、仮想マシンの高次方程式のグラフ２０３は、６時の少し前と１８時の少し後に最大となっている。また、この仮想マシンを安全に移動できるのはＣＰＵ使用率が15％（仮想マシン移動上限）以下になる２３時から０時付近と１２時前後である。
【００３２】
図１１は、物理マシンの高次方程式およびその物理マシン上の仮想マシンの高次方程式およびそれらのグラフを図示したものである。太線が物理マシンの高次方程式のグラフ２０４、細線がこの物理マシン上の仮想マシンの高次方程式のグラフ２０３である。仮想マシンの高次方程式の和が物理マシンの高次方程式である。本実施形態では、この物理マシン上の仮想マシンの移動が必要になるのは、物理マシンのＣＰＵ使用率が85％（仮想マシン稼動上限）を超えた時であり、１８時頃までに仮想マシンの移動が必要であることが示されている。また、この物理マシンから仮想マシンを安全に移動、またはこの物理マシンに仮想マシンを安全に移動できるのは、ＣＰＵ使用率が65％（仮想マシン移動上限）以下になる２３時から０時付近と１２時前後である。
【００３３】
高次方程式算出部１０４では、物理マシンごとのスペックを考慮し、ＣＰＵ使用率測定データテーブル１３１の値を補正してから高次方程式を算出する。そのため、仮想化環境に多種多様の物理マシンがある場合でも、物理マシン間の性能差を気にすることなく高次方程式を活用できる。
また、仮想マシンの高次方程式から物理マシンの高次方程式を算出するため、物理マシンのＣＰＵ使用率を測定する機能を必要としない。ただ、物理マシンのＣＰＵ使用率を測定し、仮想マシンの高次方程式を用いることなく、物理マシンの高次方程式を直接算出するようにしても良い。
また、仮想マシンおよび物理マシンのＣＰＵ使用率のサイクルを高次方程式でＣＰＵ使用率の高次方程式テーブル１３３に保持するため、すべてを測定データのまま保持するよりも長期間のデータを保持できる。
【００３４】
なお、図９に示した補正済のＣＰＵ使用率データのプロットや、図１０、図１１に示した、仮想マシンまたは物理マシンの高次方程式は、実際に測定されたＣＰＵ使用率から求めたものなので、過去のある期間、図９〜図１１のグラフでは１日間、に亘ったＣＰＵ使用率である。しかし、本システムの運用状況は、１日の間で変化することはほとんどない、という現状を踏まえれば、これらのプロットや高次方程式は、将来のある期間、例えば１日間（曜日別の１日間も含む）、１週間、１ヶ月間に亘って実現し得るＣＰＵ使用率のサイクル（経時変化）を表しているといえる。
【００３５】
≪処理≫
図１２は、仮想マシン移動システムにおける仮想化環境を最適化する処理の流れを示す図である。ＣＰＵ１１３は仮想化環境を最適化するため、定期的に、リソース不足になる可能性がある物理マシンを検出し、必要に応じて仮想マシンの移動を検討および実施する。
以下に述べる動作は、管理サーバ１００のメモリ（記憶部）１０１に格納されたプログラム（処理部）が記憶領域にロードされ、ＣＰＵ（制御部）１１３により実行されることにより、管理サーバ１００上に具現化される各処理部による実行とされるものである。また、各プログラムは予め記憶部（ＨＤＤ１３０を含む）に格納されても良いし、他の記憶媒体または通信媒体（ネットワークまたはネットワークを伝搬する搬送波）を介して、必要なときに導入されても良い。
図１２の処理は、定刻において、ＣＰＵ１１３からの命令がなされたことにより開始する（ステップＳ３０１）。
【００３６】
まず、仮想／物理マシンの相関テーブル１３４にあるすべての物理マシンを、ループ処理を実行することにより調査する（ステップＳ３０２⇔ステップＳ３１０）。このループ処理を通じて、リソース不足になる可能性がある物理マシンを検出する。
【００３７】
次に、ＣＰＵ使用率の高次方程式テーブル１３３から取得した仮想マシンの高次方程式を用いて、図１１を参照して説明した手順により物理マシンの高次方程式を取得し、そしてマシンの各種閾値テーブル１３５の仮想マシン稼動上限１３５１から当該物理マシンの仮想マシン稼動上限を取得する（ステップＳ３０３）。
【００３８】
次に、閾値超え判定を実行し、取得した物理マシンの高次方程式が、取得した仮想マシン稼動上限として示される閾値を超えるか否かを判定する（ステップＳ１０５Ａ）。閾値超え判定部１０５は、閾値超え判定による判定結果を出力する（ステップＳ３０４）。
【００３９】
前記判定結果が、物理マシンの高次方程式が仮想マシン稼動上限として示される閾値を超えるものでない場合（ステップＳ３０４でＮｏ（超えない））、この物理マシンはリソース不足になる可能性はないものと判断し、この物理マシンに対する処理を終了し（ステップＳ３１０）、他の物理マシンについてループ処理（ステップＳ３０２⇔ステップＳ３１０）を行う。すべての物理マシンについて行っていれば、ステップＳ１１２Ａに進む。一方、物理マシンの高次方程式が仮想マシン稼動上限として示さされる閾値を超えるものである場合（ステップＳ３０４でＹｅｓ（超える））、この物理マシンはリソース不足になる可能性があるものと判断し、ステップＳ１０８Ａに進む。
【００４０】
リソース不足になる可能性があると判断された物理マシンについては、移動仮想マシン候補選出部１０８による移動仮想マシン候補選出が実行される（ステップＳ１０８Ａ）。次に、移動仮想マシン候補選出により選出したすべての仮想マシンを、ループ処理を実行することにより調査する（ステップＳ３０５⇔ステップＳ３０９）。このループ処理を通じて、移動する仮想マシンを検出する。
【００４１】
次に、移動先物理マシン候補選出を実行し、移動先物理マシン候補が見つかるか否かを判定する（ステップＳ１０９Ａ）。移動先物理マシン候補選出部１０９は、移動先物理マシン候補選出による判定結果を出力する（ステップＳ３０７）。
【００４２】
前記判定結果が、移動先物理マシン候補が見つからなかったとするものである場合（ステップＳ３０７で「失敗」）、その仮想マシンの移動をキャンセルするために移動スケジュールテーブル１３７における該当箇所（レコード）を削除し（ステップＳ３０６）、ステップＳ１０９Ａに戻り、他の移動先物理マシン候補を探す。なお、移動先物理マシン候補が１つもなかった場合には、当該仮想マシンについては、仮想マシンの移動は不可と判断し、仮想化環境を最適化の処理は失敗したものとして終了する。
一方、前記判定結果が、移動先物理マシン候補が見つかったとするものである場合（ステップＳ３０７で「成功」）、移動先物理マシン候補の選出に成功したと判断し、ステップＳ１１１Ａに進む。
【００４３】
移動先物理マシン候補の選出に成功した仮想マシンについては、スケジュール調整を実行し、対象とする仮想マシンが移動先物理マシン候補に移動するスケジュールの調整が可能か否かを判定する（ステップＳ１１１Ａ）。スケジュールの調整部１１１は、スケジュール調整による判定結果を出力する（ステップＳ３０８）。
【００４４】
前記判定結果が、スケジュールの調整が不可能とするものである場合（ステップＳ３０８で「失敗」）、たとえば他のスケジュールと時間が重なった場合、その仮想マシンの移動をキャンセルするために移動スケジュールテーブル１３７における該当箇所（レコード）を削除し（ステップＳ３０６）、ステップＳ１０９Ａに戻り、他の移動先物理マシン候補を探す。なお、移動先物理マシン候補が１つもなかった場合には、当該仮想マシンについては、仮想マシンの移動は不可と判断し、仮想化環境を最適化の処理は失敗したものとして終了する。
一方、前記判定結果が、スケジュールの調整が可能とするものである場合（ステップＳ３０８で「成功」）、スケジュールの調整に成功したと判断し、当該レコードは移動スケジュールテーブル１３７に残り、この仮想マシンに対する処理を終了し（ステップＳ３０９）、他の選出した仮想マシンについてループ処理（ステップＳ３０５⇔ステップＳ３０９）を行う。すべての選出した仮想マシンについて行っていれば、ステップＳ３１０に進む。これにより、どの仮想マシンをどの物理マシンからどの物理マシンに何時に移動するか、移動スケジュールテーブル１３７に登録される。
【００４５】
次に、調整が成功したスケジュールに従って、仮想マシンの移動を実行する（ステップＳ３１３）。この実行は、移動実行部１１２によってなされる。
【００４６】
最後に、仮想マシンの移動が完了すれば、移動スケジュールテーブル１３７における該当箇所（レコード）を削除し（ステップＳ３１１）、仮想化環境を最適化の処理は成功したものとして終了する（ステップＳ３１２）。
【００４７】
本処理により、定期的に仮想化環境を最適化するため、オンデマンドな仮想マシンの移動で仮想化環境の最適化が崩れたとしても、一定期間後に再度最適化でき、中長期的に見ても安定した仮想化環境を実現できる。
【００４８】
図１３から図１８は、図１２の流れをさらに詳細化したものであり、図１に示す各処理部（１０５、１０６、１０８、１０９、１１１）の流れ（図１２のステップＳ１０５Ａ、ステップＳ１０８Ａ、ステップＳ１０９Ａ、ステップＳ１１１Ａおよび図１５のステップＳ１０６Ａ参照）である。
【００４９】
図１３は、閾値超え判定（ステップＳ１０５Ａ）の詳細な流れを示す図である。具体的には、ＣＰＵ使用率の高次方程式テーブル１３３のデータから算出した物理マシンの高次方程式（以下、図１３の説明において、単に、「高次方程式」と称する）が、マシンの各種閾値テーブル１３５から取得した閾値（つまり、仮想マシン稼動上限）を超えるかどうかを判定する。なお、高次方程式と閾値はあらかじめ与えられており、それらを取得した時点で本処理が開始する（ステップＳ４０１）。
【００５０】
与えられた閾値は物理マシン１２０のスペックに依存している。そこで閾値を補正するため、係数表テーブル１３２の係数１３２３に登録された値（つまり、係数）をかけて新閾値とする（ステップＳ４０２）。
【００５１】
次に、Ｆ（ｘ）＝［新閾値］のグラフと、Ｇ（ｘ）＝［高次方程式］のグラフをそれぞれ設定し、両者が交わるか否かを判定する（ステップＳ４０３）。両者が交われば（ステップＳ４０３でＹｅｓ）、高次方程式は閾値を超えると判定し（ステップＳ４０４）、本処理を終了する（ステップＳ４０６）。一方、両者が交わらなければ（ステップＳ４０３でＮｏ）、高次方程式は閾値を超えないと判定し（ステップＳ４０５）、本処理を終了する（ステップＳ４０６）。
【００５２】
このように閾値超え判定部１０５では、物理マシンごとのスペックを考慮し、閾値を補正しているため、高次方程式と閾値を適切に比較することができる。
【００５３】
ここで、後記の説明のために、仮想化環境を最適化に重大な影響を及ぼす負荷のピークの重複に関する概要を説明しておく。負荷のピークの重複とは、複数の仮想マシンまたは物理マシンの高次方程式が有するＣＰＵ使用率の極大付近が重複することを意味する。
図１４は、２つの高次方程式のピークの個所が重複するかどうかの判定であるピーク重複判定の概要を説明する図である。
【００５４】
ピーク重複判定の対象となる２つの高次方程式は、その最大値と最小値が異なる可能性がある（５１１、５１２参照）。そこで各高次方程式の最大値と最小値がそれぞれ0.5と０になるように、高次方程式を補正する（５１３、５１４参照）。Ｇ（ｘ）＝［補正後の２つの高次方程式の和］とすると、Ｇ（ｘ）の最大値と最小値はそれぞれ１と０になる（５１５、５１６の太線）。Ｇ（ｘ）がピークの判定値を超えなければピークは重複しないと判定し（５１５参照）、ピークの判定値を超えればピークが重複すると判定する（５１６参照）。ピークの判定値は、ピーク判定値テーブル１３６に登録された値であり、ピーク重複判定は、ピーク重複判定部１０６が実行する。
【００５５】
図１５は、図１４を実現するピーク重複判定の詳細な流れを示す図である。具体的には、ＣＰＵ使用率の高次方程式テーブル１３３から取得した２つの高次方程式（物理マシンの高次方程式でも良いし、または、仮想マシンの高次方程式でも良い。）のそれぞれのピークの個所が重複するか否かを判定する。なお、ピークの重複を分析する２つの高次方程式は、あらかじめ与えられており、それらを取得した時点で本処理が開始する（ステップＳ５０１）。
【００５６】
まず、各高次方程式のピークの箇所を明確にするため、各高次方程式を補正する（ステップＳ５０２）。具体的には、Ｆ（ｘ）＝［高次方程式］が０≦Ｆ（ｘ）≦0.5になるように補正（例えば、スケール変換の補正）する。なお、このときのｘの定義域は日単位、週単位などによって決まる。より具体的には、例えば日付１３３１に登録された値からなる単位で決まる。なお、前記補正を行った高次方程式を補正済高次方程式と称する。
【００５７】
ここで、Ｇ（ｘ）を、Ｇ（ｘ）＝[２つの補正済高次方程式の和]とする（ステップＳ５０３）。続いて、ピーク判定値テーブル１３６からピークの判定値を取得し（ステップＳ５０４）、閾値超え判定をおこなう（ステップＳ１０５Ａ）。閾値超え判定部１０５は、閾値超え判定による判定結果を出力する（ステップＳ５０５）。なお、この閾値超え判定は、図１３に示したものに準ずる。
【００５８】
前記判定結果が閾値である判定値を超えているものであれば（ステップＳ５０５でＹｅｓ）、ピークが重なると判定し（ステップＳ５０６）、本処理を終了する（ステップＳ５０８）。一方、前記判定結果が閾値である判定値を超えているものでなければ（ステップＳ５０５でＮｏ）、ピークが重ならないと判定し（ステップＳ５０７）、本処理を終了する（ステップＳ５０８）。
【００５９】
このようにピーク重複判定部１０６では、比較する高次方程式を補正するため、最大値が異なる２つの高次方程式でも、ピークの重複を適切に判定することができる。
【００６０】
図１６は、移動仮想マシン候補選出（ステップＳ１０８Ａ）の詳細な流れを示す図である。具体的には、リソース不足が懸念される物理マシンから、どの仮想マシンを移動すれば良いかを選出する。その際、物理マシンとピークが重複する仮想マシンを優先的に選出する。なお、リソース不足が懸念される物理マシンはあらかじめ与えられており、それを取得した時点で本処理が開始する（ステップＳ６０１）。
【００６１】
まず、与えられた物理マシンが有する仮想マシンの情報を取得するため、仮想／物理マシンの相関テーブル１３４を参照し、その物理マシン上の仮想マシン一覧と、ＣＰＵ使用率の高次方程式テーブル１３３を参照し、当該物理マシンおよび各仮想マシンの高次方程式と、いずれかの仮想マシンを移動した後も、まだ物理マシンのリソースが不足するかどうかを確認するため、マシンの各種閾値テーブル１３５を参照し、仮想マシン稼動上限１３５１に登録された値、つまり仮想マシン稼動上限と、をそれぞれ取得する（ステップＳ６０２）。
【００６２】
次に、前記仮想マシン一覧として取得したすべての仮想マシンを、ループ処理を実行することにより調査する（ステップＳ６０３⇔ステップＳ６０６）。このループ処理を通じて、移動できる可能性がある仮想マシンを検出する。
【００６３】
移動する仮想マシンは、物理マシン（移動元物理マシン）とピークが重複するものが望ましい。そこで、取得したすべての仮想マシンについて、物理マシンとピークが重複するかどうかピーク重複判定をする（ステップＳ１０６Ａ）。ピーク重複判定部１０６は、ピーク重複判定による判定結果を出力する（ステップＳ６０４）。
【００６４】
前記判定結果が、対象とする仮想マシンが物理マシンとピークが重複するものである場合（ステップＳ６０４でＹｅｓ）、当該仮想マシンについて仮想／物理マシンの相関テーブル１３４の仮想マシン用フラグ１３４４にフラグを立てる（ステップＳ６０５）。一方、前記判定結果が、対象とする仮想マシンが物理マシンとピークが重複するものでない場合（ステップＳ６０４でＮｏ）、特に仮想マシン用フラグ１３４４を立てることはない。そして、他の仮想マシンについてピーク重複判定を行っていなければそれを行う。すべての仮想マシンについて行っていれば、ステップＳ６０７に進む。
【００６５】
次に、前記ピーク重複判定が済んだすべての仮想マシンを、ループ処理を実行することにより調査する（ステップＳ６０７⇔ステップＳ６１１）。このループ処理を通じて、移動できる可能性がある仮想マシンを検出する。ただし、フラグが立っている仮想マシンから優先的にループ処理を行う。
【００６６】
まず、対象とする仮想マシンを、移動仮想マシン候補とし、移動スケジュールテーブル１３７に仮想マシン（つまり、自分自身）を仮想マシン１３７３に、移動元物理マシン（つまり、当該仮想マシンが現時点で存在する物理マシン）を移動元物理マシン１３７４に登録する（ステップＳ６０８）。
【００６７】
次に、登録した仮想マシンについて、Ｇ(ｘ)＝［物理マシンの高次方程式］−［追加した仮想マシンの高次方程式］となるＧ(ｘ)を求める（ステップＳ６０９）。
【００６８】
次に、Ｇ(ｘ)が、マシンの各種閾値テーブル１３５の仮想マシン稼動上限１３５２から取得した仮想マシン稼動上限（閾値）を超えているか判定する（ステップＳ１０５Ａ）。閾値超え判定部１０５は、閾値超え判定による判定結果を出力する（ステップＳ６１０）。なお、この閾値超え判定は、図１３に示したものに準ずる（Ｆ（ｘ）は仮想マシン稼動上限を物理マシンのスペックに応じて補正した新閾値）。
【００６９】
前記判定結果が、閾値である仮想マシン稼動上限を超えるものである場合（ステップＳ６１０でＹｅｓ）、他の仮想マシンについてステップＳ６０８からステップＳ１０５Ａの処理を繰り返す。これにより、Ｇ（ｘ）の最大値は次第に小さくなっていき、基本的には、閾値以下になるまで繰り返される。
【００７０】
前記判定結果が、閾値である仮想マシン稼動上限を超えるものでない場合（ステップＳ６１０でＮｏ）、本処理を終了する（ステップＳ６１２）。結果的には、閾値を超えていた間にループ処理された仮想マシンが移動仮想マシン候補として選出される。
【００７１】
このように移動仮想マシン候補選出部１０８では、物理マシンとピークが重複する仮想マシンから優先的に移動していくため、効率的に物理マシンのピークの最大値を低減できる。また、これにより、物理マシンの時間的な負荷の偏りが軽減できる。
【００７２】
本実施形態では、物理マシンとピークが重複する仮想マシンを、優先的に移動する仮想マシンとしているが、ピークが最も遅く来る仮想マシンを優先的に移動する仮想マシンとする等、他の方法で優先順位を付けても良い。
【００７３】
図１７は、移動先物理マシン候補選出（ステップＳ１０９Ａ）の詳細な流れを示す図である。具体的には、移動仮想マシン候補選出部１０８で選出され、移動スケジュールテーブル１３７に登録されている各仮想マシンを移動する先の物理マシン（移動先物理マシン）を選出する。その際、仮想マシンとピークが重複しない物理マシンを優先的に選出する。なお、移動スケジュールテーブル１３７から、移動する仮想マシン（移動仮想マシン）、移動元物理マシンはあらかじめ取得しており、それらを取得した時点で本処理が開始する（ステップＳ７０１）。
【００７４】
まず、物理マシンの情報を取得するため、仮想／物理マシンの相関テーブル１３４を参照し、物理マシン一覧と、ＣＰＵ使用率の高次方程式テーブル１３３を参照し、移動仮想マシンと各物理マシンの高次方程式と、移動仮想マシンを移動した結果、リソース不足にならないことを事前に確認するため、マシンの各種閾値テーブル１３５を参照し、仮想マシン稼動上限１３５１に登録された値、つまり各物理マシンの仮想マシン稼動上限とを、それぞれ取得する（ステップＳ７０２）。
【００７５】
次に、前記物理マシン一覧として取得した、移動元物理マシン以外のすべての物理マシンを、ループ処理を実行することにより調査する（ステップＳ７０３⇔ステップＳ７０７）。このループ処理を通じて、移動先となる可能性がある物理マシンを検出する。
【００７６】
移動先物理マシンは、移動仮想マシンの移動後もリソースが不足しない物理マシンを選出するものとする。具体的には、まず、対象とする物理マシンにおいて、Ｇ（ｘ）＝［物理マシンの高次方程式］＋［移動仮想マシンの高次方程式］となるＧ（ｘ）を求める（ステップＳ７０４）。
【００７７】
次に、Ｇ（ｘ）が、マシンの各種閾値テーブル１３５の仮想マシン稼動上限１３５１から取得した仮想マシン稼動上限（閾値）を超えるかどうかを判定する（ステップＳ１０５Ａ）。閾値超え判定部１０５は、閾値超え判定による判定結果を出力する（ステップＳ７０５）。なお、この閾値超え判定は、図１３に示したものに準ずる（Ｆ（ｘ）は仮想マシン稼動上限を、対象とする物理マシンのスペックに応じて補正した新閾値）。
【００７８】
前記判定結果が、閾値である仮想マシン稼動上限を超えないものである場合（ステップＳ７０５でＮｏ）、当該物理マシンは移動先物理マシンの候補とし、仮想／物理マシンの相関テーブル１３４の当該物理マシン用フラグ１３４２にフラグを立てる（ステップＳ７０６）。一方、前記判定結果が、閾値である仮想マシン稼動上限を超えるものである場合（ステップＳ７０５でＹｅｓ）、特に物理マシン用フラグ１３４２を立てることはない。そして、他の物理マシンについて閾値超え判定を行っていなければそれを行う。移動先物理マシン以外のすべての物理マシンについて行っていれば。ステップＳ７０８に進む。
【００７９】
次に、すべての物理マシンにおいて、仮想マシン移動後のリソース不足を確認後、仮想／物理マシンの相関テーブル１３４の物理マシン用フラグ１３４２においてフラグが１つでも立っているか否か判定する（ステップＳ７０８）。フラグが１つも立っていなければ（ステップＳ７０８でＮｏ）、適切な移動先の物理マシンがないため、移動先物理マシンの選出に失敗したと判定し（ステップＳ７１５）、本処理を終了する（ステップＳ７１６）。
【００８０】
一方、仮想／物理マシンの相関テーブル１３４の物理マシンのフラグ１３４２にフラグが１つでも立っていれば（ステップＳ７０８でＹｅｓ）、その中から適切な移動先物理マシンを選出すべく、ステップＳ７０９に進む。
【００８１】
次に、フラグが立っている物理マシンを、ループ処理を実行することにより調査する（ステップＳ７０９⇔ステップＳ７１１）。このループ処理を通じて、適切な移動先物理マシンを検出する。ただし、高次方程式Ｇ（ｘ）＝［物理マシンの高次方程式］＋［移動仮想マシンの高次方程式］の最大値が小さい物理マシンから優先的にループ処理を行う。
【００８２】
次に、対象とするすべての物理マシンについて、移動仮想マシンとピークが重複するかどうかピーク重複判定をする（ステップＳ１０６Ａ）。ピーク重複判定部１０６は、ピーク重複判定による判定結果を出力する（ステップＳ７１０）。
【００８３】
前記判定結果が、対象とする物理マシンが移動仮想マシンとピークが重複するものである場合（ステップＳ７１０でＹｅｓ）、Ｇ（ｘ）＝［物理マシンの高次方程式］＋［移動仮想マシンの高次方程式］の最大値、つまりＣＰＵ負荷が一番小さい物理マシンを移動先物理マシンとして選出し（ステップＳ７１２）、ステップＳ７１３に進む。
一方、前記判定の判定結果が、対象とする物理マシンが移動仮想マシンとピークが重複しないものである場合は（ステップＳ７１０でＮｏ）、そのままステップＳ７１３に進む。
【００８４】
次に、ピークが重複する物理マシンのうちＣＰＵ負荷が最も小さい物理マシン、またはピークが重複しない物理マシンを、移動先物理マシンとして決定し、決定した移動先物理マシンを移動スケジュールテーブル１３７の移動先物理マシン１３７５に登録し（ステップＳ７１３）、適切な移動先の物理マシンがあったため、移動先物理マシン候補の選出が成功したと判定し（ステップＳ７１４）、本処理を終了する（ステップＳ７１６）。
【００８５】
このように移動先物理マシン候補選出部１０９では、仮想マシンとピークが重複しない物理マシンを優先的に移動先物理マシン候補とするため、物理マシンの時間的な負荷の偏りが軽減できる。また、ピークが重複しない物理マシンがなかったとしても、リソース使用率の最大値が最も小さい物理マシンを移動先物理マシン候補とするため、マシンごとの負荷の偏りが軽減できる。
【００８６】
本実施形態では、仮想マシンと物理マシンのピークが重複しないことを最優先事項としているが、リソース使用率が小さいこと等、他の条件を最優先事項としても良い。
【００８７】
図１８は、スケジュール調整（ステップＳ１１１Ａ）の詳細な流れを示す図である。具体的には、移動スケジュールテーブル１３７に新しく登録された移動スケジュールについて、他の移動スケジュールとかぶらないように、新しい移動スケジュールを組む。この際、移動に関係する仮想マシンおよび物理マシンのＣＰＵ使用率が低い時間帯を選んで、移動スケジュールを組む。なお、移動スケジュールテーブル１３７から、移動仮想マシン、移動元物理マシン、移動先物理マシンはあらかじめ取得しているおり、それらを取得した時点で本処理が開始する（ステップＳ８０１）。
【００８８】
まず、仮想マシン移動できる時間を算出するため、ＣＰＵ使用率の高次方程式テーブル１３３を参照し、移動仮想マシン、移動元物理マシン、移動先物理マシンの高次方程式を取得し、マシンの各種閾値テーブル１３５を参照し、移動仮想マシン、移動元物理マシン、移動先物理マシンの仮想マシン移動上限１３５２に登録された値、つまり仮想マシン移動上限と、仮想マシンの移動にかかる時間を算出するため、物理マシン１２０から仮想マシン１２２のファイルサイズ（容量）を取得する（ステップＳ８０２）。
【００８９】
次に、移動仮想マシン、移動元物理マシン、移動先物理マシンにおいて、仮想マシンを安全に移動可能な時間帯、つまり、各高次方程式が各仮想マシン移動上限を下回る時間帯であるか否か判定する。このとき、それらが同じ時間帯であるかも含めて判定する（ステップＳ８０３）。各高次方程式が同じ時間帯に各仮想マシン移動上限を下回らない場合（ステップＳ８０３でＮｏ）、仮想マシンを安全に移動できる時間帯がないものとして、スケジュール調整が失敗したと判定し（ステップＳ８１１）、本処理を終了する（ステップＳ８１２）。
【００９０】
高次方程式が同じ時間帯に各仮想マシン移動上限を下回る場合（ステップＳ８０３でＹｅｓ）、つまり、仮想マシンを安全に移動できる時間帯がある場合は、取得した仮想マシンのファイルサイズから仮想マシンの移動にかかる時間を算出する。
【００９１】
次に、算出した時間に対して、仮想マシンを安全に移動できると判断した時間帯の時間幅が、仮想マシンを移動するのに十分な時間幅であるか否か判定する（ステップＳ８０５）。たとえば、仮想マシンの移動時間に１０分かかる場合、仮想マシンを安全に移動できる時間帯も１０分以上の時間幅が必要である。
【００９２】
移動にかかる時間に対して時間幅が短い場合（ステップＳ８０５でＮｏ）、仮想マシンを安全に移動できる時間帯がないものとして、スケジュール調整が失敗したと判定し（ステップＳ８１１）、本処理を終了する（ステップＳ８１２）。
一方、仮想マシンを安全に移動できる時間帯の時間幅が移動にかかる時間に対して十分な時間幅がある場合（ステップＳ８０５でＹｅｓ）、仮想マシンを安全に移動できる時間帯があるものとし、移動スケジュールテーブル１３７に移動仮想マシンのその時間帯の開始時刻と移動時間を登録する（ステップＳ８０６）。
【００９３】
次に、移動スケジュールテーブル１３７に登録した移動スケジュールと決定済みの他の移動スケジュール（決定済み移動スケジュール）を開始時刻でソートする（ステップＳ８０７）。
【００９４】
次に、登録した移動スケジュールと同じ時刻に仮想マシンを移動する決定済み移動スケジュールがあるか否か判定する（ステップＳ８０８）。同じ時刻の決定済み移動スケジュールがなければ（ステップＳ８０８でＮｏ）、スケジュール調整が成功したと判定し（ステップＳ８１０）、本処理を終了する（ステップＳ８１２）。
【００９５】
一方、同じ時刻の決定済み移動スケジュールがあれば（ステップＳ８０８でＹｅｓ）、登録した移動スケジュールと決定済み移動スケジュールにおいて、同じ物理マシンが関係しているか否かを判定する（ステップＳ８０９）。同じ物理マシンが関係していれば（ステップＳ８０９でＹｅｓ）、移動が衝突してしまうため、前記登録したスケジュールは実施できないものとし、スケジュール調整が失敗したと判定し（ステップＳ８１１）、本処理を終了する（ステップＳ８１２）。
逆に、同じ物理マシンが関係していなければ（ステップＳ８０９でＮｏ）、同じ時刻の移動スケジュールでも、関係する物理マシンが異なることを意味し、移動が衝突しないため、スケジュール調整が成功したと判定し（ステップＳ８１０）、本処理を終了する（ステップＳ８１２）。
【００９６】
なお、移動が衝突するとは、２つの移動スケジュールにおいて、仮想マシンを移動する時刻の全部または一部が同時刻であり、かつ同じ物理マシン（移動元物理マシンおよび移動先物理マシンの少なくとも一つ）を使用することをいう。
【００９７】
本実施形態では、登録した移動スケジュールが決定済み移動スケジュールと衝突する場合、登録した移動スケジュールを失敗と判定し、当該処理をキャンセルした。しかし、登録した移動スケジュールまたは他の決定済み移動スケジュールの移動可能な時間帯を再計算して移動スケジュールし直すことも可能である。
また、移動先物理マシンを変更して、移動スケジュールし直すことも可能である。
【００９８】
≪まとめ≫
本実施形態により、システム全体の負荷を分散させ、効率よく安全に仮想マシンを配置および移動することができる。
基本的に負荷のピークの重複は避けるようにして移動スケジュールを調整するので、リソース不足になるリスクは大きく軽減される。
オンデマンドな仮想マシンの移動検討および移動実施がなされたとしても、その後になされる定期的な移動スケジュールの調整により、最適な移動スケジュールが組まれる。そのため、仮想マシンの移動の同時多発が回避でき、ネットワーク負荷は縮小する。
【００９９】
≪その他≫
以上本発明の実施形態についての一例を示したが、本発明は、これに限定されず、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【０１００】
例えば、本実施形態では、仮想マシンと物理マシンの負荷を考慮しているが、この他にこれらに対するネットワークの負荷を考慮に入れても良い。この場合において、物理マシンを識別する識別情報は、本実施形態のような物理マシン名ではなく、対応するネットワークの識別情報である。また、物理マシンの仕様情報を用いる代わりに、対応するネットワークの仕様情報を用いる。また、仮想マシンの負荷を近似的に表現する関数を算出する代わりに、対応するネットワークの負荷を近似的に表現する関数を算出する。ネットワークの負荷は、主に、そのネットワーク上を経由するパケットのパケット量から算出される。
【０１０１】
また、本実施形態の仮想マシンは、一つの物理マシン上に構成されているものを扱った（例えば、図５参照）。しかし、複数の物理マシン上に構成される仮想マシンに対しても本発明を適用することは可能である。この場合において、その仮想マシンのファイルサイズが各物理マシンにどの程度の割合で占められているかを示す数値を登録するフィールドを図５の仮想／物理マシンの相関テーブル１３４に備えるようにすれば、物理マシンの仕様情報だけでなく、前記割合も考慮してＣＰＵ使用率を補正する等の処理を経て仮想マシンの高次方程式を生成することが可能である。
【０１０２】
その他、ハードウェア、ソフトウェア、各フローチャートなどの具体的な構成について、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【０１０３】
【図１】本実施形態の一例である、仮想マシン移動システムの構成を示すものである。
【図２】ＣＰＵ使用率測定データテーブルのデータ構造を図示したものである。
【図３】係数表テーブルのデータ構造を図示したものである。
【図４】ＣＰＵ使用率の高次方程式テーブルのデータ構造を図示したものである。
【図５】仮想／物理マシンの相関テーブルのデータ構造を図示したものである。
【図６】マシンの各種閾値テーブルのデータ構造を図示したものである。
【図７】ピーク判定値テーブルのデータ構造を図示したものである。
【図８】移動スケジュールテーブルのデータ構造を図示したものである。
【図９】ＣＰＵ使用率の測定データであって物理マシンのスペックを考慮して補正したものをプロットしたグラフを図示したものである。
【図１０】仮想マシンの高次方程式およびそのグラフを図示したものである。
【図１１】物理マシンの高次方程式およびその物理マシン上の仮想マシンの高次方程式およびそれらのグラフを図示したものである。
【図１２】仮想マシン移動システムにおける仮想化環境の最適化の流れを示す図である。
【図１３】閾値超え判定の流れを示す図である。
【図１４】ピーク重複判定の概要を説明する図である。
【図１５】ピーク重複判定の詳細な流れを示す図である。
【図１６】移動仮想マシン候補選出の詳細な流れを示す図である。
【図１７】移動先物理マシン候補選出の詳細な流れを示す図である。
【図１８】スケジュール調整の詳細な流れを示す図である。
【符号の説明】
【０１０４】
１００  管理サーバ
１２０  物理マシン
１２２  仮想マシン
１０４  高次方程式算出部
１０５  閾値超え判定部
１０６  ピーク重複判定部
１０８  移動仮想マシン候補選出部
１０９  移動先物理マシン候補選出部
１１１  スケジュール調整部
１１２  移動実行部
１３１  ＣＰＵ使用率測定データテーブル
１３２  係数表テーブル
１３３  ＣＰＵ使用率の高次方程式テーブル
１３４  仮想／物理マシンの相関テーブル
１３５  マシンの各種閾値テーブル
１３６  ピーク判定値テーブル
１３７  移動スケジュールテーブル
【図１】
2010117760.tif 000003
【図２】
2010117760.tif 000004
【図３】
2010117760.tif 000005
【図４】
2010117760.tif 000006
【図５】
2010117760.tif 000007
【図６】
2010117760.tif 000008
【図７】
2010117760.tif 000009
【図８】
2010117760.tif 000010
【図９】
2010117760.tif 000011
【図１０】
2010117760.tif 000012
【図１１】
2010117760.tif 000013
【図１２】
2010117760.tif 000014
【図１３】
2010117760.tif 000015
【図１４】
2010117760.tif 000016
【図１５】
2010117760.tif 000017
【図１６】
2010117760.tif 000018
【図１７】
2010117760.tif 000019
【図１８】
2010117760.tif 000020