(57)【要約】課題  仮想マシンが分散配置されるシステムにおいて、突発的な負荷変動に対して、必要な実効性能が得られる形で即座に仮想マシンを再配置し、さらに、再配置中にシステム全体の動作を継続する。解決手段  単一のサーバ装置３全体についての資源使用状況と、サーバ装置上で動作する仮想マシン３３による資源使用状況とについての測定データを用いて資源の競合を検出する資源競合検出手段１２と、資源の競合が検出されたサーバ装置上の仮想マシンを、資源使用率の低い他のサーバ装置に移動させる仮想マシン再配置決定手段１３とを含む。
2008062864.tif 000002
【特許請求の範囲】
【請求項１】
単一のサーバ装置全体についての資源使用状況と、前記サーバ装置上で動作する仮想マシンによる資源使用状況とについての測定データを用いて資源の競合を検出する資源競合検出手段と、
前記資源の競合が検出された前記サーバ装置上の前記仮想マシンを、資源使用率の低い他のサーバ装置に移動させる仮想マシン再配置決定手段と
を備えることを特徴とする仮想マシン配置システム。
【請求項２】
前記測定データを、当該サーバ装置からネットワーク経由で収集する資源使用状況収集手段
を備えることを特徴とする請求項１に記載の仮想マシン配置システム。
【請求項３】
前記資源競合検出手段が、
前記単一のサーバ装置全体についての資源使用率が事前に指定された一定値以上であり、かつ当該サーバ装置上で動作する複数の仮想マシンによる資源使用率が別に指定された一定値以上である場合に資源競合と判断する
ことを特徴とする請求項１または請求項２に記載の仮想マシン配置システム。
【請求項４】
前記資源競合検出手段が、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項１から請求項３のいずれか１項に記載の仮想マシン配置システム。
【請求項５】
前記仮想マシン再配置決定手段が、
競合の発生した前記サーバ装置上で動作する仮想マシンの中から最も資源使用率の高いものを移動対象として選択し、
全前記サーバ装置のうち最も資源使用率の低いものを移動先として選択する
ことを特徴とする請求項１から請求項４のいずれか１項に記載の仮想マシン配置システム。
【請求項６】
前記仮想マシン再配置決定手段が、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項５に記載の仮想マシン配置システム。
【請求項７】
前記仮想マシン再配置決定手段が、
移動先として選択した前記サーバ装置についてロックを獲得し、
前記仮想マシンの移動処理を完了させた後に当該ロックを解放する
ことを特徴とする請求項１から請求項６のいずれか１項に記載の仮想マシン配置システム。
【請求項８】
サーバ装置間で仮想マシンを移動させる仮想マシン配置方法であって、
資源競合検出手段において、
単一のサーバ装置全体についての資源使用状況と、前記サーバ装置上で動作する仮想マシンによる資源使用状況とについての測定データを用いて資源の競合を検出し、
仮想マシン再配置決定手段において、
前記資源の競合が検出された前記サーバ装置上の前記仮想マシンを、資源使用率の低い他のサーバ装置に移動させる
ことを特徴とする仮想マシン配置方法。
【請求項９】
資源使用状況収集手段において、
前記測定データを、当該サーバ装置からネットワーク経由で収集する
ことを特徴とする請求項８に記載の仮想マシン配置方法。
【請求項１０】
前記資源競合検出手段において、
前記単一のサーバ装置全体についての資源使用率が事前に指定された一定値以上であり、かつ当該サーバ装置上で動作する複数の仮想マシンによる資源使用率が別に指定された一定値以上である場合に資源競合と判断する
ことを特徴とする請求項８または請求項９に記載の仮想マシン配置方法。
【請求項１１】
前記資源競合検出手段において、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項８から請求項１０のいずれか１項に記載の仮想マシン配置方法。
【請求項１２】
前記仮想マシン再配置決定手段において、
前記仮想マシンの移動先を決定する際に、
競合の発生した前記サーバ装置上で動作する仮想マシンの中から最も資源使用率の高いものを移動対象として選択し、
全前記サーバ装置のうち最も資源使用率の低いものを移動先として選択する
ことを特徴とする請求項８から請求項１１のいずれか１項に記載の仮想マシン配置方法。
【請求項１３】
前記仮想マシン再配置決定手段において、
前記仮想マシンの移動先を決定する際に、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項１２に記載の仮想マシン配置方法。
【請求項１４】
前記仮想マシン再配置決定手段において、
前記仮想マシンを移動させる際に、
移動先として選択した前記サーバ装置についてロックを獲得し、
前記仮想マシンの移動処理を完了させた後に当該ロックを解放する
ことを特徴とする請求項８から請求項１３のいずれか１項に記載の仮想マシン配置方法。
【請求項１５】
サーバ装置間で仮想マシンの移動を実行させるプログラムであって、
前記サーバ装置又はネットワークを介して前記サーバ装置と接続する管理端末において、
単一のサーバ装置全体についての資源使用状況と、前記サーバ装置上で動作する仮想マシンによる資源使用状況とについての測定データを用いて資源の競合を検出する資源競合検出機能と、
前記資源の競合が検出された前記サーバ装置上の前記仮想マシンを移動対象として選択する移動対象選択機能と、
資源使用率の低い他のサーバ装置を移動対象の前記仮想マシンの移動先として選択する移動先選択機能と
を実現させることを特徴とするプログラム。
【請求項１６】
前記サーバ装置又は前記ネットワークを介して前記サーバ装置と接続する管理端末において、
前記測定データを、当該サーバ装置から前記ネットワーク経由で収集する資源使用状況収集機能を実現させることを特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記資源競合検出機能において、
前記単一のサーバ装置全体についての資源使用率が事前に指定された一定値以上であり、かつ当該サーバ装置上で動作する複数の仮想マシンによる資源使用率が別に指定された一定値以上である場合に資源競合と判断する
ことを特徴とする請求項１５または請求項１６に記載のプログラム。
【請求項１８】
前記資源競合検出機能において、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項１５から請求項１７のいずれか１項に記載のプログラム。
【請求項１９】
前記移動対象選択機能において、
競合の発生した前記サーバ装置上で動作する仮想マシンの中から最も資源使用率の高いものを移動対象として選択し、
前記移動先選択機能において、
全前記サーバ装置のうち最も資源使用率の低いものを移動先として選択する
ことを特徴とする請求項１５から請求項１８のいずれか１項に記載のプログラム。
【請求項２０】
前記移動対象選択機能および前記移動先選択機能において、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項１９に記載のプログラム。
【請求項２１】
前記移動先選択機能において、
移動先として選択した前記サーバ装置についてロックを獲得し、
前記仮想マシンの移動処理を完了させた後に当該ロックを解放する
ことを特徴とする請求項１５から請求項２０のいずれか１項に記載のプログラム。
【請求項２２】
複数のサーバ装置から資源使用状況についての測定データを受け取る資源使用状況収集手段と、
前記測定データに基づいて、資源の競合が検出された前記サーバ装置上の仮想マシンを移動対象として、移動対象の前記仮想マシンと移動先のサーバ装置を選択する仮想マシン再配置決定手段と
を備えることを特徴とする仮想マシン管理装置。
【請求項２３】
受け取った前記測定データに基づいて資源の競合を検出する資源競合検出手段
を備えることを特徴とする請求項２２に記載の仮想マシン管理装置。
【請求項２４】
自身の上で複数の仮想マシンが稼動し、
自身が備える資源について、全体の使用状況と、稼動中の前記仮想マシンによる使用状況とを取得する資源使用状況取得手段と、
取得した前記使用状況に基づいて自身の上で稼動する前記仮想マシンの移動を制御する仮想マシン制御手段と
を備えることを特徴とするサーバ装置。
【請求項２５】
取得した前記使用状況についての測定データに基づいて資源の競合を検出する資源競合検出手段
を備えることを特徴とする請求項２４に記載のサーバ装置。
【請求項２６】
前記資源使用状況取得手段が、他のサーバ装置が備える資源について、全体の使用状況と、他のサーバ装置上で稼動中の前記仮想マシンによる使用状況とを取得し、
前記仮想マシン制御手段が、取得した前記使用状況に基づいて、前記資源の競合が検出された前記サーバ装置上の前記仮想マシンを移動対象として、移動対象の前記仮想マシンと移動先のサーバ装置を選択する仮想マシン再配置決定手段
を備えることを特徴とする請求項２４または請求項２５に記載のサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン配置システム、仮想マシン配置方法に関し、特に、稼働時の資源競合状況に基づいて仮想マシンの配置を変更する仮想マシン配置システム、仮想マシン配置方法、仮想マシン管理装置、プログラムおよびサーバ装置に関する。
【背景技術】
【０００２】
単一のサーバ装置（ワークステーションやパーソナルコンピュータ、サーバ専用機等のコンピュータ）上で複数のオペレーティングシステム（ＯＳ）を動作させることにより、１台のコンピュータを仮想的に複数台のサーバとして使うことのできる仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）技術が知られている。この種の技術を適用した製品として、ヴイエムウェア社による「ＶＭＷａｒｅ（登録商標）  ＥＳＸ  Ｓｅｒｖｅｒ」、マイクロソフト（登録商標）社による「ＶｉｒｔｕａｌＳｅｒｖｅｒ」、および米国ＸｅｎＳｏｕｒｃｅ社による「Ｘｅｎ」などが知られている。これらの製品では、仮想マシン生成用のコマンドを発行することにより新たな仮想マシンを、サーバ装置上に生成することができる。【０００３】
また、サーバ装置がネットワークを通じて複数台接続された分散プロセッサ環境において、或るサーバ装置に生成された仮想マシンを他のサーバ装置に移動させる技術が知られている。仮想マシンの移動技術を記載した文献としては、例えば、特開平１０−２８３２１０号公報（特許文献１）がある。また、このような技術は、ＶＭｗａｒｅ（登録商標）ではｖＭｏｔｉｏｎ、Ｘｅｎではｍｉｇｒａｔｉｏｎとして仮想マシンの移動機能を提供している。【０００４】
このようにサーバ装置が複数台に分散した環境において、各仮想マシンはそれぞれ異なる性能要件を持つことから、どの仮想マシンをどのサーバ装置に配置するか（以下、仮想マシンの配置）は、仮想マシンの実効性能に影響を与える。【０００５】
仮想マシンの配置を決定する方法として、特開２００５−１１５６５３号公報（特許文献２）に記載されるように、既存の仮想マシンの性能を示す実測データに基づいて、各仮想マシンと各サーバ装置の可能な組合せのそれぞれについて性能値の合計を算出し、それが最大になるように各仮想マシンの再配置を行う方法が知られている。
【特許文献１】特開平１０−２８３２１０号公報
【特許文献２】特開２００５−１１５６５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述した通り、特許文献記載の技術では、配置対象となる仮想マシンにおける過去の性能データに基づいて、仮想マシンの配置を決定している。【０００７】
この方法の第１の問題点は、仮想マシン上の負荷の変動に対して、仮想マシンの再配置を迅速に行えないということである。【０００８】
その理由は、性能データを一定期間（典型的には数分間から数時間）に渡って収集する必要があるために、突発的な負荷の上昇を検出できないためである。【０００９】
第２の問題点は、仮想マシン上に構築されたシステムを一時的に利用できない状況が発生することである。【００１０】
その理由は、既存のすべての仮想マシンが再配置の対象となるために、再配置作業の途中ではシステムが一時的な停止状態となるためである。【００１１】
（発明の目的）
本発明の目的は、突発的な負荷の上昇に起因する性能低下が発生した場合に、直ちに仮想マシンを再配置することによって、最適な仮想マシンの配置を維持できる仮想マシン配置システムを提供することにある。【００１２】
本発明の他の目的は、再配置の対象となる仮想マシンを限定することによって、仮想マシン上のシステムを稼動したまま、仮想マシンを再配置できる仮想マシン配置システムを提供することである。
【課題を解決するための手段】
【００１３】
本発明の仮想マシン配置システムは、単一のサーバ装置全体についての資源使用状況と、サーバ装置上で動作する仮想マシンによる資源使用状況とについての測定データを用いて資源の競合を検出する資源競合検出手段と、資源の競合が検出されたサーバ装置上の仮想マシンを、資源使用率の低い他のサーバ装置に移動させる仮想マシン再配置決定手段とを含む。
【発明の効果】
【００１４】
本発明によれば、以下の効果を達成することができる。【００１５】
第１の効果は、突発的な負荷状況の変動に対応して、即座に仮想マシンを再配置できることにある。【００１６】
第２の効果は、仮想マシン上で動作するシステムを止めることなく、仮想マシンを再配置できることにある。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施の形態による仮想マシン配置システムの構成を示すブロック図である。
【図２】第１の実施の形態の仮想マシンによるＣＰＵ使用率の概念を説明するための図である。
【図３】第１の実施の形態の資源使用状況記憶手段１４に格納される資源使用状況データ３１１の構成例を示す図である。
【図４】第１の実施の形態による仮想マシン配置システムの仮想マシン管理装置１のハードウェア構成例を示すブロック図である。
【図５】第１の実施の形態による資源使用状況収集手段１１の動作手順を説明するフローチャートである。
【図６】第１の実施の形態による資源競合検出手段１２の動作手順を説明するフローチャートである。
【図７】第１の実施の形態による仮想マシン再配置決定手段１３の動作手順を説明するフローチャートである。
【図８】本発明の第２の実施の形態による仮想マシン配置システムの構成を示すブロック図である。
【図９】第２の実施の形態における資源使用状況収集手段１１の動作手順を説明するフローチャートである。
【図１０】第２の実施の形態におけるサーバ内資源競合検出手段３４の動作手順を説明するフローチャートである。
【図１１】本発明の第３の実施の形態による仮想マシン配置システムの構成を示すブロック図である。
【図１２】第３の実施の形態による仮想マシン再配置決定手段１３の動作手順を説明するフローチャートである。
【発明を実施するための最良の形態】
【００１８】
（第１の実施の形態）
本発明の第１の実施の形態による仮想マシン配置システムについて図面を参照して詳細に説明する。【００１９】
（第１の実施の形態の構成）
図１は、本実施の形態による仮想マシン配置システムの構成を示すブロック図である。【００２０】
図１を参照すると、本実施の形態による仮想マシン配置システムは、仮想マシン管理装置１と、管理端末２と、複数のサーバ装置３とを備えている。【００２１】
仮想マシン管理装置１は、プログラム制御により動作するコンピュータであって、資源使用状況収集手段１１と、資源競合検出手段１２と、仮想マシン（ＶＭ）再配置決定手段１３と、資源使用状況記憶手段１４とを含む。【００２２】
管理端末２は、仮想マシン管理装置１に接続され、システム管理者によって操作される端末装置（コンソール）である。管理端末２は、通常、表示装置（ディスプレイ、モニタ）とキーボード、およびマウス等を備える。図１を参照すると、管理端末２は、仮想マシン管理装置１に直接接続される形態になっているが、ネットワーク４を介して接続される形態であってもよい。【００２３】
サーバ装置３は、１つまたは複数の仮想マシンを稼動させる能力を持つコンピュータであって、資源使用情報収集手段３１と、仮想マシン制御手段３２と、複数の仮想マシン３３とを含む。【００２４】
仮想マシン管理装置１およびサーバ装置３（さらに、場合により管理端末２）は、ネットワーク４を介して相互に接続される。ネットワーク４は、イーサネット（Ｅｔｈｅｒｎｅｔ（登録商標））などのローカルエリアネットワーク（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ，  ＬＡＮ）、インターネットなどの広域ネットワーク（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ，  ＷＡＮ）、それらの混合のいずれでもよい。【００２５】
これらの各手段は、それぞれ概略つぎのような機能を有する。【００２６】
資源使用状況収集手段１１は、ネットワーク４を介して、最新の資源使用状況を示す資源使用状況データ３１１（不図示）を複数の資源使用状況取得手段３１から取得する機能と、取得した資源使用状況データ３１１を資源使用状況記憶手段１４に格納する機能とを有する。【００２７】
資源使用状況データ３１１の典型的な例は、サーバ装置３全体についてのＣＰＵ（プロセッサ、中央処理装置、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）使用率と、サーバ装置３上で動作する各仮想マシン３３によって使用されるＣＰＵ使用率と、メモリ（主記憶、ｍａｉｎ  ｍｅｍｏｒｙ）使用量、Ｉ／Ｏ（入出力、ｉｎｐｕｔ／ｏｕｔｐｕｔ）帯域幅（バンド幅、ｂａｎｄｗｉｄｔｈ）などを含むデータである。【００２８】
資源競合検出手段１２は、資源使用状況収集手段１１によって資源使用状況取得手段３１から収集された資源使用状況データ３１１に基づいて、資源競合状態の有無を判別する機能を有する。【００２９】
資源競合状態とは、単一のサーバ装置３上で動作する２つ以上の仮想マシン３３が、同一種類の資源について高負荷状態であることを指す。資源競合状態の具体的な判断基準の一例は、単一のサーバ装置３全体についてのＣＰＵ使用率が所定の閾値（例えば８０％）に達しており、かつその単一のサーバ装置３上で動作する仮想マシン３３のうち少なくとも２つについて、ＣＰＵ使用率が別の所定の閾値（例えば１０％）に達している場合に資源競合状態であると判断するものである。【００３０】
仮想マシン再配置決定手段１３は、資源競合検出手段１２によって資源競合状態と判断されたサーバ装置３に関し、そのサーバ装置３上で動作する仮想マシン３３について移動先のサーバ装置３を決定するとともに、その決定に従って仮想マシン３３の移動を制御する機能を有する。ここでの移動先のサーバ装置３の決定方法の一例は、サーバ装置３全体についてのＣＰＵ使用率が最も低いものを選択するというものである。【００３１】
資源使用状況記憶手段１４は、資源使用状況データ３１１を格納する機能を有する。【００３２】
資源使用状況取得手段３１は、サーバ装置３とその上で動作する仮想マシン３３について、ＣＰＵ使用率、メモリ（主記憶、ｍａｉｎ  ｍｅｍｏｒｙ）使用量、Ｉ／Ｏ（入出力、ｉｎｐｕｔ／ｏｕｔｐｕｔ）帯域幅（バンド幅、ｂａｎｄｗｉｄｔｈ）などを示す資源使用状況データ３１１を定期的に取得し、その結果を資源情報収集手段１１に送付する機能を有する。【００３３】
仮想マシン制御手段３２は、仮想マシン移動制御手段１３からの命令に従って、既存の仮想マシン３３の移動を制御する機能を有する。この機能は、典型的には、移動元のサーバ装置３における仮想マシン３３の実行状態の保存および仮想マシン３３の停止や、移動先のサーバ装置３における仮想マシン３３の実行状態の復元および仮想マシン３３の起動等の各処理を実行する。【００３４】
上記の資源使用状況取得手段３１および仮想マシン制御手段３２は、前出の仮想マシン製品（ＶＭｗａｒｅ（登録商標），  Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｖｉｒｔｕａｌ  Ｓｅｒｖｅｒ，  Ｘｅｎなど）によって提供される機能を利用する。【００３５】
ここで、サーバ装置３全体についてのＣＰＵ使用率及び仮想マシン３３によるＣＰＵ使用率の詳細を説明する。【００３６】
まず、資源使用状況記憶手段１４に格納される資源使用状況データ３１１について説明すると、資源使用状況データ３１１に含まれる項目は、例えば、（１）単一のサーバ装置３全体についてのＣＰＵ使用率（以下、全ＣＰＵ使用率と表記）や、（２）サーバ装置３上で稼動する各仮想マシン３３によるＣＰＵ使用率である。【００３７】
次に、上記の全ＣＰＵ使用率および仮想マシン３３によるＣＰＵ使用率の概念を説明する。【００３８】
全ＣＰＵ使用率は、単一のサーバ装置３に搭載されたＣＰＵのＣＰＵ使用率のうち、資源使用状況取得手段３１が資源使用状況データ３１１を取得したデータ取得時刻までの一定時間（例えば１分間）におけるＣＰＵの使用率を意味する。その最大値は１００％である。この全ＣＰＵ使用率は、単一のサーバ装置３が複数個のＣＰＵあるいはＣＰＵコアを搭載する場合、それらのＣＰＵまたはＣＰＵコアについての使用率の平均を取り、最大値が１００％になるように正規化されて算出される。【００３９】
図２は、本実施の形態の仮想マシンによるＣＰＵ使用率の概念を説明するための図である。【００４０】
単一のサーバ装置３上で稼動する仮想マシンモニタ（ＶＭＭ）と複数の仮想マシン３３とは、それぞれ全ＣＰＵ使用率のうちの一部を使用する。図２の例では、仮想マシンモニタと２つの仮想マシン３３（ＶＭ１、ＶＭ２）がサーバ装置３上で稼動しており、ＶＭ１とＶＭ２はそれぞれ３０％および４０％のＣＰＵ時間を使用している。すなわち、ＶＭ１およびＶＭ２によるＣＰＵ使用率はそれぞれ３０％、４０％である。【００４１】
一般に、単一のサーバ装置３における全ＣＰＵ使用率の値は、そのサーバ装置３上で稼動する仮想マシンモニタ（ＶＭＭ）によるＣＰＵ使用率とすべての仮想マシン３３によるＣＰＵ使用率（ＶＭ１（３０％）、ＶＭ２（４０％））の和よりも若干小さい。【００４２】
次に、資源使用状況データ３１１の構成について説明する。資源使用状況データ３１１は、必ずしもＣＰＵ使用率に限定されない。資源使用状況データ３１１は、例えば、時間当たりのメモリ転送量、時間当たりのディスク転送量（Ｉ／Ｏ転送量）、時間当たりのネットワーク通信量を含むこともできる。また、複数種類の資源使用状況データ３１１が併用されてもよい。【００４３】
図３は、資源使用状況記憶手段１４に格納される資源使用状況データ３１１の構成例を示す図である。【００４４】
図３を参照すると、本実施の形態による資源使用状況記憶手段１４は、この例では、ｈｏｓｔ０１からｈｏｓｔ０５までの５台のサーバ装置３についての資源使用状況データ３１１を格納している。これらの資源使用状況データ３１１は、各サーバ装置３に共通して、全ＣＰＵ使用率についての測定値を含む。さらに、本実施の形態による資源使用状況データ３１１は、各サーバ装置３上で稼動している仮想マシン３３のそれぞれについて、その仮想マシン３３によるＣＰＵ使用率を含む。【００４５】
ただし、サーバ装置３によって稼働中の仮想マシン３３の台数は異なる場合があるので、仮想マシン３３によるＣＰＵ使用率に関するデータ数（ＶＭ１〜ＶＭｎのＣＰＵ使用率の個数）はサーバ装置３によって異なる場合がある。図３において、仮想マシン３３によるＣＰＵ使用率に関するデータ数は、例えば、ｈｏｓｔ０１およびｈｏｓｔ０１ではそれぞれ２個（ＶＭ１、ＶＭ２）であり、ｈｏｓｔ０３およびｈｏｓｔ０４ではそれぞれ３個（ＶＭ１、ＶＭ２、ＶＭ３）であり、ｈｏｓｔ０５では４個（ＶＭ１、ＶＭ２、ＶＭ３、ＶＭ４）である。【００４６】
なお、資源使用状況取得手段３１の収集対象となる資源使用状況データ３１１がＣＰＵ使用率以外のものである場合、資源使用状況記憶手段１４に格納される資源使用状況データ３１１の構成もそれに合わせて変わる。【００４７】
ここで、仮想マシン管理装置１のハードウェア構成の説明をする。【００４８】
図４は、本実施の形態による仮想マシン配置システムの仮想マシン管理装置１のハードウェア構成例を示すブロック図である。【００４９】
図４を参照すると、本発明による仮想マシン管理装置１は、一般的なコンピュータ装置と同様のハードウェア構成によって実現することができ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメインメモリであり、データの作業領域やデータの一時退避領域に用いられる主記憶部１０２、ネットワーク４を介してデータの送受信を行う通信制御部１０３、液晶ディスプレイ、プリンタやスピーカ等の提示部１０４、キーボードやマウス等の入力部１０５、周辺機器と接続してデータの送受信を行うインタフェース部１０６、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成される補助記憶部１０７、本情報処理装置の上記各構成要素を相互に接続するシステムバス１０８等を備えている。【００５０】
本発明による仮想マシン管理装置１は、その動作を、仮想マシン管理装置１内部にそのような機能を実現するプログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品からなる回路部品を実装してハードウェア的に実現することは勿論として、上記した各構成要素の各機能を提供するプログラムを、コンピュータ処理装置上のＣＰＵ１０１で実行することにより、ソフトウェア的に実現することができる。【００５１】
すなわち、ＣＰＵ１０１は、補助記憶部１０７に格納されているプログラムを、主記憶部１０２にロードして実行し、仮想マシン管理装置１の動作を制御することにより、上述した各機能をソフトウェア的に実現する。【００５２】
なお、本実施の形態または後述する各実施の形態によるサーバ装置３が上述のような構成を有し、上述した各機能をハードウェア的又はソフトウェア的に実現してもよい。【００５３】
（第１の実施の形態の動作）
次に、本実施の形態による仮想マシン配置システムの動作について詳細に説明する。【００５４】
（資源使用状況収集手段１１の動作手順）
資源使用状況収集手段１１は、事前に設定された一定の周期で、管理下のサーバ装置３から資源使用状況データ３１１を取得し、取得した資源使用状況データ３１１を資源使用状況記憶手段１４に格納するという動作を繰り返し行う。【００５５】
以下では、図５のフローチャートを用いて、資源使用状況収集手段１１の動作手順を説明する。【００５６】
まず、資源使用状況収集手段１１は、ネットワーク４を介して接続された複数のサーバ装置３から、それらのサーバ装置３についての資源使用状況データ３１１を取得する（ステップＳ１１１）。【００５７】
次に、資源使用状況収集手段１１は、前ステップで取得した資源使用状況データ３１１を、資源使用状況記憶手段１４に格納する（ステップＳ１１２）。【００５８】
最後に、資源使用状況収集手段１１は、資源競合検出手段１２に対して、最新の資源使用状況データ３１１の到着を通知する（ステップＳ１１３）。なお、資源競合検出手段１２は、この通知を受け取ることによって動作を開始する。【００５９】
（資源使用状況データ３１１の取得動作）
資源使用状況収集手段１１がサーバ装置３から取得するこれら資源使用状況データ３１１は、管理対象のサーバ装置３上の資源使用状況取得手段３１によって取得される。資源使用状況取得手段３１は、ホストＯＳ、仮想マシンモニタ、特権仮想マシン（他の仮想マシン３３を制御するための特殊な仮想マシン）のいずれかの上で動作するプログラムであり、既存のＯＳあるいは仮想マシン製品によって提供されるコマンドあるいはＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）（例えばＵＮＩＸ（登録商標）系ＯＳにおけるｖｍｓｔａｔコマンド、Ｘｅｎにおけるｘｅｎｍｏｎコマンド）を通して資源使用状況データ３１１を取得する。【００６０】
（資源競合検出手段１２の動作手順）
次に、資源競合検出手段１２の動作を詳細に説明する。資源競合検出手段１２は、資源使用状況収集手段１１から資源使用状況データ３１１の到着の通知を受け取ると、資源使用状況記憶手段１４に格納された資源使用状況データ３１１を順次取り出して、管理下にあるサーバ装置３について資源競合発生の有無を調べる。資源競合検出手段１２は、もし資源競合を検出した場合には、仮想マシン再配置決定手段１３に対して資源競合発生を通知し、競合解消のための仮想マシン再配置処理を開始する。【００６１】
以下では、図６のフローチャートを用いて、資源競合検出手段１２の動作手順を説明する。【００６２】
まず、資源競合検出手段１２は、資源使用状況収集手段１１から資源使用状況データ３１１の到着の通知を受け取ると、資源使用状況記憶手段１４から、単一のサーバ装置３についての資源使用状況データ３１１を取得する（ステップＳ１２１）。【００６３】
ここで、もし資源使用状況記憶手段１４に格納されたすべてのサーバ装置３の最新の資源使用状況データ３１１についてステップＳ１２３〜ステップＳ１２５までの処理が実行済み（全サーバ装置３の最新の資源使用状況データ３１１について資源競合検出処理済み）であった場合には、資源競合検出手段１２の処理を終了する（ステップＳ１２２）。そうでない場合には、ステップＳ１２３に進む。【００６４】
ステップＳ１２３では、資源競合検出手段１２は、取得した資源使用状況データ３１１について、全ＣＰＵ使用率の値が、事前に指定した所定の値に達しているか否かを調べる。もし達している場合にはステップＳ１２４に進む。そうでない場合にはステップＳ１２１に戻り、次の単一のサーバ装置３についての資源使用状況データ３１１を調査する。ここで用いる閾値（事前に指定した所定の値）は、例えば、システム運用管理者によって指定されるものであり、全サーバ装置３について一律の値（例えば８０％）が指定されてもよいし、サーバ装置３ごとに異なる値が指定されてもよい。【００６５】
ステップＳ１２４では、資源競合検出手段１２は、取得した資源使用状況データ３１１について、２つ以上の仮想マシンによるＣＰＵ使用率が、事前に指定した所定の値に達しているか否かを調べる。もし達している場合にはステップＳ１２５に進む。そうでない場合にはステップＳ１２１に戻り、次の単一のサーバ装置３についての資源使用状況データ３１１を調査する。ここでの閾値（事前に指定した所定の値）の決定方法については後述する。【００６６】
最後に、ステップＳ１２５では、資源競合検出手段１２は、仮想マシン再配置決定手段１３に対して、仮想マシン再配置処理の開始を通知する。この通知の内容は、ステップＳ１２１において取得した資源使用状況データ３１１の内容を含む。なお、このステップによって、仮想マシン再配置決定手段１３は動作を開始する。【００６７】
（仮想マシン３３のＣＰＵ使用率についての閾値の決定方法（その１））
ステップＳ１２４で使用される、仮想マシン３３のＣＰＵ使用率についての閾値の決定方法の一例は、全仮想マシン３３について一律の閾値を指定するというものである。【００６８】
例えば、一律の閾値として２０％を指定した場合には、単一のサーバ装置３上で稼動する仮想マシン３３のうちの２つ以上についてのＣＰＵ使用率がそれぞれ２０％以上であれば、資源競合検出手段１２は、当該サーバ装置については資源競合とは判定してステップＳ１２５に進むことになる。【００６９】
（仮想マシン３３のＣＰＵ使用率についての閾値の決定方法（その２））
仮想マシン３３のＣＰＵ使用率についての閾値の決定方法の別の例は、単一のサーバ装置３上で動作する仮想マシン３３の数と、全ＣＰＵ使用率の値とに基づいて動的に当該閾値を決定するというものである。【００７０】
すなわち、現在注目しているサーバ装置３の全ＣＰＵ使用率をＵｐ、そのサーバ装置３上で稼動している仮想マシンの数をＮとした場合に、Ｕｐ  ／  Ｎ  を当該閾値として用いる。【００７１】
図３に示す資源使用状況データ３１１を用いて、当該閾値の決定方法の具体例を示す。【００７２】
サーバ装置ｈｏｓｔ０１の全ＣＰＵ使用率は２４％、同サーバ装置上で稼働中の仮想マシンは２台であるので、閾値は２４％  ／  ２  ＝  １２％  となる。【００７３】
図３の資源使用状況データ３１１では、サーバ装置ｈｏｓｔ０１において、２つの仮想マシンのうちの１つ仮想マシン（ＶＭ１）がこの閾値を下回っているために、資源競合検出手段１２は、ｈｏｓｔ０１については資源競合とは判定しない。【００７４】
また、サーバ装置ｈｏｓｔ０５の全ＣＰＵ使用率は８４％、同サーバ装置上で稼働中の仮想マシンは４台であるので、閾値は  ８４％  ／  ４  ＝  ２１％  となる。【００７５】
図３の資源使用状況データ３１１では、サーバ装置ｈｏｓｔ０５において、３つの仮想マシンが閾値以上であるので、資源競合検出手段１２は、ｈｏｓｔ０５上の３つの仮想マシン（ＶＭ１，  ＶＭ２，  ＶＭ３）によって資源競合が発生していると判定する。【００７６】
さらに、この決定方法の変形として、閾値をＵｐ  ／  Ｎ  とする代わりに、事前に指定する定数ｋを用いて、Ｕｐ  ／  Ｎ  −  ｋ  を閾値とすることもできる。この場合には、Ｕｐ  ／  Ｎ  を閾値とする場合に比べて、競合発生と判断する条件が緩くなる。例えば、図３におけるサーバ装置ｈｏｓｔ０５について、ｋ  ＝  ５％  である場合、競合発生検出の閾値は  ８４％  ／  ４  −  ５％  ＝  １６％  となる。【００７７】
（ＣＰＵ使用率以外の資源使用状況データ３１１の利用）
上記ステップＳ１２３およびステップＳ１２４において、資源競合検出の判断基準として用いる資源使用状況データ（測定データ）３１１は、ＣＰＵ使用率に限定されず、時間当たりのメモリ転送量、ディスク転送量もしくはネットワーク通信量なども用いることができる。これらの測定データを用いた場合の競合検出方法は、ＣＰＵ使用率をそれらの測定データに置き換えれば良い。【００７８】
ただし、ＣＰＵ使用率に限定されず、時間当たりのメモリ転送量、ディスク転送量もしくはネットワーク通信量などの上記データのうち、異なる２種類のデータ（資源種別）に関する測定データを用いて資源競合を検出する場合には、前述の競合検出方法を以下の２種類の検出方法のいずれかに置き換える必要がある。【００７９】
（１）判断基準として用いる資源種別のそれぞれについて、上記ステップＳ１２１からステップＳ１２４を実行し、いずれかの資源種別について競合発生を検出した場合に、ステップＳ１２５に進む。【００８０】
（２）上記ステップＳ１２１からＳ１２５の手順をそのまま実行する。ただし、Ｓ１２３において、判断基準となるすべての資源種別について、測定値が一定値以上である場合にのみＳ１２４に進む。さらに、Ｓ１２４において、判断基準となるすべての資源種別について判断基準を満たす場合に、ステップＳ１２５に進む。【００８１】
（仮想マシン再配置決定手段１３の動作手順）
次に、仮想マシン再配置決定手段１３の動作手順を説明する。本手段では、資源競合検出手段１２によって資源競合が検出された場合に、以下の３つの情報を決定し、それらに基づいて仮想マシン３３の再配置を制御する。【００８２】
（１）移動対象の仮想マシン３３を決定する。移動対象の仮想マシン３３とは、仮想マシン再配置の際に、当該仮想マシン３３が自身が属するサーバ装置３から他のサーバ装置３に移動する仮想マシン３３である。
（２）移動元サーバ装置を決定する。移動元サーバ装置とは、移動対象の仮想マシン３３が、移動前に所属しているサーバ装置３である。
（３）移動先サーバ装置を決定する。移動先サーバ装置とは、移動対象の仮想マシン３３が、移動後に所属するサーバ装置３である。【００８３】
以下では、図７のフローチャートを用いて、仮想マシン再配置決定手段１３の動作手順を示す。【００８４】
まず、仮想マシン再配置決定手段１３は、資源競合検出手段１２から仮想マシン再配置処理の開始の通知をうけると、資源競合の発生したサーバ装置３を、移動元サーバ装置として選択する（ステップＳ１３１）。ここで、仮想マシン再配置決定手段１３は、資源競合の発生したサーバ装置３の名前を、上記ステップＳ１２５において発行された通知に含まれる資源使用状況データ３１１から得ることができる。【００８５】
次に、仮想マシン再配置決定手段１３は、移動元サーバ装置上で稼動している仮想マシン３３の中から、その仮想マシン３３によるＣＰＵ使用率が最大であるものを、移動対象の仮想マシン３３として選択する（ステップＳ１３２）。移動元サーバ装置上で稼動する各仮想マシン３３によるＣＰＵ使用率は、上記ステップＳ１２５で発行された通知に含まれる資源使用状況データ３１１の中に含まれている。【００８６】
次に、仮想マシン再配置決定手段１３は、管理下のサーバ装置３のうち、空きＣＰＵ使用率が最大であるものを、移動先サーバ装置として選択する（ステップＳ１３３）。ここで、空きＣＰＵ使用率とは、空きＣＰＵ使用率＝１００％  −  全ＣＰＵ使用率として得られる数値を指す。【００８７】
次に、仮想マシン再配置決定手段１３は、ステップＳ１３３で選択した移動先サーバ装置の空きＣＰＵ使用率が、ステップＳ１３２で選択した移動対象の仮想マシン３３によるＣＰＵ使用率を上回っているか否かを調べる（ステップＳ１３４）。そうである場合にはステップＳ１３５に進み、そうでない場合には処理を終了する。後者の場合には、仮想マシン３３の再配置は実施しない。【００８８】
最後に、ステップＳ１３５では、仮想マシン再配置決定手段１３は、移動元・移動先のサーバ装置３のうち一方または両方に対して、移動対象の仮想マシン３３の移動を要求する。これらのサーバ装置３上の仮想マシン制御手段３２は、この通知を受け取ると、既存の仮想マシン移動用コマンド（例えばｘｅｎにおけるｘｍ  ｍｉｇｒａｔｅコマンド）を発行して、仮想マシン３３の再配置を実施する。【００８９】
（移動対象仮想マシンの選択方法）
上記ステップＳ１３２において、仮想マシン再配置決定手段１３が移動対象の仮想マシン３３を選択方法するは、仮想マシン３３のＣＰＵ使用率を基準にする方法に限定されない。【００９０】
移動対象の仮想マシン３３を選択する別の方法の１つは、ＣＰＵ使用率以外の資源使用状況データ（測定データ）３１１を基準とする方法である。例えば、移動元のサーバ装置３上で稼動している仮想マシンのうち、Ｉ／Ｏ使用量が最大であるものを測定データとして選択するという方法がある。この例の場合、資源使用状況収集手段１１において、各仮想マシン３３のＩ／Ｏ使用量のデータを測定データとして収集することが前提となる。【００９１】
移動対象の仮想マシン３３を選択する他の方法は、事前に指定した所定の優先度を基準にする方法である。例えば、移動元のサーバ装置３で２つの仮想マシンＶＭ１，ＶＭ２が動作しており、かつそれらの仮想マシンについて優先度２，１がそれぞれ設定されていた場合（優先度２＞１の場合）、仮想マシン再配置決定手段１３は、優先度の高い仮想マシンＶＭ１を移動対象として選択する。【００９２】
また、ＣＰＵ、メモリ、ディスクもしくはネットワークなどの複数種類の資源についての測定データを組み合わせたり、さらに、それらに優先度を組み合わせて移動対象の仮想マシン３３を選択してもよい。この場合、これらの測定データおよび優先度を含む計算式を事前に指定し、その計算式による計算結果が最大となるような仮想マシン３３を移動対象の仮想マシン３３として選択する。【００９３】
（移動先サーバ装置の選択方法）
上記ステップＳ１３３において、仮想マシン再配置決定手段１３による移動先のサーバ装置３の選択方法は、サーバ装置３の空きＣＰＵ使用率を基準とする方法に限定されない。【００９４】
移動先のサーバ装置３を選択する別の方法の１つは、ＣＰＵ使用率以外の資源使用状況データ（測定データ）３１１を基準とする方法である。【００９５】
例えば、単一のサーバ装置３全体についてのＩ／Ｏ使用量（以下、全Ｉ／Ｏ使用量）が最小であるサーバ装置３を移動先として選択する方法がある。この例の場合、資源使用状況収集手段１１において、各サーバ装置３についての全Ｉ／Ｏ使用量のデータを収集することが前提となる。また、何らかの計算式を用いて、ＣＰＵ、メモリ、ディスクもしくはネットワークなどの複数種類の資源についての測定データを組み合わせたものを、移動先のサーバ装置３を選択する基準としてもよい。【００９６】
なお、管理下のサーバ装置３の中にハードウェア構成の異なるものが含まれている場合、単純に空きＣＰＵ使用率（あるいは他の測定データ）を比較して移動先のサーバ装置３を決定するのは必ずしも適切ではない。例えば、あるサーバ装置３−１がＣＰＵを１基搭載し、別のサーバ装置３−２は同一種類のＣＰＵを２基搭載しており、いずれのサーバ装置についても空きＣＰＵ使用率が８０％という状況を考える。この場合、サーバ装置３−２の方がＣＰＵ資源に余裕があると考えられるので、サーバ装置３−２を選択することが適切である。このような状況を扱うために、サーバ装置ごとに係数を指定して、空きＣＰＵ使用率（あるいは他の測定データ）に係数を乗じたものを選択基準として用いてもよい。【００９７】
さらに移動先サーバ装置の別の選択方法として、各サーバ装置３の状態に基づいて優先度を決定してもよい。具体的には、仮想マシン３３が１つも稼動していないサーバ装置３は、それ以外のサーバ装置３よりも低い優先度で移動先として選択する（すなわち、仮想マシン３３が稼動するサーバ装置３のうち、十分な空き資源のあるものが１つもない場合に限って、仮想マシン３３が稼動していないサーバ装置３を選択する）という方法がある。この方法だと、できるだけ少ない台数のサーバ装置３で仮想マシン３３を稼動させて、残りのサーバ装置３の電源を切ることにより、サーバ装置３による電力消費を節約することが可能である。この種の優先順位付けは、上に挙げた他の選択方法と組み合わせて用いることもできる。【００９８】
（第１の実施の形態の効果）
本実施の形態によれば、以下の効果を達成することができる。【００９９】
第１の効果は、突発的な負荷状況の変動に対応して、即座に仮想マシン３３を再配置できることにある。【０１００】
その理由は、仮想マシン管理装置１が、仮想マシン３３の再配置において、仮想マシン３３の性能についての過去のデータを必要とせず、仮想マシン３３の最新の資源使用状況データ３１１に基づいて仮想マシン３３を再配置するためである。【０１０１】
第２の効果は、仮想マシン３３上で動作するシステムを止めることなく、仮想マシン３３を再配置できることである。【０１０２】
その理由は、一度の再配置の対象となるのは、資源競合の原因となった仮想マシン３３だけなので、他の仮想マシン３３の動作には影響を及ぼさないためである。【０１０３】
第３の効果は、後述する第２および第３の実施の形態に比べて、サーバ装置３に必要なＣＰＵ性能が低いことである。【０１０４】
その理由は、資源競合の検出および仮想マシン３３の再配置決定を含む大部分の処理を、サーバ装置３とは別の仮想マシン管理装置１で行うためである。その半面、仮想マシン管理装置１には比較的高性能なハードウェア資源を持たせる必要がある。【０１０５】
（第２の実施の形態）
次に、本発明の第２の実施の形態による仮想マシン配置システムについて図面を参照して詳細に説明する。【０１０６】
（第２の実施の形態の構成）
図８は、本実施の形態による仮想マシン配置システムの構成を示すブロック図である。【０１０７】
図８を参照すると、本実施の形態による仮想マシン配置システムは、第１の実施の形態（図１）と同様に、仮想マシン管理装置１と、管理端末２と、複数のサーバ装置３とを備えている。仮想マシン管理装置１と複数のサーバ装置３とは、ネットワーク４によって相互に接続される。【０１０８】
第１の実施の形態との相違点は、仮想マシン管理装置１が資源競合検出手段１２を備えない点と、サーバ装置３がサーバ内資源競合検出手段３４を備える点である。【０１０９】
すなわち、本実施の形態では、収集した資源使用状況データ３１１を用いて、仮想マシン管理装置１が資源競合を検出する代わりに、個々のサーバ装置３が備えるサーバ内資源競合検出手段３４で資源競合を検出する。【０１１０】
サーバ内資源競合検出手段３４は、第１の実施の形態による資源競合検出手段１２と同様の資源競合を検出する機能と、サーバ内資源競合検出手段３４自身が備えられたサーバ装置３の資源競合を検出すると、仮想マシン管理装置１が備える仮想マシン再配置決定手段１３に対してサーバ装置３を介して競合発生を通知する機能とを備える。また、サーバ内資源競合検出手段３４は、第１の実施の形態による資源使用状況記憶手段１４と同様の資源使用状況データ３１１を格納する機能を備えていてもよい。なお、サーバ内資源競合検出手段３４は、資源使用状況取得手段３１から取得した資源使用状況データ３１１の内容を含んで当該通知を行ってもよい。【０１１１】
仮想マシン再配置決定手段１３は、上記通知を受け取った時点で仮想マシン再配置決定処理を開始するという機能を有する。【０１１２】
（第２の実施の形態の動作）
次に、本実施の形態による仮想マシン配置システムの動作について、第１の実施の形態との相違点を中心に、詳細に説明する。【０１１３】
（資源使用状況収集手段１１の動作手順）
図９に、第２の実施の形態における資源使用状況収集手段１１の動作手順を示す。【０１１４】
ステップＳ２１１およびステップＳ２１２については、第１の実施の形態における同手段の動作手順を示す図５のステップＳ１１１およびステップＳ１１２と共通である。相違点は、ステップＳ１１３が存在しない点である。すなわち、相違点は、本実施の形態による資源使用状況収集手段１１が収集した資源使用状況データ３１１を資源使用状況記憶手段１４に格納した時点で処理を終了する点である。【０１１５】
原則として、第１の実施の形態と同様に、資源使用状況収集手段１１を一定周期で実行する。また、その代わりに、仮想マシン再配置決定手段１３がサーバ内資源競合検出手段３４から資源競合発生の通知を受け取った時点で資源使用状況収集手段１１を実行してもよい。前者の場合は、資源競合を検出した場合に、仮想マシン再配置決定手段１３が即座に仮想マシン再配置処理を開始することができる。一方、後者では、資源競合発生時に資源使用状況データ３１１を収集する時間を要するものの、平常時（すなわち、資源競合が発生しないとき）に資源使用状況データ３１１を収集することによって生じるＣＰＵとネットワーク帯域の消費を抑制することができる。【０１１６】
（仮想マシン再配置決定手段１３の動作手順）
本実施の形態における仮想マシン再配置決定手段１３の動作は、基本的に第１の実施の形態における同手段の動作（図７）と同様である。ただし、第１の実施の形態では資源競合検出手段１２からの通知によって仮想マシン再配置決定手段１３の動作を開始するのに対して、第２の実施の形態ではサーバ内資源競合検出手段３４からの通知によって仮想マシン再配置決定手段１３の動作を開始するという点で異なる。【０１１７】
また、資源使用状況収集手段１１を一定周期で実行しない場合（すなわち、仮想マシン再配置決定手段１３が資源競合発生の通知を受け取った時点で資源使用状況収集手段１１の処理を開始する場合）には、図７のステップＳ１３１に先立って、資源使用状況収集手段１１の処理（図９のステップＳ２１１およびステップＳ２１２）を完了させる必要がある。【０１１８】
（サーバ内資源競合検出手段３４の動作手順）
サーバ内資源競合検出手段３４の動作手順を、図１０のフローチャートを用いて説明する。基本的な動作の流れは、第１の実施の形態における資源競合検出手段１２（図６）と共通である。ただし、サーバ内資源競合検出手段３４は、資源使用状況記憶手段１４に格納された全データを順に取得するのではなく、単一のサーバ装置３についての資源使用状況データ３１１のみを処理対象とする点で異なる。本実施の形態では、サーバ内資源競合検出手段３４を事前に指定した一定時間ごとに実行する。【０１１９】
まず、サーバ内資源競合検出手段３４は、サーバ装置３内の資源使用状況取得手段３１から、最新の資源使用状況データ３１１を取得する（ステップＳ２２１）。ここで取得する資源使用状況データ３１１は、単一のサーバ装置３についてのデータに限られる。例えば、あるサーバ装置３−１内の資源使用状況収集手段３１は、同一のサーバ装置３−１についての資源使用状況データ３１１のみを取得する。【０１２０】
次に、サーバ内資源競合検出手段３４は、取得した資源使用状況データ３１１について、全ＣＰＵ使用率の値が、事前に指定した所定の値に達しているか否かを調べる（ステップＳ２２２）。もし達している場合にはステップＳ２２３に進む。そうでない場合にはサーバ内資源競合検出手段３４の処理を終了し、一定時間待機した後でステップＳ２２１以降の処理を再度実行する。本ステップでの処理の内容は、資源競合検出手段１２におけるステップＳ１２３と共通である。【０１２１】
ステップＳ２２３では、サーバ内資源競合検出手段３４は、取得した資源使用状況データ３１１について、２つ以上の仮想マシン３３によるＣＰＵ使用率が、事前に指定した所定の値に達しているか否かを調べる。もし達している場合にはステップＳ２２４に進む。そうでない場合にはサーバ内資源競合検出手段３４の処理を終了し、一定時間待機した後でステップＳ２２１以降の処理を再度実行する。本ステップでの処理の内容は、資源競合検出手段１２におけるステップＳ１２４と共通である。【０１２２】
最後に、ステップＳ２２４では、サーバ内資源競合検出手段３４は、サーバ管理装置１内の仮想マシン再配置決定手段１３に対して、仮想マシン再配置処理の開始を通知する。この通知は、ステップＳ２２１において取得した資源使用状況データ３１１の内容を含む。このステップにより、仮想マシン再配置決定手段１３の処理を開始する。【０１２３】
（第２の実施の形態の効果）
本実施の形態によれば、以下の効果を達成することができる。【０１２４】
第１の効果は、サーバ内資源競合検出手段３４が各サーバ装置３に設置されることから、競合発生から検出までの所要時間が短いことである。【０１２５】
第２の効果は、仮想マシン管理装置１において資源競合検出処理を行わないことから、第１の実施の形態に比べて、仮想マシン管理装置１に必要な性能が低いことである。その半面、サーバ装置３に要求される性能は第１の実施の形態よりも高くなる。【０１２６】
（第３の実施の形態）
本発明の第３の実施の形態による仮想マシン配置システムについて図面を参照して詳細に説明する。【０１２７】
（第３の実施の形態の構成）
図１１は、本実施の形態による仮想マシン配置システムの構成を示すブロック図である。【０１２８】
図１１を参照すると、本実施の形態による仮想マシン配置システムは、ネットワーク４によって相互に接続される複数のサーバ装置３を備える。【０１２９】
本実施の形態による仮想マシン配置システムは、第１および第２の実施の形態とは異なり、仮想マシン管理装置１は存在しない。その代わりに、本実施の形態による仮想マシン配置システムは、第１および第２の実施の形態における仮想マシン管理装置１に相当する機能が個々のサーバ装置３の中に含まれる。すなわち、本実施の形態によるサーバ装置３は、資源使用状況収集手段１１と、仮想マシン（ＶＭ）再配置決定手段１３と、資源使用状況記憶手段（ＤＢ）１４とを含む。【０１３０】
さらに、本実施の形態によるサーバ装置３内の仮想マシン制御手段３２は、ロック（ｌｏｃｋ）機構３２１を備える。【０１３１】
ロック機構３２１は、あるサーバ装置３中の仮想マシン再配置決定手段１３が、当該ロック機構３２１を備えるサーバ装置３に対して仮想マシン３３の移動を決定して当該サーバ装置３に対してアクセスした場合、最初にアクセスした当該仮想マシン再配置決定手段１３に排他的にアクセス権（ロック）を取得させる機能を有する。このため、あるサーバ装置３中の仮想マシン再配置決定手段１３が所定のサーバ装置３のロックを取得済みである場合には、当該同一のサーバ装置３に対する他のサーバ装置３中の仮想マシン再配置決定手段１３からのアクセスは許可されない。【０１３２】
本実施の形態による仮想マシン配置システムは、第２の実施の形態と同様に、個々のサーバ装置３が備えるサーバ内競合検出手段３４を用いて、個々のサーバ装置３における資源競合を検出する。サーバ内競合検出手段３４を用いて資源競合を検出した場合、資源競合の発生したサーバ装置３が備えるサーバ再配置決定手段１３を用いて、仮想マシン３３の再配置処理を行う。【０１３３】
（第３の実施の形態の動作）
次に、本実施の形態による仮想マシン配置システムの動作について、１および第２の実施の形態との相違点を中心に、詳細に説明する。【０１３４】
（サーバ内資源競合検出手段３４の動作手順）
本実施の形態におけるサーバ内資源競合検出手段３４の動作手順は、第２の実施の形態における同手段の動作手順（図１０）と共通である。ただし、本実施の形態におけるサーバ内資源競合検出手段３４が、ステップＳ２２４において、仮想マシン管理装置１に対して仮想マシン再配置処理の開始を通知するのではなく、自身が備えられた同一のサーバ装置３内の仮想マシン再配置決定手段１３に通知する点が異なる。すなわち、本実施の形態におけるサーバ内資源競合検出手段３４は、例えば、あるサーバ装置３−１のサーバ内資源競合検出手段３４が資源競合を検出した場合、同じサーバ装置３−１の仮想マシン再配置決定手段１３に対して、仮想マシン再配置処理の開始を通知する。【０１３５】
（資源使用状況収集手段１１の動作手順）
本実施の形態における資源使用状況収集手段１１の動作手順は、第２の実施の形態における資源使用状況収集手段１１の動作手順（図９）と共通である。ただし、本実施の形態では、資源使用状況収集手段１１を一定周期で実行することはなく、常に仮想マシン再配置決定手段１３（後述）の実行開始時に実行する。【０１３６】
（仮想マシン再配置決定手段１３の動作手順）
本実施の形態における仮想マシン再配置決定手段１３の動作は、基本的に第１の実施の形態における仮想マシン再配置決定手段１３の動作（図７）と共通である。ただし、以下の２点において異なる。【０１３７】
（１）本実施の形態における仮想マシン再配置決定手段１３は、ステップＳ１３１において、資源競合検出手段１２からの通知によって動作を開始するのではなく、自身が備えられたサーバ装置３又は他のサーバ装置３のサーバ内資源競合検出手段３４からの通知によって動作を開始する。
（２）本実施の形態における仮想マシン再配置決定手段１３は、ステップＳ１３１の実行に先立って、資源使用状況収集手段１１の処理（図９、ステップＳ２１１およびステップＳ２１２）を完了させる。その際、本実施の形態における仮想マシン再配置決定手段１３は、ステップＳ２１１において、各サーバ装置３から資源使用状況データを取得するのではなく、自身が備えられたサーバ装置３から資源使用状況データを取得する。【０１３８】
本実施の形態では、各サーバ装置３が仮想マシン再配置決定手段１３を備えるために、複数のサーバ装置３で同時に仮想マシン再配置決定手段１３が動作し、その結果単一のサーバ装置３に対して同時に仮想マシン３３の移動が試みられる可能性がある。【０１３９】
この状況を避ける手段として、サーバ装置３内の仮想マシン制御手段３２は、前述のロック（ｌｏｃｋ）機構３２１を備える。【０１４０】
仮想マシン再配置決定手段１３は、ステップ１３３において、あるサーバ装置３を移動先サーバ装置として選択した場合、そのサーバ装置３上のロックを獲得する必要がある。仮想マシン再配置決定手段１３は、ロックが獲得できなかった場合、すなわち他のサーバ装置３中の仮想マシン再配置決定手段１３がロックを取得済みである場合には、別のサーバ装置３を移動先サーバ装置として選択する。【０１４１】
以下では、図１２のフローチャートを用いて、ロック機構３５が導入された本実施の形態による仮想マシン再配置決定手段１３の動作手順を説明する。【０１４２】
ステップＳ３１１からステップＳ３１４まで、およびステップＳ３１５は、ロック機構を導入しない場合（図７のステップＳ１３１からステップＳ１３４まで、およびステップＳ１３５）と共通である。本実施の形態による仮想マシン再配置決定手段１３は、ステップＳ３１４において、移動先サーバ装置の空きＣＰＵ使用率が移動対象仮想マシンによるＣＰＵ使用率を上回る場合、ステップＳ３１５ではなくステップＳ３１６に進む。【０１４３】
ステップＳ３１６において、本実施の形態による仮想マシン再配置決定手段１３は、移動先サーバ装置のロックの獲得を試みる。ステップＳ３１６においてロックの獲得に成功した場合にはステップＳ２３５に進む。ステップＳ３１６においてロックの獲得に失敗した場合にはステップＳ３１３に戻り、仮想マシン再配置決定手段１３は、移動先サーバ装置を再度選択する。この場合、仮想マシン再配置決定手段１３は、前回までにロック獲得に失敗したサーバ装置３を、移動先サーバ装置として選択する対象から外す。【０１４４】
ステップＳ３１５において仮想マシン移動操作が完了した後で、ステップＳ３１７に進む。ステップＳ２３７において、仮想マシン再配置決定手段１３は、ステップＳ３１６において獲得したロックを解放する。【０１４５】
（第３の実施の形態の効果）
第３の実施の形態の効果は、専用の仮想マシン管理装置（あるいは仮想マシン管理装置として動作するためのプログラムを組み込んだサーバ装置）を設置する必要がないことである。第１および第２の実施の形態では、仮想マシン３３を再配置するためには仮想マシン管理装置１が必要であることから、仮想マシン管理装置１の故障時には本発明が機能しない。一方、第３の実施の形態では、どのサーバ装置３が故障した場合でも仮想マシン３３の再配置を実施することができる。【０１４６】
上述した本発明の実施の形態によれば、以下の効果を達成することができる。【０１４７】
第１の効果は、突発的な負荷状況の変動に対応して、即座に仮想マシンを再配置できることにある。【０１４８】
その理由は、単一のサーバ装置全体についての資源使用状況と、上記サーバ装置上で動作する仮想マシンによる資源使用状況の測定結果とを用いて資源の競合を検出する資源競合検出手段を備えるため、仮想マシンの再配置において、仮想マシンの性能についての過去のデータを必要とせず、仮想マシンの資源使用状況についての最新の情報のみに基づいて動作するためである。【０１４９】
第２の効果は、仮想マシン上で動作するシステムを止めることなく、仮想マシンを再配置できることにある。【０１５０】
その理由は、資源の競合が検出されたサーバ装置上の仮想マシンを、資源使用率の低い他のサーバ装置に移動させる仮想マシン再配置決定手段を備えるため、一度の再配置の対象となるのは、資源競合の原因となった仮想マシンのみなので、他の仮想マシンの動作には影響を及ぼさないためである。【０１５１】
以上好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。【０１５２】
この出願は、２００６年１１月２４日に出願された日本出願特願２００６−３１７１７５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１５３】
本発明は、企業情報システムあるいはデータセンタを構成するサーバ資源を一元的に管理する運用管理ミドルウェアといった用途に適用でき、また、企業情報システムあるいはデータセンタにおける自己管理型のサーバ装置といった用途にも適用できる。
【図１】
2008062864.tif 000003
【図２】
2008062864.tif 000004
【図３】
2008062864.tif 000005
【図４】
2008062864.tif 000006
【図５】
2008062864.tif 000007
【図６】
2008062864.tif 000008
【図７】
2008062864.tif 000009
【図８】
2008062864.tif 000010
【図９】
2008062864.tif 000011
【図１０】
2008062864.tif 000012
【図１１】
2008062864.tif 000013
【図１２】
2008062864.tif 000014
【手続補正書】
【提出日】平成20年5月16日(2008.5.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
単一のサーバ装置全体についての資源使用状況と、前記サーバ装置上で動作する仮想マシンによる資源使用状況とについての測定データを用いて資源の競合を検出する資源競合検出手段と、
前記資源の競合が検出された前記サーバ装置上の前記仮想マシンを、資源使用率の低い他のサーバ装置に移動させる仮想マシン再配置決定手段と
を備えることを特徴とする仮想マシン配置システム。
【請求項２】
前記測定データを、当該サーバ装置からネットワーク経由で収集する資源使用状況収集手段
を備えることを特徴とする請求項１に記載の仮想マシン配置システム。
【請求項３】
前記資源競合検出手段が、
前記単一のサーバ装置全体についての資源使用率が事前に指定された一定値以上であり、かつ当該サーバ装置上で動作する複数の仮想マシンによる資源使用率が別に指定された一定値以上である場合に資源競合と判断する
ことを特徴とする請求項１に記載の仮想マシン配置システム。
【請求項４】
前記資源競合検出手段が、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項１に記載の仮想マシン配置システム。
【請求項５】
前記仮想マシン再配置決定手段が、
競合の発生した前記サーバ装置上で動作する仮想マシンの中から最も資源使用率の高いものを移動対象として選択し、
全前記サーバ装置のうち最も資源使用率の低いものを移動先として選択する
ことを特徴とする請求項１に記載の仮想マシン配置システム。
【請求項６】
前記仮想マシン再配置決定手段が、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項５に記載の仮想マシン配置システム。
【請求項７】
前記仮想マシン再配置決定手段が、
移動先として選択した前記サーバ装置についてロックを獲得し、
前記仮想マシンの移動処理を完了させた後に当該ロックを解放する
ことを特徴とする請求項１に記載の仮想マシン配置システム。
【請求項８】
サーバ装置間で仮想マシンを移動させる仮想マシン配置方法であって、
資源競合検出手段において、
単一のサーバ装置全体についての資源使用状況と、前記サーバ装置上で動作する仮想マシンによる資源使用状況とについての測定データを用いて資源の競合を検出し、
仮想マシン再配置決定手段において、
前記資源の競合が検出された前記サーバ装置上の前記仮想マシンを、資源使用率の低い他のサーバ装置に移動させる
ことを特徴とする仮想マシン配置方法。
【請求項９】
資源使用状況収集手段において、
前記測定データを、当該サーバ装置からネットワーク経由で収集する
ことを特徴とする請求項８に記載の仮想マシン配置方法。
【請求項１０】
前記資源競合検出手段において、
前記単一のサーバ装置全体についての資源使用率が事前に指定された一定値以上であり、かつ当該サーバ装置上で動作する複数の仮想マシンによる資源使用率が別に指定された一定値以上である場合に資源競合と判断する
ことを特徴とする請求項８に記載の仮想マシン配置方法。
【請求項１１】
前記資源競合検出手段において、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項８に記載の仮想マシン配置方法。
【請求項１２】
前記仮想マシン再配置決定手段において、
前記仮想マシンの移動先を決定する際に、
競合の発生した前記サーバ装置上で動作する仮想マシンの中から最も資源使用率の高いものを移動対象として選択し、
全前記サーバ装置のうち最も資源使用率の低いものを移動先として選択する
ことを特徴とする請求項８に記載の仮想マシン配置方法。
【請求項１３】
前記仮想マシン再配置決定手段において、
前記仮想マシンの移動先を決定する際に、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項１２に記載の仮想マシン配置方法。
【請求項１４】
前記仮想マシン再配置決定手段において、
前記仮想マシンを移動させる際に、
移動先として選択した前記サーバ装置についてロックを獲得し、
前記仮想マシンの移動処理を完了させた後に当該ロックを解放する
ことを特徴とする請求項８に記載の仮想マシン配置方法。
【請求項１５】
サーバ装置間で仮想マシンの移動を実行させるプログラムであって、
前記サーバ装置又はネットワークを介して前記サーバ装置と接続する管理端末において、
単一のサーバ装置全体についての資源使用状況と、前記サーバ装置上で動作する仮想マシンによる資源使用状況とについての測定データを用いて資源の競合を検出する資源競合検出機能と、
前記資源の競合が検出された前記サーバ装置上の前記仮想マシンを移動対象として選択する移動対象選択機能と、
資源使用率の低い他のサーバ装置を移動対象の前記仮想マシンの移動先として選択する移動先選択機能と
を実現させることを特徴とするプログラム。
【請求項１６】
前記サーバ装置又は前記ネットワークを介して前記サーバ装置と接続する管理端末において、
前記測定データを、当該サーバ装置から前記ネットワーク経由で収集する資源使用状況収集機能を実現させることを特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記資源競合検出機能において、
前記単一のサーバ装置全体についての資源使用率が事前に指定された一定値以上であり、かつ当該サーバ装置上で動作する複数の仮想マシンによる資源使用率が別に指定された一定値以上である場合に資源競合と判断する
ことを特徴とする請求項１５に記載のプログラム。
【請求項１８】
前記資源競合検出機能において、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項１５に記載のプログラム。
【請求項１９】
前記移動対象選択機能において、
競合の発生した前記サーバ装置上で動作する仮想マシンの中から最も資源使用率の高いものを移動対象として選択し、
前記移動先選択機能において、
全前記サーバ装置のうち最も資源使用率の低いものを移動先として選択する
ことを特徴とする請求項１５に記載のプログラム。
【請求項２０】
前記移動対象選択機能および前記移動先選択機能において、
資源使用率として、一定時間内におけるＣＰＵ使用率、Ｉ／Ｏ転送量、ネットワーク転送量、のいずれかまたはそれらの組合せを用いる
ことを特徴とする請求項１９に記載のプログラム。
【請求項２１】
前記移動先選択機能において、
移動先として選択した前記サーバ装置についてロックを獲得し、
前記仮想マシンの移動処理を完了させた後に当該ロックを解放する
ことを特徴とする請求項１５に記載のプログラム。
【請求項２２】
複数のサーバ装置から資源使用状況についての測定データを受け取る資源使用状況収集手段と、
前記測定データに基づいて、資源の競合が検出された前記サーバ装置上の仮想マシンを移動対象として、移動対象の前記仮想マシンと移動先のサーバ装置を選択する仮想マシン再配置決定手段と
を備えることを特徴とする仮想マシン管理装置。
【請求項２３】
受け取った前記測定データに基づいて資源の競合を検出する資源競合検出手段
を備えることを特徴とする請求項２２に記載の仮想マシン管理装置。
【請求項２４】
自身の上で複数の仮想マシンが稼動し、
自身が備える資源について、全体の使用状況と、稼動中の前記仮想マシンによる使用状況とを取得する資源使用状況取得手段と、
取得した前記使用状況に基づいて自身の上で稼動する前記仮想マシンの移動を制御する仮想マシン制御手段と
を備えることを特徴とするサーバ装置。
【請求項２５】
取得した前記使用状況についての測定データに基づいて資源の競合を検出する資源競合検出手段
を備えることを特徴とする請求項２４に記載のサーバ装置。
【請求項２６】
前記資源使用状況取得手段が、他のサーバ装置が備える資源について、全体の使用状況と、他のサーバ装置上で稼動中の前記仮想マシンによる使用状況とを取得し、
前記仮想マシン制御手段が、取得した前記使用状況に基づいて、前記資源の競合が検出された前記サーバ装置上の前記仮想マシンを移動対象として、移動対象の前記仮想マシンと移動先のサーバ装置を選択する仮想マシン再配置決定手段
を備えることを特徴とする請求項２４に記載のサーバ装置。
【国際調査報告】
2008062864.tif 000015
2008062864.tif 000016
2008062864.tif 000017
2008062864.tif 000018