(57)【要約】【課題】複数のサービスをそれぞれ個別の仮想マシンで動作させ、サービスに必要な処理能力やネットワーク帯域、利用するネットワークプロトコルを切り分けること。【解決手段】複数の仮想マシンを起動するノード装置は、仮想マシンに対して資源を割り当てる手段と、割り当てる手段により、資源が割り当てられた仮想マシンを用いてサービスを提供する手段と、各仮想マシンにおける資源の利用状況を監視する手段とを有する。割り当てる手段は、新たに起動させる仮想マシンに割り当てる資源が不足している場合に、該新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されないと想定される資源を割り当てる。【選択図】図１
2009258982.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンを起動するノード装置であって、
仮想マシンに対して資源を割り当てる手段と、
前記割り当てる手段により、資源が割り当てられた仮想マシンを用いてサービスを提供する手段と、
各仮想マシンにおける資源の利用状況を監視する手段と
を有し、
前記割り当てる手段は、新たに起動させる仮想マシンに割り当てる資源が不足している場合に、該新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されないと想定される資源を割り当てることを特徴とするノード装置。
【請求項２】
請求項１に記載のノード装置において、
前記資源には、サービスの処理に使用される処理資源と、サービスのデータ送受信に使用されるリンク資源とが含まれることを特徴とするノード装置。
【請求項３】
請求項１又は２に記載のノード装置において、
前記割り当てる手段は、前記新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されていない資源を割り当てることを特徴とするノード装置。
【請求項４】
請求項１ないし３のいずれか１項に記載のノード装置において、
前記割り当てる手段は、前記新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンに対して、該仮想マシンが要求した資源量以上の資源が割り当てられている場合に、該要求した資源量以上の資源に該当する資源を割り当てることを特徴とするノード装置。
【請求項５】
請求項１ないし４のいずれか１項に記載のノード装置において、
前記割り当てる手段は、前記監視する手段により資源が不足していると判断された仮想マシンに対して、当該資源が不足していると判断された仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されないと想定される資源を割り当てることを特徴とするノード装置。
【請求項６】
請求項５に記載のノード装置において、
前記割り当てる手段は、前記監視する手段により資源が不足していると判断された仮想マシンに対して、当該資源が不足していると判断された仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されていない資源を割り当てることを特徴とするノード装置。
【請求項７】
請求項５又は６に記載のノード装置において、
前記割り当てる手段は、前記監視する手段により資源が不足していると判断された仮想マシンに対して、当該資源が不足していると判断された仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンに対して、該仮想マシンが要求した資源量以上の資源が割り当てられている場合に、該要求した資源量以上の資源に該当する資源を割り当てることを特徴とするノード装置。
【請求項８】
請求項１ないし８のいずれか１項に記載のノード装置において、
前記監視する手段において、資源の利用状況が変化した仮想マシンを検出した場合に、該仮想マシンが提供するサービスを利用するノード装置に対して、資源の利用状況が変化したことを通知する手段
を有することを特徴とするノード装置。
【請求項９】
仮想マシンに対して資源を割り当てるステップと、
仮想マシンを起動するステップと、
前記割り当てるステップにより、資源が割り当てられた仮想マシンを用いてサービスを提供するステップと、
仮想マシンにおける資源の利用状況を監視するステップと
を有し、
前記割り当てるステップでは、新たに起動させる仮想マシンに割り当てる資源が不足している場合に、当該新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されないと想定される資源を割り当てることをコンピュータに実行させるためのプログラム。
【請求項１０】
複数の仮想マシンを起動するノード装置における資源割当方法であって、
仮想マシンに対して資源を割り当てるステップと、
前記割り当てるステップにより、資源が割り当てられた仮想マシンを用いてサービスを提供するステップと、
各仮想マシンにおける資源の利用状況を監視するステップと
を有し、
前記割り当てるステップでは、新たに起動させる仮想マシンに割り当てる資源が不足している場合に、当該新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されないと想定される資源を割り当てることを特徴とする資源割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシンを実行し、刻々と変化するCPUやメモリなどの処理資源と、ネットワーク帯域などのリンク資源の利用状況を把握することができるノード装置及びプログラム並び資源割当方法に関する。
【背景技術】
【０００２】
１つのノード上に１つのオペレーティングシステム(OS:  Operating  System)が動作し、該OS上で複数のサービスが実行される場合について説明する。この場合には、サービス毎に必要な処理能力やネットワーク帯域、利用するネットワークプロトコルを切り分けることは難しい。サービス毎に、必要な処理能力やネットワーク帯域、利用するネットワークプロトコルが異なるためである。この場合、サービスに対する優先度に基づいて、処理資源やリンク資源の割り当てを行うことができる。しかし、サービス毎に利用する資源を正確に分離することは難しい。
【０００３】
また、割り当てられた資源のうち、実際のサービス提供中に利用しない資源がある場合には、該利用しない資源が無駄になる。このため、割り当てられた資源のうち、余った資源が無駄になる問題が存在する。また、割り当てられた量以上の資源を使用することができない問題が存在する．
【非特許文献１】Paul  Barham,  Boris  Dragovic,  Keir  Fraser,  Steven  Hand,  Tim  Harris,  Alex  Ho,  Rolf  Neugebauer,  Ian  Pratt,  Andrew  Warfield.  "Xen  and  the  art  of  virtualization".  Proceedings  of  the  nineteenth  ACM  symposium  on  Operating  systems  principles:  164  -  177,  2003
【非特許文献２】Ian  Foster  "What  is  the  Grid?  A  Three  Point  Checklist",  July  2002
【発明の開示】
【発明が解決しようとする課題】
【０００４】
そこで、本発明は、上述した課題に鑑み、その目的は、複数のサービスをそれぞれ個別の仮想マシンで動作させ、サービスに必要な処理能力やネットワーク帯域、利用するネットワークプロトコルを切り分けることができるノード装置及びプログラム並びに資源割当方法を提供することにある。
【０００５】
また、本発明の他の目的は、実際のサービス提供中に利用しない資源を、資源が不足しているサービスに対して動的に割り当てることができるノード装置及びプログラム並びに資源割当方法を提供することにある。
【０００６】
また、本発明の他の目的は、割り当てられた量以上の資源を使用できるノード装置及びプログラム並びに資源割当方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本ノード装置は、
複数の仮想マシンを起動するノード装置であって、
仮想マシンに対して資源を割り当てる手段と、
前記割り当てる手段により、資源が割り当てられた仮想マシンを用いてサービスを提供する手段と、
各仮想マシンにおける資源の利用状況を監視する手段と
を有し、
前記割り当てる手段は、新たに起動させる仮想マシンに割り当てる資源が不足している場合に、該新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されないと想定される資源を割り当てる。
【０００８】
この例によれば、新たに起動させる仮想マシンに割り当てる資源が不足している場合に、該新たに起動させる仮想マシン以外の他の仮想マシンに割り当てられた資源のうち、当該他の仮想マシンにより使用されないと想定される資源を割り当てることができる。
【０００９】
本プログラムは、
仮想マシンに対して資源を割り当てるステップと、
仮想マシンを起動するステップと、
前記割り当てるステップにより、資源が割り当てられた仮想マシンを用いてサービスを提供するステップと、
仮想マシンにおける資源の利用状況を監視するステップと
を有し、
前記割り当てるステップでは、新たに起動させる仮想マシンに割り当てる資源が不足している場合に、当該新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されないと想定される資源を割り当てることをコンピュータに実行させる。
【００１０】
本資源割当方法は、
複数の仮想マシンを起動するノード装置における資源割当方法であって、
仮想マシンに対して資源を割り当てるステップと、
前記割り当てるステップにより、資源が割り当てられた仮想マシンを用いてサービスを提供するステップと、
各仮想マシンにおける資源の利用状況を監視するステップと
を有し、
前記割り当てるステップでは、新たに起動させる仮想マシンに割り当てる資源が不足している場合に、当該新たに起動させる仮想マシン以外の仮想マシンに割り当てられた資源のうち、当該仮想マシンにより使用されないと想定される資源を割り当てる。
【発明の効果】
【００１１】
本発明の実施例によれば、複数のサービスをそれぞれ個別の仮想マシンで動作させ、サービスに必要な処理能力やネットワーク帯域、利用するネットワークプロトコルを切り分けることができるノード装置及びプログラム並びに資源割当方法を実現することができる。
【００１２】
また、本発明の実施例によれば、実際のサービス提供中に利用しない資源を、資源が不足しているサービスに対して動的に割り当てることができるノード装置及びプログラム並びに資源割当方法を実現することができる。
【００１３】
また、本発明の実施例によれば、割り当てられた量以上の資源を使用できるノード装置及びプログラム並びに資源割当方法を実現することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施例を、図面を参照しつつ説明する。実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
（第１の実施例）
本実施例に係るノード装置について、図１を参照して説明する。
【００１５】
本実施例では、資源について以下のように定義する。
【００１６】
（１）処理資源：  仮想マシンに割り当てられる資源のうち、サービスの処理に使われる資源  処理資源には、CPU、メモリ、HDDなどが含まれる。
【００１７】
（２）リンク資源：  サービスのデータ送受信に使われる資源  リンク資源には、ネットワークの帯域などが含まれる。
【００１８】
処理資源において、処理資源量は、CPUの場合には全CPU時間に対するパーセンテージ、メモリの場合にはメモリサイズ、HDDの場合にはディスクサイズにより表現されてもよい。例えば、メモリサイズやディスクサイズはバイトで示されてもよい。また、リンク資源において、リンク資源量は通信速度で示されるようにしてもよいし、帯域や周波数、波長数で表現されてもよい。
【００１９】
また、本実施例では、利用されていない資源のうち、どの仮想マシンにも割り当てられていない資源を既存余剰資源と呼ぶ。例えば、既存余剰資源は、ノード装置の有する資源量から仮想マシンへ割り当てられた資源の総和を減算した値としてもよい。
【００２０】
また、仮想マシンの資源要求量に応じて割り当てられた資源のうち、その時点での処理資源・リンク資源の利用比率に基づいて、将来も使われないことが予想（想定）される資源を一般余剰資源とよぶ。
【００２１】
また、仮想マシンの資源要求量に応じて割り当てられた資源のうち、将来使われるかもしれないがその時点で使われていない資源を特殊余剰資源と呼ぶ。
【００２２】
また、仮想マシンが起動される場合に要求した資源量では足りなくなった場合、該要求した資源量に対して追加的に割り当てられた余剰資源を過剰割り当て資源と呼ぶ。
【００２３】
次に、本発明の実施例に係るノード装置について、図１を参照して説明する。本実施例に係るノード装置１００は、複数のサービスを実行する。例えば、本発明の実施例に係るノード装置１００は、マルチサービスノード装置と呼ばれてもよい。例えば、ノード装置１００は、複数の仮想マシンを起動する。各仮想マシンは、サービスを提供する。各仮想マシンでは、オペレーティングシステムを並列実行するようにしてもよい。各仮想マシンにより実行されるオペレーティングシステムのうち、少なくとも１つは、他のオペレーティングシステムとは異なるオペレーティングシステムであってもよい。例えば、複数のオペレーティングシステムは、仮想マシンモニタというソフトウエアが提供する仮想的ハードウェア上で実行される。このソフトウエアには、VMwareのようなホストOSやXen、XenとDomain0のOSが含まれるようにしてもよい。
【００２４】
本実施例に係るノード装置１００は、ネットワークインタフェース１０２と、仮想マシン群１０４と、仮想ネットワークブリッジ１０６と、仮想マシンモニタ１０８と、仮想マシン優先順位表１１０と、仮想マシン資源利用状況表１１２とを有する。
【００２５】
ネットワークインタフェース１０２には、ネットワークと接続するためのネットワークケーブルが接続される。
【００２６】
仮想マシン群１０４は、複数の仮想マシンを有する。図１には、仮想マシンａ（VM(virtual  machine)a）１０４１−仮想マシンｂ（VMb）１０４ｎ（ｎは、ｎ＞０の整数）が示される。各仮想マシンでは、論理的に処理資源及びリンク資源が分離された状態でサービスが動作する。
【００２７】
仮想ネットワークブリッジ１０６は、仮想マシン群１０４に含まれる各仮想マシンとネットワークインタフェース１０２とを仮想的に接続する。
【００２８】
仮想マシンモニタ１０８は、仮想マシンを制御する。また、起動している仮想マシンの監視(モニタ)を行う。
【００２９】
仮想マシン優先順位表１１０は、仮想マシンモニタ１０８により管理される各仮想マシンの優先順位を示す。
【００３０】
仮想マシン資源利用状況表１１２は、仮想マシンモニタ１０８により管理される各仮想マシンの資源利用状況を示す。
【００３１】
また、本実施例においては、仮想マシン群１０４に含まれる各仮想マシンと、該各仮想マシンに対応する優先順位は、仮想マシンモニタ１０８において管理される。例えば、図２に示されるように、VM優先順位表１１０として管理される。VM優先順位表１１０では、ノード装置１００上で動作する個々の仮想マシンに対して優先順位がつけられ、該優先順位が高い仮想マシンほど優先的に資源が割り当てられる。例えば、VM優先順位表１１０には、仮想マシンを示すVM識別子と、各仮想マシンの優先順位を示すVM優先順位とが含まれるようにしてもよい。
【００３２】
また、本実施例においては、仮想マシンが起動される場合に要求する資源量と、現在の資源の割当量及び現在の資源の使用量は、仮想マシンモニタ１０８において管理される。例えば、図３に示されるように、VM資源利用状況表１１２として管理されるようにしてもよい。VM資源利用状況表１１２は、仮想マシン群１０４に含まれる仮想マシンが起動される場合に更新される。具体的には、該仮想マシンが要求する資源量が追加される。また、VM資源利用状況表１１２の資源の割当量及び使用量は、周期的に更新される。このため、VM資源利用状況表１１２では、仮想マシンが要求する資源量と、該要求した資源量のうち、割り当てられた資源量と、割り当てられた資源量のうち、実際に使用される資源量の割合をリアルタイムで把握できる。例えば、VM資源利用状況表１１２には、仮想マシンを示すVM識別子と、各仮想マシンが起動時に要求した資源量（要求量）と、各仮想マシンに割り当てられた資源量（割り当て量）と、各仮想マシンにおける資源の使用量とが含まれるようにしてもよい。また、要求した資源量、割り当てられた資源量、資源の使用量は、処理資源、リンク資源毎に管理されてもよい。
【００３３】
本実施例にかかるノード装置１００のハードウエア構成例について説明する。
【００３４】
ノード装置１００は、ＣＰＵと、ＲＯＭと、ＲＡＭと、ハードディスク装置等の大容量の記憶装置とを有する。さらにフレキシブルディスク装置等の補助記憶装置を備えるようにしてもよい。
【００３５】
コンピュータをノード装置１００として機能させるためのプログラムは、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、メモリカード等の記録媒体に記録された状態で提供される。この記録媒体をコンピュータの補助記憶装置に挿入すると、媒体に記録されたプログラムが読み取られる。そして、ＣＰＵは、読み込んだプログラムをＲＡＭあるいは記憶装置に書き込み、このプログラムに従って本実施例で説明するような処理を実行する。また、プログラムを、通信網を介してダウンロードし、また記憶媒体からハードディスク装置にコピー・インストールし、実行するようにしてもよい。
【００３６】
本実施例に係るノード装置１００の動作について、図４を参照して説明する。
【００３７】
ここでは、仮想マシンが起動される場合について説明する。例えば、ノード装置１００において、起動する仮想マシンに対して必要な資源が割り当てられる。そして、必要な資源が割り当てられた仮想マシンが起動する。そして、起動された仮想マシンは、実際にサービスを提供する。
【００３８】
ノード装置１００は、利用者からの仮想マシンを起動する命令を認識する（ステップＳ４０２）。例えば、利用者は、仮想マシンモニタ１０８に対して仮想マシン１０４１を起動する命令を行う。以下、一例として、仮想マシン１０４２−仮想マシン１０４ｎが既に起動され、サービスを提供している状況で、仮想マシン１０４１が新たに起動される場合について説明する。他の仮想マシンが起動される場合でも同様である。また、複数の仮想マシンが起動される場合でも同様である。
【００３９】
ノード装置１００は、入力された仮想マシン１０４１に関する設定ファイルのパスに基づいて、該設定ファイルにアクセスし、仮想マシン１０４１に必要とされる処理資源・リンク資源に関する情報を読み込む（ステップＳ４０４）。例えば、仮想マシンモニタ１０８には、起動する仮想マシン１０４１に関する設定ファイルのパスが渡される。例えば、利用者により渡されるようにしてもよい。例えば、設定ファイルのパスは、GUI(Graphical  User  Interface)やコマンド・スクリプトファイルなどを通じて渡されるようにしてもよい。
【００４０】
仮想マシンモニタ１０８は、渡された設定ファイルのパスに基づいて、該設定ファイルにアクセスし、仮想マシン１０４１に必要とされる処理資源・リンク資源に関する情報を読み込む。例えば、設定ファイルには、仮想マシン１０４１の識別子や使用するディスクイメージのファイル名が含まれるようにしてもよい。仮想マシン１０４１の識別子は、仮想マシン１０４１の名称であってもよい。また、設定ファイルには、CPU割り当て量、メモリ割り当て量、ネットワーク帯域割り当て量などが含まれるようにしてもよい。例えば、CPU割当量は、パーセンテージで表されてもよい。また、メモリ割り当て量は、バイト数で表されてもよい。また、ネットワーク帯域割り当て量は、通信速度で表されてもよい。また、設定ファイルには、仮想マシン１０４１の優先順位に関する情報が含まれてもよい。CPU割り当て量、メモリ割り当て量、ネットワーク帯域割り当て量などが仮想マシン１０４１において必要とされる処理資源・リンク資源に関する情報とされてもよい。
【００４１】
仮想マシンモニタ１０８は、管理するVM資源利用状況表１１２から既に起動している他の仮想マシン１０４２−仮想マシン１０４ｎ（ｎは、ｎ＞１の整数）が起動される場合に要求した処理資源量及びリンク資源量を読み出す。そして、仮想マシンモニタ１０８は、読み出した他の仮想マシン１０４２−仮想マシン１０４ｎが起動される場合に要求した処理資源量及びリンク資源量と、設定ファイルから読み込んだ仮想マシン１０４１に必要とされる処理資源及びリンク資源の総和が、ノード装置１００の保有する処理資源及びリンク資源の最大値を超えるかを判断する（ステップＳ４０６）。
【００４２】
設定ファイルから読み込んだ仮想マシン１０４１に必要とされる処理資源及びリンク資源と、読み出した他の仮想マシン１０４２−仮想マシン１０４ｎが起動される場合に要求した処理資源及びリンク資源の総和が、ノード装置１００の保有する処理資源及びリンク資源の最大値を超える場合（ステップＳ４０６：ＹＥＳ）、仮想マシンモニタ１０８は、仮想マシン１０４１を起動しない。仮想マシン１０４１を起動すると、全ての仮想マシン１０４２−仮想マシン１０４ｎに対して、各仮想マシンが要求する処理資源・リンク資源を十分に提供できなくなるためである。その結果、仮想マシン１０４１の起動は失敗となり、処理が終了する（ステップＳ４１０）。この場合、仮想マシンを起動できないことを通知するようにしてもよい。
【００４３】
一方、読み出した他の仮想マシン１０４２−仮想マシン１０４ｎが起動される場合に要求した処理資源及びリンク資源の総和が、ノード装置１００の保有する処理資源及びリンク資源の最大値を超えていない場合（ステップＳ４０６：ＮＯ）、仮想マシンモニタ１０８は、仮想マシン１０４１の要求する資源量が既存余剰資源量より上かを判断する（ステップＳ４０８）。例えば、仮想マシンモニタ１０８は、管理するVM資源利用状況表１１２から既に起動している他の仮想マシン１０４２−仮想マシン１０４ｎに対して現時点で割り当てている処理資源及びリンク資源の割当量を読み込む。仮想マシンモニタ１０８は、該読み込んだ割当量と、ノード装置１００の有する処理資源量及びリンク資源量との差により示される既存余剰資源量を求める。そして、仮想マシンモニタ１０８は、求めた既存余剰資源量と仮想マシン１０４１の要求する資源量とを比較し、該比較結果に基づいて判断する。
【００４４】
仮想マシン１０４１の要求する資源量が既存余剰資源量を上回っている場合（ステップＳ４０８：ＹＥＳ）、仮想マシンモニタ１０８は、既に他の仮想マシン１０４２−仮想マシン１０４ｎに割り当てている資源との調整を行う（ステップＳ４１０）。例えば、仮想マシンモニタ１０８は、他の仮想マシン１０４２−仮想マシン１０４ｎに割り当てている資源のうち、既存余剰資源とみなせる余剰資源の一部を解放し、既存余剰資源と同様に扱う（ステップＳ４１２）。
【００４５】
一方、仮想マシン１０４１の要求する資源量が既存余剰資源量を下回っている場合（ステップＳ４０８：ＮＯ）及びステップＳ４１２において、既存余剰資源とみなせる余剰資源の一部を解放し、既存余剰資源と同様に扱うようにした場合、仮想マシンモニタ１０８は、その既存余剰資源を仮想マシン１０４１に割り当てる。そして、仮想マシンモニタ１０８は、仮想マシン１０４１の起動の処理を行う（ステップＳ４１４）。この場合、既存余剰資源及び既存余剰資源と見なせる資源が仮想マシン１０４１に割り当てられるため、既に実行されている仮想マシン１０４２−仮想マシン１０４ｎが使用する資源に影響はない。
【００４６】
仮想マシンモニタ１０８は、VM優先順位表１１０及びVM資源利用状況表１１２へ、仮想マシン１０４１を追加する（ステップＳ４１６）。ここで、仮想マシンモニタ１０８は、VM優先順位表１１０及びVM資源利用状況表１１２を更新するようにしてもよい。
【００４７】
仮想マシン１０４１は、サービスの提供を行う（ステップＳ４１８）。
【００４８】
ステップＳ４１０及びステップＳ４１２の処理について、図５を参照して、詳細に説明する。
【００４９】
本実施例においては、仮想マシンモニタ１０８が、既に他の仮想マシン１０４２−仮想マシン１０４ｎに割り当てている資源との調整を、一般余剰資源、特殊余剰資源、過剰割り当て資源の順に行う。そして、仮想マシンモニタ１０８が、調整の結果に基づいて、余剰資源の開放を行う場合に説明する。一般余剰資源、特殊余剰資源、過剰割り当て資源の順序は一例であり、異なる順序としてもよい。なお、一般余剰資源量、特殊余剰資源量、過剰割り当て資源量は、第２の実施例において説明するが、仮想マシンモニタ１０８により、周期的に更新される。この場合、仮想マシンモニタ１０８は、更新された一般余剰資源量、特殊余剰資源量、過剰割り当て資源量に基づいて、調整を行う。
【００５０】
仮想マシンモニタ１０８は、ステップＳ４０４において設定ファイルから読み込んだ仮想マシン１０４１の利用資源の要求量と既存余剰資源量を用いて割り当てられた資源量との差である要求不足量(以下、第１の不足資源量と呼ぶ)と、仮想マシンモニタ１０８により既に計算された仮想マシン１０４２−仮想マシン１０４ｎの一般余剰資源量の総和（以下、全一般余剰資源量と呼ぶ）とを比較する（ステップＳ５０２）。
【００５１】
全一般余剰資源量が、仮想マシン１０４１の利用資源の第１の不足資源量以上である場合（ステップＳ５０２：ＹＥＳ）、仮想マシンモニタ１０８は、VM優先順位表１１０を読み込む。そして、仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に、仮想マシン１０４１の要求量を満たすまで、該仮想マシン１０４２−仮想マシン１０４ｎの一般余剰資源を解放する（ステップＳ５０４）。
【００５２】
仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に一般余剰資源を開放し、該開放された一般余剰資源の資源量が仮想マシン１０４１の第１の不足資源量を満たした場合に、該開放した一般余剰資源を仮想マシン１０４１に割り当てる。そして、仮想マシンモニタ１０８は、仮想マシン１０４１を起動する。このようにすることにより、一般余剰資源が仮想マシン１０４１に割り当てられるため、既に実行している仮想マシン１０４２−仮想マシン１０４ｎのサービス提供に影響を与えることがない。仮想マシン１０４２−仮想マシン１０４ｎが現時点で使用している資源が強制的に開放されることがないためである。
【００５３】
一方、全一般余剰資源量が、仮想マシン１０４１の利用資源の第１の不足資源量未満である場合（ステップＳ５０２：ＮＯ）、仮想マシンモニタ１０８は、仮想マシン１０４２−仮想マシン１０４ｎの一般余剰資源をすべて開放する（ステップＳ５０６）。そして、仮想マシンモニタ１０８は、開放した全一般余剰資源を仮想マシン１０４１に割り当てる。仮想マシンモニタ１０８は、全一般余剰資源を割り当てても足りない資源量（以下、第2の不足資源量と呼ぶ）を計算する。この第2の不足資源量は、仮想マシン１０４１の利用資源の要求量と、前既存余剰資源の資源量、全一般余剰資源の資源量との差により示される。この第2の不足資源量は、後述するが特殊余剰資源で補われる。
【００５４】
仮想マシンモニタ１０８は、ステップＳ５０６において求められた第2の不足資源量と、仮想マシンモニタ１０８により既に計算された仮想マシン１０４２−仮想マシン１０４ｎの特殊余剰資源量の総和（以下、全特殊余剰資源量と呼ぶ）とを比較する（ステップＳ５０８）。
【００５５】
全特殊余剰資源量が、仮想マシン１０４１の第2の不足資源量以上である場合（ステップＳ５０８：ＹＥＳ）、仮想マシンモニタ１０８は、VM優先順位表１１０を読み込む。そして、仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に、仮想マシン１０４１の第2の不足資源量を満たすまで、該仮想マシン１０４２−仮想マシン１０４ｎの特殊余剰資源を解放する（ステップＳ５１０）。
【００５６】
仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に特殊余剰資源を開放し、該開放された特殊余剰資源の資源量が仮想マシン１０４１の第2の不足資源量を満たした場合に、該開放した特殊余剰資源を仮想マシン１０４１に割り当てる。そして、仮想マシンモニタ１０８は、仮想マシン１０４１を起動する。このようにすることにより、特殊余剰資源が仮想マシン１０４１に割り当てられるため、既に実行している仮想マシン１０４２−仮想マシン１０４ｎのサービス提供に影響を与えることがない。仮想マシン１０４２−仮想マシン１０４ｎが現時点で使用している資源が強制的に開放されることがないためである。
【００５７】
一方、全特殊余剰資源量が、仮想マシン１０４１の第１の不足資源量未満である場合（ステップＳ５０８：ＮＯ）、仮想マシンモニタ１０８は、仮想マシン１０４２−仮想マシン１０４ｎの特殊余剰資源をすべて開放する（ステップＳ５１２）。そして、仮想マシンモニタ１０８は、開放した全特殊余剰資源を仮想マシン１０４１に割り当てる。仮想マシンモニタ１０８は、全特殊余剰資源を割り当てても足りない資源量（以下、第3の不足資源量と呼ぶ）を計算する。この第3の不足資源量は、仮想マシン１０４１の第2の不足資源量と、全特殊余剰資源の資源量との差により示される。この第3の不足資源量は、後述するが過剰割り当て資源で補われる。
【００５８】
仮想マシンモニタ１０８は、VM優先順位表１１０を読み込む。そして、仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に、仮想マシン１０４１の第３の不足資源量を満たすまで、該仮想マシン１０４２−仮想マシン１０４ｎの過剰割り当て資源を解放する（ステップＳ５１４）。
【００５９】
仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に過剰割り当て資源を開放し、該開放された過剰割り当て資源の資源量が仮想マシン１０４１の第３の不足資源量を満たした場合に、該開放した過剰割り当て資源を仮想マシン１０４１に割り当てる。そして、仮想マシンモニタ１０８は、仮想マシン１０４１を起動する。
【００６０】
仮想マシンモニタ１０８は、仮想マシン１０４１が要求する利用資源の確保を終える。その後、上述したステップＳ４１４では、以下の処理が行われる。仮想マシンモニタ１０８は、確保した資源を仮想マシン１０４１に割り当てる。仮想マシンモニタ１０８は、該仮想マシン１０４１に、ノード装置１００内でユニークなVM識別子を割り当てる。そして、仮想マシンモニタ１０８は、仮想マシン１０４１を起動する。
【００６１】
上述したステップＳ４１６では、以下の処理が行われる。仮想マシンモニタ１０８は、ステップＳ４０４において読み込んだ仮想マシン１０４１の優先順位と、ステップＳ４１４において資源が割り当てられた仮想マシン１０４１のVM識別子との対応をVM優先順位表１１０に追加する。また、仮想マシンモニタ１０８は、ステップＳ４０４において読み込んだ仮想マシン１０４１の要求する資源量と、ステップＳ４１４で割り当てた資源量と、ステップＳ４０４において作成した仮想マシン１０４１のVM識別子との対応をVM利用資源状況表１１２に追加する。
【００６２】
上述したステップＳ４１８では、以下の処理が行われる。仮想マシン１０４１は、起動した後、割り当てられた資源を用いてサービス提供を開始する。
【００６３】
本実施例によれば、各仮想マシンにおいて、利用する処理資源・リンク資源は論理的に分離される。このため、仮想マシンは、他の仮想マシンからの影響を受けない。例えば、仮想マシン１０４１は、他の仮想マシン１０４２−仮想マシン１０４ｎからの影響を受けない。また、仮想マシン１０４１は、他の仮想マシン１０４２−仮想マシン１０４ｎから完全に独立している。また、仮想マシン１０４１は、割り当てられた資源を自由に制御できる。また、仮想マシン１０４１は、他の仮想マシン１０４２−仮想マシン１０４ｎとは異なるネットワークプロトコルを使用してサービスを提供できる。
（第２の実施例）
本実施例に係るノード装置について説明する。
【００６４】
本実施例において、資源についての定義は上述した実施例と同様である。
【００６５】
本実施例に係るノード装置１００は、上述した実施例に係るノード装置の構成と同様である。
【００６６】
本実施例に係るノード装置１００では、仮想マシンモニタ１０８は、各仮想マシンの資源の利用状況を定期的に把握する。そして、仮想マシンモニタ１０８は、動作中のある仮想マシンにおいて資源が不足したことを検出した場合に、該ある仮想マシンに対して、該不足した資源量に応じて資源を割り当てる。例えば、不足した資源量に閾値を設けるようにしてもよい。この閾値は、仮想マシンにおける処理に対する影響に基づいて決定されるようにしてもよい。具体的には、閾値は、例えば５％のようにパーセントで示されてもよい。例えば、この処理は、各仮想マシンの資源の利用状況が変動すると想定される時間毎に行われるのが好ましい。例えば、１分間隔で行われるようにしてもよい。
【００６７】
本実施例に係るノード装置１００の動作について、図６を参照して説明する。
【００６８】
仮想マシンモニタ１０８は、一定期間休止した後、各仮想マシンに対する実際の資源の利用状況を把握する（ステップＳ６０２）。例えば、仮想マシンモニタ１０８は、処理資源に関しては、各仮想マシンのロードアベレージを取得し、該ロードアベレージの値が１である場合に、該利用状況が１００％として計算を行うようにしてもよい。ここで、ロードアベレージとはCPU使用率であってもよい。また、例えば、仮想マシンモニタ１０８は、リンク資源に関しては、仮想ネットワークブリッジ１０６から各仮想マシンに接続されている仮想ポートにおけるスループットを取得し、各仮想マシンに割り当てられているリンク資源量が１である場合に、該利用状況が１００％として計算を行うようにしてもよい。ここで、リンク資源量は帯域であってもよい。仮想マシンモニタ１０８は、計算した現在の利用状況をVM資源利用状況表１１２に保存する。具体的には、VM資源利用状況表１１２の使用量の項目に格納される。
【００６９】
仮想マシンモニタ１０８は、VM資源利用状況表１１２に格納された使用量に基づいて、一般余剰資源、特殊余剰資源、過剰割り当て資源の計算を行う（ステップＳ６０４）。具体的な計算方法については後述する。
【００７０】
仮想マシンモニタ１０８は、ステップＳ６０４において、一般余剰資源、特殊余剰資源、過剰割り当て資源の計算を行った後、資源が不足している仮想マシンがあるかを調べる（ステップＳ６０６）。ここで、不足しているとは、不足することが想定される状態も含まれるようにしてもよい。例えば、仮想マシンモニタ１０８は、VM資源利用状況表１１２の使用量の項目に格納された値がある閾値以上にある場合に、資源が不足していると判断するようにしてもよい。例えば、閾値は９０％としてもよい。
【００７１】
資源が不足している仮想マシンが存在しない場合（ステップＳ６０６：ＮＯ）、仮想マシンモニタ１０８は一定時間休止する（ステップＳ６１６）。一方、資源が不足している仮想マシンが存在する場合（ステップＳ６０６：ＹＥＳ）、仮想マシンモニタ１０８は、該資源が不足している仮想マシンが新たに必要とする資源の要求量の合計が既存余剰資源量より上かを判断する（ステップＳ６０８）。例えば、仮想マシンモニタ１０８は、資源の使用量が９０％で、資源が不足していると判断する閾値が９０％である場合、要求量の１０％程度を新たに必要とする資源の要求量としてもよい。このようにした場合、仮想マシンモニタ１０８は、新たに必要とする資源の要求量が、既存余剰資源量より上かを判断する。
【００７２】
例えば、仮想マシンモニタ１０８は、管理するVM資源利用状況表１１２から、既に起動している他の仮想マシンに対応する現時点での処理資源及びリンク資源の割り当て量を読み込む。仮想マシンモニタ１０８は、読み込んだ現時点での処理資源及びリンク資源の割り当て量とノード装置１００の有する処理資源量及びリンク資源量の総和との差により示される既存余剰資源量を求める。仮想マシンモニタ１０８は、求められた既存余剰資源量と、仮想マシンの新たに必要とする資源量とを比較することにより判断する。
【００７３】
仮想マシンの新たに必要とする資源量が、既存余剰資源量以下である場合（ステップＳ６０８：ＹＥＳ）、仮想マシンモニタ１０８は、該既存余剰資源のうち、不足している資源量を、該資源が不足している仮想マシンに割り当てる（ステップＳ６１４）。このようにすることにより、既存余剰資源が、該資源の不足している仮想マシンに割り当てられるため、既に実行している仮想マシンのサービス提供に影響を与えることがない。
【００７４】
一方、仮想マシンの新たに必要とする資源量が、既存余剰資源量を上回っていた場合（ステップＳ６０８：ＮＯ）、仮想マシンモニタ１０８は、既に他の仮想マシンに割り当てている資源との調整を行う（ステップＳ６１０）。例えば、仮想マシンモニタ１０８は、他の仮想マシンに割り当てられた資源のうち、既存余剰資源とみなせる余剰資源の一部を解放し、既存余剰資源と同様に扱う（ステップＳ６１２）。その後、上述したステップＳ６１４以降の処理が行われる。
【００７５】
上述したステップＳ６０４において行われる仮想マシンモニタ１０８が一般余剰資源量及び特殊余剰資源量を計算する処理について説明する。
【００７６】
一般余剰資源量及び特殊余剰資源量の計算方法は、該資源が処理資源であるかリンク資源であるかによって異なる。このため、該資源が処理資源である場合とリンク資源である場合とに分けて説明する。
【００７７】
処理資源の場合について、図７を参照して説明する。
【００７８】
仮想マシンモニタ１０８は、VM資源利用状況表１１２を参照し、現在の処理資源とリンク資源との使用量の比率に基づいて、リンク資源の使用量が１００％になった場合の処理資源の使用量を推定する（ステップＳ７０２）。
【００７９】
仮想マシンモニタ１０８は、推定された処理資源の使用量の値が１００％以下であるかを判断する（ステップＳ７０４）。
【００８０】
推定された処理資源の使用量の値が１００％以下である場合（ステップＳ７０４：ＹＥＳ）、仮想マシンモニタ１０８は、一般余剰資源として計算する（ステップＳ７０６）。例えば、仮想マシンモニタ１０８は、１００％と、推定された処理資源の使用量との差を一般余剰資源とする。一方、推定された処理資源の使用量の値が１００％より大きい値である場合（ステップＳ７０４：ＮＯ）、仮想マシンモニタ１０８は、特殊余剰資源として計算する（ステップＳ７０８）。例えば、仮想マシンモニタ１０８は、１００％と、現在の処理資源の使用量との差を特殊余剰資源とする。
【００８１】
リンク資源の場合について、図８を参照して説明する。
【００８２】
仮想マシンモニタ１０８は、VM資源利用状況表１１２を参照し、現在の処理資源とリンク資源との使用量の比率に基づいて、処理資源の使用量が１００％になった場合のリンク資源の使用量を推定する（ステップＳ８０２）。
【００８３】
仮想マシンモニタ１０８は、推定されたリンク資源の使用量の値が１００％以下であるかを判断する（ステップＳ８０４）。
【００８４】
推定されたリンク資源の使用量の値が１００％以下である場合（ステップＳ８０４：ＹＥＳ）、仮想マシンモニタ１０８は、一般余剰資源として計算する（ステップＳ８０６）。例えば、仮想マシンモニタ１０８は、１００％と、推定されたリンク資源の使用量との差を一般余剰資源とする。一方、推定されたリンク資源の使用量の値が１００％より大きい値である場合（ステップＳ８０４：ＮＯ）、仮想マシンモニタ１０８は、特殊余剰資源として計算する（ステップＳ８０８）。例えば、仮想マシンモニタ１０８は、１００％と、現在のリンク資源の使用量との差を特殊余剰資源とする。
【００８５】
仮想マシンモニタ１０８は、VM資源利用状況表１１２を参照し、資源の割当量と資源の要求量との差を、過剰割り当て資源とする。
【００８６】
上述したステップＳ６０８において、既存余剰資源で、資源が不足している仮想マシンにおいて新たに必要とする資源の要求量を満たすことができない場合における処理の詳細について、図９を参照して説明する。
【００８７】
本実施例においては、仮想マシンモニタ１０８が、資源が不足している仮想マシンのうち、該優先順位の高い順に資源の調整を行う。また、本実施例においては、仮想マシンモニタ１０８は、資源が不足していない仮想マシンのうち、該優先順位の低い順に、資源の開放を行う。また、本実施例においては、仮想マシンモニタ１０８は、資源が不足していない仮想マシンに割り当てられた資源のうち、一般余剰資源、特殊余剰資源、過剰割り当て資源の順に開放を行う。この順序は一例であり、異なる順序としてもよい。
【００８８】
仮想マシンモニタ１０８は、上述したステップＳ６０４において読み込んだVM資源利用状況表１１２に基づいて、仮想マシンに対して資源調整を行う。例えば、仮想マシンモニタ１０８は、資源の要求量を満たしていない仮想マシンのうち、該優先順位の高い仮想マシンに対して資源調整を行う。次に、仮想マシンモニタ１０８は、資源の要求量を満たしていない仮想マシンのうち優先順位の低い仮想マシンに対して資源調整を行う。次に、仮想マシンモニタ１０８は、資源の要求量を満たしている仮想マシンのうち優先順位の高い仮想マシンに対して資源調整を行う。次に、仮想マシンモニタ１０８は、資源の要求量を満たしている仮想マシンのうち優先順位の低い仮想マシンに対して資源調整を行う。
【００８９】
仮想マシンモニタ１０８は、資源の要求量に対して、資源が不足している仮想マシンが存在するかを判断する（ステップＳ９０２）。仮想マシンモニタ１０８は、上述した順序で該当する仮想マシンが存在するかを判断する。
【００９０】
資源が不足している仮想マシンが存在しない場合（ステップＳ９０２：ＮＯ）、終了する。例えば、上述したステップＳ６１４以降の処理が行われる。
【００９１】
一方、資源が不足している仮想マシンが存在する場合（ステップＳ９０２：ＹＥＳ）、仮想マシンモニタ１０８は、資源の不足している仮想マシンが新たに必要とする資源の要求量が、既存余剰資源で満たすことができるかを判断する（ステップＳ９０４）。
【００９２】
資源の不足している仮想マシンが新たに必要とする資源の要求量が既存余剰資源で満たすことができる場合（ステップＳ９０４：ＹＥＳ）、該新たに必要とする資源の要求量に対して既存余剰資源を割り当てる（ステップＳ９０６）。そして、ステップＳ９０２に戻る。
仮想マシンモニタ１０４は、上述した順序に従って、次の資源の足りない仮想マシンに対して資源調整を行う。一方、資源の不足している仮想マシンが新たに必要とする資源の要求量が既存余剰資源で満たすことができない場合（ステップＳ９０４：ＮＯ）、仮想マシンモニタ１０８は、資源の不足している仮想マシンが新たに必要とする資源の要求量から既存余剰資源量との差である要求不足量（以下、第１の不足資源量と呼ぶ）と、仮想マシンモニタ１０８により既に計算された資源の不足していない仮想マシンの一般余剰資源量の総和（以下、全一般余剰資源量と呼ぶ）とを比較する（ステップＳ９０８）。
【００９３】
全一般余剰資源量が、第１の不足資源量以上である場合（ステップＳ９０８：ＹＥＳ）、仮想マシンモニタ１０８は、VM優先順位表１１０を読み込む。そして、仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に、第１の不足資源量を満たすまで、資源の不足していない仮想マシンの一般余剰資源を開放する（ステップＳ９１０）。そして、ステップＳ９０２に戻る。仮想マシンモニタ１０８は、上述した順序に従って、次の資源の足りない仮想マシンに対して資源調整を行う。
【００９４】
仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に一般余剰資源を開放し、該開放された一般余剰資源の資源量が第１の不足資源量を満たした場合に、該開放した一般余剰資源を資源の不足している仮想マシンに割り当てる。このようにすることにより、一般余剰資源が資源の不足している仮想マシンに割り当てられるため、既に実行している仮想マシンのサービス提供に影響を与えることがない。既にサービスを提供している仮想マシンが現時点で使用している資源が強制的に開放されることがないためである。
【００９５】
一方、全一般余剰資源量が、第１の不足資源量未満である場合（ステップＳ９０８：ＮＯ）、仮想マシンモニタ１０８は、資源の不足していない仮想マシンの一般余剰資源をすべて開放する（ステップＳ９１２）。そして、仮想マシンモニタ１０８は、開放した全一般余剰資源を資源の不足している仮想マシンに割り当てる。仮想マシンモニタ１０８は、全一般余剰資源を割り当てても足りない資源量（以下、第2の不足資源量と呼ぶ）を計算する。この第2の不足資源量は、第１の不足要求量と、全一般余剰資源の資源量との差により示される。この第2の不足資源量は、後述するが特殊余剰資源で補われる。
【００９６】
仮想マシンモニタ１０８は、ステップＳ９１２において求められた第2の不足資源量と、仮想マシンモニタ１０８により既に計算された資源の不足していない仮想マシンの特殊余剰資源量の総和（以下、全特殊余剰資源量と呼ぶ）とを比較する（ステップＳ９１４）。
【００９７】
全特殊余剰資源量が、資源の不足している仮想マシンの第2の不足資源量以上である場合（ステップＳ９１４：ＹＥＳ）、仮想マシンモニタ１０８は、VM優先順位表１１０を読み込む。そして、仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に、資源の不足している仮想マシンの第2の不足資源量を満たすまで、該資源の不足していない仮想マシンの特殊余剰資源を解放する（ステップＳ９１６）。
【００９８】
仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に特殊余剰資源を開放し、該開放された特殊余剰資源の資源量が資源の不足している仮想マシンの第2の不足資源量を満たした場合に、該開放した特殊余剰資源を資源の不足している仮想マシンに割り当てる。このようにすることにより、特殊余剰資源が資源の不足している仮想マシンに割り当てられるため、既に実行している資源の不足していない仮想マシンのサービス提供に影響を与えることがない。資源の不足していない仮想マシンが現時点で使用している資源が強制的に開放されることがないためである。
【００９９】
一方、全特殊余剰資源量が、資源の不足している仮想マシンの第2の不足資源量未満である場合（ステップＳ９１４：ＮＯ）、仮想マシンモニタ１０８は、資源の不足していない仮想マシンの特殊余剰資源をすべて開放する（ステップＳ９１８）。そして、仮想マシンモニタ１０４は、開放した全特殊余剰資源を資源の不足している仮想マシンに割り当てる。仮想マシンモニタ１０８は、全特殊余剰資源を割り当てても足りない資源量（以下、第3の不足資源量と呼ぶ）を計算する。この第3の不足資源量は、資源の不足している仮想マシンの第2の不足資源量と、全特殊余剰資源の資源量との差により示される。この第3の不足資源量は、後述するが過剰割り当て資源で補われる。
【０１００】
仮想マシンモニタ１０８は、VM優先順位表１１０を読み込む。そして、仮想マシンモニタ１０８は、該VM優先順位が低い仮想マシンから順に、資源の不足している仮想マシンの第3の不足資源量を満たすまで、該資源の不足していない仮想マシンの過剰割り当て資源を解放する（ステップＳ９２０）。過剰割り当て資源が割り当てられている仮想マシンには、該仮想マシンが起動される場合に要求した資源量以上の資源が割り当てられている。
【０１０１】
仮想マシンモニタ１０８は、資源の不足している全仮想マシンに対して、上述した方法により資源調整を行う。そして、仮想マシンモニタ１０８は、資源調整が完了した場合、割り当てた資源を、資源の不足している仮想マシンに順次割り当てる。
【０１０２】
上述したステップＳ６１４では、以下の処理が行われる。仮想マシンモニタ１０８は、資源の不足している仮想マシンが新たに必要とする資源の要求量の確保を終える。そして、仮想マシンモニタ１０８は、該確保した資源を、該資源の不足している仮想マシンに割り当てる。このようにすることにより、資源の不足している仮想マシンに対して、空いている資源を動的に割り当てることができる。また、資源の不足している仮想マシンに対して、空いている資源を動的に割り当てることにより、仮想マシンは、効率的にサービスを実行できる。
【０１０３】
上述したステップＳ６１６では、以下の処理が行われる。仮想マシンモニタ１０８は、ステップＳ６１４において割り当てた資源量を、VM利用資源状況表１１２に追加する。そして、仮想マシンモニタ１０８は、ステップＳ６１４までの処理が終了した後、一定時間休止する。仮想マシンモニタ１０８は、一定時間後に、再び資源の利用状況の把握を行う（ステップＳ６０２）。そして、ステップＳ６０２以降の処理が行われる。
（第３の実施例）
本実施例に係るノード装置について説明する。
【０１０４】
本実施例において、資源についての定義は上述した実施例と同様である。
【０１０５】
本実施例に係るノード装置１００は、上述した実施例に係るノード装置の構成と同様である。
【０１０６】
本実施例に係るネットワークシステムは、複数のノード装置１００を有する。このネットワークシステムは、マルチサービスノードネットワークシステムと呼ばれてもよい。本実施例では、一例として、図１０に示すように、ネットワークシステムが２のノード装置を有する場合について説明する。ネットワークシステムが３以上のノード装置を有してもよい。各ノード装置は、通信網２００を介して接続される。通信網には、インターネットなどのネットワークが含まれる。
【０１０７】
本実施例においては、ノード装置１００１上で動作する仮想マシン１０４の利用できる資源が変化する。ノード装置１００１は、該仮想マシン１０４の利用できる資源が変化したことを示す資源変動通知メッセージをノード装置１００２に通知する。ノード装置１００２は、ノード装置１００１により通知された資源変動通知メッセージに基づいて、該ノード装置１００２上で動作する仮想マシン１０４の利用できる資源を変化させる。
【０１０８】
本実施例に係るネットワークシステムの動作について、図１１を参照して説明する。
【０１０９】
ノード装置１００１は、利用者からの仮想マシンを起動する命令を認識する。例えば、利用者は、仮想マシンモニタ１０８に対して仮想マシン１０４を起動する命令を行う
ノード装置１００１上で動作する仮想マシンモニタ１０８は、上述した第２の実施例において説明した方法により、仮想マシン１０４に対して資源割り当てを行う（ステップＳ１１０２）。
【０１１０】
ノード装置１００１上で動作する仮想マシンモニタ１０８は、該ノード装置１００１上で動作する仮想マシン１０４の利用できる資源が変化したことを示す資源変動通知メッセージを送信する（ステップＳ１１０４）。例えば、資源変動通知メッセージは、ノード装置１００１と通信しているノード装置１００２に送信される（ステップＳ１１０６）。資源変動通知メッセージには、資源の割り当て前後の資源量の差分情報が含まれる。その結果、資源変動通知メッセージは、ノード装置１００２の仮想マシンモニタ１０８に入力される。
【０１１１】
ノード装置１００２上の仮想マシンモニタ１０８は、ノード装置１００１上の仮想マシンモニタ１０４から資源変動通知メッセージを受信する（ステップＳ１１０８）。
【０１１２】
ノード装置１００２上の仮想マシンモニタ１０８は、該資源変動メッセージに含まれるノード装置１００１上の仮想マシンに対する資源の割り当て前後の資源量の差分情報に基づいて、ノード装置１００１上の仮想マシンの利用する資源が増加したかを判断する（ステップＳ１１１０）。
【０１１３】
ノード装置１００１の仮想マシンの利用する資源量が増加した場合（ステップＳ１１１０：ＹＥＳ）、ノード装置１００２の仮想マシンモニタ１０８は、ノード装置１００２の仮想マシン１０４に対して、上述した第２の実施例において説明した方法により資源を割り当てる。例えば、ノード装置１００１の仮想マシン１０４に割り当てられた資源のうち、増加した資源量だけ、ノード装置１００２の仮想マシン１０４に割り当てられる資源を増加させる。言い換えれば、ノード装置１００１の仮想マシン１０４に割り当てられる資源量と、ノード装置１００２の仮想マシン１０４に割り当てられる資源量を同じにする。具体的には、図６を参照して説明したステップＳ６０２からステップＳ６１４と同様の処理が行われる。一方、ノード装置１００１の仮想マシンの利用する資源量が減少した場合（ステップＳ１１１０：ＮＯ）、ノード装置１００２の仮想マシンモニタ１０４は、ノード装置１００２の仮想マシン１０４に割り当てられた資源のうち、該資源の一部を開放する（ステップＳ１１１４）。例えば、ノード装置１００２の仮想マシンモニタ１０４は、ノード装置１００２の仮想マシン１０４に割り当てられた資源のうち、該減少分の資源を解放する。
【０１１４】
本実施例によれば、複数のノード装置間で、仮想マシンに割り当てる資源を同じにできる。
【０１１５】
本実施例によれば、あるサービスに対する資源割り当てや、利用する資源の切り分けが困難であるという問題を解決できる。本実施例によれば、仮想ネットワーク技術を利用し、複数のサービスをそれぞれ個別の仮想マシンで動作させることにより、サービスに必要な処理能力やネットワーク帯域、利用するネットワークプロトコルを切り分けることができる。また、本実施例によれば、実際のサービス提供中に利用しない資源を、資源が不足しているサービスに対して動的に割り当てることができる。また、本実施例によれば、割り当てられた量以上の資源を使用可能とできる。
【０１１６】
説明の便宜上、発明の理解を促すため具体的な数値例を用いて説明されるが、特に断りのない限り、それらの数値は単なる一例に過ぎず適切な如何なる値が使用されてよい。
【０１１７】
以上、本発明は特定の実施例を参照しながら説明されてきたが、各実施例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に係る装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウエアで、ソフトウエアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【図面の簡単な説明】
【０１１８】
【図１】一実施例に係るノード装置を示す部分ブロック図である。
【図２】一実施例にかかるノード装置における仮想マシン優先順位表の一例を示す説明図である。
【図３】一実施例にかかるノード装置における仮想マシン資源利用状況表の一例を示す説明図である。
【図４】一実施例に係るノード装置の動作を示すフロー図である。
【図５】一実施例に係るノード装置の動作を示すフロー図である。
【図６】一実施例に係るノード装置の動作を示すフロー図である。
【図７】一実施例に係るノード装置の動作を示すフロー図である。
【図８】一実施例に係るノード装置の動作を示すフロー図である。
【図９】一実施例に係るノード装置の動作を示すフロー図である。
【図１０】一実施例に係るネットワークシステムを示す部分ブロック図である。
【図１１】一実施例に係るネットワークシステムの動作を示すフロー図である。
【符号の説明】
【０１１９】
１００（１００１、１００２）  ノード装置
１０２  ネットワークインタフェース（NW  I/F）
１０４  仮想マシン群
１０４１−１０４ｎ  仮想マシン(VM:  virtual  machine)
１０６  仮想ネットワークブリッジ（仮想NWブリッジ）
１０８  仮想マシンモニタ
１１０  仮想マシン優先順位表（VM優先順位表）
１１２  仮想マシン資源利用状況表（VM資源利用状況表）
２００  通信網
【図１】
2009258982.tif 000003
【図２】
2009258982.tif 000004
【図３】
2009258982.tif 000005
【図４】
2009258982.tif 000006
【図５】
2009258982.tif 000007
【図６】
2009258982.tif 000008
【図７】
2009258982.tif 000009
【図８】
2009258982.tif 000010
【図９】
2009258982.tif 000011
【図１０】
2009258982.tif 000012
【図１１】
2009258982.tif 000013