(57)【特許請求の範囲】
【請求項１】
物理計算機と、
前記物理計算機または当該物理計算機とネットワークを介して接続される別の物理計算機上で動作する仮想計算機のスナップショットを格納するのに用いられるスナップショット格納手段と、
前記仮想計算機を利用する外部システム及び前記仮想計算機との間で入出力される通信データを通信のログとして時系列順に記録する通信記録手段であって、前記通信のログとして入力データを記録する際には、当該入力データに対応する通信時刻を表す時刻情報を付す通信記録手段と、
前記仮想計算機のスナップショットと前記通信のログとを同期化するための制御を行う制御手段であって、前記スナップショット取得タイミングの到来に応じて、前記仮想計算機の入出力を停止させ、前記スナップショット取得手段による前記スナップショットの取得完了に応じて、前記仮想計算機の入出力を再開させる制御手段と
を具備し、
前記物理計算機は、
前記物理計算機上で前記仮想計算機が動作する場合に、所定のスナップショット取得タイミング毎に当該仮想計算機の状態を当該仮想計算機のスナップショットとして取得して、前記スナップショット格納手段に格納するスナップショット取得手段と、
前記物理計算機または前記別の物理計算機上で前記仮想計算機が動作している状態で当該仮想計算機が正常に機能することができない障害が発生した後、当該仮想計算機を前記物理計算機上で復元することが可能な状態になった場合に、前記スナップショット格納手段に格納されている当該仮想計算機の最新のスナップショットに基づき、当該仮想計算機を当該スナップショットが取得された第１の時点に復元するスナップショット復元手段と、
前記第１の時点に復元された前記仮想計算機に、前記通信記録手段によって記録されている通信のログに含まれている前記第１の時点から前記障害の発生時である第２の時点までの入力データを、当該入力データに付されている時刻情報に基づいて、先に入力されたのと相対時刻が同一の入力タイミングで投入することにより、前記仮想計算機を前記第２の時点まで復元するログ再生手段とを含む
ことを特徴とする仮想計算機システム。
【請求項２】
前記物理計算機は、前記ログ再生手段が前記通信のログに含まれている入力データを前記仮想計算機に投入することにより当該入力データに対する前記仮想計算機の結果として当該仮想計算機にて生成される出力データを、前記通信のログに含まれている出力データのうち、当該入力データが前記障害発生前に前記仮想計算機に入力された際に当該仮想計算機から出力された出力データと比較することにより、前記仮想計算機の状態が正しく復元されているかを判定するログ比較手段を更に含む
ことを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記仮想計算機が前記第１の時点の状態に復元されてから前記第２の時点の状態に復元されるまでの期間、前記仮想計算機の入出力が停止されることを特徴とする請求項１または２に記載の仮想計算機システム。
【請求項４】
物理計算機と、前記物理計算機または当該物理計算機とネットワークを介して接続される別の物理計算機上で動作する仮想計算機のスナップショットを格納するのに用いられるスナップショット格納手段と、通信記録手段と、前記仮想計算機のスナップショットと前記通信のログとを同期化するための制御を行う制御手段とから構成される仮想計算機システムに適用される仮想計算機復元方法であって、
前記物理計算機上で前記仮想計算機が動作する場合に、前記物理計算機が、所定のスナップショット取得タイミング毎に当該仮想計算機の状態を当該仮想計算機のスナップショットとして取得して、前記スナップショット格納手段に格納するステップと、
前記スナップショット取得タイミングの到来に応じて、前記制御手段が前記仮想計算機の入出力を停止させるステップと、
前記スナップショット取得手段による前記スナップショットの取得完了に応じて、前記制御手段が前記仮想計算機の入出力を再開させるステップと、
前記仮想計算機を利用する外部システム及び前記仮想計算機との間で入出力される通信データを通信のログとして前記通信記録手段が時系列順に記録するステップであって、前記通信のログとして入力データを記録する際には、当該入力データに対応する通信時刻を表す時刻情報を付すステップと、
前記物理計算機または前記別の物理計算機上で前記仮想計算機が動作している状態で当該仮想計算機が正常に機能することができない障害が発生した後、当該仮想計算機を前記物理計算機上で復元することが可能な状態になった場合に、前記物理計算機が、前記スナップショット格納手段に格納されている当該仮想計算機の最新のスナップショットに基づき、当該仮想計算機を当該スナップショットが取得された第１の時点に復元するステップと、
前記第１の時点に復元された前記仮想計算機に、前記通信記録手段によって記録されている通信のログに含まれている前記第１の時点から前記障害の発生時である第２の時点までの入力データを、当該入力データに付されている時刻情報に基づいて、先に入力されたのと相対時刻が同一の入力タイミングで前記物理計算機が投入することにより、前記仮想計算機を前記第２の時点まで復元するステップと
を具備することを特徴とする仮想計算機復元方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理計算機上で動作する仮想計算機を備えた仮想計算機システムに係り、特に、仮想計算機が動作する物理計算機の障害時に当該仮想計算機を復元するのに好適な仮想計算機システム及び同システムにおける仮想計算機復元方法に関する。
【背景技術】
【０００２】
一般に計算機システムでは、障害が発生したときに、その障害発生直前のシステム状態を復元して処理を再開できるようにすることが要求される。このようなシステム状態を復元する手法として、従来から、スナップショットリカバリー方式及びチェックポイントリカバリー方式が知られている。
【０００３】
スナップショットリカバリー方式は、例えば定期的にシステム内部の状態をスナップショットとして取得して保存しておき、システムに障害が発生したときに、その障害発生時刻に最も近い時刻（スナップショット時刻）で取得されたスナップショット（つまり最新のスナップショット）に基づき、システムを当該障害発生時刻に最も近いスナップショット時刻の状態に復元するものである。
【０００４】
一方、チェックポイントリカバリー方式は、例えば特許文献１に記載されているように、計算機システムがネットワークを介して当該システムの外部（他の計算機システム）と通信している場合に、設定されたチェックポイントまでのネットワークへ／からの入出力（送受信）の履歴を保存しておき、システムに障害が発生したときには、保存しておいた履歴を用いてシステムの状態を復元するものである。ここで、計算機システムの外部から当該システムへの全ての入力に対する応答（出力）は、次のチェックポイントまで待機される。
【特許文献１】特開２０００−１９４６２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記したように、従来のスナップショットリカバリー方式では、計算機システムの状態を最新のスナップショットを取得した時点にしか復元できず、当該最新のスナップショットを取得した後の状態に関しては復元が不可能である。
【０００６】
一方、従来のチェックポイントリカバリー方式（特許文献１に記載のチェックポイントリカバリー方式）では、チェックポイント以後の履歴により計算機システムの状態の回復を行うことを可能にしている。しかし、特許文献１に記載のチェックポイントリカバリー方式では、計算機システムの外部から当該システムへの全ての入力に対する応答（出力）は、次のチェックポイントまで待機させる必要がある。このためためチェックポイントリカバリー方式では、計算機システムにおける通常処理における性能が低下する。また、チェックポイントは計算機システムが外部に対して整合性を保てる状態でなければ取得することができない。
【０００７】
このため、システム外部への出力を待機させることなく、外部との整合性を保てる状態の如何を問わずに、スナップショットより後の障害発生時点まで計算機システムの復元を可能とすることが要求される。
【０００８】
ところで近年は、仮想計算機（仮想マシン）を備えた仮想計算機システムが開発されている。仮想計算機は、物理計算機上で動作する仮想化された計算機として知られている。仮想計算機は、仮想化されたディスク、メモリ、ＣＰＵ（プロセッサ）及びネットワークインタフェースを含む。この仮想計算機上にオペレーティングシステム（ＯＳ）、アプリケーション（アプリケーションプログラム）をインストールすることにより、当該ＯＳ、アプリケーションを実行させることができる。仮想計算機は、システム外部（外部システム）からネットワークを介して何らかの入力が行われると、当該入力に応じた処理の結果を当該入力に対する出力（応答）としてシステム外部に送出する。
【０００９】
そこで、このような仮想計算機システムにおいても、例えば仮想計算機が動作する物理計算機に障害が発生した場合に、通常の計算機システムと同様に、当該仮想計算機の状態をスナップショットより後の時点（例えば障害発生時点）まで復元できるようにすることが要求されている。
【００１０】
本発明は上記事情を考慮してなされたものでその目的は、仮想計算機のシステム外部への出力を待機させることなく、外部との整合性を保てる状態の如何を問わずに、仮想計算機の状態をスナップショットより後の障害発生時点まで復元することができる仮想計算機システム及び同システムにおける仮想計算機復元方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の１つの観点によれば仮想計算機システムが提供される。このシステムは、物理計算機と、前記物理計算機または当該物理計算機とネットワークを介して接続される別の物理計算機上で動作する仮想計算機のスナップショットを格納するのに用いられるスナップショット格納手段と、前記仮想計算機を利用する外部システム及び前記仮想計算機の間で入出力される通信データを通信のログとして時系列順に記録する通信記録手段とを具備する。前記物理計算機は、前記物理計算機上で前記仮想計算機が動作する場合に、当該仮想計算機の状態を当該仮想計算機のスナップショットとして取得して、前記スナップショット格納手段に格納するスナップショット取得手段と、前記物理計算機または前記別の物理計算機上で前記仮想計算機が動作している状態で当該仮想計算機が正常に機能することができない障害が発生した後、当該仮想計算機を前記物理計算機上で復元することが可能な状態になった場合に、前記スナップショット格納手段に格納されている当該仮想計算機の最新のスナップショットに基づき、当該仮想計算機を当該スナップショットが取得された第１の時点に復元するスナップショット復元手段と、前記第１の時点に復元された前記仮想計算機に、前記通信記録手段によって記録されている通信のログに含まれている前記第１の時点から前記障害の発生時である第２の時点までの入力データを時系列順に投入することにより、前記仮想計算機を前記第２の時点まで復元するログ再生手段とを含む。
【発明の効果】
【００１２】
本発明によれば、スナップショットにより仮想計算機を当該スナップショットの取得時点まで復元するのに加えて、外部システム及び仮想計算機の間で入出力される通信データを通信のログとして時系列順に記録しておき、当該スナップショットの取得時点まで復元された仮想計算機に対して、当該通信のログに含まれている当該スナップショットの取得時点から障害発生時点までの入力データを時系列順に投入することにより、仮想計算機のシステム外部への出力を待機させることなく、外部との整合性を保てる状態の如何を問わずに、仮想計算機を障害発生時点まで復元することができる。、
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る仮想計算機システムの構成を示すブロック図である。図１の仮想計算機システムは、複数の物理計算機（物理サーバ計算機）、例えば２台の物理計算機１０-1及び１０-2を含む。物理計算機１０-1及び１０-2は、ネットワーク２０に接続されている。
【００１４】
物理計算機１０-1及び１０-2は、ＣＰＵ、Ｉ／Ｏ装置、メモリ及びネットワークインタフェース（ネットワークインタフェースカード：ＮＩＣ）のような周知のハードウェア資源（図示せず）を備えている。物理計算機１０-1及び１０-2が有するハードウェア資源は、仮想化されることにより、仮想計算機（仮想マシン）が動作する環境（仮想計算機実行環境）を提供する。図１では、物理計算機１０-1の仮想計算機実行環境で仮想計算機１１が動作している状態が示されている。なお、物理計算機１０-1上で、仮想計算機１１を含む複数の仮想計算機が動作する構成であっても構わない。
【００１５】
物理計算機１０-1及び１０-2上では、ハイパーバイザー１２-1及び１２-2がそれぞれ動作する。ハイパーバイザー１２-1及び１２-2は、仮想計算機マネージャ（仮想マシンマネージャ：ＶＭＭ）または仮想計算機モニタ（仮想マシンモニタ：ＶＭＭ）とも呼ばれる。ハイパーバイザー１２-1及び１２-2は、それぞれ、物理計算機１０-1及び１０-2が有する上述のハードウェア資源の利用を管理することで、仮想計算機を管理する。例えばハイパーバイザー１２-1及び１２-2は、物理計算機１０-1及び１０-2が有するハードウェア資源を仮想化することにより仮想計算機が動作する仮想計算機実行環境を提供する。つまりハイパーバイザー１２-1及び１２-2は、仮想化されたハードウェア資源を有する仮想計算機を構築する。
【００１６】
物理計算機１０-1上で動作する仮想計算機１１は、システム部１３とアダプタ１４とから構成される。システム部１３は、仮想計算機１１の本体であり、仮想計算機１１上で動作するＯＳ（オペレーティングシステム）に従ってアプリケーション（アプリケーションプログラム）を実行する。これによりシステム部１３は、アダプタ１４、ネットワーク２０及び後述するスイッチ３０を介して外部システム４０との入力及び出力を行う。
【００１７】
アダプタ１４は、仮想計算機１１（内のシステム部１３）のインタフェース機構をなしている。アダプタ１４は、入出力機構１４１、ログ格納部１４２、ログ格納処理機構１４３、ログ再生機構１４４及びログ比較機構１４５を含む。
【００１８】
入出力機構１４１は、システム部１３とネットワーク２０との間の入出力を行う。入出力機構１４１はまた、物理計算機１０-1に障害が発生した結果、当該物理計算機１０-1上で動作していた仮想計算機１１の状態を復元するためにスイッチ３０内の後述するログ送信機構３５からログ（通信の履歴）が送信された場合、当該ログを入力してログ格納処理機構１４３に渡す。ログ格納部１４２は、ログ送信機構３５から送信されたログを一時格納するのに用いられる。本実施形態においてログ格納部１４２は、物理計算機１０-1が持つメモリの領域を割り当てることによって実現される。ログ格納処理機構１４３は、入出力機構１４１から渡されたログをログ格納部１４２に格納する。
【００１９】
ログ再生機構１４４は、ログ格納部１４２に格納されたログに基づき、システム部１３への入力及び当該入力に伴うシステム部１３からの出力（つまりシステム部１３へ／からの入出力）を再生（再現）する。ログ比較機構１４５は、システム部１３の状態の復元時に、システム部１３への入力に対する当該システム部１３からの出力を上記ログに含まれている当該入力に対する出力と比較する。
【００２０】
ハイパーバイザー１２-1は、スナップショット管理機構１２１及びスナップショット格納部１２２を含む。スナップショット管理機構１２１は、例えば定期的に、システム部１３を含む仮想計算機１１の状態をスナップショットとして取得するスナップショット取得機能を有する。スナップショット管理機構１２１はまた、取得されたスナップショットにより仮想計算機１１をスナップショット取得時点に復元するスナップショット復元機能を有する。仮想計算機１１の状態は、当該仮想計算機１１に割り当てられているＣＰＵの状態（プログラムカウンタ及びレジスタの状態）及びメモリの状態を含む。
【００２１】
スナップショット格納部１２２は、スナップショット管理機構１２１によって取得されたスナップショットを格納するのに用いられる。本実施形態においてスナップショット格納部１２２は、物理計算機１０-1が持つディスク装置のような永続的記憶装置の領域を割り当てることによって実現される。なお、スナップショット格納部１２２が、物理計算機１０-1及び１０-2で共有される共有ディスク装置（図示せず）の領域を割り当てることによって実現されても構わない。  
図１では省略されているが、ハイパーバイザー１２-2も、ハイパーバイザー１２-1と同様の構成を有している。
【００２２】
ネットワーク２０には、計算機システム相互をネットワーク２０を介して接続するためのスイッチ３０が接続されている。図１の状態では、スイッチ３０は、外部システム４０をネットワーク２０を介して物理計算機１０-1上の仮想計算機１１と接続している。外部システム４０は、物理計算機１０-1（上の仮想計算機１１）の外部の計算機システムを指す。本実施形態において外部システム４０は、物理計算機１０-1（上の仮想計算機１１）が提供するサービスを受けるクライアント端末であるが、物理計算機１０-1と同様の計算機システム（物理サーバ計算機）であっても構わない。
【００２３】
スイッチ３０は、通信記録装置３１を含む。通信記録装置３１は、ネットワーク２０及びスイッチ３０を経由しての通信のログ（履歴）を取得して記録する。通信記録装置３１は、ログ取得機構３２、ログ格納部３３、ログ保存処理機構３４及びログ送信機構３５から構成される。
【００２４】
ログ取得機構３２は、ネットワーク２０及びスイッチ３０を経由しての通信のログを取得する。ここでは、説明を簡略化するために、ログ取得機構３２によって取得されるログが、物理計算機１０-1上の仮想計算機１１（に含まれているシステム部１３）と外部システム４０との間で行われる、ネットワーク２０及びスイッチ３０を経由しての通信のログであるものとする。また、以降の説明では、外部システム４０から物理計算機１０-1上の仮想計算機１１への通信（通信データ）を入力（入力データ）と呼び、その逆の仮想計算機１１から外部システム４０への通信（通信データ）を出力（出力データ）と呼ぶ。
【００２５】
ログ格納部３３は、ログ取得機構３２によって取得された通信のログ（入出力データ）を格納するのに用いられる記憶手段である。ログ保存処理機構３４は、ログ取得機構３２によって取得された入出力データを時系列順にログ格納部３３に保存する。本実施形態では、ログ保存処理機構３４によってログ格納部３３に保存される入力データには、当該データが仮想計算機（ここでは仮想計算機１１）に送られた時刻（通信時刻）を示す時刻情報が付される。ログ送信機構３５は、後述する制御機構５０からの指示に応じて、ログ格納部３３に保存されている通信のログを指定の物理計算機上の仮想計算機に送信する。
【００２６】
物理計算機１０-1、物理計算機１０-2及びスイッチ３０は、ネットワーク２１にも接続されている。このネットワーク２１には、制御機構５０も接続されている。制御機構５０は、大別して２つの制御を行う。第１は、ネットワーク２１に接続されている物理計算機上で動作している仮想計算機のスナップショットと当該仮想計算機が行う入出力のログ（通信のログ）との同期を取るための制御である。第２は、ネットワーク２１に接続されている物理計算機に障害が発生した場合、当該物理計算機上で動作していた仮想計算機を、障害発生直前の状態に復元させるための制御である。
【００２７】
なお、通信記録装置３１が、ルータ、或いはプロキシサーバ（外部システム４０から物理計算機１０-1または１０-2上で動作する仮想計算機へのアクセスを代理するプロキシサーバ）に設けられていてもよい。
【００２８】
次に、図１に示す仮想計算機システムにおける動作について説明する。  
まず、物理計算機１０-1上のハイパーバイザー１２-1に配置されたスナップショット管理機構１２１によるスナップショット取得の概略について、図２を参照して説明する。図２は、仮想計算機１１の状態とスナップショット時刻とスナップショットとの関係を示す。
【００２９】
本実施形態においてスナップショット管理機構１２１は、スナップショット取得手段として機能して、定期的に仮想計算機１１のスナップショットを取得する。ここでは、スナップショット取得時刻として、時刻ｔ１及びｔ２を含むものとする。この場合、スナップショット管理機構１２１は、時刻ｔ１における仮想計算機１１の状態（システム部１３の状態を含む仮想計算機１１の状態）２０１を、時刻ｔ１におけるスナップショット２０２として取得する。またスナップショット管理機構１２１は、時刻ｔ２における仮想計算機１１の状態２０３を、時刻ｔ２におけるスナップショット２０４として取得する。取得されたスナップショット２０２及び２０４はスナップショット格納部１２２に格納される。なお、スナップショット格納部１２２には、取得されたスナップショットの世代を管理するためのスナップショット管理情報も格納される。
【００３０】
このように、時刻ｔ１及びｔ２における、それぞれ仮想計算機１１のスナップショット２０２及び２０４を取得してスナップショット格納部１２２に格納しておくことにより、時刻ｔ２より後の任意の時刻ｔ２＋Δｔにおいて、仮想計算機１１を時刻ｔ１またはｔ２の状態に復元することが可能となる。なお、スナップショット格納部１２２に最新のスナップショットのみを格納する構成を適用する場合には、仮想計算機１１を時刻ｔ２の状態にのみ復元することができる。いずれにしても、少なくとも時刻ｔ２の状態に、仮想計算機１１を復元することが可能となる。
【００３１】
次に、スイッチ３０内の通信記録装置３１による、仮想計算機１１（のシステム部１３）と外部システム４０との間の通信のログの記録について、図３を参照して説明する。図３は、外部システム４０から仮想計算機１１への通信（入力）時におけるデータ（入力データ）の流れと、当該入力データに対する仮想計算機１１から外部システム４０への通信（出力）時におけるデータ（出力データ）の流れとを示す。
【００３２】
まず、外部システム４０からの仮想計算機１１（のシステム部１３）宛てのデータ（入力データ）３０１はスイッチ３０を経由して仮想計算機１１のアダプタ１４に送られる。アダプタ１４（内の入出力機構１４１）は、この外部システム４０からの入力データ３０１をシステム部１３に入力する。
【００３３】
スイッチ３０に設けられた通信記録装置３１内のログ取得機構３２は、入力データ３０１が当該スイッチ３０を経由する際に、当該入力データ３０１を通信のログとして取得する。通信記録装置３１内のログ保存処理機構３４は、ログ取得機構３２によって取得された入力データ３０１を、時系列を保ってログ格納部３３に保存する。この入力データの保存に際して、本実施形態におけるログ保存処理機構３４は、その時点における時刻（通信時刻）を表す時刻情報を当該入力データに付す。
【００３４】
仮想計算機１１のシステム部１３は、アダプタ１４（内の入出力機構１４１）によって入力された入力データ３０１を受け取ると、当該入力データ３０１に基づく処理を行って、その処理結果としての外部システム４０宛ての出力データ３０２をアダプタ１４（内の入出力機構１４１）に渡す。アダプタ１４（内の入出力機構１４１）は、この出力データ３０２を外部システム４０に送信するために、当該出力データ３０２をネットワーク２０上に送出する。ネットワーク２０上に送出された外部システム４０宛ての出力データ３０２は、スイッチ３０を経由して当該外部システム４０に送られる。
【００３５】
スイッチ３０に設けられた通信記録装置３１内のログ取得機構３２は、仮想計算機１１のシステム部１３からの出力データ３０２が当該スイッチ３０を経由する際に、当該出力データ３０２を通信のログとして取得する。通信記録装置３１内のログ保存処理機構３４は、ログ取得機構３２によって取得された出力データ３０２を、時系列を保ってログ格納部３３に保存する。
【００３６】
このようにして、仮想計算機１１のシステム部１３と外部システム４０との間の通信で入出力されるデータが、通信のログとして、スイッチ３０に設けられた通信記録装置３１内のログ格納部３３に時系列順に格納（記録）される。
【００３７】
図４（ａ）は、ログ格納部３３に時系列順に格納された入出力データの列を含むログの一例を示す。図４（ａ）においてＩ１，Ｉ２，Ｉ３…は入力データ、Ｏ１，Ｏ２，Ｏ３…はそれぞれ入力データＩ１，Ｉ２，Ｉ３…に対応する出力データである。図４（ａ）の例では、ログ内の入出力データの列はＩ１→Ｏ１→Ｉ２→Ｏ２→Ｉ３→Ｏ３→…の順である。しかし、Ｉｉ（ｉ＝１，２，３…）の次に当該Ｉｉに対応するＯｉが出力されるとは限らない。入力データＩ１，Ｉ２，Ｉ３…には、それぞれ当該データＩ１，Ｉ２，Ｉ３…が仮想計算機１１に送られた（入力された）時刻ｔ２１，ｔ２２，ｔ２３…を表す時刻情報が付されている。
【００３８】
図４（ａ）に示されるような、ログ格納部３３に時系列順に格納された通信のログを用いることにより、以下に述べるように、仮想計算機１１を上述の時刻ｔ２＋Δｔにおける状態２０５（図２参照）に復元することができる。
【００３９】
次に、時刻ｔ２における仮想計算機１１のスナップショット２０４が取得された後の上記時刻ｔ２＋Δｔに物理計算機１０-1の障害が発生した結果、仮想計算機１１（のシステム部１３）が正常に機能することができなくなったものとする。この場合、仮想計算機１１を時刻（障害発生時刻）ｔ２＋Δｔの状態に復元する仮想計算機復元処理（システム復元処理）が行われる。なお、仮想計算機１１（のシステム部１３）が正常に機能できない状態は、仮想計算機１１のシステム部１３、及びハイパーバイザー１２-1のいずれか一方または両方に障害が発生した場合に発生する。このシステム部１３及びハイパーバイザー１２-1のいずれか一方または両方の障害は、物理計算機１０-1の障害だけでなく、ソフトウェアのバグ等によっても発生する。
【００４０】
以下、仮想計算機復元処理について説明する。まず、物理計算機１０-1の障害が回復し、当該物理計算機１０-1が再起動されたものとする。すると物理計算機１０-1上でハイパーバイザー１２-1が再起動する。ハイパーバイザー１２-1は、当該ハイパーバイザー１２-1上に仮想計算機１１を再生成する。制御機構５０はハイパーバイザー１２-1内のスナップショット管理機構１２１に対して、スナップショットによる仮想計算機１１の復元を依頼する。
【００４１】
スナップショット管理機構１２１は、制御機構５０からの復元依頼を受けてスナップショット復元手段として機能して、スナップショット格納部１２２に保存されている最新のスナップショット、即ち時刻ｔ２に取得されたスナップショット２０４（図２参照）に基づいて、仮想計算機１１を、当該仮想計算機１１のシステム部１３を含めて時刻ｔ２の状態に復元する。つまりスナップショット管理機構１２１は、スナップショットが取得された時刻ｔ２（第１の時点）の状態の仮想計算機１１を復元する。なお、スナップショット管理機構１２１に代えて、上述のスナップショット取得手段（スナップショット取得機構）とスナップショット復元手段（スナップショット復元機構）とを個々に設けることも可能である。
【００４２】
さて、スナップショット管理機構１２１によって復元された仮想計算機１１には、時刻ｔ２の状態のシステム部１３が存在する。しかし、外部システム４０は既に時刻ｔ２よりΔｔだけ進んだ時刻ｔ２＋Δｔの状態にある。このため、外部システム４０は、物理計算機１０-1の障害発生直前まで仮想計算機１１と通信を行っていたにも拘わらず、時刻ｔ２の状態に復元された仮想計算機１１との間で、殆どの場合において正常に通信を行うことができない。つまり外部システム４０は、処理を継続することができない。
【００４３】
そこで本実施形態では、スイッチ３０内の通信記録装置３１により記録されているログを利用することにより、時刻ｔ２の状態に復元された仮想計算機１１をｔ２＋Δｔの状態に復帰させることを可能にする。そのため、時刻ｔ２の状態の仮想計算機１１が復元されると、通信記録装置３１内のログ送信機構３５は、ログ格納部３３に格納されているログを、仮想計算機１１のアダプタ１４にネットワーク２０を介して送信する。
【００４４】
ログ送信機構３５からアダプタ１４に送信されたログは、当該アダプタ１４内の入出力機構１４１で受け取られて、ログ格納部１４２に格納される。入出力機構１４１は、ログ送信機構３５から送信されたログを受け取ると、当該ログをログ格納処理機構１４３に渡す。するとログ格納処理機構１４３は、入出力機構１４１から渡されたログをログ格納部１４２に格納する。アダプタ１４内のログ再生機構１４４は、ログ格納部１４２に格納されたログに含まれている入力データを仮想計算機１１のシステム部１３に時系列順に再投入する。このログに含まれている入力データを時系列順にシステム部１３に再投入することを、ログの再生と呼ぶ。
【００４５】
本実施形態では、仮想計算機１１のスナップショットが取得された時点で、スイッチ３０内の通信記録装置３１のログ格納部３３に格納されているログのデータ（入出力データ）は全て削除される。したがって、時刻ｔ２のスナップショットに基づいて仮想計算機１１が当該時刻ｔ２の状態に復元された場合、時系列順に再投入される入力データは、時刻ｔ２以降に取得された（時刻ｔ２以降の）入力データとなる。この時刻ｔ２以降の入力データが、図４（ａ）に示されるログに含まれているＩ１，Ｉ２，Ｉ３…であるものとする。
【００４６】
本実施形態では、仮想計算機１１をｔ２＋Δｔの状態に復元する際の精度の向上のために、ログに含まれている時刻ｔ２以降の入力データＩｉ（ｉ＝１，２，３…）が、当該入力データＩｉに付された時刻情報に従って、先に入力されたのと相対時刻が同一の入力タイミングで、つまり先の入力タイミングを守って再投入される。これにより、時刻ｔ２＋Δｔまでの期間における仮想計算機１１の状態を高精度に再現させることが可能となる。但し、入力タイミングは必ずしも守る必要はなく、その場合、必ずしも入力データＩｉに時刻情報を付さなくてもよい。
【００４７】
さて、仮想計算機１１のシステム部１３は、ログに含まれている入力データＩｉがログ再生機構１４４によって当該システム部１３に再投入されると、その入力データＩｉを処理する。これによりシステム部１３は、入力データＩｉが投入された際の状態から当該入力データＩｉで決まる新たな状態に遷移して、当該入力データＩｉに対する出力データＯｉ’を出力する。このため、ログに含まれている時刻ｔ２以降の入力データＩｉを時系列順にシステム部１３に再投入することによって、時刻ｔ（第１の時点）の状態に復元された仮想計算機１１を時刻ｔ２＋Δｔ（第２の時点）の状態へ前進させることができる。
【００４８】
ここで、仮想計算機１１が時刻ｔ２＋Δｔの状態に復元されたことを確認することができるならば、当該仮想計算機１１の復元の精度をより向上させることができる。そこで本実施形態では、システム部１３から出力される出力データＯｉ’は、入出力機構１４１だけでなくログ比較機構１４５にも導かれる。ログ比較機構１４５は仮想計算機１１を復元する処理が行われる期間（つまり復元モードの期間）、入力データＩｉの再投入に応じてシステム部１３から出力される出力データＯｉ’を、ログ格納部３３に格納されているログに含まれている出力データのうち、上記入力データＩｉ（出力データＯｉに対応する入力データＩｉ）が障害発生前にシステム部１３に入力された際に当該システム部１３から出力された出力データＯｉと比較する。一方、上記復元モードの期間、入出力機構１４１は入出力を停止し、システム部１３から出力される出力データＯｉ’をフィルタリング（ブロック）する。入力データＩｉに対応する出力データＯｉは、送受信先のアドレスやポート情報によるマッチングや通信セッションの解析結果をもとにして特定することができる。
【００４９】
ログ比較機構１４５は、出力データＯｉ’及びＯｉが一致している場合、上記ログ内で当該出力データＯｉに対応する入力データＩｉに付されている時刻情報の示す時刻の状態に、仮想計算機１１が正しく復元されたと判定する。これに対して出力データＯｉ’及びＯｉが一致していない場合、ログ比較機構１４５は、仮想計算機１１が正しく復元されなかったと判定する。このようにログ比較機構１４５は、仮想計算機１１のシステム部１３における再生状況を監視することによって。仮想計算機１１が正しく復元されたかを判定する。
【００５０】
なお、ログ格納部３３に格納されているログをログ送信機構３５が仮想計算機１１のアダプタ１４に送信する際に、当該ログに含まれている入出力データの時系列を、入力データの時系列順に、入力データと当該入力データに対応する出力データの組の列に加工して、その加工されたログをアダプタ１４に送信するようにしてもよい。この加工をアダプタ１４側で行っても構わない。図４（ｂ）に、図４（ａ）に示されるログを加工した場合の、その加工されたログの例を示す。
【００５１】
次にスナップショット取得及び静止点作成を含む処理の流れについて、図５のシーケンスチャートを参照して説明する。  
制御機構５０は、物理計算機１０-1上で動作する仮想計算機１１のスナップショットが取得されるべき時刻（例えば時刻ｔ２）が到来すると、スイッチ３０内の通信記録装置３１に含まれているログ取得機構３２に対して静止点作成依頼を発行する（ステップ５０１）。これを受けてログ取得機構３２は、スナップショット管理機構１２１によるスナップショット取得のための静止点を作成する（ステップ５０２）。ここでは、時刻ｔ２が静止点として作成される。この場合、後述するように、ログ格納部３３に格納されているログが削除される。
【００５２】
ログ取得機構３２は時刻ｔ２に静止点を作成すると（ステップ５０２）、静止点作成依頼に対する応答（静止点の作成によりスナップショット取得が可能となった旨の応答）を制御機構５０に返す（ステップ５０３）。すると制御機構５０は、仮想計算機１１のアダプタ１４に含まれている入出力機構１４１に対して入出力停止依頼を発行する（ステップ５０４）。これを受けて入出力機構１４１は、当該入出力機構１４１とネットワーク２０との間の入出力（通信）を停止（凍結）する（ステップ５０５）。これにより、ログ取得機構３２によって作成された静止点が、スナップショット取得のための静止点として確定される。
【００５３】
入出力機構１４１は、ネットワーク２０との間の入出力を停止すると（ステップ５０５）、入出力停止依頼に対する応答を制御機構５０に返す（ステップ５０６）。すると制御機構５０は、スナップショット管理機構１２１に対してスナップショット取得依頼を発行する（ステップ５０７）。これを受けてスナップショット管理機構１２１は、仮想計算機１１のスナップショットを取得する（ステップ５０８）。このとき、つまり時刻ｔ２以降、入出力機構１４１は入出力が停止（凍結）された状態にある。このため、スナップショット管理機構１２１は、静止点の時刻ｔ２における仮想計算機１１のスナップショットを高精度に取得することができる。明らかなように、取得されたスナップショットは、入出力機構１４１での入出力と同期が取れている。
【００５４】
スナップショット管理機構１２１はスナップショットが取得できたなら（ステップ５０８）、スナップショット取得完了を通知するための応答を制御機構５０に返す（ステップ５０９）。すると制御機構５０は、ログ取得機構３２に対して静止解除依頼を発行する（ステップ５１０）。これを受けてログ取得機構３２は、ログ格納部３３に格納されているログ、つまり時刻ｔ２より前に取得されていた入出力データを削除し、設定された静止点を解除する（ステップ５１１）。以後、ログ取得機構３２はスイッチ３０を経由する通信データ（入出力データ）があれば、そのデータをログとして取得することが可能となる。
【００５５】
ログ取得機構３２は静止点を解除すると（ステップ５１１）、静止解除依頼に対する応答を制御機構５０に返す（ステップ５１２）。すると制御機構５０は、入出力機構１４１に対して入出力再開依頼を発行する（ステップ５１３）。これを受けて入出力機構１４１は、入出力停止状態を解除して入出力を再開する（ステップ５１４）。そして入出力機構１４１は、入出力再開依頼に対する応答を制御機構５０に返す（ステップ５１５）。
【００５６】
このように通信記録装置３１における静止点の設定／解除に応じて、入出力機構１４１の入出力停止／入出力再開を制御すると共に、入出力機構１４１の入出力停止に応じてスナップショットの取得を制御することにより、取得されるスナップショットを、入出力機構１４１での入出力と高精度に同期させることができる。これによりログ再生機構１４４は、複雑な構成を必要とせずに、仮想計算機１１のシステム部１３に対して精度の高い入出力の再生を行わせることができる。
【００５７】
次に、上述の仮想計算機復元処理の流れについて、図６のシーケンスチャートを参照して説明する。  
制御機構５０は、時刻ｔ＋Δｔで物理計算機１０-1に障害が発生したために仮想計算機１１を復元させる必要がある場合、スナップショット管理機構１２１に対して、スナップショットにより仮想計算機１１を復元するための復元依頼を発行する（ステップ６０１）。これを受けてスナップショット管理機構１２１は、スナップショット格納部１２２に保存されている最新のスナップショット（時刻ｔ２に取得されたスナップショット２０４）に基づいて、時刻ｔ２の状態の仮想計算機１１を復元する（ステップ６０２）。そしてスナップショット管理機構１２１は、復元依頼に対する応答を制御機構５０に返す（ステップ６０３）。
【００５８】
制御機構５０は、スナップショット管理機構１２１からの応答を受け取ると、通信記録装置３１内のログ送信機構３５に対して、ログ送信依頼を発行する（ステップ６０４）。これを受けてログ送信機構３５は、ログ格納部３３に格納されているログをアダプタ１４内の入出力機構１４１に送信する（ステップ６０５）。入出力機構１４１は、ログ送信機構３５から送信されたログを受け取ると、当該入出力機構１４１とネットワーク２０との間の入出力を停止すると共に（ステップ６０６）、当該ログをログ格納処理機構１４３に渡す（ステップ６０７）。するとログ格納処理機構１４３は、入出力機構１４１から渡されたログをログ格納部１４２に格納し（ステップ６０８）、ログ格納完了を入出力機構１４１に通知する（ステップ６０９）。入出力機構１４１はログ格納処理機構１４３から通知されたログ格納完了をログ送信機構３５に通知し（ステップ６１０）、ログ送信機構３５は当該ログ格納完了通知に応じて、ログ送信依頼に対する送信完了応答を制御機構５０に返す（ステップ６１１）
制御機構５０は、ログ送信依頼に対するログ送信機構３５からの送信完了応答を受け取ると、アダプタ１４内のログ再生機構１４４に対してログ再生及び復元依頼を発行する（ステップ６１２）。ログ再生機構１４４は、制御機構５０からログ再生及び復元依頼を受け取ると、ログ格納部１４２に格納されたログに含まれている入力データＩｉ（ｉ＝１，２，３…）を仮想計算機１１のシステム部１３に時系列順に再投入することにより、障害発生前の当該システム部１３の入出力状態を再現させるためのログ再生及び復元（つまり、仮想計算機１１を時刻Ｔ２＋Δｔの状態まで順次復元するためのログ再生及び復元）を行う（ステップ６１３）。
【００５９】
さて、システム部１３は、ログ再生機構１４４によって入力データＩｉが投入されると、当該入力データＩｉに対する出力データＯｉ’を出力する。ログ比較機構１４５は、システム部１３から入力データＩｉに対する出力データＯｉ’が出力される毎に、ログ格納部１４２に格納されているログから当該入力データＩｉに対応する出力データＯｉを取り出す。そしてログ比較機構１４５は、入力データＩｉに対応する出力データＯｉが取り出せたなら、入力データＩｉに対する出力データＯｉ’を当該取り出された出力データＯｉと比較する。この比較結果に基づき、入力データＩｉに対応する出力データＯｉが出力された時点の状態まで仮想計算機１１を正常に復元できたかを判定する。もし、正常に復元できなかったと判定された場合、復元に失敗する。この場合、例えば通信を遮断したまま復元を終了するか、もしくはスナップショット時点に復元すればよい。
【００６０】
ログ比較機構１４５は、ログに含まれている全ての入力データＩｉについて、当該入力データＩｉに対するシステム部１３からの出力データＯｉ’がログ中の対応する出力データＯｉに一致している場合、仮想計算機１１の状態を障害発生時刻ｔ２＋Δｔまで正常に復元できたと判定する。するとログ比較機構１４５は、復元完了をログ再生機構１４４に通知する。
【００６１】
ログ再生機構１４４は、ログ比較機構１４５から復元完了が通知されると、即ち仮想計算機１１の状態を障害発生時刻ｔ２＋Δｔまで正常に復元できたとログ比較機構１４５が判定すると、この例のように未投入の入力データＩｉがログに含まれていないならば、制御機構５０からのログ再生及び復元依頼に対する復元完了を通知するための応答を制御機構５０に返す（ステップ６１４）。
【００６２】
すると制御機構５０は、入出力機構１４１に対して入出力再開依頼を発行する（ステップ６１５）。これを受けて入出力機構１４１は、入出力停止状態を解除して入出力を再開する（ステップ６１６）。そして入出力機構１４１は、入出力再開依頼に対する応答を制御機構５０に返す（ステップ６１７）。
【００６３】
ところで、システム部１３から入力データＩｉに対する出力データＯｉ’が出力されても、当該入力データＩｉに対応する出力データＯｉがログに含まれていないために、当該出力データＯｉをログ比較機構１４５が取り出すことができないことがある。この場合、ログ比較機構１４５は、当該出力データＯｉがシステム部１３から出力される前に障害が発生したものと判定する。そしてログ比較機構１４５は、最も最近にシステム部１３からの出力データとの一致が判定されたログ中の出力データが障害発生直前の出力データであり、したがって仮想計算機１１の状態を障害発生時刻ｔ２＋Δｔまで正常に復元できたと判定する。するとログ比較機構１４５は、復元完了をログ再生機構１４４に通知する。
【００６４】
ログ再生機構１４４は、ログ比較機構１４５から復元完了が通知されると、未投入の入力データＩｉがログに含まれていても、制御機構５０からのログ再生及び復元依頼に対する復元完了を通知するための応答を制御機構５０に返す（ステップ６１４）。すると、上記ステップ６１５及び６１６が行われ、入出力機構１４１による入出力が再開される。このときログ再生機構１４４は、未投入の入力データＩｉがログに含まれているならば、当該未投入の入力データＩｉをシステム部１３に再投入する。
【００６５】
復元完了後に、ログ再生機構１４４によって入力データＩｉ（つまり、対応する出力データＯｉがログ中に含まれていない入力データＩｉ）がシステム部１３に再投入された場合、当該入力データＩｉに対して当該システム部１３から出力される出力データＯｉは、入出力機構１４１からネットワーク２０及びスイッチ３０を経由して外部システム４０に送られる。ここで出力データＯｉがスイッチ３０を経由する際、当該出力データＯｉがログ取得機構３２によって取得されて、ログ保存処理機構３４によってログ格納部３３に追加される。
【００６６】
［第１の変形例］
次に上記実施形態の第１の変形例について説明する。  
上記実施形態では、制御機構５０が入出力機構１４１及びログ再生機構１４４を直接制御している。第１の変形例の特徴は、スナップショット取得及び静止点作成を含む処理における入出力機構１４１の制御をログ取得機構３２に行わせ、仮想計算機復元処理における入出力機構１４１の制御をログ送信機構３５及びログ再生機構１４４に行わせ、仮想計算機復元処理におけるログ再生機構１４４の制御をログ送信機構３５に行わせた点にある。
【００６７】
以下、第１の変形例で適用される、スナップショット取得及び静止点作成を含む処理の流れ、並びに仮想計算機復元処理の流れについて、それぞれ図７及び図８のシーケンスチャートを参照して、上記実施形態（図５及び図６のシーケンスチャート）との相違点を中心に簡単に説明する。なお、図７及び図８において、それぞれ図５及び図６と同様の部分には同一参照番号を付してある。
【００６８】
まず、第１の変形例で適用されるスナップショット取得及び静止点作成を含む処理において、制御機構５０からログ取得機構３２に対して静止点作成依頼が発行されたものとする（ステップ５０１）。するとログ取得機構３２は、スナップショット取得のための静止点を作成し（ステップ５０２）、当該制御機構５０に代わって、入出力機構１４１に対して入出力停止依頼を発行する（ステップ７０１）。つまり、ログ取得機構３２は、制御機構５０からの静止点作成依頼を、入出力停止依頼として入出力機構１４１に伝播する。入出力機構１４１はログ取得機構３２からの入出力停止依頼に応じて、ネットワーク２０との間の入出力を停止する（ステップ５０５）。これにより、設定された静止点が、スナップショット取得のための静止点として確定される。
【００６９】
入出力機構１４１は、入出力を停止すると（ステップ５０５）、入出力停止依頼に対する応答をログ取得機構３２に返す（ステップ７０２）。これを受けてログ取得機構３２は、先の静止点作成依頼に対する応答を制御機構５０に返す（ステップ５０３）。すると、制御機構５０からスナップショット管理機構１２１にスナップショット取得が依頼され（ステップ５０７）、当該スナップショット管理機構１２１がスナップショットを取得すると（ステップ５０８）、当該スナップショット管理機構１２１から制御機構５０に応答が返される（ステップ５０９）。
【００７０】
制御機構５０は、スナップショット管理機構１２１からの応答に応じて、ログ取得機構３２に対して静止解除依頼を発行し（ステップ５１０）、これを受けてログ取得機構３２は設定された静止点を解除する（ステップ５１１）。そしてログ取得機構３２は、制御機構５０に代わって、入出力機構１４１に対して入出力再開依頼を発行する（ステップ７０３）。つまりログ取得機構３２は、制御機構５０からの静止解除依頼を、入出力再開依頼として入出力機構１４１に伝播する。
【００７１】
入出力機構１４１は、ログ取得機構３２からの入出力再開依頼に応じて入出力停止状態を解除し、入出力を再開する（ステップ５１４）。そして入出力機構１４１は、ログ取得機構３２からの入出力再開依頼に対する応答を当該ログ取得機構３２に返す（ステップ７０４）。ログ取得機構３２は、入出力機構１４１から入出力再開依頼に対する応答が返されると、先の静止解除依頼に対する応答を制御機構５０に返す（ステップ５１２）。
【００７２】
次に、第１の変形例で適用される仮想計算機復元処理において、制御機構５０からスナップショット管理機構１２１に対して、スナップショットにより仮想計算機１１を復元するための復元依頼が発行されたものとする（ステップ６０１）。するとスナップショット管理機構１２１は、スナップショット格納部１２２に保存されている例えば時刻ｔ２に取得されたスナップショット２０４に基づいて、時刻ｔ２の状態の仮想計算機１１を復元し（ステップ６０２）、しかる後に復元依頼に対する応答を制御機構５０に返す（ステップ６０３）。
【００７３】
制御機構５０は、スナップショット管理機構１２１からの応答を受け取ると、ログ送信機構３５に対してログによる復元依頼を発行する（ステップ８０１）。これを受けてログ送信機構３５は、ログ格納部３３に格納されているログを入出力機構１４１に送信する（ステップ６０５）。すると入出力機構１４１は入出力を停止する（ステップ６０６）。入出力機構１４１に送信されたログはログ格納処理機構１４３に渡されて、当該ログ格納処理機構１４３によってログ格納部１４２に格納される（ステップ６０７，６０８）。すると、ログ格納完了がログ格納処理機構１４３から入出力機構１４１に通知され（ステップ６０９）、更に当該ログ格納完了が当該入出力機構１４１からログ送信機構３５に伝播される（ステップ６１０）。
【００７４】
ログ送信機構３５は、入出力機構１４１から伝播されたログ格納完了通知を受け取ると、制御機構５０に代わって、ログ再生機構１４４に対してログ再生及び復元依頼を発行する（ステップ８０２）。ログ再生機構１４４は、ログ送信機構３５からログ再生及び復元依頼を受け取ると、ログ格納部１４２に格納されたログに基づき、障害発生前の当該システム部１３の入出力状態（ここでは時刻Ｔ２＋Δｔの状態）を再現させるためのログ再生及び復元を行う（ステップ６１３）。
【００７５】
ログ再生機構１４４は、仮想計算機１１の状態を時刻ｔ２＋Δｔまで正常に復元できた場合、入出力機構１４１に対して入出力再開依頼を発行する（ステップ８０３）。これを受けて入出力機構１４１は、入出力停止状態を解除して入出力を再開する（ステップ６１６）。そして入出力機構１４１は、入出力再開依頼に対する応答をログ再生機構１４４に返す（ステップ８０４）。
【００７６】
ログ再生機構１４４は入出力機構１４１から入出力再開依頼に対する応答を受け取ると、先のログ再生及び復元依頼に対する応答をログ送信機構３５に返す（ステップ８０５）。ログ送信機構３５は、ログ再生機構１４４からログ再生及び復元依頼に対する応答を受け取ると、先のログによる復元依頼に対する応答を制御機構５０に返す（ステップ８０６）。
【００７７】
［第２の変形例］
次に上記実施形態の第２の変形例について説明する。  
上記実施形態では、ログ送信機構３５によって送信されたログに含まれている全ての入力データＩｉが、ログ再生機構１４４によって仮想計算機１１のシステム部１３に投入される。しかし、システム部１３で複数のアプリケーションが動作する場合、仮想計算機１１を高速に復元するために、当該複数のアプリケーションのうちの特定のアプリケーションが動作する状態のみを復元すればよいこともある。つまり仮想計算機１１の状態の部分的な復元が要求されることもある。このような場合、ログに含まれている全ての入力データＩｉを再投入するのは無駄である。そこで第２の変形例の特徴は、ログに含まれている入力データＩｉのうち、特定のアプリケーションに渡される入力データのみを再投入することにある。
【００７８】
図９は、仮想計算機１１のアダプタ１４内のログ再生機構１４４の構成を示すブロック図である。ログ再生機構１４４は、フィルタ機構１４４ａを含む。フィルタ機構１４４ａは、例えば制御機構５０からのフィルタ設定１４４ｂに従い、ログ内の再生すべき入力データを絞り込むなお、フィルタ機構１４４ａがログ再生機構１４４の外部に設けられていてもよい。
【００７９】
本実施形態においてフィルタ設定１４４ｂは、仮想計算機１１（のシステム部１３）上で動作する上記特定のアプリケーションに割り当てられたポートであって、仮想計算機１１のシステム部１３と当該特定のアプリケーションとの間で入出力データを授受するのに用いられるポートのポート番号を含む。このポート番号をＰＮｓとするならば、外部システム４０から送信される入力データのうち、仮想計算機１１上の上記特定アプリケーション宛ての入力データは、宛先ＩＰアドレスとして当該仮想計算機１１に割り当てられたＩＰアドレスを含むと共に、宛先ポート番号としてＰＮｓを含む。
【００８０】
そこで、フィルタ機構１４４ａは、ログに含まれている仮想計算機１１宛ての入力データのうち、宛先ポート番号がＰＮｓの入力データのみを選択する。ログ再生機構１４４は、フィルタ機構１４４ａによって選択された入力データを仮想計算機１１のシステム部１３に順次投入する。これにより、仮想計算機１１のシステム部１３に投入される入力データを、特定アプリケーションに渡されるべき入力データに絞ることができる。また、仮想計算機１１のシステム部１３に投入される入力データを絞ることにより、当該システム部１３から出力される出力データ、即ちログ比較機構１４５で比較されるべき出力データも絞ることができる。よって上記第２の変形例によれば、仮想計算機１１の状態の部分的な復元を効率的に行うことができる。
【００８１】
［第３の変形例］
次に上記実施形態の第３の変形例について説明する。  
図１０は、仮想計算機１１のアダプタ１４内のログ比較機構１４５の構成を示すブロック図である。第３の変形例が第２の変形例と相違する点は、ログ再生機構１４４にフィルタ機構１４４ａを設ける代わりに、図１０に示されるように、当該フィルタ機構１４４ａに相当するフィルタ機構１４５ａを、ログ比較機構１４５に設けたことである。なお、フィルタ機構１４５ａがログ比較機構１４５の外部に設けられていてもよい。
【００８２】
第３の変形例においてログ再生機構１４４は、上記実施形態と同様に、ログ格納部１４２に格納されているログに含まれている全ての入力データを順次システム部１３に投入する。するとシステム部１３は、ログ再生機構１４４によって投入された入力データに対応する出力データを出力する。
【００８３】
第３の変形例においてフィルタ機構１４５ａは、システム部１３から出力される出力データのうち、例えば制御機構５０からのフィルタ設定１４５ｂに従い、ログ比較機構１４５によって比較されるべき出力データを絞り込む。ここでは、フィルタ設定１４５ｂにポート番号ＰＮｓが含まれているものとすると、送信元ポート番号がＰＮｓである特定アプリケーションからの出力データのみがログ比較機構１４５によって比較されるべき出力データとして選択される。
【００８４】
第３の変形例では、ログ比較機構１４５によって比較されるべき出力データが特定アプリケーションからの出力データに絞られる。このため、ログ比較機構１４５での負荷を低減することができる。しかも、ログ格納部１４２に格納されているログに含まれている全ての入力データがシステム部１３に投入されることから、当該システム部１３を含む仮想計算機１１を高精度に復元することができる。
【００８５】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば上記実施形態及びその変形例では、物理計算機１０-1に障害が発生した後、当該物理計算機１０-1の障害が回復して当該物理計算機１０-1が再起動され、当該物理計算機１０-1上でハイパーバイザー１２-1が再起動した場合に、当該ハイパーバイザー１２-1上に、障害発生時まで動作していた仮想計算機１１が復元される。しかし、物理計算機１０-1及び１０-2が例えばクラスタシステムを構成しているならば、物理計算機１０-1に障害が発生した場合に、当該物理計算機１０-1が外部システム４０に対して提供していたサービスを物理計算機１０-2に継続させるために、当該物理計算機１０-2上で動作するハイパーバイザー１２-2上に仮想計算機１１を復元することも可能である。
【００８６】
また、上記実施形態及びその変形例では、制御機構５０が物理計算機１０-1及び１０-2から独立に設けられている。しかし、制御機構５０に相当する制御機構が、物理計算機１０-1及び１０-2内、例えば物理計算機１０-1及び１０-2上で動作するハイパーバイザー１２-1及び１２-2の各々に、設けられていてもよい。この場合、仮想計算機１１が復元されるべきハイパーバイザー１２-1または１２-2に設けられる制御機構が制御機構５０と同様の制御を行えばよい。
【００８７】
また、第２及び第３の変形例を組み合わせて、ログ再生機構１４４にフィルタ機構１４４ａを設けると共に、ログ比較機構１４５にフィルタ機構１４５ａを設けても構わない。
【００８８】
また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００８９】
【図１】本発明の一実施形態に係る仮想計算機システムの構成を示すブロック図。
【図２】仮想計算機の状態とスナップショット時刻とスナップショットとの関係を示す図。
【図３】外部システムから仮想計算機への通信（入力）時におけるデータ（入力データ）の流れと、当該入力データに対する仮想計算機から外部システムへの通信（出力）時におけるデータ（出力データ）の流れとを示す図。
【図４】ログ格納部に時系列順に格納された入出力データの列を含むログの例と、当該ログを加工した場合の、その加工されたログの例とを示す図。
【図５】同実施形態で適用されるスナップショット取得及び静止点作成を含む処理の流れを示すシーケンスチャート。
【図６】同実施形態で適用される仮想計算機復元処理の流れを示すシーケンスチャート。
【図７】同実施形態の第１の変形例で適用されるスナップショット取得及び静止点作成を含む処理の流れを示すシーケンスチャート。
【図８】同実施形態の第１の変形例で適用される仮想計算機復元処理の流れを示すシーケンスチャート。
【図９】同実施形態の第２の変形例で適用されるログ再生機構の構成を示すブロック図。
【図１０】同実施形態の第３の変形例で適用されるログ比較機構の構成を示すブロック図
【符号の説明】
【００９０】
１０-1，１０-2…物理計算機、１１…仮想計算機、１２-1，１２-2…ハイパーバイザー、１３…システム部、１４…アダプタ、２０，２１…ネットワーク、３０…スイッチ、３１…通信記録装置、３２…ログ取得機構、３３…ログ格納部、３４…ログ保存処理機構、３５…ログ送信機構、４０…外部システム、５０…制御機構、１４１…入出力機構、１４２…ログ格納部、１４３…ログ格納処理機構、１４４…ログ再生機構、１４５…ログ比較機構。
【図１】
0004560074.tif 000002
【図２】
0004560074.tif 000003
【図３】
0004560074.tif 000004
【図４】
0004560074.tif 000005
【図５】
0004560074.tif 000006
【図６】
0004560074.tif 000007
【図７】
0004560074.tif 000008
【図８】
0004560074.tif 000009
【図９】
0004560074.tif 000010
【図１０】
0004560074.tif 000011