本発明の各実施形態について、添付の図面を参照して説明する。なお、本発明の各実施形態において、各システムの各構成要素は、機能単位のブロックを示している。各システムの各構成要素は、例えば図6に示すような情報処理装置500とプログラムとの任意の組み合わせにより実現される。情報処理装置500は、一例として、以下のような構成を含む。
・CPU(Central Processing Unit)501
・ROM(Read Only Memory)502
・RAM(Ramdom Access Memory)503
・RAM503にロードされるプログラム504
・プログラム504を格納する記憶装置505
・記録媒体506の読み書きを行うドライブ装置507
・通信ネットワーク509と接続する通信インターフェース508
・データの入出力を行う入出力インターフェース510
・各構成要素を接続するバス511
各実施形態における各システムの各構成要素は、これらの機能を実現するプログラム504をCPU501が取得して実行することで実現される。各装置の各構成要素の機能を実現するプログラム504は、例えば、予め記憶装置505やRAM503に格納されており、必要に応じてCPU501が読み出す。なお、プログラム504は、通信ネットワーク509を介してCPU501に供給されてもよいし、予め記録媒体506に格納されており、ドライブ装置507が当該プログラムを読み出してCPU501に供給してもよい。また、各装置の実現方法には、様々な変形例がある。例えば、各実施形態における各システムは、情報処理装置500とは異なる回路等を含む様々なハードウェアとプログラムとの任意の組み合わせにより実現され得る。
本発明の各実施形態に関する説明に先立って、各実施形態の前提となる仮想マシンにおけるフォールトトレラント機能やその動作を説明する。図1は、各実施形態の前提となる仮想マシン等の構成を示す図である。
フォールトトレラント機能は、仮想マシンを実行するハードウェア等に障害が生じた場合等に、当該仮想マシンが行っていた処理を他のハードウェア等にて実行される他の仮想マシンが継続して行う機能である。本発明の各実施形態においては、フォールトトレラント機能を実現する動作の一つとして、次のような動作が想定される。
まず、チェックポイントと呼ばれる一定間隔のタイミング毎等に、待機中の仮想マシンに稼働中の仮想マシンの状態が他のハードウェア等にて実行される他の仮想マシンに保存される。そして、稼働中の仮想マシンを実行するハードウェア等に障害が発生した場合には、待機中の仮想マシンは、保存された情報を用いて、稼働中の仮想マシンが実行していた処理を引き継いで実行する。一般的なフォールトトレラント機能においては、処理の引き継ぎの際には、仮想マシンの実行がそのまま継続される。このようなフォールトトレラント機能を用いることで、仮想マシンの可用性を高めることが可能となる。
なお、以降においては、チェックポイントにおいて仮想マシンの状態が保存され、障害が発生した際に他の仮想マシンによる処理の引き継ぎが可能な状態を、フォールトトレラント機能が有効であると称する。また、仮想マシンの状態の保存が行われず、障害が発生した際に他の仮想マシンによる処理の引き継ぎが行われない状態を、フォールトトレラント機能が無効であると称する。
フォールトトレラント機能を実現する動作の一例は、具体的には以下のようになる。図1に示す例においては、ホスト10−1及び10−2が通信ネットワーク50を介して接続されている。ホスト10−1及び10−2は、例えば上述した図6に示す情報処理装置500であるが、これに限られない。また、通信ネットワーク50は、ホスト10−1と10−2との間でデータの転送を可能にする任意の構成のネットワークである。
ホスト10−1及び10−2においては、仮想マシン管理システム100−1及び100−2がそれぞれ実行されている。仮想マシン管理システム100−1及び100−2は、ホスト10−1又は10−2のそれぞれにおいて仮想マシンを実現する一般的なシステムである。仮想マシン管理システム100−1及び100−2は、VMM(Virtual Machine Management)、又はハイパーバイザ(Hypervisor)とも呼ばれる。仮想マシン管理システム100−1及び100−2は、一般的なフォールトトレラント機能の実行に必要となる構成を備える。
仮想マシン20又は40は、それぞれ、仮想化された計算機システムである。仮想マシン20は、仮想マシン管理システム100−1にて実行される。また、仮想マシン40は、仮想マシン管理システム100−2にて実行される。仮想マシン20又は40は、それぞれゲスト物理メモリ21又は41を備える。ゲスト物理メモリ21又は41は、それぞれ仮想マシン20又は40の物理メモリとして機能する。それぞれゲスト物理メモリ21又は41のそれぞれは、ホスト10−1又は10−2が備える物理的なメモリ等を用いて実現される。
図1に示す例では、仮想マシン20は稼働しており、仮想マシン20においてゲストOS(Operating System)30が動作する。また、仮想マシン40は待機しており、ゲストOS30の動作を引き継ぐことが可能である。すなわち、仮想マシン40は、仮想マシン20においてゲストOS30が正常に動作している場合には、特段の動作を行わない。そして、ホスト10−1又は仮想マシン管理システム100−1の少なくとも一方に問題が生じた場合には、仮想マシン40は動作を開始する。この場合には、ゲストOS30は、仮想マシン管理システム100−2が備えるフォールトトレラント機能により、仮想マシン40に動作が引き継がれる。そして、ゲストOS30は、仮想マシン40にて継続して動作する。
フォールトトレラント機能を有効とするために、仮想マシン管理システム100−1及び100−2は、仮想マシン20の状態を保存する。仮想マシン管理システム100−1は、仮想マシン20の状態を、上述したチェックポイントと呼ばれるタイミングで仮想マシン管理システム100−2を介して仮想マシン40に保存する。チェックポイントは、例えば一定の間隔で設定される。上述したチェックポイントの間隔は、仮想マシン20にて実行されるサービスの種類等に応じて適宜定められる。仮想マシン管理システム100−1は、仮想マシン20の状態の保存に際して、仮想マシン20の動作を一時的に停止してその状態を保存する。
仮想マシン管理システム100−1は、仮想マシン20の状態として、例えば、仮想マシン20が備えるゲスト物理メモリ21の内容を仮想マシン40のゲスト物理メモリ41に保存する。仮想マシン20の状態として、仮想マシン20が仮想的に備えるCPUの状態や、仮想マシン20が仮想的に備える記憶装置の内容等が保存されてもよい。仮想マシン20の状態としてゲスト物理メモリ21の内容が保存される場合、仮想マシン管理システム100−1は、直近のチェックポイントにて仮想マシン20の状態が保存された後に更新されたゲスト物理メモリ21の内容を保存する。すなわち、直近のチェックポイントにて仮想マシン20の状態が保存された後に書き込みが行われたメモリ21の領域が、次のチェックポイントにおいて保存の対象となる。
一般に、仮想マシン20又は40においては、ゲスト物理メモリ21又は41のそれぞれの内容は、ページと呼ばれる一定の単位にて管理される。したがって、ゲスト物理メモリ21において、書き込みが行われたか否かの判定は、ページ単位で行われる。また、仮想マシン管理システム100−1は、ページ単位でゲスト物理メモリ21の内容を保存する。書き込みが行われ、次のチェックポイントにおいて保存の対象となるページは、ダーティページと呼ばれる。
図1に示す例では、ゲスト物理メモリ21として囲われる領域に含まれる複数の四角形状の図形は、ゲスト物理メモリ21におけるページの各々を表す。図1に示す例では、当該図形のうち、黒色で塗られた図形の各々は、ダーティページを表す。また、転送バッファ121として囲われる領域に含まれる複数の四角形状の図形は、チェックポイントにおいて保存の対象となるダーティページを表す。
上述のように、フォールトトレラント機能が有効であり、仮想マシン20の状態の保存が行われる場合、仮想マシン20は動作を一時的に停止する。仮想マシン20の動作は、仮想マシン20の状態の仮想マシン40への保存が完了した後に再開される。すなわち、仮想マシン20の動作は、仮想マシン20の状態が仮想マシン40に保存されるまで保留される。仮想マシン20の状態を仮想マシン40がゲスト物理メモリ41へ保存する際には、ホスト10−1からホスト10−2への仮想マシン20の状態に関するデータの転送が必要となる。これに対して、ホスト10−1が備えるメモリにおけるデータのコピーは、ホスト10−1からホスト10−2へのデータの転送と比較して高速に実行される。
そこで、仮想マシン20の動作が一時的に停止する期間を短くするために、仮想マシン管理システム100−1は、仮想マシン20の状態を最初に転送バッファ121に保存する。転送バッファ121は、後述のように、例えば仮想マシン管理システム100−1が備えるメモリである。仮想マシン20の状態が転送バッファ121に保存に保存されると、仮想マシン20は、動作を再開する。仮想マシン20の動作の再開と併せて、仮想マシン管理システム100−1は、転送バッファ121に保存された仮想マシン20の状態を仮想マシン40のゲスト物理メモリ41へ保存する。このようにすることで、仮想マシン20の動作が一時的に停止する期間は、仮想マシン20の状態がゲスト物理メモリ41へ直接に転送されてゲスト物理メモリ41に保存される場合と比較して短い期間となる。なお、同じページが繰り返しダーティページとなる場合は、仮想マシン管理システム100−1は、当該ダーティページに関して、その時点における内容と直近のチェックポイントにおける内容との差分を仮想マシン40へ転送してもよい。
また、上述のように仮想マシン20の状態が保存される場合には、仮想マシン20から外部への通信は、仮想マシン20の状態の仮想マシン40への保存が完了するまで保留される。すなわち、直近のチェックポイントにて仮想マシン20の状態が保存された後に生じた後に生じた外部への通信は、次のチェックポイントにおいて仮想マシン20の状態が保存されるまで外部へ送信されずに保留される。保留された通信は、仮想マシン20の状態の仮想マシン40への保存が完了した後に実際に実行される。
この動作は、下記の理由に基づく。ホスト10等に障害などが発生し、仮想マシン20の処理が仮想マシン40へ引き継がれた場合には、直近のチェックポイントにて保存された仮想マシン20の状態が仮想マシン40へ引き継がれる。したがって、直近のチェックポイントにて仮想マシン20の状態が保存された後に仮想マシン20にて通信が行われると、その後に仮想マシン40へ引き継がれた場合に、通信が重複して行われる可能性が生じる。そして、仮想マシン20にて行われた通信と仮想マシン40にて行われた通信との間で矛盾が発生する可能性が存在する。このことから、上述のような通信の保留が行われる。
ところで、仮想マシン20の状態が保存される場合においては、ダーティページの数に応じて、仮想マシン20が一時的に停止する期間が長くなる場合がある。また、仮想マシン20にて実行され、何らかのサービスを提供するプログラムは、仮想マシン20のゲスト物理メモリ21へ規模の大きなデータを格納した後にサービスの提供を開始する場合がある。このようなプログラムによって実行されるサービスとして、データベース、Webサービス等のデータキャッシュを作成するサービスが含まれる。
この場合には、仮想マシン20の状態が保存される際に、多くのダーティページが保存の対象となる。したがって、仮想マシン20の状態の保存に伴い、仮想マシン20の動作が一時的に停止する期間が長くなる。この結果として、仮想マシン20にて実行されるプログラムによるサービスの提供の開始が遅れるという問題が生じる場合がある。すなわち、フォールトトレラント機能に起因して、仮想マシン20を用いた外部へのサービスの提供の開始が遅延する等の悪影響が生じる可能性がある。本発明の各実施形態における仮想マシン管理システムは、上述した悪影響の軽減を可能等する。
(第1の実施形態)
次に、本発明の第1の実施形態について説明する。図2は、本発明の第1の実施形態における仮想マシン管理システムを示す図である。図3は、本発明の第1の実施形態における仮想マシン管理システムの一動作例を示すフローチャートである。図4は、本発明の第1の実施形態における仮想マシン管理システムの動作の変形例を示すフローチャートである。
図2に示すとおり、本発明の第1の実施形態における仮想マシン管理システム100は、少なくとも、制御部110と、サービス管理表111と、チェックポイント制御部112とを備える。また、本発明の第1の実施形態における仮想マシン管理システム100は、メモリ転送制御部120と、転送バッファ121と、ネットワーク制御部130と、通信解析部131と、保留バッファ132とを備える。
本実施形態における仮想マシン管理システム100は、例えば、図1に示す仮想マシン管理システム100−1又は100−2として用いられる。すなわち、仮想マシン管理システム100は、図1に示すホスト10−1又は10−2等にて実行される。また、仮想マシン管理システム100は、仮想マシン20又は40等の仮想マシンの実行を管理する。
以下、仮想マシン管理システム100において、仮想マシン20と同様の仮想マシンが実行されることを想定する。仮想マシン管理システム100において、仮想マシン40と同様の仮想マシンが実行されてもよい。以下の仮想マシン管理システム100の各構成要素に関する説明においては、「仮想マシン」との記載は、仮想マシン管理システム100において実行される仮想マシンを指す。
また、以下の説明においては、任意の種類のサービスを提供するプログラムが仮想マシンのゲストOSにてアプリケーションプログラムとして実行されることを、サービスが仮想マシンにて実行されると称する場合がある。さらに、当該サービスが外部のサーバ等や外部のユーザ等から利用可能になることを、サービスが外部へ提供される等と称する場合がある。
続いて、本発明の第1の実施形態における仮想マシン管理システム100の各構成要素について説明する。
制御部110は、サービスを提供するプログラムの少なくとも一つがサービス管理表111にて保持される条件を満たすか否かを判断して、仮想マシンの状態を制御する。制御部110は、仮想マシンにおいて実行されるサービスの少なくとも一つが後述するサービス管理表111にて保持される条件を満たす場合に、仮想マシンのフォールトトレラント機能を有効とするよう仮想マシンの状態を制御する。また、制御部110は、仮想マシンの状態の保存等、フォールトトレラント機能を実現する場合に必要となる制御を行う。
また、制御部110は、例えば上述のサービスのいずれもが停止する場合や、上述のサービスがサービス管理表111にて保持される条件を満たさない場合等に、フォールトトレラント機能を無効とするよう仮想マシンの状態を制御する。
フォールトトレラント機能を有効にすべき条件としては、サービスを提供するプログラムの動作に関連する任意の条件が含まれる。条件の詳細は後述する。
制御部110は、任意の手順にてサービスの少なくとも一つがサービス管理表111にて保持される条件を満たすか否かを判断する。制御部110は、例えば、サービスを提供するプログラムの動作を監視する仮想マシン管理システム100の他の構成要素による監視の結果に基づいて、サービスの少なくとも一つが上述の条件を満たすかを判断する。
例えば、制御部110は、サービスを提供するプログラムの動作を監視する他の構成要素からのフォールトトレラント機能を有効にすべき旨の要求に基づいて、サービスの少なくとも一つが上述の条件を満たすと判断してもよい。また、上述のサービスを提供するプログラムの動作を監視する他の構成要素がサービス管理表111に監視の結果を書込み、制御部110は、当該結果を参照して、サービスの少なくとも一つが上述の条件を満たすかを判断してもよい。
また、制御部110は、仮想マシンにて実行されるサービスを提供するプログラムの動作を直接に監視して、サービスが上述の条件を満たすかを判断してもよい。
別の一例として、制御部110は、後述する通信解析部131にて解析されるサービスを提供するプログラムの通信に関する動作の状況に基づいて、サービスが上述の条件を満たすか否かを判断してもよい。
サービスが上述の条件を満たすと判定した場合に、制御部110は、メモリ転送制御部120やネットワーク制御部130等を適宜制御して、フォールトトレラント機能を有効にする。この制御が行われることで、チェックポイントとして予め指定された間隔で仮想マシンの状態が別のホストにて実行される待機中の仮想マシンに保存される。
また、フォールトトレラント機能が有効である場合に、サービスが上述の条件を満たさないと判定すると、制御部110は、フォールトトレラント機能を無効にするように制御する。例えば、制御部110は、メモリ転送制御部120やネットワーク制御部130等を適宜制御してフォールトトレラント機能を無効にする。すなわち、チェックポイントとして指定された間隔で行われていた仮想マシンの状態の保存に関する処理が停止される。
フォールトトレラント機能の実行には、大きな負荷が必要となる場合がある。したがって、仮想マシン管理システム100においてフォールトトレラント機能が有効である場合には、上述のように、仮想マシンにて実行されるサービスの外部への提供の開始が遅延する等の悪影響が生じる可能性がある。
一方で、フォールトトレラント機能の必要性は、外部へのサービスの提供が行われている場合には高いが、それ以外の場合には必要性が小さい場合もある。そこで、フォールトトレラント機能は、必要性と、サービスを提供するプログラムが動作する際の負荷の大きさとに基づいて有効とされることが好ましいと考えられる。
そこで、本実施形態における仮想マシン管理システム100では、制御部110は、サービスの少なくとも一つがサービス管理表111にて保持される条件を満たすか否かを判断して、仮想マシンの状態を制御する。条件が適切に設定されることで、制御部110は、フォールトトレラント機能の必要性が高い場合に限って有効にすることを可能にする。すなわち、制御部110による制御によって、負荷が大きいが、フォールトトレラント機能の必要性が小さい処理が仮想マシンにて実行されている場合には、フォールトトレラント機能を無効にすることが可能となる。
したがって、制御部110が上述の制御を行うことで、仮想マシンの可用性を高めつつ、フォールトトレラント機能に起因する仮想マシンの動作への影響を小さくすることが可能となる。
サービス管理表111は、仮想マシンのフォールトトレラント機能の対象となる少なくとも一つのサービスの各々について、前記フォールトトレラント機能の有効又は無効との状態に関する条件を保持する。
一例として、サービス管理表111は、仮想マシンのフォールトトレラント機能の対象となる少なくとも一つのサービスの各々について、フォールトトレラント機能を有効にすべき条件を保持する。
上述のように、フォールトトレラント機能を有効にすべき条件としては、サービスを提供するプログラムの実行に関連する任意の条件が含まれる。この条件には、例えば、サービスを提供するプログラムの実行に関する条件や、外部へのサービスの提供の有無に関する条件等が含まれる。これらの条件は、具体的な例としては、サービスを提供するプログラムの実行に際して必要となるメモリの使用量や、サービスの外部への提供に関して行われる通信の種類等の形式で規定される。
なお、サービス管理表111は、仮想マシンのフォールトトレラント機能の対象となる少なくとも一つのサービスの各々について、フォールトトレラント機能を無効にすべき条件を保持してもよい。
本実施形態においては、サービス管理表111は、一例として、仮想マシンにて実行されるサービスの各々について、外部へのサービスの提供の有無に関する条件を保持する。サービスの外部への提供の有無に関する条件としては、外部へのサービスの提供に関して行われる通信の種類等が用いられる。
すなわち、サービス管理表111は、フォールトトレラント機能を有効にすべき条件として、外部へのサービスの提供を開始する際にサービスに関して送受信される通信に関する情報を保持する。例えば、この情報には、外部へのサービスの提供を開始する場合に行われる通信のプロトコルやパケットの種類、これらの通信に関するアドレスやポート番号等が含まれる。
通信のプロトコルとしてTCP/IP(Transmission Control Protocol/Internet Protocol)が用いられる場合には、サービス管理表111は、プロトコルの種類として、例えばTCP又はUDP(User Datagram Protocol)のいずれであるかを保持する。また、この場合には、サービス管理表111は、アドレスとして、サービスの要求元又は提供先等のIP(Internet Protocol)アドレスを保持する。
また、サービス管理表111は、フォールトトレラント機能の有効または無効の状態を保持してもよい。サービス管理表111は、フォールトトレラント機能が有効とされる場合に、フォールトトレラント機能が有効となった要因となるサービスや条件に関する情報を保持してもよい。すなわち、この情報は、例えばどのサービスに起因してフォールトトレラント機能が有効となったかを示す情報である。
更に、サービス管理表111は、後述するチェックポイント制御部112にてチェックポイントの間隔の変更が行われる場合には、チェックポイントに関する情報を保持してもよい。チェックポイントに関する情報としては、仮想マシンのフォールトトレラント機能の対象となる一つのサービスについて、各々のサービスに適したチェックポイントの間隔に関する情報が含まれる。
適切なチェックポイントの間隔は、仮想マシンにおいて実行されるサービスに応じて異なる場合がある。仮想マシンの状態が保存される場合には、上述のように、外部への通信が保留される。通信が保留されている期間が長くなることで、外部への通信の頻度が高い場合等には外部への通信に支障が生じる可能性がある。したがって、例えば外部への通信の頻度が高い場合等には、一般には、短いチェックポイントの間隔が設定されることが好ましい。
これに対して、プログラムの実行時におけるページの更新には、一般に、時間局所性があることが知られている。すなわち、プログラムの実行時に、ある期間においては、同一のページに対して繰り返し更新が行われる場合がある。このような場合には、長いチェックポイントの間隔が設定されることで、仮想マシンの状態の保存において、ダーティページとして更新の対象となるページの総量を削減することが可能となる。すなわち、メモリへの書込みの頻度が高い場合等には、一般には、長いチェックポイントの間隔が設定されることが好ましい。
チェックポイント制御部112は、フォールトトレラント機能が有効である場合に、必要に応じてチェックポイントの間隔やチェックポイントにおける処理を制御する。チェックポイント制御部112は、例えば、制御部110からの指示に応じて、サービス管理表111に規定されたサービスの各々について規定されたチェックポイントの間隔に応じて、チェックポイントの間隔を変更する制御を行う。
メモリ転送制御部120は、チェックポイントにおいて、稼働している仮想マシンから待機している仮想マシンへのゲスト物理メモリの内容の転送を制御する。また、メモリ転送制御部120は、仮想マシンにおけるゲスト物理メモリへのアクセスの制御など、仮想マシンの実現に必要となる一般的な制御を行ってもよい。
転送バッファ121は、仮想マシン管理システム100において実行する仮想マシンが稼働している場合に、当該仮想マシンが有するゲスト物理メモリの内容を一時的に保持するバッファである。メモリ転送制御部120及び転送バッファ121は、一般的なフォールトトレラント機能を実現可能な仮想マシン管理システムが備える構成要素と同様の要素である。
ネットワーク制御部130は、フォールトトレラント機能が有効である場合において、上述した通信の保留の動作等を制御する。また、ネットワーク制御部130は、仮想マシンにおいて実行されるゲストOSでの通信の制御等、仮想マシンを実現する際に必要となる一般的な制御を行ってもよい。
通信解析部131は、上述のサービス管理表111においてフォールトトレラント機能を有効にすべき条件として通信に関する条件が規定されている場合に、仮想マシンにて実行されるゲストOSにおける通信の内容を解析する。通信解析部131は、通信の内容の解析として、例えば、通信がゲストOSにおいて実行されるサービスの開始または終了に関連するか否かを解析する。ゲストOSにおける通信がTCP(Transmission Control Protocol)による通信である場合には、通信解析部131は、パケットの種類を判別する等によって通信の内容を解析する。
保留バッファ132は、フォールトトレラント機能が有効である場合において通信が保留される場合に、保留された通信に関する情報を保持するバッファである。
続いて、本発明の第1の実施形態における仮想マシン管理システム100の動作を説明する。なお、この動作例においては、フォールトトレラント機能を有効にすべき条件の一例として、通信に関する条件がサービス管理表111に規定されていることを想定する。すなわち、制御部110は、通信解析部131における解析の結果に基づいてフォールトトレラント機能を有効にすべき条件を満たすか否かを判定する。
最初に、通信解析部131は、ゲストOSにて行われる通信を解析する(ステップS101)。例えば、通信解析部131は、ネットワーク制御部130を介してゲストOSにて行われる通信の内容を解析する。
次に、通信解析部131は、ステップS101にて解析した通信が、仮想マシンのゲストOSにて行われる外部へのサービス提供の開始に関する通信である否かを判定する(ステップS102)。例えば、当該通信がTCPによる通信である場合には、通信解析部131は、解析対象となるゲストOSからの通信のプロトコルタイプがTCP_SYN_ACKである場合に、外部へのサービス提供の開始に関する通信であると判定する。また、当該通信がUDPによる通信である場合には、通信解析部131は、判定が困難であることから、本ステップの段階では外部へのサービス提供の開始に関する通信であると判定する。
ステップS102において、解析対象となる通信が外部へのサービス提供の開始に関する通信であると判定された場合(ステップS102:Yes)には、制御部110及び通信解析部131は、ステップS103の処理を実行する。ステップS103では、制御部110は、フォールトトレラント機能を有効にすべき条件を満たすか否かを判定する。この動作例においては、制御部110は、通信解析部131における解析結果に基づいて判定を行う。
フォールトトレラント機能を有効にすべき条件を満たしているか否かの判定は、ステップS101又はステップS102にて解析等が行われた通信が、サービス管理表111に保持される条件に該当するか否かを判定することで行われる。すなわち、当該通信に関するアドレスやポート番号が、サービス管理表111に保持されている、フォールトトレラント機能を有効にすべき条件に該当するか比較することで行われる。
ステップS103における一つの動作例として、通信解析部131は、上述の通信が、サービス管理表111に保持される条件に該当するか否かを比較する。条件に該当する場合には、通信解析部131は、制御部110にフォールトトレラント機能を有効にすべき旨の要求を行う。そして、制御部110は、要求を受けた場合に、フォールトトレラント機能を有効にすべき条件を満たすと判断する。
また、ステップS103における別の動作例として、通信解析部131は、上述の通信に関する情報を制御部110に送信してもよい。この場合には、制御部110が、当該送信がサービス管理表111に保持される条件に該当するか比較してもよい。
ステップS103においてフォールトトレラント機能を有効にすべき条件を満たすと判定された場合(ステップS103:Yes)には、制御部110は、サービス管理表120を更新する(ステップS104)。例えば、制御部110は、ステップS103における比較の結果に基づいて、フォールトトレラント機能が有効となった要因となるサービスや条件に関する情報を保持するようにサービス管理表120を更新する。また、制御部110は、フォールトトレラント機能が有効である旨を示すようにサービス管理表120を更新してもよい。
制御部110は、フォールトトレラント機能が既に有効とされているかを確認する(ステップS105)。フォールトトレラント機能が有効とされていない場合(ステップS105:No)には、制御部110は、フォールトトレラント機能を有効にするよう制御を行う(ステップS106)。
フォールトトレラント機能が既に有効とされている場合(ステップS105:Yes)には、チェックポイント制御部112は、チェックポイントの間隔を変更するよう制御する(ステップS107)。この場合には、チェックポイント制御部112は、例えばサービス管理表111を参照し、ステップS103等で比較の対象となった通信に関連するサービスに適したチェックポイントの間隔に関する情報を取得する。そして、そのサービスに適したチェックポイントの間隔が、その時点におけるチェックポイントの間隔と比較して長い場合には、チェックポイント制御部112は、チェックポイントの間隔を上述のサービスに適した間隔に変更する。
なお、ステップS107においてチェックポイントの間隔が変更される場合には、チェックポイント制御部112は、上述の手順と異なる手順にてチェックポイントの間隔を変更するよう制御してもよい。例えば、チェックポイント制御部112は、仮想マシンにて実行されているサービスに対して定められた任意の優先度等に応じて、優先度が最も高いサービスに適した間隔となるようにチェックポイント間隔を制御してもよい。
ステップS106又はS107における処理に引き続いて、ネットワーク制御部130は、必要に応じて通信に関する処理を実行する(ステップS108)。ネットワーク制御部130は、フォールトトレラント機能が有効である場合における通信の保留等、フォールトトレラント機能が有効である場合に必要となる処理を含む通信に関する処理を実行する。
また、ステップS103においてステップS103においてフォールトトレラント機能を有効にすべき条件を満たさないと判定された場合(ステップS103:No)にも、ネットワーク制御部130は、必要に応じてステップS108の処理を実行する。
ステップS102において、解析対象となる通信が外部へのサービス提供の開始に関する通信ではないと判定された場合(ステップS102:No)には、ステップS109の処理が行われる。ステップS109においては、通信解析部131は、ステップS101にて解析した通信が、仮想マシンのゲストOSにて行われる外部へのサービス提供の終了に関する通信である否かを判定する。当該通信がTCPによる通信である場合には、通信解析部131は、例えばプロトコルタイプがTCP_RST又はTCP_FINである場合に、外部へのサービス提供の終了に関する通信であると判定する。
ステップS109において、解析対象となる通信が外部へのサービス提供の終了に関する通信であると判定された場合(ステップS109:Yes)には、制御部110及び通信解析部131は、ステップS110の処理を実行する。ステップS103では、制御部110は、フォールトトレラント機能を無効にすべき条件を満たすか否かを判定する。
この動作例においては、制御部110は、ステップS110の処理として、ステップS103における処理と同様にして、通信解析部131における解析結果に基づいて判定を行う。すなわち、当該通信に関するアドレスやポート番号が、サービス管理表111に保持されるフォールトトレラント機能を無効にすべき条件に該当するか比較することで行われる。
ステップS110においてフォールトトレラント機能を有効にすべき条件を満たすと判定された場合(ステップS110:Yes)には、制御部110は、サービス管理表120を更新する(ステップS111)。例えば、制御部110は、ステップS110における比較の結果に基づいて、フォールトトレラント機能が無効とすべきと判断された要因となるサービスや条件に関する情報を保持するようにサービス管理表120を更新する。
続いて、制御部110は、サービス管理表111を参照する等によって、フォールトトレラント機能を有効とすべき他のサービスの外部への提供が行われているかを確認する(ステップS112)。他のサービスが提供されている場合(ステップS112:Yes)には、制御部110は、フォールトトレラント機能を有効としたままの状態とする。そして、チェックポイント制御部112は、ステップS107の処理として、必要に応じてチェックポイントの間隔を変更するよう制御する。
フォールトトレラント機能を有効とすべき他のサービスの外部への提供が行われていない場合には、制御部110は、フォールトトレラント機能を無効にするよう制御を行う(ステップS113)。ステップS113の処理と併せて、制御部110は、フォールトトレラント機能が無効である旨を示すようにサービス管理表120を更新してもよい。ステップS113の処理の後には、必要に応じて、ネットワーク制御部130は、ステップS108の通信に関する処理を実行する。
以上のとおり、本発明の第1の実施形態における仮想マシン管理システム100は、フォールトトレラント機能を有効にすべき条件を満たす場合にフォールトトレラント機能を有効にするように仮想マシンを制御する。すなわち、本実施形態においては仮想マシン管理システム100の制御部110は、サービス管理表111に予め規定された条件を満たす場合にフォールトトレラント機能を有効とするように仮想マシンを制御する。サービス管理表111にて規定される条件は、例えば、仮想マシンにおいてサービスの外部への提供が行われることを示す条件である。
つまり、本実施形態の仮想マシン管理システム100においては、サービス管理表111に保持される条件に応じ、仮想マシンにおいてサービスの外部への提供が行われる場合にフォールトトレラント機能を有効とすることが可能となる。言い換えると、本実施形態の仮想マシン管理システム100においては、負荷が大きく、かつ、外部に対して影響を及ぼす可能性の小さい処理が行われている場合にはフォールトトレラント機能を無効とすることが可能となる。
したがって、仮想マシンの状態の保存等に伴う仮想マシンの一時的な停止等、フォールトトレラント機能に起因する仮想マシンへの負荷を軽減することが可能となる。これにより、仮想マシンの状態の保存が行われることに起因して、外部へのサービス提供が遅延すること等が回避される。
すなわち、本実施形態における仮想マシン管理システム100は、フォールトトレラント機能に起因する仮想マシンの動作への影響が小さい仮想マシン管理システム等を提供することを可能とする。
(第1の実施形態の変形例)
本発明の第1の実施形態においては、種々の変形例が考えられる。
本実施形態における仮想マシン管理システム100は、仮想マシンを実現する際に必要となる構成として、図2に示す構成とは異なる構成を備えてもよい。また、仮想マシン管理システム100は、一般的なフォールトトレラント機能を実現する際に必要となる構成として、図2に示す構成とは異なる構成を備えてもよい。仮想マシン管理システム100は、少なくとも制御部110及びサービス管理表111を備えることで、フォールトトレラント機能に起因する仮想マシンの動作への影響を軽減することが可能となる。
また、別の一例として、本実施形態における仮想マシン管理システム100は、チェックポイントの間隔を変更しなくてもよい。この場合には、仮想マシン管理システム100は、フォールトトレラント機能が有効である場合には、予め定められたチェックポイントの間隔にて仮想マシンの状態を保存する。すなわち、この場合における仮想マシン管理システム100は、図4に示すフローチャートのように動作してもよい。
図4に示すフローチャートにおいては、図3に示すフローチャートのS107にて規定されるチェックポイント間隔の調整に関する動作が省略される。そして、ステップS105又はステップS112にて規定される分岐が“Yes”である場合には、引き続いてステップS108にて規定される通信に関する処理が行われる。図4に示すフローチャートの動作は、上述の点を除き、図3に示すフローチャートと同様に動作する。
また、この場合には、仮想マシン管理システム100のチェックポイント制御部は、チェックポイントにおける仮想マシンの情報の保存についての制御を行う。
このような場合であっても、仮想マシン管理システム100は、制御部110がサービス管理表111に規定される条件を満たす場合にフォールトトレラント機能を有効にすることで、仮想マシンの動作への影響の軽減が可能となる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。図5は、本発明の第2の実施形態における仮想マシン管理システム200の構成を示す図である。
図5に示すように、本発明の第2の実施形態における仮想マシン管理システム200は、本発明の第1の実施形態における仮想マシン管理システム100と同様の構成を備える。仮想マシン管理システム200において、制御部110は、サービス監視部240における仮想マシンの監視結果に基づいて、仮想マシンの記フォールトトレラント機能に関する状態を制御する。
仮想マシンのゲストOSにおいては、一般的に、仮想マシン管理システムや仮想マシンを支援するプログラムが導入される場合がある。本実施形態においては、サービス監視部240は、そのようなプログラムの例である。仮想マシン管理システム200は、サービス監視部240における監視結果を用いて仮想マシンの制御を行う。
本実施形態においては、サービス監視部240は、一つの動作例として、ゲストOSにて実行されるサービスに関連するプロセスの状態を監視する。すなわち、サービス監視部240は、これらのプロセスの起動や終了等を監視する。サービス監視部240が監視の対象とするプロセスに関連するサービス等は、サービス管理表111にて適宜規定されてもよい。
監視の対象となるプロセスが起動した場合には、サービス監視部240は、制御部110にフォールトトレラント機能を有効にすべき旨の要求を行う。そして、制御部110は、要求を受けた場合に、フォールトトレラント機能を有効にすべき条件を満たすと判断する。
または、サービス監視部240は、仮想マシンにおいてプロセスが起動した場合に、その旨を制御部110に通知してもよい。この場合には、制御部110は、通知の対象であるプロセスがサービス管理表111に保持される条件に関連するプロセスであるかを比較し、フォールトトレラント機能を有効にすべき条件を満たすと判断してもよい。
同様に、サービス監視部240は、監視の対象となるプロセスが終了した場合には、サービス監視部240は、制御部111は、フォールトトレラント機能を無効にすべき旨の要求を行う。そして、制御部110は、要求を受けた場合に、他のフォールトトレラント機能を有効とすべき条件を参照しつつ、必要に応じてフォールトトレラント機能を無効にすべき条件を満たすと判断する。または、サービス監視部240は、仮想マシンにおいてプロセスが終了した場合に、その旨を制御部110に通知してもよい。制御部110は、当該通知に基づき、必要に応じてフォールトトレラント機能を有効にすべき条件を満たすと判断してもよい。
別の例として、サービス監視部240は、ゲストOSにて実行されるサービスに関連するプロセスの状態として、当該プロセスのメモリの使用量を監視する。
この場合には、サービス監視部240は、例えば、サービス管理表111に予め定められたメモリの使用量を超えたか否かを監視する。そして、制御部110は、サービス監視部240の監視の結果に基づいて、上述の例における手順と同様の手順等にてフォールトトレラント機能を有効にすべき(又は無効にすべき)条件を満たすと判断する。
本実施形態においては、仮想マシン管理システム200の通信解析部131は、第1の実施形態において説明した例と同様に、仮想マシンにて実行されるゲストOSにおける通信の内容を解析する。この場合には、制御部110の動作としていくつかの動作が想定される。
一つの動作として、制御部110は、サービス監視部240における監視の結果に基づいてフォールトトレラント機能の状態に関する制御を行う。制御部110は、フォールトトレラント機能の状態に関する制御においては、通信解析部131による通信を解析した結果を用いない。そして、通信解析部131は、フォールトトレラント機能が無効である場合には、外部へのサービスの提供に関わるパケットを破棄する。このような制御を行うことで、制御部110は、フォールトトレラント機能が有効である場合に限って仮想マシンによる外部へのサービスの提供を行うことを可能にする。
また、制御部110は、通信解析部131又はサービス監視部240のいずれかからの通知等に基づいてフォールトトレラント機能の状態を制御してもよい。例えば、通信解析部131又はサービス監視部240のいずれかからの通知等がフォールトトレラント機能を有効にすべき条件に関する場合、制御部110は、フォールトトレラント機能を有効にすべき条件を満たすと判断してもよい。この場合には、制御部110は、フォールトトレラント機能を有効にするように制御する。
以上のとおり、本発明の第2の実施形態における仮想マシン管理システム200は、制御部110は、フォールトトレラント機能の状態の制御に際して、サービス監視部240における監視の結果を用いる。サービス監視部240は、仮想マシンのゲストOSにて実行されるプロセスの状況を監視する。このことから、制御部110は、そのプロセスの状況に基づいて、フォールトトレラント機能の状態を制御することが可能となる。したがって、本実施形態における仮想マシン管理システム200は、第1の実施形態における仮想マシン管理システム100と同様の効果を奏する。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、各実施形態における構成は、本発明のスコープを逸脱しない限りにおいて、互いに組み合わせることが可能である。