(57)【要約】【課題】  記憶システムの上位の計算機に影響を与えず、複数の記憶システム間でデータ転送又はデータの複製をする。【解決手段】  記憶システム１００Ａが、データと、前記データを管理するための更新データとを含んだデータセットを記憶するデータセット記憶領域Ｊと、制御部１０１Ａとを備える。データセット記憶領域Ｊは、第一の記憶領域＃１Ａと第二の記憶領域＃２Ａとを含んだ複数の記憶領域に分割されている。制御部１０１Ａは、第一のデータとそれの更新データである第一の更新データとを含んだ第一のデータセットを生成し、第一のデータセットのうちの少なくとも第一のデータを、第一の記憶領域＃１Ａに格納し、第二のデータとそれの更新データである第二の更新データとを含んだ第二のデータセットを生成し、第二のデータセットのうちの少なくとも第二のデータを、第一の記憶領域＃１Ａとは別の第二の記憶領域＃２Ａに格納する。【選択図】図２３
2006048358.tif 000002
【特許請求の範囲】
【請求項１】
受信したデータを記憶する他の記憶システムに接続される記憶システムにおいて、
データと、前記データを管理するための更新データとを含んだデータセットを記憶するデータセット記憶領域と、
前記データを管理するための更新データを含んだ前記データセットを生成し、前記生成したデータセットを前記データセット記憶領域に格納し、前記データセット記憶領域内のデータセットを前記他の記憶システムに送信する制御部と
を備え、
前記データセット記憶領域は、第一の記憶領域と第二の記憶領域とを含んだ複数の記憶領域に分割されており、
前記データには、第一のデータと第二のデータがあり、
前記制御部は、
前記第一のデータと前記第一のデータの更新データである第一の更新データとを含んだ第一のデータセットを生成し、
前記生成された第一のデータセットのうちの少なくとも前記第一のデータを、前記第一の記憶領域に格納し、
前記第二のデータと前記第二のデータの更新データである第二の更新データとを含んだ第二のデータセットを生成し、
前記生成された第二のデータセットのうちの少なくとも前記第二のデータを、前記第一の記憶領域とは別の記憶領域である前記第二の記憶領域に格納する、
記憶システム。
【請求項２】
請求項１記載の記憶システムにおいて、
前記複数の記憶領域の各々は、前記データセットのうちの更新データを記憶する更新データサブ領域と、前記データセットのうちの前記データを記憶するデータサブ領域とに分割されており、
前記制御部は、前記第一のデータを、第一の記憶領域の前記データサブ領域に格納し、前記第二のデータを、前記第二の記憶領域の前記データサブ領域に格納する、
記憶システム。
【請求項３】
請求項２記載の記憶システムにおいて、
前記第二のデータセットに含まれる第二のデータは、前記第一のデータセットに含まれる第一のデータの次に記憶されたデータである、
記憶システム。
【請求項４】
請求項１記載の記憶システムにおいて、
前記他の記憶システムは、前記データセットを読み出すためのデータセットリード命令を生成し、生成されたデータセットリード命令と、前記複数の記憶領域の各々を特定するための領域特定コードとを前記記憶システムに送信するようになっており、
前記制御部は、前記他の記憶システムから前記データセットリード命令及び前記領域特定コードを受信し、前記データセットリード命令に応答して、前記複数の記憶領域から更新データを読み出し、且つ、前記複数の記憶領域のうちの、前記受信した領域特定コードに対応した記憶領域から、前記更新データに対応したデータを読み出し、前記読み出した更新データとデータとのデータセットを前記他の記憶システムに送信する、
記憶システム。
【請求項５】
請求項１記載の記憶システムにおいて、
前記記憶システムが、前記データセットを記憶する１又は複数の論理ボリュームから構成されるボリュームセットを更に備え、
前記ボリュームセットは、複数のサブボリューム領域に分割されており、
前記複数の記憶領域の各々は、サブボリューム領域であり、
前記複数のサブボリューム領域の各々は、１又は複数の論理ボリュームにまたがって存在する、
記憶システム。
【請求項６】
請求項５記載の記憶システムにおいて、
前記１又は複数の論理ボリュームの各々は、前記データセットのうちの更新データを記憶する更新データ領域と、前記データセットのうちの前記データを記憶するデータ領域とに分割されており、
前記更新データ領域と前記データ領域とのうち、少なくとも前記データ領域が、複数のサブデータ領域に分割されており、
前記論理ボリュームが一つの場合、前記複数のサブボリューム領域の各々は、サブデータ領域であり、前記論理ボリュームが複数個の場合、前記複数のサブボリューム領域の各々は、前記複数の論理ボリュームがそれぞれ有する複数のサブデータ領域の集合によって構成されたサブデータ領域グループである、
記憶システム。
【請求項７】
請求項６記載の記憶システムにおいて、
前記制御部は、前記データセットに含まれるデータの格納先をサブボリューム領域毎に違える、
記憶システム。
【請求項８】
請求項５記載の記憶システムにおいて、
前記サブボリューム領域の数は、前記論理ボリュームの数以上である、
記憶システム。
【請求項９】
請求項１記載の記憶システムにおいて、
前記他の記憶システムは、前記データセットを読み出すためのデータセットリード命令を生成して前記記憶システムに送信し、
前記制御部は、前記他の記憶システムから前記データセットリード命令を受信し、前記データセットリード命令に応答して、複数のデータセットを前記データセット記憶領域から読み出して前記他の記憶システムに送信する、
記憶システム。
【請求項１０】
請求項９記載の記憶システムにおいて、
前記制御部は、前記データセット記憶領域の連続した領域から複数のデータを読み出し、且つ、前記複数のデータにそれぞれ対応した複数の更新データを前記データセット記憶領域から読み出し、前記読み出された複数のデータと複数の更新データを有する前記複数のデータセットを生成して前記他の記憶システムに送信する、
記憶システム。
【請求項１１】
請求項１記載の記憶システムにおいて、
前記記憶システムは、前記他の記憶システムと前記データセット記憶領域との間でやり取りされるデータセットが一時的に記憶されるキャッシュメモリを更に備え、
前記他の記憶システムは、前記データセットを読み出すためのデータセットリード命令を生成して前記記憶システムに送信し、
前記制御部は、前記他の記憶システムから前記データセットリード命令を受信し、前記データセットリード命令に応答して、データセットを前記データセット記憶領域から前記キャッシュメモリに読み出し、前記キャッシュメモリに読み出されたデータセットを前記他の記憶システムに送信し、次にデータセットリード命令を受信する前に、データセットを前記データセット記憶領域から前記キャッシュメモリに読み出しておき、前記次にデータセットリード命令を受信した場合に、前記キャッシュメモリに記憶されているデータセットを前記他の記憶システムに送信する、
記憶システム。
【請求項１２】
請求項１記載の記憶システムにおいて、
前記他の記憶システムが、副論理ボリュームを備えており、
前記記憶システムが、
データを記憶し、前記副論理ボリュームとペアを構成し、複数のサブ領域を備える正論理ボリュームと、
前記正論理ボリュームに関する差分情報を記憶する差分情報記憶域と
を更に備え、
前記差分情報は、前記正論理ボリュームの前記複数のサブ領域の各々に格納されるデータについて、前記副論理ボリュームとの間で差が有るか否かを表す設定値を含んでおり、
前記制御部は、前記差分情報を参照し、或るデータに対応する設定値が差分無しを表す場合、前記或るデータについては前記データセットを作成しない、
記憶システム。
【請求項１３】
データを記憶する第一の記憶システムと、
前記第一の記憶システムに接続され、前記第一の記憶システムからデータを受信して記憶する第二の記憶システムと
を有し、
前記第一の記憶システムは、
前記データと、前記データを管理するための更新データとを含んだデータセットを記憶するデータセット記憶領域と、
前記データを管理するための更新データを含んだ前記データセットを生成し、前記生成したデータセットを前記データセット記憶領域に格納し、前記データセット記憶領域内のデータセットを前記第二の記憶システムに送信する制御部と
を備え、
前記データセット記憶領域は、第一の記憶領域と第二の記憶領域とを含んだ複数の記憶領域に分割されており、
前記データには、第一のデータと第二のデータがあり、
前記制御部は、
前記第一のデータと前記第一のデータの更新データである第一の更新データとを含んだ第一のデータセットを生成し、
前記生成された第一のデータセットのうちの少なくとも前記第一のデータを、前記第一の記憶領域に格納し、
前記第二のデータと前記第二のデータの更新データである第二の更新データとを含んだ第二のデータセットとを生成し、
前記生成された第二のデータセットのうちの少なくとも前記第二のデータを、前記第一の記憶領域とは別の記憶領域である前記第二の記憶領域に格納する、
データ処理システム。
【請求項１４】
データを記憶する第一の記憶システムと、前記第一の記憶システムに接続され、前記第一の記憶システムからデータを受信して記憶する第二の記憶システムとを有するデータ処理システムによって実行される方法であって、
前記第一の記憶システムが、第一のデータと前記第一のデータの更新データである第一の更新データとを含んだ第一のデータセットを生成するステップと、
前記第一の記憶システムが、前記生成された第一のデータセットのうちの少なくとも前記第一のデータを、データ記憶領域を構成する複数の記憶領域のうちの第一の記憶領域に格納するステップと、
前記第一の記憶システムが、第二のデータと前記第二のデータの更新データである第二の更新データとを含んだ第二のデータセットとを生成するステップと、
前記第一の記憶システムが、前記生成された第二のデータセットのうちの少なくとも前記第二のデータを、前記第一の記憶領域とは別の記憶領域であって、前記複数の記憶領域に含まれる第二の記憶領域に格納するステップと、
前記第一の記憶システムが、前記第一の記憶領域内の第一のデータセットと、前記第二の記憶領域内の第二のデータセットとを第二の記憶システムに送信するステップと、
前記第二の記憶システムが、前記第一の記憶システムから前記第一のデータセットと前記第二のデータセットとを受信し、前記受信した第一のデータセットと第二のデータセットとをデータセット記憶領域に格納するステップと
を有するデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの記憶処理技術に関し、例えば、複数の記憶システム間でのデータの複製に関する。
【背景技術】
【０００２】
近年、常に顧客に対して継続したサービスを提供するために、第一の記憶システムに障害が発生した場合でもデータ処理システムがサービスを提供できるよう、記憶システム間でのデータの複製に関する技術が重要になっている。第一の記憶システムに格納された情報を第二および第三の記憶システムに複製する技術として、以下の特許文献に開示された技術が存在する。
【０００３】
米国特許５１７０４８０号公報には、第一の記憶システムに接続された第一の計算機が、第一の記憶システムに格納されたデータを、第一の計算機と第二の計算機間の通信リンクを介し、第二の計算機に転送し、第二の計算機が第二の計算機に接続された第二の記憶システムに転送する技術が開示されている。
【０００４】
【特許文献１】米国特許５１７０４８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
米国特許５１７０４８０号公報に開示された技術は、データの複製のために、第一の計算機および第二の計算機を常に使用する。第一の計算機は、通常業務を行っており、第一の計算機にかかるデータ複製処理の負荷は無視できない。さらに、複製のためのデータは、第一の計算機と第一の記憶システム間の通信リンクを使用するため、通常業務のために必要なデータ転送と衝突し、通常業務に必要なデータ参照、データ更新時間が長くなるという課題がある。
【０００６】
また、第一の記憶システムから第二の記憶システムにデータを複製することの性能を向上すること（例えば、データの複製に要する時間長を短縮すること）が望まれていると考えられる。
【０００７】
さらに、特定のイベントが発生したときに（例えば、データの複製先に空き記憶領域がなくなったときに）、第一の記憶システムから第二の記憶システムにデータを複製することが中断される場合があるが、データの複製が中断されてからそれが再開されるまでの時間は短いことが望ましいと考えられる。
【０００８】
従って、本発明の目的は、記憶システムの上位の計算機に影響を与えず、複数の記憶システム間でデータ転送又はデータの複製をするものである。本発明の更なる目的は、記憶システムと計算機との間の通信にも影響を与えないものである。
【０００９】
本発明の別の目的は、第一の記憶システムから第二の記憶システムにデータを複製することの性能を向上することにある。
【００１０】
本発明のまた別の目的は、第一の記憶システムから第二の記憶システムにデータを複製することが中断されてからそれが再開されるまでの時間を短くすることにある。
【００１１】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本発明の第一の側面に従う記憶システムは、受信したデータを記憶する他の記憶システムに接続される記憶システムであって、データと、前記データを管理するための更新データとを含んだデータセットを記憶するデータセット記憶領域と、制御部とを備える。制御部は、前記データを管理するための更新データを含んだ前記データセットを生成し、前記生成したデータセットを前記データセット記憶領域に格納し、前記データセット記憶領域内のデータセットを前記他の記憶システムに送信する。前記データセット記憶領域は、第一の記憶領域と第二の記憶領域とを含んだ複数の記憶領域に分割されている。前記データには、第一のデータと第二のデータがある。その場合、前記制御部は、前記第一のデータと前記第一のデータの更新データである第一の更新データとを含んだ第一のデータセットを生成し、前記生成された第一のデータセットのうちの少なくとも前記第一のデータを、前記第一の記憶領域に格納し、前記第二のデータと前記第二のデータの更新データである第二の更新データとを含んだ第二のデータセットを生成し、前記生成された第二のデータセットのうちの少なくとも前記第二のデータを、前記第一の記憶領域とは別の記憶領域である前記第二の記憶領域に格納する。
【００１３】
前記記憶システムも前記他の記憶システムも、記憶装置それ自体であっても良いし、複数の記憶装置を備えたシステムであっても良い。後者の場合、例えば、第一の記憶領域と第二の記憶領域は、それぞれが論理ボリュームであり、別々の記憶装置上に設けられる記憶領域であってもよい。
【００１４】
本発明の第一の実施態様では、前記複数の記憶領域の各々は、前記データセットのうちの更新データを記憶する更新データサブ領域と、前記データセットのうちの前記データを記憶するデータサブ領域とに分割されている。この場合、前記制御部は、前記第一のデータを、第一の記憶領域の前記データサブ領域に格納し、前記第二のデータを、前記第二の記憶領域の前記データサブ領域に格納する。
【００１５】
本発明の第二の実施態様では、第一の実施態様において、前記第二のデータセットに含まれる第二のデータは、前記第一のデータセットに含まれる第一のデータの次に記憶されたデータである。
【００１６】
本発明の第三の実施態様では、前記他の記憶システムは、前記データセットを読み出すためのデータセットリード命令を生成し、生成されたデータセットリード命令と、前記複数の記憶領域の各々を特定するための領域特定コードとを前記記憶システムに送信するようになっている。前記制御部は、前記他の記憶システムから前記データセットリード命令及び前記領域特定コードを受信し、前記データセットリード命令に応答して、前記複数の記憶領域から更新データを読み出し、且つ、前記複数の記憶領域のうちの、前記受信した領域特定コードに対応した記憶領域から、前記更新データに対応したデータを読み出し、前記読み出した更新データとデータとのデータセットを前記他の記憶システムに送信する。
【００１７】
本発明の第四の実施態様では、前記記憶システムが、前記データセットを記憶する１又は複数の論理ボリュームから構成されるボリュームセットを更に備える。前記ボリュームセットは、複数のサブボリューム領域に分割されている。前記複数の記憶領域の各々は、サブボリューム領域である。前記複数のサブボリューム領域の各々は、１又は複数の論理ボリュームにまたがって存在する。
【００１８】
本発明の第五の実施態様では、第四の実施態様において、前記１又は複数の論理ボリュームの各々は、前記データセットのうちの更新データを記憶する更新データ領域と、前記データセットのうちの前記データを記憶するデータ領域とに分割されている。前記更新データ領域と前記データ領域とのうち、少なくとも前記データ領域が、複数のサブデータ領域に分割されている。前記論理ボリュームが一つの場合、前記複数のサブボリューム領域の各々は、サブデータ領域であり、前記論理ボリュームが複数個の場合、前記複数のサブボリューム領域の各々は、前記複数の論理ボリュームがそれぞれ有する複数のサブデータ領域の集合によって構成されたサブデータ領域グループである。
【００１９】
本発明の第六の実施態様では、第五の実施態様において、前記制御部は、前記データセットに含まれるデータの格納先をサブボリューム領域毎に違える。
【００２０】
本発明の第七の実施態様では、第四の実施態様において、前記サブボリューム領域の数は、前記論理ボリュームの数以上である。
【００２１】
本発明の第八の実施態様では、前記他の記憶システムは、前記データセットを読み出すためのデータセットリード命令を生成して前記記憶システムに送信する。前記制御部は、前記他の記憶システムから前記データセットリード命令を受信し、前記データセットリード命令に応答して、複数のデータセットを前記データセット記憶領域から読み出して前記他の記憶システムに送信する。
【００２２】
本発明の第九の実施態様では、第八の実施態様において、前記制御部は、前記データセット記憶領域の連続した領域から複数のデータを読み出し、且つ、前記複数のデータにそれぞれ対応した複数の更新データを前記データセット記憶領域から読み出し、前記読み出された複数のデータと複数の更新データを有する前記複数のデータセットを生成して前記他の記憶システムに送信する。
【００２３】
本発明の第十の実施態様では、前記記憶システムは、前記他の記憶システムと前記データセット記憶領域との間でやり取りされるデータセットが一時的に記憶されるキャッシュメモリを更に備える。前記他の記憶システムは、前記データセットを読み出すためのデータセットリード命令を生成して前記記憶システムに送信する。この場合、前記制御部は、前記他の記憶システムから前記データセットリード命令を受信し、前記データセットリード命令に応答して、データセットを前記データセット記憶領域から前記キャッシュメモリに読み出し、前記キャッシュメモリに読み出されたデータセットを前記他の記憶システムに送信し、次にデータセットリード命令を受信する前に、データセットを前記データセット記憶領域から前記キャッシュメモリに読み出しておき、前記次にデータセットリード命令を受信した場合に、前記キャッシュメモリに記憶されているデータセットを前記他の記憶システムに送信する。
【００２４】
本発明の第十一の実施態様では、前記他の記憶システムが、副論理ボリュームを備えている。前記記憶システムが、データを記憶し、前記副論理ボリュームとペアを構成し、複数のサブ領域を備える正論理ボリュームと、前記正論理ボリュームに関する差分情報を記憶する差分情報記憶域とを更に備える。前記差分情報は、前記正論理ボリュームの前記複数のサブ領域の各々に格納されるデータについて、前記副論理ボリュームとの間で差が有るか否かを表す設定値を含んでいる。前記制御部は、前記差分情報を参照し、或るデータに対応する設定値が差分無しを表す場合、前記或るデータについては前記データセットを作成しない。
【００２５】
本発明の第二の側面に従うデータ処理システムは、データを記憶する第一の記憶システムと、前記第一の記憶システムに接続され、前記第一の記憶システムからデータを受信して記憶する第二の記憶システムとを有する。前記第一の記憶システムは、前記データと、前記データを管理するための更新データとを含んだデータセットを記憶するデータセット記憶領域と、前記データを管理するための更新データを含んだ前記データセットを生成し、前記生成したデータセットを前記データセット記憶領域に格納し、前記データセット記憶領域内のデータセットを前記第二の記憶システムに送信する制御部とを備える。前記データセット記憶領域は、第一の記憶領域と第二の記憶領域とを含んだ複数の記憶領域に分割されている。前記データには、第一のデータと第二のデータがある。前記制御部は、前記第一のデータと前記第一のデータの更新データである第一の更新データとを含んだ第一のデータセットを生成し、前記生成された第一のデータセットのうちの少なくとも前記第一のデータを、前記第一の記憶領域に格納し、前記第二のデータと前記第二のデータの更新データである第二の更新データとを含んだ第二のデータセットとを生成し、前記生成された第二のデータセットのうちの少なくとも前記第二のデータを、前記第一の記憶領域とは別の記憶領域である前記第二の記憶領域に格納する。
【００２６】
本発明の第三の側面に従うデータ処理方法は、データを記憶する第一の記憶システムと、前記第一の記憶システムに接続され、前記第一の記憶システムからデータを受信して記憶する第二の記憶システムとを有するデータ処理システムによって実行される方法であって、前記第一の記憶システムが、第一のデータと前記第一のデータの更新データである第一の更新データとを含んだ第一のデータセットを生成するステップと、前記第一の記憶システムが、前記生成された第一のデータセットのうちの少なくとも前記第一のデータを、データ記憶領域を構成する複数の記憶領域のうちの第一の記憶領域に格納するステップと、前記第一の記憶システムが、第二のデータと前記第二のデータの更新データである第二の更新データとを含んだ第二のデータセットとを生成するステップと、前記第一の記憶システムが、前記生成された第二のデータセットのうちの少なくとも前記第二のデータを、前記第一の記憶領域とは別の記憶領域であって、前記複数の記憶領域に含まれる第二の記憶領域に格納するステップと、前記第一の記憶システムが、前記第一の記憶領域内の第一のデータセットと、前記第二の記憶領域内の第二のデータセットとを第二の記憶システムに送信するステップと、前記第二の記憶システムが、前記第一の記憶システムから前記第一のデータセットと前記第二のデータセットとを受信し、前記受信した第一のデータセットと第二のデータセットとをデータセット記憶領域に格納するステップとを有する。
【発明の効果】
【００２７】
本発明によれば、記憶システムの上位の計算機に影響を与えず、複数の記憶システム間でデータ転送又はデータの複製をすることができる。
【発明を実施するための最良の形態】
【００２８】
以下、図面を参照して、本発明の一実施形態やその実施形態に基づく幾つかの実施例を説明する。その際、まず、図１〜図２２を参照して、本発明の一実施形態として、ジャーナルを用いたデータ処理の基本について説明し、その後で、図２３以降を用いて、その実施形態に基づく実施例として、そのデータ処理の応用について説明する。
【００２９】
図１は、本発明の一実施形態に係るデータ処理システムの論理的な構成の概要を示すブロック図である。
【００３０】
データ処理システム１は、ホストコンピュータ１８０と記憶システム１００Ａを接続パス１９０により接続し、記憶システム１００Ａと記憶システム１００Ａに保存されたデータの複製を保持する記憶システム１００Ｂを接続パス２００により接続した構成である。なお、以下の説明において、複製対象のデータ（換言すれば元のデータ）を保持する記憶システム１００Ａと複製データを保持する記憶システム１００Ｂとの区別を容易とするために、複製対象のデータを保持する記憶システム１００Ａを「正記憶システム１００Ａ」と呼び、複製データを保持する記憶システム１００Ｂを「副記憶システム１００Ｂ」とよび、１００Ａ及び１００Ｂのうちのいずれでも良い場合には単に「記憶システム１００」と呼ぶこととする。また、記憶システム１００の記憶領域は、分割して管理されており、分割された記憶領域を「論理ボリューム」と呼ぶこととする。
【００３１】
記憶システム１００には、複数の論理ボリューム２３０が備えられている。論理ボリューム２３０の容量および記憶システム１００内の物理的な格納位置（物理アドレス）は、記憶システム１００に接続したコンピュータ等の保守端末もしくはホストコンピュータ１８０を用いて指定できる。各論理ボリューム２３０の物理アドレスは、後述するボリューム情報４００（図４参照）に保存する。物理アドレスは、例えば、記憶システム１００内の記憶装置（例えばハードディスクドライブ）を識別する番号（記憶装置番号）と記憶装置内の記憶領域を一意に示す数値、例えば、記憶装置の記憶領域の先頭からの位置である。以下の説明では、物理アドレスは、記憶装置番号と記憶装置の記憶領域の先頭からの位置の組とする。また、以下の説明では、論理ボリューム２３０は、１つの記憶装置の記憶領域であるが、論理アドレスと物理アドレスの変換（換言すれば対応付け）により、１つの論理ボリュームを複数の記憶装置の記憶領域に対応づけることも可能である。
【００３２】
記憶システム１００が保存しているデータの参照及び更新は、論理ボリューム２３０を識別する番号（論理ボリューム番号）と記憶領域を一意に示す数値、例えば、論理ボリューム２３０の記憶領域の先頭からの位置により一意に指定することができ、以下、論理ボリューム番号と論理ボリューム２３０の記憶領域の先頭からの位置（論理アドレス内位置）の組を論理アドレスとよぶ。
【００３３】
以下の説明において、複製対象のデータと複製データとの区別を容易とするために、複製対象データが格納される論理ボリュームを「正論理ボリューム」と呼び、複製データが格納される論理ボリュームを「副論理ボリューム」とよぶこととする。また、一対の正論理ボリュームと副論理ボリュームを「ペア」とよぶ。正論理ボリュームと副論理ボリュームの関係および状態等は、後述するパス情報５００（図５参照）に含まれる。
【００３４】
論理ボリューム２３０間のデータの更新順序を守るために、グループという管理単位が設けられる。例えば、ホストコンピュータ１８０が、正論理ボリューム（ＤＡＴＡ１）２３０内の第一データを更新し、その後、第一データを読み出し、第一データの数値を用いて、正論理ボリューム（ＤＡＴＡ２）２３０内の第二データを更新する処理を行うとする。正論理ボリューム（ＤＡＴＡ１）２３０から副論理ボリューム（ＣＯＰＹ１）２３０へのデータ複製処理と、正論理ボリューム（ＤＡＴＡ２）２３０から副論理ボリューム（ＣＯＰＹ２）２３０へのデータ複製処理とが独立に行われる場合、副論理ボリューム（ＣＯＰＹ１）２３０への第一データの複製処理より前に、副論理ボリューム（ＣＯＰＹ２）２３０への第二データの複製処理が行われる場合がある。副論理ボリューム（ＣＯＰＹ２）２３０への第二データの複製処理と副論理ボリューム（ＣＯＰＹ１）２３０への第一データの複製処理との間に、故障等により副論理ボリューム（ＣＯＰＹ１）２３０への第一データの複製処理が停止した場合、副論理ボリューム（ＣＯＰＹ１）２３０と副論理ボリューム（ＣＯＰＹ２）２３０のデータの整合性がなくなる。このような場合にも、副論理ボリューム（ＣＯＰＹ１）２３０と副論理ボリューム（ＣＯＰＹ２）２３０のデータの整合性を保つために、データの更新順序を守る必要のある論理ボリューム２３０は、同じグループに登録され、データの更新毎に、後述するグループ情報６００（図６参照）の更新番号が割り当てられ、更新番号順に、副論理ボリュームへのデータ複製処理が行われる。例えば、図１では、正記憶システム１００Ａの論理ボリューム（ＤＡＴＡ１）２３０と論理ボリューム（ＤＡＴＡ２）２３０がグループ１を構成する。論理ボリューム（ＤＡＴＡ１）２３０の複製である論理ボリューム（ＣＯＰＹ１）２３０と論理ボリューム（ＤＡＴＡ２）２３０の複製である論理ボリューム（ＣＯＰＹ２）２３０は、副記憶システム１００Ｂ内でグループ１を構成する。
【００３５】
正論理ボリュームのデータを更新する場合、副論理ボリュームのデータを更新するために、正記憶システム１００Ａが、後述するジャーナルを作成し、正記憶システム１００Ａ内の論理ボリューム２３０に保存する。本実施形態では、グループ毎にジャーナルのみを保存する論理ボリューム（以下、「ジャーナル論理ボリューム」とよぶ）２３０が備えられる。図１では、正記憶システム１００Ａのグループ１に、ジャーナル論理ボリューム（ＪＮＬ１）２３０が割り当てられ、副記憶システム１００Ｂのグループ１にも、ジャーナル論理ボリューム（ＪＮＬ２）２３０が割り当てられる。
【００３６】
ジャーナル論理ボリューム（ＪＮＬ２）２３０は、正記憶システム１００Ａから副記憶システム１００Ｂに転送されたジャーナルを保存する。ジャーナルをジャーナル論理ボリューム（ＪＮＬ２）２３０に保存することにより、例えば、副記憶システム１００Ｂの負荷が高い場合、ジャーナル受信時に副論理ボリューム１００Ｂのデータ更新を行わず、時間が経って、副記憶システム１００Ｂの負荷が低くなった時に、副論理ボリューム１００Ｂのデータを更新することができる。さらに、接続パス２００が複数本ある場合、正記憶システム１００Ａから副記憶システム１００Ｂへのジャーナルの転送を多重に行い、接続パス２００の転送能力を有効に利用することができる。更新順番を守るため、副記憶システム１００Ｂに多くのジャーナルが溜まる可能性があるが、副論理ボリュームのデータ更新に直ぐに使用できないジャーナルは、ジャーナル論理ボリューム（ＪＮＬ２）２３０に退避することにより、後述するキャッシュメモリを開放することができる。
【００３７】
ジャーナルは、ジャーナル論理ボリュームとは別の論理ボリューム（例えば正論理ボリューム又は副論理ボリューム）に格納されたライトデータ（と同一のライトデータと、更新情報とを含んでいる。「ライトデータ」とは、ホストコンピュータ１８０からライト命令と共に送信された書込み対象データである。「更新情報」は、そのようなライトデータを管理するための情報であり、例えば、図２１に示すように、ライト命令を受信した時刻、グループ番号、後述するグループ情報６００の更新番号、ライト命令の論理アドレス、ライトデータのデータサイズ、ライトデータを格納したジャーナル論理ボリュームの論理アドレス等の情報要素を含んでいる。更新情報は、ライト命令を受信した時刻と更新番号のどちらか一方のみを保持してもよい。ホストコンピュータ１８０からのライト命令内にライト命令の作成時刻が存在する場合は、ライト命令を受信した時刻の代わりに、当該ライト命令内の作成時刻が保持されてもよい。
【００３８】
図３と図２１を用いて、ジャーナルの更新情報の例を説明する。なお、以下、論理ボリューム２３０の記憶領域の先頭からの位置（換言すれば、先頭を基準とした位置）を便宜上「アドレス」と表記する。
【００３９】
図２１に例示する更新情報３１０によれば、１９９９年３月１７日の２２時２０分１０秒にライト命令を受信したことがわかる。また、当該ライト命令は、論理ボリューム番号が「１」である論理ボリューム２３０のアドレス７００からライトデータを書き始めることを意味する命令であり、ライトデータのデータサイズは３００であることがわかる。また、ジャーナルに含まれるライトデータは、論理ボリューム番号が「４」であるジャーナル論理ボリューム２３０のアドレス１５００から書き始められることがわかる。また、論理ボリューム番号が「１」である論理ボリューム２３０はグループ１に属し、グループ１のデータ複製開始から４番目のデータ更新であることがわかる。
【００４０】
ジャーナル論理ボリュームは、例えば、図３に示すように、更新情報を格納する記憶領域（更新情報領域）と、ライトデータを格納する記憶領域（ライトデータ領域）に分割して使用する（なお、「＃４」という記載は、論理ボリューム番号が「４」であることを意味する）。更新情報領域には、更新情報領域の先頭から、更新番号の順に更新情報が格納され、更新情報領域の終端に達すると、次の更新番号が更新情報領域の先頭から格納される。ライトデータ領域には、ライトデータ領域の先頭から順にライトデータが格納され、ライトデータ領域の終端に達すると、次のライトデータがライトデータ領域の先頭から格納される。更新情報領域およびライトデータ領域の大きさの比は、固定値でもよいし、保守端末あるいはホストコンピュータ１８０等の特定の端末により設定変更可能としてもよい。これらの情報は、後述するポインタ情報７００（図７参照）内に含めることができる。以下の説明では、ジャーナル論理ボリュームは、更新情報領域とライトデータ領域とに分割して使用されるが、論理ボリュームの先頭から、ジャーナル、つまり、更新情報とライトデータのセットを連続に格納する方式が採用されてもよい。
【００４１】
さて、図１を用いて、正記憶システム１００Ａの正論理ボリュームへのデータ更新を副記憶システム１００Ｂの副論理ボリュームに反映する動作の一例について概説する。
【００４２】
（１）正記憶システム１００Ａは、ホストコンピュータ１８０から正論理ボリューム（ＤＡＴＡ１）２３０内のデータに対するライト命令を受信すると、後述する命令受信処理２１０およびリードライト処理２２０によって、正論理ボリューム（ＤＡＴＡ１）２３０内のデータ更新と、ジャーナル論理ボリューム（ＪＮＬ１）２３０にジャーナルの保存を行う(図１の２７０)。
【００４３】
（２）副記憶システム１００Ｂは、後述するジャーナルリード処理２４０によって、正記憶システム１００Ａからジャーナルをリードし、リードライト処理２２０によって、ジャーナル論理ボリューム（ＪＮＬ２）２３０にジャーナルを保存する(図１の２８０)。
【００４４】
（３）正記憶システム１００Ａは、副記憶システム１００Ｂからジャーナルをリードする命令を受信すると、後述する命令受信処理２１０およびリードライト処理２２０によって、ジャーナル論理ボリューム（ＪＮＬ１）２３０からジャーナルを読み出し、副記憶システム１００Ｂに送信する(図１の２８０)。
【００４５】
（４）副記憶システム１００Ｂは、後述するリストア処理２５０およびリードライト処理２２０によって、ポインタ情報７００を用いて、更新番号の昇順に、ジャーナル論理ボリューム（ＪＮＬ２）２３０からジャーナルを読み出し、副論理ボリューム（ＣＯＰＹ１）２３０のデータを更新する(図１の２９０)。
【００４６】
図２は、正記憶システム１００Ａの構成例を示すブロック図である。以下、説明の便宜上、正記憶システム１００Ａも副記憶システム１００Ｂも同様の構成とし、正記憶システム１００Ａを代表的に例に採り、記憶システム１００の構成を説明する。しかし、正記憶システム１００Ａと副記憶システム１００Ｂが必ずしも同様の構成でなくても良い。
【００４７】
正記憶システム１００Ａは、例えばRAID（Redundant Array of Independent Disks）システムのようなディスクアレイシステムである。正記憶システム１００Ａは、例えば、正記憶システム１００Ａが行う処理を制御する制御サブシステム１０１と、RAIDグループ２１０と、サービスプロセッサ（SVP）２８１とを備える。制御サブシステム１０１は、例えば、複数のＤＫＡ（以下、ＤＫＡ）１２０と、複数のチャネルアダプタ（以下、ＣＨＡ）１１０と、キャッシュメモリ１３０と、共有メモリ１４０と、スイッチング制御部２７０とを備える。
【００４８】
RAIDグループ２１０は、複数の記憶装置１５０を含んでおり、例えば、RAID１やRAID５等のRAIDに基づく冗長記憶を提供する。各記憶装置１５０は、例えば、ハードディスクドライブ（或いはハードディスクそれ自体）、半導体メモリ装置、光磁気ディスクドライブ（或いは光磁気ディスクそれ自体）等の記憶デバイスから構成することができる。各記憶装置１５０が提供する物理的な記憶領域上には、論理的な記憶領域である論理ボリューム２３０を少なくとも一つ以上設定可能である。論理ボリューム２３０には、ホストコンピュータ１８０から利用される多数のデータが記憶される。また、別の論理ボリューム２３０には、制御情報等を格納し、システム領域として利用することもできる。なお、記憶装置１５０は、その全てが正記憶システム１００Ａの筐体内に位置する必要はない。例えば、他の記憶システム（不図示）が有する論理ボリュームを、正記憶システム１００Ａの論理ボリュームとして使用することもできる。以下の説明では、論理ボリュームを「ボリューム」と省略して記載する場合がある。
【００４９】
各ＤＫＡ１２０は、各記憶装置１５０との間のデータ授受を制御するものである。各ＤＫＡ１２０は、例えば、CPU、ROM、RAM等を含んだマイクロコンピュータシステムとして構成される。各ＤＫＡ１２０は、正記憶システム１００Ａ内に複数設けられる。ＤＫＡ１２０は、例えば、SCSIやiSCSI等に基づいて、記憶装置１５０との間でブロックレベルのデータ転送を行う。
【００５０】
複数のＣＨＡ１１０の各々は、ＤＫＡ１２０と同様に、マイクロコンピュータシステムとして構成可能である。複数のＣＨＡ１１０には、ホストコンピュータ１８０と接続パス１９０を介してデータ通信を行う１以上の複数のホストＣＨＡ１１０Ａと、他の記憶システム１００と接続パス２００を介してデータ通信を行う１以上のシステムＣＨＡ１１０Ｂとが含まれている。なお、接続パス１９０及び２８０の少なくとも一方は、通信ネットワークであっても良いし、専用のパスラインであっても良い。また、ホストＣＨＡ１１０Ａは、ホストコンピュータ１８０の種類（例えば、サーバかメインフレームか等）に応じて、それぞれ用意されてもよい。
【００５１】
キャッシュメモリ１３０は、例えば、揮発または不揮発の半導体メモリから構成することができる。キャッシュメモリ１３０は、ホストコンピュータ１８０からのライトデータ（論理ボリュームに書き込まれるデータ）を記憶する。また、キャッシュメモリ１３０は、論理ボリューム２３０から読み出されたデータ（以下、リードデータ）を記憶する。
【００５２】
共有メモリ１４０は、例えば、不揮発または揮発の半導体メモリから構成することができる。共有メモリ１４０は、例えば、ホストコンピュータ１８０から受信した各種コマンドや、正記憶システム１００Ａの制御に使用する制御情報等を記憶する。コマンドや制御情報等は、複数の共有メモリ１４０によって、冗長記憶されてもよい。なお、キャッシュメモリ１３０と共有メモリ１４０とは、それぞれ別々のメモリとして構成することもできるし、あるいは、一つのメモリの一部をキャッシュメモリ領域として使用し、残りを共有メモリ領域として使用することもできる。
【００５３】
スイッチング制御部２７０は、各ＤＫＡ１２０と、ホストＣＨＡ１１０Ａと、システムＣＨＡ１１０Ｂと、キャッシュメモリ１３０と、共有メモリ１４０とを、それぞれ相互に接続するものである。スイッチング制御部２７０は、例えば、超高速クロスバスイッチ等から構成することができる。
【００５４】
ＳＶＰ２８１は、例えば内部ネットワーク（例えばＬＡＮ）２８２を介して、正記憶システム１００Ａ内の各部の状態を収集し監視する。SVP２８０は、収集した内部状態の情報を生データのままで、あるいは、統計処理したデータとして、外部の管理端末（不図示）に出力する。SVP２８０が収集可能な情報としては、例えば、装置構成、電源アラーム、温度アラーム、入出力速度等が挙げられる。システム管理者は、管理端末からSVP２８０を介して、RAID構成の設定変更や、各種パッケージ（例えば、ＣＨＡ１１０やＤＫＡ１２０）の閉塞処理等を行うことができる。
【００５５】
次に、正記憶システム１００Ａが行う処理の一例について説明する。ホストＣＨＡ１１０Ａは、接続パス１９０を介して、ホストコンピュータ１８０からライト命令及びライトデータを受信する。受信されたライト命令は共有メモリ１４０に記憶され、受信されたライトデータはキャッシュメモリ１３０に記憶される。ＤＫＡ１２０は、共有メモリ１４０を随時参照している。ＤＫＡ１２０は、共有メモリ１４０に記憶されている未処理のライト命令を発見すると、このライト命令に従って、キャッシュメモリ１３０からライトデータを読み出し、アドレス変換等を行う。ＤＫＡ１２０は、ライト命令によって指定された論理ボリューム２３０を構成する各記憶装置１５０に、ライトデータを記憶させる。
【００５６】
ホストコンピュータ１８０からのリード命令を処理する場合を説明する。ホストＣＨＡ１１０Ａは、ホストコンピュータ１８０からリード命令を受信すると、このリード命令を共有メモリ１４０に記憶させる。ＤＫＡ１２０は、共有メモリ１４０内で未処理のリード命令を発見すると、このリード命令によって指定された論理ボリューム２３０を構成する各記憶装置１５０からデータを読み出す。ＤＫＡ１２０は、読み出したデータをキャッシュメモリ１３０に記憶させる。また、ＤＫＡ１２０は、要求されたデータの読出しが完了した旨を、共有メモリ１４０を介して、ホストＣＨＡ１１０Ａに通知する。ホストＣＨＡ１１０Ａは、キャッシュメモリ１３０からデータを読み込み、ホストコンピュータ１８０に送信する。
【００５７】
正記憶システム１００Ａと副記憶システム１００Ｂとの間で接続パス２００（リモートコピーラインと呼んでも良い）を介して行われるデータ複製（以下、「リモートコピー」と呼ぶ場合がある）の一例について説明する。リモートコピーは、ホストコンピュータ１８０からのライト命令或いはリード命令ではなく、記憶システム１００Ａ、１００Ｂ間で送受信されるライト命令或いはリード命令に応答して行われるものであり、ホストコンピュータ１８０を不要としたデータ複製処理である。
【００５８】
具体的には、例えば、正記憶システム１００Ａの制御サブシステム１０１Ａは、副論理ボリューム（ＣＯＰＹ１）２３０とペアを構成する正論理ボリューム（ＤＡＴＡ１）２３０にライトデータを書き込む場合、そのライトデータとそれのライト命令とを、接続パス２００を介して副記憶システム１００Ｂに送信する。これにより、データの更新と同期して、更新後のデータが副記憶システム１００Ｂに格納される。
【００５９】
また、例えば、正記憶システム１００Ａの制御サブシステム１０１Ａは、正論理ボリューム（ＤＡＴＡ１）２３０を更新する都度に、上述したジャーナルを生成してジャーナル論理ボリューム（ＪＮＬ１）２３０に格納し、副記憶システム１００Ｂからリード命令を受けた場合（或いは、自分がライト命令を副記憶システム１００Ｂに発行した場合）には、ジャーナル論理ボリューム（ＪＮＬ１）２３０内のジャーナルを接続パス２００を介して副記憶システム２００Ｂに送信する。これにより、正記憶システム１００Ａにおけるジャーナルの格納とは非同期で、そのジャーナルが副記憶システム１００Ｂに格納される。また、そのジャーナルを用いたリストア処理が副記憶システム１００Ｂで行われることにより、副論理ボリューム（ＣＯＰＹ１）２３０が正論理ボリューム（ＤＡＴＡ１）２３０の複製となる。
【００６０】
以上が、本実施形態における記憶システム１００の構成例である。なお、言うまでも無いが、記憶システム１００は、上述した構成に限定する必要は無い。例えば、制御サブシステム１０１は、上記の構成に限らず、例えば、制御情報やライトデータ等を記憶することができるメモリと、ホストコンピュータに対するインターフェース装置（以下、「Ｉ／Ｆ」と略記）と、他の記憶システムに対するＩ／Ｆと、記憶装置１５０に対するＩ／Ｆと、メモリ上の情報に基づきそれらのＩ／Ｆを介した通信等を制御する制御部（例えばＣＰＵ）とにより構成されてもよい。また、記憶システム１００では、ホストコンピュータ１８０（もしくは、他の記憶システム）からＣＨＡ１１０及びスイッチング制御部２７０を介してキャッシュメモリ１３０へ行う第一データ転送や、キャッシュメモリ１３０からスイッチング制御部２７０及びＣＨＡ１１０を介してホストコンピュータ（もしくは、他の記憶システム）へ行う第二データ転送は、第一データ転送を制御するＣＨＡ１１０と第二データ転送を制御するＣＨＡ１１０とが異なれば、及び／又は、データの転送元と転送先となるキャッシュが異なれば（例えば、転送元のキャッシュメモリアドレスと転送先のキャッシュメモリアドレスとが異なれば）、同時に行うことができる。同様に、記憶システム１００では、記憶装置１５０からＤＫＡ１２０及びスイッチング制御部２７０を介してキャッシュメモリ１３０へ行う第三データ転送や、キャッシュメモリ１３０からスイッチング制御部２７０及びＤＫＡ１２０を介して記憶装置１５０へ行う第四データ転送は、第三データ転送を制御するＤＫＡ１２０と第四データ転送を制御するＤＫＡ１２０とが異なれば、及び／又は、データの転送元と転送先となるキャッシュが異なれば（例えば、転送元のキャッシュメモリアドレスと転送先のキャッシュメモリアドレスとが異なれば）、同時に行うことができる。また、上述した第一データ転送での転送先又は第二データ転送での転送元と、第三データ転送での転送先及び／又は第四データ転送での転送元とが異なれば、第一データ転送又は第二データ転送と、第三データ転送及び／又は第四データ転送とを同時に行うことができる。また、上記のような同時転送を行うために、各転送経路（例えば、CHA１１０とスイッチング制御部２７０との間の転送経路、DKA１２０とスイッチング制御部２７０との間の転送経路、スイッチング制御部２７０とキャッシュメモリ１３０との間の転送経路）には、適切な帯域（転送速度）が必要となる。例えば、１つのスイッチング制御部２７０が、２つのCHA１１０と、２つのDKA１２０と、２つのキャッシュメモリ１３０とに接続されている場合、スイッチング制御部２７０とキャッシュメモリ１３０との間の帯域は、CHA１１０（又はDKA１２０）とスイッチング制御部２７０との間の帯域の１倍以上でなければ、多重伝送のメリットはなく、２倍以上の帯域があることが望ましい。また、記憶装置１５０の書込み速度や読出し速度、及び、キャッシュメモリ１３０の書込み速度や読出し速度は、記憶装置１５０とキャッシュメモリ１３０との間のパスの転送速度に比べて速い速度であり、且つ、互いにアンダーランエラーやオーバーランエラーが生じないような速度になっているのが好ましい。
【００６１】
ところで、ＣＨＡ１１０及びＤＫＡ１２０から参照可能なメモリ、例えば、共有メモリ１４０には、制御情報の一種として、ボリューム情報４００、パス情報５００、グループ情報６００及びポインタ情報７００が格納される。以下、それらについて説明する。
【００６２】
図４は、ボリューム情報４００の構成例を示す。
【００６３】
ボリューム情報４００は、複数の論理ボリューム２３０を管理するための情報であり、例えば、各論理ボリューム毎に対応付けられた論理ボリューム番号、ボリューム状態、フォーマット形式、容量（例えば単位はギガバイト）、ペア番号及び物理アドレスを情報要素として含んでいる。
【００６４】
各論理ボリューム毎のボリューム状態は、その論理ボリュームの状態を表す情報要素であり、例えば、“正常”、“正”、“副”、“異常”、又は“未使用”などで表すことができる。ボリューム状態が“正常”もしくは“正”である論理ボリューム２３０は、ホストコンピュータ１８０から正常にアクセス可能な論理ボリューム２３０である。ボリューム状態が“副”である論理ボリューム２３０は、ホストコンピュータ１８０からのアクセスが許可されてもよい論理ボリューム２３０である。ボリューム状態が“正”である論理ボリューム２３０は、データの複製が行われている論理ボリューム（つまり正論理ボリューム）２３０である。ボリューム状態が“副”である論理ボリューム２３０は、複製に使用されている論理ボリューム（つまり副論理ボリューム）２３０である。ボリューム状態が“異常”の論理ボリューム２３０は、障害により正常にアクセスできない論理ボリューム２３０である。ここで言う「障害」とは、例えば、論理ボリューム２３０を保持するディスクドライブ１１０の故障である。ボリューム状態が“未使用”の論理ボリューム２３０は、使用していない論理ボリューム２３０であることを示す。
【００６５】
各論理ボリューム毎のペア番号は、正論理ボリュームと副論理ボリュームとのペアを特定するための番号である。すなわち、各論理ボリューム毎のペア番号は、その論理ボリュームに対応したボリューム状態が“正”もしくは“副”の場合に有効であり、後述するパス情報５００を特定するためのペア番号である。
【００６６】
図４に例示するボリューム情報４００によれば、例えば、論理ボリューム番号が「１」である論理ボリューム２３０は、フォーマット形式がＯＰＥＮ３であり、記憶容量が３ＧＢであり、記憶装置番号が「１」である記憶装置１５０の記憶領域の先頭からデータが格納されており、アクセス可能であり、正論理ボリューム（すなわち、データの複製対象）であることがわかる。なお、ボリューム情報４００には、そのボリューム情報４００を備える記憶システム１００内の複数の論理ボリューム２３０のみならず、その記憶システム１００が接続パス２００を介して接続されている他の記憶システム１００内の一以上の論理ボリューム２３０に関する情報が登録されていても良い。
【００６７】
図５は、パス情報５００の構成例を示す。
【００６８】
パス情報５００は、ペアを管理するための情報であり、例えば、各ペア毎に対応付けられたペア番号、ペア状態、正記憶システム番号、正論理ボリューム番号、副記憶システム番号、副論理ボリューム番号、グループ番号及びコピー済みアドレスを情報要素として含んでいる。
【００６９】
各ペア毎のペア状態は、そのペアの状態を示す情報要素であり、例えば、“正常”、“異常”、“未使用”,“コピー未”、又は“コピー中”などで表すことができる。ペア状態“正常”とは、正論理ボリューム２３０のデータ複製が正常に行われていることを示す。ペア状態“異常”とは、障害により正論理ボリューム２３０の複製が行えないことを示す。ここで言う「障害」とは、例えば、接続パス２００の断線などである。ペア状態“未使用”とは、そのペア状態に対応するペア番号の情報は有効でないことを示す。ペア状態“コピー中”とは、後述する初期コピー処理中であることを示す。ペア状態“コピー未”とは、後述する初期コピー処理が未だ行われていないことを示す。
【００７０】
各ペア毎の正記憶システム番号は、そのペアを構成する正論理ボリューム２３０を保持する正記憶システム１００Ａを特定するための番号である。
【００７１】
各ペア毎の副記憶システム番号は、そのペアを構成する副論理ボリューム２３０を保持する副記憶システム１００Ｂを特定するための番号である。
【００７２】
各ペア毎のグループ番号は、このパス情報５００を備える記憶システム１００が正記憶システム１００Ａの場合は、そのペアを構成する正論理ボリューム２３０が属するグループのグループ番号となり、このパス情報５００を備える記憶システム１００が副記憶システムの場合は、そのペアを構成する副論理ボリューム２３０が属するグループのグループ番号となる。
【００７３】
各ペア毎のコピー済みアドレスについては、後述する初期コピー処理にて説明する。
【００７４】
図５に例示したパス情報５００によれば、例えば、ペア番号が「１」であるペアは、論理ボリューム番号が「１」である正論理ボリュームと、論理ボリューム番号が「１」である副論理ボリュームとによって構成されているペアであり、正常にデータ複製処理が行われていることがわかる。
【００７５】
図６は、グループ情報６００の構成例を示す。
【００７６】
グループ情報６００は、複数の論理ボリューム２３０によって構成される一以上のグループを管理するための情報であり、例えば、各グループ毎に対応付けられたグループ番号、グループ状態、ペア集合、ジャーナル論理ボリューム番号及び更新番号を情報要素として含んでいる。
【００７７】
各グループ毎のグループ状態は、そのグループに関する状態を表す情報要素であり、例えば、“正常”、“異常”、“未使用”などで表すことができる。グループ状態“正常”は、それに対応付けられているペア集合から特定される少なくとも一つのペアのペア状態が“正常”であることを示す。グループ状態“異常”は、それに対応付けられているペア集合から特定される全てのペアのペア状態が“異常”であることを示す。グループ状態“未使用”は、対応するグループのグループ番号の情報が有効でないことを示す。
【００７８】
各グループ毎のペア集合は、そのグループにおける各論理ボリュームが構成するペアのペア番号を含む。各ペア集合は、このグループ情報６００を有する記憶システム１００が正記憶システム１００Ａの場合、そのペア集合に対応したグループに属する全ての正論理ボリュームにそれぞれ対応した全てのペア番号を含む。一方、各ペア集合は、このグループ情報６００を有する記憶システム１００が副記憶システム１００Ｂの場合、そのペア集合に対応したグループに属する全ての副論理ボリュームにそれぞれ対応した全てのペア番号を含む。
【００７９】
各グループ毎のジャーナル論理ボリューム番号は、そのグループに属するジャーナル論理ボリュームを特定するための番号を示す。
【００８０】
各グループ毎の更新番号は、ジャーナルの更新情報にセットされる番号であり、副記憶システム１００Ｂにて、データの更新順を守るために使用するものである。各グループ毎の更新番号は、初期値は１であるが、例えば、その後、或るグループ内の正論理ボリュームにデータの書き込みが行われると、そのグループに対応した更新番号のみに１が加えられる。
【００８１】
図６に例示したグループ情報６００が、例えば、正記憶システム１００Ａに備えられているグループ情報であるとすると、このグループ情報によれば、例えば、グループ番号が「１」であるグループには、ペア番号が「１」であるペアを構成する正論理ボリュームと、ペア番号が「２」であるペアを構成する正論理ボリュームと、論理ボリューム番号が「４」であるジャーナル論理ボリュームとが含まれていることがわかる。また、グループ番号が「１」であるグループについて、正常にデータの複製処理が行われていることもわかる。
【００８２】
図７は、ポインタ情報７００の構成例を示す。図８は、図７に例示したポインタ情報７００から特定される内容を示す。
【００８３】
図７に示すように、ポインタ情報７００は、各グループ毎に用意される情報であって、対応するグループに含まれているジャーナル論理ボリュームを管理するための情報である。ポインタ情報７００は、例えば、更新情報領域先頭アドレス、ライトデータ領域先頭アドレス、更新情報最新アドレス、更新情報最古アドレス、ライトデータ最新アドレス、ライトデータ最古アドレス、リード開始アドレス及びリトライ開始アドレスを情報要素として含む。
【００８４】
更新情報領域先頭アドレスは、ジャーナル論理ボリュームの更新情報を格納する記憶領域（更新情報領域）の先頭の論理アドレスである。
【００８５】
ライトデータ領域先頭アドレスは、ジャーナル論理ボリュームのライトデータを格納する記憶領域（ライトデータ領域）の先頭の論理アドレスである。
【００８６】
更新情報最新アドレスは、次にジャーナルを格納する場合に、そのジャーナル中の更新情報の保存に使用される先頭の論理アドレス（すなわち、次のジャーナル中の更新情報をどこから書き始めるかを表す情報）である。
【００８７】
更新情報最古アドレスは、最古の（更新番号が小さい）ジャーナルの更新情報を保存する領域における先頭の論理アドレスである。
【００８８】
ライトデータ最新アドレスは、次にジャーナルを格納する場合に、そのジャーナル中のライトデータの保存に使用する先頭の論理アドレス（すなわち、次のジャーナル中のライトデータをどこから書き始めるかを表す情報）である。
【００８９】
ライトデータ最古アドレスは、最古の（更新番号が小さい）ジャーナル中のライトデータを保存する領域における先頭の論理アドレスである。
【００９０】
リード開始アドレスとリトライ開始アドレスは、正記憶システム１００Ａのみで使用される情報要素であって、後述するジャーナルリード受信処理にて使用される。リード開始アドレスとリトライ開始アドレスについての詳細な説明は後述する。
【００９１】
図７および図８に例示したポインタ情報７００によれば、ジャーナルの更新情報を保存する領域（更新情報領域）は、ジャーナル論理ボリューム＃４のアドレス０（先頭）からアドレス６９９までの範囲であり、ジャーナルのライトデータを保存する領域（ライトデータ領域）は、ジャーナル論理ボリューム＃４のアドレス７００からアドレス２６９９までの範囲であることがわかる。また、或るジャーナルの更新情報は、ジャーナル論理ボリューム＃４のアドレス２００からアドレス４９９の範囲内に保存されており、その次のジャーナルの更新情報は、ジャーナル論理ボリューム＃４のアドレス５００から書き込まれることがわかる。また、上記或るジャーナルのライトデータは、ジャーナル論理ボリューム＃４のアドレス１３００からアドレス２１９９の範囲内に保存されており、その次のジャーナルのライトデータは、ジャーナル論理ボリューム＃４のアドレス２２００から書き込まれることがわかる。
【００９２】
以上が、ポインタ情報７００の構成例である。本実施形態の説明では、１つのグループに１つのジャーナル論理ボリュームを割り当てる形態を例に採っているが、１つのグループに複数のジャーナル論理ボリュームが割り当てられてもよい。具体的には、例えば、１つのグループに２つのジャーナル論理ボリュームを割り当て、ジャーナル論理ボリューム毎にポインタ情報７００を設け（又は、ポインタ情報７００に複数のジャーナル論理ボリュームに関する情報要素を含め）、交互にジャーナルが格納されてもよい。これにより、ジャーナルのハードディスク１５０への書き込みが分散でき、性能の向上が見込める。さらに、ジャーナルのリード性能も向上する。別の具体例としては、１つのグループに２つのジャーナル論理ボリュームを割り当て、通常は、一方のジャーナル論理ボリュームのみを使用し、他方のジャーナル論理ボリュームは、使用中の一方のジャーナル論理ボリュームの性能が低下した場合に使用されるようにしてもよい。性能が低下する例としては、ジャーナル論理ボリュームが、複数の記憶装置１５０から構成され、ＲＡＩＤ５の方式でデータを保持しており、それら複数の記憶装置１５０の一台が故障中の場合がある。
【００９３】
また、上述のボリューム情報４００、パス情報５００、グループ情報６００、及びポインタ情報７００等は、共有メモリ１４０に格納されていることができる。しかし、それに限られず、例えば、それらの情報が、キャッシュメモリ１３０、ＣＨＡ１１０、ＤＫＡ１２０、及び記憶装置１５０の少なくとも一つに集中してまたは分散して格納されても良い。また、各記憶システム１００は、自分のための制御情報に加えて、少なくとも自分と通信可能な別の記憶システム１００が備える制御情報（例えば、ボリューム情報４００、パス情報５００、グループ情報６００、及びポインタ情報７００のうちの少なくとも一種類）を備えていても良い。また、その場合、その別の記憶システム１００において、制御情報が更新された場合には、更新された内容が、記憶システム１００が備える制御情報であって、その別の記憶システム１００に対応した制御情報に、反映されても良い。
【００９４】
さて、次に、正記憶システム１００Ａから副記憶システム１００Ｂに対してデータ複製を開始する手順の一例を、図９を用いて説明する。
【００９５】
（１）グループ作成（ステップ９００）について説明する。
【００９６】
ユーザは、保守端末あるいはホストコンピュータ１８０を使用して、正記憶システム１００Ａのグループ情報６００を参照し、グループ状態が“未使用”のグループ番号Ａを取得する。ユーザは、ＳＶＰ２８１あるいはホストコンピュータ１８０を使用して、グループ番号Ａの指定と、グループ作成指示とを正記憶システム１００Ａに行う。グループ作成指示を受けて、正記憶システム１００Ａは、指定されたグループ番号Ａのグループ状態（正記憶システム１００Ａが有するグループ情報６００におけるグループ状態）を“正常”に変更する。
【００９７】
同様に、ユーザは、副記憶システム１００Ｂのグループ情報６００を参照し、グループ状態が“未使用”のグループ番号Ｂを取得する。ユーザは、ＳＶＰ２８１あるいはホストコンピュータ１８０を使用して、副記憶システム番号の指定と、グループ番号Ｂの指定と、グループ作成指示とを正記憶システム１００Ａに行う。正記憶システム１００Ａは、副記憶システム番号、グループ番号Ｂ及びグループ作成指示を受信し、受信したグループ番号Ｂ及びグループ作成指示を、受信した副記憶システム番号から特定される副記憶システム１００Ｂに転送する。副記憶システム１００Ｂは、グループ作成指示を受け、それに応答して、受信したグループ番号Ｂのグループ状態（副記憶システム１００Ｂが有するグループ情報６００におけるグループ状態）を“正常”に変更する。なお、一つの変形例として、ユーザは、副記憶システム１００ＢのＳＶＰ２８１あるいは副記憶システム１００Ｂに接続したホストコンピュータ１８０を使用して、グループ番号Ｂの指定と、グループ作成指示とを、副記憶システム１００Ｂに行ってもよい。
【００９８】
（２）ペア登録（ステップ９１０）について説明する。
【００９９】
ユーザは、ＳＶＰ２８１あるいはホストコンピュータ１８０を使用して、データ複製対象を示す情報の指定と、データ複製先を示す情報の指定と、ペア登録指示とを正記憶システム１００Ａに行う。「データ複製対象を示す情報」とは、例えば、データ複製対象（換言すれば、データの複製元）のグループのグループ番号Ａと、正論理ボリュームの正論理ボリューム番号とを含んだ情報である。「データ複製先を示す情報」とは、例えば、複製データを保存する副記憶システム１００Ｂの副記憶システム番号と、複製データを保存する副論理ボリュームの副論理ボリューム番号と、そのような副論理ボリュームを有するグループのグループ番号Ｂとを含んだ情報である。
【０１００】
上記ペア登録指示を受けて、正記憶システム１００Ａは、パス情報５００からペア状態“未使用”のペア番号を取得し、取得されたペア番号に対応する各種情報要素（正記憶システム１００Ａにおけるパス情報５００を構成する各種情報要素）について、以下の処理を行う。すなわち、正記憶システム１００Ａは、情報要素「ペア状態」を“未使用”から“コピー未”に変更し、情報要素「正記憶システム番号」に、正記憶システム１００Ａを示す正記憶システム番号を設定し、情報要素「正論理ボリューム番号」に、指定された正論理ボリューム番号を設定し、情報要素「副記憶システム番号」に、指定された副記憶システム番号を設定し、情報要素「副論理ボリューム番号」に、指示された副論理ボリューム番号を設定し、情報要素「グループ番号」に、指定されたグループ番号Ａを設定する。また、正記憶システム１００Ａは、自分が備えるグループ情報６００を参照し、指定されたグループ番号Ａに対応したペア集合に、前記取得されたペア番号を含め、且つ、上記設定された正論理ボリューム番号に対応したボリューム状態（その正記憶システム１００Ａが備えるボリューム情報４００におけるボリューム状態）を“正”に変更する。
【０１０１】
正記憶システム１００Ａは、正記憶システム１００Ａを示す正記憶システム番号、ユーザから指定されたグループ番号Ｂ、正論理ボリューム番号、および副論理ボリューム番号を、ユーザから指定された副記憶システム番号に対応する副記憶システム１００Ｂに送信する。副記憶システム１００Ｂは、パス情報５００から未使用のペア番号を取得し、取得されたペア番号に対応する各種情報要素（副記憶システム１００Ｂにおけるパス情報５００を構成する各種情報要素）について、以下の処理を行う。すなわち、副記憶システム１００Ｂは、情報要素「ペア状態」を“コピー未”に設定し、情報要素「正記憶システム番号」に、記憶システム１００Ａを示す正記憶システム番号を設定し、情報要素「正論理ボリューム番号」に、指示された正論理ボリューム番号を設定し、情報要素「副記憶システム番号」に、副記憶システムＢを示す副記憶システム番号を設定し、情報要素「副論理ボリューム番号」に、指示された副論理ボリューム番号を設定し、情報要素「グループ番号」に、指示されたグループ番号Ｂを設定する。また、副記憶システム１００Ｂは、自分が備えるグループ情報６００を参照し、指示されたグループ番号Ｂに対応したペア集合に、前記取得したペア番号を含め、且つ、上記設定された副論理ボリューム番号に対応したボリューム状態（その副記憶システム１００Ｂが備えるボリューム情報４００におけるボリューム状態）を“副”に変更する。
【０１０２】
以上のステップ９１０の処理は、全てのデータ複製対象のペアに対して行われる。
【０１０３】
前記の説明では、論理ボリュームのグループへの登録と、論理ボリュームのペアの設定を同時に行う処理を説明したが、それぞれが別々の時期に行われても良い。
【０１０４】
（３）ジャーナル論理ボリューム登録（ステップ９２０）について説明する。
【０１０５】
ユーザは、ＳＶＰ２８１あるいはホストコンピュータ１８０を使用して、ジャーナルの保存に使用する論理ボリューム（ジャーナル論理ボリューム）をグループに登録する指示（ジャーナル論理ボリューム登録指示）を正記憶システム１００Ａに行う。ジャーナル論理ボリューム登録指示は、例えば、グループ番号と論理ボリューム番号からなる。
【０１０６】
正記憶システム１００Ａは、指示されたグループ番号のグループ情報６００のジャーナル論理ボリューム番号に指示された論理ボリューム番号を登録する。当該論理ボリュームのボリューム情報４００のボリューム状態を“正常”に設定する。
【０１０７】
同様に、ユーザは、ＳＶＰ２８１あるいはホストコンピュータ１８０を使用して、副記憶システム１００Ｂのボリューム情報４００を参照し、副記憶システム番号と、グループ番号Ｂと、ジャーナル論理ボリュームとして使用する論理ボリューム番号とを正記憶システム１００Ａに指定し、且つ、ジャーナル論理ボリューム登録指示を正記憶システム１００Ａに対して行う。正記憶システム１００Ａは、受けたジャーナル論理ボリューム登録指示、グループ番号Ｂ及び論理ボリューム番号を、指定された副記憶システム番号から特定される副記憶システム１００Ｂに転送する。副記憶システム１００Ｂは、自分が備えるグループ情報６００を参照し、受けたグループ番号Ｂに対応した情報要素「ジャーナル論理ボリューム番号」に、受けた論理ボリューム番号を登録する。また、副記憶システム１００Ｂは、自分が備えるボリューム情報４００を参照し、上記受けた論理ボリューム番号に対応する情報要素「ボリューム状態」を“正常”に設定する。
【０１０８】
なお、ユーザは、副記憶システム１００ＢのＳＶＰ２８１あるいは副記憶システム１００Ｂに接続したホストコンピュータ１８０を使用して、グループ番号の指定と、ジャーナル論理ボリュームとして使用する論理ボリューム番号の指定と、ジャーナル論理ボリューム登録指示とを副記憶システム１００Ｂに対して行ってもよい。
【０１０９】
以上のステップ９２０の処理は、ジャーナル論理ボリュームとして使用する全ての論理ボリュームに対して行われる。なお、ステップ９１０とステップ９２０の順は不同でなくてもよい。
【０１１０】
（４）データ複製処理開始（ステップ９３０）について説明する。
【０１１１】
ユーザは、ＳＶＰ２８１あるいはホストコンピュータ１８０を使用して、データ複製処理を開始するグループ番号の指定と、データ複製処理の開始指示とを、正記憶システム１００Ａに対して行う。正記憶システム１００Ａは、自分が備えるペア情報４００を参照し、指示されたグループ番号に対応する全てのコピー済みアドレスを０に設定する。
【０１１２】
正記憶システム１００Ａは、指示されたグループ番号に対応する副記憶システム番号から特定された副記憶システム１００Ｂに、後述するジャーナルリード処理およびリストア処理の開始を指示する。
【０１１３】
正記憶システム１００Ａは、後述する初期コピー処理を開始する。
【０１１４】
（５）初期コピー終了（ステップ９４０）について説明する。
【０１１５】
初期コピーが終了した場合、正記憶システム１００Ａは、初期コピー処理の終了を、ステップ９３０で特定された副記憶システム１００Ｂに通知する。副記憶システム１００Ｂは、自分が備えるパス情報５００を参照し、指示されたグループ番号に対応する全てのペア状態（副論理ボリュームのペア状態）を“正常”に変更する。
【０１１６】
図１０は、初期コピー処理のフローチャートである。
【０１１７】
初期コピー処理では、データ複製対象の正論理ボリュームの全記憶領域に対し、パス情報５００のコピー済みアドレスを用い、記憶領域の先頭から順に、単位サイズ毎にジャーナルが作成される。コピー済みアドレスは、初期値は０であり、ジャーナルの作成毎に、作成されたデータ量が加算される。論理ボリュームの記憶領域の先頭から、コピー済みアドレスの一つ前までは、初期コピー処理にてジャーナルは作成済みである。初期コピー処理を行うことにより、正論理ボリュームの更新されていないデータを副論理ボリュームに転送することが可能となる。以下の説明では、正記憶システム１００Ａ内のホストＣＨＡ１１０Ａが処理を行うように記載しているが、代わりに、ＤＫＡ１２０が行ってもよい。
【０１１８】
（１）正記憶システム１００Ａ内のホストＣＨＡ１１０Ａは、正記憶システム１００Ａ内のグループ情報６００及びパス情報５００に基づいて、処理対象のグループに属するペアでペア状態が“コピー未”である正論理ボリューム（以下、これを「正論理ボリュームＡ」と表記する）を把握し、把握された正論理ボリュームＡに関するペア状態を“コピー中”に変更し、以下の処理を繰り返す（ステップ１０１０、１０２０）。もし、正論理ボリュームＡが存在しない場合は、ホストＣＨＡ１１０Ａは、処理を終了する（ステップ１０３０）。
【０１１９】
（２）ステップ１０２０にて、論理ボリュームＡが存在した場合、ホストＣＨＡ１１０Ａは、単位サイズ（例えば、１ＭＢ）のデータを対象にジャーナルを作成する。ジャーナル作成処理は後述する（ステップ１０４０）。
【０１２０】
（３）ホストＣＨＡ１１０Ａは、コピー済みアドレスに作成したジャーナルのデータサイズを加算する（ステップ１０５０）。
【０１２１】
（４）コピー済みアドレスが、正論理ボリュームＡの容量に達するまで、上記処理を繰り返す（ステップ１０６０）。コピー済みアドレスが、正論理ボリュームＡの容量と等しくなった場合、正論理ボリュームＡの全記憶領域に対してジャーナルを作成したため、ペア状態を“正常”に更新し、他の正論理ボリュームの処理を開始する（ステップ１０７０）。
【０１２２】
前記のフローチャートでは、正論理ボリュームを１つずつ対象とするように説明したが、複数の正論理ボリュームにそれぞれ格納されている複数のデータについて同時にジャーナルが処理されてもよい。
【０１２３】
図１１は、命令受信処理２１０の処理を説明する図であり、図１２は命令受信処理２１０のフローチャートであり、図１３はジャーナル作成処理のフローチャートである。以下、これらを用いて、正記憶システム１００Ａが、ホストコンピュータ１８０からデータ複製対象の正論理ボリューム２３０にライト命令を受信した場合の動作について説明する。また、以下の説明では、正記憶システム１００Ａの或るグループに属する正論理ボリューム及びジャーナル論理ボリュームはそれぞれ一つであるとし、且つ、その正論理ボリュームを「正論理ボリューム２３０ＰＡ」と表記し、そのジャーナル論理ボリュームを「ジャーナル論理ボリュームＪＡ」と表記する。
【０１２４】
（１）正記憶システム１００Ａ内のホストＣＨＡ１１０Ａは、ホストコンピュータ１８０からアクセス命令を受信する（ステップ１２００）。アクセス命令は、リード、ライト、後述するジャーナルリード等の命令、命令対象の論理アドレス、データ量等を含んでいる。以下、アクセス命令内の論理アドレスを論理アドレスＡ、論理ボリューム番号を論理ボリューム番号Ａ、論理ボリューム内位置を論理ボリューム内位置Ａ、データ量をデータ量Ａと言う。また、その論理ボリューム番号Ａから特定される論理ボリュームが、論理ボリュームＡであるとする。
【０１２５】
（２）ホストＣＨＡ１１０Ａは、アクセス命令を調べる（ステップ１２１０、１２１５）。ステップ１２１５の調べで、アクセス命令がジャーナルリード命令の場合は、後述するジャーナルリード受信処理が行われる（ステップ１２２０）。アクセス命令がジャーナルリード命令およびライト命令以外、例えば、リード命令の場合は、そのリード命令に応じたリード処理が行われる（ステップ１２３０）。
【０１２６】
（３）ステップ１２１０の調べで、アクセス命令がライト命令の場合は、ホストＣＨＡ１１０Ａは、ボリューム情報４００を参照し、論理ボリュームＡのボリューム状態を調べる（ステップ１２４０）。ステップ１２４０の調べで、論理ボリュームＡのボリューム状態が、“正常”もしくは“正”以外の場合は、論理ボリュームＡへのアクセスは不可能なため、ホストＣＨＡ１１０Ａは、ホストコンピュータ１８０に異常終了を報告する（ステップ１２４５）。
【０１２７】
（４）ステップ１２４０の調べで、論理ボリュームＡのボリューム状態が、“正常”、“正”のいずれかの場合は、ホストＣＨＡ１１０Ａは、キャッシュメモリ１３０（又はそのメモリ１３０上の一定サイズの記憶領域）を確保し、ホストコンピュータ１８０にデータ受信の準備ができたことを通知する。ホストコンピュータ１８０は、その通知を受け、ライトデータを正記憶システム１００Ａに送信する。ホストＣＨＡ１１０Ａは、ライトデータを受信し、当該キャッシュメモリ１３０に保存する（ステップ１２５０、図１１の１１００）。
【０１２８】
（５）ホストＣＨＡ１１０Ａは、論理ボリュームＡのボリューム状態を参照し、論理ボリュームＡがデータ複製対象かどうか（つまり正論理ボリュームかどうか）を調べる（ステップ１２６０）。ステップ１２６０の調べで、ボリューム状態が、“正”である場合は、論理ボリュームＡがデータ複製対象であるため、ホストＣＨＡ１１０Ａは、後述するジャーナル作成処理を行う（ステップ１２６５）。
【０１２９】
（６）ステップ１２６０の調べで、ボリューム状態が、“正常”である場合、もしくはステップ１２６５のジャーナル作成処理の終了後、ホストＣＨＡ１１０Ａは、論理ボリュームＡを有する記憶装置１５０にライトデータを書き込むことをＤＫＡ１２０に命令し（図１１の１１４０）、ホストコンピュータ１８０に終了報告する（ステップ１２７０、１２８０）。その後、ライトデータの書込み命令を受けたＤＫＡ１２０は、リードライト処理２２０により、論理ボリュームＡを有する記憶装置１５０にライトデータを保存する（図１１の１１１０）。
【０１３０】
次に、ジャーナル作成処理について説明する。
【０１３１】
（１）ホストＣＨＡ１１０Ａは、ボリューム情報４００、パス情報５００及びグループ情報６００に基づいて、論理ボリューム番号Ａに対応したグループ番号に属するジャーナル論理ボリューム２３０ＪＡのボリューム状態を調べる（ステップ１３１０）。ステップ１３１０の調べで、ジャーナル論理ボリュームのボリューム状態が、“異常”の場合は、ジャーナル論理ボリュームにジャーナルの格納が不可能なため、ホストＣＨＡ１１０Ａは、グループ状態を“異常”に変更し、処理を終了する（ステップ１３１５）。この場合、ホストＣＨＡ１１０Ａは、ジャーナル論理ボリュームを正常な論理ボリュームに変更する等の処理を行っても良い。
【０１３２】
（２）ステップ１３１０の調べで、ジャーナル論理ボリュームが正常である場合、ホストＣＨＡ１１０Ａは、ジャーナル作成処理を継続する。ジャーナル作成処理の内容は、初期コピー処理内の処理であるか、命令受信処理内の処理であるかによって異なる（ステップ１３２０）。ジャーナル作成処理が命令受信処理内の処理の場合は、ホストＣＨＡ１１０Ａは、ステップ１３３０からの処理を行う。ジャーナル作成処理が初期コピー処理内の場合は、ホストＣＨＡ１１０Ａは、ステップ１３７０からの処理を行う。
【０１３３】
（３）ジャーナル作成処理が命令受信処理内の処理の場合、ホストＣＨＡ１１０Ａは、ライト対象の論理アドレスＡが、初期コピー処理の処理対象となったかを調べる（ステップ１３３０）。論理ボリュームＡのペア状態が“コピー未”の場合は、後に初期コピー処理にてジャーナル作成処理が行われるため、ホストＣＨＡ１１０Ａは、ジャーナルを作成せずに処理を終了する（ステップ１３３５）。論理ボリュームＡのペア状態が“コピー中”の場合は、コピー済みアドレスが論理アドレス内位置Ａと等しいもしくは、小さい場合は、後に初期コピー処理にてジャーナル作成処理が行われるため、ホストＣＨＡ１１０Ａは、ジャーナルを作成せずに処理を終了する（ステップ１３３５）。上記以外、つまり、論理ボリュームＡのペア状態が“コピー中”かつコピー済みアドレスが論理アドレス内位置Ａ以上の場合もしくは、論理ボリュームＡのペア状態が“正常”の場合は、既に初期コピー処理が完了しているため、ホストＣＨＡ１１０Ａは、ジャーナル作成処理を継続する。
【０１３４】
（４）次に、ホストＣＨＡ１１０Ａは、ジャーナルがジャーナル論理ボリュームに格納可能であるかどうかを調べる。具体的には、ホストＣＨＡ１１０Ａは、ポインタ情報７００を用いて、更新情報領域の未使用領域の有無を調べる（ステップ１３４０）。ポインタ情報７００の更新情報最新アドレスと更新情報最古アドレスが等しい場合は、更新情報領域に未使用領域が存在しないため、ホストＣＨＡ１１０Ａは、ジャーナル作成失敗として処理を終了する（ステップ１３９０）。
【０１３５】
ステップ１３４０の調べで、更新情報領域に未使用領域が存在する場合は、ホストＣＨＡ１１０Ａは、ポインタ情報７００を用いて、ライトデータ領域にライトデータが格納できるかどうかを調べる（ステップ１３４５）。ホストＣＨＡ１１０Ａは、ライトデータ最新アドレスとデータ量Ａの和が、ライトデータ最古アドレスと等しいもしくは大きい場合は、ライトデータ領域に格納できないため、ジャーナル作成失敗として処理を終了する（ステップ１３９０）。
【０１３６】
（５）ジャーナルが格納可能である場合、ホストＣＨＡ１１０Ａは、更新番号（対象グループ（ジャーナル論理ボリュームＪＡ１が属するグループ）に対応した更新番号（グループ情報６００に含まれている更新番号））と、更新情報を格納する論理アドレスと、ライトデータを格納する論理アドレスとを取得し、更新情報をキャッシュメモリ１３０内に作成する。また、ホストＣＨＡ１１０Ａは、取得された更新番号に１を足した数値を、新たな更新番号としてグループ情報６００に設定する。更新情報を格納する論理アドレスは、ポインタ情報７００の更新情報最新アドレスであり、ホストＣＨＡ１１０Ａは、更新情報のサイズを足した数値を新たな更新情報最新アドレスとしてポインタ情報７００に設定する。ライトデータを格納する論理アドレスは、ポインタ情報７００のライトデータ最新アドレスであり、ホストＣＨＡ１１０Ａは、ライトデータ最新アドレスにデータ量Ａを足した数値を新たなライトデータ最新アドレスとしてポインタ情報７００に設定する。
【０１３７】
ホストＣＨＡ１１０Ａは、上記取得した数値とグループ番号、ライト命令を受信した時刻、ライト命令内の論理アドレスＡ、データ量Ａを更新情報に設定する（ステップ１３５０、図１１の１１２０）。例えば、図６に示すグループ情報６００、図７に示すポインタ情報７００の状態で、グループ１に属する正論理ボリューム＃１のアドレス８００の位置にデータサイズ１００のライト命令を受信した場合、図２２に例示する更新情報を作成する。グループ情報の更新番号は５、ポインタ情報の更新情報最新アドレスは６００（更新情報のサイズは１００とする）、ライトデータ最新アドレスは２３００となる。
【０１３８】
（６）ホストＣＨＡ１１０Ａは、ＤＫＡ１２０に、ジャーナルの更新情報とライトデータを記憶装置１５０に書き込むことを命令し、正常終了する（ステップ１３６０、図１１の１１３０、１１４０、１１５０）。
【０１３９】
（７）ジャーナル作成処理が、初期コピー処理内の処理の場合は、ステップ１３７０からの処理を行う。ホストＣＨＡ１１０Ａは、ジャーナルが作成可能であるかどうかを調べる。具体的には、ホストＣＨＡ１１０Ａは、ポインタ情報７００を用いて、更新情報領域の未使用領域の有無を調べる（ステップ１３７０）。ポインタ情報７００の更新情報最新アドレスと更新情報最古アドレスが等しい場合は、更新情報領域に未使用領域が存在しないため、ホストＣＨＡ１１０Ａは、ジャーナル作成失敗として処理を終了する（ステップ１３９０）。本実施形態で示した初期コピー処理の場合、ジャーナルのライトデータは、正論理ボリュームからリードし、ライトデータ領域は使用しないため、ライトデータ領域の未使用領域の確認は不要である。
【０１４０】
（８）ステップ１３７０の調べで、ジャーナルが作成可能である場合、ホストＣＨＡ１１０Ａは、更新情報に設定する数値を取得し、更新情報をキャッシュメモリ１３０内に作成する。更新番号は、対象グループのグループ情報６００から取得されたものであり、ホストＣＨＡ１１０Ａは、その更新番号に１を足した数値をグループ情報６００に新たな更新番号として設定する。更新情報を格納する論理アドレスは、ポインタ情報７００の更新情報最新アドレスの位置であり、ホストＣＨＡ１１０Ａは、更新情報のサイズを足した数値をポインタ情報７００に新たな更新情報最新アドレスとして設定する。
【０１４１】
ホストＣＨＡ１１０Ａは、上記取得した数値とグループ番号、本処理の開始時刻、初期コピー処理対象の論理アドレス、初期コピーの１回の処理量、ライトデータを格納したジャーナル論理ボリュームの論理アドレスに初期コピー処理対象の論理アドレスを、更新情報に設定する（ステップ１３８０、図１１の１１２０）。
【０１４２】
（９）ホストＣＨＡ１１０Ａは、ＤＫＡ１２０に、更新情報を記憶装置１５０に書き込むことを命令し（換言すれば、ジャーナル論理ボリューム２３０ＪＡにおける上記新たな更新情報最新アドレスから書き込むことを命令し）、正常終了する（ステップ１３８５、図１１の１１４０、１１６０）。
【０１４３】
以上が、図１１〜図１３についての説明である。なお、上記説明では、更新情報は、キャッシュメモリ１３０内に一時的に格納されるようになっているが、共有メモリ１４０内等に一時的に格納されてもよい。
【０１４４】
また、ライトデータの記憶装置１５０への書き込みは、非同期、つまり、ステップ１３６０およびステップ１３８５の直後でなくともよい。ただし、ホストコンピュータ１８０が、論理アドレスＡにライト命令を再び行った場合、ジャーナルのライトデータが上書きされるため、ホストコンピュータ１８０からライトデータを受信する前に、ジャーナルのライトデータは、更新情報のジャーナル論理ボリュームの論理アドレスに対応する記憶装置１５０に書き込む必要がある。もしくは、別のキャッシュメモリに退避し、後に更新情報のジャーナル論理ボリュームの論理アドレスに対応する記憶装置１５０に書き込みが行われてもよい。
【０１４５】
また、前述したジャーナル作成処理では、ジャーナルを記憶装置１５０（換言すればジャーナル論理ボリューム２３０ＪＡ）に保存するとしていたが、ジャーナル用に予め一定量のキャッシュメモリ１３０を用意しておき、当該キャッシュメモリを全て使用してから、記憶装置１５０にジャーナルが保存されてもよい。ジャーナル用のキャッシュメモリ量は、例えば、ＳＶＰ２８１から指定することができるようにしてもよい。
【０１４６】
また、リードライト処理２２０は、ＤＫＡ１２０が、ＣＨＡ１１０もしくは他のＤＫＡ１２０から命令を受け、その命令に応答して実施される処理である。具体的には、例えば、リードライト処理２２０は、指定されたキャッシュメモリ１３０のデータを、指定された論理アドレスに対応する記憶装置１５０内の記憶領域に書き込む処理や、指定された論理アドレスに対応する記憶装置１５０内の記憶領域から、指定されたキャッシュメモリ１３０にデータを読み込む処理等である。リードライト処理２２０は、例えば、特定のコンピュータプログラムをＤＫＡ１２０上のＣＰＵが読み込むことにより行うことができる。
【０１４７】
図１４は、ジャーナルリード命令を受信した正記憶システム１００ＡのホストＣＨＡ１１０Ａの動作（ジャーナルリード受信処理）を説明する図であり、図１５は、ジャーナルリード受信処理のフローチャートである。以下、これらを用いて、正記憶システム１００Ａが、副記憶システム１００Ｂからジャーナルリード命令を受信した場合の動作について説明する。なお、以下の説明では、正記憶システム１００Ａ内のシステムＣＨＡ１１０Ｂを「システムＣＨＡ１１０ＢＰ」と表記し、副記憶システム１００Ｂ内のシステムＣＨＡ１１０Ｂを「システムＣＨＡ１１０ＢＳ」と表記する。
【０１４８】
（１）システムＣＨＡ１１０ＢＰは、システムＣＨＡ１１０ＢＳからアクセス命令を受信する。アクセス命令は、ジャーナルリード命令であることを示す識別子、命令対象のグループ番号、リトライ指示の有無を含んでいる。以下、アクセス命令内のグループ番号をグループ番号Ａとする（ステップ１２２０、図１４の１４１０）。
【０１４９】
（２）システムＣＨＡ１１０ＢＰは、グループ情報６００を参照し、グループ番号Ａのグループ状態が“正常”であるかを調べる（ステップ１５１０）。ステップ１５１０の調べで、グループ状態が“正常”以外、例えば、“障害”の場合は、システムＣＨＡ１１０ＢＰは、システムＣＨＡ１１０ＢＳにグループ状態を通知し、処理を終了する。システムＣＨＡ１１０ＢＳは、受信したグループ状態に応じて処理を行う。例えば、グループ状態が“障害”の場合は、システムＣＨＡ１１０ＢＳは、ジャーナルリード処理を終了する（ステップ１５１５）。
【０１５０】
（３）ステップ１５１０の調べで、グループ番号Ａのグループ状態が“正常”の場合、システムＣＨＡ１１０ＢＰは、ジャーナル論理ボリュームの状態を調べる（ステップ１５２０）。ステップ１５２０の調べで、ジャーナル論理ボリュームのボリューム状態が“正常”でない場合、例えば、“障害”の場合は、システムＣＨＡ１１０ＢＰは、グループ状態を“障害”に変更し、変更後のグループ状態をシステムＣＨＡ１１０ＢＳに通知し、処理を終了する。システムＣＨＡ１１０ＢＳは、受信したグループ状態に応じて処理を行う。例えば、グループ状態が“障害”の場合は、システムＣＨＡ１１０ＢＳは、ジャーナルリード処理を終了する（ステップ１５２５）。
【０１５１】
（４）ステップ１５２０の調べで、ジャーナル論理ボリュームのボリューム状態が“正常”の場合は、システムＣＨＡ１１０ＢＰは、ジャーナルリード命令がリトライ指示かを調べる（ステップ１５３０）。
【０１５２】
（５）ステップ１５３０の調べで、ジャーナルリード命令がリトライ指示の場合、システムＣＨＡ１１０ＢＰは、前回送信したジャーナルを再度、副記憶システム１００Ｂに送信する。システムＣＨＡ１１０ＢＰは、キャッシュメモリ１３０を確保し、ＤＫＡ１２０に、ポインタ情報７００のリトライ開始アドレスから、更新情報のサイズの情報をキャッシュメモリに読み込むことを命令する（図１４の１４２０）。
【０１５３】
ＤＫＡ１２０のリードライト処理２２０（例えば、ＤＫＡ１２０のＣＰＵに読み込まれたコンピュータプログラム）は、記憶装置１５０（換言すればジャーナル論理ボリューム２３０ＪＡ）から更新情報を読み込み、キャッシュメモリ１３０に保存し、命令元であるシステムＣＨＡ１１０ＢＰにリード終了を通知する（図１４の１４３０）。
【０１５４】
システムＣＨＡ１１０ＢＰは、更新情報のリード終了の通知を受け、キャッシュメモリ１３０に保存されている更新情報から、ライトデータの論理アドレスおよびライトデータのサイズを取得し、その後、キャッシュメモリ１３０を確保し、確保されたキャッシュメモリ１３０に上記取得された論理アドレスからライトデータを読み込むことをＤＫＡ１２０に命令する（ステップ１５４０、図１４の１４４０）。
【０１５５】
ＤＫＡ１２０は、リードライト処理２２０により、記憶装置１５０（具体的には、上記命令された論理アドレス）からライトデータを読み込み、確保されたキャッシュメモリ１３０にそのライトデータを保存し、命令元であるシステムＣＨＡ１１０ＢＰにリード終了を通知する（図１４の１４５０）。
【０１５６】
システムＣＨＡ１１０ＢＰは、ライトデータのリード終了の通知を受け、更新情報とライトデータとを副記憶システム１００Ｂに送信し、ジャーナルを保持しているキャッシュメモリ１３０を開放し、処理を終了する（ステップ１５４５、図１４の１４６０）。
【０１５７】
（６）ステップ１５３０の調べで、リトライ指示でない場合、システムＣＨＡ１１０ＢＰは、送信していないジャーナルが存在するかを調べ、存在すれば、ジャーナルを副記憶システム１００Ｂに送信する。システムＣＨＡ１１０ＢＰは、ポインタ情報７００のリード開始アドレスと更新情報最新アドレスを比較する（ステップ１５５０）。
【０１５８】
リード開始アドレスが更新情報最新アドレスと等しい場合は、全てのジャーナルを副記憶システム１００Ｂに送信済みであるため、システムＣＨＡ１１０ＢＰは、副記憶システム１００Ｂに“ジャーナル無“を送信し（ステップ１５６０）、前回のジャーナルリード命令の時に、副記憶システム１００Ｂに送信したジャーナルの記憶領域を開放する（ステップ１５９０）。
【０１５９】
ジャーナルの記憶領域の開放処理では、システムＣＨＡ１１０ＢＰは、ポインタ情報７００の更新情報最古アドレスに、リトライ開始アドレスを設定する。更新情報最古アドレスがライトデータ領域先頭アドレスとなった場合は、システムＣＨＡ１１０ＢＰは、更新情報最古アドレスを０とする。システムＣＨＡ１１０ＢＰは、ポインタ情報７００のライトデータ最古アドレスを、前回のリードジャーナル命令に応じて送信したライトデータのサイズを足した数値に変更する。ライトデータ最古アドレスが、ジャーナル論理ボリュームの容量以上の論理アドレスとなった場合は、システムＣＨＡ１１０ＢＰは、ライトデータ領域先頭アドレスを減じ、補正する。
【０１６０】
（７）ステップ１５５０の調べで、未送信のジャーナルが存在する場合、システムＣＨＡ１１０ＢＰは、キャッシュメモリ１３０を確保し、ポインタ情報７００のリード開始アドレスから更新情報を上記確保されたキャッシュメモリ１３０に読み込むこと（換言すれば、リード開始アドレスから所定サイズ分の情報を読み出すこと）を、ＤＫＡ１２０に命令する（図１４の１４２０）。
【０１６１】
ＤＫＡ１２０は、その命令に応答してリードライト処理２２０を実行することにより、記憶装置１５０（換言すればジャーナル論理ボリューム２３０ＪＡ）から更新情報を読み込み、キャッシュメモリ１３０に保存し、命令元であるシステムＣＨＡ１１０ＢＰにリード終了を通知する（図１４の１４３０）。
【０１６２】
システムＣＨＡ１１０ＢＰは、更新情報のリード終了の通知を受け、読み出された更新情報から、ライトデータの論理アドレスおよびライトデータのサイズを取得し、キャッシュメモリ１３０を確保し、取得された論理アドレスから取得されたサイズ分のライトデータを上記確保されたキャッシュメモリ１３０に読み込むことをＤＫＡ１２０に命令する（ステップ１５７０、図１４の１４４０）。
【０１６３】
ＤＫＡ１２０は、リードライト処理２２０を行うことにより、その命令に従って、記憶装置１５０（換言すれば、ジャーナル論理ボリューム２３０ＪＡの上記命令された論理アドレス）からライトデータを読み込み、上記確保されたキャッシュメモリ１３０にそのライトデータを保存し、リード終了をシステムＣＨＡ１１０ＢＰに通知する（図１４の１４５０）。
【０１６４】
システムＣＨＡ１１０ＢＰは、ライトデータのリード終了の通知を受け、更新情報とライトデータを副記憶システム１００Ｂに送信（ステップ１５８０）し、ジャーナルを保持しているキャッシュメモリ１３０を開放する（図１４の１４６０）。そして、システムＣＨＡ１１０ＢＰは、ポインタ情報７００のリトライ開始アドレスにリード開始アドレスを設定し、且つ、そのリード開始アドレスに上記送信したジャーナルの更新情報サイズを足した数値をポインタ情報７００に新たなリード開始アドレスとして設定する。
【０１６５】
（８）システムＣＨＡ１１０ＢＰは、前回のジャーナルリード命令の処理時に、副記憶システム１００Ｂに送信したジャーナルの記憶領域を開放する（ステップ１５９０）。
【０１６６】
以上が、図１４〜図１５についての説明である。なお、前述したジャーナルリード受信処理では、正記憶システム１００Ａは、ジャーナルを一つずつ副記憶システム１００Ｂに送信していたが、複数のジャーナルを同時に副記憶システム１００Ｂに送信してもよい。１つのジャーナルリード命令で、送信するジャーナル数は、副記憶システム１００Ｂがジャーナルリード命令内に指定してもよいし、グループ登録の際等の所定のタイミングで、ユーザが正記憶システム１００Ａもしくは、副記憶システム１００Ｂに指定してもよい。さらに、正記憶システム１００Ａと副記憶システム１００Ｂの接続パス２００の転送能力もしくは、負荷等により、１つのジャーナルリード命令で送信するジャーナル数を、正記憶システム１００Ａ又は副記憶システム１００Ｂが動的に変更してもよい。また、ジャーナル数でなく、ジャーナルのライトデータのサイズを考慮し、ジャーナルの転送量を指定してもよい。その転送量も、動的に変更されても良い。
【０１６７】
また、前述したジャーナルリード受信処理では、ジャーナルを記憶装置１５０からキャッシュメモリ１３０に読み込んでいたが、キャッシュメモリ１３０に存在する場合は、当該処理は行わなくても良い。
【０１６８】
また、前述したジャーナルリード受信処理内のジャーナルの記憶領域の開放処理は、次のジャーナルリード命令の処理時としたが、副記憶システム１００Ｂにジャーナルを送信した直後に行われても良い。また、副記憶システム１００Ｂが、ジャーナルリード命令内に開放してよい更新番号を設定し、正記憶システム１００Ａは、その指示に従って、ジャーナルの記憶領域を開放してもよい。
【０１６９】
図１６は、ジャーナルリード命令処理２４０を説明する図であり、図１７は、ジャーナルリード命令処理２４０のフローチャートであり、図１８は、ジャーナル格納処理のフローチャートである。以下、これらを用いて、副記憶システム１００ＢのシステムＣＨＡ１１０ＢＳが、正記憶システム１００Ａからジャーナルを読み出し、そのジャーナルに基づいて、副記憶システム１００Ｂ内のジャーナル論理ボリューム（以下、それを「ジャーナル論理ボリューム２３０ＪＢ」と表記）にジャーナルを格納する動作について説明する。また、図１６では、ジャーナルリード命令処理２４０を「ＪＮＬＲＤ処理２４０」と表記する。
【０１７０】
（１）システムＣＨＡ１１０ＢＳは、ジャーナルを格納するキャッシュメモリ１３０を確保し、ジャーナルリード命令であることを示す識別子と、命令対象の正記憶システム１００Ａのグループ番号と、リトライ指示の有無とを含むアクセス命令を生成し、そのアクセス命令を正記憶システム１００Ａに送信する。以下、アクセス命令内のグループ番号をグループ番号Ａとする（ステップ１７００、図１６の１６１０）。なお、グループ番号Ａは、例えば、システムＣＨＡ１１０ＢＳが、副記憶システム１００Ｂに備えられるグループ情報６００やパス情報５００等を参照して、ジャーナル論理ボリューム２３０ＪＢの番号が属するグループ番号に含まれる副論理ボリューム番号に対応した正論理ボリューム番号を特定し、特定された正論理ボリューム番号が属するグループ番号を正記憶システム１００Ａに問い合わせる等の方法により、取得することができる。
【０１７１】
（２）システムＣＨＡ１１０ＢＳは、正記憶システム１００Ａの応答およびジャーナルを受信する（図１６の１６２０）。システムＣＨＡ１１０ＢＳは、受信した応答を調べ、その応答が、“ジャーナル無”の場合は、正記憶システム１００Ａには、指定したグループ番号Ａに対応したグループについてジャーナルが存在しないため、一定時間後、正記憶システム１００Ａにリードジャーナル命令を送信する（ステップ１７２０、１７２５）。
【０１７２】
（４）正記憶システム１００Ａの応答が、“グループ状態は障害”もしくは“グループ状態は未使用”の場合は、システムＣＨＡ１１０ＢＳは、副記憶システム１００Ｂのグループ状態（ジャーナル論理ボリューム２３０ＪＢが属するグループのグループ状態）を受信した状態に変更し、ジャーナルリード処理を終了する（ステップ１７３０、１７３５）。
【０１７３】
（５）正記憶システム１００Ａの応答が、上記以外、つまり、正常終了の場合は、システムＣＨＡ１１０ＢＳは、ボリューム情報４００を参照し、ジャーナル論理ボリューム２３０ＪＢのボリューム状態を調べる（ステップ１７４０）。ジャーナル論理ボリューム２３０ＪＢのボリューム状態が“異常”の場合は、ジャーナル論理ボリューム２３０ＪＢにジャーナルの格納が不可能なため、システムＣＨＡ１１０ＢＳは、そのジャーナル論理ボリューム２３０ＪＳが属するグループに対応したグループ状態を“異常”に変更し、処理を終了する（ステップ１７４５）。この場合、システムＣＨＡ１１０ＢＳは、ジャーナル論理ボリュームを正常な論理ボリュームに変更する等を行い、グループの状態を正常に戻してもよい。
【０１７４】
（６）ステップ１７４０の調べで、ジャーナル論理ボリュームのボリューム状態が“正常”の場合は、システムＣＨＡ１１０ＢＳは、後述するジャーナル格納処理１８００を行う。ジャーナル格納処理１８００が正常に終了した場合は、システムＣＨＡ１１０ＢＳは、次のジャーナルリード命令を送信する（ステップ１７６０）。それに代えて、システムＣＨＡ１１０ＢＳは、ジャーナル格納処理１８００が正常に終了してから一定時間経過後に、次のジャーナルリード命令を生成して送信してもよい。なお、システムＣＨＡ１１０ＢＳは、次のジャーナル命令を送信するタイミングを、一定の時間間隔で定期的に送信するものでも良いし、受信したジャーナルの個数、接続パス２００の通信量、副記憶システム１００Ｂが保持しているジャーナル論理ボリュームの記憶容量、又は副記憶システム１００Ｂの負荷等によって決めてもよいし、正記憶システム１００Ａが保持しているジャーナルの記憶容量（もしくは、正記憶システム１００Ａのポインタ情報７００）を取得し、取得された記憶容量に基づいて決めてもよい。上記情報の転送は、専用のコマンドで行ってもよいし、ジャーナルリード命令の応答に含んでもよい。その後の処理は、ステップ１７１０以降と同じである。
【０１７５】
（７）ステップ１８００のジャーナル格納処理が正常に終了しない場合は、ジャーナル論理ボリュームの未使用領域が足りないため、システムＣＨＡ１１０ＢＳは、受信したジャーナルを破棄し、一定時間後にリトライ指示のジャーナルリード命令を送信する（ステップ１７５５）。もしくは、システムＣＨＡ１１０ＢＳは、ジャーナルをキャッシュメモリ２３０に保持しておき、一定時間後に、再度ジャーナル格納処理を行っても良い。これは、後述するリストア処理２５０が行われることにより、一定時間後には、ジャーナル論理ボリュームに未使用領域が増える可能性があるためである。この方式の場合は、ジャーナルリード命令にリトライ指示の有無は含めなくてもよい。
【０１７６】
次に、図１８に示すジャーナル格納処理１８００について説明する。
【０１７７】
（１）システムＣＨＡ１１０ＢＳは、ジャーナルがジャーナル論理ボリューム２３０ＪＢに格納可能であるかを調べる。具体的には、システムＣＨＡ１１０ＢＳは、副記憶システム１００Ｂに備えられるポインタ情報７００を用いて、更新情報領域に未使用領域が有るか無いかを調べる（ステップ１８１０）。ポインタ情報７００の更新情報最新アドレスと更新情報最古アドレスが等しい場合は、更新情報領域に未使用領域が存在しないため、システムＣＨＡ１１０ＢＳは、ジャーナル作成失敗として処理を終了する（ステップ１８２０）。
【０１７８】
（２）ステップ１８１０の調べで、更新情報領域に未使用領域が存在する場合は、システムＣＨＡ１１０ＢＳは、ポインタ情報７００を用い、ライトデータ領域にライトデータが格納できるかを調べる（ステップ１８３０）。ライトデータ最新アドレスと受信したジャーナルのライトデータのデータ量の和が、ライトデータ最古アドレスと等しいもしくは大きい場合は、ライトデータ領域にライトデータを格納できないため、システムＣＨＡ１１０ＢＳは、ジャーナル作成失敗として処理を終了する（ステップ１８２０）。
【０１７９】
（３）ジャーナルが格納可能である場合、システムＣＨＡ１１０ＢＳは、上記ジャーナルリード処理２４０により受信したジャーナルの更新情報に含まれているグループ番号とジャーナル論理ボリュームのライトデータの論理アドレス（以下、「ジャーナルライトデータアドレス」と略記）とを変更する。具体的には、システムＣＨＡ１１０ＢＳは、更新情報中のグループ番号を、副記憶システム１００Ｂのグループ番号（ジャーナル論理ボリューム２３０ＪＢが属するグループのグループ番号）に変更し、更新情報中のジャーナルライトデータアドレスを、副記憶システム１００Ｂが備えるポインタ情報７００のライトデータ最新アドレスに変更する。システムＣＨＡ１１０ＢＳは、そのポインタ情報７００の更新情報最新アドレスを、現在の更新情報最新アドレスに更新情報のサイズを足した数値に変更する。システムＣＨＡ１１０ＢＳは、そのポインタ情報７００のライトデータ最新アドレスを、現在のライトデータ最新アドレスにライトデータのサイズを足した数値に変更する（ステップ１８４０）。
【０１８０】
（４）システムＣＨＡ１１０ＢＳは、キャッシュメモリ１３０を確保し、確保されたキャッシュメモリ１３０に更新情報とライトデータとを格納し、それら更新情報とライトデータとを記憶装置１５０（換言すればジャーナル論理ボリューム２３０ＪＢ）に書き込むことをＤＫＡ１２０に命令し、ジャーナル作成成功として処理を終了する（ステップ１８５０、図１６の１６３０）。その後、ＤＫＡ１２０は、リードライト処理２２０により、キャッシュメモリ１３０に格納されている更新情報とライトデータとを記憶装置１５０に書き込み、その後、上記確保されたキャッシュメモリ１３０を開放する（図１６の１６４０）。
【０１８１】
前述したジャーナル格納処理では、ジャーナルを記憶装置１５０に保存するとしていたが、ジャーナル用に予め一定量のキャッシュメモリ１３０を用意しておき、当該キャッシュメモリを全て使用してから、その全てのキャッシュメモリ１３０から記憶装置１５０にジャーナルが保存されてもよい。ジャーナル用のキャッシュメモリ量は、例えば、ＳＶＰ２８１から指定されてもよい。
【０１８２】
図１９は、リストア処理２５０を説明する図であり、図２０は、リストア処理２５０のフローチャートである。以下、これらを用いて、副記憶システム１００ＢのホストＣＨＡ１１０Ａが、ジャーナルを利用し、データの更新を行う動作について説明する。なお、リストア処理２５０は、別のＣＨＡ１１０（例えばシステムＣＨＡ１１０ＢＳ）が行っても良いし、副記憶システム１００ＢのＤＫＡ１２０が行ってもよい。
【０１８３】
（１）ホストＣＨＡ１１０Ａは、グループ情報６００を参照し、複数のグループ番号の中から選択したグループ番号のグループ状態が“正常”であるかを調べる（ステップ２０１０）。ステップ２０１０の調べで、グループ状態が“正常”以外、例えば、“障害”の場合は、ホストＣＨＡ１１０Ａは、リストア処理２５０を終了する（ステップ２０１５）。
【０１８４】
（２）ステップ２０１０の調べで、グループ状態が“正常”の場合は、ホストＣＨＡ１１０Ａは、グループ情報６００やボリューム情報４００などを参照し、上記選択されたグループ番号に属するジャーナル論理ボリューム番号に対応したボリューム状態を調べる（ステップ２０２０）。ステップ２０２０の調べで、ジャーナル論理ボリューム２３０ＪＢのボリューム状態が、“異常”の場合は、アクセス不可能なため、ホストＣＨＡ１１０Ａは、上記選択されたグループ番号に対応するグループ状態を“異常”に変更し、処理を終了する（ステップ２０２５）。
【０１８５】
（３）ステップ２０２０の調べで、ジャーナル論理ボリューム２３０ＪＢのボリューム状態が、“正常”の場合は、リホストＣＨＡ１１０Ａは、リストア対象のジャーナルが存在するかを調べる。具体的には、ホストＣＨＡ１１０Ａは、ポインタ情報７００の更新情報最古アドレスと更新情報最新アドレスを取得し、それらを比較する。ホストＣＨＡ１１０Ａは、更新情報最古アドレスと更新情報最新アドレスが等しい場合、ジャーナルは存在しないため、リストア処理は一旦終了し、一定時間後、リストア処理を再開する（ステップ２０３０）。
【０１８６】
（４）ステップ２０３０の調べで、リストア対象のジャーナルが存在する場合、ホストＣＨＡ１１０Ａは、最古（最小）の更新番号を持つジャーナルに対して次の処理を行う。最古（最小）の更新番号を持つジャーナルの更新情報は、ポインタ情報７００の更新情報最古アドレスから保存されている。ホストＣＨＡ１１０Ａは、キャッシュメモリ１３０を確保し、更新情報最古アドレスから更新情報サイズ分の情報（つまり更新情報それ自体）をキャッシュメモリ１３０に読み込むことをＤＫＡ１２０に命令する（図１９の１９１０）。
【０１８７】
ＤＫＡ１２０のリードライト処理２２０は、記憶装置１５０（換言すればジャーナル論理ボリューム２３０ＪＢ）から更新情報を読み込み、その更新情報を上記確保されたキャッシュメモリ１３０に保存し、ホストＣＨＡ１１０にリード終了を通知する（図１９の１９２０）。
【０１８８】
ホストＣＨＡ１１０Ａは、更新情報のリード終了の通知を受け、キャッシュメモリ１３０内の更新情報から、ライトデータの論理アドレスおよびライトデータのサイズを取得し、キャッシュメモリ１３０を確保し、その論理アドレスからそのサイズ分のデータ（つまり一つのライトデータ）をキャッシュメモリ１３０に読み込むことをＤＫＡ１２０に命令する（図１９の１９３０）。
【０１８９】
ＤＫＡ１２０のリードライト処理２２０は、記憶装置１５０（換言すれば指定された論理アドレス）からライトデータを読み込み、そのライトデータをキャッシュメモリ１３０に保存し、リード終了をホストＣＨＡ１１０に通知する（ステップ２０４０、図１９の１９４０）。
【０１９０】
（５）ホストＣＨＡ１１０Ａは、更新する副論理ボリュームの論理アドレス（換言すれば、ライト命令の論理アドレス（図２１参照）を更新情報から求め、その論理アドレスから特定される副論理ボリューム２３０ＳＢのアドレスにライトデータを書き込むことをＤＫＡ１２０に命令する（ステップ２０５０、図１９の１９５０）。ＤＫＡ１２０のリードライト処理２２０は、副論理ボリュームの論理アドレス（ライト命令の論理アドレス）に対応する記憶装置１５０の記憶領域に、キャッシュメモリ１３０に保存されたライトデータを書き込み、キャッシュメモリ１３０を開放し、ライト処理終了をホストＣＨＡ１１０Ａに通知する（図１９の１９６０）。
【０１９１】
（６）ホストＣＨＡ１１０Ａは、ＤＫＡ１２０からライト処理完了の通知を受け、ジャーナルの記憶領域を開放する。ジャーナルの記憶領域の開放処理では、ホストＣＨＡ１１０Ａは、副記憶システム１００Ｂに備えられるポインタ情報７００の更新情報最古アドレスを、現在の更新情報最古アドレスに更新情報のサイズを足した数値に変更する。ホストＣＨＡ１１０Ａは、更新情報最古アドレスが、ライトデータ領域先頭アドレスとなった場合は、ライトデータ領域先頭アドレスは０とする。ホストＣＨＡ１１０Ａは、そのポインタ情報７００のライトデータ最古アドレスを、現在のライトデータ最古アドレスに上記書き込んだライトデータのサイズを足した数値に変更する。ライトデータ最古アドレスが、ジャーナル論理ボリュームの容量以上の論理アドレスとなった場合は、ホストＣＨＡ１１０Ａは、ライトデータ領域先頭アドレスを減じ、補正する。その後、ホストＣＨＡ１１０Ａは、次のリストア処理を開始する（ステップ２０６０）。
【０１９２】
以上が、図１９〜図２０についての説明である。なお、前述したリストア処理２５０では、記憶装置１５０からキャッシュメモリ１３０にジャーナルを読み込んでいたが、キャッシュメモリ１３０に存在する場合は、当該処理は行わなくても良い。
【０１９３】
また、前述したジャーナルリード受信処理とジャーナルリード命令処理２４０では、正記憶システム１００Ａが送信するジャーナルをポインタ情報７００により決めていたが、副記憶システム１００Ｂが送信するジャーナルを決めてもよい。例えば、システムＣＨＡ１１０ＢＳが、ジャーナルリード命令に更新番号を追加する。この場合、そのジャーナルリードリード命令を受信するシステムＣＨＡ１１０ＢＰが、ジャーナルリード受信処理にて、副記憶システム１００Ｂが指定した更新番号の更新情報の論理アドレスを求めるために、正記憶システム１００Ａの共有メモリ１４０内に、更新番号から更新情報を格納した論理アドレスを求めるテーブルもしくは検索方法を設けてもよい。
【０１９４】
また、前述したジャーナルリード受信処理とジャーナルリード命令処理２４０では、ジャーナルリード命令を用いていたが、通常のリード命令を用いてもよい。例えば、正記憶システム１００Ａのグループ情報６００とポインタ情報７００を予め副記憶システム１００Ｂに転送しておき、副記憶システム１００Ｂは、正記憶システム１００Ａのジャーナル論理ボリュームのデータ（つまり、ジャーナル）をリードしてもよい。
【０１９５】
また、前述したジャーナルリード受信処理では、更新番号の順に、正記憶システム１００Ａから副記憶システム１００Ｂにジャーナルを送信すると説明したが、更新番号の順に送信せずともよい。また、正記憶システム１００Ａから副記憶システム１００Ｂに複数のジャーナルリード命令を送信してもよい。この場合、リストア処理にて更新番号順にジャーナルを処理するために、副記憶システム１００Ｂに、更新番号から更新情報を格納した論理アドレスを求めるテーブルもしくは検索方法を設けることができる。
【０１９６】
以上、上述したデータ処理システム１では、正記憶システム１００Ａがジャーナルを生成して副記憶システム１００Ｂに送信し、副記憶システム１００Ｂが、正記憶システム１００Ａから受信したジャーナルに基づいてデータの複製を行う。これにより、正記憶システム１００Ａに接続されたホストコンピュータ１８０に、データの複製に関する負荷を負わせなくて済むし、正記憶システム１００Ａとホストコンピュータ１８０との間の接続パス１９０を使用なくて済む。
【０１９７】
以上が、ジャーナルを利用したデータ処理の基本に関する実施形態の説明である。以下、ジャーナルを利用したデータ処理の応用に関する幾つかの実施例を説明する。
【実施例１】
【０１９８】
図２３は、本発明の一実施形態の第一実施例に係るデータ処理システムの構成例の概要を示す。以下、上記実施形態との相違点を主に説明し、上記実施形態との共通点については、説明を省略又は簡略する。また、以下の説明では、正記憶システム１００Ａの制御サブシステムには参照符号１０１Ａを付し、副記憶システム１００Ａのそれには参照符号１０１Ｂを付す。また、正記憶システム１００Ａが備えるボリューム情報、パス情報、グループ情報及びポインタ情報の各々は、正記憶システム１００Ａに関する内容が記録されており、枝符号として「Ａ」を付されている。ボリューム情報４００Ａ、パス情報５００Ａ、グループ情報６００Ａ及びポインタ情報７００Ａの少なくとも一つは、制御サブシステム１０１Ｂにも存在しても良いし、同様に、ボリューム情報４００Ｂ、パス情報５００Ｂ、グループ情報６００Ｂ及びポインタ情報７００Ｂの少なくとも一つは、制御サブシステム１０１Ａに存在しても良い。また、その場合、一方の情報（例えばパス情報５００Ａ）が更新された場合には、更新内容が接続パス２００を介して他方の同じ情報（例えばパス情報５００Ａ）に反映されても良い。また、副記憶システム１００Ｂが備えるボリューム情報、パス情報、グループ情報及びポインタ情報の各々は、副記憶システム１００Ｂに関する内容が記録されており、枝符号として「Ｂ」が付されている。また、図２３において、論理ボリューム中の「＃」は、論理ボリューム番号を表す。また、正論理ボリューム（「Ｐ−ＶＯＬ」と図示）には、参照符号「Ｐ」を付し、副論理ボリューム（「Ｓ−ＶＯＬ」と図示）には、参照符号「Ｓ」を付し、正記憶システム１００Ａ内のジャーナル論理ボリューム（「ＪＮＬＶＯＬ」と図示）には、参照符号「Ａ」を付し、副記憶システム１００Ｂ内のジャーナル論理ボリュームには、参照符号「Ｂ」を付す。以下、論理ボリュームを表す際には、説明を分かりやすくするため、「２３０」という参照番号の代わりに、論理ボリュームに付されている＃と上記参照符号との組み合わせを使用することにする。
【０１９９】
正記憶システム１００Ａに設定されている複数のグループのうちの或るグループ１０２Ａには、複数のジャーナル論理ボリューム、例えば、３つのジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａが含まれている。また、そのグループ１０２には、ジャーナルが格納されずにライトデータのみが格納される論理ボリュームとして、例えば一つの正論理ボリューム＃４Ｐが含まれている。
【０２００】
同様に、副記憶システム１００Ｂに設定されている複数のグループのうちの或るグループ１０２Ｂには、複数のジャーナル論理ボリューム、例えば、３つのジャーナル論理ボリューム＃１Ｂ、＃２Ｂ、＃３Ｂが含まれている。また、そのグループ１０２には、ジャーナルが格納されずにライトデータのみが格納される論理ボリュームとして、例えば一つの副論理ボリューム＃４Ｓが含まれている。なお、本実施例の内容を理解し易くするために、グループ１０２Ａに含まれているジャーナル論理ボリュームの数と、グループ１０２Ｂに含まれているジャーナル論理ボリュームの数を同じとしたが、それらの数は異なっていても良い。また、ジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａの記憶容量はそれぞれ異なっていても良い。これは、ジャーナル論理ボリューム＃１Ｂ、＃２Ｂ、＃３Ｂについても同様である。
【０２０１】
制御サブシステム１０１Ａは、正論理ボリューム＃４Ｐに対するライト命令とライトデータとをホストコンピュータ１８０から受信した場合、そのライト命令に従って、ライトデータを正論理ボリューム＃４Ｐに格納する。また、制御サブシステム１０１Ａは、グループ情報６００を参照し、グループ１０２Ａのグループ番号に対応した更新番号（以下、「ＳＥＱ＃」と表記することもある）を把握し、把握された更新番号などを含んだジャーナルを生成する。そして、制御サブシステム１０１Ａは、複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａの中から、ジャーナル中の更新情報の格納先とする第一のジャーナル論理ボリュームと、そのジャーナル中のライトデータの格納先とする第二のジャーナル論理ボリュームとを選択し、選択した第一のジャーナル論理ボリュームに、生成したジャーナル中の更新情報を格納し、選択した第二のジャーナル論理ボリュームに、生成したジャーナル中のライトデータを格納する。以下、具体的に説明する。
【０２０２】
図２４は、本発明の一実施形態の第一実施例におけるポインタ情報７００Ａの構成例を示す。図２５は、図２４に例示したポインタ情報７００Ａが表す構成であって、複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａ内の構成を表す。以下、図２４及び図２５を参照して、正記憶システム１００Ａにおけるポインタ情報７００Ａの構成及び複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａ内の構成について説明するが、その説明は、副記憶システム１００Ｂにも適用することができる。
【０２０３】
ポインタ情報７００Ａには、前述した複数の情報要素のうち、更新情報領域先頭アドレス、ライトデータ領域先頭アドレス、ライトデータ最新アドレス及びライトデータ最古アドレスが、そのポインタ情報７００が対応したグループに存在する各ジャーナル論理ボリューム毎に登録されている。
【０２０４】
そして、図２４及び図２５の例によれば、同一のジャーナルを構成する更新情報とライトデータとは、別々のジャーナル論理ボリュームに格納される。具体的には、例えば、更新情報とライトデータはそれぞれ以下の方法により格納することができる。
【０２０５】
（ジャーナル中の更新情報の格納方法）
制御サブシステム１０１Ａは、複数のジャーナル論理ボリュームの中から或るジャーナル論理ボリューム、例えば、番号が最も若いジャーナル論理ボリューム＃１Ａを選択し、選択したジャーナル論理ボリューム＃１Ａの先頭から更新情報３１０を格納していき、その都度、ポインタ情報７００Ａにおける情報要素であって、ジャーナル論理ボリューム＃１に対応した情報要素を更新していく。その結果、制御サブシステム１０１Ａは、選択されたジャーナル論理ボリューム＃１Ａの更新情報領域終端（ライトデータ領域先頭アドレス）まで使用したことを検出した場合には、別のジャーナル論理ボリューム、例えば、番号が次に若いジャーナル論理ボリューム＃２Ａを選択し、選択したジャーナル論理ボリューム＃２Ａの先頭から更新情報３１０を格納する。以降、同様に、ジャーナル論理ボリューム＃２の更新情報領域終端（ライトデータ領域先頭アドレス）まで使用した場合は、制御サブシステム１０１Ａは、また別のジャーナル論理ボリューム、例えば、ジャーナル論理ボリューム＃３を選択肢、それの先頭から更新情報３１０を格納する。ジャーナル論理ボリューム＃３の更新情報領域終端（ライトデータ領域先頭アドレス）まで使用し、他に未使用のジャーナル論理ボリュームが存在しない場合には、制御サブシステム１０１Ａは、初めに選択したジャーナル論理ボリューム＃１Ａの先頭から更新情報３１０を格納する。なお、更新情報の格納において、複数のジャーナル論理ボリュームは、予め決められた順序（例えば共有メモリ２６０等に設定された順序）に従って選択されても良いし、ランダムに選択されても良い。また、後述のライトデータの格納方法と同様に、更新番号が近傍の（例えば更新番号が連続した）第一と第二の更新情報は、同一のジャーナル論理ボリュームに格納しないように別々のジャーナル論理ボリュームに振り分けられても良い。
【０２０６】
（ジャーナル中のライトデータの格納方法）
制御サブシステム１０１Ａは、ジャーナル毎に、ライトデータの格納先とするジャーナル論理ボリュームを変更する。具体的には、例えば、制御サブシステム１０１Ａは、グループ１０２Ａにジャーナル論理ボリュームがＮ個（例えば３個）ある場合、格納対象のライトデータと対をなす更新情報中の更新番号（例えば５）をＮ（例えば３）で割り、余りの数値（例えば２）に対応するジャーナル論理ボリューム（例えば＃２Ａ）に、上記格納対象のライトデータを格納する。そのジャーナル論理ボリューム（例えば＃２Ａ）におけるライトデータの格納先アドレスは、ポインタ情報７００Ａにおいて、そのジャーナル論理ボリュームに対応したライトデータ最新アドレスとなる。なお、更新番号が近傍の第一と第二のライトデータは、必ずしも同一のジャーナル論理ボリュームに格納されないのではなく、必要に応じて（例えば、他のジャーナル論理ボリュームのライトデータ領域が一杯である等の場合）、同一のジャーナル論理ボリュームに格納されても良い。また、上述した更新情報の格納方法と同様に、更新番号が近傍の第一と第二のライトデータは、同一のジャーナル論理ボリュームに格納され、そこが一杯になった場合に、別のジャーナル論理ボリュームに格納されるようになっていてもよい。
【０２０７】
以上が、ジャーナル中の更新情報及びライトデータの格納方法についての説明である。この格納方法が採用される場合、例えば、上述した実施形態で説明したジャーナル作成処理（例えば、図１３のステップ１３４５、図１８のステップ１８３０）では、以下のような処理を行うことができる。
【０２０８】
制御サブシステム１０１Ａは、複数のジャーナル論理ボリュームの中から、ライトデータの格納先とするジャーナル論理ボリュームを選択し、選択されたジャーナル論理ボリュームに対応した種々の情報要素（ポインタ情報１００Ａに登録されている情報要素）を基に、ライトデータを格納可能か否かを判定する。具体的には、例えば、制御サブシステム１０１Ａは、格納対象のライトデータと対をなす更新情報中の更新番号（例えば５）を、グループ１０２Ａに存在するジャーナル論理ボリューム数Ｎ（例えば３）で割り、余りの数値（例えば２）に対応するジャーナル論理ボリューム（例えば＃２Ａ）に、ライトデータを格納可能か否かを判定する。その判定により、否定的な判定結果が得られた場合には、制御サブシステム１０１Ａは、ジャーナル作成失敗で終了する（図１３のステップ１３９０、図１８のステップ１８３０）。なお、終了する代わりに、制御サブシステム１０１Ａは、ライトデータを格納できるだけの空き領域を有したジャーナル論理ボリュームを、ライトデータのデータサイズや、ポインタ情報７００Ａ等に基づいて検索し、検索ヒットとなったジャーナル論理ボリュームの空き領域に、ライトデータを格納しても良い。
【０２０９】
以上、上述した第一実施例によれば、一つのグループに複数のジャーナル論理ボリュームが準備されており、更新番号が近傍の（例えば更新番号が連続した）第一と第二のライトデータは、格納先となるジャーナル論理ボリュームが別々となる。これにより、ライトデータのライトと、ジャーナルのリードとを重ねて（パイプライン）実施することが可能となり、コピー性能が向上する。すなわち、ジャーナル論理ボリュームが１つの場合、ライトデータのリード（もしくはライト）性能は、そのジャーナル論理ボリュームを備える記憶装置１５０の性能に依存してしまう。本実施例では、複数のジャーナル論理ボリュームが用意され、且つ、更新番号が近傍のジャーナルのライトデータが異なるジャーナル論理ボリュームに格納されるので、同時期に、複数の記憶装置１５０を使用することができ、ジャーナルのリード（もしくはライト）性能を向上させることができる。このようなことを好適に実現するためには、複数のジャーナル論理ボリュームは、別々の記憶装置１５０上に設けられておくことが好ましい。また、一つのジャーナル論理ボリュームが複数の記憶装置１５０上に用意されている場合には、それら複数の記憶装置１５０の全て又は一部が、他のジャーナル論理ボリュームを備える複数の記憶装置１５０の全て又は一部と重複しないように、複数のジャーナル論理ボリュームを用意することが好ましい。
【０２１０】
ところで、上述した第一実施例では、制御サブシステム１０１Ａは、図１５のステップ１５８０の後、副記憶システム１００Ｂからジャーナルリード命令を受ける前に、自主的に、次の一つ以上のジャーナル（すなわち、ステップ１５８０で送信したジャーナルの更新番号の次の番号以降のジャーナル）のリード処理を実行しても良い。それにより、次のジャーナルリード命令を受信した時には、ステップ１５７０のリード処理にて、既に、キャッシュメモリ１３０にその命令に対応したジャーナルが存在する可能性が高まり、故に、ジャーナルリード命令を受けてからその命令に従うジャーナルを副記憶システム１００Ｂに送信するまでの時間を短縮することができる。なお、「次の一つ以上のジャーナル」としては、例えば、直前の更新番号にジャーナル論理ボリューム数ｎを加えた値の更新番号のジャーナルとすることができる。この場合、副記憶システム１００Ｂでは、同一のジャーナル論理ボリュームに連続的にジャーナル中のライトデータが格納される。
【０２１１】
また、第一実施例では、前述したように、更新番号が近傍の（例えば連続した）第一と第二の更新情報は、ライトデータの格納方式と同様に、格納先となるジャーナル論理ボリュームが別々であっても良い。
【０２１２】
また、第一実施例では、同一のグループに属する複数のジャーナル論理ボリュームの容量は等しくなくてもよい。
【０２１３】
また、第一実施例では、その変形例として、以下のことを行うことができる。
【０２１４】
（Ａ）第一実施例の第一変形例。
【０２１５】
副記憶システム１００Ｂの制御サブシステム１０１Ｂが、ジャーナルリード命令をｍ重化し（ｍは二以上の整数）、ｍ重化されたジャーナルリード命令を正記憶システム１００Ａに送信する。その際、制御サブシステム１０１Ｂは、ｍ重化されたジャーナルリード命令の各々に、そのジャーナルリード命令を特定するための番号（以下、「ＴＡＧ＃」と言う）を含める。ＴＡＧ＃は、１からｍまである。具体的には、例えば、制御サブシステム１０１Ｂは、ジャーナルリード命令を三重化した場合、三重化したジャーナルリード命令のうちの第一のジャーナルリード命令にＴＡＧ＃１を含め、第二のジャーナルリード命令にＴＡＧ＃２を含め、第三のジャーナルリード命令にＴＡＧ＃３を含めて、三重化されたジャーナルリード命令を正記憶システム１００Ａに送信する。この場合、正記憶システム１００Ａでは、図２６に例示するように、ポインタ情報７００Ａのうちの特定の情報要素（例えばリード開始アドレス及びリトライ開始アドレス）は、多重度数ｍと同数、すなわち、各ＴＡＧ＃毎に備えられる。なお、多重度数ｍは、例えば、グループ１０２Ａに備えられるジャーナル論理ボリュームの数と同じ値とすることができる。また、図２６に例示したポインタ情報７００Ａによれば、例えば、ＴＡＧ＃１に対応するジャーナル論理ボリューム＃１Ａからライトデータが読み出された場合には、ＴＡＧ＃１に対応するリード開始アドレス及びリトライ開始アドレスは、論理ボリューム番号「１」で先頭からの位置は「１５０」となる。
【０２１６】
以下、この第一変形例についてより具体的に説明する。
【０２１７】
副記憶システム１００Ｂの制御サブシステム１０１Ｂは、各ＴＡＧ＃毎に、図１７に示したジャーナルリード命令処理を実行する。
【０２１８】
正記憶システム１００Ａの制御サブシステム１０１Ａは、ジャーナルリード命令を受けた場合、図１５を参照して説明したジャーナル受信処理を行う。そのジャーナル受信処理において、制御サブシステム１０１Ａは、TAG＃に対応したリトライ開始アドレス及びリード開始アドレス（ポインタ情報７００Ａに含まれる情報要素）が示す論理アドレスから更新情報３１０を読み出す（ステップ１５７０、１５４０）。ジャーナル受信処理により、更新情報を含んだジャーナルが副記憶システム１００Ｂに送信される。なお、その際、制御サブシステム１０１Ａは、どのジャーナルリード命令に従って取得されたジャーナルであるかを特定するために、取得されたジャーナルに、それに対応するジャーナルリード命令中のＴＡＧ＃を付し、ＴＡＧ＃が付されたジャーナルを副記憶システム１００Ｂに送信する。
【０２１９】
副記憶システム１００Ｂの制御サブシステム１００Ｂは、ジャーナルを受信した場合、図１８を参照して説明したジャーナル格納処理を行う。その際、制御サブシステム１０１Ｂは、受信したジャーナル中のＴＡＧ＃及び更新番号と、ポインタ情報７００Ｂとに基づいて、そのジャーナル中の更新情報を格納する論理アドレスを算出し、算出された論理アドレスと、更新情報のサイズとに基づき、上記ＴＡＧ＃から特定されるジャーナル論理ボリュームに更新情報が格納可能か否かを調べる（図１８のステップ１８１０）。また、制御サブシステム１００Ｂは、その更新情報中のライトデータのデータサイズとポインタ情報７００Ｂとに基づき、特定されるジャーナル論理ボリュームにライトデータを格納可能か調べる（図１８のステップ１８３０）。更新情報やライトデータが格納されるジャーナル論理ボリュームは、TAG＃に対応するジャーナル論理ボリュームとなる。
このように、多重でジャーナルリード命令を送信することにより、コピー性能の更なる向上が図れる。
【０２２０】
（Ｂ）第一実施例の第二変形例。
【０２２１】
この第二変形例は、第一変形例の更なる変形例でもあり、正記憶ステム１００Ａが、１つのジャーナルリード命令に対して、複数のジャーナルを取得し副記憶システム１００Ｂに送信する。以下、具体的に説明する。
【０２２２】
正記憶システム１００Ａの制御サブシステム１０１Ａは、図１５を参照して説明したジャーナル受信処理において、同一のジャーナル論理ボリュームにおける連続する記憶領域に格納されているライトデータを取得して送信する。具体的には、例えば、図２５では、制御サブシステム１０１Ａは、ポインタ情報７００Ａ等から、ジャーナル論理ボリューム＃１Ａの連続した領域に登録されている二つのライトデータがそれぞれ更新番号１と更新番号４とに対応していることを把握し、それにより、更新番号１を含んだ更新情報と、それに対応したライトデータとを含んだジャーナル、及び、更新番号４を含んだ更新情報と、それに対応したライトデータとを含んだジャーナルを、一つのジャーナルリード命令に応答して生成し副記憶システム１００Ｂに送信する。制御サブシステム１０１Ａは、図１５のステップ１５９０（もしくは１５４５）の処理後、次に生成すべき二以上のジャーナルにそれぞれ含まれる二以上の更新情報が格納されている論理アドレスを求める。その場合、論理アドレスは、リード開始アドレスに、更新情報サイズにＴＡＧ＃数ｍを乗算した数値を加算した数値となる。
【０２２３】
ジャーナルを受信した副記憶システム１００Ｂの制御サブシステム１０１Ｂは、図１８を参照して説明したジャーナル格納処理を行うが、その際、受信したジャーナルに付されているＴＡＧ＃に対応するジャーナル論理ボリュームのライトデータ最新アドレスから、受信したジャーナル中のライトデータの格納を行う。図２５の例では、制御サブシステム１０１Ｂは、更新番号１と更新番号４の２つのジャーナルを受信した場合は、ジャーナル論理ボリューム＃１の論理アドレス７００から、更新番号１のジャーナル中のライトデータを書き、そのライトデータに連続して、更新番号４のジャーナル中のライトデータを格納する。
【実施例２】
【０２２４】
次に、本発明の一実施形態の第二実施例について説明する。第二実施例は、上述した第一実施例の更なる応用例である。以下、第一実施例との相違点を主に説明し、第一実施例との共通点についての説明は省略或いは簡略する。
【０２２５】
第二実施例では、ジャーナル論理ボリュームのライトデータ領域が複数のサブライト領域に分割されている。複数のサブライト領域の記憶領域サイズはそれぞれ同じであっても良いし異なっていても良いが、この第二実施例では同じである。すなわち、この第二実施例では、ジャーナル論理ボリュームのライトデータ領域が複数のサブライト領域に等分割される。以下、個々のサブライト領域を「エクステント」と呼ぶ。
【０２２６】
図２７は、複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａ内の構成例を表す。図２８は、複数のエクステントを管理するためのエクステント情報の構成例を表す。図２９は、図２７及び図２８に対応したポインタ情報７００Ａの構成例を示す。以下、図２７〜図２９を参照して、正記憶システム１００Ａにおける複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａ、エクステント情報７０１、及びポインタ情報７００Ａについて説明するが、その説明は、副記憶システム１００Ｂにも適用することができる。
【０２２７】
図２７に示すように、複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａの各々におけるライトデータ領域は、複数の（例えば４つの）エクステントに等分割されている。各ジャーナル論理ボリュームの各エクステントには、そのジャーナル論理ボリュームにおけるエクステントを識別するためのエクステント番号（例えば、＃０〜＃３）が付与されている。
【０２２８】
また、図２７に示すように、どのジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａのライトデータ領域も、それぞれ同じように複数のエクステントに分割されている。換言すれば、どのジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａのライトデータ領域にも、記憶領域サイズが同じエクステントが同じ数だけ存在する。このため、複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａの少なくとも複数のライトデータ領域サイズはそれぞれ同じである（複数の更新情報領域のサイズはそれぞれ同じでも異なっていても良い）。
【０２２９】
また、図２７に示すように、個々のジャーナル論理ボリュームでは、同一のエクステント番号が使用されることは無いが、複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａでは（換言すれば、同一のグループ１０２Ａでは）、共通のエクステント番号が使用される。具体的には、ジャーナル論理ボリューム＃１Ａにも、＃２Ａにも、＃３Ａにも、エクステント＃０〜＃４がそれぞれ付与された４つのエクステントが存在する。別の言い方をすれば、各ジャーナル論理ボリュームの各ライトデータ領域は、複数のサブライト領域に分割されており、複数のジャーナル論理ボリュームの各サブライト領域によって、一つのエクステントが構成されている。また別の言い方をすれば、一つのエクステント番号（例えば＃０）を指定することにより、複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａの各々から一つのサブライト領域が特定され、特定されたサブライト領域の集合が、指定されたエクステント番号に対応する一つのエクステントである。更にまた別の言い方をすれば、各エクステントは、同一グループ１０２Ａに属する複数の論理ボリューム＃１Ａ〜＃３Ａにまたがっている。
【０２３０】
このようなエクステントを管理するためのエクステント情報７０１の構成例は、図２８に示す通りである。
【０２３１】
すなわち、エクステント情報７０１には、各エクステント＃毎に、そのエクステント＃に対応するエクステントが複数のジャーナル論理ボリューム＃１Ａ〜＃１Ｃのそれぞれどこに存在するかが登録される。エクステントの場所は、開始論理アドレスと終了アドレスとのセットで表され、そのセットは、同一グループ１０２Ａに属するジャーナル論理ボリューム＃１Ａ〜＃１Ｃの数と同じ数だけ存在する。開始論理アドレスは、ライトデータの格納を開始する論理アドレスを表し、終了論理アドレスは、ライトデータの格納を終了する論理アドレスを表す。また、エクステント情報７０１において、開始論理アドレス及び終了アドレスの複数のセットにそれぞれ対応付けて登録されている番号＃１〜＃３は、ライトデータの格納順序を表す。
【０２３２】
以上のようなエクステント情報７０１によれば、例えば以下のことが分かる。
【０２３３】
エクステント＃０であるエクステントは、初め、ジャーナル論理ボリューム＃１Ａのアドレス７００の位置からライトデータの格納が開始され、そのボリューム＃１Ａのアドレス１１１９の位置までライトデータが格納された場合、次に、ジャーナル論理ボリューム＃２Ａのアドレス７００の位置からライトデータの格納が開始されることがわかる。そして、ジャーナル論理ボリューム＃２Ａのアドレス１１１９の位置までライトデータが格納された場合、次に、ジャーナル論理ボリューム＃３Ａのアドレス７００の位置からライトデータの格納が開始されることがわかる。
【０２３４】
エクステント＃２であるエクステントは、初め、ジャーナル論理ボリューム＃２Ａのアドレス１２００の位置からライトデータの格納が開始され、そのボリューム２Ａのアドレス１６９９の位置までライトデータが格納された場合、次に、ジャーナル論理ボリューム＃２３Ａのアドレス１２００の位置からライトデータの格納が開始されることがわかる。
【０２３５】
このように、初めにライトデータが格納され始めるジャーナル論理ボリュームをエクステント＃毎に変えることで、全てのジャーナル論理ボリューム＃１Ａ〜＃３Ａを並列して動作させることができる。
【０２３６】
なお、以上のようなエクステント情報７０１に基づいて、各ジャーナル論理ボリューム＃１Ａ〜＃３Ａへのライトデータの格納が行われるようになっている場合、ポインタ情報７００Ａは、図２９に例示するような構成になっている。すなわち、更新情報領域先頭アドレス及びライトデータ領域先頭アドレスは、各ジャーナル論理ボリューム＃毎に用意され、ライトデータ最新アドレス、ライトデータ最古アドレス、リード開始アドレス及びリトライ開始アドレスは、各エクステント＃毎に用意される。ライトデータ最新アドレス、ライトデータ最古アドレス、リード開始アドレス及びリトライ開始アドレスを調整することで、更新番号が近傍の（例えば連続した）複数のライトデータを別々のエクステントに書き込むことができる。
【０２３７】
この第二実施例では、更新情報の格納方式は、第一実施例と同様であるが、ライトデータの格納方式はそれと異なる。
【０２３８】
例えば制御サブシステム１０１Ａは、ジャーナル毎に、ジャーナル中のライトデータを格納するエクステントを変更する。具体的には、例えば、エクステントがｎ個（例えばｎ＝４）の場合、制御サブシステム１０１Ａは、ジャーナル中の更新番号（例えば１２）をエクステント数ｎ（例えば４）で割り、余りの数値（例えば０）に対応するエクステント（＃０のエクステント）に、そのジャーナル中のライトデータを格納する。当該エクステント内での格納先アドレスは、そのエクステントの番号に対応したライトデータ最新アドレス（ポインタ情報７００Ａに登録されているライトデータ最新アドレス）である。なお、制御サブシステム１０１Ａは、ポインタ情報７００Ａ及びエクステント情報７０１に基づき、或るジャーナル論理ボリューム（例えば＃１Ａ）に設けられた或るエクステント（例えば＃０）の一部の終端アドレス（例えばアドレス１２００）に格納先アドレスが達したことを検出することができる。また、その場合、制御サブシステム１０１Ａは、エクステント情報７０１を用いて、次にどのジャーナル論理ボリュームに設けられたそのエクステントの別の一部の先端アドレスを格納先アドレスとするかを判断し（例えば、ジャーナル論理ボリューム＃２Ａのアドレス７００を格納先アドレスとすることを判断し）、その格納先アドレスをライトデータ最新アドレスとして、その先端アドレスからライトデータを格納することができる。
【０２３９】
このライトデータ格納方式が採用される場合、例えば、上述した実施形態で説明したジャーナル作成処理（例えば、図１３のステップ１３４５、図１８のステップ１８３０）では、以下のような処理を行うことができる。
【０２４０】
制御サブシステム１０１Ａは、ジャーナル中の更新番号（例えば１２）をエクステント数ｎ（例えば４）で割り、余りの数値（例えば０）に対応するエクステント（＃０のエクステント）に、そのジャーナル中のライトデータを格納することが可能か否かを判定する。その判定により、否定的な判定結果が得られた場合には、制御サブシステム１０１Ａは、ジャーナル作成失敗で終了する（図１３のステップ１３９０、図１８のステップ１８３０）。なお、終了する代わりに、制御サブシステム１０１Ａは、ライトデータを格納できるだけの空き領域を別のエクステントを、ライトデータのデータサイズや、ポインタ情報７００Ａ等に基づいて検索し、検索ヒットとなったエクステントの空き領域に、ライトデータを格納しても良い。
【０２４１】
以上、上述した第二実施例によれば、ジャーナル論理ボリュームのライトデータ領域が複数のエクステントに分割されており、更新番号が近傍の（例えば連続した）ジャーナルのライトデータが、異なるエクステントに振り分けて格納される。これにより、同一グループに属するジャーナル論理ボリュームの数に関わらず（つまり、ジャーナル論理ボリュームが１つの場合でも）、コピー性能を向上させることができる。例えば、記憶装置１５０がリード（もしくはライト）命令を受けない時間を実質的になくすことが可能となり、記憶装置の性能を十分に引き出すことが可能となる。これを好適に実現するためには、複数のジャーナル論理ボリュームは、別々の記憶装置１５０上に設けられておくことが好ましい。また、一つのジャーナル論理ボリュームが複数の記憶装置１５０上に用意されている場合には、それら複数の記憶装置１５０の全て又は一部が、他のジャーナル論理ボリュームを備える複数の記憶装置１５０の全て又は一部と重複しないように、複数のジャーナル論理ボリュームを用意することが好ましい。更に、複数のエクステントも、別々の記憶装置１５０に用意されることが好ましい。
【０２４２】
ところで、上述した第二実施例では、制御サブシステム１０１Ａは、図１５のステップ１５８０の後、副記憶システム１００Ｂからジャーナルリード命令を受ける前に、自主的に、先に、次に送信すると予想できるジャーナルのリード処理を実行しても良い。それにより、次のジャーナルリード命令を受信した時には、ステップ１５７０のリード処理にて、既に、キャッシュメモリ１３０にその命令に対応したジャーナルが存在する可能性が高まり、故に、ジャーナルリード命令を受けてからその命令に従うジャーナルを副記憶システム１００Ｂに送信するまえの時間を短縮することができる。なお、前述した「次に送信すると予想できるジャーナル」としては、例えば、直前の処理対象の更新番号にエクステント数ｐを加えた値の更新番号のジャーナルとすることができる。この場合、副記憶システム１００Ｂでは、同一のジャーナル論理ボリュームの同一のサブライト領域に連続的にジャーナル中のライトデータが格納される。
【０２４３】
また、第二実施例では、同一グループに属する複数（又は一つ）のジャーナル論理ボリュームの更新情報領域も、ライトデータ領域と同様の態様で複数のサブ領域（エクステント）に分割されていても良い。この場合、更新番号が近傍の（例えば連続した）第一と第二の更新情報は、ライトデータの格納方式と同様に、格納先となるサブ領域（エクステント）が別々であっても良い。
【０２４４】
また、第二実施例では、エクステント数ｐに制約はないが、同一グループに属する全ジャーナル論理ボリュームに対してリード（もしくはライト）命令を発行するために、エクステント数ｐはジャーナル論理ボリューム数ｎ以上（つまり、ｐ≧ｎ）であることが望ましい。
【０２４５】
また、第二実施例では、その変形例として、以下のことを行うことができる。
【０２４６】
（Ａ）第二実施例の第一変形例。
【０２４７】
副記憶システム１００Ｂの制御サブシステム１０１Ｂが、ジャーナルリード命令を多重発行する。その際、制御サブシステム１０１Ｂは、多重化されたジャーナルリード命令の各々に、エクステント番号を含める。制御サブシステム１０１Ｂは、エクステント番号毎に、独立に、図１７を参照して説明したジャーナルリード命令処理を行う。
【０２４８】
正記憶システム１００Ａの制御サブシステム１０１Ａは、ジャーナルリード命令を受けた場合、図１５を参照して説明したジャーナル受信処理を行う。そのジャーナル受信処理において、制御サブシステム１０１Ａは、ポインタ情報７００Ａを参照し、エクステント番号に対応した特定の情報要素（リトライ開始アドレス及びリード開始アドレス）が示す論理アドレスから更新情報を読み出す（ステップ１５７０、１５４０）。
【０２４９】
副記憶システム１００Ｂの制御サブシステム１００Ｂは、ジャーナルを受信した場合、図１８を参照して説明したジャーナル格納処理を行う。その際、制御サブシステム１０１Ｂは、受信したジャーナル中のエクステント番号及び更新番号と、ポインタ情報７００Ｂとに基づいて、そのジャーナル中の更新情報を格納する論理アドレスを算出し、算出された論理アドレスと、更新情報のサイズとに基づき、特定されるジャーナル論理ボリュームに更新情報が格納可能か否かを調べる（図１８のステップ１８１０）。また、制御サブシステム１００Ｂは、その更新情報中のライトデータのデータサイズとポインタ情報７００Ｂとに基づき、特定されるジャーナル論理ボリュームにライトデータを格納可能か調べる（図１８のステップ１８３０）。更新情報やライトデータが格納されるジャーナル論理ボリュームは、エクステントに対応するジャーナル論理ボリュームとなる。なお、制御サブシステム１００Ｂは、図１８のステップ１８３０では、エクステント番号に対応するエクステントにライトデータを格納可能か否かを調べても良い。
【０２５０】
（Ｂ）第二実施例の第二変形例。
【０２５１】
この第二変形例は、第一変形例の更なる変形例でもあり、正記憶ステム１００Ａが、１つのジャーナルリード命令に対して、複数のジャーナルを取得し副記憶システム１００Ｂに送信する。以下、具体的に説明する。
【０２５２】
正記憶システム１００Ａの制御サブシステム１０１Ａは、図１５を参照して説明したジャーナル受信処理において、同一のエクステントにおける連続する記憶領域に格納されているライトデータを取得して送信する。具体的には、例えば、図２７では、制御サブシステム１０１Ａは、ポインタ情報７００Ａ等から、ジャーナル論理ボリューム＃１Ａのサブライト領域の連続した領域に登録されている二つのライトデータがそれぞれ更新番号８と更新番号１２とに対応していることを把握し、それにより、更新番号８を含んだ更新情報と、それに対応したライトデータとを含んだジャーナル、及び、更新番号１２を含んだ更新情報と、それに対応したライトデータとを含んだジャーナルを、一つのジャーナルリード命令に応答して生成し副記憶システム１００Ｂに送信する。制御サブシステム１０１Ａは、図１５のステップ１５９０（もしくは１５４５）の処理後、次に生成すべき二以上のジャーナルにそれぞれ含まれる二以上の更新情報が格納されている論理アドレスを求める。その場合、論理アドレスは、リード開始アドレスに、更新情報サイズにエクステント数ｐを乗算した数値を加算した数値となる。
【０２５３】
ジャーナルを受信した副記憶システム１００Ｂの制御サブシステム１０１Ｂは、図１８を参照して説明したジャーナル格納処理を行うが、その際、受信したジャーナルに付されているエクステント番号に対応するエクステントのライトデータ最新アドレスから、受信したジャーナル中のライトデータの格納を行う。図２７の例では、制御サブシステム１０１Ｂは、更新番号８と更新番号１２の２つのジャーナルを受信した場合は、ジャーナル論理ボリューム＃１の論理アドレス７００から、更新番号８のジャーナル中のライトデータを書き、そのライトデータに連続して、更新番号１２のジャーナル中のライトデータを格納する。
【実施例３】
【０２５４】
以下、本発明の一実施形態の第三実施例について説明する。第三実施例は、正記憶システム１００Ａにおいて、ジャーナル中の更新情報又はライトデータが格納できない場合に行われる処理に関するものである。以下、具体的に説明する。
【０２５５】
正記憶システム１００Ａの制御サブシステム１０１Ａは、図１３を参照して説明したジャーナル作成処理において、更新情報又はライトデータを格納できない場合、この処理に係る当該グループでは、コピーを継続することはできない（図１３の１３９０）。この場合、制御サブシステム１０１Ａは、グループ情報６００Ａにおけるグループ状態を“サスペンド”に変更し、以下の処理を行う。グループ状態“サスペンド”とは、ジャーナルの作成を停止しており、正論理ボリュームＰと副論理ボリュームＳとのデータの整合性が取れていない状態を表す。
【０２５６】
この第三実施例では、制御サブシステム１０１Ａは、差分情報を備える。差分情報とは、ある記憶領域毎（例えば、１KB毎、論理アドレス毎、初期コピーでの１回の処理するデータ量と同じ量毎、もしくは、その倍数或いは約数毎）に、正論理ボリュームと副論理ボリュームの差があるか否かを示す情報である。差分情報は、全ての正論理ボリュームＰに対して必要である。差分情報は、所定の記憶域、例えば、ＣＨＡ１１０とＤＫＡ１２０とが参照可能なメモリ（具体例として共有メモリ１４０）に格納される。
【０２５７】
（Ａ：ジャーナルが格納できない場合に行われる処理（グループ状態：サスペンド））
制御サブシステム１０１Ａは、或るグループについてグループ状態“サスペンド”になる前に、そのグループにおける正論理ボリュームＰの差分情報中の設定値を、予め、差分無に設定しておく。制御サブシステム１０１Ａは、ポインタ情報７００Ａに基づいて、そのグループにおけるジャーナル論理ボリュームから最古のジャーナルを読出し、差分情報におけるその最古のジャーナルに関する設定値（例えば、最古のジャーナルの論理アドレスに対応した設定値）を差分有に設定する。そして、制御サブシステム１０１Ａは、そのジャーナル論理ボリュームから最古のジャーナルを破棄する。制御サブシステム１０１Ａは、このような処理を、全てのジャーナルに対して行う。
【０２５８】
（Ｂ：ジャーナルが格納できない場合に行われる処理（グループ状態：サスペンド））
制御サブシステム１０１Ａは、上記（Ａ：ジャーナルが格納できない場合に行われる処理（グループ状態：サスペンド））で説明した処理中に、ホストコンピュータ１８０からライト命令及びライトデータを受信した場合には、そのライトデータについてはジャーナルを作成せず、差分情報における設定値を差分有に設定する。具体的には、例えば、制御サブシステム１０１Ａは、図１２のステップ１２６５にて、グループ状態を参照し、グループ状態“サスペンド”の場合は、ジャーナルを作成せず、該当する論理アドレス（差分情報における該当箇所）を、差分有に設定する。
【０２５９】
（Ｃ：コピー停止（サスペンド状態）からのコピー再開）
制御サブシステム１０１Ａは、ホストコンピュータ１８０又は保守端末から、グループ番号の指定と、コピー再開命令とを受け、そのコピー再開命令に応答して、指定されたグループ番号に対応したグループについて、コピー処理を再開する。それの具体的な処理手順の一例は、以下の通りである。すなわち、制御サブシステム１０１Ａは、上記（Ａ：ジャーナルが格納できない場合に行われる処理（グループ状態：サスペンド））で説明した処理が終わった後、コピー再開処理の対象として指定されたグループのグループ状態を“コピー未”に変更する。そして、制御サブシステム１０１Ａは、図１０を参照して説明した初期コピー処理を実行する。但し、その初期コピー処理では、図３０に示すように、制御サブシステム１０１Ａは、ステップ１０２０の後に、初期コピー処理対象の正論理ボリュームに対応する差分情報１０２１の各箇所（例えば各論理アドレスに対応した箇所）毎に、差分有か差分無かのチェックを行う（ステップ１０２１）。制御サブシステム１０１Ａは、差分有が設定されている場合は、ステップ１０４０のジャーナル作成処理を行い、差分有が設定されていない場合は、ステップ１０５０の処理を行う。このような処理を行って、制御サブシステム１０１Ａは、上記指定されたグループにおいて、全正論理ボリュームのペア状態が“正常”となった場合に、グループ状態を“正常”に戻す。これ以降は、差分情報に設定される全ての設定値が差分無に変更され、通常の動作、つまり、データ更新されれば、ジャーナルが作成される。
【０２６０】
以上、この第三実施例によれば、ジャーナル作成対象のライトデータについて、正論理ボリュームＰと副論理ボリュームＳの間で差の有るライトデータであるか否かを、差分情報１０２１を用いて特定し、差分の無いライトデータについては、ジャーナルが作成されない。これにより、無駄なジャーナルが作成されないので、副論理ボリュームＳが正論理ボリュームＰと一致するまでの時間を短縮することができる。
【実施例４】
【０２６１】
次に、本発明の一実施形態の第四実施例について説明する。この第四実施例は、上述した実施形態及び第一実施例〜第三実施例のうちの少なくとも一つを実現するための各種情報を設定するための方法例に関する。以下、その方法例が採用された場合に使用されるＧＵＩ（グラフィカルユーザインタフェース）画面について説明する。なお、以下に説明するＧＵＩ画面は、ＳＶＰ２８１にインストールされているソフトウェアによって提供されるＧＵＩ画面であり、ＳＶＰ２８１に接続されている種々のコンピュータで表示可能な画面であるとする。
【０２６２】
図３１Ａは、第一のＧＵＩ画面の一例である。
【０２６３】
第一のＧＵＩ画面は、更新情報領域とライトデータ領域や、エクステント数を設定するための画面であり、例えばグループ毎に準備される。
【０２６４】
具体的には、例えば、項目「Meta/Data Ratio」の欄には、更新情報領域と、ライドデータ領域との記憶容量の比を設定することができるようになっている。図３１Ａの例では、比が「１６」となっているので、例えば、ジャーナル論理ボリュームの記憶容量が１７０ＧＢの場合、更新情報領域が１０ＧＢ、ライドデータ領域１６０ＧＢとなる。ここで設定された値に基づいて、ポインタ情報７００Ａの特定の情報要素の設定値が決まる。
【０２６５】
また、項目「Extent」の欄には、エクステント数を設定することができるようになっている。図３１Ａの例では、「３２」となっているので、１又は複数のライトデータ領域に３２個のエクステントが設定される。
【０２６６】
図３１Ｂは、第二のＧＵＩ画面の一例である。
【０２６７】
この第二のＧＵＩ画面は、或る設定値をユーザが確認するための画面である。
【０２６８】
具体的には、例えば、項目「JNL Group」に対応した欄には、グループ番号（例えば「７０」）が表示される。
【０２６９】
項目「Attribute」に対応した欄には、グループ状態に基づく表示がされる。具体的には、例えば、グループ状態が正常な場合は、上記グループ番号（例えば「７０」）に対応するグループがコピー元(Master)かコピー先(Restore)かが表示される。グループ状態がサスペンド中の場合には、”Suspend”が表示され、初期コピー中の場合には、”Copy”が表示される。
【０２７０】
項目「JNL Size(GB)」の欄には、ジャーナル論理ボリュームの記憶容量の合計値が表示される。
【０２７１】
項目「JNL Volumes」の欄には、ジャーナル論理ボリュームの個数が表示される。
【０２７２】
また、上記グループ番号に割り当てられたジャーナル論理ボリュームは、例えば、参照番号５００１で表す表示領域内に例えば一覧で表示される。
【０２７３】
図３２Ａは、第三のＧＵＩ画面の一例である。
【０２７４】
第三のＧＵＩ画面は、グループに関する情報の取得や、グループに関する設定を行うための画面である。
【０２７５】
例えば、参照番号５００３で表すメニュー「JNL Volumes」は、ユーザ所望のグループに新たにジャーナル論理ボリュームを追加する場合にユーザによって選択される。グループに登録するジャーナル論理ボリュームは、図３２Ｂに例示した第四のＧＵＩ画面の参照番号５００５で表されるリストから、ユーザ所望の論理ボリュームを選択することで、その論理ボリュームがジャーナル論理ボリュームとして追加される。
【０２７６】
また、第三のＧＵＩ画面において、参照番号５００４で表すメニュー「Change Option」は、図３１Ａの画面を表示する場合にユーザに選択される。
【０２７７】
また、詳しい説明は省略するが、第三のＧＵＩ画面は、使用していないグループ（Attribute
が空白）を調べる場合にも、使用される。また、第三のＧＵＩ画面は、ユーザがグループの状態を確認する場合にも使用されえる。また、第三のＧＵＩ画面は、初期コピー処理の開始等のグループ単位の操作（指示の発行）をユーザが行う場合にも使用される。
【０２７８】
図３３Ａは、第五のＧＵＩ画面の一例である。
【０２７９】
第五のＧＵＩ画面は、ペアとなる論理ボリュームの指定や、ペアの状態の確認を行うための画面である。
【０２８０】
この第五のＧＵＩ画面において、項目「Status」は、ペアの状態を表す。この項目に対応した欄にいて、”SMPL”は、ペアでない論理ボリュームを表し、“ＰＡＩＲ”は、ペアである論理ボリュームであり、且つ、正常にデータ複製が行われていることを示す。論理ボリュームが正か副かは、アイコン５００６の左下に、正なら“Ｐ”が記載され、副なら“Ｓ”が記載される。また、項目「Status」には、グループ状態がサスペンド中の場合には”Suspend”が表示され、初期コピー中の場合には”Copy”が表示される。
【０２８１】
また、第五のＧＵＩ画面において、参照番号５００８が指すメニュー「Paircreate」が選択された場合、ペアの作成が可能となる。具体的には、正論理ボリュームを選択し、右クリックで、ＰＯＰＵＰの中から、メニュー「Paircreate」が選択されると、図３３Ｂに例示するような第六の画面が表示され、副論理ボリュームや、正／副グループ番号等を選択し、ペアを作成することが可能となる。
【０２８２】
以上、本発明の好適な実施形態及び幾つかの実施例を説明したが、本発明は、それらの実施形態及び実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０２８３】
例えば、上述の説明では、各要素を特定するために「番号」が用いられているが、番号に限らず、その要素を特定可能なＩＤであればどのようなものでもよい。具体的には、例えば、記憶システム１００を特定するためのＩＤとしては、番号に限らず、ＷＷＮ（World Wide Name）、iSCSIネーム、ＩＰアドレス、ＭＡＣアドレスなどを採用することができる。
また、正記憶システム１００Ａがジャーナルとジャーナルライト命令とを副記憶システム１００Ｂに送信することにより、副記憶システム１００Ｂにジャーナルが保存されても良い。ジャーナルリード命令を使用する方式が採用される場合は、副記憶システム１００Ｂが自分の負荷等の状況に応じて命令を発行できるので、副記憶システム１００Ｂにとって都合が良い。一方、ジャーナルライト命令を使用する方式が採用される場合は、正記憶システム１００Ａが自分の負荷等の状況に応じて命令を発行できるので、正記憶システム１００Ａにとって都合が良い。
【０２８４】
また、例えば、制御サブシステム１０１Ａは、正記憶システム１００Ａのジャーナル論理ボリュームに保存されている更新情報を、例えば、その更新情報を含んだジャーナルに基づくリストア処理が副記憶システム１００Ｂで行われたことをリストアされたことを検出した場合か、若しくは、その更新情報を含んだジャーナルを副記憶システム１００Ｂに送信した場合に、破棄してもよい。なお、前者の検出は、例えば、副記憶システム１００Ｂの制御サブシステム１０１Ｂが、ジャーナルに基づくリストア処理を行う都度に、そのジャーナル中の更新番号を正記憶システム１００Ａに送信することで、可能となる。
【図面の簡単な説明】
【０２８５】
【図１】本発明の一実施形態の論理的な構成を示すブロック図である。
【図２】本発明の一実施形態の記憶システムのブロック図である。
【図３】本発明の一実施形態の更新情報とライトデータの関係を説明する図である。
【図４】本発明の一実施形態のボリューム情報の例を説明する図である。
【図５】本発明の一実施形態のペア情報の例を説明する図である。
【図６】本発明の一実施形態のグループ情報の例を説明する図である。
【図７】本発明の一実施形態のポインタ情報の例を説明する図である。
【図８】本発明の一実施形態のジャーナル論理ボリュームの構造を説明する図である。
【図９】本発明の一実施形態のデータの複製を開始する手順を説明するフローチャートである。
【図１０】本発明の一実施形態の初期コピー処理を説明するフローチャートである。
【図１１】本発明の一実施形態の命令受信処理を説明する図である。
【図１２】本発明の一実施形態の命令受信処理のフローチャートである。
【図１３】本発明の一実施形態のジャーナル作成処理のフローチャートである。
【図１４】本発明の一実施形態のジャーナルリード受信処理を説明する図である。
【図１５】本発明の一実施形態のジャーナルリード受信処理のフローチャートである。
【図１６】本発明の一実施形態のジャーナルリード命令処理を説明する図である。
【図１７】本発明の一実施形態のジャーナルリード命令処理のフローチャートである。
【図１８】本発明の一実施形態のジャーナル格納処理のフローチャートである。
【図１９】本発明の一実施形態のリストア処理を説明する図である。
【図２０】本発明の一実施形態のリストア処理のフローチャートである。
【図２１】本発明の一実施形態の更新情報の例を説明する図である。
【図２２】本発明の一実施形態のジャーナル作成処理時の更新情報の例を説明する図である。
【図２３】本発明の一実施形態の第一実施例に係るデータ処理システムの構成例の概要を示す。
【図２４】本発明の一実施形態の第一実施例におけるポインタ情報７００Ａの構成例を示す。
【図２５】図２５は、図２４に例示したポインタ情報７００Ａが表す構成であって、複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａ内の構成を表す。
【図２６】本発明の一実施形態の第一実施例の第一変形例におけるポインタ情報７００Ａの構成例を示す。
【図２７】本発明の一実施形態の第二実施例における複数のジャーナル論理ボリューム＃１Ａ、＃２Ａ、＃３Ａ内の構成例を表す。
【図２８】本発明の一実施形態の第二実施例における複数のエクステントを管理するためのエクステント情報の構成例を表す。
【図２９】図２７及び図２８に対応したポインタ情報７００Ａの構成例を示す。
【図３０】本発明の一実施形態の第三実施例における初期コピー処理の一部を示す。
【図３１】図３１Ａは、第一のＧＵＩ画面を示す。図３１Ｂは、第二のＧＵＩ画面を示す。
【図３２】図３２Ａは、第三のＧＵＩ画面を示す。図３２Ｂは、第四のＧＵＩ画面を示す。
【図３３】図３３Ａは、第五のＧＵＩ画面を示す。図３３Ｂは、第六のＧＵＩ画面を示す。
【符号の説明】
【０２８６】
１００…記憶システム  １００Ａ…正記憶システム  １００Ｂ…副記憶システム  １０１、１０１Ａ、１０１Ｂ…制御サブシステム  １０２Ａ、１０２Ｂ…グループ  １１０…チャネルアダプタ（ＣＨＡ）  １２０…ディスクアダプタ（ＤＫＡ）  １３０…キャッシュメモリ  １４０…共有メモリ  １５０…記憶装置  １８０…ホストコンピュータ  ２３０…論理ボリューム  Ｐ…正論理ボリューム  Ｓ…副論理ボリューム  Ａ、Ｂ…ジャーナル論理ボリューム
【図１】
2006048358.tif 000003
【図２】
2006048358.tif 000004
【図４】
2006048358.tif 000005
【図５】
2006048358.tif 000006
【図６】
2006048358.tif 000007
【図７】
2006048358.tif 000008
【図９】
2006048358.tif 000009
【図１０】
2006048358.tif 000010
【図１１】
2006048358.tif 000011
【図１２】
2006048358.tif 000012
【図１３】
2006048358.tif 000013
【図１４】
2006048358.tif 000014
【図１５】
2006048358.tif 000015
【図１６】
2006048358.tif 000016
【図１７】
2006048358.tif 000017
【図１８】
2006048358.tif 000018
【図１９】
2006048358.tif 000019
【図２０】
2006048358.tif 000020
【図２１】
2006048358.tif 000021
【図２２】
2006048358.tif 000022
【図２３】
2006048358.tif 000023
【図２４】
2006048358.tif 000024
【図２６】
2006048358.tif 000025
【図２８】
2006048358.tif 000026
【図２９】
2006048358.tif 000027
【図３０】
2006048358.tif 000028
【図３】
2006048358.tif 000029
【図８】
2006048358.tif 000030
【図２５】
2006048358.tif 000031
【図２７】
2006048358.tif 000032
【図３１】
2006048358.tif 000033
【図３２】
2006048358.tif 000034
【図３３】
2006048358.tif 000035