(57)【特許請求の範囲】
【請求項１】
第一のストレージシステムと
前記第一のストレージシステムに接続された第二のストレージシステムと
を備え、
前記第一のストレージシステムが、
第一の論理ボリュームの基になる第一の物理記憶デバイスと、
第一のメモリを有し、ライトコマンドとライトデータの一単位であるライトデータ要素とを上位装置から受け付け、前記ライトコマンドから特定される前記第一の論理ボリュームに前記ライトデータ要素を書き込む第一のコントローラと
を備え、
前記第二のストレージシステムが、
第二の論理ボリューム及びジャーナルエリアの基になる第二の物理記憶デバイスと、
第二のメモリを有し、前記第二の物理記憶デバイスへのアクセスを制御する第二のコントローラと
を備え、
前記第一及び第二のメモリのうちの少なくとも前記第一のメモリが、前記ライトデータ要素のサイズであるライト単位サイズを記憶し、
前記ジャーナルエリアは、前記第一及び／又は第二の論理ボリュームを構成する複数のブロックのうちのいずれかのブロックに記憶されているデータ要素又はそのブロックに書き込まれるデータ要素であるジャーナルデータ要素が記憶される記憶領域であり、複数のセグメントで構成されており、
前記セグメントのサイズ、及び、前記第一及び前記第二の論理ボリュームの各構成要素として管理されるブロックのサイズが前記ライト単位サイズと同じサイズになるように前記第一及び第二の論理ボリュームの各々の各ブロックと前記ジャーナルエリアを構成する各セグメントが管理される、
ストレージシステム群。
【請求項２】
前記第一の物理記憶デバイス及び／又は前記第二の物理記憶デバイスが、第一のジャーナル管理エリアの基になっており、
前記第二の物理記憶デバイスが、第二のジャーナル管理エリアの基になっており、
前記第二の論理ボリュームが、前記第一の論理ボリュームとペアを構成する論理ボリュームであり、
前記第一の論理ボリュームについて、第一のサブ管理情報が前記第一のジャーナル管理エリアに記憶され、
前記第二の論理ボリュームについて、世代毎の第二のサブ管理情報が前記ジャーナル管理エリアに記憶され、
前記第一のサブ管理情報は、前記第一の論理ボリュームを構成する各ブロックに対応した各情報要素を有する第一の差分管理情報を含み、前記各情報要素は、その情報要素に対応するブロックに更新が発生したか否かを表し、
前記第二のサブ管理情報は、前記第二の論理ボリュームを構成する各ブロックに対応した各情報要素を有する第二の差分管理情報と、データ格納アドレス情報とを含み、前記各情報要素は、その情報要素に対応するブロックに更新が発生したか否かを表し、前記データ格納アドレス情報は、前記ジャーナルエリアにおけるセグメントのアドレスを表し、
前記第一及び／又は第二のメモリが、前記第一のサブ管理情報と世代毎の前記第二のサブ管理情報とのそれぞれの情報の在り処を表すジャーナル管理情報を記憶する、
請求項１記載のストレージシステム群。
【請求項３】
前記第一又は前記第二のコントローラが、前記第一の差分管理情報における、前記第一の論理ボリューム内のライト先ブロックに対応した情報要素が未更新を表していれば更新済みに更新し、
世代確定イベントが発生したことによって前記第一の論理ボリュームの世代（ｊ）が確定した時に、
（３−１）前記第一及び／又は前記第二のコントローラが、前記第二の論理ボリュームの世代（ｊ−１）に対応した前記第二の差分管理情報（ｊ−１）を含んだ前記第二のサブ管理情報（ｊ−１）を、前記第二のジャーナル管理エリア内に追加し、
（３−２）前記第一及び／又は前記第二のコントローラが、前記第一の差分管理情報において更新済みを表す各情報要素について、以下の（３−２−１）乃至（３−２−４）を実行する、
（３−２−１）前記第一の差分管理情報において更新済みを表す情報要素に対応した、前記第二の差分管理情報（ｊ−１）内の情報要素を、更新済みを表す情報要素に更新する、
（３−２−２）前記第二のサブ管理情報に、データ格納アドレス情報を追加し、前記追加されたデータ格納アドレス情報は、前記第一の差分管理情報において更新済みを表す情報要素に対応したブロックと同じ位置にある、前記第二の論理ボリューム内のブロック、に記憶されているデータ要素の、前記ジャーナルエリアにおける退避先のセグメントのアドレスを表している、
（３−２−３）前記第一の差分管理情報において更新済みを表す情報要素に対応したブロックと同じ位置にある、前記第二の論理ボリューム内のブロック、に記憶されているデータ要素を、前記追加されたデータ格納アドレス情報が表す、前記ジャーナルエリア内のセグメントに、退避する、
（３−２−４）前記データ要素の退避元のブロックに、前記第一の差分管理情報において更新済みを表す情報要素に対応した、前記第一の論理ボリュームに関連するデータ要素を、書込む、
前記（３−２−３）で前記ジャーナルエリアに退避されたデータ要素の集合が、世代（ｊ−１）の前記第二の論理ボリュームと世代（ｊ−２）の前記第二の論理ボリュームとの差分を表す世代間差分データ（ｊ−１）である、
請求項２記載のストレージシステム群。
【請求項４】
前記（３−２−２）において、前記ジャーナルエリアにおける、前記退避先のセグメントは、直前回に退避先とされたセグメントに連続したセグメントであり、
前記第一又は第二のコントローラは、前記（３−２−１）乃至（３−２−４）を、前記第一の論理ボリュームのブロックのアドレス順に実行する、
請求項３記載のストレージシステム群。
【請求項５】
前記（３−２−４）における、前記第一の論理ボリュームに関連するデータ要素は、以下の（５−１）又は（５−２）である、
（５−１）前記第一又は前記第二の物理記憶デバイスに基づくジャーナルエリアに記憶された、前記第一の論理ボリュームについてのジャーナルデータ要素であって、前記第一の論理ボリュームに書き込まれるライトデータ要素であるアフタージャーナルデータ要素、
（５−２）前記第一の差分管理情報において更新済みを表す情報要素に対応した、前記第一の論理ボリューム内の記憶領域、に記憶されているデータ要素、
請求項３又は４記載のストレージシステム群。
【請求項６】
前記第一及び／又は前記第二のコントローラが、複数の世代の前記第二のサブ管理情報及び世代間差分データをマージすることでマージ後の第二のサブ管理情報及び世代間差分データを作成するマージ処理部を有し、
前記マージ後の第二のサブ管理情報及び世代間差分データには、同一のブロックに対応した情報要素及び世代間差分データ要素については、より古い世代の情報要素及び世代間差分データ要素が含まれ、その世代より新しい情報要素及び世代間差分データ要素が含まれていない、
請求項３乃至５のうちのいずれか１項に記載のストレージシステム群。
【請求項７】
前記第一及び／又は第二のコントローラが、リストア対象世代の前記第一の論理ボリュームを表す第三の論理ボリュームを準備するリストア処理部を有する、
請求項３乃至６のうちのいずれか１項に記載のストレージシステム群。
【請求項８】
前記リストア処理部が、リストア対象世代から最新世代までの前記第二のサブ管理情報を用いて、仮想的な論理ボリュームである前記第三の論理ボリュームを構成する各ブロックに対応した各参照先アドレスを有したリストア管理情報を作成し、前記第三の論理ボリュームの或るブロックを指定したリードの要求を上位装置から受けた場合、前記或るブロックについて有効な参照先アドレスがあれば、その参照先アドレスが示すセグメントからデータ要素を読み出して、前記上位装置に提供し、前記或るブロックについて有効な参照先アドレスがなければ、前記第一又は第二の論理ボリュームにおける、前記或るブロックと同じ位置にあるブロック、からデータ要素を読み出して、前記上位装置に提供する、
請求項７記載のストレージシステム群。
【請求項９】
前記第三の論理ボリュームに記憶されているデータが、前記ライト単位サイズよりも大きいスロットサイズ単位がバックアップされるようになっており、
前記第一及び／又は第二のメモリには、キャッシュメモリが含まれており、
前記リストア処理部が、前記キャッシュメモリに、前記スロットサイズ分の領域であるスロットを確保し、前記確保したスロットに、前記リストア対象世代に該当する複数のデータ要素を格納し、スロットに格納されたデータ要素群である前記スロットサイズ分のデータを、バックアップする、
請求項７記載のストレージシステム群。
【請求項１０】
前記第一及び／又は第二のコントローラが、圧縮対象世代に属する前記第二のサブ管理情報及び世代間差分データが圧縮された圧縮後情報を記憶するための第一の領域を、前記第一又は第二の物理記憶デバイスから確保し、圧縮対象世代に属する前記第二のサブ管理情報及び世代間差分データが記憶されている第二の領域から、前記圧縮対象世代に属する前記第二のサブ管理情報及び世代間差分データを読み出し、読み出された第二のサブ管理情報及び世代間差分データを圧縮することで前記圧縮後情報を生成し、生成された圧縮後情報を前記第二の領域に格納し、前記第二の領域を空き領域として管理する、
請求項３乃至７のうちのいずれか１項に記載のストレージシステム群。
【請求項１１】
前記第一及び／又は第二のコントローラが、前記第二の論理ボリュームの各世代について、第二のサブ管理情報の在り処を表すジャーナル管理情報を前記第一及び／又は第二のメモリに記憶し、前記第二の物理記憶デバイスが基になっているジャーナル管理エリアに、第二のサブ管理情報を記憶し、
前記第二のサブ管理情報は、前記第二の論理ボリュームを構成する各ブロックに対応した各情報要素を有する第二の差分管理情報と、データ格納アドレス情報とを含み、前記各情報要素は、その情報要素に対応するブロックに更新が発生したか否かを表し、前記データ格納アドレス情報は、対応するジャーナルデータ要素が記憶されている、前記ジャーナルエリアにおけるセグメント、のアドレスを表す、
請求項１記載のストレージシステム群。
【請求項１２】
前記第一及び／又は第二のコントローラが、世代確定イベントが発生した時に、前記第二の論理ボリューム内の複数の更新対象ブロックに記憶されている複数のデータ要素をブロックのアドレス順に前記ジャーナルエリアに退避し、その際、退避先のセグメントを、直前回に退避先とされたセグメントに連続したセグメントとする、
請求項１又は１１記載のストレージシステム群。
【請求項１３】
前記第一及び／又は第二のコントローラが、リストア対象世代から最新世代までの第二のサブ管理情報を用いて、仮想的な論理ボリュームである前記第三の論理ボリュームを構成する各ブロックに対応した各参照先アドレスを有したリストア管理情報を作成し、前記第三の論理ボリュームの或るブロックを指定したリードの要求を上位装置から受けた場合、前記或るブロックについて有効な参照先アドレスがあれば、その参照先アドレスが示すセグメントからデータ要素を読み出して、前記上位装置に提供し、前記或るブロックについて有効な参照先アドレスがなければ、前記第一又は第二の論理ボリュームにおける、前記或るブロックと同じ位置にあるブロック、からデータ要素を読み出して、前記上位装置に提供し、
前記第二のサブ管理情報は、前記第二の論理ボリュームを構成する各ブロックに対応した各情報要素を有する第二の差分管理情報と、データ格納アドレス情報とを含み、前記各情報要素は、その情報要素に対応するブロックに更新が発生したか否かを表し、前記データ格納アドレス情報は、対応するジャーナルデータ要素が記憶されている、前記ジャーナルエリアにおけるセグメント、のアドレスを表す、
請求項１又は１１及び１２のうちのいずれか１項に記載のストレージシステム群。
【請求項１４】
前記第一の物理記憶デバイスが、前記第一の論理ボリュームの他に、別の上位装置についての別の第一の論理ボリュームの基になっており、
前記第二の物理記憶デバイスが、前記第二の論理ボリュームの他に、別の上位装置についての別の第二の論理ボリュームの基になっており、
前記ジャーナルエリアは、前記第一及び／又は第二の論理ボリュームについての第一のジャーナルサブエリアと、前記別の第一及び／又は別の第二の論理ボリュームについての第二のジャーナルサブエリアとを含み、
前記第一及び第二のメモリのうちの少なくとも前記第一のメモリが、別のライト単位サイズを記憶し、
前記別のライト単位サイズは、前記別の上位装置から受信するライトデータ要素のサイズであり、
前記上位装置について、前記第一のジャーナルサブエリアのセグメントのサイズ、及び、前記第一及び前記第二の論理ボリュームのブロックのサイズが前記ライト単位サイズと同じサイズになるように前記第一及び第二の論理ボリュームの各々の各ブロックと前記第一のジャーナルサブエリアを構成する各セグメントが管理され、
前記別の上位装置について、前記第二のジャーナルサブエリアのセグメントのサイズ、及び、前記別の第一及び前記別の第二の論理ボリュームのブロックのサイズが前記別のライト単位サイズと同じサイズになるように前記別の第一及び別の第二の論理ボリュームの各々の各ブロックと前記第二のジャーナルサブエリアを構成する各セグメントが管理される、
請求項１乃至１３のうちのいずれか１項に記載のストレージシステム群。
【請求項１５】
前記第一及び第二のメモリのうちの少なくとも前記第一のメモリが前記ライト単位サイズを記憶した場合に、前記ブロックのサイズ及び前記セグメントのサイズが前記ライト単位サイズと同じサイズになるように前記第一及び第二の論理ボリュームの各々が複数のブロックに区切られ、且つ、前記ジャーナルエリアが複数のセグメントに区切られる、
請求項１乃至１４のうちのいずれか１項に記載のストレージシステム群。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一以上のストレージシステムで構成されたストレージシステム群に関し、特に、データのバックアップに関する。
【背景技術】
【０００２】
例えば、ストレージシステムが有する機能として、スナップショット機能やジャーナル機能が知られている。
【０００３】
スナップショット機能とは、或る時点（例えばホストからスナップショット取得要求を受けた時点）の或る論理ボリュームのイメージを保持する機能である。定期的にスナップショット機能を実行することにより、論理ボリューム内のデータのレプリケーション（バックアップ）を間欠的に取得しておくことが可能となる。また、スナップショット機能を用いた場合、スナップショット取得時点の論理ボリュームをリストアすることが可能である。
【０００４】
ジャーナル機能とは、ホスト計算機からのライトコマンドで指定されている論理ボリュームにライトデータを書き込む場合に、そのライトデータ及びその書込みに関する制御情報を含んだデータ（ジャーナル）を作成し、作成したジャーナルを保存する機能である。
【０００５】
特許文献１には、スナップショット機能によって取得したスナップショットに、ジャーナル内のライトデータを書き込むことによって、スナップショットを作成したポイント以外のポイントにおいて実行されるリカバリ処理について開示されている。
【０００６】
特許文献２には、スナップショットとジャーナルの切り替えについての開示がある。
【０００７】
特許文献３には、スナップショットのリストアボリュームの運用についての開示がある。
【０００８】
【特許文献１】特開２００５−１８７３８号公報
【特許文献２】特開２００７−８０１３１号公報
【特許文献３】特開２００７−１３３４７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、一般に、バックアップとして取得されるデータ要素（データの一単位）のサイズは、ストレージシステムで管理されている単位記憶領域のサイズである。
【００１０】
しかし、ホストからのライトデータ要素（ライトデータの一単位）のサイズは、ストレージシステムで管理されている単位記憶領域のサイズよりも小さいことがある（或いは、ライトデータ要素が単位記憶領域より大きくても、ライトデータ要素のサイズが単位記憶領域のサイズの倍数になっていないことがある）。この場合、単位記憶領域にライトデータ要素が格納された場合に、単位記憶領域に余りの領域が生じることになる。それ故、バックアップとして取得されるデータ要素は、ホストからのライトデータ要素とその他の情報とを含んだ、そのライトデータ要素よりも大サイズとなる。従って、ストレージシステムには、ホストからのライトデータ要素以外の情報もバックアップデータ要素として保存されてしまうおそれがある。
【００１１】
また、重複したデータ要素が存在し得る場合には、それを排除することが好ましい。
【００１２】
そこで、本発明の一つの目的は、バックアップとして取得されるデータのサイズを削減することにある。
【課題を解決するための手段】
【００１３】
第一の観点として、第一のストレージシステムが、第一の論理ボリュームの基になる第一の物理記憶デバイスと、第一のメモリを有し、ライトコマンドとライトデータの一単位であるライトデータ要素とを上位装置から受け付け、前記ライトコマンドから特定される前記第一の論理ボリュームに前記ライトデータ要素を書き込む前記第一のコントローラとを備える。第一のストレージシステムに接続される第二のストレージシステムが、第二の論理ボリューム及びジャーナルエリアの基になる第二の物理記憶デバイスと、第二のメモリを有し、前記第二の物理記憶デバイスへのアクセスを制御する第二のコントローラとを備える。前記第一及び第二のメモリのうちの少なくとも前記第一のメモリが、前記ライトデータ要素のサイズであるライト単位サイズを記憶する。前記ジャーナルエリアは、前記第一及び／又は第二の論理ボリュームを構成する複数のブロックのうちのいずれかのブロックに記憶されているデータ要素又はそのブロックに書き込まれるデータ要素であるジャーナルデータ要素が記憶される記憶領域である。前記ジャーナルデータ要素のサイズ、及び、前記第一及び前記第二の論理ボリュームの各構成要素として管理される前記各ブロックのサイズが、前記ライト単位サイズである。
【００１４】
第二の観点として、一以上のストレージシステムで構成されるストレージシステム群が、複数のブロックで構成されている論理ボリュームとジャーナルエリアとの基になっている物理記憶デバイスと、メモリを有し、前記論理ボリューム内の或るブロックに更新が発生する場合に前記或るブロックについてのジャーナルデータ要素を取得し、取得されたジャーナルデータ要素を、前記ジャーナルエリアに書き込むコントローラとを備える。前記コントローラが、取得されたジャーナルデータ要素と互いに重複するジャーナルデータ要素が前記ジャーナルエリアに記憶済みか否かを判断する。前記コントローラは、判断の結果が肯定的であれば、前記取得されたジャーナルデータ要素を管理するための要素管理情報を前記ジャーナルエリアに書込み、前記取得されたジャーナルデータ要素を前記ジャーナルエリアに書込まない。前記要素管理情報は、前記ジャーナルデータ要素よりも小さいサイズの情報であり、前記重複するジャーナルデータ要素が記憶されているセグメントのアドレスを表すポインタを含む。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して、本発明の幾つかの実施形態を説明する。
【実施例１】
【００１６】
図１は、本発明の第一の実施形態に係る計算機システムの構成を示す。
【００１７】
第一のネットワーク１２１に、一以上のホスト計算機１０１及び第一のストレージシステム１２５が接続されている。第二のネットワーク１２３に、第一及び第二のストレージシステム１２５及び１６１が接続されている。第三のネットワーク１０８に、一以上のホスト計算機１０１、管理サーバ１１１、第一及び第二のストレージシステム１２５及び１６１が接続されている。ネットワーク１２１、１２３及び１０８は、それぞれ、任意の種類のネットワークを採用することができる。例えば、第一及び第二のネットワーク１２１及び１２３は、ＳＡＮ（Storage Area Network）であって、第三のネットワーク１０８は、ＬＡＮ（Local Area Network）である。また、例えば、ストレージシステム１２５及び１６１同士は、第二のネットワーク１２３に代えて専用線で接続されても良い。また、第二ストレージシステム１６１は、外部接続先のストレージシステムであっても良いし、リモートコピー先のストレージシステムであっても良い。
【００１８】
ホスト計算機１０１は、第一のストレージシステム１２５から提供される論理ボリュームにアクセスする計算機である。ホスト計算機１０１は、ＣＰＵ（Central Processing Unit）１０３、メモリ１０６、補助記憶デバイス１０４、入力装置（例えばキーボード及びポインティングデバイス）１０２、出力装置（例えば表示装置）１０５、第一のネットワーク１２１に接続されるストレージアダプタ（例えばホストバスアダプタ）１０９、及び、第三のネットワーク１０８に接続されるネットワークアダプタ１０７を備えている。ＣＰＵ１０３は、ストレージアダプタ１０９を介して、アドレスを指定したＩ／Ｏコマンド（ライトコマンド又はリードコマンド）を送信する。
【００１９】
管理サーバ１１１は、第三のネットワーク１０８に接続されている機器１０１、１１１、１２５及び１６１を管理する計算機である。管理サーバ１１１は、ＣＰＵ（Central Processing Unit）１１３、メモリ１１６、補助記憶デバイス１１４、入力装置（例えばキーボード及びポインティングデバイス）１１２、出力装置（例えば表示装置）１１５、及び、第三のネットワーク１０８に接続されるネットワークアダプタ１１７を備えている。ＣＰＵ１１３は、ネットワークアダプタ１１７を介して、コマンドを、第三のネットワーク１０８に接続されている機器１０１、１１１、１２５又は１６１に送信する。
【００２０】
第一ストレージシステム１２５は、コントローラと記憶デバイス群とを有する。コントローラは、例えば、複数のフロントエンドインタフェース１２７と、複数のバックエンドインタフェース１３７と、第一の内部ネットワーク１５６と、一以上のキャッシュメモリ１４７と、一以上の制御メモリ１４５と、一以上のプロセッサ１４３とを備える。記憶デバイス群は、複数の物理記憶デバイス（以下、「ＰＤＥＶ」と言う）１５１で構成されている。
【００２１】
フロントエンドインタフェース１２７は、第一ストレージシステム１２５の外部の機器１０１又は１６１と通信するためのインタフェース回路である。従って、フロントエンドインタフェース１２７としては、第一のネットワーク１２１に接続されるインタフェースと、第二のネットワーク１２３に接続されるインタフェースがある。フロントエンドインタフェース１２７は、例えば、ネットワーク１２１又は１２３に接続されるポート１２９と、メモリ１３１と、ローカルルータ（以下、「ＬＲ」と略記する）１３３とを有する。ＬＲ１３３に、ポート１２９及びメモリ１３１が接続されている。ＬＲ１３３は、ポート１２９を介して受けたデータを任意のプロセッサ１４３で処理するための振り分けを行う。具体的には、例えば、プロセッサ１４３から、或るアドレスを指定するＩ／Ｏコマンドをそのプロセッサ１４３で行うようにＬＲ１３３に対して設定され、その設定に従って、ＬＲ１３３が、Ｉ／Ｏコマンドやデータを振り分ける。
【００２２】
バックエンドインタフェース１３７は、ＰＤＥＶ１５１と通信するためのインタフェース回路である。バックエンドインタフェース１３７は、例えば、ＰＤＥＶ１５１に接続されるディスクインタフェース１４１と、メモリ１３５と、ＬＲ１３９とを有する。ＬＲ１３９に、ディスクインタフェース１４１及びメモリ１３５が接続されている。
【００２３】
第一の内部ネットワーク１５６は、例えば、スイッチ（一例としてクロスバスイッチ）或いはバスで構成される。第一の内部ネットワーク１５６に、複数のフロントエンドインタフェース１２７、複数のバックエンドインタフェース１３７、一以上のキャッシュメモリ１４７、一以上の制御メモリ１４５及び一以上のプロセッサ１４３が接続されている。これらの要素間の通信は、第一の内部ネットワーク１５６を介して行われる。
【００２４】
キャッシュメモリ１４７は、ホスト計算機１０１からのＩ／Ｏコマンドに従って読み出される又は書き込まれるデータを一時記憶するメモリである。
【００２５】
制御メモリ１４５は、種々のコンピュータプログラム及び／又は情報（例えば図４に示すコンピュータプログラム及び情報）を記憶するメモリである。例えば、制御メモリ１４５には、どのＰ−ＶＯＬ（プライマリの論理ボリューム）がどのホスト計算機からアクセスされるＶＯＬであるかを表す情報や、どのＰ−ＶＯＬがどのＳ−ＶＯＬ（セカンダリの論理ボリューム）とペアを構成するかを表す情報や、どのＰ−ＶＯＬがどのＲ−ＶＯＬ（リストアされた論理ボリューム）に関連するかを表す情報が記憶されている。これらの情報から、どのＳ−ＶＯＬ及びＲ−ＶＯＬがどのホスト計算機に関わる論理ボリュームであるかを特定することが可能である。後述するように、或るホスト計算機についてのホストライトサイズを第一のストレージシステム１２５が受領した場合、制御プロセッサ１４３は、その或るホスト計算機に関わるＰ−ＶＯＬ、Ｓ−ＶＯＬ及びＲ−ＶＯＬを、制御メモリ１４５に記憶されている情報を参照することで特定し、特定されたＰ−ＶＯＬ、Ｓ−ＶＯＬ及びＲ−ＶＯＬについて、ホストライトサイズを設定することができる。
【００２６】
プロセッサ１４３は、制御メモリ１４５に記憶されている種々のコンピュータプログラムを実行することで、後述する処理を行う。
【００２７】
ＰＤＥＶ１５１は、不揮発性の記憶デバイスであり、例えば、ハードディスクドライブ或いはフラッシュメモリデバイスである。二以上のＰＤＥＶ１５１で、ＲＡＩＤの規則に従うＰＤＥＶグループであるＲＡＩＤ（Redundant Array of Independent Disks）グループが構成される。
【００２８】
コントローラの各構成要素１２７、１３７、１４７、１４５及び１４３に、第二の内部ネットワーク（例えばＬＡＮ）１５５が接続されており、その第二の内部ネットワーク１５５に、保守管理端末１５３が接続されている。保守管理端末１５３は、第三のネットワーク１０８にも接続されており、第一のストレージシステム１２５を保守又は管理する計算機である。第一のストレージシステム１２５の保守員は、例えば、保守管理端末１５３（又は、その端末１５３と通信可能な管理サーバ１１１）を操作して、制御メモリ１４５に記憶される種々の情報を定義することができる。
【００２９】
第二のストレージシステム１６１は、コントローラ１６５とＰＤＥＶ１６３群とを有する。コントローラ１６５は、例えば、ホストアダプタ１６４と、ネットワークアダプタ１６２と、制御メモリ１７１と、キャッシュメモリ１７２と、プロセッサ１６７と、ストレージアダプタ１６９とを有する。ホストアダプタ１６４、ネットワークアダプタ１６２、制御メモリ１７１、キャッシュメモリ１７２、プロセッサ１６７及びストレージアダプタ１６９の機能は、それぞれ、フロントエンドインタフェース１２７、ネットワークアダプタ１６２、制御メモリ１４５、キャッシュメモリ１４７、プロセッサ１６７及びバックエンドインタフェース１３７の機能とそれぞれ実質的に同じである。
【００３０】
図２は、第一のストレージシステム１２５における記憶領域構成の概要を示す。
【００３１】
論理的な記憶階層として、下位から上位にかけて順に、ＶＤＥＶ層１８５、ストレージプール１８９Ａ及び１８９Ｂ、及びＬＤＥＶ層１８３がある。
【００３２】
ＶＤＥＶ層１８５には、一以上の仮想的なデバイス（ＶＤＥＶ）がある。ＶＤＥＶは、所定のアドレス範囲が設定された記憶空間である。その記憶空間を構成する複数の記憶空間部分が、それぞれ、論理ボリュームである。
【００３３】
図２の例では、第一のＶＤＥＶ１９３Ａは、一つのＲＡＩＤグループ１９５が提供する実体的な記憶空間である。第一ＶＤＥＶ１９３Ａは、例えば、第一実ＶＯＬ１８７Ａ、プールＶＯＬ１９１Ａ及び１９１Ｂの基になっている。従って、これらの論理ボリューム１８７Ａ、１９１Ａ及び１９１Ｂに書き込まれるデータは、実際には、第一ＶＤＥＶ１９３Ａの基になっているＲＡＩＤグループ１９５に書き込まれる。
【００３４】
一方、第二のＶＤＥＶ１９３Ｂは、仮想的な記憶空間である。第二のＶＤＥＶ１９３Ｂは、第二実ＶＯＬ１８７Ｃ、プールＶＯＬ１９１Ｃ及び１９１Ｄの基になっている。従って、これらの論理ボリューム１８７Ｃ、１９１Ｃ及び１９１Ｄに書き込まれるデータは、実際には、第二ＶＤＥＶ１９３Ｂの基になっている、第二ストレージシステム１６１内の記憶資源（例えばＲＡＩＤグループ）に書き込まれる。具体的には、例えば、第二実ＶＯＬ１８７Ｃに対応した記憶空間部分が、第二ストレージシステム１６１内のターゲットデバイス１８１Ｄに割り当てられており、この場合、仮想ＶＯＬ１８７Ｃに書き込まれるデータは、実際には、第二のストレージシステム１６１に転送され、ターゲットデバイス１８１Ｄに割り当てられている論理ボリュームに書き込まれる。
【００３５】
ストレージプールは、一以上のプールＶＯＬの集合である。図２の例では、第一ストレージプール１８９Ａは、プールＶＯＬ１９１Ａ及び１９１Ｃの集合であり、第二ストレージプール１８９Ｂは、プールＶＯＬ１９１Ｂ及び１９１Ｄの集合である。プールＶＯＬ１９１Ａ〜１９１Ｄは、ターゲットデバイス１８１Ａ〜１８１Ｃに関連付けられない論理ボリューム（すなわちホスト計算機１０１に提供されない論理ボリューム）である。なお、第一ストレージシステム１２５内の全てのプールＶＯＬが、第一ストレージシステム１２５内のＲＡＩＤグループに基づくＶＤＥＶを基に形成されていても良いし、反対に、第二ストレージシステム１６１内の記憶資源に基づくＶＤＥＶを基に形成されていても良い。
【００３６】
ＬＤＥＶ層１８３には、複数の論理ボリューム１８７Ａ〜１８７Ｃと、ＪＮＬ関連エリア１８８とがある（“ＪＮＬ”はジャーナルの略語である）。論理ボリューム１８７Ａ〜１８７Ｃは、いずれも、プールＶＯＬと違って、ホスト計算機１０１に認識され得る論理ボリュームである。図２の例によれば、論理ボリューム１８７Ａは、実体的な記憶領域が第一ストレージシステム１２５内にある論理ボリューム（以下、「第一実ＶＯＬ」と言う）である。論理ボリューム１８７Ｂは、ストレージプール１８９Ｂに関連付けられている仮想的な論理ボリューム（以下、「仮想ＶＯＬ」と言う）である。例えば、仮想ＶＯＬ１８７Ｂは、複数の仮想領域で構成されており、ストレージプール１８９Ｂが、複数のプール領域で構成されている。仮想ＶＯＬ１８７Ｂ内の仮想領域にデータが書き込まれることに起因して、その仮想領域にプール領域がストレージプール１８９Ｂから割り当てられ、書込み対象のデータが、そのプール領域に書き込まれる。そのプール領域がプールＶＯＬ１９１Ｂに属していれば、データは第一ストレージシステム１２５内に保存され、そのプール領域がプールＶＯＬ１９１Ｄに属していれば、そのデータは第二ストレージシステム１６１内に保存される。
【００３７】
ＪＮＬ関連エリア１８８は、ホスト計算機１０１に非提供の記憶領域である。このエリア１８８は、例えば、第一ストレージプール１８９内に存在する。このエリア１８８は、後述のＪＮＣＢエリアとＪＮＬエリアで構成されている。「ＪＮＣＢ」とは、後述の第二のＪＮＬ管理テーブルを意味する文字列である。
【００３８】
ターゲットデバイス１８１Ａ〜１８１Ｃは、ホスト計算機１０１から見える論理的なデバイスであり、具体的には、例えば、オープンシステムでは“ＬＵＮ”（Logical Unit Number）であり、メインフレームシステムでは“デバイス”である。ターゲットデバイス１８１Ａ〜１８１Ｃは、ポート１２９と、ＬＤＥＶ層１８１における論理ボリューム１８７Ａ〜１８７Ｃとに関連付けられている。図２の例によれば、Ｉ／Ｏコマンドにおいて、ターゲットデバイス１８１Ａが指定されていると、そのデバイス１８１Ａに関連付けられている第一実ＶＯＬ１８７ＡにＩ／Ｏ（ライト又はリード）が発生し、ターゲットデバイス１８１Ｂが指定されていると、そのデバイス１８１Ｂに関連付けられている仮想ＶＯＬ１８７ＢにＩ／Ｏが発生し、ターゲットデバイス１８１Ｃが指定されていると、そのデバイス１８１Ｃに関連付けられている第二実ＶＯＬ１８７ＣにＩ／Ｏが発生する。
【００３９】
図３は、ＪＮＬデータ要素の格納の概要を示す。なお、図３では、ライトという言葉を「ＷＲ」と略記しており、他の図でも、ライトという言葉をそのように略記することがある。
【００４０】
第一ストレージシステム１２５に、Ｐ−ＶＯＬ１８７Ａ及びＳ−ＶＯＬ１８７Ｓがある。また、Ｒ−ＶＯＬ１８７Ｒの構築が可能であるＰ−ＶＯＬ１８７Ｐ及びＳ−ＶＯＬ１８７Ｓは、例えば、前述した第一又は第二実ＶＯＬ１８７Ａ又は１８７Ｃであり、Ｒ−ＶＯＬ１８７Ｒは、前述した仮想ＶＯＬ１８７Ｂである。
【００４１】
Ｐ−ＶＯＬ１８７Ｐは、プライマリの論理ボリューム（オンラインの論理ボリューム）である。ホスト計算機１０１Ａからライトデータが書き込まれることで、Ｐ−ＶＯＬ１８７Ｐは更新される。
【００４２】
Ｓ−ＶＯＬ１８７Ｓは、Ｐ−ＶＯＬ１８７Ｐとペアにされたセカンダリの論理ボリュームであり、Ｐ−ＶＯＬ１８７Ｐと同じ記憶容量を有する。
【００４３】
Ｒ−ＶＯＬ１８７Ｒは、指定された世代のＰ−ＶＯＬ１８７Ｐの内容を有する論理ボリュームである。Ｒ−ＶＯＬ１８７Ｒは、前述したように仮想ボリュームであり、後に説明するように、ユーザ或いは管理者からの要求に応答して作成される。
【００４４】
ＪＮＬ関連エリア１８８は、前述したように、ＪＮＣＢエリア５０１と、ＪＮＬエリア５０３とで構成されている。ＪＮＣＢエリア５０１には、図３に示すように、未確定世代に対応した差分ＢＭ（ＢＭは“ビットマップ”の略語である）と、確定した世代毎に対応した差分ＢＭとが格納される。ＪＮＬエリア５０３には、未確定世代に対応したオンライン更新差分データと、確定した世代毎に対応した世代間差分データとが格納される。
【００４５】
ここで、「世代」とは、Ｐ−ＶＯＬ１８７Ｐについての或る時点のことである。例えば、世代（Ｎ）とは、世代（Ｎ−１）を過ぎてＰ−ＶＯＬ１８７Ｐについて所定の世代確定イベントが発生した時（本実施形態では、ホスト計算機１０１から後述のマーカを受領した時）のことである。なお、図３の例では、確定している最新の世代が世代（Ｎ）のため、未確定世代は、世代（Ｎ＋１）である。マーカを受領した時のＰ−ＶＯＬ１８７Ｐのイメージが第一のストレージシステム１２５で取得されるので、マーカは、スナップショット取得要求と言うこともできる。
【００４６】
「オンライン更新差分データ」とは、オンライン更新差分データ要素の集合である。「オンライン更新差分データ要素」は、Ｐ−ＶＯＬ１８７ＰについてのＪＮＬデータ要素である。「ＪＮＬデータ要素」とは、Ｐ−ＶＯＬ１８７Ｐについての単位記憶領域のサイズ（後述のホストライトサイズ）分のＪＮＬデータのことである。ＪＮＬデータ要素は、アフターＪＮＬデータ要素であっても良いしビフォアＪＮＬデータ要素であっても良い。「アフターＪＮＬデータ要素」とは、Ｐ−ＶＯＬ１８７Ｐに書き込まれるライトデータ要素である。「ビフォアＪＮＬデータ要素」とは、Ｐ−ＶＯＬ１８７Ｐにライトデータ要素が書き込まれることに起因したＣＯＷ（Copy On Write）でＰ−ＶＯＬ１８７Ｐから退避されたデータ要素（ライトデータ要素のライト先記憶領域に記憶されているデータ要素）である。以下の説明では、論理ボリューム内のデータ要素が記憶されている単位記憶領域（後述のホストライトサイズ単位で管理されている単位記憶領域）を、便宜上「ブロック」と言い、ＪＮＬエリア５０３内のデータ要素が記憶されている記憶領域を、便宜上「セグメント」と言うことがある。また、以下の説明では、オンライン更新差分データ要素はアフターＪＮＬデータ要素であるとする。
【００４７】
なお、オンライン更新差分データの最大サイズは、そのデータに対応するＰ−ＶＯＬのサイズと同じである。なぜなら、対応するＰ−ＶＯＬにおける同一のブロックに対応したオンライン更新差分データ要素は、ＪＮＬエリア５０３内で上書きされるからである。従って、後述の世代間差分データの最大サイズも、そのデータに対応するＰ−ＶＯＬのサイズと同じである。言い換えれば、オンライン更新差分データ要素の書込み先のＪＮＬサブエリアのサイズは、最大で、Ｐ−ＶＯＬと同じサイズとすれば良い（この点は、世代間差分データ及び後述のマージ差分データについても同様である）。
【００４８】
「世代間差分データ」とは、世代間差分データ要素の集合である。「世代間差分データ要素」とは、Ｓ−ＶＯＬ１８７Ｓにオンライン更新差分データ要素が書き込まれることに起因したＣＯＷが発生することによりＳ−ＶＯＬ１８７Ｓから退避されたデータ要素である。具体的には、例えば、未確定世代が世代（Ｎ）の場合、第一ストレージシステム１２５がホスト計算機１０１からマーカ（特定の電子データ）を受領した時に、世代（Ｎ）が確定し、未確定世代が（Ｎ＋１）となる。その場合、ＪＮＬエリア５０３に蓄積されているオンライン更新差分データ（つまり、世代（Ｎ）のＰ−ＶＯＬ１８７Ｐと世代（Ｎ−１）のＰ−ＶＯＬ１８７Ｐとの差分に相当するデータ）が、Ｓ−ＶＯＬ１８７Ｓに書き込まれる。オンライン更新差分データ要素が書き込まれる都度に、ＣＯＷで、Ｓ−ＶＯＬ１８７Ｓからデータ要素が世代間差分データ要素としてＪＮＬエリア５０３に退避される。これにより、Ｓ−ＶＯＬ１８７Ｓは、世代（Ｎ）のＰ−ＶＯＬ１８７Ｐの複製となり、ＪＮＬエリア５０３には、世代（Ｎ−１）に対応した世代間差分データ（すなわち、世代（Ｎ−１）のＳ−ＶＯＬ１８７Ｓと世代（Ｎ−２）のＳ−ＶＯＬ１８７Ｓとの差分に相当するデータ）が蓄積される。このため、Ｓ−ＶＯＬ１８７Ｓの世代は、Ｐ−ＶＯＬ１８７Ｐの世代の一つ前の世代である。
【００４９】
「差分ＢＭ」とは、論理ボリュームの世代間での差分を表すビットマップである。具体的には、例えば、図３の例において、世代（Ｎ）に対応した差分ＢＭは、世代（Ｎ）のＰ−ＶＯＬ１８７Ｐと世代（Ｎ−１）のＰ−ＶＯＬ１８７Ｐとの差分を表すビットマップである。Ｐ−ＶＯＬ１８７Ｐ内の或るブロックに、世代（Ｎ−１）より後の或る時点で初めてライトデータ要素が書き込まれた場合、その或るブロックに対応したビット（世代（Ｎ）に対応した差分ＢＭ内のビット）が、オンにされ（すなわち、ライト発生を表す値（例えば“１”）に更新され）、そのライトデータ要素に対応するオンライン更新差分データ要素が、ＪＮＬエリア５０３に格納される。なお、差分ＢＭを構成する各ビットは、Ｐ−ＶＯＬ１８７Ｐの各ブロックに対応している。各ブロックのサイズは、図７を参照して説明するフォーマット処理によってホストライトサイズとなっている。「ホストライトサイズ」とは、ホスト計算機１０１から書き込まれるデータの単位サイズ（ライトデータ要素のサイズ）である。
【００５０】
なお、後に図１１及び図１２を参照して説明するように、複数の世代分の世代間差分データ及び差分ＢＭのマージが可能である。これにより、消費される記憶容量を削減することができる。以下、マージ後の世代間差分データを「マージ差分データ」と言う。
【００５１】
また、図３には、ソート処理と、リストア処理とが示される。各処理の概要は、以下の通りである。
【００５２】
＜ソート処理＞ＪＮＬエリア５０３には、オンライン更新差分データ要素は、時系列で（すなわち、ＪＮＬエリア５０３に書き込まれた順序で）、並んでいる（敷き詰められている）。ＪＮＬエリア５０３からオンライン更新差分データが読み出されてＳ−ＶＯＬ１８７Ｓに書き込まれる場合、オンライン更新差分データ要素は、時系列ではなくＰ−ＶＯＬ１８７Ｐのアドレス順（アドレスの昇順又は降順）に読み出される。このため、Ｓ−ＶＯＬ１８７Ｓには、アドレス順にオンライン更新差分データ要素が書き込まれ、故に、ＣＯＷでＳ−ＶＯＬ１８７ＳからＪＮＬエリア５０３に書き込まれた世代間差分データ要素はＰ−ＶＯＬ１８７Ｐのアドレス順に並ぶことになる（敷き詰められることになる）。このように、時系列に並んでいるオンライン更新差分データ要素をアドレス順でＳ−ＶＯＬ１８７Ｓに反映することで世代間差分データがアドレス順でＪＮＬエリア５０３に並ぶようにする処理が、「ソート処理」である。なお、後述の第三の実施形態のように、オンライン更新差分データが無いケースでのソート処理は、世代間差分データがアドレス順でＪＮＬエリア５０３に並ぶようにする処理である。
【００５３】
＜リストア処理＞「リストア処理」は、ユーザ又は管理者からの要求に応答してＲ−ＶＯＬ１８７Ｒを作成する処理である。Ｒ−ＶＯＬ１８７Ｒからのリードが可能である。また、それに限らずＲ−ＶＯＬ１８７Ｒに対するライトも可能であるＲ−ＶＯＬ１８７Ｒについてのリード及びライトの処理は、後に、図１４及び図１５を参照して説明する。
【００５４】
図４は、制御メモリ１４５に記憶されているコンピュータプログラム及び情報を示す。以下の説明において、プログラムが主語になる処理は、実際には、そのプログラムを実行するプロセッサ１４３が行う処理である。
【００５５】
制御メモリ１４５には、構成管理テーブル２０１、ＪＮＬエリア管理テーブル２０３、バックアップ世代管理テーブル２０５、第一のＪＮＬ管理テーブル２０７、Ｒ−ＶＯＬアクセス管理テーブル２０９、Ｒ／Ｗプログラム２１３、ライトサイズ管理プログラム２１５、ＪＮＬソートプログラム２１７、ＪＮＬマージプログラム２１９、リストアプログラム２２１及びマーカ処理プログラム２２３が記憶されている。また、制御メモリ１４５には、システム領域２１１がある。Ｒ／Ｗプログラム２１３は、ホスト計算機１０１からのＩ／Ｏコマンドに従うＩ／Ｏを制御する。ライトサイズ管理プログラム２１５は、ホストライトサイズの設定を行う。ＪＮＬソートプログラム２１７は、ソート処理を実行する。ＪＮＬマージプログラム２１９は、複数の世代の世代間差分データをマージする。リストアプログラム２２１はＲ−ＶＯＬ１８７Ｒを作成する。マーカ処理プログラム２２３は、ホスト計算機１０１からのマーカを処理する。制御メモリ１４５に記憶されている各種プログラム及び情報の詳細は、後に説明する。また、以下の説明では、論理ボリュームを「ＶＯＬ」と略記することがある。
【００５６】
図５は、図４に示した構成管理テーブル２０１、ＪＮＬエリア管理テーブル２０３、バックアップ世代管理テーブル２０５及び第一のＪＮＬ管理テーブル２０７の例を示す。なお、図５には、図４に示されていない第二のＪＮＬ管理テーブル（ＪＮＣＢ）３０７と、ＪＮＣＢ３０７で管理されているＪＮＬデータとが示されているが、ＪＮＣＢ３０７及びＪＮＬデータは、制御メモリ１４５には記憶されず、ＰＤＥＶ群（前述の例ではストレージプール）に記憶される。
【００５７】
構成管理テーブル２０１は、Ｐ−ＶＯＬ毎に用意されるテーブルであって、Ｐ−ＶＯＬ及びそれに関したＳ−ＶＯＬ及びＲ−ＶＯＬを管理するためのテーブルである。構成管理テーブル２０１には、例えばＰ−ＶＯＬと、それに関連したＳ−ＶＯＬ及びＰ−ＶＯＬとのそれぞれのＶＯＬについて、［ポート＃］（ＶＯＬに対応したターゲットデバイスに割り当てられているポートの番号）、［ターゲットデバイス＃］（ＶＯＬに対応したターゲットデバイスの番号）、［ＬＤＥＶ＃］（ＶＯＬを同定するための番号）、［ＪＮＬエリア＃］（複数のＪＮＬエリアのうちＶＯＬに対応付けられたＪＮＬエリアの番号）、［状態］（ＶＯＬの状態、例えば、Ｒ／Ｗ不可、Ｒのみ可といったアクセス制限状態）、［容量］（ＶＯＬの容量）、［Ｉ／Ｏサイズ］（前述したホストライトサイズ）、及び［プール＃］（ＶＯＬに割り当てられているストレージプールの番号）が記録される。
【００５８】
ＪＮＬエリア管理テーブル２０３は、Ｐ−ＶＯＬ毎に用意されＰ−ＶＯＬに対応するオンライン更新差分データ、世代間差分データ及びマージ差分データの在り処を管理するためのテーブルである。具体的には、オンライン更新差分データ、世代間差分データ及びマージ差分データのそれぞれについて、［ＪＮＬサブエリア先頭アドレス］（ＪＮＬサブエリアの先頭を表すアドレス）、［容量］（データに対応したＪＮＬサブエリアの容量）、［使用容量］（データが占める容量）、［状態］（例えば、ＪＮＬサブエアリアが普通に使える状態であれば“ノーマル”、ＪＮＬサブエリアが何らかの理由で使えなければ“閉塞”、ＪＮＬの空き容量（容量と使用容量との差分）が所定の閾値より少なければ“容量不足”など）、［ＪＮＣＢ先頭アドレス］（ＪＮＣＢの先頭を表すアドレス）、［容量］（ＪＮＣＢの容量）、及び、［使用容量］（ＪＮＣＢ群が占める容量）がある。なお、「ＪＮＬサブエリア」とは、ＪＮＬエリア５０３の一部分である。また、世代間差分データ及びマージ差分データについては、世代毎に、［ＪＮＬサブエリア先頭アドレス］、［容量］、［使用容量］、［状態］、［ＪＮＣＢ先頭アドレス］、［容量］及び［使用容量］が登録される。
【００５９】
バックアップ世代管理テーブル２０５は、Ｐ−ＶＯＬ毎に用意されており、Ｐ−ＶＯＬに関するバックアップデータを管理するためのテーブルである。バックアップ世代管理テーブル２０５には、例えば、［Ｐ−ＶＯＬ＃］（Ｐ−ＶＯＬの番号）、［世代＃］（最新世代を表す番号）、［Ｓ−ＶＯＬ＃］（Ｐ−ＶＯＬとペアを構成するＳ−ＶＯＬの番号）、［世代＃］（Ｓ−ＶＯＬの最新世代を表す番号）、［取得世代数］（Ｐ−ＶＯＬについてのバックアップの世代の個数）、［バックアップ期間］及び［マージ世代数］（何世代分の世代間差分データが溜まったときにマージ処理を実行するか）が記録される。また、バックアップ世代管理テーブル２０５には、Ｐ−ＶＯＬについての世代毎に、［世代＃］（世代を表す番号）、［バックアップ取得時間］（いつバックアップが取得されたか（言い換えれば、その世代の確定の原因となったマーカ受領の日時））、［ユーザコメント］（ユーザがバックアップを管理するためのユーザ任意の情報）、バックアップの［状態］（例えば、バックアップに成功又は失敗した等）がある。
【００６０】
第一のＪＮＬ管理テーブル２０７は、Ｐ−ＶＯＬ毎に用意され、Ｐ−ＶＯＬに対応したオンライン更新差分データ、世代間差分データ及びマージ差分データを管理するためのテーブルである。オンライン更新差分データについては、例えば、［先頭アドレス］（ＪＮＣＢの先頭アドレス）、［長さ］（オンライン更新差分データのサイズ、例えば、オンライン更新差分データ要素の数）、［作成時刻］（オンライン更新差分データ要素を記憶することになった時刻（例えば、最新世代の確定の原因となったマーカの受領時刻））が記録される。また、世代間差分データについては、［先頭アドレス］、［長さ］及び［作成時刻］が、世代毎に記録される。なお、ここでの［作成時刻］は、対応する世代間差分データがＪＮＬサブエリアに格納された時刻である。同様に、マージ差分データについても、世代毎に、［先頭アドレス］、［長さ］及び［作成時刻］が、世代毎に記録される。なお、ここでの「世代」は、マージ差分データに対応する複数世代のうちの或る世代（例えば、最新又は最古の世代）であり、［作成時刻］は、対応するマージ差分データがＪＮＬサブエリアに格納された時刻である。オンライン更新差分データなどのＪＮＬデータに対応した［先頭アドレス］を参照することで、そのＪＮＬデータに対応したＪＮＣＢを参照することが可能となる。
【００６１】
ＪＮＣＢ３０７は、世代間差分データ及びマージ差分データのそれぞれについて、世代毎に存在する。ＪＮＣＢ３０７は、世代に対応した差分ＢＭとデータ要素の在り処とを管理するためのテーブルである。具体的には、例えば、ＪＮＣＢテーブル３０７には、［デバイス＃］（対応するＰ−ＶＯＬの番号）、［長さ］（対応するＪＮＬデータ（オンライン更新差分データ、世代間差分データ又はマージ差分データ）の長さ）、差分ＢＭ（世代に対応した差分ＢＭ）、及び、対応するＪＮＬデータを構成する各ＪＮＬデータ要素に対応したデータ格納アドレスが記録される。
【００６２】
図６は、オンライン更新差分データ、世代間差分データ及びマージ差分データのうちの世代間差分データを例に採ったデータ管理方式を示す。
【００６３】
図６に示すように、ＪＮＣＢエリア５０１には、複数の世代に対応した複数のＪＮＣＢが記憶され、ＪＮＬエリア５０３には、それら複数の世代に対応した複数のＪＮＬサブエリアが存在する。
【００６４】
指定された世代（例えば世代（ｉ））に対応したＪＮＣＢ３０７内の差分ＢＭから、その世代のＰ−ＶＯＬのどこに更新があったかを知ることができる。また、その世代に対応したＪＮＣＢ３０７に記録されている各データ格納アドレスを参照することで、その世代に対応した世代間差分データを構成する各データ要素がＪＮＬエリア５０３内のどこに存在するのかを知ることができる。
【００６５】
図７は、ホストライトサイズ設定処理のフローを示す。
【００６６】
管理サーバ１１１が、ホスト計算機１０１に、ホストライトサイズの問合せを発行する（ステップ７００１）。ホスト計算機１０１内の所定のコンピュータプログラム（上記問合せに応答してホストライトサイズを回答する機能を有したコンピュータプログラム）がＣＰＵ１０３で実行されることで、ホスト計算機１０１からホストライトサイズが回答される（ステップ７００２）。その所定のコンピュータプログラムとしては、例えば、ファイルシステム或いはデータベース管理システム（ＤＢＭＳ）がある。
【００６７】
管理サーバ１１１は、回答されたホストライトサイズと、そのホストライトサイズに対応したホスト識別子（又はＰ−ＶＯＬの番号など）とを、第一ストレージシステム１２５（及び第二ストレージシステム１６１）に送信する。
【００６８】
ライトサイズ管理プログラム２１５（図４参照）が、管理サーバ１１１からのホスト識別子（又はＰ−ＶＯＬの番号）に対応した各Ｐ−ＶＯＬを特定し、その各Ｐ−ＶＯＬに対応した構成管理テーブル２０１に、管理サーバ１１１からのホストライトサイズを、Ｉ／Ｏサイズとして設定する（ステップ７００４）。
【００６９】
そして、ライトサイズ管理プログラム２１５は、そのホストライトサイズを基に、フォーマット処理を実行する（ステップ７００５）。フォーマット処理では、例えば、上記特定された各Ｐ−ＶＯＬに対応したＪＮＬエリア管理テーブル２０３、バックアップ世代管理テーブル２０５、第一ＪＮＬ管理テーブル２０７及びＪＮＣＢ３０７が作成される。具体的には、例えば、Ｐ−ＶＯＬを構成するブロックのサイズや、ＪＮＬエリア５０３を構成するセグメントのサイズが、ホストライトサイズと同じサイズとして管理される。従って、ＪＮＣＢ３０７内の差分ＢＭを構成するビットの数は、Ｐ−ＶＯＬがホストライトサイズで区切られることにより得られたブロックの数となる。これにより、例えば、オンライン更新差分データ要素のサイズ、Ｓ−ＶＯＬから退避されるデータ要素のサイズ、或いは、Ｐ−ＶＯＬからＳ−ＶＯＬへとコピーされるデータ要素のサイズは、それぞれ、ホストライトサイズとなる。
【００７０】
なお、Ｉ／Ｏサイズとしてホストライトサイズが設定されない場合、作成されるＪＮＬデータ要素のサイズは、Ｉ／Ｏサイズの初期値（例えば、キャッシュメモリ１４７の単位管理サイズ、或いは、ファイルシステムの単位管理ブロックサイズ）である。また、ライトサイズ管理プログラム２１５が、ホスト計算機１０１からホストライトサイズを受けても良い。また、Ｐ−ＶＯＬ毎に、ブロックのサイズや、Ｐ−ＶＯＬとペアを構成するＳ−ＶＯＬのブロックのサイズや、Ｐ−ＶＯＬに関わるＪＮＬサブエリアのセグメントのサイズが異なることがある。なぜなら、Ｐ−ＶＯＬを使用するホスト計算機１０１（又はオペレーティングシステム）が異なれば、ホストライトサイズも異なることがあるためである。具体的には、例えば、第一種のホスト計算機からアクセスされるＰ−ＶＯＬのブロックのサイズは、その第一種のホスト計算機に対応した第一のホストライトサイズであり、第二種のホスト計算機からアクセスされるＰ−ＶＯＬのブロックのサイズは、その第二種のホスト計算機に対応した、第一のホストライトサイズとは異なる第二のホストライトサイズとなることがある。
【００７１】
図８は、Ｐ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。以下、ライトコマンドで指定されているＰ−ＶＯＬを、それぞれ、図８の説明において「対象Ｐ−ＶＯＬ」と言う。また、以下の説明では、説明が冗長になるのを防ぐ観点から、世代Ｋに対応した対象のことを、その対象の名称の後に（Ｋ）を付けて表すことがある。具体的には、例えば、世代（ｊ）に対応したＪＮＣＢを「ＪＮＣＢ（ｊ）」と表し、世代（ｊ−１）に対応したＳ−ＶＯＬのことを「Ｓ−ＶＯＬ（ｊ−１）」と表すことがある。
【００７２】
フロントエンドインタフェース１２７が、ホスト計算機１０１から、ライトコマンド及びライトデータ要素を受信し、メモリ１３７でライトデータ要素を記憶する（ステップ８００１）。ライトコマンドは、プロセッサ１４３に転送される。
【００７３】
Ｒ／Ｗプログラム２１３（図４参照）が、ライトコマンドの受領に応答して、キャッシュメモリ１４７から第一のスロットを確保する（ステップ８００２）。なお、「スロット」とは、キャッシュメモリ１４７の単位管理領域である。スロットのサイズは、例えば、ホストライトサイズよりも大きい。ホストライトサイズが未設定の場合には、初期値として例えばスロットのサイズでＪＮＬデータ要素が作成される。
【００７４】
Ｒ／Ｗプログラム２１３が、対象Ｐ−ＶＯＬ１８７Ｓの未確定時点に対応する差分ＢＭ（最新の差分ＢＭ）における、ライトコマンドで指定されているライト先ブロックに対応したビットを参照する（ステップ８００３）。
【００７５】
もし、そのビットが更新済みを表していれば、Ｒ／Ｗプログラム２１３は、そのビットに対応したデータ格納アドレスを参照し、そのアドレスが表すセグメントを特定する（ステップ８００４）。
【００７６】
一方、ステップ８００３で参照したビットが未更新を表していれば、Ｒ／Ｗプログラム２１３は、対象Ｐ−ＶＯＬ１８７Ｐに対応するＪＮＬエリア管理テーブル２０３を参照することで、対象Ｐ−ＶＯＬ１８７Ｐについてのオンライン更新差分データに対応するＪＮＬサブエリア内の空きセグメントを特定する（ステップ８００５）。なお、もし、空きセグメントが無ければ、新たにＪＮＬサブエリアを確保することが可能である。
【００７７】
Ｒ／Ｗプログラム２１３が、キャッシュメモリ１４７から、第二のスロットを確保する（ステップ８００６）。
【００７８】
Ｒ／Ｗプログラム２１３が、ライトコマンド完了を、ライトコマンドの送信元のホスト計算機１０１に報告する（ステップ８００７）。それに応答して、ライトデータ要素がホスト計算機１０１から送られて来て、フロントエンドインタフェース１２７内のメモリ１３１に記憶される。
【００７９】
Ｒ／Ｗプログラム２１３が、フロントエンドインタフェース１２７内のメモリ１３１に記憶されたライトデータ要素を、第一及び第二のスロットにそれぞれ書き込む（ステップ８００８）。
【００８０】
Ｒ／Ｗプログラム２１３が、対象Ｐ−ＶＯＬ１８７Ｐのオンライン更新差分データに対応したＪＮＣＢ３０７を更新する（ステップ８００９）。具体的には、例えば、ライトデータ要素がオンライン更新差分データ要素として書き込まれる先のセグメント（図８の説明で「ＪＮＬ先セグメント」と言う）に対応したデータ格納アドレスが追加される。また、例えば、ライト先ブロックが未更新であったならば、ライト先ブロックに対応したビット（差分ＢＭ内のビット）が、オン（更新済みを表す値）に更新される。
【００８１】
Ｒ／Ｗプログラム２１３が、第一のスロット内のライトデータ要素を、対象Ｐ−ＶＯＬ１８７Ｐ内のライト先ブロックに書き込み、第二のスロット内のライトデータ要素を、上記ＪＮＬ先セグメント（ステップ８００４又は８００５で特定されたセグメント）に書き込む（ステップ８０１０）。第一及び第二のスロット内のライトデータ要素は、同じタイミングで書き込まれてもよいし、異なるタイミングで書き込まれてもよい。
【００８２】
図９は、マーカ受領及びマーカ受領に応答して行われる処理のフローを示す。なお、図９及び次の図１０の説明では、マーカで指定されているＰ−ＶＯＬを「対象Ｐ−ＶＯＬ」と言い、対象Ｐ−ＶＯＬとペアを構成するＳ−ＶＯＬを「対象Ｓ−ＶＯＬ」と言う。
【００８３】
フロントエンドインタフェース１２７が、ホスト計算機１０１からマーカを受領する（ステップ９００１）。受領したマーカは、プロセッサ１４３に転送される。
【００８４】
マーカ処理プログラム２２３は、マーカの受領に応答して、対象Ｐ−ＶＯＬ１８７Ｐ及び対象Ｓ−ＶＯＬ１８７Ｓの世代をそれぞれ１インクリメントする（ステップ９００２）。例えば、対象Ｐ−ＶＯＬ１８７Ｐの世代が、ｊからｊ＋１に更新され、対象Ｓ−ＶＯＬ１８７Ｓの世代が、ｊ−１からｊに更新される。具体的には、例えば、バックアップ世代管理テーブル２０５において、対象Ｐ−ＶＯＬ及び対象Ｓ−ＶＯＬのそれぞれの世代＃が更新される。すなわち、対象Ｐ−ＶＯＬ１８７Ｐの世代（ｊ）が確定し、世代（ｊ＋１）は、未確定の世代である。
【００８５】
マーカ処理プログラム２２３は、第一のＪＮＬ管理テーブル２０７に、オンライン更新差分データ（ｊ＋１）に対応した［先頭アドレス］、［長さ］及び［作成時刻］を追加する（ステップ９００３）。すなわち、オンライン更新差分データ（ｊ＋１）が格納されるＪＮＬサブエリアが用意される。これにより、マーカ受領直のオンライン更新差分データ（ｊ）が、オンライン更新差分データ（ｊ＋１）で上書きされないようにすることができる。
【００８６】
マーカ処理プログラム２２３は、バックアップ世代管理テーブル２０５に、確定した世代（ｊ）の行を追加し、その行に、バックアップ取得時間（マーカ受領時刻）や、マーカ受領時に同時に受領したユーザコメントなどを登録する（ステップ９００４）。
【００８７】
マーカ処理プログラム２２３は、第一のＪＮＬ管理テーブル２０７に、世代間差分データについて世代（ｊ−１）の行を追加する（ステップ９００５）。その際、Ｓ−ＶＯＬの［Ｉ／Ｏサイズ］（つまりホストライトサイズ）に基づいて、ＪＮＣＢ（ｊ−１）が作成される（具体的には、例えば、差分ＢＭ（ｊ−１）を構成するビットの数が、その［Ｉ／Ｏサイズ］のブロックの数とされる）。追加された行には、ＪＮＣＢ（ｊ−１）の先頭位置を［先頭アドレス］が書かれる。ＪＮＣＢ（ｊ−１）は、ソート処理に基づき更新される。そのソート処理を、図１０を参照して説明する。
【００８８】
図１０は、ソート処理のフローを示す。なお、図１０に示すオンライン更新差分データ及びそれに対応する差分ＢＭは、世代（ｊ）に対応している。
【００８９】
マーカ受領に応答して、ＪＮＬソートプログラム２１７（図４参照）が起動する。ＪＮＬソートプログラム２１７が、図１０に示す流れで、ソート処理を実行する。
【００９０】
すなわち、ＪＮＬソートプログラム２１７は、対象Ｐ−ＶＯＬ１８７Ｐに対応した差分ＢＭ（ｊ）におけるビットを、先頭ビットから順次参照する（ステップ１０００１）。参照したビットがオンであれば（更新済みを表していれば）、そのビットについて、ステップ１０００３が行われ、参照したビットがオフであれば（未更新を表していれば）、次のビットが参照される（ステップ１０００２）。
【００９１】
ＪＮＬソートプログラム２１７は、差分ＢＭ（ｊ）におけるオンのビットに対応した、差分ＢＭ（ｊ−１）におけるビットをオンにする（ステップ１０００３）。
【００９２】
ＪＮＬソートプログラム２１７は、ＪＮＣＢ（ｊ−１）内に、ステップ１０００３でオンにしたビットに対応するデータ格納アドレスを追加する（ステップ１０００４）。そのデータ格納アドレスは、ステップ１０００５での退避先のセグメント（ＪＮＬサブエリア（ｊ−１）内のセグメント）を表す。その退避先のセグメントは、直前回の退避先セグメントの次のセグメントである。これにより、対象Ｓ−ＶＯＬ（ｊ）から退避された各データ要素がＪＮＬサブエリア（ｊ−１）内の連続したセグメントに書き込まれることになる。
【００９３】
ＪＮＬソートプログラム２１７は、差分ＢＭ（ｊ−１）におけるオンにされたビットに対応したブロック（対象Ｓ−ＶＯＬ１８７Ｓ内のブロック）に記憶されているデータ要素“Ａ”を、そのブロックから上記退避先のセグメントに退避する（ステップ１０００５）。
【００９４】
ＪＮＬソートプログラム２１７は、退避元のブロック（対象Ｓ−ＶＯＬ（ｊ）内のブロック）に、差分ＢＭ（ｊ）におけるオンのビットに対応したデータ格納アドレスが表すセグメント（ＪＮＬサブエリア（ｊ）内のセグメント）に記憶されているデータ要素“Ｂ”を書き込む（ステップ１０００６）。
【００９５】
以上のステップ１０００５及び１０００６により、オンライン更新差分データ要素“Ｂ”が対象Ｓ−ＶＯＬ（ｊ）内のブロックに書き込まれることに起因したＣＯＷで、そのブロックに記憶されているデータ要素“Ａ”がＪＮＬサブエリア（ｊ−１）内のセグメントに退避され、オンライン更新差分データ要素“Ｂ”が、対象Ｓ−ＶＯＬ（ｊ）内のブロックに書き込まれる。
【００９６】
以上のように、差分ＢＭ（ｊ）を構成するビットが、ブロックのアドレス順に参照され、オンのビットが検出される都度に、ステップ１０００３乃至１０００６が行われることで、ＪＮＬデータ要素がソートされる。すなわち、ＪＮＬサブエリア（ｊ）に時系列に連続していたオンライン更新差分データ要素が、ブロックのアドレス順に対象Ｓ−ＶＯＬに反映されることで、ＪＮＬサブエリア（ｊ−１）に、世代間差分データ要素がブロックのアドレス順に連続することになる。
【００９７】
なお、以上のソート処理が終了した後、オンライン更新差分データに対応した差分ＢＭを構成する全てのビットがオフとされる（オンライン更新差分データ要素がＳ−ＶＯＬに書き込まれる都度に、そのデータ要素に対応したビットがオフとされても良い）。
【００９８】
図１１は、世代間差分データのマージ処理のフローである。図１２は、そのマージ処理に関するデータ要素の動きを示す。以下、図１１及び図１２を参照して、マージ処理を説明する。
【００９９】
図１２に示すように、ＪＮＬマージプログラム２１９（図４参照）は、或る世代数分（例えば（ｍ＋１）世代（世代（Ｎ）〜世代（Ｎ＋ｍ））の世代間差分データが溜まっていることを検出したときに、（ｍ＋１）世代分の世代間差分データをマージ差分データに変換するマージ処理を開始する。なお、マージ処理の開始の契機として、（ｍ＋１）世代分の世代間差分データが溜まっていることが検出されたということは一例にすぎず、他の契機、例えば、直前回のマージ処理から所定期間が経過したであっても良い。
【０１００】
ＪＮＬマージプログラム２１９は、バックアップ世代管理テーブル２０５でマージ対象の世代（Ｎ）〜世代（Ｎ＋ｍ）の［状態］を“マージ中”にする。そして、ＪＮＬマージプログラム２１９は、マージ対象の最古の世代（Ｎ）の世代間差分データを、対象として選択する（ステップ１１００１）。
【０１０１】
ＪＮＬマージプログラム２１９は、対象の世代間差分データに対応した差分ＢＭ（Ｎ）の先頭ビットを参照位置として決定する（ステップ１１００２）。
【０１０２】
ＪＮＬマージプログラム２１９は、差分ＢＭ（Ｎ）について参照位置とされているビットがオンであれば、ステップ１１００４を実行し、そのビットがオフであれば、ステップ１１００９を実行する。以下、図１１及び図１２の説明において、その参照位置とされているビットを「対象ビット」と言い、そのビットがオンであれば「対象オンビット」と言い、そのビットがオフであれば「対象オフビット」と言う。
【０１０３】
ＪＮＬマージプログラム２１９は、今回作成するマージ差分データに対応した差分ＢＭ（以下、図１１及び図１２の説明において、「マージ差分ＢＭ」と言う）について、上記対象ビットと同じ位置にあるビットがオフであれば、ステップ１１００５を実行し、そのビットがオンであれば、ステップ１１００９を実行する。
【０１０４】
ＪＮＬマージプログラム２１９は、差分ＢＭ（Ｎ）における対象オンビットに対応したデータ格納アドレスを探し（ステップ１１００５）、そのアドレスを特定する（ステップ１１００６）。そして、ＪＮＬマージプログラム２１９は、そのアドレスが示すセグメントに記憶されている世代間差分データ要素を、そのセグメントから、今回作成されるマージ差分データに対応したＪＮＬサブエリア内のセグメント（直前回のコピー先のセグメントの次のセグメント）にコピーする（ステップ１１００７）。そして、ＪＮＬマージプログラム２１９は、マージ差分ＢＭにおける、上記対象ビットと同じ位置にあるビットを、オンにする（ステップ１１００８）。
【０１０５】
ＪＮＬマージプログラム２１９は、差分ＢＭ（Ｎ）において、これまでの参照位置の次の位置に未参照のビットがあれば（ステップ１１００９でＹ）、次のビットを参照位置として（ステップ１１０１０）、ステップ１１００３を実行する。次の位置に未参照のビットが無ければ（ステップ１１００９でＮ）、その世代（Ｎ）についての処理が終了となり（ステップ１１０１１）、次の世代があれば（ステップ１１０１２でＹ）、次の世代（Ｎ＋１）について、ステップ１１００１が行われる。もし、次の世代が無ければ（すなわち、直前回に処理された世代が（Ｎ＋ｍ）であれば（ステップ１１０１２でＮ）、マージ処理の終了となる。
【０１０６】
以上の流れによれば、図１２に示すように、マージ対象の世代（Ｎ）〜（Ｎ＋ｍ）のうちの古い世代に対応した世代間差分データから先に処理される。世代間差分データに対応した差分ＢＭではオンビットであって、マージ差分ＢＭにおいて、そのオンビットに対応したビットがオフであれば、そのオンビットに対応した世代間差分データ要素が、マージ差分データに対応したＪＮＬサブエリアにコピーされる。一方、世代間差分データに対応した差分ＢＭではオンビットであり、マージ差分ＢＭにおいても、そのオンビットに対応したビットがオンであれば、世代間差分データに対応した差分ＢＭ内のオンビットに対応したデータ要素はコピーされない。
【０１０７】
要するに、古い世代に対応した世代間差分データ要素ほど、優先的に、マージ差分データに対応したＪＮＬサブエリアにコピーされる。具体的には、例えば、図１２によれば、世代（Ｎ）と世代（Ｎ＋ｍ）の２つの世代について、Ｐ−ＶＯＬの先頭ブロックに対応した世代間差分データ要素“Ａ”及び“Ｇ”が存在している。この場合、前述したように、古い世代に対応した世代間差分データ要素ほど優先されるので、世代（Ｎ）についてのデータ要素“Ａ”は、マージ差分データに対応したＪＮＬサブエントリにコピーされるが、その世代（Ｎ）よりも新しい世代についてのデータ要素“Ｇ”は、そのＪＮＬサブエントリにはコピーされない。
【０１０８】
なお、このマージ処理では、古い世代から先に処理されるが、新しい世代から先に処理されても良い。但し、この場合、世代間差分データに対応した差分ＢＭではオンビットであり、マージ差分ＢＭにおいても、そのオンビットに対応したビットがオンであれば、世代間差分データに対応した差分ＢＭ内のオンビットに対応したデータ要素が、マージ差分データに対応したＪＮＬサブエリアに記憶されている、オンビットに対応したマージ差分データ要素に上書きされても良い。また、マージ差分データが作成された場合、そのマージ差分データの基になった複数世代分の世代間差分データは、マージ差分データの作成完了の直後に、又は計算機（例えば、ホスト計算機１０１又は管理サーバ１１１）からの指示に応答して、削除されても良い。
【０１０９】
また、世代間差分データやマージ差分データが古い世代から削除されて良い。この場合、例えば、図示しないＪＮＬ削除プログラムが、削除対象の世代に対応したＪＮＣＢ及びＪＮＬデータを解放し空きの領域として管理する。また、ＪＮＬ削除プログラムは、第一のＪＮＬ管理テーブル２０７及びバックアップ世代管理テーブル２０５から、削除対象の世代に対応したエントリを削除する。
【０１１０】
図１３は、リストア処理のフローを示す。
【０１１１】
ユーザによって指定されたリストア対象世代を有するリストア要求を、リストアプログラム２２１（図４参照）が、ホスト計算機１０１又は管理サーバ１１１から受領する。具体的には、例えば、リストアプログラム２２１が、ホスト計算機１０１又は管理サーバ１１１からの要求に応答して、バックアップ世代管理テーブル２０５などの情報を、ホスト計算機１０１又は管理サーバ１１１に送信する。ユーザは、そのテーブル２０５などにある［世代＃］、［バックアップ取得時間］及び［ユーザコメント］などを参照して、リストア対象世代を決定し、決定したリストア対象世代をホスト計算機１０１又は管理サーバ１１１に指定する。その指定されたリストア対象世代（Ｎ）を有するリストア要求が、ホスト計算機１０１又は管理サーバ１１１からリストアプログラム２２１に送られる。
【０１１２】
リストアプログラム２２１は、リストア要求に応答して、リストア処理を実行する。リストア処理では、Ｒ−ＶＯＬアクセス管理テーブル２０９が作成されるＲ−ＶＯＬアクセス管理テーブル２０９は、複数のアドレスレコードで構成される。各アドレスレコードはＲ−ＶＯＬを構成する各ブロック（仮想的なブロック）に対応し、故に、差分ＢＭにおける各ビットに対応する。
【０１１３】
リストアプログラム２２１は、リストア要求に応答して、世代間差分データ（もしくはマージ差分データ）の差分ＢＭを、リストア対象世代（Ｎ）から順次新しい世代（Ｎ＋１）、（Ｎ＋２）へと参照する（ステップ１２００１）。以下、参照先の差分ＢＭがリストア対象世代（Ｎ）である場合を例に採り説明する。
【０１１４】
リストアプログラム２２１は、差分ＢＭ（Ｎ）の先頭ビットから、オンかオフかの判定を行う（ステップ１２００２）。参照したビットがオンだった場合、リストアプログラム２２１は、そのオンビットに対応したアドレスレコードを参照する（ステップ１２００３）。そのレコードに無効なアドレス（例えばＮｕｌｌ）があれば、リストアプログラム２２１は、参照したオンビットに対応するデータ格納アドレスを、ＪＮＣＢ（Ｎ）内から読み出して（ステップ１２００４）、そのレコードに登録し（ステップ１２００５）、一方、そのレコードに有効なアドレスが登録済みであれば、次のビットを参照する（ステップ１２００６）。
【０１１５】
以上のステップ１２００２乃至１２００６が、リストア対象世代（Ｎ）だけでなく、それよりも新しい世代（Ｎ＋１）及び（Ｎ＋２）についても行われることでＲ−ＶＯＬアクセス管理テーブル２０９が完成する。すなわち、例えば、ステップ１２００６において、参照先となる次のビットが無ければ、リストア対象世代（Ｎ）の次の世代（Ｎ＋１）について、ステップ１２００２乃至１２００６が行われる。
【０１１６】
以上のようにしてＲ−ＶＯＬアクセス管理テーブル２０９が作成されたならばＲ−ＶＯＬへのリード処理（及びライト処理）が可能になる。この場合、構成管理テーブル２０１において、Ｒ−ＶＯＬに対応した［状態］が“ノーマル”（つまりＲ／Ｗ可）となる（それ以前は、その［状態］は、“Ｒ／Ｗ不可”である）。
【０１１７】
ちなみに、Ｒ−ＶＯＬアクセス管理テーブル２０９を作成することに代えて、実ＶＯＬとしてのＲ−ＶＯＬが用意されても良い。この場合は、例えば、Ｒ−ＶＯＬアクセス管理テーブル２０９を作成する方法と同じ方法でデータ格納アドレスが特定され、特定されたアドレスが表すセグメントから、Ｒ−ＶＯＬ（実ＶＯＬ）内の、そのアドレスが対応するビットに対応したブロックに、データ要素がコピーされても良い。
【０１１８】
図１４は、Ｒ−ＶＯＬ管理テーブル２０９を利用したリード処理のフローを示す。
【０１１９】
Ｒ／Ｗプログラム２１３（図４参照）が、ホスト計算機１０１から、図１３に示すＲ−ＶＯＬ１８７Ｒを指定したリードコマンドを受信する（ステップ１４００１）。
【０１２０】
Ｒ／Ｗプログラム２１３は、そのリードコマンドで指定されているリード元ブロックに対応したレコード（Ｒ−ＶＯＬアクセス管理テーブル２０９内のレコード）を参照する（ステップ１４００２）。
【０１２１】
ステップ１４００２の結果、参照先のレコードに有効なアドレスが登録されていれば、Ｒ／Ｗプログラム２１３は、そのアドレスが表すセグメントからデータ要素を読出し、そのデータ要素をホスト計算機１０１に送信する（ステップ１４００３）。
【０１２２】
一方、ステップ１４００３の結果、参照先のレコードに無効なアドレスが登録されていれば、Ｒ／Ｗプログラム２１３は、Ｒ−ＶＯＬに対応するＳ−ＶＯＬ（フルバックアップボリューム）内の、上記リード元ブロックと同じアドレスのブロックから、データ要素を読出し、そのデータ要素をホスト計算機１０１に送信する（ステップ１４００４）。
【０１２３】
図１５は、Ｒ−ＶＯＬ管理テーブル２０９を利用したライト処理のフローを示す。
【０１２４】
Ｒ／Ｗプログラム２１３が、ホスト計算機１０１から、図１３に示すＲ−ＶＯＬ１８７Ｒを指定したライトコマンドを受信する（ステップ１５００１）。Ｒ／Ｗプログラム２１３は、そのライトコマンドで指定されているライト先ブロックに対応したレコード（Ｒ−ＶＯＬアクセス管理テーブル２０９内のレコード）を参照する。
【０１２５】
参照先のレコードに有効なアドレス“アドレス３”が登録されていれば、Ｒ／Ｗプログラム２１３は、ストレージプール１８９Ａ又は１８９Ｂから、ホストライトサイズ分の領域を確保し（ステップ１５００２）、上記の有効なアドレス“アドレス３”を、その確保された領域を表すアドレス“アドレスＰ１”に変更する（ステップ１５００３）。そして、Ｒ／Ｗプログラム２１３は、その確保されている領域に、ライトデータ要素を書き込む（ステップ１５００４）。
【０１２６】
なお、参照先のレコードに無効なアドレスが登録されていれば、その無効なアドレスが、ストレージプール１８９Ａ又は１８９Ｂ内の確保された領域を表すアドレスに変更される。
【０１２７】
図２０は、Ｒ−ＶＯＬ有りでのソート処理のフローを示す。
【０１２８】
マーカを受領すると、オンライン更新差分データがＳ−ＶＯＬにコピーされることで、Ｓ−ＶＯＬに格納されていたデータ要素が退避される。このため、Ｒ−ＶＯＬが有る状態でマーカが受領されると、Ｒ−ＶＯＬアクセス管理テーブルに格納されている各アドレスと各データ要素との対応関係が変わってしまうおそれがある。具体的には、例えば、Ｒ−ＶＯＬアクセス管理テーブルにおける参照先レコードに無効なアドレスが登録されているが故に、その参照先レコードに対応したブロック（Ｓ−ＶＯＬ内のブロック）に記憶されているデータ要素のリードが期待できるが、上記マーカ受領によりそのブロックにオンライン更新差分データ要素がコピーされることになると、そのデータ要素がＪＮＬサブエリアに退避されるため、期待されるデータ要素をＳ−ＶＯＬから取得できなくなる。
【０１２９】
そのため、図２０を参照して説明する処理が行われる。
【０１３０】
まず、ステップ１０００１〜１０００２が行われる（ステップ２０００１）。
【０１３１】
次に、ＪＮＬソートプログラム２１７は、Ｒ−ＶＯＬにアクセスがあった場合に、対応するＳ−ＶＯＬにアクセスすることになるかどうかを判断する（ステップ２０００２）。具体的には、ＪＮＬソートプログラム２１７は、Ｒ−ＶＯＬアクセス管理テーブル２０９に、無効なアドレスが登録されているか否かを判断する。
【０１３２】
その結果、無効なアドレスが見つかれば、ＪＮＬソートプログラム２１７は、無効なアドレスが登録されているレコードに対応したブロックを特定し、特定したブロックに対応するデータ各要素アドレス（差分ＢＭ（ｊ−１）内のビットに対応したデータ格納アドレス）“アドレス３”を参照する。そして、ＪＮＬソートプログラム２１７は、そのアドレス“アドレス３”が表すセグメントに、無効なアドレスが登録されているレコードに対応したブロック（Ｓ−ＶＯＬ内のブロック）に記憶されているデータ要素“Ａ”を退避する（ステップ２０００３）。ＪＮＬソートプログラム２１７は、Ｒ−ＶＯＬアクセス管理テーブル２０９において、無効なアドレス“Ｎｕｌｌ”を、データ要素“Ａ”の退避先セグメントを表すアドレス“アドレスＰ１”に変更する（ステップ２０００４）。そして、ＪＮＬソートプログラム２１７は、退避元のブロックに、そのブロックに対応したオンライン更新差分データ要素“Ｂ”を書き込む（ステップ２０００５）。
【０１３３】
以上の処理により、Ｒ−ＶＯＬ有りの状態でマーカを受領しても、Ｒ−ＶＯＬ内の各ブロックと各データ要素との対応関係を維持したソート処理を行うことができる。
【実施例２】
【０１３４】
以下、本発明の第二の実施形態を説明する。その際、第一の実施形態との共通点については、説明を省略或いは簡略し、第一の実施形態との相違点を主に説明する（なお、この点は、第二の実施形態に限らず、第三の実施形態以降も同様である）。
【０１３５】
第二の実施形態では、オンライン更新差分データ要素は、Ｐ−ＶＯＬのビフォアＪＮＬデータ要素である。
【０１３６】
図１６は、第二の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。
【０１３７】
Ｒ／Ｗプログラム２１３は、ホスト計算機１０１からライトコマンドを受領すると（ステップ１６００１）、ライトデータ要素を格納するためのスロットを確保する（ステップ１６００２）。さらに、Ｒ／Ｗプログラム２１３は、オンライン更新差分データに対応した差分ＢＭ内の、ライトコマンドで指定されているライト先ブロックに対応したビットを参照する（ステップ１６００３）。
【０１３８】
ステップ１６００３の結果、参照先がオンビットの場合、Ｒ／Ｗプログラム２１３は、ステップ１６００８以降を実行する（ステップ１６００４）。すなわち、ライト先ブロックに記憶されているデータ要素がオンライン更新差分データ要素としてＪＮＬサブエントリに退避されることは行われない。
【０１３９】
一方、ステップ１６００３の結果、参照先がオフビットの場合、Ｒ／Ｗプログラム２１３は、対象Ｐ−ＶＯＬ（ライトコマンドで指定されているＰ−ＶＯＬ）１８７Ｐに対応するＪＮＬエリア管理テーブル２０３を参照することで、対象Ｐ−ＶＯＬ１８７Ｐについてのオンライン更新差分データに対応するＪＮＬサブエリア内の空きセグメントを特定する（ステップ１６００５）。なお、もし、空きセグメントが無ければ、新たにＪＮＬサブエリアを確保することが可能である。
【０１４０】
ステップ１６００５の次に、Ｒ／Ｗプログラム２１３は、ライト先ブロックに記憶されているデータ要素を、上記特定された空きセグメントに退避する（ステップ１６００６）。そして、Ｒ／Ｗプログラム２１３は、オンライン更新差分データに対応するＪＮＣＢを更新する（ステップ１６００７）。具体的には、Ｒ／Ｗプログラム２１３は、ライト先ブロックに対応したビット（差分ＢＭ内の上記参照先のオフビット）をオンにし、そのライト先ブロックに対応したデータ格納アドレスとして、上記空きセグメントを表すアドレスを追加する。
【０１４１】
その後、Ｒ／Ｗプログラム２１３が、フロントエンドインタフェース１２７内のメモリ１３１に記憶されているライトデータ要素を、ステップ１６００２で確保されたスロットに書き込む（ステップ１６００８）。
【０１４２】
Ｒ／Ｗプログラム２１３は、そのスロットに書き込まれているライトデータ要素を、Ｐ−ＶＯＬ内のライト先ブロックに書き込む（ステップ１６００９）。
【０１４３】
図１７は、第二の実施形態でのソート処理のフローを示す。
【０１４４】
ステップ１０００１〜１０００５と同じ処理が行われる（ステップ１７００１〜１７００５）。
【０１４５】
その後、ＪＮＬソートプログラム２１７は、オンライン更新差分データに対応する差分ＢＭ内の各オンビットに対応した、Ｐ−ＶＯＬ内の各ブロックから、Ｓ−ＶＯＬ内の同じアドレスの各ブロックに、データ要素をコピーする（ステップ１７００６）。
【実施例３】
【０１４６】
第三の実施形態では、オンライン更新差分データが格納されない。このため、第一及び／又は第二の実施形態と、以下の点で相違する。
【０１４７】
例えば、図１８のステップ１８００１〜１８００５に示すように、Ｐ−ＶＯＬに対するライト処理では、Ｐ−ＶＯＬについてのＪＮＬデータ要素がＪＮＬエリアに格納されない。
【０１４８】
また、例えば、ソート処理では、図１９に示すように、図１７と同じソート処理が行われる。すなわち、図１９におけるステップ１９００１〜１９００６は、図１７におけるステップ１７００１〜１７００６とそれぞれ同じである。
【０１４９】
図２１は、第三の実施形態（及び第二の実施形態）におけるマーカ受領直後のＰ−ＶＯＬのライト処理を示す。以下の説明では、Ｓ−ＶＯＬから退避されるべき全てのデータ要素のうちの一部のデータ要素が未だ退避されていないタイミングが考慮されている。
【０１５０】
Ｒ／Ｗプログラム２１３は、ライトコマンドを受領すると（ステップ２１００１）、ライトコマンドで指定されているＶＯＬのボリューム属性を確認する（ステップ２１００２）。Ｒ／Ｗプログラム２１３は、そのＶＯＬがＰ−ＶＯＬであると判定したら、そのＰ−ＶＯＬについての最新の差分ＢＭ内の、ライト先ブロックに対応したビットを参照する（ステップ２１００３）。
【０１５１】
そのビットが、図２１に示すようにオンであれば、ライト先ブロックに記憶されているデータ要素がライトデータ要素に上書きされる前に、そのデータ要素が、Ｓ−ＶＯＬにコピーされなければならない。そのために、Ｒ／Ｗプログラム２１３は、ライトデータ要素に対応した第一のスロットの確保と、Ｐ−ＶＯＬから退避されるデータ要素に対応した第二のスロットの確保と、Ｓ−ＶＯＬから退避されるデータ要素に対応した第三のスロットの確保とを行う（ステップ２１００４）。
【０１５２】
その後、Ｒ／Ｗプログラム２１３は、ライト先ブロックと同じアドレスのブロック（Ｓ−ＶＯＬ内のブロック）から第三のスロットを介してＪＮＬサブエリアにデータ要素を退避する（ステップ２１００５）。また、Ｒ／Ｗプログラム２１３は、ライト先ブロックから第二のスロットを介してライト先ブロックと同じアドレスのブロック（Ｓ−ＶＯＬ内のブロック）にデータ要素を退避する（ステップ２１００６）。
【０１５３】
Ｒ／Ｗプログラム２１３は、ライトコマンドに対応する応答をホスト計算機１０１に送信し（ステップ２１００７）、それに応答してライトデータ要素をホスト計算機１０１から受領し（ステップ２１００８）、受領したライトデータ要素を第一のスロットに書き込む（ステップ２１００９）。第一のスロットに書き込まれたライトデータ要素は、Ｐ−ＶＯＬ内のライト先ブロックに書き込まれる。
【０１５４】
なお、これまでの説明では、基本的に、取得された第一のＪＮＬデータ要素（例えばオンライン更新差分データ要素）が、ＪＮＬサブエリアに存在する第二のＪＮＬデータ要素と同じブロックに対応しているならば、第二のＪＮＬデータ要素はＪＮＬサブエリアにおいて第一のＪＮＬデータ要素に上書きされ、それ故、ＪＮＬデータ（例えばオンライン更新差分データ）の最大サイズは、Ｐ−ＶＯＬやＳ−ＶＯＬと同じサイズとされていた。しかし、それに限らず、取得されたＪＮＬデータ要素は上書きされることなくＪＮＬサブエリアに蓄積されていっても良い。この場合、オンライン更新差分データ、世代間差分データ及びマージ差分データは、いずれも、Ｐ−ＶＯＬやＳ−ＶＯＬのサイズを超える可能性がある。
【０１５５】
さて、前述したＰ−ＶＯＬ、Ｓ−ＶＯＬ、Ｒ−ＶＯＬ及びＪＮＬ関連エリアは、複数のストレージシステムに分散して存在しても良い。例えば、Ｐ−ＶＯＬや、Ｐ−ＶＯＬに対応した差分ＢＭを記憶するＪＮＬ関連エリアは、第一のストレージシステム内に存在し、Ｓ−ＶＯＬや、Ｓ−ＶＯＬの各世代に対応した差分ＢＭ及び世代間差分データを記憶するＪＮＬ関連エリアは、第一のストレージシステムとは別のストレージシステム内に存在しても良い。また、Ｒ−ＶＯＬは、第一のストレージシステムとその別のストレージシステムのどちらに存在しても良い。また、Ｒ−ＶＯＬが、第一のストレージシステムに存在し、Ｒ−ＶＯＬ内に存在するデータ要素は、別のストレージシステムに存在しても良い。
【０１５６】
以下、幾つかの具体例を説明する。
【実施例４】
【０１５７】
図２２は、本発明の第四の実施形態に係る計算機システムの構成を示す。
【０１５８】
第一のストレージシステム１２５のリモートコピー（以下、「ＲＣ」と略すことがある）の相手として、第三のストレージシステム６０１が存在する。Ｐ−ＶＯＬ１８７Ｐが、第一のストレージシステム１２５に存在し、Ｓ−ＶＯＬ１８７Ｓが、第三のストレージシステム６０１に存在する。第三のストレージシステム６０１は、第一のネットワーク１２１に接続されており、例えば第一のストレージシステム１２５と同様の構成を有する。具体的には、例えば、第三のストレージシステム６０１は、キャッシュメモリ７０３を有する。また、第三のストレージシステム６０１は、フロントエンドインタフェースとして、ＲＣ用ＩＦ７０１Ｒと、ホストＩＦ７０１Ｈとを有する（「ＩＦ」は、インタフェースの略である）。ホストＩＦ７０１Ｈが、第一のネットワーク１２１に接続されており、ＲＣ用ＩＦ７０１Ｒと、第一のストレージシステム１２５内のＲＣ用ＩＦ１２７Ｒが、第三のネットワーク１２４で接続されている。第三のネットワーク１２４に、バックアップサーバ５０１が接続されている。第三のネットワーク１２４は、第一又は第二のネットワーク１２１又は１２３と同じネットワークであっても良いし、ストレージシステム間特有のネットワークであっても良い。また、第一のストレージシステム１２５と第三のストレージシステム６０１は、物理的に離れたシステムとするが、物理的には離れていないが論理的に離れていても良い。
【０１５９】
制御メモリ１４５（及び、第三のストレージシステム６０１内の図示しない制御メモリ）に、リモートコピーを行うための管理情報（ＲＣ用管理情報）が記憶される。ＲＣ用管理情報は、リモートコピーに関する構成情報を含み、その構成情報は、例えば、どのＰ−ＶＯＬとどのＳ−ＶＯＬがペアを構成しているかなどを表す情報である。その制御情報が制御メモリ１４５に記憶されていることで、第一のストレージシステム１２５から第三のストレージシステム６０１へのリモートコピーが可能となる。
【０１６０】
第一のストレージシステム１２５には、Ｐ−ＶＯＬ１８７Ｐの他に、オンライン更新差分データが格納されるＪＮＬエリア５０３Ｌがある。具体的には、図２３に示すように、そのＪＮＬエリア５０３Ｌを含んだＪＮＬ関連エリア１８８Ｌがある。
【０１６１】
第三のストレージシステム６０１には、Ｓ−ＶＯＬ１８７Ｓの他に、ＪＮＬエリア５０３Ｒがある。具体的には、図２３に示すように、そのＪＮＬエリア５０３Ｒを含んだＪＮＬ関連エリア１８Ｒがある。ＪＮＬエリア５０３Ｒには、オンライン更新差分データ（第一のストレージシステム１２５から送られて来たデータ）、世代間差分データ及びマージ差分データが格納される。
【０１６２】
図２２に示すような計算機システム（リモートコピーが行われるシステム）では、以下の方式１〜方式４、
方式１（転送方式：断続的、ＪＮＬ取得方法：最新）
方式２（転送方式：断続的、ＪＮＬ取得方法：全て）
方式３（転送方式：差分  、ＪＮＬ取得方法：最新）
方式４（転送方式：差分  、ＪＮＬ取得方法：全て）
のいずれかの方式での管理が可能である。
【０１６３】
「転送方式：断続的」とは、第一のストレージシステム１２５がライトデータ要素をホスト計算機１０１から受ける都度に、そのライトデータ要素（又はそのライトデータ要素によって更新される更新前データ要素）を第三のストレージシステム６０１に転送する方式である。
【０１６４】
「転送方式：差分」とは、第一のストレージシステム１２５がホスト計算機１０１からマーカを受領したことに応答してのみオンライン更新差分データを第三のストレージシステム６０１に転送する方式である。
【０１６５】
「ＪＮＬ取得方法：最新」とは、ＪＮＬエリア５０３内の或るＪＮＬデータ要素に対応した或るブロックについて新たなＪＮＬデータ要素が取得された場合には、その或るＪＮＬデータ要素がその新たなＪＮＬデータ要素によって上書きされる方法である。
【０１６６】
「ＪＮＬ取得方法：全て」とは、或るＪＮＬデータ要素に対応した或るブロックについて新たなＪＮＬデータ要素が取得された場合には、その或るＪＮＬデータ要素の他にその新たなＪＮＬデータ要素もＪＮＬエリアに記憶される方法である。
【０１６７】
以下、幾つかの具体例を説明する。
【０１６８】
図２３は、第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式１が採用されたフローを示す。図２３では、Ｐ−ＶＯＬのＪＮＬデータ要素は、アフターＪＮＬデータ要素である。以下の説明では、図には示していないが、混同を避けるために、第一のストレージシステム１２５内の制御プロセッサ１４３で実行されるＲ／Ｗプログラム２１３を、「Ｒ／Ｗプログラム２１３Ｌ」と言い、第三のストレージシステム６０１内のプロセッサで実行されるＲ／Ｗプログラム２１３を「Ｒ／Ｗプログラム２１３Ｒ」と言う。
【０１６９】
Ｒ／Ｗプログラム２１３Ｌが、Ｐ−ＶＯＬ１８７Ｐを指定したライトコマンドをホスト計算機１０１から受信すると（ステップ２３００１）、キャッシュメモリ１４７上に、ライトコマンドが表すデータ量に応じたサイズ分の第一のスロットを確保する（ステップ２３００２）。次に、Ｒ／Ｗプログラム２１３Ｌは、差分ＢＭ（最新）内の、ライトコマンドから特定されるライト先ブロックに対応したビットを参照する（ステップ２３００３）。
【０１７０】
参照したビットがオンビットであれば、Ｒ／Ｗプログラム２１３Ｌは、ステップ８００４（図８参照）と同じ方法で、そのオンビットに対応したデータ格納アドレスが表すセグメントを特定し（ステップ２３００４）、一方、参照したビットがオフビットであれば、ステップ８００５（図８参照）と同じ方法で、空きセグメントを特定する（ステップ２３００５）。そして、Ｒ／Ｗプログラム２１３Ｌは、ステップ８００８（図８参照）と同様に、第二のスロットを確保して（ステップ２３００６）、ホスト計算機１０１に、ライトコマンドに対する応答を返す（ステップ２３００７）。
【０１７１】
そのあと、ホスト計算機１０１からライトデータ要素が送信され、そのライトデータ要素が、ホストＩＦ１２７Ｈ内のメモリ１３１に記憶される。Ｒ／Ｗプログラム２１３Ｌは、メモリ１３１に記憶されているライトデータ要素を、第一のスロット及び第二のスロットに書き込み（ステップ２３００８）、ホストにライト処理完了を応答する。Ｒ／Ｗプログラム２１３Ｌは、ステップ８００９（図８参照）と同様に、ＪＮＣＢ（最新）を必要に応じて更新する（ステップ２３００９）。また、Ｒ／Ｗプログラム２１３Ｌは、第一のスロット内のライトデータ要素を、Ｐ−ＶＯＬ１８７Ｐ内のライト先ブロックに書き込み、第二のスロット内のライトデータ要素を、ステップ２３００４又は２３００５で特定されたセグメントに書き込む（ステップ２３０１０）。
【０１７２】
ステップ２３００８の後、Ｒ／Ｗプログラム２１３Ｌは、第三のストレージシステム６０１に対して、ホスト計算機１０１からのライトコマンドを転送する。第三のストレージシステム６０１では、Ｒ／Ｗプログラム２１３Ｒが、そのライトコマンドを受けたことに応答して、キャッシュメモリ７０３から第三のスロットを確保し（ステップ２３０１１）、第そのライトコマンドに対する応答を第一のストレージシステム１２５に返す。
【０１７３】
Ｒ／Ｗプログラム２１３Ｌは、第三のストレージシステム６０１から応答を受領したら、第二（又は第一）のスロットにあるデータ要素を、第三のストレージシステム６０１に転送する（ステップ２３０１２）。
【０１７４】
Ｒ／Ｗプログラム２１３Ｌは、ＲＣ用管理情報を更新する（ステップ２３０１３）。
【０１７５】
データ要素を受領した第三のストレージシステム６０１では、Ｒ／Ｗプログラム２１３Ｒが、ステップ２３００３〜２３００５、及びステップ２３００９〜２３０１０と同様の処理を行い、最後に、第一のストレージシステム１２５に、ライト処理完了報告を返す（ステップ２３０１４）。
【０１７６】
ここでは、ホスト計算機１０１からのライトデータ要素の書込みと非同期にライトデータ要素（オンライン更新差分データ要素）が第一のストレージシステム１２５から第三のストレージシステム６０１に転送される例を説明したが、それとは異なるタイミングでそのライトデータ要素が転送されても良い。例えば、ライトコマンドの転送と同じタイミングでライトデータ要素が第一のストレージシステム１２５から第三のストレージシステム６０１に送信されても良い。
【０１７７】
図２４は、第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式２が採用されたフローを示す。
【０１７８】
図２３に記載の各ステップと図２３に記載の各ステップとの対応関係は、以下の通りである。
【０１７９】
図２３                                  図２４
ステップ２３００１                        ステップ２４００１
ステップ２３００２                        ステップ２４００２
ステップ２３００３                        （無し）
ステップ２３００４                        （無し）
ステップ２３００５                        ステップ２４００５
ステップ２３００６                        ステップ２４００２
ステップ２３００７                        ステップ２４００４
ステップ２３００８                        ステップ２４００３
ステップ２３００９                        ステップ２４００６
ステップ２３０１０                        ステップ２４００７
ステップ２３０１１                        ステップ２４００８
ステップ２３０１２                        ステップ２４００９
ステップ２３０１３                        ステップ２４０１０
ステップ２３０１４                        ステップ２４０１１
上述のように、図２４のフローでは、方式２ではＪＮＬデータ要素は上書きされることなく全て保存されるため、図２３に示したステップ２３００３及びステップ２３００４は不要となる。また、第三のストレージシステム６０１では、ステップ２４０１１として、図２４に示すように、ステップ２４００５〜ステップ２４００７が行われる。
【０１８０】
図２７は、第四の実施形態での構成管理テーブル、ＪＮＬエリア管理テーブル、バックアップ世代管理テーブル、第一のＪＮＬ管理テーブル及びＪＮＣＢの例を示す。
【０１８１】
図２７に示すように、基本的には図５に示した各テーブルと同様であるが、図５と基本的には、変わらないが、リモート構成のための情報が追加される。具体的には、下記の通りである。
【０１８２】
すなわち、構成管理テーブル１２０１は、図５に示した構成管理テーブル２０１に、各ＶＯＬについて［ストレージ＃］が追加されている。［ストレージ＃］は、対応するＶＯＬを有するストレージシステムを表す番号である。
【０１８３】
ＪＮＬエリア管理テーブル１２０３Ｐは、図５に示したＪＮＬエリア管理テーブル２０３と同じである。ＪＮＬエリア管理テーブル１２０３Ｓは、ＪＮＬエリア管理テーブル１２０３Ｐと違い、Ｓ−ＶＯＬに対応したテーブルである。
【０１８４】
バックアップ管理テーブル１２０５は、図５に示したバックアップ管理テーブル２０５と同様である。
【０１８５】
第一のＪＮＬ管理テーブル１２０７Ｐは、図５に示したＪＮＬ管理テーブル２０７と同じである。第一のＪＮＬエリア管理テーブル１２０７Ｓは、ＪＮＬ管理テーブル１２０７Ｐと違い、Ｓ−ＶＯＬに対応したテーブルである。
【０１８６】
ＪＮＣＢ１３０７は、図５に示したＪＮＣＢ３０７と同様である。
【０１８７】
図２７に示した各テーブルは、第一及び第三のストレージシステム１２５及び６０１の両方に記憶される。なお、ホストライトサイズは、例えば、第一のストレージシステム１２５が受けても良いし第三のストレージシステム６０１のいずれか一方が受けて、受けた一方のストレージシステム内に設定され、他方に転送され、他方のストレージシステム内でも設定される。或いは、例えば、ホストライトサイズは、第一及び第三のストレージシステム１２５及び６０１の両方が受けても良い。
【０１８８】
図２８は、図２３及び図２４における、マーカ受領及びマーカ受領に応答して行われる処理、のフローを示す。以下の説明では、図には示していないが、混同を避けるために、第一のストレージシステム１２５内の制御プロセッサ１４３で実行されるマーカ処理プログラム２２３を、「マーカ処理プログラム２２３Ｌ」と言い、第三のストレージシステム６０１内のプロセッサで実行されるマーカ処理プログラム２２３を「マーカ処理プログラム２２３Ｒ」と言う。
【０１８９】
基本的な動作は、図９に示した、ステップ９００１〜ステップ９００５と同じである。但し、リモートコピー構成となっているため、第一のストレージシステム１２５から第三のストレージシステム６０１へマーカの転送が必要となる。
【０１９０】
第一のストレージシステム１２５が、ホスト計算機１０１からマーカを受領すると（ステップ２８００１）、マーカ処理プログラム２２３Ｌが、マーカを、第三のストレージシステム６０１に転送し、Ｐ−ＶＯＬの世代を１インクリメントし、同様に、転送されて来たマーカを受けたことに応答して、マーカ処理プログラム２２３Ｒが、Ｓ−ＶＯＬの世代を１インクリメントする（ステップ２８００２）。
【０１９１】
マーカ処理プログラム２２３Ｌ及び２２３Ｒは、図９のステップ９００３と同様に、第一のＪＮＬ管理テーブル１２０７Ｐに、オンライン更新差分データ（ｊ＋１）に対応した［先頭アドレス］、［長さ］及び［作成時刻］を更新する（ステップ２８００３）。
【０１９２】
マーカ処理プログラム２２３Ｌ及び２２３Ｒは、ステップ９００４と同様に、バックアップ世代管理テーブル１２０５に、確定した世代（ｊ）の行を追加し（ステップ２８００４）、ステップ９００５と同様に、第一のＪＮＬ管理テーブル１２０７Ｐに、世代間差分データについて世代（ｊ−１）の行を追加する（ステップ２８００５）。
【０１９３】
すなわち、図２８では、第一及び第三のストレージシステム１２５及び６０１の両方で、バックアップ世代管理テーブル２０５及び第一のＪＮＬ管理テーブル１２０７Ｐが更新される。また、構成管理テーブル１２０１が、第一及び第三のストレージシステム１２５及び６０１のうちの少なくとも第三のストレージシステム６０１で保持される。
【０１９４】
マーカ受領時のソート処理としては、図２３と図２４では、ＪＮＬデータ要素の数が異なっているが、基本的には同じである。例えば、図２４の場合は、同じブロックに対応した複数のオンライン更新差分データ要素があるため、例えば、第三のストレージシステム６０１内のＪＮＬソートプログラム２１７は、差分ＢＭ（最新）の先頭から順番にオンビットを検索し、オンビットがあれば、以下の（１）又は（２）、
（１）そのオンビットの位置に対応する複数のオンライン更新差分データ要素のうち、最新のオンライン更新差分データ要素をＪＮＬサブエリアから読み出して、Ｓ−ＶＯＬに書き込む、
（２）そのオンビットの位置に対応する複数のオンライン更新差分データ要素を、ＪＮＬサブエリアに書き込まれた順に読み出してＳ−ＶＯＬに書き込んでいく、
を行う。（１）の場合、ＪＮＣＢが、最新のオンライン更新差分データ要素の検索が可能な構成となっている必要がある。例えば、差分ＢＭの各ビットについて、複数のデータ格納アドレスが存在し得るが、各データ格納アドレスに、それら複数のデータ格納アドレスのうち最新のデータ格納アドレスか否かを表すフラグが設定されていて、最新を意味するフラグが設定されているデータ格納アドレスを検索することで、どこのセグメントに記憶されているオンライン更新差分データ要素が最新のデータ要素であるかを調べることが可能である。
【０１９５】
図２５は、方式３又は方式４が採用されている環境における、マーカ受領及びマーカ受領に応答して行われる処理、のフローを示す。
【０１９６】
第一のストレージシステム１２５がマーカを受領すると（ステップ２５０１１）、マーカ処理プログラム２２３Ｌが、第三のストレージシステム６０１にマーカを転送し、オンライン更新差分データに対応した新しいＪＮＬサブエリアを確保し、ステップ２８００３〜２８００５と同様の処理を行う（ステップ２５０１２）。
【０１９７】
マーカ処理プログラム２２３Ｌが、差分ＢＭ（最新）におけるビットを、先頭ビットから順次参照し、参照したビットがオンであれば、そのオンビットについてステップ２５０１４以降を実行して次のビットを参照し、参照したビットがオフであれば、ステップ２５０１４を行わずに次のビットを参照する（ステップ２５０１３）。
【０１９８】
マーカ処理プログラム２２３Ｌが、スロットに書かれたオンライン更新差分データ要素（マーカ受領前のデータ要素）を転送するために、第三のストレージシステム６０１に対して、マーカ、及び、オンライン更新差分データ要素の転送要求（例えば、Ｐ−ＶＯＬのどこのブロックに対応したデータ要素かを表すアドレスを含む）を送る。第三のストレージシステム６０１内のマーカ処理プログラム２２３Ｒは、第一のストレージシステム１２５からのマーカ及び転送要求の受信に応答して、オンライン更新差分データに対応した新たなＪＮＬサブエリアを確保し、キャッシュメモリ７０３にスロットを確保し（ステップ２５０１６）、第一のストレージシステム１２５に対して、データ受領準備ができたことを知らせる。マーカ処理プログラム２２３Ｌは、第三のストレージシステム６０１から、データ受領準備ができたことの知らせを受けたら、オンライン更新差分データ要素を転送するためのスロットをキャッシュメモリ１４７上に確保し（ステップ２５０１４）、ＪＮＬサブエリアからオンライン更新差分データ要素を読み出してそのスロットに書く（ステップ２５０１５）。その処理と並行して、マーカ処理プログラム２２３Ｌが、スロットに書かれたオンライン更新差分データ要素を第三のストレージシステム６０１に転送し（ステップ２５０１７）、必要に応じてＲＣ用管理情報を更新する（ステップ２５０１８）。第三のストレージシステム６０１内のマーカ処理プログラム２２３Ｒは、転送されて来たオンライン更新差分データ要素を、ステップ２５０１６で確保したスロットに書く。マーカ処理プログラム２２３Ｒは、ＪＮＣＢ（最新）を参照して、ＪＮＬサブエリア（最新）の空きセグメントを特定する（ステップ２５０１９）。また、マーカ処理プログラム２２３Ｒは、転送要求から特定されるブロックに対応したビット（差分ＢＭ（最新）内のビット）をオンに更新し、そのビットに対応するアドレスとして、上記特定された空きセグメントを表すデータ格納アドレスを追加する（ステップ２５０２０）。そして、マーカ処理プログラム２２３Ｒは、スロットに記憶されているオンライン更新差分データ要素を、ＪＮＬサブエリア（最新）内の上記空きセグメントに書き込む（ステップ２５０２１）。
【０１９９】
図２６は、図２５に示した処理中にライトデータ要素を第一のストレージシステム１２５が受けた場合に行われるライト処理のフローを示す。
【０２００】
先に記したように、第一及び第三のストレージシステム１２５及び６０１は、マーカ受領後に新たなＪＮＬサブエリア（最新）を設けることで、それ以降にホスト計算機１０１からライトデータ要素を受けても、そのライトデータ要素が、マーカ受領前のオンライン更新差分データに上書きされないようになっている。
【０２０１】
このため、Ｒ／Ｗプログラム２１３Ｌは、マーカ受領後にライトデータ要素を受けた場合、新たなＪＮＬサブエリア（最新）に、ライトデータ要素を書き込む。マーカ受領前のオンライン更新差分データは、図２５に示したように、ホスト計算機からのライトコマンドに応答したライト処理とは非同期に、第三のストレージシステム６０１に転送される。
【０２０２】
以上の図２３〜図２８では、オンライン更新差分データ要素がアフターＪＮＬデータ要素である。以下、図２９及び図３０を参照して、オンライン更新差分データ要素がビフォアＪＮＬデータ要素である場合に第四の実施形態で行われる処理を説明する。
【０２０３】
図２９は、第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式１が採用されたフローを示す。但し、前述したように、取得されるオンライン更新差分データ要素は、ビフォアＪＮＬデータ要素である。
【０２０４】
第一のストレージシステム１２５内のＲ／Ｗプログラム２１３Ｌは、オンライン更新差分データ要素を作成するために、ステップ１６００１〜ステップ１６００９（図１６参照）と同様の処理を行う（ステップ２９００１〜２９００９）。その後、ライト完了報告が第一のストレージシステム１２５からホスト計算機１０１に送られる（ステップ２９０１０）。さらに、第一のストレージシステム１２５から第三のストレージシステム６０１にオンライン更新差分データ要素を送るために、ステップ２３０１１〜ステップ２３０１４（図２３参照）と同様の処理が行われる（ステップ２９０１１〜２９０１４）。
【０２０５】
なお、図３６に示すように、第四の実施形態でも、オンライン更新差分データ要素（ビフォアＪＮＬデータ要素又はアフターＪＮＬデータ要素）は取得されなくても良い。この場合、例えば、ステップ１８００１〜１８００５（図１８参照）と同様の処理が行われる（ステップ３６００１〜３６００５）。その後、例えばＲ／Ｗプログラム２１３Ｌが、差分ＢＭ（最新）におけるオンとなったビットの位置を表す情報を、第三のストレージシステム６０１に転送し（ステップ３６００７）、必要に応じてＲＣ用管理情報を更新する（ステップ３６００８）。Ｒ／Ｗプログラム２１３Ｒは、受けた情報が表す位置にあるビット（差分ＢＭ（最新）内のビット）を、オンに更新する。この場合、オンビットに対応したブロック（Ｐ−ＶＯＬ内のブロック）に対応したデータ要素が、第一のストレージシステム１２５から第三のストレージシステム６０１に転送され、そのブロックと同じ位置にある、Ｓ−ＶＯＬ内のブロックに、そのデータ要素が書込まれても良い。
【０２０６】
図３０は、第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式２が採用されたフローを示す。但し、前述したように、取得されるオンライン更新差分データ要素は、ビフォアＪＮＬデータ要素である。
【０２０７】
図２９に記載の各ステップと図３０に記載の各ステップとの対応関係は、以下の通りである。
【０２０８】
図２９                                  図３０
ステップ２９００１                        ステップ３０００１
ステップ２９００２                        ステップ３０００２
ステップ２９００３                        （無し）
ステップ２９００４                        （無し）
ステップ２９００５                        ステップ３０００３
ステップ２９００６                        ステップ３０００４
ステップ２９００７                        ステップ３０００７
ステップ２９００８                        ステップ３０００５
ステップ２９００９                        ステップ３０００６
ステップ２９０１０                        ステップ３０００８
ステップ２９０１１                        ステップ３０００９
ステップ２９０１２                        ステップ３００１１
ステップ２９０１３                        ステップ３００１２
ステップ２９０１４                        ステップ３００１０
上述のように、図３０のフローでは、方式２ではＪＮＬデータ要素は上書きされることなく全て保存されるため、図２９に示したステップ２９００３及びステップ２９００４は不要となる。また、第三のストレージシステム６０１では、ステップ３００１０として、図３０に示すように、ステップ３０００５〜ステップ３０００７が行われる。
【０２０９】
なお、第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式３又は方式４が採用されたフローとして、下記の通りにすることができる。
【０２１０】
すなわち、方式３の場合、ステップ３１００１〜ステップ３１０２１が考えられる。そのうちのステップ３１００１〜ステップ３１０１０を、図２９のステップ２９００１〜２９０１０と同じにすることができる。また、残りのステップ３１０１１〜３１０２１を、図２５に示したステップ２５０１１〜２５０２１と同じにすることができる。
【０２１１】
一方、方式４の場合、ステップ３０００１´〜ステップ３１０１８´が考えられる。そのうちのステップ３０００１´〜ステップ３０００７´を、ステップ３０００１〜ステップ３０００７と同じにすることができる。残りのステップ３１００８´〜３１０１８´を、ステップ２５０１１〜２５０２１と同じにすることができる。
【０２１２】
図３７は、リモート側へデータ要素を転送できないことが検出された場合に行われる処理のフローを示す。
【０２１３】
ＲＣ用ＩＦ（及び後述の外部接続ＩＦ）は、ネットワーク転送不可（すなわち、データ要素を転送できないこと）を検出する場合がある。ネットワーク転送不可の原因は、例えば、転送経路上にあるスイッチの障害、ケーブルの断裂、及び第三のストレージシステム６０１（又は外部接続されている第二のストレージシステム１６１）が障害になったような場合である。
【０２１４】
この場合、制御プロセッサ１４３（図１参照）、バックアップサーバ５０１（図２２参照）又は管理サーバ１１１が、バックアップサーバ５０１を使う方式Ａとローカルサイトのみを使う方式Ｂのどちらかを選択する（ステップ３７００１）。
【０２１５】
方式Ａが選択された場合、第一のストレージシステム１２５の制御メモリ１４５に記憶されている種々の情報が、バックアップサーバ５０１又は管理サーバ１１１に転送される。バックアップサーバ５０１又は管理サーバ１１１は、その種々の情報を基に、第一のストレージシステム１２５内のＪＮＬ関連エリア１８８Ｌや、第三のストレージシステム６０１内のＳ−ＶＯＬなどを認識する。バックアップサーバ５０１又は管理サーバ１１１は、オンライン更新差分データ要素を第一のストレージシステム１２５から読出し、そのオンライン更新差分データ要素を、第三のストレージシステム６０１内のＳ−ＶＯＬに書込んだりする（ステップ３７００６）。
【０２１６】
方式Ｂが選択された場合、バックアップサーバ５０１又は管理サーバ１１１は、第一のストレージシステム１２５に、第一のストレージシステム１２５からの障害検出報告（ネットワーク転送不可の報告）に対する応答として、バックアップの継続を指示する。ネットワーク転送不可の検出以降、オンライン更新差分データ要素は、Ｐ−ＶＯＬの更新に応じて適宜に取得される。
【０２１７】
バックアップの継続を受領した第一のストレージシステム１２５内の制御プロセッサ１４３は、Ｐ−ＶＯＬ（及び、必要に応じてオンライン更新差分データ要素）から、Ｓ−ＶＯＬを作成する（ステップ３７００２）。
【０２１８】
その間、制御プロセッサ１４３は、一定時間ごとに（ステップ３７００３）、上記転送経路の状態を監視して、ネットワークが復活したか否かを判定する（ステップ３７００４）。復活したと判定された場合は、制御プロセッサ１４３は、自発的に、或いは、復活したことをバックアップサーバ５０１又は管理サーバ１１１に通知してそのサーバ５０１又は１１１から転送開始指示を受けたときに、第一のストレージシステム１２５内に滞留したオンライン更新差分データ要素を第三のストレージシステム６０１に転送する（ステップ３７００５）。
【０２１９】
図３８は、第四の実施形態でのリストア処理の３つの例のフローを示す。以下の説明では、図には示していないが、混同を避けるために、第一のストレージシステム１２５内の制御プロセッサ１４３で実行されるリストアプログラム２２１を、「リストアプログラム２２１Ｌ」と言い、第三のストレージシステム６０１内のプロセッサで実行されるリストアプログラム２２１を「リストアプログラム２２１Ｒ」と言う。
【０２２０】
図３８（ａ）は、制御プロセッサ１４３が、第三のストレージシステム６０１にあるバックアップデータ要素（世代間差分データ要素、Ｓ−ＶＯＬ内のデータ要素）を利用して、第一のストレージシステム１２５内にＲ−ＶＯＬを作成するケースを示す。具体的には、例えば、リストアプログラム２２１Ｌが、ホスト計算機１０１（又は、外部の他の計算機）からリストア要求を受けると（ステップ３８１０１）、第三のストレージシステム６０１に当該リストア要求を転送する（ステップ３８１０２）。リストアプログラム２２３Ｒが、そのリストア要求に応答して、リストア対象世代のＰ−ＶＯＬに対応したＲ−ＶＯＬを構成するデータ要素（Ｓ−ＶＯＬ内のデータ要素、及び／又は、図１３及び１４を参照して説明した方法により特定可能な世代間差分データ要素）を、第一のストレージシステム１２５に転送する（ステップ３８１０３）。転送されたデータ要素は、第一のストレージシステム１２５内のストレージプールに記憶される。各データ要素の記憶先のセグメントを表すアドレスが、リストアプログラム２２３Ｌによって作成されるＲ−ＶＯＬアクセス管理テーブルに登録される（ステップ３８１０４）。そのＲ−ＶＯＬアクセス管理テーブルを用いて、第一のストレージシステム１２５内のＲ−ＶＯＬに対するアクセス（例えばリード）が制御される。
【０２２１】
図３８（ｂ）は、図３８（ａ）の処理で、Ｒ−ＶＯＬアクセス管理テーブルが、第三のストレージシステム６０１内のリストアプログラム２２３Ｒによって作成され、第一のストレージシステム１２５に転送されるケースを示す。具体的には、ステップ３８１０１及び３８１０２と同じ処理が行われる（ステップ３８２０１及び３８２０２）。リストアプログラム２２３Ｒは、リストア対象世代のＰ−ＶＯＬに対応したＲ−ＶＯＬを構成するデータ要素の各在り処を表すアドレスを含んだＲ−ＶＯＬアクセス管理テーブルを作成する（ステップ３８２０３）。そして、リストアプログラム２２３Ｒは、そのＲ−ＶＯＬアクセス管理テーブルを、第一のストレージシステム１２５に転送する。このケースでは、図３８（ａ）のケースと違って、Ｒ−ＶＯＬを構成するデータ要素は、第三のストレージシステム６０１内にある。このため、第一のストレージシステム１２５が、Ｒ−ＶＯＬを指定したリードコマンドを受けた場合、そのリードコマンドに従うデータ要素は、第三のストレージシステム６０１から取得されて、リードコマンドの送信元に送られる。
【０２２２】
図３８（ｃ）は、第三のストレージシステム６０１が、リストア要求を受けるケースである。すなわち、このケースでは、リストアプログラム２２３Ｒが、リストア要求を受け（ステップ３８３０１）、図１３を参照して説明した方法で、Ｒ−ＶＯＬアクセス管理テーブルを作成する（ステップ３８３０２）。
【０２２３】
上述したいずれのケースでも、Ｒ−ＶＯＬに対応したプール領域は、第一及び第三のストレージシステム１２５及び６０１のどちらに存在しても良い。図３８（ａ）乃至（ｃ）に示した例では、Ｓ−ＶＯＬが存在するストレージシステム内に、Ｒ−ＶＯＬに対応したプール領域が存在する。リストア処理中に、Ｒ−ＶＯＬを指定したライトコマンドを受けることが可能であり、そのライトコマンドに従うライトデータ要素は、そのプール領域に退避される。
【実施例５】
【０２２４】
本発明の第五の実施形態では、第三のストレージシステム６０１に代えて、第二のストレージシステム１６１が採用される。第三のストレージシステム６０１は、第一のストレージシステム１２５に対していわゆるリモートコピー構成で接続されていたが、第二のストレージシステム１６１は、第一のストレージシステム１２５に対していわゆる外部接続構成で接続されている。「リモートコピー構成」での接続によれば、第一のストレージシステム１２５内の書込み先にデータ要素が書き込まれる場合、第一のストレージシステム１２５内のＰＤＥＶと第三のストレージシステム６０１内のＰＤＥＶの両方にそのデータ要素が記憶されるが、「外部接続構成」での接続によれば、第一のストレージシステム１２５内の書込み先にデータ要素が書き込まれる場合、第一のストレージシステム１２５内のＰＤＥＶにはそのデータ要素は記憶されず、その書込み先を含んだ領域にマッピングされている、第二のストレージシステム１６１内の記憶領域の基になっているＰＤＥＶに、そのデータ要素が記憶される。
【０２２５】
図３２は、本発明の第五の実施形態に係る計算機システムの構成を示す。
【０２２６】
第二のストレージシステム１６１内の記憶資源が、第一のストレージシステム１２５内の記憶資源であるかのように利用される。具体的には、例えば、特開２００６−３３１４５８号公報等に開示の技術を利用して、第一のストレージシステム１２５に第二のストレージシステム１６１が接続される。
【０２２７】
第二のストレージシステム１６１内の複数のターゲットデバイスが、第一のストレージシステム１２５内のＳ−ＶＯＬ、オンライン更新差分データ用のＪＮＬサブエリア（プール領域）、世代間差分データ用のＪＮＬサブエリア（プール領域）及びマージ差分データ用のＪＮＬサブエリア（プール領域）に、例えば１対１で関連付けられている。この場合、例えば、世代間差分データ用のＪＮＬサブエリアに格納されるデータ要素は、第一のストレージシステム１２１から第二のストレージシステム１６１に転送されて、そのＪＮＬサブエリアに関連付けられているターゲットデバイス（第二のストレージシステム内のターゲットデバイス）に関連付いた論理ボリュームに格納される。
【０２２８】
図４３に、第五の実施形態でのデバイスマッピングの関係の一例を示す。
【０２２９】
第一のストレージシステム１２５のＶＤＥＶ１９３Ｂ内の記憶領域１９３Ｂ−１及び１９３Ｂ−２に、それぞれ、第二のストレージシステム１６１内のターゲットデバイスがマッピングされている。本実施形態では、各記憶領域１９３Ｂ−１及び１９３Ｂ−２にマッピングされるターゲットデバイスの切り替えが可能である。
【０２３０】
また、ターゲットデバイスに関連付ける論理ボリュームの基として、テープが採用されても良い。具体的には、世代間差分データを構成する複数のデータ要素や、マージ差分データを構成する複数のデータ要素は、既に説明したソート処理によってアドレス順に書き込まれるため、テープが採用されても良い。ただし、この場合、ＪＮＬサブエリアの割り当てを、第二のストレージシステム１６１のターゲットデバイス単位に分けておく方が制御しやすい。そうすると、１つ以上の世代間差分データやマージ差分データを第二のストレージシステム１６１に記憶させておき、必要に応じて、ターゲットデバイスを介して、データアクセスが可能となる。加えて、古くなった差分データ（ＪＮＬデータ）から順に、第二のストレージシステム１６１から切り離していくことが可能となる。具体的には、例えば、制御プロセッサ１４３が、ＪＮＬエリア管理テーブル２０３を参照して、古い世代に対応したＪＮＬサブエリアの位置を特定し、そのＪＮＬサブエリアと、それにマッピングされているターゲットデバイス（第二のストレージシステム内のターゲットデバイス）との関係を切ることで（一例として、ＪＮＬサブエリアにマッピングされているターゲットデバイスの識別子を削除する）、ターゲットデバイスの切り離しが可能となる。具体的には、例えば、第一の期間の次の第二の期間（２月）になったならば、第一の期間（例えば１月）に取得されたＪＮＬデータが記憶されている領域に対応した第一のターゲットデバイスが、ＶＤＥＶ１９３Ｂから切り離され、第二の期間に取得されるＪＮＬデータが記憶される領域に対応した第二のターゲットデバイスが、ＶＤＥＶ１９３Ｂに接続される。
【０２３１】
また、バックアップ世代管理テーブル２０５において、世代毎に、［状態］として、下記（１）又は（２）の情報、
（１）対応するＪＮＬデータ（例えば世代間差分データ）が第二のストレージシステム１６１に格納されていることを表す情報、
（２）第一のストレージシステム１２５内のＶＤＥＶとターゲットデバイスとの間に張られたパスがオフラインであることを表す情報（そのパスをオンラインにして、第一のストレージシステムから参照可能になるように指示が必要なことを意味する情報）
が管理されても良い。
【０２３２】
図３３は、第五の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。なお、図３３では、オンライン更新差分データ要素は、ビフォアＪＮＬデータ要素である。また、以下の説明では、図には示していないが、混同を避けるために、第一のストレージシステム１２５内の制御プロセッサ１４３で実行されるＲ／Ｗプログラム２１３を、「Ｒ／Ｗプログラム２１３Ｌ」と言い、第二のストレージシステム１６１内のプロセッサ１６７で実行されるＲ／Ｗプログラム２１３を「Ｒ／Ｗプログラム２１３Ｅ」と言う。
【０２３３】
図３３に示すステップ３３００１〜３３００８は、図３０に示すステップ３０００１〜３０００８と同様である（ステップ番号の対応関係は一部違っているが、全体として行われる処理は同様である）。但し、ステップ３３００４での更新前データ要素の格納先は、ＪＮＬサブエリアではなく、キャッシュメモリ１４７に確保されているスロットである。また、ステップ３３００９及び３３０１０が行われる。
【０２３４】
概要としては、次の通りである。すなわち、Ｒ／Ｗプログラム２１３Ｌは、ホスト計算機１０１からのライトコマンドに応答して、Ｐ−ＶＯＬ内のライト先ブロックから更新前データ要素を読み出してキャッシュメモリ１４７に書く。そして、Ｒ／Ｗプログラム２１３Ｌは、第二のストレージシステム１６１に、ライト準備要求を送信する。Ｒ／Ｗプログラム２１３Ｅは、そのライト準備要求に応答して、キャッシュメモリ上にスロットを確保し、準備完了を第一のストレージシステム１２５に応答する（ステップ３３００９）。Ｒ／Ｗプログラム２１３Ｌは、その応答を受けたら、キャッシュメモリ１４７内にある更新前データ要素とライトコマンド（第一のストレージシステム１２５内のＪＮＬサブエリア（最新）にマッピングされているターゲットデバイスを指定したコマンド）を第二のストレージシステム１６１に転送する。Ｒ／Ｗプログラム２１３Ｅは、その更新前データ要素を、キャッシュメモリに一時書込み、そのコマンドで指定されているターゲットデバイスに関連付いたＪＮＬサブエリアに、その更新前データ要素を書き込む。また、Ｒ／Ｗプログラム２１３Ｅは、ライトの完了報告を、第一のストレージシステム１２５に送る（ステップ３３０１０）。
【０２３５】
図３４は、図３３のライト処理中にマーカを受領した際に行われる処理のフローを示す。なお、このマーカ受領によって、世代（ｊ）が確定したとする。
【０２３６】
ＪＮＬソートプログラム２１７は、マーカ受領に応答して（ステップ３４００１）、差分ＢＭ（ｊ）の先頭から順に参照し（ステップ３４００２）、オンビットであれば、コピー処理を、第二のストレージシステム１６１に指示する（ステップ３４００３）。ＪＮＬソートプログラム２１７は、第二のストレージシステム１６１内のＳ−ＶＯＬに記憶されているデータ要素（上記オンビットに対応したブロックに記憶されているデータ要素）を読出し（ステップ３４００４）、第二のストレージシステム１６１内にある、世代間差分データ（ｊ−１）に対応したＪＮＬサブエリア（ｊ−１）に書き込む（ステップ３４００５）。そのあとで、ＪＮＬソートプログラム２１７は、Ｐ−ＶＯＬ内のブロックにおけるデータ要素（上記オンビットに対応したブロック内のデータ要素）を、Ｓ−ＶＯＬ内のブロック（コピー元のブロックと同じアドレスのブロック）にコピーする（ステップ３４００６、３４００７）。その後、ＪＮＬソートプログラム２１７は、ＪＮＣＢ（ｊ−１）を更新する（ステップ３４００８９）。更新後のＪＮＣＢ（ｊ−１）内のデータ格納アドレスは、第二のストレージシステム１６１内の、更新前データ要素の格納先セグメント（ＪＮＬサブエリア（ｊ−１）内のセグメント）を示す。
【０２３７】
なお、Ｐ−ＶＯＬからＳ−ＶＯＬへのデータ要素のコピーの進捗より先のブロック（コピーが済んでいないブロック）を指定したライトコマンドを受けた場合には、Ｒ／Ｗプログラム２１３Ｌが、キャッシュメモリ１４７上にバッファ領域を用意し、そのバッファ領域に、受けたライトコマンドに従うライトデータ要素を書込む。コピー元のアドレスがより先のアドレスにシフトしていき、上記ライトコマンドで指定されているライト先ブロックのアドレスになった場合、Ｒ／Ｗプログラム２１３Ｌが、そのライト先ブロックに記憶されている更新前データ要素（旧データ要素）をＳ−ＶＯＬにコピーし、その後、Ｐ−ＶＯＬ内のライト先ブロックに、バッファ領域にあるライトデータ要素を書き込む。
【０２３８】
図３５は、第五の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。なお、図３５では、オンライン更新差分データ要素は、アフターＪＮＬデータ要素である。
【０２３９】
図３３のステップ３３００１〜３３０１０と略同様の処理が行われる（ステップ３５００１〜３５０１０）。但し、オンライン更新差分データ要素は、アフターＪＮＬデータ要素なので、ステップ３３０４０に相当する処理に代えて、ライトデータ要素がオンライン更新差分データ要素としてキャッシュメモリ１４７に格納される。キャッシュメモリ１４７に格納されたそのオンライン更新差分データ要素が、第二のストレージシステム１６１に転送される。
【０２４０】
図４４は、第一のストレージシステム１２５に障害が発生した場合に行われる回復処理のフローを示す。図４４では、オンライン更新差分データ要素は、アフターＪＮＬデータ要素である。
【０２４１】
第二のストレージシステム１６１において、プロセッサ１６７（図１参照）は、第一のストレージシステム１２５内のＰ−ＶＯＬとペアを構成するＳ−ＶＯＬを、制御メモリ１７１（図１参照）に記憶されている構成管理テーブルを参照することで、特定する。そして、プロセッサ１６７は、そのＳ−ＶＯＬの複製となるＶＯＬ（例えば、未使用のＶＯＬであってＳ−ＶＯＬ以上の記憶容量を有するＶＯＬ）を選択する。プロセッサ１６７は、Ｓ−ＶＯＬをＰ−ＶＯＬとし、Ｓ−ＶＯＬの複製をＳ−ＶＯＬとしたペアを形成する。プロセッサ１６７は、Ｐ−ＶＯＬに記憶されているデータをＳ−ＶＯＬにコピーする（ステップ４３００１）。
【０２４２】
プロセッサ１６７は、第二のストレージシステム１６１内の差分ＢＭ（最新）におけるオンビットに対応したオンライン更新差分データ要素を、ＪＮＬサブエリア（最新）から読出し、読み出したデータ要素を、オンビットに対応したブロック（Ｐ−ＶＯＬ内のブロック）に書き込む（ステップ４３００２）。全てのオンライン更新差分データ要素はＰ−ＶＯＬに反映された場合に、そのＰ−ＶＯＬの内容が、第一のストレージシステム１２５内のＰ−ＶＯＬと同じ内容になる。
【０２４３】
なお、以下のような回復も可能である。
【０２４４】
すなわち、図示しない第四のストレージシステムが第二のストレージシステム１６１に接続されている。第四のストレージシステムは、第一のストレージシステム１２５と同じ機能を有する。
【０２４５】
第四のストレージシステム内のプロセッサ（以下、「プロセッサＡ」と言う）が、管理サーバ１１１経由で、第二のストレージシステム１６１内の、外部接続の構成を表す情報（どのターゲットデバイスがどのＶＤＥＶにマッピングされているかを表す情報）（例えば、構成管理テーブル及び／又は外部接続用管理情報）を取得する。プロセッサＡが、第四のストレージシステム内のＶＯＬに、第二のストレージシステム内のＳ−ＶＯＬをマッピングする。そのあとで、第二のストレージシステム１６１内のプロセッサ１６７が、ステップ４３００１及び４３００２を実行する。
【０２４６】
図４５は、第五の実施形態でのリストア処理の一例のフローを示す。
【０２４７】
リストアプログラム２２３は、リストア要求を受けた場合（ステップ３８４０１）、Ｒ−ＶＯＬアクセス管理テーブルの基になるＪＮＣＢを第二のストレージシステム１６１から読出し、そのＪＮＣＢを用いて、図１３を参照して説明した方法と同様の方法で、Ｒ−ＶＯＬアクセス管理テーブルを作成する（ステップ３８４０２）。
【０２４８】
もし、第二のストレージシステム１６１内のＳ−ＶＯＬにライトデータ要素が書き込まれる場合には、リストアプログラム２２３が、そのライト先のブロックにある更新前データ要素を第二のストレージシステム１６１に要求する（ステップ３８４０３）。第二のストレージシステム１６１内のプロセッサ１６７が、その要求に応答して、その更新前データ要素を、第一のストレージシステム１２５に送る（ステップ３８４０４）。リストアプログラム２２３は、その更新前データ要素を、例えば、Ｒ−ＶＯＬに対応したプール領域に格納し、Ｒ−ＶＯＬアクセス管理テーブルにおける、上記ライト先のブロックと同じ位置にあるブロックに対応したアドレスを、そのプール領域の格納先のセグメントのアドレスに変更する。
【０２４９】
また、もし、Ｒ−ＶＯＬを構成するデータ要素や、Ｒ−ＶＯＬアクセス管理テーブルの基になるＪＮＣＢが、第二のストレージシステム１６１内の、マッピングが解除されたターゲットデバイスに関連付けられている記憶領域（例えば論理ボリューム）にある場合、制御プロセッサ１４３又は管理サーバ１１１が、そのターゲットデバイスを、第一のストレージシステム１２５内のＶＤＥＶにマッピングする。その後、制御プロセッサ１４３が、その記憶領域からＪＮＣＢを読み出し、Ｒ−ＶＯＬアクセス管理テーブルを作成する。また、必要に応じて、制御プロセッサ１４３が、Ｒ−ＶＯＬを構成するデータ要素を第二のストレージシステム１６１から読出し、Ｒ−ＶＯＬに対応したプール領域に保存しておく。
【実施例６】
【０２５０】
第六の実施形態では、マージ処理において、重複排除処理が行われる。重複排除処理では、重複した世代間差分データ要素の有無が判断され、有りとの判断結果が得られた場合に、重複する世代間差分データ要素は、ＪＮＬサブエリアに格納されない。重複排除処理では、マージ処理と同様に、ホスト計算機１０１からアクセスされる論理ボリュームとは異なる領域であって、ホスト計算機１０１からアクセスされない記憶領域（ＪＮＬ関連エリアや後述の退避用エリア）が利用される。このため、ホスト計算機１０１からのＩ／Ｏコマンドの処理に影響を実質的に与えずに重複排除処理を行うことが可能である。
【０２５１】
以下、詳述する。
【０２５２】
図３９は、本発明の第六の実施形態で行われる重複排除処理の説明図である。
【０２５３】
ＪＮＬマージプログラム２１９が、重複排除機能を有する。重複排除機能によれば、世代間差分データ要素のハッシュ値が産出される。
【０２５４】
本実施形態では、マージ差分データには、マージ差分データ要素毎に、要素管理情報が付加される。要素管理情報は、マージ差分データ要素の管理に関わる情報である。また、或る世代間差分データ要素が、或るマージ差分データ要素と重複することが検出された場合、その或る世代間差分データ要素は、マージ差分データには含められず、その或る世代間差分データ要素に対応した要素管理情報のみが、マージ差分データに含められる。要素管理情報のサイズは、例えば、ＪＮＬデータ要素のサイズ（つまりホストライトサイズ）よりも小さい。
【０２５５】
要素管理情報は、例えば、ハッシュ値、ハッシュテーブル６８２へのポインタ（以下、「第一種のポインタ」という）、同一ハッシュ値を持つマージ差分データ要素へのポインタ（以下、「第二種のポインタ」という）、及び、重複マージデータ要素へのポインタ（以下、「第三種のポインタ」という）を含む。要素管理情報に含まれる［ハッシュ値］は、その要素管理情報に対応したデータ要素のハッシュ値である。ハッシュテーブル６８２は、ＪＮＬデータ要素から算出され得る複数種類のハッシュ値と、各種ハッシュ値に対応したポインタとで構成される。ポインタとしては、マージ差分データ要素が記憶されているセグメントのアドレスが記録されることになる（“ＮＵＬＬ”は有効なアドレスが登録されていないことを意味する）。ハッシュテーブル６８２は、たとえば制御メモリ１４５に記憶されるが、ＰＤＥＶなど他の記憶資源に記憶されてもよい。第二種及び第三種のポインタは、それぞれ、双方向のポインタである。従って、要素管理情報には、各種ポインタとして、関連先のアドレスだけでなく、関連元のアドレスを登録することが可能である。第一種〜第三種のポインタは、それぞれ下記の条件に該当した場合、
第一種のポインタ：算出されたハッシュ値に対応したポインタとして、ハッシュテーブル６８２に“ＮＵＬＬ”が記録されている、
第二種のポインタ（関連先）：算出されたハッシュ値に対応したポインタとして、ハッシュテーブル６８２に有効なアドレスが記録されているが、そのアドレスから辿ることが可能なマージ差分データ要素に、対象データ要素と重複するマージ差分データ要素が無い、
第三種のポインタ（関連先）：算出されたハッシュ値に対応したポインタとして、ハッシュテーブル６８２に有効なアドレスが記録されており、そのアドレスから辿ることが可能なマージ差分データ要素に、対象データ要素と重複するマージ差分データ要素が有る、
に登録される。
【０２５６】
具体的には、例えば、図３１（ａ）に示すように、ハッシュ値“ｋ”に対応した有効なアドレスがハッシュテーブル６８２に無い場合に、第一のブロックについて、ハッシュ値“ｋ”に対応した対象データ要素“Ａ”が取得された場合、対象データ要素“Ａ”及びそれに対応した要素管理情報ａ１が、マージ差分データに含められる。また、ハッシュテーブル６８２には、ハッシュ値“ｋ”に対応した有効なアドレスとして、対象データ要素“Ａ”が格納された領域ｘ１（マージ差分データに対応したＪＮＬサブエリア内の領域）のアドレスが記録される。さらに、要素管理情報ａ１には、ハッシュ値として“ｋ”が含まれ、第一種のポインタとして、ハッシュテーブル６８２における、ハッシュ値“ｋ”に対応したエントリ（“ｘ１”）を表すアドレスが含まれ、第二種及び第三種のポインタとしては、有効なアドレスが含まれない（図３１（ａ）乃至（ｄ）では、●が、関連元を意味し、矢印の向きが、関連先を意味する）。
【０２５７】
次に、例えば、図３１（ｂ）に示すように、第二のブロックについて、ハッシュ値“ｋ”に対応した対象データ要素“Ａ”が取得された場合、ハッシュ値“ｋ”に対応した、ハッシュテーブル６８２におけるポインタから、領域ｘ１が特定される。領域ｘには、ハッシュ値だけでなく中身が全く同じであるデータ要素“Ａ”（つまり重複したマージ差分データ要素）が存在する。このため、今回は、図３１（ｂ）に示すように、対象データ要素“Ａ”は、マージ差分データには含められず、そのデータ要素“Ａ”に対応した要素管理情報ａ２が、マージ差分データに含められる。要素管理情報ａ２には、ハッシュ値として“ｋ”が含まれ、第三種のポインタ（関連先）として、領域ｘ１を表すアドレスが含まれ、第一種及び第二種のポインタとして、有効なアドレスがふくまれない。また、要素管理情報ａ２の関連先のデータ要素“Ａ”に対応した要素管理情報ａ１には、第三種のポインタ（関連元）として、要素管理情報ａ２が格納された領域ｘ２を表すアドレスが含められる。これにより、要素管理情報ａ１を経由して要素管理情報ａ２を参照することが可能となる。なお、この後に、再び対象データ要素“Ａ”が取得された場合、それに対応する要素管理情報ａ３は、要素管理情報ａ２に関連付けられる。これにより、要素管理情報ａ１及びａ２を経由して要素管理情報ａ３を参照することが可能となる。なお、この図３１（ｂ）では、含められないデータ要素“Ａ”に対応したビット（差分ＢＭにおけるビット）に対応するデータ格納アドレスとして、要素管理情報ａ２が格納された領域ｘ２を表すアドレス（又は、データ要素“Ａ”が記憶されている領域ｘ１を表すアドレス）を表す情報が採用される。
【０２５８】
次に、例えば、図３１（ｃ）に示すように、第三のブロックについて、ハッシュ値“ｋ”に対応した対象データ要素“Ｂ”が取得された場合、ハッシュ値“ｋ”に対応した、ハッシュテーブル６８２におけるポインタから、領域ｘ１が特定される。領域ｘ１には、ハッシュ値は同じであるが中身が異なるデータ要素“Ａ”（つまり非重複のマージ差分データ要素）が存在する。すなわち、重複したマージ差分データ要素が無い。このため、図３１（ｃ）に示すように、対象データ要素“Ｂ”及びそれに対応した要素管理情報ｂ１が、マージ差分データに含められる。ハッシュテーブル６８２には、ハッシュ値“ｋ”に対応した有効なアドレスとして、既に、領域ｘ１が記録されているので、対象データ要素“Ｂ”が格納された領域ｙ１を表すアドレスは記録されない。要素管理情報ｂ１には、ハッシュ値として“ｋ”が含まれ、第二種のポインタ（関連先）として、領域ｘ１を表すアドレスが含められ、第一種及び第三種のポインタとしては、有効なアドレスが含められない。要素管理情報ａ１内の第二種のポインタ（関連元）として、領域ｙ１を表すアドレスが追加される。
【０２５９】
次に、例えば、図３１（ｄ）に示すように、第四のブロックについて、ハッシュ値“ｋ”に対応した対象データ要素“Ｂ”が取得された場合、ハッシュ値“ｋ”に対応した、ハッシュテーブル６８２におけるポインタから、領域ｘ１が特定される。領域ｘ１には、ハッシュ値は同じだが中身が異なるデータ要素“Ａ”が存在する。このデータ要素“Ａ”に対応した要素管理情報ａ１内の第二種のポインタ（関連元）として、領域ｙ１を表すアドレスがある。このため、領域ｙ１にあるデータ要素“Ｂ”が特定される。このデータ要素“Ｂ”は、対象データ要素“Ｂ”と重複するデータ要素である。このため、今回は、図３１（ｄ）に示すように、対象データ要素“Ｂ”は、マージ差分データには含められず、そのデータ要素“Ｂ”に対応した要素管理情報ｂ２が、マージ差分データに含められる。要素管理情報ｂ２には、ハッシュ値として“ｋ”が含められ、第三種のポインタ（関連先）として、領域ｙ１を表すアドレスが含められ、第一種及び第二種のポインタとして、有効なアドレスが含められない。また、要素管理情報ｂ１には、第三種のポインタ（関連元）として、要素管理情報ｂ２が格納された領域ｙ２を表すアドレスが含められる。これにより、要素管理情報ａ１及びｂ１を経由して要素管理情報ｂ２を参照することが可能となる。
【０２６０】
以上のような重複排除処理を、ＪＮＬマージプログラム２１９は、たとえば、図４０に示すように、ステップ１１００６とステップ１１００７（図１１参照）との間に実行する。具体的には、ＪＮＬマージプログラム２１９は、ステップ１１０２０の判断（或るデータ要素と重複したマージ差分データ要素の有無の判断）を行う。重複したマージ差分データ要素がある場合に、ＪＮＬマージプログラム２１９は、その或るデータ要素をマージ差分データに含めず、その或るデータ要素に対応した要素管理情報のみをマージ差分データに含める。また、ＪＮＬマージプログラム２１９は、その或るデータ要素に対応したブロック（ビット）に対応するデータ格納アドレス（マージ差分データに対応したＪＮＣＢに含められるデータ格納アドレス）として、重複したマージ差分データ要素が格納されているセグメントを示すアドレスを、そのＪＮＣＢに追加する（ステップ１１０２１）。ステップ１１０２１は、図３９に示すステップ３９００４と同じ処理である。以下、図３９を参照して、重複排除処理を説明する。
【０２６１】
ＪＮＬマージプログラム２１９は、取得された世代間差分データ要素（以下、図３９の説明において「対象データ要素」という）のハッシュ値を算出する（ステップ３９００１）。
【０２６２】
次に、ＪＮＬマージプログラム２１９は、算出されたハッシュ値と同一ハッシュ値のデータ要素が格納されている領域を検索する（ステップ３９００２）。図３１を参照した具体例によれば、（ｂ）乃至（ｄ）のケースで、当該領域が見つかる。
【０２６３】
次に、ＪＮＬマージプログラム２１９は、対象データ要素と重複するマージ差分データ要素があるか否かを判断する（ステップ３９００３）。重複するマージ差分データ要素があれば（図３１（ｂ）及び（ｄ）のケース）、対象データ要素がマージ差分データに含められず、その対象データ要素に対応した要素管理情報内に、第三種のポインタ（関連先）として、重複するマージ差分データ要素が存在する領域のアドレスが含められる（ステップ３９００４）。一方、重複するマージ差分データ要素がなければ（図３１（ｃ）のケース）、対象データ要素及びそれに対応した要素管理情報が、マージ差分データに含められる（ステップ３９００５）。その際、その要素管理情報内に、第二種のポインタ（関連先）として、同一のハッシュ値が得られるデータ要素が存在する領域のアドレスが含められる。
【０２６４】
以上の処理は、一つのマージ差分データ毎に独立して行われてもよいし（すなわち、ハッシュテーブル６８２が、マージ差分データ毎に用意されてもよいし）、図３９に示すように、複数のマージ差分データにまたがって行われてもよい（すなわち、ハッシュテーブル６８２が、複数のマージ差分データに共通であってもよい）。図３９の例によれば、マージ差分データ（Ｍ）についての或る対象データ要素と重複するデータ要素が、マージ差分データ（Ｍ）には無いがマージ差分データ（Ｎ）に存在することが、共通のハッシュテーブル６８２を用いて複数の要素管理情報を辿ることで特定できたため、その対象データ要素に対応した要素管理情報内に、第三種のポインタ（関連先）として、マージ差分データ（Ｎ）内の重複データ要素が存在する領域を表すアドレスが含められ、その対象データ要素は、マージ差分データ（Ｍ）に含められない（“ＮＵＬＬ”は対象データ要素が含まれていないことを意味する）。このように、複数のマージ差分データにハッシュテーブル６８２が共通であれば、後から作成されるマージ差分データには、ＪＮＬデータ要素が含められる可能性がより下がることが期待できる。
【０２６５】
図４１は、第六の実施形態におけるマージ差分データの削除処理の概要を示す。
【０２６６】
例えば、マージ差分データ（Ｎ）が削除されるとし、マージ差分データ（Ｎ）よりも後にマージ差分データ（Ｍ）が作成されたとする（世代（Ｎ）と世代（Ｍ）は、どちらが新しい世代であっても良い）。このため、例えば、マージ差分データ（Ｎ）におけるデータ要素“Ｄ”が、マージ差分データ（Ｍ）における要素管理情報ｄ２からリンクが張られているとする（具体的には、要素管理情報ｄ２に、第三種のポインタとして、マージ差分データ（Ｎ）におけるデータ要素“Ｄ”が存在する領域のアドレスが含まれているとする）。
【０２６７】
この場合、マージ差分データ（Ｎ）が単純に削除されてしまうと、マージ差分データ（Ｍ）を用いて、要素管理情報ｄ２に対応するデータ要素“Ｄ”を復元することができなくなる。
【０２６８】
そこで、本実施形態では、削除対象のマージ差分データ（Ｎ）におけるデータ要素が他のマージ差分データ内の要素管理情報からリンクが張られているか否かの判断が行われる。リンクが張られているとの判断結果が得られた場合、以下の（４１−１）乃至（４１−４）の処理、
（４１−１）データ要素“Ｄ”及びそれに対応する要素管理情報ｄ１が、退避用エリア６４２に退避される、
（４１−２）ハッシュテーブル６８２における、ハッシュ値“ｋ”に対応したポインタが、ＪＮＬサブエリアにおける、データ要素“Ｄ”が記憶されている領域を表すアドレスから、退避用エリア６４２における、データ要素“Ｄ”が記憶されている領域を表すアドレスに変更される、
（４１−３）要素管理情報ｄ２内の第三種のポインタ（関連先）が、ＪＮＬサブエリアにおける、データ要素“Ｄ”が記憶されている領域を表すアドレスから、退避用エリア６４２における、データ要素“Ｄ”が記憶されている領域を表すアドレスに変更される、
（４１−４）マージ差分データ（Ｎ）が削除される、
が、図示しないＪＮＬマージプログラム２１９により、行われる。退避用エリア６４２とは、ＰＤＥＶを基に作成された論理ボリューム（例えばプールＶＯＬ）であっても良いし、キャッシュメモリ１４７における一領域であっても良いし、第一のストレージシステム１２５の外にある記憶資源内の領域であっても良い。
【０２６９】
図４２は、マージ差分データの削除処理のフローを示す。
【０２７０】
ＪＮＬマージプログラム２１９は、削除対象のマージ差分データに対応した差分ＢＭにおける初めのオンビットを検索する（ステップ４２００１）。
【０２７１】
次に、ＪＮＬマージプログラム２１９は、そのオンビットに対応したデータ格納アドレス（ＪＮＣＢ内のデータ格納アドレス）を用いて、そのオンビットに対応した要素管理情報を参照することで、そのオンビットに対応したデータ要素が記憶されている領域を表すアドレスが、他の要素管理情報内に第二種又は第三種のポインタ（関連先）として含まれているか否かを判断する（ステップ４２００２）。ここでは、例えば、そのオンビットに対応した要素管理情報内に、第二種又は第三種のポインタ（関連元）として有効なアドレスがあれば、肯定的な判断結果となり、第二種又は第三種のポインタ（関連元）として有効なアドレスがなければ、否定的な判断結果となる。
【０２７２】
ステップ４２００２において、肯定的な判断結果が得られた場合、ＪＮＬマージプログラム２１９は、その要素管理情報及びそれに対応したデータ要素を、退避用エリア６４２に退避する（ステップ４２００３）。ＪＮＬマージプログラム２１９は、その要素管理情報内に第一種のポインタとして有効なアドレスがあれば、退避したデータ要素のハッシュ値に対応する、ハッシュテーブル６８２におけるポインタを、データ要素の退避先の領域を表すアドレスに変更する（ステップ４２００４）。ＪＮＬマージプログラム２１９は、上記他の要素管理情報内に第二種又は第三種のポインタ（関連先）を、データ要素の退避先の領域を表すアドレスに変更する（ステップ４２００５）。
【０２７３】
一方、ステップ４２００２において、否定的な判断結果が得られた場合、ＪＮＬマージプログラム２１９は、削除対象のマージ差分データが削除されることによりどの要素管理情報にも関連付けられなくなるデータ要素及び要素管理情報が退避用エリア６４２にあるか否かを調べる（ステップ４２００６）。有れば、ＪＮＬマージプログラム２１９は、そのデータ要素及び要素管理情報を、退避用エリア６４２から削除する（ステップ４２００７）。
【０２７４】
以上のＳ４２００２乃至ステップ４２００７を、削除対象のマージ差分データに対応した差分ＢＭにおける各オンビットについて実行する。すべてのオンビットについて行われたならば（ステップ４２００８でＹ）、ＪＮＬマージプログラム２１９は、削除対象のマージ差分データ及びそれに対応したＪＮＣＢをＪＮＬ関連エリア１８８から削除する（ステップ４２００９）。その際、ＪＮＬマージプログラム２１９は、削除対象のマージ差分データに対応した世代に関する情報を、ＪＮＬエリア管理テーブル２０３、バックアップ世代管理テーブル２０５及び第一のＪＮＬ管理テーブル２０７から削除する。
【０２７５】
以上が、第六の実施形態についての説明である。なお、重複排除処理は、マージ差分データを作る時に限らず、世代差分データ要素をＪＮＬエリアに格納するとき、及び／又は、オンライン更新差分データ要素をＪＮＬエリアに格納するときに行われてもよい。このため、削除処理は、マージ差分データに限らず、世代間差分データについても行うことが可能である。
【実施例７】
【０２７６】
図４６は、本発明の第七の実施形態でのリストア処理の概要を示す。図４７は、本実施形態でのＰ−ＶＯＬ、Ｒ−ＶＯＬ及びＪＮＬ関連エリアの構成例を示す。図４８は、そのリストア処理でのキャッシュメモリ１４７の使い方を示す。なお、図４６〜図４８を参照した説明では、ＪＮＬデータ要素は、ビフォアＪＮＬデータ要素である。また、リストア対象世代を世代（Ｎ）とする。
【０２７７】
本実施形態では、図４６及び図４７に示すように、Ｒ−ＶＯＬ１８７Ｒからバックアップサーバ５０１にデータが読み出され、バックアップサーバ５０１に接続されている記憶装置（例えばテープライブラリ）５０２に、そのデータが書き込まれる。データは、例えば、Ｒ−ＶＯＬの先頭アドレスからシーケンシャルに読み出され、記憶装置５０２にシーケンシャルに書き込まれる。
【０２７８】
図４６に示すように、リストアプログラム２２１が、Ｐ−ＶＯＬ（又はＳ−ＶＯＬ）内の各スロットサイズ領域からデータをキャッシュメモリ１４７に読み出す（符号４６００１）。スロットのサイズは、例えば、ホストライトサイズよりも大きい。従って、スロットサイズ領域は、例えば、複数個のブロックで構成されている。
【０２７９】
次に、リストアプログラム２２１が、リストア対象世代（Ｎ）から最新世代までのＪＮＣＢを基に（符合４６００２）、リストア対象世代（Ｎ）のＰ−ＶＯＬにあった世代間差分データ要素をＪＮＬエリアから読み出し、キャッシュメモリ１４７内のスロットサイズのデータにおける、ＪＮＣＢ内のデータ格納アドレスに従う箇所に、その世代間差分データ要素を上書きする（符号４６００３）。こうすることで、キャッシュメモリ１４７内で、世代（Ｎ）に対応した或るスロットサイズ分のデータが確定した後に、キャッシュメモリ１４７内の確定したスロットサイズ分のデータが、バックアップサーバ５０１に転送される。
【０２８０】
図４７に示すように、本実施形態では、Ｐ−ＶＯＬ（及び／又はＳ−ＶＯＬ）、Ｒ−ＶＯＬ（実質的にはキャッシュメモリ）、ＪＮＣＢエリア及びＪＮＬエリアは、複数のサブ領域に分割されている。以下、そのサブ領域を「分割領域」と言い、個々の分割領域に通し番号ｐ（ｐは自然数）を付して説明する。Ｐ−ＶＯＬ、Ｒ−ＶＯＬ、ＪＮＣＢエリア及びＪＮＬエリア内のそれぞれの分割領域ｐは、互いに対応している。また、例えば、一つの世代に対応したＪＮＣＢは、ＪＮＣＢエリアにおける複数の分割領域１〜Ｍに分割して格納され、同様に、一つの世代に対応したＪＮＬデータ（例えば世代間差分データ）も、ＪＮＬエリアにおける複数の分割領域１〜Ｍに分割して格納される。
【０２８１】
本実施形態では、複数の制御プロセッサ１４３があり、一又は二以上の分割領域毎に、個々の制御プロセッサ１４３が割り当てられている。各制御プロセッサ１４３は、それぞれ、自身が担当する分割領域について、図４６を参照して説明した処理を実行する。複数の制御プロセッサ１４３が、並行して図４６を参照して説明した処理を実行する。
【０２８２】
一つの分割領域について、例えば下記の処理が行われる。
【０２８３】
すなわち、図４８に示すように、その分割領域を担当する制御プロセッサ１４３が、キャッシュメモリ１４７における分割領域に、世代（Ｎ）から最新世代に対応した複数のスロットと、Ｒ−ＶＯＬに対応したスロットとを確保する。
【０２８４】
次に、制御プロセッサ１４３が、世代（Ｎ）から最新世代までの差分ＢＭ部分（分割領域に対応した差分ＢＭ部分）をマージし（符号４８０００）、マージされた差分ＢＭ部分におけるオンビットに対応したデータ要素を含むスロットサイズ分のデータを、Ｐ−ＶＯＬ１８７Ｐ（又はＳ−ＶＯＬ）から、Ｒ−ＶＯＬに対応したスロットに読み出す（符号４８００１）。その際、各データ要素は、スロット内の、ＪＮＣＢ内のデータ格納アドレスに基づく位置に記憶される。
【０２８５】
次に、制御プロセッサ１４３は、世代（Ｎ）に対応した差分ＢＭ部分におけるオンビットに対応したデータ要素（Ｎ）を、スロット（Ｎ）に読み出す（符号４８００２）。制御プロセッサ１４３は、世代（Ｎ）よりも新しい各世代についても同様の処理を行う（符号４８００３）。
【０２８６】
制御プロセッサ１４３は、世代（Ｎ）から最新世代にかけて、スロット内のデータ要素を、Ｒ−ＶＯＬに対応したスロットにコピーする（符号４８００４）。その際、コピー先にデータ要素が存在する場合には、より新しい世代に対応したデータ要素が上書きされる（符号４８００５）。世代（Ｎ）から最新世代にかけてこのようなコピーが完了した場合に、世代（Ｎ）に対応したスロットサイズのデータが確定する。
【０２８７】
なお、制御プロセッサ１４３は、キャッシュメモリ１４７にスロットが確保できない場合、キャッシュメモリ１４７における確定済のスロットサイズのデータを、Ｒ−ＶＯＬ用退避領域（例えば、ストレージプールの一部分（例えばプールＶＯＬ））６９９に退避する。或いは、例えば、制御プロセッサ１４３は、Ｒ−ＶＯＬに対するライトデータ要素を受領した場合、そのライトデータ要素を、Ｒ−ＶＯＬ用退避領域６９９に退避する。
【０２８８】
また、制御プロセッサ１４３は、図４８を参照して説明した方法に代えて、図４９を参照して説明する方法で、Ｒ−ＶＯＬ１８７Ｒに対応したスロットサイズ分のデータをキャッシュメモリ１４７上に確定することが可能である。すなわち、図４９に示すように、制御プロセッサ１４３は、差分ＢＭ部分（Ｎ）におけるオンビットに対応したデータ要素を対象スロットに読み出す。次に、制御プロセッサ１４３は、差分ＢＭ部分（Ｎ＋１）におけるオンビットに対応したデータ要素を、上記対象スロットに読み出す。その際、前の世代で既にデータ要素が読み出されていれば、差分ＢＭ部分（Ｎ＋１）におけるオンビットに対応したデータ要素は、対象スロットに書き込まれない。このような処理が、世代（Ｎ）から最新世代について行われることで、Ｒ−ＶＯＬ１８７Ｒに対応したスロットサイズ分のデータが確定される。
【実施例８】
【０２８９】
図５０は、本発明の第八の実施形態で行われる圧縮処理と解凍処理の概要を示す。これらの処理は、例えば、図示しない圧縮／解凍プログラムが制御プロセッサ１４３で実行されることにより行われる。
【０２９０】
制御プロセッサ１４３が、ホスト計算機１０１又は管理サーバ１１１から圧縮対象世代の指定を受け付ける。制御プロセッサ１４３は、圧縮対象世代の指定を受けた場合、圧縮対象世代に対応したＪＮＬデータ（世代間差分データまたはマージ差分データ）の位置及びデータサイズを、圧縮対象世代に対応した［先頭アドレス］及び［長さ］（第一のＪＮＬ管理テーブル２０７に記録されている情報要素）を参照することにより、特定する。また、制御プロセッサ１４３は、圧縮方式（例えば圧縮率を含む）を基に、特定されたデータサイズに基づくサイズの空き領域を、ＪＮＬ関連エリア１８８から確保する。
【０２９１】
そして、制御プロセッサ１４３は、圧縮対象世代に対応したＪＮＣＢ及びＪＮＬデータをＪＮＬ関連エリア１８８から読み出して圧縮し、圧縮後のＪＮＣＢ及びＪＮＬデータを、確保した空き領域に格納する。その後、制御プロセッサ１４３は、読出し元の領域（ＪＮＣＢ及びＪＮＬデータが記憶されている記憶領域）を解放する。これにより、その領域は空き領域として管理されることになる。
【０２９２】
制御プロセッサ１４３は、世代毎に、圧縮の有無と、圧縮後のＪＮＣＢ及びＪＮＬデータの在り処を示す情報と、圧縮後及び圧縮前のＪＮＣＢ及びＪＮＬデータのサイズ（圧縮後サイズ及び圧縮前サイズ）とを、所定の記憶資源（例えば制御メモリ１４５）で管理する。
【０２９３】
制御プロセッサ１４３は、解凍対象世代の指定を受け付けた場合、解凍対象世代に対応した圧縮前サイズ分の空き領域を、ＪＮＬ関連エリア１８８から確保する。制御プロセッサ１４３は、解凍対象世代に対応した圧縮後のＪＮＣＢ及びＪＮＬデータの在り処を上記所定の記憶資源で管理されている情報を参照することにより特定し、特定された在り処にある圧縮後のＪＮＣＢ及びＪＮＬデータを読み出す。そして、制御プロセッサ１４３は、その圧縮後のＪＮＣＢ及びＪＮＬデータを伸張し、解凍後のＪＮＣＢ及びＪＮＬデータを、上記確保した空き領域に格納する。その後、制御プロセッサ１４３は、読出し元の領域（圧縮後のＪＮＣＢ及びＪＮＬデータが記憶されている記憶領域）を解放する。これにより、その領域は空き領域として管理されることになる。
【０２９４】
以上が、第八の実施形態についての説明である。なお、圧縮及び／又は解凍は、制御プロセッサ１４３に代えて又は加えて、ハードウェア回路で行われてもよい。
【０２９５】
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０２９６】
例えば、第一乃至第八のいずれの実施形態でも、計算機システムは、オープンシステムであってもメインフレームシステムであっても良い。
【０２９７】
また、例えば、ストレージシステム１２５、１６１及び／又は６０１は、ＮＡＳ（Network Attached Storage）であっても良い。
【０２９８】
また、Ｓ−ＶＯＬは、無くても良い。その場合、Ｒ−ＶＯＬにアクセスがあった場合の参照先は、Ｓ−ＶＯＬ内のブロックに代えて、Ｐ−ＶＯＬ内のブロック、又は、オンライン更新差分データ要素が記憶されているセグメントである。また、この場合、マーカが受領された時に、オンライン更新差分データが、世代間差分データになることになる。その際、ソート処理として、オンライン更新差分データ要素が、アドレス順にＪＮＬサブエリアから読み出され、別のＪＮＬサブエリアにアドレス順に書き込まれる。Ｓ−ＶＯＬが有れば、ソート処理がやり易く、Ｓ−ＶＯＬが無ければ、Ｓ−ＶＯＬのサイズ分の記憶容量の消費を削減することができる。
【図面の簡単な説明】
【０２９９】
【図１】本発明の第一の実施形態に係る計算機システムの構成を示す。
【図２】第一のストレージシステムにおける記憶領域構成の概要を示す。
【図３】ＪＮＬデータ要素の格納の概要を示す。
【図４】第一のストレージシステム内の制御メモリに記憶されているコンピュータプログラム及び情報を示す。
【図５】図４に示した構成管理テーブル、ＪＮＬエリア管理テーブル、バックアップ世代管理テーブル及び第一のＪＮＬ管理テーブルの例を示す。
【図６】オンライン更新差分データ、世代間差分データ及びマージ差分データのうちの世代間差分データを例に採ったデータ管理方式を示す。
【図７】ホストライトサイズ設定処理のフローを示す。
【図８】Ｐ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。
【図９】マーカ受領及びマーカ受領に応答して行われる処理のフローを示す。
【図１０】第一の実施形態でのソート処理のフローを示す。
【図１１】第一の実施形態でのマージ処理のフローである。
【図１２】第一の実施形態でのマージ処理に関するデータ要素の動きを示す。
【図１３】リストア処理のフローを示す。
【図１４】Ｒ−ＶＯＬ管理テーブルを利用したリード処理のフローを示す。
【図１５】Ｒ−ＶＯＬ管理テーブルを利用したライト処理のフローを示す。
【図１６】本発明の第二の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。
【図１７】第二の実施形態でのソート処理のフローを示す。
【図１８】本発明の第三の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。
【図１９】第三の実施形態でのソート処理のフローを示す。
【図２０】Ｒ−ＶＯＬ有りでのソート処理のフローを示す。
【図２１】第二、第三の実施形態におけるマーカ受領直後のＰ−ＶＯＬのライト処理を示す。
【図２２】本発明の第四の実施形態に係る計算機システムの構成を示す。
【図２３】第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式１が採用されたフローを示す（取得されるオンライン更新差分データ要素は、アフターＪＮＬデータ要素である）。
【図２４】第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式２が採用されたフローを示す（取得されるオンライン更新差分データ要素は、アフターＪＮＬデータ要素である）。
【図２５】方式３又は方式４が採用されている環境における、マーカ受領及びマーカ受領に応答して行われる処理、のフローを示す。
【図２６】図２５に示した処理中にライトデータ要素を第一のストレージシステム１２５が受けた場合に行われるライト処理のフローを示す（取得されるオンライン更新差分データ要素は、アフターＪＮＬデータ要素である）。
【図２７】第四の実施形態での構成管理テーブル、ＪＮＬエリア管理テーブル、バックアップ世代管理テーブル、第一のＪＮＬ管理テーブル及びＪＮＣＢの例を示す。
【図２８】図２３及び図２４における、マーカ受領及びマーカ受領に応答して行われる処理、のフローを示す。
【図２９】第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式１が採用されたフローを示す（取得されるオンライン更新差分データ要素は、ビフォアＪＮＬデータ要素である）。
【図３０】第四の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理の、方式２が採用されたフローを示す（取得されるオンライン更新差分データ要素は、ビフォアＪＮＬデータ要素である）。
【図３１】第六の実施形態における、要素管理情報とデータ要素との関連付けの例を一示す。
【図３２】本発明の第五の実施形態に係る計算機システムの構成を示す。
【図３３】第五の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。
【図３４】図３３のライト処理中にマーカを受領した際に行われる処理のフローを示す。
【図３５】第五の実施形態においてＰ−ＶＯＬにライトデータ要素を書き込むライト処理のフローを示す。
【図３６】第四の実施形態での、オンライン更新差分データ要素が取得されない場合の一つのリモートコピー処理を示す。
【図３７】リモート側へデータ要素を転送できないことが検出された場合に行われる処理のフローを示す。
【図３８】第四の実施形態でのリストア処理の３つの例のフローを示す。
【図３９】本発明の第六の実施形態で行われる重複排除処理の説明図である。
【図４０】第六の実施形態における、重複排除処理を有したマージ処理のフローを示す。
【図４１】第六の実施形態におけるマージ差分データの削除処理の概要を示す。
【図４２】第六の実施形態における、マージ差分データの削除処理のフローを示す。
【図４３】第五の実施形態でのデバイスマッピングの関係の一例を示す。
【図４４】第一のストレージシステムに障害が発生した場合に行われる回復処理のフローを示す。
【図４５】第五の実施形態でのリストア処理の一例のフローを示す。
【図４６】本発明の第七の実施形態でのリストア処理の概要を示す。
【図４７】第七の実施形態でのＰ−ＶＯＬ、Ｒ−ＶＯＬ及びＪＮＬ関連エリアの構成例を示す。
【図４８】第七の実施形態のキャッシュメモリの使い方を示す。
【図４９】第七の実施形態の一変形例の説明図である。
【図５０】本発明の第八の実施形態で行われる圧縮処理と解凍処理の概要を示す。
【符号の説明】
【０３００】
１０１…ホスト計算機、１１１…管理サーバ、１２５…第一のストレージシステム、１６１…第二のストレージシステム
【図１】
0005275692.tif 000002
【図２】
0005275692.tif 000003
【図３】
0005275692.tif 000004
【図４】
0005275692.tif 000005
【図５】
0005275692.tif 000006
【図６】
0005275692.tif 000007
【図７】
0005275692.tif 000008
【図８】
0005275692.tif 000009
【図９】
0005275692.tif 000010
【図１０】
0005275692.tif 000011
【図１１】
0005275692.tif 000012
【図１２】
0005275692.tif 000013
【図１３】
0005275692.tif 000014
【図１４】
0005275692.tif 000015
【図１５】
0005275692.tif 000016
【図１６】
0005275692.tif 000017
【図１７】
0005275692.tif 000018
【図１８】
0005275692.tif 000019
【図１９】
0005275692.tif 000020
【図２０】
0005275692.tif 000021
【図２１】
0005275692.tif 000022
【図２２】
0005275692.tif 000023
【図２３】
0005275692.tif 000024
【図２４】
0005275692.tif 000025
【図２５】
0005275692.tif 000026
【図２６】
0005275692.tif 000027
【図２７】
0005275692.tif 000028
【図２８】
0005275692.tif 000029
【図２９】
0005275692.tif 000030
【図３０】
0005275692.tif 000031
【図３１】
0005275692.tif 000032
【図３２】
0005275692.tif 000033
【図３３】
0005275692.tif 000034
【図３４】
0005275692.tif 000035
【図３５】
0005275692.tif 000036
【図３６】
0005275692.tif 000037
【図３７】
0005275692.tif 000038
【図３８】
0005275692.tif 000039
【図３９】
0005275692.tif 000040
【図４０】
0005275692.tif 000041
【図４１】
0005275692.tif 000042
【図４２】
0005275692.tif 000043
【図４３】
0005275692.tif 000044
【図４４】
0005275692.tif 000045
【図４５】
0005275692.tif 000046
【図４６】
0005275692.tif 000047
【図４７】
0005275692.tif 000048
【図４８】
0005275692.tif 000049
【図４９】
0005275692.tif 000050
【図５０】
0005275692.tif 000051