(57)【要約】【課題】待機状態のＶＭを割り当てる物理マシンを効率的に使用すること。【解決手段】仮想マシン管理装置１０１は、複数のＶＭの組み合わせとして、ＶＭ＿Ａ〜Ｃを抽出する。次に、仮想マシン管理装置１０１は、記憶したリソース量を参照して、ＶＭ＿Ａ〜Ｃのうちの１つのＶＭがＡＣＴ時の必要リソース量と、１つのＶＭ以外の他のＶＭがＳＢＹ時の必要リソース量との合計値が物理サーバｐ＃４のリソース量以下であるか判断する。合計値が物理サーバｐ＃４のリソース量以下である場合、仮想マシン管理装置１０１は、物理サーバｐ＃４に、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）を割り当てる。これにより、仮想マシン管理装置１０１は、物理サーバｐ＃４を効率的に使用することができる。具体的には、物理サーバｐ＃４は、複数のＳＢＹのＶＭを動作させてリソース利用効率を向上させつつ、システム１００の可用性を向上させることができる。【選択図】図１
2017156894.tif 000002
【特許請求の範囲】
【請求項１】
物理マシンと通信可能に接続される仮想マシン管理装置であって、
複数の仮想マシンそれぞれが稼動状態で必要とする第１資源量と、待機状態で必要とする第２資源量と、前記物理マシンの第３資源量とを記憶する記憶部と、
前記記憶部を参照して、複数の仮想マシンの組み合わせを抽出し、抽出した仮想マシンのうち１つの前記第１資源量と、抽出した仮想マシンのうちの当該仮想マシン以外の他の仮想マシンそれぞれの前記第２資源量との合計値が前記第３資源量以下であれば、前記抽出した複数の仮想マシンを待機状態で、前記物理マシンに割り当てる制御部と、
を有することを特徴とする仮想マシン管理装置。
【請求項２】
前記仮想マシン管理装置は、前記物理マシンと、他の物理マシンとに通信可能に接続されており、
前記制御部は、
前記複数の仮想マシンのいずれかの仮想マシンに障害が発生し前記物理マシンに割り当てた前記抽出した複数の仮想マシンのうちのいずれかが稼動状態になったことに応じて、前記いずれかの仮想マシンの前記第１資源量と、前記複数の仮想マシンのうちの前記いずれかの仮想マシン以外の１つの仮想マシンの前記第１資源量と、前記複数の仮想マシンのうちの前記いずれかの仮想マシンおよび当該１つの仮想マシン以外の他の仮想マシンのそれぞれの前記第２資源量との合計値が前記第３資源量より大きければ、前記抽出した複数の仮想マシンのうちの稼動状態になった仮想マシン以外のいずれかを、前記他の物理マシンに移動させる、
ことを特徴とする請求項１に記載の仮想マシン管理装置。
【請求項３】
前記制御部は、
前記抽出した複数の仮想マシンのうちのいずれかが稼動状態になったことに応じて、前記いずれかの仮想マシンの前記第１資源量と、前記複数の仮想マシンのうちの前記いずれかの仮想マシン以外の１つの仮想マシンの前記第１資源量と、前記複数の仮想マシンのうちの前記いずれかの仮想マシンおよび当該１つの仮想マシン以外の他の仮想マシンの前記第２資源量との合計値が前記第３資源量より大きければ、前記抽出した複数の仮想マシンのうちの稼動状態になった仮想マシン以外の仮想マシンから、前記第１資源量が最も大きい仮想マシンを特定し、
特定した前記仮想マシンを、前記他の物理マシンに移動させる、
ことを特徴とする請求項２に記載の仮想マシン管理装置。
【請求項４】
前記資源量は、ＣＰＵのコア数、メモリの記憶容量、ディスクの記憶容量のうちの少なくともいずれか１つであることを特徴とする請求項１〜３のいずれか一つに記載の仮想マシン管理装置。
【請求項５】
複数の物理マシンと、前記複数の物理マシンそれぞれと通信可能に接続される仮想マシン管理装置とを有するシステムであって、
前記仮想マシン管理装置は、
複数の仮想マシンそれぞれが稼動状態で必要とする第１資源量と、待機状態で必要とする第２資源量と、前記複数の物理マシンのうちの物理マシンの第３資源量とを記憶する記憶部を参照して、複数の仮想マシンの組み合わせを抽出し、抽出した仮想マシンのうち１つの前記第１資源量と、抽出した仮想マシンのうちの当該仮想マシン以外の他の仮想マシンそれぞれの前記第２資源量との合計値が前記第３資源量以下であれば、前記抽出した複数の仮想マシンを待機状態で、前記物理マシンに割り当てる、
ことを特徴とするシステム。
【請求項６】
物理マシンと通信可能に接続されるコンピュータが、
複数の仮想マシンそれぞれが稼動状態で必要とする第１資源量と、待機状態で必要とする第２資源量と、前記物理マシンの第３資源量とを記憶する記憶部を参照して、複数の仮想マシンの組み合わせを抽出し、抽出した仮想マシンのうち１つの前記第１資源量と、抽出した仮想マシンのうちの当該仮想マシン以外の他の仮想マシンそれぞれの前記第２資源量との合計値が前記第３資源量以下であれば、前記抽出した複数の仮想マシンを待機状態で、前記物理マシンに割り当てる、
処理を実行することを特徴とする仮想マシン管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン管理装置、システム、および仮想マシン管理方法に関する。
【背景技術】
【０００２】
従来、ある仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）に対応する予備のＶＭを待機させておき、稼動状態のＶＭに障害が発生すると、予備のＶＭが稼動して処理を引き継ぐことにより、サービスの停止を防ぐ技術がある。関連する先行技術として、例えば、予備系ＶＭ数が所定値以下となり、予備系ＶＭの待機時資源量の合計が物理サーバの資源量上限値以下となり、Ｎ台の予備系ＶＭの稼動時資源量の合計分の資源量が確保可能な物理サーバを、予備系ＶＭ配置先とするものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−７５０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、予備のＶＭを割り当てる物理マシンに、どの程度予備のＶＭを割り当てればよいか判断することが難しい。例えば、ある物理マシンに複数の予備のＶＭを割り当てた後、稼動状態のＶＭに障害が発生し、待機状態のＶＭのいずれかが稼動状態のＶＭになった際に、稼動状態のＶＭと待機状態のＶＭとが必要とする資源量の合計が、ある物理マシンの資源量を超えてしまう場合がある。この場合、ある物理マシンに割り当てた、稼動状態のＶＭと待機状態のＶＭとの動作が継続できなくなり、システムの可用性が低下することになる。また、ある物理マシンに１つの待機状態のＶＭを割り当てると、ある物理マシンの資源が十分に使用されない場合がある。
【０００５】
１つの側面では、本発明は、待機状態のＶＭを割り当てる物理マシンを効率的に使用することができる仮想マシン管理装置、システム、および仮想マシン管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、物理マシンと通信可能に接続される仮想マシン管理装置であって、複数の仮想マシンそれぞれが稼動状態で必要とする第１資源量と、待機状態で必要とする第２資源量と、前記物理マシンの第３資源量とを記憶する記憶部を参照して、複数の仮想マシンの組み合わせを抽出し、抽出した仮想マシンのうち１つの前記第１資源量と、抽出した仮想マシンのうちの当該仮想マシン以外の他の仮想マシンそれぞれの前記第２資源量との合計値が前記第３資源量以下であれば、前記抽出した複数の仮想マシンを待機状態で、前記物理マシンに割り当てる仮想マシン管理装置、システム、および仮想マシン管理方法が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、待機状態のＶＭを割り当てる物理マシンを効率的に使用することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかる仮想マシン管理装置１０１の動作例を示す説明図である。
【図２】図２は、移動制御システム２００の構成例を示す説明図である。
【図３】図３は、物理サーバｐのハードウェア構成例を示す説明図である。
【図４】図４は、移動制御システム２００のソフトウェア構成例を示す説明図である。
【図５】図５は、仮想マシン運用管理ソフトウェア４０１の機能構成例を示す説明図である。
【図６】図６は、ハイパーバイザｈｖの機能構成例を示す説明図である。
【図７】図７は、物理サーバリソース情報５１１の記憶内容の一例を示す説明図である。
【図８】図８は、仮想マシン必要リソース情報５１２の記憶内容の一例を示す説明図である。
【図９】図９は、障害発生時におけるＶＭの移動パターンの第１の例を示す説明図である。
【図１０】図１０は、障害発生時におけるＶＭの移動パターンの第２の例を示す説明図である。
【図１１】図１１は、障害発生時におけるＶＭの移動パターンの第３の例を示す説明図である。
【図１２】図１２は、障害発生時におけるＶＭ移動のシーケンス例を示す説明図である。
【図１３】図１３は、仮想マシン運用管理ソフトウェア４０１の処理手順の一例を示すフローチャートである。
【図１４】図１４は、障害が発生した仮想マシンのＳＢＹが存在する物理サーバｐ上で動作するハイパーバイザｈｖの処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示の仮想マシン管理装置、システム、および仮想マシン管理方法の実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかる仮想マシン管理装置１０１の動作例を示す説明図である。システム１００に含まれる仮想マシン管理装置１０１は、システム１００内のＶＭを管理するコンピュータである。仮想マシン管理装置１０１は、例えば、サーバである。具体的には、仮想マシン管理装置１０１は、稼動状態のＶＭに対応する予備のＶＭを待機させておき、稼動状態のＶＭに障害が発生すると、待機状態のＶＭが稼動して処理を引き継ぐことにより、サービスの停止を防ぐ。以下、稼動状態のことを、「ＡＣＴ（ＡＣＴｉｖｅ）」と呼称し、待機状態のことを、「ＳＢＹ（ＳｔａｎｄＢＹ）」と呼称する。また、稼動状態のＶＭを、「ＡＣＴのＶＭ」または「ＶＭ（ＡＣＴ）」と呼称する。同様に、稼動状態のＶＭに障害が発生した際に稼動するために待機する予備のＶＭを、「ＳＢＹのＶＭ」または「ＶＭ（ＳＢＹ）」と呼称する。また、上述したような、同一のシステムを複数用意し、いくつかを待機状態にして、障害時に切り替えて処理を引き継ぐ構成を、ＡＣＴ／ＳＢＹ構成と呼ぶ。
【００１１】
ＶＭとは、コンピュータのハードウェア資源を用いて仮想的に作成されたコンピュータシステムである。ＶＭは、仮想的に作成したコンピュータシステムであればどのようなものでもよく、例えば、他のコンピュータにサービスやデータを提供するサーバでもよいし、サーバによるサービスやデータの提供を受けるコンピュータでもよい。ＶＭに対して、実際のコンピュータやサーバは、物理マシンと呼ばれる。本実施の形態では、物理マシンを、物理サーバと呼ぶ。
【００１２】
また、物理サーバ上で複数のＶＭを動作させるサーバ仮想化技術がある。サーバ仮想化技術を用いることにより、システム全体の物理サーバの数を削減することができる。例えば、１つの物理サーバに複数のＶＭを配置する場合に、物理サーバの資源使用効率の向上や、システム性能の保証を実現するための技術がある。
【００１３】
ここで、物理サーバの資源とは、物理サーバのハードウェア資源のことであり、例えば、物理サーバのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や、物理サーバのメモリ、ディスク等である。以下、物理サーバの資源を、「リソース」と称する。また、リソース量は、物理サーバのＣＰＵのコア数、メモリの記憶容量、ディスクの記憶容量のうちの少なくともいずれか１つである。
【００１４】
例えば、ＡＣＴ／ＳＢＹ構成に、サーバ仮想化技術を適用することにより、ＳＢＹ用の物理サーバ上に、複数のＳＢＹのＶＭを動作させることが考えられる。しかしながら、ＳＢＹ用の物理サーバに、どの程度ＳＢＹのＶＭを割り当てればよいか判断することが難しい。例えば、ＳＢＹ用の物理サーバに複数のＳＢＹのＶＭを割り当てた後、ＡＣＴのＶＭに障害が発生し、複数のＳＢＹのＶＭのいずれかがＡＣＴのＶＭになったとする。この際に、ＡＣＴのＶＭとＳＢＹのＶＭとが必要とするリソース量の合計が、ＳＢＹ用の物理サーバのリソース量を超えてしまう場合がある。この場合、ＡＣＴのＶＭとＳＢＹのＶＭとの動作が継続できなくなり、システム１００の可用性が低下することになる。また、ＳＢＹ用の物理サーバに１つのＳＢＹのＶＭを割り当てると、ＳＢＹ用の物理サーバのリソースの使用率が低下することになり、ＳＢＹ用の物理サーバのリソースが十分に使用されない場合がある。
【００１５】
そこで、本実施の形態では、複数のＳＢＹのＶＭの１つのＶＭにおいて、ＡＣＴ時の資源量と他のＶＭのＳＢＹ時の資源量の合計が、ＳＢＹ用の物理サーバの資源量以下ならば、複数のＳＢＹのＶＭを、ＳＢＹ用の物理サーバに割り当てることについて説明する。
【００１６】
図１を用いて、仮想マシン管理装置１０１の動作例について説明する。図１に示すシステム１００は、物理サーバｐ＃１〜＃４と、仮想マシン管理装置１０１とを含む。物理サーバｐ＃１〜＃４と、仮想マシン管理装置１０１とは通信可能にそれぞれ接続される。また、システム１００は、複数のＡＣＴのＶＭとして、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）が動作している。具体的には、物理サーバｐ＃１上には、ＶＭ＿Ａ（ＡＣＴ）が動作しており、物理サーバｐ＃２上には、ＶＭ＿Ｂ（ＡＣＴ）が動作しており、物理サーバｐ＃３上には、ＶＭ＿Ｃ（ＡＣＴ）が動作している。ここで、仮想マシン管理装置１０１は、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）のそれぞれに対応するＶＭ＿Ａ〜Ｃ（ＳＢＹ）を、空きサーバとして、物理サーバｐ＃４に割り当ててよいかを判断する。
【００１７】
ここで、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）を割り当てるタイミングは、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）を物理サーバｐ＃１〜＃３に割り当てるタイミングと同時でもよいし、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）を割り当てた後でもよい。また、仮想マシン管理装置１０１は、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）を物理サーバｐ＃４以外の物理サーバｐに割り当てた後、全てを物理サーバｐ＃４に割り当ててよいかを判断してもよい。
【００１８】
また、仮想マシン管理装置１０１は、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）のそれぞれが必要とする第１資源量となるリソース量と、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）のそれぞれが必要とする第２資源量となるリソース量と、物理サーバｐ＃１〜＃４が有する第３資源量となるリソース量とを記憶する。以下、ＶＭが必要とするリソース量を、「必要リソース量」と記載する。具体的な記憶内容の一例は、図７、図８で示す。ここで、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）の必要リソース量は、システム１００のサービス運用中に変化することがある。例えば、ＶＭを利用するユーザ数が増えた場合には、該当のＶＭは、必要とするリソース量を増加させる。仮想マシン管理装置１０１は、例えば、定期的に、各ＶＭを動作させる物理サーバｐに問い合わせて、各ＶＭの必要リソース量を取得し、仮想マシン管理装置１０１の記憶領域に記憶する。
【００１９】
また、図１の例では、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）の必要リソース量は、それぞれ、ｒａ＿ａｃｔ〜ｒｃ＿ａｃｔとする。また、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）の必要リソース量は、それぞれ、ｒａ＿ｓｂｙ〜ｒｃ＿ｓｂｙとする。また、物理サーバｐ＃１〜＃４のリソース量は、それぞれ、ｒｐ１〜ｒｐ４とする。そして、図１の例では、ｒａ＿ａｃｔ〜ｒｃ＿ａｃｔ、ｒａ＿ｓｂｙ〜ｒｃ＿ｓｂｙ、ｒｐ１〜ｒｐ４の長さにより、リソース量の大きさを示す。例えば、図１で示すｒａ＿ａｃｔは、ｒａ＿ｓｂｙより長く示されており、ＡＣＴ時の方が必要とするリソース量が多いことを示す。
【００２０】
仮想マシン管理装置１０１は、複数のＶＭの組み合わせを抽出する。例えば、４以上のＶＭの中から、ＶＭ＿Ａ〜Ｃの組み合わせを抽出する。そして、仮想マシン管理装置１０１は、記憶したリソース量を参照して、ＶＭ＿Ａ〜Ｃのうちの１つのＶＭがＡＣＴ時に必要とするリソース量と、１つのＶＭ以外の他のＶＭがＳＢＹ時に必要とするリソース量との合計値が物理サーバｐ＃４のリソース量以下であるか判断する。図１の例では、ＶＭ＿ＡがＡＣＴで、他のＶＭである、ＶＭ＿ＢおよびＶＭ＿ＣがＳＢＹである場合の合計値を、グラフ１０２内の左の長方形として示す。同様に、ＶＭ＿ＢがＡＣＴで、他のＶＭである、ＶＭ＿ＡおよびＶＭ＿ＣがＳＢＹである場合の合計値を、グラフ１０２内の真ん中の長方形として示し、ＶＭ＿ＣがＡＣＴで、他のＶＭである、ＶＭ＿ＡおよびＶＭ＿ＢがＳＢＹである場合の合計値を、グラフ１０２内の右の長方形として示す。
【００２１】
図１の例では、グラフ１０２が示すように、ＶＭ＿ＡがＡＣＴである場合の合計値となるｒａ＿ａｃｔ＋ｒｂ＿ｓｂｙ＋ｒｃ＿ｓｂｙは、ｒｐ４以下となる。同様に、ＶＭ＿ＢがＡＣＴである場合の合計値となるｒａ＿ｓｂｙ＋ｒｂ＿ａｃｔ＋ｒｃ＿ｓｂｙは、ｒｐ４以下となり、ＶＭ＿ＣがＡＣＴである場合の合計値となるｒａ＿ｓｂｙ＋ｒｂ＿ｓｂｙ＋ｒｃ＿ａｃｔは、ｒｐ４以下となる。
【００２２】
１つのＶＭに対する合計値が物理サーバｐ＃４のリソース量以下である場合、仮想マシン管理装置１０１は、物理サーバｐ＃４に、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）を割り当てる。これにより、仮想マシン管理装置１０１は、物理サーバｐ＃４を効率的に使用することができる。具体的には、物理サーバｐ＃４は、複数のＳＢＹのＶＭを動作させてリソース利用効率を向上させつつ、システム１００の可用性を向上させることができる。システム１００の可用性として、具体的には、物理サーバｐ＃４は、複数のＳＢＹのＶＭの１つがＡＣＴになっても、ＶＭの必要リソース量以上のリソース量を物理サーバｐ＃４が有することが担保されているため、そのまま動作を継続することができる。
【００２３】
また、仮想マシン管理装置１０１は、ＶＭ＿Ａ〜Ｃの各ＶＭがＡＣＴである場合の各合計値のいずれもが物理サーバｐ＃４のリソース量以下である場合に限り、物理サーバｐ＃４に、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）を割り当ててもよい。この場合、物理サーバｐ＃４は、複数のＳＢＹのＶＭのどのＶＭがＡＣＴになっても、ＶＭの必要リソース量以上のリソース量を物理サーバｐ＃４が有することが担保されているため、そのまま動作を継続することができる。
【００２４】
また、仮想マシン管理装置１０１は、物理サーバｐ＃４にＶＭ＿Ａ〜Ｃ（ＳＢＹ）を割り当てない場合、４以上のＶＭの中から、ＶＭ＿Ａ〜Ｃの組み合わせとは異なる組み合わせを抽出し、抽出した組合わせに対して、図１で説明した一連の処理を行う。次に、仮想マシン管理装置１０１を、物理サーバｐに適用したシステムの一例を、図２を用いて説明する。
【００２５】
図２は、移動制御システム２００の構成例を示す説明図である。移動制御システム２００は、物理サーバｐ＃１〜６を有する。物理サーバｐ＃１〜＃６は、Ｌ（Ｌａｙｅｒ）２スイッチ２０１に接続する。これにより、物理サーバｐ＃１〜＃６のそれぞれは、Ｌ２スイッチ２０１を介して、他の物理サーバｐとの間で通信が可能である。物理サーバｐ＃６が、図１で示した仮想マシン管理装置１０１に相当する。仮想マシン管理装置１０１の機能は、物理サーバｐ＃６上で動作するソフトウェアが実行されることにより実現する。物理サーバｐ＃１〜＃６上で動作するソフトウェアについては、図４で説明する。
【００２６】
Ｌ２スイッチ２０１は、パケットに宛先情報として含まれるＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスで中継先を判断し、中継動作を行うスイッチである。物理サーバｐ＃１〜＃６上で動作するソフトウェアについては、図４で説明する。次に、物理サーバｐのハードウェア構成を、図３を用いて説明する。
【００２７】
図３は、物理サーバｐのハードウェア構成例を示す説明図である。図３において、物理サーバｐは、ＣＰＵ３０１と、メモリ３０２と、ディスクドライブ３０３およびディスク３０４と、通信インターフェース３０５と、を含む。また、ＣＰＵ３０１〜ディスクドライブ３０３、通信インターフェース３０５はバス３０６によってそれぞれ接続される。
【００２８】
ＣＰＵ３０１は、物理サーバｐの全体の制御を司る演算処理装置である。ＣＰＵ３０１は、複数のプロセッサコアを有してもよい。
【００２９】
メモリ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリや、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００３０】
ディスクドライブ３０３は、ＣＰＵ３０１の制御に従ってディスク３０４に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０３には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０４は、ディスクドライブ３０３の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ３０３が磁気ディスクドライブである場合、ディスク３０４には、磁気ディスクを採用することができる。また、ディスクドライブ３０３が光ディスクドライブである場合、ディスク３０４には、光ディスクを採用することができる。また、ディスクドライブ３０３がソリッドステートドライブである場合、ディスク３０４には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００３１】
通信インターフェース３０５は、ネットワーク等と内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０５は、通信回線を通じてネットワーク等を介して他の装置に接続される。通信インターフェース３０５には、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどを採用することができる。
【００３２】
また、移動制御システム２００の管理者が、物理サーバｐを直接操作する場合、物理サーバｐは、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
【００３３】
図４は、移動制御システム２００のソフトウェア構成例を示す説明図である。移動制御システム２００に含まれる物理サーバｐ＃１〜＃６のうち、物理サーバｐ＃１〜＃３は、ＡＣＴ系の物理サーバである。また、物理サーバｐ＃４、５は、ＳＢＹ系の物理サーバであり、図４の状態では、全てのＳＢＹのＶＭが物理サーバｐ＃４に集約された状態である。また、物理サーバｐ＃６上では、仮想マシン運用管理ソフトウェア４０１が動作する。仮想マシン運用管理ソフトウェア４０１は、ＡＣＴ系のＶＭとＳＢＹ系のＶＭとを管理、制御するソフトウェアである。仮想マシン運用管理ソフトウェア４０１の機能の詳細については、図５で説明する。
【００３４】
ＶＭを動作させ得る物理サーバｐ＃１〜＃５上では、それぞれ、ハイパーバイザｈｖ＃１〜＃５が動作する。ハイパーバイザｈｖは、ハードウェアを直接制御する機能を持ち、ファームウェア層で、仮想化マシンアーキテクチャーを提供するソフトウェアである。このように、本実施の形態では、ハイパーバイザ型によるサーバ仮想化を採用した例を示すが、ホストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）型によるサーバ仮想化に対しても、本実施の形態を適用することができる。
【００３５】
また、ＶＭを動作させる物理サーバｐ＃１〜＃４上では、それぞれ、仮想スイッチｖｓ＃１〜＃４が動作する。仮想スイッチｖｓは、実際のスイッチの機能を行うソフトウェアである。
【００３６】
そして、物理サーバｐ＃１上では、ＶＭ＿Ａ（ＡＣＴ）が動作する。また、物理サーバｐ＃２上では、ＶＭ＿Ｂ（ＡＣＴ）が動作する。また、物理サーバｐ＃３上では、ＶＭ＿Ｃ（ＡＣＴ）が動作する。そして、物理サーバｐ＃４上では、ＶＭ＿Ａ（ＳＢＹ）と、ＶＭ＿Ｂ（ＳＢＹ）と、ＶＭ＿Ｃ（ＳＢＹ）とが動作する。
【００３７】
（仮想マシン運用管理ソフトウェア４０１の機能構成例）
図５は、仮想マシン運用管理ソフトウェア４０１の機能構成例を示す説明図である。仮想マシン運用管理ソフトウェア４０１は、物理サーバｐ＃６が有する制御部５００に含まれる。そして、仮想マシン運用管理ソフトウェア４０１は、通信制御部５０１と、構成／統計情報管理部５０２と、特定部５０３と、ライブマイグレーション管理部５０４と、ＶＭ制御部５０５と、比較部５０６とを有する。ここで、ＶＭ制御部５０５は、割当部５０７と、移動制御部５０８とを有する。制御部５００は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したメモリ３０２、ディスク３０４などである。また、各部の処理結果は、ＣＰＵ３０１のレジスタや、ＣＰＵ３０１のキャッシュメモリ、メモリ３０２等に格納される。
【００３８】
また、仮想マシン運用管理ソフトウェア４０１は、記憶部として、構成／統計情報ＤＢ（ＤａｔａＢａｓｅ）５１０にアクセス可能である。構成／統計情報ＤＢ５１０は、ディスク３０４といった補助記憶装置上に格納される。また、構成／統計情報ＤＢ５１０は、物理サーバリソース情報５１１と、仮想マシン必要リソース情報５１２とを有する。
【００３９】
物理サーバリソース情報５１１は、各物理サーバｐのリソース量を記憶する。物理サーバリソース情報５１１の記憶内容の一例は、図７で示す。仮想マシン必要リソース情報５１２は、各物理サーバｐ上で動作するＶＭの必要リソース量を記憶する。仮想マシン必要リソース情報５１２の記憶内容の一例は、図８で示す。
【００４０】
通信制御部５０１は、他の物理サーバｐとの間でデータ授受制御を行う。構成／統計情報管理部５０２は、移動制御システム２００内で動作しているＶＭの構成や統計情報を他の物理サーバｐ上で動作するハイパーバイザｈｖから取得し、構成／統計情報ＤＢ５１０を用いて管理する。ここで、構成／統計情報管理部５０２は、移動制御システム２００内から動的に情報を取得してもよいし、ＶＭが必要とするリソース量を静的に設定したものを取得してもよい。特定部５０３については、移動制御部５０８の後で説明する。
【００４１】
ライブマイグレーション管理部５０４は、関連するハイパーバイザｈｖと通信を行い、ＶＭのライブマイグレーションを管理する。ここで、ライブマイグレーションとは、あるＶＭで稼動しているＯＳやソフトウェアを停止させずに、あるＶＭを別の物理サーバｐに移動させる技術である。
【００４２】
ＶＭ制御部５０５は、ＶＭ（ＡＣＴ）と、対応するＶＭ（ＳＢＹ）とが同一の物理サーバｐに存在しないように、ＶＭ（ＳＢＹ）の移動先のＶＭを決定して移動指示を出す。より具体的なＶＭ制御部５０５の機能について、割当部５０７と、移動制御部５０８とについて説明する。
【００４３】
割当部５０７は、複数のＶＭの各ＶＭがＡＣＴ時に必要とするリソース量と、他のＶＭがＳＢＹ時に必要とするリソース量との各合計値のいずれもが物理サーバｐ＃４のリソース量以下であれば、複数のＳＢＹのＶＭを物理サーバｐ＃４に割り当てる。なお、各合計値のいずれかが物理サーバｐ＃４のリソース量より大きいのであれば、例えば、割当部５０７は、複数のＳＢＹのＶＭを物理サーバｐ＃４、＃５等に分散して割り当てる。
【００４４】
また、各合計値のいずれもが物理サーバｐ＃４のリソース量以下となるかについての判断方法は、図１で示したように、各合計値を算出し、物理サーバｐ＃４のリソース量と比較してもよいし、他の方法でもよい。ここで、各合計値を算出して、物理サーバｐ＃４のリソース量と比較する際に、割当部５０７は、比較部５０６の比較結果に応じて、複数のＳＢＹのＶＭを物理サーバｐ＃４に割り当てるか、それとも物理サーバｐ＃４、＃５等に分散して割り当てる。
【００４５】
なお、物理サーバｐ＃４に、どのＶＭを、何台搭載するかを、例えば図８の仮想マシン必要リソース情報に示されるＶＭ種別から、その組み合わせを抽出してもよい。具体的には、２台の組み合わせとして、ＶＭ＿ＡとＶＭ＿Ｂを抽出したり、この組み合わせでも物理サーバｐ＃４のリソースに余裕があれば、３台の組み合わせとして、ＶＭ＿Ｃを加えた組み合わせを抽出したりするようにしてもよい。
【００４６】
また、他の方法としては、割当部５０７は、複数のＶＭがＳＢＹ時に必要とするリソース量の合計値を算出し、物理サーバｐ＃４のリソース量から、算出した合計値を減算する。ここで、減算して得られた値を、第１の値とする。次に、割当部５０７は、複数のＶＭの各ＶＭについて、各ＶＭがＡＣＴ時に必要とするリソース量から、各ＶＭがＳＢＹ時に必要とするリソース量を減算する。ここで、減算して得られた値を、第２の値とする。そして、割当部５０７は、第１の値と、各ＶＭに対する第２の値とを比較して、各ＶＭに対する第２の値のいずれもが第１の値以下であれば、複数のＳＢＹのＶＭを物理サーバｐ＃４に割り当てる。
【００４７】
ここで、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）を物理サーバｐ＃４に割り当てた後、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）のうちのいずれか１つに障害が発生し、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）のいずれかのＶＭがＡＣＴになった状態とする。前述の状態において、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）のうちのＡＣＴになったＶＭ以外の他のＶＭは、ＳＢＹのままである。
【００４８】
前述の状態になったことに応じて、移動制御部５０８は、ＡＣＴになったＶＭ、前述の他のＶＭの各ＶＭのＡＣＴ時、他のＶＭの各ＶＭ以外のＶＭのＳＢＹ時のそれぞれの必要リソース量の各合計値のいずれかが物理サーバｐ＃４のリソース量より大きいか判断する。ここで、各合計値のいずれかが物理サーバｐ＃４のリソース量より大きい状態とは、物理サーバｐ＃４上のＳＢＹのＶＭを移動させるべき状態である。そして、各合計値のいずれかが物理サーバｐ＃４のリソース量より大きい場合、ＳＢＹのＶＭを移動させるべきであるため、移動制御部５０８は、前述の他のＶＭ以外のいずれかを物理サーバｐ＃４の他の空き物理サーバｐとして空き物理サーバｐ＃５に移動させる。具体的には、移動制御部５０８は、ハイパーバイザｈｖ４に、前述の他のＶＭ以外のいずれかを移動する指示を出す。前述の他のＶＭ以外のどのＶＭを移動させるかについては、特定部５０３によって特定される。
【００４９】
前述の状態になったことの検出方法としては、例えば、移動制御部５０８は、ＡＣＴになったＶＭが動作している物理サーバｐのハイパーバイザｈｖから送信されたＧＡＲＰ（Ｇｒａｔｕｉｔｏｕｓ  Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）パケットを受信することにより、前述の状態になったことを検出できる。
【００５０】
また、前述の移動制御部５０８の構成の具体例として、例えば、ＶＭ＿Ａ（ＳＢＹ）がＡＣＴになったとする。この場合、移動制御部５０８は、ＶＭ＿Ａ（ＡＣＴ）、前述の他のＶＭの各ＶＭとしてＶＭ＿Ｂ（ＡＣＴ）、各ＶＭ以外となるＶＭ＿Ｃ（ＳＢＹ）のそれぞれの必要リソース量の合計値が物理サーバｐ＃４のリソース量より大きいか判断する。図１の符号を用いて言い換えると、移動制御部５０８は、ｒａ＿ａｃｔ＋ｒｂ＿ａｃｔ＋ｒｃ＿ｓｂｙ＞ｒｐ４となるか判断する。
【００５１】
ここで、合計値が物理サーバｐ＃４のリソース量以下であったとする。この場合、移動制御部５０８は、ＶＭ＿Ａ（ＡＣＴ）、前述の他のＶＭの各ＶＭとしてＶＭ＿Ｃ（ＡＣＴ）、各ＶＭ以外となるＶＭ＿Ｂ（ＳＢＹ）のそれぞれの必要リソース量の合計値が物理サーバｐ＃４のリソース量より大きいか判断する。図１の符号を用いて言い換えると、移動制御部５０８は、ｒａ＿ａｃｔ＋ｒｂ＿ｓｂｙ＋ｒｃ＿ａｃｔ＞ｒｐ４となるか判断する。
【００５２】
ここで、合計値が物理サーバｐ＃４のリソース量を超えていたとする。つまり、ＶＭ＿ＡがＡＣＴ状態で、ＶＭ＿ＢがＳＢＹ状態の時に、ＶＭ＿ＣがＡＣＴ状態となると、物理サーバのリソース量を超えることとなる。これは、各合計値のいずれかが物理サーバｐ＃４のリソース量より大きいことに相当する。この場合、移動制御部５０８は、ハイパーバイザｈｖ４に、特定部５０３が特定したＶＭを、物理サーバｐ＃５に移動する指示を出す。
【００５３】
また、リソースの空きを持つ物理サーバｐが複数ある場合もある。この場合、移動制御部５０８は、ＣＰＵ３０１、メモリ３０２、ディスク３０４の中で、移動制御システム２００の運用者によって指定されたリソースについて、使用されていないリソースを最も多く有する物理サーバｐへ特定部５０３が特定したＶＭを移動させる。
【００５４】
特定部５０３は、物理サーバｐ上のＳＢＹのＶＭを移動させるべき状態である場合に、物理サーバｐ内のＳＢＹのＶＭから、必要リソース量が最も大きいＶＭを特定する。より具体的には、特定部５０３は、ＣＰＵ３０１、メモリ３０２、ディスク３０４のいずれかの使用率が高いＶＭから順番に特定する。ＣＰＵ３０１、メモリ３０２、ディスク３０４のいずれを見て判断するかについては、移動制御システム２００の運用者によって指定することができる。また、移動制御システム２００の運用者による指定がない場合には、特定部５０３は、例えば、デフォルトの指定として、ＣＰＵ３０１の使用率が最も高いＶＭを特定する。
【００５５】
比較部５０６は、構成／統計情報ＤＢ５１０を参照して、物理サーバｐのリソース量と、ＶＭの必要リソース量とを比較する。具体的には、比較部５０６は、物理サーバｐのリソースとして、ＣＰＵ３０１のコア数、メモリ３０２の記憶容量、ディスク３０４の記憶容量を比較する。
【００５６】
（ハイパーバイザｈｖの機能構成例）
図６は、ハイパーバイザｈｖの機能構成例を示す説明図である。ハイパーバイザｈｖは、通信制御部６０１と、構成／統計情報管理部６０２と、ライブマイグレーション制御部６０３と、仮想マシン管理部６０４とを有する。ハイパーバイザｈｖが有する各機能は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したメモリ３０２、ディスク３０４などである。また、各部の処理結果は、ＣＰＵ３０１のレジスタや、ＣＰＵ３０１のキャッシュメモリ、メモリ３０２等に格納される。
【００５７】
また、ハイパーバイザｈｖは、構成／統計情報ＤＢ６１０にアクセス可能である。構成／統計情報ＤＢ６１０は、ディスク３０４といった補助記憶装置上に格納される。
【００５８】
通信制御部６０１は、他の物理サーバｐとの間でデータ授受制御を行う。構成／統計情報管理部６０２は、自ハイパーバイザ上で動作しているＶＭの構成や統計情報を管理し、仮想マシン運用管理ソフトウェア４０１に構成／統計情報を送信する。ライブマイグレーション制御部６０３は、ＶＭのライブマイグレーション制御を行う。仮想マシン管理部６０４は、ＶＭと仮想スイッチの管理を行う。構成／統計情報ＤＢ６１０は、物理サーバリソース情報５１１のうちの自身の物理サーバｐのリソース量と、仮想マシン必要リソース情報５１２のうちの自身の物理サーバｐ上で動作するＶＭの必要リソース量とを記憶する。
【００５９】
図７は、物理サーバリソース情報５１１の記憶内容の一例を示す説明図である。図７に示す物理サーバリソース情報５１１は、レコード７０１−１、４を有する。
【００６０】
物理サーバリソース情報５１１は、物理サーバと、ＣＰＵと、メモリと、ディスクというフィールドを含む。物理サーバフィールドには、物理サーバｐを識別する値が格納される。ＣＰＵフィールドには、物理サーバｐが有するＣＰＵのコア数が格納される。メモリフィールドには、物理サーバｐが有するメモリの記憶容量を示す値が格納される。ディスクフィールドには、物理サーバｐが有するディスクの記憶容量を示す値が格納される。
【００６１】
例えば、レコード７０１−１は、物理サーバｐ＃１のＣＰＵが、３２コアを有し、物理サーバｐ＃１のメモリの記憶容量が、１９２［ＧＢ］であり、物理サーバｐ＃１のディスクの記憶容量が３［ＴＢ］であることを示す。ここで、各物理サーバｐは、自身が有する情報、すなわち、物理サーバリソース情報５１１の１レコード分の情報を、仮想マシン運用管理ソフトウェア４０１の構成／統計情報管理部５０２に送信する。
【００６２】
図８は、仮想マシン必要リソース情報５１２の記憶内容の一例を示す説明図である。図８に示す仮想マシン必要リソース情報５１２は、レコード８０１＿１〜６を有する。
【００６３】
仮想マシン必要リソース情報５１２は、ＶＭと、ＣＰＵと、メモリと、ディスクというフィールドを含む。ＶＭフィールドには、ＶＭと、ＡＣＴまたはＳＢＹとの組み合わせを識別する値が格納される。ＣＰＵフィールドには、組み合わせに応じたＶＭが必要とするＣＰＵのコア数が格納される。メモリフィールドには、組み合わせに応じたＶＭが必要とするメモリの記憶容量を示す値が格納される。ディスクフィールドには、組み合わせに応じたＶＭが必要とするディスクを示す値が格納される。
【００６４】
例えば、レコード８０１−１は、ＶＭ＿Ａ（ＡＣＴ）が必要とするＣＰＵのコア数がＮであり、メモリの記憶容量が２０［ＧＢ］であり、ディスクの記憶容量が８０［ＧＢ］であることを示す。ここで、各物理サーバｐは、自身が有する情報、すなわち、各物理サーバ上で動作するＶＭの必要リソース量を、仮想マシン運用管理ソフトウェア４０１の構成／統計情報管理部５０２に送信する。また、ＶＭの必要リソース量は、移動制御システム２００のサービス運用中に変化することがある。
【００６５】
次に、障害発生時におけるＶＭの３つの移動パターンについて、図９〜図１１を用いて説明する。図９〜図１１では、図４に示した状態から、ＶＭ＿Ａ（ＡＣＴ）に障害が発生した際に起こり得るＶＭの移動パターンについて説明する。また、図９〜図１１では、説明の簡略化のため、物理サーバのリソースを、ＣＰＵのコア数に限定して説明する。物理サーバｐ＃４のコア数や、ＶＭが必要とするＣＰＵのコア数については、図７、図８で示した値を用いて説明する。具体的には、レコード７０１−４で示すように、物理サーバ＃４のコア数がＭであるとする。また、レコード８０１−１〜６で示すように、ＶＭ＿Ａ（ＡＣＴ）、ＶＭ＿Ａ（ＳＢＹ）、ＶＭ＿Ｂ（ＡＣＴ）、ＶＭ＿Ｂ（ＳＢＹ）、ＶＭ＿Ｃ（ＡＣＴ）、ＶＭ＿Ｃ（ＳＢＹ）が必要とするコア数が、それぞれ、Ｎ、Ｏ、Ｐ、Ｑ、Ｒ、Ｓであるとする。
【００６６】
図９は、障害発生時におけるＶＭの移動パターンの第１の例を示す説明図である。図９で示すＶＭの移動パターンは、ＶＭ＿Ａ（ＡＣＴ）に障害が発生し、物理サーバｐ＃４上で動作したＶＭ＿Ａ（ＳＢＹ）が、ＶＭ＿Ａ（ＡＣＴ）に切り替わるパターンである。図９の状態では、Ｍ≧Ｎ＋Ｑ＋Ｓとなる。さらに、Ｍ≧Ｎ＋Ｐ＋ＳおよびＭ≧Ｎ＋Ｑ＋Ｒとなる。Ｍ≧Ｎ＋Ｐ＋Ｓとなることにより、図９の状態から、ＶＭ＿Ｂ（ＡＣＴ）に障害が発生し、物理サーバｐ＃４上で動作するＶＭ＿Ｂ（ＳＢＹ）がＶＭ＿Ｂ（ＡＣＴ）に切り替わっても、物理サーバｐ＃４のリソースが不足しないことを示す。同様に、Ｍ≧Ｎ＋Ｑ＋Ｒとなることにより、図９の状態から、ＶＭ＿Ｃ（ＡＣＴ）に障害が発生し、物理サーバｐ＃４上で動作するＶＭ＿Ｃ（ＳＢＹ）がＶＭ＿Ｃ（ＡＣＴ）に切り替わっても、物理サーバｐ＃４のリソースが不足しないことを示す。
【００６７】
図１０は、障害発生時におけるＶＭの移動パターンの第２の例を示す説明図である。図９で示した移動パターンから、さらに、１つのＶＭ（ＳＢＹ）が移動するパターンである。図１０の状態では、Ｍ＜Ｎ＋Ｐ＋ＳまたはＭ＜Ｎ＋Ｑ＋Ｒとなった状態である。すなわち、ＶＭ＿Ｂ（ＡＣＴ）またはＶＭ＿Ｃ（ＡＣＴ）に障害が発生し、物理サーバｐ＃４上で動作するＶＭ＿Ｂ（ＳＢＹ）、ＶＭ＿Ｃ（ＳＢＹ）のいずれかがＶＭ（ＡＣＴ）に切り替わると、物理サーバｐ＃４のリソースが不足することを示す。そのため、仮想マシン運用管理ソフトウェア４０１は、ＶＭ＿Ｂ（ＳＢＹ）、ＶＭ＿Ｃ（ＳＢＹ）のいずれか一方を、空きサーバとして、物理サーバｐ＃５に移動させる。
【００６８】
図１０の例では、Ｒ＞Ｐであったとして、仮想マシン運用管理ソフトウェア４０１は、必要とするコア数が多いＶＭ＿Ｃ（ＳＢＹ）を、物理サーバｐ＃５に移動させる。
【００６９】
図１１は、障害発生時におけるＶＭの移動パターンの第３の例を示す説明図である。図９で示した移動パターンから、さらに、２つのＶＭ（ＳＢＹ）が移動するパターンである。図１１の状態では、Ｍ＜Ｎ＋Ｐ＋Ｒとなった状態である。すなわち、ＶＭ＿Ｂ（ＡＣＴ）およびＶＭ＿Ｃ（ＡＣＴ）に障害が発生し、物理サーバｐ＃４上で動作するＶＭ＿Ｂ（ＳＢＹ）がＶＭ＿Ｂ（ＡＣＴ）に、ＶＭ＿Ｃ（ＳＢＹ）がＶＭ＿Ｃ（ＡＣＴ）に切り替わると、物理サーバｐ＃４のリソースが不足することを示す。そのため、仮想マシン運用管理ソフトウェア４０１は、ＶＭ＿Ｂ（ＳＢＹ）、ＶＭ＿Ｃ（ＳＢＹ）を、物理サーバｐ＃５に移動させる。
【００７０】
図９〜図１１では、ＣＰＵのコア数について説明したが、仮想マシン運用管理ソフトウェア４０１は、メモリやディスクの記憶容量も考慮して、リソース不足が発生しないようにＶＭの移動を指示する。ここで、リソース不足とは、ある物理サーバｐ上に存在するＡＣＴのＶＭと、ＳＢＹのＶＭとの必要リソース量の合計値が、ある物理サーバｐのリソース量を超えた状態を示す。次に、図１０の状態における移動パターンをシーケンスとした例を、図１２を用いて説明する。
【００７１】
図１２は、障害発生時におけるＶＭ移動のシーケンス例を示す説明図である。仮想マシン運用管理ソフトウェア４０１は、ハイパーバイザｈｖ＃１〜＃５に対して、定期的に、ＣＰＵ使用率等のリソースを確認する（ステップＳ１２０１）。また、ハイパーバイザｈｖ＃４は、自身の物理サーバｐ＃４に、ＳＢＹのＶＭが存在するため、ＳＢＹのＶＭに対応するＡＣＴのＶＭが存在する物理サーバｐ＃１のハイパーバイザｈｖ１に、キープアライブで一定時間ごとに応答確認する（ステップＳ１２０２）。そして、図１２で示すように、ＶＭ＿Ａ（ＡＣＴ）に障害が発生したとする。
【００７２】
障害が発生すると、応答がなくなるため、ハイパーバイザｈｖ＃４は、例えば、３回連続で応答がない場合、障害を検知する（ステップＳ１２０３）。そして、ハイパーバイザｈｖ＃４は、ＶＭ＿Ａ（ＳＢＹ）をＡＣＴに切り替える（ステップＳ１２０４）。切り替わったＶＭ＿Ａ（ＡＣＴ）は、サービスを継続する。
【００７３】
また、切り替わった際に、ハイパーバイザｈｖ＃４は、切り替わったＶＭ＿Ａ（ＡＣＴ）に関するＧＡＲＰパケットをブロードキャストする（ステップＳ１２０５）。
【００７４】
そして、仮想マシン運用管理ソフトウェア４０１は、ＧＡＲＰパケットの受信を契機として、ＧＡＲＰパケットの送信先の物理サーバｐ＃４のリソースを確認する（ステップＳ１２０６）。ＧＡＲＰパケットの送信先の物理サーバｐのリソース量と、該当の物理サーバｐ上のＶＭの必要リソース量とを仮想マシン運用管理ソフトウェア４０１が比較し、ＶＭを移動させるべきか否かを判断する。図１２の例では、比較した結果、リソース不足であると判断する。そして、仮想マシン運用管理ソフトウェア４０１は、移動ＶＭおよび、移動先の物理サーバｐを決定する。そして、仮想マシン運用管理ソフトウェア４０１は、移動ＶＭを移動先に移動させるというライブマイグレーション実行を、ハイパーバイザｈｖ＃４に指示する（ステップＳ１２０７）。そして、ハイパーバイザｈｖ＃４は、指示に従って、ライブマイグレーションを実行する（ステップＳ１２０８）。次に、ハイパーバイザｈｖ＃４は、ハイパーバイザｈｖ＃５に対して、移動ＶＭのメモリコピーを行う（ステップＳ１２０９）。
【００７５】
ＶＭが移動してきたため、ハイパーバイザｈｖ＃５は、移動してきたＶＭに関するＧＡＲＰパケットをブロードキャストする（ステップＳ１２１０）。そして、仮想マシン運用管理ソフトウェア４０１は、ＧＡＲＰパケットの受信を契機として、ＧＡＲＰパケットの送信先の物理サーバｐ＃５のリソースを確認する（ステップＳ１２１１）。このように、仮想マシン運用管理ソフトウェア４０１は、リソース不足が発生しなくなるまで、ＳＢＹのＶＭを空き物理サーバｐへ移動させ、リソース不足が発生しなくなればＶＭの移動を終了する。
【００７６】
次に、仮想マシン運用管理ソフトウェア４０１の一連の処理のフローチャートを、図１３で示し、障害が発生した仮想マシンのＳＢＹが存在する物理サーバ上で動作するハイパーバイザｈｖの一連の処理のフローチャートを、図１４で示す。
【００７７】
図１３は、仮想マシン運用管理ソフトウェア４０１の処理手順の一例を示すフローチャートである。仮想マシン運用管理ソフトウェア４０１は、一定時間ごとに物理サーバｐのリソース状況を確認する（ステップＳ１３０１）。具体的には、仮想マシン運用管理ソフトウェア４０１は、物理サーバリソース情報５１１と仮想マシン必要リソース情報５１２とを読み出す。そして、仮想マシン運用管理ソフトウェア４０１は、読み出した情報を参照して、確認した物理サーバｐでリソースの不足が発生したか否かを判断する（ステップＳ１３０２）。確認した物理サーバｐでリソースの不足が発生した場合（ステップＳ１３０２：Ｙｅｓ）、仮想マシン運用管理ソフトウェア４０１は、ＶＭ制御部５０５によって、特定部５０３が決定したＶＭを移動させるというライブマイグレーション実行を、ＶＭ制御部５０５が選んだ物理サーバｐへ指示する（ステップＳ１３０３）。次に、仮想マシン運用管理ソフトウェア４０１は、ＧＡＲＰパケットを受信したか否かを判断する（ステップＳ１３０４）。一方、確認した物理サーバｐでリソースの不足が発生していない場合（ステップＳ１３０２：Ｎｏ）にも、仮想マシン運用管理ソフトウェア４０１は、ＧＡＲＰパケットを受信したか否かを判断する（ステップＳ１３０５）。
【００７８】
ＧＡＲＰパケットを受信した場合（ステップＳ１３０４：Ｙｅｓ、ステップＳ１３０５：Ｙｅｓ）、仮想マシン運用管理ソフトウェア４０１は、ＧＡＲＰパケット送信元の物理サーバｐのリソース状況を確認する（ステップＳ１３０６）。そして、仮想マシン運用管理ソフトウェア４０１は、ステップＳ１３０２の処理に移行する。
【００７９】
一方、ＧＡＲＰパケットを受信していない場合（ステップＳ１３０４：Ｎｏ、ステップＳ１３０５：Ｎｏ）、仮想マシン運用管理ソフトウェア４０１は、一連の処理を終了する。
【００８０】
図１４は、障害が発生した仮想マシンのＳＢＹが存在する物理サーバｐ上で動作するハイパーバイザｈｖの処理手順の一例を示すフローチャートである。ハイパーバイザｈｖは、キープアライブ機能を用いて一定時間ＶＭからの応答がないと、該当のＶＭの障害を検知する（ステップＳ１４０１）。次に、ハイパーバイザｈｖは、障害が発生したＶＭのＳＢＹ側をＡＣＴに切り替える（ステップＳ１４０２）。そして、切り替えたことを通知するために、ハイパーバイザｈｖは、ＧＡＲＰをブロードキャストする（ステップＳ１４０３）。
【００８１】
ここで、ステップＳ１３０３の処理で説明したように、仮想マシン運用管理ソフトウェア４０１は、ハイパーバイザｈｖにマイグレーション実行を指示することがある。従って、ハイパーバイザｈｖは、ライブマイグレーション実行の指示を受信したか否かを判断する（ステップＳ１４０４）。ライブマイグレーション実行の指示を受信した場合（ステップＳ１４０４：Ｙｅｓ）、ハイパーバイザｈｖは、特定部５０３が選んだＶＭをＶＭ制御部５０５が選んだ物理サーバｐへライブマイグレーションで移動する（ステップＳ１４０５）。引き続き、ライブマイグレーション実行の指示を受信することがあるため、ハイパーバイザｈｖは、ステップＳ１４０４の処理に移行する。
【００８２】
一方、ライブマイグレーション実行の指示を受信していない場合（ステップＳ１４０４：Ｎｏ）、ハイパーバイザｈｖは、一連の処理を終了する。
【００８３】
以上説明したように、仮想マシン運用管理ソフトウェア４０１は、複数のＳＢＹのＶＭのどのＶＭでもＡＣＴ時の資源量と他のＶＭのＳＢＹ時の資源量の合計がＳＢＹ用の物理サーバの資源量以下ならば、複数のＳＢＹのＶＭを、ＳＢＹ用の物理サーバに割り当てる。これにより、仮想マシン運用管理ソフトウェア４０１は、複数のＳＢＹのＶＭを動作させてリソース利用効率を向上させつつ、システム１００の可用性を向上させることができる。
【００８４】
また、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）を物理サーバｐ＃４に割り当てた後、ＶＭ＿Ａ〜Ｃ（ＡＣＴ）のうちのいずれか１つに障害が発生し、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）のいずれかのＶＭがＡＣＴになった状態とする。前述の状態において、ＶＭ＿Ａ〜Ｃ（ＳＢＹ）のうちのＡＣＴになったＶＭ以外の他のＶＭは、ＳＢＹのままである。この際、仮想マシン運用管理ソフトウェア４０１は、ＡＣＴになったＶＭ、前述の他のＶＭの各ＶＭのＡＣＴ時、他のＶＭの各ＶＭ以外のＶＭのＳＢＹ時のそれぞれの必要リソース量の各合計値のいずれかが物理サーバｐ＃４のリソース量より大きいか判断する。そして、仮想マシン運用管理ソフトウェア４０１は、各合計値のいずれかが物理サーバｐのリソース量より大きいと判断した場合、前述の他のＶＭ以外のいずれかを、他の空き物理サーバｐに移動させる。
【００８５】
これにより、移動制御システム２００は、１つのＶＭに障害が発生して、ＳＢＹ用の物理サーバｐ上でＡＣＴのＶＭが動作する状態でも、移動制御システム２００の可用性を向上させることができる。具体的には、移動制御システム２００は、ＳＢＹ用の物理サーバｐ上でＡＣＴのＶＭがさらにもう一つ増えたとしても、ＶＭの必要リソース量以上のリソース量を、ＳＢＹ用の物理サーバｐが有することが担保されているため、そのまま動作を継続することができる。
【００８６】
また、ＳＢＹ用の物理サーバｐ上のＳＢＹのＶＭを移動させるべき状態となった場合に、仮想マシン運用管理ソフトウェア４０１は、ＳＢＹ用の物理サーバｐ上のＳＢＹのＶＭのうち、必要リソース量が最も大きいＶＭを移動させてもよい。これにより、必要リソース量が最も大きいＶＭ以外のＶＭを移動させるのに対して、移動回数を減らすことを図ることができる。
【００８７】
また、物理サーバｐのリソースとＶＭの必要リソースとについて、比較する対象のリソースは、ＣＰＵ３０１、メモリ３０２、ディスク３０４のいずれかまたは全てでもよく、ＣＰＵ３０１、メモリ３０２、ディスク３０４のうちの２つの組み合わせでもよい。または、比較する対象のリソースは、ＣＰＵ３０１、メモリ３０２、ディスク３０４のうちの移動制御システム２００の運用者が指定したリソースでもよい。これにより、移動制御システム２００は、移動制御システム２００の運用者が重視したいリソース不足が発生しないように、運用を継続することができる。
【００８８】
なお、本実施の形態で説明した仮想マシン管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本仮想マシン管理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本仮想マシン管理プログラムは、インターネット等のネットワークを介して配布してもよい。
【００８９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００９０】
（付記１）物理マシンと通信可能に接続される仮想マシン管理装置であって、
複数の仮想マシンそれぞれが稼動状態で必要とする第１資源量と、待機状態で必要とする第２資源量と、前記物理マシンの第３資源量とを記憶する記憶部と、
前記記憶部を参照して、複数の仮想マシンの組み合わせを抽出し、抽出した仮想マシンのうち１つの前記第１資源量と、抽出した仮想マシンのうちの当該仮想マシン以外の他の仮想マシンそれぞれの前記第２資源量との合計値が前記第３資源量以下であれば、前記抽出した複数の仮想マシンを待機状態で、前記物理マシンに割り当てる制御部と、
を有することを特徴とする仮想マシン管理装置。
【００９１】
（付記２）前記仮想マシン管理装置は、前記物理マシンと、他の物理マシンとに通信可能に接続されており、
前記制御部は、
前記複数の仮想マシンのいずれかの仮想マシンに障害が発生し前記物理マシンに割り当てた前記抽出した複数の仮想マシンのうちのいずれかが稼動状態になったことに応じて、前記いずれかの仮想マシンの前記第１資源量と、前記複数の仮想マシンのうちの前記いずれかの仮想マシン以外の１つの仮想マシンの前記第１資源量と、前記複数の仮想マシンのうちの前記いずれかの仮想マシンおよび当該１つの仮想マシン以外の他の仮想マシンのそれぞれの前記第２資源量との合計値が前記第３資源量より大きければ、前記抽出した複数の仮想マシンのうちの稼動状態になった仮想マシン以外のいずれかを、前記他の物理マシンに移動させる、
ことを特徴とする付記１に記載の仮想マシン管理装置。
【００９２】
（付記３）前記制御部は、
前記抽出した複数の仮想マシンのうちのいずれかが稼動状態になったことに応じて、前記いずれかの仮想マシンの前記第１資源量と、前記複数の仮想マシンのうちの前記いずれかの仮想マシン以外の１つの仮想マシンの前記第１資源量と、前記複数の仮想マシンのうちの前記いずれかの仮想マシンおよび当該１つの仮想マシン以外の他の仮想マシンの前記第２資源量との合計値が前記第３資源量より大きければ、前記抽出した複数の仮想マシンのうちの稼動状態になった仮想マシン以外の仮想マシンから、前記第１資源量が最も大きい仮想マシンを特定し、
特定した前記仮想マシンを、前記他の物理マシンに移動させる、
ことを特徴とする付記２に記載の仮想マシン管理装置。
【００９３】
（付記４）前記資源量は、ＣＰＵのコア数、メモリの記憶容量、ディスク記憶容量のうちの少なくとも１つであることを特徴とする付記１〜３のいずれか一つに記載の仮想マシン管理装置。
【００９４】
（付記５）複数の物理マシンと、前記複数の物理マシンそれぞれと通信可能に接続される仮想マシン管理装置とを有するシステムであって、
前記仮想マシン管理装置は、
複数の仮想マシンそれぞれが稼動状態で必要とする第１資源量と、待機状態で必要とする第２資源量と、前記複数の物理マシンのうちの物理マシンの第３資源量とを記憶する記憶部を参照して、複数の仮想マシンの組み合わせを抽出し、抽出した仮想マシンのうち１つの前記第１資源量と、抽出した仮想マシンのうちの当該仮想マシン以外の他の仮想マシンそれぞれの前記第２資源量との合計値が前記第３資源量以下であれば、前記抽出した複数の仮想マシンを待機状態で、前記物理マシンに割り当てる、
ことを特徴とするシステム。
【００９５】
（付記６）物理マシンと通信可能に接続されるコンピュータが、
複数の仮想マシンそれぞれが稼動状態で必要とする第１資源量と、待機状態で必要とする第２資源量と、前記物理マシンの第３資源量とを記憶する記憶部を参照して、複数の仮想マシンの組み合わせを抽出し、抽出した仮想マシンのうち１つの前記第１資源量と、抽出した仮想マシンのうちの当該仮想マシン以外の他の仮想マシンそれぞれの前記第２資源量との合計値が前記第３資源量以下であれば、前記抽出した複数の仮想マシンを待機状態で、前記物理マシンに割り当てる、
処理を実行することを特徴とする仮想マシン管理方法。
【００９６】
（付記７）物理マシンと通信可能に接続されるコンピュータに、
複数の仮想マシンそれぞれが稼動状態で必要とする第１資源量と、待機状態で必要とする第２資源量と、前記物理マシンの第３資源量とを記憶する記憶部から、前記第１資源量と前記第２資源量と前記第３資源量とを読み出し、
読み出した前記第１資源量と前記第２資源量と前記第３資源量とを参照して、複数の仮想マシンの組み合わせを抽出し、抽出した仮想マシンのうち１つの前記第１資源量と、抽出した仮想マシンのうちの当該仮想マシン以外の他の仮想マシンそれぞれの前記第２資源量との合計値が前記第３資源量以下であれば、前記抽出した複数の仮想マシンを待機状態で、前記物理マシンに割り当てる、
処理を実行させることを特徴とする仮想マシン管理プログラム。
【符号の説明】
【００９７】
ｐ  物理サーバ
１００  システム
１０１  仮想マシン管理装置
２００  移動制御システム
３０１  ＣＰＵ
３０２  メモリ
３０４  ディスク
４０１  仮想マシン運用管理ソフトウェア
５００  制御部
５０１  通信制御部
５０２  構成／統計情報管理部
５０３  特定部
５０４  ライブマイグレーション管理部
５０５  ＶＭ制御部
５０６  比較部
５０７  割当部
５０８  移動制御部
５１０  構成／統計情報ＤＢ
５１１  物理サーバリソース情報
５１２  仮想マシン必要リソース情報
【図１】
2017156894.tif 000003
【図２】
2017156894.tif 000004
【図３】
2017156894.tif 000005
【図４】
2017156894.tif 000006
【図５】
2017156894.tif 000007
【図６】
2017156894.tif 000008
【図７】
2017156894.tif 000009
【図８】
2017156894.tif 000010
【図９】
2017156894.tif 000011
【図１０】
2017156894.tif 000012
【図１１】
2017156894.tif 000013
【図１２】
2017156894.tif 000014
【図１３】
2017156894.tif 000015
【図１４】
2017156894.tif 000016