以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の負荷分散管理装置の例を示す図である。負荷分散管理装置1は、ネットワークを介して物理マシン2,3,4と通信可能である。物理マシン2,3,4は、CPUやRAMなどの物理的なリソースを用いて仮想マシンを動作させる。物理マシン2,3,4は、ハイパーバイザを実行してもよい。例えば、ハイパーバイザが、物理マシン2,3,4の物理的なリソースを仮想マシンに割り当て、物理マシン2,3,4上で仮想マシンを動作させてもよい。
負荷分散管理装置1は、物理マシン2,3,4に対する仮想マシンの配置を管理することで、物理マシン2,3,4の負荷を分散させる。負荷分散管理装置1は、記憶部1aおよび演算部1bを有する。
記憶部1aは、RAMなどの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部1bは、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部1aは、物理マシン2,3,4に配置済みである既存の仮想マシン2a,2b,3a,3b,4a,4bそれぞれの利用形態に関する第1の情報を記憶する。既存の仮想マシン(既存仮想マシン)とは、現時点よりも前に物理マシン2,3,4上で動作した実績のある仮想マシンである。
仮想マシン2a,2b,3a,3b,4a,4bそれぞれの利用形態に関する第1の情報は、仮想マシン2a,2b,3a,3b,4a,4bがどのように利用されているかを示す情報である。第1の情報は、例えば仮想マシン2a,2b,3a,3b,4a,4bそれぞれに関する次のような情報を含む。(1)スペック(割り当てられたリソース量)の情報。(2)利用されるソフトウェア(OSやミドルウェアなどを含む)の情報。(3)主な用途(例えば、GUI(Graphical User Interface)提供、業務アプリケーション実行、または、データベース管理など)の情報。(4)接続するネットワークの数。
記憶部1aは、仮想マシン2a,2b,3a,3b,4a,4bそれぞれの過去の負荷状況を示す履歴情報を記憶する。履歴情報は、仮想マシン2a,2b,3a,3b,4a,4bそれぞれによるリソース(物理マシンが備えるCPUやRAMなど)の使用率や通信量などで表される負荷の情報を含む。
演算部1bは、物理マシン2,3,4の何れかに仮想マシンを新たに配置する際に、記憶部1aに記憶された第1の情報と、配置対象の仮想マシン(新規仮想マシン)の利用形態に関する第2の情報とに基づいて既存仮想マシンを選択する。演算部1bは、既存仮想マシンを1つ選択してもよいし、複数選択してもよい。
配置対象の仮想マシンの利用形態に関する第2の情報は、新規仮想マシンがどのように利用されるかを示す情報である。例えば、第2の情報は、第1の情報の例と同様に、スペック、利用されるソフトウェア、主な用途および接続するネットワーク数などの情報を含み得る。例えば、演算部1bは、新規仮想マシンのスペックや利用されるソフトウェアなどの情報5を取得する。情報5の内容は、例えば、新規仮想マシンの配置要求とともにユーザによって指定される。演算部1bは、取得した情報5に応じて、新規仮想マシンの利用形態に関する第2の情報を特定する。
演算部1bは、仮想マシン2a,2b,3a,3b,4a,4bそれぞれの第1の情報と第2の情報とを対比することで、仮想マシン2a,2b,3a,3b,4a,4bの少なくとも何れかを選択する。例えば、演算部1bは、新規仮想マシンと上記(1)〜(4)の情報が一致あるいは近似する既存仮想マシンを選択する。
より具体的には、演算部1bは、上記(1)〜(4)の各情報の全部または一部が新規仮想マシンと一致する既存仮想マシンを選択することが考えられる。あるいは、演算部1bは、上記(1)〜(4)の各情報の一致の度合い(差が小さい程、一致の度合いを大きくする)を求め、上記(1)〜(4)それぞれの情報の一致の度合いの合計が最大となる既存仮想マシンを選択してもよい。(2)および(3)の情報については、利用されるソフトウェアの機能の類似性や用途の類似性に応じて、ソフトウェアの機能同士、あるいは仮想マシンの用途同士の一致の度合いを定めた情報を記憶部1aに予め格納しておいてもよい。そうすれば、演算部1bは、記憶部1aに記憶された当該情報を参照して、(2)や(3)の項目の一致の度合いを決定できる。
演算部1bは、選択した既存仮想マシンの過去の負荷状況を示す履歴情報を記憶部1aから取得する。演算部1bは、当該履歴情報を用いて、新規仮想マシンの配置先候補の物理マシンの負荷を予測する。予測対象の期間(例えば、1週間や1カ月など)は予め定められる。
例えば、演算部1bは、既存仮想マシンとして仮想マシン3aを選択しているとする。演算部1bは、仮想マシン3aの過去の負荷状況を示す履歴情報を用いて、物理マシン2,3,4に新規仮想マシンを配置した場合の未来の負荷を予測する。例えば、演算部1bは、仮想マシン3aの過去の負荷を新規仮想マシンの負荷とみなして、将来の1週間分の物理マシン2,3,4の負荷を予測してもよい。あるいは、演算部1bは、仮想マシン3aと新規仮想マシンとが同じユーザ(または、テナント)によって利用されるのであれば、仮想マシン3aの負荷を、新規仮想マシンおよび仮想マシン3aで等分した負荷を、新規仮想マシンの負荷としてもよい。
演算部1bは、仮想マシン2a,2bの直近の過去1週間の負荷と、仮想マシン3aの直近の過去1週間の負荷とを、曜日/時刻毎に加算することで、新規仮想マシンを物理マシン2に配置した場合の、物理マシン2の未来の同曜日/時刻毎の負荷を算出する。グラフ6は、物理マシン2の未来(例えば、次の1週間)の負荷の予測結果を例示するグラフである。
演算部1bは、仮想マシン3a,3bの直近の過去1週間の負荷と、仮想マシン3aの直近の過去1週間の負荷とを、曜日/時刻毎に加算することで、新規仮想マシンを物理マシン3に配置した場合の、物理マシン3の未来の同曜日/時刻毎の負荷を算出する。グラフ6aは、物理マシン3の未来(例えば、次の1週間)の負荷の予測結果を例示するグラフである。
演算部1bは、仮想マシン4a,4bの直近の過去1週間の負荷と、仮想マシン3aの直近の過去1週間の負荷とを、曜日/時刻毎に加算することで、新規仮想マシンを物理マシン4に配置した場合の、物理マシン4の未来の同曜日/時刻毎の負荷を算出する。グラフ6bは、物理マシン4の未来(例えば、次の1週間)の負荷の予測結果を例示するグラフである。
あるいは、演算部1bは、既存仮想マシンとして、仮想マシン3a,4aを選択したとすれば、仮想マシン3a,4aの過去の負荷状況を示す履歴情報を用いて、物理マシン2,3,4に新規仮想マシンを配置した場合の未来の負荷を予測し得る。例えば、演算部1bは、仮想マシン3a,4aと新規仮想マシンとが同じユーザ(または、テナント)によって利用されるのであれば、過去の各時点における仮想マシン3a,4aの負荷の合計値を、仮想マシン3a,4aの数+1(“+1”は新規仮想マシン分)で割った値を、新規仮想マシンの同曜日/時刻の未来の負荷とみなして、将来の負荷を予測してもよい。あるいは、演算部1bは、より安全に、仮想マシン3a,4aの過去の各時点における負荷のうちの大きい方の負荷を、新規仮想マシンの同曜日/時刻の未来の負荷とみなして、将来の負荷を予測してもよい。
演算部1bは、予測結果に応じて新規仮想マシンの配置先の物理マシンを決定する。例えば、物理マシン2,3,4それぞれの負荷に対して閾値を設け、予測した期間において負荷が閾値に達しない物理マシンを、配置先の物理マシンと決定する。グラフ6,6a,6bの例によれば、グラフ6,6aは、予測対象期間内に負荷が閾値以上になるときがある。一方、グラフ6bは予測対象期間内に負荷が閾値以上になるときがない。よって、演算部1bは、新規仮想マシンの配置先を物理マシン4と決定する。演算部1bは、決定した物理マシンに対して、新規仮想マシンの実行開始を指示する。
予測対象期間内に負荷が閾値以上になるときがない物理マシンが複数ある場合もある。その場合、演算部1bは、当該複数の物理マシン(負荷が閾値以上になるときがない物理マシン)のうち、予測対象期間内のピーク時の負荷(最大負荷)が最小である物理マシンを選択してもよい。あるいは、演算部1bは、当該複数の物理マシンのうち、予測対象期間内の負荷の平均値が最小である物理マシンを選択してもよい。
負荷分散管理装置1によれば、物理マシン2,3,4の何れかに仮想マシンを新たに配置する際に、当該仮想マシンの利用形態に関する情報と、物理マシン2,3,4に配置済みである既存の仮想マシン2a,2b,3a,3b,4a,4b(既存仮想マシン)それぞれの利用形態に関する情報とに基づいて既存仮想マシンが選択される。選択された既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、新規仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて仮想マシンの配置先の物理マシンを決定する。これにより、配置先の物理マシンを適切に選択できる。
ここで、物理マシン2,3,4に新規仮想マシンを配置するとき、新規仮想マシンについては過去の負荷情報が存在しないため、既存の方法により当該新規仮想マシンの負荷を予測することはできない。そこで、新規仮想マシンの配置先の物理マシンをどのようにして決定するかが問題となる。
例えば、新しい仮想マシンの配置先の物理マシンを、ラウンドロビンで決定したり、配置時点で負荷が最小のものと決定したりすることも考えられる。しかし、新しい仮想マシンを配置した物理マシンの負荷が、配置当初は許容値以下であっても、それ以降も許容値以下であるとは限らない。新たに配置した仮想マシンの負荷が想定外に高まると、物理マシンの負荷が過大になるおそれがある。負荷が許容値を超えると、物理マシンおよび物理マシン上の仮想マシンの動作に悪影響を及ぼすおそれがある。また、動作への悪影響を回避/改善するために、仮想マシンを別の物理マシンに移動させるための作業や処理負担が発生し得る。
これに対し、負荷分散管理装置1は、配置済みの仮想マシン2a,2b,3a,3b,4a,4bのうち、新規仮想マシンと利用形態の類似する仮想マシンの負荷の履歴を利用することで、物理マシン2,3,4の負荷を精度良く予測できる。新規仮想マシンは、利用形態が類似する既存仮想マシンと同様の用途で利用される可能性が高く、新規仮想マシンの負荷も既存仮想マシンの負荷との関係性が強いと考えられるからである。
特に、同じユーザ(または、テナント)が利用する既存仮想マシンを選択する場合、当該既存仮想マシンの負荷を、既存仮想マシンと新規仮想マシンとに分配するように新規仮想マシンの負荷を予測することで、新規仮想マシンの負荷の予測の精度を向上し得る。既存仮想マシンと新規仮想マシンとが同じユーザ(または、テナント)により同様の用途で利用される可能性が高い場合、選択された既存仮想マシンの負荷の一部が、新規仮想マシンに割り振られる可能性が高いと考えられるからである。
負荷分散管理装置1は、当該予測結果に応じて新規仮想マシンの配置先の物理マシンを決定することで、ラウンドロビンや配置時点の物理マシン2,3,4の負荷で新規仮想マシンの配置先を決定するよりも、配置先の物理マシンを適切に選択できる。すなわち、新規仮想マシンを配置した物理マシンの負荷が将来において許容値を超過する可能性を軽減できる。また、仮想マシンを別の物理マシンに移動させなければならない状況が発生する可能性を軽減でき、運用の効率化を図れる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、管理サーバ100、仮想化管理サーバ200、物理マシン300,300a,300bおよびストレージプール400を有する。管理サーバ100、仮想化管理サーバ200、物理マシン300,300a,300bおよびストレージプール400は、ネットワーク10に接続されている。
ネットワーク10は、例えば、データセンタ内に敷設されたLAN(Local Area Network)である。ネットワーク10は、ネットワーク20に接続されている。ネットワーク20は、例えば、インターネットやWAN(Wide Area Network)などの広域ネットワークである。ネットワーク20には、クライアント21,22が接続されている。クライアント21,22は、ユーザが利用するクライアントコンピュータである。
ユーザは、クライアント21,22を操作して、物理マシン300,300a,300b上で動作する仮想マシンを利用できる。すなわち、ユーザは、サーバコンピュータ(物理マシン)やストレージ装置を自身で管理しなくても、データセンタに設けられたサーバコンピュータやストレージ装置が備えるリソースを利用できる。このようなコンピュータの利用形態は、クラウドコンピューティングと呼ばれることがある。データセンタ内のリソースを借り受けているユーザを、テナントと称することがある。
管理サーバ100は、物理マシン300,300a,300bに対する仮想マシンの配置を管理するサーバコンピュータである。管理サーバ100は、物理マシン300,300a,300bの何れかに新規仮想マシンを配置する際に、物理マシン300,300a,300bの未来の負荷を予測し、予測結果に応じて新規仮想マシンの配置先の物理マシンを決定する。管理サーバ100は、第1の実施の形態の負荷分散管理装置1の一例である。
仮想化管理サーバ200は、物理マシン300,300a,300bの負荷の情報を収集し、管理サーバ100に提供する。ただし、管理サーバ100は、物理マシン300,300a,300bから負荷の情報を直接収集してもよい。その場合、仮想化管理サーバ200は省略されてもよい。
物理マシン300,300a,300bは、複数の仮想マシンを実行可能なサーバコンピュータである。物理マシン300,300a,300bは、ハイパーバイザを実行する。物理マシン300,300a,300bそれぞれのハイパーバイザは、物理マシン300,300a,300bが備える物理的なリソースを用いて仮想マシンを動作させる。なお、仮想マシンをVM(Virtual Machine)と略記することがある。
ストレージプール400は、HDDを複数搭載するストレージ装置である。ストレージプール400に含まれるHDDは、各仮想マシンの補助記憶装置として用いられる。以下の説明では、ストレージプール400に含まれるHDDの1つの集合体を指して、ストレージと称する。ストレージプール400は、複数のストレージを有する。なお、ストレージプール400は、HDDに代えて、あるいは、HDDと併せて、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を有してもよい。
図3は、管理サーバのハードウェア例を示す図である。管理サーバ100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、読み取り装置106および通信インタフェース107を有する。各ユニットは管理サーバ100のバスに接続されている。仮想化管理サーバ200、物理マシン300,300a,300bおよびクライアント21,22も管理サーバ100と同様のユニットを用いて実現できる。
プロセッサ101は、管理サーバ100の情報処理を制御する。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、管理サーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、管理サーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。管理サーバ100は、フラッシュメモリやSSDなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、管理サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部105は、管理サーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
読み取り装置106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク10を介して他の装置と通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
図4は、仮想マシンの例を示す図である。物理マシン300は、ハードウェア層310、ハイパーバイザ320および仮想マシン330,340,350を含む。
ハードウェア層310は、物理マシン300が備えるCPU(以下に示す仮想CPUと区別するために物理CPUと称することがある)、RAMおよび通信インタフェースなどを含む物理的なリソースの集合である。
ハイパーバイザ320は、ハードウェア層310のリソースを用いて、仮想マシンを動作させる。ハイパーバイザ320は、物理CPUの処理能力やRAMの記憶領域を演算のリソースとして仮想マシン330,340,350に割り当てる。ハイパーバイザ320は、各仮想マシンがハードウェア層のリソースを共用できるように、仮想マシン330,340,350からのハードウェア層310へのアクセスを調停する。ハイパーバイザ320は、仮想マシンモニタ(VMM:Virtual Machine Monitor)と呼ばれることもある。
ここで、ハイパーバイザ320が各仮想マシンに割り当てる物理CPUの処理能力の単位を仮想CPUと呼ぶことがある。例えば、仮想CPUは、物理CPUを利用可能な時間を複数のタイムスライスに時分割した場合のタイムスライスに対応させることができる。例えば、1つの仮想CPUは、物理CPUの利用可能時間において仮想マシンの処理のために周期的に割り当てられる1つのタイムスライス(当該仮想マシンに対して周期的に割り当てられる時間の集合)に対応する。ハイパーバイザ320は、各仮想マシンに割り当てられた仮想CPUを用いて、各仮想マシンの処理を順番に実行する。なお、1つの仮想CPUに複数のタイムスライスを対応させてもよい。
仮想CPUの割当量は、仮想CPUの個数で表せる。例えば、1つのタイムスライスを仮想マシン330に割り当てるなら、仮想マシン330の仮想CPU数は1である。2つのタイムスライスを仮想マシン330に割り当てるなら、仮想マシン330の仮想CPU数は2である。
また、ある物理マシン上における1仮想CPUあたりのクロック数は、物理CPUのクロック数の合計(クロック数×物理CPUのコア数×物理CPU数)を当該物理マシン上の仮想CPU数の合計で割った値となる。例えば、3GHzのクロック数で動作するコアを4つもつ物理CPUを2つ搭載した物理マシンにおいて、16個の仮想CPUを実現する場合、1仮想CPU当たりのクロック数は、(3GHz×4×2)/16=1.5GHzとなる。
ハイパーバイザ320は、物理マシン300が有するRAMの記憶領域(メモリ領域)を論理的に分割して、仮想マシン330,340,350に割り当てる。RAMの割当量はGB(Giga Bytes)などメモリ領域のサイズで表せる。
ハイパーバイザ320は、ストレージプール400が有する複数のストレージの記憶領域(HDD領域)を論理的に分割して、仮想マシン330,340,350に割り当てる。ストレージの割当量はGBなどHDD領域のサイズで表せる。ここで、ストレージプール400は、ストレージ410,420,430を有する。例えば、ハイパーバイザ320は、ストレージ410の一部のHDD領域を仮想マシン330に割り当てる。
仮想マシン330,340,350は、自身に割り当てられたリソースを用いて、それぞれ独立にOSを実行する。仮想マシン330,340,350は、他の仮想マシンと同一のOSを実行することもできるし、他の仮想マシンとは異なるOSを実行することもできる。
なお、物理マシン300a,300bも同様にして仮想マシンを実行する。また、以下の説明において、物理マシン300,300a,300bが備えるハードウェア(仮想マシンに割り当て可能な物理CPUやメモリなど)の性能は同一とする。ただし、物理マシン300,300a,300bが備えるハードウェアの性能は異なっていてもよい。
図5は、管理サーバの機能例を示す図である。管理サーバ100は、記憶部110、監視部120、選択部130および配置部140を有する。記憶部110は、RAM102やHDD103の記憶領域を用いて実現できる。監視部120、選択部130および配置部140は、プロセッサ101がRAM102に記憶されたプログラムを実行することで実現され得る。
記憶部110は、物理マシン300,300a,300bおよび物理マシン300,300a,300bに配置された複数の仮想マシンの管理情報を記憶する。管理情報は、物理マシンに対する仮想マシンの割当状況や仮想マシンに対するストレージの割当状況を示す情報を含む。管理情報は、物理マシンの負荷を示す情報、ストレージの負荷を示す情報および各仮想マシンの負荷を示す情報などを含む。
記憶部110は、各仮想マシンの利用形態に関する情報を記憶する。利用形態に関する情報は、例えば、仮想マシンに割り当てられた仮想CPU数、仮想CPUのクロック数、メモリ容量、HDD容量(ディスク容量)および接続するネットワークの数、利用されるOSやミドルウェア(MW:Middle Ware)などのソフトウェアの情報を含む。
監視部120は、物理マシン300,300a,300b、各仮想マシンおよびストレージの負荷の情報を、仮想化管理サーバ200から定期的に取得し、記憶部110に格納する。なお、監視部120は、物理マシン300,300a,300b、各仮想マシンおよびストレージの負荷の情報を、物理マシン300,300a,300bおよびストレージプール400から直接取得してもよい。
選択部130は、新たな仮想マシン(新規仮想マシン)の配置要求をクライアント21,22から受け付ける。配置要求は、新規仮想マシンの利用形態に関する情報を含む。選択部130は、受け付けた配置要求と、記憶部110に記憶された各仮想マシンの利用形態に関する情報とに基づいて、新規仮想マシンと利用形態の類似する既存仮想マシンを選択する。
選択部130は、選択した既存仮想マシンの過去の負荷の情報を記憶部110から取得する。選択部130は、取得した負荷の情報を用いて新規仮想マシンの配置先候補である各物理マシンの未来の所定期間における負荷を予測する。所定期間(予測対象期間)としては、1週間や1カ月間など、仮想マシンの負荷に周期的な特徴が現れ得る期間が考えられる。例えば、システムにおいて、1週間を周期として仮想マシンの負荷が変動する傾向があれば、予測対象期間を1週間とすることが考えられる。あるいは、1カ月を周期として仮想マシンの負荷が変動する傾向があれば、予測対象期間を1カ月とすることが考えられる。
選択部130は、各物理マシンの未来の負荷の予測結果に応じて、新規仮想マシンの配置先の物理マシンを決定する。具体的には、選択部130は、予測対象期間の間、予測した負荷が、予め定められた閾値以上にならない物理マシンを、新規仮想マシンの配置先の物理マシンと決定する。
配置部140は、選択部130により新規仮想マシンの配置先として決定された物理マシンに、当該新規仮想マシンを配置する。具体的には、配置部140は、決定した物理マシンのハイパーバイザに、新規仮想マシンの起動を指示する。すると、当該物理マシンのハイパーバイザは、新規仮想マシンの起動を開始する。
図6は、物理マシン管理テーブルの例を示す図である。物理マシン管理テーブル111は、記憶部110に格納される。物理マシン管理テーブル111は、物理マシン名、CPU使用量、NW(NetWork)使用量および動作中VM名の項目を含む。
物理マシン名の項目には、物理マシンの名称(識別情報)が登録される。CPU使用量の項目には、物理マシンが有する物理CPUの使用量が百分率で登録される。NW使用量の項目には、物理マシンが有する通信インタフェースの使用量が登録される。通信インタフェースの使用量は、単位時間当たりの送受信データ量で表される。例えば、通信インタフェースの使用量をMB(Mega-Bytes)/s(second)(メガバイト毎秒)で表す。動作中VM名の項目には、物理マシンで動作している仮想マシンの名称(識別情報)が登録される。
例えば、物理マシン管理テーブル111には、物理マシン名が“SV1”、CPU使用量が“80%”、NW使用量が“550MB/s”、動作中VM名が“userA−vm1,userB−vm1,userC−vm1”という情報が登録される。
これは、物理マシン名“SV1”で示される物理マシンの物理CPUの使用量が80%、通信インタフェースの使用量が550MB/sであることを示す。また、当該物理マシン上で、VM名“userA−vm1,userB−vm1,userC−vm1”で示される3つの仮想マシンが動作中であることを示す。
ここで、“SV1”は、物理マシン300の物理マシン名である。“SV2”は、物理マシン300aの物理マシン名である。“SV3”は、物理マシン300bの物理マシン名である。“userA−vm1”は、仮想マシン330のVM名である。“userB−vm1”は、仮想マシン340のVM名である。“userC−vm1”は、仮想マシン350のVM名である。
図7は、ストレージ管理テーブルの例を示す図である。ストレージ管理テーブル112は、記憶部110に格納される。ストレージ管理テーブル112は、ストレージ名、ストレージアクセス量およびストレージ使用中VM名の項目を含む。
ストレージ名の項目には、ストレージの名称(識別情報)が登録される。ストレージアクセス量の項目には、ストレージに対して発生した単位時間当たりの読み出しデータ量および書き込みデータ量の合計が登録される。例えば、ストレージアクセス量をMB/sで表す。ストレージ使用中VM名の項目には、ストレージを使用している仮想マシンの名称(識別情報)が登録される。
例えば、ストレージ管理テーブル112には、ストレージ名が“STG1”、ストレージアクセス量が“300MB/s”、ストレージ使用中VM名が“userA−vm1,userB−vm1,userC−vm1,userD−vm1”という情報が登録される。
これは、ストレージ名“STG1”で示されるストレージにおけるストレージアクセス量が300MB/sであることを示す。また、VM名“userA−vm1,userB−vm1,userC−vm1,userD−vm1”で示される4つの仮想マシンが、当該ストレージを使用していることを示す。
ここで、“STG1”は、ストレージ410のストレージ名である。“STG2”は、ストレージ420のストレージ名である。“STG3”は、ストレージ430のストレージ名である。
図8は、閾値テーブルの例を示す図である。閾値テーブル113は、記憶部110に格納される。閾値テーブル113は、負荷種別および閾値の項目を含む。負荷種別の項目には、計測される負荷の種別を示す情報が登録される。閾値の項目には、当該負荷の種別に対応する閾値が登録される。
例えば、閾値テーブル113には、負荷種別が“CPU使用量”、閾値が“80%”という情報が登録される。これは、1つの物理マシンについて、物理CPUの使用量の閾値が80%であることを示す。すなわち、1つの物理マシンにおける物理CPUの使用量として80%未満が許容値であり、80%以上が上限超過ということになる。
また、閾値テーブル113には、負荷種別が“NW使用量”、閾値が“1000MB/s”という情報が登録される。これは、1つの物理マシンについて、通信インタフェースの使用量の閾値が1000MB/sであることを示す。すなわち、1つの物理マシンにおける通信インタフェースの使用量として1000MB/s未満が許容値であり、1000MB/s以上が上限超過ということになる。
また、閾値テーブル113には、負荷種別が“ストレージアクセス量”、閾値が“320MB/s”という情報が登録される。これは、1つのストレージについて、アクセス量の閾値が320MB/sであることを示す。すなわち、1つのストレージにおけるアクセス量として、320MB/s未満が許容値であり、320MB以上が上限超過ということになる。
図9は、VM管理テーブルの例を示す図である。VM管理テーブル114は、記憶部110に格納される。VM管理テーブル114は、テナント名、VM名、VMタイプおよび作成日時の項目を含む。
テナント名の項目には、仮想マシンを利用しているテナントの名称(識別情報)が登録される。VM名の項目には、VMの識別情報が登録される。VMタイプの項目には、仮想マシンの利用形態の種別(VMタイプ)を示す情報が登録される。仮想マシンのタイプは、例えば、仮想CPU数、仮想CPUのクロック数、メモリ容量、ディスク容量などを含む。作成日時の項目には、仮想マシンが作成された日時(仮想マシンの利用が開始された日時)が登録される。
例えば、VM管理テーブル114には、テナント名が“userA”、VM名が“userA−vm1”、VMタイプが“image−a”、作成日時が“2014/06/01 0:00”という情報が登録されている。
これは、VM名“userA−vm1”で示される仮想マシン330がテナント名“userA”で示されるテナントにより利用されていること、仮想マシン330のVMタイプが“image−a”で示されるVMタイプであることを示す。また、仮想マシン330が2014年6月1日0時00分に作成されたことを示す。
図10は、負荷履歴テーブルの例を示す図である。負荷履歴テーブル115は、記憶部110に格納される複数の負荷履歴テーブルのうちの1つである。負荷履歴テーブル115は、VM名“userA−vm1”で示される仮想マシンに対応する負荷履歴テーブルである。記憶部110は、他の仮想マシンに関する負荷履歴テーブルも記憶する。記憶部110は、仮想マシン毎の負荷履歴テーブルを記憶する。負荷履歴テーブル115は、日付、時刻、CPU使用量、NW使用量およびストレージアクセス量の項目を含む。
日付の項目は、負荷を取得した日付が登録される。時刻の項目には、負荷を取得した時刻が登録される。CPU使用量の項目には、仮想マシンによる物理CPUの使用量が百分率で登録される。NW使用量の項目には、当該仮想マシンによる通信ネットワークの使用量が登録される。ストレージアクセス量の項目には、当該仮想マシンによるストレージアクセス量が登録される。
例えば、負荷履歴テーブル115には、日付が“2014/7/1”、時刻が“00:00:00”、CPU使用量が“20%”、NW使用量が“60MB/s”、ストレージアクセス量が“30MB/s”という情報が登録される。
これは、VM名“userA−vm1”で示される仮想マシン330が、2014年7月1日午前0時0分0秒において、物理CPUを20%分使用していたことを示す。また、仮想マシン330が、同時刻において、物理マシン300の通信インタフェースを介して60MB/sでデータを送受信していたこと、ストレージ410に対して30MB/sでデータアクセスを行っていたことを示す。
図11は、VMタイプテーブルの例を示す図である。VMタイプテーブル116は、記憶部110に格納される。VMタイプテーブル116は、VMタイプ、スペック、OS、MW(Middle Ware)および負荷分散の項目を含む。
VMタイプの項目には、VMタイプが登録される。スペックの項目には、仮想マシンおよび当該仮想マシンが利用するストレージなどに関する情報が登録される。具体的には、スペックとして、仮想CPU数、クロック数、メモリ容量、ディスク容量および接続NW数が登録される。仮想CPU数は、仮想マシンに割り当てられる仮想CPUの数である。クロック数は、仮想CPUの動作周波数である。メモリ容量は、仮想マシンに割り当てられるRAMの容量である。ディスク容量は、仮想マシンに割り当てられるストレージの記憶領域の容量である。接続NW数は、仮想マシンが接続するネットワークの数である。
OSの項目には、仮想マシンで利用されるOSの種別(または、OSの名称)が登録される。MWの項目には、仮想マシンで利用されるMWの種別(または、MWの名称)が登録される。負荷分散の項目には、負荷分散構成の利用の有無が登録される。
例えば、VMタイプテーブル116には、VMタイプが“image−a”、仮想CPU数が“2”、クロック数が“2GHz”、メモリ容量が“2GB”、ディスク容量が“50GB”、接続NW数が“2”、OSが“OS−W”、MWが“MW1”、負荷分散が“あり”という情報が登録されている。
これは、VMタイプ“image−a”の仮想マシンは、クロック数2GHzの仮想CPUを2つ割り当てられており、メモリ容量が2GB、ディスク容量が50GB、接続するネットワーク数が2であることを示す。また、同仮想マシンは、OSとしてOS−Wを、MWとしてMW1を利用し、負荷分散構成を利用していることを示す。
VMタイプで識別される項目の一例として、仮想マシンのスペック、利用OS、利用MWおよび負荷分散構成の利用有無を挙げたが、例示した項目に代えて、または例示した項目に加えて、他の項目を識別可能にすることも考えられる。例えば、該当の仮想マシンがWeb3階層のシステムのうちの、Web層、AP層またはDB層の何れで使用されるものであるかをVMタイプで識別することも考えられる。また、例えば、ファイアウォールの冗長構成の利用の有無をVMタイプで識別することも考えられる。
次に、管理サーバ100による具体的な処理手順を説明する。以下の説明では、新規仮想マシンを新規VM、既存仮想マシンを既存VMと表記することがある(特に図中)。
図12は、負荷収集処理の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
(S101)監視部120は、スケジュールされたタイミング(例えば、10秒、30秒または1分などの周期)で、物理マシン300,300a,300bの負荷の情報(物理CPU使用量およびNW使用量)を収集する。監視部120は、ストレージ410,420,430の負荷の情報(ストレージアクセス量)を収集する。監視部120は、複数の既存仮想マシンそれぞれの負荷の情報(物理CPU使用量、NW使用量およびストレージアクセス量)を収集する。監視部120は、負荷の情報を、仮想化管理サーバ200を介して取得してもよいし、物理マシン300,300a,300bおよびストレージプール400から直接取得してもよい。
(S102)監視部120は、物理マシン300,300a,300bの負荷の情報を物理マシン管理テーブル111に保存する(CPU使用量およびNW使用量の項目の登録値を上書きする)。監視部120は、ストレージ410,420,430の負荷の情報をストレージ管理テーブル112に保存する(ストレージアクセス量の項目の登録値を上書きする)。
(S103)監視部120は、各既存仮想マシンの負荷の情報を、既存仮想マシン毎の負荷履歴テーブルに保存する。例えば、VM名“userA−vm1”の仮想マシンの負荷は、負荷を収集した時刻に対応付けて、負荷履歴テーブル115に保存される。そして、処理をステップS101に進める(次の収集タイミングまで待機する)。
このようにして、管理サーバ100は各既存仮想マシンの負荷の情報を定期的に収集し、保存することで、各既存仮想マシンの負荷の履歴情報を管理する。管理サーバ100は、新規仮想マシンの配置要求を受け付けると、各既存仮想マシンの負荷の履歴情報を用いて、新規仮想マシンの配置先候補の物理マシンの未来の負荷を予測し、予測結果に応じて新規仮想マシンの配置先の物理マシンを決定する。
図13は、VM配置処理の例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(S1)選択部130は、新規仮想マシンの配置要求を、クライアント21から受け付ける。新規仮想マシンの配置要求には、新規仮想マシンのVMタイプの情報が含まれる。
(S2)選択部130は、複数の物理マシンの中から、新規仮想マシンの配置先とする物理マシンを選択する。物理マシンの選択処理の詳細については後述する。
(S3)選択部130は、複数のストレージの中から、新規仮想マシンに割り当てるストレージを選択する。ストレージの選択処理の詳細については後述する。
(S4)配置部140は、選択部130により選択された物理マシンに、新規仮想マシンを配置する。具体的には、配置部140は、当該物理マシンで動作するハイパーバイザに、新規仮想マシンの起動を指示する。当該物理マシンで動作するハイパーバイザは、配置部140の指示に応じて、新規仮想マシンの起動を開始させる。このとき、配置部140は、選択部130により選択されたストレージを新規仮想マシンに割り当てる。
(S5)配置部140は、新規仮想マシンの情報を各テーブルに記録する。具体的には、配置部140は、物理マシン管理テーブル111において、配置先となった物理マシンの動作中VM名の項目に、新規仮想マシンのVM名を追加する。また、配置部140は、ストレージ管理テーブル112において、割当対象となったストレージのストレージ使用中VM名の項目に、新規仮想マシンのVM名を追加する。更に、配置部140は、VM管理テーブル114に新規仮想マシンのエントリを追加する。なお、監視部120は、負荷の履歴情報を保存するために、新規仮想マシンに対応する負荷履歴テーブルを新たに作成して記憶部110に格納し、新規仮想マシンに対する負荷の記録を開始する。
(S6)選択部130は、ステップS2における物理マシンの選択結果に応じて、既存仮想マシン毎の負荷履歴テーブルにおける各種負荷の値を補正する。負荷履歴補正処理の詳細については後述する。
図14は、物理マシン選択処理の例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。図14に示す手順は、図13のステップS2に相当する。
(S11)選択部130は、物理マシン300,300a,300bの中から物理マシンを1つ選択する。なお、選択部130は、ステップS12以降の手順を既に実行済みの物理マシンを選択の対象から除外する。
(S12)選択部130は、物理マシン管理テーブル111を参照して、選択した物理マシンのCPU使用量aを取得する。選択部130は、CPU使用量aが閾値テーブル113に登録されたCPU使用量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS11に進める。閾値未満である場合、処理をステップS13に進める。ここで、閾値テーブル113には、CPU使用量の閾値として80%が登録されている。例えば、ステップS11で物理マシン300が選択されているとする。物理マシン管理テーブル111によれば、物理マシン300のCPU使用量a=80%である。この場合、選択部130は、CPU使用量a=80%が閾値80%以上であると判定する。あるいは、ステップS11で物理マシン300aが選択されているとする。物理マシン管理テーブル111によれば、物理マシン300aのCPU使用量a=50%である。この場合、選択部130は、CPU使用量a=50%が閾値80%未満であると判定する。
(S13)選択部130は、物理マシン管理テーブル111を参照して、選択した物理マシンのNW使用量bを取得する。選択部130は、NW使用量bが閾値テーブル113に登録されたNW使用量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS11に進める。閾値未満である場合、処理をステップS14に進める。ここで、閾値テーブル113には、NW使用量の閾値として1000MB/sが登録されている。例えば、物理マシン管理テーブル111によれば、物理マシン300aのNW使用量b=420MB/sである。この場合、選択部130は、NW使用量b=420MB/sが閾値1000MB/s未満であると判定する。
(S14)選択部130は、物理マシン管理テーブル111およびVM管理テーブル114を参照して、着目している物理マシンに、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシン(既存仮想マシン)を配置済みであるか否かを判定する。配置済みである場合、処理をステップS11に進める。配置済みでない場合、処理をステップS15に進める。例えば、選択部130は、物理マシン管理テーブル111を参照して、着目している物理マシン上で動作中のVM名を取得する。選択部130は、VM管理テーブル114を参照して、取得したVM名に対応するテナント名を取得する。選択部130は、取得したテナント名に、配置要求を行ったテナントのテナント名が含まれるか否かを判定することで、当該ステップS14の判定を行える。含まれれば、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシンを当該物理マシンに配置済みである。含まれなければ、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシンを当該物理マシンに配置済みでない。
(S15)選択部130は、新規仮想マシンと利用形態が類似する既存仮想マシンを選択し、当該既存仮想マシンの負荷の情報を用いて、新規仮想マシンの現在のCPU使用量a1およびNW使用量b1を予測する。ここで、新規仮想マシンの現在のCPU使用量の予測値は、新規仮想マシンが何れかの物理マシン上で現在稼働していると仮定した場合のCPU使用量の予測値と考えてもよい。同様に、新規仮想マシンの現在のNW使用量の予測値とは、新規仮想マシンが何れかの物理マシン上で現在稼働していると仮定した場合のNW使用量の予測値と考えてもよい。
(S16)選択部130は、ステップS12の判定に用いたCPU使用量aおよびステップS15で予測したCPU使用量a1の和a+a1が、閾値テーブル113に登録されたCPU使用量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS11に進める。閾値未満である場合、処理をステップS17に進める。
(S17)選択部130は、ステップS13の判定に用いたNW使用量bおよびステップS15で予測したNW使用量b1の和b+b1が、閾値テーブル113に登録されたNW使用量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS11に進める。閾値未満である場合、処理をステップS18に進める。
(S18)選択部130は、新規仮想マシンと利用形態が類似する既存仮想マシンを選択し、当該既存仮想マシンの過去の負荷の履歴情報を用いて、新規仮想マシンの未来のCPU使用量および未来のNW使用量を予測する。予測方法の詳細については後述する。
(S19)選択部130は、ステップS18の予測結果に応じて、未来の何れかの時点において、着目する物理マシンのCPU使用量が閾値テーブル113に登録された閾値以上になるか否かを判定する。閾値以上になる場合、処理をステップS11に進める。閾値未満である場合、処理をステップS20に進める。
(S20)選択部130は、ステップS18の予測結果に応じて、未来の何れかの時点において、着目する物理マシンのNW使用量が閾値テーブル113に登録された閾値以上になるか否かを判定する。閾値以上になる場合、処理をステップS11に進める。閾値未満である場合、処理をステップS21に進める。
(S21)選択部130は、着目する物理マシンを新規仮想マシンの配置先に決定する。選択部130は、決定した結果を配置部140に通知する。
図15は、現在のCPU/NW使用量の予測の例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。図15に示す手順は、図14のステップS15に相当する。
(S31)選択部130は、物理マシン管理テーブル111およびVM管理テーブル114を参照して、新規仮想マシンと同一テナントかつ同一VMタイプの既存仮想マシンがあるか否かを判定する。ある場合、処理をステップS32に進める。ない場合、処理をステップS38に進める。選択部130は、VMタイプで示される複数の項目の全てが一致する場合に、同一VMタイプと判断する。ただし、選択部130は、VMタイプで示される複数の項目の主要な一部(例えば、スペック、OSおよびMWの組、または、スペックおよびOSの組など)が一致する場合に、同一VMタイプと判断してもよい。
(S32)選択部130は、新規仮想マシンと同一テナントかつ同一VMタイプの既存仮想マシン(着目する既存仮想マシン)が1つであるか否かを判定する。1つではない、すなわち、複数である場合、処理をステップS33に進める。1つである場合、処理をステップS36に進める。
(S33)選択部130は、着目する複数の既存仮想マシンそれぞれの現在の負荷が同等であるか否かを判定する。同等でない場合、処理をステップS34に進める。同等である場合、処理をステップS36に進める。「同等である」とは、例えば着目する複数の既存仮想マシンそれぞれの現在の負荷に関する偏差(例えば、分散または標準偏差)が、所定値よりも小さいことを意味する。選択部130は、CPU使用量およびNW使用量のそれぞれに対して分散を求め、両方がそれぞれの所定値よりも小さい場合に、着目する複数の既存仮想マシンそれぞれの現在の負荷が同等であると判定する。CPU使用量およびNW使用量それぞれに関する分散の何れか一方が所定値以上であれば、着目する複数の既存仮想マシンそれぞれの現在の負荷は同等ではない。なお、既存仮想マシンが2つの場合は、分散の代わりに、両方の負荷の差を求め、当該差が所定値よりも小さいときに同等と判断してもよい(当該差が所定値以上であれば同等でない)。
ここで、監視部120は、ステップS33の処理を行うために、着目する複数の既存仮想マシンそれぞれの現在の負荷を、仮想化管理サーバ200または物理マシン300,300a,300bから取得し、選択部130に提供してもよい。あるいは、選択部130は、記憶部110に記憶された各既存仮想マシンの負荷履歴テーブルを参照して、着目する複数の既存仮想マシンそれぞれの最新の負荷を、現在の負荷とみなして、ステップS33の処理を実行してもよい。ただし、より最近の負荷を予測するという観点からは、前者の取得方法の方が好ましい。現在の負荷の取得方法は以降のステップでも同様である。
(S34)選択部130は、着目する複数の既存仮想マシンの現在のCPU使用量のうち最大の値を、新規仮想マシンによる現在のCPU使用量a1(予測値)とする。
(S35)選択部130は、着目する複数の既存仮想マシンの現在のNW使用量のうち最大の値を、新規仮想マシンによる現在のNW使用量b1(予測値)とする。そして、処理を終了する。
(S36)選択部130は、着目する既存仮想マシン(1つの場合もあるし、複数の場合もある)の現在のCPU使用量の合計値を、(着目する既存仮想マシン数+1)で割った値を、新規仮想マシンによる現在のCPU使用量a1とする。着目する既存仮想マシンが1つの場合は、当該1つの既存仮想マシンの現在のCPU使用量を当該合計値としてよい。
(S37)選択部130は、着目する既存仮想マシン(1つの場合もあるし、複数の場合もある)の現在のNW使用量の合計値を、(着目する既存仮想マシン数+1)で割った値を、新規仮想マシンによる現在のNW使用量b1とする。着目する既存仮想マシンが1つの場合は、当該1つの既存仮想マシンの現在のNW使用量を当該合計値としてよい。そして、処理を終了する。
(S38)選択部130は、他の方法を用いて、新規仮想マシンの現在の負荷を予測する。他の方法の詳細については後述する。
なお、ステップS34,S35において、複数の既存仮想マシンの現在の最大負荷を新規仮想マシンの負荷の予測値とする理由は、物理マシンの負荷の予測値が小さく見積もられてしまうことを防止するためである。物理マシンの負荷の予測値が小さく見積もられてしまうと、実際の運用時に、新規仮想マシンを配置した物理マシンの負荷が過大になるおそれがある。そこで、選択部130は、着目する複数の既存仮想マシンの負荷のばらつきが比較的大きい場合は、既存仮想マシンの最大負荷を新規仮想マシンの負荷の予測値とすることで、物理マシンの負荷が過大にならないように配置先を選択する。
また、ステップS36,S37において、着目する既存仮想マシンの現在の負荷の合計値を、(着目する既存仮想マシン数+1)で割った値を、新規仮想マシンによる現在の負荷の予測値とする理由は、新規仮想マシンの負荷の予測精度をより高めるためである。すなわち、同一VMタイプの既存仮想マシンが存在する場合、新規仮想マシンも当該既存仮想マシンと同様に利用される可能性が高い。更に、既存仮想マシンが1つであるか、または、既存仮想マシンが複数かつ複数の既存仮想マシンの負荷のばらつきが小さい場合は、新規仮想マシンの配置に伴い、新規仮想マシンを含めて既存仮想マシンの負荷が分散される可能性がある。そこで、この場合、選択部130は、着目する既存仮想マシンの現在の負荷の合計値を、(着目する既存仮想マシン数+1)で割った値を、新規仮想マシンによる現在の負荷の予測値とする。
図16は、他の方法による予測の例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。図16に示す手順は、図15のステップS38に相当する。
(S41)選択部130は、新規仮想マシンのスペックが属するスペックグループと同一のスペックグループに属する既存仮想マシンの現在の負荷情報(CPU使用量およびNW使用量)を取得する。ここで、スペックグループとは、仮想マシンのスペックに応じて区分されるグループである。例えば、スペックグループとしては、次のようなLow、Mid、Highの3区分が考えられる。Lowは、仮想CPUのクロック数1GHz以下かつメモリ容量2GB以下のスペックグループである(例えば、仮想CPUのクロック数1GHz以下を選択する場合、2GBよりも大きなメモリ容量の選択が制限される)。Midは、仮想CPUのクロック数が1GHzよりも大きく3GHz未満かつメモリ容量が2GBよりも大きく8GB未満のスペックグループである(例えば、仮想CPUのクロック数に1GHzよりも大きく3GHz未満の値を選択する場合、2GB以下または8GB以上のメモリ容量の選択が制限される)。Highは、仮想CPUのクロック数が3GHz以上かつメモリ容量8GB以上のスペックグループである(例えば、仮想CPUのクロック数3GHz以上を選択する場合、8GBよりも小さなメモリ容量の選択が制限される)。例えば、新規仮想マシンのスペックが、仮想CPUのクロック数2GHzかつメモリ容量4GBであれば、新規仮想マシンはMidのスペックグループに属することになる。この場合、選択部130は、Midのスペックグループに属する複数の既存仮想マシンについて現在の負荷情報を取得する。現在の負荷情報の取得方法は、図15のステップS33で例示した方法と同様である。
(S42)選択部130は、ステップS41で取得した負荷情報およびVM管理テーブル114に基づいて、最近作成され、かつ、現在の負荷が比較的高負荷である既存仮想マシンをN(Nは正の整数)個サンプリングする。Nの値は予め記憶部110に記憶される(例えば、N=10,20、あるいは、全既存仮想マシン数の10%をNとするなど)。ここでは、負荷情報として、例えば、CPU使用量を利用する。あるいは、CPU使用量とNW使用量との両方を加味して、各既存仮想マシンの負荷を評価してもよい(例えば、CPU使用量およびNW使用量それぞれを所定のルールにより負荷の指標値に変換し、2つの指標値の合計を1つの既存仮想マシンの負荷とするなど)。
(S43)選択部130は、サンプリングしたN個の既存仮想マシンのCPU使用量の平均値を、新規仮想マシンによる現在のCPU使用量a1とする。
(S44)選択部130は、サンプリングしたN個の既存仮想マシンのNW使用量の平均値を、新規仮想マシンによる現在のNW使用量b1とする。
図17は、既存VMのサンプリングの例を示す図である。例えば、選択部130は、新規仮想マシンがMidレベルのスペックグループに属する場合、当該Midレベルのスペックグループに属する各既存仮想マシンについて、作成日時および負荷の大きさに対する分布を得ることができる。新規仮想マシンと同じスペックグループに属する既存仮想マシンの負荷の情報を用いることで、新規仮想マシンの負荷の予測の精度を向上できる。
図17では横軸で作成日時を、縦軸で負荷の大きさを示している。横軸の右側ほど作成日時は古く、横軸の左側ほど作成日時は新しい。縦軸の下側ほど負荷は小さく、縦軸の上側ほど負荷は大きい。この2軸に対してプロットされた白い点の1つが、あるスペックグループ(例えば、Midレベルのスペックグループ)に属する1つの既存仮想マシンに相当する。
選択部130は、図17の分布のうち、作成日時が新しく、かつ、負荷が比較的大きい既存仮想マシンを、例えば10個サンプリングする。領域Rは、サンプリング対象となる10個の既存仮想マシンに対応する点を囲む領域である。例えば、選択部130は、作成日時が新しいものから古いものへと順番に、負荷が所定値以上ある既存仮想マシンを10個抽出する。
ここで、既存仮想マシンをスペックグループで絞り込んだとしても、当該スペックグループに属する既存仮想マシンの中には、スペック選択が過剰であったものや、ワークロードがピークを過ぎたもの(古いもの)が残存している可能性がある。このような既存仮想マシンの負荷の情報を用いると、新規仮想マシンの負荷が比較的小さく見積もられてしまうおそれがある。そこで、選択部130は、作成日時が新しく、かつ、負荷が比較的大きい既存仮想マシンをサンプリング対象とすることで、新規仮想マシンの負荷が小さめに見積もられてしまうことを抑制する。これにより、新規仮想マシンを割り当てた物理マシンの負荷が過大になることを防止する。
なお、選択部130は、新規仮想マシンと同じテナントの既存仮想マシンのみをサンプリングの対象としてもよい。また、新規仮想マシンと同じテナントの既存仮想マシンおよび新規仮想マシンのテナントとは異なるテナントの既存仮想マシンの両方をサンプリングの対象としてもよい。
図18は、CPU/NW使用量の未来予測の例を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。図18に示す手順は、図14のステップS18に相当する。
(S51)選択部130は、物理マシン管理テーブル111およびVM管理テーブル114を参照して、新規仮想マシンと同一テナントかつ同一VMタイプの既存仮想マシンがあるか否かを判定する。ある場合、処理をステップS52に進める。ない場合、処理をステップS62に進める。具体的な判定方法は、ステップS31と同様である。
(S52)選択部130は、新規仮想マシンと同一テナントかつ同一VMタイプの既存仮想マシン(着目する既存仮想マシン)が1つであるか否かを判定する。1つではない、すなわち、複数である場合、処理をステップS53に進める。1つである場合、処理をステップS58に進める。なお、選択部130は、ステップS51,S52において、ステップS31,S32の判定結果をそのまま用いて、分岐先のステップを決定してもよい。
(S53)選択部130は、着目する複数の既存仮想マシンそれぞれの現在の負荷が同等であるか否かを判定する。同等でない場合、処理をステップS54に進める。同等である場合、処理をステップS58に進める。選択部130は、図15のステップS33の判定結果に応じて、ステップS53の判定を行ってもよい。すなわち、ステップS33で同等であると判定している場合は、本ステップS53でも同等と判定し、ステップS33で同等でないと判定している場合は、本ステップS53でも同等でないと判定してもよい。あるいは、選択部130は、現在の時点だけでなく、過去の複数の時点(例えば、5時間前からの1時間置きの時点、120時間前からの24時間置きの時点など)において、同等であるか(負荷の分散値または2つの既存仮想マシンの負荷の差が所定値よりも小さいか)を判定してもよい。そして、選択部130は、全ての時点において同等であればステップS53の判定結果を同等とし、何れかの時点で同等でなければステップS53の判定結果を同等でないと判定してもよい。なお、既存仮想マシンの過去の負荷は、記憶部110に格納された負荷履歴テーブルに記録されている。
(S54)選択部130は、ステップS55,S56の処理を予測対象時点毎に繰り返し実行する。ここで、予測対象時点は、例えば、現時点から所定の時間(1分間、5分間または10分間など)置きの複数の時点である。例えば、1分置きであれば、現時点から1分後、2分後、3分後、・・・の時点が予測対象時点となる。10分置きであれば、現時点から10分後、20分後、30分後、・・・の時点が予測対象時点となる。予測対象時点の終点は、現時点から1週間後、1カ月後などである(現時点から終点までの期間が予測対象期間となる)。
予測対象時点は、負荷履歴テーブルに登録された過去の時点に対応づけることができる。例えば、予測対象期間が1週間であれば、1分後の予測対象時点を、1分後の予測対象時点から1週間前の時点に対応させる。同様に、10分後の予測対象時点を、10分後の予測対象時点から1週間前の時点に対応させる。また、予測対象期間が1カ月であれば、1分後の予測対象時点を、1分後の予測対象時点の1カ月前の時点に対応させる。10分後の予測対象時点を、10分後の予測対象時点から1カ月前の時点に対応させる。以下の説明では、予測対象時点に対応する過去の時点を指して、着目時点と称する。選択部130は、予測対象時点に対応する着目時点を特定して、以下のステップS55,S56を繰り返し実行することになる。
(S55)選択部130は、既存仮想マシン毎の負荷履歴テーブルを参照して、着目する複数の既存仮想マシンそれぞれの着目時点のCPU使用量の最大値を、当該着目時点に対応する予測対象時点における新規仮想マシンのCPU使用量の予測値とする。
(S56)選択部130は、既存仮想マシン毎の負荷履歴テーブルを参照して、着目する複数の既存仮想マシンそれぞれの着目時点のNW使用量の最大値を、当該着目時点に対応する予測対象時点における新規仮想マシンのNW使用量の予測値とする。なお、ステップS55,S56において、複数の既存仮想マシンの着目時点の最大負荷を新規仮想マシンの負荷の予測値とする理由は、図15のステップS34,S35と同様に、物理マシンの負荷の予測値が小さく見積もられてしまうことを防止するためである。
(S57)選択部130は、全ての予測対象時点について、ステップS55,S56の処理を実行すると処理を終了する。
(S58)選択部130は、ステップS59,S60の処理を予測対象時点毎に繰り返し実行する。予測対象時点の考え方は、ステップS54で説明した内容と同様である。選択部130は、予測対象時点に対応する着目時点を特定して、以下のステップS59,S60を繰り返し実行することになる。
(S59)選択部130は、着目する複数の既存仮想マシンそれぞれの着目時点のCPU使用量の合計値を、(着目する既存仮想マシン数+1)で割った値を、当該着目時点に対応する予測対象時点における新規仮想マシンのCPU使用量の予測値とする。着目する既存仮想マシンが1つの場合は、当該1つの既存仮想マシンの着目時点のCPU使用量を当該合計値としてよい。選択部130は、各既存仮想マシンの着目時点毎のCPU使用量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
(S60)選択部130は、着目する複数の既存仮想マシンそれぞれの着目時点のNW使用量の合計値を、(着目する既存仮想マシン数+1)で割った値を、当該着目時点に対応する予測対象時点における新規仮想マシンのNW使用量の予測値とする。着目する既存仮想マシンが1つの場合は、当該1つの既存仮想マシンの着目時点のNW使用量を当該合計値としてよい。選択部130は、各既存仮想マシンの着目時点毎のNW使用量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
なお、ステップS59,S60において、着目する複数の既存仮想マシンそれぞれの着目時点の負荷の合計値を、(着目する既存仮想マシン数+1)で割った値を、当該着目時点に対応する予測対象時点における新規仮想マシンの負荷の予測値とする理由は、図15のステップS36,S37と同様に、新規仮想マシンの負荷の予測精度を高めるためである。
(S61)選択部130は、全ての予測対象時点について、ステップS59,S60の処理を実行すると処理を終了する。
(S62)選択部130は、他の方法を用いて、新規仮想マシンの未来の負荷を予測する。他の方法の詳細については後述する。
図19は、他の方法による未来予測の例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。図19に示す手順は、図18のステップS62に相当する。ここで、図19の手順が実行されるとき、図16の手順を実行済みであり、N個の既存仮想マシンをサンプリング済みである。
(S71)選択部130は、同一スペックグループ内でサンプリングされたN個の既存仮想マシンの負荷履歴テーブルを取得する。
(S72)選択部130は、ステップS73,S74の処理を予測対象時点毎に繰り返し実行する。予測対象時点および着目時点の考え方は、図18のステップS54で説明した考え方と同様である。選択部130は、予測対象時点に対応する着目時点を特定して、以下のステップS73,S74を繰り返し実行することになる。
(S73)選択部130は、サンプリングされたN個の既存仮想マシンの着目時点のCPU使用量の平均値を、当該着目時点に対応する予測対象時点における新規仮想マシンのCPU使用量の予測値とする。選択部130は、各既存仮想マシンの着目時点毎のCPU使用量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
(S74)選択部130は、サンプリングされたN個の既存仮想マシンの着目時点のNW使用量の平均値を、当該着目時点に対応する予測対象時点における新規仮想マシンのNW使用量の予測値とする。選択部130は、各既存仮想マシンの着目時点毎のNW使用量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
(S75)選択部130は、全ての予測対象時点について、ステップS73,S74の処理を実行すると処理を終了する。
このようにして、管理サーバ100は、新規仮想マシンを配置した場合の負荷を予測する。なお、選択部130は、図14のステップS15,S18の処理を、最初の物理マシン選択時に一回実行し、新規仮想マシンの負荷の予測結果を記憶部110に保存しておけば、後は当該予測結果を用いて、各物理マシンの負荷を見積もれる。
このため、2つ目以降に選択された物理マシンに対し、ステップS15において、選択部130は、新規仮想マシンに対して予測された現在のCPU使用量a1およびNW使用量b1を、記憶部110から取得してもよい。同様に、2つ目以降に選択された物理マシンに対し、ステップS18において、選択部130は、新規仮想マシンのCPUおよびNW使用量の未来予測の結果を記憶部110から取得してもよい。あるいは、選択部130は、ステップS15,S18をステップS1の後で、かつ、ステップS2の前に実行し、予測結果を記憶部110に保存しておくことも考えられる。
図20は、物理マシンの未来の負荷の予測例を示す図である。図20(A)は、物理マシン300における8月1日(日曜日)〜8月7日(土曜日)までの1週間の負荷(例えば、CPU使用量)の予測結果を例示している。例えば、管理サーバ100は、直前の1週間(7月25日(日曜日)〜7月31日(土曜日))の負荷履歴から、当該予測結果を得られる。系列M1は、既存の仮想マシン330の予測負荷の系列である。系列M2は、既存の仮想マシン340の予測負荷の系列である。系列M3は、既存の仮想マシン350の予測負荷の系列である。系列Xは、新規仮想マシンの予測負荷の系列である。系列Mは、系列M1,M2,M3,Xで表される各予測対象時点の負荷を、予測対象時点毎に合計して得られた物理マシン300の予測負荷の系列である。
図20の例では、予測対象期間を1週間とする。例えば、7月25日と8月1日とは同じ曜日なので、7月25日(日曜日)のある時刻の既存仮想マシン330,340,350それぞれの負荷を、8月1日(日曜日)の同時刻の既存仮想マシン330,340,350それぞれの負荷に対応させることができる。同様に、7月25日(日曜日)のある時刻のある既存仮想マシンの負荷を用いて予測された新規仮想マシンの負荷を8月1日の同時刻の新規仮想マシンの負荷に対応させることができる。他の日の各時刻についても同様である。
図20(A)の予測結果によれば、例えば、8月5日(木曜日)と8月6日(金曜日)とで物理マシン300の負荷が閾値を超えてしまう。このため、選択部130は、物理マシン300を、新規仮想マシンの配置先として選択しない。
図20(B)は、物理マシン300aにおける8月1日(日曜日)〜8月7日(土曜日)までの1週間の負荷(例えば、CPU使用量)の予測結果を例示している。系列N1は、物理マシン300aで動作する第1の既存仮想マシンの予測負荷の系列である。系列N2は、物理マシン300aで動作する第2の既存仮想マシンの予測負荷の系列である。系列N3は、物理マシン300aで動作する第3の既存仮想マシンの予測負荷の系列である。系列Xは、新規仮想マシンの予測負荷の系列であり、図20(A)で示した系列Xと同一である。系列Nは、系列N1,N2,N3,Xで表される各予測対象時点の負荷を、予測対象時点毎に合計して得られた物理マシン300a単位の予測負荷の系列である。
図20(B)で示される予測結果によれば、予測対象期間内において、物理マシン300aの負荷が閾値を超えることはない。このため、選択部130は、物理マシン300aを、新規仮想マシンの配置先として選択する。
ところで、図15のステップS31や図18のステップS51では、新規仮想マシンと同一テナントかつ同一VMタイプの既存仮想マシンを選択するものとしたが、スペックなどが類似する既存仮想マシンを選択することも考えられる。図13のステップS1において、新規仮想マシンのVMタイプが指定される代わりに、新規仮想マシンに関し、何れのVMタイプにも該当しないスペックなどが指定されることも考えられるからである。
例えば、管理サーバ100は、各既存仮想マシンについて、スペック、OS、MWおよび負荷分散の利用有無などの情報を記憶部110に記録しておく。そして、選択部130は、新規仮想マシンに対して指定されたスペック、OS、MWおよび負荷分散の利用有無などの情報を、記憶部110に記憶された各既存仮想マシンの情報と比較し、新規仮想マシンと、各既存仮想マシンとの類似度を計算する。
より具体的には、OS、MWおよび負荷分散の利用有無については、同じか、相違するかに応じた一致度をそれぞれ決定する。例えば、一致すれば一致度を正の所定値とし、一致しなければ一致度を0とする。また、スペックについては、仮想CPU数、クロック数、メモリ容量、ディスク容量および接続NW数それぞれについて、近似する度合い(差)に応じた一致度をそれぞれ決定する。例えば、仮想CPU数などの同じ項目同士の値の差が小さいほど一致度を大きな値とする。各項目について決定した一致度の合計を、新規仮想マシンと、既存仮想マシンとの類似度とする。
上記で例示したように一致度を決定すれば、類似度の値が大きいほど、類似する度合も大きくなる。このため、選択部130は、新規仮想マシンとの類似度が最大(あるいは、大きい方から所定数個)の既存仮想マシンを選択すれば、新規仮想マシンと利用形態の類似する複数の既存仮想マシンを選択できる。このとき、選択部130は、類似度が一定値以上の既存仮想マシンが存在しない場合に、ステップS38やステップS62を実行してもよい。
更に、図14の物理マシンの選択処理では、順番に選択された物理マシンのうち、最初にステップS20でNoの判定となった物理マシンが選択されることになる。一方、物理マシンの他の選択方法も考えられる。例えば、選択部130は、全物理マシンに対して、図14の選択処理を実行してもよい。その上で、選択部130は、新規仮想マシンを配置したときに予測される負荷の予測対象期間における最大値(または、平均値)が、最小となる物理マシンを、新規仮想マシンの配置先として選択してもよい。
また、上記の説明では、予測対象期間を1週間としたが、1カ月など他の時間幅としてもよい。例えば、予測対象期間を1カ月とするなら、前月の第1月曜の負荷実績を次月の第1月曜の負荷予測に用い、前月の第2月曜の負荷実績を次月の第2月曜の負荷予測に用いるというように、同じ曜日であっても第何週に属するかによって更に区別して、予測し得る。
図21は、ストレージ選択処理の例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。図21に示す手順は、図13のステップS3に相当する。
(S81)選択部130は、ストレージ410,420,430の中からストレージを1つ選択する。なお、選択部130は、ステップS82以降の手順を既に実行済みのストレージを選択の対象から除外する。
(S82)選択部130は、ストレージ管理テーブル112を参照して、選択したストレージのストレージアクセス量cを取得する。選択部130は、ストレージアクセス量cが閾値テーブル113に登録されたストレージアクセス量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS81に進める。閾値未満である場合、処理をステップS83に進める。ここで、閾値テーブル113には、ストレージアクセス量の閾値として320MB/sが登録されている。例えば、ステップS81でストレージ410が選択されているとする。ストレージ管理テーブル112によれば、ストレージ410のストレージアクセス量c=300MB/sである。この場合、選択部130は、ストレージアクセス量c=300MB/sが閾値320MB/s未満であると判定する。
(S83)選択部130は、着目するストレージが属するストレージグループに、新規仮想マシンの配置要求元のテナントと同一テナントの既存仮想マシンが利用する他のストレージがあるか否かを判定する。当該他のストレージがある場合、処理をステップS81に進める。当該他のストレージがない場合、処理をステップS84に進める。ストレージグループとは、ストレージプール400における複数のストレージの集合である。例えば、ストレージ410,420が第1のストレージグループに属し、ストレージ430が第2のストレージグループに属することを示す情報が記憶部110に予め格納される。選択部130は、記憶部110に記憶された当該情報を参照することで、ステップS83の判定を行える。
(S84)選択部130は、ストレージ管理テーブル112およびVM管理テーブル114を参照して、新規仮想マシンの配置要求元のテナントと同一テナントの既存仮想マシンが、着目するストレージを利用しているか否かを判定する。利用している場合、処理をステップS81に進める。利用していない場合、処理をステップS85に進める。例えば、選択部130は、ストレージ管理テーブル112を参照して、着目しているストレージ上で動作中のVM名を取得する。選択部130は、VM管理テーブル114を参照して、取得したVM名に対応するテナント名を取得する。選択部130は、取得したテナント名に、配置要求を行ったテナントのテナント名が含まれるか否かを判定することで、当該ステップS84の判定を行える。含まれれば、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシンが当該ストレージを利用中である。含まれなければ、新規仮想マシンの配置要求を行ったテナントと同一のテナントの他の仮想マシンが当該ストレージを利用中でない。
(S85)選択部130は、新規仮想マシンによる現在のストレージアクセス量c1を予測する。予測方法は、図15,16の手順と同様である(ステップS33の判定は各既存仮想マシンの現ストレージアクセス量を用いて行える)。選択部130は、CPU使用量a1およびNW使用量b1の代わりに、ストレージアクセス量c1を予測する。例えば、ステップS34,S35に相当する処理を実行する場合、着目する複数の既存仮想マシンの現在のストレージアクセス量のうち、最大の値をc1とする。または、ステップS36,S37に相当する処理を実行する場合、着目する既存仮想マシンのストレージアクセス量の合計値を、(既存仮想マシン数+1)で割った値をc1とする。または、ステップS43,S44に相当する処理を実行する場合、サンプリングしたN個の既存仮想マシンのストレージアクセス量の平均値をc1とする(既存仮想マシンをサンプリングする際の負荷情報として、各既存仮想マシンのストレージアクセス量を用いてもよい)。
(S86)選択部130は、ステップS82の判定に用いたストレージアクセス量cおよびステップS85で予測したストレージアクセス量c1の和c+c1が、閾値テーブル113に登録されたストレージアクセス量の閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS81に進める。閾値未満である場合、処理をステップS87に進める。
(S87)選択部130は、新規仮想マシンによるストレージアクセス量の未来予測を行う。予測方法は、図18,19の手順と同様である。選択部130は、CPU使用量およびNW使用量の代わりに、ストレージアクセス量を予測する(ステップS53の判定は各既存仮想マシンの現ストレージアクセス量または過去のストレージアクセス量を用いて行える)。例えば、ステップS55,S56に相当する処理を実行する場合、着目する複数の既存仮想マシンの着目時点のストレージアクセス量のうち最大の値を、当該着目時点に対応する予測対象時点における新規仮想マシンのストレージアクセス量とする。または、ステップS59,S60に相当する処理を実行する場合、着目する既存仮想マシンの着目時点におけるストレージアクセス量の合計値を、(既存仮想マシン数+1)で割った値を、当該着目時点に対応する予測対象時点における新規仮想マシンのストレージアクセス量とする。または、ステップS73,S74に相当する処理を実行する場合、サンプリングしたN個の既存仮想マシンの着目時点のストレージアクセス量の平均値を、当該着目時点に対応する予測対象時点における新規仮想マシンのストレージアクセス量とする。選択部130は、各既存仮想マシンの着目時点のストレージアクセス量を、既存仮想マシン毎の負荷履歴テーブルから取得できる。
(S88)選択部130は、ステップS87の予測結果に応じて、着目するストレージの未来のストレージアクセス量が閾値以上になるか否かを判定する。閾値以上になる場合、処理をステップS81に進める。閾値未満である場合、処理をステップS89に進める。ステップS88におけるストレージの未来のストレージアクセス量の予測方法は、図20で例示した物理マシンの未来の負荷の予測方法と同様である。すなわち、(予測対象期間内の)ある予測対象時点における、当該ストレージを使用する既存仮想マシンによるストレージアクセス量と、新規仮想マシンによるストレージアクセス量(予測アクセス量)との和が、当該時点におけるストレージ単位のストレージアクセス量である。選択部130は、全ての予測対象時点において、ストレージ単位のストレージアクセス量が閾値未満であれば、処理をステップS89に進める。選択部130は、何れかの予測対象時点で、ストレージ単位のストレージアクセス量が閾値以上であれば、処理をステップS81に進める。
(S89)選択部130は、着目するストレージを新規仮想マシンに割り当てると決定する。選択部130は、決定した結果を配置部140に通知する。
このようにして、管理サーバ100は、新規仮想マシンに割り当てるストレージを選択する。これにより、新規仮想マシンの配置に伴って、ストレージ410,420,430の負荷が過大となることを抑制できる。
図22は、負荷履歴補正処理の例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。図22に示す手順は、図13のステップS6に相当する。
(S91)選択部130は、新規仮想マシンの追加により既存仮想マシンの負荷が下がる予測をしたか否かを判定する。既存仮想マシンの負荷が下がる予測をした場合、処理をステップS92に進める。既存仮想マシンの負荷が下がる予測をしていない場合、処理を終了する。ここで、「新規仮想マシンの追加により既存仮想マシンの負荷が下がる予測」とは、図15のステップS36,S37の予測処理および図18のステップS59,S60の予測処理である。すなわち、選択部130は、当該ステップS36,S37またはステップS59,S60の少なくとも何れかの処理を行っている場合、「既存仮想マシンの負荷が下がる予測をした」と判定する。選択部130は、当該ステップS36,S37またはステップS59,S60の何れの処理も行っていない場合、「既存仮想マシンの負荷が下がる予測をしていない」と判定する。
(S92)選択部130は、図15のステップS36,S37および図18のステップS59,S60において着目した既存仮想マシンの負荷履歴テーブルに含まれる各時点の負荷値(CPUおよびNW使用量)を補正する。具体的には、選択部130は、各時点の負荷値に{既存仮想マシン数/(既存仮想マシン数+1)}を乗じた値を補正後の負荷値とする。ここで、当該既存仮想マシン数は今回新たに配置した新規仮想マシンの数を含まない(当該既存仮想マシン数は、ステップS36,S37,S59,S60の計算で用いた既存仮想マシン数と同じ値となる)。
このようにして、管理サーバ100は、既存仮想マシンの負荷履歴テーブルの値を補正する。それ以降に、他の新規仮想マシンの配置先の物理マシンを選択する際に、今回配置した新規仮想マシンによる既存仮想マシンの負荷の減少分を考慮して、当該他の新規仮想マシンの負荷および各物理マシンの負荷を予測できるようにするためである。これにより、各物理マシンの負荷の予測精度をより高めることができる。
図23は、新規VMの配置例を示す図である。例えば、複数の物理マシン上で動作する複数の既存仮想マシンには、様々なテナントによって利用される仮想マシンが含まれる。管理サーバ100は、これから新規に配置しようとする仮想マシンの負荷予測を行うために、複数の既存仮想マシンのうち、適切な既存仮想マシンを選択する。管理サーバ100は、選択した既存仮想マシンの負荷を用いて、新規仮想マシンの負荷を予測することで、予測の精度を向上し得る。
例えば、既存仮想マシン全体には、テナントA,B,Cの仮想マシンが含まれている。また、テナントAが行う業務においても業務α,β,γなど、種々の業務が存在している。1つの業務の中でも仮想マシンで利用されるOSやMWなどの種類は様々である。
そこで、管理サーバ100は、新規仮想マシンと同一テナントかつ同一VMタイプ(または類似のVMタイプ)という条件により、既存仮想マシンを絞り込む。同一テナントかつ同一VMタイプの既存仮想マシンと新規仮想マシンとは、同じ用途で利用される可能性が高いからである。例えば、テナントAの業務αに注目する。業務αは、Web3階層のシステムで構築されている。この場合、Webサーバとして利用される各仮想マシンは、同一VMタイプが選択される可能性が高い。APサーバとして利用される各仮想マシンは、同一VMタイプが選択される可能性が高い。DBサーバとして利用される各仮想マシンは、同一VMタイプが選択される可能性が高い。
例えば、テナントAが新規仮想マシンの配置を要求するとき、当該新規仮想マシンのVMタイプが、テナントAのWebサーバ群と同一(あるいは、類似の)VMタイプであれば、新規仮想マシンもWebサーバとして利用される可能性が高い。よって、テナントAの当該VMタイプの既存仮想マシン群の負荷履歴を用いて新規仮想マシンの負荷を予測することで、適格な予測を行える。このようにして、管理サーバ100は、配置先候補の物理マシンの負荷予測の高精度化を図り、適切な配備先の物理マシンの選定を可能にする。
なお、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体13に記録できる。
例えば、プログラムを記録した記録媒体13を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体13に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
以上の第1,第2の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
(付記1) 複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する第1の情報および前記複数の既存仮想マシンそれぞれの過去の負荷状況を示す履歴情報を記憶する記憶部と、
前記複数の物理マシンの何れかに仮想マシンを新たに配置する際に、前記第1の情報と前記仮想マシンの利用形態に関する第2の情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの前記履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、演算部と、
を有する負荷分散管理装置。
(付記2) 前記演算部は、新たに配置する前記仮想マシンと同じユーザにより利用されている前記複数の既存仮想マシンの中から前記既存仮想マシンを1つ以上選択し、選択した前記既存仮想マシン毎の過去の所定時点における負荷の合計を、選択した前記既存仮想マシンの数に1を加算した数で割った平均負荷を用いて、前記配置先候補の物理マシンの負荷を予測する、付記1記載の負荷分散管理装置。
(付記3) 前記演算部は、2以上の既存仮想マシンを選択した場合、前記2以上の既存仮想マシンそれぞれの負荷の差または偏差に応じて、前記平均負荷を用いて前記配置先候補の物理マシンの負荷を予測するか、または、前記2以上の既存仮想マシンそれぞれの負荷の最大値を用いて前記配置先候補の物理マシンの負荷を予測するか、を選択する、付記2記載の負荷分散管理装置。
(付記4) 前記演算部は、選択した前記既存仮想マシンの数に基づいて、前記履歴情報に含まれる当該既存仮想マシン毎の負荷の情報を補正する、付記2または3記載の負荷分散管理装置。
(付記5) 前記演算部は、前記第1および前記第2の情報に加え、前記複数の既存仮想マシンそれぞれの作成日時に基づいて、前記既存仮想マシンを選択する、付記1記載の負荷分散管理装置。
(付記6) 前記演算部は、前記複数の既存仮想マシンのうち、作成日時が新しく、かつ、負荷が所定値よりも高い既存仮想マシンを優先して複数選択し、選択した前記既存仮想マシン毎の過去の所定時点の負荷を用いて、前記配置先候補の物理マシンの負荷を予測する、付記5記載の負荷分散管理装置。
(付記7) 前記利用形態の情報は、仮想マシンに割り当てられるリソース量、仮想マシンにより利用されるソフトウェアおよび仮想マシンに対して適用されるサービス種別の少なくとも何れかの項目を含む、付記1乃至6の何れか1つに記載の負荷分散管理装置。
(付記8) 前記演算部は、前記第1および前記第2の情報に含まれる前記利用形態に関する複数の項目それぞれの設定値の一致度に基づいて、前記既存仮想マシンを選択する、付記1乃至7の何れか1つに記載の負荷分散管理装置。
(付記9) 前記複数の既存仮想マシンそれぞれは、複数のストレージの何れかにアクセス可能であり、
前記履歴情報は、前記複数の既存仮想マシンそれぞれによるストレージに対するアクセス量の履歴を含み、
前記演算部は、選択した前記既存仮想マシンによるストレージに対するアクセス量の履歴に基づいて、前記仮想マシンを配置することによる前記複数のストレージそれぞれのアクセス量を予測し、予測結果に応じて前記仮想マシンによりアクセス可能にするストレージを決定する、付記1乃至8の何れか1つに記載の負荷分散管理装置。
(付記10) 前記演算部は、前記仮想マシンの配置先候補の複数の物理マシンのうち、未来の所定期間の予測された負荷が閾値以上とならない物理マシンを前記仮想マシンの配置先と決定する、付記1乃至9の何れか1つに記載の負荷分散管理装置。
(付記11) コンピュータが、
複数の物理マシンの何れかに仮想マシンを新たに配置する際に、前記仮想マシンの利用形態に関する情報と、前記複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、
制御方法。
(付記12) 複数の物理マシンの何れかに仮想マシンを新たに配置する際に、前記仮想マシンの利用形態に関する情報と、前記複数の物理マシンに配置済みである複数の既存仮想マシンそれぞれの利用形態に関する情報とに基づいて既存仮想マシンを選択し、
選択した前記既存仮想マシンの過去の負荷状況を示す履歴情報を用いて、前記仮想マシンの配置先候補の物理マシンの負荷を予測し、予測結果に応じて前記仮想マシンの配置先の物理マシンを決定する、
処理をコンピュータに実行させるプログラム。