(57)【要約】【課題】仮想マシンに対する物理サーバの割り当てを適切に行なう。【解決手段】リソース割当部１３は、負荷率が負荷率閾値を超えた物理サーバ（ホスト）である高負荷物理サーバが複数の仮想マシン（ゲスト）に割り当てられている場合であって、割り当てられている複数の仮想マシンのうち最も高負荷の仮想マシンである高負荷仮想マシン以外の仮想マシンへの割り当てを、高負荷物理サーバから高負荷物理サーバ以外の他の物理サーバへ変更しても、高負荷物理サーバの負荷率が負荷率閾値を超えるときには、高負荷仮想マシンの負荷量の仮想化システム３０１における複数の仮想マシン中の順位を算出し、高負荷仮想マシンへの割り当てを、高負荷物理サーバから、仮想化システム３０１における複数の物理サーバ中の保有リソース量の順位が算出した順位と同じ物理サーバである同順位物理サーバへ変更する。【選択図】図２
2011186701.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理サーバを備えかつ前記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、前記複数の物理サーバの有する各リソースを前記複数の仮想マシンに割り当てるためのリソース割当装置であって、
前記複数の物理サーバの各リソース量を記憶するためのリソース管理部と、
前記複数の物理サーバの各稼働負荷を監視するための稼働状況管理部と、
前記リソース管理部の記憶する前記各リソース量および前記稼働状況管理部の監視結果である前記各稼働負荷に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択するためのリソース割当部とを備え、
前記稼働状況管理部は、前記各物理サーバの負荷率閾値を記憶し、前記物理サーバの負荷率が前記負荷率閾値を超えた場合には、前記リソース割当部へ警告情報および前記各物理サーバの負荷率を示す負荷情報を出力し、
前記リソース割当部は、前記警告情報を受けて、前記リソース管理部の記憶する前記各リソース量、および前記負荷情報に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択し、
前記リソース割当部は、負荷率が前記負荷率閾値を超えた前記物理サーバである高負荷物理サーバが複数の前記仮想マシンに割り当てられている場合であって、割り当てられている前記複数の仮想マシンのうち最も高負荷の前記仮想マシンである高負荷仮想マシン以外の前記仮想マシンへの割り当てを、前記高負荷物理サーバから前記高負荷物理サーバ以外の他の前記物理サーバへ変更しても、前記高負荷物理サーバの負荷率が前記負荷率閾値を超えるときには、前記高負荷仮想マシンの負荷量の前記仮想化システムにおける前記複数の仮想マシン中の順位を算出し、前記高負荷仮想マシンへの割り当てを、前記高負荷物理サーバから、前記仮想化システムにおける前記複数の物理サーバ中の保有リソース量の順位が前記算出した順位と同じ前記物理サーバである同順位物理サーバへ変更する、リソース割当装置。
【請求項２】
前記リソース割当部は、前記同順位物理サーバを前記高負荷仮想マシンに割り当てた場合、前記同順位物理サーバが自己の前記負荷率閾値以下で稼働可能か否かを判定し、稼働できない場合には、前記同順位物理サーバが割り当てられている１または複数の前記仮想マシンであって前記高負荷仮想マシン以外の他の前記仮想マシンへの割り当てを、前記同順位物理サーバから他の前記物理サーバへ変更する、請求項１に記載のリソース割当装置。
【請求項３】
前記リソース割当部は、前記警告情報を受けて、前記リソース管理部の記憶する前記各リソース量、および前記負荷情報に基づいて、前記複数の仮想マシンの各々にどの前記物理サーバを割り当てるかを示す割り当て計画を作成し、
前記稼働状況管理部は、さらに、前記各仮想マシンにどの前記物理サーバがどれぐらいの期間割り当てられてきたかの稼働履歴を記録し、
前記リソース割当部は、前記割り当て計画において前記物理サーバの割り当てが変更される前記仮想マシンの、所定期間における前記物理サーバの割り当て変更回数が所定値以上であるか否かを前記稼働履歴に基づいて判定し、前記所定値以上である場合には、前記割り当て計画に関わらず前記仮想マシンに割り当てられる前記物理サーバを変更しない、請求項１または２に記載のリソース割当装置。
【請求項４】
複数の物理サーバを備えかつ前記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、前記複数の物理サーバの有する各リソースを前記複数の仮想マシンに割り当てるためのリソース割当装置であって、
前記複数の物理サーバの各リソース量を記憶するためのリソース管理部と、
前記複数の物理サーバの各稼働負荷を監視するための稼働状況管理部と、
前記リソース管理部の記憶する前記各リソース量および前記稼働状況管理部の監視結果である前記各稼働負荷に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択するためのリソース割当部とを備え、
前記稼働状況管理部は、前記各物理サーバの負荷率閾値を記憶し、前記物理サーバの負荷率が前記負荷率閾値を超えた場合には、前記リソース割当部へ警告情報および前記各物理サーバの負荷率を示す負荷情報を出力し、
前記リソース割当部は、前記警告情報を受けて、前記リソース管理部の記憶する前記各リソース量、および前記負荷情報に基づいて、前記複数の仮想マシンの各々にどの前記物理サーバを割り当てるかを示す割り当て計画を作成し、
前記稼働状況管理部は、さらに、前記各仮想マシンにどの前記物理サーバがどれぐらいの期間割り当てられてきたかの稼働履歴を記録し、
前記リソース割当部は、前記割り当て計画において前記物理サーバの割り当てが変更される前記仮想マシンの、所定期間における前記物理サーバの割り当て変更回数が所定値以上であるか否かを前記稼働履歴に基づいて判定し、前記所定値以上である場合には、前記割り当て計画に関わらず前記仮想マシンに割り当てられる前記物理サーバを変更しない、リソース割当装置。
【請求項５】
複数の物理サーバを備えかつ前記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、前記複数の物理サーバの有する各リソースを前記複数の仮想マシンに割り当てるためのリソース割当方法であって、
（ａ）前記複数の物理サーバの各リソース量を記憶するステップと、
（ｂ）前記複数の物理サーバの各稼働負荷を監視するステップと、
（ｃ）前記（ａ）のステップにおいて記憶した前記各リソース量および前記（ｂ）のステップにおける監視結果である前記各稼働負荷に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択するステップとを含み、
前記（ｂ）のステップにおいては、前記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および前記各物理サーバの負荷率を示す負荷情報を出力し、
前記（ｃ）のステップにおいては、前記警告情報を受けて、前記（ａ）のステップにおいて記憶した前記各リソース量、および前記負荷情報に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択し、
前記（ｃ）のステップにおいては、負荷率が前記負荷率閾値を超えた前記物理サーバである高負荷物理サーバが複数の前記仮想マシンに割り当てられている場合であって、割り当てられている前記複数の仮想マシンのうち最も高負荷の前記仮想マシンである高負荷仮想マシン以外の前記仮想マシンへの割り当てを、前記高負荷物理サーバから前記高負荷物理サーバ以外の他の前記物理サーバへ変更しても、前記高負荷物理サーバの負荷率が前記負荷率閾値を超えるときには、前記高負荷仮想マシンの負荷量の前記仮想化システムにおける前記複数の仮想マシン中の順位を算出し、前記高負荷仮想マシンへの割り当てを、前記高負荷物理サーバから、前記仮想化システムにおける前記複数の物理サーバ中の保有リソース量の順位が前記算出した順位と同じ前記物理サーバである同順位物理サーバへ変更する、リソース割当方法。
【請求項６】
複数の物理サーバを備えかつ前記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、前記複数の物理サーバの有する各リソースを前記複数の仮想マシンに割り当てるためのリソース割当方法であって、
（ａ）前記複数の物理サーバの各リソース量を記憶するステップと、
（ｂ）前記複数の物理サーバの各稼働負荷を監視するステップと、
（ｃ）前記（ａ）のステップにおいて記憶した前記各リソース量および前記（ｂ）のステップにおける監視結果である前記各稼働負荷に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択するステップとを含み、
前記（ｂ）のステップにおいては、前記物理サーバの負荷率が自己の負荷率閾値を超え
た場合には、警告情報および前記各物理サーバの負荷率を示す負荷情報を出力し、
前記（ｃ）のステップにおいては、前記警告情報を受けて、前記（ａ）のステップにおいて記憶した前記各リソース量、および前記負荷情報に基づいて、前記複数の仮想マシンの各々にどの前記物理サーバを割り当てるかを示す割り当て計画を作成し、
前記（ｂ）のステップにおいては、さらに、前記各仮想マシンにどの前記物理サーバがどれぐらいの期間割り当てられてきたかの稼働履歴を記録し、
前記（ｃ）のステップにおいては、前記割り当て計画において前記物理サーバの割り当てが変更される前記仮想マシンの、所定期間における前記物理サーバの割り当て変更回数が所定値以上であるか否かを前記稼働履歴に基づいて判定し、前記所定値以上である場合には、前記割り当て計画に関わらず前記仮想マシンに割り当てられる前記物理サーバを変更しない、リソース割当方法。
【請求項７】
複数の物理サーバを備えかつ前記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、前記複数の物理サーバの有する各リソースを前記複数の仮想マシンに割り当てるためのリソース割当プログラムであって、コンピュータに、（ａ）前記複数の物理サーバの各リソース量を記憶するステップと、
（ｂ）前記複数の物理サーバの各稼働負荷を監視するステップと、
（ｃ）前記（ａ）のステップにおいて記憶した前記各リソース量および前記（ｂ）のステップにおける監視結果である前記各稼働負荷に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択するステップとを実行させ、
前記（ｂ）のステップにおいては、前記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および前記各物理サーバの負荷率を示す負荷情報を出力し、
前記（ｃ）のステップにおいては、前記警告情報を受けて、前記（ａ）のステップにおいて記憶した前記各リソース量、および前記負荷情報に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択し、
前記（ｃ）のステップにおいては、負荷率が前記負荷率閾値を超えた前記物理サーバである高負荷物理サーバが複数の前記仮想マシンに割り当てられている場合であって、割り当てられている前記複数の仮想マシンのうち最も高負荷の前記仮想マシンである高負荷仮想マシン以外の前記仮想マシンへの割り当てを、前記高負荷物理サーバから前記高負荷物理サーバ以外の他の前記物理サーバへ変更しても、前記高負荷物理サーバの負荷率が前記負荷率閾値を超えるときには、前記高負荷仮想マシンの負荷量の前記仮想化システムにおける前記複数の仮想マシン中の順位を算出し、前記高負荷仮想マシンへの割り当てを、前記高負荷物理サーバから、前記仮想化システムにおける前記複数の物理サーバ中の保有リソース量の順位が前記算出した順位と同じ前記物理サーバである同順位物理サーバへ変更する、リソース割当プログラム。
【請求項８】
複数の物理サーバを備えかつ前記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、前記複数の物理サーバの有する各リソースを前記複数の仮想マシンに割り当てるためのリソース割当プログラムであって、コンピュータに、（ａ）前記複数の物理サーバの各リソース量を記憶するステップと、
（ｂ）前記複数の物理サーバの各稼働負荷を監視するステップと、
（ｃ）前記（ａ）のステップにおいて記憶した前記各リソース量および前記（ｂ）のステップにおける監視結果である前記各稼働負荷に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択するステップとを実行させ、
前記（ｂ）のステップにおいては、前記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および前記各物理サーバの負荷率を示す負荷情報を出力し、
前記（ｃ）のステップにおいては、前記警告情報を受けて、前記（ａ）のステップにおいて記憶した前記各リソース量、および前記負荷情報に基づいて、前記複数の仮想マシンの各々にどの前記物理サーバを割り当てるかを示す割り当て計画を作成し、
前記（ｂ）のステップにおいては、さらに、前記各仮想マシンにどの前記物理サーバが
どれぐらいの期間割り当てられてきたかの稼働履歴を記録し、
前記（ｃ）のステップにおいては、前記割り当て計画において前記物理サーバの割り当てが変更される前記仮想マシンの、所定期間における前記物理サーバの割り当て変更回数が所定値以上であるか否かを前記稼働履歴に基づいて判定し、前記所定値以上である場合には、前記割り当て計画に関わらず前記仮想マシンに割り当てられる前記物理サーバを変更しない、リソース割当プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リソース割当装置、リソース割当方法、およびリソース割当プログラムに関し、特に、複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおけるリソース割当装置、リソース割当方法、およびリソース割当プログラムに関する。
【背景技術】
【０００２】
近年の分散システムにおいては、計算機の仮想化技術が発達し、より細分化した柔軟なリソース割当が可能な計算機リソースインフラが整備されている。柔軟なリソース割当を実現する一手法として、ゲストＯＳ（Operating System）が物理筐体間をオンラインのまま移動できるライブマイグレーション技術が考案されている。ここで、リソースとは、コンピュータにおいて、ソフトウェアおよびハードウェアを動作させるのに必要なＣＰＵ（Central Processing Unit）の処理速度、メモリ容量、およびハードディスクの容量等を意味する。
【０００３】
仮想化技術の一例として、たとえば、特許文献１（特開２００５−１１５６５３号公報）には、以下のような技術が開示されている。すなわち、複数の仮想マシンを稼働させる複数のサーバとネットワークを介して接続される仮想マシン管理装置であって、各上記仮想マシンの所定時間ごとのパフォーマンスを示す実測データをデータベースから読み出す読出手段と、上記実測データを用いて、各仮想マシンを複数のサーバのいずれかで稼働させた場合の各時間における各仮想マシンのパフォーマンス値の合計が最大となる、仮想マシンとサーバの組み合わせを算出する組み合わせ算出手段と、上記組み合わせ算出手段により算出された仮想マシンとサーバの組み合わせに従って、各仮想マシンのファイルを当該仮想マシンに対応するサーバの記憶領域に格納して各仮想マシンの再配置を行なう手段とを備える。
【０００４】
また、特許文献２（特開２００８−５９５９９号公報）には、以下のような技術が開示されている。すなわち、プログラムをその稼働条件に適したリソースへ配置するプログラム配置方法であって、各リソースの性能および容量に関する状態を示す管理情報を参照することにより各リソースの構成管理情報を生成するステップと、各業務プログラムの使用するリソースの識別情報を含む構成管理情報を参照して、その識別情報で識別されるリソースの構成管理情報を各リソースの構成管理情報の中から読み出すことにより、当該業務プログラムの構成管理情報と上記検索されたリソースの構成管理情報とを関連付けた業務プログラム情報を生成するステップと、上記業務プログラム情報中のリソースの構成管理情報が、対応する業務プログラムでのリソース異常を検出するためのルールに該当する場合に、当該業務プログラムでリソース異常が発生していることを示す情報を出力するステップとを含む。
【０００５】
また、特許文献３（特開平０９−２１２４６７号公報）には、以下のような技術が開示されている。すなわち、並列型計算機の各計算機に負荷を分散する負荷分散制御システムにおいて、各計算機（仮想計算機を含む）の負荷情報の通知を受けて余剰能力を評価して算出する余剰能力評価手段と、いずれかの計算機にジョブが投入されたときに当該ジョブ情報の通知を受けて上記評価した余剰能力が最も高い計算機を選択し、ジョブを受け付けた計算機が最も余剰能力が高いときはその計算機にジョブを実行させ、一方、ジョブを受け付けた計算機以外の他の計算機が最も余剰能力が高いときはそのジョブを受け付けた計算機にジョブを転送させて実行させる手段とを並列型計算機のうちのマスタ計算機に備える。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１１５６５３号公報
【特許文献２】特開２００８−５９５９９号公報
【特許文献３】特開平０９−２１２４６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載されているように、リソース割り当て方法としては、たとえば、サーバ等のホストが有するリソースの使用状況等に応じてリソース割り当てを行ない、仮想マシン等のゲストによる負荷を分散する方法がある。
【０００８】
このようなリソース割り当て方法の具体例としては、たとえば、ゲストのリソース使用状況を監視し、ゲストのリソース使用率が上限閾値を超えた場合に、この閾値を超えたゲストを別のホスト上にマイグレーションする方法（方法１）が考えられる。しかしながら、方法１では、設定された上限閾値を超えた高負荷なゲストが存在した場合に、ゲストのマイグレーション処理がループになってしまう可能性がある。
【０００９】
また、リソース割り当て方法の具体例としては、たとえば、ゲストのリソース使用状況を監視し、ゲストのリソース使用量が大きくなった場合に、同一ホスト上で負荷率が低い他のゲストを別のホスト上にマイグレーションする方法（方法２）が考えられる。しかしながら、方法２では、高負荷のゲストが低スペックのホスト上に配置された場合に、高負荷のゲストに低スペックのホストが固定的に割り当てられてしまう可能性がある。
【００１０】
すなわち、従来の手法では、特定の条件下において適切なゲストの配置が実現できないという課題が懸念される。これら方法１および方法２の課題について、ゲストの配置例を用いて説明する。
【００１１】
図５は、仮想化システムにおけるホストおよびゲストの初期配置を示す図である。図６は、各ゲストの稼動状況を示す図である。図７は、各ホストの搭載リソース量を示す。ここでは、上限閾値が９０％であると仮定する。
【００１２】
図５を参照して、仮想化システム３００は、ゲストＯＳ＃１，ゲストＯＳ＃２，ゲストＯＳ＃３，ゲストＯＳ＃４，ゲストＯＳ＃５と、ホストＨＷ（ハードウェア）＃１，ホストＨＷ＃２，ホストＨＷ＃３とを備える。
【００１３】
図６を参照して、ゲストＯＳ＃１の必要リソース量（要求リソース量）は１３０であり、ゲストＯＳ＃２の必要リソース量は４０であり、ゲストＯＳ＃３の必要リソース量は４０であり、ゲストＯＳ＃４の必要リソース量は１０であり、ゲストＯＳ＃５の必要リソース量は１０である。
【００１４】
図７を参照して、ホストＨＷ＃１の搭載（供給）リソース量は１００であり、ホストＨＷ＃２の搭載リソース量は１００であり、ホストＨＷ＃３の搭載リソース量は１５０である。
【００１５】
図８は、リソース割り当て方法として方法１を適用した場合におけるゲストの動的配置のイメージを示す図である。
【００１６】
図８を参照して、上限閾値が９０％であることから、ホストＨＷ＃１，＃２における使
用可能リソース量は９０であり、ホストＨＷ＃３における使用可能リソース量は１３５である。
【００１７】
ここでは、ゲストＯＳ＃４，ゲストＯＳ＃５がホストＨＷ＃１に配置されており、ゲストＯＳ＃２がホストＨＷ＃２に配置されており、ゲストＯＳ＃３がホストＨＷ＃３に配置されている。
【００１８】
高負荷のゲストＯＳ＃１は、いずれのホストＨＷに配置される場合でも、ホストＨＷにおける使用可能リソース量を超えてしまう、すなわちホストＨＷの負荷率が上限閾値を超えてしまう。このため、ゲストＯＳ＃１はホストＨＷ＃１，ホストＨＷ＃２，ホストＨＷ＃３の間を配置変更され続け、マイグレーション処理がループになってしまう。
【００１９】
図９は、リソース割り当て方法として方法２を適用した場合におけるゲストの動的配置のイメージを示す図である。
【００２０】
図９を参照して、ゲストＯＳ＃１，ＯＳ＃４，ＯＳ＃５がホストＨＷ＃１に配置されており、ゲストＯＳ＃２がホストＨＷ＃２に配置されており、ゲストＯＳ＃３がホストＨＷ＃３に配置されている。
【００２１】
この場合、ホストＨＷ＃１の負荷率が上限閾値を超えてしまうため、ホストＨＷ＃１上で負荷率が低いゲストＯＳ＃４，ＯＳ＃５がそれぞれホストＨＷ＃３，＃２へ配置変更される。
【００２２】
そうすると、ゲストＯＳ＃１よりも高負荷のゲストＯＳがホストＨＷ＃１に配置されない限り、ゲストＯＳ＃１が低スペックのホストＨＷ＃１に固定されてしまう。
【００２３】
このように、方法１では、ゲストに対するホストの割り当てがループしてしまうという問題点があり、また、方法２では、ゲストに対するホストの割り当てが固定化されてしまうという問題点があった。特許文献１〜３には、これらの問題点を解決するための構成は開示されていない。
【００２４】
この発明は、上述の課題を解決するためになされたもので、その目的は、複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、仮想マシンに対する物理サーバの割り当てを適切に行なうことが可能なリソース割当装置、リソース割当方法、およびリソース割当プログラムを提供することである。
【課題を解決するための手段】
【００２５】
上記課題を解決するために、この発明のある局面に係わるリソース割当装置は、複数の物理サーバを備えかつ上記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、上記複数の物理サーバの有する各リソースを上記複数の仮想マシンに割り当てるためのリソース割当装置であって、上記複数の物理サーバの各リソース量を記憶するためのリソース管理部と、上記複数の物理サーバの各稼働負荷を監視するための稼働状況管理部と、上記リソース管理部の記憶する上記各リソース量および上記稼働状況管理部の監視結果である上記各稼働負荷に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択するためのリソース割当部とを備え、上記稼働状況管理部は、上記各物理サーバの負荷率閾値を記憶し、上記物理サーバの負荷率が上記負荷率閾値を超えた場合には、上記リソース割当部へ警告情報および上記各物理サーバの負荷率を示す負荷情報を出力し、上記リソース割当部は、上記警告情報を受けて、上記リソース管理部の記憶する上記各リソース量、および上記負荷情報に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択し、上記リソース割当部は、負荷率が上記負荷率閾値を超えた上
記物理サーバである高負荷物理サーバが複数の上記仮想マシンに割り当てられている場合であって、割り当てられている上記複数の仮想マシンのうち最も高負荷の上記仮想マシンである高負荷仮想マシン以外の上記仮想マシンへの割り当てを、上記高負荷物理サーバから上記高負荷物理サーバ以外の他の上記物理サーバへ変更しても、上記高負荷物理サーバの負荷率が上記負荷率閾値を超えるときには、上記高負荷仮想マシンの負荷量の上記仮想化システムにおける上記複数の仮想マシン中の順位を算出し、上記高負荷仮想マシンへの割り当てを、上記高負荷物理サーバから、上記仮想化システムにおける上記複数の物理サーバ中の保有リソース量の順位が上記算出した順位と同じ上記物理サーバである同順位物理サーバへ変更する。
【００２６】
またこの発明の別の局面に係わるリソース割当装置は、複数の物理サーバを備えかつ上記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、上記複数の物理サーバの有する各リソースを上記複数の仮想マシンに割り当てるためのリソース割当装置であって、上記複数の物理サーバの各リソース量を記憶するためのリソース管理部と、上記複数の物理サーバの各稼働負荷を監視するための稼働状況管理部と、上記リソース管理部の記憶する上記各リソース量および上記稼働状況管理部の監視結果である上記各稼働負荷に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択するためのリソース割当部とを備え、上記稼働状況管理部は、上記各物理サーバの負荷率閾値を記憶し、上記物理サーバの負荷率が上記負荷率閾値を超えた場合には、上記リソース割当部へ警告情報および上記各物理サーバの負荷率を示す負荷情報を出力し、上記リソース割当部は、上記警告情報を受けて、上記リソース管理部の記憶する上記各リソース量、および上記負荷情報に基づいて、上記複数の仮想マシンの各々にどの上記物理サーバを割り当てるかを示す割り当て計画を作成し、上記稼働状況管理部は、さらに、上記各仮想マシンにどの上記物理サーバがどれぐらいの期間割り当てられてきたかの稼働履歴を記録し、上記リソース割当部は、上記割り当て計画において上記物理サーバの割り当てが変更される上記仮想マシンの、所定期間における上記物理サーバの割り当て変更回数が所定値以上であるか否かを上記稼働履歴に基づいて判定し、上記所定値以上である場合には、上記割り当て計画に関わらず上記仮想マシンに割り当てられる上記物理サーバを変更しない。
【００２７】
上記課題を解決するために、この発明のある局面に係わるリソース割当方法は、複数の物理サーバを備えかつ上記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、上記複数の物理サーバの有する各リソースを上記複数の仮想マシンに割り当てるためのリソース割当方法であって、（ａ）上記複数の物理サーバの各リソース量を記憶するステップと、（ｂ）上記複数の物理サーバの各稼働負荷を監視するステップと、（ｃ）上記（ａ）のステップにおいて記憶した上記各リソース量および上記（ｂ）のステップにおける監視結果である上記各稼働負荷に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択するステップとを含み、上記（ｂ）のステップにおいては、上記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および上記各物理サーバの負荷率を示す負荷情報を出力し、上記（ｃ）のステップにおいては、上記警告情報を受けて、上記（ａ）のステップにおいて記憶した上記各リソース量、および上記負荷情報に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択し、上記（ｃ）のステップにおいては、負荷率が上記負荷率閾値を超えた上記物理サーバである高負荷物理サーバが複数の上記仮想マシンに割り当てられている場合であって、割り当てられている上記複数の仮想マシンのうち最も高負荷の上記仮想マシンである高負荷仮想マシン以外の上記仮想マシンへの割り当てを、上記高負荷物理サーバから上記高負荷物理サーバ以外の他の上記物理サーバへ変更しても、上記高負荷物理サーバの負荷率が上記負荷率閾値を超えるときには、上記高負荷仮想マシンの負荷量の上記仮想化システムにおける上記複数の仮想マシン中の順位を算出し、上記高負荷仮想マシンへの割り当てを、上記高負荷物理サーバから、上記仮想化システムにおける上記複数の物理サーバ中の保有リソース
量の順位が上記算出した順位と同じ上記物理サーバである同順位物理サーバへ変更する。
【００２８】
またこの発明の別の局面に係わるリソース割当方法は、複数の物理サーバを備えかつ上記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、上記複数の物理サーバの有する各リソースを上記複数の仮想マシンに割り当てるためのリソース割当方法であって、（ａ）上記複数の物理サーバの各リソース量を記憶するステップと、（ｂ）上記複数の物理サーバの各稼働負荷を監視するステップと、（ｃ）上記（ａ）のステップにおいて記憶した上記各リソース量および上記（ｂ）のステップにおける監視結果である上記各稼働負荷に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択するステップとを含み、上記（ｂ）のステップにおいては、上記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および上記各物理サーバの負荷率を示す負荷情報を出力し、上記（ｃ）のステップにおいては、上記警告情報を受けて、上記（ａ）のステップにおいて記憶した上記各リソース量、および上記負荷情報に基づいて、上記複数の仮想マシンの各々にどの上記物理サーバを割り当てるかを示す割り当て計画を作成し、上記（ｂ）のステップにおいては、さらに、上記各仮想マシンにどの上記物理サーバがどれぐらいの期間割り当てられてきたかの稼働履歴を記録し、上記（ｃ）のステップにおいては、上記割り当て計画において上記物理サーバの割り当てが変更される上記仮想マシンの、所定期間における上記物理サーバの割り当て変更回数が所定値以上であるか否かを上記稼働履歴に基づいて判定し、上記所定値以上である場合には、上記割り当て計画に関わらず上記仮想マシンに割り当てられる上記物理サーバを変更しない。
【００２９】
上記課題を解決するために、この発明のある局面に係わるリソース割当プログラムは、複数の物理サーバを備えかつ上記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、上記複数の物理サーバの有する各リソースを上記複数の仮想マシンに割り当てるためのリソース割当プログラムであって、コンピュータに、（ａ）上記複数の物理サーバの各リソース量を記憶するステップと、（ｂ）上記複数の物理サーバの各稼働負荷を監視するステップと、（ｃ）上記（ａ）のステップにおいて記憶した上記各リソース量および上記（ｂ）のステップにおける監視結果である上記各稼働負荷に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択するステップとを実行させ、上記（ｂ）のステップにおいては、上記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および上記各物理サーバの負荷率を示す負荷情報を出力し、上記（ｃ）のステップにおいては、上記警告情報を受けて、上記（ａ）のステップにおいて記憶した上記各リソース量、および上記負荷情報に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択し、上記（ｃ）のステップにおいては、負荷率が上記負荷率閾値を超えた上記物理サーバである高負荷物理サーバが複数の上記仮想マシンに割り当てられている場合であって、割り当てられている上記複数の仮想マシンのうち最も高負荷の上記仮想マシンである高負荷仮想マシン以外の上記仮想マシンへの割り当てを、上記高負荷物理サーバから上記高負荷物理サーバ以外の他の上記物理サーバへ変更しても、上記高負荷物理サーバの負荷率が上記負荷率閾値を超えるときには、上記高負荷仮想マシンの負荷量の上記仮想化システムにおける上記複数の仮想マシン中の順位を算出し、上記高負荷仮想マシンへの割り当てを、上記高負荷物理サーバから、上記仮想化システムにおける上記複数の物理サーバ中の保有リソース量の順位が上記算出した順位と同じ上記物理サーバである同順位物理サーバへ変更する。
【００３０】
またこの発明の別の局面に係わるリソース割当プログラムは、複数の物理サーバを備えかつ上記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、上記複数の物理サーバの有する各リソースを上記複数の仮想マシンに割り当てるためのリソース割当プログラムであって、コンピュータに、（ａ）上記複数の物理サーバの各リソース量を記憶するステップと、（ｂ）上記複数の物理サーバの各稼働負荷を監視するステップと、（ｃ）上記（ａ）のステップにおいて記憶した上記各リソース量およ
び上記（ｂ）のステップにおける監視結果である上記各稼働負荷に基づいて、上記各仮想マシンに割り当てる上記物理サーバを選択するステップとを実行させ、上記（ｂ）のステップにおいては、上記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および上記各物理サーバの負荷率を示す負荷情報を出力し、上記（ｃ）のステップにおいては、上記警告情報を受けて、上記（ａ）のステップにおいて記憶した上記各リソース量、および上記負荷情報に基づいて、上記複数の仮想マシンの各々にどの上記物理サーバを割り当てるかを示す割り当て計画を作成し、上記（ｂ）のステップにおいては、さらに、上記各仮想マシンにどの上記物理サーバがどれぐらいの期間割り当てられてきたかの稼働履歴を記録し、上記（ｃ）のステップにおいては、上記割り当て計画において上記物理サーバの割り当てが変更される上記仮想マシンの、所定期間における上記物理サーバの割り当て変更回数が所定値以上であるか否かを上記稼働履歴に基づいて判定し、上記所定値以上である場合には、上記割り当て計画に関わらず上記仮想マシンに割り当てられる上記物理サーバを変更しない。
【発明の効果】
【００３１】
本発明によれば、複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、仮想マシンに対する物理サーバの割り当てを適切に行なうことができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態に係るリソース割当装置の概略構成図である。
【図２】本発明の実施の形態に係る仮想化システムの構成、および本発明の実施の形態に係るリソース割当装置が提供する制御構造を示すブロック図である。
【図３】本発明の実施の形態に係るリソース割当装置がリソース割当処理を行なう際の動作手順を示すフローチャートである。
【図４】図５〜図７に示す例において、本発明の実施の形態に係るリソース割当装置がリソース割当処理を行なった場合におけるゲストの動的配置のイメージを示す図である。
【図５】仮想化システムにおけるホストおよびゲストの初期配置を示す図である。
【図６】各ゲストの稼動状況を示す図である。
【図７】各ホストの搭載リソース量を示す。
【図８】リソース割り当て方法として方法１を適用した場合におけるゲストの動的配置のイメージを示す図である。
【図９】リソース割り当て方法として方法２を適用した場合におけるゲストの動的配置のイメージを示す図である。
【発明を実施するための形態】
【００３３】
［概要］
前述のように、リソース割当の動的計画手法と、ライブマイグレーション技術とを組み合わせることにより、柔軟なリソース割当を実現することが可能となる。
【００３４】
しかしながら、動的計画においては、計画要素に時間と共に変動するゲストのリソース要求量が含まれるため、最適計画を立案するのは困難である。
【００３５】
本発明の実施の形態では、従来の動的計画手法で発生が懸念される課題を解決することが可能となる。
【００３６】
より詳細には、従来の仮想マシン配置手法の課題として懸念される、高負荷ゲストのマイグレーション処理がループしてしまう問題、および高負荷ゲストが低スペックのホストに貼りついてしまう問題の原因として、動的配置のマイグレーション対象となるゲストの
選定が固定化されてしまうことが考えられる。
【００３７】
本発明の実施の形態では、ゲストの高負荷状態の検出による動的配置の契機ごとに、リソース供給状態を指標として取り入れてマイグレーション対象となるゲストの選定計画を行なうことにより、前述の課題の解決を図る。
【００３８】
本発明の実施の形態は、以下のような特徴を有する。すなわち、複数種類の物理サーバ（以下、ホストとも称する。）および複数種類の仮想マシン（以下、ゲストとも称する。）からなるプラットフォーム（仮想化システム）を考える。この仮想化システムで稼動するリソース割当装置において、各ゲストの稼動状況を監視し、各ゲストに対する各ホストのＨＷリソースの割り当てを動的に調整する。これにより、柔軟なリソース割り当て、および負荷分散のための配置を計画する。このような構成において、動的配置案を検討する際の指標としてリソース供給状態を追加することにより、効率的なリソース割当を実現する。
【００３９】
すなわち、本発明の実施の形態では、サーバ仮想化技術を用いて複数種類のホストおよび複数種類のゲストからなるプラットフォームで稼動するシステムにおいて、仮想マシンの稼動監視と動的配置とを行なうリソース割当装置を導入することにより、ゲストに対して、従来手法よりも効率的なリソース割当を実現することができる。
【００４０】
本発明の実施の形態に係るリソース割当装置は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、予めインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスク（Flexible Disk）およびＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの記録媒体に格納されて、あるいはネットワークなどを介して流通する。
【００４１】
本発明の実施の形態に係るプログラムは、ＯＳ等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【００４２】
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００４３】
［装置構成］
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００４４】
図１は、本発明の実施の形態に係るリソース割当装置の概略構成図である。図１を参照して、リソース割当装置２０１は、演算処理部であるＣＰＵ（Central Processing Unit）１０１と、記憶部としてのメインメモリ１０２およびハードディスク１０３と、入力インターフェイス１０４と、表示コントローラ１０５と、データリーダ／ライタ１０６と、通信インターフェイス１０７とを備える。これらの各部は、バス１２１を介して互いにデータ通信可能に接続される。
【００４５】
ＣＰＵ１０１は、ハードディスク１０３に格納されたプログラム（コード）をメインメモリ１０２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１０２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１０３から読み出されたプログラムに加えて、
各種の演算処理結果を示すデータなどを保持する。また、ハードディスク１０３は不揮発性の磁気記憶装置であり、ＣＰＵ１０１で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク１０３にインストールされるプログラムは、後述するように、記録媒体１１１に格納された状態で流通する。なお、ハードディスク１０３に加えて、あるいはハードディスク１０３に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００４６】
入力インターフェイス１０４は、ＣＰＵ１０１とキーボード１０８、マウス１０９および図示しないタッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス１０４は、ユーザが入力部を操作することで与えられる操作指令などの外部からの入力を受け付ける。
【００４７】
表示コントローラ１０５は、表示部の典型例であるディスプレイ１１０と接続され、ディスプレイ１１０での表示を制御する。すなわち、表示コントローラ１０５は、ＣＰＵ１０１による画像処理の結果などをユーザに対して表示する。ディスプレイ１１０は、たとえばＬＣＤ（Liquid Crystal Display）またはＣＲＴ（Cathode Ray Tube）である。
【００４８】
データリーダ／ライタ１０６は、ＣＰＵ１０１と記録媒体１１１の間のデータ伝送を仲介する。すなわち、記録媒体１１１は、リソース割当装置２０１で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１０６は、この記録媒体１１１からプログラムを読み出す。また、データリーダ／ライタ１０６は、ＣＰＵ１０１の内部指令に応答して、リソース割当装置２０１における処理結果などを記録媒体１１１へ書き込む。なお、記録媒体１１１は、たとえば、ＣＦ（Compact Flash）およびＳＤ（Secure Digital）などの汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体、またはＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体である。
【００４９】
通信インターフェイス１０７は、ＣＰＵ１０１とパーソナルコンピュータおよびサーバ装置などの間のデータ伝送を仲介する。通信インターフェイス１０７は、典型的には、イーサネット（登録商標）またはＵＳＢ（Universal Serial Bus）の通信機能を有する。なお、記録媒体１１１に格納されたプログラムをリソース割当装置２０１にインストールする形態に代えて、通信インターフェイス１０７を介して配信サーバなどからダウンロードしたプログラムをリソース割当装置２０１にインストールしてもよい。
【００５０】
また、リソース割当装置２０１には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００５１】
［制御構造］
次に、リソース割当装置２０１における各種機能を提供するための制御構造について説明する。
【００５２】
図２は、本発明の実施の形態に係る仮想化システムの構成、および本発明の実施の形態に係るリソース割当装置が提供する制御構造を示すブロック図である。なお、以下で説明する内容以外は図５に示す仮想化システム３００と同様である。
【００５３】
図２に示すリソース割当装置２０１の各ブロックは、ハードディスク１０３に格納されたプログラム（コード）などをメインメモリ１０２に展開して、ＣＰＵ１０１に実行させることで提供される。なお、図２に示すモジュールの一部もしくは全部がハードウェアに実装されているファームウェアによって提供される場合もある。あるいは、図２に示す制御構造の一部もしくは全部を専用ハードウェアおよび／または配線回路によって実現して
もよい。
【００５４】
図２を参照して、仮想化システム３０１は、リソース割当装置２０１と、稼働システム２０２とを備える。稼働システム２０２は、ゲストＯＳ＃１，ゲストＯＳ＃２，ゲストＯＳ＃３，ゲストＯＳ＃４，ゲストＯＳ＃５と、ホストＨＷ＃１，ホストＨＷ＃２，ホストＨＷ＃３とを含む。
【００５５】
稼働システム２０２は、複数のホストを備えかつ当該複数のホストにおいて複数のゲストを稼働させる。リソース割当装置２０１は、当該複数のホストの有する各リソースを当該複数のゲストに割り当てる。
【００５６】
より詳細には、リソース割当装置（仮想マシン配置装置）２０１は、その制御構造として、稼働状況管理部１１と、供給リソース管理部１２と、リソース割当部１３とを備える。リソース割当部１３は、仮想マシンマイグレーション命令発行部２６と、仮想マシン配置計画部２７とを含む。
【００５７】
稼働状況管理部１１は、稼働システム２０２における各ホストの各稼働負荷を監視する。稼働状況管理部１１は、各ホストの負荷率閾値を記憶している。また、稼働状況管理部１１は、各ゲストにどのホストがどれぐらいの期間割り当てられてきたかの稼働履歴を記録する。
【００５８】
供給リソース管理部１２は、稼働システム２０２における各ホストの各リソース量を記憶する。リソース割当部１３は、供給リソース管理部１２の記憶する各リソース量および稼働状況管理部１１の監視結果である各稼働負荷に基づいて、各ゲストに割り当てるホストを選択する。
【００５９】
仮想マシン配置計画部２７は、各ゲストにどのホストを割り当てるかを示す割り当て計画を作成する。
【００６０】
仮想マシンマイグレーション命令発行部２６は、仮想マシン配置計画部２７が作成した割り当て計画に従って、ホストＨＷをゲストＯＳに割り当てる。
【００６１】
稼働状況管理部１１は、ホスト稼働状況テーブル２１と、ゲスト稼働状況テーブル２２と、負荷率閾値テーブル２３と、ゲスト稼働履歴テーブル２４とを有する。供給リソース管理部１２は、ホスト搭載リソーステーブル２５を含む。仮想マシン配置計画部２７は、ゲスト配置状況テーブル３１を有する。リソース割当装置２０１における各テーブルは、たとえば図１に示すメインメモリ１０２またはハードディスク１０３に格納される。
【００６２】
ホスト稼働状況テーブル２１は、ホストＨＷ＃１，ホストＨＷ＃２，ホストＨＷ＃３の負荷率等の稼働状況を示す。ゲスト稼働状況テーブル２２は、ゲストＯＳ＃１，ゲストＯＳ＃２，ゲストＯＳ＃３，ゲストＯＳ＃４，ゲストＯＳ＃５の負荷量等の稼働状況を示す。負荷率閾値テーブル２３は、ホストＨＷ＃１，ホストＨＷ＃２，ホストＨＷ＃３の負荷率閾値を示す。ゲスト稼働履歴テーブル２４は、ゲストＯＳ＃１，ゲストＯＳ＃２，ゲストＯＳ＃３，ゲストＯＳ＃４，ゲストＯＳ＃５に割り当てられたホストＨＷの履歴を示す。ホスト搭載リソーステーブル２５は、ホストＨＷ＃１，ホストＨＷ＃２，ホストＨＷ＃３が搭載しているリソース量を示す。ゲスト配置状況テーブル３１は、各ゲストの各ホストにおける配置状況、すなわち、現在どのゲストにどのホストが割り当てられているかを示す。
【００６３】
［動作］
次に、本発明の実施の形態に係るリソース割当装置の動作について図面を用いて説明する。本発明の実施の形態では、リソース割当装置２０１を動作させることによって、本発明の実施の形態に係るリソース割当方法が実施される。よって、本発明の実施の形態に係るリソース割当方法の説明は、以下のリソース割当装置２０１の動作説明に代える。なお、以下の説明においては、適宜図２を参照する。
【００６４】
図３は、本発明の実施の形態に係るリソース割当装置がリソース割当処理を行なう際の動作手順を示すフローチャートである。
【００６５】
図３を参照して、稼働状況管理部１１は、稼動システム２０２の稼働負荷を監視している。より詳細には、稼働状況管理部１１は、各ホストの負荷率および各ゲストの負荷量を監視する。この負荷量は、図６に示す必要リソース量に相当する。たとえば、稼働状況管理部１１は、各ホストから負荷率を定期的に取得し、また、各ゲストから負荷量を定期的に取得する（ステップＳ１）。
【００６６】
また、供給リソース管理部１２は、稼動システム２０２における供給リソース量を取得して保持している。より詳細には、稼働状況管理部１１は、各ホストから供給リソース量を取得して保持する。この供給リソース量は、図７に示す搭載リソース量に相当する（ステップＳ２）。
【００６７】
次に、稼働状況管理部１１は、稼動システム２０２のリソース使用量が、保持している閾値を超えたときに、警告情報および稼動システム２０２の負荷状況を仮想マシン配置計画部２７へ出力する。すなわち、稼働状況管理部１１は、いずれかのホストの負荷率が負荷率閾値を超えると、リソース割当部１３へ警告情報および各ホストの負荷率を示す負荷情報を出力する（ステップＳ３）。
【００６８】
次に、仮想マシン配置計画部２７は、稼働状況管理部１１から警告情報を受けて、供給リソース管理部１２から、各ホストの供給リソース量を取得する（ステップＳ４）。
【００６９】
次に、リソース割当部１３は、稼働状況管理部１１から警告情報を受けて、供給リソース管理部１２の記憶する各リソース量、および稼働状況管理部１１から受けた負荷情報に基づいて、各ゲストに割り当てるホストを選択する。より詳細には、仮想マシン配置計画部２７は、取得した情報に基づいて、以下のステップに示す手順でゲスト配置計画を立案する。すなわち、仮想マシン配置計画部２７は、稼働状況管理部１１から警告情報を受けて、供給リソース管理部１２の記憶する各リソース量、および稼働状況管理部１１から受けた負荷情報に基づいて、複数のゲストの各々にどのホストを割り当てるかを示す割り当て計画を作成する（ステップＳ５）。
【００７０】
より詳細には、リソース割当部１３は、負荷率が負荷率閾値を超えたホスト（以下、高負荷ホストとも称する。）が複数のゲストに割り当てられている場合には、割り当てられている複数のゲストのうち最も高負荷のゲスト（以下、高負荷ゲストとも称する。）以外のゲスト（以下、低負荷ゲストとも称する。）への割り当てを、高負荷ホストから高負荷ホスト以外の他のホストへ変更するか否かを判別する。すなわち、仮想マシン配置計画部２７は、高負荷ホストにおいて、高負荷ゲスト以外の他のゲストをマイグレーションすることにより、高負荷ホスト上でリソース供給が可能か否かを計算する。仮想マシン配置計画部２７は、高負荷ホスト上でリソース供給が可能である場合には（ステップＳ６でＹＥＳ）、高負荷ホスト上の低負荷ゲストを他のホストへのマイグレーション対象として選択する（ステップＳ９）。
【００７１】
一方、リソース割当部１３は、低負荷ゲストへの割り当てを、高負荷ホストから高負荷
ホスト以外の他のホストへ変更しても、高負荷ホストの負荷率が負荷率閾値を超えるときには（ステップＳ６でＮＯ）、高負荷ゲストの負荷量の仮想化システム３０１における全ゲスト中の順位（以下、負荷量順位とも称する。）を算出する。そして、リソース割当部１３は、高負荷ゲストへの割り当てを、高負荷ホストから、仮想化システム３０１における全ホスト中の保有リソース量の順位が負荷量順位と同じホスト（以下、同順位ホストとも称する。）へ変更する（ステップＳ７）。すなわち、仮想マシン配置計画部２７は、高負荷ホストにおいて高負荷ゲスト以外の他のゲストをマイグレーションしても、高負荷ホスト上でリソース供給ができない場合には（ステップＳ６でＮＯ）、高負荷ゲストが、仮想化システム３０１における全ゲスト中、何番目の高負荷状態かを計算し、計算した順位と同じ供給リソース量を搭載した同順位ホストを高負荷ゲストの稼動ホストとする（ステップＳ７）。
【００７２】
また、リソース割当部１３は、同順位ホストを高負荷ゲストに割り当てた場合、同順位ホストが自己の負荷率閾値以下で稼働可能か否かを判定し、稼働できない場合には（ステップＳ８でＮＯ）、同順位ホストが割り当てられている１または複数のゲストであって高負荷ゲスト以外の他のゲストへの割り当てを、同順位ホストから他のホストへ変更する（ステップＳ９）。すなわち、仮想マシン配置計画部２７は、高負荷ゲストを同順位ホストへマイグレーションした場合において高負荷ホストが上限閾値内で稼動できるか否かを計算し、稼働できない場合には（ステップＳ８でＮＯ）、同順位ホスト上の高負荷ゲスト以外のゲストを他のホストへのマイグレーション対象として選択する（ステップＳ９）。
【００７３】
一方、仮想マシン配置計画部２７は、高負荷ホストにおいて高負荷ゲスト以外の他のゲストをマイグレーションしても、高負荷ホスト上でリソース供給が可能である場合には（ステップＳ８でＹＥＳ）、高負荷ゲストのみをマイグレーション対象として選択する。
【００７４】
次に、リソース割当部１３は、割り当て計画においてホストの割り当てが変更されるゲストの、所定期間におけるホストの割り当て変更回数が所定値以上であるか否かを稼働履歴に基づいて判定する（ステップＳ１０）。そして、リソース割当部１３は、割り当て変更回数が所定値以上である場合には（ステップＳ１１でＹＥＳ）、割り当て計画に関わらず当該ゲストに割り当てられるホストを変更しない（ステップＳ１２）。
【００７５】
より詳細には、仮想マシン配置計画部２７は、以下のステップに示す手順で、マイグレーション命令の発行を中止すべきか否か、すなわちループ処理の回避を行なうべきか否かを判定する（ステップＳ１０）。すなわち、仮想マシン配置計画部２７は、ゲスト稼動履歴テーブル２４を参照することにより、マイグレーション対象となるゲスト（以下、対象ゲストとも称する。）に関しループ処理が行なわれているか否かを判定する（ステップＳ１１）。仮想マシン配置計画部２７は、対象ゲストがループしている場合には（ステップＳ１１でＹＥＳ）、対象ゲストへのマイグレーション命令を発行しない（ステップＳ１２）。これは、高負荷ゲストによって高負荷ホストの負荷量は閾値を超えているが、仮想化システム３０１において提供されているホストのリソース状況では現状の配置が最適となるためである。
【００７６】
一方、仮想マシン配置計画部２７は、マイグレーション対象がループしている場合には（ステップＳ１１でＮＯ）、立案したゲスト配置計画を仮想マシンマイグレーション命令発行部２６へ出力する（ステップＳ１３）。
【００７７】
次に、仮想マシンマイグレーション命令発行部２６は、仮想マシン配置計画部２７から受けたゲスト配置計画に従い、稼動システム２０２の対象ホストにマイグレーション命令を発行する（ステップＳ１４）。
【００７８】
次に、マイグレーション命令を受けたホストは、マイグレーション命令が示すゲストの配置変更を実行する（ステップＳ１５）。
【００７９】
図４は、図５〜図７に示す例において、本発明の実施の形態に係るリソース割当装置がリソース割当処理を行なった場合におけるゲストの動的配置のイメージを示す図である。
【００８０】
図３および図４を参照して、高負荷となったゲストＯＳ＃１が稼動しているホストＨＷ＃１において、ゲストＯＳ＃４，＃５をマイグレーションしても、ホストＨＷ＃１は、その搭載リソース量が１００であるため、ゲストＯＳ＃１が必要とするリソース（１３０）を供給することができない（ステップＳ６でＮＯ）。
【００８１】
高負荷となったゲストＯＳ＃１は、ゲストＯＳ＃１〜ＯＳ＃５の全ゲストＯＳ中、１番高い負荷状態となるため、１番大きいリソース量を供給可能なホストＨＷ＃３へゲストＯＳ＃１がマイグレーションされる（ステップＳ７）。
【００８２】
ゲストＯＳ＃１をホストＨＷ＃３にマイグレーションした場合、ゲストＯＳ＃１およびゲストＯＳ＃３のリソース使用量の合計値（１７０）が、ホストＨＷ＃３の上限閾値すなわち搭載リソース量（１５０）を超える（ステップＳ８でＮＯ）。このため、ゲストＯＳ＃３をたとえばホストＨＷ＃２にマイグレーションし、高負荷のゲストＯＳ＃１に優先的にホストＨＷ＃３のリソースを割り当てることとする（ステップＳ９）。
【００８３】
ところで、前述の方法１では、ゲストに対するホストの割り当てがループしてしまうという問題点があった。
【００８４】
これに対して、本発明の実施の形態では、リソース割当部１３は、稼働状況管理部１１から警告情報を受けて、供給リソース管理部１２の記憶する各リソース量、および稼働状況管理部１１から受けた負荷情報に基づいて、各仮想マシン（ゲスト）にどの物理サーバ（ホスト）を割り当てるかを示す割り当て計画を作成する。また、稼働状況管理部１１は、各仮想マシンにどの物理サーバがどれくらいの期間割り当てられてきたかの稼働履歴を記録する。そして、リソース割当部１３は、作成した割り当て計画において物理サーバの割り当てが変更される仮想マシンの、所定期間における物理サーバの割り当て変更回数が所定値以上であるか否かを稼働履歴に基づいて判定する。リソース割当部１３は、割り当て変更回数が所定値以上である場合には、割り当て計画に関わらず当該仮想マシンに割り当てられる物理サーバを変更しない。
【００８５】
このような構成により、ゲストに対するホストの割り当てがループしてしまうという問題を防ぐことができる。すなわち、本発明の実施の形態では、仮想マシンの動的配置計画立案に際して、高負荷ゲストが存在する場合に、高負荷ゲストが要求するリソース量の提供を満たすホストを発見するまでマイグレーションし続けるループ処理の発生を避けることができる。
【００８６】
また、前述の方法２では、ゲストに対するホストの割り当てが固定化されてしまうという問題点があった。
【００８７】
これに対して、本発明の実施の形態では、リソース割当部１３は、稼働状況管理部１１から警告情報を受けて、供給リソース管理部１２の記憶する各リソース量、および稼働状況管理部１１から受けた負荷情報に基づいて、各仮想マシンに割り当てる物理サーバを選択する。すなわち、リソース割当部１３は、負荷率が負荷率閾値を超えた物理サーバである高負荷物理サーバが複数の仮想マシンに割り当てられている場合には、割り当てられている複数の仮想マシンのうち最も高負荷の仮想マシンである高負荷仮想マシン以外の仮想
マシンへの割り当てを、高負荷物理サーバから高負荷物理サーバ以外の他の物理サーバへ変更したときの高負荷物理サーバの負荷率を算出する。リソース割当部１３は、この割り当て変更を行なっても高負荷物理サーバの負荷率が負荷率閾値を超える場合には、高負荷仮想マシンの負荷量の仮想化システム３０１における全仮想マシン中の順位（負荷量順位）を算出する。そして、リソース割当部１３は、高負荷仮想マシンへの割り当てを、高負荷物理サーバから、仮想化システム３０１における全物理サーバ中の保有リソース量の順位が負荷量順位と同じ物理サーバである同順位物理サーバへ変更する。
【００８８】
このような構成により、ゲストに対するホストの割り当てが固定化されてしまうという問題を防ぐことができる。すなわち、仮想マシンの動的配置計画立案に際して、異なるリソース量を搭載するホスト、および高負荷のゲストが存在する場合に、高負荷ゲストに高スペックのホストを割り当てることができる。
【００８９】
以上のように、本発明の実施の形態に係るリソース割当装置２０１における各構成要素のうち、稼働状況管理部１１、供給リソース管理部１２およびリソース割当部１３からなる最小構成により、仮想マシンに対する物理サーバの割り当てを適切に行なうという本発明の目的を達成することが可能となる。
【００９０】
また、本発明の実施の形態では、リソース割当部１３は、同順位物理サーバ（同順位ホスト）を高負荷仮想マシン（高負荷ゲスト）に割り当てた場合、同順位物理サーバが自己の負荷率閾値以下で稼働可能か否かを判定し、稼働できない場合には、同順位物理サーバが割り当てられている１または複数の仮想マシンであって高負荷ゲスト以外の他の仮想マシンへの割り当てを、同順位物理サーバから他の物理サーバへ変更する。このような構成により、仮想マシンに対する物理サーバの割り当てをさらに適切に行ない、仮想化システムにおける負荷分散をさらに図ることができる。
【００９１】
付言すれば、本発明の実施の形態に係るリソース割当装置の特徴としては、たとえば、ゲスト稼動履歴テーブル２４およびホスト搭載リソーステーブル２５を有し、これらのテーブルに格納されている情報を仮想マシン配置計画部２７での計画立案時の指標とする点が挙げられる。
【００９２】
すなわち、ゲスト稼動履歴テーブル２４の情報を計画立案時の指標とすることにより、方法１で懸念されていた、高負荷ゲストのマイグレーションループ処理の発生を防ぐことができる。
【００９３】
また、ホスト搭載リソーステーブル２５の情報を計画立案時の指標とすることにより、方法２で懸念されていた、高負荷ゲストが低スペックホスト上に固定的に配置されてしまう問題を防ぐことができる。
【００９４】
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【００９５】
本発明によれば、複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、仮想マシンに対する物理サーバの割り当てを適切に行なうことができる。したがって、本発明は、仮想化された計算機リソースを用いたシステムに適用され、このシステムにおけるリソース有効活用を可能とすることから、産業上の利用可能性を有している。
【００９６】
［付記１］
複数の物理サーバを備えかつ前記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、前記複数の物理サーバの有する各リソースを前記複数の仮想マシンに割り当てるためのリソース割当方法であって、
（ａ）前記複数の物理サーバの各リソース量を記憶するステップと、
（ｂ）前記複数の物理サーバの各稼働負荷を監視するステップと、
（ｃ）前記（ａ）のステップにおいて記憶した前記各リソース量および前記（ｂ）のステップにおける監視結果である前記各稼働負荷に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択するステップとを含み、
前記（ｂ）のステップにおいては、前記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および前記各物理サーバの負荷率を示す負荷情報を出力し、
前記（ｃ）のステップにおいては、前記警告情報を受けて、前記（ａ）のステップにおいて記憶した前記各リソース量、および前記負荷情報に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択し、
前記（ｃ）のステップにおいては、負荷率が前記負荷率閾値を超えた前記物理サーバである高負荷物理サーバが複数の前記仮想マシンに割り当てられている場合であって、割り当てられている前記複数の仮想マシンのうち最も高負荷の前記仮想マシンである高負荷仮想マシン以外の前記仮想マシンへの割り当てを、前記高負荷物理サーバから前記高負荷物理サーバ以外の他の前記物理サーバへ変更しても、前記高負荷物理サーバの負荷率が前記負荷率閾値を超えるときには、前記高負荷仮想マシンの負荷量の前記仮想化システムにおける前記複数の仮想マシン中の順位を算出し、前記高負荷仮想マシンへの割り当てを、前記高負荷物理サーバから、前記仮想化システムにおける前記複数の物理サーバ中の保有リソース量の順位が前記算出した順位と同じ前記物理サーバである同順位物理サーバへ変更する、リソース割当方法。
【００９７】
［付記２］
前記（ｃ）のステップにおいては、前記同順位物理サーバを前記高負荷仮想マシンに割り当てた場合、前記同順位物理サーバが自己の前記負荷率閾値以下で稼働可能か否かを判定し、稼働できない場合には、前記同順位物理サーバが割り当てられている１または複数の前記仮想マシンであって前記高負荷仮想マシン以外の他の前記仮想マシンへの割り当てを、前記同順位物理サーバから他の前記物理サーバへ変更する、付記１に記載のリソース割当方法。
【００９８】
［付記３］
前記（ｃ）のステップにおいては、前記警告情報を受けて、前記（ａ）のステップにおいて記憶した前記各リソース量、および前記負荷情報に基づいて、前記複数の仮想マシンの各々にどの前記物理サーバを割り当てるかを示す割り当て計画を作成し、
前記（ｂ）のステップにおいては、さらに、前記各仮想マシンにどの前記物理サーバがどれぐらいの期間割り当てられてきたかの稼働履歴を記録し、
前記（ｃ）のステップにおいては、前記割り当て計画において前記物理サーバの割り当てが変更される前記仮想マシンの、所定期間における前記物理サーバの割り当て変更回数が所定値以上であるか否かを前記稼働履歴に基づいて判定し、前記所定値以上である場合には、前記割り当て計画に関わらず前記仮想マシンに割り当てられる前記物理サーバを変更しない、付記１または２に記載のリソース割当方法。
【００９９】
［付記４］
複数の物理サーバを備えかつ前記複数の物理サーバにおいて複数の仮想マシンを稼働させるための仮想化システムにおいて、前記複数の物理サーバの有する各リソースを前記複数の仮想マシンに割り当てるためのリソース割当プログラムであって、コンピュータに、（ａ）前記複数の物理サーバの各リソース量を記憶するステップと、
（ｂ）前記複数の物理サーバの各稼働負荷を監視するステップと、
（ｃ）前記（ａ）のステップにおいて記憶した前記各リソース量および前記（ｂ）のステップにおける監視結果である前記各稼働負荷に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択するステップとを実行させ、
前記（ｂ）のステップにおいては、前記物理サーバの負荷率が自己の負荷率閾値を超えた場合には、警告情報および前記各物理サーバの負荷率を示す負荷情報を出力し、
前記（ｃ）のステップにおいては、前記警告情報を受けて、前記（ａ）のステップにおいて記憶した前記各リソース量、および前記負荷情報に基づいて、前記各仮想マシンに割り当てる前記物理サーバを選択し、
前記（ｃ）のステップにおいては、負荷率が前記負荷率閾値を超えた前記物理サーバである高負荷物理サーバが複数の前記仮想マシンに割り当てられている場合であって、割り当てられている前記複数の仮想マシンのうち最も高負荷の前記仮想マシンである高負荷仮想マシン以外の前記仮想マシンへの割り当てを、前記高負荷物理サーバから前記高負荷物理サーバ以外の他の前記物理サーバへ変更しても、前記高負荷物理サーバの負荷率が前記負荷率閾値を超えるときには、前記高負荷仮想マシンの負荷量の前記仮想化システムにおける前記複数の仮想マシン中の順位を算出し、前記高負荷仮想マシンへの割り当てを、前記高負荷物理サーバから、前記仮想化システムにおける前記複数の物理サーバ中の保有リソース量の順位が前記算出した順位と同じ前記物理サーバである同順位物理サーバへ変更する、リソース割当プログラム。
【０１００】
［付記５］
前記（ｃ）のステップにおいては、前記同順位物理サーバを前記高負荷仮想マシンに割り当てた場合、前記同順位物理サーバが自己の前記負荷率閾値以下で稼働可能か否かを判定し、稼働できない場合には、前記同順位物理サーバが割り当てられている１または複数の前記仮想マシンであって前記高負荷仮想マシン以外の他の前記仮想マシンへの割り当てを、前記同順位物理サーバから他の前記物理サーバへ変更する、付記４に記載のリソース割当プログラム。
【０１０１】
［付記６］
前記（ｃ）のステップにおいては、前記警告情報を受けて、前記（ａ）のステップにおいて記憶した前記各リソース量、および前記負荷情報に基づいて、前記複数の仮想マシンの各々にどの前記物理サーバを割り当てるかを示す割り当て計画を作成し、
前記（ｂ）のステップにおいては、さらに、前記各仮想マシンにどの前記物理サーバがどれぐらいの期間割り当てられてきたかの稼働履歴を記録し、
前記（ｃ）のステップにおいては、前記割り当て計画において前記物理サーバの割り当てが変更される前記仮想マシンの、所定期間における前記物理サーバの割り当て変更回数が所定値以上であるか否かを前記稼働履歴に基づいて判定し、前記所定値以上である場合には、前記割り当て計画に関わらず前記仮想マシンに割り当てられる前記物理サーバを変更しない、付記４または５に記載のリソース割当プログラム。
【符号の説明】
【０１０２】
１１  稼働状況管理部
１２  供給リソース管理部
１３  リソース割当部
２６  仮想マシンマイグレーション命令発行部
２７  仮想マシン配置計画部
１０１  ＣＰＵ
１０２  メインメモリ
１０３  ハードディスク
１０４  入力インターフェイス
１０５  表示コントローラ
１０６  データリーダ／ライタ
１０７  通信インターフェイス
１２１  バス
２０１  リソース割当装置
２０２  稼働システム
３００  仮想化システム
３０１  仮想化システム
【図１】
2011186701.tif 000003
【図２】
2011186701.tif 000004
【図３】
2011186701.tif 000005
【図４】
2011186701.tif 000006
【図５】
2011186701.tif 000007
【図６】
2011186701.tif 000008
【図７】
2011186701.tif 000009
【図８】
2011186701.tif 000010
【図９】
2011186701.tif 000011