以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理システムを示す図である。
情報処理システム1は、情報処理装置10、物理マシン20および記憶装置30を有する。情報処理装置10、物理マシン20および記憶装置30は、ネットワーク40に接続される。情報処理装置10は、物理マシン20における仮想マシンの運用管理を行う。
物理マシン20は、物理マシン20のハードウェア21を用いて仮想マシンを実行する。物理マシン20は、ハイパーバイザ22を実行する。ハイパーバイザ22は、物理マシン20が備えるハードウェア21のリソースを仮想マシンに割り当てる。ハードウェア21は、メモリ21aおよびプロセッサ21bを含む。例えば、ハイパーバイザ22は、メモリ21aの記憶リソースやプロセッサ21bの演算リソースを仮想マシン23に割り当て、物理マシン20上で仮想マシン23を動作させる。例えば、仮想マシン23は、ネットワーク40を介して、ユーザが操作するクライアント端末(図示を省略している)と通信し、ユーザの作業を支援する所定のソフトウェアの機能(例えば、Webサーバ機能など)を提供する。例えば、ユーザには、仮想マシン23の利用状況(仮想マシン23のリソース量や利用時間など)に応じた利用料が課金される。
記憶装置30は、情報処理装置10および物理マシン20の処理に用いられるデータを記憶するストレージである。記憶装置30は、物理マシン20に内蔵されてもよい。
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDDやフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部11は、性能の異なる複数の仮想マシンの対応関係を示す情報を記憶する。例えば、記憶部11は、仮想マシン23に対して、仮想マシン23よりも高い性能の仮想マシンのデータや、仮想マシン23よりも低い性能の仮想マシンのデータを示す情報(例えば、各データの格納位置を示す情報)を記憶する。
処理部12は、性能の異なる複数の仮想マシンに対応する複数のイメージデータを記憶装置30に配置する命令を物理マシン20に送信する。ここで、イメージデータは、仮想マシンをシャットダウンして記憶装置30に退避させた状態のデータであり、仮想マシンに含まれるソフトウェアの情報に加え、仮想マシンに割り当てられたリソース量に関連する情報を含み得る。イメージデータは、仮想マシンの退避イメージや退避データなどと呼ばれてもよい。
ここで、以下では、「仮想マシン」をVM(Virtual Machine)と略記することがある。また、「仮想マシンのイメージデータ」を、VMデータと略記することがある。物理マシン20は、処理部12の命令に応じて、性能の異なる複数の仮想マシンの複数のVMデータを記憶装置30に格納する。
例えば、記憶装置30には、VMデータ31,32,33が格納される。VMデータ31,32,33は、あるOSやアプリケーションなどのソフトウェアを含む1つの仮想マシンイメージから、異なる性能を指定することで作成される。仮想マシンの性能は、メモリ21aやプロセッサ21bなどのハードウェア21のリソースの割り当て量によって決まる。例えば、メモリ21aの割り当て量およびプロセッサ21bの割り当て量が多い程、高性能である。また、メモリ21aの割り当て量およびプロセッサ21bの割り当て量が少ない程、低性能である。
例えば、VMデータ31は、VMデータ31,32,33の中では最も高性能な仮想マシンのデータである。VMデータ32は、VMデータ31,32,33の中での中間の性能の仮想マシンのデータである。VMデータ33は、VMデータ31,32,33の中では最も低性能な仮想マシンのデータである。中間の性能であることを「M(Medium)」と表記する。中間の性能よりも高性能であることを「L(Large)」と表記する。中間の性能よりも低性能であることを「S(Small)」と表記する。
例えば、処理部12は、ユーザによる性能「M」の仮想マシン23の配備指示を受け付けた場合に、性能「L」、「M」、「S」のVMデータ31,32,33を、物理マシン20により記憶装置30に格納させる。性能「M」に対する性能「L」での割り当てリソース量や、性能「M」に対する性能「S」での割り当てリソース量の情報は、記憶部11に予め格納される。処理部12は、物理マシン20によりVMデータ32をメモリ21aにロードさせ、物理マシン20上で、性能「M」の仮想マシン23を実行させる。処理部12は、VMデータ31,32,33の記憶装置30への配置や仮想マシン23の起動完了の結果通知を物理マシン20から受け付けて、性能の異なる複数の仮想マシンの対応関係を示す情報を生成し、記憶部11に格納する。
処理部12は、物理マシン20で稼働中の第1の仮想マシンから取得される負荷を監視する。処理部12は、第1の仮想マシンの負荷が第1の閾値を超えると、第1の仮想マシンよりも高性能な第2の仮想マシンのイメージデータを、記憶装置30からメモリ21aにロードして、第2の仮想マシンを準備状態とする命令を物理マシン20に送信する。
例えば、処理部12は、所定の時間間隔で、仮想マシン23から負荷を取得する。負荷は、例えば、仮想マシン23によるプロセッサ使用率である。負荷は、プロセッサ使用率に代えて、あるいは、プロセッサ使用率と併せて、メモリ使用率などの他の指標で表されてもよい。
処理部12は、仮想マシン23の負荷が第1の閾値を超えると、VMデータ31を、記憶装置30からメモリ21aにロードして、仮想マシン23よりも高性能な仮想マシンを準備状態とする命令を、物理マシン20に送信する。準備状態とは、該当の仮想マシンを起動可能な状態(一時停止となった状態)とすることである。物理マシン20は、当該命令に基づいて、VMデータ31をメモリ21aにロードし、VMデータ31に対応する仮想マシン(仮想マシン24)を起動可能な状態とする。
処理部12は、第1の仮想マシンの負荷の監視を継続する。処理部12は、第1の仮想マシンの負荷が第1の閾値よりも高い第2の閾値を超えると、第1の仮想マシンを第2の仮想マシンに切り替える命令を物理マシン20に送信する。
例えば、処理部12は、仮想マシン23の負荷が第2の閾値を超えると、仮想マシン23を仮想マシン24に切り替える命令を、物理マシン20に送信する。物理マシン20は、当該命令に基づいて、メモリ21aにロードしたVMデータ31により、仮想マシン24を起動させる。物理マシン20は、仮想マシン23を仮想マシン24に切り替える。具体的には、物理マシン20は、仮想マシン24を起動し、ユーザに対するWebサーバ機能などの所定のサービスの提供元を、仮想マシン23から仮想マシン24に切り替える。
物理マシン20は、例えば、負荷分散部を有する。負荷分散部は、仮想マシン23に割り振られていたクライアント端末からのリクエストを、仮想マシン24に割り振るように変更することで、ユーザに対するサービス提供を止めずに、仮想マシンの切り替えを行える。
情報処理システム1によれば、性能の異なる複数の仮想マシンの複数のイメージデータが記憶装置30に格納される。情報処理システム1(物理マシン20)で稼働中の第1の仮想マシンの負荷が監視される。第1の仮想マシンの負荷が第1の閾値を超えると、第1の仮想マシンよりも高性能な第2の仮想マシンのイメージデータが、記憶装置30からメモリ21aにロードされて第2の仮想マシンが準備状態とされる。第1の仮想マシンの負荷が第1の閾値よりも高い第2の閾値を超えると、第1の仮想マシンが第2の仮想マシンに切り替えられる。
これにより、リソースの使用量を抑えて、仮想マシンの迅速な切り替えを可能にする。
具体的には、情報処理装置10は、通常時(仮想マシン23が比較的低負荷の場合)には仮想マシン23を稼働させ、仮想マシン23の負荷が第1の閾値よりも高まると、仮想マシン24をメモリ21aにロードさせて準備状態とさせる。このため、通常時において、仮想マシン24をメモリ21aにロードさせずに済み、メモリ21aの使用量を抑えられる。その結果、ユーザに対するメモリ21aの利用に伴う課金を抑えられる。
更に、仮想マシン24が準備状態となっている間は、仮想マシン24が起動しておらず、プロセッサ21bを使用していない。したがって、仮想マシン24の準備状態では、ユーザに対するプロセッサ21bの利用に伴う課金を抑えられる。
しかも、VMデータ31は、メモリ21aに既にロードされているので、仮想マシン23の負荷が第2の閾値を超えた場合に、物理マシン20は、仮想マシン24を迅速に起動して、仮想マシン23から仮想マシン24への切り替えを行うことができる。
こうして、リソースの使用量を抑えて、仮想マシンの迅速な切り替えを可能にすることができる。また、リソースの使用量を抑えることで、ユーザに対する課金額を抑えることができる。また、負荷が高まっていると推定される適切なタイミングで高性能な仮想マシンへの切り替えを行うことができ、仮想マシンで行われる処理の遅延を抑えられる。
なお、切り替え後には、物理マシン20は、仮想マシン23を停止させ、例えば、所定時間の経過後にVMデータ32をメモリ21aから記憶装置30に退避させてもよい。これにより、仮想マシン23によるリソースの使用量を一層抑えられる。
また、処理部12は、仮想マシン23の負荷が第1の閾値を継続して超えた時間が第1の時間に達した場合に仮想マシン24を準備状態にする命令を物理マシン20に送信してもよい。そして、仮想マシン23の負荷が第2の閾値を継続して超えた時間が第2の時間に達した場合に仮想マシン23を仮想マシン24に切り替える命令を物理マシン20に送信してもよい。これにより、仮想マシン23の負荷が高まる傾向にあることを適切に検出して、仮想マシン24を起動準備できる。また、仮想マシン23が高負荷状態にあることを適切に検出して、仮想マシン23から仮想マシン24への切り替えを行える。
また、処理部12は、仮想マシン24を準備状態にする命令を送信した後、仮想マシン23から仮想マシン24への切り替えが行われずに所定時間が経過すると、仮想マシン24のイメージデータをメモリ21aから削除する命令を物理マシン20に送信してもよい。これにより、仮想マシン23が比較的高い負荷状態にならず、仮想マシン24への切り替えが不要と判断される場合に、メモリ21aの使用量を抑えられる。
更に、処理部12は、仮想マシン23の負荷が第1の閾値よりも低い第3の閾値より低下すると、VMデータ33をメモリ21aにロードして、仮想マシン23よりも低性能な仮想マシンを準備状態とするように、物理マシン20に指示してもよい。そして、処理部12は、仮想マシン23の負荷が第3の閾値よりも低い第4の閾値より低下すると、仮想マシン23を低性能の仮想マシンに切り替えるように物理マシン20に指示してもよい。物理マシン20は、当該指示に応じて、メモリ21aにロードされたVMデータ33に基づいて、低性能の仮想マシンを起動し、仮想マシン23から低性能の仮想マシンへの切り替えを行う。これにより、リソースの使用量を一層抑えながら、仮想マシンの迅速な切り替えを可能にできる。また、リソースの使用量を抑えることで、ユーザに対する課金額を一層抑えることができる。
また、処理部12は、仮想マシン23とは性能の異なる他の仮想マシン(例えば、仮想マシン23)が記憶装置30に退避されてから準備状態に変更されずに所定期間が経過すると、当該他の仮想マシンのイメージデータを記憶装置30から削除する命令を物理マシン20に送信してもよい。これにより、仮想マシン23の負荷状態が比較的安定していると推定される場合に、記憶装置30の使用量を抑えることができる。記憶装置30の使用量を抑えることで、ユーザに対する課金額を一層抑えることができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、管理サーバ100およびVMホスト200,300,…を有する。第2の実施の形態の情報処理システムは、VMホスト200,300,…で実行される仮想マシンをクライアント50により利用可能にする。管理サーバ100およびVMホスト200,300,…は、ネットワーク60に接続される。ネットワーク60は、ネットワーク70に接続されている。クライアント50は、ネットワーク70に接続されている。例えば、ネットワーク60は、LAN(Local Area Network)である。例えば、ネットワーク70は、WAN(Wide Area Network)やインターネットなどである。
管理サーバ100は、VMホスト200,300,…で動作する仮想マシンの運用管理を行うサーバコンピュータである。
VMホスト200,300,…は、仮想マシンを実行するサーバコンピュータである。VMホスト200,300,…のそれぞれは、ハイパーバイザを実行し、ハイパーバイザの機能により、VMホスト200,300,…のそれぞれが備えるCPUやRAMのリソースを仮想マシンに割り当てる。
クライアント50は、ユーザにより操作されるクライアントコンピュータである。クライアント50は、例えば、Webブラウザとして機能し、Webブラウザにより、VMホスト200,300,…上の仮想マシンが提供するWebサービスにアクセスする。
第2の実施の形態の情報処理システムでは、IaaSを提供する。すなわち、第2の実施の形態の情報処理システムは、ネットワーク経由で、コンピュータシステムのリソースを使用する権利をユーザに貸し出し、リソースの使用量や使用時間などの使用状況に応じてユーザへ課金(従量課金)を行う。
図3は、管理サーバのハードウェア例を示すブロック図である。
管理サーバ100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106およびNIC107を有する。これらの各ハードウェアは、管理サーバ100のバスに接続される。なお、CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、管理サーバ100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、管理サーバ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OSやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、管理サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、管理サーバ100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力信号処理部105は、管理サーバ100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、管理サーバ100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
NIC107は、ネットワーク60に接続され、ネットワーク60を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
なお、VMホスト200,300,…やクライアント50も管理サーバ100と同様のハードウェアにより実現される。
図4は、管理サーバの機能例を示す図である。
管理サーバ100は、記憶部120、VM配備部130、負荷計算部140、VM切り替え処理部150、VM状態管理部160およびVM削除部170を有する。記憶部120は、RAM102またはHDD103の記憶領域により実現される。VM配備部130、負荷計算部140、VM切り替え処理部150、VM状態管理部160およびVM削除部170は、例えば、RAM102に記憶されたプログラムをCPU101が実行することで実現される。
記憶部120は、仮想マシンの動作状況を管理するための管理テーブルを記憶する。
VM配備部130は、VMホスト200,300,…に対する仮想マシンの配備の指示を行う。VM配備部130は、ユーザにより指定された性能の仮想マシンを配備する場合に、指定された性能よりも高性能の仮想マシンと、指定された性能よりも低性能の仮想マシンとを退避状態で配備するVM配備命令を、VMホスト200,300,…に送信する。
ここで、仮想マシンの性能は、例えば、仮想マシンに対するCPUやRAMの割り当て量により決まる。仮想マシンの性能は、フレーバーと呼ばれることがある。例えば、VMホスト200,300,…は、1つの仮想マシンイメージから、性能の異なる複数の仮想マシンを配備することができる。
ユーザによって配備指示された仮想マシンの割り当てリソース量に対し、1段階だけ高性能な仮想マシンへの割り当てリソース量を示す情報、および、1段階だけ低性能な仮想マシンへの割り当てリソース量を示す情報は、記憶部120に予め格納される。例えば、当該割り当てリソース量は、ユーザによる指定されたリソース量に対する差分の情報として予め与えられる。例えば、差分の情報では、CPUの割り当て量の差分が、CPUの個数やクロック数などにより表され、RAMの割り当て量の差分が、RAMのサイズなどにより表される。VM配備部130は、記憶部120に記憶された当該情報に基づいて、ユーザにより配備指示された仮想マシンに対し、当該仮想マシンの性能よりも1段階だけ高性能な仮想マシン、および、1段階だけ低性能な仮想マシンへの割り当てリソース量を決定する。
負荷計算部140は、VMホスト200,300,…で動作する仮想マシンから当該仮想マシンの負荷を示す負荷情報を定期的に取得し、負荷情報に基づいて仮想マシンの負荷を計算する。仮想マシンの負荷は、例えば、仮想マシンに割り当てられたCPUに対する、当該仮想マシンのCPU使用率である。ただし、仮想マシンの負荷は、CPU使用率に加えて、または、CPU使用率に代えて、仮想マシンによるRAM使用率、仮想マシンへのログイン人数、仮想マシンによるディスクアクセス数や仮想マシンによる通信トラフィック量などにより評価されてもよい。例えば、CPU使用率およびRAM使用率などの複数の指標を用いて仮想マシンの負荷を評価する場合、負荷計算部140は、各指標を正規化し、正規化した各指標の平均を求めることで、仮想マシンの負荷を計算することが考えられる。
VM切り替え処理部150は、負荷計算部140により取得された仮想マシンの負荷に基づいて、現在の性能の仮想マシンから異なる性能の仮想マシンへ切り替えるVM切り替え命令を、VMホスト200,300,…に送信する。
VM状態管理部160は、仮想マシンの状態をVMホスト200,300,…から取得し、記憶部120に記憶された管理テーブルに記録する。
VM削除部170は、VM切り替え処理部150により、所定期間以上、切り替えが行われなかった仮想マシンを特定し、特定した仮想マシンに対する切り替え先候補の仮想マシンを削除するVM削除命令を、VMホスト200,300,…に送信する。
図5は、VMホストの機能例を示す図である。
VMホスト200は、VM配備実行部210、負荷情報通知部220、VM切り替え実行部230、VM状態通知部240およびVM削除実行部250を有する。VM配備実行部210、負荷情報通知部220、VM切り替え実行部230、VM状態通知部240およびVM削除実行部250は、例えば、VMホスト200のプロセッサがVMホスト200のRAMに記憶されたプログラムを実行することで実現される。
VM配備実行部210は、VM配備部130からVM配備命令を受け付け、VMホスト200上に仮想マシンを配備する。仮想マシンの配備は、ある仮想マシンイメージに対して、割り当てるリソース量(すなわち、性能)を指定することで行われる。前述のように、VM配備実行部210は、ある性能の仮想マシンを配備する場合に、当該仮想マシンよりも高性能な仮想マシンと、低性能な仮想マシンとを配備する。高性能な仮想マシンと低性能な仮想マシンとは、例えば、VMホスト200が備えるHDDやSSDなどの補助記憶装置、または、ネットワーク60に接続された外部ストレージなどに退避された状態(退避状態)とされる。退避状態の仮想マシンに対して、VMホスト200のCPUやRAMは使用されない。
負荷情報通知部220は、VMホスト200で稼働している仮想マシンの負荷を示す負荷情報を定期的に取得し、負荷計算部140に送信する。
VM切り替え実行部230は、VM切り替え処理部150からVM切り替え命令を受け付け、VM切り替え命令に基づいて、VM切り替えを実行する。VM切り替え実行部230の機能は、例えば、VMホスト200が有する負荷分散機能により実現される。
VM状態通知部240は、VM切り替え実行部230によるVM切り替えに応じて、VMホスト200で管理される仮想マシンの状態を取得し、取得した仮想マシンの状態をVM状態管理部160に送信する。
VM削除実行部250は、VM削除部170からVM削除命令を受け付け、VM削除命令に基づいて、VMホスト200で管理される仮想マシンを削除する。
なお、VMホスト300を含む他のVMホストも、VMホスト200と同様の機能を有する。
図6は、VMホストのVM配備例を示す図である。
VMホスト200は、ハードウェア200hを有する。ハードウェア200hは、CPU201、RAM202およびHDD203を含む。VMホスト200は、HDD203に代えて、または、HDD203と合わせて、SSDなどの他の種類の記憶装置を有してもよい。また、ハードウェア200hは、仮想マシンの動作に用いられるNICなどの他のハードウェアも含む(図示を省略している)。
VMホスト200は、ハイパーバイザ260を有する。ハイパーバイザ260は、CPU201、RAM202およびHDD203のリソースを仮想マシンに割り当て、VMホスト200上で仮想マシンを動作させる。
VMホスト200は、例えば、仮想マシン261,262,263,…,270および負荷分散部280を有する。仮想マシン261,262,263は、例えば、Webサーバ機能を提供する。仮想マシン270は、例えば、APサーバ機能を提供し、仮想マシン261,262,263の何れかから受信する処理要求に応じた処理を実行する。負荷分散部280は、複数の仮想マシンにリクエストを分散させる機能を有する。ここでは、負荷分散部280は、VM切り替え処理に用いられる。負荷分散部280は、仮想マシンにより実現されてもよい。
仮想マシン261,262,263は、共通の仮想マシンイメージから起動された仮想マシンのインスタンスである。ただし、仮想マシン261,262,263は、性能(フレーバー)が互いに異なる。仮想マシン261は、仮想マシン261,262,263の中で、最も高い性能である。仮想マシン262は、仮想マシン261,262,263の中で、中間の性能である。仮想マシン263は、仮想マシン261,262,263の中で、最も低い性能である。
仮想マシン261の識別名は「VM1−L」である。仮想マシン262の識別名は「VM1−M」である。仮想マシン263の識別名は「VM1−S」である。仮想マシン270の識別名は「VM2」である。
通常運用時では、中間の性能の仮想マシン262が稼働し、ユーザに利用される。稼働状態は、「Active」と記される。通常運用時では、仮想マシン261,263は、HDD203または外部ストレージへ退避された退避状態とされる。退避状態は、「Shelved」と記される。退避状態では、該当の仮想マシン(例えば、仮想マシン261,263)がシャットダウンされて、当該仮想マシンのVMデータが、HDD203または外部ストレージに格納され、当該VMデータがVMホスト200のRAMから削除される。退避状態は、例えば、Openstack(登録商標)におけるshelveコマンドにより仮想マシンのインスタンスが補助記憶装置に退避された状態でもよい。Shelvedの状態の仮想マシンの再開時には、VMデータをRAMに展開してから起動することになるので、起動に要する時間が比較的長い。
なお、仮想マシンの状態としては、仮想マシンのイメージデータがVMホスト200のRAMにロードされているが当該仮想マシンが起動していない一時停止の状態もある。一時停止の状態は、「Stopped」と記される。一時停止状態では、該当の仮想マシンは起動しておらず、VMホスト200のCPUは使用されない。一時停止状態は、例えば、Openstackにおけるpauseコマンドにより、仮想マシンの状態がVMホストの主記憶装置に格納されて当該仮想マシンが一時停止された状態でもよい。Stoppedの状態では、仮想マシンのVMデータがRAM上に展開されているが、動作は停止されている。Stoppedの状態の仮想マシンの再開時には、CPUを割り当てれば当該仮想マシンを起動できるので、起動に要する時間が比較的短い(Shelvedの状態から再開するよりも高速に再開できる)。
図7は、条件表の例を示す図である。
条件表151は、VM切り替え処理のための条件を示す。VM切り替え処理部150は、仮想マシン262の負荷に基づいて、仮想マシン262を、仮想マシン261または仮想マシン263に切り替えるか否かを判定する。例えば、VM切り替え処理部150は、条件表151で示される条件に基づいて、当該判定を行う。条件表151は、分類、条件名、条件内容および処理区分の項目を含む。
分類の項目には、該当の条件が、仮想マシンをダウンサイズするための条件か、または、仮想マシンをアップサイズするための条件かを示す情報が登録される。「ダウンサイズ」は、仮想マシンをダウンサイズする(すなわち、性能を下げる)ための条件であることを示す。「アップサイズ」は、仮想マシンをアップサイズ(すなわち、性能を上げる)ための条件であることを示す。条件名の項目には、条件の名称が登録される。条件内容の項目には、条件の具体的な内容が登録される。処理区分の項目には、該当の条件に応じた処理区分が登録される。処理区分には、「切替準備」および「切替実行」がある。「切替準備」は、退避状態のVMデータをVMホストのRAMにロードし、一時停止状態(Stopped)とすることを示す。「切替実行」は、一時停止状態の仮想マシンにCPUを割り当てて起動させ、既存の仮想マシンから起動後の仮想マシンへ、サービス提供主体を切り替えることを示す。
条件表151によれば、条件D1,D2,U1,U2がある。
「条件D1」は、仮想マシンの「CPU使用率20%未満が10分以上継続」した場合に、「ダウンサイズ」の「切替準備」の命令をVMホストに送信することを示す。
「条件D2」は、仮想マシンの「CPU使用率10%未満が30分以上継続」した場合に、「ダウンサイズ」の「切替実行」の命令をVMホストに送信することを示す。例えば、「条件D2」の条件内容は、「条件D1」が充足されて「切替準備」が行われた直後の時点を基準に判定される。
「条件U1」は、仮想マシンの「CPU使用率50%超過が10分以上継続」した場合に、「アップサイズ」の「切替準備」の命令をVMホストに送信することを示す。ただし、後述するように、条件U1における「CPU使用率50%」というCPU使用率の閾値は、初期値であり、仮想マシンの負荷状況に応じて可変である。
「条件U2」は、仮想マシンの「CPU使用率90%超過が30分以上継続」した場合に、「アップサイズ」の「切替実行」の命令をVMホストに送信することを示す。例えば、「条件U2」の条件内容は、「条件U1」が充足されて「切替準備」が行われた直後の時点を基準に判定される。
図8は、管理テーブルの例を示す図である。
管理テーブル121は、記憶部120に格納される。管理テーブル121は、VM名、状態、種類、条件D1充足、条件D2充足、条件U1−CPU使用率閾値、条件U1充足、条件U2充足、性能および状態更新日時の項目を含む。
VM名の項目には、仮想マシンの識別名が登録される。状態の項目には、該当の仮想マシンの状態が登録される。種類の項目には、仮想マシンの種類が登録される。仮想マシンの種類には2種類ある。1つ目の種類は、稼働中の仮想マシンであることを示す「稼働中VM」である。2つ目の種類は、稼働中の仮想マシンに対する切り替え先の候補の仮想マシンであることを示す「切替先VM」である。例えば、稼働中(切り替え元)の仮想マシンと、切り替え先の候補の仮想マシンとは、VM名によって対応付けられる。一例では、VM名に含まれるハイフン記号「−」の左側の部分(例えば、「VM1−M」などの「VM1」の部分)が共通する仮想マシンが、切り替え元および切り替え先の候補の関係にある。なお、以下の説明では、稼働中(切り替え元)の仮想マシンを「切替元VM」と称することがある。また、切り替え先の候補の仮想マシンを「切替先VM」と称することがある。
条件D1充足の項目には、条件D1が充足されたか否かを示すフラグが登録される。条件D2充足の項目には、条件D2が充足されたか否かを示すフラグが登録される。条件U1−CPU使用率閾値の項目には、条件U1におけるCPU使用率閾値の、該当の仮想マシンに対する現在の設定値が登録される。条件U1充足の項目には、条件U1が充足されたか否かを示すフラグが登録される。条件U2充足の項目には、条件U2が充足されたか否かを示すフラグが登録される。性能の項目には、該当の仮想マシンの性能を示す情報が登録される。図8の例では、所定の性能を「M」と表し、性能「M」で示される性能よりも低い性能を「S」と表し、性能「M」で示される性能よりも高い性能を「L」と表している。状態更新日時の項目には、該当の仮想マシンについて、状態を更新した最終の日時が登録される。
なお、状態「Active」(種類「稼働中VM」)以外の仮想マシンについては、条件D1充足、条件D2充足、条件U1−CPU使用率閾値、条件U1充足、条件U2充足の項目は、「Null」となる。状態「Active」の仮想マシンの条件D1充足、条件D2充足、条件U1充足、条件U2充足の項目の初期値は、「False」である。状態「Active」の仮想マシンの条件U1−CPU使用率閾値の項目の初期値は、「50%」である。
例えば、管理テーブル121には、VM名が「VM1−M」、状態が「Active」、種類が「稼働中VM」、条件D1充足が「False」、条件D2充足が「False」、条件U1−CPU使用率閾値が「50%」、条件U1充足が「True」、条件U2充足が「False」、性能が「M」、状態更新日時が「2018−06−02 14:30」というレコードが登録されている。このレコードは、仮想マシン262が稼働状態(Active)であり、性能が「M」であること、最終の状態更新日時が2018年6月2日14時30分であることを示す。また、仮想マシン262に対して、条件D1,D2が充足されていないこと、条件U1のCPU使用率閾値が50%であり、条件U1が充足されており、条件U2が充足されていないことを示す。
また、管理テーブル121には、VM名が「VM1−S」、状態が「Shelved」、種類が「切替先VM」、性能が「S」、状態更新日時が「2018−05−31 15:00」というレコードが登録されている。このレコードは、仮想マシン263が退避状態(Shelved)で、仮想マシン262の切り替え先の候補であること、性能が「S」であり、最終の状態更新日が2018年5月31日15時00分であることを示す。
また、管理テーブル121には、VM名が「VM1−L」、状態が「Shelved」、種類が「切替先VM」、性能が「L」、状態更新日時が「2018−06−01 15:30」というレコードが登録されている。このレコードは、仮想マシン261が退避状態(Shelved)で、仮想マシン262の切り替え先の候補であること、性能が「L」であり、最終の状態更新日が2018年6月1日15時30分であることを示す。
管理テーブル121では、仮想マシン262と、仮想マシン262の切り替え先の候補である仮想マシン261,263が登録されている例を示したが、他の仮想マシンが存在する場合も管理テーブル121と同様のレコードが登録される。
また、管理サーバ100は、VM名に対して、当該VM名の仮想マシンが配備されているVMホストを示す情報を保持しており、VM名に基づいて、当該VM名の仮想マシンが配備されているVMホストを特定することができる。また、管理サーバ100は、VM名に対して、当該VM名に対応するVMデータの格納場所を示すパスを保持し、VM名に基づいて、準備状態(一時停止状態)とする仮想マシンのVMデータを、VMホストに対して指定してもよい。
次に、管理サーバ100の命令に基づく、VMホスト200による仮想マシンの切り替え例について説明する。VMホスト200に着目して説明するが、他のVMホストについても同様の制御である。まず、仮想マシンのダウンサイズを行う切り替え例を説明する。
図9は、ダウンサイズの準備例を示す図である。
VMホスト200では、仮想マシン261,262,263が配備されている。仮想マシン262は、稼働状態(Active)である。仮想マシン261,263は、退避状態(Shelved)である。
VM切り替え処理部150は、負荷計算部140により計算される仮想マシン262の負荷を定期的に監視する。
VM切り替え処理部150は、仮想マシン262に対して条件D1が充足されたことを検出する。すると、VM切り替え処理部150は、仮想マシン263を、退避状態(Shelved)から、一時停止状態(Stopped)に変更するVM状態変更命令をVMホスト200に送信する。
VM切り替え実行部230は、VM状態変更命令を受け付けると、VM状態変更命令に基づいて、仮想マシン263のVMデータを、VMホスト200のRAMにロードし、仮想マシン263を一時停止状態(Stopped)に変更する。VM状態通知部240は、仮想マシン263が一時停止状態に変更されたことをVM状態管理部160に通知する。VM状態管理部160は、当該通知に基づいて、仮想マシン263が一時停止状態になったことを管理テーブル121に登録する。なお、状態の更新とともに、状態更新日時も更新される(以下、同様)。こうして、ダウンサイズの準備(切替準備)が完了する。
VM切り替え処理部150は、仮想マシン262に対して条件D1が充足されたことを管理テーブル121に登録し、引き続き、仮想マシン262の負荷を監視して、条件D2に基づく判定を行う。
図10は、ダウンサイズの中止例および実行例を示す図である。
図10(A)は、ダウンサイズの中止例を示す。VM切り替え処理部150は、仮想マシン262に対し、条件D1が充足された後、条件D2が充足されない場合(条件D1の充足後の30分間継続してCPU使用率が10%未満にならなかった場合)、ダウンサイズを中止すると決定する。この場合、VM切り替え処理部150は、仮想マシン263を、一時停止状態(Stopped)から、退避状態(Shelved)に変更するVM状態変更命令をVMホスト200に送信する。
VM切り替え実行部230は、VM状態変更命令を受け付けると、VM状態変更命令に基づいて、仮想マシン263のVMデータを、HDD203または外部ストレージに退避させ、VMホスト200のRAMから削除する。これにより、仮想マシン263が一時停止状態(Stopped)から、退避状態(Shelved)に変更される。VM状態通知部240は、仮想マシン263が退避状態に変更されたことをVM状態管理部160に通知する。VM状態管理部160は、当該通知に基づいて、仮想マシン263が退避状態になったことを管理テーブル121に登録する。こうして、ダウンサイズが中止される。
図10(B)は、ダウンサイズの実行例を示す。VM切り替え処理部150は、仮想マシン262に対し、条件D1が充足された後、条件D2が充足されたことを検出すると、ダウンサイズを実行すると決定する。この場合、VM切り替え処理部150は、仮想マシン263を、一時停止状態(Stopped)から、稼働状態(Active)に変更し、仮想マシン263に切り替えるVM切り替え命令をVMホスト200に送信する。
VM切り替え実行部230は、VM切り替え命令を受け付けると、VM切り替え命令に基づいて、仮想マシン263を、一時停止状態(Stopped)から稼働状態(Active)に変更する。すなわち、VM切り替え実行部230は、仮想マシン263にCPUを割り当て、VMホスト200のRAMにロード済のVMデータから、仮想マシン263を起動する。そして、VM切り替え実行部230は、負荷分散部280を制御して、仮想マシン262に振り分けられていたリクエストを、仮想マシン263に振り分けるようにする。
また、VM切り替え実行部230は、仮想マシン262を、稼働状態(Active)から一時停止状態(Stopped)に変更する。VM状態通知部240は、仮想マシン263が稼働状態に変更されたこと、および、仮想マシン262が一時停止状態に変更されたことをVM状態管理部160に通知する。VM状態管理部160は、当該通知に基づいて、仮想マシン263が稼働状態になったこと、および、仮想マシン262が一時停止状態になったことを、管理テーブル121に登録する。
更に、VM配備部130は、仮想マシン263よりも低い性能の仮想マシン264を退避状態で配備するVM配備命令、および、仮想マシン261を削除するVM削除命令をVMホスト200に送信する。
VM配備実行部210は、当該VM配備命令およびVM削除命令を受け付けると、これらの命令に基づいて、仮想マシン261を削除する(仮想マシン261のVMデータをHDD203または外部ストレージから削除する)。また、VM配備実行部210は、仮想マシン264を退避状態(Shelved)で配備する。例えば、仮想マシン264のVM名は「VM1−SS」である。
VM状態通知部240は、仮想マシン261が削除されたこと、および、仮想マシン264が退避状態で配備されたことをVM状態管理部160に通知する。VM状態管理部160は、当該通知に基づいて、仮想マシン261のレコードを管理テーブル121から削除し、仮想マシン264に関するレコードを管理テーブル121に追加する。
次に、仮想マシンのアップサイズを行う切り替え例を説明する。
図11は、アップサイズの準備例を示す図である。
VMホスト200では、仮想マシン261,262,263が配備されている。仮想マシン262は、稼働状態(Active)である。仮想マシン261,263は、退避状態(Shelved)である。
VM切り替え処理部150は、負荷計算部140により計算される仮想マシン262の負荷を定期的に監視する。
VM切り替え処理部150は、仮想マシン262に対して条件U1が充足されたことを検出する。すると、VM切り替え処理部150は、仮想マシン261を、退避状態(Shelved)から、一時停止状態(Stopped)に変更するVM状態変更命令をVMホスト200に送信する。
VM切り替え実行部230は、VM状態変更命令を受け付けると、VM状態変更命令に基づいて、仮想マシン261のVMデータを、VMホスト200のRAMにロードし、仮想マシン261を一時停止状態(Stopped)に変更する。VM状態通知部240は、仮想マシン261が一時停止状態に変更されたことをVM状態管理部160に通知する。VM状態管理部160は、当該通知に基づいて、仮想マシン261が一時停止状態になったことを管理テーブル121に登録する。こうして、アップサイズの準備(切替準備)が完了する。
VM切り替え処理部150は、仮想マシン262に対して条件U1が充足されたことを管理テーブル121に登録し、引き続き、仮想マシン262の負荷を監視して、条件U2に基づく判定を行う。
図12は、アップサイズの中止例および実行例を示す図である。
図12(A)は、アップサイズの中止例を示す。VM切り替え処理部150は、仮想マシン262に対し、条件U1が充足された後、条件U2が充足されない場合(条件U1の充足後の30分間継続してCPU使用率が90%を超過しなかった場合)、アップサイズを中止すると決定する。この場合、VM切り替え処理部150は、仮想マシン261を、一時停止状態(Stopped)から、退避状態(Shelved)に変更するVM状態変更命令をVMホスト200に送信する。
VM配備実行部210は、VM状態変更命令を受け付けると、VM状態変更命令に基づいて、仮想マシン261のVMデータを、HDD203または外部ストレージに退避させ、VMホスト200のRAMから削除する。これにより、仮想マシン261が一時停止状態(Stopped)から、退避状態(Shelved)に変更される。VM状態通知部240は、仮想マシン261が退避状態に変更されたことをVM状態管理部160に通知する。VM状態管理部160は、当該通知に基づいて、仮想マシン261が退避状態になったことを管理テーブル121に登録する。こうして、アップサイズが中止される。
なお、この場合、VM切り替え処理部150は、仮想マシン262に対して、条件U1のCPU使用率閾値を、所定量(例えば、10%程度)だけ増加させ、増加後のCPU使用率閾値を管理テーブル121に登録する。
図12(B)は、アップサイズの実行例を示す。VM切り替え処理部150は、仮想マシン262に対し、条件U1が充足された後、条件U2が充足されたことを検出すると、アップサイズを実行すると決定する。この場合、VM切り替え処理部150は、仮想マシン261を、一時停止状態(Stopped)から、稼働状態(Active)に変更し、仮想マシン261に切り替えるVM切り替え命令をVMホスト200に送信する。
VM切り替え実行部230は、VM切り替え命令を受け付けると、VM切り替え命令に基づいて、仮想マシン261を、一時停止状態(Stopped)から稼働状態(Active)に変更する。すなわち、VM切り替え実行部230は、仮想マシン261にCPUを割り当て、VMホスト200のRAMにロード済のVMデータから、仮想マシン261を起動する。そして、VM切り替え実行部230は、負荷分散部280を制御して、仮想マシン262に振り分けられていたリクエストを、仮想マシン261に振り分けるようにする。
また、VM切り替え実行部230は、仮想マシン262を、稼働状態(Active)から一時停止状態(Stopped)に変更する。VM状態通知部240は、仮想マシン261が稼働状態に変更されたこと、および、仮想マシン262が一時停止状態に変更されたことをVM状態管理部160に通知する。VM状態管理部160は、当該通知に基づいて、仮想マシン261が稼働状態になったこと、および、仮想マシン262が一時停止状態になったことを、管理テーブル121に登録する。
更に、VM配備部130は、仮想マシン261よりも高い性能の仮想マシン265を退避状態で配備するVM配備命令および仮想マシン263を削除するVM削除命令をVMホスト200に送信する。
VM配備実行部210は、VM配備命令およびVM削除命令を受け付けると、これらの命令に基づいて、仮想マシン263を削除する(仮想マシン263のVMデータをHDD203または外部ストレージから削除する)。また、VM配備実行部210は、仮想マシン265を退避状態(Shelved)で配備する。例えば、仮想マシン265のVM名は「VM1−LL」である。
VM状態通知部240は、仮想マシン263が削除されたこと、および、仮想マシン265が退避状態で配備されたことをVM状態管理部160に通知する。VM状態管理部160は、当該通知に基づいて、仮想マシン263のレコードを管理テーブル121から削除し、仮想マシン265に関するレコードを管理テーブル121に追加する。
次に、管理サーバ100およびVMホスト200,300,…による処理手順を説明する。以下では、VMホスト200に着目して説明するが、他のVMホストについても同様の手順である。
図13は、管理サーバの処理例を示すフローチャートである。
(S1)VM配備部130は、ユーザによる仮想マシン262の配備指示を受け付ける。すると、VM配備部130は、仮想マシン262をActiveの状態で配備し、仮想マシンよりも1段階上の性能の仮想マシン261と1段階下の性能の仮想マシン262とをShelvedの状態で配備するVM配備命令をVMホスト200に送信する。VMホスト200は、VM配備命令に基づいて、仮想マシン262をActiveの状態で配備し、仮想マシン261,263をShelvedの状態で配備する。VM状態管理部160は、当該配備が行われた旨の通知をVMホスト200から受け付け、管理テーブル121に、仮想マシン261,262,263のレコードを追加する。
(S2)負荷計算部140は、VMホスト200から仮想マシン262の負荷情報を定期的に受信し、負荷情報に基づいて仮想マシン262の負荷を計算する。VM切り替え処理部150は、負荷計算部140により計算された仮想マシン262の負荷状況を監視する。
(S3)VM切り替え処理部150は、仮想マシン262の負荷状況に基づいて、VM切り替え制御を行う。VM切り替え制御の詳細は、後述される。
(S4)VM削除部170は、一定期間VM切り替えが行われない場合に、切替先VMを削除する不要VM削除を行う。不要VM削除の詳細は後述される。そして、処理が終了する。
ここで、管理サーバ100は、ステップS2,S3の処理と、ステップS4の処理とを並行して実行し得る。
次に、管理サーバ100およびVMホスト200による仮想マシンのVM切り替え制御の手順を説明する。まず、ダウンサイズのVM切り替え制御の手順を説明する。
図14は、VM切り替え制御(ダウンサイズ)の例を示すフローチャートである。
VM切り替え制御(ダウンサイズ)は、ステップS3(ただし、ダウンサイズを行う場合)に相当する。
ステップS10の前の時点で、仮想マシン261,262,263がVMホスト200に配備されており、仮想マシン262が稼働状態、仮想マシン261,263が退避状態であるとする。
(S10)負荷計算部140は、VMホスト200から仮想マシン262の負荷状態を1分毎に取得する。ただし、負荷状態を取得する周期について、1分は例示であり、他の周期でもよい。負荷計算部140は、仮想マシン262の負荷を計算し、VM切り替え処理部150に提供する。
(S11)VM切り替え処理部150は、仮想マシン262の負荷が条件D1を充足しているか否かを判定する。仮想マシン262の負荷が条件D1を充足している場合、ステップS14に処理が進む。仮想マシン262の負荷が条件D1を充足していない場合、ステップS12に処理が進む。
なお、VM切り替え処理部150は、仮想マシン262に対し、管理テーブル121の条件D1充足の項目のフラグにより、仮想マシン262の負荷に対する条件D1の充足状況を管理する。VM切り替え処理部150は、仮想マシン262の負荷が条件D1を充足していない状態から条件D1を充足している状態になったことを検出すると、仮想マシン262に対し、管理テーブル121の条件D1充足を、FalseからTrueに変更する。VM切り替え処理部150は、条件D1の充足後、仮想マシン262の負荷状況が、条件D1を満たさなくなった(CPU使用率が条件D1の閾値を下回った)場合、管理テーブル121の条件D1充足を、TrueからFalseに変更する。
(S12)VM切り替え処理部150は、管理テーブル121を参照して、切替先VM(ここでは、仮想マシン263)の状態がShelvedであるか否かを判定する。切替先VMの状態がShelvedである場合、ステップS10に処理が進む。切替先VMの状態がShelvedでない場合、ステップS13に処理が進む。ここで、ステップS12において、切替先VMの状態がShelvedでない場合とは、切替先VMの状態がStoppedである場合である。
(S13)VM切り替え処理部150は、切替先VMをStoppedからShelvedに変更するVM状態変更命令をVMホスト200に送信する。VMホスト200では、VM状態変更命令に基づいて、仮想マシン263がStoppedからShelvedに変更される。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン263の状態をShelvedに変更し、状態更新日を更新する。そして、ステップS10に処理が進む。
(S14)VM切り替え処理部150は、管理テーブル121を参照して、切替先VMの状態がStoppedであるか否かを判定する。切替先VMの状態がStoppedである場合、ステップS16に処理が進む。切替先VMの状態がStoppedでない場合、ステップS15に処理が進む。ここで、ステップS14において、切替先VMの状態がStoppedでない場合とは、切替先VMの状態がShelvedである場合である。
(S15)VM切り替え処理部150は、切替先VMをShelvedからStoppedに変更するVM状態変更命令をVMホスト200に送信する。VMホスト200では、VM状態変更命令に基づいて、仮想マシン263がShelvedからStoppedに変更される。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン263の状態をStoppedに変更し、状態更新日を更新する。そして、ステップS10に処理が進む。
(S16)VM切り替え処理部150は、仮想マシン262の負荷が条件D2を充足しているか否かを判定する。仮想マシン262の負荷が条件D2を充足している場合、ステップS19に処理が進む。仮想マシン262の負荷が条件D2を充足していない場合、ステップS17に処理が進む。
なお、VM切り替え処理部150は、仮想マシン262に対し、管理テーブル121の条件D2充足の項目のフラグにより、仮想マシン262の負荷に対する条件D2の充足状況を管理する。VM切り替え処理部150は、仮想マシン262の負荷が条件D2を充足していない状態から条件D2を充足している状態になったことを検出すると、仮想マシン262に対し、管理テーブル121の条件D2充足を、FalseからTrueに変更する。
(S17)VM切り替え処理部150は、ステップS15で切替先VMをStoppedに変更した時点から所定時間、VM切り替えが未発生であるか否かを判定する。切替先VMをStoppedに変更した時点から所定時間、VM切り替えが未発生である場合、ステップS18に処理が進む。切替先VMをStoppedに変更した時点から所定時間が経過していない場合は、ステップS10に処理が進む。ここで、所定時間は、例えば、30分(条件D2の監視時間以上の時間とする)である。
(S18)VM切り替え処理部150は、切替先VMをStoppedからShelvedに変更するVM状態変更命令をVMホスト200に送信する。VMホスト200では、VM状態変更命令に基づいて、仮想マシン263がStoppedからShelvedに変更される。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン263の状態をShelvedに変更し、状態更新日を更新する。そして、ステップS10に処理が進む。
(S19)VM切り替え処理部150は、VM切り替え(ダウンサイズ)を行う。具体的には、VM切り替え処理部150は、切替先VMをStoppedからActiveに変更し、現行のVM(仮想マシン262)から切替先VM(仮想マシン263)に切り替えるVM切り替え命令をVMホスト200に送信する。VMホスト200では、VM切り替え命令に基づいて、仮想マシン263がStoppedからActiveに変更される。そして、負荷分散部280により、クライアント50からのリクエストの振り分け先が、仮想マシン262から仮想マシン263に切り替えられる。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン263の状態をActiveに変更し、状態更新日を更新する。この後、負荷の監視対象の仮想マシンは、切り替え後の仮想マシンとなる。
(S20)VM切り替え処理部150は、ダウンサイズ後処理を実行する。ダウンサイズ後処理の詳細は後述される。そして、ステップS10に処理が進む。
図15は、ダウンサイズ後処理の例を示すフローチャートである。
ダウンサイズ後処理は、ステップS20に相当する。
(S30)VM切り替え処理部150は、切替元VM(ここでは仮想マシン262)をActiveからStoppedに変更するVM状態変更命令をVMホスト200に送信する。VMホスト200では、VM状態変更命令に基づいて、仮想マシン262がActiveからStoppedに変更される。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン262の状態をStoppedに変更し、状態更新日を更新する。
(S31)VM配備部130は、切替先VM(ここでは仮想マシン263)の1段階下の性能の仮想マシン(仮想マシン264)を退避状態(Shelved)で配備するVM配備命令をVMホスト200に送信する。VMホスト200では、VM配備命令に基づいて、仮想マシン264が退避状態で配備される。また、VM状態管理部160は、当該配備が行われた旨の通知をVMホスト200から受け付け、管理テーブル121に仮想マシン264のレコードを追加する。
(S32)VM配備部130は、切替元VMの1段階上の性能の仮想マシン(ここでは仮想マシン261)を削除するVM削除命令をVMホスト200に送信する。VMホスト200では、VM削除命令に基づいて、仮想マシン261が削除される。また、VM状態管理部160は、当該削除が行われた旨の通知をVMホスト200から受け付け、管理テーブル121から仮想マシン261のレコードを削除する。
次に、仮想マシン262から仮想マシン261へダウンサイズする場合のダウンサイズ後処理の具体例を説明する。
図16は、ダウンサイズ後処理の具体例を示す図である。
まず、管理サーバ100のVM切り替え制御により、クライアント50からのリクエストの振り分け先が、仮想マシン262から仮想マシン263へ切り替えられる(ステップT10)。このタイミングでは、仮想マシン261はShelvedである。仮想マシン262はActiveである。仮想マシン263はActiveである。
次に、仮想マシン262がStoppedに変更される(ステップT11)。仮想マシン263よりも1段階下の性能の仮想マシン264が配備される(ステップT12)。仮想マシン261が削除される(ステップT13)。その結果、稼働中の仮想マシン263に対して、1段階上の性能の仮想マシン262がStoppedで配備され、1段階下の性能の仮想マシン264がShelvedで配備された状態となる(ステップT14)。
ステップT14の後、管理サーバ100は、仮想マシン263に対して、負荷状況の監視を行い、仮想マシン262に対する手順と同様の手順により、VM切り替え制御を行う。なお、VM切り替え処理部150は、例えば、仮想マシン263をActiveの状態にしてから所定時間(例えば、30分)経過後に、切替元VMである仮想マシン262をShelvedに変更する。これにより、ユーザへの課金を低減する。
次に、アップサイズのVM切り替え制御の手順を説明する。
図17は、VM切り替え制御(アップサイズ)の例を示すフローチャートである。
VM切り替え制御(アップサイズ)は、ステップS3(ただし、アップサイズを行う場合)に相当する。
ステップS40の前の時点で、仮想マシン261,262,263がVMホスト200に配備されており、仮想マシン262が稼働状態、仮想マシン261,263が退避状態であるとする。
(S40)負荷計算部140は、VMホスト200から仮想マシン262の負荷状態を1分毎に取得する。ただし、負荷状態を取得する周期について、1分は例示であり、他の周期でもよい。負荷計算部140は、仮想マシン262の負荷を計算し、VM切り替え処理部150に提供する。
(S41)VM切り替え処理部150は、仮想マシン262の負荷が条件U1を充足しているか否かを判定する。仮想マシン262の負荷が条件U1を充足している場合、ステップS44に処理が進む。仮想マシン262の負荷が条件U1を充足していない場合、ステップS42に処理が進む。
なお、VM切り替え処理部150は、仮想マシン262に対し、管理テーブル121の条件U1充足の項目のフラグにより、仮想マシン262の負荷に対する条件U1の充足状況を管理する。VM切り替え処理部150は、仮想マシン262の負荷が条件U1を充足していない状態から条件U1を充足している状態になったことを検出すると、仮想マシン262に対し、管理テーブル121の条件U1充足を、FalseからTrueに変更する。VM切り替え処理部150は、条件U1の充足後、仮想マシン262の負荷状況が、条件U1を満たさなくなった(CPU使用率が条件U1の閾値を下回った)場合、管理テーブル121の条件U1充足を、TrueからFalseに変更する。
(S42)VM切り替え処理部150は、管理テーブル121を参照して、切替先VM(ここでは、仮想マシン261)の状態がShelvedであるか否かを判定する。切替先VMの状態がShelvedである場合、ステップS40に処理が進む。切替先VMの状態がShelvedでない場合、ステップS43に処理が進む。ここで、ステップS42において、切替先VMの状態がShelvedでない場合とは、切替先VMの状態がStoppedである場合である。
(S43)VM切り替え処理部150は、切替先VMをStoppedからShelvedに変更するVM状態変更命令をVMホスト200に送信する。VMホスト200では、VM状態変更命令に基づいて、仮想マシン261がStoppedからShelvedに変更される。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン261の状態をShelvedに変更し、状態更新日を更新する。そして、ステップS40に処理が進む。
(S44)VM切り替え処理部150は、管理テーブル121を参照して、切替先VMの状態がStoppedであるか否かを判定する。切替先VMの状態がStoppedである場合、ステップS46に処理が進む。切替先VMの状態がStoppedでない場合、ステップS45に処理が進む。ここで、ステップS44において、切替先VMの状態がStoppedでない場合とは、切替先VMの状態がShelvedである場合である。
(S45)VM切り替え処理部150は、切替先VMをShelvedからStoppedに変更するVM状態変更命令をVMホスト200に送信する。VMホスト200では、VM状態変更命令に基づいて、仮想マシン261がShelvedからStoppedに変更される。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン261の状態をStoppedに変更し、状態更新日を更新する。そして、ステップS40に処理が進む。
(S46)VM切り替え処理部150は、仮想マシン262の負荷が条件U2を充足しているか否かを判定する。仮想マシン262の負荷が条件U2を充足している場合、ステップS50に処理が進む。仮想マシン262の負荷が条件U2を充足していない場合、ステップS47に処理が進む。
なお、VM切り替え処理部150は、仮想マシン262に対し、管理テーブル121の条件U2充足の項目のフラグにより、仮想マシン262の負荷に対する条件U2の充足状況を管理する。VM切り替え処理部150は、仮想マシン262の負荷が条件U2を充足していない状態から条件U2を充足している状態になったことを検出すると、仮想マシン262に対し、管理テーブル121の条件U2充足を、FalseからTrueに変更する。
(S47)VM切り替え処理部150は、ステップS45で切替先VMをStoppedに変更した時点から所定時間、VM切り替えが未発生であるか否かを判定する。切替先VMをStoppedに変更した時点から所定時間、VM切り替えが未発生である場合、ステップS48に処理が進む。切替先VMをStoppedに変更した時点から所定時間が経過していない場合は、ステップS40に処理が進む。ここで、所定時間は、例えば、30分(条件U2の監視時間以上の時間とする)である。
(S48)VM切り替え処理部150は、切替先VMをStoppedからShelvedに変更するVM状態変更命令をVMホスト200に送信する。VMホスト200では、VM状態変更命令に基づいて、仮想マシン261がStoppedからShelvedに変更される。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン261の状態をShelvedに変更し、状態更新日を更新する。
(S49)VM状態管理部160は、管理テーブル121における条件U1−CPU使用率閾値を10%増加させる。例えば、VM状態管理部160は、条件U1−CPU使用率閾値に10%を加算してもよいし、条件U1−CPU使用率閾値に1.1を乗じた値としてもよい。なお、条件U1−CPU使用率閾値の増加量について、10%は例示であり、他の増加量としてもよい。そして、ステップS40に処理が進む。
(S50)VM切り替え処理部150は、VM切り替え(アップサイズ)を行う。具体的には、VM切り替え処理部150は、切替先VMをStoppedからActiveに変更し、現行のVM(仮想マシン262)から切替先VM(仮想マシン261)に切り替えるVM切り替え命令をVMホスト200に送信する。VMホスト200では、VM切り替え命令に基づいて、仮想マシン261がStoppedからActiveに変更される。そして、負荷分散部280により、クライアント50からのリクエストの振り分け先が、仮想マシン262から仮想マシン261に切り替えられる。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン261の状態をActiveに変更し、状態更新日を更新する。この後、負荷の監視対象の仮想マシンは、切り替え後の仮想マシンとなる。
(S51)VM切り替え処理部150は、アップサイズ後処理を実行する。アップサイズ後処理の詳細は後述される。そして、ステップS40に処理が進む。
ここで、ステップS49のように、条件U1−CPU使用率閾値を増加させることで、切替先VMが直ちにStoppedに移行されることを抑制する。これにより、リソース(RAM202)の使用量を抑えられる。また、リソースの使用量を抑えることで、ユーザに対する課金額を抑えられる。
図18は、アップサイズ後処理の例を示すフローチャートである。
アップサイズ後処理は、ステップS51に相当する。
(S60)VM切り替え処理部150は、切替元VM(ここでは仮想マシン262)をActiveからStoppedに変更するVM状態変更命令をVMホスト200に送信する。VMホスト200では、VM状態変更命令に基づいて、仮想マシン262がActiveからStoppedに変更される。また、VM状態管理部160は、当該変更が行われた旨の通知をVMホスト200から受け付け、管理テーブル121における仮想マシン262の状態をStoppedに変更し、状態更新日を更新する。
(S61)VM配備部130は、切替先VM(ここでは仮想マシン261)の1段階上の性能の仮想マシン(仮想マシン265)を退避状態(Shelved)で配備するVM配備命令をVMホスト200に送信する。VMホスト200では、VM配備命令に基づいて、仮想マシン265が退避状態で配備される。また、VM状態管理部160は、当該配備が行われた旨の通知をVMホスト200から受け付け、管理テーブル121に仮想マシン265のレコードを追加する。
(S62)VM配備部130は、切替元VMの1段階下の性能の仮想マシン(ここでは仮想マシン263)を削除するVM削除命令をVMホスト200に送信する。VMホスト200では、VM削除命令に基づいて、仮想マシン263が削除される。また、VM状態管理部160は、当該削除が行われた旨の通知をVMホスト200から受け付け、管理テーブル121から仮想マシン263のレコードを削除する。
次に、仮想マシン262から仮想マシン263へアップサイズする場合のアップサイズ後処理の具体例を説明する。
図19は、アップサイズ後処理の具体例を示す図である。
まず、管理サーバ100のVM切り替え制御により、クライアント50からのリクエストの振り分け先が、仮想マシン262から仮想マシン261へ切り替えられる(ステップT20)。このタイミングでは、仮想マシン261はActiveである。仮想マシン262はActiveである。仮想マシン263はShelvedである。
次に、仮想マシン262がStoppedに変更される(ステップT21)。仮想マシン261よりも1段階上の性能の仮想マシン265が配備される(ステップT22)。仮想マシン263が削除される(ステップT23)。その結果、稼働中の仮想マシン261に対して、1段階下の性能の仮想マシン262がStoppedで配備され、1段階上の性能の仮想マシン265がShelvedで配備された状態となる(ステップT24)。
ステップT24の後、管理サーバ100は、仮想マシン261に対して、負荷状況の監視を行い、仮想マシン262に対する手順と同様の手順により、VM切り替え制御を行う。なお、VM切り替え処理部150は、例えば、仮想マシン261をActiveの状態にしてから所定時間(例えば、30分)経過後に、切替元VMである仮想マシン262をShelvedに変更する。これにより、ユーザへの課金を低減する。
次に、管理サーバ100およびVMホスト200による不要VM削除の手順を説明する。
図20は、不要VM削除の例を示すフローチャートである。
不要VM削除は、ステップS4に相当する。
(S70)VM削除部170は、管理テーブル121を参照して、切替先VMの状態更新日を1分間隔で監視する。ここで、監視の周期について、1分は例示であり、他の周期でもよい。
(S71)VM削除部170は、切替先VMに対して記録されている状態更新日から1週間が経過しているか否かを判定する。切替先VMに対して記録されている状態更新日から1週間が経過している場合、ステップS72に処理が進む。切替先VMに対して記録されている状態更新日から1週間が経過していない場合、ステップS70に処理が進む。ここで、上記の例では、稼働中VMに対して切替先VMは2つある。VM削除部170は、例えば切替先VM毎に、ステップS71の判定を行う。
(S72)VM削除部170は、状態更新日から1週間が経過している切替先VMを削除する。具体的には、VM削除部170は、当該切替先VMを削除するVM削除命令をVMホスト200に送信する。VM削除実行部250は、VM削除命令に基づいて、該当の切替先VMのインスタンスを削除する。これにより、Shelved状態となっていた該当の切替先VMのVMデータは、HDD203または外部ストレージから削除される。VM状態管理部160は、当該削除が行われた旨の通知をVMホスト200から受け付け、削除された切替先VMのレコードを管理テーブル121から削除する。そして、ステップS70に処理が進む。
このように、管理サーバ100は、切替先VMのうち、比較的長い期間、状態更新が行われていない切替先VMのVMデータをHDD203または外部ストレージから削除する。当該切替先VMへの切り替えが今後も行われない可能性が高いと推定されるからである。当該切替先VMのVMデータをHDD203または外部ストレージから削除することで、リソース使用量を一層抑えられる。また、リソース使用量を抑えることで、HDD203や外部ストレージなど補助記憶装置の容量の使用に対してユーザに課金される場合に、ユーザに対する課金額を抑えられる。
以上で説明したように、管理サーバ100によれば、リソースの使用量を抑えて、仮想マシンの迅速な切り替えを可能にする。具体的には、管理サーバ100は、通常時は仮想マシン262を稼働させる。管理サーバ100は、仮想マシン262の負荷が第1の閾値よりも高まると、仮想マシン262よりも高性能な仮想マシン261のVMデータをVMホスト200のRAMにロードさせて準備状態とさせる。このため、通常時において、仮想マシン261をRAMにロードさせずに済み、RAMの使用量を抑えられる。その結果、ユーザに対するRAMの利用に伴う課金を抑えられる。
なお、HDD203や外部ストレージなど補助記憶装置の容量の使用に対してユーザに対する課金が発生することもある。ただし、補助記憶装置の容量の使用に対する課金額は、RAMの容量の使用に対する課金額に比べて安価であり、仮想マシンのインスタンスを補助記憶装置に退避させている状態でのユーザへの課金額を低く抑えることができる。
更に、仮想マシン261が準備状態(一時停止状態)となっている間は、仮想マシン261が起動しておらず、VMホスト200のCPUを使用していない。したがって、仮想マシン261の準備状態では、ユーザに対するCPUの利用に伴う課金を抑えられる。
しかも、仮想マシン261のVMデータは、VMホスト200のRAMに既にロードされている。このため、仮想マシン262の負荷が、第1の閾値よりも高い第2の閾値を超えた場合に、VMホスト200は、仮想マシン261を迅速に起動して、仮想マシン262から仮想マシン261への切り替えを行うことができる。
こうして、リソースの使用量を抑えて、仮想マシンの迅速な切り替えを可能にすることができる。また、リソースの使用量を抑えることで、ユーザに対する課金額を抑えることができる。
なお、切り替え後には、VMホスト200は、仮想マシン262を停止させ、例えば、所定時間の経過後に仮想マシン262のVMデータをVMホスト200のRAMから補助記憶装置などに退避させてもよい。これにより、仮想マシン262によるリソースの使用量を一層抑えられる。
更に、管理サーバ100は、仮想マシン262の負荷が第1の閾値よりも低い第3の閾値より低下すると、仮想マシン263のVMデータをVMホスト200のRAMにロードさせて準備状態とさせる。そして、管理サーバ100は、仮想マシン262の負荷が第3の閾値よりも低い第4の閾値より低下した場合に、VMホスト200により、仮想マシン262を低性能の仮想マシン263に切り替えさせる。これにより、リソースの使用量を一層抑えられる。リソースの使用量を抑えることでユーザに対する課金額を抑えることができる。また、仮想マシン263のVMデータは、VMホスト200のRAMに既にロードされている。このため、仮想マシン262の負荷が、第4の閾値よりも低下した場合に、VMホスト200は、仮想マシン263を迅速に起動して、仮想マシン262から仮想マシン263への切り替えを行うことができる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。