(57)【要約】【課題】ユーザが求めるサービスレベルでのデータ復元処理を保証し得るストレージシステム及びデータ復元方法を提案する。【解決手段】１つ以上のデータ復元候補ポイントを用いてジャーナル及びライトデータの複製が含まれる区間を特定し、当該区間内の１つ以上のジャーナルを対象として、当該ジャーナルに含まれるホストによりボリュームに書き込まれたライトデータのボリュームにおける書込み範囲の重複関係をチェックし、チック結果に基づいて、複数のライトデータの複製又は複数のジャーナルを１つのライトデータの複製又はジャーナルにまとめる重複除去処理を実行するようにした。【選択図】図１２
2008243138.tif 000002
【特許請求の範囲】
【請求項１】
ホストによりボリュームに書き込まれたライトデータの複製を必要に応じて作成する複製作成部と、
前記ボリュームにライトデータが書き込まれるごとに、当該ライトデータ及び前記ボリュームに対する前記ライトデータの書き込みに関する制御情報からなるジャーナルを作成するジャーナル作成部と、
前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元する復元部と、
前記ライトデータを復元する時点の候補であるデータ復元候補ポイントを表す情報を作成及び管理する作成及び管理部と、
１つ以上の前記データ復元候補ポイントを用いて前記ジャーナル及び前記ライトデータの複製が含まれる区間を特定し、当該区間内の１つ以上の前記ジャーナルを対象として、当該ジャーナルに含まれる前記ホストにより前記ボリュームに書き込まれたライトデータの前記ボリュームにおける書込み範囲の重複関係をチェックし、チック結果に基づいて、複数の前記ライトデータの複製又は複数の前記ジャーナルを１つの前記ライトデータの複製又は前記ジャーナルにまとめる重複除去処理を実行する重複除去部と
を備えることを特徴とするストレージシステム。
【請求項２】
前記重複除去部は、
前記ホストにより指定された前記区間について前記重複除去処理を実行する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記重複除去部は、
前記ホストから通知された時刻よりも過去の前記データ復元候補ポイントに基づき特定される区間内の１つ以上の前記ジャーナルを対象として前記重複除去処理を実行する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記重複除去部は、
前記ホストから前記ボリュームに対する前記データ書込み要求が与えられたときに、最新の前記データ復元候補ポイント以降に作成された前記ライトデータの複製及び前記ジャーナルからなる区間を特定し、
当該区間内の１つ以上の前記ジャーナルにそれぞれ含まれる前記ライトデータと、前記データ書込み要求と共に与えられたライトデータの前記ボリュームにおける書込み範囲との関係をチェックし、当該チェック結果に基づいて、当該ジャーナルに含まれるライトデータと、前記前記データ書込み要求と共に与えられたライトデータとを１つにまとめたジャーナルを生成する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記重複除去部は、
前記ライトデータの複製を格納するベースボリューム又は前記ジャーナルを格納するジャーナルボリュームを作成する際に、予め設定された前記ライトデータの過去の状態を復元するデータ復元処理に使用する容量に対する残容量をチェックし、容量が不足しているときに、前記重複除去処理を実行する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記重複除去部は、
予め設定された前記データ復元処理に使用する目標とする容量の設定値が変更されたことを契機として、当該容量に対する残容量をチェックする
ことを特徴とする請求項５に記載のストレージシステム。
【請求項７】
前記重複除去部は、
対応する前記ジャーナルの合計のデータ量又は前記ジャーナルの数に基づいて、前記ライトデータの過去の状態を復元するのに要するデータ復元時間を計算し、当該データ復元時間が予め設定された目標とする前記データ復元時間を上回るときには、前記重複除去処理を実行する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項８】
ホストによりボリュームに書き込まれたライトデータの複製を必要に応じて作成すると共に、前記ボリュームにライトデータが書き込まれるごとに、当該ライトデータ及び前記ボリュームに対する前記ライトデータの書き込みに関する制御情報からなるジャーナルを作成し、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元するデータ復元方法において、
前記ライトデータを復元する時点の候補であるデータ復元候補ポイントを表す情報を作成及び管理する第１のステップと、
１つ以上の前記データ復元候補ポイントを用いて前記ジャーナル及び前記ライトデータの複製が含まれる区間を特定し、当該区間内の１つ以上の前記ジャーナルを対象として、当該ジャーナルに含まれる前記ホストにより前記ボリュームに書き込まれたライトデータの前記ボリュームにおける書込み範囲の重複関係をチェックし、チック結果に基づいて、複数の前記ライトデータの複製又は複数の前記ジャーナルを１つの前記ライトデータの複製又は前記ジャーナルにまとめる重複除去処理を実行する第２のステップと
を備えることを特徴とするデータ復元方法。
【請求項９】
前記第２のステップでは、
前記ホストにより指定された前記区間についてのみ前記重複除去処理を実行する
ことを特徴とする請求項８に記載のデータ復元方法。
【請求項１０】
前記重複除去部は、
前記ホストから通知された時刻よりも過去の前記データ復元候補ポイントに基づき特定される区間内の１つ以上の前記ジャーナルを対象として前記重複除去処理を実行する
ことを特徴とする請求項８に記載のデータ復元方法。
【請求項１１】
前記重複除去部は、
前記ホストから前記ボリュームに対する前記データ書込み要求が与えられたときに、最新の前記データ復元候補ポイント以降に作成された前記ライトデータの複製及び前記ジャーナルからなる区間を特定し、
当該区間内の１つ以上の前記ジャーナルにそれぞれ含まれる前記ライトデータと、前記データ書込み要求と共に与えられたライトデータの前記ボリュームにおける書込み範囲との関係をチェックし、当該チェック結果に基づいて、当該ジャーナルに含まれるライトデータと、前記前記データ書込み要求と共に与えられたライトデータとを１つにまとめたジャーナルを生成する
ことを特徴とする請求項８に記載のデータ復元方法。
【請求項１２】
前記重複除去部は、
前記ライトデータの複製を格納するベースボリューム又は前記ジャーナルを格納するジャーナルボリュームを作成する際に、予め設定された前記ライトデータの過去の状態を復元するデータ復元処理に使用する容量に対する残容量をチェックし、容量が不足しているときに、前記重複除去処理を実行する
ことを特徴とする請求項８に記載のデータ復元方法。
【請求項１３】
前記第２のステップでは、
予め設定された前記データ復元処理に使用する目標とする容量の設定値が変更されたことを契機として、当該容量に対する残容量をチェックする
ことを特徴とする請求項１２に記載のデータ復元方法。
【請求項１４】
前記第２のステップでは、
対応する前記ジャーナルの合計のデータ量又は前記ジャーナルの数に基づいて、前記ライトデータの過去の状態を復元するのに要するデータ復元時間を計算し、当該データ復元時間が予め設定された目標とする前記データ復元時間を上回るときには、前記重複除去処理を実行する
ことを特徴とする請求項１に記載のデータ復元方法。
【請求項１５】
ホストによりボリュームに書き込まれたライトデータの複製を必要に応じて作成する複製作成部と、
前記ボリュームにライトデータが書き込まれるごとに、当該ライトデータ及び前記ボリュームに対する前記ライトデータの書き込みに関する制御情報からなるジャーナルを作成するジャーナル作成部と、
前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元する復元部と、
予め設定された前記ライトデータの過去の状態を復元するのに要する目標とするデータ復元時間と、予め設定された目標とする前記ジャーナルの保持期間と、予め設定された前記ライトデータの過去の状態を復元するデータ復元処理に使用する目標とする容量とを記憶する記憶部と、
前記目標とするデータ復元時間、前記目標とするジャーナルの保持期間及び前記目標とする容量の少なくとも１つを保証するように、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元するライトデータ復元部と
を備えることを特徴とするストレージシステム。
【請求項１６】
前記ライトデータ復元部は、
対応する前記ジャーナルの合計のデータ量又は前記ジャーナルの数に基づいて、前記ライトデータの過去の状態を復元するのに要するデータ復元時間を計算し、当該データ復元時間が前記目標とするデータ復元時間を上回る場合には、新たな前記ライトデータの複製を作成する
ことを特徴とする請求項１５に記載のストレージシステム。
【請求項１７】
前記ライトデータ復元部は、
前記ライトデータの過去の状態を復元するのに要するデータ復元時間と、前記データ復元処理に使用する容量とを計算し、計算により得られた前記データ復元時間が前記目標とするデータ復元時間を上回る場合、又は計算により得られた前記データ復元処理に使用する容量が前記目標とする容量を上回る場合には、対応する前記ジャーナルを前記ライトデータの複製に適用し、又は最古の前記ライトデータの複製及び対応する前記ジャーナルを削除する
ことを特徴とする請求項１５に記載のストレージシステム。
【請求項１８】
前記ライトデータ復元部は、
前記データ復元処理に使用する容量と、前記ジャーナルの保持期間とを計算し、統計により得られた又は前記ホストから通知された前記ボリュームに対する前記ホストからのライトデータの書込み量に基づいて、前記目標とするジャーナルの保持期間内に作成するであろう前記ジャーナルの合計のデータ量を見積もり、前記データ復元処理に使用する容量が前記目標とする容量を上回らないように、前記データの複製を作成するタイミングを制御する
ことを特徴とする請求項１５に記載のストレージシステム。
【請求項１９】
前記ライトデータ復元部は、
前記目標とするデータ復元時間と、前記目標とするジャーナルの保持期間と、前記目標とする容量とのうち、設定された優先順位が高いパラメタを保証するように、前記ジャーナルの作成及び破棄と、前記ライトデータの複製の作成及び破棄を制御する
ことを特徴とする請求項１５に記載のストレージシステム。
【請求項２０】
ホストによりボリュームに書き込まれたライトデータの複製を必要に応じて作成すると共に、前記ボリュームにライトデータが書き込まれるごとに、当該ライトデータ及び前記ボリュームに対する前記ライトデータの書き込みに関する制御情報からなるジャーナルを作成し、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元するデータ復元方法において、
予め設定された前記ライトデータの過去の状態を復元するのに要する目標とするデータ復元時間と、予め設定された目標とする前記ジャーナルの保持期間と、予め設定された前記ライトデータの過去の状態を復元するデータ復元処理に使用する目標とする容量とを記憶する第１のステップと、
前記目標とするデータ復元時間、前記目標とするジャーナルの保持期間及び前記目標とする容量の少なくとも１つを保証するように、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元する第２のステップと
を備えることを特徴とするデータ復元方法。
【請求項２１】
前記第２のステップでは、
対応する前記ジャーナルの合計のデータ量又は前記ジャーナルの数に基づいて、前記ライトデータの過去の状態を復元するのに要するデータ復元時間を計算し、当該データ復元時間が前記目標とするデータ復元時間を上回る場合には、新たな前記ライトデータの複製を作成する
ことを特徴とする請求項２０に記載のデータ復元方法。
【請求項２２】
前記第２のステップでは、
前記ライトデータの過去の状態を復元するのに要するデータ復元時間と、前記データ復元処理に使用する容量とを計算し、計算により得られた前記データ復元時間が前記目標とするデータ復元時間を上回る場合、又は計算により得られた前記データ復元処理に使用する容量が前記目標とする容量を上回る場合には、対応する前記ジャーナルを前記ライトデータの複製に適用し、又は最古の前記ライトデータの複製及び対応する前記ジャーナルを削除する
ことを特徴とする請求項２０に記載のデータ復元方法。
【請求項２３】
前記第２のステップでは、
前記データ復元処理に使用する容量と、前記ジャーナルの保持期間とを計算し、統計により得られた又は前記ホストから通知された前記ボリュームに対する前記ホストからのライトデータの書込み量に基づいて、前記目標とするジャーナルの保持期間内に作成するであろう前記ジャーナルの合計のデータ量を見積もり、前記データ復元処理に使用する容量が前記目標とする容量を上回らないように、前記データの複製を作成するタイミングを制御する
ことを特徴とする請求項２０に記載のデータ復元方法。
【請求項２４】
前記第２のステップでは、
前記目標とするデータ復元時間と、前記目標とするジャーナルの保持期間と、前記目標とする容量とのうち、設定された優先順位が高いパラメタを保証するように、前記ジャーナルの作成及び破棄と、前記ライトデータの複製の作成及び破棄を制御する
ことを特徴とする請求項２０に記載のデータ復元方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及びデータ復元方法に関し、特にデータのバックアップ及びリカバリ技術に関する。
【背景技術】
【０００２】
企業情報システムのデータを格納するストレージシステムは、従来からデータ保護という役割を担っている。データ保護のニーズなどから、ストレージシステムの分野では、企業情報システムを停止することなく業務データの複製（レプリケーション）を作成し、災害やオペレーションミスが発生した場合に瞬時に複製から業務データをリカバリ（復元）するレプリケーション機能やＣＤＰ(Continuous Data Protection)機能などが提案されている。
【０００３】
レプリケーション機能は、ストレージシステムが、ホストからの複製指示を受領したときに、その時点で対象とするボリューム（以下、これを対象ボリュームと呼ぶ）に格納されているデータを別のボリュームにコピーすることにより、その対象ボリュームの複製を作成する機能である。定期的にレプリケーション機能を実行することにより、対象ボリュームの複製を離散的に取得しておくことが可能となる。レプリケーション機能によってリカバリ可能なポイントは、ストレージシステムが対象ボリュームの複製を作成した時点である。
【０００４】
ＣＤＰ機能は、レプリケーション機能と併用することで、少数の複製から多数ポイントへのリカバリを可能とする機能である（例えば、特許文献１参照）。
【０００５】
実際上、ＣＤＰ機能では、ストレージシステム側において、ホストからのライト要求を受領したときに、当該ライト要求に含まれる各種制御情報（ライトデータの書込み先アドレスやライトデータのデータ長など）やライトデータからなるジャーナルを作成し、これを記憶しておく。そしてストレージシステムは、リカバリの際には、レプリケーション機能によって取得した対象ボリュームの複製（以下、これをベースボリュームと呼ぶ）にジャーナルに含まれるライトデータを順次上書きする（以下、これを「ジャーナルを適用する」と呼ぶ）。
【０００６】
このようなＣＤＰ機能によれば、対象とする業務データの複製に適用するジャーナルを選択することによって、対象ボリュームの複製を取得した時刻以外の対象ボリュームの内容もリカバリすることができる。
【０００７】
ホスト上で動作するソフトウェアを静止化したポイントのデータをリカバリするためには、データを復元する際の基準となるリカバリポイントと呼ばれるポイントを作成しておく。この場合、ホストは、ソフトウェアを静止化した後、ストレージシステムにリカバリポイントとしてある時点を指定したリカバリポイント作成要求を発行する。
【０００８】
なお、特種なジャーナルを作成しておくなどして、リカバリポイント作成要求を受領したストレージシステムが、リカバリポイント作成要求の受領以前に作成したジャーナルと、リカバリポイント作成要求の受領以後に作成したジャーナルとを区別できるようにしておく。そしてストレージシステムは、この後ホストからリカバリポイントへのリカバリ要求を受領した場合には、ベースボリュームにリカバリポイントまでのジャーナルを古いものから順次適用することで、リカバリポイントのデータをリカバリする。
【特許文献１】米国特許公開明細書２００５／００２８０２２Ａ１
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献1には、かかるジャーナルを格納するためのボリューム（以後、ジャーナルボリューム）をストレージシステムに用意し、このジャーナルボリュームに新たなジャーナルを格納できなくなった場合に、ベースボリュームとジャーナルとを用いて新たなベースボリュームを作成した後、このベースボリュームよりも以前のジャーナルを破棄することが開示されている。
【００１０】
ところで、かかるストレージシステムを使用するユーザの中には、ジャーナルボリュームのサイズよりもジャーナルを保持する時間的範囲、つまり対象ボリュームをＣＤＰ機能によりリカバリできる時間的範囲（以下、これをリカバリ範囲と呼ぶ）や、過去の対象ボリュームの状態をリカバリするのに要する時間（以下、これをリカバリ時間と呼ぶ）又はリカバリ処理に使用するストレージシステム内の容量を優先するユーザも存在する。
【００１１】
この場合において、特許文献1に開示された技術では、ユーザが設定したジャーナルボリュームの容量に依存してリカバリ時間やリカバリ範囲が決定する。このため、例えば過去の対象ボリュームの状態をリカバリする際に、ベースボリュームに適用するジャーナル量が多すぎると、リカバリ時間（以下、これをＲＴＯ（Recovery Time Objective）と呼ぶ）や、リカバリ範囲及び又は容量などについて、ユーザが求めるサービスレベルでのリカバリを行い得ない場合があった。
【００１２】
本発明は以上の点を考慮してなされたもので、ユーザが求めるサービスレベルでのデータ復元処理を保証し得るストレージシステム及びデータ復元方法を提案しようとするものである。
【課題を解決するための手段】
【００１３】
かかる課題を解決するため本発明においては、ホストによりボリュームに書き込まれたライトデータの複製を必要に応じて作成する複製作成部と、前記ボリュームにライトデータが書き込まれるごとに、当該ライトデータ及び前記ボリュームに対する前記ライトデータの書き込みに関する制御情報からなるジャーナルを作成するジャーナル作成部と、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元する復元部と、前記ライトデータを復元する時点の候補であるデータ復元候補ポイントを表す情報を作成及び管理する作成及び管理部と、１つ以上の前記データ復元候補ポイントを用いて前記ジャーナル及び前記ライトデータの複製が含まれる区間を特定し、当該区間内の１つ以上の前記ジャーナルを対象として、当該ジャーナルに含まれる前記ホストにより前記ボリュームに書き込まれたライトデータの前記ボリュームにおける書込み範囲の重複関係をチェックし、チック結果に基づいて、複数の前記ライトデータの複製又は複数の前記ジャーナルを１つの前記ライトデータの複製又は前記ジャーナルにまとめる重複除去処理を実行する重複除去部とを備えることを特徴とする。
【００１４】
この結果、このストレージシステムでは、重複するジャーナルを除去することができるため、データ復元処理の際にライトデータの複製に適用すべきジャーナル数を低減させることができる。かくするにつきデータ復元処理に要する時間を短時間化させることができ、ユーザが求めるデータ復元時間内でデータ復元処理を行うことができる。
【００１５】
また本発明においては、ホストによりボリュームに書き込まれたライトデータの複製を必要に応じて作成すると共に、前記ボリュームにライトデータが書き込まれるごとに、当該ライトデータ及び前記ボリュームに対する前記ライトデータの書き込みに関する制御情報からなるジャーナルを作成し、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元するデータ復元方法において、前記ライトデータを復元する時点の候補であるデータ復元候補ポイントを表す情報を作成及び管理する第１のステップと、１つ以上の前記データ復元候補ポイントを用いて前記ジャーナル及び前記ライトデータの複製が含まれる区間を特定し、当該区間内の１つ以上の前記ジャーナルを対象として、当該ジャーナルに含まれる前記ホストにより前記ボリュームに書き込まれたライトデータの前記ボリュームにおける書込み範囲の重複関係をチェックし、チック結果に基づいて、複数の前記ライトデータの複製又は複数の前記ジャーナルを１つの前記ライトデータの複製又は前記ジャーナルにまとめる重複除去処理を実行する第２のステップとを備えることを特徴とする。
【００１６】
この結果、このデータ復元方法によれば、重複するジャーナルを除去することができるため、データ復元処理の際にライトデータの複製に適用すべきジャーナル数を低減させることができる。かくするにつきデータ復元処理に要する時間を短時間化させることができ、ユーザが求めるデータ復元時間内でデータ復元処理を行うことができる。
【００１７】
さらに本発明においては、ホストによりボリュームに書き込まれたライトデータの複製を必要に応じて作成する複製作成部と、前記ボリュームにライトデータが書き込まれるごとに、当該ライトデータ及び前記ボリュームに対する前記ライトデータの書き込みに関する制御情報からなるジャーナルを作成するジャーナル作成部と、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元する復元部と、予め設定された前記ライトデータの過去の状態を復元するのに要する目標とするデータ復元時間と、予め設定された目標とする前記ジャーナルの保持期間と、予め設定された前記ライトデータの過去の状態を復元するデータ復元処理に使用する目標とする容量とを記憶する記憶部と、前記目標とするデータ復元時間、前記目標とするジャーナルの保持期間及び前記目標とする容量の少なくとも１つを保証するように、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元するライトデータ復元部とを備えることを特徴とする。
【００１８】
この結果、このストレージシステムでは、データ復元時間、データ復元範囲及びデータ復元処理に使用する容量のうちの少なくとも１つを保証したデータ復元処理を行うことができる。
【００１９】
さらに本発明においては、ホストによりボリュームに書き込まれたライトデータの複製を必要に応じて作成すると共に、前記ボリュームにライトデータが書き込まれるごとに、当該ライトデータ及び前記ボリュームに対する前記ライトデータの書き込みに関する制御情報からなるジャーナルを作成し、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元するデータ復元方法において、予め設定された前記ライトデータの過去の状態を復元するのに要する目標とするデータ復元時間と、予め設定された目標とする前記ジャーナルの保持期間と、予め設定された前記ライトデータの過去の状態を復元するデータ復元処理に使用する目標とする容量とを記憶する第１のステップと、前記目標とするデータ復元時間、前記目標とするジャーナルの保持期間及び前記目標とする容量の少なくとも１つを保証するように、前記ライトデータの複製及び前記ジャーナルに基づいて当該ライトデータの過去の状態を復元する第２のステップとを備えることを特徴とする。
【００２０】
この結果、このデータ復元方法によれば、データ復元時間、データ復元範囲及びデータ復元処理に使用する容量のうちの少なくとも１つを保証したデータ復元処理を行うことができる。
【発明の効果】
【００２１】
本発明によれば、ユーザが求めるサービスレベルでのデータ復元処理を保証し得るストレージシステム及びデータ復元方法を実現できる。
【発明を実施するための最良の形態】
【００２２】
以下図面について、本発明の一実施の形態を詳述する。なお、以下に説明する実施形態は一例であり、本発明はこれに限定されるものではない。
【００２３】
（１）第１の実施の形態
（１−１）本実施の形態による情報処理システムの構成
図１〜図１４を用いて、第１の実施の形態を説明する。まず図１及び図２を用いてシステム構成について説明する。次に、図３を用いてＣＤＰ機能について説明し、図４及び図５を用いてＣＤＰを制御するために必要となる制御情報及びプログラムについて説明する。次に、図６及び図７を用いてＣＤＰを開始するための処理（以下、これをＣＤＰ開始処理と呼ぶ）について説明する。そして、図８〜図１４を用いてユーザが指定するＲＴＯを保証するＣＤＰ制御方式を２つ説明する。
【００２４】
図１及び図２において、１は全体として本実施の形態による情報処理システムを示す。情報処理システム１は、ホスト１００及びストレージシステム２００がネットワーク１９０を介して接続されることにより構成されている。
【００２５】
ホスト１００は、アプリケーションやデータベース管理システム（以後、「ＤＢＭＳ」と呼ぶ）などのソフトウェアに基づいて所定の業務処理を行なう装置である。そして、ホスト１００は、業務処理に用いるデータの一部又は全てをストレージシステム２００に格納して保存する。
【００２６】
図１に示すように、ホスト１００は、ネットワーク１４０を介して接続されたＩＯポート１３０、メモリ１１０及びプロセッサ１２０を備えて構成される。ホスト１００は、ＩＯポート１３０を通じてストレージシステム２００に対するＩＯリクエストやそれに伴うデータを送受信できる。なおホスト１００にＩＯポート１３０を複数設けるようにしてもよい。
【００２７】
メモリ１１０には、ＯＳ（Operating System）１７０、ミドルウェア１６０、アプリケーション１５０及び管理ソフト１８０などのソフトウェアが記憶される。プロセッサ１２０は、これらのソフトウェアをネットワーク１４０を介してメモリ１１０から読み出し実行する。後述するＣＤＰ開始指示プログラム１８１やパラメタ設定指示プログラム１８２は、管理ソフト１８０の一部を構成する。これらＣＤＰ開始指示プログラム１８１やパラメタ設定指示プログラム１８２に基づくホスト１００の処理内容については後述する。
【００２８】
ストレージシステム２００は、上述のようにホスト１００が実行する業務処理に用いられるデータを格納するための装置である。このストレージシステム２００は、プロセッサパッケージ２１０、メモリ２２０、ＨＤＤ(Hard Disk Drive)２４０及び管理端末２７０を有し、これらがネットワーク２３０を介して相互に接続されることにより構成されている。なお、管理端末２７０をストレージシステム２００と別体に設けるようにしてもよい。ただし、本実施の形態では管理端末２７０がストレージシステム２００に内蔵されているものとする。またネットワーク２３０は、保守ポート２１６及び保守ポート２７５間を接続する保守系ネットワークと、バックエンドポート２１５及びＨＤＤ２４０間を接続するＩＯ系ネットワークとに物理的に分けてもよい。
【００２９】
プロセッサパッケージ２１０は、フロントエンドポート２１１(図２中ではＦＥポートと略記)、ＣＰＵ(Central Processing Unit)２１３、ローカルメモリ２１４、保守ポート２１６及びバックエンドポート２１５(図２中ではＢＥポートと略記)を備える。そして、これらはネットワーク２１２によって相互に接続されている。
【００３０】
フロントエンドポート２１１は、ホスト１００のＩＯポート１３０と接続されており、ホスト１００からのライト要求やリード要求を受け付けることができる。なお、ホスト１００のＩＯポート１３０とフロントエンドポート２１１は、直接接続されている必要はなく、スイッチなどを用いて間接的に接続されていてもよい。
【００３１】
ＣＰＵ２１３は、メモリ２２０のプログラム記憶領域２２２に格納されたプログラムを実行することで、ホスト１００からのライト、リード、バックアップ及びリカバリ等の各種処理を実行する。
【００３２】
ローカルメモリ２１４は、ＣＰＵ２１３が実行するプログラムを一時的に格納するために用いられるほか、メモリ２２０やＨＤＤ２４０に格納されているデータ(制御情報、業務データ及びプログラムなど)を一時的に格納するためにも用いられる。ローカルメモリ２１４はＣＰＵ２１３からの距離がメモリ２２０やＨＤＤ２４０に比べ近いため、ＣＰＵ２１３がこれらのデータに高速にアクセスすることが可能となる。
【００３３】
バックエンドポート２１５は、ネットワーク２３０を介してＨＤＤ２４０に接続されており、ホスト１００からのライト要求に応じてデータをＨＤＤ２４０に書き込んだり、ホスト１００からのリード要求に応じて対応するデータをＨＤＤ２４０から読み出したりする際に利用される。
【００３４】
保守ポート２１６は、ネットワーク２３０を介して保守端末２７０の保守ポート２７５と接続されており、保守端末２７０にプロセッサパッケージ２１０の稼動情報を送信したり、保守端末２７０からの保守操作を受け付けたりするために使用される。
【００３５】
なお、プロセッサパッケージ２１０に設けるフロントエンドポート２１１、ＣＰＵ２１３、ローカルメモリ２１４、バックエンドポート２１５及び保守ポート２１６の数は、いずれも１つであっても複数であってもよい。またストレージシステム２００に、１つ以上のプロセッサパッケージ２１０を設けるようにしてもよい。
【００３６】
メモリ２２０は、各種データを格納するために用いられる。実際上、メモリ２２０が提供する記憶領域は、格納されるデータの種類に応じて制御情報記憶領域２２１、プログラム記憶領域２２２及びキャッシュ領域２２３に分けられている。
【００３７】
そしてプログラム記憶領域２２２には、ストレージシステム２００が提供する機能を実現するための各種プログラムが格納され、制御情報記憶領域２２１には、これらのプログラムが利用する制御情報が格納される。メモリ２２０に格納されたこれらプログラム及び制御情報は、プロセッサパッケージ２１０のＣＰＵ２１３によりネットワーク２３０を介して読み出され、後述する各種処理に利用される。
【００３８】
またキャッシュ領域２２３には、ＨＤＤ２４０に読み書きするデータが一時的に格納される。メモリ２２０は、ＨＤＤ２４０に比べて高速な記憶媒体であるため、ＨＤＤ２４０に格納される使用頻度の高いデータなどをキャッシュ領域２２３に保持しておくことにより、常に全てのデータをＨＤＤ２４０に格納する場合に比べて、ホスト１００からのリード要求やライト要求に対する処理を高速化させることができる。なお、メモリ２２０は、障害発生時におけるデータ消失などを避けるため、２重化するようにしてもよい。
【００３９】
ＨＤＤ２４０には、ホスト１００上で実行されるソフトウェアが利用するデータが格納される。なお、１つ以上のＨＤＤ２４０を、パリティグループという単位でまとめてＲＡＩＤ（Redundant Arrays of Inexpensive Disks）方式で運用するようにしてもよい。このようにすることによりデータ保護の高信頼化を図ることができる。また、１つ上のＨＤＤ２４０からなるパリティグループを１つ以上の論理的な領域に分けて、それぞれを論理的な記憶デバイスとして扱うようにしてもよい。以下においては、このような論理的な記憶デバイスをボリューム２５０と呼ぶものとする。なお、本実施の形態では、物理的な記憶媒体としてＨＤＤ２４０を使用したが、ＨＤＤ２４０に代えてフラッシュメモリやＤＶＤなどの記録媒体を使用するようにしてもよい。
【００４０】
保守端末２７０は、ＣＰＵ２７１、メモリ２７２、入出力部２７４及び保守ポート２７５を備える。
【００４１】
ＣＰＵ２７１は、管理端末２７０全体の動作制御を司るプロセッサである。ＣＰＵ２７１がメモリ２７２に格納された保守用プログラム２７３を読み出して実行することで後述のような保守が行われる。
【００４２】
メモリ２７２は、上述の保守用プログラム２７３を記憶するために用いられるほか、ＣＰＵ２７１のワークメモリとしても用いられる。またメモリ２７２には、プロセッサパッケージ２１０から得た情報を格納することもできる。なお、保守端末２７０のメモリ２７２に、ホスト１００のメモリ１１０に格納されている管理ソフト１８０のＣＤＰ開始指示プログラム１８１及びパラメタ設定指示プログラム１８２と同じプログラムを格納しておくようにしてもよい。
【００４３】
入出力部２７４は、ユーザからの操作を受け付けたり、ユーザにストレージシステム２００の稼動情報を表示したりするためのキーボード、マウス及びモニタなどから構成される。また保守ポート２７５は、上述のようにプロセッサパッケージ２１０の保守ポート２１６と接続されており、プロセッサパッケージ２１０から稼動情報を取得したり、プロセッサパッケージ２１０に保守操作を送信したりするために使用される。
【００４４】
なお、ストレージシステム２００には、メモリ２２０、プロセッサパッケージ２１０、保守端末２７０及びＨＤＤ２４０などに電源を供給する電源部（図示しない）が設けられる。
【００４５】
（１−２）本実施の形態によるＣＤＰ機能
図３を用いてＣＤＰ機能について説明する。ストレージシステム２００内には、ホスト１００が実行する業務処理で用いるデータを格納する業務ボリューム３０１が定義される。矢印３０５は、ホスト１００から業務ボリューム３０１に業務データが書き込まれることを示す。ＣＤＰ機能は、この業務ボリューム３０１の過去の時点（リカバリポイント）のデータを復元する機能である。
【００４６】
ベースボリューム３０２は、リカバリポイントにおける業務ボリューム３０１の複製である。例えば、１時間前の業務ボリューム３０１のデータが格納されている。矢印３０７は、ベースボリューム３０２が業務ボリューム３０１の複製であることを示している。
【００４７】
ジャーナルボリューム３０３は、ホスト１００から業務ボリューム３０１にデータライトがあったときに、当該データライトに関する制御情報（ライトアドレス、ライトデータ長、ライト時刻及びライト順序番号など）とライトデータとから構成されるジャーナルを格納しておくためのボリュームである。矢印３０６は、ホスト１００から業務ボリューム３０１にデータが書き込まれたときに、ストレージシステム２００においてジャーナルを作成し、そのジャーナルをジャーナルボリューム３０３に格納することを示す。なお、上述のライト順序番号とは、ホスト１００からストレージシステム２００にライトデータが書き込まれた順序を示す。
【００４８】
リカバリボリューム３０４は、ＣＤＰ機能を用いてリカバリしたデータを格納するためのボリュームである。ホスト１００からリカバリポイントを指定したリカバリが指示されると、ベースボリューム３０２のデータをリカバリボリューム３０４にコピーする。この後、リカバリボリューム３０４に対してかかるリカバリポイントまでのジャーナルを適用する。
【００４９】
このときジャーナルは、ライト順序番号の昇順で適用する。これは、同一アドレスへのジャーナルの適用順序が入れ替わり、当該アドレスのリカバリしたデータが古いデータとなることなどを防ぐためである。例えば、ライト順序番号１のジャーナルは９時５５分にアドレスＡにライトされたデータＡを含んでおり、ライト順序番号３のジャーナルは９時５６分にアドレスＡにライトされたデータＢを含んでいるとする。１０時のデータをリカバリする場合、アドレスＡには、データＡではなくデータＢが書かれていなければならない。ライト順序番号の昇順にデータを書き込むことにより、アドレスＡにデータＢが書き込まれていることを保証することができる。
【００５０】
以上のようにして、ホスト１００が指定するリカバリポイントのデータをリカバリすることができる。
【００５１】
矢印３０８は、ベースボリューム３０２をリカバリボリューム３０４内に複製することを示しており、矢印３０９は、ジャーナルをリカバリボリューム３０４に適用することを示している。さらに矢印３１０は、ホスト１００がリカバリボリューム３０４にアクセス（リード／ライト）することを示している。
【００５２】
図３に示す例では、２つの業務ボリューム３０１、当該２つの業務ボリューム３０１に対するベースボリューム３０２、３つのジャーナルボリューム３０３から１つのＣＤＰグループ３００を形成している。ＣＤＰグループという概念を用いることによって、ＣＤＰグループ単位で過去のリカバリポイントのデータを復元することができる。なお、ＣＤＰグループ３００に属する特定の業務ボリューム３０１のデータのみをリカバリすることも可能である。またストレージシステム２００に複数個のＣＤＰグループ３００が存在していてもよい。
【００５３】
なお、リカバリボリューム３０４として業務ボリューム３０１を適用する（つまり業務ボリューム３０１の内容をリカバリポイントの状態に戻す）ようにしてもよい。このようにすることによって、ストレージシステム２００のボリューム数の消費を抑止することができる。またリカバリボリューム３０４としてベースボリューム３０２を適用するようにしてもよい。この場合、上述したベースボリューム３０２からリカバリボリューム３０４へのデータのコピーは不要となる。
【００５４】
また上述の説明では、ベースボリューム３０２を作成したとき、業務ボリューム３０１の全データをベースボリューム３０２にコピーし、リカバリボリューム３０４を作成したときに、ベースボリューム３０２の全データをリカバリボリューム３０４にコピーするようにしたが、以下に述べるような方法（第１のレプリケーション方法及び第２のレプリケーション方法）によってベースボリューム３０２及びリカバリボリューム３０４を作成するようにしてもよい。以下の説明では、業務ボリューム３０１のデータを用いてベースボリューム３０２を作成する場合を例に説明するが、ベースボリューム３０２のデータを用いてリカバリボリュームの場合も同様である。
【００５５】
まず、第１のレプリケーション方法について説明する。第１のレプリケーション方法では、ベースボリューム３０２を作成したときに、業務ボリューム３０１にライトが行われるまでは、業務ボリューム３０１からベースボリューム３０２へのデータコピーを行なわない。
【００５６】
ベースボリューム３０２を作成したときに、その制御情報として、当該ベースボリューム３０２のアドレスごとに業務ボリューム３０１の同一アドレスへのポインタを作成する。ベースボリューム３０２からデータをリードする際には、かかるポインタを用いて、ストレージシステム２００が業務ボリューム３０１からそのデータをリードするように制御する。
【００５７】
ホスト１００から業務ボリューム３０１に対するライト要求が発行された場合、当該ライト要求においてデータのライト先として指定されたアドレスに格納されているデータをベースボリューム３０２にコピーし、コピー完了後に業務ボリューム３０１にホスト１００からのライトデータを書き込む。さらに、このアドレスについては、ベースボリューム３０２から業務ボリューム３０１へのポインタを削除する。
【００５８】
以上の処理によって、業務ボリューム３０１からライト要求が発行されたアドレスに対応するベースボリューム３０２中のデータに対するリード要求が、業務ボリューム３０１ではなくベースボリューム３０２に対して行なわれることとなる。
【００５９】
次に、第２のレプリケーション方法について説明する。第２のレプリケーション方法では、第１のレプリケーション方法に加えて、ベースボリューム３０２に対して実際にデータを書き込む場合にのみ記憶領域を割当てる。
【００６０】
具体的には、まずストレージシステム２００内に必要に応じて複数のベースボリューム３０２に割当てるための記憶領域を作成しておく。この記憶領域をプールボリューム（図示しない）と呼ぶ。そしてストレージシステム２００は、ホスト１００から業務ボリューム３０１に対するライト要求が発行された場合に、プールボリュームからベースボリューム３０２に必要な容量の領域を割当てる。
【００６１】
またストレージシステム２００は、ライト要求においてデータのライト先として指定されたアドレスに格納されているデータを、かかるプールボリュームからベースボリューム３０２に割当てられた領域にコピーし、コピー完了後にホスト１００からのライトデータを業務ボリューム３０１に書き込む。この場合、ベースボリューム３０２は、業務ボリューム３０１又はプールボリュームへのポインタとなる。
【００６２】
以上のように論理的に作成するベースボリューム３０２及びリカバリボリューム３０４でも本発明を実施することができる。上述の第１のレプリケーション方法及び第２のレプリケーション方法のようにベースボリューム３０２及びリカバリボリューム３０４を作成することで、ベースボリューム３０２及びリカバリボリューム３０４として確保する記憶領域を削減することができる。なお、本実施の形態で述べていないレプリケーション機能によっても本発明を実施することは可能である。
【００６３】
ＣＤＰを制御するための制御プログラム及び制御情報の一例を、図４〜図８に示す。図４は、ストレージシステム２００のメモリ２２０の制御情報記憶領域２２１及びプログラム記憶領域２２２にそれぞれ格納される制御情報及び制御プログラムの詳細を示している。制御情報記憶領域２２１には、ＣＤＰ機能に関する制御情報としてＣＤＰグループ情報４００及びリストア能力情報４０１が格納される。ＣＤＰグループ情報４００については、図５を用いて説明する。リストア能力情報４０１は、ストレージシステム２００がジャーナルをリカバリボリューム３０４（図３）に適用する能力を示す情報である。なお、プログラム記憶領域２２２に格納された各種プログラムの詳細については後述する。
【００６４】
図５は、ＣＤＰグループ情報４００の詳細を示す。ＣＤＰグループ番号情報５００は、ストレージシステム２００内の対応するＣＤＰグループ３００に対して当該ＣＤＰグループ３００を一意に識別するために付与した識別番号（以下、これをＣＤＰグループ番号と呼ぶ）を表す情報である。ライト順序番号情報５０１は、ホスト１００からライトを受領し作成するジャーナルに割り当てたライト順序番号を表す情報である。ストレージシステム２００は、ジャーナルを作成する際、そのときのライト順序番号情報５０１の値をライト順序番号として当該ジャーナルに割り当てた後、次のジャーナルに割り当てるライト順序番号を用意しておくために、ライト順序番号情報５０１の値をインクリメントする（１を加える）。
【００６５】
業務ボリューム情報５０４は、対応するＣＤＰグループ３００に属する業務ボリューム３０１を管理するための情報である。具体的には、ボリューム番号及びボリュームサイズなどの情報からなる。
【００６６】
またベースボリューム情報５０６は、対応するＣＤＰグループ３００に属するベースボリューム３０２を管理するための情報である。ベースボリューム情報５０６の詳細の一例を図６に示す。
【００６７】
図６において、「ベースボリューム番号」は、対応するベースボリューム３０２に付与した識別番号を表し、「作成時刻」は、そのベースボリューム３０２を作成した時刻を表す。また「リストア済みライト順序番号」は、そのベースボリューム３０２に対して最後に適用したジャーナルのライト順序番号を表す。さらに「対応業務ボリューム番号」は、そのベースボリューム３０２の複製元となる業務ボリューム３０１の業務ボリューム番号を表す。
【００６８】
ジャーナルボリューム情報５０５は、対応するＣＤＰグループ３００に属しているジャーナルボリューム３０３（図３）を管理するための情報である。ジャーナルボリューム情報５０５の詳細の一例を図７に示す。
【００６９】
図７において、「ジャーナルボリューム番号」は対応するジャーナルボリューム３０３の番号であり、「サイズ」はそのジャーナルボリューム３０３のサイズを表す。また「ボリューム使用率」は、「ジャーナルボリューム番号」によって識別されるジャーナルボリューム３０３の使用率を示す。ジャーナルを削除した場合、使用率は減少する。「全体使用率」は、ＣＤＰグループ番号で識別されるＣＤＰグループ単位でのジャーナルボリューム３０３の使用率を示す。図７の場合、ＣＤＰグループ３００に属する３つのジャーナルボリューム３０３は、全て「５ＧＢ」の容量であり、これらの使用率はそれぞれ６０％、７０％、８０％である。よって、ＣＤＰグループ単位では、１５ＧＢの容量があり、その７０％が使用済みということになる。よって、この場合の「全体使用率」は７０％となる。
【００７０】
上記以外の、「現ＲＴＯ情報」５０２、「ユーザ指定ＲＴＯ情報」５０３、「現保護期間情報」５０７については、これらの情報を使用する処理の説明と合わせて後述する。
【００７１】
なお、メモリ２２０や、ボリューム２５０に格納されているデータ(制御情報、業務データ及びプログラムなど)を一時的にローカルメモリ２１４に格納してもよい。また、特定のデータについては、ローカルメモリ２１４のみで管理してもよい。さらに、メモリ２２０やボリューム２５０に格納されている特定のデータのコピーを常にローカルメモリ２１４に格納するようにしてもよい。ホスト１００のプロセッサ１２０においても同様である。すなわち、ホスト１００のプロセッサ１２０が、メモリ１１０に格納される各種データをホスト１００に設けられた図示しないローカルメモリに格納するようにしてもよい。
【００７２】
図８を用いてＣＤＰを開始するための処理（以下、これをＣＤＰ開始処理と呼ぶ）の一例を説明する。このＣＤＰ開始処理は、ホスト１００のプロセッサ１２０がメモリ１１０に格納されたＣＤＰ開始指示プログラム１８１を実行し、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されたＣＤＰ開始プログラム４０２を実行することで行われる。なお、以下においては、各種処理の処理主体を「プログラム」として説明するが、実際上は、ホスト１１０のプロセッサ１２０（図１）やストレージシステム２００におけるプロセッサパッケージ２１０のＣＰＵ２１３がそのプログラムに基づいて対応する処理を実行することは言うまでもない。
【００７３】
まず、ホスト１００のＣＤＰ開始指示プログラム１８１は、ストレージシステム２００のＣＤＰ開始プログラム４０２にＣＤＰの開始指示を送信し（Ｓ１００）、ＣＤＰ開始プログラム４０２からの応答を待つ（Ｓ１０１）。また、ＣＤＰ開始指示プログラム１８１は、ＣＤＰ開始指示を送信する際、対象とする業務ボリューム３０１の業務ボリューム番号をＣＤＰ開始プログラム４０２に通知する。なお、ＣＤＰ開始指示プログラム１８１がステップS１００の直前にユーザからＣＤＰ開始指示を受け付ける処理を実行してもよい。
【００７４】
ＣＤＰ開始プログラム４０２は、ＣＤＰ開始プログラム１８１からのＣＤＰ開始指示及び業務ボリューム番号を受領すると（Ｓ１０２）、対象とするＣＤＰグループ３００にＣＤＰグループ番号を割り当て、割り当てたＣＤＰグループ番号を、対応するＣＤＰグループ情報４００内のＣＤＰグループ番号情報５００として、メモリ２２０内の当該ＣＤＰグループ番号情報５００用に確保された記憶領域に格納する（Ｓ１０３）。またＣＤＰ開始プログラム４０２は、通知された業務ボリューム番号を、かかるＣＤＰグループ情報４００内の業務ボリューム情報５０４として、メモリ２２０内の当該業務ボリューム情報５０４用に確保された記憶領域に格納する（Ｓ１０４）。なお、本実施の形態において、ストレージシステム２００は、未使用のＣＤＰグループ番号を管理しているものとする。
【００７５】
次に、ＣＤＰ開始プログラム４０２は、ジャーナルボリューム３０３を作成し（Ｓ１０５）、作成したジャーナルボリューム３０３のジャーナルボリューム番号や、サイズ、ボリューム使用率及び全体使用率を、かかるＣＤＰグループ情報４００内のジャーナルボリューム情報５０５として、メモリ２２０内の当該ジャーナルボリューム情報５０５用に確保された記憶領域に格納する（Ｓ１０６）。なお、「ジャーナルボリューム３０３の作成」とは、ジャーナルボリューム３０３として使用するボリュームをストレージシステム２００の内部から探し、当該ボリュームを初期化する処理をいう。
【００７６】
続いて、ＣＤＰ開始プログラム４０２は、ベースボリューム３０２を作成し（Ｓ１０７）、作成したベースボリューム３０２のベースボリューム番号、作成時刻、リストア済みライト順序番号及び対応業務ボリューム番号を、かかるＣＤＰグループ情報４００内のベースボリューム情報５０６として、メモリ２２０内の当該ベースボリューム情報５０６用に確保された記憶領域に格納する（Ｓ１０８）。この際、ＣＤＰ開始プログラム４０２は、ベースボリューム情報５０６のリストア済みライト順序番号として「０」をメモリ２２０に格納する。さらにベースボリューム３０２が業務ボリューム３０１の複製であるため、ＣＤＰ開始プログラム４０２は、業務ボリューム３０１の全データをベースボリューム３０２にコピーする（Ｓ１０９）。コピー方法については後述する。
【００７７】
この後ＣＤＰ開始プログラム４０２は、ホスト１００のＣＤＰ開始指示プログラム１８１に完了を報告する（Ｓ１１０）。完了報告を受領したＣＤＰ開始プログラム４０２は処理を終了する（Ｓ１１１、Ｓ１１２）。
【００７８】
次に、上述のステップＳ１０９において、業務ボリューム３０１のデータをベースボリューム３０２にコピーするコピー処理の流れについて説明する。
【００７９】
この場合ＣＤＰ開始プログラム４０２は、業務ボリューム３０１の先頭アドレスから業務ボリューム３０１の末尾に向かって順次データを読み出し、ベースボリューム３０２に書き込む。業務ボリューム３０１の末尾までのコピーが完了するとコピー完了となる。
【００８０】
ただし、このような動作によって、ある時刻の業務ボリューム３０１のコピーを作成するためには、ホスト１００からの業務ボリューム３０１へのライトを一旦停止してデータを複製する必要がある。これを回避して、ホスト１００からのライトを受領しながらデータを複製する方法として、ストレージシステム２００は、コピー済みビットマップ（図示しない）を保持する。このコピー済みビットマップは、業務ボリューム３０１内のアドレスごとに、当該アドレスに格納されているデータがベースボリューム３０２にコピー済みか否かを管理するためのビットマップである。ここでは、コピー済みビットマップ上のあるアドレスと対応するビットの値が「ＯＦＦ」の場合はコピー済み、「ＯＮ」の場合は未コピーを表すものとする。
【００８１】
ＣＤＰ開始プログラム４０２は、業務ボリューム３０１からベースボリューム３０２へのコピー処理を開始する際、コピー済みビットマップのビットを全て「ＯＮ」とする。そしてＣＤＰ開始プログラム４０２は、かかるコピー処理の実行中は、コピーが完了したアドレスに対応するコピー済みビットマップ上のビットの値を「ＯＦＦ」へと変更する。
【００８２】
さらにＣＤＰ開始プログラム４０２は、ホスト１００から業務ボリューム３０１へのライト要求を受領したときにも、コピー済みビットマップを参照し、ライトデータのライト先のアドレスに対応するコピー済みビットマップのビットの値が「ＯＮ」であれば、その時点で業務ボリューム３０１からベースボリューム３０２へと当該アドレスのデータをコピーし、コピー済みビットマップを「ＯＦＦ」へと変更する。そのコピー完了後、ＣＤＰ開始プログラム４０２は、ホスト１００からのライトデータを業務ボリューム３０１に書き込む。
【００８３】
これによって、ホスト１００からのライトを受領しつつ、ある時刻の業務ボリューム３０１の複製を作成することができる。
【００８４】
なお、対象とするＣＤＰグループ３００内のベースボリューム３０２として使用するボリューム及びジャーナルボリューム３０３として使用するボリュームについては、ホスト１００が決定し、対応するＣＤＰグループ３００のＣＤＰグループ番号及びこれらボリュームのボリューム番号（ベースボリューム番号及びジャーナルボリューム番号）をＣＤＰ開始指示と共にＣＤＰ開始指示プログラム１８１に通知するようにしてもよい。さらに、ベースボリューム３０２及びジャーナルボリューム３０３として使用するためのボリュームを予めホスト１００からストレージシステム２００に通知し、ストレージシステム２００がベースボリューム３０２として使用可能なボリュームやジャーナルボリューム３０３として使用可能なボリュームの一覧をそれぞれ管理しておき、ＣＤＰ開始プログラム４０２が一覧の中からベースボリューム３０２及びジャーナルボリューム３０３を選択するようにしてもよい。
【００８５】
さらに業務ボリューム３０１からベースボリューム３０２へのデータコピーは長い時間を要するため、ＣＤＰ開始プログラム４０２が、ステップＳ１０９でコピーを開始した後、当該コピーの完了を待たずにステップ１１０に処理を進むようにしてもよい。このようにすることで、ＣＤＰ開始指示プログラム１８１がＣＤＰ開始プログラム４０２からの完了報告を待つ時間を短縮させることができる。
【００８６】
さらにベースボリューム３０２を、上述した第１のレプリケーション方法又は第２のレプリケーション方法により作成するようにしてもよい。
【００８７】
次に、ユーザが求めるＲＴＯ（目標とするリカバリ時間）を保証するＣＤＰ制御方式を２つ（第１のＣＤＰ制御方式及び第２のＣＤＰ制御方式）説明する。具体的には、ユーザが予めＲＴＯをストレージシステム２００に通知する。そして、ストレージシステム２００は、指定されたＲＴＯを上回らないようにＣＤＰを制御する。
【００８８】
まず第１のＣＤＰ制御方式について説明する。第１のＣＤＰ制御方式では、ユーザが指定したＲＴＯで適用可能な量のジャーナルのみをジャーナルボリューム３０３に保持する。これにより、データをリカバリするときに、ジャーナルボリューム３０３に格納されている全てのジャーナルをリカバリボリューム３０４に適用する必要があったとしても、ＲＴＯ内で処理を完了することができる。
【００８９】
例えば、ユーザが指定するＲＴＯが１０分であり、１０分で適用可能なジャーナル数が１００万ジャーナルと仮定する。この場合、最新の１００万ジャーナルのみをジャーナルボリューム３０３に格納し、それよりも古いジャーナルを順次ベースボリューム３０２に適用する。
【００９０】
ベースボリューム３０２にジャーナルを適用することにより、ベースボリューム３０２はより新しい時点の業務ボリューム３０１の複製となる。このためこの第１のＣＤＰ制御方式は、ユーザが指定可能なリカバリポイントの範囲が小さくなってしまうという欠点がある。なお、以下においては、ユーザが指定可能なリカバリポイントの範囲を保護期間と呼ぶものとする。
【００９１】
第１のＣＤＰ制御方式では、ＣＤＰグループ情報４００内の現ＲＴＯ情報５０２（図５）、ユーザ指定ＲＴＯ情報５０３（図５）及び現保護期間情報５０７（図５）を使用する。まず現ＲＴＯ情報５０２、ユーザ指定情報ＲＴＯ５０３及び現保護期間情報５０７について説明する。
【００９２】
現ＲＴＯ情報５０２は、ストレージシステム２００が過去のある時刻のデータをリカバリするのに要する時間の最悪値、つまりＲＴＯの最悪値（以下、これを現ＲＴＯと呼ぶ）を表す情報である。ユーザ指定ＲＴＯ情報５０３は、ユーザが指定したＲＴＯ（以下、これをユーザ指定ＲＴＯと呼ぶ）を表す情報である。本ストレージシステム２００では、現ＲＴＯがユーザ指定ＲＴＯを上回らないようにＣＤＰを制御する。現保護期間情報５０７は、ユーザが指定可能なリカバリポイントの範囲（以下、これを現保護期間と呼ぶ）を表す情報である。現保護期間情報５０７として格納されている値（つまり現保護期間）を定期的にホスト１００に通知することにより、ユーザが現在設定されている保護期間を確認することができる。なお、ホスト１００がストレージシステム２００に現保護期間情報５０７の値を問い合わせる方法を適用するようにしてもよい。
【００９３】
ユーザ指定ＲＴＯをストレージシステム２００のユーザ指定ＲＴＯ情報５０３としてメモリ２２０に格納するための処理（以下、これをユーザ指定ＲＴＯ設定処理と呼ぶ）の一例を、図９を用いて説明する。このユーザ指定ＲＴＯ設定処理は、ホスト１００のプロセッサ１２０がメモリ１１０に格納しているパラメタ設定指示プログラム１８２（図１）を実行し、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されているパラメタ記憶プログラム４０３（図４）を実行することで行われる。
【００９４】
まずホスト１００のパラメタ設定指示プログラム１８２は、ユーザからパラメタの入力を受け付け（Ｓ２００）、受け付けたパラメタをストレージシステム２００のパラメタ記憶プログラム４０３に通知する（Ｓ２０１）。その後、パラメタ設定指示プログラム１８２は、パラメタ記憶プログラム４０３からの応答を待つ（Ｓ２０２）。
【００９５】
パラメタ記憶プログラム４０３は、かかるパラメタを受領すると（Ｓ２０３）、通知されたパラメタを対応する記憶領域に記憶する（Ｓ２０４）。例えば、ユーザからＲＴＯが指定された場合には、パラメタ記憶プログラム４０３は、そのパラメタをＣＤＰグループ情報４００内のユーザ指定ＲＴＯ情報５０３として、メモリ２２０内の当該ユーザ指定ＲＴＯ情報５０３用に確保された記憶領域に格納する。
【００９６】
この後、パラメタ記憶プログラム４０３は、ホスト１００のパラメタ設定指示プログラム１８２に完了報告を送信し（Ｓ２０５）、この完了報告を受領したパラメタ設定指示プログラム１８２は処理を終了する（Ｓ２０６、Ｓ２０７）。
【００９７】
第１のＣＤＰ制御方式では、ユーザ指定ＲＴＯを満たせなくなる場合(現ＲＴＯがユーザ指定ＲＴＯを上回る場合)にベースボリューム３０２にジャーナルを適用する。
【００９８】
図１０〜図１２を用いて、現ＲＴＯがユーザ指定ＲＴＯを上回るかの判定処理及びジャーナルをベースボリューム３０２に適用する処理の一例を説明する。この例では、ジャーナル作成処理において判定処理を実施する。
【００９９】
ジャーナル作成処理を説明する前に、ジャーナルのフォーマット（以下、これを単にジャーナルフォーマットと呼ぶ）について説明する。図１０は、ジャーナル作成プログラム４０５が作成するジャーナルフォーマットの一例を示す。
【０１００】
図１０において、「ライト順序番号」は、ホスト１００からライトデータが書き込まれた順序を表す。この「ライト順序番号」を参照することで、ホスト１００から書き込まれた順番でジャーナルをベースボリューム３０２やリカバリボリューム３０４（図３）に適用することが可能となる。「作成時刻」は、ジャーナルを作成した時刻を表す。また「ボリューム番号」は、そのジャーナルがそのボリューム番号の業務ボリューム３０１へのライトに対するジャーナルであることを表す。
【０１０１】
「データ部開始アドレス」及び「データ部終了アドレス」は、かかる業務ボリューム３０１内のそのときライトが行なわれた領域の開始アドレス及び終了アドレスをそれぞれ表す。これら開始アドレス及び終了アドレスを用いることで、ベースボリューム３０２やリカバリボリューム３０４にジャーナルを適用する際に、ジャーナル中のデータを正しいアドレスに書き込むことができる。「データ長」は、ライトデータのサイズを示しており、「データ」はライトデータそのものを示す。なお、「データ部終了アドレス」は、「データ部開始アドレス」及び「データ長」を利用すれば算出可能であるため、必ずしも必要な情報ではない。
【０１０２】
次に、データライトの際に行なわれるジャーナルの作成処理（以下、これをジャーナル作成処理と呼ぶ）の一例を、図１１を用いて説明する。このジャーナル作成処理では、現ＲＴＯとユーザ指定ＲＴＯとを比較し、現ＲＴＯがユーザ指定ＲＴＯを上回る場合に、ジャーナルをベースボリューム３０２に適用するためリストアプログラム４０７（図４）を起動する。
【０１０３】
リストアプログラム４０７は、ジャーナルをベースボリューム３０２に適用し、適用したジャーナルをジャーナルボリューム３０３から削除する。これにより、ジャーナル量が減るため、現ＲＴＯは小さくなる。
【０１０４】
これらの処理は、ホスト１００のプロセッサ１２０がメモリ１１０に格納しているＯＳ１７０を実行し、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されているライトデータ受領プログラム４０４及びジャーナル作成プログラム４０５を実行することで行われる。
【０１０５】
具体的には、図１１に示すように、まず、ホスト１００上のＯＳ１７０がストレージシステム２００に対してライト要求を発行し（Ｓ３００）、ストレージシステム２００からのライト完了報告を待つ（Ｓ３０１）。
【０１０６】
ストレージシステム２００のライトデータ受領プログラム４０４は、かかるライト要求を受領すると（Ｓ３０２）、ライト対象のボリュームに対してライトデータを書き込む（Ｓ３０３）。続いて、ライトデータ受領プログラム４０４は、ジャーナル作成プログラム４０５を起動し（Ｓ３０４）、ジャーナル作成プログラム４０５からの完了報告を待つ（Ｓ３０５）。
【０１０７】
起動されたジャーナル作成プログラム４０５は、ライトデータのライト長をチェックし（Ｓ３０６）、リストア時間を見積もり（Ｓ３０７）、見積もった値を現ＲＴＯに加える（Ｓ３０８）。
【０１０８】
またジャーナル作成プログラム４０５は、現ＲＴＯとユーザ指定ＲＴＯとを比較する（Ｓ３０９）。そしてジャーナル作成プログラム４０５は、現ＲＴＯがユーザ指定ＲＴＯを上回る場合には、リストアプログラム４０７を起動し（Ｓ３１０）、ジャーナルをベースボリューム３０２に書き込んだ後、ステップＳ３１１以降のジャーナル作成処理に進む。
【０１０９】
これに対してジャーナル作成プログラム４０５は、現ＲＴＯがユーザ指定ＲＴＯを上回らない場合には、リストアプログラム４０７を起動するステップS３１０をスキップし、ステップＳ３１１に進む。なお、ステップＳ３１０におけるリストアプログラム４０７の具体的な処理内容については後述する。
【０１１０】
次いで、ジャーナル作成プログラム４０５は、メモリ２２０からライト順序番号情報５０１を読み出す一方、後続のジャーナル作成のためにライト順序番号を用意しておくべく、ライト順番番号を１だけ大きくするようにライト順番番号情報５０１を更新する（Ｓ３１１）。
【０１１１】
続けて、ジャーナル作成プログラム４０５は、ステップＳ３１１においてメモリ２２０から読み出したライト順序番号情報５０１に基づき認識されるライト順序番号及びライトデータに基づいてジャーナルを作成し、作成したジャーナルをジャーナルボリューム３０３に格納する（Ｓ３１２）。
【０１１２】
またジャーナル作成プログラム４０５は、かかるジャーナルの格納によりジャーナルボリューム３０３の使用率が変わるため、図７について上述したジャーナルボリューム情報５０５の「ボリューム使用率」及び「全体使用率」をそれぞれ更新する（Ｓ３１３）。この後、ジャーナル作成プログラム４０５は、呼び出し元のライトデータ受領プログラム４０４に完了報告を送信する（Ｓ３１４）。
【０１１３】
この完了報告を受領したライトデータ受領プログラム４０４は、ホスト１００に対してライトの完了報告を送信する（Ｓ３１５、Ｓ３１６）。そしてこの完了報告を受領したホスト１００は、当該ホスト１００におけるデータライト処理を完了する（Ｓ３１７、Ｓ３１８）。
【０１１４】
なお、上述のジャーナル作成処理の例では、データ長からリストア時間を見積もっているが、ステップＳ３０３における業務ボリューム３０１へのライトデータの書き込み処理に要した時間をリストア時間として用いてもよい。また、上述においては、ホスト１００、管理サーバ及び保守端末２７０からストレージシステム２００のリストア能力(単位時間あたりのリストアデータ量や単位時間当たりにリストア可能ジャーナル数)を予めストレージシステム２００のリストア能力情報４０１（図４）としてメモリ２２０に登録し、登録したリストア能力情報４０１と、ジャーナルボリューム３０３に格納済みの合計ジャーナル量や合計ジャーナル数とに基づいてリストアに要する時間を計算するようにしてもよい。さらに、プログラム開発段階でリストア能力を設定するようにしてもよいし、ストレージシステム２００が内部的にリストア能力の実測値を取得するようにしてもよい。
【０１１５】
なお、上述においてはジャーナル作成時に現ＲＴＯとユーザ指定ＲＴＯとを比較しているが、これらをジャーナル作成時以外のタイミングで比較するようにしてもよい。例えば、監視プログラム４１０が、定期的にステップＳ３０９とＳ３１０を実行するようにしてもよい。
【０１１６】
また、現ＲＴＯとユーザ指定ＲＴＯとの差がある閾値以下になった場合にリストアプログラム４０７を実行するようにしてもよい。例えば、ユーザ指定ＲＴＯ情報５０３の値が１０分、閾値が３分の場合には、現ＲＴＯ情報５０２の値が７分になったときにリストアプログラム４０７が起動されることになる。閾値を設けることにより、一時的にストレージシステム２００のリストア能力を超えるライトがホスト１００から発行された場合にもユーザ指定ＲＴＯを保証しやすくなる。閾値は、ホスト１００や管理サーバや保守端末２７０から予めストレージシステム２００に登録するようにしてもよいし、例えば、ユーザ指定ＲＴＯの１０％というように、ストレージシステム２００がユーザ指定ＲＴＯ情報５０３の値（ユーザ指定ＲＴＯ）に基づき決定してもよい。
【０１１７】
ＣＤＰにおいてデータをリカバリするのに要する時間は、ベースボリューム３０２（図３）をリカバリボリューム３０４（図３）にコピーする時間と、リカバリボリューム３０４にジャーナルを適用する時間の合計となる。但し、リカバリボリューム３０４がベースボリューム３０２である場合、コピーが不要である。また上述の第１及び第２のレプリケーション方法を利用する場合、リカバリボリュームを作成する時間は無視できるほど小さい。よって、図１１の例では、リカバリボリューム３０４にジャーナルを適用するための時間のみから現ＲＴＯを計算している。
【０１１８】
また、ベースボリューム３０２のデータをリカバリボリューム３０４にコピーする時間を考慮することもできる。例えば、業務ボリューム３０１のデータをベースボリューム３０２にコピーするために要した時間を計算しておき、これを現ＲＴＯに加えればよい。また、業務ボリューム３０１のデータをベースボリューム３０２へコピーするために要した時間を計算しておき、これをユーザ指定ＲＴＯから引いてもよい。
【０１１９】
図１２を参照して、ジャーナルをベースボリューム３０２に適用する処理（以下、これをジャーナル適用処理と呼ぶ）の一例を説明する。このジャーナル適用処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されたリストアプログラム４０７を実行することで行われる。
【０１２０】
この場合、リストアプログラム４０７は、まずリストア対象のジャーナルを決定する（Ｓ４００）。但し、リストア対象のジャーナルは、ジャーナルボリューム３０３に格納されているジャーナルのうち、最も古いジャーナルからライト順序番号が連続するように決定する。例えば、ライト順序番号が１から１０００までのジャーナルがある場合、ライト順序番号が１から１００までのジャーナルをリストア対象とすることは可能である。しかし、ライト順序番号５０から１００までのジャーナルをリストア対象とすることはできない。さらに、ライト順序番号が１から３０までと、ライト順序番号が５０から７０までとのジャーナルをリストア対象とすることもできない。これは、前述したように、ジャーナルはライト順序番号の昇順に適用しなければ、正しいデータを得られないからである。
【０１２１】
次に、リストアプログラム４０７は、決定したジャーナルのライト順序番号のうちの最小値を変数iに代入する（Ｓ４０１）。なお、変数ｉは、ローカルメモリ２１４に一時的に格納するものとする。
【０１２２】
この後、リストアプログラム４０７は、ライト順序番号順にジャーナルを参照し、当該ジャーナルがリストア対象か否かをチェックする（Ｓ４０２）。リストア対象でない場合には、リストア処理を終了する（Ｓ４１０）。
【０１２３】
これに対してリストアプログラム４０７は、かかるジャーナルがリストア対象である場合には、参照したジャーナルの適用先ベースボリューム３０２を決定する（Ｓ４０３）。ＣＤＰグループ３００内には複数の業務ボリューム３０１と、これら業務ボリューム３０１に対応するベースボリューム３０２とが存在する。このため、ステップＳ４０３のようにどのベースボリューム３０２にジャーナルを適用すべきかを決定する処理が必要となる。ステップＳ４０３では、ジャーナル内の「ボリューム番号」（図１０参照）から業務ボリューム番号を決定する。そして、決定した業務ボリューム番号をキーワードとしてベースボリューム情報５０６を検索することで、対応するベースボリューム３０２を特定する。
【０１２４】
ジャーナルの適用先のベースボリューム３０２を決定すると、リストアプログラム４０７は、ジャーナルをそのベースボリューム３０２に適用し（Ｓ４０４）、ＣＤＰグループ情報４００のうちのベースボリューム情報５０６（図５）としてメモリ２２０に格納された「リストア済みライト順序番号」（図６参照）を、適用したジャーナルの「ライト順序番号」に置き換える（Ｓ４０５）。またリストアプログラム４０７は、ジャーナルの適用に要した時間をＲＴＯから引く（Ｓ４０６）。
【０１２５】
一方、リストアしたジャーナルは、ジャーナルボリューム３０３から削除することができる。このため、リストアプログラム４０７は、ジャーナルボリューム情報５０５の「ボリューム使用率」及び「全体使用率」を更新する（Ｓ４０７）。また、ジャーナルの適用により、保護期間が短くなるため、リストアプログラム４０７は、適用したジャーナルの時刻から現在時刻までを新たな保護期間として設定する（Ｓ４０８）。この後、リストアプログラム４０７は、変数ｉに1を加えて（Ｓ４０９）、次のジャーナルを処理するためステップＳ４０２へ返る。
【０１２６】
上述したジャーナル作成プログラム４０５及びリストアプログラム４０７の処理により、現ＲＴＯがユーザ指定ＲＴＯを上回らないように制御することができる。
【０１２７】
第１のＣＤＰ制御方式は、ジャーナルをベースボリューム３０２に適用するため、ユーザが指定可能なリカバリポイントの範囲が小さくなるという欠点がある。例えば、リストアプログラム４０７を実行し、９：３０までのジャーナルをベースボリューム３０２に適用すると、ユーザは９：３０以前のデータをリカバリすることができなくなってしまう。この問題を回避する方法として、次の第２のＣＤＰ制御方式を説明する。
【０１２８】
図１３を用いて第２のＣＤＰ制御方式の概要を説明する。図１３中の矢印７００は、ジャーナルが格納されるジャーナルボリューム３０３の内容を時系列で示している。矢印７００に重ねて表示した各ブロック７１０はそれぞれジャーナルを示しており、１つのブロック７１０が１つのジャーナルに対応する。ブロック７１０内に記載されている数値は、対応するジャーナルのライト順序番号を示している。また、「ＪＮＬ」はジャーナルの略である。図１３の例では、ジャーナルボリューム３０３にライト順序番号が「１」から「７」までのジャーナルが格納されている。
【０１２９】
第２のＣＤＰ制御方式は、複数のベースボリューム３０２（３０２Ａ〜３０２Ｃ）を用いることにより、保護期間が短くなるという問題を解決する。ベースボリューム３０２Ａは、ＣＤＰ開始時点のものであり、ジャーナルは１つも適用されていない。そして、ベースボリューム３０２Ｂは、ベースボリューム３０２Ａにライト順序番号が「３」までのジャーナルが適用されたものである。さらにベースボリューム３０２Ｃは、ベースボリューム３０２Ｂにライト順序番号が「４」から「７」までのジャーナルが適用されたものである。
【０１３０】
第２のＣＤＰ制御方式は、ユーザ指定ＲＴＯ情報５０３に基づいて、いずれか２つのベースボリューム３０２Ａ〜３０２Ｃ間のジャーナル量をリストア可能なジャーナル量になるように制御する。例えば、ストレージシステム２００が、ライト順序番号が「５」のジャーナルの直後へのリカバリ指示７７０を受領した場合、ベースボリューム３０２Ａのデータとライト順序番号が「１」から「５」までのジャーナルとを用いてデータをリカバリするのではなく、ベースボリューム３０２Ｂとライト順序番号が「４」及び「５」のジャーナルとを用いてデータをリカバリする。これにより、ユーザ指定ＲＴＯを満たしながらデータを復元することができる。
【０１３１】
図１４を用いて、ベースボリューム３０２を作成するベースボリューム作成処理の一例を説明する。このベースボリューム作成処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されているベースボリューム作成プログラム４０６（図４）を実行することで行われる。
【０１３２】
なお、ベースボリューム作成プログラム４０６は、ジャーナル作成プログラム４０５（図４）や監視プログラム４０８（図４）が現ＲＴＯとユーザ指定ＲＴＯとを比較した結果、現ＲＴＯがユーザ指定ＲＴＯを上回ると判定された場合に、ジャーナル作成プログラム４０５や監視プログラム４１０によって起動される。前述したが、現ＲＴＯとユーザ指定ＲＴＯとの差がある閾値以下になった場合に、ベースボリューム作成プログラム４０６を起動するようにしてもよい。ジャーナル作成プログラム４０５や監視プログラム４０８は、ベースボリューム作成プログラム４０６を起動した場合、パラメタとしてライト順序番号情報５０１の値（ライト順番番号）を当該ベースボリューム作成プログラム４０６に渡す。
【０１３３】
まず、ベースボリューム作成プログラム４０６は、新しいベースボリューム３０２を作成すると（Ｓ５００）、作成したベースボリューム３０２のベースボリューム番号、作成時刻、ライト済みライト順番番号及び対応する業務ボリューム３０１のボリューム番号（図６参照）を、メモリ２２０に格納されている対応するＣＤＰグループ情報４００のベースボリューム情報５０６としてメモリ２２０に格納する（Ｓ５０１）。
【０１３４】
続いて、ベースボリューム作成プログラム４０６は、１つ前のベースボリューム３０２に格納されているデータを新しいベースボリューム３０２にコピーする（Ｓ５０２）。その後、ベースボリューム作成プログラム４０６は、１つ前のベースボリューム３０２のリストア済みライト順序番号に１を加算した値（リストア済みライト順序番号＋１）を変数ｉに代入し（Ｓ５０３）、変数ｉからパラメタとして渡されたライト順序番号(ベースボリューム作成プログラム４０６の起動時におけるライト順序番号情報５０１の値)までのジャーナルをステップＳ５００で作成したベースボリューム３０２に適用する。
【０１３５】
この処理は、例えば図１３の例でベースボリューム３０２Ｃを作成するときに、ベースボリューム３０２Ｂのデータをベースボリューム３０２Ｃにコピーし、ライト順序番号が「４」から「７」のジャーナルを適用する処理に相当するもので、ステップＳ５０４〜ステップＳ５０８において実行される。
【０１３６】
すなわちベースボリューム作成プログラム４０６は、変数ｉとパラメタ値を比較し（Ｓ５０４）、変数ｉがパラメタ値より大きい場合には処理を終了する（Ｓ５０８）。図１３の例では、ベースボリューム３０２Ｃを作成する時、変数ｉが８になると処理を終了する。変数ｉがパラメタ値以上になった場合には、ステップＳ５０５〜ステップＳ５０７を実行することで、ライト順序番号がｉのジャーナルをベースボリューム３０２に適用する。
【０１３７】
次いでベースボリューム作成プログラム４０６は、ライト順序番号がｉのジャーナルをステップＳ５００で作成したベースボリューム３０２に適用し（Ｓ５０５）、ベースボリューム情報５０６のリストア済みライト順序番号（図６参照）に変数ｉを代入する（Ｓ５０６）。さらにベースボリューム作成プログラム４０６は、次のジャーナルを処理するために変数ｉに１を加算し、この後ステップＳ５０４に返る（Ｓ５０７）。
【０１３８】
ベースボリューム作成プログラム４０６の処理が完了すると、ベースボリューム作成プログラム４０６を起動したジャーナル作成プログラム４０５や、監視プログラム４０８は現ＲＴＯに「０」を代入する。
【０１３９】
以上のように、複数のベースボリューム３０２を作成しておくことで、保護期間を短縮することなく、ユーザ指定ＲＴＯを満たすデータリカバリを行うことができる。
【０１４０】
次に、第２のＣＤＰ制御方式を用いてＣＤＰを制御している場合のデータリカバリ処理方式について説明する。第２のＣＤＰ制御方式を使用する場合のデータリカバリ方式は、どのベースボリューム３０２のデータを使用してデータを復元するかを決定するための処理が必要となる点が、従来のデータリカバリ処理方式とは異なる。データリカバリに使用するベースボリューム３０２を選択する処理の一例を以下に説明する。
【０１４１】
まず、ホスト１００が時刻を指定してストレージシステム２００にデータリカバリを通知する（ステップ１）。ストレージシステム２００は、通知された時刻以下のジャーナルを特定し、特定したジャーナルのライト順序番号の最大値を決定する（ステップ２）。
【０１４２】
次に、ストレージシステム２００は、ベースボリューム情報５０６を参照し、リストア済みライト順序番号（図６参照）がステップ２で決定したライト順序番号よりも小さいベースボリューム３０２を探す（ステップ３）。ベースボリューム３０２が複数個ある場合には、リストア済みライト順序番号が最大のベースボリューム３０２を選択する（ステップ４）。図１３の例で、ストレージシステム２００がホスト１００からのリカバリ指示７７０を受領したとき、ステップ１からステップ４の処理を実行することで、ベースボリューム３０２Ｂを特定することができる。
【０１４３】
この後、ステップ４で決定したベースボリューム３０２のデータと、当該ベースボリューム３０２以降のジャーナルとを用いてデータをリカバリする。
【０１４４】
これまでに、ユーザが予めＲＴＯを指定（ユーザ指定ＲＴＯを設定）しておき、ストレージシステム２００がユーザ指定ＲＴＯを保証するようにＣＤＰを制御する方法について説明した。
【０１４５】
以下では、ユーザが予めＲＴＯに加え、ＣＤＰに使用する容量（ベースボリューム３０２の容量及びジャーナルボリューム３０３の容量の合計）と保護期間とを指定しておき、ストレージシステム２００が、（１）ＲＴＯとＣＤＰに使用する容量との両方を保証するようにＣＤＰを制御する方法、（２）ＣＤＰに使用する容量と保護期間との両方を保証するようにＣＤＰを制御する方法、（３）ＲＴＯと保護期間との両方を保証するようにＣＤＰを制御する方法について説明する。
【０１４６】
まず、上記のような制御を実現するためにはＣＤＰグループ情報４００に新たな制御情報が必要となる。必要となる制御情報の一例を図１５に示す。図１５は、図５に示したＣＤＰグループ情報４００を構成する各制御情報に加え、ユーザ指定容量情報８００、残容量情報８０１、ユーザ指定保護期間情報８０２、ホストライト量情報８０３、区間内最大ジャーナル量情報８０４及び区間内ジャーナル量情報８０５という制御情報が追加された場合を示す。
【０１４７】
ユーザ指定容量情報８００は、ＣＤＰに使用する容量としてユーザが割当てた容量（以下、これをユーザ指定容量と呼ぶ）を表す情報である。ストレージシステム２００は、ユーザ指定容量を上回らないようにＣＤＰを制御する。残容量情報８０１は、ユーザ指定容量からＣＤＰに使用済みの容量を引いた値（以下、これを残容量と呼ぶ）を表す情報である。ユーザ指定保護期間情報８０２は、ユーザが求める保護期間（以下、これをユーザ指定保護期間と呼ぶ）の長さを表す情報である。ホストライト量情報８０３、区間内最大ジャーナル量情報８０４及び区間内ジャーナル量情報８０５は、ユーザ指定保護期間及びユーザ指定容量を保証するために必要となる情報であり、詳細は後述する。
【０１４８】
以下にＲＴＯとＣＤＰに使用する容量（ユーザ指定容量）の両方を保証するＣＤＰ制御方式について説明する。本実施の形態では、既にＲＴＯを保証するＣＤＰ制御方式として第１及び第２のＣＤＰ制御方式を説明した。ＲＴＯ及びユーザ指定容量の両方を保証するには、ＲＴＯを保証するＣＤＰ制御方式において、残容量を意識してジャーナルボリューム３０３やベースボリューム３０２の作成を実施することで実現できる。具体的には、ジャーナルボリューム３０３やベースボリューム３０２を作成すると残容量がマイナスになってしまう場合には、古いベースボリューム３０２やジャーナルボリューム３０３を削除することにより容量を確保する。また、ユーザがユーザ指定容量の設定値を変更した場合の対応処理も必要である。
【０１４９】
監視プログラム４０８がジャーナル容量不足を検出したときに、残容量情報８０１に基づいてジャーナルボリューム３０３を追加登録する処理（以下、これをジャーナルボリューム追加登録処理と呼ぶ）の一例を、図１６を用いて説明する。このジャーナルボリューム追加登録処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されている監視プログラム４０８を実行することで行われる。なお、図１６は、ＲＴＯを保証するＣＤＰ制御方式が第２のＣＤＰ制御方式である場合の処理である。
【０１５０】
監視プログラム４０８は、ジャーナルボリューム情報５０５を参照し、全体使用率が一定以上になったか否かをチェックする（Ｓ６００）。ジャーナルボリューム３０３の使用率が一定以下の場合には、プログラムの先頭に戻る。ジャーナルボリューム３０３の使用率が一定以上ととなり、新たなジャーナルボリューム３０３を追加登録する必要がある場合には、残容量情報８０１を参照して、残容量でジャーナルボリューム３０３が作成可能か否かをチェックする（Ｓ６０１）。作成可能な場合には、ステップＳ１０５及びステップＳ１０６でジャーナルボリューム３０３を作成し、プログラムの先頭に戻る。なお、ステップＳ１０５及びステップＳ１０６は、図８に示したＣＤＰ開始プログラム４０２のステップＳ１０５及びステップＳ１０６と同じである。
【０１５１】
一方、監視プログラム４０８は、残容量でジャーナルボリューム３０３を作成できない場合には、ステップＳ６０２〜ステップＳ６０６を実行し、古いベースボリューム３０２とジャーナルを削除することで、ジャーナルボリューム３０３を作成するための容量を確保する。
【０１５２】
すなわち、監視プログラム４０８は、ベースボリューム情報５０６を参照し、２番目に古いベースボリューム３０２よりも古いジャーナルと、最古のベースボリューム３０２を削除する（Ｓ６０２）。続けて、監視プログラム４０８は、削除したベースボリューム３０２の情報をベースボリューム情報５０６から削除し、ジャーナルボリューム情報５０５の全体使用率（図７参照）を再計算する（Ｓ６０３）。ベースボリューム３０２の削除により残容量が増えるため、監視プログラム４１０は、削除したベースボリューム３０２の容量を元の残容量に加える（Ｓ６０４）。この後監視プログラム４０８は、保護期間を更新し、プログラムの先頭に戻る（Ｓ６０５）。
【０１５３】
また、ＲＴＯを保証するＣＤＰ制御方式が第１のＣＤＰ制御方式の場合には、ステップＳ６０２からステップＳ６０４においてリストアプログラム４０７の処理を実行することで実現できる。なお、監視プログラム４０８がジャーナル容量不足を検出し、ベースボリューム３０２及びジャーナルの削除処理を実行する場合を例に説明したが、ジャーナル作成プログラム４０５がジャーナル作成時にジャーナル容量不足を検出して同等の処理を実行するようにしてもよい。
【０１５４】
続いて、ベースボリューム作成プログラム４０６が、ベースボリューム３０２を作成するときに、残容量情報８０１に基づく残容量を意識してベースボリューム３０２を作成するベースボリューム作成処理の一例を、図１７を用いて説明する。このベースボリューム作成処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されているベースボリューム作成プログラム４０６を実行することで行われる。なお、ベースボリューム作成プログラム４０６は、ジャーナル作成プログラム４０５や、監視プログラム４１０が、現ＲＴＯがユーザ指定ＲＴＯを上回る場合に起動する。
【０１５５】
ベースボリューム作成プログラム４０６は、対応するＣＤＰグループ情報４００を参照して、残容量と業務ボリューム３０１のサイズとを比較する（Ｓ７００）。残容量が業務ボリューム３０１のサイズよりも大きい場合には、業務ボリューム３０１を作成可能であるため、ベースボリューム３０２を作成し（Ｓ７０４）、処理を終了する（Ｓ７０５）。なお、ステップＳ７０４におけるベースボリューム３０２の作成処理の処理内容は、図１４に示したステップＳ５００〜ステップＳ５０８と同じである。
【０１５６】
業務ボリューム３０１のサイズが残容量よりも大きい場合、ベースボリューム３０２とジャーナルとを削除することによりベースボリューム３０２を作成するための容量を確保する（Ｓ６０２、Ｓ６０３、Ｓ６０５）。なお、ステップＳ６０２、ステップＳ６０３及びステップＳ６０５の削除処理は、ジャーナルボリューム３０３の追加登録時の削除処理と同じである。
【０１５７】
次に、ベースボリューム作成プログラム４０６は、ジャーナルの削除により、１つもジャーナルを格納していないジャーナルボリューム３０３ができたか否かを、対応するＣＤＰグループ情報４００内のジャーナルボリューム情報５０５に基づいてチェックする（Ｓ７０１）。１つもジャーナルを格納していないジャーナルボリューム３０３とは、ボリューム使用率（図７参照）が０％のジャーナルボリューム３０３のことである。
【０１５８】
ボリューム使用率が０％のジャーナルボリューム３０３が存在する場合、ベースボリューム作成プログラム４０６は、当該ジャーナルボリューム３０３をＣＤＰグループ３００から削除する（Ｓ７０２）。続けて、ベースボリューム作成プログラム４０６は、削除したジャーナルボリューム３０３及びベースボリューム３０２の容量を残容量に加える（Ｓ７０３）。この後、ベースボリューム作成プログラム４０６は、ベースボリューム３０２を作成し、処理を終了する（Ｓ７０４、Ｓ７０５）。
【０１５９】
なお、ボリューム使用率が０％になったジャーナルボリューム３０３は必ずしも削除する必要はない。また、ボリューム使用率が０％になったジャーナルボリューム３０３を削除する処理は、ジャーナルボリューム３０３を追加登録するときのジャーナル削除によっても実現可能である。
【０１６０】
本実施の形態では、ＣＤＰ開始時にジャーナルボリューム３０３及びベースボリューム３０２を作成する。ＣＤＰでは、少なくとも１つのジャーナルボリューム３０３と、各業務ボリューム３０１に対するベースボリューム３０２が必要である。ＣＤＰ開始プログラム４０２がジャーナルボリューム３０３及びベースボリューム３０２の作成時に残容量情報８０１を参照して残容量をチェックし、ジャーナルボリューム３０３が１つも作れない場合や、各業務ボリューム３０１に対するベースボリューム３０２が１つも作れない場合には、ホスト１００にＣＤＰ開始不可能を通知するものとする。
【０１６１】
次に、ユーザがユーザ指定容量情報８００の設定を変更した場合の処理の流れを説明する。ストレージシステム２００がユーザからユーザ指定容量情報８００の変更指示を受領すると(ステップ１)、ストレージシステム２００は、残容量情報８０１及びユーザ指定容量情報８００を参照して、残容量から設定変更前後でのユーザ指定容量の差を引いた値（残容量−（変更前のユーザ指定容量−変更後のユーザ指定容量））を計算する(ステップ２)。例えば、変更前のユーザ指定容量８００が１００ＧＢ、変更後のユーザ指定容量が７０ＧＢ、残容量が１０ＧＢとする。この場合に求める値は、次式
１０ＧＢ−(１００ＧＢ−７０ＧＢ)＝−２０ＧＢ      ……（１）
のように、−２０ＧＢとなる。
【０１６２】
この計算結果は、ユーザ指定容量の設定変更後の残容量を示しており、残容量がマイナスの場合は、ユーザ指定容量を超過していることを意味する。
【０１６３】
ユーザ指定容量の変更後の残容量がマイナスの場合、ベースボリューム３０２やジャーナルを削除することにより残容量を確保する(ステップ３)。具体的には、ステップＳ６０２〜ステップＳ６０５の処理を、残容量がプラスになるまで繰り返し実行する。
【０１６４】
以上により、ユーザ指定ＲＴＯ及びユーザ指定容量を満たしながらＣＤＰを制御することができる。このＣＤＰ制御方式は、ユーザがＲＴＯと記憶容量を優先する場合に有効である。ユーザが保護期間を設定しない場合や、ユーザが保護期間よりもＲＴＯ及び記憶容量を優先することをストレージシステム２００に通知した場合にストレージシステム２００が自動的に本制御方式を実行してもよい。
【０１６５】
次に、ＣＤＰに使用する容量(ユーザ指定容量)と保護期間（ユーザ指定保護期間）の両方を保証し、ＲＴＯも最小限に抑えるＣＤＰ制御方式を説明する。ユーザ指定保護期間を保証するためには、当該ユーザ指定保護期間内の全てのジャーナルを格納できる容量のジャーナルボリューム３０３が必要である。ユーザ指定保護期間内の総ジャーナル容量は、単位時間当たりのホストライト量とユーザ指定保護期間との積として計算することができる。ホストライト量は、ホスト１００、管理サーバ（図示せず）、保守端末２７０（図２）から予めストレージシステム２００のメモリ２２０に記録するようにしてもよい。また、ストレージシステム２００がホストライト量の統計を取り、これをメモリ２２０に格納するようにしてもよい。
【０１６６】
ジャーナルボリューム３０３の容量が決まると、全ベースボリューム３０２の合計容量は「（ユーザ指定容量）−（ジャーナルボリューム３０３の容量）」以下となる。
【０１６７】
本実施の形態では、ベースボリューム３０２の合計容量から作成可能なベースボリューム３０２数を決定し、ベースボリューム３０２間のジャーナル量が均等になるようにベースボリューム３０２の作成を制御する。これにより、指定されたリカバリポイントによってＲＴＯがばらつくことを回避することができる。
【０１６８】
図１８を用いて、ＣＤＰ開始プログラム４０２が、ユーザ指定容量、ユーザ指定保護期間及びホストライト量に基づき、ジャーナルボリューム３０３のサイズ、ベースボリューム３０２のサイズを決定し、ベースボリューム３０２間のジャーナル量を決定する処理（以下、これをジャーナル量決定処理と呼ぶ）の一例を説明する。
【０１６９】
ＣＤＰ開始プログラム４０２は、ＣＤＰ開始プログラム１８１からのＣＤＰ開始指示及び対応する業務ボリューム３０１の業務ボリューム番号を受領すると、対象とするＣＤＰグループ３００にＣＤＰグループ番号５００を割り当て、業務ボリューム情報５０４の登録を行う。この処理は、図８のステップＳ１０２〜ステップＳ１０４と同じである。
【０１７０】
続けて、ＣＤＰ開始プログラム４０２は、対応するＣＤＰグループ情報４００のホストライト量情報８０３及びユーザ指定保護期間８０２に基づいて、ユーザ指定保護期間内の合計ジャーナル量を見積もる（Ｓ８００）。例えば、ユーザ指定保護期間が３０日、ホストライト量が１ＧＢ／時間とすると、３０日×２４時間×１ＧＢ＝７２０ＧＢとなる。
【０１７１】
そしてＣＤＰ開始プログラム４０２は、ステップＳ８００で見積もったジャーナルを格納できるジャーナルボリューム３０３を作成し、当該ジャーナルボリューム３０３のジャーナルボリューム情報を、かかるＣＤＰグループ情報４００のジャーナルボリューム情報５０５としてメモリ２２０に格納する（Ｓ１０５、Ｓ１０６）。なお、複数個のジャーナルボリューム３０３の合計容量がステップＳ８００で見積もった容量になるように制御してもよい。
【０１７２】
次に、ＣＤＰ開始プログラム４０２は、ＣＤＰグループ情報４００のユーザ指定容量情報８００を参照して、ユーザ指定容量を保証するために、ベースボリューム３０２に使用可能な容量（ユーザ指定容量−合計ジャーナル量）を計算する（Ｓ８０１）。またＣＤＰ開始プログラム４０２は、計算した容量で作成可能なベースボリューム数(ベースボリューム容量÷業務ボリュームサイズ)を決定する（Ｓ８０２）。
【０１７３】
そしてＣＤＰ開始プログラム４０２は、ベースボリューム数が決定すると、ベースボリューム３０２間のジャーナル量を均等にするため、ベースボリューム３０２間(以後、区間と呼ぶ)のジャーナル量（合計ジャーナル量÷（ベースボリューム数−１））を計算する（Ｓ８０３）。またＣＤＰ開始プログラム４０２は、この計算結果を、かかるＣＤＰグループ情報４００の区間内最大ジャーナル量情報８０４としてメモリ２２０に格納する。この後ＣＤＰ開始プログラム４０２は、図８の処理と同様にベースボリューム３０２を作成してこのジャーナル量決定処理を終了する（Ｓ１０７〜Ｓ１１２）。
【０１７４】
以上のジャーナル量決定処理により区間内最大ジャーナル量（ベースボリューム３０２間の最大ジャーナル量）が決定される。よって、ベースボリューム３０２間のジャーナル量がこの区間内最大ジャーナル量を上回る場合に、新しいベースボリューム３０２を作成するように制御すれば、ユーザ指定保護期間及びユーザ指定容量の両方を保証し、ＲＴＯも最小限に抑えることができる。
【０１７５】
区間内最大ジャーナル量を超えないようにベースボリューム３０２を作成する処理は、図１１に示したジャーナル作成プログラム４０５を変更することにより実現できる。具体的には、ジャーナル作成プログラム４０５が図１１のステップＳ３０７及びステップＳ３０８においてＲＴＯを計算するのではなく、ジャーナルのサイズを区間内ジャーナル量に加算していく。そして、ステップＳ３０９において、現ＲＴＯとユーザ指定ＲＴＯとの比較を行うのではなく、区間内ジャーナル量と区間内最大ジャーナル量とを比較する。
【０１７６】
区間内ジャーナル量が区間内最大ジャーナル量を上回る場合には、ステップ３１０でベースボリューム作成プログラム４０６（図４）を起動し、新しいベースボリューム３０２を作成する。ベースボリューム３０２の作成後（ステップ３１１の直前)、区間内ジャーナル量情報８０５を「０」に初期化する。ベースボリューム作成プログラム４０６の処理内容は、図１４に示した処理内容と同じである。
【０１７７】
なお、ジャーナル作成時に現在の区間内ジャーナル量と区間内最大ジャーナル量とを比較しているが、それ以外のタイミングでこれらを比較するようにしてもよい。例えば、監視プログラム４１０が、定期的にステップＳ３０９及びステップＳ３１０を実行するようにしてもよい。
【０１７８】
以上の処理により、ユーザ指定容量及びユーザ指定保護期間を満たしながらＣＤＰを制御することができる。このＣＤＰ制御方式は、ユーザが記憶容量と保護期間を優先する場合に有効である。ユーザがＲＴＯを設定しない場合や、ユーザがＲＴＯよりも記憶容量やユーザ指定保護期間を優先することをストレージシステム２００に通知した場合にストレージシステム２００が自動的に本制御方式を実行してもよい。
【０１７９】
以下にＲＴＯ及びユーザ指定保護期間の両方を保証するＣＤＰ制御方式を説明する。本実施の形態では、既にＲＴＯを保証するＣＤＰ制御方式を説明した。ＲＴＯとユーザ指定と保護期間の両方を保証するには、ＲＴＯを保証する制御方式において、ユーザ指定保護期間を意識してベースボリューム３０２及びジャーナルの削除を実行することで実現できる。
【０１８０】
具体的には、ベースボリューム３０２やジャーナルを削除すると、現保護期間（現保護期間情報５０７の値）がユーザ指定保護期間（ユーザ指定保護期間情報８０２の値）以下になってしまう場合には、削除を抑止する。ベースボリューム３０２や、ジャーナルを削除する理由は、ベースボリューム３０２やジャーナルを作成するための領域が不足していることが原因である。このため、単純に削除を抑止するだけでは、ホスト１００からのライトによりジャーナルボリューム３０３が満杯になってしまう。このような状況を回避するために、本実施の形態では、ストレージシステム２００が、ホスト１００にＣＤＰ用の領域が不足していることを通知するとともに、ホスト１００のデータライトを一時的に制限する処理を実行する。
【０１８１】
以下に、ベースボリューム作成プログラム４０６がベースボリューム３０２を作成するときに、古いベースボリューム３０２を削除した場合の保護期間を計算し、ユーザ指定保護期間を満たせない場合には、ホスト１００へ容量不足を通知し、ホスト１００のライトを一時的に制限するベースボリューム作成処理の一例を、図１９を用いて説明する。このベースボリューム作成処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されているベースボリューム作成プログラム４０６を実行することで行われる。なお、ジャーナルボリューム３０３の領域が不足し、ジャーナルボリューム３０３を追加登録する処理でも同等の処理を実施できる。
【０１８２】
まず、ベースボリューム作成プログラム４０６は、対応するＣＤＰグループ情報４００を参照して、残容量と業務ボリューム３０１のサイズとを比較する（Ｓ９００）。残容量が業務ボリューム３０１のサイズよりも大きい場合には、業務ボリューム３０１を作成可能であるため、ベースボリューム３０２を作成し（Ｓ９０１）、処理を終了する（Ｓ９０２）。なお、Ｓ９０１のベースボリューム作成処理は、図１４のステップＳ５００〜ステップＳ５０８と同じである。
【０１８３】
業務ボリューム３０１のサイズが残容量よりも大きい場合、図１７について上述した処理では、ベースボリューム３０２やジャーナルを削除することにより容量を確保した。
【０１８４】
ユーザ指定保護期間を保証するためには、ベースボリューム３０２やジャーナルボリューム３０３を削除しても、現保護期間がユーザ指定保護期間よりも大きい必要がある。このため、ベースボリューム作成プログラム４０６は、ベースボリューム３０２とジャーナルを削除した場合の保護期間(現在時刻−２番目に古いベースボリューム３０２の時刻)を計算する（Ｓ９０３）。
【０１８５】
ベースボリューム作成プログラム４０６は、計算結果とユーザ指定保護期間とを比較し（Ｓ９０４）、計算結果がユーザ指定保護期間よりも大きい場合には、ベースボリューム３０２及びジャーナルボリューム３０３を削除する（Ｓ９０５）。ベースボリューム３０２及びジャーナルの削除により新たなベースボリューム３０２を作成可能となるため、ベースボリューム作成プログラム４０６は、ベースボリューム３０２を作成して（Ｓ９０１）、処理を終了する（Ｓ９０２）。なお、ベースボリューム３０２及びジャーナルの削除処理は、図１７のステップＳ６０２、ステップＳ６０３、ステップＳ６０５及びステップＳ７０１〜ステップＳ７０３と同じである。
【０１８６】
ステップＳ９０３の計算結果がユーザ指定保護期間よりも小さい場合には、ベースボリューム３０２及びジャーナルを削除することができない。よって、このときベースボリューム作成プログラム４０６は、ＣＤＰ用の容量が不足していることをホスト１００へ報告し（Ｓ９０６）、ホスト１００のデータライトを一時的に制限する。ここで、「ホスト１００のデータを一時的に制限する」方法としては、ホスト１００からライト要求が送信されてきたときに、エラーやビジーのため処理不可というレスポンスをそのホスト１００へ返す方法が考えられる。他にもストレージシステム２００がホスト１００のライト要求を無視する方法も考えられる。また、その他の方法でホスト１００のライト要求を制限してもよい。
【０１８７】
ホスト１００のデータライトを制限した後、ベースボリューム作成プログラム４０６は、プログラムの先頭に返る。ホスト１００、管理サーバ又は保守端末２７０によりユーザ指定容量が変更されてベースボリューム３０２が作成可能となった場合には、ステップＳ９０１及びステップＳ９０２が実行される。また、現在時刻が進むことによって、ステップＳ９０３の結果、ベースボリューム３０２及びジャーナルが削除可能となる場合もある。なお、ホスト１００のデータライトの制限を解除する処理は、ユーザ指定容量が再設定されたタイミングや、ステップＳ９０１の直前で実行することが考えられる(図示せず)。
【０１８８】
以上の処理により、ＲＴＯ及びユーザ指定保護期間を満たしながらＣＤＰを制御することができる。このＣＤＰ制御方式は、ユーザがＲＴＯ及び保護期間を優先する場合に有効である。ユーザ指定容量が設定されていない場合、ユーザが記憶容量よりもＲＴＯ、保護期間を優先することをストレージシステム２００に通知した場合にストレージシステム２００が自動的に本制御方式を実行してもよい。
【０１８９】
（２）第２の実施の形態
本実施の形態では、ジャーナル間の重複を除去し、ＲＴＯの削減及びジャーナル量の削減を行うＣＤＰ制御方法について説明する。
【０１９０】
ＣＤＰ機能では、ユーザが指定した過去の任意の時刻（任意のポイント）のデータをリカバリできる。しかしながら、一部のソフトウェアでは、業務処理実行中のデータを復元しても、リカバリ後のデータで業務処理を継続できない場合がある。このため、ＣＤＰでは、ホスト１００上で動作するソフトウェアが静止化したポイントのポイント情報をストレージシステム２００に通知しておく。そして、ストレージシステム２００が、そのポイントをリカバリポイントとして記憶しておくことで、当該リカバリポイントのデータのリカバリを可能とする。
【０１９１】
ＣＤＰ機能では、オペレーションミスやＨＤＤ障害時に、時刻を指定して最新のデータを復元するという利用方法がある。しかし、過去の古いデータを回復する場合には、リカバリポイントのデータをリカバリすることが多いと考えられる。リカバリポイントへのデータのリカバリのみであれば、必ずしもリカバリポイント間の全てのジャーナルは必要ではない。具体的には、ホスト１００から同一のアドレス位置に複数回のデータライトが行われた場合には、最後に書き込まれたデータがあれば充分である。
【０１９２】
よって、このような場合にはリカバリポイント間にあるジャーナルの重複を除去することができ、また重複するジャーナルを除去することによって、データのリカバリに要する時間を低減することができる。なお、以下においては、上述のようにオペレーションミスやＨＤＤ障害時には、最新のデータを復元することが考えられるため、一定以上古くなったデータを対象に重複を除去する方法についても説明する。
【０１９３】
重複するジャーナルの除去（以下、これをジャーナルの重複除去又はジャーナル重複除去と呼ぶ）の方法を説明するために、重複除去の対象となるジャーナルを特定するリカバリポイントについて説明する。このリカバリポイントは、リカバリポイント以前のジャーナルとリカバリポイント以後のジャーナルを区別できる必要がある。
【０１９４】
本実施の形態では、リカバリポイント作成前のジャーナルとリカバリポイント作成後のジャーナルとの間にライト順序番号を有する特種なジャーナルを作成することによって、リカバリポイント作成前のジャーナルとリカバリポイント作成後のジャーナルを区別する。これを実現するためのジャーナルフォーマットの一例を図２０に示す。図１０に示したジャーナルフォーマットに対して「種別」情報が追加されている点が第１の実施の形態と異なる。「種別」は、通常のジャーナルとリカバリポイントを区別するための情報である。本実施の形態では、「種別」が「通常ジャーナル」の場合には、ライトデータに対応するジャーナルであり、「リカバリポイント」の場合にはリカバリポイントを示す特殊なジャーナルであるとする。
【０１９５】
さらに、リカバリポイント情報を簡単に探索可能とするために、例えば図２１に示すようなリカバリポイント管理表９５０をストレージシステム２００の制御情報記憶領域２２１（図２）に格納しておくようにしてもよい。図２１において、「リカバリポイント番号」は、リカバリポイントを識別するための識別番号である。また「ライト順序番号」は、リカバリポイントを示す特殊なジャーナルのライト順序番号である。さらに「ＣＤＰグループ番号」は、そのリカバリポイントが関係するＣＤＰグループ３００のＣＤＰグループ番号（図５、図１５のＣＤＰグループ番号情報５００と同じもの）である。
【０１９６】
なお、本実施の形態では、ライト順序番号を持つ特殊なジャーナル及びリカバリポイント管理表９５０を新たに導入することとしたが、リカバリポイント管理表９５０は索引情報であるため必須ではない。また、リカバリポイントを示す特種なジャーナルを作成しない実現方法もある。例えば、リカバリポイント管理表９５０に、『ライト順序番号が「１００」のジャーナルと、「１０１」のジャーナルと間にリカバリポイントが存在する』という情報を格納することでこれを実現できる。
【０１９７】
次に、図２２を用いて「ジャーナルの重複除去」について説明する。図２２は、重複除去するジャーナルに含まれるライトデータの関係として、４つのパターン（パターン１〜パターン４）を示している。
【０１９８】
この図２２において、「業務ボリュームの領域」とは、業務ボリューム３０１の記憶領域を概念的に表している。左端がアドレス０でありボリュームの先頭である。そして、右端がアドレスｎでありボリュームの末尾である。ｎはボリュームのサイズにより異なる。また図２２において業務ボリューム３０１の領域１０００内のデータ１００１は、業務ボリューム３０１に書き込まれたデータを示している。
【０１９９】
さらに図２２では、その業務ボリューム３０１に先行してライトされたデータ（以下、これを先行ライトデータと呼ぶ）１００２と、これに後続して書き込まれたデータ（以下、これを後続ライトデータと呼ぶ）１００３とについて、これら先行ライトデータ１００２及び後続ライトデータ１００３と、これらの業務ボリューム３０１の領域１０００上のライト範囲との関係を示している。
【０２００】
パターン１は、後続ライトデータ１００３のライト範囲が先行ライトデータ１００２のライト範囲に含まれる場合である。例えば、リカバリポイント７８０が作成された時刻が、先行ライトデータ１００２がライトされた時刻及び後続ライトデータ１００３がライトされた時刻よりも新しい場合、リカバリ処理には、先行ライトデータ１００２の後続ライトデータ１００３が上書きされていない部分と、後続ライトデータ１００３とだけがあれば足りる。従って、先行ライトデータ１００２に後続ライトデータ１００３が上書きされた場合、先行ライトデータ１００２のうちの後続ライトデータ１００３が上書きされた部分についてのジャーナルを削減することができる。
【０２０１】
パターン２は、後続ライトデータ１００３と先行ライトデータ１００２のライト範囲が一部重なる場合である。この場合にも、パターン１と同様に重なる範囲のデータ分のジャーナルを削減できる。
【０２０２】
パターン３は、先行ライトデータ１００２のライト範囲が後続ライトデータ１００３のライト範囲に含まれる場合である。例えば、リカバリポイントが作成された時刻が、先行ライトデータ１００２がライトされた時刻及び後続ライトデータ１００３がライトされた時刻よりも新しい場合、リカバリ処理には後続ライトデータ１００３のみが必要である。先行ライトデータ１００２を破棄することで、先行ライトデータ１００２のジャーナルを削減できる。
【０２０３】
パターン４は、先行ライトデータ１００２のライト範囲と後続ライトデータ１００３のライト範囲が同じ場合である。パターン３と同様に、先行ライトデータ１００２を破棄することで、先行ライトデータ１００２のジャーナルを削減できる。
【０２０４】
次に、ジャーナルの重複除去が実施されていない、２つのリカバリポイントで囲まれる範囲（以後、リカバリポイント区間）を探し、リカバリポイント区間内のジャーナルの重複を除去する処理方法について説明する。ジャーナルの重複除去が実施されていない区間を探すための情報として、ストレージシステム２００は、図２３に示すようなリカバリポイント区間情報９６０をメモリ２２０の制御情報記憶領域２２１（図２）に保持している。
【０２０５】
図２３において、「区間番号」は、リカバリポイント区間を識別するための識別番号である。また「開始リカバリポイント」及び「終了リカバリポイント」は、それぞれリカバリポイント区間の開始位置及び終了位置を示すリカバリポイントの識別番号であり、「重複除去済みフラグ」は、区間番号によって識別されるリカバリポイント区間に対してジャーナルの重複除去が実施済みであるか否かを示す情報である。
【０２０６】
ジャーナルの重複除去が実施されていないリカバリポイント区間を探し、当該リカバリポイント区間内のジャーナルの重複除去する処理の一例を、図２４及び図２５を用いて説明する。このジャーナル重複除去処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０のプログラム記憶領域２２２（図２）に格納されている区間決定プログラム（図示せず）と重複除去プログラム（図示せず）とを実行することで行われる。
【０２０７】
ジャーナル重複除去処理において、区間決定プログラムは、まず、リカバリポイント区間情報９６０の重複除去済みフラグを参照し、ジャーナルの重複除去が行なわれていないリカバリポイント区間を探す（Ｓ１０００）。なお、図示していないが重複除去済みリカバリポイント区間が存在しない場合にはジャーナル重複除去処理を終了するものとする。また、ステップＳ１０００で複数個のリカバリポイント区間を検出した場合には、最も古いリカバリポイント区間を対象としてステップＳ１００１へ進んでもよし、最初に見つけたリカバリポイント区間を対象としてステップＳ１００１へ進んでもよい。さらに、リカバリポイント区間を見つけ次第ステップＳ１０００を終了し、ステップＳ１００１へ進んでもよい。
【０２０８】
ジャーナルの重複除去が行なわれていないリカバリポイント区間が存在した場合、区間決定プログラムは、リカバリポイント区間情報９６０（図２３）を参照して、変数ｊに終了リカバリポイント番号（図２３参照）で識別されるリカバリポイントのライト順序番号から1を引いた値を代入する（Ｓ１００１）。従って、このとき変数ｊには、ジャーナル重複除去の対象区間内にある最後のジャーナルのライト順序番号が代入されることになる。なお、変数ｊは、ローカルメモリ２１４に一時的に格納される。
【０２０９】
続いて、区間決定プログラムは、変数ｊが開始リカバリポイント番号（図２３）で識別されるリカバリポイントのライト順序番号に１を加えた値（＝対象区間の最初のジャーナルのライト順序番号）になったか否かを判断し（Ｓ１００２）、肯定結果を得ると、そのとき対象としているリカバリポイント区間をジャーナルの重複除去済みの区間であるとしてこのジャーナル重複除去処理を終了する（Ｓ１００５、Ｓ１００６）。
【０２１０】
これに対して区間決定プログラムは、かかるステップＳ１００２の判断において否定結果を得ると、変数ｊを１ずつ減らしながら、変数ｊのジャーナルと区間内にあるライト順序番号が変数ｊ以下のジャーナルとの関係を複除去プログラムに調べさせると共に、必要に応じてジャーナルの重複除去を行なわせる（Ｓ１００３、Ｓ１００４）。なお、変数ｊをパラメタとして重複除去プログラムへ渡すものとする。
【０２１１】
例えば、ｊ＝１００の場合、重複除去プログラムは、ライト順序番号の１００のジャーナルと、ライト順序番号が１００よりも小さいジャーナルとの関係をチェックし、重複するジャーナルを除去する。その後、区間決定プログラムは、変数ｊから１を引く。この結果、ｊ＝９９となり、重複除去プログラムは、ライト順序番号が９９のジャーナルとライト順序番号が９９よりも小さいジャーナルとの関係をチェックし、重複するジャーナルを除去する。変数ｊが９９の場合、ライト順序番号が１００のジャーナルとの比較を実施しないのは、変数ｊの値が１００のときに比較済みであるからである。この処理を区間にある最初のジャーナルまで繰り返して行くことでジャーナルの重複除去を実現する。
【０２１２】
図２５は、かかるジャーナル重複除去処理のステップＳ１００３において起動された重複除去プログラムの具体的な処理内容を示している。
【０２１３】
重複除去プログラムには、起動後、変数ｉにパラメタとして渡された変数ｊの値を代入する（Ｓ１１００）。なお、変数ｉは、ローカルメモリ２１４に一時的に格納するものとする。次に、重複除去プログラムは、変数ｉと、開始リカバリポイントで識別されるリカバリポイント７８０のライト順序番号に１を加えた値とを比較し(Ｓ１１０１)、比較した２つの値が同値ならば処理を終了する(Ｓ１１１０)。この処理により、変数ｊと同じライト順序番号を有するジャーナルと、リカバリポイント区間内の変数ｊ以下の値のライト順序番号を有する全ジャーナルとの重複関係をチェックすることができる。
【０２１４】
一方、重複除去プログラムは、変数ｉが開始リカバリポイントで識別されるリカバリポイントのライト順序番号に１を加えた値よりも大きい間、ステップＳ１１０２からＳ１１０９を実行し、ジャーナル間の関係チェック及びジャーナルの重複除去を実行する。
【０２１５】
具体的に、重複除去プログラムは、まず、変数ｉのジャーナルの種別が「通常ジャーナル」であるかをチェックする（Ｓ１１０２）。かかるジャーナルの種別が「通常ジャーナル」以外の場合には、そのジャーナルはリカバリポイントなど特種なジャーナルであり、重複除去の対象とならない。従って、この場合重複除去プログラムは、ステップＳ１１０９へ進む。
【０２１６】
これに対して、かかるジャーナルの種別が「通常ジャーナル」である場合には、そのジャーナルは特種なジャーナルではなく、重複除去の対象となり得る。そこで、この場合重複除去プログラムは、まず、変数ｉの値と同じライト順序番号のジャーナルと、変数ｊの値と同じライト順序番号のジャーナルとのデータ範囲の関係をチェックする。具体的には、これら２つのジャーナルの関係が前述したパターン１〜パターン４のいずれに該当するかを判定する。
【０２１７】
そして重複除去プログラムは、かかる２つのジャーナルの関係がパターン１又はパターン２に該当する場合にはステップＳ１１０４へ進み、パターン３又はパターン４に該当する場合には、ステップＳ１１０４をスキップしてステップＳ１１０５へ進む。
【０２１８】
また重複除去プログラムは、かかる２つのジャーナルの関係がパターン１又はパターン２の場合、変数ｊの値と同じライト順序番号のジャーナルのデータを、変数ｉの値と同じライト順序番号のジャーナルのデータに上書きする（Ｓ１１０４）。そして、変数ｊの値と同じライト順序番号のジャーナルのデータ長、データ部開始アドレス及びデータ部終了アドレスを更新することで、上書き後のデータを変数ｊの値と同じライト順序番号が付与されたジャーナルのデータに組み込む。
【０２１９】
この場合において、例えばジャーナルボリューム３０３において、変数ｊの値と同じライト順序番号のジャーナルの前後に当該ジャーナルの前後のジャーナルが連続して書き込まれており、かつ上書き後のデータのデータ長が上書き前のデータのデータ長より大きくなる場合などには、上書き後のデータを含む新たなジャーナル（すなわち変数ｊの値と同じライト順序番号を有する新たなジャーナル）をジャーナルボリューム３０３内の元の領域に格納することができない。
【０２２０】
そこで、このような場合、重複除去プログラムは、かかる上書き後のデータを含む新たなジャーナルをジャーナルボリューム３０３内の別の領域に格納し直すものとする。この場合、変数ｊの値と同じライト順序番号を有するジャーナルが格納されていたジャーナルボリューム３０３内の元の領域はステップＳ１１０４で開放するものとする。なお、かかる上書き後のデータのみジャーナルボリューム３０３内の新規に割り当てた領域へ格納し、変数ｊの値と同じライト順序番号のジャーナルのデータ部に、かかるデータへのポインタを格納するような方法も可能である。
【０２２１】
上述のようなジャーナルの重複除去により変数ｉの値と同じライト順序番号のジャーナルのデータ部は不要になるため、重複除去プログラムは、当該ジャーナルの種別を「ダミー」に修正する（Ｓ１１０５）。「ダミー」は、ジャーナルの重複除去によりデータ部を持たないジャーナルであることを意味する。データ部以外の情報(ライト順序番号や時刻など)を残す理由は、リカバリボリューム３０４（図３）やベースボリューム３０２（図３）にジャーナルを適用する際に、ライト順序番号の抜けによりエラーにならないようにするためである。
【０２２２】
続いて、重複除去プログラムは、かかるデータの上書き処理により不要になった変数ｉの値と同じライト順序番号のジャーナルのデータ部を削除し、ジャーナルボリューム３０３における当該データ部がそれまで格納されていた領域を開放する（Ｓ１１０６）。
【０２２３】
また、このような領域の開放に伴い、ジャーナルボリューム３０３のボリューム使用率が減るため、重複除去プログラムは、ジャーナルボリューム情報５０５のボリューム使用率及び全体使用率（図７参照）を更新する（Ｓ１１０７）。
【０２２４】
さらに、上述のようなジャーナルのデータ部の削除によってデータリカバリ時にベースボリューム３０２及びリカバリボリューム３０４に適用する必要があるデータ量が減るため、重複除去プログラムは、対応するＣＤＰジャーナル情報４００の現ＲＴＯ情報５０２（図５）の値を、削除したデータ部のリストアに必要となる時間を現ＲＴＯ情報５０２に基づき得られる現ＲＴＯから引いた値に更新する（Ｓ１１０８）。
【０２２５】
次いで、重複除去プログラムは、変数ｉの値を当該変数ｉから１を引いた値に更新し、この後、次のジャーナルを処理するためステップＳ１１０１へ返る（Ｓ１１０９）。
【０２２６】
このような重複除去プログラムの処理により、変数ｊの値と同じライト順序番号のジャーナルと、当該ジャーナルの以前に作成されたジャーナルとの関係（パターン１〜パターン４)をチェックしながらジャーナルの重複除去を実施することができる。また、区間決定プログラムが変数ｊの値を１ずつ減らしながら、対象とするジャーナルポイント区間内のすべてのジャーナルについて重複除去プログラムを起動するため、当該ジャーナルポイント区間内にあるジャーナルの重複関係を全てチェックできる。以上のようにしてリカバリポイント区間内のジャーナルの重複を除去することができる。
【０２２７】
なお、ジャーナルのデータ部を破棄することにより、ジャーナルの使用率が０%のジャーナルボリューム３０３ができる場合には、当該ジャーナルボリューム３０３をＣＤＰグループ３００から削除するようにしてもよい。この処理は、例えば、ステップＳ１１１０の直前で行なうことができる。また、ジャーナルの重複関係をチェックする処理方法としては、上記以外の種々の方法を広く適用することができる。
【０２２８】
本実施の形態では、ストレージシステム２００はホスト１００からのライト要求を受けると、ライトデータを含むジャーナルを作成する。この場合、ライトデータのサイズが異なるため、重複関係のチェックでは、パターン１〜パターン４を考慮した。しかし、ストレージシステム２００がホスト１００からライト要求を受けた場合、ライトデータを複数個の固定長のデータに分割し、分割したデータ毎にジャーナルを作成するようにしてもよい。
【０２２９】
例えば、固定長のサイズを２ＫＢとした場合、ストレージシステム２００は、ホスト１００から４ＫＢのライトを受領すると、２ＫＢのデータを持つ２つジャーナルを作成することになる。さらに、２つのジャーナル中に、２つのジャーナルを関連付けるための情報を格納するようにしてもよい。また固定長の整数倍ではないライトデータを受領した場合に、ストレージシステム２００が、ライトアドレスの前後のデータを読み出して整数倍となるように調整するようにしてもよい。例えば、ライトデータが５ＫＢのとき、ライト範囲の直前又は直後から１ＫＢのデータを読み出し、合計６ＫＢのデータとする。
【０２３０】
また、ジャーナルの中のデータ部と、それ以外の情報部分（ライト順序番号、時刻など）とを分けてジャーナルボリューム３０３に格納するようにしてもよい。この場合、ジャーナルに、当該ジャーナルのデータ部が格納されるアドレス情報を格納するようにすればよい。
【０２３１】
以上のようにすれば、新規作成したジャーナルのデータ部を、ジャーナル重複除去により開放されたジャーナルボリューム３０３内の領域に必ず格納することができ、当該領域の再利用が容易になる。
【０２３２】
上述のジャーナル重複除去方法では、リカバリポイント区間を対象にジャーナルの重複を除去する制御方式を説明した。次は、ストレージシステム２００が、ホスト１００からライト要求を受領し、ジャーナルを作成するときに、直近のリカバリポイント以降のジャーナルを対象に重複を除去する方法について説明する。すなわち、リカバリポイント区間の終了リカバリポイント番号が未定の区間を対象にジャーナルの重複を除去する。
【０２３３】
ホスト１００からライト要求を受けると、ストレージシステム２００のジャーナル作成プログラム４０５はジャーナルを作成する。このジャーナル作成プログラム４０５が、例えばジャーナル作成後（ステップＳ３１４（図１１）の直前）に重複除去プログラムを起動し、ジャーナルの重複除去を実行させる。この場合、変数ｊに、ステップＳ３１２で作成したジャーナルのライト順序番号を格納し、パラメタとして重複除去プログラムへ渡す。
【０２３４】
このようなジャーナル重複除去方法は、図２５について上述した重複除去プログラムによる処理の一部を変更することで実現できる。変更点を以下に示す。
【０２３５】
まず、重複除去プログラムは、ステップＳ１１００で変数ｉにパラメタとして渡された変数ｊ−１を代入する。そして重複除去プログラムは、ステップＳ１１０１において、開始リカバリポイントで識別されるリカバリポイントのライト順序番号に１を加えた値と、変数ｉの値とを比較するのではなく、最新のリカバリポイントで識別されるリカバリポイントのライト順序番号に１を加えた値と、変数ｉの値とを比較する。これにより、最新のリカバリポイント以降のジャーナルと、最新のジャーナルまでの重複関係をチェックできる。
【０２３６】
なお、ジャーナル作成プログラム４０５がジャーナル作成前に重複除去プログラムを起動してもよい。この場合は、Ｓ１１０１において、変数ｉとライト順序番号情報５０１の値とを比較する。さらに、ステップＳ１１０３及びステップＳ１１０４記載の変数ｊのジャーナルを、ライトデータと読み替えればよい。
【０２３７】
ここまでに述べたジャーナル重複除去方法では、不要になったジャーナルのデータ部のみを削除した。しかし、ジャーナルフォーマットによっては、ジャーナルのデータ部のみならず情報部分（ライト順序番号や時刻など）をも削除するようにしてもよい。
【０２３８】
例えば、ジャーナル間の順序関係をポインタで管理している場合が該当する。すなわち、ライト順序番号が５のジャーナルは、ライト順序番号が４及び６のジャーナルの格納位置を特定するためポインタ（以下、これらをそれぞれPrevポインタ、Nextポインタと呼ぶ）を有する。
【０２３９】
ジャーナル間の順序関係をポインタで管理する場合のジャーナル重複除去方法について説明する。このジャーナル重複除去方法は、図２５について上述した重複除去プログラムによる処理の一部を変更することで実現できる。変更点を以下に示す。
【０２４０】
まず、ステップＳ１１０５及びステップＳ１１０６で、削除対象のジャーナルの種別をダミーに変更した後、当該ジャーナルのデータ部を削除するのではなく、そのジャーナルの直前のジャーナルのNextポインタに削除対象のジャーナルのNextポインタの値を代入し、削除対象のジャーナルの直後のジャーナルのPrevポインタに削除対象ジャーナルのPrevポインタの値を代入する。そして、削除対象のジャーナル全体を削除する。
【０２４１】
ジャーナルをベースボリューム３０２やリカバリボリューム３０４（図３）に適用する場合には、Nextポインタを参照しながら適用していけば、重複除去されたジャーナル以外のジャーナルをライト順序番号の順番通りに適用できる。
【０２４２】
次に、ジャーナル重複除去を実施するタイミングについて説明する。ここまでに、１つのリカバリポイント区間のジャーナルがジャーナルボリューム３０３に溜まっている場合に、ジャーナルの重複除去を実施する方法及びジャーナル作成時にジャーナルの重複除去を実施する方法を説明した。
【０２４３】
ホスト１００からジャーナル重複除去処理を実施するか否かを設定させておき、設定値が「重複除去実施」の場合にのみ重複するジャーナルの除去を行うこともできる。ジャーナル重複除去処理を実施するか否かの設定は、ホスト１００のパラメタ設定指示プログラム１８２（図１）とストレージシステム２００のパラメタ記憶プログラム４０３とにより、他のパラメタ同様に設定することができる。そして、区間決定プログラムがステップＳ１００１の直前で、ジャーナルの重複除去を実施するか否かの設定値を参照し、設定値が「重複除去実施」の場合のみステップＳ１００１へ進むことで実現できる。
【０２４４】
さらに、一定時間以上古くなったジャーナルに対してのみ上述のジャーナル重複除去処理を実施することもできる。一定時間の設定値は、他のパラメタと同様にパラメタ設定指示プログラム１８２（図１）及びパラメタ記憶プログラム４０３（図４）により設定する。
【０２４５】
上記制御は、区間決定プログラムのステップＳ１００１（図２４）の直前で、以下の処理を実行することで実現できる。
【０２４６】
区間決定プログラムは、図２４のステップＳ１０００で決定したリカバリポイント区間の終了リカバリポイントの時刻を調べる（ステップ１）。これは、終了リカバリポイントに対応するジャーナルを探索し、当該ジャーナル中の「時刻」を参照することで実現できる。
【０２４７】
次に、区間決定プログラムは、現在時刻とステップ１で得た時刻との差が、ユーザの設定値を上回っているかをチェックする（ステップ２）。現在時刻とステップ1で得た時刻との差が、ユーザの設定値を上回っている場合にのみステップＳ１００１へ進む（ステップ３）。
【０２４８】
以上のようにして、一定時間以上古くなったジャーナルに対してのみジャーナル重複除去処理を実行することができる。
【０２４９】
これまでに、ジャーナルボリューム３０３やベースボリューム３０２を作成するときに、ＣＤＰグループ情報４００の残容量情報８０１を参照し、残容量が不足しているときには、最古のベースボリューム３０２やジャーナルを削除することで、新しいベースボリューム３０２やジャーナルボリューム３０３用の容量を確保する処理方式について説明した。
【０２５０】
上述のようなジャーナル重複除去方法を利用すれば、最古のベースボリューム３０２やジャーナルを削除しなくても、ジャーナルの重複除去を実施することによって、ベースボリューム３０２やジャーナルボリューム３０３用の領域を確保することができる。これにより、第１の実施の形態で述べたＣＤＰ制御方式よりも保護期間を長くすることができる。
【０２５１】
次に、ジャーナルボリューム３０３を追加登録するときに、ジャーナル重複除去処理を実施することによってジャーナルボリューム３０３用の容量を確保する処理について、図２６を用いて説明する。これは、図１６に示した監視プログラム４１０の処理内容を一部変更することにより実現できる。
【０２５２】
具体的には、図２６のステップＳ６００〜ステップＳ６０５及びステップＳ１０５、ステップＳ１０６の処理内容は、図１６の対応するステップと同じである。
【０２５３】
ステップＳ６０１において、残容量でジャーナルボリューム３０３を作成できない場合、監視プログラム４１０は、ステップＳ６０２へ進むのではなく、ステップＳ１２００へ進む。そして監視プログラム４１０は、このステップＳ１２００において、ジャーナル重複除去処理を行なっていないリカバリポイント区間が存在するか否かをチェックする。
【０２５４】
ジャーナル重複除去処理を行なっていないリカバリポイント区間が存在する場合、監視プログラム４１０は、区間決定プログラムを起動する（Ｓ１２０１）。そして区間決定プログラムは、重複除去プログラムを起動し、ジャーナルの重複除去を行なう。ジャーナルの重複除去完了後、監視プログラム４１０は、プログラムの先頭へ返る。
【０２５５】
ジャーナルの重複除去によりジャーナルボリューム３０３のボリューム使用率が一定以下になった場合には、ジャーナルボリューム３０３を追加登録する必要はないため、監視プログラム４１０は、ステップＳ６００を繰り返し実行する。
【０２５６】
以上のように、残容量８０１が不足したときに、ジャーナル重複除去処理を実施することでジャーナルを格納する領域を確保できる。
【０２５７】
また、ジャーナルボリューム３０３のボリューム使用率は一定以下になっていないが、ジャーナル重複除去処理によりジャーナルボリューム３０３を作成可能となった場合には、ステップＳ６０１の判定が「Ｙｅｓ」となり、監視プログラム４０８は、ステップＳ１０５で新しいジャーナルボリューム３０３を作成する。これはジャーナルの重複除去により使用率（図７）が０％になったジャーナルボリューム３０３をジャーナルグループから削除する場合に起こる。
【０２５８】
以上のように、残容量が不足したときに、ジャーナルの重複除去を行なうことでジャーナルを格納する領域を確保できる。
【０２５９】
なお、ベースボリューム３０２を作成するときも、同様にジャーナルの重複除去処理を行なうことでベースボリューム３０２用の容量を確保することができる。具体的には、図１７に示すベースボリューム作成プログラム４０６のステップＳ６０１の直後に図２６のステップＳ１２００及びステップＳ１２０１を追加することで実現できる。
【０２６０】
これまで現ＲＴＯがユーザ指定ＲＴＯを上回った場合に、リストアプログラム４０７を起動し、ベースボリューム３０２にジャーナルを適用することでＲＴＯを削減する処理を説明した。この場合も、ジャーナルの重複除去を行い、ＲＴＯを削減することによりリストアの実施を回避することができる。具体的には、ジャーナル作成プログラム４０５が図１１に示す処理のステップＳ３０９の直後にステップＳ１２００及びステップＳ１２０１を追加的に実行することで実現できる。なお、この場合にジャーナル作成プログラム４０５は、ステップ１２００でジャーナルの重複除去が未完了のリカバリポイント区間がないと判定した場合に、ステップＳ３１０に進むものとする。またジャーナル作成プログラム４０５は、ステップＳ１２０１の実行後、ステップＳ３０９へ返るものとする。
【０２６１】
次に、ユーザがＣＤＰグループ情報４００のうちのユーザ指定容量情報８００（図１５）の設定を変更したときに、ジャーナル重複除去処理を実施する場合について説明する。
【０２６２】
ストレージシステム２００は、ユーザからユーザ指定容量情報８００の変更指示を受領すると（ステップ１）、対応するＣＤＰグループ情報４００に基づいて、ユーザ指定容量情報８００に基づき認識される変更前のユーザ指定容量と変更後のユーザ指定容量との差分を残容量から引いた値（すなわち残容量−（変更前のユーザ指定容量−変更後のユーザ指定容量））を計算する（ステップ２）。この計算結果は、ユーザ指定容量を変更した後の残容量を示しており、残容量がマイナスの場合は、ユーザ指定容量を超過していることを意味する。
【０２６３】
ユーザ指定容量を変更後の残容量がマイナスの場合、ストレージシステム２００は、ジャーナルの重複除去が未完了のリカバリポイント区間を探し、ジャーナルの重複除去を行なう（ステップ３）。そしてストレージシステム２００は、残容量がプラスになるか、又はジャーナルの重複除去が未完了のリカバリポイント区間がなくなるまでステップ３を繰り返す。
【０２６４】
そしてストレージシステム２００は、残容量がプラスになった場合には、処理を終了する。しかし、全リカバリポイント区間に対するジャーナル重複除去処理が完了しても、残容量がマイナスの場合には、ストレージシステム２００は、最古のベースボリューム３０２とジャーナルとの削除を実施する。具体的には、図２６のステップＳ６０２〜ステップＳ６０５を、残容量がプラスになるまで繰り返し実行する。
【０２６５】
このような処理は、ユーザ指定容量を満たせなくなった場合に、第１にジャーナル重複除去、第２にベースボリューム３０２及びジャーナルボリューム３０３の削除を実行するようにして行なう。これは、ユーザがリカバリ可能ポイントの数よりも保護期間を優先する場合に有効である。ユーザに、リカバリポイントの数と保護期間のどちらを優先するかを予め設定させておき、保護期間を優先する場合にストレージシステム２００が自動的に上記処理方式を実行するようにしてもよい。また、ユーザがリカバリ可能ポイントの数を優先する場合には、まずベースボリューム３０２及びジャーナルボリューム３０３の削除を実行するようにしてもよい。
【０２６６】
これまでは、リカバリポイント間にあるジャーナルを対象としてジャーナルの重複を除去するとした。このため、別のリカバリポイント区間にあるジャーナルとの重複が残っている可能性がある。以下では、ストレージシステム２００が不要となったリカバリポイントを削除したときに、削除対象のリカバリポイントの前後にあるリカバリポイント区間のジャーナルの重複を除去する方法を説明する。
【０２６７】
図２７を用いて、２つのリカバリポイント区間にあるジャーナルの重複除去について概説する。図２７は、図１３に符号７８０の要素及び符号７９０の要素を追加した図である。符号７８０は、「リカバリポイント」を表しており、「ＲＰ」はリカバリポイントの略である。また記号７９０は、ライト順序番号が４のリカバリポイント７８０を削除することを意味している。
【０２６８】
図２７の例では、ライト順序番号が１のリカバリポイント７８０と、ライト順序番号が４のリカバリポイント７８０との間のリカバリポイント区間１はジャーナル重複除去の実行済みの区間であるものとする。またライト順序番号が４のリカバリポイント７８０と、ライト順序番号が７のリカバリポイント７８０との間のリカバリポイント区間２もジャーナルの重複除去済みの区間であるものとする。
【０２６９】
このとき、ライト順序番号が４のリカバリポイント７８０の削除を契機に、リカバリポイント区間１にあるジャーナルと、リカバリポイント区間２にあるジャーナルとの重複を除去することができる。
【０２７０】
これは、ライト順序番号が４のリカバリポイント７８０を削除したときに、リカバリポイント区間１とリカバリポイント区間２とを合わせ、新しいジャーナル重複除去が未完了のリカバリポイント区間としてリカバリポイント区間情報９６０に登録することで実現できる。なぜならば、リカバリポイント区間情報９６０へ登録すると、監視プログラム４１０がジャーナル重複除去が未完了のリカバリポイント区間として新しいリカバリポイント区間を発見し、ジャーナル重複除去を行なうからである。
【０２７１】
リカバリポイント７８０を削除し、その前後のリカバリポイント区間をマージする処理（以下、これをリカバリポイント削除処理と呼ぶ）の一例を、図２８を用いて説明する。このリカバリポイント削除処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されているリカバリポイント削除プログラム（図示せず）を実行することで行われる。
【０２７２】
リカバリポイント削除プログラムは、リカバリポイント削除指示を受領する（Ｓ１３００）。このとき、パラメタとして削除対象となるリカバリポイント７８０のリカバリポイント番号（図２１参照）を受け取るものとする。リカバリポイント削除指示は、ホスト１００、管理サーバ又は保守端末２７０から行われる。
【０２７３】
次に、リカバリポイント削除プログラムは、リカバリポイント管理表９５０（図２１）から、削除対象のリカバリポイント７８０を探し、削除する（Ｓ１３０１）。
【０２７４】
そして、リカバリポイント削除プログラムは、指定されたリカバリポイント７８０の前後にリカバリポイント区間があるか否かを確認する（Ｓ１３０２）。これは、パラメタとして受け取ったリカバリポイント番号を開始リカバリポイント番号（図２３参照）とするリカバリポイント区間、及び当該リカバリポイント番号を終了リカバリポイント番号（図２３参照）とするリカバリポイント区間が存在するかをチェックすることで実現できる。
【０２７５】
かかる２つのリカバリポイント区間が存在しない場合には、２つのリカバリポイント区間をマージすることができない。このため、この場合、リカバリポイント削除プログラムは、リカバリポイント削除処理を終了する（Ｓ１３０５）。
【０２７６】
これに対してリカバリポイント削除プログラムは、前後にリカバリポイント区間が存在する場合には、２つのリカバリポイント区間をマージする（Ｓ１３０３）。図２７の例で説明すると、開始リカバリポイント番号がリカバリポイント区間１の開始リカバリポイント番号であり、かつ、終了リカバリポイント番号がリカバリポイント区間２の終了リカバリポイント番号であるリカバリポイント区間をリカバリポイント区間情報９６０に追加する。このときリカバリポイント区間１及びリカバリポイント区間２に関する情報は、リカバリポイント区間情報９６０から削除するものとする。
【０２７７】
この後、リカバリポイント削除プログラムは、ステップＳ１３０３で作成した新しいリカバリポイント区間の重複除去済みフラグを「重複除去未」の状態に変更し（Ｓ１３０４）、リカバリポイント削除処理を終了する（Ｓ１３０５）。
【０２７８】
なお、上述のようにリカバリポイント７８０を削除することによって不要となるベースボリューム３０２及びジャーナルが存在する。以下、リカバリポイント削除時に不要となるベースボリューム３０２及びジャーナルを削除する処理（以下、これを不要ボリューム／ジャーナル削除処理と呼ぶ）について説明する。
【０２７９】
まず、図２９を用いて、リカバリポイント７８０の削除時に不要となるベースボリューム３０２及びジャーナルについて説明する。
【０２８０】
図２９の矢印７００、ジャーナルボリューム３０３、ジャーナル、ベースボリューム３０２Ａ、ベースボリューム３０２Ｂ及びベースボリューム３０２Ｃは図１３と同じである。また符号７８０及び記号７９０は図２７と同じである。
【０２８１】
図２９に示す状態において、リカバリポイント７８０を削除したとき、ベースボリューム３０２Ｂ及びライト順序番号が４〜８のジャーナルが不要となる。なぜならば、リカバリポイント７８０のジャーナルの削除により、ベースボリューム３０２Ｂとベースボリューム３０２Ｃとの間のリカバリポイント７８０がなくなるため、ベースボリューム３０２Ｂとライト順序番号４〜８のジャーナルとを用いたデータリカバリが行われないからである。
【０２８２】
なお、ベースボリューム３０２Ｂの作成時刻以前の状態へのデータリカバリは、ベースボリューム３０２Ａとライト順序番号が１〜３のジャーナルとにより実現できる。同様に、ベースボリューム３０２Ｃ以降のデータリカバリは、ベースボリューム３０２Ｃとそれ以降のジャーナルとにより実現できる。
【０２８３】
リカバリポイント削除プログラムがリカバリポイント７８０の削除により不要となるベースボリューム３０２及びジャーナルを削除する不要ボリューム／ジャーナル削除処理のより具体的な一例を、図３０を用いて説明する。この処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納しているリカバリポイント削除プログラム（図示せず）を実行することで行われる。
【０２８４】
リカバリポイント削除プログラムは、図２８に示したリカバリポイント削除プログラムの処理と同様に、ホスト１００、管理サーバ又は保守端末２７０からのリカバリポイント削除指示を受領し（Ｓ１４００）、リカバリポイント管理表９５０から削除対象のリカバリポイント７８０のジャーナルを削除する（Ｓ１４０１）。
【０２８５】
そして、リカバリポイント削除プログラムは、削除対象のリカバリポイント７８０の前後にベースボリューム３０２があるか否かを確認する（Ｓ１４０２）。これは、リカバリポイント管理表９５０（図２１）を探索し、削除対象のリカバリポイント７８０のジャーナルのライト順序番号を取得し、このライト順序番号と、対応するＣＤＰグループ情報４００のベースボリューム情報５０６（図５、図１５）のリストア済みライト順序番号（図６参照）とを比較することで実現する。
【０２８６】
リカバリポイント削除プログラムは、削除対象のリカバリポイント７８０の前後にベースボリューム３０２が存在しない場合は、処理を終了する（Ｓ１４０８）。これに対してリカバリポイント削除プログラムは、前後にベースボリューム３０２が存在する場合、２つのベースボリューム３０２間にリカバリポイント７８０が存在するか否かをチェックする（Ｓ１４０３）。これは、２つのベースボリューム３０２のリストア済みライト順序番号とリカバリポイント管理表９５０のライト順序番号とを比較することで実現する。
【０２８７】
２つのベースボリューム３０２間にリカバリポイント７８０が存在する場合には、ベースボリューム３０２及びジャーナルの削除は行えないため、リカバリポイント削除プログラムは処理を終了する（Ｓ１４０８）。
【０２８８】
これに対して２つのベースボリューム３０２間にリカバリポイント７８０が存在しない場合、リカバリポイント削除プログラムは、２つのベースボリューム３０２間にあるジャーナルを削除する（Ｓ１４０４）。続いて、リカバリポイント削除プログラムは、ステップＳ１４０１で削除したリカバリポイント７８０の前にあるベースボリューム３０２を削除する（Ｓ１４０５）。
【０２８９】
ジャーナルの削除によりジャーナルボリューム３０３のボリューム使用率が変わるため、リカバリポイント削除プログラムは、対応するＣＤＰグループ情報４００のうちのジャーナルボリューム情報５０５（図５、図１５）のボリューム使用率及び全体使用率（図７参照）を更新する（Ｓ１４０６）。さらに、ベースボリューム３０２の削除により残容量が増えるため、リカバリポイント削除プログラムは、かかるＣＤＰグループ情報４００のうちの残容量情報８０１の値（残容量）を、削除したベースボリューム３０２の容量を足した値に更新する（Ｓ１４０７）。
【０２９０】
なお、ホスト１００からジャーナル重複除去処理を実施するか否かを設定させておき、設定値が「重複除去実施」の場合にのみベースボリューム３０２及びジャーナルの削除を実施するようにしてもよい。さらに、ホスト１００の設定値が「重複除去実施」で、かつ、残容量が一定以下の場合にのみベースボリューム３０２及びジャーナルの削除を実施するようにしてもよい。
【０２９１】
リカバリポイントの削除時にベースボリューム３０２及びジャーナルの削除を実施するのではなく、監視プログラム４１０が定期的にベースボリューム３０２間にリカバリポイント７８０が存在するかをチェックし、不要なベースボリューム３０２及びジャーナルの削除を実施するようにしてもよい。
【０２９２】
リカバリポイントの削除時のベースボリューム３０２及びジャーナルの削除は、図２８に示したリカバリポイント区間のマージと併せて実行することもできる。これは、例えばステップＳ１４０２〜ステップＳ１４０７を図２８のＳ１３０２の直前で実行することで実現できる。
【０２９３】
本実施の形態では、リカバリポイント区間内のジャーナルの重複関係をチェックし、重複部分を除去する方式を説明した。しかし、リカバリポイント区間内にベースボリューム３０２が存在する場合、一部のジャーナルを無条件に削除してもよい場合がある。
【０２９４】
図３１を用いて、重複除去を実行するとき、無条件に削除可能なジャーナルについて説明する。
【０２９５】
図３１の矢印７００、ジャーナルボリューム３０３、ジャーナル、ベースボリューム３０２Ａ、ベースボリューム３０２Ｂ及びベースボリューム３０２Ｃは、図１３と同じである。また符号７８０及び符号７９０は図２７と同じである。
【０２９６】
ライト順序番号が３のリカバリポイント７８０と、ライト順序番号が８のリカバリポイント７８０とより構成されるリカバリポイント区間がある。このリカバリポイント区間内のジャーナルを重複除去するとき、ライト順序番号４及び５の各ジャーナルは削除可能である。なぜならば、ライト順序番号が８のリカバリポイント７８０は、ベースボリューム３０２Ｂと、ライト順序番号が６及び７のジャーナルとを使ってリカバリできるからである。
【０２９７】
一部のジャーナルを無条件に削除する処理（以下、これをジャーナル削除処理と呼ぶ）の一例を、図３２を用いて説明する。このジャーナル削除処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納している重複除去プログラム（図示せず）を実行することで行われる。なお、図３２に示す重複除去プログラムは、図２５の変形である。
【０２９８】
まず、重複除去プログラムは、重複除去対象のリカバリポイント区間にベースボリューム３０２があるかをチェックする（Ｓ１５００）。この処理は、次のように実現する。リカバリポイント区間情報９６０（図２３）及びリカバリポイント管理表９５０（図２１）を使用し、開始リカバリポイント番号（図２３参照）に対応するジャーナルのライト順序番号（図２１参照）及び終了リカバリポイント番号（図２３参照）に対応するジャーナルのライト順序番号（図２１）を特定する。
【０２９９】
続いて、重複除去プログラムは、対応するＣＤＰグループ情報４００のうちのベースボリューム情報５０６を参照し、リストア済みライト順序番号（図６）の値が、開始リカバリポイントのライト順序番号より大きく、かつ、終了リカバリポイントのライト順序番号より小さいベースボリューム３０２が存在するかをチェックする。
【０３００】
リカバリポイント区間にベースボリューム３０２が存在しない場合、重複除去プログラムは、ステップＳ１５０７〜ステップＳ１５１０を実行して処理を終了する。この処理は、図２５について上述したステップＳ１１００〜ステップＳ１１０９と同じ処理になる。つまり、図２５を用いて説明した重複除去の処理と同じである。
【０３０１】
一方、リカバリポイント区間にベースボリューム３０２が存在する場合、重複除去プログラムは、ステップＳ１５０１〜ステップＳ１５０６及びステップＳ１５１０を実行する。
【０３０２】
まず、重複除去プログラムは、対応するＣＤＰグループ情報４００のうちのベースボリューム情報５０５（図５、図１５）に基づいて、ステップＳ１５００で見つけたベースボリューム３０２のリストア済みライト順序番号（図６参照）を得る（Ｓ１５０１）。
【０３０３】
続いて、重複除去プログラムは、リカバリポイント区間情報９６０の開始リカバリポイント番号（図２３参照）に対応するライト順序番号に１を加えた値からベースボリューム３０２のリストア済みライト順序番号（図６参照）までのライト順序番号を有するジャーナルを削除する（Ｓ１５０２）。ジャーナルの削除によりジャーナルボリューム３０３の使用率が変わるため、重複除去プログラムは、ジャーナルボリューム情報５０５のボリューム使用率及び全体使用率（図７参照）を更新する（Ｓ１５０３）。
【０３０４】
次に、重複除去プログラムは、変数ｉの値に変数ｊから１を引いた値を代入し、ステップＳ１５０５に進む（Ｓ１５０４）。そして、変数ｉがステップＳ１５０１で得たベースボリューム３０２のリストア済みライト順序番号に１を加えた値になるまでステップＳ１１０２からＳ１１０９を繰り返し実行する(Ｓ１５０５、Ｓ１５０６)。なお、ステップＳ１１０２からステップＳ１１０９は図２５に示した処理と同じである。変数ｉがベースボリューム３０２のリストア済みライト順序番号に１を加えた値になると重複除去処理を終了することにより、ステップＳ１５０２で削除したジャーナルを重複除去の対象外とすることができる。
【０３０５】
また、図示しないが、区間決定プログラムも、ステップＳ１００２で変数ｊがベースボリューム３０２のリストア済みライト順序番号に１を加えた値になった場合にはステップＳ１００５に進むものとする。
【０３０６】
なお、リカバリポイント区間内のベースボリューム３０２を探す処理は、区間決定プログラム又は重複除去プログラムのいずれかが実行し、探したベースボリューム３０２の情報をメモリ２２０などを介して共有するようにしてもよく、また区間決定プログラム及び重複除去プログラムの両方が実行してもよい。
【０３０７】
（３）第３の実施の形態
（３−１）第３の実施の形態によるジャーナル重複除去処理方法
ストレージシステムの分野には、ボリュームに対して必要に応じて共通領域(以後、プールと呼ぶ)から記憶領域を割当てる技術がある。本実施の形態では、プールからジャーナルボリューム３０３へ必要に応じて領域を割当てる場合のジャーナル重複除去処理について説明する。
【０３０８】
まず、図３３を用いて構成を説明する。プール１１００は、実領域を伴う記憶領域である。ジャーナルボリューム３０３に領域が必要となった場合には、プール１１００から必要容量をジャーナルボリューム３０３に割当てる。プール１１００の領域は、チャンク１１１０と呼ばれる比較的小さい領域から構成されている。ジャーナルボリューム３０３への領域割り当ては、チャンク１１１０を割り当てることにより実現される。プール１１００には１つ以上のチャンク１１１０があり、様々な容量のチャンク１１１０があるものとする。
【０３０９】
なお、プール１１００はＣＤＰグループ毎に存在する必要はなく、１つのプール１１００から複数個のＣＤＰグループのジャーナルボリューム３０３にチャンク１１１０を割当てることができる。
【０３１０】
次に、ジャーナルボリューム３０３について説明する。図３３のジャーナルボリューム３０３は、実領域を伴わない領域である。データを格納する場合には、必要量の領域をプール１１００から割り当て格納する。チャンク１１２０は、プール１１００からジャーナルボリューム３０３に割当てられている領域である。１つのチャンク１１２０には１つ以上のジャーナル１１５０が前詰めに格納される。
【０３１１】
ライト順序番号の昇順に効率良くジャーナルを探すため、チャンク１１２０には次のチャンク１１２０を示すポインタ１１３０がある。例えば、チャンク１の末尾に格納されているジャーナルの次のジャーナルを参照する場合、ポインタ１１３０を使い次のチャンク１１２０の先頭にあるジャーナルを参照する。
【０３１２】
なお、ジャーナルボリューム３０３のデータは、物理的にはプール１１００に格納される。矢印１１４０は、プール１１００からジャーナルボリューム３０３に領域を割り当てている様子を示している。
【０３１３】
このように、プール１１００を用いてジャーナルボリューム３０３を構成することのメリットを説明する。プール１１００を用いることで、ジャーナルボリューム３０３の容量が不足した場合にも、チャンク１１１０を割当てることで領域を増やすことができる。すなわち、未使用ボリュームを探し、探したボリュームをフォーマットするなどの処理が不要となる。
【０３１４】
また、ジャーナルボリューム３０３に必要な容量のみがプール１１００から割当てられるため、物理領域の使用効率がよい。
【０３１５】
本実施の形態では、プール１１００からチャンク１１１０単位で領域が割当てられている場合のジャーナル重複除去処理方法について説明する。
【０３１６】
かかるジャーナル重複除去処理方法を説明する前に、プール１１００、チャンク１１１０及びプール１１００を用いたジャーナルボリューム３０３の管理情報について説明する。
【０３１７】
図３４は、プール１１００の管理情報（以下、これをプール情報１２００と呼ぶ)の一例である。プール情報１２００は、プール番号１２０１、プールサイズ１２０２及びチャンク情報１２０３からなる。プール番号１２０１はストレージシステム２００内でプール１１００を一意に識別するための番号である。そして、プールサイズ１２０２は、プール１１００の記憶容量を示している。さらにチャンク情報１２０３は、プール１１００を構成するチャンク１１１０の情報である。
【０３１８】
図３５は、チャンク情報１２０３の一例を示す。チャンク情報１２０３は、プール１１００毎に存在する。チャンク情報１２０３は、チャンク番号、チャンクサイズ、開始アドレス、終了アドレス、状態及び割当先をそれぞれ表す各情報からなる。
【０３１９】
チャンク番号は、プール１１００内でチャンク１１１０を一意に識別するための識別番号であり、チャンクサイズは、チャンク１１１０のサイズを表す。チャンク情報１２０３内のチャンクサイズの合計値がプール１１００のサイズとなる。さらに開始アドレス及び終了アドレスは、それぞれプール１１００におけるチャンク１１１０の対応位置の開始アドレス及び終了アドレスである。プール１１００の先頭から末尾に向かって番号を付与し、この番号によってチャンク１１１０の範囲を対応付ける。
【０３２０】
状態は、当該チャンク１１１０がジャーナルボリューム３０３に割当て済みか否かを表し、割当先は、チャンク１１１０を割当てたボリュームのボリューム番号を表す。「状態」が「未割当て」の場合には、割当先には何も格納されないものとする(図３５では、'−'と表記した)。
【０３２１】
次に、図３６を用いてプール１１００を用いる場合のジャーナルボリューム情報１３００について説明する。ジャーナルボリューム番号、サイズ、ボリューム使用率及び全体使用率は、図７について上述したジャーナルボリューム情報５０５と同じである。
【０３２２】
チャンク番号は、ジャーナルボリューム３０３に割当てられているチャンク１１１０のチャンク番号を表す。図３６の例では、ジャーナルボリューム１にチャンク３、チャンク２が割当てられている。「次のチャンク」は、図３３に示したポインタ１１３０である。
【０３２３】
プール１１００にマッピングされたジャーナルボリューム３０３に格納されるジャーナルを対象に重複除去する処理の一例を、図３７を用いて説明する。この処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納されている区間決定プログラムを実行することで行われる。なお、図３７に示す区間決定プログラムは、図２４の変形である。
【０３２４】
まず、区間決定プログラムは、図２４について上述したジャーナル重複除去処理と同様に、ジャーナルの重複除去が未完了の区間を探し、変数ｊに区間の最後にあるジャーナル(種別が「通常」のジャーナル)のライト順序番号を代入する（Ｓ１６００、Ｓ１６０１）。
【０３２５】
次に、区間決定プログラムは、変数ｊの値を１ずつ減らしながら、ライト順序番号が変数ｊと同じちのジャーナルと、同一リカバリポイント区間内の他のジャーナルとの重複関係をチェックすることで、ジャーナルの重複除去によるジャーナル削減量を見積もる（Ｓ１６０２〜Ｓ１６０４）。具体的には、区間決定プログラムは、ステップＳ１６０３において、図２５に示す重複除去プログラムとほぼ同等の処理を実行する。ただし、図２５のステップＳ１１０４〜Ｓ１１０８は実行せず、ジャーナルの重複除去による削減量のみを計算するものとする。
【０３２６】
そして区間決定プログラムは、変数ｊの値がジャーナル重複除去の対象となるリカバリポイント区間の最初のジャーナルのライト順序番号になると、ジャーナルの重複除去による削減量の見積もりを終了し、ステップＳ１６０５に進む。そして区間決定プログラムは、この後、見積もった値を使いジャーナル重複除去後のジャーナルを格納可能な最小のチャンク１１１０をプール１１００から割当てる（Ｓ１６０５）。ただし、ジャーナル重複除去後の全てのジャーナルを１つのチャンク１１１０に格納する必要はない。複数個のチャンク１１１０の合計値がジャーナル重複除去後のジャーナルのサイズより大きければよい。
【０３２７】
続いて区間決定プログラムは、チャンク１１１０の割り当てに伴い、チャンク情報１２０３及びジャーナルボリューム情報１３００の値を更新する（Ｓ１６０６）。チャンク情報１２０３に関しては、新規に割当てたチャンク１１１０の「状態」を「割当て済み」に変更し、「割当先」には割当先ジャーナルボリューム３０３のボリューム番号を登録する。そして、ジャーナルボリューム情報１３００に関しては、チャンク１１１０の割当てに伴いボリューム使用率、全体使用率、チャンク番号及び次のチャンク（図３６参照）を更新する。
【０３２８】
次いで区間決定プログラムは、変数ｊに対象とするリカバリポイント区間の最後のジャーナル(種別が「通常」のジャーナル)のライト順序番号を代入する（Ｓ１６０７）。さらに区間決定プログラムは、図２５に示した処理と同様に、変数jの値を１ずつ減らしながら、各ジャーナルごとに重複除去プログラムを起動し、ジャーナルの重複関係のチェック及びジャーナルの重複除去を行なわせる（Ｓ１６０８〜Ｓ１６１０）。
【０３２９】
重複除去プログラムは、図２５と同様に、変数ｊの値と同じライト順序番号のジャーナルと、同じリカバリポイント区間内のその他のジャーナルとの重複関係をチェックし、ジャーナルの重複を除去する。ただし、ジャーナル重複除去後のデータは、新しく割当てたチャンク１１１０に格納するものとする。さらに、図２５のステップＳ１１０７は実行しないものとする。なぜならば、ジャーナルボリューム３０３の使用率は、チャンク１１１０の割当て及び開放処理に合わせてステップＳ１６０６及びステップＳ１６１２で実行するためである。
【０３３０】
そして区間決定プログラムは、変数ｊの値がジャーナル重複除去の対象となるリカバリポイント区間の最初のジャーナルのライト順序番号になると、重複除去プログラムの起動を終了し、ステップＳ１６１１へ進む。
【０３３１】
このステップＳ１６１１において、区間決定プログラムは、ジャーナルボリューム情報１３００の「次のチャンク」を更新する（Ｓ１６１１）。例えば、チャンク２、チャンク３、チャンク４に格納されているジャーナルを重複除去し、ジャーナルをチャンク８に格納したとき、チャンク１の「次のチャンク」の値をチャンク８へ修正し、チャンク８の「次のチャンク」の値をチャンク５へ修正する。
【０３３２】
ただし、ジャーナルの重複除去対象のリカバリポイント区間がチャンク２の途中から開始し、チャンク４の途中で終了している場合、チャンク２の前半及びチャンク４の後半には、別のリカバリポイント区間のジャーナルが格納されている。このため、このとき区間決定プログラムは、チャンク２の「次のチャンク」の値をチャンク８へ修正し、チャンク８の「次のチャンク」の値をチャンク4へ修正するものとする。
【０３３３】
次に、区間決定プログラムは、ジャーナルの重複除去により不要となったチャンク１１１０を開放し、チャンク情報１２０３、ジャーナルボリューム情報１３００を更新する（Ｓ１６１２）。ジャーナルボリューム情報１３００では、チャンク１１１０の開放によりボリューム使用率及び全体使用率（図３６）を更新する。そして、チャンク情報１２０３では、開放したチャンク１１１０の「状態」を「未割当て」に変更し、「割当先」の内容を初期化する。
【０３３４】
最後に、区間決定プログラムは、ジャーナル重複除去の対象区間をジャーナルの重複除去済みとして設定し、処理を終了する（Ｓ１６１３、Ｓ１６１４）。
【０３３５】
なお、ステップＳ１６０５の直前でジャーナル重複除去の効果が一定以下ならば、ステップＳ１６０５〜ステップＳ１６１３を実行せず、処理を終了するように分岐するステップを追加してもよい。
【０３３６】
さらに、本実施の形態では、ステップＳ１６０２〜ステップＳ１６０４によりジャーナル重複除去後のジャーナル量を見積っているが、かかる見積りを行なわずにジャーナルの重複除去を実施してもよい。この場合はステップＳ１６０５でジャーナル重複除去前と同じ容量のチャンク１１１０を割当てるか、ジャーナル重複除去後のジャーナルを格納するステップでチャンク１１１０の空き領域をチェックし、空き領域が不足している場合に新しいチャンク１１１０を割当てるようにする。
【０３３７】
上述したジャーナル重複除去方法では、ジャーナルを重複除去した後のジャーナル量と同一の容量を持つチャンク１１１０がプール１１００に存在しなければ、ジャーナル重複除去後のジャーナルを格納できる最小のチャンク１１１０を割当てる。さらに、リカバリポイント区間の開始や、終了がチャンク１１１０の途中にある場合には、チャンク１１１０内の重複対象のジャーナルのみが新しいチャンク１１１０へ移される。
【０３３８】
このような処理により、チャンク１１１０に未使用領域が出来てしまう可能性がある。そこで、以下においては、ジャーナル重複除去後のジャーナルを、前後のチャンク１１１０の空き領域、新しく割当てるチャンク１１１０に格納する処理について説明する。これを実現するために、ジャーナルボリューム情報１４００は、チャンク１１１０内の使用率も持つものとする(図示しない)。
【０３３９】
なお、前後のチャンク１１１０とは、ジャーナルの重複除去処理により開放されるチャンク１１１０の前後にあるチャンク１１１０である。チャンク１、チャンク２、チャンク３、チャンク４があり、ジャーナル重複除去対象のリカバリポイント区間がチャンク１の途中から開始し、チャンク４の途中で終了している時は、チャンク２、チャンク３が開放される。このとき、チャンク１が前のチャンク、チャンク４が後ろのチャンクとなる。
【０３４０】
区間決定プログラムが重複除去後のジャーナルを前後のチャンク１１１０の空き領域、新しく割当てるチャンク１１１０に格納する処理の一例を、図３８を用いて説明する。この処理は、ストレージシステム２００のＣＰＵ２１３がメモリ２２０に格納された区間決定プログラムを実行することで行われる。なお、図３８に示す区間決定プログラムは、図３７の変形である。
【０３４１】
区間決定プログラムは、ステップＳ１７００において、図３７に示した区間決定プログラムのステップＳ１６００〜ステップＳ１６０４と同じ処理を実行する。すなわち、ジャーナル重複除去によるジャーナルの削減量を見積もる処理である。
【０３４２】
次に、区間決定プログラムは、重複除去対象のジャーナルのデータ合計量から見積もり量を差し引いた値(重複除去対象ジャーナルの合計量−見積もり値)と、前後のチャンク１１１０の空き領域の関係とをチェックする（Ｓ１７０１）。
【０３４３】
重複除去対象のジャーナルの合計量から見積もり量を差し引いた値が前後のチャンク１１１０の空き領域より大きい場合には、前後チャンク１１１０に重複後の全ジャーナルを格納することができない。かくして、このとき区間決定プログラムは、重複対象のジャーナルの合計容量から前後のチャンク１１１０の空き容量及びジャーナル重複除去のジャーナルの削減量を引いた容量を上回る最小のチャンク１１１０をプール１１００から割り当てる（Ｓ１７０２）。これに対して、重複除去対象のジャーナルの合計量から見積もり量を差し引いた値がチャンク１１００の空き領域以下の場合は、新しくチャンク１１００を割り当てる必要がないため、区間決定プログラムはステップＳ１７０４に進む。
【０３４４】
続いて区間決定プログラムは、図３７のステップＳ１６０６及びステップＳ１６０７と同様に、チャンク情報１２０３及びジャーナルボリューム情報１３００の値を更新し（Ｓ１７０３）、変数ｊにそのとき対象としているリカバリポイント区間の最後にあるジャーナル(種別が「通常」のジャーナル)のライト順序番号を代入する（Ｓ１７０４）。
【０３４５】
次いで区間決定プログラムは、重複除去対象のリカバリポイント区間の開始リカバリポイントのライト順序番号と変数ｊとを比較する。そして区間決定プログラムは、変数ｊの値とライト順序番号の値とが同じであれば、図３７に示したステップＳ１６１１からステップＳ１６１４を実行して処理を終了する。これに対して区間決定プログラムは、変数ｊの値とライト順序番号の値とが異なる場合には、図３７に示した処理と同様に、変数jの値を１ずつ減らしながら、ジャーナルごとに重複除去プログラムを起動し、ジャーナルの重複関係のチェック及びジャーナルの重複除去を行なわせる（Ｓ１７０５〜Ｓ１７１１）。
【０３４６】
まず、区間決定プログラムは、後ろのチャンク１１１０が空いているか否かをチェックし（Ｓ１７０６）、空いている場合には、ステップＳ１７１０へ進む。ステップ１７１０において、区間決定プログラムは、重複除去後のジャーナルを格納するチャンク１１１０として後ろのチャンク１１１０を指定し、重複除去プログラムを起動する。
【０３４７】
一方、後ろのチャンク１１１０が空いていない場合、区間決定プログラムは、ステップＳ１７０７へ進み、ステップＳ１７０２で確保したチャンク１１１０が空いているか否かをチェックする（Ｓ１７０７）。ステップＳ１７０２で確保したチャンク１１１０が空いている場合、区間決定プログラムは、重複除去後のジャーナルを格納するチャンク１１１０としてステップＳ１７０２において確保したチャンク１１１０を指定し、重複除去プログラムを起動する。
【０３４８】
一方、ステップＳ１７０２で確保したチャンク１１１０が空いていない場合、区間決定プログラムは、重複除去後のジャーナルを格納するチャンク１１１０として、前のチャンク１１１０を指定し、重複除去プログラムを起動する。
【０３４９】
そして区間決定プログラムにより起動される重複除去プログラムは、区間決定プログラムから指定されたチャンク１１１０に重複除去後のジャーナルを格納する。これにより、重複除去後のジャーナルを前後チャンク１１１０の空き領域に格納することができる。
【０３５０】
（３−２）ＣＤＰ制御に関するＧＵＩ画面
最後に、ＣＤＰ制御に関してホスト１００の管理ソフト１８０がユーザに提供するＧＵＩ（Ｇｒａｐｈｉｃａｌ Ｕｓｅｒ Ｉｎｔｅｒｆａｃｅ）画面について説明する。図３９は、ユーザが所定の操作を行うことによりホスト１００のディスプレイに表示されるＧＵＩ画面１５００の一例を示す。このＧＵＩ画面１５００は大きくわけて、ＣＤＰパラメタ設定画面１５１０、ＣＤＰ情報表示画面１５２０、リカバリポイント作成指示画面１５３０、リカバリポイント削除指示画面１５４０から構成される。
【０３５１】
ＣＤＰパラメタ設定画面１５１０は、ＣＤＰに関する各種パラメタを設定するための画面である。実際上、ＣＤＰパラメタ設定画面１５１０には、ＣＤＰグループ番号（「ＣＤＰグループ番号」）、ユーザ指定ＲＴＯ（「指定ＲＴＯ」）、ユーザ指定保護期間（「指定保護期間」）及び指定容量（「ユーザ指定容量」）をそれぞれ指定入力するための入力フィールド１５１１〜１５１４と、ジャーナル重複除去処理を実行するか否かを選択するためのラジオボタン１５１５Ａ，１５１５Ｂと、各種パラメタの優先度を指定入力するための入力フィールド１５１６Ａ〜１５１６Ｃと、実行ボタン１５１７とを備える。
【０３５２】
図３９の例では、ＣＤＰグループ番号として「１」、ユーザ指定ＲＴＯとして「３０分」、ユーザ指定保護期間として「１０日」、ユーザ指定容量として「３００ＧＢ」がそれぞれ各テキストフィールド１５１１〜１５１４に入力されると共に、ジャーナル重複除去処理について「実行する」が選択されている状態が示されている。また図３９の例では、ユーザ指定ＲＴＯ、ユーザ指定容量、ユーザ指定保護期間の優先度については、この順序で優先する設定がなされている。
【０３５３】
ユーザは、かかるＧＵＩ画面１５００のＣＤＰパラメタ設定画面１５１０において、ＣＤＰグループ番号等の必要なパラメタの設定を行った後に、実行ボタン１５１７をクリックすることでストレージシステム２００に、これらパラメタを通知することができる。詳しくは、ユーザが実行ボタン１５１７をクリックすると、パラメタ設定指示プログラム１８２が実行され、かかるＣＤＰパラメタ設定画面１５１０において設定された各種パラメタがストレージシステム２００に通知される。そしてストレージシステム２００は、これらのパラメタが通知されると、そのパラメタをメモリ２２０内の対応する領域に登録したり、対応する処理を実行する。
【０３５４】
一方、ＣＤＰ情報表示画面１５２０は、現在のＣＤＰの運用状況を表示するための画面である。ＣＤＰ情報表示画面１５２０は、ＣＤＰグループ番号を指定するための入力フィールド１５２１を備える。ＣＤＰグループ番号を入力すると、当該ＣＤＰグループ３００に対する現ＲＴＯ、現保護期間及び現使用容量がそれぞれ対応する領域１５２２〜１５２４に表示される。
【０３５５】
リカバリポイント作成指示画面１５３０は、ユーザがストレージシステム２００にリカバリポイントの作成を指示するための画面である。リカバリポイント作成指示画面１５３０は、ＣＤＰグループ番号入力フィールド１５３１及び実行ボタン１５３２を備える。このリカバリポイント作成指示画面１５３０では、ＣＤＰグループ番号入力フィールド１５３１を用いることで、リカバリポイント作成対象となるＣＤＰグループ３００を指定することができる。
【０３５６】
そしてユーザは、このリカバリポイント作成指示画面１５３０において、ＣＤＰグループ番号入力フィールド１５３１内にリカバリポイント作成対象とすべきＣＤＰグループ３００のＣＤＰグループ番号を入力した後、実行ボタン１５３２をクリックすることによって、リカバリポイント作成指示をストレージシステム２００に発行することができる。
【０３５７】
リカバリポイント削除指示画面１５４０は、ユーザがストレージシステム２００にリカバリポイント削除を指示するための画面である。リカバリポイント削除指示画面１５４０は、ＣＤＰグループ番号入力フィールド１５４１、リカバリポイント番号入力フィールド１５４２及び実行ボタン１５３４を備える。このリカバリポイント削除指示画面１５４０では、ＣＤＰグループ番号入力フィールド１５４１を用いることで、削除対象のリカバリポイントを有するＣＤＰグループ３００を指定することができ、リカバリポイント番号入力フィールド１５４２を用いることで、削除対象リカバリポイントを指定することができる。
【０３５８】
そしてユーザは、このリカバリポイント削除指示画面１５４０において、ＣＤＰグループ番号入力フィールド１５４１内に削除対象のリカバリポイントが属するＣＤＰグループ３００のＣＤＰグループ番号を入力すると共に、リカバリポイント番号入力フィールド１５４２内に削除対象のリカバリポイントのリカバリポイント番号を入力した後、実行ボタン１５４３をクリックすることによって、リカバリポイント削除指示をストレージシステム２００に発行することができる。
【０３５９】
（４）他の実施の形態
なお上述の実施の形態においては、本発明を図１及び図２のように構成された情報処理システム１に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成の情報処理システムに広く適用することができる。
【０３６０】
また上述の実施の形態においては、業務ボリューム３０１単位でデータを復元するようにした場合について述べたが、本発明はこれに限らず、業務ボリューム３０１に格納されたライトデータ単位で複製を作成し、当該複製とジャーナルとを用いてライトデータ単位でデータを復元できるようにしてもよい。
【０３６１】
さらに上述の実施の形態においては、ホスト１００により業務ボリューム３０１に書き込まれたライトデータの複製を必要に応じて作成する複製作成部と、業務ボリューム３０１にライトデータが書き込まれるごとに、当該ライトデータ及び業務ボリューム３０１に対するライトデータの書き込みに関する制御情報からなるジャーナルを作成するジャーナル作成部と、ライトデータの複製及びジャーナルに基づいて当該ライトデータの過去の状態を復元する復元部とを、ストレージシステム２００全体の動作制御を司るＣＰＵ２１３及びメモリ２２０に格納された対応するプログラムにより構成するようにした場合について述べたが、本発明はこれに限らず、かかる複製作成部や、ジャーナル作成部及び又は復元部を専用のハードウェアにより構成するようにしてもよい。
【０３６２】
さらに上述の実施の形態においては、ライトデータを復元する時点の候補であるリカバリポイント（データ復元候補ポイント）を表す情報を作成及び管理する作成及び管理部を、ストレージシステム２００全体の動作制御を司るＣＰＵ２１３及びメモリ２２０に格納された対応するプログラムにより構成するようにした場合について述べたが、本発明はこれに限らず、かかる作成及び管理部を専用のハードウェアにより構成するようにしてもよい。
【０３６３】
さらに上述の実施の形態においては、複数のベースボリューム３０２（ライトデータの複製）や複数のジャーナルを１つのベースボリューム３０２又はジャーナルにまとめる重複除去処理を実行する重複除去部を、ストレージシステム２００全体の動作制御を司るＣＰＵ２１３及びメモリ２２０に格納された対応するプログラムにより構成するようにした場合について述べたが、本発明はこれに限らず、かかる重複除去部を専用のハードウェアにより構成するようにしてもよい。
【０３６４】
さらに上述の実施の形態においては、予め設定された目標とするライトデータの過去の状態を復元するのに要する目標とするデータ復元時間と、予め設定された目標とするジャーナルの保持期間と、予め設定されたライトデータの過去の状態を復元するデータ復元処理に使用する目標とする容量とを記憶する記憶部としてメモリ２２０を適用するようにした場合について述べたが、本発明はこれに限らず、この他ディスク状記憶媒体（例えばハードディスク）など、種々の記憶媒体を広く適用することができる。
【０３６５】
さらに上述の実施の形態においては、目標とするデータ復元時間、目標とするジャーナルの保持期間及び目標とする容量の少なくとも１つを保証するように、ベースボリューム３０２及びジャーナルに基づいて当該ライトデータの過去の状態を復元するライトデータ復元部を、ストレージシステム２００全体の動作制御を司るＣＰＵ２１３及びメモリ２２０に格納された対応するプログラムにより構成するようにした場合について述べたが、本発明はこれに限らず、かかるライトデータ復元部を専用のハードウェアにより構成するようにしてもよい。
【産業上の利用可能性】
【０３６６】
本発明は、ＣＤＰ機能が搭載された種々の形態のストレージシステムに広く適用することができる。
【図面の簡単な説明】
【０３６７】
【図１】第１の実施の形態による情報処理システム及びホストの構成を示すブロック図である。
【図２】第１の実施の形態による情報処理システム及びストレージシステムの構成の一例を示す図である。
【図３】ＣＤＰ機能の概要を示す概念図である。
【図４】ストレージシステムのメモリに格納された各種制御情報及び各種プログラムの説明に供する概念図である。
【図５】ＣＤＰグループ情報の説明に供する概念図である。
【図６】ベースボリューム情報の説明に供する概念図である。
【図７】ジャーナルボリューム情報の説明に供する概念図である。
【図８】ＣＤＰ開始処理の説明に供するである。
【図９】第１のＣＤＰ制御方式の説明に供するフローチャートである。
【図１０】第１の実施の形態によるジャーナルフォーマットを示す概念図である。
【図１１】ジャーナル作成処理の説明に供するフローチャートである。
【図１２】ジャーナル適用処理の説明に供するフローチャートである。
【図１３】（Ａ）及び（Ｂ）は、第２のＣＤＰ制御方式の説明に供する概念図である。
【図１４】ベースボリューム作成処理の説明に供するフローチャートである。
【図１５】ＣＤＰグループ情報の他の一例を示す概念図である。
【図１６】ジャーナルボリューム追加登録処理の説明に供するフローチャートである。
【図１７】他のベースボリューム作成処理の説明に供するフローチャートである。
【図１８】ジャーナル量決定処理の説明に供するフローチャートである。
【図１９】他のベースボリューム作成処理の説明に供するフローチャートである。
【図２０】第２の実施の形態によるジャーナルフォーマットを示す図である。
【図２１】リカバリポイント管理表の説明に供する図表である。
【図２２】（Ａ）−（Ｄ）は、ジャーナルの重複除去の説明に供する概念図である。
【図２３】リカバリポイント区間情報の説明に供する概念図である。
【図２４】第２の実施の形態によるジャーナル重複除去処理の説明に供するフローチャートである。
【図２５】第２の実施の形態によるジャーナル重複除去処理の説明に供するフローチャートである。
【図２６】第２の実施の形態によるジャーナル重複除去処理の説明に供するフローチャートである。
【図２７】リカバリポイント削除に伴うジャーナル重複除去処理の説明に供する概念図である。
【図２８】リカバリポイント削除処理の説明に供するフローチャートである。
【図２９】不要ボリューム／ジャーナル削除処理の説明に供する概念図である。
【図３０】不要ボリューム／ジャーナル削除処理の説明に供するフローチャートである。
【図３１】ジャーナル削除処理の説明に供する概念図である。
【図３２】ジャーナル削除処理の説明に供する概念図である。
【図３３】プールを用いたジャーナルボリュームの説明に供する概念図である。
【図３４】プール情報の説明に供する概念図である。
【図３５】チャンク情報の説明に供する概念図である。
【図３６】第３の実施の形態によるジャーナルボリューム情報の説明に供する概念図である。
【図３７】第３の実施の形態によるジャーナル重複除去処理の説明に供するフローチャートである。
【図３８】第３の実施の形態によるジャーナル重複除去処理の説明に供するフローチャートである。
【図３９】ＣＤＰ制御に関してホスト１００に表示されるＧＵＩ画面を略線的に示す略線図である。
【符号の説明】
【０３６８】
１００……ホスト、２００……ストレージシステム、２１３……ＣＰＵ、２２０……メモリ、３００……ＣＤＰグループ、３０１……業務ボリューム、３０２，３０２Ａ，３０２Ｂ，３０２Ｃ……ベースボリューム、３０３……ジャーナルボリューム、３０４……リカバリボリューム、４００……ＣＤＰグループ情報、４０２……ＣＤＰ開始プログラム、４０５……ジャーナル作成プログラム、４０６……ベースボリューム作成プログラム、４０７……リストアプログラム、４０８……監視プログラム、５００……ＣＤＰグループ番号情報、５０１……ライト順序番号情報、５０２……現ＲＴＯ情報、５０３……ユーザ指定ＲＴＯ情報、５０４……業務ボリューム情報、５０５，１３００……ジャーナルボリューム情報、５０６……ベースボリューム情報、５０７……現保護期間情報、６００……ジャーナルフォーマット、７８０……リカバリポイント、８００……ユーザ指定容量情報、８０１……残容量情報、８０２……ユーザ指定保護期間情報、８０３……区間内最大ジャーナル量情報、８０５……区間内ジャーナル量情報、９５０……リカバリポイント管理表、９６０……リカバリポイント区間情報、１１００……プール、１１２０……チャンク、１１５０……ジャーナル、１２００……プール情報、１２０３……チャンク情報、１５００……ＧＵＩ画面。
【図１】
2008243138.tif 000003
【図２】
2008243138.tif 000004
【図３】
2008243138.tif 000005
【図４】
2008243138.tif 000006
【図５】
2008243138.tif 000007
【図６】
2008243138.tif 000008
【図７】
2008243138.tif 000009
【図８】
2008243138.tif 000010
【図９】
2008243138.tif 000011
【図１０】
2008243138.tif 000012
【図１１】
2008243138.tif 000013
【図１２】
2008243138.tif 000014
【図１３】
2008243138.tif 000015
【図１４】
2008243138.tif 000016
【図１５】
2008243138.tif 000017
【図１６】
2008243138.tif 000018
【図１７】
2008243138.tif 000019
【図１８】
2008243138.tif 000020
【図１９】
2008243138.tif 000021
【図２０】
2008243138.tif 000022
【図２１】
2008243138.tif 000023
【図２２】
2008243138.tif 000024
【図２３】
2008243138.tif 000025
【図２４】
2008243138.tif 000026
【図２５】
2008243138.tif 000027
【図２６】
2008243138.tif 000028
【図２７】
2008243138.tif 000029
【図２８】
2008243138.tif 000030
【図２９】
2008243138.tif 000031
【図３０】
2008243138.tif 000032
【図３１】
2008243138.tif 000033
【図３２】
2008243138.tif 000034
【図３３】
2008243138.tif 000035
【図３４】
2008243138.tif 000036
【図３５】
2008243138.tif 000037
【図３６】
2008243138.tif 000038
【図３７】
2008243138.tif 000039
【図３８】
2008243138.tif 000040
【図３９】
2008243138.tif 000041