説明

仮想計算機割り当てシステム、及び仮想計算機割り当て方法

【課題】物理計算機への仮想計算機集約台数の最大化を図り、1つの物理計算機に対して複数の仮想計算機の割り当てを効率よく実現する新しい仮想計算機割り当てシステム等を提供する。
【解決手段】複数の仮想計算機101を少なくとも1以上の物理計算機1に割り当てを行うシステムであって、各仮想計算機101の資源使用量を所定時間ごとに計測する資源使用料計測手段11と、各物理計算機1の資源量の情報を記憶する記憶手段4と、各仮想計算機101の資源使用量の時刻ごとの和が前記記憶手段に記憶された前記物理計算機の資源量を超えず、且つ、前記物理計算機の数が最小になるように、前記複数の仮想計算機を前記物理計算機に割り当てる仮想計算機割り当て決定手段31と、を備える仮想計算機割り当てシステム100。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想計算機割り当てシステム及び仮想計算機割り当て方法に関し、特に、資源使用量の履歴に基づき、仮想計算機の物理計算機への効率的な割り当て方を決定するシステム及びその方法に関する。
【背景技術】
【0002】
データセンター等では、通常、複数の仮想計算機(仮想マシン)を、複数の物理計算機(物理マシン)に割り当てて運用することが行われている。各物理計算機には、複数の仮想計算機を割り当てて運用する方法がとられ、この方法により、仮想計算機の数よりも少ない物理計算機で運用することができ、物理計算機の設置のための場所やコストを抑えることができる。そのため、1台の物理計算機に対し、より多くの数の仮想計算機を割り当てた方が効率良く運用することができる。
【0003】
ただし、物理計算機におけるCPU、主記憶、補助記憶装置等の資源は有限であるため、仮想計算機に必要な資源の合計が物理計算機の資源量を超えないように、1つの物理計算機に複数の仮想計算機を割り当てる必要がある。
【0004】
そのため、従来では、従来、1つの物理計算機に複数の仮想計算機を割り当てる場合、負荷最大時におけるCPUや主記憶等の資源使用量から、運用者の経験と勘に基づいて割り当てる方法が取られていたが、すべての組み合わせを調べるのは困難であり、最適な割り当て方を見つけるのは不可能である。
【0005】
そこで、特許文献1では、想定ユーザ数等の負荷試験により、仮想計算機の必要リソース量を求めて、この必要リソース量に基づいて物理計算機への仮想計算機の割り当てを決定する方法が開示されている。
【0006】
また、特許文献2では、時々刻々と変化する各仮想計算機の負荷に応じて、各仮想計算機に割り当てるリソースを変更していく方法が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2010−271863号公報
【特許文献2】特開2003−157177号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、特許文献1に記載の技術では、例えば、仮想計算機A,B,Cのぞれぞれの想定リソース量が、仮想計算機A(0時〜12時のリソース量50、12時〜24時のリソース量0)、仮想計算機B(0時〜12時のリソース量50、12時〜24時のリソース量0)、及び仮想計算機C(0時〜12時のリソース量0、12時〜24時のリソース量60)であった場合、仮想計算機A,B,Cの必要リソース量の合計は160%となり、これは物理計算機のリソース量の100%を超えてしまうため、負荷が時間帯によって異なるにも関わらず、仮想計算機A,B,Cを1つの物理計算機に割り当てることができないという問題があった。
【0009】
また、特許文献2に記載の技術では、時々刻々と変化する各仮想計算機の負荷に応じて、各仮想計算機に割り当てるリソースを変更するものであるが、物理計算機への仮想計算機集約台数の最大化を実現できるものではない。
【0010】
そこで、本発明は、かかる事情に鑑みてなされたものであり、物理計算機への仮想計算機集約台数の最大化を図り、1つの物理計算機に対して複数の仮想計算機の割り当てを効率よく実現する新しい仮想計算機割り当てシステム等を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明による仮想計算機割り当てシステムは、複数の仮想計算機を少なくとも1以上の物理計算機に割り当てを行う仮想計算機割り当てシステムであって、前記各仮想計算機の資源使用量を所定時間ごとに計測する資源使用料計測手段と、前記各物理計算機の資源量の情報を記憶する記憶手段と、前記各仮想計算機の資源使用量の時刻ごとの和が前記記憶手段に記憶された前記物理計算機の資源量を超えず、且つ、前記物理計算機の数が最小になるように、前記複数の仮想計算機を前記物理計算機に割り当てる仮想計算機割り当て決定手段と、を備える。
【0012】
本発明による仮想計算機割り当て方法は、複数の仮想計算機を少なくとも1以上の物理計算機に割り当てを行う仮想計算機割り当て方法であって、前記各仮想計算機の資源使用量を所定時間ごとに計測する段階と、前記各物理計算機の資源量の情報を記憶する段階と、前記各仮想計算機の資源使用量の時刻ごとの和が前記記憶手段に記憶された前記物理計算機の資源量を超えず、且つ、前記物理計算機の数が最小になるように、前記複数の仮想計算機を前記物理計算機に割り当てを決定する段階と、を備える。
【発明の効果】
【0013】
以上のように構成された本発明の仮想計算機割り当てシステム等によれば、負荷の高い仮想計算機と負荷の低い仮想計算機を、同じ物理計算機に割り当てできるため、各仮想計算機をより少ない数の物理計算機で効率的に実行することができる。また、経験者が勘と経験で推論し割り当てを行うよりも効率的に割り当てを行うことができるため、自動的、且つ、人手によらない運用が可能であり、人件費等のコストを抑えることができる。
【図面の簡単な説明】
【0014】
【図1】本実施形態の仮想計算機割り当てシステムの概略構成を示す図である。
【図2】本実施形態の仮想計算機割り当て方法の処理内容を示すフローチャートである。
【図3】本実施形態において、補助記憶装置に記憶される情報の一例を示す図である。
【図4】本実施形態において、物理計算機資源量一覧の一例を示す図である。
【図5】本実施形態において、一時割り当て表の一例を示す図である。
【図6】本実施形態の仮想計算機割り当て方法の処理内容を示すフローチャートである。
【図7】本実施形態の仮想計算機割り当て方法の処理内容を示すフローチャートである。
【図8】本実施形態の仮想計算機割り当て方法の処理内容を示すフローチャートである。
【図9】本実施形態の仮想計算機割り当て方法の処理内容を示すフローチャートである。
【図10】本実施形態の仮想計算機割り当て方法の処理内容を示すフローチャートである。
【図11】本実施形態の仮想計算機割り当て方法の処理内容を示すフローチャートである。
【図12】本実施形態において、割り当て後の物理計算機と仮想計算機の対応表の一例を示す図である。
【発明を実施するための形態】
【0015】
以下、本発明を実施するための好適な実施形態を、図面を参照しながら説明する。
【0016】
図1は、本発明の実施形態の仮想計算機割り当てシステム(以下、単に「システム」と称する)100の概略構成の一例を示す図である。
【0017】
システム100は、図1に示すとおり、複数の物理計算機1、補助記憶装置2、データ処理装置3、記憶装置4、及び出力装置5を含んで構成される。
【0018】
物理計算機1は、該物理計算機1上で動作している1以上の仮想計算機101の資源使用量を計測する資源使用量計測プログラム11の処理を実行可能な装置である。
【0019】
資源使用量計測プログラム(資源使用量計測手段)11は、仮想計算機101ごとの資源使用量を、日付、時刻ごとに補助記憶装置2に記録する処理を行う。なお、本実施形態における「資源使用量」とは、例えば、CPUの使用率、主記憶の使用量とする。
【0020】
補助記憶装置2は、資源使用量計測プログラム11により、上述の仮想計算機101ごとの資源使用量を、日付、時刻ごとに記録するデータベースである。
【0021】
記憶装置4は、仮想計算機一覧データ41及び物理計算機1の資源量一覧データ42を記憶するデータベース(記憶手段)である。
【0022】
データ処理装置3は、仮想計算機割り当て決定プログラム(仮想計算機割り当て決定手段)31の処理を実行可能な装置である。
【0023】
仮想計算機割り当て決定プログラム31は、動作させる必要のある仮想計算機101を仮想計算機一覧41から取得し、各物理計算機1に割り当てる処理を行うものであって、(1)補助記憶装置2に記録されている各仮想計算機101の資源使用量の時刻ごとの和が、物理計算機1の資源量を超えないこと、(2)使用する物理計算機1の数が最小になること、の2つの条件を満たすように処理を行うことができる。また、仮想計算機割り当て決定プログラム31は、得られた仮想計算機の割り当て結果を、画面やファイルなどの出力装置5に出力する処理を実行するようにできる。
【0024】
出力装置5は、仮想計算機の割り当て結果をユーザに対して表示可能な出力手段であり、例えば、ディスプレイ等の表示装置や、印刷装置である。
【0025】
以下、図2に示すフローチャートを参照して、本実施形態の仮想計算機割り当て方法(仮想計算機割り当て決定プログラム31)の動作処理を説明する。なお、図2のフローチャートで示される各処理は、処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【0026】
仮想計算機割り当てプログラム31の動作処理の前処理として、資源使用量計測プログラム11により、各仮想計算機101の資源使用量を計測し、補助記憶装置2に記録する処理が実行される。この記録は、仮想計算機ごと、日付、時刻ごとに行われる。例えば、動作させる仮想計算機の数をM(Mは自然数)とし、計測の間隔を1分とすると、図3に示すような情報が記録される。
【0027】
仮想計算機割り当て決定プログラム31は、次に記述するようなステップで、各物理計算機1の資源量を超えない範囲で、且つ、必要な物理計算機の数が最小となるような仮想計算機の割り当て方を決定する。物理計算機1の数をNとすると、物理計算機資源量一覧42には、図4に示すように、物理計算機1ごとにCPU資源量及び主記憶資源量が記録されている。
【0028】
まず、仮想計算機一覧41から仮想計算機の一覧を取得する(ステップA1)。具体的には、例えば、取得した仮想計算機の一覧をV(M)<V(M)={仮想計算機101−1、仮想計算機101−2、…、仮想計算機101−M}>と表すことができる。
【0029】
次いで、物理計算機資源量一覧42から物理計算機の一覧と各物理計算機の資源量を取得する(ステップA2)。
【0030】
次いで、物理計算機と仮想計算機の割り当てを表す一時割り当て表を初期化する(ステップA3)。一時割り当て表は、例えば、図5に示すように、物理計算機と仮想計算機の対応関係(割り当て)を表しており、初期化直後は、各物理計算機に対して割り当てるべき仮想計算機の情報がリセットされる(図5に示す全ての列が空であることは、すべての物理計算機に、1つも仮想計算機が割り当てられていないことを表している)。
【0031】
次いで、一時割り当て表と仮想計算機一覧V(M)を引数にして、割り当て探索サブルーチンを実行する(ステップA4)。ここで、割り当て探索サブルーチンとは、引数の一時割り当て表と、仮想計算機一覧41と、物理計算機資源量一覧42と、補助記憶装置2に記録されている過去の資源使用量とから、次の(1)(2)の条件を満たす仮想計算機の割り当て方を結果として返す(ステップA5)。
【0032】
(1)補助記憶装置2に記録されている各仮想計算機101の資源使用量の時刻毎の和が、物理計算機の資源量を超えない。
【0033】
(2)使用する物理計算機1の数が最小となる。
【0034】
上記の条件を満たす割り当てができる場合には(ステップA5:Yes)、その割り当て方を出力する(ステップA6)。一方、上記割り当てができない場合には(ステップA5:No)、割り当て探索サブルーチンは、割り当て方が無いという結果(割り当て不可能であうことを出力)を返してくる(ステップA7)。
【0035】
ここで、割り当て探索サブルーチンについて、図6−図10を参照して説明する。割り当て探索サブルーチンは、再帰的アルゴリズムで仮想計算機の割り当て方を探索する。割り当て探索サブルーチンが呼び出されるとき、(1)仮想計算機一覧41、(2)一時割り当て表、の引数を受け取る。なお、図6−図10のフローチャートで示される各処理は、処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【0036】
まず、図6に示すように、引数の仮想計算機一覧41に、仮想計算機が1つ以上あるか否かを確認する(ステップB1)。仮想計算機が1つも無い場合は(ステップB1:No)、図10に示すように、ステップB99の処理で条件を満たす割り当て方が見つかったことを示す値と、引数の一時割り当て表の値を返して、処理を終了する。
【0037】
次いで、引数の仮想計算機一覧から1つ仮想計算機を選択する(ステップB2)。なお、選択した仮想計算機をVtとし、仮想計算機一覧からVtを取り除いたものをV(i−1)とする。
【0038】
次いで、条件を満たす仮想計算機の割り当てを発見したことを示す発見フラグ(フラグ)F1をオフにする(ステップB3)。
【0039】
次いで、引数の一時割り当て表の先頭行から物理計算機を1つ選択する(ステップB4)。なお、選択した物理計算機をPtとする。
【0040】
次いで、引数の一時割り当て表、仮想計算機Vt、物理計算機Ptを引数にして、資源使用量検査サブルーチンを呼ぶ(ステップB5)。資源使用量検査サブルーチンは、一時割り当て表の物理計算機Ptの行に登録されている各仮想計算機と仮想計算機Vtの資源使用量を、補助記憶装置2から読み取り、時刻別にとった和が、物理計算機資源量一覧42の物理資源量を超えていないことを検査する(ステップB6)。検査した結果、資源量を超えていなければOKを返し、資源量を超えていれば、NGを返す。なお、資源使用量検査サブルーチンの具体的な動作処理は後述する。検査結果がNGであれば(ステップB6:NG)、ステップB13に進む。
【0041】
一方、検査結果がOKであれば(ステップB6:OK)、図7に示すように、局所変数一時割り当て表Wに、引数の一時割り当て表を複写する(ステップB7)。
【0042】
次いで、局所変数一時割り当て表Wに仮想計算機Vtを追加する(ステップB8)。ここで、追加する行は物理計算機Ptであり、列は空のものである。
【0043】
次いで、割り当て探索サブルーチンを実行する(ステップB9)。これは、再帰呼び出し実行させる。引数には、局所変数一時割り当て表Wと、仮想計算機の一覧V(i−1)を指定して呼び出す。割り当て方が見つかった場合は、返ってきた割り当て表をTとする。
【0044】
次いで、割り当て方が見つかったか否かを判定し(ステップB10)、見つかった場合は(ステップB10:Yes)、ステップB11に進み、見つからなかった場合は(ステップB10:No)、ステップB13に進み、次の物理計算機について処理を実行する。
【0045】
次いで、フラグF1がONか否かを検査する(ステップB11)。フラグF1がOFFの場合は(ステップB11:No)、表Tから局所変数Xに複写する(ステップB12)。局所変数Xは、このサブルーチンの戻り値候補である。また、割り当て表Xで、列に仮想計算機名が設定されている行数を局所変数Npに代入する。局所変数Npは、割り当て表Xの時に、使用している物理計算機の数である。
【0046】
次いで、図8に示すように、すべての物理計算機について実行したか否かを検査する(ステップB13)。すべての物理計算機について実行が終了している場合には(ステップB13:Yes)、フラグF1がONか否かを検査する(ステップB14)。フラグF1がONならば(ステップB14:Yes)、局所変数Xの値が、目的とする仮想計算機の割り当て方なので、この値と割り当て方が見つかったことを戻り値として処理を終了する(ステップB15)。一方、フラグF1がOFFの場合は(ステップB14:No)、割り当て方が見つからなかったことを戻り値とする(ステップB17)。
【0047】
ここで、ステップB13の処理で、未だ実行していない物理計算機がある場合は(ステップB13:No)、次の行の物理計算機をPtとして(ステップB16)、ステップB5に戻る。
【0048】
また、ステップB11の処理で、フラグF1がONだった場合は(ステップB11:No)、図9に示すように、戻り値の仮想計算機割り当て表Tで使用している物理計算機の数が、局所変数Npより小さいか否かを検査する(ステップB18)。使用している物理計算機の数が局所変数Npより小さい場合(ステップB18:Yes)、表Tから局所変数Xに複写し、また、割り当て表Xで、列に仮想計算機名が設定されている行数を局所変数Npに代入する(ステップB19)。次いで、すべての物理計算機について処理をするためステップB12に進む。
【0049】
次に、資源使用量検査サブルーチンについて、図11を参照して説明する。なお、図11のフローチャートで示される各処理は、処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【0050】
引数で渡された物理計算機Ptと、引数で渡された一時割り当て表を参照し、引数で渡された物理計算機Ptに割り当てられている仮想計算機を決定する。この0個以上の仮想計算機と引数で渡された仮想計算機Vtの資源使用量を補助記憶装置2から取得する(ステップC1)。このとき、もっとも古い時刻の情報を取得するものとし、情報が無い仮想計算機の資源使用量は「0」とする。
【0051】
次いで、ステップC1の処理で取得した資源使用量の和を求める(ステップC2)。
【0052】
次いで、物理計算機資源量一覧42から、引数で渡された物理計算機の資源量を取得する(ステップC3)。
【0053】
次いで、ステップC1の処理で求めた過去の資源使用量の和が物理計算機の各資源量より大きいか否かを検査する(ステップC4)。1つでも、物理計算機の資源量以下でない場合は(ステップC4:No)、戻り値をNGとして(ステップC8)、本フローの処理を終了する。一方、物理計算機の資源量以下である場合は(ステップC4:Yes)、補助記憶装置2のすべての過去の資源使用量を検査したか否かを調べる(ステップC5)。すべての資源使用量が検査済みならば(ステップC5:Yes)、戻り値をOKとして終了する(ステップC7)。
【0054】
一方、すべての資源使用量が検査済みでなければ(ステップC5:No)、次の時刻の資源使用量を補助記憶装置2から取得し(ステップC6)、ステップC2の処理に移る。なお、取得する資源使用量は、ステップC1の処理と同様、引数で渡された物理計算機Ptと、引数で渡された物理計算機Ptに割り当てられている仮想計算機と、引数で渡された仮想計算機Vtの資源使用量である。引数で渡された物理計算機Ptに割り当てられている仮想計算機は、引数で渡された一時割り当て表により決定できる。
【0055】
以上のステップにより、図12に示す、物理計算機と仮想計算機の対応表が得られる。この表から、必要な物理計算機の数と、各物理計算機への仮想計算機の割り当て方がわかる。運用担当者は、現在の仮想計算機の割り当て方と、出力された割り当て方を比較して、必要な物理計算機の数が少なくてすむ等の理由で新しく出力された割り当て方を選ぶかどうかを決定することができる。
【0056】
また、以上のステップを1か月毎等、定期的に実行し、物理計算機への仮想計算機の割り当てを見直すことで、効率的な数の物理計算機で運用することが可能となる。
【0057】
以上、本実施形態の仮想計算機割り当て方法によれば、以下の効果を奏する。
【0058】
第1の効果は、負荷の高い仮想計算機と負荷の低い仮想計算機を、同じ物理計算機に割り当てできることである。これにより、各仮想計算機の最高負荷時の資源使用量だけを基に割り当て方を決める場合よりも、各仮想計算機をより少ない数の物理計算機で効率的に実行することができる。
【0059】
第2の効果は、経験者が勘と経験で推論し割り当てを行うよりも効率的に割り当てを行うことができることである。その結果、自動的、且つ、人手によらない運用が可能であり、人件費等のコストを抑えることができる。
【0060】
<変形例>
以上のように本発明の好適な実施形態について説明したが、本発明は、以上の実施形態に限定されるべきものではなく、特許請求の範囲に表現された思想および範囲を逸脱することなく、種々の変形、追加、および省略が当業者によって可能である。
【0061】
例えば、上述した本実施形態では、資源としてCPU使用率と主記憶使用量を使用したが、本発明はこれに限られず、例えば、磁気ディスク装置、ネットワーク装置等の他の資源使用量を追加することで、よりシステムに適合した割り当てを実現することができる。
【0062】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0063】
(付記1)複数の仮想計算機を少なくとも1以上の物理計算機に割り当てを行う仮想計算機割り当てシステムであって、前記各仮想計算機の資源使用量を所定時間ごとに計測する資源使用料計測手段と、前記各物理計算機の資源量の情報を記憶する記憶手段と、前記各仮想計算機の資源使用量の時刻ごとの和が前記記憶手段に記憶された前記物理計算機の資源量を超えず、且つ、前記物理計算機の数が最小になるように、前記複数の仮想計算機を前記物理計算機に割り当てる仮想計算機割り当て決定手段と、を備える仮想計算機割り当てシステム。
【0064】
(付記2)前記複数の仮想計算機を前記物理計算機に割り当てた結果を出力する出力手段を更に備える、付記1に記載の仮想計算機割り当てシステム。
【0065】
(付記3)前記仮想計算機の資源使用量は、CPUの使用率、及び記憶装置の使用量を含む、付記1又は付記2に記載の仮想計算機割り当てシステム。
【0066】
(付記4)複数の仮想計算機を少なくとも1以上の物理計算機に割り当てを行う仮想計算機割り当て方法であって、前記各仮想計算機の資源使用量を所定時間ごとに計測する段階と、前記各物理計算機の資源量の情報を記憶する段階と、前記各仮想計算機の資源使用量の時刻ごとの和が前記記憶手段に記憶された前記物理計算機の資源量を超えず、且つ、前記物理計算機の数が最小になるように、前記複数の仮想計算機を前記物理計算機に割り当てを決定する段階と、を備える仮想計算機割り当て方法。
【産業上の利用可能性】
【0067】
本発明は、例えば、仮想計算機を提供するサービス等であって、パターンが定型的で業務量が増えていくようなシステムの実行環境を管理、運用する分野で利用することができる。
【符号の説明】
【0068】
1…物理計算機、2…補助記憶装置、3…データ処理装置、4…記憶装置、5…出力装置5、11…資源使用量計測プログラム、31…仮想計算機割り当て決定プログラム、41…仮想計算機一覧、42…物理計算機資源量一覧、100…仮想計算機割り当てシステム、101…仮想計算機。

【特許請求の範囲】
【請求項1】
複数の仮想計算機を少なくとも1以上の物理計算機に割り当てを行う仮想計算機割り当てシステムであって、
前記各仮想計算機の資源使用量を所定時間ごとに計測する資源使用料計測手段と、
前記各物理計算機の資源量の情報を記憶する記憶手段と、
前記各仮想計算機の資源使用量の時刻ごとの和が前記記憶手段に記憶された前記物理計算機の資源量を超えず、且つ、前記物理計算機の数が最小になるように、前記複数の仮想計算機を前記物理計算機に割り当てる仮想計算機割り当て決定手段と、
を備える仮想計算機割り当てシステム。
【請求項2】
前記複数の仮想計算機を前記物理計算機に割り当てた結果を出力する出力手段を更に備える、請求項1に記載の仮想計算機割り当てシステム。
【請求項3】
前記仮想計算機の資源使用量は、CPUの使用率、及び記憶装置の使用量を含む、請求項1又は請求項2に記載の仮想計算機割り当てシステム。
【請求項4】
複数の仮想計算機を少なくとも1以上の物理計算機に割り当てを行う仮想計算機割り当て方法であって、
前記各仮想計算機の資源使用量を所定時間ごとに計測する段階と、
前記各物理計算機の資源量の情報を記憶する段階と、
前記各仮想計算機の資源使用量の時刻ごとの和が前記記憶手段に記憶された前記物理計算機の資源量を超えず、且つ、前記物理計算機の数が最小になるように、前記複数の仮想計算機を前記物理計算機に割り当てを決定する段階と、
を備える仮想計算機割り当て方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−194907(P2012−194907A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2011−59742(P2011−59742)
【出願日】平成23年3月17日(2011.3.17)
【出願人】(000004237)日本電気株式会社 (19,353)