(57)【特許請求の範囲】
【請求項１】
ホスト計算機と、
前記ホスト計算機に接続された正ストレージシステムと、
前記正ストレージシステムに接続された副ストレージシステムと、
前記ホスト計算機及び前記正ストレージシステムに接続された管理計算機と
を有し、
前記ホスト計算機は、整合性を維持するために不可分なデータのまとまりである不可分データを、アプリケーションを実行することにより生成し、前記不可分データを前記副ストレージシステムに送信し、
前記正ストレージシステムは、正ストレージ制御部を有し、
前記正ストレージ制御部が、
前記不可分データを受信し、前記受信した不可分データを格納し、
前記不可分データが所定のサイズに分割された複数のデータをそれぞれ含んだ複数のジャーナルを前記副ストレージシステムに送信し、
前記複数のジャーナルをそれぞれ送信したことを示すジャーナル情報を前記管理計算機に送信し、
前記副ストレージシステムは、副ストレージ制御部を有し、
前記副ストレージ制御部が、
前記複数のジャーナルを受信し、
前記複数のジャーナルがそれぞれ含む前記複数のデータを格納し、
前記管理計算機は、
前記正ストレージシステムから前記ジャーナル情報を受信するジャーナル情報受信部と、
前記ジャーナル情報に基づいて、前記不可分データに対応する全てのジャーナルが前記副ストレージシステムへ送信されたか否かを判断し、前記不可分データに対応する全てのジャーナルが前記副ストレージシステムへ送信されたと判断した場合に、前記不可分データに対応する全てのジャーナルが送信された時刻を、前記不可分データについて回復することのできるデータが格納されている時刻を示すデータ回復可能時刻として格納するデータ損失期間算出部と
を有する
計算機システム。
【請求項２】
前記ホスト計算機は、前記不可分データのデータサイズを含む不可分データ情報を前記管理計算機に送信する不可分データ情報送信部を有し、
前記管理計算機は、
前記ホスト計算機から前記不可分データ情報を受信する不可分データ情報受信部と、
前記不可分データ情報に基づいて、前記不可分データが分割されるジャーナルの数を算出する不可分データジャーナル数算出部と
を更に有し、
前記データ損失期間算出部は、前記ジャーナル情報に基づいて、算出された前記不可分データが分割されるジャーナルの数のジャーナルが送信されたことを特定することにより、前記不可分データに対応する全てのジャーナルが送信されたと判断する
請求項１に記載の計算機システム。
【請求項３】
前記不可分データ情報は、前記不可分データを前記正ストレージシステムに格納した不可分データ格納時刻を含み、
前記データ損失期間算出部は、前記不可分データ情報の前記不可分データ格納時刻と、前記データ回復可能時刻との差分であるデータ損失期間を算出し、
前記管理計算機は、前記データ損失期間に関する情報を表示するデータ損失期間表示部を更に有する
請求項２に記載の計算機システム。
【請求項４】
前記正ストレージシステムは、前記不可分データの格納先となる正ボリュームを有し、
前記副ストレージシステムは、前記複数のジャーナルがそれぞれ含む前記複数のデータの格納先となる副ボリュームを有し、
前記ホスト計算機が１又は複数存在し、前記１又は複数のホスト計算機が、１又は複数のアプリケーションを実行するようになっており、
前記データ損失期間表示部は、アプリケーション単位又はボリューム単位で、アプリケーション又はボリュームに関連する複数の前記不可分データについての前記データ損失期間を時系列に表示する
請求項３に記載の計算機システム。
【請求項５】
前記正ストレージ制御部は、前記複数のジャーナルのうち前記副ストレージシステムへ送信したジャーナルを前記正ストレージシステムから削除し、
前記管理計算機に送信されるジャーナル情報は、前記削除されたジャーナルに対応するジャーナル情報である
請求項１に記載の計算機システム。
【請求項６】
前記正ストレージ制御部は、前記不可分データに対応する最後のジャーナルが前記副ストレージシステムに送信されたときに、前記不可分データの全てのジャーナルを送信したことを示すジャーナル情報を前記管理計算機に送信し、
前記データ損失期間算出部は、前記ジャーナル情報に基づいて、前記不可分データに対応する全てのジャーナルが送信された時刻を、前記データ回復可能時刻として格納する
請求項１に記載の計算機システム。
【請求項７】
前記アプリケーションは、データベースシステムを利用するアプリケーションであり、前記不可分データは、或るトランザクションにおいて更新された全ての内容についてのデータである
請求項１に記載の計算機システム。
【請求項８】
前記アプリケーションは、ファイルシステムを利用するアプリケーションであり、前記不可分データは、前記ファイルシステムにおける１つのファイルのデータである
請求項１に記載の計算機システム。
【請求項９】
前記ホスト計算機は、
前記不可分データを、所定のサイズの複数のライトデータに分割して前記正ストレージシステムへ送信し、前記不可分データの最後のライトデータについての第１ハッシュ値を算出し、前記第１ハッシュ値と、前記不可分データを構成する全てのライトデータを前記正ストレージシステムへ送信した時刻とを含む不可分データ情報を前記管理計算機に送信する管理エージェント部
を有し、
前記正ストレージ制御部は、
前記ホスト計算機からのライトデータを含んだジャーナルを作成し、
前記ジャーナルが含むライトデータの第２ハッシュ値を算出し、
前記ジャーナルが前記副ストレージシステムに送信された場合に、前記ジャーナルが含むライトデータの前記第２ハッシュ値を含む前記ジャーナル情報を前記管理計算機に送信し、
前記データ損失期間算出部は、前記不可分データ情報の前記第１ハッシュ値と、前記ジャーナル情報の前記第２ハッシュ値とが一致する場合に、その時点の時刻を、前記不可分データについて回復することのできるデータが格納されている時刻を示す前記データ回復可能時刻として格納する
請求項１に記載の計算機システム。
【請求項１０】
前記不可分データ情報は、前記不可分データを前記正ストレージシステムに格納した不可分データ格納時刻を含み、
前記データ損失期間算出部は、前記不可分データ情報の前記不可分データ格納時刻と、前記データ回復可能時刻との差分であるデータ損失期間を算出し、
前記管理計算機は、前記データ損失期間に関する情報を表示するデータ損失期間表示部を更に有する
請求項９に記載の計算機システム。
【請求項１１】
整合性を維持するために不可分なデータのまとまりでありホスト計算機がアプリケーションを実行することにより生成した不可分データを前記ホスト計算機から受信し、前記受信した不可分データを格納し、前記不可分データが所定のサイズに分割された複数のデータをそれぞれ含んだ複数のジャーナルを、前記複数のジャーナルを受信しそれら複数のジャーナルがそれぞれ含む複数のデータを格納するようになっている副ストレージシステムに送信し、且つ、前記複数のジャーナルをそれぞれ送信したことを示すジャーナル情報を管理計算機に送信するようになっている正ストレージシステム、から、前記ジャーナル情報を受信し、
前記ジャーナル情報に基づいて、前記不可分データに対応する全てのジャーナルが前記副ストレージシステムへ送信されたか否かを判断し、前記不可分データに対応する全てのジャーナルが前記副ストレージシステムへ送信されたと判断した場合に、前記不可分データに対応する全てのジャーナルが送信された時刻を、前記不可分データについて回復することのできるデータが格納されている時刻を示すデータ回復可能時刻として格納する
非同期レプリケーション管理方法。
【請求項１２】
前記不可分データのデータサイズを含む不可分データ情報を前記ホスト計算機から受信し、
前記不可分データ情報に基づいて、前記不可分データが分割されるジャーナルの数を算出し、
前記ジャーナル情報に基づいて、算出された前記不可分データが分割されるジャーナルの数のジャーナルが送信されたことを特定することにより、前記不可分データに対応する全てのジャーナルが送信されたと判断する
請求項１１に記載の非同期レプリケーション管理方法。
【請求項１３】
前記不可分データ情報は、前記不可分データを前記正ストレージシステムに格納した不可分データ格納時刻を含んでおり、
前記不可分データ情報の前記不可分データ格納時刻と、前記データ回復可能時刻との差分であるデータ損失期間を算出し、
前記データ損失期間に関する情報を表示する
請求項１２に記載の非同期レプリケーション管理方法。
【請求項１４】
アプリケーション単位、又はボリューム単位で、アプリケーション又はボリュームに関連する複数の前記不可分データについての前記データ損失期間を時系列に表示し、
前記正ストレージシステムは、前記不可分データの格納先となる正ボリュームを有しており、
前記副ストレージシステムは、前記複数のジャーナルがそれぞれ含む前記複数のデータの格納先となる副ボリュームを有しており、
前記ホスト計算機が１又は複数存在し、前記１又は複数のホスト計算機が、１又は複数のアプリケーションを実行するようになっている、
請求項１３に記載の非同期レプリケーション管理方法。
【請求項１５】
前記受信したジャーナル情報は、前記複数のジャーナルのうち前記副ストレージシステムへ送信したジャーナルを削除するようになっている前記正ストレージシステムによって削除されたジャーナルに対応するジャーナル情報である
請求項１１に記載の非同期レプリケーション管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、正ストレージシステムへのデータの書込みと非同期でそのデータを正ストレージシステムから副ストレージシステムへレプリケーションする非同期レプリケーションに関する。
【背景技術】
【０００２】
非同期レプリケーションが行われる計算機システムにおいては、正ストレージシステムが有する正ボリュームにデータが書き込まれてから、副ストレージシステムの有する副ボリュームへのレプリケーションが完了するまでに遅延期間が発生する。このため、正ストレージシステムにおいて障害が発生し、副ストレージシステムが正ストレージシステムに代わって稼働を開始する際は、障害発生時点から遡って、遅延期間の間に正ボリュームへ書き込まれたデータについては、未だ副ボリュームへレプリケーションが完了していないので、このデータは損失されることとなる。計算機システムの管理者は、障害時にどの程度の期間のデータが損失されるかを把握し、この期間を短くすべくストレージシステムの性能を増強したり、ストレージシステムの利用者に対して、この期間をある一定期間以内に収めることを約束したりといった対策を講じる必要がある。ここで、データが損失される期間を「データ損失期間」と呼ぶ。【０００３】
特許文献１には、ジャーナルと呼ばれるデータの断片毎にデータ損失期間を計測する技術が開示されている。【０００４】
特許文献１によれば、正ストレージシステムは、副ストレージシステムへレプリケーションすべきデータを、ジャーナルと呼ばれるデータの断片に分割し、正ジャーナルボリュームに保存する。正ジャーナルボリュームに保持されたジャーナルは、作成された順に、順次副ストレージシステムが有する副ジャーナルボリュームへとレプリケーションされる。副ジャーナルボリュームにレプリケーションされたジャーナルは、順次、元のデータの断片へ復元され、副ボリュームに書き込まれる。【０００５】
特許文献１によれば、ジャーナルに、このジャーナルが正ジャーナルボリュームへ書き込まれた時刻が付与され、データ損失期間は、このジャーナルの副ジャーナルボリュームへのレプリケーションが完了した時刻、またはこのジャーナルから復元されたデータの副ボリュームへの書き込みが完了した時刻から、このジャーナルが正ジャーナルボリュームへ書き込まれた時刻を減算した値である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１９３２０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、特許文献１によれば、１つのジャーナルに含まれるデータが副ボリュームへレプリケーションし終わるまでの期間が、データ損失期間である。特許文献１のデータ損失期間は、データを損失する時間の悪化傾向を計算機システムの管理者が把握し、対策を講じるか否かを判断する指標としては有用ではある。しかしながら、以下に述べる理由により、特許文献１のデータ損失時間は、アプリケーションの利用者に対して、データが損失される期間が一定期間内であることを約束するための指標として使用できるものではない。【０００８】
正ストレージシステムの正ボリュームに書き込まれるデータは、多くの場合、正ストレージシステムに接続されたホスト計算機上で動作するアプリケーションプログラム（以下、アプリケーション）が使用するデータである。アプリケーションが使用するデータは、一般に、或るデータの全体が揃って初めて整合性を維持できる性質を持っており、このデータの一部でも欠損した場合には、整合性が維持されない。このために、データの一部でも欠損した場合には、整合性を維持するために、そのデータの全体を破棄する必要がある。ここで、このような性質を持つデータを「不可分データ」と呼ぶ。【０００９】
不可分データのサイズは、固定長であるジャーナルのサイズに比べて大きい場合が多い。このように、不可分データがジャーナルのサイズに比べて大きい場合には、例えば、正ストレージシステムにおいて、不可分データは、複数のジャーナルに分割されて、正ジャーナルボリュームへと書き込まれる。【００１０】
ここで、１つの不可分データに基づく複数のジャーナルの全てが副ジャーナルボリュームへレプリケーションされる以前に、障害が発生した場合を考える。この場合、不可分データが部分的に副ボリュームへレプリケーションされた状態となる。この障害の発生後、副ストレージシステムに接続された副ボリュームでアプリケーションの稼働を継続するためには、このような部分的にレプリケーションされた不可分データについては、整合性を維持するために破棄しなければならない。このため、アプリケーションの利用者からみた実際のデータ損失期間は、障害発生時点から、不可分データの全てのジャーナルの書き込みが完了するまでの期間を遡った期間であり、特許文献１における各ジャーナルについてのデータ損失期間よりも長い期間となってしまう。このため、特許文献１におけるデータ損失期間は正しくない値となり、アプリケーションの利用者にデータが損失される期間が一定期間内であることを約束するといった目的で使用することはできない。【００１１】
そこで、本発明は、データ損失期間を示す指標として適切な情報を管理することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
正ストレージシステムが、整合性を維持するために不可分なデータのまとまりでありホスト計算機がアプリケーションを実行することにより生成した不可分データをホスト計算機から受信し、受信した不可分データを格納する。正ストレージシステムは、不可分データが所定のサイズに分割された複数のデータをそれぞれ含んだ複数のジャーナルを副ストレージシステムに送信する。また、正ストレージシステムは、複数のジャーナルをそれぞれ送信したことを示すジャーナル情報を管理計算機に送信する。管理計算機が、正ストレージシステムからジャーナル情報を受信し、そのジャーナル情報に基づいて、不可分データに対応する全てのジャーナルが副ストレージシステムへ送信されたか否かを判断する。管理計算機は、その判断結果が真の場合に、不可分データに対応する全てのジャーナルが送信された時刻を、不可分データについて回復することのできるデータが格納されている時刻を示すデータ回復可能時刻として格納する。
【発明の効果】
【００１３】
アプリケーションで使用されるデータについて、アプリケーションでの整合性を維持するために、データが損失される期間を示す指標として適切な情報（例えば、データ回復時点の時刻）を管理することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１の概要を説明する図である。
【図２】図２は、実施例１に係る計算機システムの構成図である。
【図３】図３は、実施例１に係るホスト計算機の構成図である。
【図４】図４は、実施例１に係る正ストレージシステムの構成図である。
【図５】図５は、実施例１に係る副ストレージシステムの構成図である。
【図６】図６は、実施例１に係る管理計算機の構成図である。
【図７】図７は、実施例１に係る滞留ジャーナル数テーブルの構成図である。
【図８】図８は、実施例１に係るデータ損失期間テーブルの構成図である。
【図９】図９は、実施例１に係る管理エージェント処理のフローチャートである。
【図１０】図１０は、実施例１に係るジャーナル情報送信処理のフローチャートである。
【図１１】図１１は、実施例１に係る管理処理のフローチャートである。
【図１２】図１２は、実施例１に係る不可分データジャーナル数算出処理のフローチャートである。
【図１３】図１３は、実施例１に係るデータ損失期間算出処理のフローチャートである。
【図１４】図１４は、実施例１に係るデータ損失期間表示画面の構成図である。
【図１５】図１５は、実施例２に係る管理計算機の構成図である。
【図１６】図１６は、実施例２に係るジャーナルハッシュテーブルの構成図である。
【図１７】図１７は、実施例２に係る管理エージェント処理のフローチャートである。
【図１８】図１８は、実施例２に係るジャーナル情報送信処理のフローチャートである。
【図１９】図１９は、実施例２に係る管理処理のフローチャートである。
【図２０】図２０は、実施例２に係る不可分データ末尾ハッシュ値記録処理のフローチャートである。
【図２１】図２１は、実施例２に係るデータ損失期間算出処理のフローチャートである。
【発明を実施するための形態】
【００１５】
幾つかの実施例を、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１６】
なお、以後の説明では「ａａａテーブル」等の表現にて本発明の情報を説明する場合があるが、これら情報は、テーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「ａａａテーブル」等について「ａａａ情報」と呼ぶことがある。
【００１７】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Central  Processing  Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又は通信インターフェース装置（例えばポート）を用いながら行うため、処理の主語がプロセッサとされても良い。プログラムを主語として説明された処理は、プロセッサを含む装置が行う処理としても良い。また、プロセッサが行う処理の一部又は全部を行うハードウエア回路を含んでも良い。コンピュータプログラムは、プログラムソースから装置にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアであっても良い。
【実施例１】
【００１８】
まず、実施例１に係る計算機システムについて説明する。【００１９】
図１は、実施例１の概要を説明する図である。【００２０】
アプリケーションプログラム（アプリケーション）１２１を実行するホスト計算機１００は、アプリケーションで使用するデータ（不可分データＡ、不可分データＢ）を、正ストレージシステム３００の正ボリューム３６０に格納する。【００２１】
正ストレージシステム３００は、正ボリューム３６０に格納された不可分データを、所定のサイズのジャーナルに分割して、正ジャーナルボリューム３７０に格納する。図１の例では、不可分データＡは、ジャーナルＡ−１、Ａ−２、Ａ−３に分割され、不可分データＢは、ジャーナルＢ−１、Ｂ−２に分割されて、正ジャーナルボリューム３７０に格納される。なお、本実施例に係る計算機システムでは、１つの不可分データから作成されるジャーナルが必ず排他的に正ジャーナルボリューム３７０に書込まれる、すなわち、１つの不可分データから作成される全てのジャーナルが正ジャーナルボリューム３７０上に連続して書き込まれることが保証されているものとする。【００２２】
正ストレージシステム３００は、正ジャーナルボリューム３７０に格納されているジャーナルを、順次広域ネットワーク３０を介して、副ストレージシステム４００に送信する。副ストレージシステム４００は、受信したジャーナルを副ジャーナルボリューム４４０に格納する。【００２３】
副ストレージシステム４００は、副ジャーナルボリューム４４０に格納されたジャーナルを、順次、元のデータの一部に復元し、副ボリューム４５０に書込む。このようにして、副ストレージシステム４００の副ボリューム４５０には、正ストレージシステム３００の正ボリューム３６０のデータがレプリケーションされることとなる。【００２４】
管理計算機２００の不可分データ情報受信部２２２は、ホスト１００から、アプリケーション１２１が正ストレージ３６０に書き込む不可分データに関する情報（不可分データ情報：例えば、正ボリューム３６０への不可分データの書き込み完了時刻、不可分データのサイズ）を受信する。また、管理計算機２００のジャーナル情報受信部２２４は、正ストレージシステム３００から、送信されたジャーナルに関する情報（ジャーナル情報）を受信する。管理計算機２００の不可分データジャーナル数算出部２２３は、不可分データ情報受信部２２２から不可分データのサイズを取得し、そのサイズに基づいて、その不可分データが分割されるジャーナルの数を算出し、このジャーナル数と、不可分データの正ボリューム３６０への書き込み完了時刻とを滞留ジャーナル数テーブル２３１の先頭へ格納する。管理計算機２００のデータ損失期間算出部２２５は、ジャーナル情報受信部２２４からジャーナル情報を取得した旨の通知を受け、滞留ジャーナル数テーブル２３１の末尾のレコードの滞留ジャーナル数２３１ｂの値（滞留ジャーナル数）を１減算する。また、データ損失期間算出部２２５は、そのレコードの滞留ジャーナル数が０となった場合には、１つの不可分データから分割された複数のジャーナルの全てを副ストレージシステム４００に送信したことを意味しているので、その時点の時刻から、このレコードの書込み完了時刻２３１ａの時刻を減算した値をデータ損失期間として、データ損失期間テーブル２３２に格納する。データ損失期間表示部２２６は、例えば、ユーザ操作に応じて、データ損失期間テーブル２３２からデータ損失期間を取得し、データ損失期間に関する情報をデータ損失期間情報画面５００（図１４参照）に表示する。【００２５】
実施例１に係る計算機システムによると、不可分データに対応する全てのジャーナルを副ストレージシステム４００に格納された時刻に基づいて、不可分データに対するデータ損失期間を算出することができる。不可分データに対するデータ損失期間は、アプリケーションにおいて、整合性を維持する際にデータが損失される期間と一致するので、アプリケーションの使用者に対して、データが損失される期間が一定期間内であることを約束する指標として適切である。【００２６】
図２は、実施例１に係る計算機システムの構成図である。【００２７】
計算機システムは、ホスト計算機（以下、ホストという）１００と、管理計算機２００と、正ストレージシステム３００と、副ストレージシステム４００とを有する。ホスト１００と、管理計算機２００と、正ストレージシステム２００とは、管理用ネットワーク１０を介して接続されている。ホスト１００と、正ストレージシステム３００は、ストレージエリアネットワーク（ＳＡＮ）２０を介して接続されている。正ストレージシステム３００と、副ストレージシステム４００とは、広域ネットワーク３０を介して接続されている。広域ネットワーク３０は、例えば、TCP/IPネットワークであっても良く、ファイバーチャネルによるネットワークであっても良い。【００２８】
図３は、実施例１に係るホスト計算機の構成図である。【００２９】
ホスト１００は、ＣＰＵ（Central Processing Unit）１１０と、メモリ１２０と、ＳＡＮポート１３０と、ＬＡＮポート１４０とを有する。ＣＰＵ１１０と、メモリ１２０と、ＳＡＮポート１３０と、ＬＡＮポート１４０とは、内部バスを介して通信可能に接続されている。【００３０】
ＣＰＵ１１０は、メモリ１２０に格納された各種プログラムを実行することにより、各種処理を実行する。メモリ１２０は、各種プログラムや、各種情報を記憶する。本実施例では、メモリ１２０は、アプリケーションプログラム（アプリケーション）１２１、管理エージェントプログラム１２２を記憶する。アプリケーションプログラム１２１は、所定の業務処理を実行し、業務処理により生成されたデータを正ストレージシステム３００の正ボリューム３６０に書込む（具体的には、ホスト１００が、正ボリューム３６０を指定したライト要求を正ストレージシステム３００に送信する）。ここで、アプリケーションプログラム１２１は、整合性を維持する上で不可分である内容をまとめたデータ（不可分データ）を生成する。管理エージェントプログラム１２２は、アプリケーション１２１による不可分データの正ボリューム３６０への書込みを監視し、不可分データ情報を管理計算機２００に通知する。管理エージェントプログラム１２２による処理の詳細については、後述する。なお、管理エージェントプログラム１２２がＣＰＵ１１０に実行されることにより構成される機能部が、管理エージェント部に相当する。なお、管理エージェント部を、ＣＰＵ１１０と異なる別のハードウエアで実現するようにしても良い。【００３１】
ＳＡＮポート１３０は、ストレージエリアネットワーク２０を介してホスト１００を他の装置に接続するためのインタフェースデバイスである。ＬＡＮポート１４０は、管理用ネットワーク１０を介してホスト１００を他の装置に接続するためのインタフェースデバイスである。【００３２】
図４は、実施例１に係る正ストレージシステムの構成図である。【００３３】
正ストレージシステム３００は、ＣＰＵ３１０と、メモリ３２０と、ＳＡＮポート３３０と、ＬＡＮポート３４０と、ＬＡＮポート３５０と、正ボリューム３６０と、正ジャーナルボリューム３７０とを有する。ＣＰＵ３１０と、メモリ３２０と、ＳＡＮポート３３０と、ＬＡＮポート３４０と、ＬＡＮポート３５０と、正ボリューム３６０と、正ジャーナルボリューム３７０とは、内部バスを介して通信可能に接続されている。【００３４】
ＣＰＵ３１０は、メモリ３２０に格納された各種プログラムを実行することにより、各種処理を実行する。メモリ３２０は、各種プログラムや、各種情報を記憶する。本実施例では、メモリ３２０は、ストレージ制御プログラム３２１、ジャーナル情報送信プログラム３２２を記憶する。ストレージ制御プログラム３２１は、ホスト１００からのライト要求に従い、データを正ボリューム３６０に書き込む。また、ストレージ制御プログラム３２１は、正ボリューム３６０に書き込んだデータを、非同期で副ボリューム４５０にレプリケーションする非同期レプリケーション処理を制御する。非同期レプリケーション処理では、例えば、ストレージ制御プログラム３２１は、正ボリューム３６０に書き込んだデータ（正確にはそのデータの複製）を含んだジャーナルを正ジャーナルボリューム３７０に書き込む。ここで、ストレージ制御プログラム３２１がＣＰＵ３１０に実行されることにより構成される機能部が、ストレージ制御部に相当する。なお、ストレージ制御部を、ＣＰＵ３１０と異なる別のハードウエアで実現するようにしても良い。ストレージ制御プログラム３２１は、正ジャーナルボリューム３７０から順次ジャーナルを取り出して、副ストレージシステム４００に送信し、副ストレージシステム４００へのジャーナルの送信が完了すると、そのジャーナルを正ジャーナルボリューム３７０から削除する。ジャーナル情報送信プログラム３２２は、送信されたジャーナルに関する情報（ジャーナル情報）を管理計算機２００に送信する。ジャーナル情報送信プログラム３２２は、正ジャーナルボリューム３７０のジャーナルが消去された場合、すなわち、そのジャーナルが送信された場合に、送信された（消去された）ジャーナルのジャーナル情報を管理計算機２００に送信する。ここで、ジャーナル情報送信プログラム３２２がＣＰＵ３１０に実行されることにより構成される機能部が、ジャーナル情報送信部に相当する。なお、ジャーナル情報送信部を、ＣＰＵ３１０と異なる別のハードウエアで実現するようにしても良い。【００３５】
ＳＡＮポート３３０は、ストレージエリアネットワーク２０を介して正ストレージシステム２００を他の装置（例えば、ホスト１００）に接続するためのインタフェースデバイスである。ＬＡＮポート３４０は、管理用ネットワーク１０を介して正ストレージシステム３００を他の装置（例えば、管理計算機２００）に接続するためのインタフェースデバイスである。ＬＡＮポート３５０は、広域ネットワーク３０を介して正ストレージシステム３００を他の装置（例えば、副ストレージシステム４００）に接続するためのインタフェースデバイスである。【００３６】
正ボリューム３６０は、例えば、ＨＤＤ（Hard Disk Drive）等の記憶デバイスの記憶領域により構成されるボリュームであり、ホスト１００のアプリケーションプログラム１２１に使用されるデータ（例えば、生成されたデータ）が格納される。正ジャーナルボリューム３７０は、例えば、ＨＤＤ等の記憶デバイスの記憶領域により構成されるボリュームであり、正ボリューム３６０に書き込まれたデータに対応するジャーナルが格納される。ジャーナルは、データと管理情報とを含む。データは、正ボリューム３６０に書き込まれたデータの複製である。管理情報は、そのデータに関する情報を含み、例えば、正ボリューム３６０におけるデータの書込み先アドレス（例えばＬＢＡ（Logical  Block  Address））と、そのデータが書き込まれた順番を特定するための順番情報（例えば、シーケンシャル番号又はタイムスタンプ）とを含む。【００３７】
図５は、実施例１に係る副ストレージシステムの構成図である。【００３８】
副ストレージシステム４００は、ＣＰＵ４１０と、メモリ４２０と、ＬＡＮポート４３０と、副ボリューム４４０と、副ジャーナルボリューム４５０とを有する。ＣＰＵ４１０と、メモリ４２０と、ＬＡＮポート４３０と、副ボリューム４４０と、副ジャーナルボリューム４５０とは、内部バスを介して通信可能に接続されている。【００３９】
ＣＰＵ４１０は、メモリ４２０に格納された各種プログラムを実行することにより、各種処理を実行する。メモリ４２０は、各種プログラムや、各種情報を記憶する。本実施例では、メモリ４２０は、ストレージ制御プログラム４２１を記憶する。ストレージ制御プログラム４２１は、正ボリューム３６０のデータを、非同期で副ボリューム４５０にレプリケーションする非同期レプリケーション処理を制御する。具体的には、例えば、ストレージ制御プログラム４２１は、正ストレージシステム３００から送信されるジャーナルを受信して副ジャーナルボリューム４５０に格納し、副ジャーナルボリューム４５０に格納されているジャーナルのうちの未反映のジャーナルを、未反映のジャーナルの順番情報から特定される順番通りに、副ジャーナルボリューム４５０に格納されたジャーナル中のデータを、副ボリューム４４０に反映する（書き込む）。つまり、ジャーナルの反映とは、正ストレージシステム３００からのジャーナル中のデータを副ボリューム４４０に書き込むことである。正ストレージシステム３００から副ストレージシステム４００へのジャーナルは、正ストレージシステム３００から副ストレージシステム４００へのライト要求（レプリケーション要求）に付随して送信されても良いし、副ストレージシステム４００から正ストレージシステム３００へのリード要求（ジャーナル要求）に応答して送信されても良い。【００４０】
ＬＡＮポート４３０は、広域ネットワーク３０を介して副ストレージシステム４００を他の装置（例えば、正ストレージシステム３００）に接続するためのインタフェースデバイスである。【００４１】
副ボリューム４４０は、例えば、ＨＤＤ等の記憶デバイスの記憶領域により構成されるボリュームであり、正ボリューム３６０のデータのレプリケーション（レプリケーションデータ）が格納される。副ジャーナルボリューム４５０は、例えば、ＨＤＤ等の記憶デバイスの記憶領域により構成されるボリュームであり、正ストレージシステム３００から送信されたジャーナルが格納される。【００４２】
図６は、実施例１に係る管理計算機の構成図である。【００４３】
管理計算機２００は、ＣＰＵ２１０と、メモリ２２０と、２次記憶装置２３０と、ＬＡＮポート２４０と、表示装置２５０とを有する。ＣＰＵ２１０と、メモリ２２０と、二次記憶装置２３０と、ＬＡＮポート２４０と、表示装置２５０とは、内部バスを介して通信可能に接続されている。【００４４】
ＣＰＵ２１０は、メモリ２２０に格納された各種プログラムを実行することにより、各種処理を実行する。メモリ２２０は、各種プログラムや、各種情報を記憶する。本実施例では、メモリ２２０は、管理プログラム２２１を記憶する。管理プログラム２２１に含まれるプログラムモジュールをＣＰＵ２１０が実行することにより、不可分データ情報受信部２２２と、不可分データジャーナル数算出部２２３と、ジャーナル情報受信部２２４と、データ損失期間算出部２２５と、データ損失期間表示部２２６との機能部が構成される。管理プログラム２２１の各機能部の処理動作については、後述する。なお、本実施例では、管理プログラム２２１に含まれるプログラムモジュールをＣＰＵ２１０が実行することにより、不可分データ情報受信部２２２と、不可分データジャーナル数算出部２２３と、ジャーナル情報受信部２２４と、データ損失期間算出部２２５と、データ損失期間表示部２２６との機能部を構成していたが、本発明はこれに限られず、例えば、少なくとも一部の機能部を、ＣＰＵ２１０と異なる別のハードウエアで実現するようにしても良い。【００４５】
二次記憶装置２３０は、例えば、ＨＤＤ等の記憶デバイスであり、各種情報を記憶する。本実施例では、二次記憶装置２３０は、滞留ジャーナル数テーブル２３１と、データ損失期間テーブル２３２とを記憶する。各テーブルの詳細については、後述する。【００４６】
ＬＡＮポート２４０は、管理用ネットワーク１０を介して管理計算機２００を他の装置（例えば、ホスト１００、正ストレージシステム３００等）に接続するためのインタフェースデバイスである。表示装置２５０は、例えば、液晶ディスプレイ等の表示装置であり、各種情報を表示する。【００４７】
図７は、実施例１に係る滞留ジャーナル数テーブルの構成図である。【００４８】
滞留ジャーナル数テーブル２３１は、不可分データ毎に、正ボリュームへの書き込み完了時刻２３１ａと、滞留ジャーナル数２３１ｂとのフィールド（カラム）を有するエントリを格納する。【００４９】
正ボリュームへの書き込み完了時刻２３１ａには、エントリに対応する不可分データの正ボリューム３６０への書込みが完了した時刻（又は、それに相当する時刻）が格納される。滞留ジャーナル数２３１ｂには、エントリに対応する不可分データに基づくジャーナルのうちで、副ストレージシステム４００に送信されずに残っている（滞留している）ジャーナルの数（滞留ジャーナル数）が格納される。【００５０】
図８は、実施例１に係るデータ損失期間テーブルの構成図である。【００５１】
データ損失期間テーブル２３２は、不可分データ毎に、副ボリュームへの書き込み完了時刻２３２ａと、データ損失期間２３２ｂとのフィールドを有するエントリを格納する。【００５２】
副ボリュームへの書き込み完了時刻２３２ａには、エントリに対応する不可分データの全てのジャーナルについての副ストレージシステム４００への書込みが完了した時刻（または、それに相当する時刻）が格納される。この全てのジャーナルについての副ストレージシステム４００への書込みが完了した時刻は、不可分データ（アプリケーションデータ）について回復することのできるデータが格納されている時刻を示すデータ回復可能時刻に相当する。データ損失期間２３２ｂには、エントリに対応する不可分データのレプリケーション中に障害が発生した場合に、この不可分データが損失されてしまうこととなる期間（データ損失期間）が格納される。【００５３】
次に、第１実施例に係る計算機システムにおける処理動作について説明する。【００５４】
図９は、実施例１に係る管理エージェント処理のフローチャートである。【００５５】
管理エージェント処理は、ホスト１００の管理エージェントプログラム１２２によって実行される処理である。【００５６】
管理エージェントプログラム１２２は、図示しない管理端末からの管理者による処理の終了要求があるまで、ループＡの処理（ステップＳ１１〜Ｓ１５）を繰り返し実行する。【００５７】
まず、管理エージェントプログラム１２２は、アプリケーションプログラム１２１の不可分データの書き込みが開始されたか否かを判断し（ステップＳ１１）、不可分データの書き込みが開始されていない場合（ステップＳ１１：ＮＯ）には、再びステップＳ１１を行う。【００５８】
一方、不可分データの書き込みが開始された場合（ステップＳ１１：ＹＥＳ）には、管理エージェントプログラム１２２は、アプリケーションプログラム１２１の不可分データの書き込みが完了したか否かを判断する（ステップＳ１２）。【００５９】
アプリケーションプログラム１２１の不可分データの書き込みが完了したか否かの判断は、具体的には、以下のように行われる。【００６０】
まず、アプリケーションプログラム１２１が、データベースシステムを利用するアプリケーションプログラムである場合を例に説明する。ここで、アプリケーションプログラム１２１が、データベースシステムを利用するアプリケーションプログラムである場合には、不可分データは、トランザクション中に更新された全てのデータとなる。トランザクション中に更新されるデータとは、例えば、オンラインショッピングアプリケーションの場合には、商品の代金を引き落としたことを示すデータと、商品を購入したことを示すデータとの組などが挙げられる。上記データの組の一方のみが失われた場合、もう一方を消去しなければ、商取引の整合性が維持できない。【００６１】
まず、管理エージェントプログラム１２２は、データベースシステムが出力するトランザクションログを定期的に監視し、トランザクションログのコミットレコードを参照し、最近にコミットされたトランザクションのトランザクション番号を取得する。【００６２】
次に、管理エージェントプログラム１２２は、取得したトランザクション番号が、過去に取得して記憶している最終トランザクション番号と異なるか否かを検知し、取得したトランザクション番号と、記憶している最終トランザクション番号とが異なる場合には、新たな不可分データが発生した、すなわち、前の不可分データの書き込みが完了したと判断する。なお、管理エージェントプログラム１２２は、取得したトランザクション番号を、新たな最終トランザクション番号として記憶する。また、管理エージェントプログラム１２２は、取得したトランザクション番号と、記憶している最終トランザクション番号とが異なることを検知した場合における、取得したトランザクション番号に対応するコミットから、その前のコミットまでの間に発生した更新レコードの全てをトランザクションログから取得して、各レコードの容量を合算して不可分データのサイズ（不可分データサイズ）として記憶する。これにより、アプリケーションプログラム１２１が、データベースシステムを利用するアプリケーションプログラムである場合において、不可分データの書き込みが完了したか否かを適切に判断することができる。【００６３】
次に、アプリケーションプログラム１２１が、Ｌｉｎｕｘ（登録商標）などのＯＳ上のファイルシステムを利用するアプリケーションプログラムである場合を例に説明する。アプリケーションプログラム１２１がファイルシステムを利用するアプリケーションプログラムである場合、不可分データはファイルシステム上のファイルとなる。ファイルシステム上のファイルは、ファイルのサイズなど、ファイルそのものに関する情報を格納するメタデータと、ファイルの内容である実データとから構成される。ファイルの実データが一部でも損失された場合、メタデータと実データとの不整合が生じ、ファイル全体としての整合性が維持できないため、ファイルシステムはファイル全体を消去する。同様に、ファイルのメタデータが失われた場合でも、ファイルシステムはファイルを認識できず、ファイル全体が消去された場合と同様の状態となる。【００６４】
管理エージェントプログラム１２２は、ＯＳのＷｒｉｔｅシステムコールの呼び出しを検知し、その際に指定されていたファイルを示すファイルディスクリプタと、ファイルに対する書き込み量とを組にして記憶する。ここで、そのファイルディスクリプタについて既に記憶している場合には、管理エージェントプログラム１２２は、そのファイルディスクリプタと組になっている書き込み量に対して、今回の呼び出しに対応する書き込み量を加算する。【００６５】
次いで、管理エージェントプログラム１２２は、ＯＳのｃｌｏｓｅシステムコールの呼び出しを検知し、その際に指定されたファイルディスクリプタと組になって記憶されている書き込み量を、不可分データサイズとして記憶する。この後、ＯＳに対してｓｙｎｃコマンドの実行が指示されて、メモリ１２０上にキャッシュされているデータ（不可分データ）が正ストレージシステム３００の正ボリューム３６０に反映されることとなる。【００６６】
管理エージェントプログラム１２２は、ｓｙｎｃコマンドの実行終了時点を検知し、不可分データの書き込みが完了したと判断する。これにより、アプリケーションプログラム１２１が、ファイルシステムを利用するアプリケーションプログラムである場合において、不可分データの書き込みが完了したか否かを適切に判断することができる。【００６７】
ステップＳ１２で、アプリケーションプログラム１２１の不可分データの書き込みが完了したと判断していない場合（ステップＳ１２：Ｎｏ）には、管理エージェントプログラム１２２は、再びステップＳ１２を行う。【００６８】
一方、アプリケーションプログラム１２１の不可分データの書き込みが完了したと判断した場合（ステップＳ１２：Ｙｅｓ）には、管理エージェントプログラム１２２は、その時点の現在時刻を取得し、この時刻を不可分データの正ボリューム３６０への書き込み完了時刻とする（ステップＳ１３）。【００６９】
次いで、管理エージェントプログラム１２２は、記憶している不可分データサイズを取得し（ステップＳ１４）、不可分データの正ボリューム３６０への書き込み完了時刻と、不可分データサイズとを含む不可分データ情報を管理計算機２００の不可分データ情報受信部２２２に送信する（ステップＳ１５）。【００７０】
この管理エージェント処理により、アプリケーションプログラム１２１の各不可分データについての不可分データ情報が管理計算機２００に送信されることとなる。【００７１】
図１０は、実施例１に係るジャーナル情報送信処理のフローチャートである。【００７２】
ジャーナル情報送信処理は、正ストレージシステム３００のジャーナル情報送信プログラム３２２によって実行される処理である。【００７３】
ジャーナル情報送信プログラム３２２は、管理者の管理端末から処理の終了要求があるまで、ループＢの処理（ステップＳ２１〜Ｓ２３）を繰り返し実行する。【００７４】
まず、ジャーナル情報送信プログラム３２２は、正ジャーナルボリューム３７０の次に消去されるジャーナル（次に副ストレージシステム４００に送信されるジャーナル）のジャーナルＩＤを記憶する（ステップＳ２１）。なお、正ジャーナルボリューム３７０にジャーナルが保存されていない場合には、ジャーナル情報送信プログラム３２２は、何もしない。【００７５】
次いで、ジャーナル情報送信プログラム３２２は、正ジャーナルボリューム３７０から記憶したジャーナルＩＤのジャーナルが消去されたか否かを判断する（ステップＳ２２）。この結果、正ジャーナルボリューム３７０から記憶したジャーナルＩＤのジャーナルが消去されていない場合（ステップＳ２２：Ｎｏ）には、ジャーナル情報送信プログラム３２２は、処理をステップＳ２１に進める。【００７６】
一方、正ジャーナルボリューム３７０から記憶したジャーナルＩＤのジャーナルが消去された場合（ステップＳ２２：Ｙｅｓ）には、ストレージ制御プログラム３２１がそのジャーナルＩＤのジャーナルを副ストレージシステム４００に送信して、正ジャーナルボリューム３７０から削除したことを意味しているので、ジャーナル情報送信プログラム３２２は、記憶したジャーナルＩＤを含むジャーナル情報を管理計算機２００のジャーナル情報受信部２２４に送信する（ステップＳ２３）。これにより、ジャーナルが副ストレージシステム４００に送信されたことを適切に判断し、そのジャーナルに対応するジャーナル情報を適切に管理計算機２００に送信することができる。【００７７】
このジャーナル情報送信処理により、副ストレージシステム４００に送信された各ジャーナルのジャーナルＩＤを含むジャーナル情報が管理計算機２００に送信されることとなる。【００７８】
図１１は、実施例１に係る管理処理のフローチャートである。【００７９】
管理処理は、管理計算機２００の管理プログラム２２１によって実行される処理である。【００８０】
管理プログラム２２１は、管理者の管理端末から処理の終了要求があるまで、ループＣの処理（ステップＳ３１〜Ｓ３４）を繰り返し実行する。【００８１】
まず、管理プログラム２２１は、不可分データ情報受信部２２２が新たに不可分データ情報を受信したか否かを判断する（ステップＳ３１）。この結果、不可分データ情報受信部２２２が新たに不可分データ情報を受信した場合（ステップＳ３１：Ｙｅｓ）には、管理プログラム２２１は、不可分データジャーナル数算出部２２３による不可分データジャーナル数算出処理（図１２参照）を実行させる（ステップＳ３２）。この不可分データジャーナル数算出処理によると、不可分データに基づいて生成されたジャーナルの数が算出されて、滞留ジャーナル数テーブル２３１に登録される。【００８２】
一方、不可分データ情報受信部２２２が新たに不可分データ情報を受信していない場合（ステップＳ３１：Ｎｏ）、又は、不可分データジャーナル数算出処理が終了した場合には、管理プログラム２２１は、ジャーナル情報受信部２２４が新たにジャーナル情報を受信したか否かを判断する（ステップＳ３３）。【００８３】
この結果、ジャーナル情報受信部２２４が新たにジャーナル情報を受信した場合（ステップＳ３３：Ｙｅｓ）には、管理プログラム２２１は、データ損失期間算出部２２５によるデータ損失期間算出処理（図１３参照）を実行させる（ステップＳ３４）。【００８４】
一方、ジャーナル情報受信部２２４が新たにジャーナル情報を受信していない場合（ステップＳ３３：Ｎｏ）、又は、データ損失期間算出処理が終了した場合には、管理プログラム２２１は、処理をステップＳ３１に進める。【００８５】
図１２は、実施例１に係る不可分データジャーナル数算出処理のフローチャートである。【００８６】
不可分データジャーナル数算出処理は、図１１のステップＳ３２に対応する処理であり、管理計算機２００の管理プログラム２２１の不可分データジャーナル数算出部２２３によって実行される。【００８７】
まず、不可分データジャーナル数算出部２２３は、不可分データ情報受信部２２２により受信された不可分データ情報中の不可分データサイズを、予め決まっているジャーナルのサイズ（ジャーナルサイズ）で除算することにより、不可分データに基づいて作成されるジャーナルの数（ジャーナル数）を算出する（ステップＳ４１）。【００８８】
次いで、不可分データジャーナル数算出部２２３は、受信された不可分データ情報中の不可分データの正ボリューム３６０への書込みが完了した時刻と、算出したジャーナル数とを含むレコードを作成し、そのレコードを滞留ジャーナル数テーブル２３１の先頭に追加し（ステップＳ４２）、処理を終了する。【００８９】
この不可分データジャーナル数算出処理によると、新たに正ボリューム３６０に書込まれた不可分データについてのジャーナル数を滞留ジャーナル数テーブル２３１に登録することができる。【００９０】
図１３は、実施例１に係るデータ損失期間算出処理のフローチャートである。【００９１】
データ損失期間算出処理は、図１１のステップＳ３４に対応する処理であり、管理計算機２００のデータ損失期間算出部２２５によって実行される。【００９２】
まず、データ損失期間算出部２２５は、滞留ジャーナル数テーブル２３１の末尾のレコードを取得し（ステップＳ５１）、そのレコードの滞留ジャーナル数２３１ｂの滞留ジャーナル数を１減算する（ステップＳ５２）。【００９３】
次いで、データ損失期間算出部２２５は、そのレコードの滞留ジャーナル数が０になったか否かを判断する（ステップＳ５３）。【００９４】
この結果、そのレコードの滞留ジャーナル数が０になっていない場合（ステップＳ５３：Ｎｏ）には、そのレコードに対応する不可分データの全てのジャーナルについての副ストレージシステム４００への送信が完了していないことを示しているので、データ損失期間算出部２２５は、処理を終了する。【００９５】
一方、そのレコードの滞留ジャーナル数が０になっている場合（ステップＳ５３：Ｙｅｓ）には、そのレコードに対応する不可分データの全てのジャーナルについての副ストレージシステム４００への送信が完了していることを示しているので、データ損失期間算出部２２５は、その時点の現在時刻を、不可分データの副ボリューム４５０への書込み完了時刻とする（ステップＳ５４）。【００９６】
次いで、データ損失期間算出部２２５は、不可分データの副ボリューム４５０への書込み完了時刻から、滞留ジャーナル数テーブル２３１から取得したレコードの正ボリュームへの書き込み完了時刻２３１ａに格納されている不可分データの正ボリューム３６０への書込み完了時刻を減算し、得られた期間をその不可分データについてのデータ損失期間とする（ステップＳ５５）。【００９７】
次いで、データ損失期間算出部２２５は、不可分データの副ボリュームへの書込み完了時刻と、データ損失期間とを含むレコードを作成し、そのレコードをデータ損失期間テーブル２３２に追加し（ステップＳ５６）、滞留ジャーナル数テーブル２３１の末尾のレコードを削除し（ステップＳ５７）、処理を終了する。【００９８】
このデータ損失期間算出処理によると、送信したジャーナルの数に基づいて、不可分データに対応する全てのジャーナルが送信されたことを適切に判断することができる。また、不可分データの副ボリュームへの書込み完了時刻と、各不可分データについてのデータ損失期間とをデータ損失期間テーブル２３２に蓄積することができる。これにより、不可分データについての副ボリュームへの書込み完了時刻と、各不可分データについてのデータ損失期間とを把握することができるようになる。【００９９】
図１４は、実施例１に係るデータ損失期間表示画面の構成図である。【０１００】
データ損失期間表示画面５００は、管理計算機２００のデータ損失期間表示部２２６が、データ損失期間テーブル２３２に基づいて、表示装置２５０に表示される画面の一例である。【０１０１】
データ損失期間表示画面５００は、データ損失期間推移表示領域５１０と、表示単位選択領域５２０と、閉じるボタン５３０とを含む。【０１０２】
データ損失期間推移表示領域５１０には、表示単位選択領域５２０で選択された表示単位でデータ損失期間の推移を表示する領域である。データ損失期間推移表示領域５１０には、例えば、データ損失期間表示部２２６により、データ損失期間テーブル２３２に基づいて、横軸に不可分データの副ボリュームへの書込み完了時刻を取り、縦軸にデータ損失期間を取ったグラフ（例えば、折れ線グラフ）が表示される。ここで、表示単位としては、例えば、１つの正ボリューム３６０に格納される不可分データを単位として１本の線を表示するボリューム単位表示や、１つのアプリケーションに関する不可分データを単位として１本の線として表示するアプリケーション単位表示や、１つのレプリケーショングループに属する複数のボリュームに関する不可分データを単位として１本の線として表示するレプリケーショングループ単位表示等がある。図１４に示す例では、データ損失期間推移表示領域５１０には、アプリケーション単位表示が指定されている場合のグラフが表示されており、アプリケーションＡＰ１、ＡＰ２、及びＡＰ３毎に、各アプリケーションに関する不可分データについてデータ損失期間のグラフが表示されている。【０１０３】
ここで、ボリューム単位表示で表示を行うようにする場合には、管理エージェントプログラム１２２は、不可分データの書き込みの行われた正ボリュームＩＤを取得し、不可分データ情報にさらに正ボリュームＩＤを含めて管理計算機２００の管理プログラム２２１に送信する必要がある。また、管理計算機２００における滞留ジャーナル数テーブル２３１及びデータ損失期間テーブル２３２における各レコードに、対応する正ボリュームＩＤを管理するためのカラムを追加する必要がある。また、管理プログラム２１１は、不可分データ情報に含まれている正ボリュームＩＤについて、滞留ジャーナル数テーブル２３１及びデータ損失期間テーブル２３２に格納する必要がある。そして、データ損失期間表示部２２６は、同一の正ボリュームＩＤに対応付けられている不可分データに関するデータ損失期間を１つの線とするグラフを表示する。このように、ボリューム単位で表示を行うと、データ損失期間が特に悪化している正ボリュームを容易に特定することができる。【０１０４】
また、アプリケーション単位表示で表示を行うようにする場合には、管理エージェントプログラム１２２は、不可分データの書き込みを行ったアプリケーションＩＤと、書き込みの行われた正ボリュームＩＤとを取得し、不可分データ情報にさらにアプリケーションＩＤ及び正ボリュームＩＤを含めて管理計算機２００の管理プログラム２２１に送信する必要がある。また、管理計算機２００における滞留ジャーナル数テーブル２３１及びデータ損失期間テーブル２３２における各レコードに、対応するアプリケーションＩＤを管理するためのカラムを追加する必要がある。また、管理プログラム２１１は、不可分データ情報に含まれているアプリケーションＩＤについて、滞留ジャーナル数テーブル２３１及びデータ損失期間テーブル２３２に格納する必要がある。また、管理プログラム２１１は、アプリケーションのアプリケーションＩＤと、そのアプリケーションが使用しているボリュームのボリュームＩＤとの対応関係を予め取得しておく必要がある。この対応関係については、例えば、管理者による入力等に基づいて取得しても良い。そして、データ損失期間表示部２２６は、同一のアプリケーションＩＤに対応付けられている不可分データに関するデータ損失期間を１つの線とするグラフを表示する。このように、アプリケーション単位で表示を行うと、データ損失期間が特に悪化しているアプリケーションを容易に特定することができる。【０１０５】
表示単位選択領域５２０は、データ損失期間推移表示領域５１０に表示させる表示単位の選択を管理者から受け付けるため領域である。閉じるボタン５３０は、データ損失期間表示画面５００を閉じる指示を管理者から受け付けるためのボタンである。【０１０６】
次に、実施例２に係る計算機システムについて説明する。【０１０７】
実施例２に係る計算機システムは、１つの不可分データから作成されるジャーナルが必ず排他的に正ジャーナルボリューム３７０に書込まれることが保証されていない場合、すなわち、複数の不可分データから作成されるジャーナルが正ジャーナルボリューム３７０に混在して書き込まれる可能性がある場合であっても、各不可分データの副ボリュームへの書込み完了時刻を特定でき、各不可分データについてのデータ損失期間を適切に算出することができるように構成されている。【０１０８】
実施例２に係る計算機システムの構成は、基本的には、図２に示す実施例１に係る計算機システムの構成と同様である。以下、実施例１に係る計算機システムと違う点を中心に説明する。【０１０９】
図１５は、実施例２に係る管理計算機の構成図である。なお、実施例１に係る管理計算機と同様な部分については、同一の符号を付している。【０１１０】
実施例２に係る管理計算機２００の二次記憶装置２３０は、実施例１に係る滞留ジャーナル数テーブル２３１に代えて、ジャーナルハッシュテーブル２３３を記憶している。ジャーナルハッシュテーブル２３３の詳細については後述する。また、実施例２に係る管理計算機２００の管理プログラム２２１は、実施例１に係る不可分データジャーナル数算出部２２３に代えて、不可分データ末尾ハッシュ値記録部２２７を備えている。不可分データ末尾ハッシュ値記録部２２７の処理については、後述する。【０１１１】
図１６は、実施例２に係るジャーナルハッシュテーブルの構成図である。【０１１２】
ジャーナルハッシュテーブル２３３は、不可分データ毎に、正ボリュームへの書き込み完了時刻２３３ａと、不可分データ末尾ハッシュ値２３３ｂとのフィールドを有するエントリを格納する。【０１１３】
正ボリュームへの書き込み完了時刻２３３ａには、エントリに対応する不可分データの正ボリューム３６０への書き込みが完了した時刻が格納される。不可分データ末尾ハッシュ値２３３ｂには、エントリに対応する不可分データに基づいて生成される複数のジャーナルの中の末尾のジャーナルの基となる、不可分データ中のデータに基づくハッシュ値が格納される。【０１１４】
次に、実施例２に係る計算機システムの処理動作について説明する。【０１１５】
図１７は、実施例２に係る管理エージェント処理のフローチャートである。【０１１６】
管理エージェント処理は、ホスト１００の管理エージェントプログラム１２２によって実行される処理である。【０１１７】
管理エージェントプログラム１２２は、管理者の管理端末から処理の終了要求があるまで、ループＤの処理（ステップＳ６１〜Ｓ６６）を繰り返し実行する。【０１１８】
まず、管理エージェントプログラム１２２は、アプリケーションプログラム１２１の不可分データの書き込みが行われたか否かを判断し（ステップＳ６１）、不可分データの書き込みが行われていない場合（ステップＳ６１：ＮＯ）には、処理をステップＳ６３に進める。【０１１９】
一方、不可分データの書き込みが行われた場合（ステップＳ６１：ＹＥＳ）には、管理エージェントプログラム１２２は、書き込みが行われた不可分データの識別情報（ＩＤ）と、正ボリューム３６０へ書き込みを行う不可分データ中の所定の単位であるライトデータ（Ｗｒｉｔｅデータ）との組を記憶する（ステップＳ６２）。ここで、本実施例の正ストレージシステム３００では、このＷｒｉｔｅデータに対して、一つのジャーナルが生成される。なお、ステップＳ６２では、書き込みが行われた不可分データのＩＤについての組が既に記憶されている場合には、管理エージェントプログラム１２２は、その組については削除する。これにより、書き込みが行われた不可分データのＩＤと、その不可分データ中の最後に送信されたＷｒｉｔｅデータとの組が記憶されることとなる。【０１２０】
ステップＳ６３では、管理エージェントプログラム１２２は、不可分データの全体の書込みが完了したか否かを判断する（ステップＳ６３）。なお、アプリケーションプログラム１２１の不可分データの書み込みが完了したか否かの判断は、実施例１と同様な方法により実現できる。【０１２１】
この結果、アプリケーションプログラム１２１の不可分データの書き込みが完了したと判断していない場合（ステップＳ６３：Ｎｏ）には、管理エージェントプログラム１２２は、処理をステップＳ６１に進める。【０１２２】
一方、アプリケーションプログラム１２１の不可分データの書き込みが完了したと判断した場合（ステップＳ６３：Ｙｅｓ）には、管理エージェントプログラム１２２は、その時点の現在時刻を取得し、この時刻を不可分データの正ボリュームへの書き込み完了時刻とする（ステップＳ６４）。【０１２３】
次いで、管理エージェントプログラム１２２は、書き込み完了した不可分データのＩＤと組にされて保存されているＷｒｉｔｅデータに対応するハッシュ値を算出し、不可分データ末尾ハッシュ値とする（ステップＳ６５）。ここで、書き込み完了した不可分データのＩＤと組にされて保存されているＷｒｉｔｅデータは、不可分データについての末尾のジャーナルの基となるＷｒｉｔｅデータ（末尾Ｗｒｉｔｅデータ）である。【０１２４】
次いで、管理エージェントプログラム１２２は、不可分データの正ボリュームへの書き込み完了時刻と、不可分データ末尾ハッシュ値とを含む不可分データ情報を管理計算機２００の不可分データ情報受信部２２２に送信する（ステップＳ６６）。【０１２５】
この管理エージェント処理により、アプリケーションプログラム１２１の各不可分データのＩＤと、その不可分データの末尾Ｗｒｉｔｅデータのハッシュ値とを含む不可分データ情報が、管理計算機２００に送信されることとなる。【０１２６】
図１８は、実施例２に係るジャーナル情報送信処理のフローチャートである。【０１２７】
ジャーナル情報送信処理は、正ストレージシステム３００のジャーナル情報送信プログラム３２２によって実行される処理である。【０１２８】
ジャーナル情報送信プログラム３２２は、管理者の管理端末から処理の終了要求があるまで、ループＥの処理（ステップＳ７１〜Ｓ７５）を繰り返し実行する。【０１２９】
まず、ジャーナル情報送信プログラム３２２は、正ジャーナルボリューム３７０の次に消去されるジャーナル（次に副ストレージシステム４００に送信されるジャーナル）を記憶する（ステップＳ７１）。なお、正ジャーナルボリューム３７０にジャーナルが保存されていない場合には、ジャーナル情報送信プログラム３２２は、何もしない。【０１３０】
次いで、ジャーナル情報送信プログラム３２２は、正ジャーナルボリューム３７０から、記憶したジャーナルが消去されたか否かを判断する（ステップＳ７２）。この結果、正ジャーナルボリューム３７０から、記憶したジャーナルが消去されていない場合（ステップＳ７２：Ｎｏ）には、ジャーナル情報送信プログラム３２２は、処理をステップＳ７１に進める。【０１３１】
一方、正ジャーナルボリューム３７０から、記憶したジャーナルが消去された場合（ステップＳ７２：Ｙｅｓ）には、ジャーナル情報送信プログラム３２２は、記憶しているジャーナルをＷｒｉｔｅデータに復元し（ステップＳ７３）、復元したＷｒｉｔｅデータのハッシュ値を算出し、このハッシュ値をジャーナルハッシュ値とする（ステップＳ７４）。【０１３２】
次いで、ジャーナル情報送信プログラム３２２は、ジャーナルハッシュ値を含むジャーナル情報を管理計算機２００のジャーナル情報受信部２２４に送信する（ステップＳ７５）。【０１３３】
このジャーナル情報送信処理により、副ストレージシステム４００に送信されたジャーナルの基となるＷｒｉｔｅデータのハッシュ値を含むジャーナル情報が管理計算機２００に送信されることとなる。【０１３４】
図１９は、実施例２に係る管理処理のフローチャートである。【０１３５】
管理処理は、管理計算機２００の管理プログラム２２１によって実行される処理である。【０１３６】
管理プログラム２２１は、管理者の管理端末から処理の終了要求があるまで、ループＦの処理（ステップＳ８１〜Ｓ８４）を繰り返し実行する。【０１３７】
まず、管理プログラム２２１は、不可分データ情報受信部２２２が新たに不可分データ情報を受信したか否かを判断する（ステップＳ８１）。この結果、不可分データ情報受信部２２２が新たに不可分データ情報を受信した場合（ステップＳ８１：Ｙｅｓ）には、管理プログラム２２１は、不可分データ末尾ハッシュ値記録部２２７による不可分データ末尾ハッシュ値記録処理（図２０参照）を実行させる（ステップＳ８２）。この不可分データ末尾ハッシュ値記録処理によると、不可分データの末尾のＷｒｉｔｅデータのハッシュ値がジャーナルハッシュテーブル２３３に登録される。【０１３８】
一方、不可分データ情報受信部２２２が新たに不可分データ情報を受信していない場合（ステップＳ８１：Ｎｏ）、又は、不可分データ末尾ハッシュ値記録処理が終了した場合には、管理プログラム２２１は、ジャーナル情報受信部２２４が新たにジャーナル情報を受信したか否かを判断する（ステップＳ８３）。【０１３９】
この結果、ジャーナル情報受信部２２４が新たにジャーナル情報を受信した場合（ステップＳ８３：Ｙｅｓ）には、管理プログラム２２１は、データ損失期間算出部２２５によるデータ損失期間算出処理（図２１参照）を実行させる（ステップＳ８４）。【０１４０】
一方、ジャーナル情報受信部２２４が新たにジャーナル情報を受信していない場合（ステップＳ８３：Ｎｏ）、又は、データ損失期間算出処理が終了した場合には、管理プログラム２２１は、処理をステップＳ８１に進める。【０１４１】
図２０は、実施例２に係る不可分データ末尾ハッシュ値記録処理のフローチャートである。【０１４２】
不可分データ末尾ハッシュ値記録処理は、図１９のステップＳ８２に対応する処理であり、管理計算機２００の不可分データ末尾ハッシュ値記録部２２７によって実行される。【０１４３】
まず、不可分データ末尾ハッシュ値記録部２２７は、不可分データ情報受信部２２２により受信された不可分データ情報中の不可分データの正ボリューム３６０への書き込みが完了した時刻と、不可分データ末尾ハッシュ値とを含むレコードを作成し、そのレコードをジャーナルハッシュテーブル２３３に追加し（ステップＳ９１）、処理を終了する。【０１４４】
この不可分データ末尾ハッシュ値記録処理によると、新たに正ボリューム３６０に書込まれた不可分データの末尾のＷｒｉｔｅデータのハッシュ値をジャーナルハッシュテーブル２３３に登録することができる。【０１４５】
図２１は、実施例２に係るデータ損失期間算出処理のフローチャートである。【０１４６】
データ損失期間算出処理は、図１９のステップＳ８４に対応する処理であり、管理計算機２００のデータ損失期間算出部２２５によって実行される。【０１４７】
まず、データ損失期間算出部２２５は、ジャーナルハッシュテーブル２３３の不可分データ末尾ハッシュ値２３３ｂについて、ジャーナル情報受信部２２４により受信されたジャーナル情報中のジャーナルハッシュ値で検索する（ステップＳ１０１）。
【０１４８】
次いで、データ損失期間算出部２２５は、検索の結果、対応するレコードが見つかったか否かを判断する（ステップＳ１０２）。【０１４９】
この結果、対応するレコードが見つかっていない場合（ステップＳ１０２：Ｎｏ）には、そのジャーナルハッシュ値に対応するＷｒｉｔｅデータが、不可分データの末尾のＷｒｉｔｅデータでないこと、すなわち、その不可分データの全てのジャーナルを副ストレージシステム４００に送信していないことを示しているので、データ損失期間算出部２２５は、処理を終了する。【０１５０】
一方、対応するレコードが見つかった場合（ステップＳ１０２：Ｙｅｓ）には、そのレコードに対応する不可分データの全てのジャーナルについて副ストレージシステム４００に送信していることを示しているので、データ損失期間算出部２２５は、その時点の現在時刻を、不可分データの副ボリュームへの書き込み完了時刻とする（ステップＳ１０３）。【０１５１】
次いで、データ損失期間算出部２２５は、不可分データの副ボリュームへの書き込み完了時刻から、ジャーナルハッシュテーブル２３３から見つかったレコードの正ボリュームへの書き込み完了時刻２３３ａに格納されている不可分データの正ボリュームへの書き込み完了時刻を減算し、得られた期間をその不可分データについてのデータ損失期間とする（ステップＳ１０４）。【０１５２】
次いで、データ損失期間算出部２２５は、不可分データの副ボリュームへの書き込み完了時刻と、データ損失期間とを含むレコードを作成し、そのレコードをデータ損失期間テーブル２３２に追加し（ステップＳ１０５）、処理を終了する。【０１５３】
このデータ損失期間算出処理によると、ハッシュ値に基づいて、不可分データの全てのジャーナルが副ストレージシステム４００に送信されたか否を適切に判断することができ、各不可分データについてのデータ損失期間をデータ損失期間テーブル２３２に蓄積することができる。なお、データ損失期間テーブル２３２に蓄積された情報に基づいて、データ損失期間表示部２２６が実施例１と同様な処理を行うことにより、図１４に示すデータ損失期間表示画面５００を表示させることができる。これにより、管理者は、不可分データについてのデータ損失期間を容易且つ適切に把握することができる。【０１５４】
以上、幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。【０１５５】
例えば、実施例１において、正ストレージシステム３００のジャーナル情報送信プログラム３２３が、不可分データに対応する最後のジャーナルが副ストレージシステム４００に送信されたときに、不可分データの全てのジャーナルを送信したことを示すジャーナル情報（例えば、全てのジャーナルを送信した時刻情報を含む）を管理計算機２００に送信し、管理計算機２００のデータ損失期間算出部２２５が、ジャーナル情報に基づいて、不可分データに対応する全てのジャーナルが送信された時刻を、データ回復可能時刻として記憶するようにしても良い。このようにすると、管理計算機２００は、不可分データの全てのジャーナルが送信されたことを容易に判断することができる。【０１５６】
また、正ボリューム、正ジャーナルボリューム、副ジャーナルボリューム及び副ボリュームのうちの少なくとも１つの論理ボリュームは、ストレージシステムが有する物理的な記憶デバイスに基づく実体的な論理ボリュームに代えて、仮想的な論理ボリューム（例えば、シンプロビジョニング技術に従う論理ボリューム、或いは、外部のストレージシステムの記憶資源が仮想化された論理ボリューム）であっても良い。【０１５７】
また、正ジャーナルボリューム及び副ジャーナルボリュームのうちの少なくとも１つに代えて、他種の記憶領域、例えば、ストレージシステムが有するメモリの一部領域がジャーナルの記憶領域とされても良い。【０１５８】
また、管理計算機２００が行う情報表示は、表示装置２５０に情報を表示することに代えて、遠隔の計算機に表示される情報を送信することであっても良い。
【符号の説明】
【０１５９】
１００：ホスト計算機、２００：管理計算機、３００：正ストレージシステム、４００：副ストレージシステム。
【図１】
0005781716.tif 000002
【図２】
0005781716.tif 000003
【図３】
0005781716.tif 000004
【図４】
0005781716.tif 000005
【図５】
0005781716.tif 000006
【図６】
0005781716.tif 000007
【図７】
0005781716.tif 000008
【図８】
0005781716.tif 000009
【図９】
0005781716.tif 000010
【図１０】
0005781716.tif 000011
【図１１】
0005781716.tif 000012
【図１２】
0005781716.tif 000013
【図１３】
0005781716.tif 000014
【図１４】
0005781716.tif 000015
【図１５】
0005781716.tif 000016
【図１６】
0005781716.tif 000017
【図１７】
0005781716.tif 000018
【図１８】
0005781716.tif 000019
【図１９】
0005781716.tif 000020
【図２０】
0005781716.tif 000021
【図２１】
0005781716.tif 000022