初めに、図1を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
上述の通り、仮想化環境における状態変化の影響を軽減し、仮想化環境の構成変更を、迅速にジョブスケジューリングに反映することに貢献する管理装置が望まれる。
そこで、一例として、図1に示す管理装置1000を提供する。管理装置1000は、1又は2以上のゲストOS1010a、1010bと、1又は2以上の仮想マシン1020a、1020bと、ジョブ管理手段1030と、を備える。以下の説明では、ゲストOS1010a、1010bをゲストOS1010と記載し、仮想マシン1020a、1020bを仮想マシン1020と記載する。なお、図1は、ゲストOS1010a、1010b、仮想マシン1020a、1020bを示すが、これは、ゲストOS1010、仮想マシン1020の数を限定する趣旨ではない。
ゲストOS1010は、1又は2以上のジョブを実行する。例えば、図1の場合、ゲストOS1010aは、ジョブ1011a、及び1011bを実行する。また、図1の場合、ゲストOS1010bは、ジョブ1011c、及び1011dを実行する。なお、図1は、各ゲストOS1010において、実行対象である2個のジョブを示すが、これは、ゲストOS1010が実行するジョブの数を限定する趣旨ではない。
仮想マシン1020は、ゲストOS1010を制御する。例えば、図1の場合には、仮想マシン1020aは、ゲストOS1010aを制御するものとする。その場合、仮想マシン1020aは、ジョブ1011a、1011bの実行を制御するものとする。さらに、図1の場合には、仮想マシン1020bは、ゲストOS1010bを制御するものとする。その場合、仮想マシン1020bは、ジョブ1011c、1011dを制御するものとする。
ジョブ管理手段1030は、仮想マシンの状態、状態変化の少なくともいずれかに基づいて、ジョブの実行スケジュールを決定する。以下の説明では、ジョブ実行スケジュールを決定することを、ジョブスケジューリングとも呼ぶ。
以上より、管理装置1000においては、仮想マシンの構成変更等により、仮想マシン1020の状態が変化した場合であっても、仮想マシン1020の状態に応じて、ジョブ管理手段1030がジョブの実行スケジュールを決定し、更新する。その結果、管理装置1000は、仮想化環境における状態変化の影響を軽減することに貢献する。さらに、管理装置1000は、仮想化環境の構成変更を、迅速にジョブスケジューリングに反映することに貢献する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。なお、以下の説明では、仮想マシンを「VM」(Virtual Machine)とも呼ぶ。また、以下の説明では、上記の管理装置を、仮想マシン管理装置と呼ぶ。また、以下の説明では、上記のジョブ管理手段は、以下に記載のハイパーバイザ(Hypervisor(登録商標))に相当するものとする。
図2は、本実施形態に係る仮想マシン管理装置1の内部構成の一例を示すブロック図である。図2に示す仮想マシン管理装置1は、ゲストOS10a〜10cと、仮想マシン20a〜20cと、ハイパーバイザ30と、ハードウェア40とを含んで構成される。
図2に示すゲストOS10aは、ジョブ実行エージェント12aと、ジョブ11a、11bとを含んで構成される。同様に、図2に示すゲストOS10bは、ジョブ実行エージェント12bと、ジョブ11c、1dとを含んで構成される。また、図2に示すゲストOS10cは、ジョブ実行エージェント12cと、ジョブ11e、11fとを含んで構成される。
なお、以下の説明においては、ゲストOS10a〜10c、仮想マシン20a〜20c、ジョブ実行エージェント12a〜12c、ジョブ11a〜11fを、ゲストOS10、仮想マシン20、ジョブ実行エージェント12、ジョブ11と記載する。また、図2は、ゲストOS10a〜10c、仮想マシン20a〜20cを示すが、これは、ゲストOS10、仮想マシン20の数を限定する趣旨ではない。
仮想マシン管理装置1は、ハードウェア40上で、ハイパーバイザ30を動作させることで、仮想マシン20を制御する。具体的には、仮想マシン管理装置1においては、ハイパーバイザ30が、仮想マシン20のOSであるゲストOS10を動作させる。その結果、ハイパーバイザ30は、仮想マシン20を制御、及び管理できる。
ハイパーバイザ30を実現する場合、例えば、KVM(Kernel-based Virtual Machine)機能を利用したLinux(登録商標)KernelベースのHypervisorが挙げられる。また、ゲストOS10を実現する場合、例えば、ホストOS(基本OS)をWindows(登録商標)とし、Windows(登録商標)上で、Linux(登録商標)をゲストOSとして動作させても良い。
次に、ゲストOS10について詳細に説明する。
上述の通り、ゲストOS10は、ジョブ実行エージェント12と、制御対象のジョブ11とを含んで構成される。以下の説明は、制御対象のジョブ11を、実行制御対象ジョブとも呼ぶ。
ジョブ実行エージェント12は、ジョブ管理マネージャ32からの指示に従い、実行制御対象ジョブを実行する。なお、ジョブ管理マネージャ32の詳細は後述する。
ジョブ実行エージェント12を実現する場合、例えば、ゲストOS10内のプロセスとして実装することで、ジョブ実行エージェント12を実現しても良い。また、実行制御対象ジョブは、所定の処理を実行するコマンドとして実装されても良い。
また、ジョブ実行エージェント12は、実行制御対象ジョブを実行する場合、当該実行制御対象ジョブの実行状態を、ジョブ管理マネージャ32に通知する。具体的には、ジョブ実行エージェント12は、実行制御対象ジョブを実行する場合、当該実行制御対象ジョブの開始、中断、終了等の情報を、ジョブの実行状態としてジョブ管理マネージャ32に通知しても良い。
なお、仮想マシン管理装置1は、ハイパーバイザ30、及びゲストOS10が、参照可能なバッファ領域(図示せず)を備えていても良い。その場合、ジョブ実行エージェント12、及びジョブ管理マネージャ32は、当該バッファ領域を介して、情報の送受信を行っても良い。また、ジョブ実行エージェント12と、ジョブ管理マネージャ32とが、通信するためのインターフェースは、仮想ファイルとして実装しても良い。
次に、ハイパーバイザ30について、詳細に説明する。
ハイパーバイザ30は、仮想マシン管理手段31と、ジョブ管理マネージャ32とを含んで構成される。
まず、仮想マシン管理手段31について、詳細に説明する。
仮想マシン管理手段31は、仮想マシン状態通知手段311と、仮想マシン制御手段312とを含んで構成される。
仮想マシン管理手段31を実現する場合、例えば、Linux(登録商標)KernelベースのホストOS上のプロセスとして、仮想マシン管理手段31を実装しても良い。
仮想マシン状態通知手段311は、仮想マシン20から送信されるイベント(以下、VMイベントと呼ぶ)を検出する。以下、VMイベントは、ライブマイグレーション処理、サスペンド/レジューム処理等、仮想化環境固有の処理を意味するものとする。
そして、仮想マシン状態通知手段311は、VMイベントを検出した場合、検出したVMイベントを、ジョブ管理マネージャ32に通知する。ジョブ管理マネージャ32は、仮想マシン状態通知手段311から、VMイベントの通知を受信した場合、通知されたVMイベントに基づいて、仮想マシン20の状態及び/又は状態変化を推定する。そして、ジョブ管理マネージャ32は、仮想マシン20の状態及び/又は状態変化に基づいて、制御対象ジョブの実行スケジュールを決定(ジョブスケジューリング)する。ジョブ管理マネージャ32の詳細については、後述する。
仮想マシン制御手段312は、各ゲストOSに割り当てる物理リソースを管理する。さらに、仮想マシン制御手段312は、ゲストOS10の仮想リソースに割り当てられた、物理リソースに関する情報を識別する。また、仮想マシン制御手段312は、ハイパーバイザ30上で動作する仮想マシン20を管理する。
仮想マシン制御手段312を実現する場合、仮想マシン20を制御するための、既存のプログラム(例えば、libvirt API(Application Programming Interface))を利用して、仮想マシン制御手段312を実現しても良い。
次に、ジョブ管理マネージャ32について、詳細に説明する。なお、以下の説明において、「行動」とは、VMイベントが発生した場合に、VMイベント毎に必要となる、ジョブ管理マネージャ32の対応内容(処理内容)を意味する。
ジョブ管理マネージャ32は、仮想マシンイベント受信手段321と、行動決定手段322と、仮想マシン関連ジョブ取得手段323と、ジョブスケジューラ324と、を含んで構成される。
仮想マシンイベント受信手段321は、仮想マシン状態通知手段311から、VMイベントを受信する。
仮想マシン関連ジョブ取得手段323は、仮想マシンイベント受信手段321が受信した、VMイベントに対応する仮想マシン20を特定する。そして、仮想マシン関連ジョブ取得手段323は、特定した仮想マシン20上で実行中のジョブに関する情報と、特定した仮想マシン20上で実行待ちのジョブに関する情報と、を取得する。
行動決定手段322は、予めVMイベント毎に定義された行動一覧から、VMイベント発生時に必要な行動を決定する。
ジョブ管理マネージャ32は、仮想マシン関連ジョブ取得手段323が取得したジョブ一覧と、行動決定部322が決定した行動とに基づいて、ジョブスケジューラ324に、実行制御対象ジョブの再スケジュール要求(スケジュールの更新要求)を行う。
ジョブスケジューラ324は、実行契機調停手段325と、実行契機通知手段326とを含んで構成される。
実行契機調停手段325は、複数のジョブの起動、終了を管理する。具体的には、実行契機調停手段325は、ジョブの実行開始、終了状態の監視処理を行う。
実行契機通知手段326は、実行可能状態のジョブがある場合、ジョブ実行エージェント12に、当該実行可能状態のジョブに関する情報を送信する。そして、実行契機通知手段326は、当該実行可能状態のジョブを実行するように、ジョブ実行エージェント12に通知する。
次に、本実施形態に係る仮想マシン管理装置1の動作について説明する。以下の説明では、実行制御対象ジョブが、仮想マシン管理装置1全体の状態を把握する処理(例えば、psコマンド、topコマンド等)である場合を例示して説明する。なお、psコマンドとは、実行中のプロセスを表示するコマンドを意味する。また、topコマンドとは、プロセスの実行時の負荷に関する情報を取得、及び表示するコマンドを意味する。以下の説明では、実行プロセス、実行時の負荷等に関する情報を、性能情報と呼ぶ。
実行制御対象ジョブが、仮想マシン管理装置1全体の状態を把握する処理である場合、ジョブ管理マネージャ32は、複数のゲストOS10上での実行プロセス、実行時の負荷等の取得タイミングを、当該複数のゲストOS10で同期させることが望まれる。一方では、物理リソースの競合を避けるために、ジョブ管理マネージャ32は、各ゲストOS10に関して、順に、取得した性能情報の後処理を実行することが好ましい。ここで、後処理とは、性能情報の統計値の算出処理、ディスク入出力処理等であっても良い。
また、実行制御対象ジョブは、仮想化環境でのリソース競合(メモリ、CPU(Central Processing Unit)等の競合)につながる(リソース競合を発生し得る)ジョブであっても良く、実行制御対象ジョブの種類、処理内容等は問わない。
次に、仮想マシン管理装置1の動作について説明する。
まず、図3を参照しながら、ジョブ実行エージェント12の動作について説明する。
ステップA1において、ジョブ実行エージェント12は、VMイベントが発生したか否かを判断する。
まず、ジョブ実行エージェント12が、ジョブ管理マネージャ32から、「実行制御対象ジョブ開始の通知」を受け付けた場合の動作について説明する。
ジョブ実行エージェント12が、ジョブ管理マネージャ32から、「実行制御対象ジョブ開始の通知」を受け付けた場合、ジョブ実行エージェント12は、ジョブ情報管理テーブルで管理されているジョブ情報を、ジョブ管理マネージャ32から取得する(ステップA2)。
次に、ジョブ実行エージェント12は、取得したジョブ情報に基づいて、実行制御対象ジョブを起動し、実行可能状態となるまで一時中断する(ステップA3)。
そして、ジョブ実行エージェント12は、実行制御対象ジョブが「実行待ち」状態であることをジョブ管理マネージャ32へ通知する(ステップA4)。そして、ステップA9に遷移する。
ここで、図4を参照しながら、ジョブ情報管理テーブルについて説明する。
図4は、ジョブ情報管理テーブルの一例を示す図である。具体的には、図4に示すジョブ情報管理テーブルは、ジョブ識別子と、ジョブの内容と、タイプとを対応付けたテーブルである。ここで、ジョブ識別子とは、ジョブを識別するための情報を意味する。また、ジョブの内容とは、ジョブとして実行される処理の内容であり、図4に示すように、実行コマンド(即ち、実行関数名、及び当該実行関数の引数等)であっても良い。また、図4において、タイプとは、ジョブの実行タイミングを示す情報を意味する。なお、図4において、「同期」タイプとは、異なる仮想マシン20が、「ジョブの内容」に示すジョブの実行タイミングを同期させることを意味する。また、図4において、「順次」タイプとは、異なる仮想マシンが、「ジョブの内容」に示すジョブを実行する場合に、同一の仮想マシン20が当該ジョブの実行終了後に、他の仮想マシン20が当該ジョブを実行することを意味する。なお、以下の説明においても、「同期」タイプ、「順次」タイプとは、上記の意味であるものとする。
次に、実行制御対象ジョブが実行終了した場合の動作について説明する。
ジョブ実行エージェント12は、「実行制御対象ジョブの終了」を検知した場合、ジョブ実行エージェント12は、実行制御対象ジョブが「実行終了」状態になったことをジョブ管理マネージャ32へ通知する(ステップA5)。そして、ステップA9に遷移する。
次に、ジョブ実行エージェント12が、ジョブ管理マネージャ32から、「実行制御対象ジョブの実行/終了/中断のいずれかに関する通知」を受け付けた場合について説明する。
ジョブ実行エージェント12は、ジョブ管理マネージャ32から「実行制御対象ジョブの実行/終了/中断のいずれかに関する通知」を受け付けた場合、ジョブ情報、及びジョブの実行情報(実行/終了/中断)を取得する(ステップA6)。
次に、ジョブ実行エージェント12は、実行制御対象ジョブを、取得した実行情報の状態に変更する(ステップA7)。
そして、ジョブ実行エージェント12は、変更後のジョブの状態を、ジョブ管理マネージャ32へ通知する(ステップA8)。そして、ステップA9に遷移する。
ステップA9において、ジョブ実行エージェント12は、処理を継続するか否かを判断する。
ジョブ実行エージェント12は、処理を継続する場合(ステップA9、Yes分岐)には、ステップA1に戻り、各種イベント発生を契機に上記処理を繰り返す。一方、処理を継続しないと判断した場合(ステップA9、No分岐)には、ジョブ実行エージェント12は処理を終了する。
次に、図5を参照しながら、ジョブ管理マネージャ32の動作について説明する。
ステップB1において、イベントが発生した場合、ジョブ管理マネージャ32はイベントの内容を判断する。
まず、ジョブ管理マネージャ32が、「ジョブ実行エージェント12へのジョブの投入要求」を受け付けた場合の動作について説明する。
まず、ジョブ管理マネージャ32は、ユーザ(ジョブ投入者)から、「ジョブ実行エージェント12へのジョブの投入要求」を受け付けた場合、ジョブ制御情報管理テーブルへジョブ情報を登録する(ステップB2)。具体的には、ジョブ管理マネージャ32は、「ジョブ実行エージェント12へのジョブの投入要求」を受け付けた場合、ジョブ情報管理テーブルから、当該ジョブに関するジョブ情報を取得する。そして、ジョブ管理マネージャ32は、ジョブ制御情報管理テーブルに、取得したジョブ情報を登録する。なお、ジョブ管理マネージャ32は、ジョブの初期状態を、「実行準備中」として、ジョブ制御情報管理テーブルに、取得したジョブ情報を登録する。
次に、ジョブ管理マネージャ32は、ジョブ実行エージェント12に、ジョブ情報を通知する(ステップB3)。そして、ステップB14に遷移する。
次に、ジョブ管理マネージャ32が、「ジョブ実行エージェントから、ジョブの実行待ち/実行/終了/中断の通知」を受け付けた場合の動作について説明する。
ジョブ管理マネージャ32は、「ジョブ実行エージェントから、ジョブの実行待ち/実行/終了/中断の通知」を受け付けた場合、ジョブ実行エージェント12からジョブ情報を取得する(ステップB4)。
ステップB5において、ジョブ管理マネージャ32は、ジョブ制御情報管理テーブルへジョブ情報を反映する。
ステップB6において、ジョブ管理マネージャ32は、ジョブ制御情報管理テーブルから実行契機の通知が必要なジョブを取得する。具体的には、ジョブ制御情報管理テーブルにおいて、「仮想マシンの状態」が「実行中」であり、かつ「ジョブの状態」が「実行待ち」であるジョブのうち、実行可能なジョブを、ジョブ管理マネージャ32は選択、取得する。より具体的には、ジョブ管理マネージャ32は、上記条件を満たすジョブのうち、ジョブの「タイプ」(順次実行/同期実行)に基づいて、ジョブを選択する。
ステップB7において、ジョブ管理マネージャ32は、ジョブを選択した場合、ジョブ制御情報管理テーブルにおける、当該ジョブの状態を更新する。具体的には、ジョブ管理マネージャ32は、ジョブ制御情報管理テーブルにおける、当該ジョブの状態を、「実行」に更新する。
ステップB8において、ジョブ管理マネージャ32は、ジョブ実行エージェント12へジョブ情報を通知する。
次に、ジョブ管理マネージャ32が、「仮想マシン管理手段から、VMイベントの通知」を受け付けた場合について説明する。
ジョブ管理マネージャ32は、「仮想マシン管理手段から、VMイベントの通知」を受け付けた場合、仮想マシンイベント受信手段321が、VMイベント(状態変更前)を取得する(ステップB9)。ここで、通知されるVMイベントは、「ゲスト名」を識別するための情報、及び「VMイベント」を識別するための情報を含む。
ステップB10において、仮想マシン関連ジョブ取得手段323は、ジョブ制御情報管理テーブルから、VMイベントに含まれるゲスト名に対応する、ジョブ識別子の一覧を取得する。当該ジョブ識別子の一覧は、ジョブの再スケジューリング要求対象である、ジョブの一覧に相当する。
ステップB11において、行動決定手段322は、仮想マシンの状態が変化した際における行動テーブルから、行動を取得する。具体的には、行動決定手段322は、VMイベント発生時の対応を決定し、取得する。より具体的には、VMイベント毎に必要となる「対応」が、仮想マシンの状態が変化した際の行動テーブルに定義されている。そこで、行動決定手段322は、当該行動テーブルに基づいて、VMイベントに応じた行動を決定する。
ステップB12において、ジョブ管理マネージャ32は、ジョブ実行エージェントへジョブ情報を通知する。具体的には、ジョブ管理マネージャ32は、実行制御対象ジョブに対応するジョブ実行エージェントへ、ジョブ情報を通知する。ここで、ジョブ管理マネージャ32がジョブ実行エージェント12へ送る情報は、「ジョブ識別子」、及び行動決定手段322が決定した行動に対応する「ジョブの状態」を含む。
ステップB13において、ジョブ管理マネージャ32は、再スケジューリング要求が完了したことを確認する。ジョブ管理マネージャ32は、再スケジューリング要求が完了するまで、再スケジューリング要求の完了の確認を繰り返す。例えば、行動決定手段322が決定した行動が、「実行制御対象ジョブの完遂」であるとする。その場合、ジョブ管理マネージャ32は、実行制御対象ジョブの「ジョブの状態」が全て「実行終了」となるまで、再スケジューリング要求の完了の確認を繰り返す。そして、再スケジューリング要求が完了した場合、ステップB14に遷移する。
ステップB14において、ジョブ管理マネージャ32は、処理を継続するか否かを判断する。処理を継続する場合(ステップB14、Yes分岐)には、ステップB1に戻り、処理を継続する。一方、処理を継続しない場合(ステップB14、No分岐)には、ジョブ管理マネージャ32は処理を終了する。
次に、図6、図7を参照しながら、仮想マシン20の状態変化時の行動に関するテーブルについて説明する。
図6、図7は、VMイベントと、行動とを対応付けたテーブルである。図6、図7に示す通り、VMイベントは、「実行中」、「サスペンド」、「レジューム」、「一時停止」、「再開」、「ライブマイグレーション」、「停止処理」等を含む。また、図6、図7に示す通り、行動は、「実行制御対象ジョブの中断」、「実行制御対象ジョブの再開」、「実行制御対象ジョブの削除」等を含む。
また、実行制御対象のジョブの性質、状態に応じて、行動は異なる場合がある。そこで、図8に示す通り、行動テーブルは、VMイベントと、ジョブのタイプと、ジョブの実行状態と、行動とを対応付けたテーブルであっても良い。
図8に示す通り、仮想マシン20がサスペンドする場合、サスペンド処理が実行される前に、仮想マシン20は、同期実行中のジョブを完遂することが好ましい。また、仮想マシン20がサスペンドする場合、サスペンド処理終了後に、順次実行待ちのジョブを再登録することが好ましい。そして、同期実行中ではなく、かつ順次実行待ちではないジョブについては、仮想マシン20がサスペンドする場合、当該ジョブを削除することが好ましい。
次に、図9を参照しながら、仮想マシン管理手段31の動作について説明する。
ステップC1において、仮想マシン状態通知手段311は、ジョブ管理マネージャ32へ、状態変更前のVMイベントを通知する。
ステップC2において、仮想マシン管理手段31は、ジョブ管理マネージャ32から、状態変更前のVMイベントに関する返答を取得する。具体的には、仮想マシン管理手段32は、仮想マシン20の状態変更を実行するか、保留するかに関する返答を、ジョブ管理マネージャ32から取得する。
ステップC3において、取得した返答に基づいて、仮想マシン20の状態変更を実行するか、保留するかを、仮想マシン管理手段31は判断する。
仮想マシン20の状態変更を保留との返答があった場合(ステップC3、「保留」分岐)には、仮想マシン管理手段31は、仮想マシン20の操作を一時中断する(ステップC4)。そして、ステップC1に戻り、処理を継続する。
例えば、仮想マシン管理手段31が、所定の時間経過後、ジョブ管理マネージャ32に、再度、状態変更前のVMイベントを通知した場合、仮想マシン管理手段31は、仮想マシン20の操作を再開しても良い。または、ジョブ管理マネージャ32が、所定の時間経過後に、仮想マシン管理手段31に、操作を再開することを通知した場合、仮想マシン管理手段31は、仮想マシン20の操作を再開しても良い。
一方、仮想マシン20の状態変更を実行との返答があった場合(ステップC3、「実行」分岐)には、ステップC5に遷移する。なお、仮想マシン管理手段31の各種処理をフックする方式の場合、ジョブ管理マネージャ32からの再スケジューリング要求が完了するまで、仮想マシン管理手段31は、仮想マシンの操作を中断しても良い。そして、ジョブ管理マネージャ32からの再スケジューリング要求が完了した場合、仮想マシン管理手段31は、仮想マシン20の状態変更を実行すると判断しても良い。
ステップC5において、仮想マシン制御手段312は、仮想マシン20の状態変更を実行する。そして、仮想マシン状態通知手段311は、VMイベントをジョブ管理マネージャ32に通知する(ステップC6)。ジョブ管理マネージャ32に通知する情報は、ゲスト名、及び仮想マシン20の状態変化時の行動テーブルに定義されている、VMイベントを含む。
上記の通り、仮想マシン管理手段31からジョブ管理マネージャ32へVMイベントの通知が行われる契機は、仮想マシン20の状態変更前と状態変更後の2度ある。なぜなら、仮想マシン20の状態変更前には、実行制御対象ジョブの再スケジューリングを行う必要がある場合があるため、仮想マシン管理手段31からジョブ管理マネージャ32へVMイベントの通知が必要である。また、仮想マシン20の状態変更後においても、ジョブの再スケジューリングを行う必要があるため、仮想マシン管理手段31からジョブ管理マネージャ32へVMイベントの通知が必要である。
例えば、仮想マシン20がサスペンド/レジュームする場合、サスペンドが行われる前に実行制御対象ジョブの再スケジューリングが必要であり、レジュームが行われた後にも、実行制御対象ジョブの再スケジューリングが必要である。
次に、図10を参照しながら、ジョブ制御情報管理テーブルの一例について説明する。図10は、ジョブ制御情報管理テーブルの一例を示す図である。
図10に示すジョブ制御情報管理テーブルは、ゲスト名と、ジョブ識別子と、ジョブの状態と、仮想マシンの状態とを対応付けたテーブルである。ゲスト名とは、ゲストOSの名称(ゲストOSを識別するための情報)である。ジョブ識別子とは、各実行制御対象ジョブを識別するための情報である。ジョブの状態とは、実行制御対象ジョブの実行状態を示す情報である。図10の場合、ジョブの状態は、「実行中」、「実行待ち」、「実行準備中」、「実行終了」を含む。仮想マシンの状態とは、実行制御対象ジョブを実行する仮想マシンの状態を示す情報である。図10の場合、仮想マシンの状態は、「実行中」、「サスペンド」を含む。なお、図10に示すジョブの状態、及び仮想マシンの状態は一例であり、ジョブの状態、及び仮想マシンの状態を図10に示す状態に限定する趣旨ではない。
次に、図11、図12、図13を参照して、実行制御対象ジョブの状態遷移について説明する。
図11は、行動が「実行制御対象のジョブの完遂」の場合における、実行制御対象ジョブの状態遷移図である。図11に示す通り、仮想マシン20は、ジョブ管理マネージャ32に実行制御ジョブを投入した場合、当該実行制御対象ジョブは、「実行準備中」状態(状態S1)へ遷移する。そして、ジョブ管理マネージャ32は、ジョブ実行エージェント12へ実行制御対象ジョブを投入する。そして、実行制御対象ジョブは、「実行待ち」状態(状態S2)へ遷移する。
そして、実行契機通知手段326は、ジョブ実行エージェント12へ実行契機を通知する。そして、実行制御対象ジョブは、「実行」状態(状態S3)に遷移する。または、VMイベントが発生した場合、実行制御対象ジョブは、「実行」状態(状態S3)に遷移する。
そして、ジョブの実行が終了した場合、実行制御対象ジョブは、「終了」状態(状態S4)に遷移する。そして、ジョブ実行エージェント12は、実行制御対象ジョブを削除する。
ここで、行動が「実行制御対象のジョブの完遂」の場合に、対応するVMイベントは、短時間で終了するイベントであることが好ましい。または、行動が「実行制御対象のジョブの完遂」の場合に、対応するVMイベントは、中断不可能なジョブを実行中である、仮想マシン20に対する「サスペンド」処理であることが好ましい。
なぜなら、仮想マシン20が、レジューム処理によるサスペンド状態から復帰後に、実行制御対処ジョブを継続するか否かは、ハイパーバイザ30上で動作する、他の仮想マシン20の状態に依存する。
また、仮想マシン管理装置1が性能情報を取得する場合、各仮想マシン20に対応する性能情報を取得するタイミングを、仮想マシン20間において、性能情報の取得タイミングの同期をとることが好ましい。そのため、仮想マシン管理装置1が性能情報を取得する場合、管理装置20は、サスペンド処理を実行する前に、実行中の実行制御対象ジョブ、及び実行待ち状態の実行制御対象ジョブを完遂することが好ましい。
また、仮想マシン20が実行中のジョブを完了した時、仮想マシン20の状態変更が保留されている場合、ジョブ管理マネージャ32は、当該保留されている状態変更の処理を再開するように、仮想マシン管理手段31に通知しても良い。または、仮想マシン20が実行中のジョブを完了した時、仮想マシン20の状態変更が保留されている場合、仮想マシン管理手段31が状態変更の処理を再開するまで、仮想マシン20は、状態変更が保留されている状態を継続しても良い。
次に、行動が「実行制御対象ジョブの中断/再開」の場合における、実行制御対象ジョブの状態遷移について説明する。
図12は行動が「実行制御対象のジョブの中断/再開」の場合における、実行制御対象ジョブの状態遷移図である。図11に示す状態遷移図と、図12に示す状態遷移図との相違点は、図12に示す状態遷移図は、中断状態(状態T5)を含む点である。以下、図11に示す状態遷移図と、図12に示す状態遷移図との相違点について説明する。状態T1〜T4は、図11に示す状態S1〜状態S4と同一であるため、詳細な説明は省略する。
実行制御対象ジョブが実行されている状態において(状態T3)、ジョブの実行を中断する、VMイベントが発生した場合、実行制御対象ジョブは「中断」状態(状態T5)に遷移する。そして、実行制御対象ジョブが中断されている状態(状態T5)において、ジョブの実行を再開する、VMイベントが発生した場合、実行制御対象ジョブは「実行」状態(状態T3)に遷移する。
そして、ジョブの実行が終了した場合、実行制御対象ジョブは、「終了」状態(状態T4)に遷移する。そして、ジョブ実行エージェント12は、実行制御対象ジョブを削除する。
ここで、行動が「実行制御対象のジョブの中断/再開」の場合に、対応するVMイベントは、ジョブを実行していない仮想マシン20への「一時停止/再開」処理、同一のハイパーバイザ30上での「サスペンド/レジューム」処理等を含む。
なぜなら、実行制御対象ジョブが順次実行で良い場合、仮想マシン20間において、実行タイミングの同期をとる必要はない。例えば、実行制御対象ジョブが順次実行で良い場合に、当該実行制御対象ジョブが一時停止状態であるとする。その場合、当該実行制御対象ジョブの状態が一時停止状態から実行状態に遷移した場合に、仮想マシン20は、当該実行制御対象ジョブの実行を再開すれば良い。
例えば、行動決定手段322が、「行動」として、「実行制御対象ジョブの再開」を決定したとする。その場合、ジョブ実行エージェント12は、実行中の実行制御対象ジョブの「ジョブの状態」が「実行」となるように、ジョブスケジューラ324に再スケジューリング要求を出す。
また、例えば、VMイベント「レジューム」が発生した場合、ジョブ管理マネージャ32は、レジュームしたゲストOS10に対して、中断中の実行制御対象ジョブを再開するように、再スケジューリング要求を出す。
次に、行動が「他のハイパーバイザへの移動」の場合における、実行制御対象ジョブの状態遷移について説明する。
図13は、行動が「他のハイパーバイザへの移動」の場合における、実行制御対象ジョブの状態遷移図である。図11に示す状態遷移図と、図13に示す状態遷移図との相違点は、図13に示す状態遷移図は、「実行待ち」状態から、「終了状態」への状態遷移を含む点である。以下、図11に示す状態遷移図と、図13に示す状態遷移図との相違点について説明する。図13に示す状態U1〜U4は、図11に示す状態S1〜状態S4と同一であるため、詳細な説明は省略する。
実行制御対象ジョブが「実行待ち」状態(状態U2)である場合に、「他のハイパーバイザへの移動」を示す、VMイベントが発生した場合、実行制御対象ジョブは「終了」状態(状態U4)に遷移する。
具体的には、行動が「他のハイパーバイザへの移動」の場合、対応するVMイベントは、「他のハイパーバイザへのサスペンド/レジューム処理」、「他のハイパーバイザへのライブマイグレーション処理」を含む。
そして、行動決定手段322が、行動として、「他のハイパーバイザへの移動」を決定した場合、VMイベントが発生した、ゲストOS10において実行されている実行制御対象ジョブの「ジョブの状態」が、「終了」となるように、ジョブ管理マネージャ32は、ジョブスケジューラ324へ再スケジューリング要求を出す。そして、ジョブ管理マネージャ32は、移動先のハイパーバイザにジョブの移動を通知する。
以上のように、本実施形態に係る仮想マシン管理装置1は、仮想化環境において、仮想マシン20の状態変化に基づいて、ジョブスケジューラ324に対するイベントを決定する。その結果、本実施形態に係る仮想マシン管理装置1は、ゲストOS10からの応答を監視せずに、仮想化環境の構成変更を、迅速にジョブスケジューリングに反映することに貢献する。さらに、本実施形態に係る仮想マシン管理装置1は、仮想化環境固有の状態変化(ライブマイグレーション、サスペンド/リジューム等)に影響を受けず、仮想化環境の構成変更を、迅速にジョブスケジューリングに反映することに貢献する。
また、本実施形態に係る仮想マシン管理装置1は、仮想化環境において、構成変更を行う際に、実行制御中のジョブの状態に応じて、仮想化環境の構成変更を行うことに貢献する。なぜなら、本実施形態に係る仮想マシン管理装置1は、実行中のジョブの状態と、仮想マシン20の状態変化とに基づいて、仮想化環境の構成変更処理を制御するからである。
上述の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)上記の第1の視点に係る管理装置の通りである。
(付記2)前記仮想マシンは、当該仮想マシンに対応するイベントを、前記ジョブ管理手段に通知し、前記ジョブ管理手段は、前記仮想マシンから前記イベントの通知を受信する、仮想マシン状態通知手段と、前記仮想マシン状態通知手段が受信した前記イベントに対応する、前記仮想マシンを特定し、当該特定した仮想マシンにおけるジョブの一覧を、当該仮想マシンから取得する、仮想マシン関連ジョブ取得手段と、前記仮想マシンから受信した前記イベントに応じて、当該仮想マシンにおける、ジョブの実行スケジュールを決定する、ジョブスケジューラと、
をさらに備える、付記1に記載の管理装置。
(付記3)前記仮想マシン状態通知手段は、前記仮想マシンから受信した前記イベントに基づいて、当該仮想マシンの状態、状態変化の少なくともいずれかを推定する、付記2に記載の管理装置。
(付記4)前記仮想マシンは、当該仮想マシンの状態変化前、状態変化後の少なくともいずれかに、前記イベントを、前記ジョブ管理手段に通知する、付記2又は3に記載の管理装置。
(付記5)前記ジョブ管理手段は、前記仮想マシンに対応するイベントと、当該イベントの発生時における行動と、を対応付けた行動テーブルと、前記行動テーブルに基づいて、仮想マシン状態通知手段が受信した、前記イベントに対応する行動を決定する、行動決定部と、をさらに備える、付記2乃至4のいずれか一に記載の管理装置。
(付記6)前記行動テーブルは、前記イベントと、ジョブのタイプと、ジョブの実行状態と、前記行動とを対応付けたテーブルを含む、付記5に記載の管理装置。
(付記7)前記ジョブ管理手段は、前記仮想マシン関連ジョブ取得手段が取得する、前記ジョブの一覧と、前記行動決定手段が決定した行動とに基づいて、ジョブの実行スケジュールの更新要求を、前記ジョブスケジューラに送信する、付記5又は6に記載の管理装置。
(付記8)前記仮想マシン状態通知手段が受信する前記イベントは、ライブマイグレーション処理、サスペンド処理、レジューム処理のうち、少なくともいずれか一の処理に関する情報を含む、付記2乃至7のいずれか一に記載の管理装置。
(付記9)上記第2の視点に係る管理装置の制御方法の通りである。
(付記10)上記第3の視点に係るプログラムの通りである。
なお、上記の付記9、10に示す形態は、付記1に示す形態と同様に、付記2乃至8に示す形態に展開することが可能である。
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。