以下、この発明の実施の形態を添付図面に基づいて説明する。
実施の形態1.
図1に、本発明の実施の形態1が実施される構成の例を示す。少なくとも1台のホストコンピュータ10(図1の例では3台)および少なくとも1台のユーザ端末40(図1の例では3台)が、通信ネットワーク50を介して、互いに通信可能に接続されている。
ホストコンピュータ10はコンピュータとしてのハードウェア構成を備え、演算を行う演算手段20と、情報を格納する記憶手段30とを備える。演算手段20はたとえばCPU(中央処理装置)を含み、記憶手段30はたとえば半導体メモリおよびHDD(ハードディスクドライブ)等の記憶媒体を含む。ホストコンピュータ10は、たとえば1台の「物理コンピュータ」と呼ばれる単位に相当するハードウェアであってもよい。
ホストコンピュータ10は、プログラムを実行するための資源(コンピュータ資源または計算資源とも呼ばれる)を提供することができる。たとえば、演算手段20は資源としてプロセッサ資源21を提供することができ、記憶手段30は資源としてメモリ資源31を提供することができる。
プロセッサ資源21は、たとえば演算手段20の使用率によって表される。使用率は、演算手段20に含まれるプロセッサを単位として計測される。たとえば、あるホストコンピュータ10の演算手段20が8個のプロセッサを備える場合には、そのホストコンピュータ10について、プロセッサ資源21の利用可能資源量は8個(8コア)であると表現することができる。また、あるプログラムを実行するために1個のプロセッサについて20%の使用率が必要となる場合には、そのプログラムのプロセッサ資源21に対する要求資源量は0.2個(0.2コア)であると表現することができる。
メモリ資源31は、たとえば記憶容量によって表される。たとえば、あるホストコンピュータ10の記憶手段30が8GBのメモリを備える場合には、そのホストコンピュータ10について、メモリ資源31の利用可能資源量は8GBであると表現することができる。また、あるプログラムを実行するために4GBの記憶容量が必要となる場合には、そのプログラムのメモリ資源31に対する要求資源量は4GBであると表現することができる。
なお、要求資源量は、実際に仮想コンピュータが消費する資源量と異なっていてもよい。
また、とくに図示しないが、ホストコンピュータ10は、外部の通信ネットワークに対し情報の入出力を行う通信手段を備える。通信手段はたとえばネットワークインタフェース装置または無線インタフェース装置を含む。さらに、ホストコンピュータ10は、使用者の操作を受け付ける入力手段と、情報を出力する出力手段とを備えてもよい。入力手段はたとえばキーボードおよびマウスを含む。出力手段はたとえば液晶ディスプレイ、スピーカおよびプリンタを含む。
ユーザ端末40の内部構成についてはとくに図示しないが、ユーザ端末40もまたコンピュータとしてのハードウェア構成を備える。たとえばユーザ端末40は、演算を行う演算手段と、情報を格納する記憶手段と、使用者の操作を受け付ける入力手段と、情報を出力する出力手段と、外部の通信ネットワークに対し情報の入出力を行う通信手段とを備える。
図2に、ホストコンピュータ10と仮想コンピュータ60との関係を示す。仮想コンピュータ60は、ホストコンピュータ10のプロセッサ資源21およびメモリ資源31を利用して構成される、仮想的なコンピュータである。仮想コンピュータ60は、ホストコンピュータ10が所定の仮想環境プログラムを実行することにより実現することが可能である。なお、「ホストコンピュータ10が仮想コンピュータ60のための仮想環境プログラムを実行する」ということは、「仮想コンピュータ60がホストコンピュータ10に配置される」と表現することもできる。
仮想コンピュータ60を実現するための具体的なプログラム等は、公知のものを用いてもよく、当業者が適宜設計可能なものを用いてもよい。
ここで、1台のホストコンピュータ10に複数の仮想コンピュータ60が配置される場合には、各仮想コンピュータ60はホストコンピュータ10の資源を分け合うことになる。この場合には、プロセッサ資源21およびメモリ資源31の双方について、各仮想コンピュータ60の要求資源量の合計がホストコンピュータ10の利用可能資源量を超えないように、仮想コンピュータ60の配置が行われる。
図3に、ホストコンピュータ10に対する仮想コンピュータ60の配置の具体例を示す。3台のホストコンピュータ10a〜10cは、それぞれホスト名「HOST001」、「HOST002」および「HOST003」という名称で参照されるホストコンピュータである。4台の仮想コンピュータ60a〜60dは、それぞれ仮想コンピュータ名「VD001」、「VD006」、「APP003」および「MA1」という名称で参照される仮想コンピュータである。
HOST001にはVD001およびMA1が配置されており、HOST002にはVD006およびAP003が配置されており、HOST003にはいかなる仮想コンピュータも配置されていない。
このような配置は、制御用コンピュータによって制御される。制御用コンピュータは、少なくとも1台のホストコンピュータ10の、プロセッサ資源21およびメモリ資源31からなる資源を、複数の仮想コンピュータ60に割り当てる配分を決定することにより、仮想コンピュータ60の配置を決定する。
制御用コンピュータ(仮想コンピュータ管理サーバ)は、どのように構成されてもよいが、本実施形態では仮想コンピュータ60の1つとして構成される。たとえば図3のMA1が制御用コンピュータとして機能する。ここで、仮想コンピュータ60を制御用コンピュータとして機能させるための制御用プログラムは、たとえば対応するホストコンピュータ10の記憶手段30に、メモリ資源31を使用して格納される。
なお、制御用コンピュータの機能を実現する仮想コンピュータ60は、ホストコンピュータ10のプロセッサ資源21およびメモリ資源31を利用して構成されているので、制御用コンピュータはホストコンピュータ10によって構成されるということもできる。すなわち、制御用プログラムは、ホストコンピュータ10(またはその一部)を制御用コンピュータとして機能させるということもできる。
制御用コンピュータは、本明細書に記載される資源配分決定方法を実行することにより、各仮想コンピュータ60に対する資源の配分を決定する。また、制御用コンピュータは、決定された配分に基づき、本明細書に記載される資源割り当て方法を実行することにより、各仮想コンピュータ60に対して資源を割り当てる。資源を割り当てられた仮想コンピュータ60は、対応するホストコンピュータ10上で実現されることになる。さらに、制御用コンピュータは、決定された配分に基づき、本明細書に記載される資源解放方法を実行することにより、各仮想コンピュータ60から資源を解放する。解放された資源は、そのホストコンピュータ10上で他の仮想コンピュータ60を実現するために利用することが可能となる。
また、本発明に係る資源配分決定プログラムは、コンピュータに、本明細書に記載される資源配分決定方法を実行させることにより、当該コンピュータを、本明細書に記載される制御用コンピュータ(たとえば図3の仮想コンピュータ「MA1」)として機能させる。
制御用コンピュータは、資源を管理するための情報を記憶する。図4〜図6にこれらの情報の構成の例を示す。これらの情報は、制御用コンピュータに対応する仮想コンピュータ60に割り当てられたメモリ資源31に格納されるということもでき、その仮想コンピュータ60が配置されたホストコンピュータ10の記憶手段30に格納されるということもできる。
図4は、仮想コンピュータ構成情報D1の構成の例を示す。仮想コンピュータ構成情報D1は、各仮想コンピュータについて、その仮想コンピュータの設定値および稼働状況を関連付ける。設定値は、要求資源量およびグループを含む。また、設定値はさらにホストを含んでもよい。
要求資源量は、その仮想コンピュータがあるホストコンピュータ上で稼働するために必要な資源の量を表す。たとえば仮想コンピュータ「VD001」を実現するためには、0.2個(0.2コア)のプロセッサ資源と、4GBのメモリ資源とが必要となる。
グループは、その仮想コンピュータが属するグループを識別する情報である。図4の例では3個のグループが定義されており、たとえば「VD」というグループには6台の仮想コンピュータ「VD001」〜「VD006」が属する。後述するように、制御用コンピュータは、各仮想コンピュータに対する資源の配分を、その仮想コンピュータが属するグループに基づいて決定する。
図4の例では、「VD」グループ、「APP」グループおよび「MA」グループが定義されている。「VD」グループは、たとえば仮想デスクトップのための仮想コンピュータに対応し、「APP」グループは、たとえばアプリケーションプログラムのための仮想コンピュータに対応し、「MA」グループは、たとえば制御用コンピュータのための仮想コンピュータに対応する。各グループにはそれぞれ少なくとも1台の仮想コンピュータが属する。本実施形態では、1台の仮想コンピュータが複数のグループに同時に属することはない(すなわち各仮想コンピュータは最大で1つのグループに属する)。
また、図4から明らかなように、要求資源量は、グループごとに異なる場合があるが、各グループに属するすべての仮想コンピュータについて同一の値である。すなわち、要求資源量は各グループに係る値として定義される。したがってたとえば仮想コンピュータ構成情報D1は、仮想コンピュータごとの情報を含む部分と、グループごとの情報を含む部分とに分割することが可能である。また、そのように分割する場合には、要求資源量を表す情報は、仮想コンピュータごとの情報には含まれず、グループごとの情報にのみ含まれるよう構成することも可能である。
ホストは、その仮想コンピュータが通常配置されるホストコンピュータを識別する情報である。たとえば、「VD001」は、通常は「HOST001」に配置される。なお、後述するように、仮想コンピュータが設定値とは異なるホストコンピュータに配置される場合もある。
ここで、複数の仮想コンピュータについて同一のホストコンピュータを関連付けることが可能である。言い換えると、少なくとも1台(図4の例では2台)のホストコンピュータについて、それぞれ複数の仮想コンピュータを関連付けることが可能である。
稼働状況は、その仮想コンピュータが現在配置されているホストコンピュータを識別する情報を含む。図4の例は、図3に示す具体的配置に対応する。
図5は、ホスト構成情報D2の構成の例を示す。ホスト構成情報D2は、各ホストコンピュータについて、そのホストコンピュータの利用可能資源量を関連付ける。図5の例では、3台のホストコンピュータのいずれも、8個のプロセッサ資源と、16GBのメモリ資源とを備えている。
図5には示さないが、ホスト構成情報D2はさらに、各ホストコンピュータについて、稼働状況を表す情報を関連付けてもよい。稼働状況は、利用中資源量と、空き資源量とを含んでもよい。利用中資源量は、たとえば、利用可能な資源のうち、仮想コンピュータが実際に使用している資源の量(本発明に従って配分すると決定した資源量と一致する必要はない)を表す。空き資源量は、たとえば、利用可能資源量から利用中資源量を減算した値を表す。
図6は、仮想コンピュータ稼働情報D3の構成の例を示す。仮想コンピュータ稼働情報D3は、少なくとも1つのグループ(たとえば「VD」グループ)に属する各仮想コンピュータについて、稼働状況を表す情報を関連付ける。稼働状況を表す情報は、たとえば、セッション数およびセッション状態を含む。セッション数が1以上である場合にはセッション状態はアクティブであり、セッション数が0である場合にはセッション状態は非接続(すなわちアクティブでない状態)となる。
図6の例では、仮想コンピュータ「VD001」「VD003」および「VD005」にはそれぞれ1本、2本および1本のセッションが関連付けられているが、「VD002」「VD004」および「VD006」にはセッションが関連付けられていない。言い換えると、「VD001」「VD003」および「VD005」はそれぞれ1人、2人および1人のユーザが(たとえばユーザ端末40を介して)利用中であるが、「VD002」「VD004」および「VD006」はいかなるユーザも利用していない。
仮想コンピュータ稼働情報D3は、グループごとに異なる構成をもって定義されてもよい。たとえば「APP」グループに属する各仮想コンピュータについては、アプリケーションプログラムを実行中であるか否かを表す情報を関連付けるものであってもよい。
図6には示さないが、仮想コンピュータ稼働情報D3はさらに、各仮想コンピュータについて、割り当てられているプロセッサ資源の量、割り当てられているメモリ資源の量、割り当てられているネットワーク資源の量、割り当てられているディスク容量、仮想コンピュータのステータス、等を関連付けてもよい。
以上のように構成される制御用コンピュータの動作を、以下に説明する。上述のように、制御用コンピュータは、仮想コンピュータ構成情報D1、ホスト構成情報D2および仮想コンピュータ稼働情報D3を記憶する。したがって、本発明に係る方法は、制御用コンピュータが、各ホストコンピュータの利用可能資源量と、各グループに係る要求資源量とを記憶するステップを備えるということができる。また、本発明に係る方法は、制御用コンピュータが、少なくとも1台のホストコンピュータについて、複数の仮想コンピュータを関連付けて記憶するステップを備えるということができる。
なお、仮想コンピュータ構成情報D1、ホスト構成情報D2および仮想コンピュータ稼働情報D3における稼働状況を表す情報を収集するための構成は、当業者が適宜設計可能なものであってもよい。たとえば制御用コンピュータが稼働状況を監視し、定期的に情報を取得して記録してもよい。
図7〜図10は、制御用コンピュータの処理の流れを表すフローチャートである。制御用コンピュータ(より厳密には、制御用コンピュータを構成するプロセッサまたはプロセッサ資源)は、これらのフローチャートが表す処理によって、複数の仮想コンピュータに資源を割り当てる配分を決定する。図7〜10の各処理は、たとえばそれぞれ定期的に実行される。
各グループに対する配分を決定するための条件は、グループごとに異なり得る。すなわち、これらの条件はグループに対応する。また、あるグループに属する仮想コンピュータに対して資源を割り当てるための条件(割当条件)と、そのグループに属する仮想コンピュータから資源を解放するための条件(解放条件)とは異なり得る。
図7は、制御用コンピュータが、あるグループ(第1グループ)に属する仮想コンピュータに対して資源を割り当てるための処理を表す。まず制御用コンピュータは、第1グループに属する仮想コンピュータに資源を割り当てるか否かを、第1割当条件に基づいて決定する(ステップS11)。
たとえば、第1割当条件は時刻または時間に関連する条件を含む。具体例として、「VD」グループに対応する割当条件は、「時刻が9:00を経過した」というものである。または、「VD」グループに対応する割当条件は、「時刻が9:00を経過しており、かつ21:00を経過していない」というものとしてもよい。
図4の例に沿って説明すると、9:00を経過した時点で、ホストコンピュータ「HOST001」の資源が仮想コンピュータ「VD001」〜「VD005」に割り当てられ、ホストコンピュータ「HOST002」の資源が仮想コンピュータ「VD006」に割り当てられることになる。すなわち、「VD001」〜「VD005」の5台はいずれも「HOST001」に配置され、「VD006」は「HOST002」に配置されることになる。
ステップS11において、仮想コンピュータに資源を割り当てると決定した場合には、制御用コンピュータは、いずれかのホストコンピュータ(たとえば仮想コンピュータ構成情報D1においてその仮想コンピュータに関連付けられたホストコンピュータ)の資源をその仮想コンピュータに割り当てる(ステップS12)。
ステップS11において、仮想コンピュータに資源を割り当てないと決定した場合には、制御用コンピュータは、その仮想コンピュータについてはステップS12を実行しない。すなわち、いずれのホストコンピュータの資源も割り当てない。
制御用コンピュータは、ステップS11およびS12を、第1グループに属するすべての仮想コンピュータについて繰り返し実行する。このようにして、制御用コンピュータは、各仮想コンピュータに対する資源の配分を、その仮想コンピュータが属するグループに基づいて決定する。
なお、決定された配分を実現する処理(図7の例ではステップS12)の実行タイミングは、適宜変更可能である。たとえばすべての仮想コンピュータについて配分を決定(ステップS11)した後に、資源を割り当てると決定された仮想コンピュータについて配分を実現または変更(ステップS12)するよう構成してもよい。
図8は、制御用コンピュータが、第1グループとは異なるグループ(第2グループ)に属する仮想コンピュータに対して資源を割り当てるための処理を表す。まず制御用コンピュータは、第2グループに属する仮想コンピュータに資源を割り当てるか否かを、第2割当条件に基いて決定する(ステップS21)。
たとえば、第2割当条件は時刻または時間に関連する条件を含む。具体例として、「APP」グループに対応する割当条件は、「時刻が21:00を経過した」というものである。または、「APP」グループに対応する割当条件は、「時刻が21:00を経過しており、かつ翌日の9:00を経過していない」というものとしてもよい。
図4の例に沿って説明すると、21:00を経過した時点で、ホストコンピュータ「HOST001」の資源が仮想コンピュータ「AP001」および「AP002」に割り当てられ、ホストコンピュータ「HOST002」の資源が仮想コンピュータ「AP003」に割り当てられることになる。すなわち、「AP001」および「AP002」はいずれも「HOST001」に配置され、「AP003」は「HOST002」に配置されることになる。
ステップS21において、仮想コンピュータに資源を割り当てると決定した場合には、制御用コンピュータは、いずれかのホストコンピュータ(たとえば仮想コンピュータ構成情報D1においてその仮想コンピュータに関連付けられたホストコンピュータ)の資源をその仮想コンピュータに割り当てる(ステップS22)。
ステップS21において、仮想コンピュータに資源を割り当てないと決定した場合には、制御用コンピュータは、その仮想コンピュータについてはステップS22を実行しない。すなわち、いずれのホストコンピュータの資源も割り当てない。
制御用コンピュータは、ステップS21およびS22を、第2グループに属するすべての仮想コンピュータについて繰り返し実行する。このようにして、制御用コンピュータは、各仮想コンピュータに対する資源の配分を、その仮想コンピュータが属するグループに基づいて決定する。
図9は、制御用コンピュータが、あるグループ(第1グループ)に属する仮想コンピュータから資源を解放するための処理を表す。まず制御用コンピュータは、第1グループに属する仮想コンピュータに割り当てられていた資源を解放するか否かを、第1解放条件に基づいて決定する(ステップS31)。
たとえば、第1解放条件は時刻または時間に関連する条件を含む。具体例として、「VD」グループに対応する解放条件は、「時刻が21:00を経過した」というものである。または、「VD」グループに対応する割当条件は、「時刻が21:00を経過しており、かつ翌日の9:00を経過していない」というものとしてもよい。
図4の例に沿って説明すると、21:00を経過した時点で、仮想コンピュータ「VD001」〜「VD006」のすべて(厳密には、これらのうち資源が割り当てられているもの)から資源が解放される。すなわち、「VD001」〜「VD006」の6台はいずれも、いかなるホストコンピュータにも配置されなくなる。
第1解放条件は、時刻または時間に関連する条件を含まないものであってもよく、また、他の条件を含んでもよい。
ステップS31において、仮想コンピュータから資源を解放すると決定した場合には、制御用コンピュータは、その仮想コンピュータに割り当てられていた資源を解放する(ステップS32)。仮想コンピュータから資源を解放しないと決定した場合には、制御用コンピュータは、その仮想コンピュータについてはステップS32を実行しない。
制御用コンピュータは、ステップS31およびS32を、第1グループに属するすべての仮想コンピュータについて繰り返し実行する(ただし、実行時点でいずれのホストコンピュータの資源も割り当てられていない仮想コンピュータについては、処理を省略してもよい)。このようにして、制御用コンピュータは、各仮想コンピュータに対する資源の配分を、その仮想コンピュータが属するグループに基づいて決定する。
図10は、制御用コンピュータが、第1グループとは異なるグループ(第2グループ)に属する仮想コンピュータから資源を解放するための処理を表す。まず制御用コンピュータは、第2グループに属する仮想コンピュータに割り当てられていた資源を解放するか否かを、第2解放条件に基づいて決定する(ステップS41)。
たとえば、第2解放条件は時刻または時間に関連する条件を含む。具体例として、「APP」グループに対応する解放条件は、「時刻が9:00を経過した」というものである。または、「APP」グループに対応する割当条件は、「時刻が9:00を経過しており、かつ21:00を経過していない」というものとしてもよい。
図4の例に沿って説明すると、9:00を経過した時点で、仮想コンピュータ「AP001」〜「AP003」のすべて(厳密には、これらのうち資源が割り当てられているもの)から資源が解放される。すなわち、「AP001」〜「AP003」の3台はいずれも、いかなるホストコンピュータにも配置されなくなる。
第2解放条件は、時刻または時間に関連する条件を含まないものであってもよく、また、他の条件を含んでもよい。
ステップS41において、仮想コンピュータから資源を解放すると決定した場合には、制御用コンピュータは、その仮想コンピュータに割り当てられていた資源を解放する(ステップS42)。仮想コンピュータから資源を解放しないと決定した場合には、制御用コンピュータは、その仮想コンピュータについてはステップS42を実行しない。
制御用コンピュータは、ステップS41およびS42を、第2グループに属するすべての仮想コンピュータについて繰り返し実行する(ただし、実行時点でいずれのホストコンピュータの資源も割り当てられていない仮想コンピュータについては、処理を省略してもよい)。このようにして、制御用コンピュータは、各仮想コンピュータに対する資源の配分を、その仮想コンピュータが属するグループに基づいて決定する。
以上説明するように、本発明の実施の形態1に係るコンピュータ資源配分決定方法、制御用コンピュータおよびコンピュータ資源配分決定プログラムによれば、資源の配分をグループに基づいて決定するので、資源配分の基準となる条件を柔軟かつ効率的に定義することができる。
たとえば図4の例では、10台の仮想コンピュータを3つのグループに分類し、割当条件および解放条件をグループごとに設計することが可能なので、一律の定義ではなく柔軟な定義が可能となる。また、10台の仮想コンピュータについて個別に定義する必要がないので、効率的な定義が可能となる。
上述の実施の形態1において、次のような変形を施すことができる。
資源を配分する際の単位は適宜変更可能である。また、資源を比率で表すか、または絶対値で表すかも適宜変更可能である。たとえばプロセッサ資源を絶対値(1個のプロセッサの使用時間等)で表してもよく、メモリ資源を比率(記憶手段30全体のうち何%を割り当てるか等)で表してもよい。
また、各仮想コンピュータの要求資源量はどのように決定してもよいが、たとえば、使用資源量およびオーバーコミット率を用いて決定してもよい。たとえば図4に示す例は、「VD」グループについて、使用プロセッサ数が1個であり、使用メモリ量が4GBであり、プロセッサ資源のオーバーコミット率が0.2であり、メモリ資源のオーバーコミット率が1.0である場合に相当する。
実施の形態1では、第1割当条件および第2割当条件は時刻または時間に関連する条件を含む。変形例として、これらの条件は、時刻または時間に関連する条件を含まないものであってもよく、また、他の条件を含むものであってもよい。たとえば第1割当条件は、時刻に関連する条件に加えて、資源量に関連する条件を含んでもよい。
たとえば、制御用コンピュータは、あるホストコンピュータから仮想コンピュータに対してすでに割り当てられた要求資源量の合計と、新たにステップS11においてそのホストコンピュータから新たな仮想コンピュータに割り当てると決定された要求資源量との和が、そのホストコンピュータの利用可能資源量を超える場合には、他の条件に関わらず、その仮想コンピュータに資源を割り当てないと決定してもよい。
これを図3〜図5の例に沿って説明する。たとえばホストコンピュータ「HOST001」に仮想コンピュータ「MA1」がすでに配置され、他の仮想コンピュータは配置されていないとする。図4の例では、この時点で、「HOST001」の利用可能資源量であるプロセッサ資源8個およびメモリ資源16GBのうち、プロセッサ資源4個およびメモリ資源12GBが「MA1」に割り当てられていることになる。
ここで、制御用コンピュータが、第1割当条件に従って仮想コンピュータ「VD001」を追加で配置すると決定したとする。この時点で、「HOST001」の利用可能資源量であるプロセッサ資源8個およびメモリ資源16GBから、2台の仮想コンピュータの要求資源量の合計であるプロセッサ資源4.2個およびメモリ資源16GBが割り当てられ、メモリ資源はすべてが割り当て済みとなる。
この状態で、さらに仮想コンピュータ「VD002」についてステップS11が実行されるが、「VD002」を「HOST001」に配置しようとすると、要求資源量の合計が利用可能資源量を超えることになる。このため、制御用コンピュータは「VD002」には資源を割り当てないと決定する。
第1割当条件をこのように設定すると、制御用コンピュータは、各仮想コンピュータに対する資源の配分を、ホストコンピュータの利用可能資源量および各仮想コンピュータの要求資源量に基づいて決定することができる。
第2割当条件も同様に、時刻または時間に関連する条件を含まないものであってもよく、また、他の条件を含んでもよい。たとえば、第2割当条件は、第1割当条件と同様に、ホストコンピュータの利用可能資源量と、仮想コンピュータの要求資源量とに関連する条件を含んでもよい。
実施の形態1では、第1解放条件および第2解放条件は時刻または時間に関連する条件を含む。変形例として、これらの条件は、時刻または時間に関連する条件を含まないものであってもよく、また、他の条件を含むものであってもよい。たとえば第1解放条件または第2解放条件は、各仮想コンピュータに対するセッション数に関連する条件を含んでもよい。
具体例として、制御用コンピュータは、仮想コンピュータ稼働情報D3に基づいてセッション数およびセッション状態を取得し、これらに基づいて配分を決定してもよい。たとえば、第1解放条件は、必要条件の一部として、「その仮想コンピュータのセッション数が0であり、かつ、その仮想コンピュータのセッション状態が非接続である」という条件を含んでもよい。この条件は、たとえば、その仮想コンピュータを利用中であるユーザが存在しない場合に該当する。
このような変形例によれば、時刻が21:00を過ぎた場合であっても、セッション数が1以上ある仮想コンピュータや、セッション状態がアクティブである仮想コンピュータからは資源が解放されないので、その仮想コンピュータは継続して稼働可能となる。したがって、仮想コンピュータのセッションを利用中のユーザが、ログアウト前に突然セッションを切断されるということが回避でき、ユーザの利便性が向上する。
別の変形例として、たとえば第1解放条件または第2解放条件は、各仮想コンピュータがアプリケーションプログラムを実行中であるか否かに関連する条件を含んでもよい。
具体例として、制御用コンピュータは、「APP」グループに属する各仮想コンピュータの稼働状況を監視し、これに基づいて配分を決定してもよい。たとえば、第2解放条件は、必要条件の一部として、「その仮想コンピュータがアプリケーションプログラムを実行中でないこと」という条件を含んでもよい。
このような変形例によれば、時刻が9:00を過ぎた場合であっても、アプリケーションプログラムを実行中である仮想コンピュータからは資源が解放されないので、その仮想コンピュータは継続して稼働可能となる。したがって、アプリケーションプログラムの実行を完了することができるので、たとえばシステムの安定性が高まる。
実施の形態1では、ホストコンピュータと仮想コンピュータとの対応関係は固定されている。すなわち、たとえば仮想コンピュータ構成情報D1において、稼働状況を表す値は、設定値と一致するか、または「なし」かのいずれかである。変形例として、ホストコンピュータが少なくとも2台存在する場合に、対応関係を動的に変更できるよう構成してもよい。たとえば、仮想コンピュータ構成情報D1における設定値とは異なるホストコンピュータから資源を割り当てるよう構成してもよい。
たとえば、制御用コンピュータが、仮想コンピュータのいずれかに、あるホストコンピュータ(第1ホストコンピュータ)の資源を割り当てないと決定した場合に、その仮想コンピュータに別のホストコンピュータ(第2ホストコンピュータ)の資源を割り当てるか否かを決定するよう構成してもよい。このような決定は、資源量に基づいて行われてもよい。
図11は、このような変形例に係る制御用コンピュータの処理の流れを表すフローチャートである。この処理は図7の処理に代えて実行される。まず、制御用コンピュータは、実施の形態1と同様にしてステップS11を実行し、第1割当条件に基づいて、仮想コンピュータに資源を割り当てるか否かを決定する。
資源を割り当てると決定した場合には、制御用コンピュータは、第1ホストコンピュータの利用可能資源量と、各仮想コンピュータの要求資源量とに基づき、各仮想コンピュータに第1ホストコンピュータの資源を割り当てるか否かを決定する(ステップS51)。この判定に用いる要求資源量は、たとえば、すでに第1ホストコンピュータに配置されている仮想コンピュータの要求資源量の合計と、処理中の仮想コンピュータの要求資源量との和である。
ステップS51において、仮想コンピュータに第1ホストコンピュータの資源を割り当てると決定した場合には、制御用コンピュータは、第1ホストコンピュータの資源をその仮想コンピュータに割り当てる(ステップS53)。
ステップS51において、仮想コンピュータに第1ホストコンピュータの資源を割り当てないと決定した場合には、制御用コンピュータは、第2ホストコンピュータの利用可能資源量と、各仮想コンピュータの要求資源量とに基づき、その仮想コンピュータに第2ホストコンピュータの資源を割り当てるか否かを決定する(ステップS52)。この判定に用いる要求資源量は、たとえば、すでに第2ホストコンピュータに配置されている仮想コンピュータの要求資源量の合計と、処理中の仮想コンピュータの要求資源量との和である。
ステップS52において、仮想コンピュータに第2ホストコンピュータの資源を割り当てると決定した場合には、制御用コンピュータは、第2ホストコンピュータの資源をその仮想コンピュータに割り当てる(上述のステップS53)。割り当てないと決定した場合には、制御用コンピュータは、その仮想コンピュータには、第1ホストコンピュータおよび第2ホストコンピュータのいずれの資源も割り当てない。
たとえば、図3に示すように、ホストコンピュータ「HOST001」に仮想コンピュータ「VD001」および「MA1」がすでに配置されているとする。この時点で、「HOST001」の利用可能資源量であるプロセッサ資源8個およびメモリ資源16GBのうち、「VD001」および「MA1」の要求資源量の合計として、プロセッサ資源4.2個およびメモリ資源16GBが割り当てられている。
ここで、制御用コンピュータが、仮想コンピュータ「VD002」についてステップS51を実行し、「HOST001」の資源を「VD002」に割り当てるか否かを決定する。「VD001」および「MA1」に「VD002」が加わると、要求資源量の合計は、プロセッサ資源4.4個およびメモリ資源20GBとなる。この要求メモリ資源量(20GB)は「HOST001」の利用可能メモリ資源量(16GB)を超えているので、制御用コンピュータは、「VD002」に「HOST001」の資源を割り当てないと決定する。
次に、制御用コンピュータは、「VD002」についてステップS52を実行し、別のホストコンピュータ(この例では「HOST003」とする)の資源を割り当てるか否かを決定する。ここでは、「HOST003」の資源はいかなる仮想コンピュータにも割り当てられておらず、「VD002」の要求資源量は、プロセッサ資源およびメモリ資源のいずれについても「HOST003」の利用可能資源量を超えないので、「HOST003」の資源を「VD002」に割り当てると決定する。
このような変形例によれば、空いているホストコンピュータの資源を有効に活用することができる。
図11の例では、2台のホストコンピュータについてのみ処理が実行されるが、3台以上のホストコンピュータについて同様に処理を実行してもよい。たとえば、ステップS52において、仮想コンピュータに第2ホストコンピュータの資源を割り当てないと決定した場合には、制御用コンピュータは、第3ホストコンピュータの利用可能資源量と、その仮想コンピュータの要求資源量とに基づき、その仮想コンピュータに第3ホストコンピュータの資源を割り当てるか否かを決定してもよい。
なお、ホストコンピュータが3台以上存在する場合の、ホストコンピュータの判定順序(たとえばどのホストコンピュータを第2ホストコンピュータとして選択するかの基準)は、当業者が適宜設計可能なものであってもよい。たとえば、すでに割り当てられている資源量が最も大きいものを選択してもよく(この場合には、多数の仮想コンピュータを少数のホストコンピュータに集約することができる)、すでに割り当てられている資源量が最も小さいものを選択してもよい(この場合には、ホストコンピュータ間のロードバランシングを適切に行うことができる)。この際の資源量の比較には、プロセッサ資源のみを用いてもよいし、メモリ資源のみを用いてもよいし、双方に基づく関数(重みづけ和等)を用いてもよい。
実施の形態1では、制御用コンピュータは、各仮想コンピュータにいずれかのホストコンピュータの資源を割り当てると決定した場合には、その後その仮想コンピュータの配置を変更しない。変形例として、制御用コンピュータは、各ホストコンピュータに対する各仮想コンピュータの再配置処理を行ってもよい。
再配置処理とは、ある仮想コンピュータにあるホストコンピュータの資源を割り当てると決定されている場合において、その決定を取り消し、その仮想コンピュータに、そのホストコンピュータの資源ではなく、別のホストコンピュータの資源を割り当てると決定することを意味する。
図12は、このような再配置処理の具体例を示す。図12(a)は再配置処理の実行前の状況を示す。ホストコンピュータ「HOST001」に仮想コンピュータ「AP001」および「VD001」が配置されており、ホストコンピュータ「HOST002」に仮想コンピュータ「AP002」が配置されている。図12(b)は再配置処理の実行後の状況を示す。この例では、「AP002」が「HOST002」から「HOST001」に再配置されている。
再配置処理は、たとえば図7のステップS11の後、ステップS12の前に実行される。また、再配置処理は、複数のグループに対して共通で実行されてもよい。その場合には、制御用コンピュータは、図7および図8の処理を並列的に実行し、ステップS11およびステップS21の後、ステップS12およびステップS22の前に再配置処理を実行してもよい。また、再配置処理は、資源の配分に係る決定処理のみならず、実際に割り当てる処理(たとえば図7のステップS12)を含んでもよい。
このような再配置処理は、たとえば制御用コンピュータが2台の仮想コンピュータにそれぞれ異なるホストコンピュータの資源を割り当てると決定した場合に実行される。すなわち、制御用コンピュータが、ある仮想コンピュータ(第1仮想コンピュータ)にあるホストコンピュータ(第3ホストコンピュータ)の資源を割り当てると決定し、かつ、別の仮想コンピュータ(第2仮想コンピュータ)に別のホストコンピュータ(第4ホストコンピュータ)の資源を割り当てると決定した場合に実行される。
なお、この変形例において、第3ホストコンピュータまたは第4ホストコンピュータは、上述の第1ホストコンピュータまたは第2ホストコンピュータと同一であってもよい。
再配置処理は、ホストコンピュータと仮想コンピュータとの対応関係を変更するか否かを決定する処理を含む。具体例として、再配置処理は、制御用コンピュータが、第1仮想コンピュータに第3ホストコンピュータの資源を割り当てることに代えて、第1仮想コンピュータに第4ホストコンピュータの資源を割り当てるか否かを決定する処理を含む。または、再配置処理は、制御用コンピュータが、第2仮想コンピュータに第4ホストコンピュータの資源を割り当てることに代えて、第2仮想コンピュータに第3ホストコンピュータの資源を割り当てるか否かを決定する処理を含む。
図12の例を用いて、このような決定処理の具体例を説明する。再配置処理において、まず制御用コンピュータは、各ホストコンピュータについて、配置されている仮想コンピュータの要求資源量の合計を計算し、この合計が最も小さいホストコンピュータを決定する。
この際の合計の比較には、プロセッサ資源のみを用いてもよいし、メモリ資源のみを用いてもよいし、双方に基づく関数(重みづけ和等)を用いてもよい。ここではメモリ資源のみを用いるものとして説明する。
図12(a)の例では、要求資源量の合計としてメモリ資源の合計を比較すると、「HOST001」では8GB、「HOST002」では4GBとなっており、「HOST002」のほうが合計が小さい。
この場合には、制御用コンピュータは、「HOST002」に配置されている仮想コンピュータのそれぞれについて、再配置処理を実行する。たとえば、「AP002」に「HOST002」の資源を割り当てることに代えて、「AP002」に「HOST001」の資源を割り当てるか否かを決定する。
たとえば、制御用コンピュータは、「HOST001」から「AP001」および「VD001」に対してすでに割り当てられた要求資源量の合計(1.2個および8GB)と、再配置処理中の仮想コンピュータ「AP002」に割り当てられるべき要求資源量(1個および4GB)との和(2.2個および12GB)が、「HOST001」の利用可能資源量(8個および16GB)を超えるか否かを判定する。
図12の例では、プロセッサ資源についてもメモリ資源についても、要求資源量の和が利用可能資源量を超えないので、制御用コンピュータは「AP002」を再配置すると決定する。なお、プロセッサ資源またはメモリ資源のいずれかについて、要求資源量の和が利用可能資源量を超える場合には、制御用コンピュータはそのような再配置を行わないと決定する。
このような決定に基づき、制御用コンピュータは図12(b)に示すように再配置処理を実行する。再配置処理は、上記のような決定処理に加え、「HOST002」の資源を「AP002」から解放する処理と、「HOST001」の資源を「AP002」に割り当てる処理とを含んでもよい。
図12の例によれば、このようにして、2台のホストコンピュータに分散配置されていた仮想コンピュータが、1台の仮想コンピュータに集約される。
このような再配置処理によれば、仮想コンピュータの集約が可能となるので、ホストコンピュータの効率的な運用が可能である。たとえば、あるホストコンピュータの資源がすべて解放された場合には、そのホストコンピュータ全体の動作を停止させることが可能となる。ホストコンピュータを停止することにより、消費電力が低減される。また、動作を停止したホストコンピュータについて、保守作業等の自由度が向上する。
実施の形態1では、制御用コンピュータは、ある仮想コンピュータの配置を決定する際に、他の仮想コンピュータを再配置することはしない。変形例として、制御用コンピュータは、そのような再配置を行ってもよい。
図13は、このような再配置処理の具体例を示す。図13(a)は再配置処理の実行前の状況を示す。ホストコンピュータ「HOST001」(第5ホストコンピュータ)に仮想コンピュータ「VD001」〜「VD004」の4台が配置されており、ホストコンピュータ「HOST002」に仮想コンピュータ「AP002」が配置されている。
図13(a)の状況では、「HOST001」のメモリ資源がすべて割り当てられており、他の仮想コンピュータを「HOST001」に配置することができない。このため、たとえば「AP001」(第3仮想コンピュータ)について図11のステップS11およびS51が実行されると、制御用コンピュータは「AP001」に「HOST001」の資源を割り当てないと決定する。
本変形例では、制御用コンピュータは、いずれかの仮想コンピュータ(たとえば「AP001」)に、いずれかのホストコンピュータ(たとえば「HOST001」)の資源を割り当てないと決定した場合に、そのホストコンピュータの資源を割り当てられている仮想コンピュータのいずれか(たとえば「VD001」。第4仮想コンピュータ)について、割り当てられていた資源を解放するとともに、他のホストコンピュータ(たとえば「HOST002」。第6ホストコンピュータ)の資源を割り当てると決定する。この決定は、図11のステップS51と同様の判定の結果として、条件を満たした場合のみ行われるものであってもよい。
図13(b)は、このような決定の結果を示す。「VD001」が「HOST001」から「HOST002」に再配置され、その結果として、「HOST001」に配置されている仮想コンピュータの要求資源量の合計が減少することになる。
このような再配置処理の後、制御用コンピュータは、「AP001」に「HOST001」の資源を割り当てると決定する。この決定は、図11のステップS51と同様の判定の結果として、条件を満たした場合のみ行われるものであってもよい。図13(c)は、このような決定の結果を示す。
図13の例では、「VD001」を再配置した時点で「AP001」の配置が可能になるが、「VD001」を再配置しても依然として「AP001」を配置できない場合には、他の仮想コンピュータ(たとえば「VD002」)を対象として同様に再配置処理を繰り返してもよい。
図13の例では、「AP001」に資源を割り当てるための処理に関して、「VD001」が再配置処理の対象となっている。このような仮想コンピュータの選択は、たとえばグループに基づいて行われてもよい。たとえば、「APP」グループに資源を割り当てるための処理に関してはこのような再配置処理が実行されるが、「VD」グループに資源を割り当てるための処理に関してはこのような再配置処理が実行されないように構成してもよい。
また、たとえば、「VD」グループは再配置処理の対象となるが、「APP」グループは再配置処理の対象とならないように構成してもよい。たとえば、図13(c)の状況において、さらに「HOST001」に別の仮想コンピュータを配置しようとする場合に、「VD002」〜「VD004」については、図13(b)における「VD001」のような再配置処理の対象となるが、「AP001」についてはそのような再配置処理の対象とならない。
また、グループ内での再配置処理の対象となる仮想コンピュータの選択は、任意の基準で行うことができる。たとえば仮想コンピュータの名称の辞書順等を用いてもよい。
また、再配置先のホストコンピュータ(図13の例では「HOST002」)の選択は、任意の基準で行うことができる。たとえば仮想コンピュータの名称の辞書順等を用いてもよい。たとえば、「HOST001」以外のホストコンピュータとして「HOST002」および「HOST003」が存在する場合には、「HOST002」に再配置可能であれば「HOST002」に再配置し、「HOST002」に再配置可能でなく「HOST003」に再配置可能であれば「HOST003」に再配置するよう構成してもよい。
なお、この変形例において、第5ホストコンピュータまたは第6ホストコンピュータは、上述の第1〜第4ホストコンピュータのいずれかと同一であってもよい。
また、再配置処理の対象となる仮想コンピュータ(図13の例では「VD001」)がすでに稼働中である場合には、その仮想コンピュータを稼働させたまま再配置処理を行ってもよい。「稼働させたまま再配置処理を行う」とは、たとえば、その仮想コンピュータが実行している1つ以上のプログラムについて、再配置処理によってそのプログラムの実行結果が影響を受けないような態様で、再配置処理を行うことを意味する。より具体的には、ログインしているユーザのセッションが途切れたり、アプリケーションプログラムの実行においてエラーが発生したりという事象が、再配置処理に起因して発生するようなことがない態様で行われる。そのような再配置処理の具体的手順は、当業者が適宜設計可能なものを用いてもよい。
このような再配置処理によれば、仮想コンピュータの配置の組み合わせがより柔軟に実現できる。とくに、再配置処理によって、全体で配置可能な仮想コンピュータの数が増加する場合がある。たとえば、要求資源量が大きい仮想コンピュータを配置する際に、要求資源量のより小さい仮想コンピュータを再配置すれば、そのような効果が得られる可能性がある。
実施の形態1では、図4に示すグループ「MA」については、本発明によっては資源の配分変更がなされない。すなわち、一度配分された資源はそのまま割り当てられ続ける。このため、仮想コンピュータ「MA1」を本発明に係る制御用コンピュータとして用いる場合に好適である。しかしながら、変形例として、グループ「MA」についても同様に割当条件および解放条件を定義し、他のグループと同様に処理を行ってもよい。
実施の形態1では、制御用コンピュータは仮想コンピュータの1つ(図3のMA1)として構成されたが、仮想コンピュータとして構成する必要はない。たとえば制御用コンピュータのための専用のハードウェア(物理コンピュータ)を設け、これを通信ネットワーク50に接続してもよい。
実施の形態1では、資源はプロセッサ資源およびメモリ資源の双方を含む。変形例として、資源はプロセッサ資源またはメモリ資源のいずれか一方を含み、他方を含まないものであってもよい。その場合には、その他方については、本発明以外の技術によって配分が決定されてもよい。