(57)【要約】【課題】仮想マシンの再配置に伴う仮想マシンの移動順序を決定する移動制御プログラム、移動制御装置及び移動制御方法を提供する。【解決手段】移動情報及び第１状態情報に基づき、移動先の物理マシンに移動可能な仮想マシンに移動を指示し、移動先の物理マシンへの移動を指示していない仮想マシンのうち、移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンに退避を指示し、仮想マシンの退避後における、システムを構成する複数の物理マシン及び複数の仮想マシンのそれぞれについて、仮想マシンの移動の可否を判定する第２状態情報を取得し、移動情報及び前記第２状態情報に基づき、移動先の物理マシンへの移動を指示していない仮想マシンのうち、移動先の物理マシンに移動可能な仮想マシンに移動を指示する。【選択図】図６
2017049772.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
情報処理システムを構成する複数の物理マシン間において移動する複数の仮想マシン毎に、前記仮想マシンの情報と、前記仮想マシンの移動元の物理マシンの情報と、前記仮想マシンの移動先の物理マシンの情報とを対応付けた情報を含む移動情報と、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第１状態情報とを取得し、
前記移動情報及び前記第１状態情報に基づき、前記複数の仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示し、
前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示し、
前記仮想マシンの退避後における、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第２状態情報を取得し、
前記移動情報及び前記第２状態情報に基づき、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する、
ことを実行させることを特徴とする移動制御プログラム。
【請求項２】
請求項１において、
前記第１状態情報及び前記第２状態情報は、前記複数の物理マシンそれぞれの物理リソースの空き容量の情報と、前記複数の仮想マシンそれぞれが動作するために使用する物理リソースの使用量の情報である、
ことを特徴とする移動制御プログラム。
【請求項３】
請求項２において、
前記第１状態情報に基づき仮想マシンの移動を指示する処理では、前記複数の仮想マシンのうち、前記物理リソースの使用量が、前記移動先の物理マシンにおける前記物理リソースの空き容量よりも小さい仮想マシンを、前記移動先の物理マシンに移動可能な仮想マシンとする、
ことを特徴とする移動制御プログラム。
【請求項４】
請求項１において、
前記仮想マシンに退避を指示する処理では、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在しない場合、前記仮想マシンの移動の終了する、
ことを特徴とする移動制御プログラム。
【請求項５】
請求項１において、
前記仮想マシンの退避を指示する処理では、前記移動先の物理マシンへの移動を指示していない仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンが存在しない場合、前記移動先の物理マシンへの移動を指示した仮想マシンに対して、前記移動元の物理マシンへの再移動を指示し、前記仮想マシンの移動の終了する、
ことを特徴とする移動制御プログラム。
【請求項６】
請求項１において、さらに、
前記第２状態情報に基づき仮想マシンの移動を指示する処理の後、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在する場合、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在しなくなるまで、または、前記移動先の物理マシンへの移動を指示していない仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンが存在しなくなるまで、前記仮想マシンの退避を指示する処理、前記第２状態情報を取得する処理及び前記第２状態情報に基づき仮想マシンの移動を指示する処理を繰り返し行う、
ことをコンピュータに実行させることを特徴とする移動制御プログラム。
【請求項７】
請求項１において、さらに、
前記退避を指示する処理の前に、前記複数の仮想マシンを前記移動先の物理マシンにそれぞれ移動するために、先に移動する必要がある仮想マシンである依存仮想マシンを特定し、
特定した前記依存仮想マシンのうち、前記依存仮想マシンと、前記依存仮想マシンを先に移動することにより前記移動先の物理マシンに移動可能になる仮想マシンとの関係が循環する２以上の仮想マシンからなる１以上の依存仮想マシン群を特定し、
前記退避を指示する処理では、前記退避可能な仮想マシンであって、前記１以上の依存仮想マシン群にそれぞれ含まれる１の仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示する、
ことを特徴とする移動制御プログラム。
【請求項８】
請求項７において、
前記関係が循環する２以上の仮想マシンは、特定した前記依存仮想マシンのうち、前記２以上の仮想マシンに含まれる各仮想マシンが前記２以上の仮想マシンに含まれる他の仮想マシンの前記依存仮想マシンであり、前記２以上の仮想マシンに含まれる各仮想マシンの前記依存仮想マシンが前記２以上の仮想マシンに含まれる他の仮想マシンである関係を有する２以上の仮想マシンである、
ことを特徴とする移動制御プログラム。
【請求項９】
請求項７において、
前記依存仮想マシンを特定する処理では、前記依存仮想マシンとして特定可能な仮想マシンの組み合わせが複数存在する場合、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在しなくなるまでに、前記仮想マシンの退避を指示する処理及び前記第２状態情報に基づき仮想マシンの移動を指示する処理を行う回数が最も少ない組み合わせに対応する仮想マシンを、前記依存仮想マシンとして特定する、
ことを特徴とする移動制御プログラム。
【請求項１０】
請求項９において、
前記依存仮想マシンを特定する処理では、前記仮想マシンの退避を指示する処理及び前記第２状態情報に基づき仮想マシンの移動を指示する処理を行う回数が最も少ない組み合わせが複数存在する場合、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在しなくなるまでに、前記移動先の物理マシン以外の物理マシンへの退避の指示の回数が最も少ない組み合わせに対応する仮想マシンを、前記依存仮想マシンとして特定する、
ことを特徴とする移動制御プログラム。
【請求項１１】
情報処理システムを構成する複数の物理マシン間において移動する複数の仮想マシン毎に、前記仮想マシンの情報と、前記仮想マシンの移動元の物理マシンの情報と、前記仮想マシンの移動先の物理マシンの情報とを対応付けた情報を含む移動情報と、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第１状態情報とを取得する情報取得部と、
前記移動情報及び前記第１状態情報に基づき、前記複数の仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する移動指示部と、を有し、
前記移動指示部は、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示し、
前記情報取得部は、前記仮想マシンの退避後における、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第２状態情報を取得し、
前記移動指示部は、前記移動情報及び前記第２状態情報に基づき、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する、
ことを特徴とする移動制御装置。
【請求項１２】
情報処理システムを構成する複数の物理マシン間において移動する複数の仮想マシン毎に、前記仮想マシンの情報と、前記仮想マシンの移動元の物理マシンの情報と、前記仮想マシンの移動先の物理マシンの情報とを対応付けた情報を含む移動情報と、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第１状態情報とを取得し、
前記移動情報及び前記第１状態情報に基づき、前記複数の仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示し、
前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示し、
前記仮想マシンの退避後における、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第２状態情報を取得し、
前記移動情報及び前記第２状態情報に基づき、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する、
ことを特徴とする移動制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動制御プログラム、移動制御装置及び移動制御方法に関する。
【背景技術】
【０００２】
近年、物理マシンの性能向上に伴い、複数の仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を１つの物理マシンに集約する仮想化技術の研究が進められている。この仮想化技術は、例えば、仮想化ソフトウエア（以下、ハイパバイザとも呼ぶ）が物理マシンを複数の仮想マシンに割当てて、各仮想マシンにインストールされたアプリケーションプログラム（以下、アプリケーションとも呼ぶ）によるサービスの提供を可能にする。
【０００３】
上記のような仮想マシンにおいて、仮想マシンの管理を行う管理者（以下、単に管理者とも呼ぶ）は、必要に応じて物理マシン間における仮想マシンの移動を行う（以下、これをマイグレーションとも呼ぶ）。これにより、管理者は、例えば、利用者によるサービスの利用状況に応じて仮想マシンの再配置を行うことが可能になる。そのため、管理者は、物理マシンの物理リソースの効率的な活用等を実現することが可能になる（例えば、特許文献１乃至３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−０１１５６９号公報
【特許文献２】特開２０１１−１９２０４９号公報
【特許文献３】特開２０１３−２３９０９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のような仮想マシンの移動を行う場合、管理者は、例えば、各仮想マシンが動作する物理マシンのうち、物理リソースの残余がある物理マシンに対して仮想マシンの移動を行う。しかしながら、この場合、仮想マシンを移動することができる物理マシンは、現状で物理リソースに残余のある物理マシンに限られる。そのため、仮想マシンの移動が行われた後における各仮想マシンの配置は、物理マシンの物理リソースを効率的に使用する観点から最適な仮想マシンの配置でない場合がある。
【０００６】
これに対し、管理者は、例えば、最適化ソルバ等の数理計画法を活用することにより、物理マシンの物理リソースの最も効率的に使用することができる仮想マシンの配置（以下、最適配置とも呼ぶ）を予め決定することが可能である。しかしながら、数理計画法によって算出される仮想マシンの配置は、各仮想マシンの移動中における各物理マシンの物理リソースの残余の状況が考慮されていない。そのため、管理者は、仮想マシンを最適配置に再配置するための仮想マシンの移動順序を特定することが困難な場合がある。
【０００７】
そこで、一つの側面では、仮想マシンの再配置に伴う仮想マシンの移動順序を決定する移動制御プログラム、移動制御装置及び移動制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態の一つの態様によれば、コンピュータに、情報処理システムを構成する複数の物理マシン間において移動する複数の仮想マシン毎に、前記仮想マシンの情報と、前記仮想マシンの移動元の物理マシンの情報と、前記仮想マシンの移動先の物理マシンの情報とを対応付けた情報を含む移動情報と、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第１状態情報とを取得し、前記移動情報及び前記第１状態情報に基づき、前記複数の仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示し、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示し、前記仮想マシンの退避後における、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第２状態情報を取得し、前記移動情報及び前記第２状態情報に基づき、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する、ことを実行させる。
【発明の効果】
【０００９】
一つの側面によれば、仮想マシンの再配置に伴う仮想マシンの移動順序を決定する。
【図面の簡単な説明】
【００１０】
【図１】情報処理システム１０の全体構成を示す図である。
【図２】物理マシン２に配備された仮想マシン３の具体例を説明する図である。
【図３】物理マシン２に配備された仮想マシン３の具体例を説明する図である。
【図４】情報処理装置１のハードウエア構成を説明する図である。
【図５】図４の情報処理装置１の機能ブロック図である。
【図６】第１の実施の形態における移動制御処理の概略を説明するフローチャートである。
【図７】第１の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図８】第１の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図９】第１の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図１０】第１の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図１１】第１の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図１２】移動対象情報１３１の具体例を説明する図である。
【図１３】物理マシン状態情報１４１ａの具体例を説明する図である。
【図１４】仮想マシン状態情報１４２ａの具体例を説明する図である。
【図１５】残余物理リソース情報１３５の具体例を説明する図である。
【図１６】１回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図１７】１回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図１８】１回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図１９】１回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図２０】１回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図２１】１回目に実行される退避仮想マシン決定処理の具体例を説明する図である。
【図２２】１回目に実行される退避仮想マシン決定処理の具体例を説明する図である。
【図２３】１回目に実行される退避仮想マシン決定処理の具体例を説明する図である。
【図２４】１回目に実行される退避仮想マシン決定処理の具体例を説明する図である。
【図２５】１回目に実行される退避仮想マシン決定処理の具体例を説明する図である。
【図２６】１回目に実行される退避仮想マシン決定処理の具体例を説明する図である。
【図２７】１回目に実行される仮想マシン移動処理の具体例を説明する図である。
【図２８】１回目に実行される仮想マシン移動処理の具体例を説明する図である。
【図２９】２回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図３０】２回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図３１】２回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図３２】２回目に実行される仮想マシン移動処理の具体例を説明する図である。
【図３３】２回目に実行される仮想マシン移動処理の具体例を説明する図である。
【図３４】３回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図３５】３回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【図３６】第２の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図３７】第３の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図３８】第３の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図３９】第３の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【図４０】部分依存グラフを具体例である。
【図４１】依存グラフの具体例である。
【図４２】依存仮想マシン情報１３６の具体例を説明する図である。
【図４３】依存仮想マシン群情報１３７の具体例を説明する図である。
【図４４】１回目に実行される退避仮想マシン決定処理及び仮想マシン移動処理の具体例を説明する図である。
【図４５】１回目に実行される退避仮想マシン決定処理及び仮想マシン移動処理の具体例を説明する図である。
【図４６】１回目に実行される退避仮想マシン決定処理及び仮想マシン移動処理の具体例を説明する図である。
【図４７】１回目に実行される退避仮想マシン決定処理及び仮想マシン移動処理の具体例を説明する図である。
【図４８】２回目に実行される依存仮想マシン群決定処理の具体例を説明する図である。
【図４９】２回目に実行される依存仮想マシン群決定処理の具体例を説明する図である。
【図５０】２回目に実行される依存仮想マシン群決定処理の具体例を説明する図である。
【図５１】３回目に実行される依存仮想マシン群決定処理の具体例を説明する図である。
【図５２】３回目に実行される依存仮想マシン群決定処理の具体例を説明する図である。
【図５３】依存仮想マシン３１として特定可能な仮想マシン３の組み合わせが複数存在する場合の具体例を説明する図である。
【図５４】依存仮想マシン３１として特定可能な仮想マシン３の組み合わせが複数存在する場合の具体例を説明する図である。
【図５５】依存仮想マシン３１として特定可能な仮想マシン３の組み合わせが複数存在する場合の具体例を説明する図である。
【発明を実施するための形態】
【００１１】
［情報処理システムの構成］
図１は、情報処理システム１０の全体構成を示す図である。図１に示す情報処理システム１０は、例えば、利用者にサービスを提供するための業務システムである。図１に示す情報処理システム１０において、情報処理装置１と、物理マシン２とがデータセンターＤＣ内に設けられている。そして、利用者端末１１は、インターネットやイントラネット等のネットワークを介して、データセンターＤＣとアクセス可能になっている。
【００１２】
物理マシン２は、例えば、複数の物理マシンから構成される。各物理マシンは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｃｏｍｐｕｔｉｎｇ  Ｕｎｉｔ）と、メモリ（ＤＲＡＭ：Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、ハードディスク（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の大容量メモリとを有する。そして、物理マシン２の物理リソースは、複数の仮想マシン３に割当てられる。
【００１３】
情報処理装置１は、仮想マシン３とアクセス可能であり、物理マシン２内に作成された仮想マシン３の管理を行うものである。情報処理装置１は、例えば、仮想マシン３によって作成されるものであってもよい。
【００１４】
仮想マシン３では、そのインフラをネットワーク経由で利用者に提供するもの（以下、クラウドサービスとも呼ぶ）である。
【００１５】
クラウドサービスは、コンピュータシステムを構築し稼働させるための基盤、すなわち、仮想マシン３やネットワーク等のインフラストラクチャを、ネットワーク経由で提供するサービスである。また、利用者は、例えば、利用者端末１１を介して、仮想マシン３に必要な仕様、例えば、ＣＰＵのクロック周波数、メモリの容量、ハードディスクの容量及びネットワークの通信帯域幅を選択し、それらについてクラウド利用契約を締結する。さらに、利用者は、例えば、利用者端末１１を介して、仮想マシン３の稼働状態を監視や、仮想マシン３に対する操作等を可能にする。
【００１６】
仮想化ソフトウエア４は、情報処理装置１からの指示に応じて、物理マシン２のＣＰＵ、メモリ、ハードディスク及びネットワークを割当てることにより、仮想マシン３を動作させる基盤ソフトウエアである。仮想化ソフトウエア４は、例えば、物理マシン２で動作する。
【００１７】
［物理マシンに配備された仮想マシンの具体例］
次に、物理マシン２に配備された仮想マシン３の具体例について説明を行う。図２から図３は、物理マシン２に配備された仮想マシン３の具体例を説明する図である。
【００１８】
図２に示す例において、データセンターＤＣには、物理マシン２Ａ、２Ｂ、２Ｃ、２Ｄ、２Ｅ及び２Ｆが配備されている。そして、物理マシン２Ａには、仮想マシン３Ａ及び仮想マシン３Ｂが配備され、物理マシン２Ｂには、仮想マシン３Ｃが配備されている。また、物理マシン２Ｄ、２Ｅ及び２Ｆには、それぞれ仮想マシン３Ｄ、３Ｅ及び３Ｆが配備されている。
【００１９】
なお、図２に示す例において、物理マシン２Ａにおける「物理マシン（０，１）」は、物理マシン２Ａのメモリの空き容量が「０（ＧＢ）」であって、ディスクの空き容量が「１（ＧＢ）」であることを示している。そして、図２に示す例において、仮想マシン３Ａにおける「仮想マシン（１，２）」は、仮想マシン３Ａが動作するために必要なメモリの使用容量が「１（ＧＢ）」であって、ディスクの使用容量が「２（ＧＢ）」であることを示している。なお、図２における他の物理マシン２及び仮想マシン３についての説明は省略する。
【００２０】
そして、図２に示すような仮想マシン３において、管理者は、必要に応じて物理マシン２間における仮想マシン３の移動を行う。これにより、管理者は、例えば、利用者によるサービスの利用状況に応じて仮想マシン３の再配置を行うことが可能になる。そのため、管理者は、物理マシン２の物理リソースの効率的な活用等を実現することが可能になる
具体的に、仮想マシン３の移動を行う場合、管理者は、例えば、各仮想マシン３が動作する物理マシン２のうち、物理リソースの残余がある物理マシン２に対して仮想マシン３の移動を行う。しかしながら、この場合、仮想マシン３が移動することができる物理マシン２は、現状で物理リソースに残余のある物理マシン２に限られる。そのため、仮想マシン３の移動後における各仮想マシン３の配置は、例えば、物理マシン２の物理リソースを効率的に使用する観点から、最適な仮想マシン３の配置ではない場合がある。
【００２１】
これに対し、管理者は、例えば、数理計画法（例えば、最適化ソルバ）を活用する場合がある。これにより、管理者は、図３の各矢印が示すように、物理マシン２の物理リソースの最も効率的に使用することができる仮想マシン３の最適配置を算出することが可能になる。しかしながら、数理計画法によって算出される仮想マシン３の配置は、各仮想マシン３の移動中における各物理マシン２の物理リソースの残余の状況が考慮されていない。
【００２２】
具体的に、図３に示す例において、管理者は、仮想マシン３Ａ及び仮想マシン３Ｂを物理マシン２Ａから物理マシン２Ｅに移動する必要がある。そして、仮想マシン３Ａ及び仮想マシン３Ｂのメモリの使用容量の合計は、「２（ＧＢ）」であり、仮想マシン３Ａ及び仮想マシン３Ｂのディスクの使用容量の合計は、「３（ＧＢ）」である。したがって、仮想マシン３Ａ及び仮想マシン３Ｂを物理マシン２Ａから物理マシン２Ｅに移動するためには、物理マシン２Ｅのメモリの空き容量が「２（ＧＢ）」以上であり、ディスクの空き容量が「３（ＧＢ）」以上である必要がある。
【００２３】
しかしながら、図３に示す例において、物理マシン２Ｅのメモリの空き容量は「１（ＧＢ）」であり、ディスクの空き容量は「２（ＧＢ）」である。そのため、仮想マシン３Ａ及び仮想マシン３Ｂは、図３に示すように、物理マシン２Ｅに対して同時に移動することができない。すなわち、仮想マシン３Ａ及び仮想マシン３Ｂのうち、直ちに物理マシン２Ｅに移動できない仮想マシン３については、仮想マシン３Ｅが物理マシン２Ｅから物理マシン２Ｄに移動した後に移動する必要がある。
【００２４】
また、図３に示す例において、管理者は、仮想マシン３Ｃを物理マシン２Ｂから物理マシン２Ｆに移動する必要があり、仮想マシン３Ｆを物理マシン２Ｆから物理マシン２Ｂに移動する必要がある。そして、仮想マシン３Ｃのメモリの使用容量は、「２（ＧＢ）」であり、仮想マシン３Ｃのディスクの使用容量は、「２（ＧＢ）」である。また、仮想マシン３Ｆのメモリの使用容量の合計は、「２（ＧＢ）」であり、仮想マシン３Ｆのディスクの使用容量の合計は、「２（ＧＢ）」である。したがって、仮想マシン３Ｃを物理マシン２Ｂから物理マシン２Ｆに移動するためには、物理マシン２Ｆのメモリの空き容量が「２（ＧＢ）」以上であり、ディスクの空き容量が「２（ＧＢ）」以上である必要がある。また、仮想マシン３Ｆを物理マシン２Ｆから物理マシン２Ｂに移動するためには、物理マシン２Ｂのメモリの空き容量が「２（ＧＢ）」以上であり、ディスクの空き容量が「２（ＧＢ）」以上である必要がある。
【００２５】
しかしながら、図３に示す例において、物理マシン２Ｆのメモリの空き容量が「０（ＧＢ）」であり、ディスクの空き容量が「１（ＧＢ）」である。また、図３に示す例において、物理マシン２Ｂのメモリの空き容量が「０（ＧＢ）」であり、ディスクの空き容量が「０（ＧＢ）」である。そのため、仮想マシン３Ｃ及び仮想マシン３Ｆは、それぞれ移動先の物理マシン２に対して同時に移動することができない。
【００２６】
さらに、図３に示す例において、管理者は、仮想マシン３Ｄを物理マシン２Ｄから物理マシン２Ａに移動する必要がある。そして、仮想マシン３Ｄのメモリの使用容量は、「１（ＧＢ）」であり、仮想マシン３Ｄのディスクの使用容量は、「１（ＧＢ）」である。したがって、仮想マシン３Ｄを物理マシン２Ｄから物理マシン２Ａに移動するためには、物理マシン２Ａのメモリの空き容量が「１（ＧＢ）」以上であり、ディスクの空き容量が「１（ＧＢ）」以上である必要がある。
【００２７】
しかしながら、図３に示す例において、物理マシン２Ａのメモリの空き容量が「０（ＧＢ）」であり、ディスクの空き容量が「１（ＧＢ）」である。そのため、仮想マシン３Ｄは、物理マシン２Ａに対して移動することができない。すなわち、仮想マシン３Ｄは、この場合、物理マシン２Ａへの移動を、仮想マシン３Ａまたは仮想マシン３Ｂが物理マシン２Ａから物理マシン２Ｅに移動した後に行う必要がある。
【００２８】
そのため、管理者は、数理計画法を活用して最適配置を算出した場合、仮想マシン３を最適配置に再配置するための仮想マシン３の移動順序を特定することが困難な場合がある。
【００２９】
そこで、本実施の形態における情報処理装置１は、物理マシン２間で移動する複数の仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３に移動を指示する。そして、情報処理装置１は、移動先の物理マシン２への移動を指示していない仮想マシン３のうち、移動先の物理マシン２以外の物理マシン２への退避可能な仮想マシン３に退避を指示する。その後、情報処理装置１は、移動先の物理マシン２への移動を指示していない仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３に、移動先の物理マシンへ２の移動を指示する。
【００３０】
すなわち、情報処理装置１は、移動先の物理マシン２に移動可能な仮想マシン３の全てについて移動を行った後、移動先の物理マシン２に移動することはできない仮想マシン３であって、移動先以外の物理マシン２に退避可能な仮想マシン３の退避を行う。
【００３１】
これにより、情報処理装置１は、移動先の物理マシン２に移動することができる仮想マシン３を発生させることが可能になる。そのため、情報処理装置１は、数理計画法によって算出された仮想マシン３の最適配置に従って、仮想マシン３の再配置を行うことができる可能性を高めることが可能になる。
【００３２】
［情報処理装置のハードウエア構成］
次に、情報処理装置１のハードウエア構成について説明する。図４は、情報処理装置１のハードウエア構成を説明する図である。
【００３３】
情報処理装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体（ストレージ）１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００３４】
記憶媒体１０４は、記憶媒体１０４内のプログラム格納領域（図示しない）に、仮想マシン３の移動を制御する処理（以下、移動制御処理とも呼ぶ）を行うためのプログラム１１０を記憶する。
【００３５】
ＣＰＵ１０１は、図４に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働して移動制御処理を行う。
【００３６】
記憶媒体１０４は、例えば、移動制御処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。また、外部インターフェース１０３は、物理マシン２と通信を行う。
【００３７】
[情報処理装置のソフトウエア構成]
次に、情報処理装置１のソフトウエア構成について説明する。図５は、図４の情報処理装置１の機能ブロック図である。ＣＰＵ１０１は、プログラム１１０と協働することにより、配置決定部１１１と、情報取得部１１２と、移動順序決定部１１３と、情報管理部１１４と、移動指示部１１５と、依存仮想マシン群特定部１１６して動作する。
【００３８】
また、図５に示すように、情報格納領域１３０には、移動対象情報１３１（以下、単に移動情報１３１とも呼ぶ）と、状態情報１３２と、移動決定情報１３３と、移動未完了情報１３４とが記憶されている。さらに、図５に示すように、情報格納領域１３０には、残余物理リソース情報１３５と、依存仮想マシン情報１３６と、依存仮想マシン群情報１３７とが記憶されている。
【００３９】
配置決定部１１１は、数理計画法（例えば、最適化ソルバ）を活用することにより、物理マシン２の物理リソースの最も効率的に使用することができる仮想マシン３の最適配置を算出する。そして、配置決定部１１１は、算出した最適配置に関する情報を含む移動対象情報１３１を作成する。移動対象情報１３１は、物理マシン２間において移動する複数の仮想マシン３毎に、仮想マシン３の情報（例えば、仮想マシン３の識別可能な情報）と、仮想マシン３の移動元の物理マシン２の情報と、仮想マシン３の移動先の物理マシン２の情報とを対応付けた情報である。なお、仮想マシン３の移動先の物理マシン２の情報は、各仮想マシン３を最適配置に再配置する場合に、移動する必要がある仮想マシン３の移動先の物理マシン２の情報である。移動対象情報１３１の具体例については後述する。
【００４０】
情報取得部１１２は、配置決定部１１１が作成した移動対象情報１３１を取得する。また、情報取得部１１２は、複数の物理マシン２及び複数の仮想マシン３それぞれの状態を示す状態情報１３２（以下、第１状態情報１３２ａとも呼ぶ）を取得する。状態情報１３２は、例えば、複数の物理マシン２それぞれの物理リソースの空き容量の情報と、複数の仮想マシン３それぞれが動作するために使用する物理リソースの使用量の情報である。状態情報１３２の具体例については後述する。
【００４１】
また、情報取得部１１２は、仮想マシン３の退避後において、仮想マシン３の退避後における状態情報１３２（以下、第２状態情報１３２ｂとも呼ぶ）を取得する。
【００４２】
移動順序決定部１１３は、情報取得部１１２が取得した移動対象情報１３１及び状態情報１３２（第１状態情報１３２ａまたは第２状態情報１３２ｂ）に基づき、複数の仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３を特定する。そして、移動指示部１１５は、移動順序決定部１１３が特定した仮想マシン３に対し、移動先の物理マシン２に対する移動を指示する。
【００４３】
また、移動順序決定部１１３は、移動指示部１１５が移動先の物理マシン２への移動を指示していない仮想マシン３のうち、移動先の物理マシン２以外の物理マシン２への退避可能な仮想マシン３を特定する。そして、移動指示部１１５は、移動順序決定部１１３が特定した仮想マシン３に対して退避を指示する。
【００４４】
情報管理部１１４は、移動先の物理マシン２への仮想マシン３の移動に伴って、移動決定情報１３３、移動未完了情報１３４及び残余物理リソース情報１３５の更新を行う。移動決定情報１３３、移動未完了情報１３４及び残余物理リソース情報１３５については後述する。
【００４５】
依存仮想マシン群特定部１１６は、各仮想マシン３を移動先の物理マシン２にそれぞれ移動するために、先に移動する必要がある仮想マシン３（以下、依存仮想マシン３１とも呼ぶ）を特定する。そして、依存仮想マシン群特定部１１６は、特定した依存仮想マシン３１の情報を含む依存仮想マシン情報１３６を作成する。依存仮想マシン情報１３６の具体例については後述する。
【００４６】
その後、依存仮想マシン群特定部１１６は、依存仮想マシン３１のうち、依存仮想マシン３１と、依存仮想マシン３１を先に移動することにより移動先の物理マシン２に移動可能になる仮想マシン３との関係が循環する２以上の仮想マシン３からなる依存仮想マシン群３２を特定する。具体的に、関係が循環する２以上の仮想マシン３は、依存仮想マシン３１のうち、各仮想マシン３が他の仮想マシン３の依存仮想マシン３１であり、各仮想マシン３の依存仮想マシン３１が他の仮想マシン３である関係を有する２以上の仮想マシン３である。そして、依存仮想マシン群特定部１１６は、特定した依存仮想マシン群３２の情報を含む依存仮想マシン群情報１３７を作成する。依存仮想マシン群情報１３７の具体例については後述する。
【００４７】
また、移動順序決定部１１３は、この場合、移動先の物理マシン２以外の物理マシン２への退避可能な仮想マシン３であって、依存仮想マシン群３２それぞれに含まれる１の仮想マシン３に対して、退避を指示する。なお、依存仮想マシン群特定部１１６は、作成した依存仮想マシン情報１３６及び依存仮想マシン群情報１３７を情報格納領域１３０に記憶するものであってよい。
【００４８】
また、以下、物理マシン２の物理リソースは、物理マシン２のメモリ容量及びディスクの容量であるものとして説明を行うが、物理マシン２の物理リソースは、例えば、ＣＰＵ数やＣＰＵの使用率等であってもよい。そして、情報処理装置１は、例えば、メモリ容量、ディスク容量、ＣＰＵ数及びＣＰＵ量から選択した１以上の情報を利用することにより、移動制御処理を実行するものであってもよい。
【００４９】
[第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図６は、第１の実施の形態における移動制御処理の概略を説明するフローチャートである。
【００５０】
情報処理装置１は、図６に示すように、仮想マシン３の移動タイミングまで待機する（Ｓ１のＮＯ）。仮想マシン３の移動タイミングは、例えば、管理者が仮想マシン３の再配置を行うことを決定したタイミングであってよい。具体的に、仮想マシン３の移動タイミングは、仮想マシン３を配備した物理マシン２のうち、物理リソースの使用率が所定の閾値を上回った物理マシン２が発生したことに伴って、管理者が仮想マシン３の再配置を行うことを決定したタイミングであってよい。
【００５１】
その後、仮想マシン３の移動タイミングになった場合（Ｓ１のＹＥＳ）、情報処理装置１は、仮想マシン３毎に、仮想マシン３の情報と、仮想マシン３の移動元の物理マシン２の情報と、仮想マシン３の移動先の物理マシン２の情報とを対応付けた移動対象情報１３１を取得する（Ｓ２）。また、情報処理装置１は、複数の物理マシン２及び複数の仮想マシン３それぞれの状態を示す第１状態情報１３２ａを取得する（Ｓ３）。すなわち、情報処理装置１は、仮想マシン３の移動タイミングになった場合に、仮想マシン３の移動順序（各仮想マシン３を最適配置に再配置するための移動順序）を決定する際に用いる情報の取得を行う。
【００５２】
次に、情報処理装置１は、Ｓ２の処理で取得した移動対象情報１３１及びＳ３の処理で取得した第１状態情報１３２ａに基づき、複数の仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３に移動を指示する（Ｓ４）。そして、情報処理装置１は、移動先の物理マシン２への移動を指示していない仮想マシン３のうち、移動先の物理マシン２以外の物理マシン２への退避可能な仮想マシン３に、移動先の物理マシン２以外の物理マシン２への退避を指示する（Ｓ５）。
【００５３】
すなわち、情報処理装置１は、Ｓ４の処理において、仮想マシン３の移動先の物理マシン２のうち、仮想マシン３が動作するために必要な残余物理リソースを有している物理マシン２に対して、仮想マシン３の移動を行う。そのため、Ｓ４の処理が完了した後の状態は、仮想マシン３のうち、移動先の物理マシン２に対して移動することができる仮想マシン３が存在しない状態である。ここで、本実施の形態における情報処理装置１は、Ｓ５の処理において、仮想マシン３のうち、移動先の物理マシン２に移動することはできない仮想マシン３であるが、移動先以外の物理マシン２に退避することはできる仮想マシン３を退避させる。これにより、情報処理装置１は、移動先の物理マシン２に対して移動することが可能になる仮想マシン３を再び発生させることが可能になる。
【００５４】
そして、情報処理装置１は、複数の物理マシン２及び複数の仮想マシン３のそれぞれについて、仮想マシン３の移動の可否を判定する第２状態情報１３２ｂを取得する（Ｓ６）。
【００５５】
すなわち、情報処理装置１は、Ｓ５の処理において、仮想マシン３の退避を行った結果、移動先の物理マシン２に対して移動することが可能になった仮想マシン３が発生したか否かを判定する必要がある。そのため、情報処理装置１は、Ｓ６の処理において、移動先の物理マシン２に対して移動することが可能になった仮想マシン３が発生したか否かを判定するために、Ｓ５の処理の後における各物理マシン２や仮想マシン３の情報を含む第２状態情報１３２ｂを取得する。
【００５６】
その後、情報処理装置１は、Ｓ２の処理で取得した移動対象情報１３１及びＳ６の処理で取得した第２状態情報１３２ｂに基づき、複数の仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３に移動を指示する（Ｓ７）。これにより、情報処理装置１は管理者が数理計画法を活用することにより算出した最適配置に従いながら、仮想マシン３の再配置を行うことができる可能性を高めることが可能になる。
【００５７】
なお、Ｓ７の処理が完了した後に、管理者が算出した仮想マシン３の最適配置が実現されていない場合、情報処理装置１は、仮想マシン３の最適配置が実現されるまでＳ５からＳ７の処理を繰り返し行うものであってよい。
【００５８】
このように、情報処理装置１は、仮想マシン３毎に、仮想マシン３の情報と、仮想マシン３の移動元の物理マシン２の情報と、仮想マシン３の移動先の物理マシン２の情報とを対応付けた情報を含む移動対象情報１３１を取得する。また、情報処理装置１は、複数の物理マシン２及び複数の仮想マシン３それぞれの状態を示す第１状態情報１３２ａを取得する。続いて、情報処理装置１は、移動対象情報１３１及び第１状態情報１３２ａに基づき、複数の仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３に、移動先の物理マシン２への移動を指示する。
【００５９】
そして、情報処理装置１は、移動先の物理マシン２への移動を指示していない仮想マシン３のうち、移動先の物理マシン２以外の物理マシン２への退避可能な仮想マシン３に、移動先の物理マシン２以外の物理マシン２への退避を指示する。その後、情報処理装置１は、仮想マシン３の退避後における、複数の物理マシン２及び複数の仮想マシン３のそれぞれについて、仮想マシン３の移動の可否を判定する第２状態情報１３２ｂを取得する。さらに、情報処理装置１は、移動対象情報１３１及び第２状態情報１３２ｂに基づき、移動先の物理マシン２への移動を指示していない仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３に、移動先の物理マシン２への移動を指示する。
【００６０】
すなわち、情報処理装置１は、移動対象情報１３１及び状態情報１３２に基づいて、仮想マシン３の退避を行いながら移動先の物理マシン２への移動を順次行う。これにより、情報処理装置１は、例えば、複数の仮想マシン３を同時に移動させることができない場合であっても、管理者が算出した仮想マシン３の最適配置を実現するように、仮想マシン３の再配置を行うことが可能になる。
【００６１】
[第１の実施の形態の詳細]
次に、第１の実施の形態の詳細について説明する。図７から図１１は、第１の実施の形態における移動制御処理の詳細を説明するフローチャートである。また、図１２から図３５は、第１の実施の形態における移動制御処理の詳細を説明する図である。図１２から図３５を参照しながら、図７から図１１の移動制御処理を説明する。
【００６２】
[配置決定処理]
初めに、例えば、第１の実施の形態における移動制御処理の前に実行される処理であって、仮想マシン３の最適配置を決定する処理（以下、配置決定処理とも呼ぶ）について説明を行う。図７は、第１の実施の形態における配置決定処理を説明するフローチャートである。
【００６３】
配置決定部１１１は、図７に示すように、配置決定タイミングまで待機する（Ｓ１０１のＮＯ）。配置決定タイミングは、例えば、管理者が仮想マシン３の再配置を行うことを決定したタイミングであってよい。具体的に、配置決定タイミングは、仮想マシン３を配備した物理マシン２のうち、物理リソースの使用率が所定の閾値を上回った物理マシン２が発生したことに伴って、管理者が仮想マシン３の再配置を行うことを決定したタイミングであってよい。
【００６４】
そして、配置決定タイミングになった場合（Ｓ１０１のＹＥＳ）、配置決定部１１１は、仮想マシン３の新たな配置（最適配置）を算出（決定）する（Ｓ１０２）。具体的に、配置決定部１１１は、例えば、数理計画法等を活用することにより、物理マシン２の物理リソースを効率的に使用することができる仮想マシン３の最適配置を算出する。
【００６５】
その後、情報管理部１１４は、Ｓ１０２の処理で算出した仮想マシン３の最適配置に基づき、移動対象情報１３１を作成する（Ｓ１０３）。具体的に、配置決定部１１１は、仮想マシン３毎に、仮想マシン３の情報と、仮想マシン３の移動元の物理マシン２の情報と、仮想マシン３の移動先の物理マシン２の情報とを対応付けることにより、移動対象情報１３１を作成する。以下、移動対象情報１３１の具体例について説明を行う。
【００６６】
図１２は、移動対象情報１３１の具体例を説明する図である。以下、配置決定部１１１が、図２で説明した仮想マシン３の配置を、図３で説明した仮想マシン３の配置に変更することを決定した場合について説明を行う。なお、以下、図２等で説明した物理マシン２Ａ、２Ｂ、２Ｃ、２Ｄ、２Ｅ及び２Ｆを、それぞれ物理マシンＡ、Ｂ、Ｃ、Ｄ、Ｅ及びＦ、または、それぞれ単にＡ、Ｂ、Ｃ、Ｄ、Ｅ及びＦとも表記する。また、以下、図２等で説明した仮想マシン３Ａ、３Ｂ、３Ｃ、３Ｄ、３Ｅ及び３Ｆを、それぞれ仮想マシンＡ、Ｂ、Ｃ、Ｄ、Ｅ及びＦ、または、それぞれ単にＡ、Ｂ、Ｃ、Ｄ、Ｅ及びＦとも表記する。
【００６７】
図１２に示す移動対象情報１３１は、移動対象情報１３１に含まれる各情報を識別する「情報ＩＤ」と、各仮想マシン３の名称を示す「仮想マシン名」と、各仮想マシン３が動作するために使用するメモリの使用容量を示す「メモリ使用容量」とを項目として有する。また、図１２に示す移動対象情報１３１は、各仮想マシン３が動作するために使用するディスクの使用容量を示す「ディスク使用容量」と、移動元の物理マシン２の名称を示す「移動元物理マシン名」とを項目として有する。さらに、図１２に示す移動対象情報１３１は、移動先の物理マシン２の名称を示す「移動先物理マシン名」と、退避先の物理マシン２の名称を示す「退避先物理マシン名」と、退避が行われたか否かを示すフラグである「退避フラグ」とを有する。
【００６８】
具体的に、図１２に示す移動対象情報１３１において、「情報ＩＤ」が「１」である情報には、「仮想マシン名」として「仮想マシンＢ」が設定され、「メモリ使用容量」として「１（ＧＢ）」が設定され、「ディスク使用容量」として「１（ＧＢ）」が設定されている。また、図１２に示す移動対象情報１３１において、「情報ＩＤ」が「１」である情報には、「移動元物理マシン名」として「Ａ」が設定され、「移動先物理マシン名」として「Ｅ」が設定され、「退避先物理マシン」がブランクになっている。さらに、図１２に示す移動対象情報１３１において、「情報ＩＤ」が「１」である情報には、「退避フラグ」として「０」が設定されている。図１２の他の情報については説明を省略する。
【００６９】
なお、情報管理部１１４は、図１２に示す移動対象情報１３１に含まれる各情報について、図１２に示すように、「メモリ使用容量」に設定された値と、「ディスク使用容量」に設定された値との合計値（以下、単に合計値とも呼ぶ）が小さい順に並び替えを行うものであってよい。具体的に、図１２に示す移動対象情報１３１には、仮想マシンＢ（合計値が「２」）、仮想マシンＤ（合計値が「２」）、仮想マシンＥ（合計値が「２」）、仮想マシンＡ（合計値が「３」）、仮想マシンＣ（合計値が「４」）及び仮想マシンＦ（合計値が「４」）の順で情報が設定されている。これにより、情報管理部１１４は、合計値が小さい順に仮想マシン３の移動を行うことが可能になる。そのため、情報管理部１１４は、各仮想マシン３の移動の平均所要時間を抑えることが可能になる。
【００７０】
一方、情報管理部１１４は、図１２に示す移動対象情報１３１に含まれる各情報について、「メモリ使用容量」に設定された値と、「ディスク使用容量」に設定された値との合計値が大きい順に並び替えを行うものであってよい。これにより、情報管理部１１４は、合計値が大きい順に仮想マシン３の移動を行うことが可能になる。そのため、情報管理部１１４は、仮想マシン３の移動の全体所要時間を抑えることが可能になる。
【００７１】
また、情報管理部１１４は、図１２に示す移動対象情報１３１に含まれる各情報について、以下の式（１）に従った評価値をそれぞれ算出し、算出した評価値の小さい順（大きい順）に並び替えるものであってもよい。
【００７２】
評価値  ＝  「メモリ使用容量」に設定された値 ×（移動対象情報１３１に含まれる各情報の「メモリ使用容量」に設定された値の平均値 ／ 移動対象情報１３１に含まれる各情報の「ディスク使用容量」に設定された値の平均値）＋「ディスク使用容量」に設定された値    ・・・    式（１）
【００７３】
さらに、情報管理部１１４は、仮想マシン３の移動元の物理マシン２と移動先の物理マシン２との関係にある物理マシン２をグループ化させるものであってもよい。そして、情報管理部１１４は、各グループに属する物理マシン２に配備された仮想マシン３の移動が順に行われるように、図１２に示す移動対象情報１３１に含まれる各情報を並び替えるものであってもよい。
【００７４】
具体的に、図３に示す例において、物理マシンＡ、Ｄ及びＥは、仮想マシンＡ、Ｂ、Ｄ及びＥの移動元の物理マシン２または移動先の物理マシン２である。また、物理マシンＢ及びＦは、仮想マシンＣ及びＦの移動元の物理マシン２または移動先の物理マシン２である。そのため、情報管理部１１４は、例えば、物理マシンＡ、Ｄ及びＥを第１グループとし、物理マシンＢ及びＦを第２グループとする。そして、情報管理部１１４は、例えば、第１グループの物理マシン２に配備された仮想マシンＡ、Ｂ、Ｄ及びＥと、第２グループの物理マシン２に配備された仮想マシンＢ及びＦとが可能な限り交互に並ぶように、図１２に示す移動対象情報１３１に含まれる各情報を並び替える。
【００７５】
これにより、移動指示部１１５は、移動先の物理マシン２への仮想マシン３の移動を、可能な限り並行して行うことが可能になる。そのため、移動指示部１１５は、移動先の物理マシン２への仮想マシン３の移動の所要時間を短縮することが可能になる。
【００７６】
なお、情報管理部１１４は、作成した各グループに関する情報を情報格納領域１３０に記憶するものであってもよい。これにより、移動指示部１１５は、情報格納領域１３０に記憶された各グループに関する情報を参照することで、移動先の物理マシン２への仮想マシン３の移動を可能な限り並行して行うことが可能になる。
【００７７】
図７に戻り、情報管理部１１４は、Ｓ１０３の処理で作成した移動対象情報１３１を情報格納領域１３０に記憶する（Ｓ１０４）。これにより、移動順序決定部１１３は、後述するように、仮想マシン３の移動順序を決定することが可能になる。
【００７８】
[移動制御処理の詳細]
次に、第１の実施の形態における移動制御処理の詳細について説明を行う。図８から図１１は、第１の実施の形態における移動制御処理の詳細を説明するフローチャートである。
【００７９】
情報取得部１１２は、図８に示すように、仮想マシン３の移動タイミングまで待機する（Ｓ１１のＮＯ）。そして、仮想マシン３の移動タイミングになった場合（Ｓ１１のＹＥＳ）、情報取得部１１２は、情報格納領域１３０に記憶された移動対象情報１３１を取得する（Ｓ１２）。また、情報取得部１１２は、複数の物理マシン２及び複数の仮想マシン３のそれぞれの状態を示す第１状態情報１３２ａを取得する（Ｓ１３）。以下、第１状態情報１３２ａの具体例について説明を行う。なお、以下、物理マシン２に関する第１状態情報１３２ａを物理マシン状態情報１４１ａとも呼び、仮想マシン３に関する第１状態情報１３２ａを仮想マシン状態情報１４２ａとも呼ぶ。
【００８０】
図１３は、物理マシン状態情報１４１ａの具体例を説明する図である。図１３に示す物理マシン状態情報１４１ａは、物理マシン状態情報１４１ａに含まれる各情報を識別する「情報ＩＤ」と、各物理マシン２のメモリの空き容量を示す「メモリ空き容量」とを項目として有する。また、図１３に示す物理マシン状態情報１４１ａは、各物理マシン２のディスクの空き容量を示す「ディスクの空き容量」と、各物理マシン２に配備されている仮想マシン３の名称を示す「仮想マシン名」とを項目として有する。
【００８１】
具体的に、図１３に示す物理マシン状態情報１４１ａにおいて、「情報ＩＤ」が「１」である情報には、「物理マシン名」として「物理マシンＡ」が設定されている。また、図１３に示す物理マシン状態情報１４１ａにおいて、「情報ＩＤ」が「１」である情報には、「メモリ空き容量」として「０（ＧＢ）」が設定され、「ディスク空き容量」として「１（ＧＢ）」が設定され、「仮想マシン名」として「Ａ，Ｂ」が設定されている。図１３の他の情報については説明を省略する。
【００８２】
また、図１４は、仮想マシン状態情報１４２ａの具体例を説明する図である。図１４に示す仮想マシン状態情報１４２ａは、仮想マシン状態情報１４２ａに含まれる各情報を識別する「情報ＩＤ」と、各仮想マシン３が動作するために必要なメモリの使用容量を示す「メモリ空き容量」とを項目として有する。また、図１４に示す仮想マシン状態情報１４２ａは、各仮想マシン３が動作するために必要なディスクの使用容量を示す「ディスクの空き容量」と、各仮想マシン３が配備されている物理マシン２の名称を示す「仮想マシン名」とを項目として有する。
【００８３】
具体的に、図１４に示す仮想マシン状態情報１４２ａにおいて、「情報ＩＤ」が「１」である情報には、「仮想マシン名」として「仮想マシンＡ」が設定されている。また、図１４に示す物理マシン状態情報１３２ｂにおいて、「情報ＩＤ」が「１」である情報には、「メモリ使用容量」として「１（ＧＢ）」が設定され、「ディスク使用容量」として「２（ＧＢ）」が設定され、「物理マシン名」として「Ａ」が設定されている。図１４の他の情報については説明を省略する。
【００８４】
図８に戻り、情報取得部１１２は、Ｓ１２の処理で取得した移動対象情報１３１及びＳ１３で取得した第１状態情報１３２ａに基づき、残余物理リソース情報１３５を作成する（Ｓ１４）。残余物理リソース情報１３５は、各物理マシン２の現在の残余物理リソースに関する情報である。そして、情報取得部１１２は、Ｓ１４の処理で作成した残余物理リソース情報１３５を情報格納領域１３０に記憶する（Ｓ１５）。以下、残余物理リソース情報１３５の具体例について説明を行う。
【００８５】
図１５は、残余物理リソース情報１３５の具体例を説明する図である。図１５に示す残余物理リソース情報１３５は、残余物理リソース情報１３５に含まれる各情報を識別する「情報ＩＤ」と、各物理マシン２の名称を示す「物理マシン名」とを項目として有する。また、図１５に示す残余物理リソース情報１３５は、各物理マシン２のメモリの空き容量を示す「メモリ空き容量」と、各物理マシン２のディスクの空き容量を示す「ディスクの空き容量」とを項目として有する。
【００８６】
具体的に、図１５に示す残余物理リソース情報１３５において、「情報ＩＤ」が「１」である情報には、「物理マシン名」として「物理マシンＡ」が設定されている。また、図１５に示す残余物理リソース情報１３５において、「情報ＩＤ」が「１」である情報には、「メモリ空き容量」として「０（ＧＢ）」が設定され、「ディスク空き容量」として「１（ＧＢ）」が設定されている。図１５の他の情報については説明を省略する。
【００８７】
図９に戻り、移動順序決定部１１３は、移動対象情報１３１に含まれている全ての情報を抽出済であるか否かを判定する（Ｓ２１）。その結果、全ての情報が抽出済ではない場合(Ｓ２１のＮＯ)、移動順序決定部１１３は、移動対象情報１３１に含まれる情報を１組取得する（Ｓ２２）。具体的に、移動順序決定部１１３は、図１２に示す移動対象情報１３１に含まれる情報から１行分に対応する情報を取得する。
【００８８】
そして、移動順序決定部１１３は、Ｓ２２の処理で抽出した情報に対応する仮想マシン３が移動先の物理マシン２に移動可能であるか否かを判定する（Ｓ２３）。その結果、移動先の物理マシン２に移動可能である場合（Ｓ２３のＹＥＳ）、移動順序決定部１１３は、Ｓ２２の処理で抽出した情報を移動決定情報１３３に追加する（Ｓ２４）。
【００８９】
さらに、情報管理部１１４は、Ｓ２２の処理で抽出した情報に基づき、残余物理リソース情報１３５を更新する（Ｓ２５）。すなわち、情報管理部１１４は、移動先の物理マシン２に移動可能であると判定した仮想マシン３を移動先の物理マシン２に移動したと仮定して、残余物理リソース情報１３５の更新を行う。
【００９０】
一方、Ｓ２２の処理で抽出した情報に対応する仮想マシン３が移動先の物理マシン２に移動可能でない場合（Ｓ２３のＮＯ）、情報管理部１１４は、Ｓ２２の処理で抽出した情報を移動未完了情報１３４に追加する（Ｓ２６）。
【００９１】
これにより、情報管理部１１４は、移動先の物理マシン２に移動を行うことができる仮想マシン３に関する情報と、現状では移動先の物理マシン２に移動を行うことができない仮想マシン３に関する情報とを分けて管理することが可能になる。
【００９２】
なお、以下、Ｓ１５の処理が行われた後、Ｓ２１の処理において移動対象情報１３１に含まれている全ての情報を抽出済であると判定されるまで行われる処理を、移動仮想マシン決定処理とも呼ぶ。
【００９３】
[１回目の移動仮想マシン決定処理の具体例]
次に、移動仮想マシン決定処理の具体例について説明を行う。図１６から図２０は、１回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【００９４】
図１２に示す移動対象情報１３１において、移動順序決定部１１３は、初めに、「情報ＩＤ」が「１」である情報（「仮想マシン名」が「仮想マシンＢ」である情報）を抽出する（Ｓ２２）。そして、移動順序決定部１１３は、「情報ＩＤ」が「１」の「メモリ使用容量」に設定された情報である「１（ＧＢ）」と、「ディスク使用容量」に設定された情報である「１（ＧＢ）」とを取得する。また、移動順序決定部１１３は、「情報ＩＤ」が「１」の「移動先物理マシン名」に設定された情報である「Ｅ（物理マシンＥ）」を取得する。
【００９５】
その後、移動順序決定部１１３は、図１５で説明した残余物理リソース情報１３５を参照し、「物理マシン名」が「物理マシンＥ」である情報の「メモリ空き容量」に設定された情報である「１（ＧＢ）」と、「ディスク空き容量」に設定された情報である「２（ＧＢ）」とを取得する。
【００９６】
ここで、移動順序決定部１１３が取得した情報のうち、仮想マシンＢの情報の「メモリ使用容量」及び「ディスク使用容量」に設定された情報は、それぞれ物理マシンＥの「メモリ空き容量」及び「ディスク空き容量」に設定された情報よりも小さい。そのため、移動順序決定部１１３は、Ｓ２３の処理で抽出した情報に対応する仮想マシン３である仮想マシンＢが、移動先の物理マシンである物理マシンＥに移動可能であると判定する（Ｓ２３のＹＥＳ）。
【００９７】
したがって、移動順序決定部１１３は、図１６に示すように、Ｓ２２の処理で抽出した情報（図１２に示す移動対象情報１３１のうちの「仮想マシン名」が「仮想マシンＢ」である情報）を、移動決定情報１３３として情報格納領域１３０に記憶する（Ｓ２４）。また、移動順序決定部１１３は、図１７の下線部分に示すように、図１５に示す残余物理リソース情報１３５における物理マシンＥのメモリ空き容量である「１（ＧＢ）」を、仮想マシンＢのメモリ使用容量である「１（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ２５）。さらに、移動順序決定部１１３は、図１７の下線部分に示すように、図１５に示す残余物理リソース情報１３５における物理マシンＥのディスク空き容量である「２（ＧＢ）」を、仮想マシンＢのディスク使用容量である「１（ＧＢ）」を減算した値である「１（ＧＢ）」に更新する（Ｓ２５）。
【００９８】
その後、移動順序決定部１１３は、図１２に示す移動対象情報１３１に含まれる全ての情報が抽出済になるまで、Ｓ２１からＳ２６の処理の実行を繰り返す。その結果、移動順序決定部１１３は、Ｓ２３の処理において、仮想マシンＢ（図１２に示す移動対象情報１３１の「情報ＩＤ」が「１」である情報）及び仮想マシンＥ（図１２に示す移動対象情報１３１の「情報ＩＤ」が「３」である情報）が移動可能であると判定する。また、移動順序決定部１１３は、仮想マシンＤ（図１２に示す移動対象情報１３１の「情報ＩＤ」が「２」である情報）及び仮想マシンＡ（図１２に示す移動対象情報１３１の「情報ＩＤ」が「４」である情報）が移動可能でないと判定する。さらに、移動順序決定部１１３は、仮想マシンＣ（図１２に示す移動対象情報１３１の「情報ＩＤ」が「５」である情報）及び仮想マシンＦ（図１２に示す移動対象情報１３１の「情報ＩＤ」が「６」である情報）が移動可能でないと判定する。
【００９９】
したがって、移動順序決定部１１３は、図１８の下線部分に示すように、図１２に示す移動対象情報１３１のうちの「情報ＩＤ」が「３」である情報を、図１６に示す移動決定情報１３３に対する追加情報として情報格納領域１３０に記憶する（Ｓ２４）。また、移動順序決定部１１３は、図１９の下線部分に示すように、図１７で説明した残余物理リソース情報１３５の物理マシンＤのメモリ空き容量である「３（ＧＢ）」を、仮想マシンＥのメモリ使用容量である「１（ＧＢ）」を減算した値である「２（ＧＢ）」に更新する（Ｓ２５）。さらに、移動順序決定部１１３は、図１９の下線部分に示すように、図１７に示す残余物理リソース情報１３５の物理マシンＤのディスク空き容量である「３（ＧＢ）」を、仮想マシンＥのディスク使用容量である「１（ＧＢ）」を減算した値である「２（ＧＢ）」に更新する（Ｓ２５）。
【０１００】
また、移動順序決定部１１３は、図２０に示すように、図１２に示す移動対象情報１３１のうちの「情報ＩＤ」が「２」及び「４」から「６」である情報を、移動未完了情報１３４として情報格納領域１３０に記憶する（Ｓ２６）。
【０１０１】
なお、移動順序決定部１１３は、移動未完了情報１３４を情報格納領域１３０に記憶する際に、移動未完了情報１３４に含まれる各情報の並び替えを行うものであってよい。具体的に、移動順序決定部１１３は、この場合、図１２で説明した第１グループの物理マシン２に配備された仮想マシンＡ、Ｂ、Ｄ及びＥと、図１２で説明した第２グループの物理マシン２に配備された仮想マシンＢ及びＦとを特定する。そして、移動順序決定部１１３は、第１グループの物理マシン２に配備された仮想マシン３と第２グループの物理マシン２に配備された仮想マシン３とが可能な限り交互に並ぶように、移動未完了情報１３４の各情報を並び替える。これにより、移動指示部１１５は、後述するように、移動未完了情報１３４に含まれる情報を新たな移動対象情報１３１として作成した場合に、移動先の物理マシン２への仮想マシン３の移動を、可能な限りグループ毎に並行して行うことが可能になる。そのため、移動指示部１１５は、移動先の物理マシン２への仮想マシン３の移動の所要時間を短縮することが可能になる。
【０１０２】
また、移動対象情報１３１は、「メモリ使用容量」及び「ディスク使用容量」の項目を有しないものであってもよい。この場合、移動順序決定部１１３は、Ｓ２３の処理において、図１４で説明した仮想マシン状態情報１４２ａを参照することにより、各仮想マシン３に対応する「メモリ使用容量」及び「ディスク使用容量」に設定された情報を取得するものであってよい。
【０１０３】
図９に戻り、移動対象情報１３１に含まれている全ての情報を抽出済である場合（Ｓ２１のＹＥＳ）、移動順序決定部１１３は、図１０に示すように、移動未完了情報１３４に含まれる全ての情報が抽出済であるか否かを判定する（Ｓ３１）。その結果、移動未完了情報１３４に含まれる全ての情報が抽出済でない場合(Ｓ３１のＮＯ)、移動順序決定部１１３は、移動未完了情報１３４に含まれる情報を１組取得する（Ｓ３２）。具体的に、移動順序決定部１１３は、図２０に示す移動未完了情報１３４に含まれる情報から１行分に対応する情報を取得する。
【０１０４】
そして、移動順序決定部１１３は、Ｓ３２の処理で抽出した情報に対応する仮想マシン３が移動先以外の物理マシン２に退避可能であるか否かを判定する（Ｓ３３）。その結果、移動先以外の物理マシン２に退避可能である場合（Ｓ３３のＹＥＳ）、移動順序決定部１１３は、Ｓ３２の処理で抽出した情報を移動決定情報１３３に追加する（Ｓ３４）。また、移動順序決定部１１３は、この場合、Ｓ３２の処理で抽出した情報に基づき、残余物理リソース情報１３５を更新する（Ｓ３５）。さらに、移動順序決定部１１３は、この場合、Ｓ３２の処理で抽出した情報に基づき、移動未完了情報１３４を更新する（Ｓ３６）。
【０１０５】
すなわち、移動順序決定部１１３は、移動先の物理マシン２に現状では移動を行うことができない仮想マシン３であるが、移動先以外の物理マシン２に退避可能な仮想マシン３については退避を行う。これにより、移動順序決定部１１３は、後述するように、移動先の物理マシン２に現状では移動を行うことができない仮想マシン３であっても、移動先の物理マシン２に移動することができるようになる仮想マシン３を発生させることが可能になる。
【０１０６】
一方、Ｓ３２の処理で抽出した情報に対応する仮想マシン３が移動先以外の物理マシン２に退避可能でない場合（Ｓ３３のＮＯ）、移動順序決定部１１３は、図２０に示す移動未完了情報１３４に含まれる全ての情報を抽出するまで、Ｓ３１以降の処理を繰り返し実行する。
【０１０７】
なお、以下、Ｓ２１の処理において移動対象情報１３１に含まれている全ての情報を抽出済であると判定された後、Ｓ３１の処理において移動未完了情報１３４に含まれる全ての情報が抽出済であると判定されるまでの処理を、退避仮想マシン決定処理とも呼ぶ。
【０１０８】
[１回目の退避仮想マシン決定処理の具体例]
次に、１回目に実行される退避仮想マシン決定処理の具体例について説明を行う。図２１から図２６は、１回目に実行される退避仮想マシン決定処理の具体例を説明する図である。
【０１０９】
図２０に示す移動未完了情報１３４において、移動順序決定部１１３は、初めに、「情報ＩＤ」が「１」である情報（「仮想マシン名」が「仮想マシンＤ」である情報）を抽出する（Ｓ３２）。
【０１１０】
そして、移動順序決定部１１３は、「情報ＩＤ」が「１」の「メモリ使用容量」に設定された情報である「１（ＧＢ）」と、「ディスク使用容量」に設定された情報である「１（ＧＢ）」とを取得する。さらに、移動順序決定部１１３は、図１９に示す残余物理リソース情報１３５を参照し、情報の取得を行った仮想マシンＤを退避させることができる物理マシン２を特定する。具体的に、図１９に示す残余物理リソース情報１３５において、例えば、「情報ＩＤ」が「３」である情報（「物理マシン名」が「物理マシンＣ」である情報）の「メモリ空き容量」及び「ディスク空き容量」は、それぞれ「１（ＧＢ）」及び「１（ＧＢ）」である。そのため、仮想マシンＤのメモリ使用容量及びディスク使用容量は、それぞれ物理マシンＣのメモリ空き容量及びディスク空き容量よりも小さい。したがって、移動順序決定部１１３は、Ｓ２３の処理で抽出した情報に対応する仮想マシン３である仮想マシンＤが、移動先以外の物理マシン２である物理マシンＣに退避可能であると判定する（Ｓ３３のＹＥＳ）。
【０１１１】
なお、移動順序決定部１１３は、Ｓ３３の処理において、移動未完了情報１３４に含まれる情報のうち、「退避フラグ」に「１」が設定されている情報に対応する仮想マシン３については、移動先以外の物理マシン２に退避しないものであってもよい。これにより、移動順序決定部１１３は、退避する必要のない仮想マシン３の退避が繰り返し行われることを防止し、移動先の物理マシン２に対する仮想マシン３の移動を効率的に行うことが可能になる。
【０１１２】
ただし、移動順序決定部１１３は、移動決定情報１３３に情報が含まれていない場合に限り、移動未完了情報１３４に含まれる情報のうち、「退避フラグ」に「１」が設定されている情報に対応する仮想マシン３についても退避を行うものであってよい。すなわち、Ｓ３３の処理を行う際に、移動決定情報１３３に情報が含まれていない場合、後述するように、情報処理装置１は、管理者が算出した最適配置に従った仮想マシン３の再配置に失敗する可能性が高い。そのため、移動順序決定部１１３は、この場合、「退避フラグ」に「１」が設定されている情報に対応する仮想マシン３についても、退避を行う仮想マシン３の対象とするものであってよい。これにより、移動順序決定部１１３は、最適配置に従った仮想マシン３の再配置を行うことができる可能性を高めることが可能になる。
【０１１３】
そして、移動順序決定部１１３は、図２１の下線部分に示すように、Ｓ３２の処理で抽出した情報（「仮想マシン名」が「仮想マシンＤ」である情報）を移動決定情報１３３として情報格納領域１３０に記憶する（Ｓ３４）。具体的に、移動順序決定部１１３は、図２１の下線部分に示すように、図２０に示す移動未完了情報１３４の「情報ＩＤ」が「１」である情報を、移動決定情報１３３の「情報ＩＤ」が「３」である情報として設定する。
【０１１４】
ここで、移動順序決定部１１３は、この場合、図２１の下線部分に示すように、移動決定情報１３３の「情報ＩＤ」が「３」である情報の「退避先物理マシン名」に、仮想マシンＤの退避を行った物理マシンＣを示す「Ｃ」を設定する。これにより、移動順序決定部１１３は、退避した後の仮想マシンＤを移動先の物理マシン２に移動させる際に、移動元となる物理マシン２の情報を適切に管理することが可能になる。また、移動順序決定部１１３は、図２１の下線部分に示すように、「退避フラグ」に「１」を設定する。これにより、移動順序決定部１１３は、Ｓ３３の処理を再度実行する際に、移動先以外の物理マシン２に既に退避している仮想マシン３（退避することが既に決定している仮想マシン３）を特定することが可能になる。
【０１１５】
また、移動順序決定部１１３は、図２２の下線部分に示すように、図１９に示す残余物理リソース情報１３５の物理マシンＣのメモリ空き容量である「１（ＧＢ）」を、仮想マシンＤのメモリ使用容量である「１（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ３５）。そして、移動順序決定部１１３は、図２２の下線部分に示すように、図１９に示す残余物理リソース情報１３５の物理マシンＣのディスク空き容量である「１（ＧＢ）」を、仮想マシンＤのディスク使用容量である「１（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ３５）。
【０１１６】
さらに、移動順序決定部１１３は、図２３の下線部分に示すように、仮想マシンＤの「移動元物理マシン名」に設定される情報を、仮想マシンＤが退避を行う仮想マシン３である仮想マシンＣに更新する。これにより、移動順序決定部１１３は、仮想マシンＤの退避に行うことによる仮想マシンＤの状態を移動未完了情報１３４に反映させることが可能になる。
【０１１７】
その後、移動順序決定部１１３は、図２０に示す移動未完了情報１３４に情報に含まれる全ての情報が抽出済になるまで、Ｓ３１からＳ３６の処理の実行を繰り返す。その結果、移動順序決定部１１３は、Ｓ３３の処理において、仮想マシンＤ（「情報ＩＤ」が「１」である情報）及び仮想マシンＣ（「情報ＩＤ」が「３」である情報）が退避可能であると判定する。また、移動順序決定部１１３は、仮想マシンＡ（「情報ＩＤ」が「２」である情報）及び仮想マシンＦ（「情報ＩＤ」が「４」である情報）が退避可能でないと判定する。
【０１１８】
したがって、移動順序決定部１１３は、図２４の下線部分に示すように、図２０に示す移動未完了情報１３４の「情報ＩＤ」が「３」である情報を、移動決定情報１３３の「情報ＩＤ」が「４」である情報として情報格納領域１３０に記憶する（Ｓ３４）。この場合、移動順序決定部１１３は、図２４の下線部分に示すように、移動決定情報１３３の「情報ＩＤ」が「４」である情報の「退避先物理マシン名」に、仮想マシンＣの退避を行った物理マシンＤを示す「Ｄ」を設定し、「退避フラグ」に「１」を設定する。
【０１１９】
そして、移動順序決定部１１３は、図２５の下線部分に示すように、図２２で説明した残余物理リソース情報１３５の物理マシンＤのメモリ空き容量である「２（ＧＢ）」を、仮想マシンＣのメモリ使用容量である「２（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ３５）。さらに、移動順序決定部１１３は、図２５の下線部分に示すように、図２２に示す残余物理リソース情報１３５の物理マシンＤのディスク空き容量である「２（ＧＢ）」を、仮想マシンＣのディスク使用容量である「２（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ３５）。
【０１２０】
また、移動順序決定部１１３は、図２６の下線部分に示すように、移動未完了情報１３４の「情報ＩＤ」が「３」である情報の「移動元物理マシン名」を、仮想マシンＣを退避する物理マシン２である物理マシンＤを示す「Ｄ」に更新する（Ｓ３６）。
【０１２１】
すなわち、Ｓ３２の処理で抽出した情報に対応する仮想マシン３が移動先以外の物理マシン２に退避可能である場合（Ｓ３３のＹＥＳ）、移動順序決定部１１３は、Ｓ３２の処理で抽出した情報に対応する仮想マシン３の情報を移動決定情報１３３に追加する（Ｓ３４）。一方、移動順序決定部１１３は、この場合、Ｓ３２の処理で抽出した情報に対応する仮想マシン３の情報を移動未完了情報１３４から排除しない（Ｓ３５）。
【０１２２】
これにより、移動順序決定部１１３は、Ｓ３２の処理で抽出した情報に対応する仮想マシン３について、移動先以外の物理マシン２に対して退避した後、再度、移動先の物理マシン２に対して移動する必要がある仮想マシン３として管理することが可能になる。
【０１２３】
図１０に戻り、移動未完了情報１３４に含まれる全ての情報が抽出済である場合（Ｓ３１のＹＥＳ）、移動順序決定部１１３は、図１１に示すように、移動決定情報１３３に情報が含まれているかを判定する（Ｓ４１）。その結果、移動決定情報１３３に情報が含まれている場合(Ｓ４１のＮＯ)、移動指示部１１５は、移動決定情報１３３に情報が含まれる仮想マシン３の移動を指示する（Ｓ４２）。すなわち、移動指示部１１５は、Ｓ２３の処理で移動先の物理マシン２に移動可能であると判定された仮想マシン３の移動と、Ｓ３３の処理で移動先以外の物理マシン２に退避可能であると判定された仮想マシン３の退避を指示する。
【０１２４】
そして、移動順序決定部１１３は、移動未完了情報１３４に情報が含まれているかを判定する（Ｓ４４）。その結果、移動未完了情報１３４に情報が含まれている場合(Ｓ４４のＮＯ)、移動順序決定部１１３は、Ｓ４２の処理で移動した仮想マシン３の情報に基づき、残余物理リソース情報１３５を更新する（Ｓ４５）。すなわち、Ｓ４２の処理において仮想マシン３の移動が完了した場合、移動が完了した仮想マシン３が使用していた移動元の物理マシン２の物理リソースは解放される。そのため、移動順序決定部１１３は、Ｓ４５の処理において、残余物理リソース情報１３５の更新を行う。
【０１２５】
また、移動順序決定部１１３は、この場合、移動未完了情報１３４に含まれる情報に基づき、移動対象情報１３１を更新する（Ｓ４６）。そして、移動順序決定部１１３は、Ｓ２１以降の処理（移動仮想マシン決定処理及び退避仮想マシン決定処理）を再度実行する。すなわち、Ｓ４４の処理において、移動未完了情報１３４に情報が存在している場合、移動先の物理マシン２に対する各仮想マシン３の移動が完了していないことになる。そのため、移動順序決定部１１３は、この場合、移動未完了情報１３４に存在していた情報を移動対象情報１３１として、Ｓ２１以降の処理を再度実行する。
【０１２６】
一方、移動決定情報１３３に情報が含まれていない場合（Ｓ４１のＹＥＳ）、移動指示部１１５は、Ｓ４２の処理で移動を指示した仮想マシン３に、移動元の物理マシン２への移動を指示する（Ｓ４３）。そして、移動指示部１１５は、移動制御処理を終了する。すなわち、Ｓ４１の処理において、移動決定情報１３３に情報が存在しない場合、移動先の物理マシン２に移動可能であると判定された仮想マシン３だけでなく、移動先以外の物理マシン２に退避可能であると判定された仮想マシン３も存在しないことになる。そのため、この場合、移動指示部１１５は、各仮想マシン３の稼働を継続させた状態で、配置決定部１１１が算出した仮想マシン３の配置を実現することはできないと判定する。したがって、移動指示部１１５は、この場合、例えば、仮想マシン３を移動制御処理が開始される前の状態に戻し、移動制御処理を終了（異常終了）する。
【０１２７】
また、Ｓ４２の処理において仮想マシン３の移動を指示した後、移動未完了情報１３４に情報が存在しない場合（Ｓ４１のＮＯ、Ｓ４２、Ｓ４４のＹＥＳ）、移動順序決定部１１３は、移動制御処理を終了する。すなわち、この場合、移動順序決定部１１３は、移動先の物理マシン２に移動すべき全ての仮想マシン３の移動が完了したと判定し、移動制御処理を終了（正常終了）する。
【０１２８】
なお、以下、Ｓ３１の処理において全ての情報が抽出済であると判定された後、Ｓ４３またはＳ４６の処理が行われるまで、または、Ｓ４４の処理において移動未完了情報１３４に情報が存在しないと判定されるまでの処理を、仮想マシン移動処理とも呼ぶ。
【０１２９】
[１回目の仮想マシン移動処理の具体例]
次に、１回目に実行される仮想マシン移動処理の具体例について説明を行う。図２７及び図２８は、１回目に実行される仮想マシン移動処理の具体例を説明する図である。
【０１３０】
移動順序決定部１１３は、初めに、図２４に示す移動決定情報１３３に含まれる全ての情報（「情報ＩＤ」が「１」から「４」である情報）の移動を行う（Ｓ４２）。
【０１３１】
その後、図２６に示すように、移動未完了情報１３４に情報が存在しているため（Ｓ４４のＮＯ）、移動順序決定部１１３は、図２４に示す移動決定情報１３３を参照する。そして、移動順序決定部１１３は、Ｓ４２の処理で移動を行った仮想マシン３の「メモリ使用容量」、「ディスク使用容量」及び「移動元物理マシン名」に設定された情報を取得する。具体的に、移動順序決定部１１３は、図２４に示す移動決定情報１３３から、仮想マシンＢの「メモリ使用容量」として「１（ＧＢ）」を取得し、「ディスク使用容量」として「１（ＧＢ）」を取得し、「移動元物理マシン名」として「Ａ（物理マシンＡ）」を取得する。また、移動順序決定部１１３は、仮想マシンＥの「メモリ使用容量」として「１（ＧＢ）」を取得し、「ディスク使用容量」として「１（ＧＢ）」を取得し、「移動元物理マシン名」として「Ｅ（物理マシンＥ）」を取得する。また、移動順序決定部１１３は、仮想マシンＤの「メモリ使用容量」として「１（ＧＢ）」を取得し、「ディスク使用容量」として「１（ＧＢ）」を取得し、「移動元物理マシン名」として「Ｄ（物理マシンＤ）」を取得する。さらに、移動順序決定部１１３は、仮想マシンＣの「メモリ使用容量」として「２（ＧＢ）」を取得し、「ディスク使用容量」として「２（ＧＢ）」を取得し、「移動元物理マシン名」として「Ｂ（物理マシンＢ）」を取得する。
【０１３２】
そして、移動順序決定部１１３は、移動決定情報１３３から取得した情報に基づき、残余物理リソース情報１３５を更新する（Ｓ４５）。具体的に、移動順序決定部１１３は、図２５における物理マシンＡの「メモリ空き容量」に設定された値である「０（ＧＢ）」と、図２６における仮想マシンＡの「メモリ使用容量」に設定された値である「１（ＧＢ）」とを取得する。そして、移動順序決定部１１３は、図２７の下線部分に示すように、物理マシンＡの「メモリ空き容量」に、「０（ＧＢ）」と「１（ＧＢ）」とを加算した値である「１（ＧＢ）」を設定する。また、移動順序決定部１１３は、図２５における物理マシンＡの「ディスク空き容量」に設定された値である「１（ＧＢ）」と、図２６における仮想マシンＡの「ディスク使用容量」に設定された値である「１（ＧＢ）」とを取得する。そして、移動順序決定部１１３は、図２７の下線部分に示すように、物理マシンＡの「ディスク空き容量」に、「１（ＧＢ）」と「１（ＧＢ）」とを加算した値である「２（ＧＢ）」を設定する。さらに、移動順序決定部１１３は、図２７の下線部分に示すように、物理マシンＢ、Ｄ及びＥについても同様に、残余物理リソース情報１３５の更新を行う。
【０１３３】
その後、移動順序決定部１１３は、図２８に示すように、図２６に示す移動未完了情報１３４に含まれる情報を、新たな移動対象情報１３１をして作成する（Ｓ４６）。
【０１３４】
[２回目の移動仮想マシン決定処理の具体例]
次に、２回目に実行される移動仮想マシン決定処理の具体例について説明を行う。図２９から図３１は、２回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【０１３５】
図２８に示す移動対象情報１３１において、移動順序決定部１１３は、初めに、「情報ＩＤ」が「１」である情報（「仮想マシン名」が「仮想マシンＤ」である情報）を抽出する（Ｓ２２）。そして、移動順序決定部１１３は、「情報ＩＤ」が「１」の「メモリ使用容量」に設定された情報である「１（ＧＢ）」と、「ディスク使用容量」に設定された情報である「１（ＧＢ）」とを取得する。さらに、移動順序決定部１１３は、「情報ＩＤ」が「１」の「移動先物理マシン名」に設定された情報である「Ａ（物理マシンＡ）」を取得する。
【０１３６】
その後、移動順序決定部１１３は、図２７に示す残余物理リソース情報１３５を参照し、「物理マシン名」に設定された情報が「物理マシンＡ」である情報の「メモリ空き容量」に設定された情報である「１（ＧＢ）」と、「ディスク空き容量」に設定された情報である「２（ＧＢ）」とを取得する。
【０１３７】
ここで、移動順序決定部１１３が取得した情報のうち、仮想マシンＤのメモリ使用容量及びディスク使用容量は、それぞれ物理マシンＡのメモリ空き容量及びディスク空き容量よりも小さい。そのため、移動順序決定部１１３は、Ｓ２３の処理で抽出した情報に対応する仮想マシン３である仮想マシンＤが、移動先の物理マシン２である物理マシンＡに移動可能であると判定する（Ｓ２３のＹＥＳ）。したがって、移動順序決定部１１３は、Ｓ２２の処理で抽出した情報（「仮想マシン名」が「仮想マシンＤ」である情報）を移動決定情報１３３として情報格納領域１３０に記憶する（Ｓ２４）。
【０１３８】
また、移動順序決定部１１３は、図２７に示す残余物理リソース情報１３５の物理マシンＡのメモリ空き容量である「１（ＧＢ）」を、仮想マシンＤのメモリ使用容量である「１（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ２５）。さらに、移動順序決定部１１３は、図２７に示す残余物理リソース情報１３５の物理マシンＡのディスク空き容量である「２（ＧＢ）」を、仮想マシンＤのディスク使用容量である「１（ＧＢ）」を減算した値である「１（ＧＢ）」に更新する（Ｓ２５）。
【０１３９】
その後、移動順序決定部１１３は、図２８に示す移動対象情報１３１に含まれる全ての情報が抽出済になるまで、Ｓ２１からＳ２６の処理の実行を繰り返す。その結果、移動順序決定部１１３は、Ｓ２３の処理において、仮想マシンＤ（図２８に示す移動対象情報１３１の「情報ＩＤ」が「１」である情報）及び仮想マシンＡ（図２８に示す移動対象情報１３１の「情報ＩＤ」が「３」である情報）が移動可能であると判定する。また、移動順序決定部１１３は、Ｓ２３の処理において、仮想マシンＦ（図２８に示す移動対象情報１３１の「情報ＩＤ」が「４」である情報）が移動可能であると判定する。また、移動順序決定部１１３は、Ｓ２３の処理において、仮想マシンＣ（図２８に示す移動対象情報１３１の「情報ＩＤ」が「２」である情報）が移動可能でないと判定する。
【０１４０】
したがって、移動順序決定部１１３は、図２９に示すように、図２８の移動対象情報１３１のうち、「情報ＩＤ」が「１」、「３」及び「４」である情報を移動決定情報１３３として情報格納領域１３０に記憶する（Ｓ２４）。
【０１４１】
また、移動順序決定部１１３は、図３０の下線部分に示すように、図２７に示す残余物理リソース情報１３５における物理マシンＡのメモリ空き容量である「１（ＧＢ）」を、仮想マシンＤのメモリ使用容量である「１（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ２５）。さらに、移動順序決定部１１３は、図３０の下線部分に示すように、図２７に示す残余物理リソース情報１３５における物理マシンＡのディスク空き容量である「２（ＧＢ）」を、仮想マシンＥのディスク使用容量である「１（ＧＢ）」を減算した値である「１（ＧＢ）」に更新する。同様に、移動順序決定部１１３は、図３０の下線部分に示すように、図２７に示す残余物理リソース情報１３５における物理マシンＢのメモリ空き容量である「２（ＧＢ）」を「０（ＧＢ）」に更新し、物理マシンＢのディスク空き容量である「２（ＧＢ）」を「０（ＧＢ）」に更新する。また、移動順序決定部１１３は、図３０の下線部分に示すように、図２７に示す残余物理リソース情報１３５における物理マシンＥのメモリ空き容量である「１（ＧＢ）」を「０（ＧＢ）」に更新し、物理マシンＥのディスク空き容量である「２（ＧＢ）」を「０（ＧＢ）」に更新する（Ｓ２５）。
【０１４２】
また、移動順序決定部１１３は、図３１に示すように、図２８の移動対象情報１３１のうち、「情報ＩＤ」が「２」である情報を移動未完了情報１３４として情報格納領域１３０に記憶する（Ｓ２６）。
【０１４３】
[２回目の退避仮想マシン決定処理の具体例]
次に、２回目に実行される退避仮想マシン決定処理の具体例について説明を行う。
【０１４４】
図３１に示す移動未完了情報１３４において、移動順序決定部１１３は、初めに、「情報ＩＤ」が「１」である情報（「仮想マシン名」が「仮想マシンＣ」である情報）を抽出する（Ｓ３２）。そして、移動順序決定部１１３は、「情報ＩＤ」が「１」の「メモリ使用容量」に設定された情報である「２（ＧＢ）」と、「ディスク使用容量」に設定された情報である「２（ＧＢ）」とを取得する。
【０１４５】
さらに、移動順序決定部１１３は、図３０に示す残余物理リソース情報１３５を参照し、情報の取得を行った仮想マシンＣを退避させることができる物理マシン２を特定する。
【０１４６】
ここで、物理マシンＡ、Ｂ、Ｃ及びＥ（仮想マシンＣの移動元の物理マシン２及び移動先の物理マシン２以外の物理マシン２）には、仮想マシンＣを退避させることができる物理マシン２は存在しない。そのため、移動順序決定部１１３は、Ｓ２３で抽出した情報に対応する仮想マシン３である仮想マシンＣは、移動先以外の物理マシン２である物理マシンＣに退避可能でないものと判定する（Ｓ３３のＮＯ）。そして、図３１に示す移動未完了情報１３４に含まれる情報の全てが抽出済であるため、移動順序決定部１１３は、Ｓ４１以降の処理を実行する（Ｓ３１のＹＥＳ）。
【０１４７】
[２回目の仮想マシン移動処理の具体例]
次に、２回目に実行される仮想マシン移動処理の具体例について説明を行う。図３２及び図３３は、２回目に実行される仮想マシン移動処理の具体例を説明する図である。
【０１４８】
移動順序決定部１１３は、初めに、図２９に示す移動決定情報１３３に含まれる全ての情報（「情報ＩＤ」が「１」から「３」である情報）の移動を行う（Ｓ４２）。
【０１４９】
その後、図３１に示すように、移動未完了情報１３４に情報が存在しているため（Ｓ４４のＮＯ）、移動順序決定部１１３は、図２９に示す移動決定情報１３３を参照する。そして、移動順序決定部１１３は、Ｓ４２の処理で移動を行った仮想マシン３の「メモリ使用容量」、「ディスク使用容量」及び「移動元物理マシン名」に設定された情報を取得する。具体的に、移動順序決定部１１３は、図２９に示す移動決定情報１３３から、仮想マシンＤの「メモリ使用容量」として「１（ＧＢ）」を取得し、「ディスク使用容量」として「１（ＧＢ）」を取得し、「移動元物理マシン名」として「Ｃ」を取得する。また、移動順序決定部１１３は、仮想マシンＡの「メモリ使用容量」として「１（ＧＢ）」を取得し、「ディスク使用容量」として「２（ＧＢ）」を取得し、「移動元物理マシン名」として「Ａ」を取得する。さらに、移動順序決定部１１３は、仮想マシンＦの「メモリ使用容量」として「２（ＧＢ）」を取得し、「ディスク使用容量」として「２（ＧＢ）」を取得し、「移動元物理マシン名」として「Ｆ（物理マシンＦ）」を取得する。
【０１５０】
そして、移動順序決定部１１３は、移動決定情報１３３から取得した情報に基づき、残余物理リソース情報１３５を更新する（Ｓ４５）。具体的に、移動順序決定部１１３は、図３０における物理マシンＣの「メモリ空き容量」に設定された値である「０（ＧＢ）」と、図２９における仮想マシンＤの「メモリ使用容量」に設定された値である「１（ＧＢ）」とを取得する。そして、移動順序決定部１１３は、図３２の下線部分に示すように、物理マシンＣの「ディスク空き容量」に、「０（ＧＢ）」と「１（ＧＢ）」とを加算した値である「１（ＧＢ）」を設定する。また、移動順序決定部１１３は、図３０における物理マシンＣの「ディスク空き容量」に設定された値である「０（ＧＢ）」と、図２９における仮想マシンＤの「ディスク使用容量」に設定された値である「１（ＧＢ）」とを取得する。そして、移動順序決定部１１３は、図３２の下線部分に示すように、物理マシンＡの「ディスク空き容量」に、「０（ＧＢ）」と「１（ＧＢ）」とを加算した値である「１（ＧＢ）」を設定する。そして、移動順序決定部１１３は、図３２の下線部分に示すように、仮想マシンＡ及びＦに対応する情報についても同様に、残余物理リソース情報１３５の更新を行う。
【０１５１】
その後、移動順序決定部１１３は、図３３に示すように、図３１に示す移動未完了情報１３４に含まれる情報を、新たな移動対象情報１３１をして作成する（Ｓ４６）。
【０１５２】
[３回目の移動仮想マシン決定処理の具体例]
次に、３回目に実行される移動仮想マシン決定処理の具体例について説明を行う。図３４及び図３５は、３回目に実行される移動仮想マシン決定処理の具体例を説明する図である。
【０１５３】
図３３に示す移動対象情報１３１において、移動順序決定部１１３は、初めに、「情報ＩＤ」が「１」である情報（「仮想マシン名」が「仮想マシンＣ」である情報）を抽出する（Ｓ２２）。そして、移動順序決定部１１３は、「情報ＩＤ」が「１」の「メモリ使用容量」に設定された情報である「２（ＧＢ）」と、「ディスク使用容量」に設定された情報である「２（ＧＢ）」とを取得する。さらに、移動順序決定部１１３は、「情報ＩＤ」が「１」の「移動先物理マシン名」に設定された情報である「Ｆ（物理マシンＦ）」を取得する。
【０１５４】
その後、移動順序決定部１１３は、図３２に示す残余物理リソース情報１３５を参照し、「物理マシン名」に設定された情報が「物理マシンＦ」である情報の「メモリ空き容量」に設定された情報である「２（ＧＢ）」と、「ディスク空き容量」に設定された情報である「３（ＧＢ）」とを取得する。
【０１５５】
ここで、移動順序決定部１１３が取得した情報のうち、仮想マシンＣのメモリ使用容量及びディスク使用容量は、それぞれ物理マシンＦのメモリ空き容量及びディスク空き容量よりも小さい。そのため、移動順序決定部１１３は、Ｓ２３の処理で抽出した情報に対応する仮想マシン３である仮想マシンＣが、移動先の物理マシン２である物理マシンＦに移動可能であると判定する（Ｓ２３のＹＥＳ）。
【０１５６】
したがって、移動順序決定部１１３は、図３４に示すように、Ｓ２２で抽出した情報（「仮想マシン名」が「仮想マシンＣ」である情報）を移動決定情報１３３として情報格納領域１３０に記憶する（Ｓ２４）。また、移動順序決定部１１３は、図３５の下線部分に示すように、図３２に示す残余物理リソース情報１３５の物理マシンＦのメモリ空き容量である「２（ＧＢ）」から、仮想マシンＣのメモリ使用容量である「２（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ２５）。さらに、移動順序決定部１１３は、図３５の下線部分に示すように、図３２に示す残余物理リソース情報１３５の物理マシンＦのディスク空き容量である「３（ＧＢ）」から、仮想マシンＣのディスク使用容量である「２（ＧＢ）」を減算した値である「１（ＧＢ）」に更新する（Ｓ２５）。
【０１５７】
ここで、図３３に示す移動対象情報１３１に含まれる全ての情報は抽出済である（Ｓ２１のＹＥＳ）。また、移動順序決定部１１３は、図３４に示すように、図３３に示す移動対象情報１３１に含まれる全ての情報を、移動決定情報１３３として情報格納領域１３０に記憶しているため、移動未完了情報１３４には、情報が含まれていない状態である（Ｓ３１のＹＥＳ）。そのため、移動順序決定部１１３は、Ｓ４１以降の処理（仮想マシン移動処理）を実行する。
【０１５８】
[３回目の仮想マシン移動処理の具体例]
次に、３回目に実行される仮想マシン移動処理の具体例について説明を行う。
【０１５９】
移動指示部１１５は、初めに、図３４に示す移動決定情報１３３に含まれる全ての情報（「情報ＩＤ」が「１」である情報）の移動を行う（Ｓ４２）。
【０１６０】
ここで、移動未完了情報１３４には、情報が存在していない（Ｓ４４のＹＥＳ）。そのため、移動順序決定部１１３は、移動先の物理マシン２に送信する必要がある仮想マシン３の全てを、それぞれの移動先の物理マシン２に送信したものと判定する。したがって、移動順序決定部１１３は、移動制御処理を終了（正常終了）する。
【０１６１】
このように、情報処理装置１は、仮想マシン３毎に、仮想マシン３の情報と、仮想マシン３の移動元の物理マシン２の情報と、仮想マシン３の移動先の物理マシン２の情報とを対応付けた情報を含む移動対象情報１３１を取得する。また、情報処理装置１は、複数の物理マシン２及び複数の仮想マシン３それぞれの状態を示す第１状態情報１３２ａを取得する。続いて、情報処理装置１は、移動対象情報１３１及び第１状態情報１３２ａに基づき、複数の仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３に、移動先の物理マシン２への移動を指示する。
【０１６２】
そして、情報処理装置１は、移動先の物理マシン２への移動を指示していない仮想マシン３のうち、移動先の物理マシン２以外の物理マシン２への退避可能な仮想マシン３に、移動先の物理マシン２以外の物理マシン２への退避を指示する。その後、情報処理装置１は、仮想マシン３の退避後における、複数の物理マシン２及び複数の仮想マシン３のそれぞれについて、仮想マシン３の移動の可否を判定する第２状態情報１３２ｂを取得する。さらに、情報処理装置１は、移動対象情報１３１及び第２状態情報１３２ｂに基づき、移動先の物理マシン２への移動を指示していない仮想マシン３のうち、移動先の物理マシン２に移動可能な仮想マシン３に、移動先の物理マシン２への移動を指示する。
【０１６３】
すなわち、情報処理装置１は、移動対象情報１３１及び状態情報１３２に基づいて、仮想マシン３の退避を行いながら移動先の物理マシン２への移動を順次行う。これにより、情報処理装置１は、例えば、複数の仮想マシン３を同時に移動させることができない場合であっても、管理者が算出した仮想マシン３の最適配置を実現するように仮想マシン３の再配置を行うことが可能になる。
【０１６４】
[第２の実施の形態における移動制御処理]
次に、第２の実施の形態における移動制御処理について説明を行う。
【０１６５】
第１の実施の形態のＳ４２の処理において、移動指示部１１５は、移動制御処理が正常終了するか異常終了するかの判定（Ｓ４１のＹＥＳ、Ｓ４４のＹＥＳ）が行われる前に、移動先の物理マシン２に対する仮想マシン３の移動を行っている。これによって、移動指示部１１５は、全ての仮想マシン３の移動の所要時間を短縮することが可能になる。
【０１６６】
これに対し、第２の実施の形態における移動指示部１１５は、Ｓ４２の処理を行わず、移動制御処理が正常終了すると判定された後（Ｓ４４の処理においてＹＥＳの判定が行われた後）に、移動先の物理マシン２への仮想マシン３の移動を行う。これにより、移動指示部１１５は、移動制御処理が異常終了した場合において、Ｓ４２の処理で移動先の物理マシン２に対して移動を指示した仮想マシン３に対して、移動元の物理マシン２への移動を指示する処理（Ｓ４３）を行う必要がなくなる。そのため、管理者は、移動制御処理が異常終了した場合における情報処理装置１の処理負担を軽減させることが可能になる。以下、第２の実施の形態における移動制御処理について説明を行う。
【０１６７】
図３６は、第２の実施の形態における移動制御処理の詳細を説明するフローチャートである。なお、図３６は、第１の実施の形態における図１１に対応する図である。そのため、以下、図１１で説明した処理と異なる内容の処理についてのみ説明を行う。
【０１６８】
図３６に示すように、移動指示部１１５は、移動決定情報１３３に含まれる情報が存在し、移動未完了情報１３４に含まれる情報が存在しない場合に、移動決定情報１３３に情報が含まれる仮想マシン３の移動を指示する（Ｓ５１のＮＯ、Ｓ５４のＹＥＳ、Ｓ５２）。また、移動指示部１１５は、移動決定情報１３３に含まれる情報が存在しない場合であっても、Ｓ４３の処理に対応する処理を行わない（Ｓ５１のＹＥＳ）。
【０１６９】
これにより、管理者は、移動制御処理が異常終了した場合における情報処理装置１の処理負担を軽減させることが可能になる。
【０１７０】
[第３の実施の形態における移動制御処理]
次に、第３の実施の形態における移動制御処理について説明を行う。
【０１７１】
第１の実施の形態のＳ３３の処理において、移動順序決定部１１３は、Ｓ３２の処理で抽出した情報に対応する仮想マシン３が移動先以外の物理マシン２に退避可能であるか否かを判定する。そして、退避可能である場合に、移動順序決定部１１３は、Ｓ３２の処理で抽出した情報に対応する仮想マシン３の退避を指示する（Ｓ３４、Ｓ４２）。すなわち、第１の実施の形態における移動順序決定部１１３は、移動制御処理を終了させるために必要な退避であるか否かに関わらず、退避可能な全ての仮想マシン３の退避を行う。
【０１７２】
これに対し、第３の実施の形態における移動順序決定部１１３は、移動制御処理を正常終了させるために必要な退避のみを行う。これにより、移動順序決定部１１３は、移動制御処理が正常終了するまでに行われる仮想マシン３の退避の回数を抑えることが可能になる。そのため、移動順序決定部１１３は、移動制御処理を効率的に行うことが可能になる。以下、第３の実施の形態における移動制御処理について説明を行う。
【０１７３】
図３７から図３９は、第３の実施の形態における移動制御処理の詳細を説明するフローチャートである。また、図４０から図５５は、第３の実施の形態における移動制御処理の詳細を説明する図である。図４０から図５５を参照しながら、図３の実施の形態における移動制御処理の説明を行う。
【０１７４】
[依存仮想マシン群特定処理]
初めに、第３の実施の形態における移動制御処理のうち、依存仮想マシン群情報１３７を作成する処理（以下、依存仮想マシン群特定処理とも呼ぶ）について説明を行う。
【０１７５】
依存仮想マシン群特定部１１６は、依存仮想マシン群特定タイミングまで待機する（Ｓ６１のＮＯ）。依存仮想マシン群特定タイミングは、退避仮想マシン決定処理が行われる前のタイミングであってよい。すなわち、依存仮想マシン群特定処理は、退避仮想マシン決定処理が行われる毎に、退避仮想マシン決定処理が行われる前のタイミングにおいて実行されるものであってよい。その後、依存仮想マシン群タイミングになった場合（Ｓ６１のＹＥＳ）、依存仮想マシン群特定部１１６は、依存仮想マシン情報１３６を作成する（Ｓ６２）。以下、依存仮想マシン情報１３６の具体例について説明を行う。
【０１７６】
[依存仮想マシン情報の具体例]
初めに、依存仮想マシン情報１３６を作成する際に用いられる依存グラフについて説明を行う。依存グラフは、移動先の物理マシン２に移動する必要がある仮想マシン３と、各仮想マシン３の依存仮想マシン３１との関係（以下、この関係を依存関係とも呼ぶ）を示すグラフである。具体的に、依存グラフを作成する場合、依存仮想マシン群特定部１１６は、情報処理システム１０を構成する物理マシン２毎の依存グラフである部分依存グラフを作成する。以下、部分依存グラフの具体例について説明を行う。なお、以下、仮想マシン３Ａ、３Ｂ、３Ｃ、３Ｄ、３Ｅ及び３Ｆを、それぞれＶＭ−Ａ、ＶＭ−Ｂ、ＶＭ−Ｃ、ＶＭ−Ｄ、ＶＭ−Ｅ及びＶＭ−Ｆとも表記する。また、以下、物理マシン２Ａ、２Ｂ、２Ｃ、２Ｄ、２Ｅ及び２Ｆの部分依存グラフを、それぞれ部分依存グラフＡ、Ｂ、Ｃ、Ｄ、Ｅ及びＦとも表記する。
【０１７７】
図４０は、部分依存グラフを具体例である。図４０に示す部分依存グラフは、図２に示す各仮想マシン３を、図３に示すように移動する際における依存関係を示す部分依存グラフである。
【０１７８】
具体的に、図２に示す例において、物理マシン２Ａには、仮想マシン３Ａ及び仮想マシン３Ｂが配備されている。そして、仮想マシン３Ａ及び仮想マシン３Ｂの移動先の物理マシン２である物理マシン２Ｅのメモリの空き容量は「１（ＧＢ）」であり、ディスクの空き容量は「２（ＧＢ）」である。また、仮想マシン３Ａのメモリの使用容量は「１（ＧＢ）」であり、ディスクの使用容量は「２（ＧＢ）」であり、仮想マシン３Ｂのメモリの使用容量は「１（ＧＢ）」であり、ディスクの使用容量は「１（ＧＢ）」である。そのため、図２に示す例において、仮想マシン３Ａ及び仮想マシン３Ｂのうちの１台の仮想マシン３のみが物理マシン２Ｅに移動可能である。そして、仮想マシン３Ａ及び仮想マシン３Ｂの両方を物理マシン２Ｅに移動するためには、物理マシン２Ｅに配備されている仮想マシン３Ｅが、移動先の物理マシン２である物理マシン２Ｄに先に移動する必要がある。すなわち、この場合、仮想マシン３Ａ及び仮想マシン３Ｂのうちの１台は、仮想マシン３Ｅに対して依存関係を有していることになる。
【０１７９】
そのため、依存仮想マシン群特定部１１６は、図４０の部分依存グラフＥに示すように、例えば、各物理マシン２に配備されている仮想マシン３を示す上段部分に、ＶＭ−Ｅを設定する。また、依存仮想マシン群特定部１１６は、各仮想マシン３の移動が行われた後に各物理マシン２に配備される仮想マシン３を示す下段部分に、ＶＭ−Ａ及びＶＭ−Ｂを設定する。そして、依存仮想マシン群特定部１１６は、例えば、ＶＭ−Ａ及びＶＭ−Ｂのうちの１台の仮想マシン３であるＶＭ−Ｂが、ＶＭ−Ｅに対して依存関係を有することを示す矢印（ＶＭ−ＥからＶＭ−Ｂに延びる矢印）を設定する。なお、ＶＭ−Ｅに対する依存関係は、ＶＭ−Ａ及びＶＭ−Ｂのうちの１台の仮想マシン３のみが有する。そのため、図４０に示す例において、依存仮想マシン群特定部１１６は、ＶＭ−ＥからＶＭ−Ａに延びる矢印を設定しない。
【０１８０】
また、図３に示す例において、物理マシン２Ｅには、仮想マシン３Ｅが配備されている。そして、仮想マシン３Ｅの移動先の物理マシン２である物理マシン２Ｄのメモリの空き容量は「３（ＧＢ）」であり、ディスクの空き容量は「３（ＧＢ）」である。また、仮想マシン３Ｅのメモリの使用容量は「１（ＧＢ）」であり、ディスクの使用容量は「１（ＧＢ）」である。したがって、図２に示す例において、仮想マシン３Ｅは、他の仮想マシン３の移動を待つことなく物理マシン２に対して移動可能な状態である。すなわち、仮想マシン３Ｅは、この場合、他の仮想マシン３に対して依存関係を有していない状態である。
【０１８１】
そのため、依存仮想マシン群特定部１１６は、図４０の部分依存グラフＤに示すように、例えば、上段にＶＭ−Ｄを設定し、下段にＶＭ−Ｅを設定する。また、ＶＭ−Ｅは、ＶＭ−Ｄに対して依存関係を有していない。そのため、依存仮想マシン群特定部１１６は、ＶＭ−ＤからＶＭ−Ｅに延びる矢印を設定しない。図４０に示す他の部分依存フラグについては説明を省略する。以下、図４０で説明した部分依存グラフを用いて依存グラフを作成する際の具体例について説明を行う。
【０１８２】
図４１は、依存グラフの具体例である。依存仮想マシン群特定部１１６は、図４１に示すように、図４０で説明した部分依存グラフのいずれかに含まれる矢印をまとめることにより、依存グラフを作成する。すなわち、依存仮想マシン群特定部１１６は、図４１に示すように、各仮想マシン３をそれぞれ１つのみ設定し、図４０で説明した部分依存グラフのいずれかに含まれる矢印それぞれを設定することにより、依存グラフを作成する。
【０１８３】
具体的に、図４１に示す依存グラフにおいて、ＶＭ−Ｄは、ＶＭ−Ａに対して依存関係を有しており、ＶＭ−Ｂは、ＶＭ−Ｅに対して依存関係を有している。また、図４１に示す依存グラフにおいて、ＶＭ−Ｃは、ＶＭ−Ｆに対して依存関係を有しており、ＶＭ−Ｆは、ＶＦ−Ｃに対して依存関係を有している。すなわち、図４１に示す依存グラフにおいて、ＶＭ−Ｃ及びＶＭ−Ｆは、一方の仮想マシン３が他の仮想マシン３の依存仮想マシン３１である関係にある（以下、これを依存関係の循環とも呼ぶ）。そのため、ＶＭ−Ｃ及びＶＭ−Ｆは、少なくともいずれか１つの仮想マシン３が、現在配備されている物理マシン２（移動元の物理マシン２）及び移動先の物理マシン２以外の物理マシン２に退避しない限り、それぞれの移動先の物理マシン２に移動することができない状態である。したがって、ＶＭ−Ｃ及びＶＭ−Ｆのうちの少なくとも１つの仮想マシン３は、移動制御処理を正常終了させるために、現在配備されている物理マシン２及び移動先の物理マシン２以外の物理マシン２に退避する必要がある。
【０１８４】
次に、依存仮想マシン情報１３６の具体例について説明を行う。図４２は、依存仮想マシン情報１３６の具体例を説明する図である。図４２に示す依存仮想マシン情報１３６は、依存仮想マシン情報１３６に含まれる各情報を識別する「情報ＩＤ」と、各仮想マシン３を識別する「仮想マシン名」とを項目として有する。また、図４２に示す依存仮想マシン情報１３６は、各仮想マシン３が依存関係にある依存仮想マシン３１を識別する「依存仮想マシン名」を項目として有する。
【０１８５】
具体的に、図４２に示す依存仮想マシン情報１３６の内容は、図４１で説明した依存グラフの内容に対応している。具体的に、図４２に示す依存仮想マシン情報１３６において、「仮想マシン名」が「仮想マシンＢ」である情報（「情報ＩＤ」が「２」である情報）の「依存仮想マシン名」は、「仮想マシンＥ」である。また、図４２に示す依存仮想マシン情報１３６において、「仮想マシン名」が「仮想マシンＣ」である情報（「情報ＩＤ」が「３」である情報）の「依存仮想マシン名」は、「仮想マシンＦ」である。一方、図４２に示す依存仮想マシン情報１３６において、「仮想マシン名」が「仮想マシンＡ」である情報（「情報ＩＤ」が「１」である情報）の「依存仮想マシン名」には、「なし」が設定されている。図４２の他の情報については説明を省略する。
【０１８６】
図３７に戻り、依存仮想マシン群特定部１１６は、Ｓ６２の処理で作成した依存仮想マシン情報１３６を参照し、依存仮想マシン群３２の情報である依存仮想マシン群情報１３７を作成する（Ｓ６３）。以下、依存仮想マシン群情報１３７の具体例について説明を行う。
【０１８７】
[依存仮想マシン群情報の具体例]
図４３は、依存仮想マシン群情報１３７の具体例を説明する図である。図４３に示す依存仮想マシン群情報１３７は、依存仮想マシン群情報１３７に含まれる各情報を識別する「情報ＩＤ」と、各依存仮想マシン群３２に含まれる依存仮想マシン３１を識別する「依存仮想マシン名」とを項目として有する。
【０１８８】
図４１で説明した依存グラフまたは図４２で説明した依存仮想マシン情報１３６において、依存関係が循環している依存仮想マシン３１は、仮想マシン３Ｃ及び仮想マシン３Ｆである。そのため、依存仮想マシン群特定部１１６は、仮想マシン３Ｃ及び仮想マシン３Ｆが依存仮想マシン群３２を形成する依存仮想マシン３１として特定する。したがって、依存仮想マシン群特定部１１６は、図４３の依存仮想マシン群情報１３７に示すように、「情報ＩＤ」が「１」である情報の「依存仮想マシン名」に、「仮想マシンＣ、仮想マシンＦ」を設定する。
【０１８９】
これにより、依存仮想マシン群特定部１１６は、移動制御処理を終了するために最低限退避しなければならない依存仮想マシン３１を含む依存仮想マシン群３２を特定して管理することが可能になる。
【０１９０】
[第３の実施の形態における移動制御処理]
次に、第３の実施の形態における移動制御処理の詳細について説明を行う。図３８は、第３の実施の形態における移動制御処理の詳細を説明するフローチャートである。具体的に、図３８は、第１の実施の形態における退避仮想マシン決定処理（図１０）に対応する図である。なお、図３８に示すフローチャートにおいて、Ｓ７１、Ｓ７２、Ｓ７４からＳ７６の処理は、図１０で説明したＳ３１、Ｓ３２、Ｓ３４からＳ３６の処理と同じ内容の処理である。そのため、Ｓ７１、Ｓ７２、Ｓ７４からＳ７６の処理についての詳細な説明については省略する。
【０１９１】
図３８に示すように、第３の実施の形態における移動順序決定部１１３は、Ｓ７２の処理で抽出した情報に対応する仮想マシン３が退避仮想な仮想マシン３であって、Ｓ６３の処理で特定した依存仮想マシン群３２に含まれる仮想マシン３であるか否かを判定する（Ｓ７３）。その結果、退避仮想な仮想マシン３であって依存仮想マシン群３２に含まれる仮想マシン３である場合（Ｓ７３のＹＥＳ）、移動順序決定部１１３は、第１の実施の形態の場合と同様に、Ｓ７４以降の処理を行う。また、退避仮想な仮想マシン３であるが依存仮想マシン群３２に含まれる仮想マシン３でない場合（Ｓ７３のＮＯ）、Ｓ３１以降の処理を繰り返し実行する。
【０１９２】
これにより、移動順序決定部１１３は、移動制御処理が終了するまでに行われる仮想マシン３の退避の回数を抑えることが可能になる。そのため、移動順序決定部１１３は、この場合、移動制御処理を効率的に行うことが可能になる。
【０１９３】
なお、以下、依存仮想マシン群特定処理は、図４３で説明した依存仮想マシン群情報１３７は、１回目の退避仮想マシン決定処理が行われる前に作成されたものとして説明を行う。
【０１９４】
[１回目の退避仮想マシン決定処理及び仮想マシン移動処理の具体例]
次に、１回目に実行される退避仮想マシン決定処理及び仮想マシン移動処理の具体例について説明を行う。図４４から図４７は、１回目に実行される退避仮想マシン決定処理及び仮想マシン移動処理の具体例を説明する図である。なお、以下、１回目に実行される移動仮想マシン決定処理が実行された後に実行される退避仮想マシン決定処理及び仮想マシン移動処理の具体例について説明を行う。
【０１９５】
図２０に示す移動未完了情報１３４において、移動順序決定部１１３は、初めに、「情報ＩＤ」が「１」である情報（「仮想マシン名」が「仮想マシンＤ」である情報）を抽出する（Ｓ７２）。
【０１９６】
そして、移動順序決定部１１３は、「情報ＩＤ」が「１」の「メモリ使用容量」に設定された情報である「１（ＧＢ）」と、「ディスク使用容量」に設定された情報である「１（ＧＢ）」とを取得する。さらに、移動順序決定部１１３は、図１９に示す残余物理リソース情報１３５を参照し、情報の取得を行った仮想マシンＤを退避させることができる物理マシン２を特定する。具体的に、図１９に示す残余物理リソース情報１３５において、例えば、「情報ＩＤ」が「３」である情報（「物理マシン名」が「物理マシンＣ」である情報）の「メモリ空き容量」及び「ディスク空き容量」は、それぞれ「１（ＧＢ）」及び「１（ＧＢ）」である。そのため、仮想マシンＤのメモリ使用容量及びディスク使用容量は、それぞれ物理マシンＣのメモリ空き容量及びディスク空き容量よりも小さい。
【０１９７】
ここで、第３の実施の形態における移動順序決定部１１３は、図４３で説明した依存仮想マシン群情報１３７を参照し、「依存仮想マシン名」に「仮想マシンＤ」が設定されているか否かを判定する（Ｓ７３）。具体的に、移動順序決定部１１３は、仮想マシンＤが依存仮想マシン群３２に含まれる仮想マシン３であるか否かを判定する。
【０１９８】
そして、図４３に示す依存仮想マシン群情報１３７の「依存仮想マシン名」には、「仮想マシンＤ」が設定されていない。そのため、移動順序決定部１１３は、Ｓ７２の処理で抽出した情報に対応する仮想マシン３である仮想マシンＤの退避を行わないことを決定する（Ｓ７３のＮＯ）。すなわち、この場合、移動順序決定部１１３は、移動制御処理を終了させるために、仮想マシンＤの退避が必要ないと判定する。これにより、移動順序決定部１１３は、移動制御処理を終了させるために要する仮想マシン３の退避の回数を抑えることが可能になる。
【０１９９】
次に、移動順序決定部１１３は、図２０に示す移動未完了情報１３４における「情報ＩＤ」が「２」である情報（「仮想マシン名」が「仮想マシンＣ」である情報）を抽出する（Ｓ７２）。
【０２００】
そして、移動順序決定部１１３は、「情報ＩＤ」が「２」の「メモリ使用容量」に設定された情報である「２（ＧＢ）」と、「ディスク使用容量」に設定された情報である「２（ＧＢ）」とを取得する。さらに、移動順序決定部１１３は、図１９に示す残余物理リソース情報１３５を参照し、情報の取得を行った仮想マシンＡを退避させることができる物理マシン２を特定する。具体的に、図１９に示す残余物理リソース情報１３５において、「情報ＩＤ」が「４」である情報（「物理マシン名」が「物理マシンＤ」である情報）の「メモリ空き容量」及び「ディスク空き容量」は、それぞれ「２（ＧＢ）」及び「２（ＧＢ）」である。そのため、仮想マシンＡのメモリ使用容量及びディスク使用容量は、それぞれ物理マシンＤのメモリ空き容量及びディスク空き容量よりも小さい。
【０２０１】
ここで、移動順序決定部１１３は、図４３で説明した依存仮想マシン群情報１３７を参照し、「依存仮想マシン名」に「仮想マシンＣ」が設定されているか否かを判定する。具体的に、移動順序決定部１１３は、仮想マシンＤが依存仮想マシン群３２に含まれる仮想マシン３であるか否かを判定する。
【０２０２】
そして、図４３に示す依存仮想マシン群情報１３７の「依存仮想マシン名」には、「仮想マシンＣ」が設定されている。そのため、移動順序決定部１１３は、Ｓ７２の処理で抽出した情報に対応する仮想マシン３である仮想マシンＣの退避を行うことを決定する（Ｓ７３のＹＥＳ）。
【０２０３】
その後、移動順序決定部１１３は、図４４の下線部分に示すように、Ｓ７２で抽出した情報（「仮想マシン名」が「仮想マシンＣ」である情報）を移動決定情報１３３として情報格納領域１３０に記憶する（Ｓ３４）。具体的に、移動順序決定部１１３は、図４４の下線部分に示すように、図２０に示す移動未完了情報１３４の「情報ＩＤ」が「２」である情報を、移動決定情報１３３の「情報ＩＤ」が「３」である情報として設定する。
【０２０４】
ここで、移動順序決定部１１３は、第１の実施の形態の場合と同様に、図４４の下線部分に示すように、移動決定情報１３３の「情報ＩＤ」が「３」である情報の「退避先物理マシン名」に、仮想マシンＣの退避を行った物理マシンＤを示す「Ｄ」を設定する。これにより、移動順序決定部１１３は、退避した後の仮想マシンＣを移動先の物理マシン２に移動させる際に、移動元となる物理マシン２の情報を適切に管理することが可能になる。また、移動順序決定部１１３は、第１の実施の形態の場合と同様に、図４４の下線部分に示すように、「退避フラグ」に「１」を設定する。これにより、移動順序決定部１１３は、Ｓ７３の処理を再度実行する際に、移動先以外の物理マシン２に既に退避している仮想マシン３（退避することが既に決定している仮想マシン３）を特定することが可能になる。
【０２０５】
また、移動順序決定部１１３は、第１の実施の形態の場合と同様に、図４５の下線部分に示すように、図１９に示す残余物理リソース情報１３５の物理マシンＤのメモリ空き容量である「２（ＧＢ）」を、仮想マシンＤのメモリ使用容量である「２（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ７５）。そして、移動順序決定部１１３は、図４５の下線部分に示すように、図１９に示す残余物理リソース情報１３５の物理マシンＤのディスク空き容量である「２（ＧＢ）」を、仮想マシンＤのディスク使用容量である「２（ＧＢ）」を減算した値である「０（ＧＢ）」に更新する（Ｓ７５）。
【０２０６】
さらに、移動順序決定部１１３は、第１の実施の形態の場合と同様に、図４６の下線部分に示すように、仮想マシンＣの「移動元物理マシン名」に設定される情報を、仮想マシンＣが退避を行う仮想マシン３である仮想マシンＤに更新する。これにより、移動順序決定部１１３は、仮想マシンＣの退避に行うことによる仮想マシンＣの状態を移動未完了情報１３４に反映させることが可能になる。
【０２０７】
その後、移動順序決定部１１３は、図２０に示す移動未完了情報１３４に情報に含まれる全ての情報が抽出済になるまで、Ｓ７１からＳ７６の処理の実行を繰り返す。その結果、移動順序決定部１１３は、Ｓ７３の処理において、仮想マシンＡ（「情報ＩＤ」が「３」である情報）及び仮想マシンＦ（「情報ＩＤ」が「４」である情報）の退避を行わない旨の判定を行う（Ｓ７３のＮＯ）。
【０２０８】
なお、図４３に示す依存仮想マシン群情報１３７において、「情報ＩＤ」が「１」である情報の「依存仮想マシン名」には、「仮想マシンＣ、仮想マシンＦ」が設定されている。一方、図４４に示す移動決定情報１３３において、仮想マシンＣの退避は決定している。ここで、仮想マシンＣ及び仮想マシンＦにおける依存関係の循環は、仮想マシンＣの退避を行うことにより解消している。そのため、仮想マシンＣの退避が決定した後においては、仮想マシンＦの退避を行う必要はなくなる。したがって、移動順序決定部１１３は、例えば、仮想マシンＣの退避が決定したことに基づき、仮想マシンＦの退避を行わない旨の判定を行うものであってもよい（Ｓ７３のＮＯ）。
【０２０９】
また、移動順序決定部１１３は、Ｓ７３の処理において、例えば、図４２で説明した依存仮想マシン情報１３６を参照し、仮想マシンＣ及び仮想マシンＦのうち、依存仮想マシン３１の数が多い仮想マシン３を優先的に退避させるものであってもよい。これにより、移動順序決定部１１３は、移動制御処理を効率的に行うことが可能になる。
【０２１０】
その後、情報管理部１１４は、図４６で説明した移動未完了情報１３４に含まれる情報に基づき、図４７に示すように、移動対象情報１３１を更新する（Ｓ４６）。
【０２１１】
[２回目の依存仮想マシン群決定処理の具体例]
次に、２回目に実行される依存仮想マシン群決定処理（２回目の退避仮想マシン決定処理の前に実行される依存仮想マシン群決定処理）の具体例について説明を行う。図４８から図５０は、２回目に実行される依存仮想マシン群決定処理の具体例を説明する図である。
【０２１２】
図４８は、２回目に実行される依存仮想マシン群決定処理によって作成される依存グラフの具体例である。具体的に、図４８に示す依存グラフにおいて、ＶＭ−Ｃは、ＶＭ−Ｆに対して依存関係を有している。また、図４８に示す依存グラフにおいて、依存関係の循環は発生していない。すなわち、図４８に示す各仮想マシン３は、移動制御処理を終了させるために、現在配備されている物理マシン２（移動元の物理マシン２）及び移動先の物理マシン２以外の物理マシン２に退避する必要がない。なお、ＶＭ−Ａ及びＶＭ−Ｅは、既に移動先の仮想マシン３に移動している仮想マシン３であるため、図４８に示す依存グラフには設定されない。
【０２１３】
次に、依存仮想マシン情報１３６の具体例について説明を行う。図４９は、２回目に実行される依存仮想マシン群決定処理によって作成される依存仮想マシン情報１３６の具体例を説明する図である。なお、ＶＭ−Ａ及びＶＭ−Ｅは、既に移動先の仮想マシン３に移動している仮想マシン３であるため、図４９に示す依存仮想マシン情報１３６には設定されない。
【０２１４】
具体的に、図４９に示す依存仮想マシン情報１３６において、「仮想マシン名」が「仮想マシンＣ」である情報（「情報ＩＤ」が「３」である情報）の「依存仮想マシン名」は、「仮想マシンＦ」である。そして、その他の「依存仮想マシン名」には、依存仮想マシン３１が存在しないことを示す「なし」が設定されている。なお、図４８に示す依存グラフにおいて、依存関係が存在しない。そのため、依存仮想マシン群特定部１１６は、この場合、依存仮想マシン群情報１３７を作成しない。
【０２１５】
そして、移動指示部１１５は、第１の実施の形態と同様に、仮想マシンＤ、仮想マシンＡ及び仮想マシンＦに対し、それぞれ移動先の物理マシン２に対する移動を指示する（Ｓ４２）。すなわち、移動指示部１１５は、この場合、図４９に示す依存仮想マシン情報１３６において、依存仮想マシン３１が存在しない仮想マシン３を移動先の物理マシン２に移動する。
【０２１６】
その後、情報管理部１１４は、図５０に示すように、移動対象情報１３１の更新を行う（Ｓ４６）。
【０２１７】
[３回目の依存仮想マシン群決定処理の具体例]
次に、３回目に実行される依存仮想マシン群決定処理（３回目の退避仮想マシン決定処理の前に実行される依存仮想マシン群決定処理）の具体例について説明を行う。図５１及び図５２は、３回目に実行される依存仮想マシン群決定処理の具体例を説明する図である。
【０２１８】
図５１は、３回目に実行される依存仮想マシン群決定処理によって作成される依存グラフの具体例である。具体的に、図５１に示す依存グラフには、ＶＭ−Ｃのみが存在するため、依存関係は存在しない。
【０２１９】
次に、依存仮想マシン情報１３６の具体例について説明を行う。図５２は、３回目に実施される依存仮想マシン群決定処理によって作成される依存仮想マシン情報１３６の具体例を説明する図である。
【０２２０】
具体的に、図５２に示す依存仮想マシン情報１３６において、「仮想マシン名」が「仮想マシンＣ」である情報（「情報ＩＤ」が「３」である情報）の「依存仮想マシン名」には、「なし」が設定されている。そして、図５１に示す依存グラフにおいて、依存関係が存在しない。そのため、依存仮想マシン群特定部１１６は、依存仮想マシン群情報１３７を作成しない。
【０２２１】
そして、移動指示部１１５は、第１の実施の形態と同様に、仮想マシンＣに対し、移動先の物理マシン２への移動を指示する（Ｓ４２）。すなわち、移動指示部１１５は、この場合、図５２に示す依存仮想マシン情報１３６において、依存仮想マシン３１が存在しない仮想マシン３を移動先の物理マシン２に移動する。これにより、移動指示部１１５は、移動制御処理を正常終了することが可能になる（Ｓ４４のＹＥＳ）。
【０２２２】
[Ｓ６２の処理の詳細]
次に、Ｓ６２の処理の詳細について説明する。依存仮想マシン群特定部１１６が依存仮想マシン３１の特定を行う場合に、依存仮想マシン３１として特定可能な仮想マシン３の組み合わせが複数存在する場合がある。
【０２２３】
この場合、依存仮想マシン群特定部１１６は、移動制御処理が正常終了するまでに、仮想マシン３の退避仮想マシン決定処理と、移動仮想マシン決定処理とを実行する回数が最も少ない組み合わせを、依存仮想マシン３１として特定するものであってよい。これにより、依存仮想マシン群特定部１１６は、移動制御処理を効率的に行うことが可能になる。以下、Ｓ６２の処理の詳細について説明する。
【０２２４】
初めに、依存仮想マシン群特定部１１６は、図３９に示すように、依存仮想マシン３１として特定可能な仮想マシン３の組み合わせが複数存在するか否かを判定する（Ｓ８１）。そして、組み合わせが複数存在する場合（Ｓ８１のＹＥＳ）、依存仮想マシン群特定部１１６は、移動制御処理が正常終了するまでに、退避仮想マシン決定処理及び移動仮想マシン決定を行う回数が最も少ない組み合わせが複数存在するか否かを判定する（Ｓ８２）。
【０２２５】
その結果、各処理を行う回数が最も少ない組み合わせが複数存在する場合（Ｓ８２のＹＥＳ）、依存仮想マシン群特定部１１６は、仮想マシン３の退避を指示する回数が最も少ない組み合わせに対応する仮想マシン３を依存仮想マシン３１として特定する（Ｓ８３）。具体的に、依存仮想マシン群特定部１１６は、例えば、移動制御処理が正常終了するまでに、仮想マシン３の退避を指示する回数が最も少ない組み合わせに対応する仮想マシン３を依存仮想マシン３１として特定する。
【０２２６】
一方、各処理を行う回数が最も少ない組み合わせが複数存在しない場合（Ｓ８２のＮＯ）、依存仮想マシン群特定部１１６は、退避仮想マシン決定処理及び移動仮想マシン決定処理を行う回数が最も少ない組み合わせに対応する仮想マシン３を、依存仮想マシン３１として特定する（Ｓ８４）。具体的に、依存仮想マシン群特定部１１６は、例えば、移動制御処理が正常終了するまでに、退避仮想マシン決定処理及び移動仮想マシン決定処理を行う回数が最も少ない組み合わせに対応する仮想マシン３を、依存仮想マシン３１として特定する。
【０２２７】
そして、仮想マシン群特定部１１６は、Ｓ８３またはＳ８４の処理によって特定された依存仮想マシン３１の情報を含む依存仮想マシン情報１３６を作成する（Ｓ８５）。
【０２２８】
なお、退避を指示する回数が最も少ない組み合わせが複数存在する場合、仮想マシン群特定部１１６は、例えば、複数存在した組み合わせから任意の組み合わせを選択し、選択した組み合わせに対応する仮想マシン３を依存仮想マシン３１として特定するものであってよい。
【０２２９】
[依存仮想マシンとして特定可能な仮想マシンの組み合わせが複数存在する場合の具体例]
次に、依存仮想マシン３１として特定可能な仮想マシン３の組み合わせが複数存在する場合の具体例について説明を行う。図５３から図５５は、依存仮想マシン３１として特定可能な仮想マシン３の組み合わせが複数存在する場合の具体例を説明する図である。
【０２３０】
図４０に示す部分依存グラフＥにおいて、ＶＭ−Ｂは、ＶＭ−Ｅに対して依存関係を有している。ここで、図２に示す仮想マシン３の状態は、仮想マシン３Ａ及び仮想マシン３Ｂのうちの１台のみが仮想マシン３Ｅに対して依存関係を有している状態である。そのため、仮想マシン群特定部１１６は、ＶＭ−ＡがＶＭ−Ｅに対する依存関係を有するように部分依存グラフＥを作成することも可能である。
【０２３１】
また、図４０に示す部分依存グラフＡにおいて、ＶＭ−Ｄは、ＶＭ−Ａに対して依存関係を有している。ここで、図３に示す仮想マシン３の状態は、仮想マシン３Ｄが仮想マシン３Ａ及び仮想マシン３Ｂのうちの１台の仮想マシン３Ｅに対して依存関係を有している状態である。そのため、仮想マシン群特定部１１６は、ＶＭ−ＤがＶＭ−Ｂに対する依存関係を有するように部分依存グラフＡを作成することも可能である。
【０２３２】
すなわち、仮想マシン群特定部１１６は、部分依存グラフＥ及び部分依存グラフＡの作成方法によって、図４１に示す依存グラフの他に、図５３から図５５に示す依存グラフ（４種類の依存グラフ）を作成することが可能になる。具体的に、図５３に示す依存グラフは、ＶＭ−ＡがＶＭ−Ｅに対して依存関係を有しており、ＶＭ−ＤがＶＭ−Ｂに対して依存関係を有している場合の依存グラフである。また、図５４に示す依存グラフは、ＶＭ−ＡがＶＭ−Ｅに対して依存関係を有しており、ＶＭ−ＤがＶＭ−Ａに対して依存関係を有している場合の依存グラフである。さらに、図５５に示す依存グラフは、ＶＭ−ＢがＶＭ−Ｅに対して依存関係を有しており、ＶＭ−ＤがＶＭ−Ｂに対して依存関係を有している場合の依存グラフである。
【０２３３】
そのため、依存仮想マシン群特定部１１６は、例えば、Ｓ８１からＳ８４の処理を行うことにより、図４１、図５３から図５５に示す依存グラフのうち、１種類の依存グラフを選択する。そして、依存仮想マシン群特定部１１６は、例えば、選択した依存グラフに対応する依存仮想マシン情報１３６及び依存仮想マシン群情報１３７を作成する（Ｓ８５、Ｓ６３）。これにより、依存仮想マシン群特定部１１６は、依存仮想マシン３１として特定可能な仮想マシン３の組み合わせが複数ある場合であっても、移動制御処理を実行することが可能になる。
【０２３４】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０２３５】
（付記１） 
コンピュータに、
情報処理システムを構成する複数の物理マシン間において移動する複数の仮想マシン毎に、前記仮想マシンの情報と、前記仮想マシンの移動元の物理マシンの情報と、前記仮想マシンの移動先の物理マシンの情報とを対応付けた情報を含む移動情報と、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第１状態情報とを取得し、
前記移動情報及び前記第１状態情報に基づき、前記複数の仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示し、
前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示し、
前記仮想マシンの退避後における、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第２状態情報を取得し、
前記移動情報及び前記第２状態情報に基づき、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する、
ことを実行させることを特徴とする移動制御プログラム。
【０２３６】
（付記２）
付記１において、
前記第１状態情報及び前記第２状態情報は、前記複数の物理マシンそれぞれの物理リソースの空き容量の情報と、前記複数の仮想マシンそれぞれが動作するために使用する物理リソースの使用量の情報である、
ことを特徴とする移動制御プログラム。
【０２３７】
（付記３）
付記２において、
前記第１状態情報に基づき仮想マシンの移動を指示する処理では、前記複数の仮想マシンのうち、前記物理リソースの使用量が、前記移動先の物理マシンにおける前記物理リソースの空き容量よりも小さい仮想マシンを、前記移動先の物理マシンに移動可能な仮想マシンとする、
ことを特徴とする移動制御プログラム。
【０２３８】
（付記４）
付記２において、
前記第１状態情報に基づき仮想マシンの移動を指示する処理では、前記複数の仮想マシンのうち、前記物理リソースの使用量が大きい仮想マシンから順に移動を指示する、
ことを特徴とする移動制御プログラム。
【０２３９】
（付記５）
付記２において、
前記第１状態情報に基づき仮想マシンの移動を指示する処理では、前記複数の仮想マシンのうち、前記物理リソースの使用量が小さい仮想マシンから順に移動を指示する、
ことを特徴とする移動制御プログラム。
【０２４０】
（付記６）
付記１において、
前記仮想マシンに退避を指示する処理では、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在しない場合、前記仮想マシンの移動の終了する、
ことを特徴とする移動制御プログラム。
【０２４１】
（付記７）
付記１において、
前記仮想マシンの退避を指示する処理では、前記移動先の物理マシンへの移動を指示していない仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンが存在しない場合、前記移動先の物理マシンへの移動を指示した仮想マシンに対して、前記移動元の物理マシンへの再移動を指示し、前記仮想マシンの移動の終了する、
ことを特徴とする移動制御プログラム。
【０２４２】
（付記８）
付記１において、さらに、
前記第２状態情報に基づき仮想マシンの移動を指示する処理の後、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在する場合、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在しなくなるまで、または、前記移動先の物理マシンへの移動を指示していない仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンが存在しなくなるまで、前記仮想マシンの退避を指示する処理、前記第２状態情報を取得する処理及び前記第２状態情報に基づき仮想マシンの移動を指示する処理を繰り返し行う、
ことをコンピュータに実行させることを特徴とする移動制御プログラム。
【０２４３】
（付記９）
付記１において、さらに、
前記退避を指示する処理の前に、前記複数の仮想マシンを前記移動先の物理マシンにそれぞれ移動するために、先に移動する必要がある仮想マシンである依存仮想マシンを特定し、
特定した前記依存仮想マシンのうち、前記依存仮想マシンと、前記依存仮想マシンを先に移動することにより前記移動先の物理マシンに移動可能になる仮想マシンとの関係が循環する２以上の仮想マシンからなる１以上の依存仮想マシン群を特定し、
前記退避を指示する処理では、前記退避可能な仮想マシンであって、前記１以上の依存仮想マシン群にそれぞれ含まれる１の仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示する、
ことを特徴とする移動制御プログラム。
【０２４４】
（付記１０）
付記９において、
前記関係が循環する２以上の仮想マシンは、特定した前記依存仮想マシンのうち、前記２以上の仮想マシンに含まれる各仮想マシンが前記２以上の仮想マシンに含まれる他の仮想マシンの前記依存仮想マシンであり、前記２以上の仮想マシンに含まれる各仮想マシンの前記依存仮想マシンが前記２以上の仮想マシンに含まれる他の仮想マシンである関係を有する２以上の仮想マシンである、
ことを特徴とする移動制御プログラム。
【０２４５】
（付記１１）
付記９において、
前記依存仮想マシンを特定する処理では、前記依存仮想マシンとして特定可能な仮想マシンの組み合わせが複数存在する場合、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在しなくなるまでに、前記仮想マシンの退避を指示する処理及び前記第２状態情報に基づき仮想マシンの移動を指示する処理を行う回数が最も少ない組み合わせに対応する仮想マシンを、前記依存仮想マシンとして特定する、
ことを特徴とする移動制御プログラム。
【０２４６】
（付記１２）
付記１１において、
前記依存仮想マシンを特定する処理では、前記仮想マシンの退避を指示する処理及び前記第２状態情報に基づき仮想マシンの移動を指示する処理を行う回数が最も少ない組み合わせが複数存在する場合、前記複数の仮想マシンに前記移動先の物理マシンへの移動を指示していない仮想マシンが存在しなくなるまでに、前記移動先の物理マシン以外の物理マシンへの退避の指示の回数が最も少ない組み合わせに対応する仮想マシンを、前記依存仮想マシンとして特定する、
ことを特徴とする移動制御プログラム。
【０２４７】
（付記１３） 
情報処理システムを構成する複数の物理マシン間において移動する複数の仮想マシン毎に、前記仮想マシンの情報と、前記仮想マシンの移動元の物理マシンの情報と、前記仮想マシンの移動先の物理マシンの情報とを対応付けた情報を含む移動情報と、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第１状態情報とを取得する情報取得部と、
前記移動情報及び前記第１状態情報に基づき、前記複数の仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する移動指示部と、を有し、
前記移動指示部は、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示し、
前記情報取得部は、前記仮想マシンの退避後における、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第２状態情報を取得し、
前記移動指示部は、前記移動情報及び前記第２状態情報に基づき、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する、
ことを特徴とする移動制御装置。
【０２４８】
（付記１４） 
情報処理システムを構成する複数の物理マシン間において移動する複数の仮想マシン毎に、前記仮想マシンの情報と、前記仮想マシンの移動元の物理マシンの情報と、前記仮想マシンの移動先の物理マシンの情報とを対応付けた情報を含む移動情報と、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第１状態情報とを取得し、
前記移動情報及び前記第１状態情報に基づき、前記複数の仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示し、
前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシン以外の物理マシンへの退避可能な仮想マシンに、前記移動先の物理マシン以外の物理マシンへの退避を指示し、
前記仮想マシンの退避後における、前記複数の物理マシン及び前記複数の仮想マシンそれぞれの状態を示す第２状態情報を取得し、
前記移動情報及び前記第２状態情報に基づき、前記移動先の物理マシンへの移動を指示していない仮想マシンのうち、前記移動先の物理マシンに移動可能な仮想マシンに、前記移動先の物理マシンへの移動を指示する、
ことを特徴とする移動制御方法。
【符号の説明】
【０２４９】
１：情報処理装置            ２：物理マシン
３：仮想マシン              ４：仮想化ソフトウエア
１１：利用者端末
【図１】
2017049772.tif 000003
【図２】
2017049772.tif 000004
【図３】
2017049772.tif 000005
【図４】
2017049772.tif 000006
【図５】
2017049772.tif 000007
【図６】
2017049772.tif 000008
【図７】
2017049772.tif 000009
【図８】
2017049772.tif 000010
【図９】
2017049772.tif 000011
【図１０】
2017049772.tif 000012
【図１１】
2017049772.tif 000013
【図１２】
2017049772.tif 000014
【図１３】
2017049772.tif 000015
【図１４】
2017049772.tif 000016
【図１５】
2017049772.tif 000017
【図１６】
2017049772.tif 000018
【図１７】
2017049772.tif 000019
【図１８】
2017049772.tif 000020
【図１９】
2017049772.tif 000021
【図２０】
2017049772.tif 000022
【図２１】
2017049772.tif 000023
【図２２】
2017049772.tif 000024
【図２３】
2017049772.tif 000025
【図２４】
2017049772.tif 000026
【図２５】
2017049772.tif 000027
【図２６】
2017049772.tif 000028
【図２７】
2017049772.tif 000029
【図２８】
2017049772.tif 000030
【図２９】
2017049772.tif 000031
【図３０】
2017049772.tif 000032
【図３１】
2017049772.tif 000033
【図３２】
2017049772.tif 000034
【図３３】
2017049772.tif 000035
【図３４】
2017049772.tif 000036
【図３５】
2017049772.tif 000037
【図３６】
2017049772.tif 000038
【図３７】
2017049772.tif 000039
【図３８】
2017049772.tif 000040
【図３９】
2017049772.tif 000041
【図４０】
2017049772.tif 000042
【図４１】
2017049772.tif 000043
【図４２】
2017049772.tif 000044
【図４３】
2017049772.tif 000045
【図４４】
2017049772.tif 000046
【図４５】
2017049772.tif 000047
【図４６】
2017049772.tif 000048
【図４７】
2017049772.tif 000049
【図４８】
2017049772.tif 000050
【図４９】
2017049772.tif 000051
【図５０】
2017049772.tif 000052
【図５１】
2017049772.tif 000053
【図５２】
2017049772.tif 000054
【図５３】
2017049772.tif 000055
【図５４】
2017049772.tif 000056
【図５５】
2017049772.tif 000057