(57)【特許請求の範囲】
【請求項１】
複数のコアで構成されるＣＰＵを複数有する物理サーバを複数備えたコンピュータシステムにおいて、仮想マシンを予め同一のＣＰＵのコアに割り当てて前記物理サーバに配置する仮想マシン配置装置であって、
前記物理サーバと前記ＣＰＵと前記コアとを対応付けるとともに、前記コアがどの仮想マシンに使用されているのかを示すリソース管理データを記憶する記憶手段と、
前記リソース管理データを参照して、新たな仮想マシンが予め必要とする必要コア数を同一ＣＰＵ上に確保できるか否かを判定する空きリソース判定手段と、
前記空きリソース判定手段で同一ＣＰＵ上に前記必要コア数を確保できない場合に、動作中の仮想マシンが割り当てられているコアを、当該仮想マシンが動作している物理サーバの他のＣＰＵ、または、他の物理サーバのＣＰＵに割り当て直すコンパクション実行手段と、
確保された同一ＣＰＵ上のコアに、前記新たな仮想マシンを配置する配置実行手段と、
を備え、
前記空きリソース判定手段は、
前記同一ＣＰＵで前記必要コア数を確保できない場合に、個々の物理サーバ内で、前記動作中の仮想マシンに割り当てられているコアを、他のＣＰＵに割り当て直すことで、前記必要コア数を同一ＣＰＵ上に確保できるか否かを判定する物理サーバ単位リソース判定手段と、
前記物理サーバ内で前記必要コア数を確保できない場合に、すべての物理サーバ間で、前記動作中の仮想マシンに割り当てられているコアを、他の物理サーバのＣＰＵに割り当て直すことで、前記必要コア数を同一ＣＰＵ上に確保できるか否かを判定する全物理サーバリソース判定手段と、を備えることを特徴とする仮想マシン配置装置。
【請求項２】
複数のコアで構成されるＣＰＵを複数有する物理サーバを複数備えたコンピュータシステムにおいて、仮想マシン配置装置が、仮想マシンを予め同一のＣＰＵのコアに割り当てて前記物理サーバに配置するためのリソースを確保するリソース管理方法であって、
ＣＰＵ単位リソース判定手段によって、前記物理サーバと前記ＣＰＵと前記コアとを対応付けるとともに、前記コアがどの仮想マシンに使用されているのかを示すリソース管理データを参照して、同一ＣＰＵ内で新たな仮想マシンが予め必要とする必要コア数を確保できるか否かを判定するステップと、
同一ＣＰＵ内で前記必要コア数を確保できない場合に、物理サーバ単位リソース判定手段によって、前記リソース管理データを参照して、個々の物理サーバ内で、動作中の仮想マシンに割り当てられているコアを、他のＣＰＵに割り当て直すことで、前記必要コア数を同一ＣＰＵ上に確保できるか否かを判定するステップと、
前記物理サーバ内で前記必要コア数を確保できる場合に、物理サーバ内割り当て変更手段によって、前記物理サーバ内でコアの割り当てを変更するステップと、
前記物理サーバ内で前記必要コア数を確保できない場合に、全物理サーバリソース判定手段によって、前記リソース管理データを参照して、すべての物理サーバ間で、動作中の仮想マシンに割り当てられているコアを、他の物理サーバのＣＰＵに割り当て直すことで、前記必要コア数を同一ＣＰＵ上に確保できるか否かを判定するステップと、
前記物理サーバ間で前記必要コア数を確保できる場合に、物理サーバ間割り当て変更手段によって、前記物理サーバ間でコアの割り当てを変更するステップと、
を含むことを特徴とするリソース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンを複数の物理サーバに配置する仮想マシン配置装置および仮想マシンのリソースを管理するリソース管理方法に関する。
【背景技術】
【０００２】
近年、ＮＦＶ（Network Functions Virtualization：ネットワーク機能仮想化）の仮想アプライアンスに代表されるように、処理の低遅延が要求されるアプリケーション（以下、単にアプリケーション）をＶＭ（Virtual Machine：仮想マシン）で実行・運用する技術が関心を集めている。
このようなアプリケーションでは、遅延を低減させるために、ＶＭの仮想ＣＰＵと物理ＣＰＵのコアとを固定的に割り当てる（括りつける）ことが多い。これは、コアのＣＰＵ時間のリソースを、ＶＭが占有することを意図しており、他のＶＭにリソースをディスパッチされないことから、遅延を低減する効果がある。
【０００３】
また、このようなアプリケーションでは、同一の物理ＣＰＵ上のコアという限定を付けてＶＭの仮想ＣＰＵと物理ＣＰＵのコアとを固定的に割り当てることもある。これは、ＶＭ内のプロセス・スレッド間通信を同一物理ＣＰＵ内で実行することができることから、キャッシュヒット率を高くすることができ、遅延を低減する手段として極めて高い効果がある。
【０００４】
従来、このようなＶＭの仮想ＣＰＵを物理ＣＰＵに固定的に割り当てる方法は、ＫＶＭ（Kernel-based Virtual Machine：カーネル仮想化基盤）等で提供される機能（ＣＰＵピニング）で実現することができる（非特許文献１参照）。この手法は、コンピュータを介して、コマンドを手動で発行し、そのコマンドを取得した物理サーバ（サーバハード）が、同サーバ上で動作するＶＭの仮想ＣＰＵと物理ＣＰＵとの割り当てを行っている。
一方、ＯｐｅｎＳｔａｃｋ等のリソース管理システムでは、ＶＭにリソースを自動的に割り当てている（非特許文献２参照）。このリソース管理システムは、ＣＰＵ負荷の低い物理サーバにＶＭを配置することで、リソースを割り当てている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“ＫＶＭプロセッサーアフィニティの設定”、［online］、［平成２８年５月２０日検索］、インターネット〈URL：https://docs.fedoraproject.org/ja-JP/Fedora/13/html/Virtualization_Guide/ch25s06.html〉
【非特許文献２】“Virtualization Driver Guest CPU / Memory Placement”、［online］、［平成２８年５月２０日検索］、インターネット〈https://wiki.openstack.org/wiki/VirtDriverGuestCPUMemoryPlacement〉
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の非特許文献１の手法では、人手によってＣＰＵ等のリソースの割り当てを行うため、手間がかかるとともに、操作ミスが起こりやすいといった問題がある。
また、従来の非特許文献２の手法では、ＶＭにリソースを自動的に割り当てることはできるが、ＶＭの仮想ＣＰＵと物理ＣＰＵのコアとを固定的に割り当てるようなアプリケーションには適用できず、ＣＰＵ負荷の低い物理サーバにＶＭを配置することしかできない。
このように、従来の手法は、ＶＭの仮想ＣＰＵと物理ＣＰＵのコアとを固定的に割り当てることを前提としたシステムにおいて、自動的にリソースを割り当てることは困難であった。
【０００７】
また、従来の手法は、ＶＭのリソースの確保、ＶＭ停止後のリソースの回収を繰り返すと使用中のリソースと小さな未使用のリソースとが混在し、大きな未使用のリソースを確保することができない、いわゆる、リソースの断片化が発生する。そのため、従来の手法は、システム全体で未使用リソースが十分であっても、同一の物理ＣＰＵ上でＶＭが必要とする未使用リソースを確保することができないという問題が発生する場合がある。
【０００８】
本発明は、このような問題に鑑みてなされたもので、仮想マシン（ＶＭ）に、人手を介さずにリソースを確保するとともに、リソースの断片化を防止することが可能な仮想マシン配置装置およびリソース管理方法を提供することを課題とする。
【課題を解決するための手段】
【０００９】
前記課題を解決するため、請求項１に記載の仮想マシン配置装置は、複数のコアで構成されるＣＰＵを複数有する物理サーバを複数備えたコンピュータシステムにおいて、仮想マシンを予め同一のＣＰＵのコアに割り当てて前記物理サーバに配置する仮想マシン配置装置であって、前記物理サーバと前記ＣＰＵと前記コアとを対応付けるとともに、前記コアがどの仮想マシンに使用されているのかを示すリソース管理データを記憶する記憶手段と、前記リソース管理データを参照して、新たな仮想マシンが予め必要とする必要コア数を同一ＣＰＵ上に確保できるか否かを判定する空きリソース判定手段と、前記空きリソース判定手段で同一ＣＰＵ上に前記必要コア数を確保できない場合に、動作中の仮想マシンが割り当てられているコアを、当該仮想マシンが動作している物理サーバの他のＣＰＵ、または、他の物理サーバのＣＰＵに割り当て直すコンパクション実行手段と、確保された同一ＣＰＵ上のコアに、前記新たな仮想マシンを配置する配置実行手段と、を備え、前記空きリソース判定手段は、前記同一ＣＰＵで前記必要コア数を確保できない場合に、個々の物理サーバ内で、前記動作中の仮想マシンに割り当てられているコアを、他のＣＰＵに割り当て直すことで、前記必要コア数を同一ＣＰＵ上に確保できるか否かを判定する物理サーバ単位リソース判定手段と、前記物理サーバ内で前記必要コア数を確保できない場合に、すべての物理サーバ間で、前記動作中の仮想マシンに割り当てられているコアを、他の物理サーバのＣＰＵに割り当て直すことで、前記必要コア数を同一ＣＰＵ上に確保できるか否かを判定する全物理サーバリソース判定手段と、を備えることを特徴とする。
【００１０】
かかる構成によれば、仮想マシン配置装置は、空きリソース判定手段によって、新たに配置する仮想マシンが必要とするコア数を、同一ＣＰＵ上に確保できるか否かを判定することができる。そして、仮想マシン配置装置は、コンパクション実行手段によって、物理サーバ内でＣＰＵのコアの割り当てや、物理サーバ間でＣＰＵのコアの割り当てを変更することができる。これによって、仮想マシン配置装置は、リソース（コア）が分断化されている場合でも、コンパクションによってリソースを有効に活用することができる。
【００１２】
また、仮想マシン配置装置は、物理サーバ単位リソース判定手段によって、物理サーバ内でのコンパクションによって、新たに配置する仮想マシンが必要とするコア数を、同一ＣＰＵ上に確保できるか否かを判定することができる。また、仮想マシン配置装置は、全物理サーバリソース判定手段によって、物理サーバ間のコンパクションによって、新たに配置する仮想マシンが必要とするコア数を、同一ＣＰＵ上に確保できるか否かを判定することができる。これによって、仮想マシン配置装置は、物理サーバ内、物理サーバ間と階層的にリソースを確保することができる。
【００１５】
また、前記課題を解決するため、請求項２に記載のリソース管理方法は、複数のコアで構成されるＣＰＵを複数有する物理サーバを複数備えたコンピュータシステムにおいて、仮想マシン配置装置が、仮想マシンを予め同一のＣＰＵのコアに割り当てて前記物理サーバに配置するためのリソースを確保するリソース管理方法であって、ＣＰＵ単位リソース判定手段によって、前記物理サーバと前記ＣＰＵと前記コアとを対応付けるとともに、前記コアがどの仮想マシンに使用されているのかを示すリソース管理データを参照して、同一ＣＰＵ内で新たな仮想マシンが予め必要とする必要コア数を確保できるか否かを判定するステップと、同一ＣＰＵ内で前記必要コア数を確保できない場合に、物理サーバ単位リソース判定手段によって、前記リソース管理データを参照して、個々の物理サーバ内で、動作中の仮想マシンに割り当てられているコアを、他のＣＰＵに割り当て直すことで、前記必要コア数を同一ＣＰＵ上に確保できるか否かを判定するステップと、前記物理サーバ内で前記必要コア数を確保できる場合に、物理サーバ内割り当て変更手段によって、前記物理サーバ内でコアの割り当てを変更するステップと、前記物理サーバ内で前記必要コア数を確保できない場合に、全物理サーバリソース判定手段によって、前記リソース管理データを参照して、すべての物理サーバ間で、動作中の仮想マシンに割り当てられているコアを、他の物理サーバのＣＰＵに割り当て直すことで、前記必要コア数を同一ＣＰＵ上に確保できるか否かを判定するステップと、前記物理サーバ間で前記必要コア数を確保できる場合に、物理サーバ間割り当て変更手段によって、前記物理サーバ間でコアの割り当てを変更するステップと、を含むことを特徴とする。
【００１６】
かかる手順によれば、リソース管理方法は、物理サーバ内でのコンパクションによって、新たに配置する仮想マシンが必要とするコア数を、同一ＣＰＵ上に確保できるか否かを判定することができる。また、リソース管理方法は、物理サーバ間のコンパクションによって、新たに配置する仮想マシンが必要とするコア数を、同一ＣＰＵ上に確保できるか否かを判定することができる。これによって、リソース管理方法は、物理サーバ内、物理サーバ間と階層的にリソースを確保することができる。
【発明の効果】
【００１７】
本発明によれば、仮想マシンの仮想ＣＰＵと物理ＣＰＵのコアとを固定的に割り当てることを前提としたシステムにおいて、自動的にリソースを割り当てることができ、人手による手間を少なくし、操作ミスを防止することができる。
また、本発明によれば、コンパクションによって、リソースの断片化を防止することができ、リソースを有効に活用することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係るコンピュータシステム（データセンタ）の概要を説明するためのシステム概要図である。
【図２】図１の物理サーバとその物理サーバ上で動作する仮想マシンとのリソースの割り当てを説明するための説明図である。
【図３】本発明の実施形態に係る仮想ラベル配置装置の構成を示すブロック構成図である。
【図４】本発明の実施形態に係る仮想ラベル配置装置で管理するリソースの構造を示すツリー構造図である。
【図５】本発明の実施形態に係る仮想ラベル配置装置で管理するリソース管理データのデータ構造の例であって、（ａ）はデータセンタ内物理サーバリスト、（ｂ）は物理サーバ内ＣＰＵリスト、（ｃ）はＣＰＵ内コアリストのデータ構造図である。
【図６】本発明の実施形態に係る仮想ラベル配置装置で管理する仮想マシンで動作するアプリケーションの動作状態（アクティブ／スタンバイ）を示す動作状態リストのデータ構造図である。
【図７】物理サーバに新規に仮想マシンを配置する概念を説明するための説明図である。
【図８】物理サーバ内のコンパクション処理を説明するための説明図であって、（ａ）はＣＰＵの空きリソースの多い順番を示す図、（ｂ）は仮想マシンに対するリソース探索を示す図、（ｃ）は新規の仮想マシンを配置した状態を示す図である。
【図９】全物理サーバでのコンパクション処理を説明するための説明図であって、（ａ）は全物理サーバのＣＰＵごとの仮想マシンの割り付け状態を示す図、（ｂ）はＣＰＵの空きリソースの多い順番を示す図である。
【図１０】仮想マシンの仮想ＣＰＵと、物理サーバの物理ＣＰＵにおけるコアの割り当ての変更を説明するための説明図である。
【図１１】仮想マシンの物理サーバ間の移動を説明するための説明図である。
【図１２】仮想マシンで動作するアプリケーションの動作状態（アクティブ／スタンバイ）を考慮した仮想マシンの物理サーバ間の移動を説明するための説明図である。
【図１３】本発明の実施形態に係る仮想ラベル配置装置の動作を示すフローチャート（その１）である。
【図１４】本発明の実施形態に係る仮想ラベル配置装置の動作を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１９】
本発明の実施形態について図面を参照して説明する。
≪データセンタの全体構成≫
まず、図１，図２を参照して、本発明の実施形態に係る仮想マシン配置装置により、仮想マシンの配置およびそのリソース管理を行うコンピュータシステムの例であるデータセンタＳの全体構成について説明する。
【００２０】
データセンタＳは、インターネット、ネットワーク事業者網等（不図示）から接続可能な複数のサーバを備えたコンピュータシステムである。
このデータセンタＳは、複数の物理サーバ１，１，…と、図示を省略したネットワーク機器で構成される。また、ここでは、データセンタＳに、仮想マシン配置装置２を備える。なお、仮想マシン配置装置２は、必ずしもデータセンタＳの中に備える必要はなく、各物理サーバ１，１，…と、ネットワーク等で接続可能なデータセンタＳの外に備えることとしてもよい。
【００２１】
物理サーバ１は、仮想マシン（ＶＭ）１２を動作させるハードウェアである。ここでは、物理サーバ１は、複数のＣＰＵ（Central Processing Unit）１０で構成され、個々のＣＰＵ（物理ＣＰＵ）１０は、複数のコア１１で構成されているものとする。なお、図１では、物理サーバ１として、一般的に備えられる記憶装置、通信制御装置等の図示を省略している。この物理サーバ１は、当該物理サーバ１上で動作する仮想マシン１２に対して、アプリケーションを動作させるためのリソース（ＣＰＵ資源）を提供する。
なお、物理サーバ１上に配置される仮想マシン（以下、ＶＭ）１２は、図２に示すように、複数のプロセス、スレッドが、仮想ＣＰＵ（ｖＣＰＵ）１３で動作する。また、個々の仮想ＣＰＵ１３は、同一のＣＰＵ（物理ＣＰＵ）１０の個別のコア１１に固定的に割り当てられて動作するものとする。なお、以下では、この状態を、ＶＭ１２がＣＰＵ１０のコア１１に割り当てられているという。
これによって、ＶＭ１２は、コア１１のＣＰＵ時間を占有することができ、他のＶＭにリソースをディスパッチされず、遅延を低減することができる。
【００２２】
仮想マシン配置装置２は、データセンタ（コンピュータシステム）Ｓ内のリソースを管理し、ＶＭ１２を同一のＣＰＵ１０のコア１１に割り当てて物理サーバ１に配置するものである。
この仮想マシン配置装置２は、物理サーバ１のＣＰＵ１０に、ＶＭ１２を動作させるために十分なコア１１の空きがある場合、その物理サーバ１にＶＭ１２を配置する。一方、仮想マシン配置装置２は、物理サーバ１のＣＰＵ１０に、ＶＭ１２を動作させるために十分なコア１１の空きがない場合、コア１１の断片化を解消し、コア１１の空きを作ってＶＭ１２を配置する。
この仮想マシン配置装置２の構成については、図３を参照して、後で詳細に説明する。
このように、データセンタＳは、仮想マシン配置装置２によって、複数の物理サーバ１上に自動でＶＭ１２を配置することができ、リソースの管理を行うことができる。
【００２３】
≪仮想マシン配置装置の構成≫
次に、図３を参照して、仮想マシン配置装置２の構成について説明する。
図３に示すように、仮想マシン配置装置２は、通信部２００と、記憶部２１０と、制御部２２０と、を備える。
【００２４】
通信部（通信手段）２００は、通信回線を介して、物理サーバ１との間で通信データの送受信を行うものである。例えば、通信部２００は、ＮＩＣ（Network Interface Card）等の通信制御手段で構成される。この通信部２００は、制御部２２０から入力される信号（制御情報、データ）を、通信回線を介して、物理サーバ１に送信し、物理サーバ１から受信した信号を制御部２２０に出力する。
【００２５】
記憶部（記憶手段）２１０は、データセンタＳ内のリソースを管理するデータ（リソース管理データ）を記憶するものである。また、ここでは、ＶＭ１２として動作するアプリケーションは、アクティブ／スタンバイ（ＡＣＴ〔運用系〕／ＳＢＹ〔待機系〕）構成で動作するものとし、記憶部２１０は、ＶＭ１２の動作状態を示すリスト（動作状態リスト）も記憶することとする。この記憶部２１０は、ハードディスク等の一般的な記憶装置で構成される。
【００２６】
ここで、図４，図５を参照して、記憶部２１０に記憶するリソース管理データの例について説明する。図４に示すように、リソース管理データは、リソース（物理サーバ１、ＣＰＵ１０、コア１１）を、データセンタ内物理サーバリスト２１１、物理サーバ内ＣＰＵリスト２１２、ＣＰＵ内コアリスト２１３の順にツリー構造化したデータである。
【００２７】
データセンタ内物理サーバリスト２１１は、データセンタＳを構成する物理サーバ１のリストである。例えば、データセンタ内物理サーバリスト２１１は、図５（ａ）に示すように、個々の物理サーバ１を識別する識別情報ＳＶ１，ＳＶ２，…（例えば、ＩＰアドレス等）を配列したデータである。
このデータセンタ内物理サーバリスト２１１によって、データセンタＳが何台の物理サーバ１で構成されているのかが管理される。
【００２８】
物理サーバ内ＣＰＵリスト２１２は、物理サーバ１を構成するＣＰＵ１０のリストである。例えば、物理サーバ内ＣＰＵリスト２１２は、図５（ｂ）に示すように、物理サーバ１ごとに、構成するＣＰＵ１０を識別する識別情報ＣＰＵ１，ＣＰＵ２，…（例えば、連続番号等）を配列したデータである。
この物理サーバ内ＣＰＵリスト２１２によって、個々の物理サーバ１がいくつのＣＰＵ１０で構成されているのかが管理される。
【００２９】
ＣＰＵ内コアリスト２１３は、ＣＰＵ１０を構成するコア１１のリストである。また、ＣＰＵ内コアリスト２１３は、それぞれのコア１１が、どのＶＭ１２によって使用され、どの仮想ＣＰＵ１３に対応付けられているのかを併せて保持する。
例えば、ＣＰＵ内コアリスト２１３は、図５（ｃ）に示すように、ＣＰＵ１０ごとに、構成するコア１１を識別する識別情報ＣＯＲＥ１，ＣＯＲＥ２，…（例えば、連続番号等）を配列したデータである。さらに、ＣＰＵ内コアリスト２１３は、それぞれのコア１１に対して、図５（ｃ）に示すように、使用状態（使用／未使用）を保持し、使用している場合、どの仮想マシン（ＶＭ）１２によって使用され、どの仮想ＣＰＵ１３に対応付けられているのかを保持する。なお、図５（ｃ）中、ＶＭ１，ＶＭ２，…は、ＶＭ１２を個別に識別する識別情報（例えば、連続番号等）である。また、ｖＣＰＵ１，ｖＣＰＵ２，…は、仮想ＣＰＵ１３を個別に識別する識別情報（例えば、連続番号等）である。
このＣＰＵ内コアリスト２１３によって、個々のＣＰＵ１０がいくつのコア１１で構成されているのかが管理されるとともに、コア１１の使用状況が管理される。
【００３０】
次に、図６を参照して、記憶部２１０に記憶する動作状態リストの例について説明する。図６に示すように、動作状態リスト２１４は、それぞれのＶＭ１２（ＶＭ１，ＶＭ２，…）ごとに、動作しているアプリケーションＡＰＬと、そのアプリケーションＡＰＬがアクティブ（ＡＣＴ）状態かスタンバイ（ＳＢＹ）状態かを示すリストである。例えば、図６は、アプリケーションＡＰＬ１が、ＶＭ１でアクティブ（ＡＣＴ）状態で動作し、ＶＭ２でスタンバイ（ＳＢＹ）状態で動作していることを示している。
図３に戻って、仮想マシン配置装置２の構成について説明を続ける。
【００３１】
制御部（制御手段）２２０は、仮想マシン配置装置２の動作を制御するものである。ここでは、制御部２２０は、配置位置制御手段２１と、空きリソース判定手段２２と、コンパクション実行手段２３と、配置実行手段２４と、を備える。
【００３２】
配置位置制御手段２１は、データセンタＳ内のリソースの使用状態に応じて、ＶＭ１２の配置位置を決定するものである。
この配置位置制御手段２１は、外部からＶＭ１２のプログラム（運用系または待機系のアプリケーションを含む）と、必要とするコア数（必要コア数）とを入力されることで、ＶＭ１２の配置位置を決定する。なお、ＶＭ１２のプログラムや使用コア数は、予め対応付けて記憶部２１０に記憶しておき、配置位置制御手段２１は、配置するＶＭ１２を指定されることで、ＶＭ１２の配置位置を決定することとしてもよい。
【００３３】
ここでは、配置位置制御手段２１は、ＶＭ１２に含まれるアプリケーションの識別情報（ＡＰＬ）と、そのアプリケーションが運用系または待機系のいずれかであるかを示す識別情報（ＡＣＴ／ＳＢＹ）と、必要コア数とを空きリソース判定手段２２に通知する。そして、配置位置制御手段２１は、リソースを確保できる空きのある物理サーバ１上のＣＰＵ１０の識別情報を配置位置として取得し、ＶＭ１２のプログラムとともに配置実行手段２４に出力する。
また、配置位置制御手段２１は、空きリソース判定手段２２から、ＶＭ１２を配置するために、コア１１の断片化を解消してコア１１を再編（コンパクション）する必要である旨が、その手順（コンパクション手順）として通知された場合、コンパクション手順をコンパクション実行手段２３に出力する。そして、配置位置制御手段２１は、コンパクション実行後、ＶＭ１２のプログラムとその配置位置とを配置実行手段２４に出力する。
【００３４】
なお、配置位置制御手段２１は、空きリソース判定手段２２から、コンパクションを行っても、ＶＭ１２を配置するためのリソースが確保できない旨が通知された場合、図示を省略した表示装置に警告を表示する。この場合、管理者が、物理サーバ１の増設を行うことで、リソースを増やすこととすればよい。
【００３５】
空きリソース判定手段２２は、すべての物理サーバ１で、新たに配置するＶＭ１２の必要コア数を、同一のＣＰＵ１０で確保できるか否かを判定するものである。
ここでは、空きリソース判定手段２２は、ＣＰＵ単位リソース判定手段２２ａと、物理サーバ単位リソース判定手段２２ｂと、全物理サーバリソース判定手段２２ｃと、を備える。
【００３６】
ＣＰＵ単位リソース判定手段２２ａは、物理サーバ１のＣＰＵ１０ごとに、新たに配置するＶＭ１２の必要コア数の空きがあるか否かを判定するものである。
このＣＰＵ単位リソース判定手段２２ａは、１つのＣＰＵ１０のみでリソース（必要コア数）が確保可能であれば、そのＣＰＵ１０をＶＭ１２の配置位置として、配置位置制御手段２１に物理サーバ１およびＣＰＵ１０の識別情報を出力する。この場合、ＣＰＵ単位リソース判定手段２２ａは、コンパクション手順を配置位置制御手段２１に出力しない。
一方、ＣＰＵ単位リソース判定手段２２ａは、１つのＣＰＵ１０のみでリソースが確保できない場合、必要コア数を、物理サーバ単位リソース判定手段２２ｂに出力する。
【００３７】
このＣＰＵ単位リソース判定手段２２ａは、記憶部２１０に記憶されているリソース管理データ（図４参照）を参照し、ＣＰＵ内コアリスト（図５（ｃ）参照）で、同一ＣＰＵ１０で「未使用」のコアの数（空き個数）が、必要コア数以上である場合、そのＣＰＵ１０において、リソースを確保することができると判定する。
なお、ＣＰＵ単位リソース判定手段２２ａは、新たに配置するＶＭ１２に含まれるアプリケーションＡＰＬの動作系（運用系または待機系）と異なる動作系がすでに配置されている物理サーバ１のＣＰＵ１０については、必要コア数の空きを判定しないこととする。
これによって、運用系アプリケーションを含むＶＭと、待機系アプリケーションを含むＶＭとを、異なる物理サーバ１に配置することができる。
【００３８】
ここで、図７を参照して、ＣＰＵ単位リソース判定手段２２ａの処理の具体例について説明する。図７に示すように、例えば、ある物理サーバ１（ＳＶ１）が１８コアのＣＰＵ４個（ＣＰＵ１〜ＣＰＵ４）で構成されており、それぞれのＣＰＵが複数のＶＭ１２で使用されて、コアの空き個数が、７個、５個、７個、６個であったとする。
この状態で、新規に配置するＶＭ１２の必要コア数として４個が通知された場合、ＣＰＵ単位リソース判定手段２２ａは、探索順で最初にリソースを確保することができる物理サーバ１（ＳＶ１）のＣＰＵ１を、ＶＭ１２の配置位置とする。
【００３９】
一方、新規に配置するＶＭ１２の必要コア数として８個が通知された場合、ＣＰＵ単位リソース判定手段２２ａは、物理サーバ１（ＳＶ１）では、リソースを確保できないと判定する。
図３に戻って、仮想マシン配置装置２の構成について説明を続ける。
【００４０】
物理サーバ単位リソース判定手段２２ｂは、ＣＰＵ単位リソース判定手段２２ａにおいて、同一ＣＰＵで必要コア数を確保できない場合に、個々の物理サーバ内で、動作中のＶＭ１２に割り当てられているコア１１を、他のＣＰＵ１０に割り当て直すことで、必要コア数を同一ＣＰＵ上に確保できるか否かを判定するものである。
【００４１】
この物理サーバ単位リソース判定手段２２ｂは、１つの物理サーバ１のコンパクションのみでリソース（必要コア数）が確保可能であれば、そのリソースを有する物理サーバ１およびＣＰＵ１０の識別情報を配置位置として、配置位置制御手段２１に出力する。また、物理サーバ単位リソース判定手段２２ｂは、コンパクション手順を配置位置制御手段２１に出力する。
なお、物理サーバ単位リソース判定手段２２ｂは、新たに配置するＶＭ１２に含まれるアプリケーションＡＰＬの動作系（運用系または待機系）と異なる動作系がすでに配置されている物理サーバ１については、必要コア数の空きを確保できるか否かを判定しないこととする。
【００４２】
ここで、図７，図８を参照して、物理サーバ単位リソース判定手段２２ｂの処理の具体例について説明する。図７は、ＣＰＵ単位リソース判定手段２２ａの処理で説明した図であるため、ここでは説明を省略する。
図７に示した状態で、新規に配置するＶＭ１２の必要コア数として、それぞれのＣＰＵ１０の空きコア数よりも多い個数（ここでは、８個）が通知された場合、物理サーバ単位リソース判定手段２２ｂは、空きコア数の多い順に、物理サーバ１のＣＰＵ１０を並べ替える。ここで、ＣＰＵ１０を並べ替えるとは、物理サーバ単位リソース判定手段２２ｂが、処理対象とするＣＰＵの順番を変えるという意味である。
例えば、図８（ａ）に示すように、物理サーバ単位リソース判定手段２２ｂは、図７のＣＰＵ１０の配列を、ＣＰＵ１，ＣＰＵ３，ＣＰＵ４，ＣＰＵ２の順に並べ替える。
【００４３】
そして、物理サーバ単位リソース判定手段２２ｂは、最も空きコア数の多いＣＰＵ１０から、空きコア数の少ないＣＰＵ１０に対して順に、使用しているコア１１の割り当てを変更可能か否か判定する。これは、空きコア数の多いＣＰＵ１０から、空きコア数の少ないＣＰＵ１０へ割り当てを変更すれば、より多くの空きコア数を確保することが可能になるからである。なお、コア１１の割り当て変更は、ＶＭ１２単位で行うこととする。
例えば、図８（ａ）の例では、最も空きコア数の多いＣＰＵ１０（ＣＰＵ１）には、変更対象としてｖｍ１，ｖｍ２，ｖｍ３の３つのＶＭ１２が存在する。そして、物理サーバ単位リソース判定手段２２ｂは、新たに配置するＶＭ１２の必要コア数に足りないコア数（不足コア数）を計算し、すでに存在するＶＭ１２の組み合わせで、不足コア数よりも多い組み合わせのリストを生成する。図８（ａ）の例では、ＣＰＵ１は、必要コア数８個に対して不足コア数は１個であるため、該当する組み合わせは、ｖｍ１のみ、ｖｍ２のみ、ｖｍ３のみ、ｖｍ１とｖｍ２、ｖｍ１とｖｍ３、ｖｍ２とｖｍ３、ｖｍ１とｖｍ２とｖｍ３、の７通りとなる。
【００４４】
ここで、物理サーバ単位リソース判定手段２２ｂは、各組み合わせのコア数の多い順に、より空きコア数の少ないＣＰＵ１０に割り当て変更可能な組み合わせを探索する。
図８（ａ）の例では、コア数の多い順に、ｖｍ１とｖｍ２とｖｍ３（コア数１１個）、ｖｍ１とｖｍ３（コア数９個）、ｖｍ１とｖｍ２（コア数８個）、ｖｍ１（コア数６個）、ｖｍ２とｖｍ３（コア数５個）、ｖｍ３（コア数３個）、ｖｍ２（コア数２個）の順となる。
【００４５】
そして、物理サーバ単位リソース判定手段２２ｂは、コア数の多いものから順に、空きコア数の少ないＣＰＵ１０に割り当て変更可能な組み合わせを探索する。この場合、ｖｍ１とｖｍ２とｖｍ３（コア数１１個）、ｖｍ１とｖｍ３（コア数９個）、ｖｍ１とｖｍ２（コア数８個）の各組み合わせは、他のどのＣＰＵにも空きがなく割り当てることができない。そして、次にコア数の多いｖｍ１（コア数６個）は、空きコア数の最も少ないＣＰＵ２には割り当てることができないが、図８（ｂ）に示すように、その次に空きコア数の少ないＣＰＵ４には割り当てることができる。すなわち、物理サーバ単位リソース判定手段２２ｂは、ＣＰＵ１に割り当てられているＶＭ（ｖｍ１）を、ＣＰＵ４に割り当てるようにリソースの再編（コンパクション）を行えば、新規のＶＭ１２へのリソースを確保することができると判定する。
【００４６】
なお、変更可能な組み合わせの中で、コア数の合計が同一でＶＭ１２の数が異なる場合は、ＶＭ１２の数が少ない方を優先して変更の対象とすることが望ましい。これは、変更するＶＭ１２の数が多いほど、変更にかかる時間、処理手順の増加等のデータセンタＳ全体に与える影響が増してしまうからである。
これによって、物理サーバ単位リソース判定手段２２ｂは、図８（ｃ）に示すように、物理サーバ１内のコンパクションによって、新規のＶＭ１２（ここでは、コア数８）を、ＣＰＵ１に配置することが可能であると判定する。
【００４７】
ここでは、物理サーバ単位リソース判定手段２２ｂは、最も空きコア数の多いＣＰＵ１０（ここでは、ＣＰＵ１）を基準としてリソースが確保可能か否かを判定したが、リソースが確保できない場合、順次、空きコア数の多いＣＰＵ１０から順（図８の例では、ＣＰＵ１→ＣＰＵ３→ＣＰＵ４→ＣＰＵ２）に同様の処理を行えばよい。
【００４８】
この物理サーバ単位リソース判定手段２２ｂは、新規ＶＭに必要はリソース（必要コア数）が確保可能であると判定した場合、配置可能な物理サーバ１およびＣＰＵ１０を特定する識別情報（図８の例では、ＳＶ１，ＣＰＵ１）を、配置位置制御手段２１に出力する。また、リソースを確保するためコンパクション手順（図８の例では、ＳＶ１のＣＰＵ１からＣＰＵ４へのｖｍ１の割り当て変更）を配置位置制御手段２１に出力する。
そして、物理サーバ単位リソース判定手段２２ｂは、必要コア数の空きをコンパクションによって確保できない場合、他の物理サーバ１（データセンタ内物理サーバリスト２１１（図５（ａ）参照）の次の物理サーバ）でリソースを探索するように、ＣＰＵ単位リソース判定手段２２ａに指示する。そして、すべての物理サーバ１において、それぞれコンパクションによって必要コア数が確保できなかった場合、物理サーバ単位リソース判定手段２２ｂは、必要コア数を、全物理サーバリソース判定手段２２ｃに出力する。
図３に戻って、仮想マシン配置装置２の構成について説明を続ける。
【００４９】
全物理サーバリソース判定手段２２ｃは、物理サーバ１内で必要コア数を確保できない場合に、すべての物理サーバ１間で、動作中のＶＭ１２に割り当てられているコアを、他の物理サーバ１のＣＰＵ１０に割り当て直すことで、必要コア数を同一ＣＰＵ上に確保できるか否かを判定するものである。
この全物理サーバリソース判定手段２２ｃは、コンパクションでリソース（必要コア数）が確保可能であれば、そのリソースを有する物理サーバ１およびＣＰＵ１０の識別情報を、配置位置制御手段２１に出力する。また、全物理サーバリソース判定手段２２ｃは、コンパクション手順を配置位置制御手段２１に出力する。
【００５０】
例えば、全物理サーバリソース判定手段２２ｃは、図９（ａ）に示すように、物理サーバ１（ＳＶ１，ＳＶ２，ＳＶ３）が、それぞれ１８コアのＣＰＵ４個（ＣＰＵ１〜ＣＰＵ４）、ＣＰＵ２個（ＣＰＵ５，ＣＰＵ６）、ＣＰＵ２個（ＣＰＵ７，ＣＰＵ８）で構成され、それぞれのＣＰＵで複数のＶＭ１２によってコア１１が使用されているとする。
この場合、全物理サーバリソース判定手段２２ｃは、図９（ｂ）に示すように、空きコア数の多い順に、ＣＰＵ１０を並べ替える。すなわち、物理サーバ単位リソース判定手段２２ｂが、１つの物理サーバ１内で並べ替えを行ったのに対し（図８参照）、全物理サーバリソース判定手段２２ｃは、すべての物理サーバ１を対象として、ＣＰＵ１０の並べ替えを行う。
これ以降の処理は、物理サーバ単位リソース判定手段２２ｂの処理（図８参照）と同じであるため、説明を省略する。
【００５１】
ただし、全物理サーバリソース判定手段２２ｃは、図８（ｂ）に示したように、コアの割り当てを変更するリソースを探索する場合、変更後の物理サーバ１において、同じアプリケーションの運用系および待機系が、同じ物理サーバ１のＣＰＵ１０上で動作することがないように、リソースの探索を行うこととする。
また、全物理サーバリソース判定手段２２ｃは、新たに配置するＶＭ１２に含まれるアプリケーションＡＰＬの動作系（運用系または待機系）と異なる動作系がすでに配置されている物理サーバ１については、必要コア数の空きを確保できるか否かを判定しないこととする。
【００５２】
この全物理サーバリソース判定手段２２ｃは、新規ＶＭに必要なリソース（必要コア数）が確保可能であると判定した場合、配置可能な物理サーバ１およびＣＰＵ１０を特定する識別情報を、配置位置制御手段２１に出力する。また、リソースを確保するためコンパクション手順を配置位置制御手段２１に出力する。
そして、全物理サーバリソース判定手段２２ｃは、すべての物理サーバ１で、必要コア数の空きをコンパクションによって確保できない場合、リソースが確保できない旨を配置位置制御手段２１に出力する。
このように、全物理サーバリソース判定手段２２ｃは、すべての物理サーバ１（すなわち、データセンタＳ）を対象として、新たに配置するＶＭ１２の必要コア数の空きがあるか否かを判定する。
図３に戻って、仮想マシン配置装置２の構成について説明を続ける。
【００５３】
コンパクション実行手段２３は、配置位置制御手段２１から出力されるコンパクション手順に基づいて、動作中のＶＭ１２が割り当てられているコア１１を、当該ＶＭ１２が動作している同じ物理サーバ１の他のＣＰＵ１０、または、他の物理サーバ１のＣＰＵ１０に割り当て直す（コンパクション）ものである。このコンパクション実行手段２３は、空きリソース判定手段２２で、コンパクションを行わずに同一ＣＰＵ上に必要コア数を確保できない判定された場合に動作する。
ここでは、コンパクション実行手段２３は、物理サーバ内割り当て変更手段２３ａと、物理サーバ間割り当て変更手段２３ｂと、を備える。
【００５４】
物理サーバ内割り当て変更手段２３ａは、物理サーバ１内で、ＶＭ１２のＣＰＵ１０のコア１１への割り当てを変更するものである。この物理サーバ内割り当て変更手段２３ａは、コンパクション手順として、同一の物理サーバ１内で、コア１１の割り当てを変更する手順が指定された際に動作する。すなわち、この物理サーバ内割り当て変更手段２３ａは、物理サーバ単位リソース判定手段２２ｂによって、リソースを確保することが可能であると判定されたコンパクション手順を実行する。
例えば、物理サーバ内割り当て変更手段２３ａは、図１０に示すように、ＣＰＵ１０Ｂ１のコアに割り当てられているＶＭ１２Ｂの仮想ＣＰＵ（ｖＣＰＵ）を、同じ物理サーバ１Ｂの他のＣＰＵ１０Ｂ２のコアに割り当てる。なお、この割り当ての手法は、従来の一般的な手法（非特許文献１）であるため、ここでは、詳細な説明を省略する。
【００５５】
この物理サーバ内割り当て変更手段２３ａは、割り当て変更後、記憶部２１０に記憶されているリソース管理データを更新する。すなわち、物理サーバ内割り当て変更手段２３ａは、コアを解放したＣＰＵのＣＰＵ内コアリスト２１３（図５（ｃ）参照）において、割り当てを変更したＶＭ１２を「使用ＶＭ」から削除するとともに、ＶＭ１２が使用していたコアの「使用」を「未使用」に変更する。また、物理サーバ内割り当て変更手段２３ａは、新たにコアを割り当てたＣＰＵ１０のＣＰＵ内コアリスト２１３（図５（ｃ）参照）において、割り当てを変更したＶＭ１２に割り当てたコア１１を「未使用」から「使用」に変更するとともに、「使用ＶＭ」に割り当てを変更したＶＭ１２の識別情報とコア１１に割り当てた仮想ＣＰＵ１３の識別情報とを設定する。
この物理サーバ内割り当て変更手段２３ａは、コンパクションを実行し、リソース管理データを更新した後、コンパクションが完了した旨を配置位置制御手段２１に通知する。
【００５６】
物理サーバ間割り当て変更手段２３ｂは、異なる物理サーバ１間で、ＶＭ１２のＣＰＵ１０のコア１１への割り当てを変更するものである。この物理サーバ間割り当て変更手段２３ｂは、コンパクション手順として、異なる物理サーバ１間で、コア１１の割り当てを変更する手順が指定された際に動作する。すなわち、この物理サーバ間割り当て変更手段２３ｂは、全物理サーバリソース判定手段２２ｃによって、リソースを確保することが可能であると判定されたコンパクション手順を実行する。
例えば、物理サーバ間割り当て変更手段２３ｂは、図１１に示すように、物理サーバ１ＢのＣＰＵ１０Ｂのコアに割り当てられているＶＭ１２Ｂを、物理サーバ１ＣのＣＰＵ１０Ｃのコアに割り当てる。すなわち、物理サーバ間割り当て変更手段２３ｂは、ＶＭ１２Ｂを、物理サーバ１Ｂから物理サーバ１Ｃに移動させて、コアの割り当てを変更する。
【００５７】
この物理サーバ間割り当て変更手段２３ｂは、割り当て変更後、記憶部２１０に記憶されているリソース管理データを更新する。この物理サーバ間割り当て変更手段２３ｂのリソース管理データの更新は、物理サーバ内割り当て変更手段２３ａと同様であり、物理サーバ１を跨っている点のみが異なるため、ここでは説明を省略する。
なお、物理サーバ間割り当て変更手段２３ｂは、異なる物理サーバ１間でＶＭ１２の移動を行うため、ＶＭ１２の起動状態を制御して移動を行う必要がある。
【００５８】
ここで、図１１，図１２を参照して、アクティブ／スタンバイ構成でアプリケーションが動作しているＶＭ１２のコアの割り当ての変更について説明する。
「０．初期状態」として、物理サーバ１Ａにおいて、ＶＭ１２Ａでアプリケーションがスタンバイ（ＳＢＹ）状態で起動中であって、物理サーバ１Ｂにおいて、ＶＭ１２Ｂでアプリケーションがアクティブ（ＡＣＴ）状態で起動中であるとする。すなわち、物理サーバ１Ａ，１Ｂで、アプリケーションが二重化されて動作しているものとする。
ここで、ＶＭ１２Ｂを、物理サーバ１Ｂから物理サーバ１Ｃに移動させることとする。
【００５９】
「１．系切り替え」として、物理サーバ間割り当て変更手段２３ｂは、物理サーバ１ＡのＶＭ１２ＡでＳＢＹ状態として起動中のアプリケーションをＡＣＴ状態に変更するとともに、物理サーバ１ＢのＶＭ１２ＢでＡＣＴ状態として起動中のアプリケーションをＳＢＹ状態に変更する。これによって、アプリケーションの動作系が変更される。
【００６０】
「２．ＳＢＹ停止」として、物理サーバ間割り当て変更手段２３ｂは、物理サーバ１ＢのＶＭ１２Ｂのアプリケーションを停止させる。この場合でも、アプリケーションは、物理サーバ１Ａで１系統（運用系）が動作している。
【００６１】
「３．ＶＭ移動」として、物理サーバ間割り当て変更手段２３ｂは、ＶＭ１２（アプリケーションを含む）を物理サーバ１Ｂから物理サーバ１Ｃに移動させる。すなわち、物理サーバ間割り当て変更手段２３ｂは、ＶＭ１２（アプリケーションを含む）を物理サーバ１Ｃにコピーし、物理サーバ１Ｂから削除する。このとき、物理サーバ間割り当て変更手段２３ｂは、前記したようにコアの割り当てを変更する。
【００６２】
「４．ＳＢＹ立ち上げ」として、物理サーバ間割り当て変更手段２３ｂは、物理サーバ１ＣのＶＭ１２ＢのアプリケーションをＳＢＹ状態で起動させる。
「５．系切り替え」として、物理サーバ間割り当て変更手段２３ｂは、物理サーバ１ＡのＶＭ１２ＡでＡＣＴ状態として起動中のアプリケーションをＳＢＹ状態に変更するとともに、物理サーバ１ＣのＶＭ１２ＢでＳＢＹ状態として起動中のアプリケーションをＡＣＴ状態に変更する。
【００６３】
なお、ここでは、移動対象のＶＭ１２Ｂのアプリケーションが初期状態においてＡＣＴ状態である場合について説明した。
しかし、移動対象のＶＭ１２Ｂのアプリケーションが初期状態においてＳＢＹ状態である場合、すなわち、アプリケーションが二重化されているＶＭ１２Ａのアプリケーションが初期状態においてＡＣＴ状態である場合、物理サーバ間割り当て変更手段２３ｂは、図１２において、「１．系切り替え」から「４．ＳＢＹ立ち上げ」までの処理を行えばよい。
このように、物理サーバ間割り当て変更手段２３ｂは、アプリケーションのサービスを中断することなく、コアの割り当てを変更することができる。
図３に戻って、仮想マシン配置装置２の構成について説明を続ける。
【００６４】
配置実行手段２４は、配置位置制御手段２１で決定された配置位置に、新規のＶＭ１２を配置するものである。
この配置実行手段２４は、新規のＶＭ１２のプログラムを、配置位置として指定される物理サーバ１に通信部２００を介してコピーし、同じく配置位置として指定されるＣＰＵ１０の空きコアにＶＭ１２の仮想ＣＰＵ１３を割り当てる。
【００６５】
なお、配置実行手段２４は、記憶部２１０に記憶されているリソース管理データ（図５参照）を参照し、指定された物理サーバ１のＣＰＵ１０のコアで未使用のコアに、必要コア数分のＶＭ１２の仮想ＣＰＵを割り当てる。そして、配置実行手段２４は、リソース管理データのＣＰＵ内コアリスト２１３（図５（ｃ）参照）において、割り当てたコアの「使用／未使用」を「使用」に設定するとともに、「使用ＶＭ」に、新たに配置したＶＭ１２の識別情報と仮想ＣＰＵ１３の識別情報とを設定する。
また、配置実行手段２４は、記憶部２１０に記憶されている動作状態リスト２１４（図６参照）において、新規のＶＭ１２のプログラムを識別するＶＭ１２の識別情報を設定するとともに、アプリケーションの識別情報と運用系または待機系のいずれかであるかを示す識別情報（ＡＣＴ／ＳＢＹ）とを設定する。
【００６６】
なお、配置実行手段２４は、外部からＶＭ１２の削除を指示された場合、通信部２００を介して、対応する物理サーバ１に対して、ＶＭ１２の削除を指示し、記憶部２１０のリソース管理データのＣＰＵ内コアリスト（図５（ｃ）参照）と、動作状態リスト（図６参照）とを更新することとする。
【００６７】
以上説明したように仮想マシン配置装置２を構成することで、仮想マシン配置装置２は、ＣＰＵ１０のコア１１に仮想マシン（ＶＭ）１２の仮想ＣＰＵ（ｖＣＰＵ）１３を割り当てて動作させるシステムにおいて、その割り当て処理を自動で行うことができる。
また、仮想マシン配置装置２は、ＶＭ１２の配置によるリソースの獲得、停止によるリソースの回収を繰り返すことによりリソースの断片化が発生した場合でも、コンパクションにより新規に配置するＶＭ１２に対してリソースを確保することができる。
なお、仮想マシン配置装置２は、コンピュータを、前記した各手段として機能させるプログラム（仮想マシン配置プログラム）で動作させることができる。
【００６８】
≪仮想マシン配置装置の動作≫
次に、図１３，図１４を参照（構成については、適宜、図１〜図３参照）して、仮想マシン配置装置２の動作について説明する。
まず、仮想マシン配置装置２は、配置位置制御手段２１に新規のＶＭ１２の配置を指示された場合、空きリソース判定手段２２のＣＰＵ単位リソース判定手段２２ａによって、ＣＰＵ単位でのリソース確保を試みる。
すなわち、空きリソース判定手段２２は、記憶部２１０に記憶されているデータセンタ内物理サーバリスト２１１（図５（ａ）参照）から、最初の物理サーバを選択する（ステップＳ１）。なお、空きリソース判定手段２２は、動作状態リスト２１４（図６参照）を参照して、新たに追加するＶＭ１２のアプリケーションとは異なる他の動作系（運用系または待機系）と同じアプリケーションが動作している場合、その動作している物理サーバは選択から除外する。
【００６９】
そして、ＣＰＵ単位リソース判定手段２２ａは、選択した物理サーバに対応する物理サーバ内ＣＰＵリスト２１２（図５（ｂ）参照）から、最初のＣＰＵを選択する（ステップＳ２）。
【００７０】
そして、ＣＰＵ単位リソース判定手段２２ａは、選択したＣＰＵ１０に対応するＣＰＵ内コアリスト２１３（図５（ｃ）参照）を参照して、新たに配置するＶＭ１２の必要コア数の空きがあるか否かを判定する（ステップＳ３）。すなわち、ＣＰＵ単位リソース判定手段２２ａは、ＣＰＵ内コアリスト２１３で、コア１１の「未使用」の数が、必要コア数以上であるか否かを判定する。
【００７１】
ここで、必要コア数の空きがある場合（ステップＳ３でＹｅｓ）、仮想マシン配置装置２は、配置実行手段２４によって、選択されたＣＰＵを配置位置として、ＶＭ１２を配置する（ステップＳ４）。ここでは、ＣＰＵ単位リソース判定手段２２ａが、選択した物理サーバ１およびＣＰＵ１０の識別情報を配置位置として配置位置制御手段２１に通知し、配置位置制御手段２１が、その配置位置にＶＭ１２を配置する旨を配置実行手段２４に指示することで、ＶＭ１２の配置が実行される。
そして、配置実行手段２４は、記憶部２１０のリソース管理データのＣＰＵ内コアリスト（図５（ｃ）参照）と、動作状態リスト（図６参照）とを更新する（不図示）。
【００７２】
一方、選択されたＣＰＵに必要コア数の空きがない場合（ステップＳ３でＮｏ）、ＣＰＵ単位リソース判定手段２２ａは、物理サーバ内ＣＰＵリスト２１２（図５（ｂ）参照）に次のＣＰＵ１０があるか否かを判定する（ステップＳ５）。
ここで、次のＣＰＵ１０が存在する場合（ステップＳ５でＹｅｓ）、ＣＰＵ単位リソース判定手段２２ａは、次のＣＰＵ１０を選択し（ステップＳ６）、ステップＳ３に動作を戻す。
そして、次のＣＰＵ１０が存在しない場合（ステップＳ５でＮｏ）、ＣＰＵ単位リソース判定手段２２ａは、ステップＳ７（図１４）に動作を移す（Ａ）。
【００７３】
この場合、選択した物理サーバ１内のＣＰＵ単位では、新たなＶＭ１２のためのリソースを確保できないため、仮想マシン配置装置２は、物理サーバ単位リソース判定手段２２ｂによって、選択した物理サーバ全体でのリソース確保を試みる。
【００７４】
すなわち、物理サーバ単位リソース判定手段２２ｂは、選択した物理サーバ１に対応する物理サーバ内ＣＰＵリスト２１２（図５（ｂ）参照）により、当該物理サーバ１に含まれるすべてのＣＰＵ１０に対応するＣＰＵ内コアリスト２１３（図５（ｃ）参照）を参照して、物理サーバ１内に新たに配置するＶＭ１２の必要コア数を確保できるか否かを判定する（ステップＳ７）。このとき、物理サーバ単位リソース判定手段２２ｂは、図７，図８で説明したように、物理サーバ１内でコンパクションによってリソース（必要コア数）を確保できるか否かを判定する。
【００７５】
ここで、必要コア数が確保できる場合（ステップＳ７でＹｅｓ）、仮想マシン配置装置２は、コンパクション実行手段２３の物理サーバ内割り当て変更手段２３ａによって、物理サーバ１内でコンパクションを実行する（ステップＳ８）。ここでは、物理サーバ単位リソース判定手段２２ｂが、コンパクションによってリソースが確保されるコンパクション手順を配置位置制御手段２１に通知し、物理サーバ内割り当て変更手段２３ａが、そのコンパクション手順を実行する。
【００７６】
そして、仮想マシン配置装置２は、配置実行手段２４によって、リソースが確保された配置位置に、ＶＭ１２を配置する（ステップＳ９）。ここでは、物理サーバ単位リソース判定手段２２ｂが、コンパクションによりリソースを確保可能な物理サーバ１およびＣＰＵ１０の識別情報を配置位置として配置位置制御手段２１に通知し、配置位置制御手段２１が、その配置位置にＶＭ１２を配置する旨を配置実行手段２４に指示することで、ＶＭ１２の配置が実行される。
そして、配置実行手段２４は、記憶部２１０のリソース管理データのＣＰＵ内コアリスト（図５（ｃ）参照）と、動作状態リスト（図６参照）とを更新する（不図示）。
【００７７】
一方、選択された物理サーバ１内に必要コア数が確保できない場合（ステップＳ７でＮｏ）、物理サーバ単位リソース判定手段２２ｂは、データセンタ内物理サーバリスト２１１（図５（ａ）参照）に次の物理サーバ１があるか否かを判定する（ステップＳ１０）。
ここで、次の物理サーバが存在する場合（ステップＳ１０でＹｅｓ）、物理サーバ単位リソース判定手段２２ｂは、次の物理サーバ１を選択し（ステップＳ１１）、ステップＳ２（図１３）に動作を戻す（Ｂ）。
【００７８】
なお、物理サーバ単位リソース判定手段２２ｂは、動作状態リスト２１４（図６参照）を参照して、新たに追加するＶＭ１２のアプリケーションとは異なる他の動作系（運用系または待機系）と同じアプリケーションが動作している場合、その動作している物理サーバは選択から除外する。
【００７９】
そして、次の物理サーバ１が存在しない場合（ステップＳ１０でＮｏ）、物理サーバ単位リソース判定手段２２ｂは、ステップＳ１２に動作を移す。
この場合、物理サーバ単位では、新たなＶＭ１２のためのリソースを確保できないため、仮想マシン配置装置２は、全物理サーバリソース判定手段２２ｃによって、すべての物理サーバ１でのリソース確保を試みる。
【００８０】
すなわち、全物理サーバリソース判定手段２２ｃは、データセンタ内物理サーバリスト２１１（図５（ａ）参照）で特定されるすべての物理サーバ１に対応する物理サーバ内ＣＰＵリスト２１２（図５（ｂ）参照）により、すべての物理サーバ１に含まれるすべてのＣＰＵ１０に対応するＣＰＵ内コアリスト２１３（図５（ｃ）参照）を参照して、物理サーバ１内に新たに配置するＶＭ１２の必要コア数を確保できるか否かを判定する（ステップＳ１２）。このとき、全物理サーバリソース判定手段２２ｃは、データセンタＳ内でコンパクションによってリソース（必要コア数）を確保できるか否かを判定する。
【００８１】
ここで、必要コア数が確保できる場合（ステップＳ１２でＹｅｓ）、仮想マシン配置装置２は、コンパクション実行手段２３の物理サーバ間割り当て変更手段２３ｂによって、物理サーバ１間でコンパクションを実行する（ステップＳ１３）。ここでは、全物理サーバリソース判定手段２２ｃが、コンパクションによってリソースが確保されるコンパクション手順を配置位置制御手段２１に通知し、物理サーバ間割り当て変更手段２３ｂが、そのコンパクション手順を実行する。
【００８２】
そして、仮想マシン配置装置２は、配置実行手段２４によって、リソースが確保された配置位置に、ＶＭ１２を配置する（ステップＳ１４）。ここでは、全物理サーバリソース判定手段２２ｃが、コンパクションによりリソースを確保可能な物理サーバ１およびＣＰＵ１０の識別情報を配置位置として配置位置制御手段２１に通知し、配置位置制御手段２１が、その配置位置にＶＭ１２を配置する旨を配置実行手段２４に指示することで、ＶＭ１２の配置が実行される。
【００８３】
そして、配置実行手段２４は、記憶部２１０のリソース管理データのＣＰＵ内コアリスト（図５（ｃ）参照）と、動作状態リスト（図６参照）とを更新する（不図示）。
一方、すべての物理サーバによっても、必要コア数が確保できない場合（ステップＳ１２でＮｏ）、仮想マシン配置装置２は、配置位置制御手段２１によって、図示を省略した表示装置に警告を表示する（ステップＳ１５）。
この場合、データセンタＳ内に新たに物理サーバを追加した後（ステップＳ１６）、新たなＶＭを配置することとする（ステップＳ１７）。
【００８４】
以上の動作によって、仮想マシン配置装置２は、データセンタＳ内のリソース管理を行って、リソースの断片化が発生した場合でも、コンパクションにより新規に配置するＶＭ１２にリソースを確保することができる。
【００８５】
以上、本発明の実施形態について説明したが、本発明はこの実施形態に限定されるものではない。
例えば、ここでは、仮想マシン配置装置２は、配置位置制御手段２１が、外部からＶＭ１２の配置や削除を指示されるたびに、リソース管理データを更新することとした。
しかし、仮想マシン配置装置２は、データセンタＳ内の物理サーバ１から、通信部２００を介して、ＶＭの終了通知を受信することで、配置実行手段２４が、リソースを更新（解放）することとしてもよい。あるいは、配置実行手段２４は定期的にＶＭ１２の動作確認を行って、動作確認のとれないＶＭ１２のリソースを更新（解放）することとしてもよい。
これによって、物理サーバ１が、自発的にＶＭ１２の削除を行った場合でも、仮想マシン配置装置２がリソースを管理することができる。
【００８６】
また、ここでは、空きリソース判定手段２２は、ある物理サーバ１においてＣＰＵ１０ごとにリソースが確保できるか探索し、確保できない場合にその物理サーバ１内でコンパクションを行うことでリソースを確保できるか否かを判定した。すなわち、空きリソース判定手段２２は、ＣＰＵ単位の探索と物理サーバ単位の探索とを、物理サーバ１ごとに順次繰り返してリソースを確保できるか否か判定した。
しかし、空きリソース判定手段２２は、すべての物理サーバ１内のすべてのＣＰＵ１０でリソースが確保できるか探索し、確保できない場合に、物理サーバ単位でコンパクションすることでリソースを確保できるか否かを判定することとしてもよい。すなわち、空きリソース判定手段２２は、すべての物理サーバ１でＣＰＵ単位の探索を行った後、すべての物理サーバ１に対して、物理サーバ単位の探索を行うこととしてもよい。
【符号の説明】
【００８７】
Ｓ      データセンタ（コンピュータシステム）
１      物理サーバ（サーバハード）
１０    ＣＰＵ
１１    コア
１２    仮想マシン（ＶＭ）
１３    仮想ＣＰＵ（ｖＣＰＵ）
２      仮想マシン配置装置
２１    配置位置制御手段
２２    空きリソース判定手段
２２ａ  ＣＰＵ単位リソース判定手段
２２ｂ  物理サーバ単位判定手段
２２ｃ  全物理サーバリソース判定手段
２３    コンパクション実行手段
２３ａ  物理サーバ内割り当て変更手段
２３ｂ  物理サーバ間割り当て変更手段
２４    配置実行手段
２００  通信部（通信手段）
２１０  記憶部（記憶手段）
２２０  制御部（制御手段）
【図１】
0006543219.tif 000002
【図２】
0006543219.tif 000003
【図３】
0006543219.tif 000004
【図４】
0006543219.tif 000005
【図５】
0006543219.tif 000006
【図６】
0006543219.tif 000007
【図７】
0006543219.tif 000008
【図８】
0006543219.tif 000009
【図９】
0006543219.tif 000010
【図１０】
0006543219.tif 000011
【図１１】
0006543219.tif 000012
【図１２】
0006543219.tif 000013
【図１３】
0006543219.tif 000014
【図１４】
0006543219.tif 000015