(57)【要約】【課題】  仮想化ソフトウェアが仮想マシンを物理マシンへ割当てるときに物理マシンが備える物理コアや実メモリ量を超える仮想マシンを割当ててしまうと仮想マシンは使用可能な物理コアや実メモリが仮想化ソフトウェアから割当てられるまで待ち時間が生じ、処理のオーバヘッドとなってしまう。【解決手段】  仮想化ソフトウェアが仮想マシンを物理マシンへ割当てるときに物理マシンに残っている未割当の物理コアや実メモリの範囲で割当てることができる物理マシンへ仮想マシンを割当て、未割当の物理コアや実メモリが割当てを要求された仮想マシンの仕様に満たない場合は最も未割当量の多い物理マシンへ仮想マシンを割当てる。【選択図】  図１
2017058988.tif 000002
【特許請求の範囲】
【請求項１】
割当てる仮想マシンの仮想コア数と仮想メモリ量を含む仕様を受けとる入力部と、
物理マシンの使用されていない物理コア数と、使用されていない実メモリ量を求め、
受け取った仮想コア数が使用されていない物理コア数より小さく、受け取った仮想メモリ量が使用されていない実メモリ量より小さい物理マシンに要求のあった仮想マシンを割当てる処理部を備えることを特徴とする仮想マシンの割当てシステム。
【請求項２】
請求項１に記載の仮想マシンの割当てシステムにおいて、
各々の物理マシンについて、予め定められた過去一定期間の物理コア使用量と過去一定期間の実メモリ使用量を取得するデータ収集サーバを備え、
前記処理部は受け取った仮想コア数が使用されていない物理コア数より小さく、受け取った仮想メモリ量が使用されていない実メモリ量より小さい物理マシンが無いとき、
過去一定期間の物理コアと実メモリの空き容量が割当てる仮想マシンの仮想コアと仮想メモリの使用量より大きい物理マシンに要求のあった仮想マシンを割当てることを特徴とする仮想マシンの割当てシステム。
【請求項３】
請求項２に記載の仮想マシンの割当てシステムにおいて、
前記データ収集サーバは各々の物理マシンについて、予め定められた過去一定期間の物理コアのオーバヘッドと、予め定められた過去一定期間の実メモリのオーバヘッドを取得し、
前記処理部は、過去一定期間の物理コアと実メモリの空き容量が割当てる仮想マシンの仮想コアと仮想メモリの使用量より大きい物理マシンが無いとき、過去一定期間の物理コアのオーバヘッドと、過去一定期間の実メモリのオーバヘッドの和が最小の物理マシンに要求のあった仮想マシンを割当てることを特徴とする割当てシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理マシン上で動作している仮想化ソフトウェアが使用するCPUとメモリの負荷を基に、仮想マシンを構築する物理マシンを決定する技術に関する。
【背景技術】
【０００２】
特許文献１には複数の仮想マシンの各々を複数のサーバのいずれかで稼働させた場合の各時間における各仮想マシンのパフォーマンスを示す値の合計値が最大となるような、仮想マシンとサーバの組み合わせを算出することが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2005-115653
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、仮想マシンのパフォーマンスを基に仮想マシンを配置しているが、仮想化ソフトウェアが仮想マシンに物理リソースの分配状況を考慮していない。そのため、仮想化ソフトウェアによる物理リソースの分配の遅延が、仮想マシン上のパフォーマンスに正確に反映されてない場合があり、正確に仮想マシンのパフォーマンスの性能劣化を防ぐ仮想マシンの配置を決定できない可能性がある。
【０００５】
特に仮想化ソフトウェアが仮想マシンへCPUとメモリを割り当てるときに、物理マシンのCPUコア数やメモリ量よりも物理マシン上で動作している全ての仮想マシンのCPUコア数やメモリ量の総和が大きい場合、実際に仮想マシンへ物理コアや実メモリが割当てられるまでに待ち時間が発生するというようなオーバヘッドが発生する。
【課題を解決するための手段】
【０００６】
割当てる仮想マシンの仮想コア数と仮想メモリ量を含む仕様を受けとる入力部と、物理マシンの使用されていない物理コア数と、使用されていない実メモリ量を求め、受け取った仮想コア数が使用されていない物理コア数より小さく、受け取った仮想メモリ量が使用されていない実メモリ量より小さい物理マシンに要求のあった仮想マシンを割当てる処理部を備えるシステムにより解決される。より詳細な構成は実施例に開示されるであろう。
【発明の効果】
【０００７】
本発明によれば、仮想マシンが効率よく稼働できる物理マシンを選定することができる。
【図面の簡単な説明】
【０００８】
【図１】実施例におけるシステム構成図の例
【図２】実施例における仮想マシンCPU消費テーブルの例
【図３】実施例における仮想マシンメモリ消費量テーブルの例
【図４】実施例における仮想化ソフトウェアCPUオーバヘッド値テーブルの例
【図５】実施例における仮想化ソフトウェアメモリオーバヘッド値テーブルの例
【図６】実施例における仮想マシンリソーステーブルの例
【図７】実施例における物理マシンリソーステーブルの例
【図８】実施例における制御部の処理を示したフローチャートの例
【発明を実施するための形態】
【０００９】
本実施例では、仮想マシン初期配置決定プログラムが提示する物理マシンへの仮想マシンの配置を決定するシステムについて説明する。
【００１０】
図１は本発明の実施例におけるシステム構成図の例である。本実施例の処理システムは、物理マシン１００と、物理マシン１１０と、データ収集サーバ１２０と、制御サーバ１３０と、稼働データを保持するデータベース１４０と、仮想マシン構築部１５０はネットワークを介して接続されている。
【００１１】
物理マシン１００はＣＰＵ、主記憶装置を備え、これらの物理リソースを用いて仮想化ソフトウェア１０１を実行する。仮想化ソフトウェアの実行により仮想マシン１０２と、仮想マシン１０３を提供している。同様に物理マシン１１０はＣＰＵ、主記憶装置を備え、これらの物理リソースを用いてサーバ仮想化プログラム１１１を実行する。仮想化ソフトウェアの実行により仮想マシン１１２を提供している。物理マシン１００と物理マシン１１０は、それぞれストレージ１０４とストレージ１１３を備えている。
【００１２】
なお本実施例では物理マシンを２台、仮想マシンを３台としたが、物理マシンと仮想マシンの台数はこれに限定されるものではない。
【００１３】
制御サーバ１３０はＣＰＵと主記憶装置を備えた計算機で実現され、主記憶装置に格納されたプログラムモジュールの制御部１３１と入力部１３２をＣＰＵで実行する。入力部１３２は、ユーザからの物理マシンに配置する仮想マシンの要求リソースを受け取る。要求リソースはCPUのコア数と周波数と、メモリ容量である。制御部１３１は、入力部１３２からの入力情報とデータ収集サーバ１２０から取得したデータを元に仮想マシンの初期配置場所である物理マシンを決定する。
【００１４】
データ収集サーバ１２０はＣＰＵと主記憶装置を備えた計算機で実現され、主記憶装置に格納されたプログラムモジュールのリソースデータ取得部１２１と、仮想化ソフトウェアデータ取得部１２２と、定期データ取得部１２３をＣＰＵで実行する。リソースデータ取得部１２１は、全ての物理マシンと仮想マシン毎のそれぞれのCPUコア数と、1コアあたりの周波数と、メモリ量を取得する。仮想化ソフトウェアデータ取得部１２２は、仮想化ソフトウェア１０１が仮想マシン１０２や仮想マシン１０３へCPUとメモリを割り当てる際に発生するCPUとメモリのオーバヘッド値を取得する。物理マシンのCPUコア数やメモリ量よりも、その物理マシン上で動作している全ての仮想マシンのCPUコア数やメモリ量の総和が大きい場合、オーバコミット状態という。
【００１５】
このオーバコミット状態時に、仮想化ソフトウェア１０１は、各仮想マシンの処理状態により、仮想マシン１０３のCPUコア数を仮想マシン１０２へCPUコアを割り当てる。この時、仮想マシン１０３ではCPUコア数を割り当ててもらうまで待機するといった動作を行う。仮想化ソフトウェアデータ取得部１２２で取得するCPUのオーバヘッド値とは、この全ての仮想マシンに対するCPUコア数を割り当ててもらうまでの待機時間の総和である。
【００１６】
またオーバコミット状態時に、仮想化ソフトウェア１０１は、各仮想マシンの処理状態により、物理マシンのメモリ上に展開できない仮想マシン１０２の使用メモリをストレージ１０４に書き出すといった動作を行う。仮想化ソフトウェアデータ取得部で取得するメモリのオーバヘッド値とは、ストレージ１０４に書き出された全ての仮想マシンの使用メモリ量の総和である。仮想化ソフトウェアデータ取得部１２２は、仮想化ソフトウェア１０１だけでなく、全ての仮想化ソフトウェアに対してのCPUとメモリのオーバヘッド値を取得する。
【００１７】
定期データ取得部１２３は、任意の一定間隔でリソースデータ取得部１２１と仮想化ソフトウェアデータ取得部１２２を用いて取得したデータをデータベースに保存する。
【００１８】
データベース１４０は仮想マシンCPU消費量テーブル２００と、仮想マシン目オリ消費量３００と、仮想化ソフトウェアCPUオーバヘッド値テーブル４００と、仮想マシンリソーステーブル５００と、物理マシンリソーステーブル６００と、仮想化ソフトウェアメモリオーバヘッド値テーブルを備える。  仮想マシン構築サーバ１５０はＣＰＵ、主記憶装置を備えた計算機で実現され、制御部１３１が決定した物理マシンに対し、入力部１３２で入力されたスペックの仮想マシンを配置する。
【００１９】
本発明であるリソース状況を考慮した自動サーバ構築システムは、データ収集サーバ１２０と、制御サーバ１３０と、データベース１４０に相当するが、この形態に限定されるものではなく、これら３つを1つのサーバや複数のサーバに分けて、自動サーバ構築システムとしてもよい。
【００２０】
図２は実施例における仮想マシンCPU消費量テーブル２００の例である。仮想マシンCPU消費量テーブル２００は、仮想マシンNo８０１と、時刻８０２を備える。
【００２１】
仮想マシンNo８０１には、ネットワーク上に存在する全ての仮想マシンを識別する情報が格納される。時刻８０２には、リソースデータ取得部１２１により取得された仮想マシンのCPU消費量が格納される。時刻８０２はリソースデータ取得部１２１が情報を取得した時刻のことをいう。なお、ここでは時刻１から時刻１０００までとしているが、保持する時刻はこの限りではない。
【００２２】
図３は実施例における仮想マシンメモリ消費量テーブル３００の例である。仮想マシンメモリ消費量テーブル３００は、仮想マシンNo９０１と、時刻９０２を備える。
【００２３】
仮想マシンNo９０１には、ネットワーク上に存在する全ての仮想マシンを識別する情報が格納される。時刻９０２には、リソースデータ取得部１２１により取得した仮想マシンのメモリ消費量が格納される。時刻９０２はリソースデータ取得部１２１により情報を取得した時刻のことをいう。なお、ここでは時刻１から時刻１０００までとしているが、保持する時刻はこの限りではない。
【００２４】
図４は実施例における仮想化ソフトウェアCPUオーバヘッド値テーブル４００の構成図である。仮想化ソフトウェアCPUオーバヘッド値テーブル４００は、仮想化ソフトウェアNo１００１と、時刻１００２を備える。
【００２５】
CPUオーバヘッド値は仮想化ソフトウェアが物理CPUリソースを仮想マシンに割り当てる際に生じるオーバヘッド時間であり、このために生じた処理遅延時間としてもよい。
【００２６】
仮想化ソフトウェアNo１００１には、ネットワーク上に存在する全ての仮想化ソフトウェアを識別する情報が格納される。時刻１００２には、仮想化ソフトウェアデータ取得部１２２により取得した仮想化ソフトウェアのCPUオーバヘッド値が格納される。
【００２７】
時刻１００２は仮想化ソフトウェアデータ取得部１２２により情報を取得した時刻のことをいう。なお、ここでは時刻１から時刻１０００までとしているが、保持する時刻はこの限りではない。
【００２８】
図５は実施例における仮想化ソフトウェアメモリオーバヘッド値テーブル７００の例である。仮想化ソフトウェアメモリオーバヘッド値テーブル７００は、仮想化ソフトウェアNo１１０１と、時刻１１０２を備える。
メモリオーバヘッド値は、稼働中の仮想マシンのメモリリソースが物理マシンのメモリ上に書き込まれずにストレージに書き込まれた容量としてもよい。
【００２９】
仮想化ソフトウェアNo１１０１には、ネットワーク上に存在する全ての仮想化ソフトウェアを識別する情報が格納される。時刻１１０２には、仮想化ソフトウェアデータ取得部１２２により取得した仮想化ソフトウェアのメモリオーバヘッド値が格納される。時刻１１０２は仮想化ソフトウェアデータ取得部１２２により情報を取得した時刻のことをいう。なお、ここでは時刻１から時刻１０００までとしているが、保持する時刻はこの限りではない。
【００３０】
図６は実施例における仮想マシンリソーステーブル１２００の例である。仮想マシンリソーステーブル１２００は、仮想マシンNo１２０１と、割当CPUコア数１２０２と、割当CPU周波数１２０３と、割当メモリ量１２０４を備える。
【００３１】
仮想マシンNo１２０１には、ネットワーク上に存在する全ての仮想マシンを識別する情報が格納される。割当CPUコア数１２０２には、リソースデータ取得部１２１が取得した仮想マシンに割り当てたCPUコア数が格納される。割当CPU周波数には、リソースデータ取得部１２１が取得した仮想マシンに割り当てた1コアあたりの周波数が格納される。割当メモリ量１２０４には、リソースデータ取得部１２１が取得した仮想マシンに割り当てたメモリ量が格納される。
【００３２】
図７は実施例における物理マシンリソーステーブル１３００の例である。物理マシンリソーステーブル１３００は、物理マシンNo１３０１と、CPUコア数１３０２と、CPU周波数１３０３と、メモリ量１３０４を備える。
【００３３】
物理マシンNo１３０１には、ネットワーク上に存在する全ての仮想マシンを識別する情報が格納される。CPUコア数１３０２は、リソースデータ取得部１２１が取得した各物理マシンに搭載されたCPUコア数が格納される。CPU周波数１３０３は、リソースデータ取得部１２１が取得した各物理マシンに搭載された1コアあたりの周波数が格納される。メモリ量１３０４は、リソースデータ取得部１２１が取得した各物理マシンに搭載されたメモリ容量が格納される。
【００３４】
図８は、制御部１３１の動作を示したフローチャートである。図８のフローチャートに基づく動作は以下のとおりである。
ステップ１４０１：
物理マシンに仮想マシンを配置する時、制御部１３１は、ユーザが入力した仮想マシンのCPUコア数と、コア一つあたりの周波数と、メモリ量とを、入力部１３２を介して取得する。
ステップ１４０２：
制御部１３１は仮想マシンリソーステーブル５００と物理マシンリソーステーブル６００にアクセスし、全ての物理マシンのCPUコアとCPU周波数とメモリ量を取得し、残りCPUリソースと残りメモリリソースを計算する。
【００３５】
残りCPUリソースは、物理マシンに搭載されたCPUコア数１３０２とCPU周波数１３０３の積から、その物理マシンで動作している全ての仮想マシンの割当CPUコア数１２０２と割当CPU周波数１２０３の積を差し引いた値である。残りメモリ量は、物理マシンに搭載されたメモリ量１３０４から、その物理マシンで動作している全ての仮想マシンの割当メモリ量１２０４を差し引いた値である。
【００３６】
例えば、物理マシン１００の残りCPU数は、4(CPUコア数１３０２)×3.4(CPU周波数１３０３)-3(仮想マシン１０２の割当CPUコア数１２０２)×1.4(仮想マシン１０２の割当CPU周波数１２０３)-3(仮想マシン１０３の割当CPUコア数１２０２)×3.4(仮想マシン１０３の割当CPU周波数１２０３)=-0.8となる。物理マシン１００の残りメモリ量は、16(メモリ量１３０４)-6(仮想マシン１０２の割当メモリ量１２０４)-12(仮想マシン１０３の割当メモリ量１２０４)=-2となる。
【００３７】
制御部１３１は、ステップ１４０１で取得したリソース情報と、残りCPUリソースと、残りメモリリソースを用いて、数１を全て満たす物理マシンを探す。
【００３８】
数１の両方を満たす物理マシンが無い場合は少なくともどちらか一方の数を満たす物理マシンを割当てても良い。
【００３９】
【数１】
2017058988.tif 000003
【００４０】
上記数を全て満たす物理マシンが存在すれば、その物理マシンに仮想マシンを配置箇所として決定し、ステップ１４０５に進み終了する。満たさない場合は、ステップ１４０３に進む。
【００４１】
ステップ１４０３：
制御部１３１は、物理マシンリソーステーブルにアクセスし、全ての仮想マシン毎のCPUコア数と、CPU周波数と、メモリ量を取得する。また、仮想マシンCPU消費テーブル５００と仮想マシンメモリ消費テーブル６００にアクセスし、過去4週間以内で、各々の物理マシン上で動作している仮想マシンのCPU消費量とメモリ消費量を取得する。そして、制御部１３１は取得した物理マシンリソースと仮想マシンの消費量と、ステップ１４０１で取得したリソース情報を用いて、数２を全て満たす物理マシンを探す。
【００４２】
つまり、物理マシンが過去の一定時間内に使用可能であったＣＰＵ処理能力と、現在割り当てられている仮想マシンで実際に消費したＣＰＵ処理能力との差分を求め、求められた差分が新たに割当てる仮想マシンの最大消費ＣＰＵ処理能力を超えないかどうかを判断する。
【００４３】
メモリにおいても同様に過去の一定時間内に使用可能であったメモリ量と、現在割り当てられている仮想マシンで実際に使用されたメモリ量との差分を求め、求められた差分が新たに割当てる仮想マシンの最大使用メモリ量を超えないかどうかを判断する。
【００４４】
ＣＰＵ処理能力とメモリ使用量について上記条件を満たす物理マシンへ要求された仮想マシンを割当てる。
【００４５】
数２の両方を満たす物理マシンが無ければ少なくとも一方の数を満たす物理マシンを割当てても良い。
【００４６】
なお過去何週間のデータを取るかはユーザが任意に設定可能であり、この限りではない。
【００４７】
【数２】
2017058988.tif 000004
【００４８】
上記数を全て満たす物理マシンが存在すれば、その物理マシンに仮想マシンを配置箇所として決定し、ステップ１４０５に進み終了する。満たさない場合は、ステップ１４０４に進む。
【００４９】
ステップ１４０４：
制御部１３１は、仮想化ソフトウェアCPUオーバヘッド値テーブル４００と仮想化ソフトウェアメモリオーバヘッド値テーブル７００にアクセスし、過去4週間以内の全ての仮想化ソフトウェアに対するCPUとメモリのオーバヘッド値を取得する。取得した情報を用いて、全ての仮想化ソフトウェアそれぞれの総合のオーバヘッド値を数３にて算出する。そして、その総合のオーバヘッド値が最小の仮想化ソフトウェアを動かしている物理マシンを仮想マシンの配置箇所として決定する。
【００５０】
【数３】
2017058988.tif 000005
【００５１】
図８のフローチャートの具体例として、CPUコア数が2コア、CPU周波数が2GHz、およびメモリが4GBの仮想マシンの配置場所を決定する例を以下に示す。
ステップ１４０１で、配置する仮想マシンの情報であるCPUコア数が2コアとCPU周波数が2GHzとメモリが4GBを取得する。
【００５２】
ステップ１４０２にて、物理マシン１００の残りCPUリソースは-0.8、残りメモリリソースは-2となる。物理マシン１１０の残りCPUリソースは、6(CPUコア数１３０２)×3.4(CPU周波数１３０３)-7(仮想マシン１１２の割当CPUコア数１２０２)×3.4(仮想マシンの割当CPU周波数)=-3.4であり、残りメモリリソースは、8(メモリ量)-10(仮想マシン１１２の割当メモリ量１２０４)=-2となる。物理マシン１００と物理マシン１１０のそれぞれの残りCPUリソースが、配置する仮想マシンのCPUリソース2(CPUコア数)×2(CPU周波数)=4よりも小さく、また、物理マシン１００と物理マシン１１０のそれぞれの残りメモリリソースが、配置する仮想マシンのメモリ4よりも小さい。そのため、オーバコミットせずに仮想マシンを配置できないと判断し、ステップ１４０３に進む。
【００５３】
ステップ１４０３にて、数２のn=2とすると、数２を全て満たす物理マシンは存在しない。そのため、ステップ１４０４に進む。
【００５４】
ステップ１４０４にて、数３のn=2とA=1.5とすると、物理マシン１００のY=775であり、物理マシン１１０のY=725となり、オーバヘッドが低い物理マシン１１０を仮想マシンの配置箇所として決定する。
【符号の説明】
【００５５】
１００：物理マシン、１０１：仮想化ソフトウェア、１０２：仮想マシン、１０３：仮想マシン、１０４：ストレージ、１１０：物理マシン、１１１：仮想化ソフトウェア、１１２：仮想マシン、１１３：ストレージ、１２０：データ収集サーバ、１２１：リソースデータ取得部、１２２：仮想化ソフトウェアデータ取得部、１２３：定期データ取得部、１３０：制御サーバ、１３１：制御部、１３２：入力部、１４０：データベース、２００：仮想マシンCPU消費量テーブル、３００：仮想マシンメモリ消費量テーブル、４００：仮想化ソフトウェアCPUオーバヘッド値テーブル、５００：仮想マシンリソーステーブル、６００：物理マシンリソーステーブル：６００、仮想化ソフトウェアメモリオーバヘッド値テーブル
【図１】
2017058988.tif 000006
【図２】
2017058988.tif 000007
【図３】
2017058988.tif 000008
【図４】
2017058988.tif 000009
【図５】
2017058988.tif 000010
【図６】
2017058988.tif 000011
【図７】
2017058988.tif 000012
【図８】
2017058988.tif 000013