(57)【特許請求の範囲】
【請求項１】
互いに接続される複数の計算機を備え、
各計算機は、他計算機との通信処理を含む計算処理を実行するように構成され、
前記複数の計算機の中の第１計算機は、第１制御対象機器に接続され、
前記第１計算機は、前記計算処理として、予め設定された第１制御周期で前記第１制御対象機器を制御する第１計算処理を実行するように構成され、
前記第１計算機は、選択条件を満たす場合、
現在の状態が作成条件を満たすか否かを判定し、
前記作成条件を満たすと判定された場合、スナップショットの作成を要求する作成情報を他計算機へ送信する、
ことを含む、作成同期処理を繰り返し実行し、
各計算機は、前記作成情報の通信に応じて、前記計算処理の状態のスナップショットを作成する作成処理を実行し、
各計算機は、前記計算処理の実行に関するログを記録する記録処理を実行するように構成され、
前記第１計算機は、過去の特定時刻を示す再現要求に応じて、
前記特定時刻の直前のスナップショットを示す復元スナップショット情報を他計算機へ送信し、
他計算機により記録されたログを受信し、
前記第１計算機により記録された第１ログと前記受信されたログとに示されている複数の通信処理の因果関係に基づいて、前記複数の通信処理の順序を示す順序情報を作成し、
前記順序情報を他計算機へ送信する、
ことを含む、再現開始処理を実行し、
各計算機は、前記順序情報に応じて、
前記復元スナップショット情報に基づいて、自計算機の計算処理のスナップショットを選択し、
前記選択されたスナップショットに基づいて、前記選択されたスナップショットの作成時の前記自計算機の計算処理の状態を復元し、
前記順序情報に示された前記自計算機の計算処理の再現を示す再現同期情報を他計算機へ送信し、
前記再現同期情報に対する応答である再現同期応答を受信し、
前記順序情報と前記再現同期応答に基づいて、前記自計算機のログに記録された計算処理を実行する、
ことを含む、再現処理を実行する、
計算機システム。
【請求項２】
前記作成同期処理は、前記第１計算処理のアイドル状態を検出し、
前記作成条件は、現在の前記第１計算処理の状態が前記アイドル状態であることを含む、
請求項１に記載の計算機システム。
【請求項３】
前記作成同期処理は、スナップショット周期を取得し、
前記作成条件は、前回のスナップショットの作成からの経過時間がスナップショット周期以上であることを含む、
請求項２に記載の計算機システム。
【請求項４】
前記複数の計算機の何れか複数は、複数の制御計算機であり、
前記複数の制御計算機は、複数の制御対象機器に夫々接続され、
前記複数の制御計算機に対し、予め複数の制御周期が夫々設定され、
前記選択条件は、前記複数の制御周期の中で最も小さい制御周期を持つことを含み、
各制御計算機は、
対応する制御周期で、対応する制御対象機器を制御する計算処理を実行し、
前記選択条件を満たす制御計算機を、前記第１計算機として選択する、
ように構成される、
請求項３に記載の計算機システム。
【請求項５】
前記第１計算機は、前記複数の制御周期の最小公倍数を共通周期として算出し、
前記作成条件は、前記経過時間が前記共通周期以上であることを含む、
請求項４に記載の計算機システム。
【請求項６】
各計算機は、オペレーティングシステムと、前記オペレーティングシステムの機能を用いて前記作成同期処理と前記作成処理と前記再現開始処理と前記再現処理とを実行するミドルウェアと、前記ミドルウェアの機能を用いて前記記録処理を実行する管理プログラムと、前記管理プログラムの機能を用いて前記計算処理を実行するアプリケーションとを実行するように構成される、
請求項３に記載の計算機システム。
【請求項７】
前記複数の計算機の中の特定計算機は、前記管理プログラムとして仮想化基盤を実行するように構成され、
前記仮想化基盤は、仮想計算機を実行するように構成され、
前記仮想計算機は、前記アプリケーションを実行するように構成される、
請求項６に記載の計算機システム。
【請求項８】
前記第１計算機は、許容時間の入力を受け付ける第１画面を表示装置に表示させ、前記許容時間が入力装置へ入力される場合、前記入力された許容時間を取得し、前記許容時間に基づいて前記スナップショット周期を決定し、前記作成同期処理を実行する、
請求項３に記載の計算機システム。
【請求項９】
前記第１計算機は、前記特定時刻と、前記特定時刻から現在時刻までの時間との何れかを示す、前記再現要求の入力を受け付ける第２入力画面を前記表示装置に表示させ、前記再現要求が前記入力装置へ入力される場合、前記入力された再現要求を取得し、前記再現開始処理を実行する、
請求項８に記載の計算機システム。
【請求項１０】
前記第１計算機は、現在の前記第１計算処理の状態が前記アイドル状態であり、且つ前記経過時間が前記共通周期以上である場合、他計算機へ前記アイドル状態を示す同期情報を送信する、
請求項５に記載の計算機システム。
【請求項１１】
互いに接続される複数の計算機の状態を再現するためのシステム状態再現方法であって、
各計算機が、他計算機との通信処理を含む計算処理を実行し、
前記複数の計算機の中の第１計算機が、前記計算処理として、予め設定された第１制御周期で第１制御対象機器を制御する第１計算処理を実行し、
前記第１計算機が、選択条件を満たす場合、
現在の状態が作成条件を満たすか否かを判定し、
前記作成条件を満たすと判定された場合、スナップショットの作成を要求する作成情報を他計算機へ送信する、
ことを含む、作成同期処理を繰り返し実行し、
各計算機が、前記作成情報に基づいて、前記計算処理の状態のスナップショットを作成する作成処理を実行し、
各計算機が、前記計算処理の実行に関するログを記録する記録処理を実行し、
前記第１計算機が、過去の特定時刻を示す再現要求に応じて、
前記特定時刻の直前のスナップショットを示す復元スナップショット情報を他計算機へ送信し、
他計算機により記録されたログを受信し、
前記第１計算機により記録された第１ログと前記受信されたログとに示されている複数の通信処理の因果関係に基づいて、前記複数の通信処理の順序を示す順序情報を作成し、
前記順序情報を他計算機へ送信する、
ことを含む、再現開始処理を実行し、
各計算機が、前記順序情報に応じて、
前記復元スナップショット情報に基づいて、自計算機の計算処理のスナップショットを選択し、
前記選択されたスナップショットに基づいて、前記自計算機の計算処理の状態を復元し、
前記順序情報に示された前記自計算機の計算処理の再現を示す再現同期情報を他計算機へ送信し、
前記再現同期情報に対する応答である再現同期応答を受信し、
前記順序情報と前記再現同期応答に基づいて、前記自計算機のログに記録された計算処理を実行する、
ことを含む、再現処理を実行する、
ことを有するシステム状態再現方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関する。
【背景技術】
【０００２】
情報システムにおいては、特定時刻の計算機の状態をコピーするＳｎａｐｓｈｏｔ機能が知られている。計算機の処理に異常が発生した場合、取得したＳｎａｐｓｈｏｔから特定時刻の計算機状態に巻き戻すことで、異常状態回避の手段として捉えているシステムも存在する。ただし、Ｓｎａｐｓｈｏｔ機能は、１つの計算機内の特定メモリのデータイメージのコピーや仮想化システムにおける仮想計算機の状態のコピーに限定されるものが多い。
【０００３】
制御システムにおいても、障害解析の迅速化等の高信頼性対策のために、システム障害を再現できることが望ましい。制御システムは、複数の計算機で構成されており、システム障害の再現においては従来の１台のみの計算機状態再現だけではなく、システム全体の状態再現が必要になる。また、状態再現の技術であるＳｎａｐｓｈｏｔ機能においては、大量のメモリコピーが発生するため、システム運用中にＳｎａｐｓｈｏｔ処理を行うと、制御システムは、要求されるリアルタイム性を維持できない可能性が高い。そのため、システム全体の状態再現においては、複数計算機の状態のＳｎａｐｓｈｏｔ処理が必要であり、かつ、その処理が性能阻害にならない処理である必要がある。また、制御システムの障害解析には複数時点のＳｎａｐｓｈｏｔの間の期間中の処理の再現も必要となる。各計算機の処理ログを記録することにより、特定のＳｎａｐｓｈｏｔから再現したい時刻までの処理を、そのログで再現することができる。
【０００４】
システム全体の再現処理として、特許文献１には、１台の物理計算機上で、複数の仮想計算機を運用するシステム構成上で、複数の仮想計算機のＳｎａｐｓｈｏｔ取得とそのＳｎａｐｓｈｏｔからのシステムの再現手段が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５４６６７４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の方法は、単一の物理計算機内の複数の仮想計算機のＳｎａｐｓｈｏｔによるシステム再現手段であり、複数の物理計算機で構成されている制御システムの状態再現は困難である。それぞれの計算機でそれぞれの時刻でのＳｎａｐｓｈｏｔを作成し、それらのＳｎａｐｓｈｏｔからの再現を行う場合、システム全体で同時刻のシステム状態再現で困難であるからである。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の一態様である計算機システムは、互いに接続される複数の計算機を備える。各計算機は、他計算機との通信処理を含む計算処理を実行するように構成される。前記複数の計算機の中の第１計算機は、第１制御対象機器に接続され、前記第１計算機は、前記計算処理として、予め設定された第１制御周期で前記第１制御対象機器を制御する第１計算処理を実行するように構成され、前記第１計算機は、選択条件を満たす場合、作成同期処理を繰り返し実行し、前記作成同期処理は、現在の状態が作成条件を満たすか否かを判定し、前記作成条件を満たすと判定された場合、スナップショットの作成を要求する作成情報を他計算機へ送信する、ことを含む。前記作成情報に基づいて、各計算機は、前記計算処理の状態のスナップショットを作成する作成処理を実行し、各計算機は、前記計算処理の実行に関するログを記録する記録処理を実行するように構成される。前記第１計算機は、過去の特定時刻を示す再現要求に応じて、再現開始処理を実行し、前記再現開始処理は、前記特定時刻の直前のスナップショットを示す復元スナップショット情報を他計算機へ送信し、他計算機により記録されたログを受信し、前記第１計算機により記録された第１ログと前記受信されたログとに示されている複数の通信処理の因果関係に基づいて、前記複数の通信処理の順序を示す順序情報を作成し、前記順序情報を他計算機へ送信する、ことを含む。各計算機は、前記順序情報に応じて、再現処理を実行し、前記再現処理は、前記復元スナップショット情報に基づいて、自計算機の計算処理のスナップショットを選択し、前記選択されたスナップショットに基づいて、前記選択されたスナップショットの作成時の前記自計算機の計算処理の状態を復元し、前記順序情報に示された前記自計算機の計算処理の再現を示す再現同期情報を他計算機へ送信し、前記再現同期情報に対する応答である再現同期応答を受信し、前記順序情報と前記再現同期応答に基づいて、前記自計算機のログに記録された計算処理を実行する、ことを含む。
【発明の効果】
【０００８】
過去の特定の時点の複数の計算機の状態を再現することができる。
【図面の簡単な説明】
【０００９】
【図１】計算機システムのハードウェア構成の一例を示す。
【図２】計算機Ａ及びＢのソフトウェア構成を示す。
【図３】計算機Ｃのソフトウェア構成を示す。
【図４】Ｓｎａｐｓｈｏｔ制御テーブル４６を示す。
【図５】ログ情報４７を示す。
【図６】外部通信ログフォーマットで表されたログ内容を示す。
【図７】状態再現同期制御テーブル４９を示す。
【図８】通信管理処理を示す。
【図９】同期メッセージ受信処理の動作を示す。
【図１０】Ｓｎａｐｓｈｏｔ同期処理を示す。
【図１１】Ｓｎａｐｓｈｏｔ同期受信処理を示す。
【図１２】Ｓｎａｐｓｈｏｔ作成処理を示す。
【図１３】外部通信ログ処理を示す。
【図１４】ＡＰログ制御処理を示す。
【図１５】再現同期開始処理を示す。
【図１６】再現同期開始受信処理を示す。
【図１７】状態再現制御処理を示す。
【図１８】再現照合処理を示す。
【図１９】状態再現同期処理を示す。
【図２０】状態再現同期受信処理を示す。
【発明を実施するための形態】
【００１０】
以下、図面を用いて本発明の実施例を説明する。
【実施例１】
【００１１】
図１は、計算機システムのハードウェア構成の一例を示す。
【００１２】
本実施例の計算機システムは、複数の計算機１０を含む。計算機１０は少なくとも、ＯＳ（Operating System）を含むプログラムを実行する演算装置１１と、プログラムおよびその実行に必要なデータを格納する記憶装置１２と、他の計算機１０に対してメッセージの送受信を行う通信装置１３と、外部ネットワーク２２との間で制御データ等の送受信を行う通信装置１４とを含む。ここで記憶装置１２は、例えばＲＡＭやハードディスクなどである。また、通信装置１３、１４は、例えばＬＡＮアダプタなどである。演算装置１１は２つ以上のＣＰＵコアを含んでいてもよい。
【００１３】
複数の計算機１０は通信装置１３を用いて通信を行う。複数の通信装置１３は内部ネットワーク２１で接続される。外部ネットワーク２２は例えばネットワークスイッチなどで構成され、計算機１０間でのデータの送受信を行う。制御システムにおいて、計算機１０は外部ネットワーク２２から同時に同じ制御データを受信するシステムが多いが、本実施例では限定事項ではない。また、計算機１０間でのメッセージの送受信と制御データの送受信を同じ通信装置で行ってもよい。
【００１４】
本実施例の計算機システムは、３台の計算機１０を含み、それぞれ計算機Ａ、計算機Ｂと計算機Ｃとする。計算機システムを構成する計算機１０の台数は限定事項ではない。
【００１５】
複数の計算機１０の何れかが、入力装置と表示装置を含んでいてもよいし、計算機システムが、入力装置と表示装置を含む管理計算機を含んでいてもよい。表示装置は、入力のための画面を表示し、入力装置は、ユーザからの入力を受け付ける。
【００１６】
図２は、計算機Ａ及びＢのソフトウェア構成を示す。
【００１７】
このソフトウェアは、記憶装置１２内で記憶され、演算装置１１によって実行される。このソフトウェアは、ＯＳ３１と、システム状態再現部４１と、ＡＰ管理ミドル５１と、少なくとも１つのアプリ（アプリケーション）６１とを含む。ＡＰ管理ミドル５１は、アプリ６１の実行に必要な機能を提供するミドルウェアである。計算機ＡとＢで実行されるアプリ６１は、ＡＰ管理ミドル５１によって実行を管理される。アプリ６１は、周期的に動作する。
【００１８】
ＡＰ管理ミドル５１は、通信処理部５１Ａと、ＡＰ制御部５１Ｂと、ＯＳ３１からのタイマーイベントやシグナルイベントを処理するイベント管理部５１Ｃとを含む。通信処理部５１Ａは、ＯＳ３１の機能を利用して、アプリ６１に必要なデータを通信装置１３または通信装置１４を通じて送受信を行う。ＡＰ制御部５１Ｂは、アプリ６１の順序制御（シーケンス制御）を行う。イベント管理部５１Ｃは、ＯＳ３１の機能を利用して、タイマーイベントについてアプリ６１からの設定や、ＯＳ３１からのタイマーイベントの受信や、複数のアプリ６１間のシグナルの送受信処理を行う。
【００１９】
ＡＰ管理ミドル５１において、通信装置１３または通信装置１４からアプリ６１へ入力される送受信データと、ＯＳ３１からのタイマーイベント及びシグナルイベントを含む内部イベント入力データとが、管理される。また、通信処理部５１ＡとＡＰ制御部５１Ｂとイベント管理部５１Ｃとは、実行のログを記録する。ログ記録の処理方法は、限定されないが、例えば標準的なＯＳ３１のトレース機能を用いることで実現できる。
【００２０】
アプリ６１の実行状態再現処理を行うシステム状態再現部４１は、通信管理部４２と、ＡＰログ制御部４３と、Ｓｎａｐｓｈｏｔ制御部４４と、状態再現制御部４５と、Ｓｎａｐｓｈｏｔ制御テーブル４６と、ログ情報４７と、状態再現同期制御テーブル４９とを含む。
【００２１】
通信管理部４２は、計算機Ａ、計算機Ｂと計算機Ｃ間でのシステム状態再現に必要なデータ送受信と、ＡＰ管理ミドル５１の通信処理部５１Ａからの外部通信ログとを処理する。ＡＰログ制御部４３は、ＡＰ管理ミドル５１からＡＰログを取得する。Ｓｎａｐｓｈｏｔ制御部４４は、ある特定の時刻の、計算機Ａと計算機Ｂと計算機Ｃとの夫々のアプリ６１の状態を再現するために必要なシステム状態をコピーするＳｎａｐｓｈｏｔ作成を行う。状態再現制御部４５は、Ｓｎａｐｓｈｏｔ制御部４４により作成されたＳｎａｐｓｈｏｔと、ＡＰ管理ミドル５１のログ情報４７をもとに、ある特定の時刻の計算機Ａと計算機Ｂと計算機Ｃの夫々のアプリ６１の状態を再現する。本実施例では、計算機システム内のアプリ６１の状態をシステム状態と呼ぶ。Ｓｎａｐｓｈｏｔ制御テーブル４６は、Ｓｎａｐｓｈｏｔ作成とアプリ６１の状態の再現とに必要なパラメータを格納する。ログ情報４７は、通信処理部５１Ａにより作成される外部通信ログと、ＡＰログ制御部４３により作成されアプリ６１の実行結果を示すＡＰログと、イベント管理部５１Ｃにより作成されるイベントログとを格納する。状態再現同期制御テーブル４９は、計算機Ａと計算機Ｂ、計算機Ｃの間でＳｎａｐｓｈｏｔ作成時刻と再現時刻の同期をとるための情報を格納する。
【００２２】
計算機Ａと計算機Ｂの夫々におけるアプリ６１は、それぞれの制御周期で動作し、制御処理を行う。計算機Ａ及び計算機Ｂは、制御対象機器に接続されている。制御対象機器は例えば、工場や鉄道における機器である。制御処理は、制御対象機器を制御する。制御処理の実行は、制御周期の一部の時間で終了する。そのため、制御周期のうち、制御処理の実行状態の残りの期間において、アプリ６１は、アイドル状態である。例えば、制御周期が１秒であり、制御周期の最初の０．５秒間においてアプリ６１は実行状態であり、残りの０．５秒間においてアプリ６１はアイドル状態である。制御処理を行うアプリ６１を制御アプリと呼ぶことがある。ＡＰ管理ミドル５１は、制御処理を制御する。
【００２３】
図３は、計算機Ｃのソフトウェア構成を示す。
【００２４】
このソフトウェアは、ＯＳ３１と、システム状態再現部４１と、仮想化基盤７１と、仮想計算機８１とを含む。計算機Ｃのソフトウェアは、計算機Ａと計算機ＢのＡＰ管理ミドル５１の代わりに仮想化基盤７１を含み、計算機Ａと計算機Ｂのアプリ６１の代わりに仮想計算機８１を含む。仮想化基盤７１は、仮想計算機８１を実行する。仮想計算機８１は、ＯＳ８２と、少なくとも１つのアプリ６１とを実行する。仮想化基盤７１は、ＡＰログを記録する。このＡＰログは、計算機Ａ、Ｂのようにアプリ６１の実行結果を示すＡＰログではなく、仮想計算機８１の実行結果を示すＡＰログである。仮想化基盤７１は、計算機と計算機ＢのＡＰ管理ミドル５１と同様、仮想計算機８１のＡＰログを記録する。仮想化基盤７１は、一つの仮想計算機８１を一つのアプリとして運用する。仮想計算機８１が実行されると仮想計算機８１内のＯＳ８２が仮想計算機８１内のアプリ６１を実行する。仮想計算機８１のＡＰログを記録することで、アプリ６１の実行結果を示すＡＰログを記録することが可能である。
【００２５】
計算機Ｃのシステム状態再現部４１において、通信管理部４２とＡＰログ制御部４３により受信されるアプリ６１のＡＰログは、仮想化基盤７１からのＡＰログであり、ログ内容は、仮想計算機８１のＡＰログである。計算機Ｃのアプリ６１の状態のＳｎａｐｓｈｏｔを作成し、その状態を再現するには、仮想計算機８１のＳｎａｐｓｈｏｔを作成し、その状態を再現すればよい。このように計算機Ｃの仮想計算機８１と、計算機Ａと計算機Ｃのアプリ６１とは、計算機Ａと計算機Ｂと計算機Ｃのシステム状態再現部４１による再現対象のアプリとして扱うことができる。以下の実施例においては、Ｓｎａｐｓｈｏｔ作成とシステム状態再現におけるアプリ６１とＡＰ管理ミドル５１の処理の内容について述べるが、計算機Ｃにおいては仮想計算機８１と仮想化基盤７１の処理に置き換えればよい。
【００２６】
計算機Ａ及びＢにおいては、アプリ６１を実行部と呼び、計算機Ｃにおいては、仮想計算機８１を実行部と呼ぶ。計算機Ａ及びＢにおいては、ＡＰ管理ミドル５１を実行制御部と呼び、計算機Ｃにおいては、仮想化基盤７１を実行制御部と呼ぶ。
【００２７】
本実施例では、システムの中に、ＡＰ管理ミドル５１と、ＡＰ管理ミドル５１によって実行管理されるアプリ６１とを含む計算機が、少なくとも１台あることを前提とする。
【００２８】
ＡＰ管理ミドル５１または仮想化基盤７１が、外部通信と、アプリ６１の実行結果と、ＯＳ３１から発行されるイベントとのログを記録し、システム状態再現部４１が、再現を制御することで、ＯＳ３１を変更することなく、複数の計算機の状態を再現することができる。これにより、計算機Ａ、Ｂのような物理計算機上のアプリ６１であっても、計算機Ｃのような仮想計算機上のアプリ６１であっても、同様に扱うことができ、物理計算機と仮想計算機が混在していても、システム状態を再現することができる。
【００２９】
図４は、Ｓｎａｐｓｈｏｔ制御テーブル４６を示す。
【００３０】
本テーブルは、システム状態を再現する目標の再現時刻からシステムの最後の実行時刻までの時間を示す戻り時間ＲＴＮと、特定時刻で作成されたＳｎａｐｓｈｏｔから再現時刻までの再現にかかる時間の許容時間Ｔｓと、Ｃｏｏｒｄｉｎａｔｏｒの役割の計算機をあらわすＣｏｏｒｄｉｎａｔｏｒ情報と、計算機Ａと計算機Ｂと計算機Ｃが再現処理状態か否かをあらわす動作モードとを含む。Ｃｏｏｒｄｉｎａｔｏｒは、計算機Ａと計算機Ｂと計算機Ｃの間で、Ｓｎａｐｓｈｏｔ作成の同期とシステム再現の同期とを調停する。本実施例において、復元に用いられる復元Ｓｎａｐｓｈｏｔの状態から再現時刻の状態までログに基づいて再現する時間は、復元Ｓｎａｐｓｈｏｔの作成時刻から再現時刻までの時間に等しいとする。
【００３１】
戻り時間ＲＴＮは、ミリ秒単位でユーザから設定される。許容時間Ｔｓは、分単位でユーザから設定される。その設定方法は、コマンド入力でも設定ファイルによるものでもよい。Ｃｏｏｒｄｉｎａｔｏｒ情報は、「１」であれば、Ｃｏｏｒｄｉｎａｔｏｒの役割の計算機であることを示し、「０」であればＣｏｏｒｄｉｎａｔｏｒの役割をしない計算機であることを示す。動作モードは、「Ｌ」であれば、通信管理部４２とＡＰログ制御部４３がログテーブル４８にログを格納するログモードであることを示す。「Ｒ」であれば、計算機システムがある特定時刻の状態を再現する状態再現モードであることを示す。Ｃｏｏｒｄｉｎａｔｏｒは、通信管理部４２の初期処理により設定される。動作モードは通信管理部４２と状態再現制御部４５によって設定される。
【００３２】
Ｃｏｏｄｉｎａｔｏｒである計算機は、表示装置と入力装置に接続されていてもよいし、表示装置と入力装置を含む端末に、ネットワークを介して接続されていてもよい。Ｃｏｏｄｉｎａｔｏｒである計算機は、許容時間を受け付ける画面（第１入力画面）を表示装置に表示させ、許容時間が入力装置に入力される場合、入力された許容時間を取得し、Ｓｎａｐｓｈｏｔ制御テーブル４６へ設定してもよい。また、Ｃｏｏｄｉｎａｔｏｒである計算機は、再現要求を受け付ける画面（第２入力画面）を表示装置に表示させ、再現要求が入力装置に入力される場合、入力された再現要求を取得し、後述の再現同期開始処理を実行してもよい。再現要求は、戻り時間及び再現時刻の何れかを含む。ユーザが許容時間を入力することにより、再現に要する時間を制限することができる。ユーザが戻り時間又は再現時刻を入力することにより、任意の時刻の再現を行うことができる。
【００３３】
図５は、ログ情報４７を示す。
【００３４】
ログ情報４７は、ログ管理テーブル４７Ａと、外部通信ログテーブル４８Ａと、ＡＰログテーブル４８Ｂと、イベントログテーブル４８Ｃとを含む。
【００３５】
ログ管理テーブル４７Ａは、アプリ６１に関わるログを格納する。ログは、外部通信ログと、ＡＰログと、イベントログとを含む。ログ管理テーブル４７Ａは、ログ毎のエントリを含む。各エントリは、ログ識別子と、ログ種類と、ログ内容と、照合状態とを含む。ログ識別子は、ログを識別するためのものである。ログ種類は、通信管理部４２とＡＰ管理ミドル５１の通信処理部５１Ａからの外部通信ログを表すＣＯＭＭと、ＡＰ管理ミドル５１のＡＰ制御部５１ＢからのＡＰログを表すＡＰと、ＡＰ管理ミドル５１のイベント管理部５１Ｃからのイベントログを表すＥＶＴとの何れか一つを示す。ログ内容は、当該種類のテーブルの対応するエントリの内容を示す。ログ種類がＣＯＭＭであれば、ログ内容は、外部通信ログテーブル４８Ａの対応するエントリの内容を示す。ログ種類がＡＰであれば、ログ内容は、ＡＰログテーブル４８Ｂの対応するエントリの内容を示す。ログ種類がＥＶＴであれば、ログ内容は、イベントログテーブル４８Ｃの対応するエントリの内容を示す。照合状態は、Ｓｎａｐｓｈｏｔ制御テーブルの動作モードが「Ｒ」の状態再現モードである時、特定時刻のアプリ６１の再現の照合結果を示す。照合処理は後述する。照合が未実施である場合、照合状態は「０」、照合結果が一致である場合、照合状態は「ＯＫ」、照合結果が不一致である場合、照合状態は「ＮＧ」となる。照合状態は、照合結果によってシステムの再現処理の継続可否を決定し、システム再現処理の健全性を確保するために用いられる。
【００３６】
外部通信ログテーブル４８Ａは、通信管理部４２によって作成され、計算機間の通信パケットの入力と出力である外部通信のログを示す。外部通信ログテーブル４８Ａは、外部通信毎のエントリを含む。各エントリは、タイムスタンプと、ログ内容と、通信内容保存先とを含む。タイムスタンプは、通信が行われた時刻が格納される。ログ内容は、外部通信ログフォーマットにしたがって格納される。詳細は後述する。通信内容保存先は、計算機１０間の通信パケットの内容の保存先のディスク上のファイル名や、メモリ上の番地等を示す。
【００３７】
ＡＰログテーブル４８Ｂは、ＡＰ管理ミドル５１のＡＰ制御部５１Ｂから送られ、アプリ間の通信のログを示す。ＡＰログテーブル４８Ｂは、ＩＰＣ（プロセス間通信）毎のエントリを含む。各エントリは、タイムスタンプと、タスク識別子と、ＩＰＣ識別子と、開始終了情報とを含む。タイムスタンプは該当ログの発生時刻を表す。タスク識別子は、アプリ６１を識別するための情報であり、例えばＯＳ３１のプロセス識別子のＰＩＤである。ＩＰＣ識別子は、複数のアプリ６１間で順序制御を行うために、ＡＰ管理ミドル５１により作成され管理されるＩＰＣの情報である。アプリ６１が、処理終了時に次に実行が必要な別のアプリ６１を、ＡＰ管理ミドル５１により提供されるＩＰＣを通じて起し実行させることで、複数のアプリ６１の順序制御が実現される。開始終了情報は、制御処理の初めに処理するアプリに対して「Ｓ」を示し、制御処理の終了時に処理するアプリに対して「Ｅ」を示し、それ以外のアプリに対して「０」を示す。
【００３８】
イベントログテーブル４７Ｃは、ＡＰ管理ミドル５１のイベント管理部５１Ｃから送られ、イベントのログを示す。イベントログテーブル４７Ｃは、イベント毎のエントリを含む。各エントリは、タイムスタンプと、タスク識別子と、イベント識別子と、イベント内容とを含む。タイムスタンプは、該当ログの発生時刻を表す。タスク識別子は、イベント送受信対象のアプリ６１を識別するための情報である。イベント識別子は、発生イベントを識別するための情報である。イベント内容は、イベント種類がタイマーである場合に「ＴＲｉ」を示し、イベント種類がシグナルである場合に「ＳＩＧｊ」を示す。ここでｉ、ｊは、イベント種類毎の発生順を表す整数である。
【００３９】
図６は、外部通信ログフォーマットで表されたログ内容を示す。
【００４０】
前述の外部通信ログテーブルのログ内容４８ＡＡの各エントリは、予め設定された外部通信フォーマットで表され、計算機識別子と、ロジックカウンタと、入出力識別子と、通信相手計算機識別子とを含む。計算機識別子は、対応するエントリに示された動作を実行する計算機を識別する。ロジックカウンタは、当該エントリが発生した計算機識別子と計算機Ａと計算機Ｂと計算機Ｃのそれぞれにより管理される。入出力識別子は、当該エントリが入力か出力かを識別する。通信相手計算機識別子は、当該エントリの通信相手計算機を識別する。
【００４１】
この例では、計算機識別子は、計算機Ａであれば「ａ」、計算機Ｂは「ｂ」、計算機Ｃは「ｃ」を示す。ロジカルカウントは、外部通信が発生するたびに１つ加算され、通信発生の順序を保証する。入出力識別子には、通信パケットの入力（受信）であれば「Ｅ」、通信パケットの出力（送信）であれば「Ｐ」が格納される。通信相手計算機識別子には、通信パケットの送信元または送信先の計算機識別子が格納される。通信パケットが後述の再現同期チェックメッセージであれば、通信相手計算機識別子には「ｘ」が格納される。これらの情報によって、通信の因果性確認が可能である。
【００４２】
図７は、状態再現同期制御テーブル４９を示す。
【００４３】
状態再現同期制御テーブル４９は、計算機Ａと計算機Ｂと計算機Ｃの間でのシステム状態の再現の同期のために必要な情報を格納する。状態再現同期制御テーブル４９は、再現時刻ＴＲと、復元Ｓｎａｐｓｈｏｔ識別子と、リストレコード数と、同期リストとを含む。
【００４４】
再現時刻ＴＲは、最後の実行時刻から戻り時間ＲＴＮを減じた時刻である。復元Ｓｎａｐｓｈｏｔ識別子は、Ｓｎａｐｓｈｏｔ制御部４４により作成されたＳｎａｐｓｈｏｔの中で再現時刻の直前のＳｎａｐｓｈｏｔである復元Ｓｎａｐｓｈｏｔの識別子である。リストレコード数は、計算機Ａ、Ｂ、Ｃで発生した外部通信のログの数が格納される。
【００４５】
同期リストは、復元Ｓｎａｐｓｈｏｔの作成時刻から再現時刻までの期間に、計算機Ａ、Ｂ、Ｃで発生した外部通信ログのエントリを含む。各エントリは、タイムスタンプと、ログ内容と、再現状態とを含む。計算機Ａ、Ｂ、Ｃの夫々がＳｎａｐｓｈｏｔからアプリ６１の状態の再現処理を行う際、同期リストのログに現れる通信の再現をするたびに全計算機の再現処理の歩調を合わせる処理を行う。それによって、全計算機の再現処理の同期が可能となる。再現状態は、状態再現制御部４５によって設定される。再現状態は、対応するログが再現済みのログの場合に「１」を示し、それ以外の場合に「０」を示す。詳細処理は後述する。
【００４６】
以下、各計算機１０のＡＰ管理ミドル５１の動作について説明する。
【００４７】
図８は、通信管理処理を示す。
【００４８】
各計算機１０の通信管理部４２は、通信管理処理を行う。
【００４９】
ステップ１０１：通信管理部４２は、ユーザ入力から、戻り時間ＲＴＮと許容時間Ｔｓの初期設定値を取得する。通信管理部４２は更に、外部通信における送受信の順序性保証に利用するロジカルカウンタを０に設定する。
【００５０】
ステップ１０２：通信管理部４２は、Ｓｎａｐｓｈｏｔ制御テーブル４６へ初期設定値を設定する。
【００５１】
ステップ１０３：通信管理部４２は、Ｓｎａｐｓｈｏｔ制御テーブル４６の動作モードへログモード「Ｌ」を設定する。
【００５２】
ステップ１０４：計算機Ａにおいて、アプリ６１は、制御周期で動作し、ＡＰ管理ミドル５１によって制御される。計算機Ｂにおいて、アプリ６１は、別の制御周期で動作し、ＡＰ管理ミドル５１によって制御される。Ｓｎａｐｓｈｏｔ作成の同期とシステム再現の同期をするＣｏｏｒｄｉｎａｔｏｒは、制御周期を持つアプリ６１を実行する計算機の中から選定される。そのために、通信管理部４２は、ＡＰ管理ミドル５１で管理されているアプリ６１の制御周期を、互いに送信しあって、計算機Ａの制御周期と計算機Ｂの制御周期との共通制御周期ＬＣＭを算出する。例えば、通信管理部４２は、計算機Ａの制御周期と計算機Ｂの制御周期との最小公倍数を、共通制御周期ＬＣＭとして算出する。
【００５３】
ステップ１０５：計算機Ａの制御周期と計算機Ｂの制御周期との中の最小の制御周期を持つ計算機がＣｏｏｒｄｉｎａｔｏｒとなる。例えば、計算機Ａの制御周期が１秒であり、計算機Ｂの制御周期が３秒である場合、計算機ＡがＣｏｏｒｄｉｎａｔｏｒとなり、計算機Ｂと制御周期アプリを持たない計算機Ｃが非Ｃｏｏｒｄｉｎａｔｏｒとなる。通信管理部４２は、Ｓｎａｐｓｈｏｔ制御テーブル４６のＣｏｏｒｄｉｎａｔｏｒ情報へ、ローカルの計算機がＣｏｏｒｄｉｎａｔｏｒである場合に「１」を、それ以外である場合に「０」を格納する。
【００５４】
ステップ１０６：通信管理部４２は、後述の同期メッセージ受信処理のためのプロセス（同期メッセージ受信処理用プロセス）を生成する。
【００５５】
ステップ１０７：通信管理部４２は、後述のＳｎａｐｓｈｏｔ同期処理（Ｃｏｏｒｄｉｎａｔｏｒ）又は後述のＳｎａｐｓｈｏｔ同期受信処理（非Ｃｏｏｒｄｉｎａｔｏｒ）のためのプロセス（Ｓｎａｐｓｈｏｔ同期処理用プロセス）を生成する。
【００５６】
ステップ１０８：通信管理部４２は、後述の再現同期開始処理（Ｃｏｏｒｄｉｎａｔｏｒ）又は後述の再現同期開始受信処理（非Ｃｏｏｒｄｉｎａｔｏｒ）のためのプロセス（再現同期開始処理用プロセス）を生成し、このフローを終了する。
【００５７】
以上の通信管理処理によれば、各計算機１０は、再現に必要な、定期的なＳｎａｐｓｈｏｔの作成と、ログの記録とを開始することができる。また、複数の計算機は、その中の一つの計算機を同期の基準となるＣｏｏｒｄｉｎａｔｏｒに設定することができる。Ｃｏｏｒｄｉｎａｔｏｒは、共通制御周期毎に、制御処理の終了時を再現同期ポイントとすることで、複数の制御アプリのアイドル状態で再現を同期させることができる。Ｃｏｏｒｄｉｎａｔｏｒは、Ｓｎａｐｓｈｏｔ周期毎に、制御処理の終了時にＳｎａｐｓｈｏｔを作成することで、複数の制御アプリに影響を与えることなく、Ｓｎａｐｓｈｏｔを作成することができる。
【００５８】
図９は、同期メッセージ受信処理の動作を示す。
【００５９】
各計算機１０の通信管理部４２は、前述の通信管理処理のステップ１０６で生成されたプロセスを用いて、同期メッセージ受信処理を行う。
【００６０】
ステップ２０１：通信管理部４２は、他計算機または自計算機からのメッセージを受信したか判定する。メッセージを受信した（Ｙ）場合、通信管理部４２は、次のステップを処理する。そうでない（Ｎ）場合、通信管理部４２は、ステップ２０１へ戻る。
【００６１】
ステップ２０２：通信管理部４２は、受信したメッセージがＳｎａｐｓｈｏｔ同期メッセージであるかを判定する。
【００６２】
ステップ２０３：通信管理部４２は、受信したメッセージがＳｎａｐｓｈｏｔ同期メッセージであれば（Ｙ）、後述のＳｎａｐｓｈｏｔ同期処理を行い、ステップ２０１へ戻る。
【００６３】
ステップ２１１：通信管理部４２は、受信したメッセージが再現開始メッセージか判定する。
【００６４】
ステップ２２１：通信管理部４２は、受信したメッセージが再現開始メッセージであれば（Ｙ）、後述の再現同期受信処理を行い、ステップ２０１へ戻る。
【００６５】
ステップ２３１：通信管理部４２は、受信したメッセージが再現開始メッセージでなければ（Ｎ）、後述の外部通信ログ処理を行い、ステップ２０１へ戻る。
【００６６】
以上の同期メッセージ受信処理によれば、計算機は、受信したメッセージに応じて、Ｓｎａｐ作成の同期、再現の開始、外部通信ログの作成の何れかを行うことができる。
【００６７】
図１０は、Ｓｎａｐｓｈｏｔ同期処理を示す。
【００６８】
Ｃｏｏｒｄｉｎａｔｏｒの通信管理部４２は、前述の通信管理処理のステップ１０７で生成されたプロセスを用いて、Ｓｎａｐｓｈｏｔ同期処理を行う。Ｓｎａｐｓｈｏｔ同期処理は、前述のステップ１０５で決定したＣｏｏｒｄｉｎａｔｏｒとなった計算機Ａにより行われる。非Ｃｏｏｒｄｉｎａｔｏｒである計算機Ｂ及びＣは、本処理は行わず、後述のＳｎａｐｓｈｏｔ同期受信処理を行う。
【００６９】
ステップ３０１：通信管理部４２は、ＡＰ管理ミドル５１からのＡＰログテーブル４８Ｂの開始終了情報を参照することで、アプリ６１の制御処理終了を待つ。アプリ６１の制御処理終了時点は、アプリ６１の状態が実行状態でなく、Ｓｎａｐｓｈｏｔの実行に必要な計算機資源の状態を決定できるため、システム全体のＳｎａｐｓｈｏｔ同期ポイントとして適切である。
【００７０】
ステップ３０２：通信管理部４２は、前述のステップ１０４で算出した共通周期ＬＣＭが経過したか判定する。経過していなければ（Ｎ）、通信管理部４２は、ステップ３０１に戻り次の制御処理終了を待つ。
【００７１】
ステップ３０３：共通周期ＬＣＭが経過した場合（Ｙ）、通信管理部４２は、計算機Ｂ及びＣに対して再現同期チェックメッセージを送信する。再現同期チェックメッセージの送信の時点で、制御アプリは、アイドル状態であり、状態が確定している。この時点を、再現同期ポイントと呼ぶ。計算機Ｂ及びＣは、計算機Ａにより本メッセージの送信の再現に従って、再現の歩調を合わせる。
【００７２】
ステップ３０４：ステップ３０３の再現同期チェックメッセージは、計算機をまたがる外部通信であるため、通信管理部４２は、外部通信を記録する外部通信ログ処理を行う。外部通信ログ処理については後述する。
【００７３】
ステップ３０５：通信管理部４２は、Ｓｎａｐｓｈｏｔ制御テーブル４６の許容時間ＴｓをＳｎａｐｓｈｏｔ周期とし、前回のＳｎａｐｓｈｏｔの実行からＳｎａｐｓｈｏｔ周期が経過したか否かを判定する。なお、通信管理部４２は、許容時間から予め設定されたマージンを減ずることで、Ｓｎａｐｓｈｏｔ周期を算出してもよい。経過していなければ（Ｎ）、通信管理部４２は、ステップ３０１に戻り次の制御周期の終了を待つ。
【００７４】
ステップ３０６：Ｓｎａｐｓｈｏｔ周期が経過した場合（Ｙ）、通信管理部４２は、計算機ＢとＣにＳｎａｐｓｈｏｔの作成を要求するためのＳｎａｐｓｈｏｔ同期メッセージを送信し、計算機ＢとＣからの合意メッセージであるＡＣＫを待つ。
【００７５】
ステップ３０７：通信管理部４２は、自計算機のＳｎａｐｓｈｏｔの作成を要求するためのＳｎａｐｓｈｏｔ作成要求をＳｎａｐｓｈｏｔ制御部４４へ送信し、ステップ３０１に戻り、次の制御処理終了を待つ。
【００７６】
以上のＳｎａｐｓｈｏｔ同期処理によれば、Ｃｏｏｒｄｉｎａｔｏｒは、共通周期毎の制御処理の終了時を、再現同期ポイントとして各計算機１０の外部通信ログに記録することができる。これにより、各計算機は、再現時に、再現同期ポイントを参照して同期することができる。更に、Ｃｏｏｒｄｉｎａｔｏｒは、制御処理の終了後に、Ｓｎａｐｓｈｏｔ周期で各計算機１０にＳｎａｐｓｈｏｔを作成させることができる。
【００７７】
図１１は、Ｓｎａｐｓｈｏｔ同期受信処理を示す。
【００７８】
非Ｃｏｏｒｄｉｎａｔｏｒの通信管理部４２は、前述の通信管理処理のステップ１０７で生成されたプロセスを用いて、Ｃｏｏｒｄｉｎａｔｏｒから送信されたＳｎａｐｓｈｏｔ同期メッセージの受信に応じて、Ｓｎａｐｓｈｏｔ同期受信処理を行う。
【００７９】
ステップ４０１：通信管理部４２は、実行制御部の処理終了を待つ。ここで通信管理部４２は、ＡＰログテーブル４８Ｂの開始終了情報を参照することで処理終了を判断する。各計算機１０は、アプリ６１の終了状態において同期的にＳｎａｐｓｈｏｔを作成する。アプリ６１の終了状態は、アプリ６１の実行時に使用される計算機資源の状態が安定している状態である。例えば、アプリ６１の終了状態は、通信ソケットにメッセージを書き終えた状態や、アプリ間制御メッセージをメッセージキューで送信し終えた状態や、アプリ６１の処理で使用した計算機資源を解放した状態である。
【００８０】
ステップ４０２：通信管理部４２は、受信したＳｎａｐｓｈｏｔ同期メッセージに対し、Ｓｎａｐｓｈｏｔ作成同期の合意を表すＡＣＫをＣｏｏｒｄｉｎａｔｏｒへ送信する。
【００８１】
ステップ４０３：通信管理部４２は、自計算機のＳｎａｐｓｈｏｔを作成するためのＳｎａｐｓｈｏｔ作成要求をＳｎａｐｓｈｏｔ制御部４４へ送信し、このフローを終了する。
【００８２】
以上のＳｎａｐｓｈｏｔ同期受信処理によれば、非Ｃｏｏｒｄｉｎａｔｏｒは、ＣｏｏｒｄｉｎａｔｏｒからのＳｎａｐｓｈｏｔ同期メッセージに応じて、Ｓｎａｐｓｈｏｔを作成することで、Ｃｏｏｒｄｉｎａｔｏｒに同期してＳｎａｐｓｈｏｔを作成することができる。
【００８３】
図１２は、Ｓｎａｐｓｈｏｔ作成処理を示す。
【００８４】
各計算機１０のＳｎａｐｓｈｏｔ制御部４４は、前述のＳｎａｐｓｈｏｔ同期処理のステップ３０７またはＳｎａｐｓｈｏｔ同期受信処理のステップ４０３で送信されたＳｎａｐｓｈｏｔ作成要求に応じて、Ｓｎａｐｓｈｏｔを作成するＳｎａｐｓｈｏｔ作成処理を行う。
【００８５】
ステップ５０１：Ｓｎａｐｓｈｏｔ制御部４４は、Ｓｎａｐｓｈｏｔ作成要求の受信を待つ。
【００８６】
ステップ５０２：Ｓｎａｐｓｈｏｔ制御部４４は、Ｓｎａｐｓｈｏｔ作成要求を受信すると、実行部の状態をコピーする。例えば、Ｓｎａｐｓｈｏｔ制御部４４は、ＯＳ３１のｆｏｒｋシステムコールを使用して、実行部の状態をコピーする。本実施例は、実行部の状態のコピー手法について限定しない。本実施例は、ｆｏｒｋによるコピーを行う場合について、以降のステップを述べる。
【００８７】
ステップ５０３：ｆｏｒｋによって、実行部のプロセスのコピーがＯＳ３１によって生成される。ｆｏｒｋによって生成されたプロセス（コピープロセス）は、もとの実行部のプロセスの識別子と異なる識別子を持ち、ＯＳ３１からの別のプロセスとして扱われる。本ステップで、Ｓｎａｐｓｈｏｔ制御部４４は、コピープロセスを別のＣＰＵコア（管理用コア）へ移動させる。
【００８８】
ステップ５０４：Ｓｎａｐｓｈｏｔ制御部４４は、ステップ５０３で移動したコピープロセスを停止する。
【００８９】
ステップ５０５：Ｓｎａｐｓｈｏｔ制御部４４は、前回のＳｎａｐｓｈｏｔ作成処理で作成されて停止しているコピープロセスが存在するか判定する。なければ（Ｎ）、Ｓｎａｐｓｈｏｔ制御部４４は、ステップ５０１に戻る。
【００９０】
ステップ５０６：Ｓｎａｐｓｈｏｔ制御部４４は、存在すると判定されたコピープロセスをファイルに書き出し、ファイル名として「Ｓｎａｐｓｈｏｔ＿Ｔｓ＋ｎ」を与える。Ｔｓは、Ｓｎａｐｓｈｏｔ周期である。ｎは、Ｓｎａｐｓｈｏｔ作成処理実施回数を表す整数である。
【００９１】
ステップ５０７：Ｓｎａｐｓｈｏｔ制御部４４は、最初のＳｎａｐｓｈｏｔファイルである「Ｓｎａｐｓｈｏｔ０」があるか判定する。
【００９２】
ステップ５０８：「Ｓｎａｐｓｈｏｔ０」があれば（Ｙ）、Ｓｎａｐｓｈｏｔ制御部４４は、「Ｓｎａｐｓｈｏｔ０」と「Ｓｎａｐｓｈｏｔ＿Ｔｓ＋ｎ」の差分である「ΔＴｓ＋ｎ」を作成する。Ｓｎａｐｓｈｏｔ制御部４４は、差分と共に、そのＳｎａｐｓｈｏｔの識別子、Ｓｎａｐｓｈｏｔの作成時刻を格納する。
【００９３】
ステップ５０９：Ｓｎａｐｓｈｏｔ制御部４４は、ステップ５０６で作成した「Ｓｎａｐｓｈｏｔ＿Ｔｓ＋ｎ」を削除し、ステップ５０１へ戻る。
【００９４】
ステップ５１１：「Ｓｎａｐｓｈｏｔ０」がなければ（Ｎ）、Ｓｎａｐｓｈｏｔ制御部４４は、ステップ５０６で作成した「Ｓｎａｐｓｈｏｔ＿Ｔｓ＋ｎ」を「Ｓｎａｐｓｈｏｔ０」としてコピーし、ステップ５０９に進む。
【００９５】
以上のＳｎａｐｓｈｏｔ作成処理によれば、各計算機１０は、実行部のプロセスのコピーをＳｎａｐｓｈｏｔとして作成することができる。また、各計算機１０は、最初のＳｎａｐｓｈｏｔと最新のＳｎａｐｓｈｏｔの差分ΔＴｓ＋ｎを作成することにより、Ｓｎａｐｓｈｏｔに必要な容量を抑えることができる。
【００９６】
図１３は、外部通信ログ処理を示す。
【００９７】
通信管理部４２は、前述の同期メッセージ受信処理のステップ２３１、前述のＳｎａｐｓｈｏｔ同期処理のステップ３０４、または後述のＡＰログ制御処理のステップ７０５において、外部通信ログ処理を行う。外部通信ログは、システム状態再現において同期ポイントとして使用される。
【００９８】
ステップ６０１：通信管理部４２は、タイムスタンプを取得する。
【００９９】
ステップ６０２：通信管理部４２は、前述のステップ１０１で初期化されたロジカルカウントに１を加算する。
【０１００】
ステップ６０３：通信管理部４２は、外部通信の通信パケットから、その外部通信の送信元又は送信先を示す通信相手計算機情報を取得する。
【０１０１】
ステップ６０４：通信管理部４２は、各ステップで取得した情報をもとに、外部通信ログフォーマットにしたがって外部通信ログを作成する。
【０１０２】
ステップ６０５：通信管理部４２は、外部通信ログテーブル４８Ａへ外部通信ログを格納する。
【０１０３】
ステップ６０６：通信管理部４２は、当該通信パケットが、Ｓｎａｐｓｈｏｔ同期処理のステップ３０３で送信された再現同期チェックメッセージであるかを判定する。
【０１０４】
ステップ６０７：当該通信パケットが再現同期チェックメッセージであれば（Ｙ）、通信管理部４２は、外部通信ログの通信相手計算機識別子に対して「ｘ」を設定し、当該通信パケットの保存を行わず、外部通信ログテーブル４８Ａの通信内容保存先に対してＮＵＬＬを設定する。
【０１０５】
ステップ６０８：通信管理部４２は、ログ管理テーブル４７Ａにエントリを作成し、そのエントリのログ内容に、ステップ６０５で格納した外部通信ログを格納し、そのエントリの照合状態に対して「０」を設定し、このフローを終了する。
【０１０６】
ステップ６１１：再現同期チェックメッセージでなければ（Ｎ）、通信管理部４２は、通信パケットの保存を行い、その保存先を外部通信ログテーブル４８Ａの通信内容保存先に設定する。
【０１０７】
以上の外部通信ログ処理によれば、各計算機１０は、外部通信の度に外部通信ログを記録することができる。これにより、各計算機は、再現時に外部通信ログに基づいて同期することができる。
【０１０８】
図１４は、ＡＰログ制御処理を示す。
【０１０９】
各計算機１０のＡＰログ制御部４３は、ＡＰログ制御処理を行う。
【０１１０】
ステップ７０１：ＡＰログ制御部４３は、実行制御部からの、実行部の動作を表すログを待つ。
【０１１１】
ステップ７０２：ＡＰログ制御部４３は、Ｓｎａｐｓｈｏｔ制御テーブル４６の動作モードを読み取る。
【０１１２】
ステップ７０３：ＡＰログ制御部４３は、動作モードがログモード「Ｌ」であるか判定する。
【０１１３】
ステップ７０４：動作モードがログモード「Ｌ」であれば（Ｙ）、ＡＰログ制御部４３は、受信したログが、実行制御部から実行部へ受け渡す外部通信ログであるか判定する。
【０１１４】
ステップ７０５：受信したログが外部通信ログであれば（Ｙ）、ＡＰログ制御部４３は、前述の外部通信ログ処理を行い、ステップ７０１へ戻る。
【０１１５】
ステップ７１１：受信したログが外部通信ログでなければ（Ｎ）、ＡＰログ制御部４３は、受信したログが、実行部の実行結果を示すＡＰログであるか判定する。
【０１１６】
ステップ７１２：受信したログがＡＰログであれば（Ｙ）、ＡＰログ制御部４３は、ＡＰログをＡＰログテーブル４８Ｂへ格納し、ログ管理テーブル４７Ａにエントリを作成し、そのエントリのログ内容に当該ＡＰログを格納し、そのエントリの照合状態を「０」に設定し、ステップ７０１へ戻る。
【０１１７】
ステップ７２１：受信したログがＡＰログでなければ（Ｎ）、ＡＰログ制御部４３は、受信したログがイベントログであると判定し、そのイベントログをイベントログテーブル４８Ｃへ格納し、ログ管理テーブル４７Ａにエントリを作成し、そのエントリのログ内容に当該イベントログを格納し、そのエントリの照合状態を「０」に設定し、ステップ７０１へ戻る。
【０１１８】
ステップ７３１：動作モードがログモード「Ｌ」でなければ（Ｎ）、即ち、動作モードが状態再現モードであれば、ＡＰログ制御部４３は、後述の再現照合処理を行う。
【０１１９】
以上のＡＰログ制御処理によれば、各計算機１０は、実行制御部により作成されたログを分類して格納することができる。
【０１２０】
図１５は、再現同期開始処理を示す。
【０１２１】
Ｃｏｏｒｄｉｎａｔｏｒの通信管理部４２は、前述の通信管理処理のステップ１０８で生成されたプロセスを用いて、再現同期開始処理を行う。
【０１２２】
ステップ８０１：通信管理部４２は、ユーザからの再現要求を待つ。ユーザからの再現要求はコマンドでも設定ファイルも形でもよい。再現要求は、ユーザから入力される情報として、再現時刻までの戻り時間ＲＴＮを含む。再現要求は、戻り時間ＲＴＮの代わりに、再現時刻を含んでもよい。
【０１２３】
ステップ８０２：再現要求から再現時刻までの戻り時間ＲＴＮを読取り、戻り時間ＲＴＮと現在時刻に基づいて、状態再現同期制御テーブル４９の再現時刻を設定する。
【０１２４】
ステップ８０３：通信管理部４２は、Ｓｎａｐｓｈｏｔ作成処理で作成されたＳｎａｐｓｈｏｔの中から、再現時刻直前のＳｎａｐｓｈｏｔの識別子を選択し、選択された識別子を状態再現同期制御テーブル４９の復元Ｓｎａｐｓｈｏｔ識別子に設定する。通信監理部４２は、復元Ｓｎａｐｓｈｏｔを示す情報を、表示装置に表示させてもよい。
【０１２５】
ステップ８０４：通信管理部４２は、復元Ｓｎａｐｓｈｏｔの作成時刻から再現時刻までの外部通信ログを、外部通信ログテーブル４８Ａから読取り、読み取られた外部通信ログを状態再現同期制御テーブル４９の同期リストに設定し、同期リストのエントリ数をリストレコード数へ設定する。
【０１２６】
ステップ８０５：通信管理部４２は、再現開始メッセージを計算機Ｂ及びＣへ送信する。
【０１２７】
ステップ８０６：通信管理部４２は、再現開始合意を示すＡＣＫの受信を待つ。
【０１２８】
ステップ８０７：通信管理部４２は、ＡＣＫとともに計算機Ｂ及びＣから送られた状態再現同期制御テーブル４９の同期リストをマージし、各ログ内容のロジカルカウンタと入出力識別子と通信相手計算機識別子から外部通信発生の因果性を判定し、因果性に基づいて、マージされた同期リストを発生順に並べる。例えば、通信管理部４２は、状態再現同期制御テーブル４９において、計算機Ａが計算機Ｂ及びＣに対して再現同期チェックメッセージを送信したログ「ａ１Ｐ（ｘ）」が最初のログである。その時、計算機Ａのロジカルカウントは１となる。計算機ＢとＣは、計算機Ａからの再現同期チェックメッセージの受信を示すログとして、「ｂ１Ｅ（ｘ）」と「ｃ１Ｅ（ｘ）」を外部通信ログテーブル４８Ａに格納する。次に、計算機Ｃは計算機Ｂに対してデータを送信し、計算機Ｂはそのデータを受信し、処理を行った上で、計算機Ａへ制御データを送信したことが、ログから読み取れる。計算機Ｃの外部通信は計算機Ｂへのデータ送信が最後なので、計算機Ｃのロジカルカウンタは２である。計算機Ｂは計算機Ｃからの受信と計算機Ａへの送信を行ったので、計算機Ｂのロジカルカウンタは３となる。計算機Ａは計算機Ｂからの制御データの受信を行ったので、計算機Ａのロジカルカウンタは２となる。
【０１２９】
ステップ８０８：通信管理部４２は、ステップ８０７でマージされ並べ替えられた同期リストを状態再現同期制御テーブル４９に再設定し、その同期リストと、同期リストの合意の要求とを示す、同期リスト合意要求メッセージとを、計算機ＢとＣへ送信する。
【０１３０】
ステップ８０９：通信管理部４２は、計算機ＢとＣからの同期リストの合意を示すＡＣＫ受信を待つ。
【０１３１】
ステップ８１０：通信管理部４２は、状態再現制御部４５へ状態再現制御要求を送信し、ステップ８０１へ戻る。
【０１３２】
以上の再現同期開始処理によれば、Ｃｏｏｒｄｉｎａｔｏｒは、再現開始メッセージを非Ｃｏｏｒｄｉｎａｔｏｒへ送信することで、全ての計算機の、復元Ｓｎａｐｓｈｏｔから再現時刻までの外部通信ログを取得し、外部通信ログの内容を実行順に並べ替え、並べ替えた内容を同期リストとして非Ｃｏｏｒｄｉｎａｔｏｒへ送信することができる。これにより、各計算機は、同じ同期リストに基づいて、再現を同期することができる。
【０１３３】
図１６は、再現同期開始受信処理を示す。
【０１３４】
非Ｃｏｏｒｄｉｎａｔｏｒの通信管理部４２は、前述の通信管理処理のステップ１０８で生成されたプロセスを用いて、再現開始メッセージの受信に応じて、再現同期開始受信処理を行う。
【０１３５】
ステップ９０１：通信管理部４２は、受信した状態再現同期制御テーブル４９から、再現時刻及び復元Ｓｎａｐｓｈｏｔ識別子を読み取る。
【０１３６】
ステップ９０２：通信管理部４２は、復元Ｓｎａｐｓｈｏｔの作成時刻から再現時刻までの外部通信ログを、外部通信ログテーブル４８Ａから読取り、状態再現同期制御テーブル４９の同期リストとして設定し、その同期リストのエントリ数をリストレコード数に設定する。
【０１３７】
ステップ９０３：通信管理部４２は、状態再現同期制御テーブル４９の同期リストと再現開始メッセージに対する合意とを示すＡＣＫを、Ｃｏｏｒｄｉｎａｔｏｒである計算機Ａへ送信する。
【０１３８】
ステップ９０４：通信管理部４２は、計算機Ａからの同期リスト合意要求メッセージを待つ。
【０１３９】
ステップ９０５：通信管理部４２は、受信された同期リスト合意要求メッセージに含まれている同期リストを、状態再現同期制御テーブル４９に再設定する。
【０１４０】
ステップ９０６：通信管理部４２は、計算機Ａへ同期リストの合意を示すＡＣＫを送信する。
【０１４１】
ステップ９０７：通信管理部４２は、状態再現制御部４５へ状態再現制御要求を送信し、このフローを終了する。
【０１４２】
以上の再現同期開始受信処理によれば、非Ｃｏｏｒｄｉｎａｔｏｒは、再現に必要な外部通信ログをＣｏｏｒｄｉｎａｔｏｒへ送信することができる。
【０１４３】
図１７は、状態再現制御処理を示す。
【０１４４】
各計算機１０の状態再現制御部４５は、状態再現制御処理を行う。
【０１４５】
ステップ１００１：状態再現制御部４５は、前述の再現同期開始処理のＳ８１０または前述の再現同期開始受信処理のＳ９０７で発行される、状態再現制御要求を待つ。
【０１４６】
ステップ１００２：状態再現制御部４５は、状態再現同期制御テーブル４９から再現時刻と復元Ｓｎａｐｓｈｏｔ識別子を読み取る。
【０１４７】
ステップ１００３：状態再現制御部４５は、復元Ｓｎａｐｓｈｏｔの差分ΔＴｓ＋ｎをＳｎａｐｓｈｏｔ０に適用することで復元Ｓｎａｐｓｈｏｔを作成し、復元Ｓｎａｐｓｈｏｔをメモリにロードすることで、実行部を復元する。
【０１４８】
ステップ１００４：状態再現制御部４５は、外部通信ログテーブル４８ＡとＡＰログテーブル４８Ｂとイベントログテーブル４８Ｃとを基に、実行部の実行に必要な計算機資源の再構築を、実行制御部に要求する。これに応じて、実行制御部は、計算機資源を再構築する。本実施例では、実行制御部は、システム状態の再現のために必要な計算機資源構築機能を含む。例えば、計算機資源構築機能は、ｃｒｉｕの機能を含み、アプリ６１と仮想計算機８１で使用されている通信ソケットやアプリ間順序制御用のＩＰＣの資源及びタイマーイベント、シグナルなどが再構築可能である。
【０１４９】
ステップ１００５：状態再現制御部４５は、後述の状態再現同期受信処理のためのプロセスを作成する。状態再現同期受信処理は、各計算機１０がシステム状態の再現の同期に必要な外部通信ログの再現のために、他計算機に対して再現同期要求メッセージを送信する。その詳細は、後述する。
【０１５０】
ステップ１００６：状態再現制御部４５は、Ｓｎａｐｓｈｏｔ制御テーブル４６の動作モードに状態再現モード「Ｒ」を設定する。
【０１５１】
ステップ１００７：状態再現制御部４５は、実行部の処理を開始する。ステップ１００３で復元されメモリにロードされたＳｎａｐｓｈｏｔは、ＯＳ３１からみて処理停止中の一つのプロセスに見える。処理停止中のプロセスの開始処理は、例えば、ｃｇｒｏｕｐｓの機能を用いることができる。本実施例は、処理停止中のプロセスの開始方法について限定することはない。
【０１５２】
ステップ１００８：状態再現制御部４５は、状態再現同期処理を行う。その詳細は後述する。
【０１５３】
その後、状態再現制御部４５は、ステップ１００１に戻る。
【０１５４】
以上の状態再現制御処理によれば、各計算機１０は、再現時刻の直前の復元Ｓｎａｐｓｈｏｔを用いて実行部の状態を再現し、実行制御部の処理を開始することで、実行部の処理を開始することができる。
【０１５５】
図１８は、再現照合処理を示す。
【０１５６】
各計算機１０のＡＰログ制御部４３は、前述のＡＰログ制御処理のステップ７３１において、再現照合処理を行う。即ち、状態再現モードにおいて、ＡＰログ制御部４３が実行制御部からログを受信した場合、ＡＰログ制御部４３は、再現照合処理を行う。
【０１５７】
ステップ１１０１：状態再現制御処理のステップ１００７で処理を開始した実行部が、実行制御部により提供される機能を実行すると、ＡＰログ制御部４３は、実行により作成されるログを、実行制御部から受信する。ＡＰログ制御部４３は、受信されたログに対応する、ログ管理テーブル４７Ａ内のログを選択する。
【０１５８】
ステップ１１０２：ＡＰログ制御部４３は、ログ管理テーブル４７Ａの中で、ステップ１１０１で選択されたログの直前のログの照合状態が「ＯＫ」であるかを判定する。照合状態が「ＯＫ」であれば、ＡＰログ制御部４３は、システム状態が正常に再現されていると判断する。照合状態が「０」のままの場合、ＡＰログ制御部４３は、再現順序がログと異なっているため、再現処理エラーと判断し、エラー処理を行う。エラー処理は、すべての計算機に対して再現中止メッセージを送信する。エラー処理は更に、再現のリトライやユーザへの通知等を行う。本実施例では、ＡＰ管理ミドル５１がＯＳ３１のイベントを格納して処理することから、再現の順序が入れ替わる可能性がある。そのため、各計算機１０は、システム状態が正常に再現されているか否かを判定する。
【０１５９】
ステップ１１０３：ステップ１１０１で選択されたログの直前のログが外部通信ログ（ＣＯＭＭ）であれば、ＡＰログ制御部４３は、状態再現制御部４５へ再現継続要求を送信する。再現継続要求は、選択されたログの内容を含む。ここで、直前のログが外部通信ログであり正常に処理されているので、状態再現制御部４５は、後述の状態再現同期処理において、再現を進めることを示す再現継続要求メッセージを他計算機へ送信する。
【０１６０】
ステップ１１０４：ＡＰログ制御部４３は、ステップ１１０１で参照したログの直後のログが外部通信ログであるか判定する。直後のログが外部通信ログである場合、ＡＰログ制御部４３は、再現処理の同期ポイントであるため、次のステップ１１０５で、その外部通信ログの再現の直前に全計算機の状態再現の歩調をあわせる処理を行う。直後のログが外部通信ログでない場合、ＡＰログ制御部４３は、ステップ１１０９へ進む。
【０１６１】
ステップ１１０５：ＡＰログ制御部４３は、状態再現同期制御テーブル４９の同期リストにおいて、当該外部通信ログを検索し、その直前のログの再現状態を判定する。ＡＰログ制御部４３は、その再現状態が「１」になるまで処理を待つ。ＡＰログ制御部４３は、全計算機の同期リストに従って外部通信ログの順序性を確保しながら再現する必要があり、直前のログの再現状況を判定することで、当該外部通信ログの再現を待つ。
【０１６２】
ステップ１１０６：ＡＰログ制御部４３は、ステップ１１０１で判定したログの直後のログが、外部通信ログでありかつ再現同期チェックメッセージを示すか判定する。
【０１６３】
ステップ１１０７：ＡＰログ制御部４３は、Ｓｎａｐｓｈｏｔ制御テーブル４６のＣｏｏｒｄｉｎａｔｏｒ情報を読取り、自計算機がＣｏｏｒｄｉｎａｔｏｒであるか判定する。前述のＳｎａｐｓｈｏｔ同期処理において再現同期チェックメッセージの送信元はＣｏｏｒｄｉｎａｔｏｒであるため、Ｃｏｏｒｄｉｎａｔｏｒが再現同期チェックメッセージの送信を再現する。Ｃｏｏｒｄｉｎａｔｏｒが計算機ＡまたはＢである場合、ＡＰ管理ミドル５１が再現同期チェックメッセージの送信を再現する。再現同期チェックメッセージは、外部通信ログに含まれており、共通周期毎の制御処理の終了時を示す再現同期ポイントを示す。Ｃｏｏｒｄｉｎａｔｏｒが計算機Ｃである場合、システム状態再現部４１が再現同期チェックメッセージの送信を再現する。自計算機が非Ｃｏｏｒｄｉｎａｔｏｒである場合、ＡＰログ制御部４３は、ステップ１１０９へ進む。
【０１６４】
ステップ１１０８：ＡＰログ制御部４３は、状態再現制御部４５へ再現同期要求を送信する。再現同期要求は、選択されたログの内容を含む。
【０１６５】
ステップ１１０９：ＡＰログ制御部４３は、ログ管理テーブル４７Ａにおいて、ステップ１１０１で選択されたログの照合状態へ「ＯＫ」を設定する。これは、実行制御部から送られてきたログがログ管理テーブル４７Ａに存在し、その再現順序も正しいと判定されるためである。その後、ＡＰログ制御部４３は、このフローを終了し、ＡＰログ制御処理へ戻る。
【０１６６】
以上の再現照合処理によれば、各計算機１０は、状態再現モードにおいて、ＡＰログ制御部４３が再現により発生したログを実行制御部から受信した場合、ログ情報のうち受信されたログに対応するログを選択し、選択されたログの直前のログが照合済の外部通信ログであれば、選択されたログを再現済にするための再現継続要求メッセージを他計算機へ送信することができる。更に、各計算機は、選択されたログの直後のログが外部通信ログであれば、選択されたログの直前のログの再現を待って、選択されたログの再現を同期するための再現同期要求メッセージを他計算機へ送信することができる。
【０１６７】
図１９は、状態再現同期処理を示す。
【０１６８】
各計算機１０の状態再現制御部４５は、前述の状態再現制御処理のステップ１００８において状態再現同期処理を行う。
【０１６９】
ステップ１２０１：状態再現制御部４５は、要求を待つ。
【０１７０】
ステップ１２０２：状態再現制御部４５は、受信された要求が、前述の再現照合処理のステップ１１０８で送信される再現同期要求であるか判定する。
【０１７１】
ステップ１２０３：要求が再現同期要求であれば（Ｙ）、状態再現制御部４５は、実行制御部の処理を停止する。実行制御部の処理停止方法は、システム状態再現部４１との間にインタフェースを設けることで、実施する。インタフェースは、例えば、Ｕｎｉｘ  Ｄｏｍａｉｎ  ソケットなどで容易に実装可能である。
【０１７２】
ステップ１２０４：状態再現制御部４５は、他計算機に対して再現同期要求メッセージを送信する。
【０１７３】
ステップ１２０５：状態再現制御部４５は、他計算機から、再現同期要求メッセージに対する合意を示すＡＣＫの受信を待つ。
【０１７４】
ステップ１２０６：状態再現制御部４５は、再現同期要求に含まれているログを状態再現同期制御テーブル４９から探し、そのログの再現状態を「１」に設定する。
【０１７５】
ステップ１２０７：状態再現制御部４５は、ＡＰ管理ミドル５１または仮想化基盤７１の処理を開始し、アプリ６１と仮想計算機８１の実行を継続し、再現時刻までの再現を継続する。その後、状態再現制御部４５は、ステップ１２０１へ戻る。
【０１７６】
ステップ１２１１：要求が再現同期要求でなければ（Ｎ）、状態再現制御部４５は、再現継続要求メッセージを他計算機へ送信する。その後、状態再現制御部４５は、ステップ１２０１へ戻る。
【０１７７】
以上の状態再現同期処理によれば、各計算機１０は、再現同期要求に応じて、実行制御部の処理を停止させ、再現同期要求メッセージを他計算機へ送信し、実行制御部の処理を再開させることができる。これにより、各計算機１０は、他計算機の再現を待って、他計算機と同期することができる。また、各計算機１０は、再現継続要求に応じて再現継続要求メッセージを他計算機へ送信することができる。
【０１７８】
図２０は、状態再現同期受信処理を示す。
【０１７９】
状態再現制御部４５は、前述の状態再現制御処理のステップ１００５で生成されたプロセスを用いて、状態再現同期受信処理を行う。
【０１８０】
ステップ１３０１：状態再現制御部４５は、他計算機からの要求メッセージを待つ。要求メッセージは、再現同期要求メッセージと再現継続要求メッセージの何れかである。
【０１８１】
ステップ１３０２：状態再現制御部４５は、受信された要求メッセージが再現同期要求メッセージであるか判定する。
【０１８２】
ステップ１３０３：要求メッセージが再現同期要求メッセージであれば（Ｙ）、状態再現制御部４５は、再現同期要求メッセージから要求元の計算機識別子を取得し、外部通信ログテーブル４８Ａにおいて、要求元の計算機識別子を持つログを探す。
【０１８３】
ステップ１３０４：要求元の計算機識別子を持つログが存在し、かつログ管理テーブル４７Ａにおいて、その直前のログの照合状態が「０」であるかを判定する。
【０１８４】
ステップ１３０５：直前のログの照合状態が「０」であれば（Ｙ）、状態再現制御部４５は、直前のログの照合状態が「ＯＫ」になるまで待つことで、再現順序を守る。
【０１８５】
ステップ１３０６：状態再現制御部４５は、実行制御部の処理を停止することで、再現の歩調を他計算機に合わせる。
【０１８６】
ステップ１３０７：状態再現制御部４５は、状態再現同期制御テーブル４９において、再現同期要求メッセージに含まれているログを探し、そのログの再現状態を「１」に設定する。
【０１８７】
ステップ１３０８：状態再現制御部４５は、再現同期要求メッセージに対する合意を示すＡＣＫを、再現同期要求メッセージの送信元へ送信する。
【０１８８】
ステップ１３０９：状態再現制御部４５は、実行制御部の処理を再開する。その後、状態再現制御部４５は、ステップ１３０１へ戻る。
【０１８９】
ステップ１３１１：要求メッセージが再現同期要求メッセージでなければ（Ｎ）、状態再現制御部４５は、要求メッセージが再現継続要求メッセージであるか判定する。全計算機は、再現継続要求メッセージを用いて、再現の正しさを確認し合いながら、再現していくことで、再現の健全性を確保する。
【０１９０】
ステップ１３１２：要求メッセージが再現継続要求メッセージであれば（Ｙ）、状態再現制御部４５は、状態再現同期制御テーブル４９において、再現継続要求メッセージに含まれているログを探し、そのログの再現状態を「１」に設定する。その後、状態再現制御部４５は、ステップ１３０１へ戻る。
【０１９１】
ステップ１３１３：要求メッセージが再現継続要求メッセージでなければ（Ｎ）、状態再現制御部４５は、再現処理エラーと判断し、エラー処理を行う。
【０１９２】
以上の状態再現同期受信処理によれば、各計算機１０は、他計算機からの再現同期要求メッセージに応じて、要求されたログ以前の照合を待って、ＡＣＫを返すことができる。また、各計算機１０は、他計算機からの再現継続要求メッセージに応じて、要求されたログ以前の照合を待って、ＡＣＫを返すことができる。
【０１９３】
計算機システムは、再現時刻の直前のＳｎａｐｓｈｏｔとログを用いることで、複数の計算機の状態を迅速に再現することができる。許容時間に基づいてＳｎａｐｓｈｏｔ周期を決定することで、復元Ｓｎａｐｓｈｏｔによる実行部の復元から、再現時刻までの、再現に要する時間を許容時間以下に抑えることができる。Ｓｎａｐｓｈｏｔ同期処理と、Ｓｎａｐｓｈｏｔ同期受信処理と、Ｓｎａｐｓｈｏｔ作成処理とによれば、計算機システムの性能の低下を防ぐことができるとともに、複数の計算機のＳｎａｐｓｈｏｔの作成を同期させることができる。再現同期開始処理と、再現同期開始受信処理と、状態再現制御処理と、再現照合処理と、状態再現同期処理と、状態再現同期受信処理とによれば、複数の計算機の間の通信のログを用いて、複数の計算機の再現の歩調を合わせると共に、通信の発生順序を保証することができる。
【０１９４】
計算処理は、アプリ６１及び仮想計算機８１の処理等に対応する。第１計算機は、Ｃｏｏｒｄｉｎａｔｏｒの計算機等に対応する。第１計算処理は、制御アプリの処理等に対応する。作成同期処理は、Ｓｎａｐｓｈｏｔ同期処理等に対応する。作成処理は、Ｓｎａｐｓｈｏｔ作成処理等に対応する。記録処理は、外部通信ログ処理、ＡＰログ制御処理等に対応する。再現開始処理は、再現同期開始処理等に対応する。特定時刻は、再現時刻等に対応する。再現処理は、状態再現制御処理、再現照合処理、状態再現同期処理、状態再現同期受信処理等に対応する。作成条件は、ステップ３０１、３０２、３０５等の条件に対応する。制御計算機は、制御アプリを実行する計算機等に対応する。選択条件は、ステップ１０５の条件等に対応する。作成情報は、Ｓｎａｐｓｈｏｔ同期メッセージ等に対応する。復元スナップショット情報は、再現開始メッセージ、復元Ｓｎａｐｓｈｏｔ識別子等に対応する。順序情報は、同期リスト、同期リスト合意要求メッセージ等に対応する。再現同期情報は、再現同期要求メッセージ、再現継続要求メッセージ等に対応する。同期情報は、再現同期チェックメッセージ等に対応する。ミドルウェアは、システム状態再現部４１等に対応する。管理プログラムは、ＡＰ管理ミドル５１、仮想化基盤７１等に対応する。
【０１９５】
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲を上記構成に限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
【符号の説明】
【０１９６】
１０…計算機、  １１…演算装置、  １２…記憶装置、  １３…通信装置、  １４…通信装置、  ２１…内部ネットワーク、  ２２…外部ネットワーク、  ４１…システム状態再現部、  ５１…ＡＰ管理ミドル、  ６１…アプリ、  ７１…仮想化基盤、  ８１…仮想計算機
【図１】
0006577901.tif 000002
【図２】
0006577901.tif 000003
【図３】
0006577901.tif 000004
【図４】
0006577901.tif 000005
【図５】
0006577901.tif 000006
【図６】
0006577901.tif 000007
【図７】
0006577901.tif 000008
【図８】
0006577901.tif 000009
【図９】
0006577901.tif 000010
【図１０】
0006577901.tif 000011
【図１１】
0006577901.tif 000012
【図１２】
0006577901.tif 000013
【図１３】
0006577901.tif 000014
【図１４】
0006577901.tif 000015
【図１５】
0006577901.tif 000016
【図１６】
0006577901.tif 000017
【図１７】
0006577901.tif 000018
【図１８】
0006577901.tif 000019
【図１９】
0006577901.tif 000020
【図２０】
0006577901.tif 000021