(57)【要約】【課題】  本発明は、リソースプール間でリソースを融通することを目的とする。【解決手段】  未使用のリソースのないリソースプールと、未使用のリソースのあるリソースプールを特定し、前記特定した未使用のリソースのあるリソースプールに所属する物理サーバのなかで未使用のリソースのある物理サーバを複数特定し、前記特定された物理サーバ上で動作する仮想マシンのリソース容量と、前記仮想マシンのある物理サーバ以外の他の物理サーバの未使用リソースの容量をそれぞれ比較して、前記物理サーバ上で動作する仮想マシンを前記他の物理サーバへ移動可能な場合に、前記物理サーバ上で動作する仮想マシンを前記他の物理サーバへ移動させて、仮想マシンの割当がない物理サーバを作成し、前記仮想マシンの割当がない物理サーバを、前記前記未使用のリソースのないリソースプールへ所属させることを特徴とする。【選択図】図１
2015046076.tif 000002
【特許請求の範囲】
【請求項１】
未使用のリソースのないリソースプールと、未使用のリソースのあるリソースプールを特定し、前記特定した未使用のリソースのあるリソースプールに所属する物理サーバのなかで未使用のリソースのある物理サーバを複数特定し、
前記特定された物理サーバ上で動作する仮想マシンのリソース容量と、前記仮想マシンのある物理サーバ以外の特定された他の物理サーバの未使用リソースの容量をそれぞれ比較して、前記物理サーバ上で動作する仮想マシンを前記他の物理サーバへ移動可能な場合に、前記物理サーバ上で動作する仮想マシンを前記他の物理サーバへ移動させて、仮想マシンの割当がない物理サーバを作成し、
前記仮想マシンの割当がない物理サーバを、前記未使用のリソースのないリソースプールへ所属させる
ことを特徴とするリソース管理装置。
【請求項２】
請求項１に記載のリソース管理装置は、
更に、
前記特定された複数の物理サーバのうち、リソース使用値の最も低い第一の物理サーバのリソース使用値と、リソース使用値の低い第二の物理サーバのリソース未使用値を比較して、前記第二の物理サーバのリソース未使用値のほうが高くなる場合に、前記第一の物理サーバで動作する仮想マシンを、前記第二の物理サーバへ移動させて、仮想マシンの割当がない物理サーバを作成する
ことを特徴とするリソース管理装置。
【請求項３】
請求項１または２のいずれかに記載のリソース管理装置は、
更に、
前記未使用のリソースのないリソースプールをリソース不足のあるリソースプールとして特定する
ことを特徴とするリソース管理装置。
【請求項４】
請求項１乃至３のいずれか一項に記載のリソース管理装置は、
更に、
未使用のリソースが一番大きいリソースプールを特定し、前記特定した未使用のリソースが最も高いリソースプールに所属する物理サーバのなかで未使用のリソースのある物理サーバを特定する
ことを特徴とするリソース管理装置。
【請求項５】
未使用のリソースのないリソースプールと、未使用のリソースのあるリソースプールを特定するステップと、
前記特定した未使用のリソースのあるリソースプールに所属する物理サーバのなかで未使用のリソースのある物理サーバを複数特定するステップと、
前記特定された物理サーバ上で動作する仮想マシンのリソース容量と、前記仮想マシンのある物理サーバ以外の他の物理サーバの未使用リソースの容量をそれぞれ比較して前記物理サーバ上で動作する仮想マシンを他の物理サーバへ移動可能な場合に、当該仮想マシンを当該物理サーバ移動させるステップと、
仮想マシンの割当がない物理サーバを作成し、前記仮想マシンの割当がない物理サーバを、前記未使用のリソースのないリソースプールへ所属させるステップと
を有することを特徴とするリソース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リソースプール間でのリソースを融通する技術に関する。
【背景技術】
【０００２】
複数の仮想マシンを設置する場合、リソースプールという予め割当てられたリソース内であればどのように仮想マシンを設置してもよいようなサービスが知られている。仮想マシンは、特定のリソースプールに所属することで、各リソースプールに設定されたリソースを上限として、物理リソースを利用することが可能である。
【０００３】
また、仮想マシンの世界ではある仮想マシンのリソースが不足している場合に、他の仮想マシンのからリソースを融通することが一般的におこなわれている。例えば、特許文献１には、適切なリソース要求量を算出して、各仮想マシンにリソースを再配置する旨開示されている。これによりリソースを必要としている仮想マシンにより多くのリソースを割当てることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１７０７８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
リソースプールは予めリソースを配分しておける利点がある一方で、リソースプール以上のリソースが要求されるような処理が発生した場合には、それ以上のリソースを当該リソースプール内の仮想マシンに割当てることができない。そこで、仮想マシン間でリソースを配分するように、リソースプール間でリソースの余裕のあるリソースプールからリソースに余裕のないリソースプールへリソースを融通することが考えられる。しかしその場合、リソースプールは物理サーバをまたがるように設定することができない特性があり（物理サーバ１台半のような設定ができない。物理サーバ２台のように物理サーバ単位で設定することになる。）、物理サーバの半分だけを他のリソースプールへ付け替えるということができないので、複数の物理サーバをまたがったリソースプールにおいてただリソースプールのリソースの容量を付替えようとしても、物理サーバの制約上リソースを融通できないケースが考えられる。本発明はこのような場合においてもリソースを融通できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決する為に、本発明は、未使用のリソースのないリソースプールと、未使用のリソースのあるリソースプールを特定し、前記特定した未使用のリソースのあるリソースプールに所属する物理サーバのなかで未使用のリソースのある物理サーバを複数特定し、前記特定された物理サーバ上で動作する仮想マシンのリソース容量と、前記仮想マシンのある物理サーバ以外の他の物理サーバの未使用リソースの容量をそれぞれ比較して、前記物理サーバ上で動作する仮想マシンを前記他の物理サーバへ移動可能な場合に、前記物理サーバ上で動作する仮想マシンを前記他の物理サーバへ移動させて、仮想マシンの割当がない物理サーバを作成し、前記仮想マシンの割当がない物理サーバを、前記未使用のリソースのないリソースプールへ所属させることを特徴とする。
【発明の効果】
【０００７】
リソースプール間でリソースを融通することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態のシステムの構成図である。
【図２】仮想マシン性能テーブルを示す図である。
【図３】リソースプール性能テーブルを示す図である。
【図４】物理サーバ性能テーブルを示す図である。
【図５】仮想マシンリソースプール対応テーブルを示す図である。
【図６】仮想マシン物理サーバ対応テーブルを示す図である。
【図７】リソースプール物理サーバ対応テーブルを示す図である。
【図８】リソースプールの再配置の処理フローを表すフローチャートである。
【図９】リソースプールの再配置の処理のフローチャートの続きである。
【発明を実施するための形態】
【０００９】
本実施例では、リソースプール（ＣＰＵ）の再配置の処理を行うシステムについて説明する。本実施例ではＣＰＵとしたがこれに限定されるものではなく、メモリやＨＤＤ等の記憶装置やネットワークの帯域等リソースを表すものであれば何でもよい。
【００１０】
図１は、本発明の実施形態のシステムの構成図である。本実施の形態の処理システムは、監視サーバ１００と、制御・記憶サーバ１１０と、物理サーバ１２０と、を備える。監視サーバ１００と、制御・記憶サーバ１１０と、物理サーバ１２０はネットワークを介して接続されている。物理サーバ１２０は、サーバ仮想化プログラム１２１を備え、そのプログラムを利用することにより、仮想マシン１２２は物理サーバ１２０上で稼働する。制御・記憶サーバ１１０によりリソース管理を行う。本発明であるリソース管理装置は制御・記憶サーバ１１０に相当するが、この形態に限定されるものではなく、監視サーバ１００と制御・記憶サーバ１１０とをひとつのサーバとしてリソース管理装置としてもよい。また、リソース管理装置はサーバに限定されるものではなく、リソースを管理する装置をいう。
【００１１】
物理サーバ１２０はリソースプール１３０と対応づけされており、リソースプール１３０は物理サーバ単位で設定されるもので、ユーザが設定できるリソースの容量の上限値を設定するものである。ユーザはこのリソースプール内であれば任意の容量の仮想マシンを任意の台数設定することができる。制御・記憶サーバ１１０は制御部１１１と記憶部１１２を備える。制御部１１１は、物理サーバ１２０、仮想マシン１２２、リソースプール１３０を制御する。記憶部１１２はシステム稼働で必要なテーブルを備える。
【００１２】
監視サーバ１００は、監視部１０１により、物理サーバ１２０と、サーバ仮想化プログラム１２１と、仮想マシン１２２と、リソースプール１３０を監視する。また、監視サーバ１００は監視して得られた情報を、ネットワークを介して制御・記憶サーバ１１０へ転送する。
【００１３】
制御・記憶サーバ１１０は物理サーバ１２０と、仮想マシン１２２と、リソースプール１３０の対応づけを制御し、システム稼働に必要なテーブルを管理している。ＨＤＤ等の記憶部に、仮想マシン性能テーブル２００、リソースプール性能テーブル３００、物理サーバ性能テーブル４００、仮想マシンリソースプール対応テーブル８００、仮想マシン物理サーバ対応テーブル９００、リソースプール物理サーバ対応テーブル１０００を記憶する。また、制御部１１１により、容量に余裕のあるリソースプールから容量の足りないリソースプールへ、リソース（ＣＰＵ、メモリ、記憶装置等）を付け替える処理がなされる。
【００１４】
図２は仮想マシン性能テーブル２００の構成図である。仮想マシン性能テーブル２００は、仮想マシンＮｏ２０１と、ＣＰＵ割当値２０２と、ＣＰＵ使用値２０３と、ＣＰＵ割当未使用値２０４と、ＣＰＵ割当不足値２０５と、ＣＰＵ割当上限値２０６と、を備える。
【００１５】
ここではＣＰＵの値としているが、これに限定されるものではなく、リソースの値であるなら何でもよい。その場合、ＣＰＵ割当値２０２とは、リソース割当値、ＣＰＵ使用値２０３とは、リソース使用値、ＣＰＵ割当未使用値２０４とはリソース割当未使用値、ＣＰＵ割当不足値２０５とはリソース割当不足値、ＣＰＵ割当上限値２０６とはリソース割当上限値のことをいう。リソース割当値とは割当てられているリソースの容量、リソース使用値とは、割当てられているリソース容量のうち使用されている容量、リソース割当未使用値とは未使用のリソースの容量、リソース割当不足値とは、不足しているリソースの容量、リソース割当上限値とは、割当てることの出来るリソースの容量の上限値をいう。
【００１６】
たとえば、図２の仮想マシン性能テーブル２００の仮想マシンＮｏ２０１が仮想マシンＡについては、ＣＰＵ割当値２０２は２ＧＨｚ、ＣＰＵ使用値２０３は２ＧＨｚ、ＣＰＵ割当未使用値２０４は０ＭＨｚ、ＣＰＵ割当不足値２０５は５００ＭＨｚ、ＣＰＵ割当上限値２０６は無制限のためＮ／Ａとなる。ＣＰＵ割当値２０２とは仮想マシンに割当てられているＣＰＵの容量、ＣＰＵ使用値２０３とは割当てられているＣＰＵのうち使用されている容量、ＣＰＵ割当未使用値２０４は割当てられているＣＰＵのうち使用されていない容量、ＣＰＵ割当不足値２０５とは、当該仮想マシンが処理しきれずに不足しているＣＰＵの容量、ＣＰＵ割当上限値２０６とは割当てられる上限の値をいう。なお、本実施例ではＣＰＵの値としているがこれに限定されるものではなく、リソースの割当値、使用値、割当未使用値、割当不足値、割当上限値であれば、メモリや記憶装置の容量等の値であってもよい。
【００１７】
図３はリソースプール性能テーブル３００の構成図である。リソースプール性能テーブル３００は、リソースプールＮｏ３０１と、ＣＰＵ割当値３０２と、ＣＰＵ使用値３０３と、ＣＰＵ割当未使用値３０４、ＣＰＵ割当不足値３０５と、ＣＰＵ割当上限値３０６とを備える。このテーブルではリソースプール毎のリソースの割当値、使用値、割当未使用値、割当不足値、割当上限値を管理する。その場合、ＣＰＵ割当値３０２とは、リソース割当値、ＣＰＵ使用値３０３とは、リソース使用値、ＣＰＵ割当未使用値３０４とはリソース割当未使用値、ＣＰＵ割当不足値３０５とはリソース割当不足値、ＣＰＵ割当上限値３０６とはリソース割当上限値のことをいう。
【００１８】
たとえば、図３のリソースプール性能テーブル３００のリソースプールＮｏ３０１がリソースプールＡにおいては、ＣＰＵ割当値３０２は２ＧＨｚ、ＣＰＵ使用値３０３は２ＧＨｚ、ＣＰＵ割当未使用値３０４は０ＭＨｚ、ＣＰＵ割当不足値３０５は５００ＭＨｚ、ＣＰＵ割当上限値３０６は無制限のためＮ／Ａとなる。なお、本実施例ではＣＰＵの値としているがこれに限定されるものではなく、リソースの割当値、使用値、割当未使用値、割当不足値、割当上限値であれば、メモリや記憶装置の容量等の値であってもよい。
【００１９】
図４は物理サーバ性能テーブル４００の構成図である。物理サーバ性能テーブル４００は、物理サーバＮｏ４０１と、ＣＰＵ割当値４０２と、ＣＰＵ使用値４０３と、ＣＰＵ未使用値４０４と、を備える。このテーブルでは物理サーバ毎のリソースの割当値、使用値、未使用値、を管理する。その場合、ＣＰＵ割当値４０２とは、リソース割当値、ＣＰＵ使用値４０３とは、リソース使用値、ＣＰＵ未使用値４０４とはリソース未使用値のことをいう。たとえば、図４の物理サーバ性能テーブル４００の物理サーバＮｏ４０１が物理サーバＡにおいては、ＣＰＵ割当値４０２は２ＧＨｚ、ＣＰＵ使用値４０３は２ＧＨｚ、ＣＰＵ未使用値４０４は０ＭＨｚとなる。なお、本実施例ではＣＰＵの値としているがこれに限定されるものではなく、リソースの割当値、使用値、未使用値であれば、メモリや記憶装置の容量等の値であってもよい。
【００２０】
図５は仮想マシンリソースプール対応テーブル８００の構成図である。仮想マシンリソースプール対応テーブル８００は、仮想マシンＮｏ８０１と、リソースプールＮｏ８０２と、を備える。仮想マシンリソースプール対応テーブル８００は、仮想マシン１２２と、リソースプール１３０の対応関係を記憶するテーブルである。
【００２１】
たとえば、図５の仮想マシンリソースプール対応テーブル８００の仮想マシンＮｏ８０１が仮想マシンＡにおいては、対応するリソースプールＮｏ８０２はリソースプールＡとなる。リソースプールＡには仮想マシンＡが一台所属していることを表している。
【００２２】
図６は仮想マシン物理サーバ対応テーブル９００の構成図である。仮想マシン物理サーバ対応テーブル９００は、仮想マシンＮｏ９０１と、物理サーバＮｏ９０２と、を備える。仮想マシン物理サーバ対応テーブル９００は、仮想マシン１２２と、物理サーバ１２０の対応関係を記憶するテーブルである。
【００２３】
たとえば、図６の仮想マシン物理サーバ対応テーブル９００の仮想マシンＮｏ９０１が仮想マシンＡにおいては、対応する物理サーバＮｏ９０２は物理サーバＡとなる。物理サーバＡには仮想サーバＡが一台あることを表している。
【００２４】
図７はリソースプール物理サーバ対応テーブル１０００の構成図である。リソースプール物理サーバ対応テーブル１０００は、リソースプールＮｏ１００１と、物理サーバＮｏ１００２とを備える。リソースプール物理サーバ対応テーブル１０００は、リソースプール１３０と物理サーバ１２０の対応関係を記憶するテーブルである。
【００２５】
たとえば、図７のリソースプール物理サーバ対応テーブル１０００のリソースプールＡにおいては、対応する物理サーバＮｏ１００２は物理サーバＡとなる。リソースプールＡには物理サーバＡが１台所属していることを意味している。
【００２６】
図８、図９はリソースプールの再配置の処理フローチャートである。次にこの図８、図９のフローに従って処理を説明する。
【００２７】
監視サーバ１００は、監視部１０１により仮想マシンのＣＰＵ使用値の情報を取得する。監視部１０１は、仮想マシンのＣＰＵの使用状況を監視し、取得した情報は制御・記憶サーバ１１０の記憶部１１２へ情報が反映される。本実施例ではＣＰＵの値を監視しているがこれに限定されるものではない。リソースの値であればなんでもよく、例えばメモリや記憶装置等の容量や、ネットワークの帯域のようなリソースの情報であれば何でもよい。
【００２８】
たとえば、仮想マシン性能テーブル２００においては、仮想マシンＮｏ２０１ごとに、ＣＰＵ割当値２０２、ＣＰＵ使用値２０３、ＣＰＵ割当未使用値２０４、ＣＰＵ割当不足値２０５、ＣＰＵ割当上限値２０６の情報が随時更新される（ステップ１１０１）。
【００２９】
制御部１１１は、ＣＰＵ割当未使用値２０４が０になった仮想マシンＸの有無を判断する。制御部１１１は、記憶部１１２に含まれる仮想マシン性能テーブル２００のＣＰＵ割当未使用値２０４を参照し、値が０になっている仮想マシンの有無を判断する。ＣＰＵ割当未使用値２０４が０になった仮想マシンＸがない場合は、ひきつづき仮想マシンのＣＰＵ割当未使用値２０４の情報を取得する。ＣＰＵ割当未使用値２０４が０になった仮想マシンＸがある場合は、次のステップへ移る（ステップ１１０２）。
【００３０】
たとえば、図２の仮想マシン性能テーブルの構成図２００において、仮想マシンＡのＣＰＵ割当未使用値２０４が０のため、ここでは次のステップ１１０３へ移る。ＣＰＵ割当未使用値が０とは、リソース（ＣＰＵ）の未使用率が０、つまりリソース（ＣＰＵ）が全て使われており、リソースが足りなくなっている仮想マシンを意味する。ここで、ＣＰＵ割当未使用値（リソース割当未使用値）が０のものを検索したが、ＣＰＵ割当不足値（リソース割当不足値）が０以外のものを特定することとしてもよい。
【００３１】
本実施ではリソースの足りなくなった仮想マシンがある場合に、当該仮想マシンの所属するリソースプールにリソース不足が発生しているかどうか見ているが、これに限定されるものではなく、リソースプール性能テーブル３００を参照してその中で、リソース割当不足値がある（０以外である）リソースプールＮｏ３０１を特定して、リソース不足のあるリソースプールを特定するように制御してもよい。
【００３２】
仮想マシンに未使用のリソースがない状態で、リソースの不足値が発生すると、自動でリソースプールからリソースが配分されることを前提としている。それ故、仮想マシンにリソース不足が発生する場合は、リソースプールにリソース不足が発生している状態を表している。このように自動での配分が制御されていない場合でも、先に述べたように、リソースプール性能テーブルを見ることで、直接リソースプールのリソース不足を特定することができる。
【００３３】
制御部１１１は、ＣＰＵ割当未使用値２０４が０になった仮想マシンＸを特定する（ステップ１１０３）。制御部１１１は、ステップ１１０２においてＣＰＵ割当未使用値２０４が０であると判断された場合、仮想マシン性能テーブル２００のＣＰＵ割当未使用値２０４が０になっている仮想マシンＸの仮想マシンＮｏ２０１を特定する。
【００３４】
たとえば、図２の仮想マシン性能テーブルの構成図２００においては、ＣＰＵ割当未使用値２０４が０である仮想マシンＮｏ２０１を仮想マシンＡであると特定し、次のステップ１１０４へ移る。
【００３５】
制御部１１１は、ステップ１１０３で特定した仮想マシンＸの仮想マシンＮｏ２０１に対応するリソースプールＸを特定する（ステップ１１０４）。制御部１１１は、記憶部１１２の仮想マシンリソースプール対応テーブル８００を参照し、ステップ１１０３で特定した仮想マシンＸの仮想マシンＮｏ８０１に対応するリソースプールＮｏ８０２の値を特定する。これにより、リソース不足のあるリソースプールを特定する。
【００３６】
たとえば、ステップ１１０３において仮想サーバＡであると特定された場合、仮想マシンリソースプール対応テーブル８００では、対応するリソースプールＮｏ８０２としてリソースプールＡが特定される。
【００３７】
制御部１１１は、ＣＰＵ割当未使用値が０になっていない仮想マシンの有無をチェックする（ステップ１１０５）。制御部１１１は、仮想マシン性能テーブル２００のＣＰＵ割当未使用値２０４を参照し、値が０になっていない（０以外の）仮想マシンの有無をチェックする。ここで、ＣＰＵ割当未使用値２０４が０になっていない仮想マシンＮｏがある場合、次のステップに移る。ステップ１１０４で特定した仮想マシンで、ＣＰＵ割当未使用値２０４が０になっていない仮想マシンがない場合は、アラートを表示する（ステップ１１０６）。割当未使用値が０でないとは、未使用のリソースがあることを意味している。
【００３８】
たとえば、図２の仮想マシン性能テーブル２００では仮想マシンＢ、仮想マシンＣ、仮想マシンＤ、仮想マシンＥのＣＰＵ割当未使用値２０４が０ではないため、次のステップへ移る。
【００３９】
制御部１１１は、ＣＰＵ割当未使用値が０になっていない仮想マシンＹを特定する（ステップ１１０７）。制御部１１１は、仮想マシン性能テーブル２００のＣＰＵ割当未使用値２０４（リソース割当未使用値）を参照し、値が０になっていない仮想マシンＹの仮想マシンＮｏ２０１を特定する。
【００４０】
たとえば、図２の仮想マシン性能テーブル２００では、ＣＰＵ割当未使用値（リソース割当未使用値）が０でない仮想マシンＮｏ２０１として、仮想マシンＢ、仮想マシンＣ、仮想マシンＤ、仮想マシンＥが特定される。ここではリソース割当未使用値が０以外、つまり、未使用のリソースがありリソースに余裕のある仮想マシンを特定している。リソースの余裕のある仮想マシンを特定することで、未使用のリソースがありリソースに余裕のあるリソースプールを特定することができる。
【００４１】
本実施例では仮想マシンのリソース未使用値を見ることとしたが、これに限定されるものではなく、リソースプール性能テーブル３００のリソース割当未使用値を参照して、未使用のリソースがありリソースに余裕のあるリソースプールを特定するようにしてもよい。
【００４２】
制御部１１１は、仮想マシンＹに対応するリソースプールＹを特定する（ステップ１１０８）。制御部１１１は、仮想マシンリソースプール対応テーブル８００を参照し、仮想マシンＹの仮想マシンＮｏ８０１に対応するリソースプールＹのリソースプールＮｏ８０２を特定する。
【００４３】
たとえば、ステップ１１０７において仮想マシンＢ、仮想マシンＣ、仮想マシンＤ、仮想マシンＥであると特定された場合、図５の仮想マシンリソースプール対応テーブル８００では、リソースプールＮｏ８０２として、リソースプールＢ、リソースプールＣが特定される。
【００４４】
制御部１１１は、リソースプールＹの中で、ＣＰＵ割当未使用値が最も大きいリソースプールＺを特定する（ステップ１１０９）。ここでは、リソースの割当未使用値が最大のもの、つまり最も余裕がありリソースを他のリソースプールへ融通できそうなものを特定しているが、他のリソースプールが特定されるように制御してもよい。制御部１１１は、リソースプール性能テーブル３００のＣＰＵ割当未使用値３０４を参照し、リソースプールＹに対応するリソースプールＮｏ３０１で、リソースプール性能テーブル３００のＣＰＵ割当未使用値３０４が最も大きいリソースプールＺのリソースプールＮｏ３０１を特定する。
【００４５】
たとえば、図３のリソースプール性能テーブル３００では、リソースプールＢのＣＰＵ割当未使用値１ＧＨｚとリソースプールＣのＣＰＵ割当未使用値２．５ＧＨｚとを比較して、リソースプールＣのＣＰＵ割当未使用値３０４のほうが大きいので、ＣＰＵ割当未使用値３０４が大きいリソースプールＺのリソースプールＮｏ３０１としてリソースプールＣが特定される。
【００４６】
制御部１１１は、ステップ１１０９で特定したリソースプールＺに対応する物理サーバの中で、最もＣＰＵ使用値（リソース使用値）が低い物理サーバＺを特定する（ステップ１１１０）。ＣＰＵ使用値（リソース使用値）が低いとしたが、ＣＰＵ未使用値（リソース未使用値）が大きいとしてもよい。ここでは、未使用のリソースがありリソースに余裕のあるリソースプールに所属する物理サーバの中で未使用のリソースがあり、一番リソースに余裕のある物理サーバを特定している。ここでは一番リソースに余裕のあるものを特定しているが、これに限定されるものではなく、未使用のリソースがありリソースに余裕のある物理サーバを複数特定するようにしてもよい。
【００４７】
制御部１１１は、記憶部１１２のリソースプール物理サーバ対応テーブル１０００のリソースプールＮｏ１００１を参照し、リソースプールＺのリソースプールＮｏに対応する物理サーバの物理サーバＮｏ１００２を特定する。そして、特定した物理サーバのうち、物理サーバ性能テーブル４００を参照した中で、最もＣＰＵ使用値４０３が低い（ＣＰＵ未使用値の高い）物理サーバＮｏ４０１を特定する。
【００４８】
たとえば、ステップ１１０９においてリソースプールＣであると特定された場合、図７のリソースプール物理サーバ対応テーブル１０００では、リソースプールＣに対応する物理サーバＮｏ１００２として物理サーバＣ、物理サーバＤが特定される。そして、図４の物理サーバ性能テーブル４００から、最もＣＰＵ使用値が低い（ＣＰＵ未使用値が高い）物理サーバＮｏ４０１として物理サーバＣが特定される。この場合、ＣＰＵ使用値４０３の値が小さいものを選ぶように制御しても良いし、ＣＰＵ未使用値の多いものを選ぶように制御してもよく、ＣＰＵの使用値が低い物理サーバが選択されるように制御されるものであればよく限定されるものではない。
【００４９】
制御部１１１は、リソースプールＺに対応する物理サーバの中で、物理サーバＺ以外で、ＣＰＵ使用値が低い（ＣＰＵ未使用値が高い）物理サーバＺ’を特定する（ステップ１１１１）。これにより、同じリソースプール内で未使用のリソースのある物理サーバのうちで一番余裕のある物理サーバとその次に余裕のある物理サーバが特定される。ステップ１１１０で複数の余裕のある物理サーバが特定されるようにしている場合は、ここで２番目に余裕のある物理サーバを特定する必要はない。
【００５０】
制御部１１１は、記憶部１１２のリソースプール物理サーバ対応テーブル１０００の物理サーバＮｏ１００２を参照し、リソースプールＺに対応する物理サーバの物理サーバＮｏ１００２を特定する。そして、特定した物理サーバのうち、物理サーバ性能テーブル４００を参照した中で、ステップ１１１０で特定した物理サーバＺ以外で、ＣＰＵ使用値が低い（ＣＰＵ未使用値が高い）物理サーバＺ’を特定する。
【００５１】
たとえば、ステップ１１１０において、ＣＰＵ使用値が低い（ＣＰＵ未使用値が高い）物理サーバとして物理サーバＣが特定される。そして、リソースプールＣに対応する物理サーバのうち、物理サーバＣ以外の物理サーバとして、物理サーバＤが特定される。その中で、ＣＰＵ使用値が低い（ＣＰＵの未使用値が高い）物理サーバＮｏ４０４として物理サーバＤが特定される。本実施例では物理サーバＣ以外のリソースプールＣの物理サーバは物理サーバＤしかなく、物理サーバＤが選択されるが、物理サーバＥ等の他の物理サーバがある場合は、ＣＰＵ使用率をみて、使用率が低いものが選択される。同一リソースプール内の物理サーバで、リソースの使用値が低い（未使用値が高い）物理サーバ上位２台が特定されることになる。
【００５２】
制御部１１１は、物理サーバＺ’のＣＰＵ未使用値（リソース未使用値）から物理サーバＺのＣＰＵ使用値（リソース使用値）を引いた値が、０より大きいものであるか計算する。（ステップ１１１２）。制御部１１１は、記憶部１１２の物理サーバ性能テーブル４００を参照し、物理サーバＺ’のＣＰＵ未使用値４０４を参照し、物理サーバＺ’のＣＰＵ未使用値４０４から物理サーバＺのＣＰＵ使用値４０３を引いた値が、０より大きくなるか計算する。ここで、計算結果が０より大きくなるものがあれば次のステップへ移る。計算結果が０より大きくなるものがなければ、ステップ１１０１へ戻る。ここでは、物理サーバＺで使用されているリソースが物理サーバＺ’へ移動可能かどうかを判定する為に、２つの大小関係を見ている。
【００５３】
たとえば、ステップ１１１０において物理サーバＣであると特定された場合、図４の物理サーバ性能テーブル４００を参照し、物理サーバＤのＣＰＵ未使用値４０４の値から物理サーバＣのＣＰＵ使用値４０３の値を引いたものが、０より大きくなるため、次のステップへ移る。
【００５４】
これまでの処理で、リソースの使用値の低い２台の物理サーバ間で、仮想マシンをどちらか一方の物理サーバへ集約することができるかを確認している。リソースの使用値の低い２台の物理サーバを選択せず、複数の物理サーバを特定している場合は、その複数の物理サーバ間でそれぞれ仮想マシンの入れ替えをして、仮想マシンが動作しない物理サーバを作成することになる。つまり、特定された物理サーバ上で動作する仮想マシンのリソース容量と特定された他の物理サーバの未使用のリソースの容量をそれぞれを比較して物理サーバ上で動作する仮想マシンを他の物理サーバへ移動可能な場合に、当該仮想マシンを当該物理サーバへ順々に移動させていき、仮想マシンの割当がない物理サーバを作成する。
【００５５】
具体的には、特定された物理サーバを仮想マシン物理サーバ対応テーブル９００に照合してその物理サーバ上で動作する仮想マシンを特定し、仮想マシン性能テーブル２００のリソース使用値により、その仮想マシンのリソース容量を特定する。物理サーバの未使用のリソース容量は物理サーバ性能テーブル４００のリソース未使用値により特定し、それぞれ比較する。
【００５６】
その場合、物理サーバのリソースの使用値と他の物理サーバのリソースの未使用値を比較して、値が近いものもしくは、値の大きく離れている場合は複数のリソース使用値を合算したものと、他の物理サーバの未使用値を比較して値が近いものから優先的に仮想マシンを移動させるように制御すれば好適である。特定された仮想マシンのリソース容量より、特定された物理サーバの未使用のリソース容量が大きい場合は、仮想マシンを移動させることができる。仮想マシンを移動させることにより、仮想マシンの割当のない物理サーバを作成する。前述したように、物理サーバの未使用のリソース容量が、同一物理サーバ上の複数の仮想マシンの容量を足し合わせたものより大きい場合は、複数の仮想マシンの移動が可能であり、まとめてひとつの物理サーバへ移動させて、仮想マシンの割当のない物理サーバを作成することができる。
【００５７】
また、この同一物理サーバ上にある複数の仮想マシンを、それぞれ別々の他の物理サーバへ移動させることにより、仮想マシンの割当のない物理サーバを作成することも考えられる。この場合、各仮想マシンに仮想マシンのリソース容量と、他の物理サーバの未使用のリソース容量を順々に比べて移動させていく。これは物理サーバ単位でしかリソースプールに所属させることができない為の制約による処理である。
【００５８】
また、本ステップでは、物理サーバＺのＣＰＵの使用値（リソース使用値）と、リソースプールＺに対応する物理サーバＺ以外の物理サーバのＣＰＵ未使用値（リソース未使用値）のそれぞれとを比較して、物理サーバＺのＣＰＵ使用値が大きくなる場合に、ステップ１１０１へ戻るよう処理しているが、これに限定されるものではなく、例えば残りの未使用のリソースプール量をより多くとっておきたい場合は、差が１００以下の場合はステップ１１０１へ戻るよう制御することとしてもよい。この差の値は適時ユーザからの入力を受付けることとしてもよいし、もとから記憶装置の中に記憶させていた値を使うこととしてもよい。
【００５９】
制御部１１１は、０より大きい場合、物理サーバＺ内の仮想マシンを物理サーバＺ’へ移動可能であると判断し、物理サーバＺに所属する仮想マシンＺの対応先を、物理サーバＺ’へ変更する（ステップ１１１３）。制御部１１１は、仮想マシン物理サーバ対応テーブル９００の仮想マシンＺの仮想マシンＮｏ９０１の対応先を、物理サーバＺの物理サーバＮｏ９０２から物理サーバＺ’の物理サーバＮｏ９０２へ変更する。これにより、仮想、マシンの割当のない物理サーバを作成することができる。
【００６０】
たとえば、ステップ１１１２において物理サーバＺとして物理サーバＣが特定され、ステップ１１１３へ移った場合、図６の仮想マシン物理サーバ対応テーブル９００の仮想マシンＤの対応先を、物理サーバＣから物理サーバＤへと変更する。
【００６１】
ここでは物理サーバＣで動いている仮想マシンが仮想マシンＤだけであったので、仮想マシンＤを物理サーバＤへ移動させたが、仮想マシンが複数ある場合は、その全ての仮想マシンを物理サーバＤへと移動させる。物理サーバＣで動く仮想マシンがないようにして、物理サーバＣを処理が重くなっているリソースプールへ融通する為である。
【００６２】
また、物理サーバＣに複数の仮想マシンが存在した場合は、その全てを同一の物理サーバ（ここでは物理サーバＤ）へ移動させるのではなく、リソースプールに他の物理サーバがある場合は、その物理サーバの未使用値と、仮想マシンの使用率を比較して、仮想マシンの使用率のほうが小さい場合は、複数の物理サーバへ物理サーバＣにあった仮想マシンを配分するように処理してもよい。
【００６３】
次に、制御部１１１は、物理サーバＺの対応先をリソースプールＺからリソースプールＸに変更する（ステップ１１１４）。制御部１１１は、リソースプール物理サーバ対応テーブル１０００の物理サーバＺの物理サーバＮｏ１００２の対応先を、リソースプールＺのリソースプールＮｏ１００１からリソースプールＸのリソースプールＮｏ１００１へ変更する。
【００６４】
たとえば、ステップ１１１０で物理サーバＺが物理サーバＣとして特定され、ステップ１１１４へ移った場合、図７のリソースプール物理サーバ対応テーブル１０００の物理サーバＣのリソースプールの対応先を、リソースプールＣからリソースプールＡへと変更する。
【００６５】
制御部１１１は、仮想マシンＸの対応先を物理サーバＺへ変更する（ステップ１１１５）制御部１１１は、仮想マシン物理サーバ対応テーブル９００の仮想マシンＸの仮想マシンＮｏ９０１の対応先を、物理サーバＸの物理サーバＮｏへ変更する。
【００６６】
たとえば、ステップ１１０３において仮想マシンＸとして仮想マシンＡが特定され、ステップ１１１０において物理サーバＺとして物理サーバＣが特定された場合、図６の仮想マシン物理サーバ対応テーブル９００の仮想マシンＡの対応先を、物理サーバＣへ変更する。
【００６７】
監視部１０１は、リソースプールＸのＣＰＵ割当不足値が０になっているかチェックする。監視部１０１は、記憶部１１１のリソースプール性能テーブル３００を参照し、リソースプールＸのリソースプールＮｏ３０１に対応するＣＰＵ割当不足値３０５が０になっているかチェックする。ここで、ＣＰＵ割当不足値３０５が０になっていない場合、ステップ１１０５に戻る。リソースプールＸのリソースプールＮｏ３０１に対応するＣＰＵ割当不足値３０５が０になっている場合、終了する（ステップ１１１６）。
【００６８】
たとえば、ステップ１１１４において図７のリソースプール物理サーバ対応テーブル１０００の物理サーバＣのリソースプールの対応先を、リソースプールＣからリソースプールＡへと変更した場合、リソースプールＡのリソースプールＮｏ３０１に対応するＣＰＵ割当不足値３０５は０となり、終了する。
【符号の説明】
【００６９】
１００：監視サーバ、１０１：監視部、１１０：制御・記憶サーバ、１１１：制御部、１１２：記憶部、１２０：物理サーバ、１２１：サーバ仮想化プログラム、１２２：仮想マシン、１３０：リソースプール、２００：仮想マシン性能テーブル、３００：リソースプール性能テーブル、４００：物理サーバ性能テーブル、５００：仮想マシンメモリ性能テーブル、８００：仮想マシンリソースプール対応テーブル、９００：仮想マシン物理サーバ対応テーブル、１０００：リソースプール物理サーバ対応テーブル
【図１】
2015046076.tif 000003
【図２】
2015046076.tif 000004
【図３】
2015046076.tif 000005
【図４】
2015046076.tif 000006
【図５】
2015046076.tif 000007
【図６】
2015046076.tif 000008
【図７】
2015046076.tif 000009
【図８】
2015046076.tif 000010
【図９】
2015046076.tif 000011