(57)【要約】【課題】リモートコピー技術を利用してデータをバックアップするマルチターゲット構成のコンピュータシステムにおいて、主サイトに障害が発生したときに、残る二つの副サイト間で、全データをコピーすることなく新たなペアを形成する。【解決手段】  第１の副サイトは、同期リモートコピーによって主サイトと関連付けられる。第２の副サイトは、非同期リモートコピーによって主サイトと関連付けられる。前記第１の副サイトの記憶システムは、ホストコンピュータから書き込まれたデータの領域を示す差分ビットマップを備える。前記主サイトのホストコンピュータに障害が発生した時、前記差分ビットマップが示す領域のデータのみを、前記第２の副サイトの記憶システムに転送する。【選択図】      図１
2006119745.tif 000002
【特許請求の範囲】
【請求項１】
第１のホストコンピュータと通信可能に接続された第１の記憶システムと、
第２のホストコンピュータ及び前記第１の記憶システムと通信可能に接続された第２の記憶システムと、
前記第１及び第２の記憶システムと通信可能に接続された第３の記憶システムと、を備え、
前記第１のホストコンピュータから前記第１の記憶システムに書き込まれたデータは、
同期リモートコピーによって前記第２の記憶システムに転送され、
非同期リモートコピーによって前記第３の記憶システムに転送されるコンピュータシステムにおいて、
前記第２の記憶システムは、
第１の差分ビットマップを備え、
前記第２のホストコンピュータからデータが書き込まれると、
前記第２のホストコンピュータからデータが書き込まれた領域に対応する前記第１の差分ビットマップのビットを更新し、
前記第１の差分ビットマップの更新された前記ビットに対応する領域のデータを、前記第３の記憶システムに転送することを特徴とするコンピュータシステム。
【請求項２】
前記第２の記憶システムが前記第１の差分ビットマップの更新された前記ビットに対応する領域のデータを前記第３の記憶システムに転送する前に、
前記第１の記憶システムは、前記第１のホストコンピュータから前記第１の記憶システムへのデータの書き込みを停止し、
前記第２の記憶システムは、前記第１及び第２の記憶システム間の同期リモートコピーによるデータの転送を停止し、
前記第１及び第３の記憶システムは、非同期リモートコピーによるデータの転送を完了することを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記第１の記憶システムは、前記第１及び第２の記憶システム間の同期リモートコピーによるデータの転送が停止する前に、前記第１のホストコンピュータから前記第１の記憶システムへのデータの書き込みを停止することを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
前記第１の記憶システムは、第２の差分ビットマップを備え、
前記第２の記憶システムは、前記第１及び第２の記憶システム間の同期リモートコピーによるデータの転送を停止し、
前記第１の記憶システムは、前記第１及び第２の記憶システム間の同期リモートコピーによるデータの転送が停止した後で前記第１のホストコンピュータからデータが書き込まれた領域に対応する前記第２の差分ビットマップのビットを更新し、
前記第１及び第３の記憶システムは、非同期リモートコピーによるデータの転送を完了し、
前記第２の記憶システムは、前記第２の差分ビットマップの更新された前記ビットに対応する領域のデータを前記第３の記憶システムに転送することを特徴とする請求項１に記載のコンピュータシステム。
【請求項５】
第１のホストコンピュータと通信可能に接続された第１の記憶システムと、
第２のホストコンピュータ及び前記第１の記憶システムと通信可能に接続された第２の記憶システムと、
前記第１及び第２の記憶システムと通信可能に接続された第３の記憶システムと、を備えるコンピュータシステムにおいて；
前記第１の記憶システムは、前記第１のホストコンピュータから前記データの書き込み命令を受信すると、
当該データの書き込みの順序を識別する更新順序識別子と、当該データとを第１のジャーナルレコードとして格納し、
当該更新順序識別子及び当該データを、同期リモートコピーによって前記第２の記憶システムに転送し、
前記第１のジャーナルレコードを非同期リモートコピーによって前記第３の記憶システムに転送し；
前記第２の記憶システムは、
前記第１の記憶装置から転送された前記更新順序識別子及び前記データを第２のジャーナルレコードとして格納し、
前記第１及び第２の記憶システム間の前記同期リモートコピーによるデータの転送を停止し、
前記第２のホストコンピュータからデータを書き込まれると、当該書き込まれたデータと、前記第１の記憶システムから転送された更新順序識別子と連続する更新順序識別子とを、前記第２のジャーナルレコードとして格納し、
前記第２のジャーナルレコードを、前記第３の記憶システムに転送し；
前記第３の記憶システムは、
前記第１の記憶システムから受信した前記第１のジャーナルレコードを格納し、
前記第２の記憶システムから受信した前記第２のジャーナルレコードを格納し、
前記格納した第１及び第２のジャーナルレコードのデータを、前記更新順序識別子の順に格納することを特徴とするコンピュータシステム。
【請求項６】
前記第３の記憶システムは、
前記第１の記憶システムから受信した前記第１のジャーナルレコードの格納が終了した後で、
前記第２の記憶システムから受信した前記第２のジャーナルレコードを格納することを特徴とする請求項５に記載のコンピュータシステム。
【請求項７】
前記第２の記憶システムは、
前記第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最大値が、前記第１の記憶システムから前記第２の記憶システムに転送された更新順序識別子の最大値以下である場合は、当該第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最大値より大きい更新順序識別子を有する前記第２のジャーナルレコードを、前記第３の記憶システムに転送し、
前記第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最大値が、前記第１の記憶システムから前記第２の記憶システムに転送された更新順序識別子の最大値より大きい場合は、当該第１の記憶システムから前記第２の記憶システムに転送された更新順序識別子の最大値より大きい更新順序識別子を有する前記第２のジャーナルレコードを、前記第３の記憶システムに転送することを特徴とする請求項５に記載のコンピュータシステム。
【請求項８】
前記第２の記憶システムは、
第３の差分ビットマップを備え、
前記第２のジャーナルレコードが消去されるとき、当該第２のジャーナルレコードに対応するデータが格納された領域に対応する前記第３の差分ビットマップのビットを更新し、
前記第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最小値が、前記第１の記憶システムから前記第２の記憶システムに転送された更新順序識別子の最大値より大きいか、又は、前記第２の記憶システムに格納された第２のジャーナルレコードの更新順序識別子の最小値が、前記第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最大値に１を加算した値より大きい場合は、前記第３の差分ビットマップの更新された前記ビットに対応する領域のデータを、前記第３の記憶システムに転送し、
前記第３の記憶システムは、前記第２のジャーナルレコードのデータを格納する前に、前記第２の記憶システムから転送された前記第３の差分ビットマップの更新された前記ビットに対応する領域のデータを格納することを特徴とする請求項７に記載のコンピュータシステム。
【請求項９】
第１のホストコンピュータと通信可能に接続された第１の記憶システムと、
第２のホストコンピュータ及び前記第１の記憶システムと通信可能に接続された第２の記憶システムと、
前記第１及び第２の記憶システムと通信可能に接続された第３の記憶システムと、を備え、
前記第１のホストコンピュータから前記第１の記憶システムに書き込まれたデータは、
同期リモートコピーによって前記第２の記憶システムに転送され、
非同期リモートコピーによって前記第３の記憶システムに転送されるコンピュータシステムの制御方法であって、
前記第２の記憶システムは、第１の差分ビットマップを備え、
前記第２のホストコンピュータから前記第２の記憶システムにデータが書き込まれる手順と、
前記第２のホストコンピュータからデータが書き込まれた領域に対応する前記第１の差分ビットマップのビットを更新する手順と、
前記第１の差分ビットマップの更新された前記ビットに対応する領域のデータを前記第２の記憶システムから前記第３の記憶システムに転送する手順と、を含むことを特徴とするコンピュータシステムの制御方法。
【請求項１０】
前記第１の差分ビットマップの更新された前記ビットに対応する領域のデータを前記第２の記憶システムから前記第３の記憶システムに転送する手順の前に、
前記第１のホストコンピュータから前記第１の記憶システムへのデータの書き込みを停止する手順と、
前記第１及び第２の記憶システム間の同期リモートコピーによるデータの転送を停止する手順と、
前記第１及び第３の記憶システム間の非同期リモートコピーによるデータの転送を完了する手順と、を実行することを特徴とする請求項９に記載のコンピュータシステムの制御方法。
【請求項１１】
前記第１及び第２の記憶システム間の同期リモートコピーによるデータの転送を停止する手順の前に、前記第１のホストコンピュータから前記第１の記憶システムへのデータの書き込みを停止する手順を実行することを特徴とする請求項１０に記載のコンピュータシステムの制御方法。
【請求項１２】
前記第１の記憶システムは、第２の差分ビットマップを備え、
前記第１及び第２の記憶システム間の同期リモートコピーによるデータの転送を停止する手順と、
前記第１及び第２の記憶システム間の同期リモートコピーによるデータの転送が停止した後で前記第１のホストコンピュータからデータが書き込まれた領域に対応する前記第２の差分ビットマップのビットを更新する手順と、
前記第１及び第３の記憶システム間の非同期リモートコピーによるデータの転送を完了する手順と、
前記第２の差分ビットマップの更新された前記ビットに対応する領域のデータを前記第２の記憶システムから前記第３の記憶システムに転送する手順と、を実行することを特徴とする請求項９に記載のコンピュータシステムの制御方法。
【請求項１３】
第１のホストコンピュータと通信可能に接続された第１の記憶システムと、
第２のホストコンピュータ及び前記第１の記憶システムと通信可能に接続された第２の記憶システムと、
前記第１及び第２の記憶システムと通信可能に接続された第３の記憶システムと、を備えるコンピュータシステムの制御方法であって、
前記第１のホストコンピュータから前記データの書き込み命令を受信すると、前記第１の記憶システムが、当該データの書き込みの順序を識別する更新順序識別子と、当該データとを第１のジャーナルレコードとして格納する手順と、
当該更新順序識別子及び当該データを、同期リモートコピーによって前記第１の記憶システムから前記第２の記憶システムに転送する手順と、
前記第１のジャーナルレコードを、非同期リモートコピーによって前記第１の記憶システムから前記第３の記憶システムに転送する手順と、
前記第１の記憶装置から前記第２の記憶システムに転送された前記更新順序識別子及び前記データを前記第２の記憶システムに第２のジャーナルレコードとして格納する手順と、
前記第１及び第２の記憶システム間の前記同期リモートコピーによるデータの転送を停止する手順と、
前記第２の記憶システムが、前記第２のホストコンピュータによって書き込まれたデータと、前記第１の記憶システムから転送された更新順序識別子と連続する前記更新順序識別子とを、前記第２のジャーナルレコードとして格納する手順と、
前記第２のジャーナルレコードを、前記第２の記憶システムから前記第３の記憶システムに転送する手順と、
前記第１の記憶システムから前記第３の記憶システムに転送された前記第１のジャーナルレコードを前記第３の記憶システムに格納する手順と、
前記格納した第１のジャーナルレコードのデータを、前記更新順序識別子の順に、前記第３の記憶システムに格納する手順と、
前記第２の記憶システムから前記第３の記憶システムに転送された前記第２のジャーナルレコードを前記第３の記憶システムに格納する手順と、
前記格納した第２のジャーナルレコードのデータを、前記更新順序識別子の順に、前記第３の記憶システムに格納する手順と、を含むことを特徴とするコンピュータシステムの制御方法。
【請求項１４】
前記第１の記憶システムから前記第３の記憶システムに転送された前記第１のジャーナルレコードを前記第３の記憶システムに格納する手順を実行した後で、前記第２の記憶システムから前記第３の記憶システムに転送された前記第２のジャーナルレコードを前記第３の記憶システムに格納する手順を実行することを特徴とする請求項１３に記載のコンピュータシステムの制御方法。
【請求項１５】
前記第２のジャーナルレコードを、前記第２の記憶システムから前記第３の記憶システムに転送する手順において、
前記第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最大値が、前記第１の記憶システムから前記第２の記憶システムに転送された更新順序識別子の最大値以下である場合は、当該第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最大値より大きい前記更新順序識別子を有する前記第２のジャーナルレコードを、前記第２の記憶システムから前記第３の記憶システムに転送し、
前記第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最大値が、前記第１の記憶システムから前記第２の記憶システムに転送された更新順序識別子の最大値より大きい場合は、当該第１の記憶システムから前記第２の記憶システムに転送された更新順序識別子の最大値より大きい前記更新順序識別子を有する前記第２のジャーナルレコードを、前記第２の記憶システムから前記第３の記憶システムに転送することを特徴とする請求項１３に記載のコンピュータシステムの制御方法。
【請求項１６】
前記第２の記憶システムは、第３の差分ビットマップを備え、
前記第２のジャーナルレコードが消去されるとき、当該第２のジャーナルレコードに対応するデータが格納された領域に対応する前記第３の差分ビットマップのビットを更新する手順と、
前記第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最小値が、前記第１の記憶システムから前記第２の記憶システムに転送された更新順序識別子の最大値より大きいか、又は、前記第２の記憶システムに格納された第２のジャーナルレコードの更新順序識別子の最小値が、前記第３の記憶システムに格納された第１のジャーナルレコードの更新順序識別子の最大値に１を加算した値より大きい場合は、前記第３の差分ビットマップの更新された前記ビットに対応する領域のデータを、前記第２の記憶システムから前記第３の記憶システムに転送する手順と、を含み、
前記格納した第２のジャーナルレコードのデータを前記更新順序識別子の順に前記第３の記憶システムに格納する手順を実行する前に、前記第２の記憶システムから転送された前記第３の差分ビットマップの更新された前記ビットに対応する領域のデータを前記第３の記憶システムに格納する手順を実行することを特徴とする請求項１５に記載のコンピュータシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおけるリモートコピーを利用したディザスタリカバリに関する。
【背景技術】
【０００２】
データストレージ市場では、大量のデータを格納した記憶システムが災害等で破壊されてもデータを喪失しない、いわゆるディザスタリカバリシステムが要求されている。このような市場の要求に応えるべく、リモートコピー技術を利用してデータをバックアップするコンピュータシステムが提供されている。これは、十分に離れた二つの地点に設置された記憶システムに同一のデータを格納するものである。一方の記憶システムのデータが更新されると、その更新は、リモートコピーによってもう一方の記憶システムに反映される。このため、二つの記憶システムのデータの同一性が確保される。
【０００３】
さらにデータの安全性を高めるため、相互に十分に離れた三つの地点に記憶システムを設置するコンピュータシステムが開示されている（特許文献１参照）。このコンピュータシステムでは、通常の業務に使用される第１の記憶システムと、遠隔地の第２の記憶システムとの間のデータの同一性は、同期リモートコピーによって確保される。一方、第１の記憶システムと、遠隔地の第３の記憶システムとの間のデータの同一性は、非同期リモートコピーによって確保される。
【０００４】
災害等に起因する障害によって第１の記憶システムを業務に使用することができなくなった場合、第２の記憶システムが第１の記憶システムの業務を引き継ぐ。このとき、第２の記憶システムも使用することができない場合は、第３の記憶システムが第１の記憶システムの業務を引き継ぐ。その結果、深刻な災害が発生した場合でも、データの喪失を防ぐことができる。
【０００５】
このように三つの地点に記憶システムを設置するコンピュータシステムでは、通常の運用時には、第２の記憶システムと第３の記憶システムとの間でデータが複製されない。このため、第２の記憶システムと第３の記憶システムとの間では、データの同一性が保証されない。したがって、第１の記憶システムの業務を第２の記憶システムが引き継いだ後で、さらに第２の記憶システムに障害が発生した場合、第３の記憶システムが第２の記憶システムの業務を引き継ぐことができない。
【０００６】
このため、第１の記憶システムの業務を引き継いだ第２の記憶システムの運用が開始される前に、第２の記憶システムと第３の記憶システムとの間のデータの同一性を確保する。第２の記憶システムの運用が開始された後は、第２の記憶システムのデータの更新をリモートコピーによって第３の記憶システムに反映させる。その結果、第２の記憶システムに障害が発生したときに、第３の記憶システムが第２の記憶システムの業務を引き継ぐことができる。
【特許文献１】特開２００３−１２２５０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のように、第１の記憶システムの業務を第２の記憶システムが引き継ぐときに、第２の記憶システムのデータを全て第３の記憶システムに複製すれば、これらの記憶システムのデータの同一性が確保される。しかし、このように全てのデータを複製することは、長い時間を要する。特に、近年の大容量の記憶システムでは、数時間以上を要する場合がある。全てのデータの複製が終了するまで、第２の記憶システムを業務に使用することができないとすれば、長時間のシステム停止によって深刻な経済的損失が発生するおそれがある。
【課題を解決するための手段】
【０００８】
第１の発明は、第１のホストコンピュータと通信可能に接続された第１の記憶システムと、第２のホストコンピュータ及び前記第１の記憶システムと通信可能に接続された第２の記憶システムと、前記第１及び第２の記憶システムと通信可能に接続された第３の記憶システムと、を備え、前記第１のホストコンピュータから前記第１の記憶システムに書き込まれたデータは、同期リモートコピーによって前記第２の記憶システムに転送され、非同期リモートコピーによって前記第３の記憶システムに転送されるコンピュータシステムにおいて、前記第２の記憶システムは、第１の差分ビットマップを備え、前記第２のホストコンピュータからデータが書き込まれると、前記第２のホストコンピュータからデータが書き込まれた領域に対応する前記第１の差分ビットマップのビットを更新し、前記第１の差分ビットマップの更新された前記ビットに対応する領域のデータを、前記第３の記憶システムに転送することを特徴とする。
【０００９】
第２の発明は、第１のホストコンピュータと通信可能に接続された第１の記憶システムと、第２のホストコンピュータ及び前記第１の記憶システムと通信可能に接続された第２の記憶システムと、前記第１及び第２の記憶システムと通信可能に接続された第３の記憶システムと、を備える、前記第１の記憶システムに格納されているデータは、同期リモートコピーによって、前記第２の記憶システムに転送され、前記第１の記憶システムに格納されているデータは、非同期リモートコピーによって、前記第３の記憶システムに転送され、前記第１のホストコンピュータ及び前記第１の記憶システムが正常に稼動しているときは、前記第２のホストコンピュータが前記第２の記憶システムにデータを書き込まないコンピュータシステムにおいて；前記第１の記憶システムは、前記第１のホストコンピュータから前記データの書き込み命令を受信すると、当該データの書き込みの順序を識別する更新順序識別子と、当該データとを第１のジャーナルレコードとして格納し、当該更新順序識別子及び当該データを、前記同期リモートコピーによって前記第２の記憶システムに転送し、前記第１のジャーナルレコードを前記非同期リモートコピーによって前記第３の記憶システムに転送し；前記第２の記憶システムは、前記第１の記憶装置から転送された前記更新順序識別子及び前記データを第２のジャーナルレコードとして格納し、前記第１及び第２の記憶システム間の前記同期リモートコピーによるデータの転送を停止し、前記第２のホストコンピュータからデータを書き込まれると、当該書き込まれたデータと、前記第１の記憶システムから転送された更新順序識別子と連続する更新順序識別子とを、前記第２のジャーナルレコードとして格納し、前記第２のジャーナルレコードを、前記第３の記憶システムに転送し；前記第３の記憶システムは、前記第１の記憶システムから受信した前記第１のジャーナルレコードを格納し、前記第２の記憶システムから受信した前記第２のジャーナルレコードを格納し、前記格納した第１及び第２のジャーナルレコードのデータを、前記更新順序識別子の順に格納することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、第２の記憶システムに格納されたデータのうち、第３の記憶システムに格納されていないデータ（すなわち、差分データ）のみが、第３の記憶システムに転送され、複製される。さらに、第２の記憶システムには、第１の記憶システムの業務を引き継いだ後に第２の記憶システムにおいて更新されたデータに関する情報が記録される。このため、第１の記憶システムに障害が発生すると、直ちに、第２の記憶システムが業務を引き継ぐことができる。その結果、本発明によれば、長時間のシステム停止による経済的損失を抑えながら、災害等によるデータの喪失を防ぐことができる。
【発明を実施するための最良の形態】
【００１１】
＜システムの構成＞
図１は、本発明の第１の実施の形態のコンピュータシステムの機能ブロック図である。
【００１２】
本実施の形態のコンピュータシステムは、複数の記憶システム１００及び複数のホストコンピュータ１８０を含む。図１には、本実施の形態のコンピュータシステムに含まれる三つの記憶システム（１００Ａ、１００Ｂ及び１００Ｃ）を示す。以後、記憶システム１００Ａを単に記憶システムＡと記載する。同様にして、記憶システム１００Ｂを記憶システムＢ、記憶システム１００Ｃを記憶システムＣと記載する。これらの記憶システム１００は、接続パス２００を介して相互に通信可能に接続される。
【００１３】
記憶システム１００は、後で詳細に説明するように（図２）、制御部（記憶装置制御装置）と、記憶装置によって構成される記憶領域とを備える。各記憶システム１００は、接続パス１９０を介してホストコンピュータ１８０に接続され、データを記憶領域に格納する。記憶システムＡは、ホストコンピュータ１８０Ａ（ホストコンピュータＡ）に接続され、記憶システムＢは、ホストコンピュータ１８０Ｂ（ホストコンピュータＢ）に接続され、記憶システムＣは、別のホストコンピュータ（図示省略）に接続される。
【００１４】
これらの記憶システム１００は、災害等による障害発生時のバックアップのため、地理的に離して配置される。例えば、記憶システムＢは、記憶システムＡから１００ｋｍ程度の比較的近距離に配置され、記憶システムＣは、記憶システムＡから数１００ｋｍ以上の比較的遠距離に配置される。
【００１５】
本実施の形態では、通常時（すなわち、システムに障害が発生せず、正常に稼動しているとき）には、記憶システムＡが使用される。通常時には、ホストコンピュータＢは、記憶システムＢを使用しない。記憶システムＡ又はホストコンピュータＡに障害が発生したときには、記憶システムＢが記憶システムＡに代わって使用される。さらに、記憶システムＢ又はホストコンピュータＢに障害が発生したときには、記憶システムＣが記憶システムＢに代わって使用される。なお、このように、冗長部位（例えば、記憶システムＢ又は記憶システムＣ）を障害部位（例えば、記憶システムＡ）に代わって運用することをフェイルオーバーという。
【００１６】
後述するように、通常時には、同期リモートコピーによって、記憶システムＡのデータの複製が記憶システムＢに格納される。さらに、非同期リモートコピーによって、記憶システムＡのデータの複製が記憶システムＣに格納される。以後、複製元の記憶システムを正記憶システム、複製先の記憶システムを副記憶システムと記載する。すなわち、通常時には、記憶システムＡが正記憶システムであり、記憶システムＢ及びＣが副記憶システムである。また、リモートコピーによって関連付けられる二つの記憶システム１００又は論理ボリューム（後述）を、ペアと記載する。すなわち、通常時には、記憶システムＡと記憶システムＢはペアであり、記憶システムＡと記憶システムＣもペアである。
【００１７】
同期リモートコピーによれば、正記憶システムＡのデータが同期的に副記憶システムＢに複製される。すなわち、正記憶システムＡは、ホストコンピュータＡからデータの書込命令を受信すると、当該書込命令に係るデータを格納する。さらに、当該データがリモートコピーの対象であれば、正記憶システムＡは、接続パス２００を介して副記憶システムＢに当該データを転送する。副記憶システムＢは、当該転送されたデータを格納する。その後、データの格納の完了を正記憶システムＡに通知する。正記憶システムＡは、当該格納完了通知を受信すると、ホストコンピュータＡに当該データの書込完了を通知する。その結果、ホストコンピュータが当該データの書込完了の通知を受信したときには、正記憶システムＡと副記憶システムＢの当該データは必ず一致している。
【００１８】
一方、非同期リモートコピーによれば、正記憶システムＡのデータが非同期的に副記憶システムＣに複製される。すなわち、正記憶システムＡは、ホストコンピュータＡからデータの書込命令を受信すると、当該書込命令に係るデータを格納する。このデータの格納が終了すると、正記憶システムＡは、ホストコンピュータＡに当該データの書込完了を通知する。さらに、当該データがリモートコピーの対象であれば、正記憶システムＡは、接続パス２００を介して副記憶システムＣに当該データを転送する。副記憶システムＣは、当該転送されたデータを格納する。その後、データの格納の完了を正記憶システムＡに通知する。この転送は、正記憶システムＡの当該データが格納された後直ちに実行されてもよいが、任意の時間経過後に実行されてもよい。例えば、接続パス２００の通信が混雑しているときは、混雑が解消した後で転送されてもよい。正記憶システムＡは、副記憶システムＣからデータの格納完了の通知を受信したか否かに関らず、ホストコンピュータＡにデータの書込完了を通知する。その結果、ホストコンピュータがデータの書込完了の通知を受信しても、正記憶システムＡと副記憶システムＣのデータが一致していない場合がある。
【００１９】
本実施の形態において、非同期リモートコピーは、ジャーナル（後述）を転送することによって実行される。
【００２０】
なお、本実施の形態において、ホストコンピュータ１８０による記憶システム１００のデータの更新は、ホストコンピュータ１８０が発行するライト（書き込み）命令によって実行される。また、正記憶システムＡから副記憶システムＢへのデータの転送及び更新は、リモートライト命令によって実行される。正記憶システムＡから副記憶システムＣへのデータの転送及び更新は、ジャーナルリード処理によって実行される。
【００２１】
ホストコンピュータ１８０は、少なくとも、ＣＰＵ（図示省略）及びメモリ（図示省略）を備える。メモリに格納された各種のプログラム（アプリケーションプログラム）をＣＰＵが実行することによって、様々な機能が実現される。ホストコンピュータ１８０は、例えば、ＰＣ、ワークステーション又はメインフレームコンピュータ等である。
【００２２】
ホストコンピュータＡは、正記憶システムＡを使用して、企業や個人等のユーザに提供する処理（業務）を実行する。さらに、ホストコンピュータＡは、正記憶システムＡを保守・管理するためのコンピュータとしても使用される。
【００２３】
接続パス１９０は、ＬＡＮ等の汎用ネットワーク又はＦＣ（ＳＡＮを含む）等のストレージ専用接続である。ホストコンピュータＡと正記憶システムＡは、接続パス１９０を介して、所定の通信プロトコルによって通信する。ホストコンピュータＡは、接続パス１９０によって正記憶システムＡの制御部に接続され、論理ボリューム（後述）に対するアクセス命令を発行する。
【００２４】
ホストコンピュータＢは、ホストコンピュータＡと同様に構成され、副記憶システムＢに接続される。ホストコンピュータＢは、通常時（すなわち、ホストコンピュータＡ及び記憶システムＡが正常に稼動しているとき）は、企業や個人等のユーザに提供する処理を実行しない。しかし、ホストコンピュータＡ又は正記憶システムＡに障害が発生すると、ホストコンピュータＢは、記憶システムＢを使用して、企業や個人等のユーザに提供する処理をホストコンピュータＡに代わって実行する。
【００２５】
なお、ホストコンピュータＡ又は正記憶システムＡに障害が発生した場合とは、正常に稼動しない場合であり、災害等による障害が発生した場合のほか、保守のための計画停止も含む。
【００２６】
ホストコンピュータＢは、さらに、差分形成指示部２６０を備える。差分形成指示部２６０は、ホストコンピュータＢのメモリ（図示省略）に格納され、ＣＰＵ（図示省略）によって実行されるプログラムである。差分形成指示部２６０は、ホストコンピュータＢがホストコンピュータＡに代わって使用されるときに、記憶システムＢを正記憶システム、記憶システムＣを副記憶システムとするペアを形成する。このとき、差分形成指示部２６０は、所定の条件が満たされる場合、記憶システムＢに格納された全てのデータを記憶システムＣに複製せず、差分データのみを複製することによってペアを形成する。本発明は、この差分データの管理及び差分データを用いたペア形成に関する。差分形成指示部２６０が実行する処理については、後で詳細に説明する。
【００２７】
接続パス２００は、ＬＡＮ等の汎用ネットワーク又はＦＣ（ＳＡＮを含む）等のストレージ専用接続である。記憶システム１００は、接続パス２００を介して、所定の通信プロトコルによって相互に通信する。記憶システム１００は、制御部が接続パス２００を介して相互に通信することによって、データをリモートコピーする。
【００２８】
本実施の形態において、記憶システム１００は、リモートコピーの対象となるデータが更新されるときに、その更新についてのジャーナルを作成して記憶領域に格納し、このジャーナルに基づいてデータを複製する。各記憶システム１００がジャーナルを保持する。後述するように、非同期リモートコピーによるペアにおいては、正記憶システム１００から副記憶システム１００にジャーナルが転送され、このジャーナルのデータが副記憶システム１００に反映される。その結果、正記憶システム１００のデータの更新が副記憶システム１００のデータに反映される。
【００２９】
図１に示すように、正記憶システム１００Ａ及び副記憶システム１００Ｂは、命令受信部２１０、リードライト部２２０及び差分形成部２６５を備える。副記憶システム１００Ｃは、ジャーナルリード（ＪＮＬＲＤ）部２４０、リードライト部２２０、リストア部２５０及び差分形成部２６５を備える。これらは、記憶システム１００の制御部に設けられたメモリ（図示省略）に格納され、ＣＰＵ（図示省略）によって実行されるプログラムによって実現される。
【００３０】
各記憶システム１００の記憶領域は、論理ボリューム２３０に分割されて管理される。論理ボリューム２３０とは、ホストコンピュータ１８０によって一つのディスクドライブとして認識される論理的な領域である。一つの論理ボリューム２３０は、一つの記憶装置内の領域であってもよい。また、一つの論理ボリューム２３０は、論理アドレスと物理アドレスの変換によって、複数の記憶装置の領域に対応付けられてもよい。
【００３１】
本実施の形態において、正記憶システムＡの論理ボリューム２３０は、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３及びＪＮＬ−Ａ等と名付けられる。同様に、副記憶システムＢの論理ボリューム２３０は、ｄａｔａ１、ｄａｔａ２、ｄａｔａ４及びＪＮＬ−Ｂ等と名付けられる。副記憶システムＣの論理ボリューム２３０は、ＣＯＰＹ１、ＣＯＰＹ２、ｄａｔａ５及びＪＮＬ−Ｃ等と名付けられる。
【００３２】
ホストコンピュータＡが正記憶システムＡにデータの更新の命令を発行すると、正記憶システムＡは、当該データを更新すると共に、ジャーナルを作成してＪＮＬ−Ａに格納する（２７０）。次に、正記憶システムＡは、当該データを副記憶システムＢに同期リモートコピーする（２７５）。副記憶システムＢは、当該データを更新する（２８０）。
【００３３】
さらに、正記憶システムＡから副記憶システムＣにジャーナルが転送されることによって、当該データが非同期リモートコピーされる（２８５）。この転送は、副記憶システムＣのＪＮＬＲＤ部２４０が実行するジャーナルリード処理によって実現される。あるいは、正記憶システムＡがジャーナルの転送を命令してもよい。
【００３４】
副記憶システムＣは、転送されたジャーナルのデータに基づいて、当該データの更新を反映させる（２９０）。このようにジャーナルのデータに基づいてデータの更新を反映させる処理をリストアという。これらの処理については、後で詳細に説明する。
【００３５】
処理対象のデータは、いずれかの論理ボリューム２３０に格納されている。記憶システム１００における論理ボリューム２３０の容量及び物理的な格納位置（物理アドレス）は、記憶システム１００に接続された保守用のコンピュータ（図示省略）又はホストコンピュータ１８０を用いて設定することができる。各論理ボリューム２３０の物理アドレスは、後述するボリューム情報４００に格納される。物理アドレスは、例えば、記憶システム１００内の一つ以上の記憶装置を識別する番号（記憶装置番号）、及び、記憶装置内の記憶領域を一意に示す値、例えば、記憶装置の記憶領域の先頭からの位置を示す値によって構成される。以下の説明では、物理アドレスは、記憶装置番号及び記憶装置の記憶領域の先頭からの位置の組とする。
【００３６】
記憶システム１００に格納されるデータは、論理ボリューム２３０を識別する番号（論理ボリューム番号）、及び、記憶領域を一意に示す値、例えば、論理ボリュームの記憶領域の先頭からの位置（論理アドレス内位置）を示す値によって一意に識別される。以下、論理ボリューム番号及び論理アドレス内位置を示す値の組を論理アドレスとする。ホストコンピュータ１８０は、論理アドレスを指定して、記憶システム１００に格納されたデータを参照又は更新する。
【００３７】
以下、リモートコピーの際に複製元となる論理ボリューム２３０を正論理ボリューム、複製先となる論理ボリューム２３０を副論理ボリュームとする。また、正論理ボリュームと副論理ボリュームの組によってペアを定義する。ペアとなる正論理ボリュームと副論理ボリュームの関係及びそれらの状態等は、後述するペア情報５００に格納される。
【００３８】
また、非同期リモートコピーによって正論理ボリュームのデータの更新を副論理ボリュームに反映する際に、正論理ボリュームにおけるデータ更新順序に従って副論理ボリュームのデータを更新するために、グループという管理単位を設ける。
【００３９】
例えば、ホストコンピュータ１８０が、第一の正論理ボリュームの第一のデータを更新し、その後、その第一のデータを読み出し、その第一のデータの数値を用いて、第二の正論理ボリュームの第二のデータを更新する場合がある。その後、正論理ボリュームから副論理ボリュームへの非同期リモートコピーが実行されるときに、第一の正論理ボリュームについてのリモートコピーと、第二の正論理ボリュームについてのリモートコピーとが独立に行われると、第一のデータが複製される前に、第二のデータが複製される場合がある。この場合、第二のデータが複製された後、第一のデータが複製される前に、システム障害等によってリモートコピーが停止すると、第一の副論理ボリュームと第二の副論理ボリュームとの間のデータ整合性が失われる。
【００４０】
このように非同期リモートコピーが途中で停止した場合にも、第一の副論理ボリュームと第二の副論理ボリュームとの間のデータ整合性を保つために、データの更新順序を維持する必要のある論理ボリューム２３０を同じグループに登録する。そして、データの更新毎に、後述するグループ情報６００における更新番号を割り当て、更新番号順に副論理ボリュームに対するデータの複製を実行する。なお、更新番号の代わりに更新時刻を用いてもよい。
【００４１】
例えば、図１では、正記憶システムＡの論理ボリュームＤＡＴＡ１及び論理ボリュームＤＡＴＡ２から副記憶システムＣの論理ボリュームＣＯＰＹ１及び論理ボリュームＣＯＰＹ２へデータが非同期リモートコピーされる際に、データの更新順序が維持される必要がある。このため、正記憶システムＡには、論理ボリュームＤＡＴＡ１、論理ボリュームＤＡＴＡ２及びこれらに対応するジャーナル論理ボリュームＪＮＬ−Ａからなるグループ２（以下、グループ番号がｎであるグループをグループｎと記載する）が設けられる（図１１参照）。一方、副記憶システムＣには、論理ボリュームＤＡＴＡ１の複製である論理ボリュームＣＯＰＹ１、論理ボリュームＤＡＴＡ２の複製である論理ボリュームＣＯＰＹ２、及び、これらに対応するジャーナル論理ボリュームＪＮＬ−Ｃからなるグループ１が設けられる（図１３参照）。
【００４２】
一方、正記憶システムＡと副記憶システムＢとの間には、本来、グループを設ける必要がない。同期リモートコピーが中断しても、データの整合性が失われることがないためである。しかし、本発明では、後で詳細に説明するように（図２９〜図３２）、正記憶システムＡに障害が発生したときに、副記憶システムＢ及びＣがペアを構成するために、副記憶システムＢにもジャーナル論理ボリューム２３０が設けられる。副記憶システムＢのジャーナル論理ボリューム２３０と、副記憶システムＣのジャーナル論理ボリューム２３０とを整合させるために、正記憶システムＡと副記憶システムＢとの間にも、グループが設けられる。
【００４３】
すなわち、正記憶システムＡには、論理ボリュームＤＡＴＡ１、論理ボリュームＤＡＴＡ２及びこれらに対応するジャーナル論理ボリュームＪＮＬ−Ａからなるグループ１が設けられる（図１１参照）。一方、副記憶システムＢには、論理ボリュームＤＡＴＡ１の複製である論理ボリュームｄａｔａ１、論理ボリュームＤＡＴＡ２の複製である論理ボリュームｄａｔａ２、及び、これらに対応するジャーナル論理ボリュームＪＮＬ−Ｂからなるグループ１が設けられる（図１２参照）。
【００４４】
正記憶システムＡは、正論理ボリュームＤＡＴＡ１及びＤＡＴＡ２のデータを更新する際に、後述するジャーナルを作成し、正記憶システムＡ内の論理ボリューム２３０に格納する。本実施の形態では、グループ毎にジャーナルのみを格納する論理ボリューム（以下、ジャーナル論理ボリュームと記載する）を設ける。図１では、グループ１のジャーナル論理ボリュームは、ＪＮＬ−Ａである。
【００４５】
副記憶システムＣのグループ１にも、ジャーナル論理ボリュームＪＮＬ−Ｃを設ける。このジャーナル論理ボリュームＪＮＬ−Ｃは、正記憶システムＡから副記憶システムＣに転送されたジャーナルを格納するために使用される。転送されたジャーナルをジャーナル論理ボリュームＪＮＬ−Ｃに格納することによって、例えば、正記憶システムＡからジャーナルを受信した時に副記憶システムＣの負荷が高い場合に、副論理ボリュームＣＯＰＹ１及びＣＯＰＹ２のデータを更新せず、副記憶システムＣの負荷が低くなった後に更新することもできる。あるいは、接続パス２００が複数ある場合、これらを介して正記憶システムＡから副記憶システムＣへのジャーナルの転送を多重に行い、接続パス２００の転送能力を有効に利用することができる。
【００４６】
この場合、更新番号が小さいジャーナルより先に更新番号が大きいジャーナルが副記憶システムＣに到達することがある。この場合、更新番号が大きいジャーナルは、更新番号が小さいジャーナルが到達するまで、ジャーナル論理ボリュームＪＮＬ−Ｃに格納される。その後、更新番号の順に、ジャーナルの内容が副論理ボリュームＣＯＰＹ１及びＣＯＰＹ２に反映される。すなわち、更新番号の順に、副論理ボリュームＣＯＰＹ１及びＣＯＰＹ２にジャーナルのデータが書き込まれる。こうして、副論理ボリュームＣＯＰＹ１及びＣＯＰＹ２のデータが、正論理ボリュームＤＡＴＡ１及びＤＡＴＡ２のデータと同様に更新される。
【００４７】
一方、副記憶システムＢにも、ジャーナル論理ボリュームＪＮＬ−Ｂが設けられる。正記憶システムＡと副記憶システムＢとの間では、同期リモートコピーが実行される。同期リモートコピーは、途中で停止しても、上記のようにデータ整合性が失われる問題を生じない。したがって、通常は、副記憶システムＢにジャーナル論理ボリュームＪＮＬ−Ｂを設ける必要はない。しかし、本発明では、ホストコンピュータＡ又は正記憶システムＡに障害が発生した場合に、記憶システムＢと記憶システムＣとの間にペアを形成する。このとき、差分データのみを複製してペアを形成するために、ジャーナル論理ボリュームＪＮＬ−Ｂが使用される。このジャーナル論理ボリュームＪＮＬ−Ｂを使用したペア形成については、後で詳細に説明する。
【００４８】
＜記憶システムの構成＞
図２は、本発明の第１の実施の形態のコンピュータシステムを構成する記憶システム１００の構成を示すブロック図である。
【００４９】
本実施の形態において、記憶システム１００は、一つ以上のホストアダプタ（ＣＨＡ）１１０、一つ以上のディスクアダプタ（ＤＫＡ）１２０、一つ以上のキャッシュメモリ（ＣＡＣＨＥ）１３０、一つ以上の共有メモリ（ＳＭ）１４０、一つ以上の記憶装置１５０、一つ以上のスイッチ（ＳＷＩＴＣＨ）１６０、及び、一つ以上の接続線１７０によって構成される。
【００５０】
ホストアダプタ１１０、ディスクアダプタ１２０、キャッシュメモリ１３０及び共有メモリ１４０は、スイッチ１６０によって相互に接続される。ディスクアダプタ１２０及び記憶装置１５０は、接続線１７０によって相互に接続される。さらに、記憶システム１００の設定、監視、保守等を行うための保守端末（図示省略）が全てのホストアダプタ１１０及びディスクアダプタ１２０に専用線によって接続される。
【００５１】
記憶装置１５０は、例えば、ハードディスクドライブ（ＨＤＤ）である。複数の記憶装置１５０がＲＡＩＤを構成してもよい。物理ボリュームは、記憶装置１５０によって提供される物理的な記憶領域である。物理ボリュームには、論理的な記憶領域である論理ボリューム２３０を対応させることができる。
【００５２】
ホストアダプタ１１０及びディスクアダプタ１２０は、命令受信部２１０等のプログラムを格納し、これらが実行する処理を制御する制御部（記憶装置制御装置）である。ホストアダプタ１１０及びディスクアダプタ１２０は、プロセッサ（図示省略）及びメモリ（図示省略）を備える。プロセッサがメモリに格納されたプログラムを実行することによって、これらの処理を制御する。例えば、命令受信部２１０、ジャーナルリード部２４０、差分形成部２６５及びリストア部のプログラムは、ホストアダプタ１１０のメモリに格納され、ホストアダプタ１１０のプロセッサによって実行される。また、リードライト部２２０のプログラムは、ディスクアダプタ１２０のメモリに格納され、ディスクアダプタ１２０のプロセッサによって実行される。
【００５３】
ホストアダプタ１１０は、ホストコンピュータ１８０と通信を行うための通信インターフェース（図示省略）を備え、入出力命令を送受信することによって、ホストコンピュータ１８０とキャッシュメモリ１３０との間のデータ転送を制御する。ホストアダプタ１１０は、接続パス１９０によってホストコンピュータ１８０と接続され、接続パス２００によって他の記憶システム１００と接続される。
【００５４】
ディスクアダプタ１２０は、記憶装置１５０に対するデータの読み出し（リード）、書き込み（ライト）等を制御すると共に、キャッシュメモリ１３０と記憶装置１５０との間のデータ転送を制御する。
【００５５】
キャッシュメモリ１３０は、ホストコンピュータ１８０から受信したデータ又は記憶装置１５０から読み出したデータを一時的に記憶する。
【００５６】
共有メモリ１４０は、記憶システム１００内の全てのホストアダプタ１１０及びディスクアダプタ１２０が共有して使用するメモリであり、主に制御情報等を記憶する。
【００５７】
なお、ホストアダプタ１１０は、キャッシュメモリ１３０及び共有メモリ１４０を介して、ディスクアダプタ１２０に対するデータのリード又はライトの命令をすることができる。また、ホストアダプタ１１０は、直接ディスクアダプタ１２０に対してデータのリード又はライトの命令をすることもできる。
【００５８】
キャッシュメモリ１３０及び共有メモリ１４０は、各ホストアダプタ１１０又はディスクアダプタ１２０の内部に設けられてもよい。
【００５９】
ユーザ（システム管理者等）は、記憶システム１００に接続される保守端末又はホストコンピュータ１８０等を使用して、所定のユーザインターフェースを介して、記憶システム１００を管理することができる。記憶システム１００の管理とは、例えば、複数の記憶装置１５０の増減の設定、ＲＡＩＤ構成の設定、接続パス１９０又は２００の設定、論理ボリューム２３０の設定、記憶システム１００の動作状態の確認、障害発生時の障害部位の特定、障害監視対象及び内容の設定、又は、障害情報の通知先の設定等である。なお、保守端末は、記憶システム１００に内蔵されてもよいし、記憶システム１００の外部に接続されてもよい。
【００６０】
＜ジャーナルの構成＞
ジャーナルは、記憶システム１００に格納されるリモートコピー対象データ（正論理ボリューム）の更新時に、当該データ更新に関する情報として作成されるデータであり、ライトデータ及び更新情報３００からなる。
【００６１】
ライトデータは、ホストコンピュータ１８０が正論理ボリュームのデータを更新する際に正論理ボリュームに書き込むデータの複製である。
【００６２】
更新情報３００は、更新毎のライトデータ及びジャーナル自体を管理する情報である。更新情報３００は、ライト命令を受信した時刻（更新時刻）、グループ番号、更新番号（後述するグループ情報６００の更新番号）、ライト命令の論理アドレス、ライトデータのデータサイズ、及び、ライトデータを格納したジャーナル論理ボリュームの論理アドレス等を含む。
【００６３】
更新時刻及び更新番号は、データ更新の識別子である。すなわち、更新時刻及び更新番号によってデータの更新順序が識別される。データ更新順序は、更新時刻又は更新番号のいずれか一方のみによって識別されてもよい。また、ホストコンピュータ１８０からのライト命令内に当該ライト命令の作成時刻が含まれる場合は、ライト命令を受信した時刻の代わりに、当該ライト命令の作成時刻を更新時刻として使用してもよい。
【００６４】
なお、一回の更新に関する更新情報３００と、その更新情報３００に対応するライトデータとの組を、一つのジャーナルレコードとする。
【００６５】
図３は、本発明の第１の実施の形態のジャーナルにおける更新情報３００の説明図である。
【００６６】
図３の例において、更新情報３００は、１９９９年３月１７日の２２時２０分１０秒に受信したライト命令に関するものである（３０１）。当該ライト命令は、ライトデータを論理ボリューム番号１の論理ボリューム（正論理ボリューム＃１）の記憶領域の先頭から７００の位置に格納する命令である（３０４）。また、このライトデータのデータサイズは３００である（３０５）。ジャーナルのライトデータは、論理ボリューム番号４の論理ボリューム（ジャーナル論理ボリューム＃４）の記憶領域の先頭から１５００の位置に格納される（３０６）。論理ボリューム番号１の論理ボリュームはグループ１に属し（３０２）、当該更新は、グループ１のデータ複製開始から４番目のデータ更新である（３０３）。
【００６７】
図４は、本発明の第１の実施の形態の更新情報３００（図３）とライトデータとの関係の説明図である。
【００６８】
図４は、正論理ボリューム＃１の記憶領域３４０及びジャーナル論理ボリューム＃４の記憶領域３５０を示す。ジャーナル論理ボリュームの記憶領域は、例えば、更新情報３００を格納する更新情報領域と、ライトデータを格納するライトデータ領域とに分割される。
【００６９】
更新情報領域には、先頭から、更新番号の順に更新情報３００が格納される。更新情報３００が更新情報領域の終端に達すると、再び更新情報領域の先頭から格納される。図４の例において、更新情報３００は、領域３１０に格納される。
【００７０】
ライトデータ領域には、先頭からライトデータが格納される。ライトデータがライトデータ領域の終端に達すると、再びライトデータ領域の先頭から格納される。図４の例において、ライトデータは、当該ライトデータに対応する更新情報３００に含まれる論理アドレス３０６及びデータサイズ３０５によって指定される領域３３０に格納される（３８０）。
【００７１】
ジャーナル論理ボリュームの記憶領域に占める更新情報領域とライトデータ領域との割合は、所定の値に固定されていてもよいし、保守端末又はホストコンピュータ１８０によって設定可能であってもよい。
【００７２】
正論理ボリューム＃１に格納されるライトデータは、ライト命令に含まれる論理アドレス（３０４）及びデータサイズ（３０５）によって指定されるデータ更新領域３２０に格納される（３６０、３７０）。これらの情報は、ポインタ情報７００として保持される（図１４参照）。
【００７３】
なお、本実施の形態において、ジャーナル論理ボリュームは、図４に示すように更新情報領域とライトデータ領域とに分割される。しかし、ジャーナル論理ボリュームを分割せず、記憶領域の先頭から、更新情報３００及びそれに対応するライトデータを格納してもよい。すなわち、最初の更新に関する更新情報３００をジャーナル論理ボリュームの先頭の領域に格納し、それに続く領域に最初の更新に関するライトデータを格納し、それに続く領域に２番目の更新に関する更新情報３００を格納し、それに続く領域に２番目の更新に関するライトデータを格納してもよい。
【００７４】
＜ボリューム情報の構成＞
次に、記憶システム１００が保持するボリューム情報４００について説明する。
【００７５】
図５は、本発明の第１の実施の形態の記憶システムＡによって保持されるボリューム情報４００の説明図である。図６は、本発明の第１の実施の形態の記憶システムＢによって保持されるボリューム情報４００の説明図である。図７は、本発明の第１の実施の形態の記憶システムＣによって保持されるボリューム情報４００の説明図である。
【００７６】
ボリューム情報４００は、各記憶システム１００に含まれる論理ボリューム２３０を管理する情報であり、論理ボリューム番号４０１、ボリューム状態４０２、フォーマット形式４０３、容量４０４、同期ペア番号４０５、非同期ペア番号４０６及び物理アドレス４０７（記憶装置番号４０７ａ及び先頭からの位置４０７ｂ）を含む。ボリューム情報４００は、ホストアダプタ１１０及びディスクアダプタ１２０から参照可能なメモリ、例えば、共有メモリ１４０に格納される。
【００７７】
ボリューム情報４００において、ボリューム状態４０２の値は、“正常”、“正”、“副”、“異常”又は“未使用”のいずれかである。
【００７８】
ボリューム状態４０２が“正常”又は“正”である論理ボリューム２３０は、ホストコンピュータ１８０から正常にアクセス可能な論理ボリュームである。
【００７９】
ボリューム状態４０２が“副”である論理ボリューム２３０は、ホストコンピュータ１８０からのアクセスを許可してもよい。
【００８０】
ボリューム状態４０２が“正”である論理ボリューム２３０は、正論理ボリュームである。すなわち、リモートコピーの際のデータの複製元である。
【００８１】
ボリューム状態４０２が“副”である論理ボリューム２３０は、副論理ボリュームである。すなわち、リモートコピーの際のデータの複製先である。
【００８２】
ボリューム状態４０２が“異常”である論理ボリューム２３０は、障害によって正常にアクセスできない論理ボリュームである。障害とは、例えば、論理ボリューム２３０を構成する記憶装置１５０の故障等である。
【００８３】
ボリューム状態４０２が“未使用”である論理ボリューム２３０は、使用されていない論理ボリュームである。
【００８４】
ボリューム情報４００において、同期ペア番号４０５及び非同期ペア番号４０６は、各論理ボリューム２３０に存在するペアを当該論理ボリューム２３０内で一意に識別する番号である。これらの番号は、後述するペア情報５００を特定する際に使用される。これらの番号は、ボリューム状態４０２が“正”又は“副”の場合（すなわち、当該論理ボリュームがペアを構成する場合）に有効である。
【００８５】
一方、ボリューム状態４０２が“正”又は“副”のいずれでもない論理ボリューム２３０（すなわち、ペアを構成しない論理ボリューム２３０）の同期ペア番号４０５及び非同期ペア番号４０６は、参照されない。したがって、このような論理ボリューム２３０の同期ペア番号４０５及び非同期ペア番号４０６は、いかなる値でもよい。図５〜図７では、ペアを構成しない論理ボリューム２３０の同期ペア番号４０５及び非同期ペア番号４０６を「−」と表示する。
【００８６】
なお、同期ペアのみに属する論理ボリューム２３０の非同期ペア番号４０６、及び、非同期ペアのみに属する論理ボリューム２３０の同期ペア番号４０５の値は、無効値（たとえば、“０”）である。
【００８７】
図５において、例えば、論理ボリューム番号１の論理ボリューム２３０は、フォーマット形式が「ＯＰＥＮ３」であり（４０３）、容量が３ＧＢであり（４０４）、記憶装置番号１の記憶装置１５０の記憶領域の先頭からデータが格納されており（４０７）、ホストコンピュータ１８０からアクセス可能であり、正論理ボリュームである（４０２）。
【００８８】
＜ペア情報の構成＞
次に、記憶システム１００が保持するペア情報５００について説明する。
【００８９】
図８は、本発明の第１の実施の形態の記憶システムＡによって保持されるペア情報５００の説明図である。図９は、本発明の第１の実施の形態の記憶システムＢによって保持されるペア情報５００の説明図である。図１０は、本発明の第１の実施の形態の記憶システムＣによって保持されるペア情報５００の説明図である。
【００９０】
ペア情報５００は、各記憶システム１００に含まれる論理ボリューム２３０のペアを管理する情報であり、ペア番号５０１、ペア状態５０２、正記憶システム番号５０３、正論理ボリューム番号５０４、副記憶システム番号５０５、副論理ボリューム番号５０６、グループ番号５０７、コピー済みアドレス５０８及び差分ビットマップ（ＢＭ）位置５０９を含む。ペア情報５００は、ホストアダプタ１１０及びディスクアダプタ１２０から参照可能なメモリ、例えば、共有メモリ１４０に格納される。
【００９１】
ペア情報５００において、ペア番号５０１は、各記憶システム１００に存在するペアの当該記憶システム１００内における一意の識別子である。ペア番号５０１は、ボリューム情報４００の同期ペア番号４０５及び非同期ペア番号４０６と対応する。
【００９２】
ペア状態５０２の値は、“正常”、“異常”、“未使用”、"コピー未”、“コピー中”のいずれかである。
【００９３】
“正常”は、正論理ボリューム２３０のリモートコピーが正常に行われていることを示す。
【００９４】
“異常”は、障害のため、正論理ボリューム２３０についてのリモートコピーを行うことができないことを示す。障害とは、例えば、接続パス２００の断線等である。
【００９５】
“未使用”は、当該ペア番号５０１に対応するペアが存在しないことを示す。すなわち、当該ペア番号５０１に対応するペア情報は有効でない。
【００９６】
“コピー中”は、初期コピー処理が実行中であることを示す。ここで、初期コピー処理とは、論理ボリューム２３０のペアを形成する際に実行される最初のリモートコピーの処理である。
【００９７】
“コピー未”は、初期コピー処理がまだ実行されていないことを示す。
【００９８】
正記憶システム番号５０３は、当該ペアに属する正論理ボリューム２３０を含む正記憶システム１００を特定する番号である。
【００９９】
正論理ボリューム番号５０４は、正記憶システム１００内で当該ペアに属する正論理ボリューム２３０を特定する番号である。
【０１００】
副記憶システム番号５０５は、当該ペアに属する副論理ボリューム２３０を含む副記憶システム１００を特定する番号である。
【０１０１】
副論理ボリューム番号５０６は、副記憶システム１００内で当該ペアに属する副論理ボリューム２３０を特定する番号である。
【０１０２】
グループ番号５０７は、正記憶システム１００においては、正論理ボリューム２３０が属するグループ番号である。副記憶システムにおいては、副論理ボリューム２３０が属するグループ番号である。
【０１０３】
コピー済みアドレス５０８は、初期コピー処理において使用される。
【０１０４】
差分ＢＭ位置５０９は、当該ペアに対応する差分ＢＭの格納位置を示す。差分ＢＭ位置５０９は、例えば、共有メモリ１４０における格納位置である。差分ＢＭについては、後で詳細に説明する。
【０１０５】
図８において、例えば、ペア番号５０１が“１”のペアは、正記憶システムＡ内の論理ボリューム番号１の正論理ボリューム２３０と、副記憶システムＢ内の論理ボリューム番号１の副論理ボリューム２３０とによって構成されるペアであり、リモートコピーは正常に行われている。また、当該ペアに対応する差分ＢＭは、位置“ａａａ”に格納される。ここで、“ａａａ”は、共有メモリ１４０内の所定のアドレスである。
【０１０６】
＜グループ情報の構成＞
次に、記憶システム１００が保持するグループ情報６００について説明する。
【０１０７】
図１１は、本発明の第１の実施の形態の記憶システムＡによって保持されるグループ情報６００の説明図である。図１２は、本発明の第１の実施の形態の記憶システムＢによって保持されるグループ情報６００の説明図である。図１３は、本発明の第１の実施の形態の記憶システムＣによって保持されるグループ情報６００の説明図である。
【０１０８】
グループ情報６００は、グループ番号６０１、グループ状態６０２、ペア集合６０３、ジャーナル論理ボリューム番号６０４、更新番号６０５、複製種類６０６、相手記憶システム番号６０７及び相手グループ番号６０８を含む。グループ情報６００は、ホストアダプタ１１０及びディスクアダプタ１２０から参照可能なメモリ、例えば、共有メモリ１４０に格納される。
【０１０９】
グループ情報６００において、グループ番号６０１は、記憶システム１００に含まれる論理ボリューム２３０が属するグループの当該記憶システム１００内における一意の識別子である。グループ番号６０１は、ペア情報５００のグループ番号５０７に対応する。
【０１１０】
グループ状態６０２の値は、“正常”、“異常”、“未使用”、“停止”、“準備中”のいずれかである。
【０１１１】
“正常”は、ペア集合のうち少なくとも一つのペア状態が“正常”であることを示す。
【０１１２】
“異常”は、ペア集合のうちすべてのペア状態５０２が“異常”であることを示す。
【０１１３】
“未使用”は、当該グループ番号６０１に対応するグループが存在しないことを示す。すなわち、当該グループ番号６０１に対応するグループ情報は有効でない。
【０１１４】
“停止”は、正記憶システム１００においては、ジャーナルレコードの作成を一時的に行わないことを示す。これは、グループ状態６０２が“正常”の場合に、ジャーナルレコードの作成を一時的に停止したいときに適用される。一方、副記憶システム１００においては、“停止”は、ジャーナルリード処理を一時的に行わないことを示す。これは、グループ状態６０２が“正常”の場合に、正記憶システム１００からジャーナルレコードを読み出すことを一時的に停止したいときに適用される。
【０１１５】
“準備中”は、ペア若しくはグループの設定又は初期コピー処理が終了していないことを示す。
【０１１６】
ペア集合６０３は、グループ番号６０１に対応するグループに属する全てのペアのペア番号５０１である。
【０１１７】
ジャーナル論理ボリューム番号６０４は、当該グループ番号６０１のグループに属するジャーナル論理ボリューム２３０の論理ボリューム番号４０１を示す。当該グループに属するジャーナル論理ボリューム２３０が存在しない場合は、無効値（例えば、“０”）となる。
【０１１８】
更新番号６０５は、初期値が「１」であり、ジャーナルが更新されるたびに１ずつ加算される。更新番号６０５は、ジャーナルレコードの更新情報３００に更新番号３０３として複製され、後述するリストア処理においてデータの更新順序を維持するために使用される。
【０１１９】
複製種類６０６は、リモートコピーの方式を示す情報であり、“同期”又は“非同期”のいずれかである。複製種類６０６が“同期”の場合、当該グループに含まれるペアにおいては同期リモートコピーが実行される。一方、複製種類６０６が“非同期”の場合、当該グループに含まれるペアにおいては非同期リモートコピーが実行される。
【０１２０】
相手記憶システム番号６０７は、正記憶システム１００においては、当該グループに属するペアの副論理ボリューム２３０を含む記憶システム１００の記憶システム番号である。副記憶システムにおいては、相手記憶システム番号６０７は、当該グループに属するペアの正論理ボリューム２３０を含む記憶システム１００の記憶システム番号である。
【０１２１】
相手グループ番号６０８は、正記憶システムにおいては、当該グループに属するペアの副論理ボリューム２３０が属するグループ番号６０１である。副記憶システムにおいては、相手グループ番号６０８は、当該グループに属するペアの正論理ボリューム２３０が属するグループ番号６０１である。
【０１２２】
図１２において、例えば、グループ番号６０１が「１」のグループは、ペア番号５０１が「１」及び「２」のペアに属する論理ボリューム２３０によって構成される（６０３）。すなわち、論理ボリューム番号が「１」及び「２」の正論理ボリューム２３０と、論理ボリューム番号が「４」のジャーナル論理ボリューム２３０とによって構成されている（ペア情報５００参照）。また、これらの論理ボリューム２３０では、正常に同期データ複製処理が行われている（６０２、６０６）。
【０１２３】
＜ポインタ情報の構成＞
次に、記憶システム１００が保持するポインタ情報７００について説明する。
【０１２４】
図１４は、本発明の第１の実施の形態の記憶システムＡが保持するポインタ情報７００の説明図である。図１６は、本発明の第１の実施の形態の記憶システムＢが保持するポインタ情報７００の説明図である。図１７は、本発明の第１の実施の形態の記憶システムＣが保持するポインタ情報７００の説明図である。また、図１５は、本発明の第１の実施の形態のポインタ情報７００（図１４）に対応するジャーナル論理ボリューム２３０（ジャーナル論理ボリューム＃４）の構成の説明図である。
【０１２５】
ポインタ情報７００は、ジャーナル論理ボリューム２３０を管理する情報であり、更新情報領域先頭アドレス７０１、ライトデータ領域先頭アドレス７０２、更新情報最新アドレス７０３、更新情報最古アドレス７０４、ライトデータ最新アドレス７０５、ライトデータ最古アドレス７０６、リード開始アドレス７０７、リトライ開始アドレス７０８を含む。
【０１２６】
ポインタ情報７００において、更新情報領域先頭アドレス７０１は、ジャーナル論理ボリューム２３０の更新情報３００を格納する記憶領域（更新情報領域）の先頭の論理アドレスである。
【０１２７】
ライトデータ領域先頭アドレス７０２は、ジャーナル論理ボリューム２３０のライトデータを格納する記憶領域（ライトデータ領域）の先頭の論理アドレスである。
【０１２８】
更新情報最新アドレス７０３は、次に格納されるジャーナルレコードの、更新情報３００が格納される領域の先頭の論理アドレスである。
【０１２９】
更新情報最古アドレス７０４は、最古の（すなわち、更新番号３０３が小さい）ジャーナルレコードの更新情報３００が格納される領域の先頭の論理アドレスである。
【０１３０】
ライトデータ最新アドレス７０５は、次に格納されるジャーナルレコードの、ライトデータが格納される領域の先頭の論理アドレスである。
【０１３１】
ライトデータ最古アドレス７０６は、最古の（すなわち、更新番号３０３が小さい）ジャーナルのライトデータが格納される領域の先頭の論理アドレスである。
【０１３２】
リード開始アドレス７０７及びリトライ開始アドレス７０８は、後述するジャーナルリード受信処理において使用される。
【０１３３】
図１４及び図１５に示すポインタ情報７００の例では、ジャーナルの更新情報領域は、論理ボリューム番号４の論理ボリューム（ジャーナル論理ボリューム＃４）の先頭から位置６９９までの記憶領域である。一方、ジャーナルのライトデータ領域は、ジャーナル論理ボリューム＃４の位置７００から位置２６９９までの記憶領域である。
【０１３４】
ジャーナルの更新情報３００は、ジャーナル論理ボリューム＃４の位置５０から位置２４９までの記憶領域に格納されており、次のジャーナルレコードの更新情報３００は、位置２５０から始まる領域に格納される。
【０１３５】
ジャーナルのライトデータは、ジャーナル論理ボリューム＃４の位置１３００から位置２１９９までの記憶領域に格納されており、次のジャーナルレコードのライトデータは、位置２２００から始まる記憶領域に格納される。
【０１３６】
上記のボリューム情報４００、ペア情報５００、グループ情報６００、及びポインタ情報７００は、共有メモリ１４０に格納されていることが望ましい。しかし、これらの情報は、共有メモリ１４０以外の場所に格納されてもよい。例えば、これらの情報は、キャッシュメモリ１３０、ホストアダプタ１１０、ディスクアダプタ１２０又は記憶装置１５０に、集中して又は分散して格納されてもよい。
【０１３７】
本実施の形態では、一つのグループに一つのジャーナル論理ボリューム２３０が割り当てられる。しかし、一つのグループに複数のジャーナル論理ボリューム２３０が割り当てられてもよい。例えば、一つのグループに二つのジャーナル論理ボリューム２３０を割り当て、ジャーナル論理ボリューム２３０毎にポインタ情報７００を設け、交互にジャーナルレコードを格納する。これによって、ジャーナルレコードの記憶装置１５０への書き込みが分散され、性能が向上することが期待される。さらに、ジャーナルレコードの読み出し性能も向上する。
【０１３８】
あるいは、一つのグループに二つのジャーナル論理ボリューム２３０を割り当て、通常は一つのジャーナル論理ボリューム２３０のみを使用する。もう一方のジャーナル論理ボリューム２３０は、使用しているジャーナル論理ボリューム２３０の性能が低下した場合又は障害のため使用できない場合などに使用される。性能が低下する場合とは、例えば、ジャーナル論理ボリューム２３０の記憶領域が、複数の記憶装置１５０によって構成されるＲＡＩＤであり、そのＲＡＩＤを構成する記憶装置１５０の一台が故障した場合である。
【０１３９】
＜命令受信処理の動作＞
次に、命令受信部２１０が実行する命令受信処理の動作を、図１８を参照して説明する。命令受信処理は、記憶システム１００がホストコンピュータ１８０から命令を受信したときに実行される。ジャーナル作成処理（図１９）、リモートライト命令受信処理（図２１）、ジャーナル複製処理（図２２）及びジャーナルリード受信処理（図２３）は、命令受信処理のサブルーチンである。
【０１４０】
図１８は、本発明の第１の実施の形態の命令受信処理のフローチャートである。
【０１４１】
以下の（１）〜（７）は、正記憶システム１００Ａが、ホストコンピュータ１８０からリモートコピー対象の論理ボリューム２３０に対するアクセス命令を受信した場合の動作の説明である。
【０１４２】
（１）正記憶システム１００Ａ内のホストアダプタ１１０（以下、ホストアダプタＡとする）は、ホストコンピュータ１８０からアクセス命令を受信する。アクセス命令は、リード（データの読み出し）、ライト（データの書き込み）及び後述するジャーナルリード（ジャーナルの読み出し）等の命令、論理アドレス、並びに、データ量等を含む。以下、アクセス命令に含まれる論理アドレスを論理アドレスＡ、アクセス命令に含まれる論理ボリュームを論理ボリュームＡ、アクセス命令に含まれる論理ボリューム内の位置を論理ボリューム内位置Ａ、アクセス命令に含まれるデータ量をデータ量Ａとする（Ｓ１８００）。
【０１４３】
（２）ホストアダプタＡは、受信したアクセス命令が、ライト命令、ジャーナルリード命令又はリモートライト命令のいずれであるかを判定する（Ｓ１８１０、Ｓ１８１５，Ｓ１８２５）。Ｓ１８１５において、アクセス命令がジャーナルリード命令であると判定された場合は、図２３において後述するジャーナルリード受信処理を実行する（Ｓ２３００）。Ｓ１８２５において、アクセス命令がリモートライト命令であると判定された場合は、後述するリモートライト命令受信処理を実行する（Ｓ２１００）。受信したアクセス命令が上記のいずれの命令でもない場合は、従来と同様の処理を実行する。例えば、リード命令の場合は、従来のリード処理を実行する（Ｓ１８３０）。
【０１４４】
（３）Ｓ１８１０において、アクセス命令がライト命令であると判定された場合は、論理ボリュームＡのボリューム情報４００を参照し、ボリューム状態４０２が“正常”又は“正”であるか否かを判定する（Ｓ１８４０）。その結果、論理ボリュームＡのボリューム状態４０２が、“正常”又は“正”のいずれでもない場合は、論理ボリュームＡにアクセスすることができないため、ホストコンピュータ１８０に異常終了を報告する（Ｓ１８４５）。
【０１４５】
（４）Ｓ１８４０において、論理ボリュームＡのボリューム状態４０２が“正常”又は“正”のいずれかであると判定された場合、ホストアダプタＡは、キャッシュメモリ１３０を確保し、ホストコンピュータ１８０にデータ受信の準備ができたことを通知する。ホストコンピュータ１８０は、その通知を受け、ライトデータを正記憶システム１００Ａに送信する。ホストアダプタＡは、ライトデータを受信し、当該キャッシュメモリ１３０に格納する（Ｓ１８５０）。
【０１４６】
（５）ホストアダプタＡは、論理ボリュームＡのボリューム情報４００、ペア情報５００及びグループ情報６００を参照し、論理ボリュームＡが非同期リモートコピーの対象であり、かつ、正常であるか否かを判定する（Ｓ１８６０）。
【０１４７】
Ｓ１８６０において、論理ボリュームＡのボリューム状態４０２が“正”、論理ボリュームＡの非同期ペア番号４０６のペアのペア状態５０２が“正常”、かつ、当該ペアが属するグループのグループ状態６０２が“正常”であると判定された場合は、論理ボリュームＡが非同期リモートコピーの対象であり、かつ、正常であるため、後述するジャーナル作成処理を実行する（Ｓ１９００）。
【０１４８】
（６）Ｓ１８６０において、論理ボリュームＡが非同期リモートコピーの対象でないか、又は、正常でない場合、ホストアダプタＡは、論理ボリュームＡが同期リモートコピーの対象であり、かつ、正常であるか否かを判定する（Ｓ１８６３）。また、ジャーナル作成処理（Ｓ１９００）が成功した場合も、Ｓ１８６３の判定を実行する。Ｓ１８６３において、ホストアダプタＡは、論理ボリュームＡのボリューム情報４００、ペア情報５００及びグループ情報６００を参照する。
【０１４９】
Ｓ１８６３において、論理ボリュームＡのボリューム状態４０２が“正”、論理ボリュームＡの同期ペア番号４０５のペアのペア状態５０２が“正常”、かつ、当該ペアが属するグループのグループ状態６０２が“正常”であると判定された場合は、論理ボリュームＡが同期リモートコピーの対象であり、かつ、正常である。この場合、ホストアダプタＡは、同期ペア番号４０５のペアの副記憶システムＢに、ホストコンピュータ１８０から受信したライトデータを格納するリモートライト命令を送信する（Ｓ１８６５）。
【０１５０】
リモートライト命令とは、ホストコンピュータ１８０から受信したライトデータを副記憶システムに同期リモートコピーによって格納する命令である。このリモートライト命令は、ライト命令、論理アドレス（論理ボリューム番号は、同期ペア番号４０５のペアの副論理ボリュームＢ、論理ボリューム内位置は論理ボリューム内位置Ａ）、データ量Ａ、及び、Ｓ１９００で使用された更新番号３０３を含む。
【０１５１】
なお、更新番号３０３の代わりに、ホストコンピュータ１８０からライト命令を受信した時刻（更新時刻）３０１が含まれてもよい。
【０１５２】
一方、ジャーナル作成処理（Ｓ１９００）が成功しなかった場合は、更新番号３０３として、無効を示す数値“０”が含まれる。
【０１５３】
（７）Ｓ１８６３において、論理ボリュームＡが同期リモートコピーの対象でないか、又は、正常でないと判断された場合、ホストアダプタＡは、ディスクアダプタ１２０に対して、「ライトデータを論理アドレスＡに対応する記憶装置１５０の記憶領域に書き込む」ことを命令し（Ｓ１８７０）、ホストコンピュータ１８０に終了報告する（Ｓ１８８０）。リモートライト命令（Ｓ１８６５）に対する応答を受信した後も、同様にＳ１８７０を実行する。その後、ディスクアダプタ１２０は、リードライト処理を実行して、上記の記憶領域にライトデータを格納する。
【０１５４】
リードライト処理は、ディスクアダプタ１２０のリードライト部２２０が、ホストアダプタ１１０又はディスクアダプタ１２０からの命令を受けて実行する処理である。具体的には、指定されたキャッシュメモリ１３０のデータを、指定された論理アドレスに対応する記憶装置１５０内の記憶領域に書き込む処理、及び、指定された論理アドレスに対応する記憶装置１５０内の記憶領域から、指定されたキャッシュメモリ１３０にデータを読み出す処理等である。
【０１５５】
なお、図１８の例では、論理ボリュームＡが同期リモートコピー及び非同期リモートコピーのいずれの対象にもなっている場合、先にジャーナル作成処理（Ｓ１９００）が実行され、その後、リモートライト処理（Ｓ１８６５）が実行される。これは、ジャーナル作成処理（Ｓ１９００）によって取得された更新番号３０３が、リモートライト処理（Ｓ１８６５）の際に使用されるためである。
【０１５６】
しかし、更新番号３０３を先に取得し、これをジャーナル作成処理（Ｓ１９００）及びリモートライト処理（Ｓ１８６５）に使用する場合は、ジャーナル作成処理（Ｓ１９００）及びリモートライト処理（Ｓ１８６５）のいずれを先に実行してもよい。
【０１５７】
＜ジャーナル作成処理の動作＞
次に、ジャーナル作成処理（Ｓ１９００）について説明する。
【０１５８】
図１９は、本発明の第１の実施の形態のジャーナル作成処理のフローチャートである。
【０１５９】
（１）ホストアダプタＡは、ジャーナル論理ボリューム２３０のボリューム状態４０２が“正常”であるか否かを判定する（Ｓ１９１０）。Ｓ１９１０において、ボリューム状態４０２が“異常”であると判定された場合は、ジャーナル論理ボリューム２３０にジャーナルを格納することができないため、グループ状態６０２を“異常”に変更し、処理を終了する（Ｓ１９１５）。この場合、ジャーナル論理ボリューム２３０を正常な論理ボリュームに変更する処理等を実行する。
【０１６０】
（２）Ｓ１９１０において、ジャーナル論理ボリューム２３０が正常であると判定された場合、ジャーナル論理ボリューム２３０にジャーナルを格納することができる。このため、ジャーナル作成処理を継続する。ジャーナル作成処理の内容は、当該ジャーナル作成処理が初期コピー処理から呼び出された場合と、命令受信処理から呼び出された場合とで異なる（Ｓ１９２０）。ここで、初期コピー処理とは、論理ボリューム２３０のペアを形成する際に実行される最初のリモートコピーの処理である。ジャーナル作成処理が命令受信処理から呼び出された場合は、Ｓ１９３０以降の処理を実行する。ジャーナル作成処理が初期コピー処理から呼び出された場合は、Ｓ１９７０以降の処理を実行する。
【０１６１】
（３）ジャーナル作成処理が命令受信処理から呼び出された場合、ホストアダプタＡは、ペア情報５００のペア状態５０２を参照して、ライト対象の論理アドレスＡにおいて初期コピー処理が実行されたか否かを判定する（Ｓ１９３０）。
【０１６２】
論理ボリュームＡのペア状態５０２が“コピー未”の場合は、ライト対象の論理アドレスＡにおいて初期コピー処理が実行されていない。すなわち、後で初期コピー処理が実行されてジャーナルレコードが作成されるため、ここではジャーナルレコードを作成せずに、ジャーナル作成不要として処理を終了する（Ｓ１９３５）。
【０１６３】
論理ボリュームＡのペア状態５０２が“コピー中”の場合は、コピー済みアドレス５０８と論理アドレス内位置Ａとを比較する。コピー済みアドレス５０８が論理アドレス内位置Ａと等しい又はそれより小さい場合は、ライト対象の論理アドレスＡにおいて初期コピー処理が実行されていない。すなわち、後で初期コピー処理によってジャーナルレコードが作成されるため、ここではジャーナルレコードを作成せずに、ジャーナル作成不要として処理を終了する（Ｓ１９３５）。
【０１６４】
一方、論理ボリュームＡのペア状態が“コピー中”かつコピー済みアドレス５０８が論理アドレス内位置Ａより大きい場合、又は、論理ボリュームＡのペア状態が“正常”の場合は、既にライト対象の論理アドレスＡにおいて初期コピー処理が完了している。このため、ジャーナル作成処理を継続する。
【０１６５】
（４）次に、ホストアダプタＡは、ジャーナルレコードをジャーナル論理ボリューム２３０に格納することができるか否かを判定する。すなわち、ポインタ情報７００を参照して、更新情報領域に未使用の領域があるか否かを判定する（Ｓ１９４０）。ポインタ情報７００の更新情報最新アドレス７０３と更新情報最古アドレス７０４とが等しい場合は、更新情報領域に未使用領域が存在しないため、ジャーナルレコードをジャーナル論理ボリューム２３０に格納することができない。このため、ジャーナルレコードの作成に失敗して処理を終了する（Ｓ１９９０）。
【０１６６】
Ｓ１９４０において、更新情報領域に未使用の領域が存在すると判定された場合は、ポインタ情報７００を参照して、ライトデータ領域にライトデータを格納することができるか否かを判定する（Ｓ１９４５）。ライトデータ最古アドレス７０６が、ライトデータ最新アドレス７０５からライトデータ最新アドレスにデータ量Ａを足した数値までの範囲内にある場合、当該ライトデータをライトデータ領域に格納することができない。すなわち、ジャーナルレコードをジャーナル論理ボリューム２３０に格納することができないため、ジャーナルレコードの作成に失敗して処理を終了する（Ｓ１９９０）。
【０１６７】
Ｓ１９４５においてライトデータ領域にライトデータを格納することができると判定された場合は、ジャーナルをジャーナル論理ボリューム２３０に格納することができるため、ステップ１９５０に進む。
【０１６８】
（５）次に、ホストアダプタＡは、更新番号３０３、更新情報３００を格納する論理アドレス、及び、ライトデータを格納する論理アドレスを取得し、更新情報３００をキャッシュメモリ１３０内に作成する（Ｓ１９５０）。更新番号３０３は、対象グループのグループ情報６００の更新番号６０５に「１」を加算した値とする。そして、当該更新番号６０５も、更新番号３０３と同じ値に更新する。更新情報３００を格納する論理アドレスは、ポインタ情報７００の更新情報最新アドレス７０３とする。そして、更新情報最新アドレス７０３の値を、現在の値に更新情報３００のサイズを加算した値に更新する。ライトデータを格納する論理アドレスは、ポインタ情報７００のライトデータ最新アドレス７０５とする。そして、ライトデータ最新アドレス７０５の値を、現在の値にデータ量Ａを加算した値に更新する。
【０１６９】
ホストアダプタＡは、上記のようにして取得した数値に加えて、グループ番号６０１、ライト命令を受信した時刻（更新時刻）、ライト命令に含まれる論理アドレスＡ、及び、ライト命令に含まれるデータ量Ａを、それぞれ、グループ番号３０２、更新時刻３０１、ライト命令の論理アドレス３０４、及び、ライトデータのデータサイズ３０５として、更新情報３００に設定する。
【０１７０】
例えば、図１１のグループ情報６００及び図１４のポインタ情報７００が示す状態において、「グループ１に属する正論理ボリューム＃１（論理ボリューム番号が「１」の論理ボリューム２３０）の位置８００から始まる記憶領域に、データサイズが「１００」のデータを書き込む」ライト命令を受信した場合、図２０に示す更新情報３００が作成される。このとき、グループ情報６００の更新番号６０５は、「６」となる。また、更新情報３００のサイズが「５０」であれば、ポインタ情報７００の更新情報最新アドレス７０３は、「３００」となる。また、ライトデータ最新アドレス７０５は、「２３００」となる。
【０１７１】
（６）次に、ホストアダプタＡは、ディスクアダプタ１２０に、ジャーナルレコードの更新情報３００及びライトデータを記憶装置１５０に書き込むことを命令し、正常終了する（Ｓ１９６０）。
【０１７２】
（７）一方、ジャーナル作成処理が初期コピー処理から呼び出された場合は、Ｓ１９７０以降の処理を実行する。
【０１７３】
まず、ホストアダプタＡは、ジャーナルレコードを作成することができるか否かを判定する。このため、ポインタ情報７００を参照して、更新情報領域に未使用の領域があるか否かを判定する（Ｓ１９７０）。ポインタ情報７００の更新情報最新アドレス７０３と更新情報最古アドレス７０４とが等しい場合は、更新情報領域に未使用領域が存在しないため、ジャーナルレコードを作成することができない。このため、ジャーナルレコードの作成に失敗して処理を終了する（Ｓ１９９０）。
【０１７４】
一方、ポインタ情報７００の更新情報最新アドレス７０３と更新情報最古アドレス７０４とが異なる場合は、ジャーナルレコードを作成することができるため、Ｓ１９８０に進む。
【０１７５】
なお、初期コピー処理では、ジャーナルのライトデータは、正論理ボリュームからリードされるため、ライトデータ領域は使用されない。このため、ライトデータ領域に未使用の領域があるか否かを判定する必要はない。
【０１７６】
（８）次に、ホストアダプタＡは、更新情報３００をキャッシュメモリ１３０内に作成する（Ｓ１９８０）。更新情報３００のライト命令を受信した時刻（更新時刻）３０１は、更新番号３０３を取得した時刻とする。グループ番号３０２は、論理ボリューム２３０の同期ペア番号４０５が属するグループ番号とする。更新番号３０３は、グループ情報６００の更新番号６０５に「１」を加算した値とする。そして、当該更新番号６０５も、更新番号３０３と同じ値に更新する。ライト命令の論理アドレス３０４及びライドデータを格納したジャーナル論理ボリュームの論理アドレス３０６は、初期コピー処理対象の論理アドレス（ペア情報５００のコピー済みアドレス５０８）とする。ライトデータのデータサイズ３０５は、初期コピー処理の単位サイズとする。更新情報３００を格納する論理アドレスは、ポインタ情報７００の更新情報最新アドレス７０３とする。そして、更新情報最新アドレス７０３の値を、現在の値に更新情報３００のサイズを加算した値に更新する。
【０１７７】
（９）次に、ホストアダプタＡは、ディスクアダプタ１２０に、更新情報３００を記憶装置１５０に書き込むことを命令し、正常終了する（Ｓ１９８５）。
【０１７８】
上記の説明において、更新情報３００は、キャッシュメモリ１３０内に格納されるが、更新情報３００は、共有メモリ１４０又は他のメモリ内に格納されてもよい。
【０１７９】
ライトデータは、記憶装置１５０に非同期に書き込まれてもよい。すなわち、ライトデータは、Ｓ１９６０又はＳ１９８５の直後に記憶装置１５０に書き込まれなくてもよい。ただし、ホストコンピュータ１８０が、論理アドレスＡにライト命令を再び発行し、キャッシュメモリ１３０内に格納されたジャーナルレコードのライトデータが上書きされる場合、ホストコンピュータ１８０からライトデータを受信する前に、記憶装置１５０に書き込む必要がある。あるいは、ライトデータを別のキャッシュメモリに退避させ、この退避させたキャッシュメモリの位置を更新情報３００に記憶し、後で更新情報３００のジャーナル論理ボリューム２３０の論理アドレスに対応する記憶装置１５０に書き込みを行ってもよい。
【０１８０】
上記のジャーナル作成処理において、ジャーナルは、記憶装置１５０に格納されるが、ジャーナル用にあらかじめ一定量のキャッシュメモリをキャッシュメモリ１３０に用意してもよい。この場合、ジャーナルは、当該キャッシュメモリに優先的に格納され、当該キャッシュメモリに格納しきれない分が記憶装置１５０に格納される。ジャーナル用のキャッシュメモリの量は、例えば、保守端末から設定することができる。
【０１８１】
＜リモートライト命令受信処理の動作＞
図２１は、本発明の第１の実施の形態のリモートライト命令受信処理（Ｓ２１００）のフローチャートである。
【０１８２】
図２１は、副記憶システムＢのホストアダプタＢが、正記憶システムＡからリモートライト命令を受信したときの処理を示す。リモートライト命令は、ライト命令、論理アドレス（副論理ボリュームＢ、論理ボリューム内位置Ａ）、データ量Ａ及び更新番号を含む。リモートライト命令に含まれる更新番号は、ジャーナル作成処理（Ｓ１９００）によって取得された更新番号３０３である。
【０１８３】
（１）副記憶システムＢ内のホストアダプタＢは、論理ボリュームＢのボリューム情報４００を参照し、副論理ボリュームＢのボリューム状態４０２が“副”であるか否かを判定する（Ｓ２１１０）。Ｓ２１１０において、論理ボリュームＢのボリューム状態が“副”ではないと判定された場合は、論理ボリュームＢにアクセスすることができない。このため、正記憶システムＡに異常終了を報告する（Ｓ２１１５）。
【０１８４】
（２）Ｓ２１１０において、論理ボリュームＢのボリューム状態４０２が“副”であると判定された場合は、論理ボリュームＢにアクセスすることができる。このため、ホストアダプタＢは、キャッシュメモリ１３０を確保し、正記憶システムＡにデータ受信の準備ができたことを通知する。正記憶システムＡは、その通知を受けると、ライトデータを副記憶システムＢに送信する。ホストアダプタＢは、ライトデータを受信し、当該キャッシュメモリ１３０に格納する（Ｓ２１２０）。
【０１８５】
（３）次に、リモートライト命令に含まれる更新番号を参照する。この更新番号が無効値（すなわち、“０”）である場合は、正記憶システムＡにおいてジャーナルが作成されていないため、ジャーナル複製処理（Ｓ２２００）を実行しない（Ｓ２１３０）。
【０１８６】
（４）一方、リモートライト命令に含まれる更新番号が有効値（すなわち、“０”以外）である場合は、ジャーナル論理ボリューム２３０のボリューム状態４０２を参照する。ジャーナル論理ボリューム２３０のボリューム状態４０２が“異常”であると判定された場合は、ジャーナル論理ボリューム２３０にジャーナルを格納することができない。このため、ジャーナル複製処理（Ｓ２２００）を実行しない（Ｓ２１４０）。
【０１８７】
（５）一方、Ｓ２１４０において、ジャーナル論理ボリューム２３０のボリューム状態が“正常”であると判定された場合は、ジャーナル論理ボリューム２３０にジャーナルを格納することができるため、ジャーナル複製処理Ｓ２２００を実行する（図２２参照）。
【０１８８】
（６）ホストアダプタＢは、ディスクアダプタ１２０に対して、「ライトデータをリモートライト命令の論理アドレスに対応する記憶装置１５０の記憶領域に書き込む」ことを命令する（Ｓ２１６０）。その後、正記憶システムＡに終了を報告する（Ｓ２１７０）。その後、当該ディスクアダプタ１２０は、リードライト処理によって、上記の記憶領域にライトデータを格納する。
【０１８９】
＜ジャーナル複製処理の動作＞
図２２は、本発明の第１の実施の形態のジャーナル複製処理（Ｓ２２００）のフローチャートである。
【０１９０】
（１）ホストアダプタＢは、ジャーナルレコードをジャーナル論理ボリューム２３０に格納することができるか否かを判定する。具体的には、ポインタ情報７００を参照し、更新情報領域に未使用の領域があるか否かを判定する（Ｓ２２１０）。ポインタ情報７００の更新情報最新アドレス７０３と更新情報最古アドレス７０４とが等しい場合は、更新情報領域に未使用の領域が存在しないため、最古のジャーナルレコードの記憶領域を開放し、更新情報領域を確保する（Ｓ２２１５）。
【０１９１】
次に、ポインタ情報７００を参照して、ライトデータ領域にライトデータを格納することができるか否かを判定する（Ｓ２２２０）。ライトデータ最古アドレス７０６の値が、ライトデータ最新アドレス７０５から、ライトデータ最新アドレス７０５にデータ量Ａを加算した値までの範囲にある場合、当該ライトデータをライトデータ領域に格納することができない。このため、最古のジャーナルレコードから順にジャーナルレコードの記憶領域を開放し、ライトデータを格納するための領域を確保する（Ｓ２２２５）。
【０１９２】
（２）次に、ホストアダプタＢは、更新情報３００をキャッシュメモリ１３０内に作成する（Ｓ２２３０）。
【０１９３】
このとき、更新情報３００におけるライト命令を受信した時刻（更新時刻）３０１は、リモートライト命令に含まれる更新時刻とする。
【０１９４】
グループ番号３０２は、論理ボリュームＢが属するペアが属するグループのグループ番号とする。
【０１９５】
更新番号３０３は、リモートライト命令に含まれる更新番号とする。
【０１９６】
ライト命令の論理アドレス３０４は、リモートライト命令に含まれる論理アドレスとする。
【０１９７】
ライトデータのデータサイズ３０５は、リモートライト命令に含まれるデータ量Ａとする。
【０１９８】
ライドデータを格納したジャーナル論理ボリュームの論理アドレス３０６は、ポインタ情報７００のライトデータ最新アドレス７０５とする。そして、そのライトデータ最新アドレス７０５の値にライトデータのサイズを加算して、ライトデータ最新アドレス７０５を更新する。
【０１９９】
更新情報３００を格納する論理アドレスは、ポインタ情報７００の更新情報最新アドレス７０３とする。そして、その更新情報最新アドレス７０３の値に更新情報３００のサイズを加算して、更新情報最新アドレス７０３を更新する。
【０２００】
（３）ホストアダプタＢは、ディスクアダプタ１２０に対して、「更新情報３００及びライトデータを記憶装置１５０に書き込む」ことを命令し、ジャーナルの作成に成功して処理を終了する（Ｓ２２４０）。その後、ディスクアダプタ１２０は、リードライト処理によって、記憶装置１５０に更新情報３００及びライトデータを書き込み、キャッシュメモリ１３０を開放する。
【０２０１】
このように、本実施の形態のコンピュータシステムにおいて、副記憶システムＢは、古いジャーナルレコードの記憶領域を順次開放しながら、常に新しい複数のジャーナルを保持する。
【０２０２】
＜ジャーナルリード受信処理の動作＞
図２３は、本発明の第１の実施の形態のジャーナルリード受信処理（Ｓ２３００）のフローチャートである。
【０２０３】
図２３を参照して、以下の（１）〜（８）において、正記憶システムＡが副記憶システムＣからジャーナルリード命令を受信した場合に実行される処理を説明する。
【０２０４】
（１）正記憶システムＡ内のホストアダプタＡは、副記憶システムＣからアクセス命令を受信する。アクセス命令は、ジャーナルリード命令であることを示す識別子、命令の対象のグループ番号、リトライ指示の有無を含む。以下、アクセス命令に含まれるグループ番号をグループ番号Ｄとする（Ｓ２３００）。
【０２０５】
（２）ホストアダプタＡは、グループ番号Ｄのグループ状態６０２が“正常”であるか否かを判定する（Ｓ２３１０）。Ｓ２３１０において、グループ状態が“正常”でない（例えば、“異常”である）と判定された場合は、副記憶システムＣにグループ状態を通知し、処理を終了する（Ｓ２３１５）。このとき、副記憶システムＣは、ジャーナルリード処理を終了する。
【０２０６】
（３）Ｓ２３１０において、グループ番号Ｄのグループ状態６０２が“正常”であると判定された場合、ホストアダプタＡは、ジャーナル論理ボリューム２３０のボリューム状態４０２を判定する（Ｓ２３２０）。
【０２０７】
Ｓ２３２０において、ジャーナル論理ボリューム２３０のボリューム状態４０２が“正常”でない（例えば“異常”である）と判定された場合は、グループ状態６０２を“異常”に変更し、副記憶システム１００Ｃにグループ状態を通知し、処理を終了する（Ｓ２３２５）。このとき、副記憶システム１００Ｃは、ジャーナルリード処理を終了する。
【０２０８】
（４）一方、Ｓ２３２０において、ジャーナル論理ボリューム２３０のボリューム状態４０２が“正常”であると判定された場合は、ジャーナルリード命令がリトライ指示であるか否かを判定する（Ｓ２３３０）。
【０２０９】
（５）Ｓ２３３０において、ジャーナルリード命令がリトライ指示であると判定された場合、ホストアダプタＡは、前回送信したジャーナルレコードを再度、副記憶システムＣに送信する。ホストアダプタＡは、キャッシュメモリ１３０を確保し、ディスクアダプタ１２０に対して、「ポインタ情報７００のリトライ開始アドレス７０８から、更新情報３００のサイズの情報を読み出して、キャッシュメモリ１３０に格納する」ことを命令する。
【０２１０】
ディスクアダプタ１２０のリードライト処理は、記憶装置１５０から更新情報３００を読み出してキャッシュメモリ１３０に格納し、ホストアダプタＡに、更新情報３００のリード終了を通知する。
【０２１１】
ホストアダプタＡは、更新情報３００のリード終了の通知を受けると、更新情報３００から、ライト命令の論理アドレス３０４及びライトデータのデータサイズ３０５を取得し、キャッシュメモリ１３０を確保する。そして、ディスクアダプタ１２０に対して、「ライトデータを読み出してキャッシュメモリに格納する」ことを命令する（Ｓ２３４０）。
【０２１２】
ディスクアダプタ１２０のリードライト処理は、記憶装置１５０からライトデータを読み出してキャッシュメモリ１３０に格納し、ホストアダプタＡに、ライトデータのリード終了を通知する。
【０２１３】
ホストアダプタＡは、ライトデータのリード終了の通知を受けると、更新情報３００及びライトデータを副記憶システムＣに送信し、ジャーナルレコードが格納されたキャッシュメモリ１３０を開放して、処理を終了する（Ｓ２３４５）。
【０２１４】
（６）Ｓ２３３０において、ジャーナルリード命令がリトライ指示でないと判定された場合、ホストアダプタＡは、送信していないジャーナルレコードが存在するか否かを判定し、存在する場合は、ジャーナルレコードを副記憶システムＣに送信する。具体的には、ホストアダプタＡは、ポインタ情報７００のリード開始アドレス７０７と更新情報最新アドレス７０３とを比較する（Ｓ２３５０）。
【０２１５】
リード開始アドレス７０７が更新情報最新アドレス７０３と等しい場合は、全てのジャーナルレコードを副記憶システムＣに送信済みである。このため、副記憶システムＣに“ジャーナル無”の情報を送信し（Ｓ２３６０）、前回のジャーナルリード命令のときに副記憶システムＣに送信したジャーナルレコードの記憶領域を開放する（Ｓ２３９０）。
【０２１６】
ジャーナルレコードの記憶領域の開放処理は、ポインタ情報７００の更新情報最古アドレス７０４に、リトライ開始アドレス７０８を設定する。更新情報最古アドレス７０４がライトデータ領域先頭アドレス７０２となった場合は、更新情報最古アドレス７０４を０とする。ポインタ情報７００のライトデータ最古アドレス７０６は、前回のジャーナルリード命令に応じて送信したライトデータのデータサイズ３０５を加算した値に更新される。ライトデータ最古アドレス７０６は、ジャーナル論理ボリューム２３０の容量以上の論理アドレスとなった場合は、ライトデータ領域先頭アドレス７０２を減じた値に更新される。
【０２１７】
（７）Ｓ２３５０において、リード開始アドレス７０７が更新情報最新アドレス７０３と異なる場合は、未送信のジャーナルレコードが存在する。この場合、ホストアダプタＡは、キャッシュメモリ１３０を確保し、ディスクアダプタ１２０に対して、「ポインタ情報７００のリード開始アドレス７０７から、更新情報３００のサイズの情報を読み出して、キャッシュメモリ１３０に格納する」ことを命令する。
【０２１８】
ディスクアダプタ１２０のリードライト処理は、記憶装置１５０から更新情報３００を読み出してキャッシュメモリ１３０に格納し、ホストアダプタＡに更新情報３００のリード終了を通知する。
【０２１９】
ホストアダプタＡは、更新情報３００のリード終了の通知を受けると、更新情報３００から、ライト命令の論理アドレス３０４及びライトデータのデータサイズ３０５を取得し、キャッシュメモリ１３０を確保する。そして、ディスクアダプタ１２０に対して、「ライトデータを読み出してキャッシュメモリ１３０に格納する」ことを命令する（Ｓ２３７０）。
【０２２０】
ディスクアダプタ１２０のリードライト処理は、記憶装置１５０からライトデータを読み出してキャッシュメモリ１３０に格納し、ライトデータのリード終了をホストアダプタＡに通知する。
【０２２１】
ホストアダプタＡは、ライトデータのリード終了の通知を受けると、更新情報３００及びライトデータを副記憶システムＣに送信し（Ｓ２３８０）、ジャーナルレコードが格納されたキャッシュメモリ１３０を開放する。そして、ポインタ情報７００のリトライ開始アドレス７０８にリード開始アドレス７０７の値を設定し、その後、リード開始アドレス７０７の値を、送信したジャーナルの更新情報３００のサイズを加算した値に更新する。
【０２２２】
（８）ホストアダプタＡは、前回のジャーナルリード命令のときに副記憶システムＣに送信したジャーナルレコードの記憶領域を開放する（Ｓ２３９０）。
【０２２３】
上記のジャーナルリード受信処理では、正記憶システムＡは、ジャーナルレコードを一つずつ副記憶システムＣに送信していたが、複数のジャーナルレコードを同時に副記憶システムＣに送信してもよい。一つのジャーナルリード命令によって送信されるジャーナルレコードの数は、副記憶システムＣがジャーナルリード命令によって指定してもよいし、グループ登録の際等に、ユーザが正記憶システムＡ及び副記憶システムＣに対して指定してもよい。さらに、正記憶システムＡと副記憶システムＣの間の接続パス２００の転送能力又は負荷等に応じて、一つのジャーナルリード命令によって送信されるジャーナルレコードの数を動的に変更してもよい。また、ジャーナルレコードの数を考慮する代わりに、ジャーナルレコードのライトデータのサイズを考慮してジャーナルレコードの転送量を指定してもよい。
【０２２４】
上記のジャーナルリード受信処理では、ジャーナルレコードを記憶装置１５０から読み出してキャッシュメモリ１３０に格納するが、ジャーナルがキャッシュメモリ１３０内に存在する場合は、この手順は不要である。
【０２２５】
上記のジャーナルリード受信処理では、ジャーナルレコードの記憶領域を、次のジャーナルリード命令（リトライ指示を除く）の処理のときに開放するが、副記憶システムＣにジャーナルレコードを送信した直後に開放してもよい。また、副記憶システムＣが開放してよいジャーナルレコードの更新番号をジャーナルリード命令内に含め、正記憶システムＡがその命令に従ってジャーナルレコードの記憶領域を開放してもよい。
【０２２６】
＜ジャーナルリード処理の動作＞
図２４は、本発明の第１の実施の形態のジャーナルリード処理のフローチャートである。
【０２２７】
ジャーナルリード処理は、ジャーナルリード（ＪＮＬＲＤ）部２４０によって実行される処理である。
【０２２８】
図２４を参照して、以下の（１）〜（６）において、副記憶システムＣのホストアダプタＣが、正記憶システムＡからジャーナルレコードを読み出し、ジャーナル論理ボリューム２３０に格納する手順を説明する。
【０２２９】
（１）副記憶システムＣのホストアダプタＣは、グループ状態６０２が“正常”、かつ、複製種類６０６が“非同期”であれば、ジャーナルレコードを格納するキャッシュメモリ１３０を確保し、ジャーナルリード命令であることを示す識別子、命令対象の正記憶システムＡのグループ番号及びリトライ指示の有無を含むアクセス命令を正記憶システムＡに送信する。以下、アクセス命令に含まれるグループ番号をグループ番号Ｃとする（Ｓ２４００）。
【０２３０】
（２）ホストアダプタＣは、正記憶システムＡからの応答及びジャーナルレコードを受信する。ホストアダプタＣは、受信した応答が“ジャーナル無”であるか否かを判定する（Ｓ２４２０）。受信した応答が“ジャーナル無”である場合、正記憶システムＡには指定したグループのジャーナルレコードが存在しない。このため、所定の時間の後、正記憶システムＡにジャーナルリード命令を送信する（Ｓ２４２５）。
【０２３１】
（３）正記憶システムＡからの応答が“グループ状態６０２が異常”又は“グループ状態６０２が未使用”の場合は、副記憶システムＣのグループ状態を、当該応答で受信したグループ状態６０２に変更し、ジャーナルリード処理を終了する（Ｓ２４３０、Ｓ２４３５）。
【０２３２】
（４）正記憶システムＡからの応答が上記のいずれでもない場合、すなわち、“正常終了”の場合は、ジャーナル論理ボリューム２３０のボリューム状態４０２が正常であるか否かを判定する（Ｓ２４４０）。ジャーナル論理ボリューム２３０のボリューム状態４０２が“異常”の場合は、ジャーナル論理ボリューム２３０にジャーナルを格納することができない。このため、グループ状態６０２を“異常”に変更し、処理を終了する（Ｓ２４４５）。この場合、ジャーナル論理ボリューム２３０を正常な論理ボリュームに変更する等の処理を実行し、グループの状態を正常に戻す。
【０２３３】
（５）Ｓ２４４０において、ジャーナル論理ボリュームのボリューム状態が“正常”であると判定された場合は、後述するジャーナル格納処理（Ｓ２５００）を実行する。ジャーナル格納処理（Ｓ２５００）が正常に終了した場合は（Ｓ２４５０）、Ｓ２４００に戻り、次のジャーナルリード命令を送信する。このとき、所定の時間が経過した後で、次のジャーナルリード命令を送信してもよい。
【０２３４】
次のジャーナルリード命令は、所定の時間間隔で定期的に送信されてもよい。あるいは、受信したジャーナルの個数、接続パス２００の通信量、副記憶システムＣが保持しているジャーナルの容量、又は、副記憶システム１００Ｃの負荷等によって定められるタイミングで送信されてもよい。あるいは、正記憶システムＡが保持しているジャーナルの容量又は正記憶システムＡのポインタ情報７００を副記憶システムＣから読み出し、その数値に基づいて定められるタイミングで送信されてもよい。
【０２３５】
上記の情報の転送は、専用の命令によって実行されてもよいし、ジャーナルリード命令の応答に含まれてもよい。その後の処理は、Ｓ２４００以降と同じである。
【０２３６】
（６）一方、ジャーナル格納処理（Ｓ２５００）が正常に終了しない場合は（Ｓ２４５０）、ジャーナル論理ボリューム２３０の未使用領域が足りないため、受信したジャーナルレコードを破棄し、所定の時間後にリトライ指示を含むジャーナルリード命令を送信する（Ｓ２４５５）。あるいは、ジャーナルレコードをキャッシュメモリ１３０に格納し、所定の時間後に、再度ジャーナル格納処理を実行する。これは、後述するリストア処理２５０が実行されることによって、所定の時間後には、ジャーナル論理ボリューム２３０に未使用領域が増えている可能性があるためである。この場合、ジャーナルリード命令にリトライ指示の有無を含める必要はない。
【０２３７】
＜ジャーナル格納処理の動作＞
図２５は、本発明の第１の実施の形態のジャーナル格納処理（Ｓ２５００）のフローチャートである。
【０２３８】
（１）ホストアダプタＣは、ジャーナルレコードをジャーナル論理ボリューム２３０に格納することができるか否かを判定する。具体的には、ポインタ情報７００を参照し、更新情報領域に未使用の領域があるか否かを判定する（Ｓ２５１０）。ポインタ情報７００の更新情報最新アドレス７０３と更新情報最古アドレス７０４とが等しい場合は、更新情報領域に未使用の領域が存在しないため、ジャーナルレコードの作成に失敗して処理を終了する（Ｓ２５２０）。
【０２３９】
（２）Ｓ２５１０において、更新情報領域に未使用の領域が存在すると判定された場合は、ポインタ情報７００を参照し、ライトデータ領域にライトデータを格納することができるか否かを判定する（Ｓ２５３０）。ライトデータ最古アドレス７０６の値が、ライトデータ最新アドレス７０５の値から、ライトデータ最新アドレス７０５にデータ量Ａを加算した値までの範囲にある場合、ライトデータ領域にライトデータを格納することができない。このため、ジャーナルレコードの作成に失敗して処理を終了する（Ｓ２５２０）。
【０２４０】
（３）ジャーナルレコードをジャーナル論理ボリューム２３０に格納することができる場合、ホストアダプタＣは、受信した更新情報３００のグループ番号３０２及びライトデータを格納したジャーナル論理ボリュームの論理アドレス３０６を変更する。グループ番号３０２は、副記憶システムＣのグループ番号に変更し、ジャーナル論理ボリュームの論理アドレス３０６は、ポインタ情報７００のライトデータ最新アドレス７０５に変更する。
【０２４１】
さらに、ホストアダプタＣは、ポインタ情報７００の更新情報最新アドレス７０３を、更新情報最新アドレスの値に更新情報３００のサイズを加算した値に変更し、ライトデータ最新アドレス７０５を、ライトデータ最新アドレスの値にライトデータのサイズを足した値に変更する。
【０２４２】
さらに、ホストアダプタＣは、グループ情報６００の更新番号６０５を、受信した更新情報３００の更新番号３０３に変更する（Ｓ２５４０）。
【０２４３】
（４）ホストアダプタＣは、ディスクアダプタ１２０に対して、「更新情報３００及びライトデータを記憶装置１５０に書き込む」ことを命令し、ジャーナルレコードの作成に成功して処理を終了する（Ｓ２５５０）。その後、ディスクアダプタ１２０は、リードライト処理によって、記憶装置１５０に更新情報３００及びライトデータを書き込み、キャッシュメモリ１３０を開放する。
【０２４４】
上記のジャーナル格納処理では、ジャーナルを記憶装置１５０に格納したが、ジャーナル用にあらかじめ一定量のキャッシュメモリ１３０を用意し、当該キャッシュメモリ１３０にジャーナルを格納してもよい。この場合、ジャーナルレコードは、当該キャッシュメモリ１３０に優先的に格納され、当該キャッシュメモリ１３０に格納しきれない分が記憶装置１５０に格納される。ジャーナル用のキャッシュメモリ１３０の量は、例えば、保守端末から指定する。
【０２４５】
＜リストア処理の動作＞
図２６は、本発明の第１の実施の形態のリストア処理のフローチャートである。
【０２４６】
リストア処理は、リストア部２５０によって実行される処理である。
【０２４７】
図２６を参照して、以下の（１）〜（６）において、副記憶システムＣのホストアダプタＣがジャーナルを利用してデータを更新するリストア処理の手順について説明する。なお、リストア処理は、副記憶システムＣのディスクアダプタ１２０が実行してもよい。
【０２４８】
（１）ホストアダプタＣは、グループ番号Ｃのグループ状態６０２が“正常”又は“停止”であるか否かを判定する（Ｓ２６１０）。Ｓ２６１０において、グループ状態が“正常”又は“停止”のいずれでもない（例えば、“異常”である）と判定された場合は、リストアすることができないため、リストア処理を終了する（Ｓ２６１５）。
【０２４９】
（２）Ｓ２６１０において、グループ状態が“正常”又は“停止”であると判定された場合は、ジャーナル論理ボリューム２３０のボリューム状態４０２が正常であるか否かを判定する（Ｓ２６２０）。Ｓ２６２０において、ジャーナル論理ボリューム２３０のボリューム状態４０２が“異常”であると判定された場合は、ジャーナル論理ボリューム２３０にアクセスすることができない。このため、グループ状態を“異常”に変更し、処理を終了する（Ｓ２６２５）。
【０２５０】
（３）Ｓ２６２０において、ジャーナル論理ボリューム２３０のボリューム状態４０２が“正常”であると判断された場合は、次に、リストア処理対象のジャーナルレコードが存在するか否かを判定する。具体的には、ホストアダプタＣは、ポインタ情報７００の更新情報最古アドレス７０４と更新情報最新アドレス７０３とを比較する。更新情報最古アドレスと更新情報最新アドレスとが等しい場合、リストア処理対象のジャーナルレコードは存在しないため、リストア処理を終了し、所定の時間後、リストア処理を再開する（Ｓ２６３０）。
【０２５１】
（４）Ｓ２６３０において、リストア処理対象のジャーナルレコードが存在すると判定された場合、最古（最小）の更新番号３０３を有するジャーナルレコードに対して次の処理を実行する。最古（最小）の更新番号３０３を有するジャーナルレコードの更新情報３００は、ポインタ情報７００の更新情報最古アドレス７０４が示す位置から始まる領域に格納されている。ホストアダプタＣは、キャッシュメモリ１３０を確保し、ディスクアダプタ１２０に対して、「更新情報最古アドレス７０４から更新情報３００のサイズの情報を読み出してキャッシュメモリ１３０に格納する」ことを命令する。
【０２５２】
ディスクアダプタ１２０のリードライト処理は、記憶装置１５０から更新情報３００を読み出してキャッシュメモリ１３０に格納し、更新情報３００のリード終了をホストアダプタＣに通知する。
【０２５３】
ホストアダプタＣは、更新情報３００のリード終了の通知を受けると、更新情報３００から、ライトデータを格納したジャーナル論理ボリュームの論理アドレス３０６及びライトデータのデータサイズ３０５を読み出す。そして、キャッシュメモリ１３０を確保して、ディスクアダプタ１２０に対して、「ライトデータを読み出してキャッシュメモリ１３０に格納する」ことを命令する。
【０２５４】
ディスクアダプタ１２０のリードライト処理は、記憶装置１５０からライトデータを読み出してキャッシュメモリ１３０に格納し、ホストアダプタに通知する（Ｓ２６４０）。
【０２５５】
（５）ホストアダプタＣは、更新情報３００の更新する副論理ボリューム２３０の論理アドレス（ライト命令の論理アドレス３０４）を参照し、ディスクアダプタ１２０に対して、「副論理ボリューム２３０にライトデータを書き込む」ことを命令する（Ｓ２６５０）。ディスクアダプタＣのリードライト処理は、副論理ボリューム２３０の論理アドレスに対応する記憶装置１５０にデータを書き込み、キャッシュメモリ１３０を開放し、ホストアダプタＣにライト処理完了を通知する。
【０２５６】
（６）ホストアダプタＣは、ディスクアダプタ１２０のライト処理完了の通知を受けると、ジャーナルレコードの記憶領域を開放する。すなわち、ポインタ情報７００の更新情報最古アドレス７０４を、更新情報３００のサイズを加算した値に変更する。更新情報最古アドレス７０４がライトデータ領域先頭アドレス７０２と同一になった場合は、更新情報最古アドレス７０４を０とする。
【０２５７】
さらに、ポインタ情報７００のライトデータ最古アドレス７０６を、ライトデータのサイズを加算した値に変更する。ライトデータ最古アドレス７０６は、ジャーナル論理ボリューム２３０の容量に含まれない論理アドレスとなった場合、ライトデータ領域先頭アドレス７０２を減じた値に更新される。その後、ホストアダプタＣは、次のリストア処理を開始する（Ｓ２６６０）。
【０２５８】
上記のリストア処理では、記憶装置１５０からジャーナルレコードを読み出してキャッシュメモリ１３０に格納したが、ジャーナルがキャッシュメモリ１３０に存在する場合は、この手順は不要である。
【０２５９】
本実施の形態では、非同期リモートコピーの際のジャーナルリード受信処理及びジャーナルリード処理において、正記憶システムＡが、ポインタ情報７００を参照して、副記憶システムＣに送信するジャーナルレコードを指定したが、副記憶システムＣが、正記憶システムＡから送信されるジャーナルレコードを指定してもよい。例えば、副記憶システムＣが正記憶システムＡに発行するジャーナルリード命令に、更新番号の指定を追加する。この場合、正記憶システムＡのジャーナルリード受信処理において、副記憶システムＣが指定した更新番号の更新情報３００に対応する論理アドレスを求めるために、正記憶システムＡの共有メモリ１４０内に、更新番号と更新情報３００を格納した論理アドレスとを対応付けるテーブル又は検索手段等を設ける。
【０２６０】
また、本実施の形態のジャーナルリード受信処理及びジャーナルリード処理では、ジャーナルレコードの転送のためにジャーナルリード命令を用いるが、通常のリード命令を用いてもよい。例えば、正記憶システムＡのグループ情報６００及びポインタ情報７００をあらかじめ副記憶システムＣに転送する。副記憶システムＣは、これらの情報に基づいて、正記憶システムＡのジャーナル論理ボリューム２３０のデータ（すなわち、ジャーナルレコード）を、リード命令によって読み出す。
【０２６１】
また、本実施の形態のジャーナルリード受信処理では、更新番号の順に、副記憶システムＣが正記憶システムＡにジャーナルレコードを送信するが、更新番号の順に送信しなくてもよい。また、正記憶システムＡが副記憶システムＣに対して複数のジャーナルリード命令を送信してもよい。これらの場合、副記憶システムＣのリストア処理において更新番号順にジャーナルレコードを処理してデータを更新するために、副記憶システムＣに、更新番号と更新情報３００を格納した論理アドレスとを対応付けるテーブル又は検索手段等を設ける。
【０２６２】
また、本実施の形態のジャーナルリード受信処理及びジャーナルリード処理では、副記憶システムＣが正記憶システムＡに対してジャーナルリード命令を送信してジャーナルレコードを取得するが、正記憶システムＡが副記憶システムＣに対して、ジャーナルレコードを格納するライト命令を送信してもよい。このジャーナルレコードを格納するライト命令は、専用の命令（ジャーナルライト命令）によってなされてもよいし、通常のライト命令によってなされてもよい。例えば、副記憶システムＣのグループ情報６００及びポインタ情報７００があらかじめ正記憶システムＡに転送される。正記憶システムＡは、これらの情報に基づいて、副記憶システムＣのジャーナル論理ボリューム２３０にデータ（すなわち、ジャーナルレコード）を書き込む。
【０２６３】
本実施の形態では、正記憶システムＡのジャーナル論理ボリュームの記憶容量と、副記憶システムＢのジャーナル論理ボリュームの記憶容量と、副記憶システムＣのジャーナル論理ボリュームの記憶容量とは、同じであるが、これらは異なっていてもよい。
【０２６４】
以上のように、本実施の形態のコンピュータシステムにおいて、副記憶システムＢ及びＣには、正記憶システムＡに格納されたデータの複製が格納される。正記憶システムＡは、複製対象データを更新する際、副記憶システムＢ内の該当するデータの更新を命令すると共に、当該更新に関する情報をジャーナルレコードとして格納する。副記憶システムＢは、正記憶システムＡからの命令を受けると、該当するデータを更新する（同期リモートコピー）。副記憶システムＣは、正記憶システムＡからジャーナルレコードを取得し、取得したジャーナルレコードを用いて、正記憶システムＡのデータ更新順序に従って該当するデータを更新する（非同期リモートコピー）。その結果、副記憶システムＢ及びＣは、データの整合性を維持しつつ、正記憶システムＡのデータの複製を保持する。
【０２６５】
＜ビットマップ（ＢＭ）差分形成＞
次に、本発明の第１の実施の形態において、ホストコンピュータＡに障害が発生した場合のフェイルオーバーの手順を説明する。
【０２６６】
記憶システムＡと記憶システムＢは、通常の運用において、同期リモートコピーによるペアを形成する。すなわち、記憶システムＢには、同期リモートコピーによって、記憶システムＡと全く同じデータが格納されている。このため、ホストコンピュータＡに障害が発生すると、ホストコンピュータＢが記憶システムＢを使用してホストコンピュータＡの業務を引き継ぐことができる。
【０２６７】
一方、記憶システムＡと記憶システムＣは、通常の運用において、非同期リモートコピーによるペアを形成する。このため、ホストコンピュータＡに障害が発生したときに、ホストコンピュータＢ又は記憶装置Ｂを使用することができない場合は、記憶装置Ｃに接続されたホストコンピュータ（図示省略）が記憶装置Ｃを使用してホストコンピュータＡの業務を引き継ぐことができる。
【０２６８】
しかし、記憶システムＢと記憶システムＣは、通常の運用において、ペアを形成しない。すなわち、記憶システムＢと記憶システムＣとの間では、データの同一性が保証されない。したがって、ホストコンピュータＢがホストコンピュータＡの運用を引き継いだ後、さらにホストコンピュータＢ又は記憶システムＢに障害が発生したときに、記憶装置Ｃに接続されたホストコンピュータは、記憶装置Ｃを使用してホストコンピュータＢの業務を引き継ぐことができない。
【０２６９】
そこで、ホストコンピュータＢがホストコンピュータＡの運用を引き継いだとき、記憶システムＢと記憶システムＣは、新たなペアを形成する。すなわち、データの同一性が確保される。その後、ホストコンピュータＢ又は記憶システムＢに障害が発生したときに、記憶装置Ｃに接続されたホストコンピュータがホストコンピュータＢの業務を引き継ぐことができる。このため、システムの耐障害性が向上する。
【０２７０】
本発明では、記憶システムＢと記憶システムＣとの間に新たなペアを形成する際に、記憶システムＢのデータのうち、記憶システムＣに格納されていないデータ（すなわち、差分データ）のみを記憶システムＣに転送して複製する。以下、このように差分データのみを複製することによってペア形成することを、差分形成と記載する。
【０２７１】
本実施の形態では、差分ビットマップ（ＢＭ）を参照して、差分形成する。以下、これをビットマップ差分形成と記載する。
【０２７２】
差分ビットマップとは、論理ボリューム２３０内のデータが更新（書き込み）された領域を示すフラグの集合である。例えば、論理ボリューム２３０を構成する論理ブロック（セクタ）ごとに一つのビットが割り当てられる。その論理ボリューム２３０が属するペアの状態が「サスペンド」のとき、その論理ボリューム２３０のデータの更新は、ペアの相手方の論理ボリュームに反映されない。この状態において、その論理ボリューム２３０内の論理ブロックが更新されると、その論理ブロックに割り当てられたビットの値が「０」から「１」に変化する。なお、差分ビットマップのビットは、任意の大きさの領域に割り当てることができる。例えば、複数の論理ブロック（トラック等）ごとに一つのビットが割り当てられてもよい。その場合は、一つのビットに割り当てられた領域に含まれるいずれかのデータが更新されたとき、そのビットの値が「０」から「１」に変化する。また、データが更新されたときに、ビットの値が「１」から「０」に変化してもよい。
【０２７３】
差分ビットマップは、各論理ボリューム２３０に、その論理ボリューム２３０が属するペアの数ずつ設けられる。例えば、図１の記憶システムＡの論理ボリュームＤＡＴＡ１は、記憶システムＢの論理ボリュームｄａｔａ１及び記憶システムＣの論理ボリュームＣＯＰＹ１とペアを構成する。このため、ＤＡＴＡ１は、ｄａｔａ１とのペアに対応する差分ビットマップと、ＣＯＰＹ１とのペアに対応する差分ビットマップとを有する。
【０２７４】
差分ビットマップは、共有メモリ１４０内に格納される。ペア情報５００の差分ＢＭ位置５０９は、各差分ビットマップが格納された位置（アドレス）である。なお、差分ビットマップは、キャッシュメモリ１３０又はその他のメモリに格納されてもよい。
【０２７５】
次に、図２７及び図２８を参照して、ビットマップ差分形成の手順を説明する。
【０２７６】
なお、ビットマップ差分形成が実行されるには、記憶システムＡが正常に動作していることが必要である。したがって、以下のビットマップ差分形成の説明においては、ホストコンピュータＡに障害等が発生し、記憶システムＡは正常に動作しているものとする。
【０２７７】
図２７は、本発明の第１の実施の形態のビットマップ差分形成のフローチャートである。図２８は、本発明の第１の実施の形態のビットマップ差分形成の説明図である。
【０２７８】
図２８は、例として、論理ボリュームＤＡＴＡ１及びｄａｔａ１のペア、並びに、論理ボリュームＤＡＴＡ１及びＣＯＰＹ１のペアを示す。また、図２８のＳ２７０１〜Ｓ２７０７は、図２７のフローチャートのステップ番号に対応する。
【０２７９】
なお、図２７のフローチャートの各手順は、ホストコンピュータＢの差分形成指示部Ｂの指示に従って、記憶システムＢの差分形成部Ｂ等が実行するものである。
【０２８０】
ホストコンピュータＡの障害等によってビットマップ差分形成が開始すると、ホストコンピュータＢの差分形成指示部２６０（以下、「差分形成指示部Ｂ」とする）は、記憶システムＢの差分形成部２６５（以下、「差分形成部Ｂ」とする）に対して、記憶システムＡのホストＩ／Ｏを一時保留することを指示する（Ｓ２７０１）。これを受けて、差分形成部Ｂは、記憶システムＡに対して、ホストＩ／Ｏを一時保留することを指示する。その結果、ホストコンピュータＡから記憶装置Ａに対するデータの書き込み及び読み出しが停止される。すなわち、以後、記憶システムＡのデータは、ホストコンピュータＡによって更新されない。
【０２８１】
次に、差分形成指示部Ｂは、差分形成部Ｂに対して、記憶システムＡ及びＢのペア（すなわち、ＤＡＴＡ１及びｄａｔａ１のペア）のサスペンドを指示する（Ｓ２７０２）。その結果、当該ペアは存続するが、当該ペアにおいて、同期リモートコピーによるデータの転送が停止する。サスペンドされた時点で、ＤＡＴＡ１及びｄａｔａ１には、全く同じデータが格納されている。また、ＤＡＴＡ１のｄａｔａ１に対する差分ビットマップ２８０１、及び、ｄａｔａ１のＤＡＴＡ１に対する差分ビットマップ２８０２は、全てのビットが「０」である。なお、この時点では、ｄａｔａ１とＣＯＰＹ１の間にペアが形成されていないため、ｄａｔａ１のＣＯＰＹ１に対する差分ビットマップ２８０３は、まだ存在していない。
【０２８２】
次に、ホストコンピュータＢが、記憶システムＢを使用してアプリケーションの運用を開始する（Ｓ２７０３）。すなわち、ホストコンピュータＢが、記憶システムＢを使用して、ホストコンピュータＡの業務を引き継ぐ。以後、記憶システムＢ内のｄａｔａ１のデータは、ホストコンピュータＢによって更新される。このとき、更新されたデータに対応する、差分ビットマップ２８０２内のビットの値が、「０」から「１」に変更される。
【０２８３】
次に、差分形成指示部Ｂは、記憶システムＣに対して、記憶システムＡ及びＣの間のペアの削除を指示する（Ｓ２７０４）。記憶システムＣのジャーナルリード部２４０は、ペア削除指示を受けると、記憶システムＡに対して、ジャーナル論理ボリュームＪＮＬ−Ａに格納されたジャーナルレコードの転送を要求する。そして、記憶システムＡから転送されたジャーナルレコードを、記憶システムＣのジャーナル論理ボリュームＪＮＬ−Ｃに格納する。ペアの削除は、ペア削除指示が発行された時点でＪＮＬ−Ａに格納されていた全てのジャーナルレコードがＪＮＬ−Ｃに転送され、さらにＪＮＬ−Ｃに転送されたすべてのジャーナルレコードがリストアされた時点で終了する。ＪＮＬ−Ｃに格納されたジャーナルレコードは、記憶システムＣのリストア部２５０によってＣＯＰＹ１に反映される。
【０２８４】
差分形成指示部Ｂは、ペア削除が終了したか否かを判定する（Ｓ２７０５）。具体的には、ペア削除指示（Ｓ２７０４）が発行された時点でＪＮＬ−Ａに格納されていた全てのジャーナルが、Ｓ２７０５の時点でＪＮＬ−Ｃに転送されていれば、ペア削除が終了したと判定される。ペア削除が終了していない場合は、ペア削除を続行し、再びペア削除が終了したか否かを判定する（Ｓ２７０５）。
【０２８５】
Ｓ２７０５においてペア削除が終了したと判定された場合、差分形成指示部Ｂは、差分形成部Ｂに対して、記憶システムＢ及びＣの間に非同期リモートコピーのペアを形成することを指示する（Ｓ２７０６）。すなわち、ｄａｔａ１とＣＯＰＹ１の間にペアを形成する。このとき、差分形成部Ｂは、共有メモリ１４０内に、ｄａｔａ１のＣＯＰＹ１に対する差分ビットマップ２８０３を生成する。
【０２８６】
次に、記憶システムＢは、記憶システムＡに対する差分ビットマップを、記憶システムＣに対する差分ビットマップとして使用して、差分データを記憶システムＣに反映させる（Ｓ２７０７）。具体的には、ｄａｔａ１のＤＡＴＡ１に対する差分ビットマップ２８０２の各ビットの値を差分ビットマップ２８０３に複製する。そして、差分形成部Ｂは、論理ボリュームｄａｔａ１に含まれるデータのうち、対応する差分ビットマップ２８０３のビットの値が「１」であるデータ（すなわち、Ｓ２７０２のサスペンドの後にホストコンピュータＢによって更新された差分データ）を、記憶システムＣの論理ボリュームＣＯＰＹ１に転送し、ＣＯＰＹ１を更新する。その結果、サスペンド（Ｓ２７０２）後にホストコンピュータＢによってなされた記憶システムＢのデータの更新が、記憶システムＣに反映される。
【０２８７】
以上でビットマップ差分形成を終了する（Ｓ２７０８）。以後、記憶システムＢ及びＣは、非同期リモートコピーによるペアとして運用される。なお、Ｓ２７０１からＳ２７０６までのいずれかのステップで異常が発生した場合は、ビットマップ差分形成に失敗する。この場合、記憶システムＢの論理ボリュームｄａｔａ１のデータを全て記憶システムＣの論理ボリュームＣＯＰＹ１に転送し、複製することによって、記憶システムＢ及びＣの間にペアを形成する。
【０２８８】
一般に、記憶システムＡ及びＢのペアの状態をサスペンドにした後、記憶システムＢ及びＣの間にペアを形成するためには、論理ボリューム２３０の全データを記憶システムＢから記憶システムＣにコピーする必要がある。このコピーは、通常、長い時間を要する。
【０２８９】
しかし、上記のビットマップ差分形成によれば、差分ビットマップを参照して、更新されたデータのみを複製することによって記憶システムＢ及びＣの間にペアを形成する。このため、ペアの形成に要する時間を短縮することができる。
【０２９０】
なお、図２７において、ホストＩ／Ｏの一時保留（Ｓ２７０１）は、記憶システムＡ及びＢのペアのサスペンド（Ｓ２７０２）を契機として実行されてもよい。例えば、記憶システムＡは、記憶システムＢからサスペンドの指示を受けると、サスペンドを実行する前に、ホストＩ／Ｏを保留する。その結果、Ｓ２７０１を省略することができる。
【０２９１】
また、図２７において、Ｓ２７０１又はＳ２７０２のいずれにおいてもホストＩ／Ｏの一時保留を省略することができる。ただし、この場合は、記憶システムＡが、障害が発生したホストコンピュータＡから、望ましくない更新（例えば、無意味なデータの書き込み）を受ける場合がある。その更新は、記憶システムＡとＣのペアの削除が終了する（Ｓ２７０５）前になされた場合は、記憶システムＣに反映される。このため、記憶システムＣのこのような望ましくない更新を取り消すことが必要になる。
【０２９２】
そこで、サスペンド（Ｓ２７０２）の後、記憶システムＡのＤＡＴＡ１内のデータがホストコンピュータＡから更新された場合、当該データに対応する差分ビットマップ２８０１のビットの値を「１」とする。そして、Ｓ２７０６において、差分ビットマップ２８０１と差分ビットマップ２８０２とを融合して差分ビットマップ２８０３に複製する。すなわち、差分ビットマップ２８０１のビットと、それに対応する差分ビットマップ２８０２のビットの値の少なくとも一方が「１」（すなわち、更新された）であるときは、これらのビットに対応する差分ビットマップ２８０３のビットを「１」とする。
【０２９３】
具体的には、差分ビットマップ２８０１と差分ビットマップ２８０２の各ビットの論理和を算出し、その値を差分ビットマップ２８０３に複製してもよい。また、差分ビットマップ２８０２の各ビットの値を差分ビットマップ２８０３に複製したあとで、差分ビットマップ２８０１と差分ビットマップ２８０３の各ビットの論理和を算出し、その値を新たな差分ビットマップ２８０３の値としてもよい。
【０２９４】
なお、各差分ビットマップにおいて、データが更新されたことを示すビットの値が「０」である場合は、論理和を算出する代わりに、論理積を算出する。
【０２９５】
その後、差分形成部Ｂは、論理ボリュームｄａｔａ１に含まれるデータのうち、対応する差分ビットマップ２８０３のビットの値が「１」であるデータを、記憶システムＣの論理ボリュームＣＯＰＹ１に転送する。その結果、差分ビットマップ２８０１によって示される領域のデータと、差分ビットマップ２８０２によって示される領域のデータが、ｄａｔａ１からＣＯＰＹ１に転送され、転送されたデータによってＣＯＰＹ１が更新される。
【０２９６】
このため、例えば、記憶システムＡが、ホストコンピュータＡから無意味なデータを書き込まれ、そのデータが記憶システムＣにも書き込まれた場合でも、その後、記憶システムＢのデータを書き込むことによって、本来のデータに戻すことができる。
【０２９７】
＜ジャーナル差分形成＞
次に、本発明の第２の実施の形態について説明する。本発明の第１の実施の形態のうち、図１から図２６に示す構成は、本発明の第２の実施の形態にも適用される。このため、これらの構成の説明は省略する。
【０２９８】
本発明の第２の実施の形態は、記憶システムＢと記憶システムＣの間でペアを形成する際に、ジャーナルを使用して差分形成する点で、差分ビットマップを使用する第１の実施の形態（ビットマップ差分形成）と異なる。このように、ジャーナルを使用した差分形成を、以下、ジャーナル差分形成と記載する。
【０２９９】
なお、ジャーナル差分形成は、ビットマップ差分形成と異なり、ホストコンピュータＡ又は記憶システムＡのいずれに障害が発生した場合にも実行することができる。
【０３００】
以下、図２９及び図３０を参照して、ジャーナル差分形成について説明する。
【０３０１】
図２９は、本発明の第２の実施の形態のジャーナル差分形成のフローチャートである。図３０は、本発明の第２の実施の形態のジャーナル差分形成の説明図である。
【０３０２】
これらの図の説明において、ビットマップ差分形成と共通する部分については、説明を省略する。また、図３０において、Ｓ２９０１等のステップ番号は、図２９のフローチャートのステップ番号に対応する。
【０３０３】
最初に、本実施の形態における通常時（すなわち、障害が発生していないとき）の動作を説明する。
【０３０４】
記憶システムＡは、ホストコンピュータＡからの書き込み命令によってデータを更新されると、同期リモートコピーによって当該更新を記憶システムＢに反映させる。さらに、当該更新を非同期リモートコピーによって記憶システムＣに反映させるために、当該データに関するジャーナルレコードを作成して、ジャーナル論理ボリューム２３０（ＪＮＬ−Ａ）に格納する。さらに、記憶システムＡは、このとき作成したジャーナルレコードの更新番号３０３を、記憶システムＢへの同期リモートコピーの際に、当該データと共に転送する。
【０３０５】
記憶システムＢは、転送されたデータ及び更新番号３０３に基づいてジャーナルレコードを作成して、ジャーナル論理ボリューム２３０（ＪＮＬ−Ｂ）に格納する。
【０３０６】
記憶システムＡは、ジャーナル論理ボリュームＪＮＬ−Ａに格納されたジャーナルレコードを記憶システムＣに転送した後、当該ジャーナルレコードを消去する。
【０３０７】
しかし、記憶システムＢは、通常時にはジャーナルを使用しない。このため、ジャーナル論理ボリュームＪＮＬ−Ｂに空き容量がなくなると、古いジャーナルレコード（すなわち、更新番号３０３の小さいジャーナルレコード）から順に消去して、新たなジャーナルレコードを格納する。
【０３０８】
次に、ホストコンピュータＡ又は記憶システムＡに障害が発生した場合のジャーナル差分形成について説明する。
【０３０９】
なお、図２９のフローチャートの各手順は、ホストコンピュータＢの差分形成指示部Ｂの指示に従って、記憶システムＢの差分形成部Ｂ等が実行するものである。
【０３１０】
ジャーナル差分形成が開始すると、ホストコンピュータＢの差分形成指示部Ｂは、記憶システムＢの差分形成部Ｂに対して、記憶システムＡ及びＢのペアをサスペンドすることを指示する（Ｓ２９０１）。
【０３１１】
次に、差分形成指示部Ｂは、ホストコンピュータＢによるアプリケーションの運用開始を指示する（Ｓ２９０２）。以後、ホストコンピュータＢは、記憶システムＢを使用して、アプリケーションを運用する。これによって、ホストコンピュータＡの業務がホストコンピュータＢに引き継がれる。
【０３１２】
記憶システムＢは、ホストコンピュータＢからデータを更新されると、当該更新に関するジャーナルレコードを作成して、ジャーナル論理ボリュームＪＮＬ−Ｂに格納する。このとき、当該ジャーナルレコードには、記憶システムＡ及びＢのペアがサスペンドされる前にＪＮＬ−Ｂに最後に格納されたジャーナルレコードの更新番号３０３（以下、「最大更新番号初期値」と記載する）から連続する更新番号３０３が与えられる。
【０３１３】
ＪＮＬ−Ｂに新たなジャーナルレコードを格納する空き容量がない場合は、古いジャーナルレコード（すなわち、更新番号の小さいジャーナルレコード）から順に消去して、新たなジャーナルレコードを格納する。
【０３１４】
図３０の例では、サスペンド（Ｓ２９０１）の時点で、ＪＮＬ−Ｂには、更新番号「４０」から「１００」までのジャーナルレコードが格納されている。すなわち、「４０」から「１００」までの更新番号は、記憶システムＡから記憶システムＢに転送されたものである。したがって、最大更新番号初期値は「１００」である。
【０３１５】
その後、ホストコンピュータＢの運用が開始され、ホストコンピュータＢが記憶システムＢのデータを更新すると、記憶システムＢは、当該更新に関するジャーナルレコードを作成してＪＮＬ−Ｂに格納する。このとき、記憶システムＢは、「１０１」以降の更新番号を、更新の順に新しいジャーナルレコードに与える。図３０に示す時点では、記憶システムＢにおいて、サスペンド（Ｓ２９０１）後に、１０個のジャーナルレコードが作成され、最大更新番号３０３は「１１０」である。このとき、更新番号３０３が「４０」のジャーナルレコードも消去されずに残っているため、最小更新番号３０３は「４０」である。
【０３１６】
なお、記憶システムＢにおけるジャーナル作成の手順は、ジャーナル作成処理（図１９）と同様である。
【０３１７】
次に、差分形成指示部Ｂは、差分形成部Ｂに、記憶システムＣの一時停止を指示する（Ｓ２９０３）。差分形成部Ｂは、記憶システムＣの差分形成部２６５に、一時停止を指示する。以後、記憶システムＡは、ジャーナルレコードを作成し続けるが、記憶システムＣは、記憶システムＡからジャーナルレコードを受け取らない。記憶システムＣは、ＪＮＬ−Ｃに格納されたジャーナルレコードを保持し続けるが、当該ジャーナルレコードを論理ボリュームに反映させるリストア処理を一時停止する。
【０３１８】
図３０の例では、記憶システムＣのジャーナル論理ボリュームＪＮＬ−Ｃには、更新番号３０３が「６０」から「８０」までのジャーナルレコードが格納されている。すなわち、ＪＮＬ−Ｃの最小更新番号３０３は「６０」であり、最大更新番号３０３は「８０」である。
【０３１９】
なお、記憶システムＡ及びＣは、非同期リモートコピーによるペアを形成する。このため、記憶システムＣは、更新番号３０３の順にジャーナルレコードを受信するとは限らない。したがって、障害が発生した状況によっては、ＪＮＬ−Ｃに格納されたジャーナルレコードに欠落がある（すなわち、更新番号３０３が連続しない）場合がある。この場合は、更新番号３０３が連続する範囲内での最大値を、ＪＮＬ−Ｃの更新番号３０３の最大値（すなわち、最大更新番号３０３）とする。
【０３２０】
例えば、図３０において、ＪＮＬ−Ｃに、更新番号３０３が「６０」から「８０」までのジャーナルレコードが連続して格納され、更新番号３０３が「８１」のジャーナルレコードが格納されず、更新番号３０３が「８２」のジャーナルレコードが格納されている場合、最大更新番号３０３は、「８０」である。
【０３２１】
一方、記憶システムＡのジャーナル論理ボリュームＪＮＬ−Ａには、更新番号３０３が「６０」から「１０５」までのジャーナルレコードが格納されている。すなわち、ＪＮＬ−Ａの最小更新番号３０３は「６０」であり、最大更新番号３０３は「１０５」である。これらのジャーナルレコードのうち、更新番号３０３が「６０」から「８０」までのものは、すでに記憶システムＡから記憶システムＣに転送されている。また、更新番号３０３が「１０１」から「１０５」までのものは、サスペンド（Ｓ２９０１）後に作成されたものであるため、障害が発生したホストコンピュータＡから書き込まれた無意味なデータを含む可能性がある。
【０３２２】
次に、差分形成部Ｂは、ジャーナル論理ボリュームＪＮＬ−Ｃの最小更新番号３０３がジャーナル論理ボリュームＪＮＬ−Ｂの最大更新番号初期値以下であり、かつ、ＪＮＬ−Ｂの最小更新番号３０３がＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値以下であるか否かを判定する（Ｓ２９０４）。
【０３２３】
Ｓ２９０４の判定の結果が「Ｎｏ」である場合（すなわち、ジャーナル論理ボリュームＪＮＬ−Ｃの最小更新番号３０３がジャーナル論理ボリュームＪＮＬ−Ｂの最大更新番号初期値より大きいか、又は、ＪＮＬ−Ｂの最小更新番号３０３がＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値より大きい場合）は、ジャーナル差分形成に必要な一つ以上のジャーナルレコードが不足しているため、ジャーナル差分形成に失敗して処理を終了する（Ｓ２９１０）。この場合、記憶システムＢの論理ボリュームｄａｔａ１のデータを全て記憶システムＣの論理ボリュームＣＯＰＹ１に転送し、格納することによって、記憶システムＢ及びＣの間にペアを形成する。
【０３２４】
一方、Ｓ２９０４の判定の結果が「Ｙｅｓ」である場合は、ジャーナル差分形成に必要なジャーナルレコードが全てそろっている。このため、差分形成指示部Ｂは、差分形成部Ｂに対して、記憶システムＢ及びＣの間に非同期リモートコピーによるペアを形成することを指示する（Ｓ２９０５）。
【０３２５】
図３０の例では、ＪＮＬ−Ｃの最小更新番号３０３は「６０」であり、これは、ＪＮＬ−Ｂの最大更新番号初期値の「１００」以下である。さらに、ＪＮＬ−Ｂの最小更新番号３０３は「４０」であり、これは、ＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値「８１」以下である。このため、Ｓ２９０４の判定の結果は「Ｙｅｓ」である。
【０３２６】
仮に、ＪＮＬ−Ｂの最小更新番号３０３が「９０」であれば、これは、ＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値「８１」より大きい。このとき、更新番号３０３が「８１」から「８９」までのジャーナルレコードは、ＪＮＬ−Ｂ及びＪＮＬ−Ｃのいずれにも存在しないため、これらのジャーナルレコードを用いてペアを形成することができない。このため、ペアの形成に失敗して処理を終了する（Ｓ２９１０）。
【０３２７】
次に、差分形成部Ｂは、ＪＮＬ−Ｃの最大更新番号３０３がＪＮＬ−Ｂの最大更新番号初期値以下であるか否かを判定する（Ｓ２９０６）。
【０３２８】
Ｓ２９０６の判定の結果が「Ｙｅｓ」である場合は、ＪＮＬ−Ｂのジャーナルレコードのうち、更新番号３０３がＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値以上であるジャーナルレコードを、ＪＮＬ−Ｃに転送し、格納する。そして、記憶システムＣは、リストア処理によって、ＪＮＬ−Ｃの内容をＣＯＰＹ１に反映させる。具体的には、ＪＮＬ−Ｃに格納されたジャーナルレコードのデータを、更新番号３０３の順にＣＯＰＹ１に格納する（Ｓ２９０７）。
【０３２９】
一方、Ｓ２９０６の判定の結果が「Ｎｏ」である場合は、ＪＮＬ−Ｂのジャーナルレコードのうち、更新番号３０３がＪＮＬ−Ｂの最大更新番号初期値に「１」を加算した値以上であるジャーナルレコードを、ＪＮＬ−Ｃに転送し、格納する。そして、記憶システムＣは、リストア処理によって、ＪＮＬ−Ｃの内容をＣＯＰＹ１に反映させる。具体的には、ＪＮＬ−Ｃに格納されたジャーナルレコードのデータを、更新番号３０３の順にＣＯＰＹ１に格納する（Ｓ２９０８）。
【０３３０】
Ｓ２９０７又はＳ２９０８の結果、ホストコンピュータＡによって更新されたデータ及びホストコンピュータＢによって更新されたデータが、更新された順序に従って、記憶システムＣに反映（書き込み）される。
【０３３１】
図３０の例では、ＪＮＬ−Ｃの最大更新番号３０３は「８０」であり、これは、ＪＮＬ−Ｂの最大更新番号初期値の「１００」以下である。このため、Ｓ２９０６の判定の結果は「Ｙｅｓ」である。したがって、更新番号３０３が「８１」以上のジャーナルレコードをＪＮＬ−ＢからＪＮＬ−Ｃに転送し、格納する（Ｓ２９０７）。
【０３３２】
仮に、ＪＮＬ−Ｂの最大更新番号初期値が「７０」であれば、ＪＮＬ−Ｃの最大更新番号３０３は「８０」であるため、Ｓ２９０６の判定の結果は「Ｎｏ」である。したがって、更新番号３０３が「７１」以上のジャーナルレコードをＪＮＬ−ＢからＪＮＬ−Ｃに転送し、格納する（Ｓ２９０８）。
【０３３３】
この場合、Ｓ２９０８が実行される前は、ＪＮＬ−Ｃに格納された更新番号３０３が「７１」から「８０」までのジャーナルレコードは、サスペンド（Ｓ２９０１）後にホストコンピュータＡによって更新されたデータを含む。すなわち、これらのジャーナルレコードは、無意味なデータを含む可能性がある。しかし、Ｓ２９０８において、これらのジャーナルレコードがＪＮＬ−Ｂに格納されたジャーナルレコードによって置き換えられることによって、無意味なデータがＣＯＰＹ１に書き込まれることが防止される。
【０３３４】
以上で、ジャーナル差分形成を終了する（Ｓ２９０９）。以後、記憶システムＢ及びＣは、非同期リモートコピーによるペアとして運用される。なお、Ｓ２９０１からＳ２９０８までのいずれかのステップで異常が発生した場合は、ジャーナル差分形成に失敗する。この場合、Ｓ２９１０と同様に、論理ボリュームｄａｔａ１の全データを複製することによって、記憶システムＢ及びＣの間にペアを形成する。
【０３３５】
上記のジャーナル差分形成によれば、記憶システムＡ及びＢのペアの状態をサスペンドにした後、直ちにホストコンピュータの運用を開始することができ、システムが停止している時間を短縮することができる。
【０３３６】
さらに、ジャーナル差分形成によれば、更新されたデータのみを複製することによって記憶システムＢ及びＣの間にペアを形成するため、ペアの形成に要する時間を短縮することができる。
【０３３７】
さらに、ジャーナル差分形成によれば、データが順序された順序に従って差分形成されるため、差分形成が中断しても、データの整合性が失われない。
【０３３８】
＜ジャーナル＋ビットマップ差分形成＞
次に、本発明の第３の実施の形態について説明する。本発明の第１及び第２の実施の形態のうち、図１から図２６に示す構成は、本発明の第３の実施の形態にも適用される。このため、これらの構成の説明は省略する。
【０３３９】
本発明の第３の実施の形態は、記憶システムＢと記憶システムＣの間でペアを形成する際に、ジャーナルを使用して差分形成し、ジャーナルレコードに不足がある場合は、差分ビットマップによってその不足を補って差分形成する点で、第１及び第２の実施の形態のいずれとも異なる。このように、ジャーナルと差分ビットマップを使用した差分形成を、以下、ジャーナルＢＭ差分形成と記載する。
【０３４０】
なお、ジャーナルＢＭ差分形成は、ジャーナル差分形成と同様に、ホストコンピュータＡ又は記憶システムＡのいずれに障害が発生した場合にも実行することができる。
【０３４１】
以下、図３１及び図３２を参照して、ジャーナルＢＭ差分形成について説明する。
【０３４２】
図３１は、本発明の第３の実施の形態のジャーナルＢＭ差分形成のフローチャートである。図３２は、本発明の第３の実施の形態のジャーナルＢＭ差分形成の説明図である。
【０３４３】
図３２のうち、図２８又は図３０と共通する部分については、説明を省略する。また、図３２において、Ｓ３１０１等のステップ番号は、図３１のフローチャートのステップ番号に対応する。
【０３４４】
本実施の形態における通常時（すなわち、障害が発生していないとき）の動作は、本発明の第２の実施の形態と同様であるので、説明を省略する。
【０３４５】
なお、図３１のフローチャートの各手順は、ホストコンピュータＢの差分形成指示部Ｂの指示に従って、記憶システムＢの差分形成部Ｂ等が実行するものである。
【０３４６】
ホストコンピュータＡ又は記憶システムＡに障害が発生して、ジャーナルＢＭ差分形成が開始すると、ホストコンピュータＢの差分形成指示部Ｂは、記憶システムＢの差分形成部Ｂに対して、記憶システムＡ及びＢのペアをサスペンドすることを指示する（Ｓ３１０１）。
【０３４７】
次に、差分形成指示部Ｂは、ホストコンピュータＢによるアプリケーションの運用開始を指示する（Ｓ３１０２）。以後、ホストコンピュータＢは、記憶システムＢを使用して、アプリケーションを運用する。これによって、ホストコンピュータＡの業務がホストコンピュータＢに引き継がれる。
【０３４８】
記憶システムＢは、ホストコンピュータＢからデータを更新されると、当該更新に関するジャーナルレコードを作成して、ジャーナル論理ボリュームＪＮＬ−Ｂに格納する。このとき、当該ジャーナルレコードには、記憶システムＡ及びＢのペアがサスペンドされる前にＪＮＬ−Ｂに最後に格納されたジャーナルレコードの更新番号３０３（以下、「最大更新番号初期値」と記載する）から連続する更新番号３０３が与えられる。
【０３４９】
ＪＮＬ−Ｂに新たなジャーナルレコードを格納する空き容量がない場合は、古いジャーナルレコード（すなわち、更新番号３０３の小さいジャーナルレコード）から順に消去して、新たなジャーナルレコードを格納する。このとき、消去するジャーナルレコードを、差分ビットマップ３２０１に反映させる。具体的には、差分ビットマップ３２０１のビットのうち、消去されるジャーナルレコードに含まれるデータに対応するビットの値を、「１」とする。すなわち、差分ビットマップ３２０１は、ＪＮＬ−Ｂから消去されたジャーナルレコードのデータが格納された領域を示す。
【０３５０】
なお、サスペンド（Ｓ３１０１）の時点でＪＮＬ−Ｂに格納されているジャーナルレコードの更新番号３０３の最小値を、「最小更新番号初期値」とする。
【０３５１】
図３２の例では、サスペンド（Ｓ３１０１）の時点で、ＪＮＬ−Ｂには、更新番号「４０」から「１００」までのジャーナルレコードが格納されている。すなわち、「４０」から「１００」までの更新番号は、記憶システムＡから記憶システムＢに転送されたものである。したがって、最小更新番号初期値は「４０」、最大更新番号初期値は「１００」である。
【０３５２】
その後、ホストコンピュータＢの運用が開始され、ホストコンピュータＢが記憶システムＢのデータを更新すると、記憶システムＢは、当該更新に関するジャーナルレコードを作成してＪＮＬ−Ｂに格納する。このとき、記憶システムＢは、「１０１」以降の更新番号を、更新の順に新しいジャーナルレコードに与える。図３０に示す時点では、記憶システムＢにおいて、サスペンド（Ｓ３１０１）後に、５０個のジャーナルレコードが作成され、最大更新番号３０３は「１５０」である。このとき、更新番号３０３が「４０」から「８９」までのジャーナルレコードは、新たなジャーナルレコードを格納するために消去されている。このため、最小更新番号３０３は「９０」である。
【０３５３】
差分ビットマップ３２０１には、上記のように、ホストコンピュータＢによるデータの更新が直接反映されるのではなく、ＪＮＬ−Ｂから消去されるジャーナルレコード（図３２の例では、更新番号３０３が「４０」から「８９」までのジャーナルレコード）のデータが反映される。その点を除けば、差分ビットマップ３２０１は、差分ビットマップ２８０２（図２８）と同じである。
【０３５４】
以降の処理のうち、Ｓ３１０３〜Ｓ３１０９は、それぞれ、Ｓ２９０３〜Ｓ２９０９（図２９）と同じであるので、説明を省略する。
【０３５５】
Ｓ３１０４の判定の結果が「Ｎｏ」である場合（すなわち、ジャーナル論理ボリュームＪＮＬ−Ｃの最小更新番号３０３がジャーナル論理ボリュームＪＮＬ−Ｂの最大更新番号初期値より大きいか、又は、ＪＮＬ−Ｂの最小更新番号３０３がＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値より大きい場合）は、ジャーナル差分形成に必要な一つ以上のジャーナルレコードが不足している。この場合、本実施の形態では、ジャーナルレコードの不足を、差分ビットマップ３２０１で補うことができるか否かを判定する。具体的には、ＪＮＬ−Ｃの最小更新番号３０３がＪＮＬ−Ｂの最大更新番号初期値以下であり、かつ、ＪＮＬ−Ｂの最小更新番号初期値がＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値以下であるか否かを判定する（Ｓ３１１０）。
【０３５６】
Ｓ３１１０の判定の結果が「Ｎｏ」である場合は、一つ以上の不足しているジャーナルレコードのデータが差分ビットマップ３２０１に反映されていない。すなわち、ジャーナルレコードの不足を差分ビットマップ３２０１で補うことができないため、ジャーナルＢＭ差分形成に失敗して処理を終了する（Ｓ３１１５）。この場合、記憶システムＢの論理ボリュームｄａｔａ１のデータを全て記憶システムＣの論理ボリュームＣＯＰＹ１に転送し、複製することによって、記憶システムＢ及びＣの間にペアを形成する。
【０３５７】
一方、Ｓ３１１０の判定の結果が「Ｙｅｓ」である場合は、全ての不足したジャーナルレコードのデータが差分ビットマップ３２０１に反映されている。すなわち、ジャーナルレコードの不足を差分ビットマップ３２０１で補うことができる。このため、差分形成指示部Ｂは、差分形成部Ｂに対して、記憶システムＢ及びＣの間に非同期リモートコピーによるペアを形成することを指示する（Ｓ３１１１）。
【０３５８】
図３２の例では、ＪＮＬ−Ｃの最小更新番号３０３は「６０」であり、これは、ＪＮＬ−Ｂの最大更新番号初期値の「１００」以下である。しかし、ＪＮＬ−Ｂの最小更新番号３０３は「９０」であり、これは、ＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値「８１」以下ではない。このため、Ｓ３１０４の判定の結果は「Ｎｏ」である。
【０３５９】
一方、ＪＮＬ−Ｂの最小更新番号初期値は「４０」であり、これは、ＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値「８１」以下である。このため、Ｓ３１１０の判定の結果は「Ｙｅｓ」である。
【０３６０】
仮に、ＪＮＬ−Ｂの最小更新番号初期値が「８５」であれば、これは、ＪＮＬ−Ｃの最大更新番号３０３に「１」を加算した値「８１」より大きい。このとき、更新番号３０３が「８１」から「８４」までのジャーナルレコードは、ＪＮＬ−Ｂ及びＪＮＬ−Ｃのいずれにも存在しない。さらに、これらのジャーナルレコードのデータは、差分ビットマップ３２０１に反映されていない。したがって、差分ビットマップ３２０１は、ジャーナルレコードの不足を補うことができない。このため、ジャーナルＢＭ差分形成に失敗して処理を終了する（Ｓ３１１５）。
【０３６１】
次に、ＪＮＬ−Ｃに格納されたジャーナルレコードのうち、更新番号３０３がＪＮＬ−Ｂの最小更新番号初期値より小さいジャーナルレコードを、リストア処理によって論理ボリュームＣＯＰＹ１に反映させる（Ｓ３１１２）。これは、差分形成指示部Ｂがリストア処理に指示することによって実行される。このとき、ＪＮＬ−Ｃに格納されたジャーナルレコードのうち、更新番号３０３がＪＮＬ−Ｂの最小更新番号初期値以上のジャーナルレコードは、論理ボリュームＣＯＰＹ１に反映させずに、破棄する。
【０３６２】
Ｓ３１１２のリストア処理によって、ＪＮＬ−Ｃに格納されたジャーナルレコードのデータが、更新番号３０３の順に、ＣＯＰＹ１に格納される。
【０３６３】
図３２の例では、ＪＮＬ−Ｂの最小更新番号初期値が「４０」であり、これより小さい更新番号３０３のジャーナルレコードは、ＪＮＬ−Ｃに存在しない。このため、ＪＮＬ−Ｃの全てのジャーナルレコードを、ＣＯＰＹ１に反映させずに、破棄する。
【０３６４】
次に、差分形成指示部Ｂは、差分形成部Ｂに、差分ビットマップ３２０１を使用したビットマップ差分形成を指示する（Ｓ３１１３）。具体的には、論理ボリュームｄａｔａ１に含まれるデータのうち、対応する差分ビットマップ３２０１のビットの値が「１」であるデータを、論理ボリュームＣＯＰＹ１に転送し、ＣＯＰＹ１を更新する。その手順は、図２７のＳ２７０６と同様である。
【０３６５】
図３２の例では、Ｓ３１１３が実行された後のＣＯＰＹ１は、更新番号３０３が「４０」から「８９」までのジャーナルレコード（既に消去されている）によってリストア処理されたときと同じ状態になる。
【０３６６】
次に、差分形成指示部Ｂは、差分形成部Ｂに、ＪＮＬ−Ｂに格納されたジャーナルレコードを、ＪＮＬ−Ｃに転送することを指示する（Ｓ３１１４）。
【０３６７】
図３２の例では、更新番号３０３が「９０」から「１５０」までのジャーナルレコード（すなわち、ＪＮＬ−Ｂに格納された全てのジャーナルレコード）が、ＪＮＬ−Ｃに転送され、格納される。その後、Ｓ３１１２のリストア処理と同様にして、これらのジャーナルレコードに含まれるデータが論理ボリュームＣＯＰＹ１に反映される。
【０３６８】
以上で、ジャーナルＢＭ差分形成を終了する（Ｓ３１０９）。以後、記憶システムＢ及びＣは、非同期リモートコピーによるペアとして運用される。なお、Ｓ３１０１からＳ３１１４までのいずれかのステップで異常が発生した場合は、ジャーナルＢＭ差分形成に失敗する。この場合、Ｓ３１１５と同様に、論理ボリュームｄａｔａ１の全データを複製することによって、記憶システムＢ及びＣの間にペアを形成する。
【０３６９】
上記のジャーナルＢＭ差分形成によれば、記憶システムＡ及びＢのペアの状態をサスペンドにした後、直ちにホストコンピュータの運用を開始することができ、システムが停止している時間を短縮することができる。
【０３７０】
さらに、ジャーナルＢＭ差分形成によれば、更新されたデータのみを複製することによって記憶システムＢ及びＣの間にペアを形成するため、ペアの形成に要する時間を短縮することができる。
【０３７１】
さらに、ジャーナルＢＭ差分形成は、所定の条件を満たしていれば、ジャーナルレコードの不足のためにジャーナル差分形成を実行できない場合でも、実行することができる。
【図面の簡単な説明】
【０３７２】
【図１】本発明の第１の実施の形態のコンピュータシステムの機能ブロック図である。
【図２】本発明の第１の実施の形態のコンピュータシステムを構成する記憶システムの構成を示すブロック図である。
【図３】本発明の第１の実施の形態のジャーナルにおける更新情報の例の説明図である。
【図４】本発明の第１の実施の形態の更新情報とライトデータとの関係の説明図である。
【図５】本発明の第１の実施の形態の記憶システムが保持するボリューム情報の説明図である。
【図６】本発明の第１の実施の形態の別の記憶システムが保持するボリューム情報の説明図である。
【図７】本発明の第１の実施の形態のさらに別の記憶システムが保持するボリューム情報の説明図である。
【図８】本発明の第１の実施の形態の記憶システムが保持するペア情報の説明図である。
【図９】本発明の第１の実施の形態の別の記憶システムが保持するペア情報の説明図である。
【図１０】本発明の第１の実施の形態のさらに別の記憶システムが保持するペア情報の説明図である。
【図１１】本発明の第１の実施の形態の記憶システムが保持するグループ情報の説明図である。
【図１２】本発明の第１の実施の形態の別の記憶システムが保持するグループ情報の説明図である。
【図１３】本発明の第１の実施の形態のさらに別の記憶システムが保持するグループ情報の説明図である。
【図１４】本発明の第１の実施の形態の記憶システムが保持するポインタ情報の説明図である。
【図１５】本発明の第１の実施の形態のポインタ情報に対応するジャーナル論理ボリュームの構成の説明図である。
【図１６】本発明の第１の実施の形態の別の記憶システムが保持するポインタ情報の説明図である。
【図１７】本発明の第１の実施の形態のさらに別の記憶システムが保持するポインタ情報の説明図である。
【図１８】本発明の第１の実施の形態の命令受信処理のフローチャートである。
【図１９】本発明の第１の実施の形態のジャーナル作成処理のフローチャートである。
【図２０】本発明の第１の実施の形態のジャーナルにおける更新情報の別の例の説明図である。
【図２１】本発明の第１の実施の形態のリモートライト命令受信処理のフローチャートである。
【図２２】本発明の第１の実施の形態のジャーナル複製処理のフローチャートである。
【図２３】本発明の第１の実施の形態のジャーナルリード受信処理のフローチャートである。
【図２４】本発明の第１の実施の形態のジャーナルリード処理のフローチャートである。
【図２５】本発明の第１の実施の形態のジャーナル格納処理のフローチャートである。
【図２６】本発明の第１の実施の形態のリストア処理のフローチャートである。
【図２７】本発明の第１の実施の形態のビットマップ差分形成のフローチャートである。
【図２８】本発明の第１の実施の形態のビットマップ差分形成の説明図である。
【図２９】本発明の第２の実施の形態のジャーナル差分形成のフローチャートである。
【図３０】本発明の第２の実施の形態のジャーナル差分形成の説明図である。
【図３１】本発明の第３の実施の形態のジャーナルＢＭ差分形成のフローチャートである。
【図３２】本発明の第３の実施の形態のジャーナルＢＭ差分形成の説明図である。
【符号の説明】
【０３７３】
１００  記憶システム
１１０  ホストアダプタ（ＣＨＡ）
１２０  ディスクアダプタ（ＤＫＡ）
１３０  キャッシュメモリ（ＣＡＣＨＥ）
１４０  共有メモリ（ＳＭ）
１５０  記憶装置（ＨＤＤ）
１６０  スイッチ（ＳＷＩＴＣＨ）
１７０  接続線
１８０  ホストコンピュータ
１９０、２００  接続パス
２１０  命令受信部
２２０  リードライト部
２３０  論理ボリューム
２４０  ジャーナルリード（ＪＮＬＲＤ）部
２５０  リストア部
２６０  差分形成指示部
２６５  差分形成部
３００  更新情報
４００  ボリューム情報
５００  ペア情報
６００  グループ情報
７００  ポインタ情報
【図１】
2006119745.tif 000003
【図２】
2006119745.tif 000004
【図３】
2006119745.tif 000005
【図４】
2006119745.tif 000006
【図５】
2006119745.tif 000007
【図６】
2006119745.tif 000008
【図７】
2006119745.tif 000009
【図８】
2006119745.tif 000010
【図９】
2006119745.tif 000011
【図１０】
2006119745.tif 000012
【図１１】
2006119745.tif 000013
【図１２】
2006119745.tif 000014
【図１３】
2006119745.tif 000015
【図１４】
2006119745.tif 000016
【図１５】
2006119745.tif 000017
【図１６】
2006119745.tif 000018
【図１７】
2006119745.tif 000019
【図１８】
2006119745.tif 000020
【図１９】
2006119745.tif 000021
【図２０】
2006119745.tif 000022
【図２１】
2006119745.tif 000023
【図２２】
2006119745.tif 000024
【図２３】
2006119745.tif 000025
【図２４】
2006119745.tif 000026
【図２５】
2006119745.tif 000027
【図２６】
2006119745.tif 000028
【図２７】
2006119745.tif 000029
【図２８】
2006119745.tif 000030
【図２９】
2006119745.tif 000031
【図３０】
2006119745.tif 000032
【図３１】
2006119745.tif 000033
【図３２】
2006119745.tif 000034