(57)【特許請求の範囲】
【請求項１】
アプリケーションが稼働状態にある仮想マシンを複数のサーバ間で移動させる仮想マシン管理装置におけるマイグレーションプログラムであって、
前記仮想マシン管理装置は、
予め運用者によって定義されたアプリケーションの識別情報およびデータタイプの静的及び動的情報を含むアプリケーション情報のスキーマと、該スキーマを使って設定される前記アプリケーションに依存するアプリ依存ポリシー及びシステム全体を最適化する全体最適化ポリシーを記憶領域に備え、
前記仮想マシン管理装置に、
前記スキーマにしたがって、前記仮想マシン上の前記アプリケーション情報と、前記サーバ自身及び前記仮想マシンの静的及び動的な情報を含むサーバ情報とを定期的に前記サーバから受信するステップと、
受信した前記アプリケーション情報と前記サーバ情報をもとに、前記アプリ依存ポリシー及び前記全体最適ポリシーを参照して、前記全体最適ポリシーよりも前記アプリ依存ポリシーのマイグレーション条件を優先させて仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定するステップと、
を実行させるマイグレーションプログラム。
【請求項２】
アプリケーションが稼働状態にある仮想マシンを複数のサーバ間で移動させる仮想マシン管理装置におけるマイグレーションプログラムであって、
前記仮想マシン管理装置は、
予め運用者によって定義されたアプリケーションの識別情報およびデータタイプの静的及び動的情報を含むアプリケーション情報のスキーマと、該スキーマを使って設定される前記アプリケーションに依存するアプリ依存ポリシー及びシステム全体を最適化する全体最適化ポリシーを記憶領域に備え、また、前記サーバには、前記仮想マシン管理装置から前記アプリ依存ポリシーを予め複写して自身の記憶領域に保持させた構成とし、
前記仮想マシン管理装置に、
前記サーバから、前記スキーマにしたがって前記アプリケーション情報と前記サーバ自身及び前記仮想マシンの静的及び動的な情報を含むサーバ情報とを定期的に受信するステップと、
前記サーバが自身に保持する前記アプリ依存ポリシーを参照し、マイグレーション条件に該当する仮想マシンがある場合に、該マイグレーション対象となる仮想マシンの付加情報を前記サーバから受信するステップと、
受信した前記付加情報に基づいて、前記アプリ依存ポリシーと前記全体最適ポリシーを参照して、前記全体最適ポリシーよりも前記アプリ依存ポリシーのマイグレーション条件を優先させて仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定するステップと、
を実行させるマイグレーションプログラム。
【請求項３】
前記アプリ依存ポリシーは、アプリケーション毎に、マイグレーション条件、マイグレーション対象、およびマイグレーション先が前記スキーマに基づいてアプリケーション運用者とシステム運用者によって設定され、前記全体最適ポリシーは、システム全体を最適化するためのマイグレーション条件、マイグレーション対象、およびマイグレーション先がシステム運用者によって設定されることを特徴とする請求項１または２に記載のマイグレーションプログラム。
【請求項４】
アプリケーションが稼働状態にある仮想マシンを複数のサーバ間で移動させる仮想マシン管理装置におけるマイグレーションプログラムであって、前記仮想マシン管理装置は、
予め運用者によって定義されたアプリケーションの識別情報およびデータタイプの静的及び動的情報を含むアプリケーション情報のスキーマと、該スキーマを使って設定される前記アプリケーションに依存するアプリ依存ポリシー及びシステム全体を最適化する全体最適化ポリシーを記憶領域に備え、
前記仮想マシン管理装置に、前記スキーマにしたがって、前記仮想マシン上のアプリケーションの情報と、前記サーバ自身及び前記仮想マシンの静的及び動的な情報を含むサーバ情報とを定期的に前記サーバから受信するステップと、
受信した前記アプリケーション情報と前記サーバ情報をもとに、前記アプリ依存ポリシー及び前記全体最適ポリシーを参照して、前記全体最適ポリシーよりも前記アプリ依存ポリシーのマイグレーション条件を優先させて移動する仮想マシンがあるかを判定し、
前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適化ポリシーにしたがって仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定するステップと、
を有することを特徴とするマイグレーションプログラム。
【請求項５】
前記仮想マシンの移動先を決定するステップは、前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適ポリシーにしたがって仮想マシンの移動先候補を決定し、その移動先候補に実際に仮想マシンを移動させたときの、前記アプリ依存ポリシーのマイグレーション条件に該当する仮想マシンが出現するかを判定することを特徴とする請求項４に記載のマイグレーションプログラム。
【請求項６】
前記仮想マシンの移動先を決定するステップは、前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適ポリシーにしたがって仮想マシンの移動先候補を決定し、その移動先候補に実際に仮想マシンを移動させたとき、前記アプリ依存ポリシーのマイグレーション条件に該当する仮想マシンが出現するかを判定し、該条件に該当する仮想マシンが出現すると判定された場合には、前記全体最適ポリシーにしたがったマイグレーションを行わないことを特徴とする請求項５に記載のマイグレーションプログラム。
【請求項７】
前記サーバ情報及び仮想マシン上の前記アプリケーション情報は、それぞれ、前記サーバに備わるサーバモニタ及び前記仮想マシンに備わるアプリモニタを介して取得することを特徴とする請求項１乃至６のいずれかに記載のマイグレーションプログラム。
【請求項８】
アプリケーションが稼働状態にある仮想マシンを複数のサーバ間でマイグレーションさせる仮想マシン管理装置であって、
予め運用者によって定義された前記アプリケーションの識別情報およびデータタイプの静的及び動的情報を含むアプリケーション情報のスキーマを管理するアプリ情報スキーマ管理部と、
前記スキーマを使って設定され、仮想マシン上で稼働するアプリケーションに依存したアプリ依存ポリシーと、システム全体を最適化する全体最適ポリシーとを管理するマイグレーションポリシー設定部と、
前記スキーマにしたがって前記仮想マシン上の前記アプリケーション情報と、前記サーバ自身及び前記仮想マシンの静的及び動的な情報を含むサーバ情報とを定期的に前記サーバから受信するサーバ／仮想マシン情報管理部と、
受信した前記アプリケーション情報と前記サーバ情報をもとに、前記アプリ依存ポリシーおよび前記全体最適ポリシーを参照して、前記全体最適ポリシーよりも前記アプリ依存ポリシーのマイグレーション条件を優先させて仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定するマイグレーション制御部と、
を有することを特徴とする仮想マシン管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンのマイグレーション先を決定する技術で、とくに、様々なアプリケーションの特性を考慮したマイグレーション制御を可能にする仮想マシンのマイグレーションプログラム、マイグレーション方法、および仮想マシン管理装置に関する。
【背景技術】
【０００２】
近年、複数の仮想マシンを１台の物理サーバ上で稼動させることによるサーバコンソリデーションが盛んになっている。これにより、システム内のアプリケーションと物理サーバとの結びつきが弱くなり、より柔軟なシステム構成が可能になってきた。
【０００３】
そのため、稼働中のシステムを止めずに仮想マシンを他の物理サーバへ移動させるライブマイグレーション技術が、メンテナンスや負荷分散、省電力のために使われている。例えば、メンテナンス対象のサーバ上の仮想マシンをライブマイグレーションによって他のサーバに移動させておけば、システムを止めずにハードウェアのメンテナンスが可能となる。あるいは、高負荷な仮想マシンをより高性能のサーバにマイグレーションさせれば負荷分散が可能になり、低負荷な仮想マシンを１台のサーバに集めれば、空いたサーバの電源を落とすことによって省電力が可能となる。
【０００４】
上記のような負荷分散や省電力を目的とする場合、どの仮想マシンをどのサーバにマイグレーションさせるかという判断を人手で行うのは、大変非効率であり、自動化することが求められている。
【０００５】
従来、各仮想マシンの負荷状態に応じて自動的にライブマイグレーションを行う機能を持つ管理ツールとして、非特許文献１などがある。このような管理ツールは、各サーバや仮想マシンから、ＣＰＵ性能やメモリ容量などの静的な情報や、ＣＰＵ使用率、メモリ使用量などの動的な情報を定期的に取得し、それらの値が予め決めた基準を超えた場合に、マイグレーションを指示する。その移行先も、予め決められたポリシー（負荷をできるだけ分散／集中させる等) にしたがって決められる。しかし、このような管理ツールは、仮想マシン上で動作しているアプリケーションの状態は考慮されていない。
【０００６】
これに対し、ＯＳ（オペレーティングシステム）だけでなくアプリケーションの負荷状況も監視し、その情報を基に資源配分を行う技術や、アプリケーションの状態を予め決めた基準を基に解析することでマイグレーションを制御する技術が提案されている。
【０００７】
これらの技術は、複数のサーバ・仮想マシンから構成されるシステム全体の最適化（負荷分散や省電力など）のために、その上で稼働中の各アプリケーションの状態も考慮したものとなっている。
【非特許文献１】VMware VirtualCenter, http://www.vmware.com/ja/products/vc/ , http://www.vmware.com/products/server/vc.html（２００８年８月３１日検索）
【特許文献１】特開２００２−２０２９５９号公報
【特許文献２】特開２００６−２４４４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記システム全体の最適化のためではなく、ユーザの都合によるアプリケーションの事情に応じてマイグレーションを行いたいというような要求が多々ある。
【０００９】
例えば、データセンターのように、複数の顧客に複数の仮想マシンを貸し出すような場面では、ある時間帯は、１つの仮想マシンを動作させるために１つの物理サーバを独占したいと希望する顧客がいるかもしれない。データセンター全体の運用効率という点から見ると効率はよくない（全体最適になっていない）が、その顧客の料金クラス等によっては、そのような運用も考えられる。
【００１０】
また、サーバが複数サイト内に設置されているような環境にあっては、通信速度が不均一であるため、マイグレーション範囲を限定しておきたいというような要求もある。例えば、複数の仮想マシン（実際には、その上で動作しているアプリケーション同士) が連携して動作しているような場合、片方の仮想マシンの移動先は、通信速度が速い同じサイト内の別のサーバにしたいという要件が考えられる。
【００１１】
このようなマイグレーションを行う場合、システム全体の最適化をある程度無視して、アプリケーションの事情を優先させるため、従来の技術では制御できない。また、従来技術にもマイグレーション先を限定するといった設定が可能なものもあるが、その場合は範囲（サーバ群) を予め決めてしまうため、あるアプリケーション用の仮想マシンが起動するサーバ群は常に同じとなる。そのサーバ群が利用不可能になっても、設定を変えない限り他のサーバ群で目的の仮想マシンを起動することが出来ず、結果的にサーバ群が復旧するまでアプリケーションは停止してしまう問題を抱える。
【００１２】
また、このようなアプリケーションの事情によるマイグレーション制御をしたい場合、従来は、その特定のアプリケーションに合わせたマイグレーション制御機能を持ったソフトウェアを開発するしかなかった。したがって、データセンターのように様々な顧客のアプリケーションが稼働する環境にあっては、個々のアプリケーションの事情を考慮した仮想マシンのマイグレーション制御は、ほぼ不可能となっていた。
【００１３】
上記問題を解決するために、本発明では、従来技術が採用しているようなシステム全体の最適化のためのマイグレーションポリシー（以下、全体最適ポリシーと表現) だけでなく、アプリケーションに依存するマイグレーションポリシー（以下、アプリ依存ポリシーと表現) をユーザが定義でき、両ポリシーを考慮しながらマイグレーションを制御する技術を提供する。
【課題を解決するための手段】
【００１４】
仮想マシンのマイグレーションシステムは、アプリケーションの識別情報およびデータタイプの静的・動的情報を含むアプリケーション情報のスキーマを予め、例えば、アプリケーション運用者が定義し、また、当該スキーマを使って仮想マシンを移動させる際のシステム全体を最適化する全体最適ポリシーを、例えば、アプリケーション運用者とシステム運用者が設定し、当該スキーマを使って仮想マシン上で稼働するアプリケーションに依存したアプリ依存ポリシーをアプリケーション運用者が設定しておき、その定義されたスキーマにしたがって仮想マシン上のアプリケーション情報とサーバ自身及び仮想マシンの静的及び動的な情報を含むサーバ情報とをサーバから定期的に受信し、受信したアプリケーション情報とサーバ情報をもとに、記憶部に記憶されたアプリ依存ポリシーおよび全体最適ポリシーを参照して、全体最適ポリシーよりもアプリ依存ポリシーのマイグレーション条件を優先させて仮想マシンを移動する必要があるかを判定し、移動する必要がある場合はその仮想マシンの移動先を決定するマイグレーション制御の構成とすることによって、アプリケーションの事情を考慮した仮想マシンの移動先の決定が可能となる。
【００１５】
また、仮想マシンのマイグレーションシステムは、予め、例えば、アプリケーション運用者によって定義されたスキーマにしたがって、アプリケーションに依存した仮想マシンの移動条件が定義されたアプリ依存ポリシーを予め仮想マシン管理装置より複写して自身に保持する各サーバから、サーバ自身及び仮想マシンの静的・動的な情報を含むサーバ情報を定期的に受信し、各サーバにおいて該アプリ依存ポリシーを参照して移動条件に該当する仮想マシンを判断させ、移動条件に該当する仮想マシンがある場合に、マイグレーション対象の仮想マシンの付加情報を受信し、受信した付加情報に基づいて、アプリ依存ポリシーとシステム全体を最適化する全体最適ポリシーを参照して仮想マシンを移動する必要があるかを判定し、移動する必要がある場合はその仮想マシンの移動先を決定する構成とすることによって、アプリ依存ポリシーの中に、負荷情報などの数値化された情報だけでなく、数値化・パターン化できない情報をもとに、マイグレーションする条件、マイグレーション対象、マイグレーション先などの判定基準を定義可能とすることによって、より複雑なアプリケーションの事情を優先したマイグレーションの制御が可能となる。
【発明の効果】
【００１６】
本開示する技術は、アプリケーションが稼働状態にある仮想マシンを複数のサーバ間で移動させるマイグレーション制御において、アプリ依存ポリシーの中に、負荷情報などの数値化情報だけでなく、数値化・パターン化できない情報をもとに、マイグレーション条件、マイグレーション対象、マイグレーション先の判定基準を定義可能とすることによってアプリケーションの事情を優先したマイグレーション先の制御が可能となる。
【００１７】
これにより、例えば、データセンターなどの様々な顧客のアプリケーションが仮想マシン上で稼働する環境において、システム側で決められる運用ポリシーに加え、個々のアプリケーションの運用ポリシーを反映させることが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、図面にもとづいて本発明の実施形態を説明する。実施例１では、仮想マシンのマイグレーション先決定の判断を仮想マシン管理装置側で全て処理する構成、実施例２では、仮想マシン管理装置に設定されたアプリ依存ポリシーを各サーバに複写してサーバ自身に保持し、該マイグレーション条件に該当する仮想マシンを判断させる構成としている。
［実施例１］
図１は、本発明の実施の形態になるマイグレーションシステムの基本構成（実施例１）を示す。本システムは、ネットワーク６を介して互いに接続する仮想マシン管理装置１と各ホストＯＳが搭載された複数のサーバ（サーバ２１、サーバ２２）から構成されている。各サーバは、分割された複数の仮想マシン（ＶＭ）とサーバモニタ（ＳＭ）を備え、また、各アプリケーション（以後、アプリと表現）は、仮想マシン上で稼働し、アプリモニタ（ＡＭ）によって定期的にアプリケーション情報がサーバモニタを介して仮想マシン管理装置１に報告される。
【００１９】
サーバ２１は、サーバモニタ（ＳＭ）３１、分割された複数の仮想マシン５ａ、５ｂ、およびアプリ（Ａ、Ｂ）を監視するアプリモニタ（ＡＭ）４ａ、４ｂを備え、サーバ２２は、ＳＭ３２、分割された複数のＶＭ５ｃ、およびアプリ（Ｃ）を監視するＡＭ４ｃを備えている。なお、本例では、サーバが２台、ＶＭが３つ起動した状態となっているが、制御するサーバ数、ＶＭ数に制限はない。
【００２０】
ここで、アプリモニタ（４ａ、４ｂ、４ｃ）は、アプリ１つにつき１つのアプリモニタが動作し、予めアプリ情報スキーマ管理部１１で定義されたスキーマにしたがって、アプリの情報をサーバモニタ（３１、３２）に定期的に報告する。報告の仕方は、アプリモニタがサーバモニタに情報を送信してもよいし、サーバモニタがアプリモニタに問い合わせてもよい。
【００２１】
また、サーバモニタ（３１、３２）は、各物理サーバ１つにつき１つのサーバモニタが動作し、サーバのＣＰＵ、メモリの静的情報や負荷情報、動作中の仮想マシンの情報、アプリモニタから取得したアプリの情報を、マイグレーション装置１のサーバ／ＶＭ情報管理部１３（後述）に定期的に報告する。報告の仕方は、サーバモニタがサーバ／ＶＭ情報管理部１３に情報を送信してもよいし、サーバ／ＶＭ情報管理部１３がサーバモニタに問い合わせてもよい。
さらに、仮想マシン管理装置１は、アプリケーション情報のスキーマを予め定義するアプリ情報スキーマ記憶部１１、仮想マシンを移動させるときのシステム全体を最適化する全体最適ポリシー及びスキーマを使って仮想マシン上で稼働するアプリケーションに依存したアプリ依存ポリシーを設定するマイグレーションポリシー設定部１２と、スキーマにしたがって仮想マシン上のアプリケーションの状態情報と、サーバ自身及び仮想マシンの静的・動的な情報とを定期的に受信するサーバ／仮想マシン（ＶＭ）情報管理部１３と、受信したアプリケーションの状態情報とサーバ自身及び仮想マシンの静的・動的情報をもとに、アプリ依存ポリシーおよび全体最適ポリシーにしたがって仮想マシンの移動先を決定するマイグレーション制御部１４とから構成されている。
【００２２】
サーバ／ＶＭ情報管理部１３は、複数のサーバモニタからの情報を取得し、マイグレーション制御部( 後述) からの情報問合せに対して情報を提供する。
【００２３】
また、マイグレーション制御部１４では、マイグレーションポリシー設定部１２で定義されたポリシーのマイグレーション条件に該当する情報がないか、定期的にサーバ／ＶＭ情報管理部１３に問い合わせる。逆に、サーバ／ＶＭ情報管理部１３が定期的にマイグレーション制御部１４に情報を送信してもよい。マイグレーション条件に該当する情報があった場合は、マイグレーションポリシーを基にマイグレーション対象とマイグレーション先を決定し、マイグレーション対象の仮想マシンが動作中のサーバに対して、マイグレーション指示を出す。
【００２４】
さらに、アプリケーションモニタがサーバモニタに報告する情報（最終的にサーバ／ＶＭ情報管理部１３に報告される情報) のスキーマは、予めアプリケーション運用者によって定義され、アプリ情報スキーマ記憶部１１に記憶される。また、ここで定義されたスキーマを使って、マイグレーションポリシーが定義され、マイグレーションポリシー設定部１２に記憶される。
【００２５】
マイグレーションポリシー設定部１２では、どういう条件でマイグレーションが必要と判断するか（マイグレーション条件) 、どのＶＭを移動するか（マイグレーション対象) 、どのサーバに移動するか（マイグレーション先) を定義する。システム全体の最適化のための全体最適ポリシーは、システム運用者が、また、アプリケーションに依存するアプリ依存ポリシーは、アプリケーション運用者とシステム運用者が定義する。
【００２６】
なお、仮想マシン管理装置１は、図示していないＣＰＵ（Central Processing Unit ）、メモリを備えたコンピュータであり、図示していない補助記憶装置に蓄えられたマイグレーションプログラムが起動時にメモリに展開され、ＣＰＵによってマイグレーションの各処理が実行される。
【００２７】
また、仮想マシン管理装置１は、上記サーバ群とネットワーク６を介して接続し、これらサーバ群および仮想マシンを管理する管理サーバとして、その機能を組み込む形式であってもよい。
【００２８】
図２は、本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフローを示す。
ステップＳ１１：マイグレーション制御部１４は、サーバ／ＶＭ情報管理部１３にアプリ依存ポリシーのマイグレーション条件に該当するＶＭが存在するか否かを問合せる。
ステップＳ１２：サーバ／ＶＭ情報管理部１３は、マイグレーション条件に該当するＶＭ（マイグレーション対象）がある場合、マイグレーション制御部１４にその情報を返す。また、該当するＶＭがなかった場合、全体最適ポリシーによる判定（図３) に移る。ステップＳ１３：全マイグレーション対象について指示済みとしたか否かを判定する。
ステップＳ１４：該当するマイグレーション対象が複数ある場合には、そのうちの１つを選択し、マイグレーション先候補をリストアップする。これをマイグレーション先リストＡとする。
ステップＳ１５：全体最適ポリシーのマイグレーション先の定義にしたがって、マイグレーション先リストＡからマイグレーション先を決定する。
ステップＳ１６：マイグレーション対象が動作中のサーバに対して、マイグレーション先を指定してマイグレーションを指示する。
【００２９】
マイグレーション対象がまだ残っている場合、ステップＳ１３に戻り、ステップＳ１４〜１６の処理を繰り返す。
【００３０】
図３は、本発明の実施の形態になる全体最適ポリシーによるマイグレーション処理のフローを示す。本実施例では、アプリ依存ポリシーのマイグレーション条件に該当するＶＭはなかったものの、全体最適ポリシーのマイグレーション条件に該当するＶＭがあった場合におけるマイグレーション制御のフローを示している。
ステップＳ２１：全マイグレーション対象に対し、マイグレーション判定済みか否かをチェックする。
ステップＳ２２：マイグレーション対象が複数ある場合、そのうちの１つを選択し、マイグレーション先候補をリストアップする。これをマイグレーション先リストＢとする。
ステップＳ２３：マイグレーション先リストＢは最後に到達したかをチェックする。
ステップＳ２４：マイグレーション先リストＢの先頭からマイグレーション先を１つ選択し、そこに実際マイグレーションした場合にアプリ依存ポリシーのマイグレーション条件に該当するかをチェックする。
ステップＳ２５：実際にマイグレーションするとアプリ依存ポリシーのマイグレーション条件に該当すると判定された場合は、マイグレーションは行わず、マイグレーション先リストＢの次の候補を選択し、ステップＳ２３に戻り、以降の処理を繰り返す。
ステップＳ２６：実際にマイグレーションしてもアプリ依存ポリシーのマイグレーション条件に該当しないと判定された場合は、マイグレーション対象が、動作中のサーバに対し、マイグレーション先を指定してマイグレーションを指示する。マイグレーション対象がまだ残っている場合、ステップＳ２１に戻り、以降の処理を繰り返す。
【００３１】
全体最適ポリシーのマイグレーション条件に該当するだけの場合でも、実際にマイグレーションすると、今度は、アプリ依存ポリシーのマイグレーション条件に該当してしまい、すぐにマイグレーションが行われてしまう場合がある。上記のフローは、そのような場合に、効率化のためにマイグレーションは行わないというマイグレーション制御になっている。つまり、本フローでは、アプリ依存ポリシーを優先するが、全体最適ポリシーも考慮した、かつ効率的なマイグレーション制御を行っていることになる。
【００３２】
さらに、図４、図５を用いて、アプリの事情に応じて仮想マシンのマイグレーション先が決定される仕組みを説明する。
【００３３】
図４は、アプリの事情を考慮したマイグレーション先決定の概念図（ケース１：ある時間帯サーバを独占する例）を示す。ケース１のアプリの事情は、「アプリＢがサーバを独占する時間帯なので、サーバ２、３のアプリＡが稼働中のＶＭを他に移動したい」という内容である。
【００３４】
ある時間帯、サーバを独占したいアプリＢが、サーバ１、サーバ２、およびサーバ３の仮想マシン（ＶＭ）上で稼働中となっている。アプリＣは、常に他のアプリとの同居が許可されているアプリであり、サーバ４とサーバ５のＶＭ上で稼働している。こうした環境下で、サーバ２とサーバ３のアプリＡが稼働するＶＭを他のサーバに移すことになる。サーバ２およびサーバ３のアプリＡが稼働中のＶＭのマイグレーション先として、サーバ１（ＶＭのＣＰＵ使用率１０％）は、低負荷であるがアプリＢが稼働中のため移動不可能、また、低負荷ではないがアプリＢが稼働していないサーバ４（ＶＭのＣＰＵ使用率３０％）およびサーバ５（ＶＭのＣＰＵ使用率２５％）が移動可能な候補となる。
【００３５】
図５は、アプリ事情によるマイグレーション先決定を説明する図（例２：アプリケーションのジョブタイプで決定する例）を示す。ケース２のアプリの事情は、「サーバ４の負荷が高いのでアプリＡ２が稼働中のＶＭを他に移動したい」という内容である。
【００３６】
サイト１では、サーバ１とサーバ２が属し、サーバ１のみがアプリＢを稼働しており、サイト２には、サーバ３、サーバ４、サーバ５が属し、サーバ４におけるＶＭのＣＰＵ使用率は８０％、サーバ５におけるＶＭのＣＰＵ使用率は３０％となっている。サイト２における異なるＶＭ上のアプリＡ１とＡ２は同じアプリであるが、その上で動くジョブが連携して動作したり、独立に動作したりするものとすると、
（１）アプリＡ１とアプリＡ２上のジョブが連携して動作している場合、例え、低負荷であっても、異なるサイト１のサーバへの移動は不可能であるため、同一サイト２内のサーバ５への移動を行うことになり、
（２）アプリＡ１とアプリＡ２上のジョブが独立して動作している場合、アプリＡ２が稼働中のＶＭを低負荷の異なるサイト１のサーバ２へ移動することが可能であることを示している。
【００３７】
以上のケース１、ケース２を具現化するマイグレーション処理に対し、図６〜９を用いてその詳細を説明する。
【００３８】
ここで、図６〜９において共通のマイグレーションのシステム構成の前提、アプリケーション、全体最適ポリシー、およびアプリ依存ポリシーの各条件を以下に示す。
１．システムの前提条件
（ａ）データセンターのような、複数のサーバを複数の顧客に貸し出す場面を想定。
（ｂ）１台のサーバ上で複数のＶＭを稼動させ、そのＶＭ１つを単位として顧客に貸し出す。
（ｃ）サーバは、２つのサイト１、サイト２に設置されているが、サイト間はネットワークでつながっており、異なるサイトのサーバ同士を同時に使うことも可能である。
（ｄ）顧客に貸し出すＶＭの台数・性能配分などは、データセンターの運用方針、貸し出しの料金体系によって決定する。
（ｅ）各アプリは複数のＶＭを利用する。
（ｆ）ＶＭ１つにつきアプリ１つが稼働する。
２．アプリケーション
上記各ＶＭ上で稼働するアプリケーションは以下の３つとする。
アプリＡ：多数のユーザのジョブを複数サーバで分散実行させるアプリ（例：多数のユーザが使うジョブキューイングシステム）で、複数のジョブが連携して動作する場合と独立して動作する場合がある。
【００３９】
情報スキーマとしては、
ａｐｐ＿ｎａｍｅ（Ｓｔｒｉｎｇ）：Ａ
ｊｏｂ＿ｔｙｐｅ（Ｓｔｒｉｎｇ）: ｃｏｏｐｅｒａｔｉｖｅ＿ｔｙｐｅ（連携タイプ）／ｉｎｄｅｐｅｎｄｅｎｔ＿ｔｙｐｅ（独立タイプ)   となる。
アプリＢ：複数ユーザからの接続を中継するサーバを多数動作させるアプリ（例：ＴＶ議システム）で、稼働率が高い昼間の時間帯（９：００−１７：００）は１台の物理サーバを占有する。
【００４０】
情報スキーマとしては、
ａｐｐ＿ｎａｍｅ（Ｓｔｒｉｎｇ）：Ｂ
ｔｉｍｅ（ｔｉｍｅ）: 時刻    となる。
アプリＣ：多数のジョブを複数サーバで分散実行させるアプリ（例：特定ユーザが使うジョブキューイングシステム）で、各ジョブは常に独立して動作する。
【００４１】
情報スキーマとしては、
ａｐｐ＿ｎａｍｅ（Ｓｔｒｉｎｇ）：Ｃ    となる。
３．全体最適ポリシー
システム全体（データセンター) の最適化のための全体最適ポリシーは、何を監視するかのマイグレーション条件、どのＶＭを移動すべきかのマイグレーション対象、対象ＶＭの移動先となるマイグレーション先の項目から構成され、その内容はシステム運用者によって設定される。以下に、その具体的内容を示す。
＜マイグレーション条件＞
１つのＶＭのＣＰＵ使用率（ｃｐｕ＿ｒａｔｅ）が８０％を越えた時
＜マイグレーション対象＞
ＣＰＵ使用率が８０％を超えたＶＭ
＜マイグレーション先＞
動作ＶＭのＣＰＵ使用率合計の値が最も低いサーバ、実際には、上記の条件に合うマイグレーション先候補のリスト作成方法として以下のようなソートキー、昇順／降順を定義する。
【００４２】
リストのソートキー：ｃｐｕ＿ｒａｔｅ（１）＋・・・＋ｃｐｕ＿ｒａｔｅ（ｎ）
ｎ: ＶＭ数
昇順／降順：昇順
上記定義において、各サーバのＣＰＵ性能が異なる場合もあり得るので、ソートキーを定義する際には、性能に合わせてＣＰＵ使用率に重みづけをして加算してもよい。
４．アプリ依存ポリシー
アプリ（上記アプリＡ〜Ｃを使用）に依存するアプリ依存ポリシーは、全体最適ポリシーと同様の項目から構成され、その内容はアプリケーション運用者とシステム運用者によって設定される。以下に、その具体的内容を示す。
＜マイグレーション条件＞
アプリＢが稼働中（ａｐｐ＿ｎａｍｅ＝Ｂ）かつ  ９：００≦ｔｉｍｅ＜１７：００の場合
＜マイグレーション対象＞
アプリＢが稼働中のマシン上の、アプリＢ以外のアプリ稼働中（ａｐｐ＿ｎａｍｅ≠Ｂ）のＶＭ全て
＜マイグレーション先＞
アプリＡが稼働中のＶＭがマイグレーションされる場合
・ｊｏｂ＿ｔｙｐｅ＝ｃｏｏｐｅｒａｔｉｖｅ＿ｔｙｐｅの場合、同じサイト内のアプリＢが稼働していないサーバ
・ｊｏｂ＿ｔｙｐｅ＝ｉｎｄｅｐｅｎｄｅｎｔ＿ｔｙｐｅの場合
・アプリＢが稼働していないサーバ
アプリＣが稼働中のＶＭがマイグレーションされる場合
・アプリＢが稼働していないサーバ
図６は、ケース１においてサーバモニタ及びアプリモニタから取得する情報例を示す。本例では、アプリＢがサーバを独占する時間帯なので、他のアプリが稼働中のＶＭをマイグレーションさせる例を示している。この例は、図２のアプリ依存ポリシーのマイグレーション条件に該当するＶＭが存在した場合の例である。
【００４３】
例えば、アプリＢを稼働させているサーバ２、３の情報２、３を取り上げて説明すると、情報２では、サーバ情報として、サーバ名：１９２．０．０．２、サイト名：サイト１、ＣＰＵ：３ＧＨｚ、メモリ：２ＧＢの情報が得られ、ＶＭ情報として、ＶＭ＃１は、ＣＰＵ使用率：２５％、メモリ：２５６ＭＢ、アプリ名：Ａ、ジョブタイプ：独立型、ＶＭ＃２は、ＣＰＵ使用率：３０％、メモリ：２５６ＭＢ、アプリ名：Ｂ、時刻：１３：１５が得られている。
【００４４】
また、情報３では、サーバ情報として、サーバ名：１９２．０．０．３、サイト名：サイト２、ＣＰＵ：３ＧＨｚ、メモリ：２ＧＢの情報が得られ、ＶＭ情報として、ＶＭ＃１は、ＣＰＵ使用率：３５％、メモリ：２５６ＭＢ、アプリ名：Ａ、ジョブタイプ：連携型、ＶＭ＃２は、ＣＰＵ使用率：４５％、メモリ：２５６ＭＢ、アプリ名：Ｂ、時刻：１３：１５が得られている。
【００４５】
図７は、本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフロー（ケース１）を示す。
ステップＳ３１：サーバ／ＶＭ情報管理部１３に、ａｐｐ＿ｎａｍｅ＝”Ｂ”で、かつ、９：００≦ｔｉｍｅ＜１７：００であるＶＭが存在するか問合せる。サーバ２とサーバ３のサーバモニタから送信された情報の中に、アプリ依存ポリシーのマイグレーション条件に該当する情報（時刻が１３：１５) が含まれているため、サーバ／ＶＭ情報管理部１３がその旨をマイグレーション制御部１４に通知する。
ステップＳ３２：サーバ２とサーバ３のマイグレーション対象を判定する。アプリ依存ポリシーのマイグレーション対象の定義は、「アプリＢ以外のアプリが稼働中のＶＭ」となっているので、サーバ２のＶＭ＃１とサーバ３のＶＭ＃１がマイグレーション対象となる。
ステップＳ３３：サーバ２のＶＭ＃１のアプリの情報（ａｐｐ＿ｎａｍｅ＝”Ａ”、ｊｏｂ＿ｔｙｐｅ＝”ｉｎｄｅｐｅｎｄｅｎｔ＿ｔｙｐｅ”）からマイグレーション先リスト（サーバ1 、サーバ４、サーバ５) を作成する。
ステップＳ３４：マイグレーション先リストの中でＶＭのＣＰＵ使用率（ｃｐｕ＿ｒａｔｅ）の合計が最小のサーバ１をマイグレーション先とする
ステップＳ３５：サーバ2 に対して、ＶＭ＃１をサーバ１へマイグレーションするよう指示する。
ステップＳ３６：サーバ３のＶＭ＃１のアプリの情報（ａｐｐ＿ｎａｍｅ＝”Ａ”、ｊｏｂ＿ｔｙｐｅ＝”ｃｏｏｐｅｒａｔｉｖｅ＿ｔｙｐｅ”) と、サーバ３のサーバの情報（ｓｉｔｅ＝サイト２) とからマイグレーション先リスト（サーバ４、サーバ５) を作成する。
ステップＳ３７：そのマイグレーション先リストの中でＶＭのＣＰＵ使用率（ｃｐｕ＿ｒａｔｅ）の合計が最小のサーバ５をマイグレーション先とする。
ステップＳ３８：サーバ３に対して、ＶＭ＃１をサーバ５へマイグレーションするよう指示する。
【００４６】
図８は、ケース２においてサーバモニタ及びアプリモニタから取得する情報例を示す。本例では、「サイト２のサーバ３の負荷が高いのでアプリＡが稼働中のＶＭを他に移動したい」という命題を解決する例である。
【００４７】
例えば、サイト２のサーバ３の情報３を取り上げて説明すると、サーバ情報として、サーバ名：１９２．０．０．３、サイト名：サイト２、ＣＰＵ：３ＧＨｚ、メモリ：２ＧＢの情報が得られ、ＶＭ情報として、ＶＭ＃１は、ＣＰＵ使用率：８５％、メモリ：２５６ＭＢ、アプリ名：Ａ、ジョブタイプ：連携型、ＶＭ＃２は、ＣＰＵ使用率：２５％、メモリ：２５６ＭＢ、アプリ名：Ｂ、時刻：２２：２０が得られている。
【００４８】
図９は、本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフロー（ケース２）を示す。本例では、アプリ依存ポリシーのマイグレーション条件に該当するＶＭはないが、全体最適ポリシーのマイグレーション条件に該当するＶＭが存在する場合のマイグレーション例を示している。
ステップＳ４１：サーバ／ＶＭ情報管理部１３に、ｃｐｕ＿ｒａｔｅ≧８０％であるＶＭが存在するか問合せる。サーバ３のサーバモニタから送信された情報の中に、全体最適ポリシーのマイグレーション条件に該当する情報（ＣＰＵ使用率：８５％）が含まれているため、サーバ／ＶＭ情報管理部１３がその旨をマイグレーション制御部１４に通知する。
ステップＳ４２：サーバ３のマイグレーション対象を判定する。全体最適ポリシーのマイグレーション対象の定義は、「ＣＰＵ使用率が８０％を超えたＶＭ」となっているので、サーバ３のＶＭ＃１がマイグレーション対象となる。
ステップＳ４３：サーバ３のＶＭ＃１のアプリの情報（ａｐｐ＿ｎａｍｅ＝”Ａ”、ｊｏｂ＿ｔｙｐｅ＝”ｃｏｏｐｅｒａｔｉｖｅ＿ｔｙｐｅ”) と、サーバ３のサーバ情報（ｓｉｔｅ＝サイト２）からマイグレーション先リストを作成し、全体最適ポリシーのマイグレーション先定義にしたがってソートする（サーバ４、サーバ５) 。
ステップＳ４４：サーバ３のＶＭ＃１をサーバ５にマイグレーションした場合、アプリ依存ポリシーのマイグレーション条件（ａｐｐ＿ｎａｍｅ＝”Ｂ”で、かつ、９：００≦ｔｉｍｅ＜１７：００である) に該当するかを判定する。
ステップＳ４５：条件に該当しないので、サーバ３に対して、ＶＭ＃１をサーバ５へマイグレーションするよう指示する。
【００４９】
上述してきたように、本発明によって、アプリ依存ポリシーの中に、負荷情報などの数値化できるような情報だけでなく、「同じサイト内」、「あるアプリケーションが稼働している／いない」などの数値化・パターン化できない情報を基に、マイグレーションする条件、マイグレーション先の判定基準を定義可能としたため、システム全体よりアプリケーションの事情を優先したマイグレーション制御が可能になった。これにより、データセンターなどの様々な顧客のアプリケーションが仮想マシン上で稼働する環境で、システム（この場合データセンター) 側で決められた運用ポリシーだけでなく、個々のアプリケーションの運用ポリシーも反映可能となる。
【００５０】
従来では、数値化・パターン化できない情報を考慮したマイグレーションを行う場合、予め決めておいた静的な情報しか利用できず、アプリケーションの稼働環境（最初の起動環境、マイグレーション先等) が固定になってしまうという問題の解決が図れる。また、本発明のマイグレーションポリシーには、固定の情報（サーバのＩＰアドレスなど) ではなく、動的な情報（「現在稼働中のサイトと同じサイト」など) を使った定義が可能であるため、サーバの故障時や構成変更時にも柔軟に対応でき、従来技術に比べてアプリケーションの稼働環境が広くなる。
【００５１】
また、アプリケーションに依存するマイグレーションポリシーをユーザ定義（実際には、アプリケーション運用者とシステム運用者) としているため、システムへの新しいアプリケーション追加が柔軟に出来る。新しいアプリケーション追加に伴ってアプリ依存ポリシーの過去定義部分を変更することになっても、ソフトウェアを実装し直したり、新たに開発する必要はなく、定義し直すだけである。つまり、データセンターのような様々な顧客のアプリケーションが運用されるような環境に適用可能となる。
【００５２】
さらに、従来技術では、アプリケーション運用者のポリシーを無理やりシステム運用者のポリシーに合わせる必要があったため、柔軟なポリシー設定ができなかったが、全体最適ポリシーとアプリ依存ポリシーを個々に定義可能とすることによって、アプリケーション運用者（例えば、データセンターの利用者) 、システム運用者（例えば、データセンターの運用者) といった、立場の異なる運用者の運用ポリシーを同時に反映可能となる。
［実施例２］
図１０は、本発明の実施の形態になるマイグレーションシステムの基本構成（実施例２）を示す。本システムは、ネットワーク６を介して互いに接続する仮想マシン管理装置１と各ホストＯＳが搭載された複数のサーバ２−１、２−２から構成されている。
【００５３】
実施例１と同様に、サーバ２−１は、サーバモニタ（ＳＭ）３−１、分割された複数の仮想マシン（ＶＭ）５ａ、５ｂ、および各仮想マシン上で稼働するアプリＡ、Ｂを監視するアプリモニタ（ＡＭ）４ａ、４ｂを備え、また、サーバ２−２は、サーバモニタ（ＳＭ）３−２、分割された仮想マシン（ＶＭ）５ｃ、およびアプリＣを監視するアプリモニタ（ＡＭ）４ｃを備えている。
【００５４】
また、各サーバには、仮想マシン管理装置１のマイグレーションポリシー設定部１２において設定されているポリシーの内のアプリ依存ポリシーが、仮想マシン管理装置１から予めコピーされ、サーバ内の記憶部にアプリ依存ポリシー２０−１、２０−２として保持されている。
【００５５】
アプリモニタは、アプリ１つにつき、１つのアプリモニタが動作し、予めアプリ情報スキーマ管理部１１で定義されたスキーマにしたがって、アプリの情報をサーバモニタに定期的に報告する。
【００５６】
また、サーバモニタは、各物理サーバ１つにつき、１つのサーバモニタが動作し、予めマイグレーションポリシー設定部１２で設定され、各サーバにコピーされたアプリ依存ポリシー２０−１、２０−２のマイグレーション条件に該当するＶＭがないか、ある場合はどのＶＭをマイグレーションするか（マイグレーション対象) を判断し、定期的にマイグレーション制御部１４に以下の内容を報告する。
（１）マイグレーション条件に該当するＶＭがない場合
サーバのＣＰＵ（Central Processing Unit ）やメモリの静的情報や負荷情報、動作中のＶＭの情報、およびアプリモニタから取得したアプリの情報（以下、状態情報) を報告する。
（２）マイグレーション条件に該当するＶＭがある場合
上記状態情報にマイグレーション対象の情報を付加して報告する。
【００５７】
その報告の仕方は、サーバモニタがマイグレーション制御部１３に情報を送信してもよいし、マイグレーション制御部１３がサーバモニタに問い合わせてもよい。
【００５８】
仮想マシン管理装置１は、予め定義されたアプリケーション情報のスキーマを管理するアプリ情報スキーマ管理部１１、仮想マシンを移動させるときのシステム全体を最適化する全体最適ポリシー、また、該スキーマを使って仮想マシン上で稼働するアプリケーションに依存したアプリ依存ポリシーが設定されるマイグレーションポリシー設定部１２と、スキーマにしたがって仮想マシン上のアプリケーションの状態情報と、サーバ自身及び仮想マシンの静的・動的な情報とを定期的に受信し、受信したアプリケーションの状態情報とサーバ自身及び仮想マシンの静的・動的情報をもとに、アプリ依存ポリシーおよび全体最適ポリシーにしたがって仮想マシンを移動する必要があるかを判定し、移動する必要がある場合はその仮想マシンのマイグレーション先（移動先）を決定するマイグレーション制御部１４とから構成されている。
【００５９】
マイグレーション制御部１４は、複数の各サーバモニタからの情報を取得し、その情報とマイグレーションポリシー設定部１２で設定された全体最適ポリシー、アプリ依存ポリシーを基に、マイグレーション対象とマイグレーション先を決定し、マイグレーション対象のＶＭが動作中のサーバに対してマイグレーション指示を出す。
【００６０】
また、アプリ情報スキーマ管理部１１では、アプリがサーバモニタに報告する情報（つまり最終的にマイグレーション制御部１４に報告される情報) のスキーマが、予めアプリケーション運用者によって定義される。ここで定義されたスキーマを使って、マイグレーションポリシー設定部１２でマイグレーションポリシーが設定される。
【００６１】
さらに、マイグレーションポリシー設定部１２では、どういう条件でマイグレーションが必要と判断するか（マイグレーション条件) 、どのＶＭをマイグレーションするか（マイグレーション対象) 、どのサーバにマイグレーションするか（マイグレーション先) が定義される。
【００６２】
システム全体の最適化のための全体最適ポリシーは、システム運用者によって定義され、アプリケーションに依存するアプリ依存ポリシーは、アプリ運用者とシステム運用者によって定義され、かつ、該アプリ依存ポリシーは、予め各サーバに仮想マシン管理装置１からコピーされ、各サーバ内の記憶領域に保持される。
【００６３】
図１１は、本発明の実施の形態になるサーバモニタからマイグレーション制御部への情報送信フローを示す。本フローは、サーバモニタがマイグレーション制御部に情報を報告するまでの流れを示している。
【００６４】
まず、ステップＳ５１において、各サーバモニタは、定期的にアプリモニタからアプリケーションの情報を受信する。
【００６５】
つぎに、ステップＳ５２において、各サーバモニタは、仮想マシン管理装置１から予めコピーし、自身の記憶領域に保持しているアプリ依存ポリシーを定期的に参照する。そして、ステップＳ５３において、マイグレーション条件に該当するＶＭがあるか否かを判断する。
【００６６】
判定の結果、条件に該当するＶＭがある場合、ステップＳ５４において、サーバモニタは、状態情報にマイグレーション対象の情報を付加してマイグレーション制御部１４に報告する。
【００６７】
一方、条件に該当するＶＭがない場合には、ステップＳ５５において、サーバモニタは、状態情報のみをマイグレーション制御部１４に報告する。
【００６８】
図１２は、本発明の実施の形態になるサーバモニタからの状態情報受信時におけるマイグレーション制御部の処理フロー（その１）を示す。本フローは、図１１のフローの続き（マイグレーション制御１）として、サーバモニタからマイグレーション対象（仮想マシン）の情報が付加された状態情報を受信したときのマイグレーション制御部１４における動作フローを示している。
【００６９】
まず、ステップＳ６１において、マイグレーション制御部１４は、あるサーバモニタから情報を受信すると、マイグレーションポリシー設定部１２のアプリ依存ポリシーを基に、マイグレーション先候補をリストアップする。これをマイグレーション先リストＡとする。
【００７０】
つぎに、ステップＳ６２において、全体最適ポリシーのマイグレーション先の定義にしたがって、マイグレーション先リストＡからマイグレーション先を決定する。
【００７１】
そして、ステップＳ６３において、マイグレーション対象が動作中のサーバに対して、マイグレーション先を指定してマイグレーションを指示する。
【００７２】
以上、アプリ依存ポリシーを優先するが、全体最適ポリシーも考慮したマイグレーション制御を行っていることになる。
【００７３】
図１３は、本発明の実施の形態になるサーバモニタからの状態情報受信時におけるマイグレーション制御部の処理フロー（その２）を示す。本フローは、図１１のフローの続き（マイグレーション制御２）として、マイグレーション制御部１４が、ある一つのサーバモニタから状態情報のみを受信したときのマイグレーション制御の流れを示している。
【００７４】
まず、ステップＳ７１において、マイグレーション制御部１４は、定期的にマイグレーションポリシー設定部１２で設定された全体最適ポリシーのマイグレーション条件を参照する。そして、ステップＳ７２において、該当するＶＭがあるか否か判断する。
【００７５】
判定の結果、条件に該当するＶＭがない場合、マイグレーションは行われず、本フローは終了となる。
【００７６】
一方、条件に該当するＶＭがある場合、ステップＳ７３において、全体最適ポリシーを基に、マイグレーション先候補をリストアップする。これをマイグレーション先リストＢとする。そして、ステップＳ７４で、マイグレーション先リストＢにおけるマイグレーション先候補の全てが選択されたかを判定する。
【００７７】
つぎに、ステップＳ７５において、マイグレーション先リストＢの先頭からマイグレーション先を１つ選択し、そこに実際マイグレーションした場合のアプリ依存ポリシーのマイグレーション条件と照合する。そして、ステップＳ７６において、該当マイグレーション先の存在を判定する。
【００７８】
判定の結果、アプリ依存ポリシーのマイグレーション条件に該当しない場合は、ステップＳ７７において、マイグレーション対象が動作中のサーバに対して、マイグレーション先を指定してマイグレーションを指示する。
【００７９】
一方、アプリ依存ポリシーのマイグレーション条件に該当する場合は、マイグレーションは行わず、ステップＳ７４に戻り、マイグレーション先リストＢの次の候補を選択し、以降の処理を繰り返す。
【００８０】
上述してきたフローでは、全体最適ポリシーのマイグレーション条件に該当するだけの場合でも、実際にマイグレーションすると、今度はアプリ依存ポリシーのマイグレーション条件に該当し、すぐにマイグレーションが行われてしまうような場合に対し、効率化のためにマイグレーションは行わないというマイグレーション制御としている。
【００８１】
さらに、実施例１の場合と同様、図４、５のケース１、ケース２を具現化するマイグレーション処理について、図１４〜１７を用いて以下に説明する。なお、使用したシステム及びアプリケーションの前提条件、全体最適ポリシー及びアプリ依存ポリシーの定義は、実施例１と同じである。
【００８２】
まず、ケース１の例についての報告情報の流れについて、図１４、図１５を用いて以下に説明する。この例は、サーバモニタが、マイグレーション対象の情報を状態情報に付加してマイグレーション制御部１４に報告する場合の例である。
【００８３】
図１４は、ケース１においてサーバモニタ及びアプリモニタから取得する情報例を示す。本例では、アプリＢがサーバを独占する時間帯なので、他のアプリが稼働中のＶＭをマイグレーションさせるケース１の例を示している。
【００８４】
例えば、アプリＢを稼働させているサーバ２、３の情報２、３を取り上げて説明すると、情報２では、サーバ情報として、サーバ名：１９２．０．０．２、サイト名：サイト１、ＣＰＵ：３ＧＨｚ、メモリ：２ＧＢの情報が得られ、ＶＭ情報として、ＶＭ＃１は、ＣＰＵ使用率：２５％、メモリ：２５６ＭＢ、アプリ名：Ａ、ジョブタイプ：独立型、ＶＭ＃２は、ＣＰＵ使用率：３０％、メモリ：２５６ＭＢが得られている。
【００８５】
さらに、（１）の部分は、アプリ依存ポリシーのマイグレーション条件に該当する情報としてアプリＢ、時間１３：１５が得られ（（１）の部分）、また、（２）の部分は、付加されたマイグレーション対象としてＶＭ＃１が得られる（（２）の部分）。
【００８６】
また、情報３では、サーバ情報として、サーバ名：１９２．０．０．３、サイト名：サイト２、ＣＰＵ：３ＧＨｚ、メモリ：２ＧＢの情報が得られ、ＶＭ情報として、ＶＭ＃１は、ＣＰＵ使用率：３５％、メモリ：２５６ＭＢ、アプリ名：Ａ、ジョブタイプ：連携型、ＶＭ＃２は、ＣＰＵ使用率：４５％、メモリ：２５６ＭＢが得られている。
【００８７】
さらに、情報２と同様に、アプリ依存ポリシーのマイグレーション条件に該当する情報としてアプリ名：Ｂ、時刻：１３：１５が得られ、付加されたマイグレーション対象としてＶＭ＃１が得られる。
【００８８】
図１５は、本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフロー（ケース１）を示す。
【００８９】
まず、ステップＳ８１において、サーバ２のサーバモニタは、自身が保持するアプリ依存ポリシーを参照して、マイグレーション条件に該当するＶＭ（ａｐｐ＿ｎａｍｅ＝”Ｂ”で、かつ、９：００≦ｔｉｍｅ＜１７：００であるＶＭが存在するかを判断する。
【００９０】
ステップＳ８２において、条件に該当するのはサーバ２のＶＭ＃２であり、アプリ依存ポリシーのマイグレーション対象の定義は、「アプリケーションＢ以外のアプリケーション用ＶＭ」となっているので、マイグレーション対象は、サーバ２のＶＭ＃１と判定され、サーバ２のサーバモニタは、状態情報にマイグレーション対象の情報（サーバ２のＶＭ＃１) を付加してマイグレーション制御部１４に報告する。
【００９１】
ステップＳ８３において、マイグレーション制御部１４は、マイグレーションポリシー設定部１２のアプリ依存ポリシーを参照して、サーバ２のＶＭ＃１のアプリケーションの情報（ａｐｐ＿ｎａｍｅ＝”Ａ”、ｊｏｂ＿ｔｙｐｅ＝”ｉｎｄｅｐｅｎｄｅｎｔ＿ｔｙｐｅ”）から、マイグレーション先リスト（サーバ１、サーバ４、サーバ５) を作成する。
【００９２】
ステップＳ８４において、マイグレーションポリシー設定部１２の全体最適ポリシーを参照して、マイグレーション先リストの中でＶＭのＣＰＵ使用率（ｃｐｕ＿ｒａｔｅ）の合計が最小のサーバ１をマイグレーション先とする。
【００９３】
ちなみに、サーバ１、サーバ４、およびサーバ５におけるＣＰＵ使用率（ｃｐｕ＿ｒａｔｅ）の合計は、それぞれ、１０％、３０％、および２５％となっている。
【００９４】
ステップＳ８５において、マイグレーション制御部１４は、サーバ２に対して、ＶＭ＃１をサーバ１へマイグレーションするよう指示する。
【００９５】
つぎに、ケース２の例についての報告情報の流れについて、図１６、図１７を用いて以下に説明する。ケース２は、アプリ依存ポリシーのマイグレーション条件に該当するＶＭはないが、全体最適ポリシーのマイグレーション条件に該当するＶＭが存在する場合のマイグレーション例である。
【００９６】
図１６は、ケース２においてサーバモニタ及びアプリモニタから取得する情報例を示す。本例は、「サイト２のサーバ３の負荷が高いのでアプリＡが稼働中のＶＭを他に移動したい」という命題を解決する例である。
【００９７】
例えば、サイト２のサーバ３の情報３を取り上げて説明すると、サーバ情報として、サーバ名：１９２．０．０．３、サイト名：サイト２、ＣＰＵ：３ＧＨｚ、メモリ：２ＧＢの情報が得られ、ＶＭ情報として、ＶＭ＃１はＣＰＵ使用率：８５％（全体最適ポリシーのマイグレーション条件に該当する情報）、メモリ：２５６ＭＢ、アプリ名：Ａ、ジョブタイプ：連携型、ＶＭ＃２は、ＣＰＵ使用率：２５％、メモリ：２５６ＭＢ、アプリ名：Ｂ、時刻：２２：２０が得られている。
【００９８】
図１７は、本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフロー（ケース２）を示す。
【００９９】
まず、ステップＳ９１において、各サーバのサーバモニタは、自身が保持するアプリ依存ポリシーを参照して、マイグレーション条件に該当するＶＭ（ａｐｐ＿ｎａｍｅ＝”Ｂ”で、かつ、９：００≦ｔｉｍｅ＜１７：００であるＶＭ）が存在するか判断する。
【０１００】
ステップＳ９２において、条件に該当するＶＭが存在しないので、各サーバモニタは、状態情報のみをマイグレーション制御部１４に報告する。
【０１０１】
ステップＳ９３において、マイグレーション制御部１４は、マイグレーションポリシー設定部１２の全体最適ポリシーを参照して、各サーバモニタからの情報の中に全体最適ポリシーのマイグレーション条件に該当するＶＭ（ＣＰＵ使用率ｃｐｕ＿ｒａｔｅ≧８０％であるＶＭ) の情報がないかを判断する。
【０１０２】
サーバ３のサーバモニタから送信された情報の中に、その条件に該当する情報（ｃｐｕ＿ｒａｔｅ＝８５％）が含まれているため、サーバ３のＶＭ＃１がマイグレーション対象となる。
【０１０３】
ステップＳ９４において、サーバ３のＶＭ＃１のアプリケーションの情報（ａｐｐ＿ｎａｍｅ＝”Ａ”、ｊｏｂ＿ｔｙｐｅ＝”ｃｏｏｐｅｒａｔｉｖｅ＿ｔｙｐｅ”、ｓｉｔｅ＝サイト２）からマイグレーション先リストを作成し、全体最適ポリシーのマイグレーション先定義に従ってソートする（サーバ４、サーバ５) 。
【０１０４】
ちなみに、サーバ４、およびサーバ５におけるＣＰＵ使用率（ｃｐｕ＿ｒａｔｅ）の合計は、それぞれ、３０％、および２５％となっている。
【０１０５】
ステップＳ９５において、サーバ３のＶＭ＃１をサーバ５にマイグレーションした場合、アプリ依存ポリシーのマイグレーション条件（ａｐｐ＿ｎａｍｅ＝”Ｂ”で、かつ、９：００≦ｔｉｍｅ＜１７：００であるＶＭ）に該当するか判定する。
【０１０６】
ステップＳ９６において、条件に該当しないので、マイグレーション制御部１４は、サーバ３に対して、ＶＭ＃１をサーバ５へマイグレーションするよう指示する。
【０１０７】
以上、仮想マシン管理装置に設定されたアプリ依存ポリシーを各サーバに複写してサーバ自身に保持し、該マイグレーション条件に該当する仮想マシンを判断させる構成とした実施例２の発明によって、マイグレーション先の決定を仮想マシン管理装置側だけで処理する場合に比べて、マイグレーション処理の効率を向上させることができる。
【０１０８】
以上述べてきた本発明の実施の態様は、以下の付記に示す通りである。
（付記１）  アプリケーションが稼働状態にある仮想マシンを複数のサーバ間で移動させる仮想マシン管理装置におけるマイグレーションプログラムであって、
前記仮想マシン管理装置は、
予め運用者によって定義されたアプリケーションの状態情報のスキーマと、該スキーマを使って設定される前記アプリケーションに依存するアプリ依存ポリシー及びシステム全体を最適化する全体最適化ポリシーを記憶領域に備え、
前記仮想マシン管理装置に、
前記スキーマにしたがって、前記仮想マシン上のアプリケーションの状態情報と前記サーバ自身及び前記仮想マシンの静的・動的な情報とを定期的に前記サーバから受信するステップと、
受信した前記アプリケーションの状態情報と前記仮想マシンの静的・動的情報をもとに、前記アプリ依存ポリシー及び前記全体最適ポリシーを参照して、仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定するステップと、
を実行させるマイグレーションプログラム。
（付記２）  アプリケーションが稼働状態にある仮想マシンを複数のサーバ間で移動させる仮想マシン管理装置におけるマイグレーションプログラムであって、
前記仮想マシン管理装置は、
予め運用者によって定義されたアプリケーションの状態情報のスキーマと、該スキーマを使って設定される前記アプリケーションに依存するアプリ依存ポリシー及びシステム全体を最適化する全体最適化ポリシーを記憶領域に備え、また、前記サーバには、前記仮想マシン管理装置から前記アプリ依存ポリシーを予め複写して自身の記憶領域に保持させた構成とし、
前記仮想マシン管理装置に、
前記サーバから、前記スキーマにしたがって前記アプリケーションの状態情報とサーバ自身及び前記仮想マシンの静的・動的な状態情報を定期的に受信するステップと、
前記サーバが、自身に保持する前記アプリ依存ポリシーを参照し、マイグレーション条件に該当する仮想マシンがある場合に、該マイグレーション対象の情報を付加して送信した状態情報を前期サーバから取得受信するステップと、
取得受信した前記状態情報に基づいて、前記アプリ依存ポリシーと前記全体最適ポリシーを参照して仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定するステップと、
を実行させるマイグレーションプログラム。
（付記３）  前記スキーマは、前記仮想マシンにおける各アプリケーションの使用状態に関する状態情報のうち、該アプリケーション固有の状態情報の構造を表すものであることを特徴とする付記１または２に記載のマイグレーションプログラム。
（付記４）  前記アプリ依存ポリシーは、アプリケーション毎に、マイグレーション条件、マイグレーション対象、およびマイグレーション先が前記スキーマに基づいてアプリケーション運用者とシステム運用者によって設定され、前記全体最適ポリシーは、システム全体を最適化するためのマイグレーション条件、マイグレーション対象、およびマイグレーション先がシステム運用者によって設定されることを特徴とする付記１乃至３のいずれかに記載のマイグレーションプログラム。
（付記５）  前記仮想マシンの移動先を決定するステップは、前記全体最適ポリシーよりも前記アプリ依存ポリシーを優先させて仮想マシンを移動する必要があるかを判定し、移動する必要がある場合はその仮想マシンの移動先を決定することを特徴とする付記１乃至４のいずれかに記載のマイグレーションプログラム。
（付記６）  前記仮想マシンの移動先を決定するステップは、前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適化ポリシーにしたがって仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定することを特徴とする付記１乃至５のいずれかに記載のマイグレーションプログラム。（６）
（付記７）  前記仮想マシンの移動先を決定するステップは、前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適ポリシーにしたがって仮想マシンの移動先候補を決定し、その移動先候補に実際に仮想マシンを移動させたときの、前記アプリ依存ポリシーのマイグレーション条件に該当する仮想マシンが出現するかを判定することを特徴とする付記６に記載のマイグレーションプログラム。
（付記８）  前記仮想マシンの移動先を決定するステップは、前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適ポリシーにしたがって仮想マシンの移動先候補を決定し、その移動先候補に実際に仮想マシンを移動させたとき、前記アプリ依存ポリシーのマイグレーション条件に該当する仮想マシンが出現するかを判定し、該条件に該当する仮想マシンが出現すると判定された場合には、前記全体最適ポリシーにしたがったマイグレーションを行わないことを特徴とする付記７に記載のマイグレーションプログラム。
（付記９）  前記サーバ情報及び仮想マシン上のアプリケーション情報は、それぞれ、前記サーバに備わるサーバモニタ及び前記仮想マシンに備わるアプリモニタを介して取得することを特徴とする付記１乃至８のいずれかに記載のマイグレーションプログラム。）
（付記１０）  アプリケーションが稼働状態にある仮想マシンを複数のサーバ間でマイグレーションさせる仮想マシン管理装置であって、
予め運用者によって定義された前記アプリケーションの状態情報のスキーマを管理するアプリ情報スキーマ管理部と、
前記スキーマを使って設定され、仮想マシン上で稼働するアプリケーションに依存したアプリ依存ポリシーと、システム全体を最適化する全体最適ポリシーとを管理するマイグレーションポリシー設定部と、
前記スキーマにしたがって前記仮想マシン上のアプリケーションの状態情報と、前記サーバ自身及び前記仮想マシンの静的・動的な情報とを定期的に前記サーバから受信するサーバ／仮想マシン情報管理部と、
受信した前記アプリケーションの状態情報と、前記サーバ自身及び前記仮想マシンの静的・動的情報をもとに、読み出した前記アプリ依存ポリシーおよび全体最適ポリシーにしたがって仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定するマイグレーション制御部と、
を有することを特徴とする仮想マシン管理装置。
（付記１１）  アプリケーションが稼働状態にある仮想マシンを複数のサーバ間でマイグレーションさせる仮想マシン管理装置であって、
予め運用者によって定義されたアプリケーションの状態情報のスキーマを管理するアプリ情報スキーマ管理部と、
前記スキーマを使って設定される仮想マシン上で稼働するアプリケーションに依存したアプリ依存ポリシーと、システム全体を最適化する全体最適ポリシーとを管理するマイグレーションポリシー設定部と、
前記アプリ依存ポリシーを予め前記仮想マシン管理装置より複写して自身に保持する各サーバにマイグレーション条件に該当する仮想マシンを判断させ、
前記該当する仮想マシンがある場合に、前記サーバからマイグレーション対象の情報が付加された状態情報を受信し、
該当する仮想マシンがない場合に、アプリケーションの状態情報と、前記サーバ自身及び前記仮想マシンの静的・動的な状態情報を受信し、その受信した前記状態情報に基づいて、前記アプリ依存ポリシーと前記全体最適ポリシーを参照して前記仮想マシンを移動する必要があるかを判定し、移動する必要がある場合はその仮想マシンの移動先を決定するマイグレーション制御部と、
を有することを特徴とする仮想マシン管理装置。
（付記１２）  前記スキーマは、前記仮想マシンにおける各アプリケーションの使用状態に関する状態情報のうち、該アプリケーション固有の状態情報の構造を表すものであることを特徴とする付記１０または１１に記載の仮想マシン管理装置。
（付記１３）  前記アプリ依存ポリシーは、アプリケーション毎に、マイグレーション条件、マイグレーション対象、およびマイグレーション先が前記スキーマに基づいてアプリケーション運用者とシステム運用者によって設定され、前記全体最適ポリシーは、システム全体を最適化するためのマイグレーション条件、マイグレーション対象、およびマイグレーション先がシステム運用者によって設定されることを特徴とする付記１０乃至１２のいずれかに記載の仮想マシン管理装置。
（付記１４）  前記マイグレーション制御部は、前記全体最適ポリシーよりも前記アプリ依存ポリシーを優先させて仮想マシンを移動する必要があるかを判定し、移動する必要がある場合はその仮想マシンの移動先を決定することを特徴とする付記１０乃至１３のいずれかに記載の仮想マシン管理装置。
（付記１５）  前記マイグレーション制御部は、前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適化ポリシーにしたがって仮想マシンを移動する必要があるかを判定し、移動する必要がある場合に該仮想マシンの移動先を決定することを特徴とする付記１０乃至１４のいずれかに記載の仮想マシン管理装置。
（付記１６）  前記マイグレーション制御部は、前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適ポリシーにしたがって仮想マシンの移動先候補を決定し、その移動先候補に実際に仮想マシンを移動させたときの、前記アプリ依存ポリシーのマイグレーション条件に該当する仮想マシンが出現するかを判定することを特徴とする付記６に記載の仮想マシン管理装置。
（付記１７）  前記マイグレーション制御部は、前記アプリ依存ポリシーに該当する仮想マシンがない場合、前記全体最適ポリシーにしたがって仮想マシンの移動先候補を決定し、その移動先候補に実際に仮想マシンを移動させたとき、前記アプリ依存ポリシーのマイグレーション条件に該当する仮想マシンが出現するかを判定し、該条件に該当する仮想マシンが出現すると判定された場合には、前記全体最適ポリシーにしたがったマイグレーションを行わないことを特徴とする付記７に記載の仮想マシン管理装置。
（付記１８）  前記サーバ情報及び仮想マシン上のアプリケーション情報は、それぞれ、前記サーバに備わるサーバモニタ及び前記仮想マシンに備わるアプリモニタを介して取得することを特徴とする付記１乃至８のいずれかに記載の仮想マシン管理装置。
【図面の簡単な説明】
【０１０９】
【図１】本発明の実施の形態になるマイグレーションシステムの基本構成              （実施例１）を示す図である。
【図２】本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフローを示す図である。
【図３】本発明の実施の形態になる全体最適ポリシーによるマイグレーション処理のフローを示す図である。
【図４】アプリの事情を考慮したマイグレーション先決定の概念図（ケース1 ：ある時間帯サーバを独占する例）である。
【図５】アプリ事情を考慮したマイグレーション先決定の概念図（ケース２：アプリケーションのジョブタイプで決定する例）である。
【図６】ケース１においてサーバモニタ及びアプリモニタから取得する情報例を示す図である。
【図７】本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフロー（ケース１）を示す図である。
【図８】ケース２においてサーバモニタ及びアプリモニタから取得する情報例を示す図である。
【図９】本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフロー（ケース２）を示す図である。
【図１０】本発明の実施の形態になるマイグレーションシステムの基本構成（実施例２）を示す図である。
【図１１】本発明の実施の形態になるサーバモニタからマイグレーション制御部への情報送信フローを示す図である。
【図１２】本発明の実施の形態になるサーバモニタからの状態情報受信時におけるマイグレーション制御部の処理フロー（その１）を示す図である。
【図１３】本発明の実施の形態になるサーバモニタからの状態情報受信時におけるマイグレーション制御部の処理フロー（その２）を示す図である。
【図１４】ケース１においてサーバモニタ及びアプリモニタから取得する情報例を示す図である。
【図１５】本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフロー（ケース１）を示す図である。
【図１６】ケース２においてサーバモニタ及びアプリモニタから取得する情報例を示す図である。
【図１７】本発明の実施の形態になるアプリ依存ポリシーによるマイグレーション処理のフロー（ケース２）を示す図である。
【符号の説明】
【０１１０】
１  仮想マシン管理装置
２−１、２−２  サーバ
３−１、３−２  サーバモニタ（ＳＭ）
４ａ、４ｂ、４ｃ  アプリモニタ（ＡＭ）
５ａ、５ｂ、５ｃ  仮想マシン（ＶＭ）
６  ネットワーク
１１  アプリ情報スキーマ管理部
１２  マイグレーションポリシー設定部
１３  サーバ／ＶＭ情報管理部
１４  マイグレーション制御部
【図１】
0005104588.tif 000002
【図２】
0005104588.tif 000003
【図３】
0005104588.tif 000004
【図４】
0005104588.tif 000005
【図５】
0005104588.tif 000006
【図６】
0005104588.tif 000007
【図７】
0005104588.tif 000008
【図８】
0005104588.tif 000009
【図９】
0005104588.tif 000010
【図１０】
0005104588.tif 000011
【図１１】
0005104588.tif 000012
【図１２】
0005104588.tif 000013
【図１３】
0005104588.tif 000014
【図１４】
0005104588.tif 000015
【図１５】
0005104588.tif 000016
【図１６】
0005104588.tif 000017
【図１７】
0005104588.tif 000018