(57)【要約】【課題】ジャーナルの転送完了を待ち合わせることなくロールフォワードを実施できるレプリケーション装置、レプリケーション方法及びプログラムを提供する。【解決手段】レプリケーション装置１１０は、ジャーナルブロックを受信するレプリケーション情報受信手段１１８、ジャーナルブロックを一定数格納する格納領域を含むジャーナルボリューム１２０、格納領域からジャーナルブロックを読出して複製ボリュームを更新するロールフォワード手段１１１を有する。格納領域は、ジャーナルブロックが一定数を超えた場合、格納済ジャーナルブロックが、古いものから順に、新たなジャーナルブロックにより上書きされる循環構造を有し、ジャーナルブロックは、上書きが一巡した回数を示す循環回数を含む。ロールフォワード手段１１１は、ジャーナルブロックを読出した際、循環回数に基づいて最新のジャーナルブロックを判別してロールフォワードを停止する。【選択図】図１
2013210919.tif 000002
【特許請求の範囲】
【請求項１】
複製元ボリュームの更新情報を含むジャーナルブロックを受信するレプリケーション情報受信手段と、
前記ジャーナルブロックを、受信した順に一定数格納する格納領域を含むジャーナルボリュームと、
前記格納領域から前記ジャーナルブロックを順に読出し、読出した前記ジャーナルブロックに基づいて複製ボリュームを更新するロールフォワードを実行するロールフォワード手段とを有し、
前記格納領域は、格納済みの前記ジャーナルブロックが前記一定数を超えた場合、格納済みの前記ジャーナルブロックが、古いものから順に、新たな前記ジャーナルブロックによって上書きされる循環構造であり、
前記ジャーナルブロックはそれぞれ、前記循環構造において前記上書きが一巡した回数を示す循環回数を含んでおり、
前記ロールフォワード手段は、前記格納された前記ジャーナルブロックを読出した際、前記循環回数に基づいて最新の前記ジャーナルブロックを判別し、前記最新の前記ジャーナルブロックを以て前記ロールフォワードを停止する
レプリケーション装置。
【請求項２】
前記ジャーナルボリュームに前記ジャーナルブロックが格納される際、前記ジャーナルブロックに対する排他制御を行う排他手段をさらに有する
請求項１記載のレプリケーション装置。
【請求項３】
前記排他手段はさらに、前記ロールフォワード手段が前記ジャーナルブロックを読出す際、前記ジャーナルブロックに対する排他制御を行う
請求項２記載のレプリケーション装置。
【請求項４】
前記ロールフォワード手段は、前記ジャーナルブロックの前記受信速度に応じ、一度に前記排他制御を実行する前記ジャーナルブロックの数を変化させる
請求項１乃至３いずれか１項記載のレプリケーション装置。
【請求項５】
前記レプリケーション情報受信手段は、前記ジャーナルブロックの前記受信状態が、レプリケーション順序が保証されない状態である場合、前記ジャーナルボリューム全体に対する排他制御を行う
請求項１乃至４いずれか１項記載のレプリケーション装置。
【請求項６】
複製元ボリュームの更新情報を含むジャーナルブロックを受信するレプリケーション情報受信ステップと、
前記ジャーナルブロックを、受信した順にジャーナルボリュームの格納領域に一定数格納する格納ステップと、
前記格納領域から前記ジャーナルブロックを順に読出し、読出した前記ジャーナルブロックに基づいて複製ボリュームを更新するロールフォワードを実行するロールフォワードステップとを有し、
前記格納領域は、格納済みの前記ジャーナルブロックが前記一定数を超えた場合、格納済みの前記ジャーナルブロックが、古いものから順に、新たな前記ジャーナルブロックによって上書きされる循環構造であり、
前記ジャーナルブロックはそれぞれ、前記循環構造において前記上書きが一巡した回数を示す循環回数を含んでおり、
前記ロールフォワードステップにおいては、前記格納された前記ジャーナルブロックを読出した際、前記循環回数に基づいて最新の前記ジャーナルブロックを判別し、前記最新の前記ジャーナルブロックを以て前記ロールフォワードを停止する
レプリケーション装置。
【請求項７】
前記ジャーナルボリュームに前記ジャーナルブロックが格納される際、前記ジャーナルブロックに対する排他制御を行う第１の排他ステップをさらに有する
請求項６記載のレプリケーション方法。
【請求項８】
前記ロールフォワードステップにおいて前記ジャーナルブロックを読出す際、前記ジャーナルブロックに対する排他制御を行う第２の排他ステップをさらに有する
請求項７記載のレプリケーション方法。
【請求項９】
前記ロールフォワードステップにおいては、前記ジャーナルブロックの前記受信速度に応じ、一度に前記排他制御を実行する前記ジャーナルブロックの数を変化させる
請求項６乃至８いずれか１項記載のレプリケーション方法。
【請求項１０】
コンピュータに、
複製元ボリュームの更新情報を含むジャーナルブロックを受信するレプリケーション情報受信ステップと、
前記ジャーナルブロックを、受信した順にジャーナルボリュームの格納領域に一定数格納する格納ステップと、
前記格納領域から前記ジャーナルブロックを順に読出し、読出した前記ジャーナルブロックに基づいて複製ボリュームを更新するロールフォワードを実行するロールフォワードステップとを実行させるためのプログラムであって、
前記格納領域は、格納済みの前記ジャーナルブロックが前記一定数を超えた場合、格納済みの前記ジャーナルブロックが、古いものから順に、新たな前記ジャーナルブロックによって上書きされる循環構造であり、
前記ジャーナルブロックはそれぞれ、前記循環構造において前記上書きが一巡した回数を示す循環回数を含んでおり、
前記ロールフォワードステップにおいては、前記格納された前記ジャーナルブロックを読出した際、前記循環回数に基づいて最新の前記ジャーナルブロックを判別し、前記最新の前記ジャーナルブロックを以て前記ロールフォワードを停止する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レプリケーション装置、レプリケーション方法及びプログラムに関し、例えばジャーナルの転送完了を待ち合わせることなくロールフォワードを実施できるレプリケーション技術に関する。
【背景技術】
【０００２】
ＢＣＰ（Ｂｕｓｉｎｅｓｓ  Ｃｏｎｔｉｎｕｉｔｙ  Ｐｌａｎ：事業継続計画）対策の一つとして、メインサイトと同じデータを持つリモートサイトを予め準備しておき、災害等の発生時にリモートサイトを利用して事業を継続する手法が知られている。メインサイトに生じたデータの変更をリモートサイトに反映する方法の一つとして、レプリケーションという技術が多く利用されている（例として特許文献１参照）。
【０００３】
レプリケーションとは、メインサイトのマスタボリューム（以降、ＭＶという）から、リモートサイトの複製ボリューム（以降、ＲＶという）に対し、ＭＶの更新データを転送し、リモートサイトがその更新データに基づいて複製ボリュームを更新する技術である。レプリケーション方式の一つに、ＭＶにおけるデータ書き込み順序を保持したままＲＶにおいてもデータを書き込む、順序型レプリケーションがある。
【０００４】
順序型レプリケーションの特長は、ＲＰＯ（Ｒｅｃｏｖｅｒｙ  Ｐｏｉｎｔ  Ｏｂｊｅｃｔｉｖｅ）が短くリモートサイトでの業務を早期に再開できることである。
【０００５】
また、順序型レプリケーションとともに用いられる方式の一つとして、メインサイトのストレージ装置が、ＭＶの更新ログ（以降、ジャーナルという）のみをリモートサイトに転送し、リモートサイトのストレージ装置が、その更新ログに基づいてロールフォワード処理を行い、ＲＶを更新する方式がある。
【０００６】
この方式は、転送対象をジャーナルに絞ることで転送量を減らすことが出来るという利点がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４７３１９７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
一方、上述の方式では、ジャーナルの転送がストレージ装置間で行われる。そのため、メインサイトおよびリモートサイトにおいてデータベース（以降、ＤＢという）更新処理を担当するホスト装置においては、ジャーナルの転送の進行中、ジャーナルの転送がどこまで完了したかを把握することができない。そのため、リモートサイト側において、受信したジャーナルの記憶領域への書き込みと、ロールフォワードのためのジャーナルの読み込みとが衝突すると、ロールフォワード実行側において書き込み途中のジャーナルを読み込んでしまい、その結果、ＤＢの不正反映が発生してしまうことがあった。
【０００９】
よって、ロールフォワードを実施する際は、ジャーナルの転送の完了を待ち合わせる必要があり、このことがＲＴＯ（Ｒｅｃｏｖｅｒｙ  Ｔｉｍｅ  Ｏｂｊｅｃｔｉｖｅ）の増大を招いていた。
【００１０】
本発明は、このような問題点を解決するためになされたものであり、ジャーナルの転送完了を待ち合わせることなく、高速かつ整合性を保った状態でロールフォワードを実施できるレプリケーション装置、レプリケーション方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るレプリケーション装置は、複製元ボリュームの更新情報を含むジャーナルブロックを受信するレプリケーション情報受信手段と、前記ジャーナルブロックを、受信した順に一定数格納する格納領域を含むジャーナルボリュームと、前記格納領域から前記ジャーナルブロックを順に読出し、読出した前記ジャーナルブロックに基づいて複製ボリュームを更新するロールフォワードを実行するロールフォワード手段とを有し、前記格納領域は、格納済みの前記ジャーナルブロックが前記一定数を超えた場合、格納済みの前記ジャーナルブロックが、古いものから順に、新たな前記ジャーナルブロックによって上書きされる循環構造であり、前記ジャーナルブロックはそれぞれ、前記循環構造において前記上書きが一巡した回数を示す循環回数を含んでおり、前記ロールフォワード手段は、前記格納された前記ジャーナルブロックを読出した際、前記循環回数に基づいて最新の前記ジャーナルブロックを判別し、前記最新の前記ジャーナルブロックを以て前記ロールフォワードを停止するものである。
【００１２】
本発明に係るレプリケーション方法は、複製元ボリュームの更新情報を含むジャーナルブロックを受信するレプリケーション情報受信ステップと、前記ジャーナルブロックを、受信した順にジャーナルボリュームの格納領域に一定数格納する格納ステップと、前記格納領域から前記ジャーナルブロックを順に読出し、読出した前記ジャーナルブロックに基づいて複製ボリュームを更新するロールフォワードを実行するロールフォワードステップとを有し、前記格納領域は、格納済みの前記ジャーナルブロックが前記一定数を超えた場合、格納済みの前記ジャーナルブロックが、古いものから順に、新たな前記ジャーナルブロックによって上書きされる循環構造であり、前記ジャーナルブロックはそれぞれ、前記循環構造において前記上書きが一巡した回数を示す循環回数を含んでおり、前記ロールフォワードステップにおいては、前記格納された前記ジャーナルブロックを読出した際、前記循環回数に基づいて最新の前記ジャーナルブロックを判別し、前記最新の前記ジャーナルブロックを以て前記ロールフォワードを停止するものである。
【００１３】
本発明に係るプログラムは、コンピュータに、複製元ボリュームの更新情報を含むジャーナルブロックを受信するレプリケーション情報受信ステップと、前記ジャーナルブロックを、受信した順にジャーナルボリュームの格納領域に一定数格納する格納ステップと、前記格納領域から前記ジャーナルブロックを順に読出し、読出した前記ジャーナルブロックに基づいて複製ボリュームを更新するロールフォワードを実行するロールフォワードステップとを実行させるためのプログラムであって、前記格納領域は、格納済みの前記ジャーナルブロックが前記一定数を超えた場合、格納済みの前記ジャーナルブロックが、古いものから順に、新たな前記ジャーナルブロックによって上書きされる循環構造であり、前記ジャーナルブロックはそれぞれ、前記循環構造において前記上書きが一巡した回数を示す循環回数を含んでおり、前記ロールフォワードステップにおいては、前記格納された前記ジャーナルブロックを読出した際、前記循環回数に基づいて最新の前記ジャーナルブロックを判別し、前記最新の前記ジャーナルブロックを以て前記ロールフォワードを停止するものである。
【発明の効果】
【００１４】
本発明により、ジャーナルの転送完了を待ち合わせることなく、高速かつ整合性を保った状態でロールフォワードを実施できるレプリケーション装置、レプリケーション方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態の構成を示す図である。
【図２】本発明の実施の形態の構成を示す図である。
【図３】本発明の実施の形態の構成を示す図である。
【図４】本発明の実施の形態の構成を示す図である。
【図５】本発明の実施の形態の構成を示す図である。
【図６】本発明の実施の形態の構成を示す図である。
【図７】本発明の実施の形態の処理を示す図である。
【図８】本発明の実施の形態の処理を示す図である。
【図９】本発明の実施の形態の処理を示す図である。
【図１０】本発明の実施の形態の処理を示す図である。
【図１１】本発明の実施の形態の処理を示す図である。
【図１２】本発明の実施の形態の処理を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１７】
まず、図１を用いて、本発明の実施の形態にかかるレプリケーション装置１１０の構成について説明する。
【００１８】
レプリケーション装置１１０は、図示しないメインサイトにおけるＭＶの更新を反映する、リモートサイトを構成する装置である。レプリケーション装置１１０は、典型的にはサーバコンピュータ等により構成され、中央演算処理装置（ＣＰＵ）、揮発性メモリ、不揮発性メモリ、通信装置及び入出力装置等のハードウェアを含む。ＣＰＵは、揮発性メモリ又は不揮発性メモリに格納された制御プログラム（ソフトウェア）に基づいて後述する各種処理を実行する。レプリケーション装置１１０は、物理的に単一の装置である必要はなく、複数の装置により後述の機能が分散的に実現される構成であってもよい。
【００１９】
また、レプリケーション装置１１０は、典型的にはホスト及びストレージ装置を含む。ストレージ装置は、主にジャーナルの管理を行う装置であり、レプリケーション情報受信手段１１８及びジャーナルボリューム１２０を含む。ホストは、主にＲＶの更新処理を実行する装置であり、ロールフォワード手段１１１を含む。
【００２０】
レプリケーション情報受信手段１１８は、複製元ボリュームすなわちＭＶを有するメインサイトと通信可能に接続されており、ＭＶの更新ログであるジャーナルを逐次受信する。ここで、ジャーナルは、複数の更新ログ（ジャーナルレコード）を含むジャーナルブロックの形で送受信されるものとする。
【００２１】
ジャーナルボリューム１２０は、レプリケーション情報受信手段１１８が受信したジャーナルブロックを格納するための複数の格納領域を有する。ジャーナルブロックは、受信されたものから順次これらの格納領域に格納される。なお、ジャーナルブロックの受信時点において、既に全ての格納領域が利用済みである場合は、最も古い、すなわち最も早い時刻に受信したジャーナルブロックが格納されている格納領域に、受信したジャーナルブロックが格納されていくものとする。これを、以降、循環書き込みという。
【００２２】
ここで、ある格納領域においてこの循環書込みがなされた累積回数、換言すれば世代を管理するために、本実施の形態では、ジャーナルブロックに、この循環書込みの累積回数を示す循環回数を記録するためのセクターを設ける。
【００２３】
ロールフォワード手段１１１は、ジャーナルボリューム１２０からジャーナルブロックを順次読出し、読出した前記ジャーナルブロックに基づいて複製ボリュームすなわちＲＶを更新する処理、すなわちロールフォワードを実行する。
【００２４】
ここで、ロールフォワード手段１１１は、ジャーナルボリューム１２０からジャーナルブロックを順次読出した際、ジャーナルブロックに記録された循環回数に基づいて、ジャーナルボリューム１２０における最新のジャーナルブロックがどのジャーナルブロックであるかを判別する。ロールフォワード手段１１１は、最新のジャーナルブロックが判別できたならば、そのジャーナルブロックをＲＶに反映した後、ロールフォワードを停止する。
【００２５】
なお、上記ホスト、ストレージ装置及び各種手段等は、いずれも必ずしも物理的に独立した装置である必要はなく、レプリケーション装置１１０が有する上述のハードウェアとソフトウェアとの協働により論理的に実現されるものであって良い。
【００２６】
図２乃至図６を用いて、レプリケーション装置１１０のより具体的な実装例について説明する。
【００２７】
リモートサイトとしてのレプリケーション装置１１０は、メインサイト１００と通信手段１１７及び１０５を介して接続される。
【００２８】
メインサイト１００は、複製元ボリュームとしてのＤＢ（ＭＶ）１０９と、ホスト及びストレージ装置を含む。ホストは、ＤＢ（ＭＶ）１０９に対する更新処理を行うＤＢ更新手段１０１を含む。ストレージ装置は、ＤＢ（ＭＶ）１０９の更新ログすなわちジャーナルを格納するジャーナルボリューム（ＭＶ）１０８と、ジャーナルをリモートサイトとしてのレプリケーション装置１１０に送信するレプリケーション情報送信手段１０４とを含む。
【００２９】
リモートサイトとしてのレプリケーション装置１１０は、複製ボリュームとしてのＤＢ（ＲＶ）１２１と、ホスト及びストレージ装置を含む。ホストは、メインサイト１００から受信するジャーナルに基づいてＤＢ（ＲＶ）１２１のロールフォワード処理を行うロールフォワード手段１１１を含む。ストレージ装置は、メインサイト１００からジャーナルを受信するレプリケーション情報受信手段１１９と、ジャーナルを格納するジャーナルボリューム（ＲＶ）１２０と、ジャーナルボリューム（ＲＶ）１２０に対するアクセスの排他制御を行う排他手段１１４とを含む。
【００３０】
以下に、これらの構成要素及び本実施の形態で用いられるデータ構造について詳細に説明する。
【００３１】
＜ジャーナルブロック＞
ジャーナルブロックは、ＤＢ更新手段１０１が、ＤＢ（ＭＶ）１０９の更新内容を記したログ、すなわちジャーナルレコードを、ジャーナルボリューム（ＭＶ）１０８へ書き込むときに用いるデータ構造である。
【００３２】
まず、図３を用いて、ジャーナルブロックの出力機序について説明する。
【００３３】
図３に、ジャーナルボリューム（ＭＶ）１０８及びジャーナルボリューム（ＲＶ）１２０を模式化した、ジャーナルボリューム２０１を示す。ジャーナルブロック２０３乃至２０７は、ジャーナルボリューム２０１に事前に確保されたアドレス領域２０２（以降、ジャーナル領域２０２という）に出力される。この構造は、ジャーナルボリューム（ＭＶ）１０８及びジャーナルボリューム（ＲＶ）１２０に共通である。
【００３４】
ジャーナルブロックが大量に出力され、格納を要求される事態に対処するため、ジャーナル領域２０２は循環使用される。すなわち、ジャーナル領域２０２に、ジャーナルブロック２０３、２０４・・２０７が順に格納されてゆき、次のジャーナルブロックを格納するに足る領域が無くなった場合、次のジャーナルブロックは、これらのジャーナルブロックのうち最も古い、すなわち最も早く格納されたジャーナルブロック２０３に上書きされる形で格納される。
【００３５】
本実施の形態では、ジャーナルブロックは固定長とする。すなわち、ジャーナルブロック２０３乃至２０７は全て同じサイズとする。これにより、ジャーナル領域２０２を循環使用した場合でも、ジャーナルブロックの格納位置は一意に定まる。すなわち、循環する度にジャーナル領域２０２におけるジャーナルブロックの格納位置が変動することが無い。これにより、メインサイト１００及びレプリケーション装置１１０は、ジャーナルブロックを書き込み及び読み出すべきアドレスを容易かつ高速に特定することができる。
【００３６】
つぎに、図４を用いて、ジャーナルブロックの内部構造について説明する。
【００３７】
ジャーナルブロックは、ジャーナルブロックの出力がジャーナル領域を何回循環したか（循環回数）を示す１個の数値、すなわち循環通番と、ＤＢ（ＭＶ）１０９の更新内容を記録した１以上のジャーナルレコードとを含む。図４の例では、ジャーナルブロックは、先頭の循環通番３０１に続き、ジャーナルレコード３０２乃至３０５を含んでいる。ここで、ジャーナルレコード３０２乃至３０５は可変長であって良い。但し、ジャーナルレコードは１個のジャーナルブロック内に収めること、すなわち複数のジャーナルブロックにまたがって出力しないこととする。よって、ジャーナルブロックの終端には未使用領域３０６が追加される場合がある。
【００３８】
循環通番３０１は、ジャーナルブロックが所定数出力されてジャーナル領域の終端（以降、領域終端という）に達し、新たなジャーナルブロックの出力アドレスがジャーナル領域の先頭に戻るときに加算される。循環通番３０１は、ジャーナル領域がこのように循環使用される場合において、最新の、すなわち最後に出力されたジャーナルブロック（以降、ジャーナル終端という）を特定するために用いられる。
【００３９】
ジャーナルレコードには、ＤＢの更新内容を含むジャーナル（以降、更新ジャーナルレコードという）のほかに、トランザクションの開始を示すジャーナルレコード（以降、開始ジャーナルレコードという）、トランザクションの終了を示すジャーナルレコード（以降、終了ジャーナルレコードという）がある。開始ジャーナルレコード、０個以上の更新ジャーナルレコード、及び終了ジャーナルレコードの組によって、１つのトランザクションが表される。開始ジャーナルレコードに対応する終了ジャーナルレコードが無いことは、その開始ジャーナルレコードにかかるトランザクションは完了していないことを意味する。よって、このトランザクションにかかるジャーナルレコードは、ロールフォワード時にＤＢへ反映してはならないものである。なお、開始ジャーナルレコードと終了ジャーナルレコードとは、異なるジャーナルブロックに含まれても良い。
【００４０】
ジャーナルブロックにこのような構造を持たせることにより、リモートサイト１１０側においては容易にジャーナル終端を特定でき、ロールフォワードを適切に制御することができる。すなわち、本実施の形態によれば、ジャーナルブロックのみの転送で、リモートサイト１１０側のＤＢ（ＲＶ）１２１を容易に最新の状態に保つことが可能である。
【００４１】
＜ストレージコントローラ１０３及び１１３＞
ストレージコントローラ１０３及び１１３は、メインサイト１００又はリモートサイト１１０のストレージ装置１０２又は１１２が有する手段である。ストレージコントローラ１０３又は１１３は、ＤＢ更新手段１０１による書き込み要求又はロールフォワード手段１１１による読み込み要求を受け付け、ストレージ装置１０３又は１１３が有するジャーナルボリューム（ＭＶ）１０８又はジャーナルボリューム（ＲＶ）１２０へのアクセスを制御する機能を有する。
【００４２】
メインサイト１００のストレージコントローラ１０３は、レプリケーション状態の管理機能及びジャーナルの送信機能を有するレプリケーション情報送信手段１０４を含む。リモートサイト１１０のストレージコントローラ１１３は、レプリケーション状態及びレプリケーション速度の管理機能、並びにジャーナルの受信機能を有するレプリケーション情報受信手段１１８を含む。また、リモートサイト１１０のストレージコントローラ１１３は、さらにジャーナルボリューム（ＲＶ）１２０に対するアクセスの排他制御を行う排他手段１１４を含む。
【００４３】
図６を用いて、ストレージコントローラ１０３及び１１３が、ＤＢ更新手段１０１による書き込み要求又はロールフォワード手段１１１による読み込み要求に基づいて行う、ジャーナルボリューム（ＭＶ）１０８又はジャーナルボリューム（ＲＶ）１２０へのアクセス制御の機序を説明する。
【００４４】
ＤＢ更新手段１０１による書き込み要求は、書きこみ先ボリューム５０１、書きこみ始点アドレス５０２、書きこみ終点アドレス５０３、および、書きこみイメージ５０４にて構成するものとする。書き込みイメージ５０４は、ジャーナルブロックを１個以上含む。また、ロールフォワード手段１１１による読み込み要求は、読み込み先ボリューム５０８、読み込み始点アドレス５０９、読み込み終点アドレス５１０にて構成するものとする。なお、ここでいうアドレスとは、ボリューム上の位置を一意に特定する情報である。例えば、目的のジャーナルブロックが、先頭のジャーナルブロックから見て何個先のジャーナルブロックであるかを示す数を、この格納領域における相対的なアドレスとして用いることができる。
【００４５】
＜レプリケーション情報送信手段１０４＞
レプリケーション情報送信手段１０４は、メインサイト１００のストレージコントローラ１０３が有する手段である。レプリケーション情報送信手段１０４は、ストレージコントローラ１０３がホストから受け取ったジャーナルボリューム（ＭＶ）１０８へのジャーナルブロックの書き込み要求を、リモートサイト１１０へ転送する機能を有する。
【００４６】
＜レプリケーション情報受信手段１１８＞
レプリケーション情報受信手段１１８は、リモートサイト１１０のストレージコントローラ１１３が有する手段である。レプリケーション情報受信手段１１８は、メインサイト１００のレプリケーション情報送信手段１０４から転送されてきた書き込み要求を受け取り、ストレージコントローラ１１３の機能を用いて、ジャーナルボリューム（ＲＶ）１２０へジャーナルブロックを書き込む機能を有する。
【００４７】
レプリケーション情報受信手段１１８は、ジャーナルボリューム（ＲＶ）１２０へ書き込んでいる途中のジャーナルブロックを、後述するロールフォワード手段１１１が読み込まないよう、後述する排他手段１１４を用いて書き込みの排他を取得する。排他の単位は、ホスト側による書き込み単位であるジャーナルブロックとする。
【００４８】
また、レプリケーション情報受信手段１１８と、上述のレプリケーション情報送信手段１０４とは、順序を保障されないレプリケーションによるＤＢの不正更新を防ぐために、現在のレプリケーション状態を、レプリケーション状態情報１１９として保持する。レプリケーション状態情報１１９は、順序型レプリケーションが実施されている状態（以降、ＳＹＮＣ状態という）と、レプリケーションは動作しているがメインホストでの書き込み順序がわからず順序型レプリケーションが実施できない状態（以降、ＲＥＰＬＩＣＡＴＥ状態という）の２つの状態を判別可能なデータを含むものとする。
【００４９】
レプリケーション情報受信手段１１８は、このレプリケーション状態情報１１９を参照し、これがＲＥＰＬＩＣＡＴＥ状態である場合、書き込み順序が不明なジャーナルブロックをロールフォワードすることによってＤＢの不正更新が発生しないよう、後述する排他手段１１４によってジャーナルボリューム（ＲＶ）１２０のジャーナル領域全体を排他し、ロールフォワードの進行を抑止する。
【００５０】
さらに、レプリケーション情報受信手段１１８は、メインサイト１００とのレプリケーション速度、すなわちジャーナルの転送速度を示す情報を、レプリケーション速度情報１２６として保持する。レプリケーション情報受信手段１１８は、レプリケーション速度情報１２６を、排他手段１１６に要求する排他制御の範囲を決定する情報として利用する。レプリケーション情報受信手段１１８とロールフォワード手段１１１とは、レプリケーション速度情報１２６に応じ、出来るだけ多くのジャーナルブロックを一度に排他する。これにより、排他手段１１４の使用頻度を削減することが可能となる。具体的には、現在のレプリケーション速度が過去のレプリケーション速度より向上している場合、多くのジャーナルブロックを一度に読み書きすることが出来るため、一度に排他するジャーナルブロックの数を増加させる。一方、現在のレプリケーション速度が過去のレプリケーション速度より低下している場合、ロールフォワード手段１１１が排他待ちによってロールフォワードを進行できなくなることを防ぐために、一度に排他するジャーナルブロックの数を減らす。
【００５１】
＜排他手段１１４＞
排他手段１１４は、リモートサイト１１０のストレージコントローラ１１４が有する手段である。排他手段１１４は、レプリケーション情報受信手段１１８による、ジャーナルボリューム（ＲＶ）１２０へのジャーナルブロックの書き込みと、ロールフォワード手段１１１による、ジャーナルボリューム（ＲＶ）１２０からのジャーナルブロックの読み込みとが衝突しないよう、ジャーナルブロック単位で排他制御を行う機能を有する。
【００５２】
排他手段１１４は、レプリケーション情報受信手段１１８から排他要求を受け取る際、同時に排他範囲を示す情報として書き込みボリューム、書き込み始点アドレス及び書き込み終点アドレスを受け取り、これらの情報を排他情報１１６に登録する。
【００５３】
また、排他手段１１４は、ロールフォワード手段１１１からの排他要求を受け取る際、同時に排他範囲を示す情報として読み込みボリューム、読み込み始点アドレス及び読み込み終点アドレスを受け取り、これらの情報が排他情報１１６に登録されている書きこみボリューム、書き込み始点アドレス及び書き込み終点アドレスと重なる部分があるかどうか、つまり競合の有無を確認し、競合が無ければ読み込みの許可を、競合があれば読み込みの拒否をロールフォワード手段１１１に通知する。
【００５４】
＜通信手段１０５及び１１７＞
通信手段１０５及び１１７は、メインサイト１００又はリモートサイト１１０のストレージ装置１０２又は１１２が有する手段である。通信手段１０５及び１１７は、ストレージ装置１０２及び１１２を接続し、レプリケーションに関する各種データを送受信する。
【００５５】
＜ＤＢ更新手段１０１＞
メインサイト１００のホストが、ＤＢ（ＭＶ）１０９を更新するために用いる手段である。ＤＢ更新手段１０１は、ＤＢ更新する際、その更新内容を記したジャーナルレコードをジャーナルブロックに格納して、ジャーナルボリューム（ＭＶ）１０８へ出力する。ＤＢ更新手段１０１は、上述したジャーナルブロックのデータ構造に対応して、ジャーナルブロックをジャーナル領域内で循環出力する機能を有する。
【００５６】
図５を用いて、ＤＢ更新手段１０１がジャーナルブロックを循環出力する動作について説明する。
【００５７】
図５は、例としてジャーナルブロック５個分のアドレス領域を有するジャーナル領域を示している。
【００５８】
時刻ｔにおいて、ジャーナルブロック４０２乃至４０６の循環通番が、順に「２」「２」「２」「１」「１」であるとする。この場合、ジャーナルブロック４０４が、時刻ｔの時点で最後に出力されたジャーナルブロックであり、ジャーナル終端はジャーナルブロック４０４と４０５の間となる。
【００５９】
ＤＢ更新手段は、時刻ｔにおいて、ジャーナル終端の次の位置、つまりジャーナルブロック４０５の位置に最新のジャーナルブロックを出力する。
【００６０】
時刻（ｔ＋１）は、時刻ｔの後、ＤＢ更新手段１０１がジャーナルブロック４０４及び４０５に新たなジャーナルブロックを出力し、さらに新たなジャーナルブロックを出力しようとしている状態を示している。しかし、このときジャーナル終端は領域終端に達しているため、ＤＢ更新手段１０１は、上述した循環使用のルールに従って、新たなジャーナルブロックの循環通番を「２」から「３」に加算した上、新たなジャーナルブロックの出力位置をジャーナル領域の先頭にあるジャーナルブロック４０２と決定する。
【００６１】
時刻（ｔ＋２）は、ジャーナル領域の先頭に位置するジャーナルブロック４０２に、新たなジャーナルブロックを書き込んだ状態である。
【００６２】
ここで、ＤＢ更新手段１０１は、ジャーナルブロックの最後の出力位置を、ジャーナルブロック最終書込位置１２２として保持するものとする。
【００６３】
＜ロールフォワード手段１１１＞
ロールフォワード手段１１１は、リモートサイト１１０のホストが有する手段である。ロールフォワード手段１１１は、ジャーナルボリューム（ＲＶ）１２０からジャーナルブロックを読み出し、ＤＢ（ＲＶ）１２１へ反映することにより、ＤＢ（ＲＶ）１２１をＤＢ（ＭＶ）１０９とレプリケートされた最新の状態に保つ。ロールフォワード手段１１１は、上述したジャーナルブロックのデータ構造に対応して、ジャーナルブロックをジャーナル領域内から循環入力する機能を有する。
【００６４】
図５を用いて、ロールフォワード手段１１１がジャーナルブロックを循環入力する動作について説明する。
【００６５】
時刻ｔにおいて、ロールフォワード手段１１１は、ジャーナル終端であるジャーナルブロック４０４までをＤＢ（ＲＶ）１２１へ反映する。一方、その次のジャーナルブロック４０５の循環通番「１」は、ジャーナルブロック４０４の持つ循環通番「２」より小さい。このとき、ロールフォワード手段１１１は、ジャーナル終端を越えたと判断し、ジャーナルブロックのＤＢ（ＲＶ）１２１への反映を停止する。
【００６６】
時刻が（ｔ＋１）へ進み、ジャーナルブロック４０５及び４０６に新たなジャーナルブロックが書き込まれ、ジャーナル終端が移動すると、ロールフォワード手段１１１は、ジャーナルブロックの読み込みと、ＤＢ（ＲＶ）１２１への反映とを再開する。
【００６７】
時刻（ｔ＋２）において、ロールフォワード手段１１１は、ジャーナルブロックを読み進めた結果、領域終端に達すると、ＤＢ更新手段１０１と同様に、循環通番を「３」に加算した上、ジャーナル領域先頭のジャーナルブロック４０２からジャーナルブロックの読み込みを開始する。ロールフォワード手段１１１は、これ以降のジャーナル終端の検出は、この加算された循環通番に基づいて実施する。
【００６８】
ここで、ロールフォワード手段１１１は、ロールフォワードの進行を管理するための情報として、ジャーナルブロック最終読込位置１２３、未反映ジャーナルレコード位置情報１２４、ロールフォワード対象循環通番１２５を保持するものとする。
【００６９】
ジャーナルブロック最終読込位置１２３は、ロールフォワード手段１１１の前回の動作時に読み込んだジャーナルブロックの最終位置を示す情報である。未反映ジャーナルレコード位置情報１２４は、最も古い未反映ジャーナルレコードのあるジャーナルブロックの位置を示す情報である。ロールフォワード対象循環通番１２５は、最も古い未反映ジャーナルレコードを含むジャーナルブロックが持つ循環通番を示す情報である。
【００７０】
ジャーナル領域４０１においては、ロールフォワード手段１１１による読み込みほかに、レプリケーション情報受信手段１１８による書き込みが行われている。そのため、双方の読み書きが衝突する可能性がある。この読み書きの衝突を防ぐため、ロールフォワード手段１１１は、読み込み実施前に排他手段１１４を用い、読み込み対象のジャーナルブロックの排他制御を行う。ここで、読み込み対象のジャーナルブロックが、レプリケーション情報受信手段１１８により排他されている場合は、レプリケーション情報受信手段１１８がその排他を開放するまで、ロールフォワード手段１１１はジャーナルブロックの読み込みを待ち合わせる。
【００７１】
なお、ロールフォワード手段１１１が未だ読み込んでいないジャーナルブロックを、レプリケーション情報受信手段１１８が新たなジャーナルブロックによって上書きし、ロールフォワード手段１１１がロールフォワードを正常に実施できない状態とならないために、本実施の形態では、ロールフォワード手段１１１は、レプリケーション情報受信手段１１８より十分に速く動作し、ロールフォワード手段１１１がレプリケーション情報受信手段１１８を常に「後追い」する状態であることを前提とする。この前提は、サイト間のやりとりが必要なレプリケーション手段１１８と、リモートサイト１１０内で全ての処理が完結するロールフォワード手段１１１の処理内容を比較すると、十分現実的である。
【００７２】
＜ＤＢ（ＭＶ）１０９＞
メインサイト１００で使用されるＤＢのボリュームである。本実施の形態では、ＤＢ（ＭＶ）１０９自体はレプリケーションの対象でないため、図示しない任意のストレージ装置に配置することができる。
【００７３】
＜ジャーナルボリューム（ＭＶ）１０８＞
ＤＢ（ＭＶ）１０９のジャーナルが記録されるボリュームであり、レプリケーション機能を持つストレージ装置１０２内に配置する必要がある。＜ジャーナルブロック＞の項において述べたとおり、ボリューム内にはジャーナルを出力する領域が予め確保されている。ジャーナルボリューム（ＭＶ）１０８に対する書き込みは、一連のレプリケーション処理によって、ジャーナルボリューム（ＲＶ）１２０へ転送、反映される。
【００７４】
＜ＤＢ（ＲＶ）１２１＞
リモートサイト１１０で使用されるＤＢのボリュームである。例えば災害等の発生時に、リモートサイト１１０を利用して業務を行う場合は、ＤＢ（ＭＶ）１０９に代わってＤＢ（ＲＶ）１２１が用いられる。ＤＢ（ＲＶ）１２１は、ＤＢ（ＭＶ）１０９同様、レプリケーションの対象でないため、図示しない任意のストレージ装置に配置することができる。ＤＢ（ＲＶ）１２１は、ロールフォワード手段１１１により、ジャーナルボリューム（ＲＶ）１２０に格納されるジャーナルを用いて最新の状態に保たれる。
【００７５】
＜ジャーナルボリューム（ＲＶ）１２０＞
ＤＢ（ＲＶ）１２１を最新の状態に保つためのジャーナルが保存されているボリュームである。ジャーナルボリューム（ＲＶ）１２０は、ジャーナルボリューム（ＭＶ）１０８を含むストレージ装置１０２との間でレプリケーション処理が実施できる、ストレージ装置１１２内に配置する必要がある。
【００７６】
つづいて、図２、及び図７乃至図１２を用いて、本実施の形態の動作について説明する。
【００７７】
まず、図２及び図７を用いて、ＤＢ更新手段１０１がＤＢ（ＭＶ）１０９を更新する際、ジャーナルボリューム（ＭＶ）１０８に対するジャーナルブロックを出力する動作について説明する。
【００７８】
ＤＢ更新手段１０１は、はじめに、ジャーナルブロックの出力位置を決定するために、前回のジャーナルブロックの最終書き込み位置を取得する（ステップ６０１）。ＤＢ更新手段１０１が起動直後の場合は、＜ジャーナルブロック＞の項において述べたジャーナル終端を特定する方法によってこれを決定する。一方、ＤＢ更新手段１０１が既に動作しており、ジャーナルブロックを出力している場合には、ジャーナルブロック最終書き込み位置１２２よりこれを取得する。
【００７９】
ステップ６０１にて取得した前回のジャーナルブロックの出力位置が領域終端に達している場合、ＤＢ更新手段１０１は、出力位置を領域の先頭へ戻した（ステップ６０２）上、循環通番を加算する（ステップ６０３）。一方、ジャーナルブロックの出力位置が領域終端に達していない場合は、ＤＢ更新手段１０１は、出力位置を前回のジャーナルブロックの最終書き込み位置の次のジャーナルブロックとする（ステップ６０５）。
【００８０】
ＤＢ更新手段１０１は、ジャーナルブロックの出力位置を決定したならば、ジャーナルボリューム（ＭＶ）１０９の出力位置へジャーナルブロックの書きこみを行い（ステップ６０６）、その出力位置をジャーナルブロック最終書込位置１２２へ保存し（ステップ６０７）、次回動作時のステップ６０１にて取得できるようにする。
【００８１】
ここで、ステップ６０６におけるジャーナルボリューム（ＭＶ）１０９への書きこみについて、メインホストのストレージ装置１０２の動作について、図２と図８を用いて詳細に説明する。
【００８２】
ストレージ装置１０２が有するストレージコントローラ１０３は、ＤＢ更新手段１０１からジャーナルブロックの書き込み要求（図６参照）を受領し（ステップ７０１）、その受領した書き込み要求をそのままレプリケーション情報送信手段１０４を用いてリモートホストへ転送する（ステップ７０２）。その後、ジャーナルボリューム（ＭＶ）１０８へジャーナルブロックの書きこみを行い（ステップ７０３）、ＤＢ更新手段１０１へ書き込み要求に対する応答を返却する（ステップ７０４）。
【００８３】
以上の動作により、ＤＢ更新手段１０１が出力したジャーナルが、リモートサイト１１０へ転送される。
【００８４】
つづいて、図２及び図９を用いて、レプリケーション情報受信手段１１８が、メインサイト１００から転送されたジャーナルブロックをジャーナルボリューム（ＲＶ）１２０に書き込む動作について説明する。
【００８５】
レプリケーション情報受信手段１１８は、はじめに、メインサイト１００から転送されてきた書き込み要求を受信する（ステップ８０１）と、レプリケーション状態情報１１９として保持されている現在のレプリケーション状態を確認する（ステップ８０２）。＜レプリケーション情報受信手段＞の項において述べたとおり、レプリケーション状態には、順序型レプリケーションが動作しているＳＹＮＣ状態と、順序型レプリケーションが動作していないＲＥＰＬＩＣＡＴＥ状態とがあり、ＲＥＰＬＩＣＡＴＥ状態下にて書き込まれたジャーナルブロックでロールフォワードを実施すると、ＤＢ（ＲＶ）１２１が不正な状態となってしまう。これを防ぐため、レプリケーション情報受信手段１１８は、ＲＥＰＬＩＣＡＴＥ状態の時には、排他手段１１４を利用してジャーナル領域の全体（ジャーナル領域の先頭に位置するジャーナルブロックのアドレスから、ジャーナル領域の終端に位置するジャーナルブロックのアドレスまで）を排他した（ステップ８１１）後、ストレージコントローラ１１３の機能を用いて、ジャーナルボリューム（ＲＶ）１２０へジャーナルブロックの書き込みを行う（ステップ８１２）。これにより、ロールフォワード手段１１１によるジャーナルボリューム（ＲＶ）１２０の読み込みが抑止され、ＤＢ（ＲＶ）１２１へのジャーナル不正反映を防ぐことが出来る。
【００８６】
一方、レプリケーション状態がＳＹＮＣ状態である場合、レプリケーション情報受信手段１１８は、レプリケーション速度情報１２６を取得し（ステップ８０３）、現在のレプリケーション速度と、図示しないメモリ等に保存しておいた前回のレプリケーション速度との比較を実施する（ステップ８０４）。この比較の結果、現在のレプリケーション速度が以前に取得したレプリケーション速度より上昇していた場合、レプリケーション情報受信手段１１８は、一度に排他するジャーナルの個数を増やす（ステップ８０５）。一方、現在のレプリケーション速度が以前のレプリケーション速度より低下していた場合、レプリケーション情報受信手段１１８は、一度に排他するジャーナルブロックの個数を減らす（ステップ８０６）。＜ジャーナルブロック＞の項において述べたとおり、ジャーナルブロックの位置は一意、すなわち固定されているので、排他するジャーナルブロック数の増減は、排他手段１１４へ要求する書き込み終点アドレスを増減することで実現できる。ステップ８０３にて取得したレプリケーション速度は、次回のレプリケーション速度比較のために図示しないメモリ等に保存しておく（ステップ８０７）。
【００８７】
レプリケーション情報受信手段１１８は、排他するジャーナルブロックの個数が決定したならばら、排他手段１１４に、排他の範囲として書き込み先ボリューム、書き込み始点アドレス及び書き込み終点アドレスを与え、ジャーナルブロックの排他制御を要求する（ステップ８０８）。なお、ステップ８１１によってジャーナル領域の全体が排他されている場合は、今回排他する範囲を残し、他の範囲の排他を開放する。
【００８８】
排他手段１１４の詳細な動作については後述するが、排他手段１１４は、ステップ８０８にて要求された排他の範囲を排他情報１１６として記録する。そして、排他手段１１４は、ロールフォワード手段１１１による排他要求時に、排他情報１１６が既に登録されていないか、つまり、レプリケーション情報受信手段１１８が排他を取得中でないかを確認し、確認結果に応じてロールフォワード手段１１１へ読み込みの許可又は拒否を返答する。排他手段１１４は、これらの動作により、レプリケーション情報受信手段１１８によるジャーナルブロックの書き込みと、ロールフォワード手段１１１によるジャーナルブロックの読み込みが衝突しないよう制御する。
【００８９】
ステップ８０８による排他が完了したならば、レプリケーション情報受信手段１１８は、ストレージコントローラ１１３の機能を用いて書き込み命令を発行し、ジャーナルボリューム（ＲＶ）１２０にジャーナルブロックを書き込み（ステップ８０９）、排他手段１１４に対し排他の開放を要求する（ステップ８１０）。
なお、レプリケーション情報受信手段１１８によるジャーナルブロック書き込みと、ロールフォワード手段１１１によるジャーナルブロック読み込みが衝突していた場合、ロールフォワード手段１１１は、このステップ８０９の終了をもって、排他を要求しているジャーナルブロックへのアクセスが許可されることとなる。
以上の動作により、メインサイト１００から転送されてきたジャーナルブロックの書き込み要求が、ジャーナルボリューム（ＲＶ）１２０へ反映される。
【００９０】
つぎに、図２及び図１０を用いて、ロールフォワード手段１１１がジャーナルボリューム（ＲＶ）１２０からジャーナルブロックを読み込み、ＤＢ（ＲＶ）１２１へ反映する手段について詳細に説明する。
【００９１】
ロールフォワード手段１１１は、はじめに、ジャーナルレコードの読み込み位置を特定するために、ロールフォワード手段１１１の前回の動作時の情報を取得する（ステップ９０１）。ここで取得する情報は、前回読み込んだジャーナルブロックの終端位置、未反映トランザクションの開始ジャーナルレコードの位置（どこのジャーナルブロックの何番目のレコードか）、未反映ジャーナルレコードのあるジャーナルブロックが持つ循環通番である。これらの情報は、ロールフォワード手段１１１の起動時においては、ディスク等に保存された情報から取得し、ロールフォワード手段１１１が既に動作している場合にあっては、ジャーナルブロック最終読込位置１２３、未反映ジャーナルレコード位置情報１２４、ロールフォワード対象循環通番１２５より取得することができる。
【００９２】
ロールフォワード手段１１１は、つぎに、レプリケーション速度情報１２６を取得し（ステップ９０２）、現在のレプリケーションの速度と前回のレプリケーション速度とを比較して、レプリケーション速度が上昇していれば一度に排他するジャーナルの個数を増やし（ステップ９０４）、レプリケーション速度が低下していれば一度に排他するジャーナルの個数を減らす（ステップ９０５）。そして、次回の比較のためにステップ９０２で取得したレプリケーション速度を図示しないメモリ等に保存する（ステップ９０６）。
【００９３】
ロールフォワード手段１１１は、つづいて、レプリケーション情報受信手段１１８によるジャーナルブロック書き込みとの衝突を防ぐために、ストレージコントローラ１１３が持つ排他手段１１４に対し、排他の範囲として読み込み先ボリューム読み込み始点アドレス及び読み込み終点アドレスを与え、排他を要求する（ステップ９０７）。排他手段１１４に要求する読み込み始点アドレスは、ステップ９０１にて取得した未反映ジャーナルレコードがあるジャーナルブロックのアドレスである。また、読み込み終点アドレスは、読み込み始点アドレスから見て、ステップ９０４と９０５で決定された排他するジャーナルブロックの個数分進んだアドレスとなる。ここで、読み込み終点アドレスが領域終端を越える場合は、読み込み終点アドレスを領域終端にそろえ、ジャーナル領域の先頭に位置するジャーナルブロックのアドレスから残りのジャーナルブロックの個数分を排他する要求を行えばよい。
【００９４】
ステップ９０７での排他要求に対し、排他手段１１４が排他要求を拒否した場合、すなわち排他の取得に失敗した場合は、読み込もうとしたジャーナルブロックはレプリケーション情報受信手段１１８による書き込み中であるため、ロールフォワード手段１１１は、待ち合わせを行った（ステップ９０８）後、再度ステップ９０７による排他要求を行う。ステップ９０８における待ち合わせは、ロールフォワード手段１１１が一定時間スリープ状態になる方法や、レプリケーション情報受信手段１１８が排他の開放を排他手段１１４に要求したことを、排他手段１１４から通知してもらう方法などが考えられる。本実施の形態では、ロールフォワード手段１１１が一定時間スリープ状態になる方法を採用している。
【００９５】
一方、排他手段１１４が排他要求を許可した場合、ロールフォワード手段１１１は、ジャーナルブロックを一つ読み込み（ステップ９０９）、ステップ９０１にて取得したロールフォワード対象の循環通番との比較によるジャーナル終端の判断を行う（ステップ９１０）。もし、循環通番の数が減少したこと、すなわちジャーナル終端を越えた事を検出したならば、最後に読み込んだジャーナルブロックはＤＢ（ＲＶ）１２１へ反映してはいけないものである上、これ以上ジャーナルブロックを読み込んでもロールフォワードは進行できないので、最後に読み込んだジャーナルブロックの位置をジャーナルブロック最終読込位置１２３へ保存し（ステップ９１８）、処理を終了する。
【００９６】
他方、ステップ９１０においてジャーナル終端を越えていなかった場合、ロールフォワード手段１１１は、ジャーナルブロックに含まれるジャーナルレコードをＤＢ（ＲＶ）１２１へ反映できるかどうかを判断する（ステップ９１１）。
【００９７】
このステップ９１１の判断について、図１１を用いて詳細に説明する。
【００９８】
図１１は、ロールフォワード手段１１１が前回の動作時に読み込んだジャーナルブロック１０００と、今回の動作で読み込んだジャーナルブロック１０１０を示している。
【００９９】
ジャーナルブロック１０００においては、ジャーナルレコード１００２で開始するトランザクション２（ＴＲ２）は、終了ジャーナルレコード１００４をもって終了する。よって、ロールフォワード手段１１１はＴＲ２にかかるジャーナルレコード１００２、１００３及び１００４をＤＢ（ＲＶ）１２１へ反映する（ステップ９１２）。
【０１００】
一方、ジャーナルレコード１００１で開始するトランザクション１（ＴＲ１）、及びジャーナルレコード１００５で開始するトランザクション３（ＴＲ３）は、ジャーナルブロック１０００内においては終了していない。よって、ロールフォワード手段１１１はＴＲ１にかかるジャーナルレコード１００１、及びＴＲ３にかかるジャーナルレコード１１０５をＤＢ（ＲＶ）１２１へ反映することができない。したがって、ロールフォワード手段１１１は、次回の動作時にジャーナルブロック１０００を再度読み込む必要がある。後述するように、ロールフォワード手段１１１は、ステップ９１３において、次回の動作のために、ＤＢ（ＲＶ）１２１へ反映できなかったトランザクショの開始ジャーナルレコードの位置を保存し、ステップ９１８において、管理していたジャーナルレコードのうち最も前に位置するジャーナルレコードの位置を未反映ジャーナルレコード位置情報１２４へ、そのジャーナルレコードの属するジャーナルブロックの循環通番をロールフォワード対象循環通番１２５へ保存する。図１１に示す例の場合、ロールフォワード手段１１１は、ジャーナルレコード１００１の位置を未反映ジャーナルレコード位置情報１２４へ、ジャーナルブロック１０００が持つ循環通番をロールフォワード対象循環通番１２５へ保存することとなる。
【０１０１】
ロールフォワード手段１１１は、次回の動作の際、未反映ジャーナルレコード位置１２４を参照し、前回未反映のジャーナルレコード１００１の位置を取得し（ステップ９０１）、ジャーナルブロック１０００を再度読み込む（ステップ９０９）。このとき、ロールフォワード手段１１１は、ジャーナルレコード１００２、１００３及び１００４も再度読み込んでしまうこととなるが、これらのジャーナルレコードは、この前回読み込んだジャーナルブロック内で完結しているトランザクションにかかるものであるため、既にＤＢ（ＲＶ）１２１に反映済みと判断できる。よって、これらのジャーナルレコード１００２、１００３及び１００４については、ロールフォワード手段１１１はＤＢ（ＲＶ）１２１への反映は行わない。
【０１０２】
ついで、ロールフォワード手段１１１は、次のジャーナルブロック１０１０を読み込む。ここで、ロールフォワード手段１１１は、ＴＲ１の終了を示すジャーナルレコード１０１４を発見したならば、ＴＲ１にかかるジャーナルレコード１００１、１０１１及び１０１４をＤＢ（ＲＶ）１２１に反映する（ステップ９１２）。また、ロールフォワード手段１１１は、未反映ジャーナルレコード位置情報１２４から開始ジャーナル１００１の位置を削除する（ステップ９１３）。
【０１０３】
同様にして、ロールフォワード手段１１１がジャーナルブロック１０１０の持つジャーナルレコードを全て処理すると、未反映ジャーナルレコード位置情報１２４が管理する開始ジャーナルレコードの位置は、ＴＲ３の開始ジャーナルレコード１００５の位置となる。ロールフォワード手段１１１は、さらに次回のロールフォワード手段の動作に備えて、このジャーナルレコード１００５の位置を未反映ジャーナルレコード位置１２４に保持する（ステップ９１８）。
【０１０４】
ステップ９１２が終了したならば、ロールフォワード手段１１１は、未反映ジャーナルレコード位置情報１２４を更新する（ステップ９１３）。上述したとおり、ステップ９０９にて読み込んだ現在のジャーナルブロック中に、対応するトランザクション終了ジャーナルのないトランザクション開始ジャーナルが存在すれば、その位置（どのジャーナルブロック何番目か）を記憶し、トランザクション終了ジャーナルがあれば、記憶済のトランザクション開始ジャーナルの中から対応するものを探し、そのトランザクション開始ジャーナルの位置情報を削除する。
【０１０５】
ステップ９０９において読み込んだジャーナルブロックの処理が終了したならば、ロールフォワード手段１１１は、ステップ９０７において排他を要求した範囲のジャーナルブロックを全て処理したかを確認する（ステップ９１４）。排他した範囲の全ジャーナルブロックの処理が完了しているならば、ロールフォワード手段１１１は、今回の動作にかかる情報、すなわち今回読み込んだジャーナルブロックの終端であるジャーナルブロック最終読込位置１２３、未反映ジャーナルレコード位置１２４、及びそのジャーナルレコードが属するジャーナルブロックの循環通番であるロールフォワード対象循環通番１２５を保存して処理を終了する（ステップ９１８）。
【０１０６】
一方、排他範囲の全ジャーナルブロックが処理されていない場合は、ロールフォワード手段１１１は、ジャーナルブロックの読み込み位置を先に進め（ステップ９１５）、読み込み位置が領域終端に達していないか確認する（ステップ９１６）。領域終端に達していた場合は、次の読み込み位置をジャーナル領域の先頭に位置するジャーナルブロックの位置まで戻した上、循環通番を１増やし、ステップ９０９から処理を再開する。
【０１０７】
最後に、図２及び図１２を用いて、排他手段１１４の動作について説明する。
【０１０８】
排他手段１１４は、まず、レプリケーション情報受信手段１１８又はロールフォワード手段１１１から排他要求を受け取ると（ステップ１１０１）、どちらの手段からの要求であるかを判別する（ステップ１１０２）。レプリケーション情報受信手段１１８による要求である場合、排他手段１１４はその要求種別を判別し（ステップ１１０３）、書き込みのための排他取得である場合は、レプリケーション情報受信手段１１８が通知してきた書き込みボリューム、書き込み始点アドレス及び書き込み終点アドレスを、排他情報１１６として登録する（ステップ１１０４）。このとき、前述のステップ８１１によりジャーナル領域全体が排他されていた場合は、ジャーナル領域全体にかかる排他情報を、レプリケーション情報受信手段１１８から要求された内容で更新する。また、要求種別が書き込み完了後の排他開放であった場合は、排他情報１１６に登録されている中から一致する情報を削除する（ステップ１１０５）。
【０１０９】
一方、排他要求がロールフォワード手段１１１によるものであった場合、排他手段１１４は、要求対象の読み込み先ボリューム、読み込み始点アドレス及び読み込み終点アドレスと、レプリケーション情報受信手段１１８の排他要求に基づいて排他情報１１６に登録されている書き込み先ボリューム、書き込み始点アドレス及び書き込み終点アドレスとの照合を行う（ステップ１１０６）。ここで双方の排他要求領域に重複部分がある場合、排他手段１１４は、ロールフォワード手段１１１に対してアクセス拒否を通知する（ステップ１１０７）。他方、重複部分が無い場合は、ロールフォワード手段１１１に対しアクセス許可を通知する（ステップ１１０８）。
【０１１０】
本実施の形態においては、ジャーナルボリューム（ＲＶ）１２０が、レプリケーション情報受信手段１１８により書き込まれた最新のジャーナルブロックの位置を、ロールフォワード手段１１１が速やかに特定できる循環型のジャーナル構造を採用している。これにより、ロールフォワード手段１１１は、レプリケーションがどこまで終了したかを速やかに判別し、最新のジャーナルブロック以降のジャーナルブロックがＤＢ（ＲＶ）１２１に不正に反映されることを防ぎ、常に最新のジャーナルをＤＢに反映できる。
【０１１１】
また、本実施の形態においては、排他手段１１４が、ジャーナルブロック単位でアクセス排他制御を行う。これにより、レプリケーション情報受信手段１１８が書き込み途中のジャーナルを、ロールフォワード手段１１１が読み込む事を防止し、両者のアクセス衝突によるＤＢ（ＲＶ）１２１の不正反映を防ぎ、整合性を維持することができる。
【０１１２】
また、本実施の形態においては、レプリケーション情報受信手段１１８にレプリケーション速度を管理する機能を持たせ、レプリケーション情報受信手段１１８及びロールフォワード手段１１１が、レプリケーション速度に応じて一度に排他するジャーナルブロックの個数を変更できるようにした。これにより、レプリケーション速度が速い場合は、排他制御によるオーバヘッドを最小限に抑え、高速なレプリケーションを実現することができる。一方、レプリケーション速度が低下した場合、レプリケーション情報受信手段１１８及びロールフォワード手段１１１が、一度に排他するジャーナルの個数を減らす。これにより、ロールフォワード手段１１１は、最新のジャーナルブロックの直近までレプリケーションを進行できる。したがって、排他待ちによりロールフォワードが進行せず、ＲＰＯが伸びてしまうという事態を回避することができる。
【０１１３】
また、本実施の形態においては、レプリケーション情報受信手段１１８に順序型レプリケーションの動作状態を管理する機能を持たせ、順序型レプリケーションが動作していないときは、レプリケーション情報受信手段１１８がジャーナルブロック（ＲＶ）１２０全体に排他をかけることで、ロールフォワード手段１１１によるジャーナル読み込みを抑止する。これにより、レプリケーション開始時や回線障害時などレプリケーションが順序型とならない状態においては、書き込み順序が不明のジャーナルによるＤＢ（ＲＶ）１２１の不正反映を防ぎ、整合性を維持することができる。また、このときロールフォワード手段１１１は、レプリケーション状態に関係なく稼動させたままにしておいても、ＤＢ（ＲＶ）１２１に悪影響を及ぼすことが無いため、リモートサイト１１０の運用の簡易化を実現できる。
【０１１４】
さらに、本実施の形態は、現在のストレージ装置のストレージコントローラが持つプログラム（ファームウェア）を置換し、その機能を変更することによって容易に実装することができる。
【０１１５】
すなわち、本発明により、ジャーナルのみをストレージ装置間で転送しレプリケーションを行う方式において、ＲＰＯの短縮と低ランニングコストとを両立することができる。
【０１１６】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【０１１７】
例えば、上述の実施の形態では、本発明を主にハードウェアにより構成されるものとして説明したが、これに限定されるものではなく、任意の処理を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にコンピュータプログラムを実行させることにより論理的に実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【０１１８】
１００  メインサイト
１０１  ＤＢ更新手段
１０２  ストレージ装置
１０３  ストレージコントローラ
１０４  レプリケーション情報送信手段
１０５  通信手段
１０６  レプリケーション状態情報
１０７  ジャーナルブロック
１０８  ジャーナルボリューム（ＭＶ）
１０９  ＤＢ（ＭＶ）
１１０  リモートサイト
１１１  ロールフォワード手段
１１２  ストレージ装置
１１３  ストレージコントローラ
１１４  排他手段
１１６  排他情報
１１８  レプリケーション情報受信手段
１１９  レプリケーション状態情報
１２０  ジャーナルボリューム（ＲＶ）
１２１  ＤＢ（ＲＶ）
１２３  ジャーナルブロック最終読込位置
１２４  未反映ジャーナルレコード位置
１２５  ロールフォワード対象循環通番
１２６  レプリケーション速度情報
【図１】
2013210919.tif 000003
【図２】
2013210919.tif 000004
【図３】
2013210919.tif 000005
【図４】
2013210919.tif 000006
【図５】
2013210919.tif 000007
【図６】
2013210919.tif 000008
【図７】
2013210919.tif 000009
【図８】
2013210919.tif 000010
【図９】
2013210919.tif 000011
【図１０】
2013210919.tif 000012
【図１１】
2013210919.tif 000013
【図１２】
2013210919.tif 000014