(57)【要約】【課題】プライマリストレージシステムが受領するライト対象のデータにタイムスタンプが付与されていなくても、セカンダリストレージシステムに記憶されるデータの整合性を保つ。【解決手段】一つの計算機がストレージ管理部を有する。ストレージ管理部は、定期的に又は不定期的に、一以上のプライマリストレージシステム（PDKC）に、直前回に発行したＩＤの次のＩＤを発行する。各PDKCが、いずれかの計算機からライトコマンドを受けた場合、ライト対象データの複製（ジャーナルデータ）とストレージ管理部からの最新のＩＤとを含んだジャーナル（ＪＮＬ）を作成してセカンダリストレージシステム（SDKC）に転送する。SDKCは、受信したＪＮＬを蓄積し、未反映のＪＮＬのうち特定のＪＮＬまでをセカンダリボリュームに反映する。特定のＪＮＬは、一以上のSDKCにおける最新の到着済みＩＤのうちの最も古いＩＤよりも１つ古いＩＤを有する。【選択図】図１
2010102463.tif 000002
【特許請求の範囲】
【請求項１】
一以上のプライマリストレージシステムと、
一以上のセカンダリストレージシステムと、
一以上の計算機と
を備え、
前記一以上の計算機の一つに、ストレージ管理部が備えられ、前記一以上の計算機の少なくとも残りの計算機に、Ｉ／Ｏ発行部が備えられ、
前記ストレージ管理部は、定期的に又は不定期的に、前記一以上のプライマリストレージシステムに、直前回に発行したＩＤの次のＩＤを発行し、
前記Ｉ／Ｏ発行部は、プライマリボリュームを指定したライトコマンドを発行し、
各プライマリストレージシステムが、プライマリボリュームとプライマリジャーナル記憶領域とを有しており、前記ライトコマンドに応答してライト対象のデータを前記プライマリボリュームに書込み、そのライト対象のデータの複製であるジャーナルデータと前記ストレージ管理部からの最新のＩＤとを含んだジャーナルを作成して、作成したジャーナルを前記プライマリジャーナル記憶領域に格納し、そのジャーナルを、接続先のセカンダリストレージシステムに転送し、
前記セカンダリストレージシステムが、セカンダリボリュームとセカンダリジャーナル記憶領域とを有しており、受信したジャーナルを前記セカンダリジャーナル記憶領域に書込み、前記セカンダリジャーナル記憶領域に蓄積されている一以上の未反映のジャーナルのうちの特定のジャーナルまでを前記セカンダリボリュームに反映し、
前記特定のジャーナルは、前記一以上のセカンダリストレージシステムにおける最新の到着済みＩＤのうちの最も古いＩＤよりも１つ古いＩＤを有するジャーナルであり、
前記ジャーナルの前記セカンダリボリュームへの反映では、前記ジャーナル内のジャーナルデータが前記セカンダリボリュームに書き込まれる、
計算機システム。
【請求項２】
二以上のプライマリストレージシステムのそれぞれが、前記一以上のセカンダリストレージシステムのうちの少なくとも一つに接続されており、下記（Ｐ１）乃至（Ｐ７）を有し、
（Ｐ１）下記（Ｐ１−１）を記憶するプライマリＩＤ記憶領域、
（Ｐ１−１）前記ストレージ管理部から受信した最新のＩＤであるプライマリ最新ＩＤ、
（Ｐ２）前記Ｉ／Ｏ発行部からのライトコマンドで指定される論理ボリュームである前記プライマリボリューム、
（Ｐ３）前記ライトコマンドに従うライト対象のデータを前記プライマリボリュームに書き込むＩ／Ｏ処理部、
（Ｐ４）下記（Ｐ４−１）及び（Ｐ４−２）を含んだジャーナルを作成するジャーナル作成部、
（Ｐ４−１）前記ライト対象のデータの複製であるジャーナルデータ、
（Ｐ４−２）ライト対象のデータの書込み先の位置に関する更新位置情報と、前記プライマリＩＤ記憶領域に記憶されているプライマリ最新ＩＤとを含んだジャーナル管理情報、
（Ｐ５）作成されたジャーナルを記憶する記憶領域である前記プライマリジャーナル記憶領域、
（Ｐ６）前記プライマリジャーナル記憶領域に記憶されているジャーナルを、そのジャーナル内の更新位置情報が表すプライマリボリュームとペアを構成するセカンダリボリュームを有する前記接続先のセカンダリストレージシステムに転送するジャーナル転送部、
（Ｐ７）前記ストレージ管理部から受信したＩＤを前記プライマリ最新ＩＤとして前記プライマリＩＤ記憶領域に書込むＩＤ処理部、
前記セカンダリストレージシステムは、下記（Ｓ１）乃至（Ｓ５）を有し、
（Ｓ１）下記（Ｓ１−１）を記憶するセカンダリＩＤ記憶領域、
（Ｓ１−１）接続先のプライマリストレージシステムから受信したジャーナル内のジャーナル管理情報に含まれているプライマリ最新ＩＤである到着済みＩＤ、
（Ｓ２）接続先のプライマリストレージシステムから受信したジャーナルを記憶する前記セカンダリジャーナル記憶領域、
（Ｓ３）前記セカンダリジャーナル記憶領域に蓄積されているジャーナル内のジャーナルデータの書込み先となる論理ボリュームである前記セカンダリボリューム、
（Ｓ４）前記セカンダリジャーナル記憶領域に蓄積されている一以上の未反映のジャーナルのうちの特定のジャーナルまでを、反映対象のジャーナル内のジャーナルデータに対応したライト対象データの書込み先のプライマリボリュームとペアを構成する前記セカンダリボリュームに反映するリストア処理部、
（Ｓ５）前記セカンダリＩＤ記憶領域に記憶されている到着済みＩＤを通知するＩＤ通知部、
前記ストレージ管理部が、前記一以上のセカンダリストレージシステムにおける到着済みＩＤのうちの到着済みＩＤのうちの最も古いＩＤ又はその最も古いＩＤよりも１つ古いＩＤであるリストア許可ＩＤを通知し、
前記特定のジャーナルは、前記リストア許可ＩＤよりも１つ古いＩＤ又は前記リストア許可ＩＤを有するジャーナルである、
請求項１記載の計算機システム。
【請求項３】
前記（Ｓ５）は、接続先のプライマリストレージシステムに、到着済みＩＤを通知し、
前記（Ｐ１）は、下記（Ｐ１−２）を更に記憶し、
（Ｐ１−２）接続先のセカンダリストレージシステムから受信した到着済みＩＤ、
前記ストレージ管理部が、ＩＤ問合せを前記二以上のプライマリストレージシステムに送信し、それに応答して、前記二以上のプライマリストレージシステムから到着済みＩＤを受信し、受信した二以上の到着済みＩＤのうちの最も古いＩＤ又はその最も古いＩＤよりも１つ古いＩＤを前記リストア許可ＩＤとして各プライマリストレージシステムに通知し、
前記（Ｐ７）は、前記ストレージ管理部から受信したリストア許可ＩＤを、接続先のセカンダリストレージシステムに通知し、
前記（Ｓ１）は、下記（Ｓ１−２）を更に記憶する、
（Ｓ１−２）接続先のプライマリストレージシステムから受信したリストア許可ＩＤ、
請求項２記載の計算機システム。
【請求項４】
前記（Ｓ５）は、到着済みＩＤを含んだジャーナルリードコマンドを、接続先のプライマリストレージシステムに送信し、
前記（Ｐ６）は、前記ジャーナルリードコマンドを受けた場合に、前記ジャーナルリードコマンドに含まれている到着済みＩＤを前記プライマリＩＤ記憶領域に書込み、前記プライマリジャーナル記憶領域に蓄積されている一以上のジャーナルのうち未転送のジャーナルを、前記ジャーナルリードコマンドの送信元のセカンダリストレージシステムに転送する、
請求項３記載の計算機システム。
【請求項５】
前記（Ｐ６）は、未転送のジャーナルが前記プライマリジャーナル記憶領域に無い場合には、前記プライマリＩＤ記憶領域に記憶されているプライマリ最新ＩＤを含んだ情報を、前記ジャーナルリードコマンドの送信元のセカンダリストレージシステムに転送する、
請求項４記載の計算機システム。
【請求項６】
前記ストレージ管理部が、前記ＩＤ問合せを送信する前に、Ｉ／Ｏを保留するコマンドであるフリーズコマンドを、ＩＤ問合せの送信先のプライマリストレージシステムに送信し、前記フリーズコマンドを送信した後に、前記ＩＤ問合せを送信し、
前記（Ｐ３）は、前記フリーズコマンドを受けた場合、前記Ｉ／Ｏ発行部からのライトコマンドに従うライト対象データをそのライトコマンドで指定されている前記プライマリボリュームに書き込むライト処理を非実行とするフリーズ状態となり、前記フリーズ状態が解除された後に、前記ライト処理を実行する、
請求項５記載の計算機システム。
【請求項７】
前記ストレージ管理部が、前記ＩＤを送信する前に、前記フリーズコマンドを送信し、前記ＩＤを送信した後に、前記ＩＤを送信する、
請求項６記載の計算機システム。
【請求項８】
前記セカンダリストレージシステムが、接続先のプライマリストレージシステムに、到着済みＩＤを通知し、
前記ストレージ管理部が、ＩＤ問合せを各プライマリストレージシステムに送信し、それに応答して、前記各プライマリストレージシステムから到着済みＩＤを受信し、受信した到着済みＩＤのうちの最も古いＩＤ又はその最も古いＩＤよりも１つ古いＩＤを前記リストア許可ＩＤとして各プライマリストレージシステムに通知し、
前記特定のジャーナルは、前記リストア許可ＩＤよりも１つ古いＩＤ又は前記リストア許可ＩＤを有するジャーナルである、
請求項１記載の計算機システム。
【請求項９】
前記セカンダリストレージシステムは、ジャーナルリードコマンドを、接続先のプライマリストレージシステムに送信し、
各プライマリストレージシステムは、前記ジャーナルリードコマンドを受けた場合に、前記プライマリジャーナル記憶領域に蓄積されている一以上のジャーナルのうち未転送のジャーナルを前記接続先のセカンダリストレージシステムに転送し、
前記ジャーナルリードコマンドに、到着済みＩＤが含まれ、
前記ストレージ管理部が各プライマリストレージシステムから受信する到着済みＩＤは、前記ジャーナルリードコマンドに含まれていた到着済みＩＤである、
請求項８記載の計算機システム。
【請求項１０】
前記セカンダリストレージシステムは、ジャーナルリードコマンドを、接続先のプライマリストレージシステムに送信し、
各プライマリストレージシステムは、前記ジャーナルリードコマンドを受けた場合に、前記プライマリジャーナル記憶領域に蓄積されている一以上のジャーナルのうち未転送のジャーナルを前記接続先のセカンダリストレージシステムに転送し、もし、未転送のジャーナルが無ければ、前記ストレージ管理部からの最新のＩＤを含んだ情報を、前記接続先のセカンダリストレージシステムに送信する、
請求項１、８又は９記載の計算機システム。
【請求項１１】
前記ストレージ管理部が、前記ＩＤ問合せを送信する前に、Ｉ／Ｏを保留するコマンドであるフリーズコマンドを、ＩＤ問合せの送信先のプライマリストレージシステムに送信し、前記フリーズコマンドを送信した後に、前記ＩＤ問合せを送信し、
各プライマリストレージシステムは、前記フリーズコマンドを受けた場合、前記Ｉ／Ｏ発行部からのライトコマンドに従うライト対象データをそのライトコマンドで指定されている前記プライマリボリュームに書き込むライト処理を非実行とするフリーズ状態となり、前記フリーズ状態が解除された後に、前記ライト処理を実行する、
請求項１、及び、８乃至１０のうちのいずれかに記載の計算機システム。
【請求項１２】
前記ストレージ管理部が、前記ＩＤを送信する前に、Ｉ／Ｏを保留するコマンドであるフリーズコマンドを、ＩＤ問合せの送信先のプライマリストレージシステムに送信し、前記フリーズコマンドを送信した後に、前記ＩＤを送信し、
各プライマリストレージシステムは、前記フリーズコマンドを受けた場合、前記Ｉ／Ｏ発行部からのライトコマンドに従うライト対象データをそのライトコマンドで指定されている前記プライマリボリュームに書き込むライト処理を非実行とするフリーズ状態となり、前記フリーズ状態が解除された後に、前記ライト処理を実行する、
請求項１、及び、８乃至１１のうちのいずれかに記載の計算機システム。
【請求項１３】
前記ストレージ管理部が、二以上のプライマリストレージシステムの少なくとも一つに関して障害から回復したことを検出した場合、前記二以上のプライマリストレージシステムに、ＩＤ問合せを送信することで、前記二以上のプライマリストレージシステムからプライマリ最新ＩＤを受領し、受領した二以上のプライマリ最新ＩＤのうちの最も新しいＩＤよりも１つ新しいＩＤを、前記障害から回復した後に初めて送信するＩＤとする、
請求項１乃至１２のうちのいずれかに記載の計算機システム。
【請求項１４】
前記ストレージ管理部が、二以上のプライマリストレージシステムの少なくとも一つに関して障害を検出した場合、障害が検出されていないプライマリストレージシステムに、そのプライマリストレージシステムが有するプライマリボリュームを含んだペアの状態をコピー中断状態とすることを指示し、その後、前記障害から回復したことを検出した場合、前記障害からの回復に関するプライマリストレージシステムに、そのプライマリストレージシステムが有するプライマリボリュームを含んだペアの状態をコピー中断状態とすることを指示し、その後、前記二以上のプライマリストレージシステムに、プライマリボリュームを含んだペアの状態を一致状態とすることを指示し、
一致状態とすることの指示に応答して、前記プライマリボリュームとセカンダリボリュームとの差分がセカンダリボリュームに反映されて、ペアの状態が、プライマリボリュームの内容とセカンダリボリュームの内容とが一致する状態である前記一致状態となる、
請求項１乃至１３のうちのいずれかに記載の計算機システム。
【請求項１５】
一以上のプライマリストレージシステムと、一以上のセカンダリストレージシステムと、一以上の計算機とを備えた計算機システムで実現されるリモートコピーの制御方法であって、
前記一以上の計算機のうちの特定の計算機が、定期的に又は不定期的に、各プライマリストレージシステムに、直前回に発行したＩＤの次のＩＤを発行し、
各プライマリストレージシステムが、前記複数の計算機のうちのいずれかからライトコマンドを受けた場合、ライト対象のデータをプライマリボリュームに書込み、そのライト対象のデータの複製であるジャーナルデータと前記特定の計算機からの最新のＩＤとを含んだジャーナルを作成して、作成したジャーナルをプライマリジャーナル記憶領域に格納し、そのジャーナルを、接続先のセカンダリストレージシステムに転送し、
前記セカンダリストレージシステムが、受信したジャーナルをセカンダリジャーナル記憶領域に書込み、セカンダリジャーナル記憶領域に蓄積されている一以上のジャーナルのうちの特定のジャーナルまで、ジャーナル内のジャーナルデータをセカンダリボリュームに書き込み、
前記特定のジャーナルは、前記一以上のセカンダリストレージシステムにおける最新の到着済みＩＤのうちの最も古いＩＤよりも１つ古いＩＤを有するジャーナルである、
リモートコピー制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジャーナルを利用したリモートコピーに関する。
【背景技術】
【０００２】
例えば、特許文献１には、以下の技術が開示されている。すなわち、プライマリストレージシステムが、プライマリのホスト計算機からライトデータを受領し、ライトデータ受領後直ちに、ライトデータの受領完了を、プライマリのホスト計算機に報告する。このあと、ホスト計算機は、ライトデータのコピーを、プライマリストレージシステムから読み出す。このライトデータには、ライトデータについてのライト要求が発行された時刻であるライト時刻が付与されていて、ライトデータがプライマリのホスト計算機に読み出される際には、ライト時刻もプライマリのホスト計算機に渡される。さらに、プライマリのホスト計算機は、ライトデータとライト時刻をセカンダリのホスト計算機に転送する。セカンダリのホスト計算機は、ライトデータとライト時刻を受領し、ライト時刻などの情報をセカンダリストレージシステムにある制御用のボリュームに書き込み、さらに、各ライトデータに付与されたライト時刻を参照して、ライト時刻順に、ライトデータをセカンダリストレージシステムに書き込む。
【０００３】
【特許文献１】欧州特許出願公開第０６７２９８５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示の技術では、ライトデータに付与されたライト時刻（タイムスタンプ）を利用することで、データのコンシステンシーが保たれる。このため、ホスト計算機がライトデータにライト時刻を付与しない計算機システムには、この技術を適用することはできない。具体的には、例えば、ライト要求にライト時刻を付与できるいわゆるメインフレームの計算機を含んだ計算機システムには、特許文献１に開示の技術を適用し得るが、ライト要求にライト時刻を付与しないいわゆるオープンシステムの計算機を含んだ計算機システムには、特許文献１に開示の技術を適用し得ない。
【０００５】
そこで、本発明の目的は、プライマリストレージシステムが受領するライト対象のデータにタイムスタンプが付与されていなくても、セカンダリストレージシステムに記憶されるデータの整合性を保つことにある。
【課題を解決するための手段】
【０００６】
一以上の計算機の一つに、ストレージ管理部が備えられる。ストレージ管理部は、定期的に又は不定期的に、一以上（例えば二以上）のプライマリストレージシステムに、直前回に発行したＩＤの次のＩＤを発行する。各プライマリストレージシステムが、一以上の計算機のいずれかからライトコマンドを受けた場合、ライト対象のデータをプライマリボリュームに書込み、そのライト対象のデータの複製であるジャーナルデータと第一の計算機からの最新のＩＤとを含んだジャーナルを作成して、作成したジャーナルをプライマリジャーナル記憶領域に格納し、そのジャーナルを、接続先のセカンダリストレージシステムに転送する。セカンダリストレージシステムは、受信したジャーナルをセカンダリジャーナル記憶領域に書込み、セカンダリジャーナル記憶領域に蓄積されている一以上のジャーナルのうちの特定のジャーナルまで、ジャーナル内のジャーナルデータをセカンダリボリュームに書き込む。特定のジャーナルとは、一以上のセカンダリストレージシステムにおける最新の到着済みＩＤのうちの最も古いＩＤよりも１つ古いＩＤを有するジャーナルである。
【発明を実施するための最良の形態】
【０００７】
以下、図面を参照して、本発明の一実施形態を説明する。なお、以下の説明では、ストレージシステムを「ＤＫＣ」という記号で表し、プライマリＤＫＣを、「PDKC」という記号で表し、セカンダリＤＫＣを、「SDKC」という記号で表すことにする。また、「ライト」という言葉を「ＷＲ」と略記し、「リード」という言葉を「ＲＤ」と略記することがある。
【０００８】
まず、図１乃至図３を参照して、本実施形態の概要を説明する。
【０００９】
図１は、本発明の一実施形態に係る計算機システムの構成例を示す。
【００１０】
ＤＫＣ群１８がある。ＤＫＣ群１８は、Ｍ×Ｎ構成となっている。すなわち、ＤＫＣ群１８は、プライマリサイト（Ｐサイト）１５Ｐに属するＭ台のPDKCと、セカンダリサイト（Ｓサイト）１５Ｓに属するＮ台のＳＤＫＣとで構成されている。Ｍは１以上の整数であり、Ｎは１以上の整数である。ＰＤＫＣには、少なくとも一つのＳＤＫＣが接続され、ＳＤＫＣには、少なくとも一つのＰＤＫＣが接続される。従って、例えば、２台のＰＤＫＣに１台のＳＤＫＣが接続されている構成が採用されても良い。本実施形態では、ＤＫＣ群１８は、２台のＰＤＫＣ（Ｍ＝２）１１Ｐ１及び１１Ｐ２と、２台のＳＤＫＣ（Ｎ＝２）１１Ｓ１及び１１Ｓ２とで構成されている。そして、ＰＤＫＣとＳＤＫＣは１対１で接続されている。すなわち、ＰＤＫＣ１１Ｐ１は、ＳＤＫＣ１１Ｓ１に接続されておりＳＤＫＣ１１Ｓ１と互いに通信し、ＰＤＫＣ１１Ｐ２は、ＳＤＫＣ１１Ｓ２に接続されておりＳＤＫＣ１１Ｓ２と互いに通信する。
【００１１】
ＰＤＫＣ１１Ｐ１（１１Ｐ２）は、ＰＶＯＬ１７Ｐ１（１７Ｐ２）と、ＪＶＯＬ１７ＰＪ１（１７ＰＪ２）とを有する。一方、ＳＤＫＣ１１Ｓ１（１１Ｓ２）は、ＪＶＯＬ１７ＳＪ１（１７ＳＪ２）と、ＳＶＯＬ１７Ｓ１（１７Ｓ２）とを有する。
【００１２】
ここで、「ＰＶＯＬ」とは、プライマリボリュームの略であり、ホストからのライトコマンドで指定される論理ボリュームである。そのライトコマンドに従って、ＰＶＯＬにライト対象のデータが書き込まれる。
【００１３】
「ＪＶＯＬ」とは、ジャーナルボリュームの略であり、ジャーナル（ＪＮＬ）が書き込まれる論理ボリュームである。「ＪＮＬ」とは、ＰＶＯＬの更新履歴を表す情報であり、具体的には、例えば、ＪＮＣＢとＪＮＬデータとで構成される情報である。「ＪＮＣＢ」とは、ＪＮＬに関する管理情報（ＪＮＬ管理情報）である。ＪＮＣＢには、例えば、そのＪＮＣＢを有するＪＮＬが何番目に作成されたかを表すシーケンス番号（ＳＥＱ＃）や、そのＪＮＬ内のＪＮＬデータに対応するライト対象のデータがどのＰＶＯＬのどの位置（例えばどのブロック）に書き込まれたかを表す更新位置情報や、後述するＰサイト受領ＴＳ＃が含まれる。「ＪＮＬデータ」は、ライト対象のデータの複製である。
【００１４】
「ＳＶＯＬ」とは、セカンダリボリュームの略であり、ＰＶＯＬとペアを構成する論理ボリュームである。ＳＶＯＬには、相手のＰＶＯＬに格納されたライト対象データの複製であるＪＮＬデータが書き込まれる（つまり、ＰＶＯＬに格納されたデータがＳＶＯＬにも格納されることになる）。
【００１５】
前述したＰＶＯＬ、ＪＶＯＬ及びＳＶＯＬのいずれの論理ボリュームも、ＤＫＣが有する複数のＨＤＤ（Hard Disk Drive）（フラッシュメモリなど他の物理記憶装置でもよい）を基に形成される論理記憶装置である。
【００１６】
複数のホスト計算機（以下、ホスト）、例えば２台のホスト２１Ａ及び２１Ｂが備えられる。ホスト２１Ａ及び２１Ｂは、Ｉ／Ｏ発行部２５を有する。Ｉ／Ｏ発行部２５は、アプリケーションプログラム及び／又はオペレーティングシステム（以下、ＯＳ）で実現される。ＯＳは、オープンシステム系のＯＳである。Ｉ／Ｏ発行部２５は、Ｉ／Ｏコマンド、すなわちライトコマンド（以下、ＷＲコマンド）又はリードコマンド（以下、ＲＤコマンド）を送信する。そのＩ／Ｏコマンドでは、Ｉ／Ｏ先のＰＶＯＬ（具体的には、例えばポート番号とＬＵＮ（Logical Unit Number）とのセット）が指定される。
【００１７】
ホスト２１Ａ及び２１Ｂのうちの一つのホスト２１Ａのみに、ＲＡＩＤマネージャ（以下、ＲＭ）２３が備えられており、少なくともそのホスト２１Ａが、全てのＰＤＫＣ１１Ｐ１及び１１Ｐ２に接続されている。ＲＭ２３は、マイクロプロセッサで実行されるコンピュータプログラムであり、定期的に、全てのＰＤＫＣ１１Ｐ１及び１１Ｐ２にタイムスタンプ番号（以下、ＴＳ＃）を発行する。ＴＳ＃は、時刻ではなく単なる番号である。ＴＳ＃は、各ＰＤＫＣに順次に発行されても良いし、全てのＰＤＫＣ１１Ｐ１及び１１Ｐ２に一斉に送信されても良い。一つの回で、同一のＴＳ＃が全てのＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信される。その次の回で、そのＴＳ＃の次のＴＳ＃（（直前回のＴＳ＃）＋１の番号）が、全てのＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信される。各ＰＤＫＣ１１Ｐ１及び１１Ｐ２は、ＴＳ＃を受領する都度に、Ｐサイト受領ＴＳ＃を、その受領したＴＳ＃に更新する。この結果、各ＰＤＫＣ１１Ｐ１及び１１Ｐ２には、受領したＴＳ＃のうちの最新のＴＳ＃がＰサイト受領ＴＳ＃として管理される。
【００１８】
以下、ＰＤＫＣ１１Ｐ１とＳＤＫＣ１１Ｓ１の組を主に例に採って、ＰＤＫＣ１１Ｐ１とＳＤＫＣ１１Ｓ１が行う処理を説明する。
【００１９】
ＰＤＫＣ１１Ｐ１は、ＷＲコマンドを受信した場合、下記（１−１）及び（１−２）、
（１−１）そのＷＲコマンドに従うＷＲ対象のデータを、そのＷＲコマンドで指定されているＰＶＯＬ１７Ｐ１に書き込む；
（１−２）そのＷＲ対象データの複製としてのＪＮＬデータを含んだＪＮＬを作成し、そのＪＮＬをＪＶＯＬ１７ＰＪ１に書き込む；
を行う。（１−２）で作成されたＪＮＬ内のＪＮＣＢには、そのＪＮＬのＳＥＱ＃や、更新位置情報（例えば、ＷＲ対象データのＷＲ先のＰＶＯＬのＩＤ（例えば、そのＰＶＯＬの番号又はＬＵＮ）や、ＰＶＯＬにおけるＷＲ先ブロックのアドレス）や、ＷＲコマンドを受けたＰＤＫＣ１１Ｐ１で管理されているＰサイト受領ＴＳ＃が含まれている。
【００２０】
ＰＤＫＣ１１Ｐ１は、ＪＶＯＬ１７ＰＪ１に蓄積されているＪＮＬのうち、ＳＤＫＣ１１Ｓ１に未転送のＪＮＬを、ＳＤＫＣ１１Ｓ１に送信する。
【００２１】
ＳＤＫＣ１１Ｓ１は、受信したＪＮＬをＪＶＯＬ１７ＳＪ１に書き込む。
【００２２】
また、ＳＤＫＣ１１Ｓ１は、ＪＶＯＬ１７ＳＪ１に蓄積されているＪＮＬのうち、ＳＶＯＬ１７Ｓ１に未反映のＪＮＬを、ＳＶＯＬ１７Ｓ１に反映する。「ＪＮＬを反映する」とは、ＪＮＬ内のＪＮＬデータを、そのＪＮＬ内のＪＮＣＢの更新位置情報から特定されるＰＶＯＬとペアを構成するＳＶＯＬに書き込むこと、つまりデータをリストアすることである。その際、ＪＮＬデータのＷＲ先は、その更新位置情報から特定されるＷＲ先ブロックアドレスと同じ又はそれに対応したアドレスのブロック（ＳＶＯＬ内のブロック）になる。ＪＮＬの反映は、ＪＮＬのＳＥＱ＃順に行われる。
【００２３】
ＳＤＫＣ１１Ｓ１は、図２に示すように、リストア許可ＴＳ＃、到着済みＴＳ＃及びリストア済みＴＳ＃を管理する。「リストア許可ＴＳ＃」とは、どのＪＮＬまでが反映可能であるかを特定する際に使用されるＴＳ＃である（リストア許可ＴＳ＃については後に詳述する）。「到着済みＴＳ＃」とは、受信したＪＮＬのうちの最新のＪＮＬ（ＳＥＱ＃が最新であるＪＮＬ）が有するＴＳ＃である。「リストア済みＴＳ＃」とは、ＳＶＯＬ１７Ｓ１に反映されたＪＮＬのうち最新のＪＮＬ（ＳＥＱ＃が最新であるＪＮＬ）が有するＴＳ＃である。
【００２４】
ＰＤＫＣ１１Ｐ１は、図２に示すように、ＪＮＬを、ＳＤＫＣ１１Ｓ１からのＲＤ−ＪＮＬコマンドに応答して送信する。具体的には、例えば、ＳＤＫＣ１１Ｓ１が、定期的に又は不定期的に、ＲＤ−ＪＮＬコマンドを、ＰＤＫＣ１１Ｐ１に送信する。「ＲＤ−ＪＮＬコマンド」とは、ＪＮＬのＲＤコマンドである。ＳＤＫＣ１１Ｓ１は、そのＲＤ−ＪＮＬコマンドに、ＳＤＫＣ１１Ｓ１が管理している到着済みＴＳ＃及びリストア済みＴＳ＃を含める。ＰＤＫＣ１１Ｐ１は、ＲＤ−ＪＮＬコマンドを受信した場合に、下記（２Ａ−１）及び（２Ａ−２）、
（２Ａ−１）ＲＤ−ＪＮＬコマンド内の到着済みＴＳ＃及びリストア済みＴＳ＃を記憶する；
（２Ａ−２）ＪＶＯＬ１７ＰＪ１に蓄積されているＪＮＬのうち、ＳＤＫＣ１１Ｓ１に未転送のＪＮＬを、ＲＤ−ＪＮＬコマンドに対するＲＤデータとして、ＳＤＫＣ１１Ｓ１に送信する；
を行う。ＲＤ−ＪＮＬコマンドには、ＳＤＫＣ１１Ｓ１が受信したＪＮＬのうち最新のＪＮＬ（ＪＶＯＬ１７ＳＪ１に蓄積されているＪＮＬのうちの最新のＪＮＬ）の次のＪＮＬのＳＥＱ＃が指定されても良い。この場合、そのＳＥＱ＃を有するＪＮＬが、ＪＶＯＬ１７ＰＪ１から読み出されてＰＤＫＣ１１Ｐ１からＳＤＫＣ１１Ｓ１に送信されＪＶＯＬ１７ＳＪ１に書き込まれても良い。
【００２５】
ＳＤＫＣ１１Ｓ１は、ＰＤＫＣ１１Ｐ１からＲＤデータとしてＪＮＬを受信した場合、下記（２Ｂ−１）及び（２Ｂ−２）、
（２Ｂ−１）受信したＪＮＬ内のＴＳ＃を、到着済みＴＳ＃として記憶する；
（２Ｂ−２）受信したＪＮＬをＪＶＯＬ１７ＳＪ１に書き込む；
を行う。なお、図２に示すように、ＳＤＫＣ１１Ｓ１では、Ｐサイト到着ＴＳ＃は、管理されないか、無効値“０”として管理される。
【００２６】
また、ＳＤＫＣ１１Ｓ１は、ＪＶＯＬ１７ＳＪ１内の未反映のＪＮＬをＳＶＯＬ１７Ｓ１に反映した場合、反映したＪＮＬ内のＴＳ＃を、リストア済みＴＳ＃として記憶する。
【００２７】
ＳＤＫＣ１１Ｓ１（１１Ｓ２）で管理されている到着済みＴＳ＃及びリストア済みＴＳ＃は、ＰＤＫＣ１１Ｐ１（１１Ｐ２）宛のＲＤ−ＪＮＬコマンドに含められることで、ＰＤＫＣ１１Ｐ１（１１Ｐ２）に送信され、ＰＤＫＣ１１Ｐ１（１１Ｐ２）に記憶される。ＰＤＫＣ１１Ｐ１（１１Ｐ２）に記憶されている到着済みＴＳ＃は、図３に示すように、ＰＤＫＣ１１Ｐ１（１１Ｐ２）からＲＭ２３に送信される。
【００２８】
すなわち、図３に示すように、まず、ＲＭ２３が、フリーズコマンドを、ＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信する（Ｓ３０１Ａ及びＳ３０１Ｂ）。「フリーズコマンド」とは、Ｉ／Ｏ処理を留保させる指示である。フリーズコマンドを受けたＰＤＫＣ１１Ｐ１及び１１Ｐ２は、フリーズ状態となり（Ｓ３０２Ａ及びＳ３０２Ｂ）、フリーズ状態の間は、Ｉ／Ｏコマンドをホスト２１Ａ又は２１Ｂから受けても、そのＩ／Ｏコマンドで指定されているＰＶＯＬに対するＩ／Ｏを行わない（例えば、Ｉ／Ｏコマンドを受けてもホスト２１Ａ又は２１Ｂに応答を返さない）。
【００２９】
次に、ＲＭ２３は、報告コマンド（後述の状態取得コマンド）を、ＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信する（Ｓ３０３Ａ及びＳ３０３Ｂ）。ＰＤＫＣ１１Ｐ１（及び１１Ｐ２）は、報告コマンドを受けた場合、ＰＤＫＣ１１Ｐ１（１１Ｐ２）が管理している到着済みＴＳ＃２０３（到着済みＴＳ＃２０１）を、ＲＭ２３に送信する（Ｓ３０４Ａ（Ｓ３０４Ｂ））。
【００３０】
ＲＭ２３は、ＰＤＫＣ１１Ｐ１及び１１Ｐ２から受けた２つの到着済みＴＳ＃のうちの最低値２０１を、リストア許可ＴＳ＃２０１として決定する（Ｓ３０５）。
【００３１】
ＲＭ２３は、リストア許可ＴＳ＃２０１を、ＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信する（Ｓ３０６Ａ及びＳ３０６Ｂ）。ＰＤＫＣ１１Ｐ１（１１Ｐ２）は、ＲＭ２３から受信したリストア許可ＴＳ＃２０１を記憶し、そのリストア許可ＴＳ＃をＳＤＫＣ１１Ｓ１（１１Ｓ２）に転送する（Ｓ３０７Ａ（Ｓ３０７Ｂ））。ＳＤＫＣ１１Ｓ１（１１Ｓ２）は、受信したリストア許可ＴＳ２０１を記憶する。
【００３２】
ＳＤＫＣ１１Ｓ１（１１Ｓ２）は、ＪＶＯＬ１７ＳＪ１（１７ＳＪ２）に記憶されている未反映のＪＮＬのうち、リストア許可ＴＳ＃２０１よりも１小さいＴＳ＃（つまりＴＳ＃２００）を有するＪＮＬまでを、ＳＥＱ＃順に、ＳＶＯＬ１７Ｓ１（１７Ｓ２）に反映する（Ｓ３０８Ａ（Ｓ３０８Ｂ））。
【００３３】
以上が、本実施形態の概要である。以上の説明において、例えば、下記（３−１）乃至（３−４）のうちの少なくとも一つが採用されて良い。
（３−１）到着済みＴＳ＃及びリストア済みＴＳ＃のうちの少なくとも一方は、ＳＤＫＣ１１Ｓ１（１１Ｓ２）からＲＭ２３に通知されても良い。しかし、前述のように、ＰＤＫＣ１１Ｐ１（１１Ｐ２）経由で到着済みＴＳ＃及びリストア済みＴＳ＃がＲＭ２３に通知されるようになっていれば、ＲＭ２３を有するホスト２１Ａが、ＳＤＫＣ１１Ｓ１（１１Ｓ２）に接続されていなくても良い（或いは、接続を切替えなくても良い）。
（３−２）リストア許可ＴＳ＃それ自体が、到着済みＴＳ＃の最低値より１小さいＴＳ＃であっても良い。この場合、Ｓ３０８Ａ及びＳ３０８３Ｂでは、リストア許可ＴＳ＃を有するＪＮＬまでが、反映される。
（３−３）ＲＭ２３は、ホストではなく、ＰＤＫＣ１１Ｐ１及び１１Ｐ２を管理する管理計算機に備えられる。
（３−４）ＪＮＬのうちのＪＮＣＢは、ＪＶＯＬ以外の記憶領域（例えば、ＤＫＣが有するコントローラ内のメモリ）で管理されても良い。
【００３４】
以上の説明によれば、ホストが、ＷＲコマンド内にタイムスタンプを付与できなくても、一以上のＳＤＫＣにおいてデータの整合性を保つことができる。
【００３５】
以下、本実施形態について、詳細に説明する。
【００３６】
図４は、各ＤＫＣの構成を示す。
【００３７】
前述したように、少なくともホスト２１Ａが、ＰＤＫＣ１１Ｐ１及び１１Ｐ２に接続されている。また、ＰＤＫＣ１１Ｐ１（１１Ｐ２）とＳＤＫＣ１１Ｓ１（１１Ｓ２）とが、互いに通信する。
【００３８】
ＤＫＣ１１Ｐ１，１１Ｐ２，１１Ｓ１，１１Ｓ２は、全てが同じ構成であっても良いし、異なる構成であっても良いが、本実施形態では同じ構成であるとする。具体的には、例えば、ＰＤＫＣ１１Ｐ１（１１Ｐ２，１１Ｓ１，１１Ｓ２）は、論理ボリュームの基になる複数の物理記憶装置と、前記複数の物理記憶装置に対するＩ／Ｏを制御するコントローラとを備える。コントローラは、例えば、複数のポート３１Ｐ１（３１Ｐ２，３１Ｓ１，３１Ｓ２）と、複数のＣＨＡ３２Ｐ１（３２Ｐ２，３２Ｓ１，３２Ｓ２）と、ＣＭ３３Ｐ１（３３Ｐ２，３３Ｓ１，３３Ｓ２）と、ＳＭ３４Ｐ１（３４Ｐ２，３４Ｓ１，３４Ｓ２）と、複数のＤＫＡ３５Ｐ１（３５Ｐ２，３５Ｓ１，３５Ｓ２）とを有する。
【００３９】
ポート３１Ｐ１（３１Ｐ２）は、ホスト２１ＡからＴＳ＃を受けたり、ホスト２１Ａ及び／又は２１ＢからＩ／Ｏコマンドを受けたりする。ポート３１Ｓ１（３１Ｓ２）は、ＲＤデータ（ＪＮＬ）をＰＤＫＣ１１Ｐ１（１１Ｐ２）から受ける。
【００４０】
ＣＨＡは、チャネルアダプタの略である。ＣＨＡ３２Ｐ１（３２Ｐ２）は、ポート３１Ｐ１（３１Ｐ２）、マイクロプロセッサ及びメモリ等を有し、ホスト２１Ａ、２１Ｂとの通信を制御するインタフェース装置である。複数のＣＨＡ３２Ｐ１（３２Ｐ２）のうちの少なくとも一つは、ＣＨＡ３２Ｓ１（３２Ｓ１）のポート３１Ｓ１（３１Ｓ２）に接続され、ＣＨＡ３２Ｓ１（３２Ｓ１）との通信（ＳＤＫＣ１１Ｓ１（１１Ｓ２）との通信）を制御する。
【００４１】
ＣＭは、キャッシュメモリの略である。ＣＭ３３Ｐ１（３３Ｐ２）は、ＰＶＯＬ１７Ｐ１（１７Ｐ２）とホスト２１Ａ、２１Ｂとの間でやり取りされるデータ（ＷＲ対象及びＲＤ対象のデータ）を一時的に記憶するメモリである。ＣＭ３３Ｓ１（３３Ｓ２）は、ＳＶＯＬ１７Ｓ１（１７Ｓ２）に対してＷＲ又はＲＤされるデータを一時的に記憶するメモリである。
【００４２】
ＳＭは、共有メモリの略である。ＳＭ３４Ｐ１（３４Ｐ２，３４Ｓ１，３４Ｓ２）は、ＣＨＡ３２Ｐ１（３２Ｐ２，３２Ｓ１，３２Ｓ２）とＤＫＡ３５Ｐ１（３５Ｐ２，３５Ｓ１，３５Ｓ２）からアクセスされるメモリである。ＳＭ３４Ｐ１（３４Ｐ２，３４Ｓ１，３４Ｓ２）は、種々の管理情報を記憶する。管理情報としては、例えば、ＤＫＣ１１Ｐ１（１１Ｐ２，１１Ｓ１，１１Ｓ２）の構成に関する情報（例えばどの物理記憶装置を基にどのＶＯＬが形成されているかや、そのＶＯＬのＩＤなど）や、後述するペア管理テーブル及びＪＮＬグループ管理テーブルがある。
【００４３】
ＤＫＡは、ディスクアダプタの略である。ＤＫＡ３５Ｐ１（３５Ｐ２，３５Ｓ１，３５Ｓ２）は、マイクロプロセッサ及びメモリ等を有し、物理記憶装置との通信を制御するインタフェース装置である。
【００４４】
以下、ＰＤＫＣ１１Ｐ１及びＳＤＫＣ１１Ｓ１を例に採り、ＰＤＫＣ１１Ｐ１及びＳＤＫＣ１１Ｓ１の機能を説明する。
【００４５】
図５は、ＰＤＫＣ１１Ｐ１が有する機能ブロックとＳＤＫＣ１１Ｓ１が有する機能ブロックとを示す。
【００４６】
複数のポート３１Ｐ１のうちの少なくとも一つがホスト２１Ａに接続されており、複数のポート３１Ｐ１のうちの少なくとも一つが、ＤＫＣ間ポート（イニシエータポート）として、ＤＫＣ間ポート（ターゲットポート）としてのポート３１Ｓ１に、例えばFibre Channel用のケーブルで接続されている。これらのＤＫＣ間ポートを介して、ＲＤ−ＪＮＬコマンドやＲＤデータの送受信が行われる。
【００４７】
ＰＤＫＣ１１Ｐ１では、例えばＣＨＡ３２Ｐ１が、ＴＳ処理部５１Ｐ１、Ｉ／Ｏ処理部５２Ｐ１、ＪＮＬ作成部５３Ｐ１、ＪＮＬ−ＲＤ受領処理部５４Ｐ１、Ｆ／Ｒ受領処理部５５Ｐ１及びペア状態変更部５６Ｐ１を有し、ＳＭ３４Ｐ１が、ペア管理テーブル５７Ｐ１及びＪＮＬグループ管理テーブル５８Ｐ１を記憶している。一方、ＳＤＫＣ１１Ｓ１では、例えばＣＨＡ３２Ｓ１が、ＪＮＬ−ＲＤ処理部６１Ｓ１、リストア処理部６２Ｓ１及びペア状態変更部５６Ｓ１を有し、ＳＭ３４Ｓ１が、ペア管理テーブル５７Ｓ１及びＪＮＬグループ管理テーブル５８Ｓ１を記憶している。各部５１Ｐ１〜５６Ｐ１、６１Ｓ１、６２Ｓ１及び５６Ｓ１は、例えば、マイクロプロセッサで実行されるコンピュータプログラムであるが、これらの部のうちの少なくとも一つの全部又は一部が、ハードウェアで構成されても良い。
【００４８】
ＴＳ処理部５１Ｐ１は、ＲＭ２３からのＴＳ＃の処理を行う。
【００４９】
Ｉ／Ｏ処理部５２Ｐ１は、ホストからのＩ／Ｏコマンドに従うＩ／Ｏ処理を行う。
【００５０】
ＪＮＬ作成部５３Ｐ１は、ＰＶＯＬ１７Ｐ１に書き込まれるＷＲ対象のデータの複製であるＪＮＬデータなどを含んだＪＮＬを作成しＪＶＯＬ１７ＰＪ１に書き込む。
【００５１】
ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、ＲＤ−ＪＮＬコマンドに応答してＪＮＬをＪＶＯＬ１７ＰＪ１から読み出す処理を行う。
【００５２】
Ｆ／Ｒ受領処理部５５Ｐ１は、ＲＭ２３からのフリーズコマンド及びＲＵＮコマンドに応答した処理を行う。ここで言う「ＲＵＮコマンド」とは、フリーズ状態を解除するコマンドである。
【００５３】
ペア状態変更部５６Ｐ１（５６Ｓ１）は、ＰＶＯＬ１７Ｐ１（１７Ｐ２）とＳＶＯＬ１７Ｓ１（１７Ｓ２）とのペアの状態を変更する処理を行う。
【００５４】
ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤ−ＪＮＬコマンドを送信する処理を行う。
【００５５】
リストア処理部６２Ｓ１は、ＪＶＯＬ１７ＳＪ１（１７ＳＪ２）に蓄積されている未反映のＪＮＬをＳＶＯＬ１７Ｓ１（１７Ｓ２）に反映する処理を行う。
【００５６】
ペア管理テーブル５７Ｐ１（５７Ｓ１）は、どのＰＶＯＬとのＳＶＯＬとでペアが構成されておりそのペアがどんな状態であるかを管理するためのテーブルである。
【００５７】
ＪＮＬグループ管理テーブル５８Ｐ１（５８Ｓ１）は、ＪＮＬグループに関する情報を管理するためのテーブルである。
【００５８】
図６Ａは、ペア管理テーブル５７Ｐ１の構成例を示す。図６Ｂは、ペア管理テーブル５７Ｓ１の構成例を示す。
【００５９】
ペア管理テーブル５７Ｐ１（５７Ｓ１）には、ＰＶＯＬ（ＳＶＯＬ）毎に、ボリューム番号、ボリューム属性、ＪＮＬグループ番号、ペア状態、相手ボリューム番号及び相手ＪＮＬグループ番号が登録される。以下、一つのＶＯＬ（以下、図６Ａ及び図６Ｂの説明において「対象ボリューム」を例に採り、各項目について説明する。
【００６０】
ボリューム番号は、対象ボリュームの識別番号である。ボリューム番号は、例えば、ＬＵＮに関連付けられる。このため、例えば、ＷＲコマンドで指定されているＬＵＮから、そのＬＵＮに関連付けられているボリューム番号が特定され、そのボリューム番号から、ＷＲ先のＰＶＯＬが特定される。
【００６１】
ボリューム属性は、対象ボリュームの属性である。属性を表す値としては、例えば、ＰＶＯＬであることを表す“Ｐ”や、ＳＶＯＬであることを表す“Ｓ”がある。
【００６２】
ＪＮＬグループ番号は、対象ボリュームが属するＪＮＬグループの識別番号である。
【００６３】
ペア状態は、対象ボリュームを有するペアの状態である。ペア状態としては、例えば、ＰＶＯＬとＳＶＯＬの内容が同じ内容であることを意味する“ＰＡＩＲ”、ＰＶＯＬからＳＶＯＬへのコピーが中断されている状態であることを意味する“Ｓｕｓｐｅｎｄ”、及び、ＰＶＯＬからＳＶＯＬへのコピーが行われている状態であることを意味する“Ｃｏｐｙ”がある。
【００６４】
相手ボリューム番号は、対象ボリュームとペアを構成するボリュームの識別番号である。
【００６５】
相手ＪＮＬグループ番号は、対象ボリュームが属するＪＮＬグループとペアを構成するＪＮＬグループの識別番号である。
【００６６】
図６Ａに示したテーブル５７Ｐ１によれば、ＰＤＫＣ１１Ｐ１は、ボリューム番号“００００”のＰＶＯＬが、ボリューム番号“１０００”のＳＶＯＬとペアになっていることがわかる。一方、図６Ｂに示したテーブル５７Ｓ１によれば、ＳＤＫＣ１１Ｓ１は、ボリューム番号“１０００”のＳＶＯＬが、ボリューム番号“００００”のＰＶＯＬとペアになっていることがわかる。
【００６７】
ここで、ＪＮＬグループについて、図７を参照して説明する。すなわち、ＪＮＬグループは、各ＤＫＣにおける複数のＶＯＬの集合である。ＪＮＬグループに、１つ以上のＪＶＯＬと、１以上のＰＶＯＬ（ＳＶＯＬ）が属する。そして、ＰＤＫＣにおけるＪＮＬグループとＳＤＫＣにおけるＪＮＬグループとで、ペアが構成される。また、複数のＪＮＬグループペアで、一つのコンシステンシーグループが形成される。本実施形態では、このコンシステンシーグループにおいて、データの整合性が維持される。
【００６８】
図８は、ＪＮＬグループ管理テーブル５８Ｐ１（５８Ｓ１）の構成例を示す。
【００６９】
ＪＮＬグループ管理テーブル５８Ｐ１（５８Ｓ１）は、ＪＮＬグループ毎に用意されるテーブルである。ＪＮＬグループ管理テーブル５８Ｐ１（５８Ｓ１）に含まれる情報要素には、例えば、ＪＮＬグループ状態、ＪＶＯＬのボリューム番号、ＪＮＬグループ番号、各種ＳＥＱ＃、ＯＰＥＮ  Ｍ＊Ｎ有効フラグ、フリーズ情報、フリーズ状態設定時間、Ｐサイト受領ＴＳ＃、リストア許可ＴＳ＃、到着済みＴＳ＃及びリストア済みＴＳ＃が含まれる。従って、前述したＰサイト受領ＴＳ＃、リストア許可ＴＳ＃、到着済みＴＳ＃及びリストア済みＴＳ＃は、一つのＤＫＣにおいて、ＪＮＬグループ毎に管理される。
【００７０】
ＪＮＬグループ番号は、ＪＮＬグループの識別番号である。
【００７１】
各種ＳＥＱ＃としては、例えば、一番新しく作成されたＪＮＬのＳＥＱ＃であるＪＮＣＢ  ＳＥＱ＃がある。
【００７２】
ＯＰＥＮ  Ｍ＊Ｎ有効フラグは、ＰＤＫＣが２台以上存在する場合に立つフラグである。
【００７３】
フリーズ情報は、フリーズ状態であるか否かを表す情報である。
【００７４】
フリーズ状態設定時間は、フリーズ状態の開始時刻である。
【００７５】
以下、本実施形態で行われる処理を詳細に説明する。
【００７６】
図９は、ＷＲコマンドを受けた場合にＰＤＫＣが行う処理の流れを示す。以下、ＰＤＫＣ１１Ｐ１を例に採り説明する。
【００７７】
例えばホスト２１ＢからＷＲコマンドが発行された場合（Ｓ８０１）、ＰＤＫＣ１１Ｐ１がＷＲコマンドを受領する（Ｓ８０２）。そのＷＲコマンドに従うＷＲ対象のデータは、Ｉ／Ｏ処理部５２Ｐ１によってＣＭ３３Ｐ１に書き込まれる。
【００７８】
Ｉ／Ｏ処理部５２Ｐ１は、受信したＷＲコマンドで指定されているＰＶＯＬ（ＷＲ先ＰＶＯＬ）が属するＪＮＬグループをペア管理テーブル５７Ｐ１から特定し、特定されたＪＮＬグループに対応するＪＮＬグループ管理テーブル５８Ｐ１内のフリーズ情報を取得する（Ｓ８０３）。
【００７９】
Ｓ８０３で取得されたフリーズ情報がフリーズ状態であることを表していれば（Ｓ８０４：ＹＥＳ）、Ｉ／Ｏ処理部５２Ｐ１は、スリープ状態となる（Ｓ８０５）。具体的には、Ｓ８０２で受けたＷＲコマンドに対して何ら応答がホスト２１Ｂに返されない。
【００８０】
Ｓ８０３で取得されたフリーズ情報がフリーズ状態でないことを表していれば（Ｓ８０４：ＮＯ）、Ｉ／Ｏ処理部５２Ｐ１は、ペア管理テーブル５７Ｐ１から、ＷＲ先ＰＶＯＬに対応したペア状態を取得する（Ｓ８０６）。
【００８１】
Ｓ８０６で取得されたペア状態が“ＰＡＩＲ”又は“Ｃｏｐｙ”であれば（Ｓ８０７：ＹＥＳ）、ＪＮＬ作成部５３Ｐ１が、ＷＲ対象のデータの複製であるＪＮＬデータとＰサイト受領ＴＳ＃を有するＪＮＣＢとを含んだＪＮＬを作成する（Ｓ８０８）。作成されたＪＮＬは、ＪＶＯＬ１７ＰＪ１に格納される。Ｉ／Ｏ処理部５２Ｐ１は、ホスト２１Ｂへ終了を報告する（Ｓ８０９）。なお、ＪＮＣＢに含まれる情報要素としては、例えば図１８に示すように、Ｐサイト受領ＴＳ＃の他に、ＪＮＣＢが作成された時刻である更新時刻や、ＷＲ対象データの書き込み先に関する更新位置情報や、ＳＥＱ＃が含まれる。
【００８２】
Ｓ８０６で取得されたペア状態が“Ｓｕｓｐｅｎｄ”であれば（Ｓ８１０：ＹＥＳ）、Ｉ／Ｏ処理部５２Ｐ１は、ＷＲ先ＰＶＯＬを構成するペアに対応した差分ビットマップにおける、ＷＲコマンドに従うＷＲ先ブロックに対応したビットを、差分ビットとして設定する（Ｓ８１１）。この後、前述したＳ８０９が行われる。
【００８３】
なお、差分ビットマップを構成する各ビットは、ＰＶＯＬを構成する各ブロックに対応する。ペア状態が“Ｓｕｓｐｅｎｄ”から“Ｃｏｐｙ”に変わった場合に、差分ビットに対応したブロック毎に、ブロック（ＰＶＯＬ内のブロック）に格納されているデータの複製をＪＮＬデータとして含んだＪＮＬが作成され、ＪＶＯＬ１７ＰＪ１に格納される。
【００８４】
また、図９には示していないが、Ｓ８０４：ＮＯの場合、ＷＲ対象のデータが、ＷＲコマンドで指定されているＷＲ先ブロック（ＷＲ先ＰＶＯＬ内のブロック）に書き込まれる。
【００８５】
図１０は、ＲＤ−ＪＮＬコマンドを送信する場合にＳＤＫＣが行う処理の流れを示す。
【００８６】
定期的にＪＮＬ−ＲＤ処理部６１Ｓ１が起動する（Ｓ９０１）。
【００８７】
ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＪＮＬ管理テーブル５８Ｓ１を参照し、ＪＮＬグループ状態を取得する（Ｓ９０２）。
【００８８】
Ｓ９０２で取得したＪＮＬグループ状態が“開始”であれば（Ｓ９０３：ＹＥＳ）、ＪＮＬ−ＲＤ処理部６１Ｓ１は、Ｓ９０２で参照したＪＮＬ管理テーブル５８Ｓ１を参照し、ＯＰＥＮ  Ｍ＊Ｎ有効フラグを取得する（Ｓ９０４）。
【００８９】
Ｓ９０４で取得したフラグが“有効”を表していなければ（Ｓ９０５：ＮＯ）、ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤ−ＪＮＬコマンドパラメータを作成し（Ｓ９０９）、そのパラメータを含んだＲＤ−ＪＮＬコマンドを発行する（Ｓ９１０）。
【００９０】
Ｓ９０４で取得したフラグが“有効”を表していれば（Ｓ９０５：ＹＥＳ）、ＪＮＬ−ＲＤ処理部６１Ｓ１は、Ｓ９０２で参照したＪＮＬ管理テーブル５８Ｓ１を参照し、リストア済みＴＳ＃及び到着済みＴＳ＃を取得する（Ｓ９０６及びＳ９０７）。そして、ＪＮＬ−ＲＤ処理部６１Ｓ１は、取得したリストア済みＴＳ＃及び到着済みＴＳ＃を含んだＲＤ−ＪＮＬコマンドパラメータを作成し（Ｓ９０８）、そのパラメータを含んだＲＤ−ＪＮＬコマンドを発行する（Ｓ９１０）。
【００９１】
ＲＤ−ＪＮＬコマンドパラメータに含まれる情報要素の一例を図１９に示す。Ｓ９０８で作成されるＲＤ−ＪＮＬコマンドパラメータには、ＲＤ−ＪＮＬモード、ＰＤＫＣでのＪＮＬグループ番号、リストア済みＴＳ＃及び到着済みＴＳ＃が含まれ、ＲＤ−ＪＮＬモードは、例えば、“特殊リード”である。一方，Ｓ９０９で作成されるＲＤ−ＪＮＬコマンドパラメータには、リストア済みＴＳ＃及び到着済みＴＳ＃は含まれず、また、ＲＤ−ＪＮＬモードは“通常リード”、“リトライリード”又は“パージ指示”である。また、ＰＤＫＣでのＪＮＬグループ番号は、Ｓ９０２で参照したＪＮＬ管理テーブル５８Ｓ１に登録されているＪＮＬグループ番号に対応する相手ＪＮＬグループ番号（ペア管理テーブル５７Ｓ１から特定される番号）である。
【００９２】
図１１は、ＲＤ−ＪＮＬコマンドを受けた場合にＰＤＫＣが行う処理の流れの一部を示し、図１２は、その流れの残りを示す。
【００９３】
図１１に示すように、ＰＤＫＣ１１Ｐ１がＲＤ−ＪＮＬコマンドをＳＤＫＣ１１Ｓ１から受領した場合（Ｓ１００１）、ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、そのコマンドからコマンドパラメータを取得し（Ｓ１００２）、そのパラメータからＲＤ−ＪＮＬモードを取得する（Ｓ１００３）。
【００９４】
Ｓ１００３で取得したＲＤ−ＪＮＬモードが“通常リード”又は“リトライリード”である場合（Ｓ１００４：ＹＥＳ）、ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、未転送のＪＮＬがあれば（Ｓ１００６：ＹＥＳ）、ＪＮＬをＪＶＯＬ１７ＰＪ１から取得し（Ｓ１００７）、転送パラメータを作成し（Ｓ１００８）、そのパラメータと共に、Ｓ１００７で取得したＪＮＬを、ＲＤデータとしてＳＤＫＣ１１Ｓ１に転送する（Ｓ１００９）。一方、未転送のＪＮＬがなければ（Ｓ１００６：ＮＯ）、ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、転送パラメータを作成し（Ｓ１０１０）、そのパラメータと共にＮＯ−ＪＮＬ（ＪＮＬ無しを表す情報）を、ＲＤデータとしてＳＤＫＣ１１Ｓ１に転送する（Ｓ１０１１）。
【００９５】
Ｓ１００３で取得したＲＤ−ＪＮＬモードが“パージ指示”の場合（Ｓ１００４：ＮＯ、図１２のＳ１１０１：ＮＯ）、図１２に示すように、ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、転送済みのＪＮＬがＪＶＯＬ１７ＰＪ１にあれば（Ｓ１００８：ＹＥＳ）、そのＪＮＬをＪＶＯＬ１７ＰＪ１から削除するパージ処理を行う（Ｓ１１０９）。
【００９６】
Ｓ１００３で取得したＲＤ−ＪＮＬモードが“特殊リード”の場合（Ｓ１００４：ＮＯ、図１２のＳ１１０１：ＹＥＳ）、図１２に示すように、ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、未転送のＪＮＬがあれば（Ｓ１１０３：ＹＥＳ）、ＪＮＬをＪＶＯＬ１７ＰＪ１から取得する（Ｓ１１０４）。また、ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、Ｓ１００２で取得したパラメータ内のＪＮＬグループ番号を有するＪＮＬ管理テーブル５８Ｐ１からリストア許可ＴＳ＃を取得する（Ｓ１１０５）。ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、取得したリストア許可ＴＳ＃を含んだ転送パラメータを作成し（Ｓ１１０６）、そのパラメータと共に、Ｓ１１０４で取得したＪＮＬを、ＲＤデータとしてＳＤＫＣ１１Ｓ１に転送する（Ｓ１１０７）。一方、未転送のＪＮＬがなければ（Ｓ１１０３：ＮＯ）、ＪＮＬ−ＲＤ受領処理部５４Ｐ１は、Ｓ１００２で取得したパラメータ内のＪＮＬグループ番号を有するＪＮＬ管理テーブル５８Ｐ１からＰサイト受領ＴＳ＃及びリストア許可ＴＳ＃を取得し（Ｓ１１１０及びＳ１１１１）、取得した各ＴＳ＃を含んだ転送パラメータを作成し（Ｓ１１１２）、そのパラメータと共にＮＯ−ＪＮＬ（ＪＮＬ無しを表す情報）を、ＲＤデータとしてＳＤＫＣ１１Ｓ１に転送する（Ｓ１１１３）。
【００９７】
図１３は、ＲＤデータを受けた場合にＳＤＫＣが行う処理の流れを示す。
【００９８】
ＳＤＫＣ１１Ｓ１がＰＤＫＣ１１Ｐ１からＲＤデータを受けた場合、ＪＮＬ−ＲＤ処理部６１Ｓ１が起動する（Ｓ１２０１）。
【００９９】
ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤデータの受信の契機となった、発行したＲＤ−ＪＮＬコマンドをチェックする（Ｓ１２０２）。
【０１００】
Ｓ１２０２でチェックしたＲＤ−ＪＮＬコマンドのＲＤ−ＪＮＬモードが“通常リード”又は“リトライリード”の場合（Ｓ１２０３：ＹＥＳ）、ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤデータにＪＮＬがあれば（Ｓ１２０４：ＹＥＳ）、ＲＤデータからＪＮＬを取得し（Ｓ１２０５）、取得したＪＮＬをＪＶＯＬ１７ＳＪ１に書き込む（Ｓ１２０６）。
【０１０１】
Ｓ１２０２でチェックしたＲＤ−ＪＮＬコマンドのＲＤ−ＪＮＬモードが“特殊リード”の場合（Ｓ１２０３：ＹＥＳ、Ｓ１２０７：ＹＥＳ）、ＲＤデータにＪＮＬがあれば（Ｓ１２０８：ＹＥＳ）、ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤデータからリストア許可ＴＳ＃（以下、図１３の説明において“Ｘ”）を取得し、取得したＸを、Ｓ１２０２でチェックしたＲＤ−ＪＮＬコマンドに対応するＪＮＬ管理テーブル５８Ｓ１に、リストア許可ＴＳ＃として設定する（Ｓ１２０９）。また、ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤデータからＰサイト受領ＴＳ＃（以下、図１３の説明において“Ｗ”）を取得し、取得したＷを、Ｓ１２０２でチェックしたＲＤ−ＪＮＬコマンドに対応するＪＮＬ管理テーブル５８Ｓ１に、到着済みＴＳ＃として設定する（Ｓ１２１０）。また、ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤデータからＪＮＬを取得し（Ｓ１２１１）、取得したＪＮＬをＪＶＯＬ１７ＳＪ１に書き込む（Ｓ１２１２）。一方、ＲＤデータにＪＮＬが無ければ（Ｓ１２０８：ＮＯ）、ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤデータからリストア許可ＴＳ＃（以下、図１３の説明において“Ｙ”）を取得し、取得したＹを、Ｓ１２０２でチェックしたＲＤ−ＪＮＬコマンドに対応するＪＮＬ管理テーブル５８Ｓ１に、リストア許可ＴＳ＃として設定する（Ｓ１２１３）。また、ＪＮＬ−ＲＤ処理部６１Ｓ１は、ＲＤデータからＰサイト受領ＴＳ＃（以下、図１３の説明において“Ｚ”）を取得し、取得したＺを、Ｓ１２０２でチェックしたＲＤ−ＪＮＬコマンドに対応するＪＮＬ管理テーブル５８Ｓ１に、到着済みＴＳ＃として設定する（Ｓ１２１４）。
【０１０２】
ところで、ＲＭ２３は、前述したように、定期的にＴＳ＃を発行するが、ＲＭ２３は、図１４に示す定義ファイルに基づいて動作する。
【０１０３】
定義ファイル６９には、例えば、下記情報、
（１４−１）ＴＳ＃の発行先となる全てのＰＤＫＣに関する情報（例えばＤＫＣの製造番号）、
（１４−２）各ＰＤＫＣについてのコマンドデバイス番号（ＴＳ＃の発行の際に指定されるデバイス番号）、
（１４−３）各ＰＤＫＣが有する各ＰＶＯＬに関する情報（例えばＰＶＯＬのボリューム番号（ＬＤＥＶ＃））、
（１４−４）ＴＳ発行間隔（ＴＳ＃を発行してから次にＴＳ＃を発行するまでの時間間隔）、
が含まれる。図１４に示した定義ファイル６９を基に、ＲＭ２３は、そのファイル６９で指定されているＴＳ発行間隔で、ＴＳ設定コマンドを、Ｓｅｒｉａｌ＃６４０３４のＤＫＣ（以下、ＰＤＫＣ１１Ｐ１とする）及びＳｅｒｉａｌ＃６４０４５のＤＫＣ（以下、ＰＤＫＣ１１Ｐ２とする）に発行する。そのコマンドには、図１５に示すように、下記（１５−１）乃至（１５−３）の情報要素、
（１５−１）コマンドコード（ここでは、ＴＳ設定コマンドであることを意味するコード）、
（１５−２）ＪＮＬグループ番号、
（１５−３）ＴＳ＃、
が含まれる。図１６に示すように、ＰＤＫＣがＴＳ設定コマンドを受けた場合（Ｓ１４０１）、ＴＳ処理部５１Ｐ１が、そのコマンドからＴＳ＃を取得し（Ｓ１４０２）、そのコマンド内のＪＮＬグループ番号に対応したＪＮＬ管理テーブル５８Ｐ１に、取得したＴＳ＃をＰサイト受領ＴＳ＃として設定し（Ｓ１４０３）、ＲＭ２３へ処理終了を報告する（Ｓ１４０４）。
【０１０４】
また、ＲＭ２３は、例えば定期的に、リストア許可ＴＳ＃をＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信する。
【０１０５】
具体的には、例えば、図１７に示すように、ＲＭ２３は、Ｓｅｒｉａｌ＃６４０３４のＤＫＣ（ＰＤＫＣ１１Ｐ１）に状態取得コマンドを発行する（Ｓ１３０１）。状態取得コマンドには、例えば、ＪＮＬグループ番号が含まれている。図２１に示すように、ＰＤＫＣ１１Ｐ１（１１Ｐ２）が状態取得コマンドを受けた場合（Ｓ１９０１）、例えばＰＤＫＣ１１Ｐ１では、図２１に示すように、ＴＳ処理部５１Ｐ１が、マイクロバージョンを取得する（Ｓ１９０２）。また、ＴＳ処理部５１Ｐ１は、状態取得コマンド内のＪＮＬグループ番号に対応したＪＮＬ管理テーブル５８Ｐ１を参照し、ＪＮＬグループ状態、Ｐサイト受領ＴＳ＃、到着済みＴＳ＃及びリストア済みＴＳ＃を取得し（Ｓ１９０３、Ｓ１９０４、Ｓ１９０５、Ｓ１９０６）、Ｓ１９０２乃至Ｓ１９０６で取得した情報を含んだ応答情報（図２０参照）を作成して（Ｓ１９０７）、その応答情報をＲＭ２３に送信する（Ｓ１９０８）。
【０１０６】
ＲＭ２３は、図１７に示すように、状態取得コマンドに対する応答情報を受信したら（Ｓ１３０２）、応答情報に含まれているマイクロバージョンを確認する（Ｓ１３０３）。
【０１０７】
Ｓ１３０３により（又は他の方法で）、ＰＤＫＣ１１Ｐ１がＯＰＥＮ  Ｍ＊Ｎをサポートしていることが特定された場合（Ｓ１３０４：ＹＥＳ）、ＲＭ２３は、Ｓ１３０２で受信した応答情報からＪＮＬグループ状態を取得する（Ｓ１３０５）。そのＪＮＬグループ状態が“開始”であれば、ＲＭ２３は、ＰＤＫＣ１１Ｐ１のＴＳ＃として、その応答情報に含まれている到着済みＴＳ＃を設定する（Ｓ１３０７）。
【０１０８】
前述したＳ１３０１乃至Ｓ１３０７と同様の処理が、ＰＤＫＣ１１Ｐ２についても行われる（Ｓ１３０８乃至Ｓ１３１４）。
【０１０９】
そして、ＲＭ２３は、Ｓ１３０７で設定したＴＳ＃とＳ１３１４で設定したＴＳ＃とのうちの最低値を、発行するリストア許可ＴＳ＃として決定する（Ｓ１３１５）。ＲＭ２３は、決定されたリストア許可ＴＳ＃を、ＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信する（Ｓ１３１６及びＳ１３１７）。リストア許可ＴＳ＃は、例えば、Ｓ１３０１及びＳ１３０８で発行した状態取得コマンドに含めたＪＮＬグループ番号と共に送信される。
【０１１０】
ＰＤＫＣ１１Ｐ１（１１Ｐ２）は、ＲＭ２３から受信したリストア許可ＴＳ＃を、そのＴＳ＃に対応したＪＮＬグループ管理テーブル５８Ｐ１に登録する。また、ＰＤＫＣ１１Ｐ１（１１Ｐ２）は、ＪＮＬグループ管理テーブル５８Ｐ１に登録されているリストア許可ＴＳ＃を、ＳＤＫＣ１１Ｓ１（１１Ｓ２）に転送する。リストア許可ＴＳ＃の転送は、ＰＤＫＣ１１Ｐ１（１１Ｐ２）が能動的に行っても良いし、例えばＳＤＫＣ１１Ｓ１（１１Ｓ２）からのＲＤ−ＪＮＬコマンドに対するＲＤデータの送信の際に行われても良い。ＳＤＫＣ１１Ｓ１（１１Ｓ２）は、ＰＤＫＣ１１Ｐ１（１１Ｐ２）から受信したリストア許可ＴＳ＃を、そのＴＳ＃に対応したＪＮＬグループ管理テーブル５８Ｓ１に登録する。
【０１１１】
ＳＤＫＣ１１Ｓ１（１１Ｓ２）では、前述したように、リストア許可ＴＳ＃よりも１つ小さいＴＳ＃を有するＪＮＬまでが、ＳＶＯＬ１７Ｓ１（１７Ｓ２）に反映される。その理由は、図２２に示す通りである。すなわち、ＳＤＫＣ１１Ｓ１での到着済みＴＳ＃が“５”、ＳＤＫＣ１１Ｓ２での到着済みＴＳ＃が“４”であるとした場合、リストア許可＃は、それらの最低値である“４”になるが、ＳＤＫＣ１１Ｓ２では、今後もＴＳ＃４を含んだＪＮＬを受ける可能性がある。つまり、ＳＤＫＣ１１Ｓ２では、ＴＳ＃４についてのＪＮＬデータが確定しているわけではない。このため、リストア許可ＴＳ＃４よりも１つ小さいＴＳ＃３を含んだＪＮＬまでが、ＳＤＫＣ１１Ｓ１及び１１Ｓ２において反映されるのである。
【０１１２】
また、前述の説明によれば、ＰＤＫＣ１１Ｐ１（１１Ｐ２）は、ＲＤ−ＪＮＬコマンドを受けた場合、未転送のＪＮＬが無ければ、Ｐサイト受領ＴＳ＃を含んだＮＯ−ＪＮＬを転送する。これにより、ＤＫＣ群１８に、ＷＲコマンドをしばらく受けていないＰＤＫＣが含まれていても、そのＰＤＫＣ以外のＰＤＫＣとペアになっているＳＤＫＣにおいて未反映のＪＮＬが多くなりすぎそれ故にＪＶＯＬでＪＮＬが満杯になってしまうといったことを未然に防ぐことが期待できる。具体例としては、図２３Ａ及び図２３Ｂに示す通りである。
【０１１３】
すなわち、図２３Ａに示すように、例えばＰＤＫＣ１１Ｐ２がしばらくＷＲコマンドを受けていない状況において、ＰＤＫＣ１１Ｐ２がＲＤ−ＪＮＬコマンドを受けて未転送のＪＮＬが無い場合、ＮＯ−ＪＮＬを送信する機能がなければ、いつまでも、ＰＤＫＣ１１Ｐ２が管理するＰサイト受領ＴＳ＃７０がＳＤＫＣ１１Ｓ２に転送されず、それ故、ＳＤＫＣ１１Ｓ２が管理する到着済みＴＳ＃５が更新されない。このため、リストア許可ＴＳ＃も、ＳＤＫＣ１１Ｓ２での到着済みＴＳ＃５と同じ値のままである。従って、ＳＤＫＣ１１Ｓ１では、リストア許可ＴＳ＃５よりも１つ小さいＴＳ＃４を有するＪＮＬまでが反映されるものの、次のＴＳ＃５を有するＪＮＬ以降のＪＮＬは未反映のままＪＶＯＬ１７ＳＪ１に残ることになる。また、ＰＤＫＣ１１Ｐ１でＷＲコマンドが受領される都度に、新たなＪＮＬが作成される。新たなＪＮＬは、ＳＤＫＣ１１Ｓ１に転送されて、ＪＶＯＬ１７ＳＪ１に書き込まれる。それ故、ＪＶＯＬ１７ＳＪ１が満杯になり、新たにＪＮＬを格納できない可能性が生じる。
【０１１４】
そこで、本実施形態では、図２３Ｂに示すように（つまり、これまで説明してきたように）、例えばＰＤＫＣ１１Ｐ２がしばらくＷＲコマンドを受けていない状況において、ＰＤＫＣ１１Ｐ２がＲＤ−ＪＮＬコマンドを受けて未転送のＪＮＬが無い場合、ＰＤＫＣ１１Ｐ２は、ＪＮＬを有さないがＰサイト受領ＴＳ＃を有するＲＤデータ、つまりＮＯ−ＪＮＬを、ＳＤＫＣ１１Ｓ２に送信する。これにより、図２３Ｂに示す例によれば、ＳＤＫＣ１１Ｓ１及び１１Ｓ２から取得される到着済みＴＳ＃は共に“７０”となり、それ故、リストア許可ＴＳ＃も“７０”となり、ＳＤＫＣ１１Ｓ１では、ＴＳ＃６９を有するＪＮＬまでをＳＶＯＬ１７Ｓ１に反映可能となる。これにより、ＪＶＯＬ１７ＳＪ１が未反映のＪＮＬで満杯になってしまうおそれを未然に防ぐことが期待できる。
【０１１５】
また、前述の説明によれば、ＲＭ２３は、ＴＳ設定コマンドを送信する前に、フリーズコマンドを、ＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信する。このため、更新順序を保つことができる。
【０１１６】
例えば、図２４に示すように、ＲＭ２３は、ＰＤＫＣ１１Ｐ１及び１１Ｐ２にフリーズコマンドを送信し（Ｓ２４１Ａ、Ｓ２４１Ｂ）、その後で、ＴＳ＃５を含んだＴＳ設定コマンドを、ＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信する（Ｓ２４２Ａ、Ｓ２４２Ｂ）。
【０１１７】
ＲＭ２３とは独立して、Ｉ／Ｏ発行部２５は稼動している。別の言い方をすれば、ＴＳ設定コマンドが発行されるタイミングは、ＷＲコマンドが発行されるタイミングに依存しない。このため、図２４に例示するように、ＲＭ２３がＰＤＫＣ１１Ｐ１にＴＳ設定コマンド（ＴＳ＃５）を送信してからＰＤＫＣ１１Ｐ２にＴＳ設定コマンド（ＴＳ＃５）を送信するまでの間に（つまりＳ２４２ＡとＳ２４２Ｂとの間に）、Ｉ／Ｏ発行部２５が、ＷＲコマンドをＰＤＫＣ１１Ｐ１に送信し別のＷＲコマンドをＰＤＫＣ１１Ｐ２に送信することがあり得る。しかし、この時点において、ＰＤＫＣ１１Ｐ１及び１１Ｐ２は、いずれも、フリーズ状態になっているため、受領したＷＲコマンドに応答した処理を行わず、フリーズ状態が解除された後に、その処理を行う。フリーズ状態の間に、Ｓ２４１Ａ及びＳ２４１Ｂで発行されたＴＳ設定コマンド内のＴＳ＃５が、ＰＤＫＣ１１Ｐ１及び１１Ｐ２においてＰサイト受領ＴＳ＃として管理される。このため、フリーズ状態が解除された場合には、図２４に示すように、ＰＤＫＣ１１Ｐ１では、Ｓ２４２ＡでのＷＲコマンドに応答したＷＲ処理が行われた場合、ＴＳ＃５を含んだＪＮＬ２４０１が作成され、同様に、ＰＤＫＣ１１Ｐ１でも、Ｓ２４２ＢでのＷＲコマンドに応答したＷＲ処理が行われた場合、ＴＳ＃５を含んだＪＮＬ２４０２が作成される。
【０１１８】
以上のことから、ＴＳ設定コマンドの受領前にフリーズコマンドが発行されないと、次のような問題が生じ得る。すなわち、図２５に示すように、前述したＳ２４２ＡとＳ２４２Ｂとの間に、ＰＤＫＣ１１Ｐ１及び１１Ｐ２がＷＲコマンドを受領した場合、ＰＤＫＣ１１Ｐ１では、Ｓ２４２Ａで受領したＴＳ設定コマンド内のＴＳ＃５を含んだＪＮＬ２５０１が作成されるが、ＰＤＫＣ１１Ｐ２では、Ｓ２４２ＢでＴＳ設定コマンドを受領する前のＰサイト受領ＴＳ＃４を含んだＪＮＬ２５０２が作成される。この結果、ＰＤＫＣ１１Ｐ１の方が早くＷＲコマンドを受けたにも関わらず、ＰＤＫＣ１１Ｐ２で作成されるＪＮＬに含まれるＴＳ＃の方が若い値となる。つまり、更新順序が逆転してしまうことになる。
【０１１９】
従って、前述したように、ＲＭ２３がＴＳ設定コマンドを送信する前にフリーズコマンドを送信することにより、ＤＫＣ群１８における更新順序を保つことができる。
【０１２０】
図２６は、フリーズコマンドを受けた場合にＰＤＫＣが行う処理の流れを示す。
【０１２１】
例えばＰＤＫＣ１１Ｐ１がフリーズコマンドを受けた場合（Ｓ２６０１）、Ｆ／Ｒ受領処理部５５Ｐ１が、そのフリーズコマンドで指定されているＪＮＬグループ番号に対応したＪＮＬグループ管理テーブル（以下、図２６の説明において、「対象ＪＮＬグループ管理テーブル」と言う）５８Ｐ１からフリーズ情報を取得する（Ｓ２６０２）。
【０１２２】
Ｓ２６０２で取得したフリーズ情報がフリーズ中を表していなければ（Ｓ２６０３：ＮＯ）、Ｆ／Ｒ受領処理部５５Ｐ１は、例えばタイマから現在時刻を取得し（Ｓ２６０６）、取得した現在時刻を、対象ＪＮＬグループ管理テーブルに、フリーズ状態設定時間として書き込む（Ｓ２６０７）。また、Ｆ／Ｒ受領処理部５５Ｐ１は、対象ＪＮＬグループ管理テーブルに、フリーズ中を表すフリーズ情報を設定する（Ｓ２６０８）。
【０１２３】
一方、Ｓ２６０２で取得したフリーズ情報がフリーズ中を表していれば（Ｓ２６０３：ＹＥＳ）、Ｆ／Ｒ受領処理部５５Ｐ１は、対象ＪＮＬグループ管理テーブルからフリーズ状態設定時間を取得する（Ｓ２６０４）。Ｓ２６０４で取得したフリーズ状態設定時間が表す時刻と現在時刻との差が所定時間を超えていなければ（つまりタイムオーバーが生じていなければ）（Ｓ２６０５：ＮＯ）、本処理が終了する。一方、タイムオーバーが生じていれば（Ｓ２６０５：ＹＥＳ）、Ｆ／Ｒ受領処理部５５Ｐ１は、解析用のログを出力し（Ｓ２６０９）、対象ＪＮＬグループ管理テーブルに登録されているフリーズ情報を、フリーズ中ではないことを表す情報に更新する（Ｓ２６１０）。
【０１２４】
図２６を参照した説明によれば、フリーズ状態は、タイムオーバーにより解除されるが、それに代えて又は加えて、ＲＭ２３からのコマンドによって、フリーズ状態が解除されても良い。以下、フリーズ状態の解除コマンドを、「ＲＵＮコマンド」と言う。
【０１２５】
図２７は、ＲＵＮコマンドを受けた場合にＰＤＫＣが行う処理の流れを示す。
【０１２６】
例えばＰＤＫＣ１１Ｐ１がＲＵＮコマンドを受けた場合、Ｆ／Ｒ受領処理部５５Ｐ１は、ＲＵＮコマンドで指定されているＪＮＬグループ番号に対応したＪＮＬグループ管理テーブル（以下、図２７の説明において、「対象ＪＮＬグループ管理テーブル」と言う）５８Ｐ１からフリーズ情報を取得する（Ｓ２７０２）。
【０１２７】
Ｓ２６０２で取得したフリーズ情報がフリーズ中を表していれば（Ｓ２７０３：ＹＥＳ）、Ｆ／Ｒ受領処理部５５Ｐ１は、対象ＪＮＬグループ管理テーブルに登録されているフリーズ情報を、フリーズ中ではないことを表す情報に更新する（Ｓ２７０４）。
【０１２８】
さて、本実施形態において、図２８に示すように、ＲＭ２３に障害が発生し、ＲＭ２３がその障害から回復した場合、ＲＭ２３は、回復後初めて送信するＴＳ設定コマンドにどんなＴＳ＃を設定すべきかを判定する処理を行う。具体的には、図２９に示す処理が行われる。
【０１２９】
すなわち、ＲＭ２３は、ＰＤＫＣ１１Ｐ１に、或るＪＮＬグループ（以下、図２９の説明において「対象グループ」と言う）について状態取得コマンドを送信することにより（Ｓ２９０１）、ＰＤＫＣ１１Ｐ１が現在記憶している、対象ＪＮＬグループに対応したＰサイト受領ＴＳ＃（図２８の例によれば、ＴＳ＃１００）を、ＰＤＫＣ１１Ｐ１から受領する（Ｓ２９０２）。同様に、ＲＭ２３は、ＰＤＫＣ１１Ｐ２に、対象ＪＮＬグループについて状態取得コマンドを送信することにより（Ｓ２９０３）、ＰＤＫＣ１１Ｐ２が現在記憶している、対象ＪＮＬグループに対応したＰサイト受領ＴＳ＃（図２８の例によれば、ＴＳ＃９９）をＰＤＫＣ１１Ｐ１から受領する（Ｓ２９０４）。ＲＭ２３は、Ｓ２９０２及びＳ２９０４で受領したＰサイト受領ＴＳ＃の最大値を判定し（Ｓ２９０５）、判定された最大値（図２８の例によれば“１００”）よりも１つ大きい値（つまり“１０１”）を、発行するＴＳ＃に決定する（Ｓ２９０６）。ＲＭ２３は、決定したＴＳ＃を含んだＴＳ設定コマンドを、ＰＤＫＣ１１Ｐ１及び１１Ｐ２に送信する（Ｓ２９０７）。
【０１３０】
さて、本実施形態では、図３０に示すように、ホスト２１ＡといずれかのＰＤＫＣ（例えばＰＤＫＣ１１Ｐ１）との間で障害が生じた場合（Ｓ３００１）、図３０乃至図３２に示す処理が行われる。以下の説明では、図５を基に、ＰＤＫＣ１１Ｐ２及びＳＤＫＣ１１Ｓ２が有するペア状態変更部を、ペア状態変更部５６Ｐ２及び５６Ｓ２と呼び、ＰＤＫＣ１１Ｐ２及びＳＤＫＣ１１Ｓ２が有するペア管理テーブルを、ペア管理テーブル５７Ｐ２及び５７Ｓ２と呼ぶ。
【０１３１】
ＲＭ２３が、例えばＰＤＫＣ１１Ｐ１に状態設定コマンドを発行しても何ら応答が戻ってこない等の理由により、ＰＤＫＣ１１Ｐ１との通信不可を検出する（Ｓ３００２）。ＲＭ２３は、通信可能なＰＤＫＣ１１Ｐ２に、サスペンドを指示する（Ｓ３００３）。その指示に応答して、ＰＤＫＣ１１Ｐ２では、ペア状態変更部５６Ｐ２が、ペア管理テーブル５７Ｐ２を参照し、全てのペアについて、ペア状態を“Ｓｕｓｐｅｎｄ”に更新する（Ｓ３００４Ａ）。ＳＤＫＣ１１Ｓ２では、ＰＤＫＣ１１Ｐ２で全てのペアについてペア状態が“Ｓｕｓｐｅｎｄ”に更新されたことが検知され、ペア状態変更部５６Ｓ２が、ペア管理テーブル５７Ｓ２における全てのペア状態を“Ｓｕｓｐｅｎｄ”に更新する（Ｓ３００４Ｂ）。ＰＤＫＣ１１Ｐ２で全てのペアについてペア状態が“Ｓｕｓｐｅｎｄ”に更新されたことは、ＰＤＫＣ１１Ｐ２からＳＤＫＣ１１Ｓ２に積極的に通知されても良いし、ＳＤＫＣ１１Ｓ２からの問合せに対する応答で通知されても良い。
【０１３２】
この後、図３１に示すように、Ｓ３００１で発生した障害から回復した場合（Ｓ３１０１）、ＲＭ２３は、障害からの回復に関わるＰＤＫＣ１１Ｐ１と、ＳＤＫＣ１１Ｓ１との間に関する状態を、ＰＤＫＣ１１Ｐ２とＳＤＫＣ１１Ｓ２との間に関する状態と同じ状態にする。すなわち、ＲＭ２３は、ＰＤＫＣ１１Ｐ２において全てのペア状態が“Ｓｕｓｐｅｎｄ”とされていることをＰＤＫＣ１１Ｐ２から検知する（Ｓ３１０２）。この場合、ＲＭ２３は、ＰＤＫＣ１１Ｐ１に、サスペンドを指示する（Ｓ３１０４）。その指示に応答して、ＰＤＫＣ１１Ｐ１では、ペア状態変更部５６Ｐ１が、ペア管理テーブル５７Ｐ１を参照し、全てのペアについて、ペア状態を“Ｓｕｓｐｅｎｄ”に更新する（Ｓ３１０５Ａ）。ＳＤＫＣ１１Ｓ１では、ＰＤＫＣ１１Ｐ１で全てのペアについてペア状態が“Ｓｕｓｐｅｎｄ”に更新されたことが検知され、ペア状態変更部５６Ｓ１が、ペア管理テーブル５７Ｓ１における全てのペア状態を“Ｓｕｓｐｅｎｄ”に更新する（Ｓ３１０５Ｂ）。
【０１３３】
この後、ＲＭ２３は、ＰＤＫＣ１１Ｐ１に、リシンク（再同期）を指示する（Ｓ３２０１Ａ）。その指示に応答して、ＰＤＫＣ１１Ｐ１では、ペア状態変更部５６Ｐ１が、ペア管理テーブル５７Ｐ１を参照し、全てのペアについて、ペア状態を“Ｓｕｓｐｅｎｄ”から“ＰＡＩＲ”に更新する（Ｓ３２０２Ａ）。ＳＤＫＣ１１Ｓ１では、ＰＤＫＣ１１Ｐ１で全てのペアについてペア状態が“ＰＡＩＲ”に更新されたことが検知され、ペア状態変更部５６Ｓ１が、ペア管理テーブル５７Ｓ１における全てのペア状態を“Ｓｕｓｐｅｎｄ”から“ＰＡＩＲ”に更新する（Ｓ３２０２Ｂ）。なお、ペア状態は、“Ｓｕｓｐｅｎｄ”から“Ｃｏｐｙ”を経て“ＰＡＩＲ”に遷移する。ペア状態“Ｃｏｐｙ”の間に、ＰＶＯＬとＳＶＯＬとの間の差分が、ＳＶＯＬに反映され、それにより、ＰＶＯＬの内容とＳＶＯＬの内容が同じになって、ペア状態が“ＰＡＩＲ”になる。
【０１３４】
上記と同様の処理が、ＰＤＫＣ１１Ｐ２及びＳＤＫＣ１１Ｓ２についても行われる（Ｓ３２０１Ｂ、Ｓ３２０２Ｃ、Ｓ３２０２Ｄ）。
【０１３５】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、本発明は、オープンシステムの計算機を備えた計算機システムに限らず、メインフレームの計算機を備えた計算機システムに適用することも可能である。
【図面の簡単な説明】
【０１３６】
【図１】図１は、本発明の一実施形態に係る計算機システムの構成例を示す。
【図２】図２は、ＰＤＫＣとＳＤＫＣ間とのやり取りの説明図である。
【図３】図３は、リストア許可ＴＳ＃の設定とリストア処理との概要を示す。
【図４】図４は、各ＤＫＣの構成を示す。
【図５】図５は、ＰＤＫＣが有する機能ブロックとＳＤＫＣが有する機能ブロックとを示す。
【図６】図６Ａは、ペア管理テーブル５７Ｐ１の構成例を示す。図６Ｂは、ペア管理テーブル５７Ｓ１の構成例を示す。
【図７】図７は、ＪＮＬグループとコンシステンシーグループとの関係を示す。
【図８】図８は、ＪＮＬグループ管理テーブルの構成例を示す。
【図９】図９は、ＷＲコマンドを受けた場合にＰＤＫＣが行う処理の流れを示す。
【図１０】図１０は、ＲＤ−ＪＮＬコマンドを送信する場合にＳＤＫＣが行う処理の流れを示す。
【図１１】図１１は、ＲＤ−ＪＮＬコマンドを受けた場合にＰＤＫＣが行う処理の流れの一部を示す。
【図１２】図１２は、ＲＤ−ＪＮＬコマンドを受けた場合にＰＤＫＣが行う処理の流れの残りを示す。
【図１３】図１３は、ＲＤデータを受けた場合にＳＤＫＣが行う処理の流れを示す。
【図１４】図１４は、ＲＭが使用する定義ファイルの一例を示す。
【図１５】図１５は、ＴＳ設定コマンドに含まれる情報要素を示す。
【図１６】図１６は、ＲＭからＴＳ設定コマンドを受けたＰＤＫＣが行う処理の流れを示す。
【図１７】図１７は、リストア許可ＴＳ＃を決定するための処理の流れを示す。
【図１８】図１８は、ＪＮＣＢに含まれる情報要素の一例を示す。
【図１９】図１９は、ＲＤ−ＪＮＬコマンドパラメータに含まれる情報要素の一例を示す。
【図２０】図２０は、ＲＭからの状態取得コマンドに対する応答情報に含まれる情報要素の一例を示す。
【図２１】図２１は、ＲＭからの状態取得コマンドを受けた場合にＰＤＫＣが行う処理の流れを示す。
【図２２】図２２は、リストア許可ＴＳ＃よりも１つ小さいＪＮＬまでが反映対象となる理由の説明図である。
【図２３】図２３Ａは、ＮＯ−ＪＮＬを送信する機能を有しない場合に生じ得る問題の説明図である。図２３Ｂは、ＮＯ−ＪＮＬを送信する機能を有することによって期待できる効果の説明図である。
【図２４】図２４は、ＴＳ設定コマンドを送信する前にフリーズコマンドを送信するケースでの或る処理の説明図である。
【図２５】図２５は、ＴＳ設定コマンドを送信する前にフリーズコマンドが送信されない場合に生じ得る問題の説明図である。
【図２６】図２６は、フリーズコマンドを受けた場合にＰＤＫＣが行う処理の流れを示す。
【図２７】図２７は、ＲＵＮコマンドを受けた場合にＰＤＫＣが行う処理の流れを示す。
【図２８】図２８は、ＲＭに障害が生じたことを示す図である。
【図２９】図２９は、ＲＭが障害から回復した場合に行われる処理の流れを示す。
【図３０】図３０は、ＲＭとＰＤＫＣ１１Ｐ１との間で障害が生じた場合に行われる処理を示す。
【図３１】図３１は、図３０に示した障害から回復した場合に行われる処理を示す。
【図３２】図３２は、図３１に示した処理の続きの処理を示す。
【符号の説明】
【０１３７】
２３…ＲＡＩＤマネージャ
【図１】
2010102463.tif 000003
【図２】
2010102463.tif 000004
【図３】
2010102463.tif 000005
【図４】
2010102463.tif 000006
【図５】
2010102463.tif 000007
【図６】
2010102463.tif 000008
【図７】
2010102463.tif 000009
【図８】
2010102463.tif 000010
【図９】
2010102463.tif 000011
【図１０】
2010102463.tif 000012
【図１１】
2010102463.tif 000013
【図１２】
2010102463.tif 000014
【図１３】
2010102463.tif 000015
【図１４】
2010102463.tif 000016
【図１５】
2010102463.tif 000017
【図１６】
2010102463.tif 000018
【図１７】
2010102463.tif 000019
【図１８】
2010102463.tif 000020
【図１９】
2010102463.tif 000021
【図２０】
2010102463.tif 000022
【図２１】
2010102463.tif 000023
【図２２】
2010102463.tif 000024
【図２３】
2010102463.tif 000025
【図２４】
2010102463.tif 000026
【図２５】
2010102463.tif 000027
【図２６】
2010102463.tif 000028
【図２７】
2010102463.tif 000029
【図２８】
2010102463.tif 000030
【図２９】
2010102463.tif 000031
【図３０】
2010102463.tif 000032
【図３１】
2010102463.tif 000033
【図３２】
2010102463.tif 000034