(57)【要約】【課題】本発明の記憶制御装置は、予め設定される各区間毎にそれぞれ別々の差分ビットマップを用いることにより、正ボリュームと基底ボリュームとの間の差分を各区間毎に管理し、効率よくデータを保護する。【解決手段】正ボリューム３と基底ボリューム４との間の差分は、各区間毎に別々の差分ビットマップ６Ａを用いて管理される（Ｓ３）。目標保護期間を経過したジャーナルデータ５Ａは、基底ボリューム４に書き込まれて、破棄される（Ｓ４）。リカバリ時には、各差分ビットマップ６Ａをマージして新たな差分ビットマップ６Ｂを生成し（Ｓ７）、基底ボリューム４から正ボリューム３に差分をコピーする（Ｓ８）。その後、指定された復元点までのジャーナルデータ５Ａを正ボリューム３に書き込む。【選択図】図１
2008282241.tif 000002
【特許請求の範囲】
【請求項１】
上位装置により利用されるデータを記憶するための記憶制御装置であって、
前記上位装置からのライトデータを記憶する第１記憶領域と、
前記第１記憶領域の所定時点における記憶内容がコピーされる第２記憶領域と、
前記第１記憶領域と前記第２記憶領域との間の記憶内容の差分が生じた位置を、複数の差分ビットマップを予め定められる複数の所定期間毎に切り替えて使用することにより、管理する制御部と、を備える記憶制御装置。
【請求項２】
上位装置により利用されるデータを記憶するための記憶制御装置であって、
前記上位装置からのライトデータを記憶する第１ボリュームと、
前記第１ボリュームの所定時点における記憶内容がコピーされる第２ボリュームと、
前記第１ボリュームを対象とするライト要求に基づいて生成されるジャーナルデータを記憶する第３ボリュームと、
前記第１ボリュームと前記第２ボリュームとの間の記憶内容の差分が生じた位置を、予め定められる複数の所定区間毎にそれぞれ管理する複数の第１差分ビットマップと、
前記第１ボリューム、前記第２ボリューム、前記第３ボリューム及び前記各第１差分ビットマップを制御するための制御部であって、
（１）前記第１ボリュームの前記所定時点における記憶内容を前記第２ボリュームに記憶させるための形成コピー機能と、
（２）前記上位装置からの前記ライト要求に基づいて前記ジャーナルデータを生成し、生成した前記ジャーナルデータを前記第３ボリュームに記憶させるジャーナル生成機能と、（３）前記所定時点以降に前記上位装置から発行される前記ライト要求によって前記第１ボリュームと前記第２ボリュームとの間に生じる差分の位置を、前記所定区間毎に選択される一つの前記第１差分ビットマップに記憶させる差分管理機能と、
（４）前記第３ボリュームに記憶される各ジャーナルデータのうち、予め指定される目標保護期間を経過した所定のジャーナルデータを前記第２ボリュームに反映させる反映機能と、
（５）前記第２ボリュームに反映された前記所定のジャーナルデータを破棄するジャーナル破棄機能と、
（６）前記各第１差分ビットマップのうち、対応する全ての前記ジャーナルデータが破棄された所定の第１差分ビットマップの記憶内容を消去して、新たな第１差分ビットマップとして再利用する再利用機能と、をそれぞれ実行する制御部と、
を備える記憶制御装置。
【請求項３】
前記制御部は、さらに、
（７）第１リストアの実行が指示された場合は、
（７−２）前記各第１差分ビットマップの記憶内容をマージして第２差分ビットマップを生成し、
（７−３）この生成された第２差分ビットマップに基づいて前記第２ボリュームの記憶内容を前記第１ボリュームに差分コピーさせることにより、前記第１ボリュームの記憶内容を前記所定時点まで戻し、
（７−４）前記第３ボリュームに記憶された前記各ジャーナルデータのうち、指定される第１復元点までのジャーナルデータを前記第１ボリュームに反映させることにより、前記第１ボリュームの記憶内容を前記第１復元点における記憶内容に復元させるための、第１リストア機能を実行する請求項２に記載の記憶制御装置。
【請求項４】
前記第１リストア機能（７）は、前記第１リストアの実行が指示された場合に、（７−１）前記上位装置から前記第１ボリュームへのライト要求を禁止し、かつ、前記反映機能（４）の作動を停止させた後で、前記（７−２）〜（７−４）をそれぞれ実行する請求項３に記載の記憶制御装置。
【請求項５】
前記第１リストア機能（７）は、前記（７−２）〜（７−４）をそれぞれ実行した後において、
（７−５）前記上位装置から前記第１ボリュームへのライト要求の禁止を解除させることにより、前記ジャーナル生成機能（２）により生成される新たなジャーナルデータを前記第３ボリュームに記憶させ、
（７−６）前記所定時点の記憶内容に復元された前記第１ボリュームと前記第２ボリュームとの間に生じる差分の位置を、第３差分ビットマップに記憶させる、請求項４に記載の記憶制御装置。
【請求項６】
前記第１リストア機能（７）は、前記（７−２）〜（７−６）をそれぞれ実行した後において、
（７−７）前記第１復元点とは別の第１復元点を指定する第１リストアの実行が指示された場合には、前記新たなジャーナルデータを破棄させ、
（７−８）前記各第１差分ビットマップ及び前記第３差分ビットマップの記憶内容をマージして別の第２差分ビットマップを生成し、
（７−９）この生成された別の第２差分ビットマップに基づいて前記第２ボリュームの記憶内容を前記第１ボリュームにコピーさせることにより、前記第１ボリュームの記憶内容を前記所定時点まで戻し、
（７−１０）前記第３ボリュームに記憶された前記各ジャーナルデータのうち、前記別の第１復元点までのジャーナルデータを前記第１ボリュームに反映させることにより、前記第１ボリュームの記憶内容を前記別の第１復元点における記憶内容に復元させる、請求項５に記載の記憶制御装置。
【請求項７】
前記第１リストア機能（７）は、前記（７−８）において、前記第２差分ビットマップを生成した後で、前記第３差分ビットマップを消去させる、請求項６に記載の記憶制御装置。
【請求項８】
前記制御部は、さらに、
（８）第２リストアの実行が指示された場合は、
（８−１）前記第３ボリュームに記憶されている前記各ジャーナルデータのうち、指定される第２復元点以降の連続する全てのジャーナルデータを無効化し、
（８−２）前記上位装置から前記第１ボリュームへのライト要求の禁止を解除し、かつ、前記反映機能（４）の作動を再開させるための、第２リストア機能を実行する請求項４に記載の記憶制御装置。
【請求項９】
前記制御部は、前記（７−１）〜（７−６）をそれぞれ実行した後で、（８）第２リストアの実行が指示された場合は、
（８−１Ａ）前記第３ボリュームに記憶されている前記各ジャーナルデータのうち、前記（７−５）において生成される前記新たなジャーナルデータはそのまま維持し、指定される第２復元点以降の連続する全てのジャーナルデータは無効化し、
（８−２Ａ）前記第３差分ビットマップを前記第１差分ビットマップとして利用するための、第２リストア機能を実行する請求項５に記載の記憶制御装置。
【請求項１０】
前記第１復元点は、前記第３ボリュームに記憶されている前記各ジャーナルデータによって管理される期間内から選択される請求項３に記載の記憶制御装置。
【請求項１１】
前記第１復元点または前記第２復元点は、前記第２リストアの実行前から前記第３ボリュームに記憶されており、かつ、前記第２リストアの実行後も前記第３ボリュームに記憶されている前記各ジャーナルデータによって管理される第１期間内、または、前記第２リストアの実行後から前記第３ボリュームに新たに記憶されるジャーナルデータによって管理される第２期間内のいずれかから選択可能である請求項９に記載の記憶制御装置。
【請求項１２】
前記第３ボリュームの使用率が予め設定される第１閾値に達した場合、前記反映機能（４）は、前記目標保護期間を経過する前のジャーナルデータも前記第２ボリュームに反映し、かつ、前記ジャーナル破棄機能（５）は、前記第２ボリュームに反映された前記ジャーナルデータを破棄する、請求項２に記載の記憶制御装置。
【請求項１３】
前記第３ボリュームの使用率が予め設定される第２閾値に達した場合、前記制御部は、前記上位装置から前記第１ボリュームへのライト要求の発行量を制限させる、請求項２に記載の記憶制御装置。
【請求項１４】
上位装置により利用されるデータを記憶するための記憶制御装置を制御するための方法であって、
前記記憶制御装置は、前記上位装置からのライトデータを記憶する第１ボリュームと、前記第１ボリュームの所定時点における記憶内容がコピーされる第２ボリュームと、前記第１ボリュームを対象とするライト要求に基づいて生成されるジャーナルデータを記憶する第３ボリュームと、前記第１ボリュームと前記第２ボリュームとの間の記憶内容の差分が生じた位置を、予め定められる複数の所定区間毎にそれぞれ管理する複数の第１差分ビットマップと、前記第１ボリューム、前記第２ボリューム、前記第３ボリューム及び前記各第１差分ビットマップを制御するための制御部とを備えており、
前記制御部は、
（１Ｓ）前記第１ボリュームの前記所定時点における記憶内容を前記第２ボリュームに記憶させるステップと、
（２Ｓ）前記上位装置からの前記ライト要求に基づいて前記ジャーナルデータを生成し、生成した前記ジャーナルデータを前記第３ボリュームに記憶させるステップと、
（３Ｓ）前記所定時点以降に前記上位装置から発行される前記ライト要求によって前記第１ボリュームと前記第２ボリュームとの間に生じる差分の位置を、前記所定区間毎に選択される一つの前記第１差分ビットマップに記憶させるステップと、
（４Ｓ）前記第３ボリュームに記憶される各ジャーナルデータのうち、予め指定される目標保護期間を経過した所定のジャーナルデータを前記第２ボリュームに反映させるステップと、
（５Ｓ）前記所定のジャーナルデータを破棄するステップと、
（６Ｓ）前記各第１差分ビットマップのうち、対応する全ての前記ジャーナルデータが破棄された所定の第１差分ビットマップの記憶内容を消去して、新たな第１差分ビットマップとして再利用するステップと、
を含む第１制御モードを実行する、記憶制御装置の制御方法。
【請求項１５】
前記制御部は、前記（６Ｓ）に続けて、
（７Ｓ）第１復元点を指定して第１リストアの実行が指示された場合は、前記上位装置からのライト要求を禁止し、かつ、前記各第１差分ビットマップの記憶内容をマージして第２差分ビットマップを生成するステップと、
（８Ｓ）生成された前記第２差分ビットマップに基づいて前記第２ボリュームの記憶内容を前記第１ボリュームにコピーさせることにより、前記第１ボリュームの記憶内容を前記所定時点まで戻すステップと、
（９Ｓ）前記第３ボリュームに記憶された前記各ジャーナルデータのうち、前記第１復元点までのジャーナルデータを前記第１ボリュームに反映させることにより、前記第１ボリュームの記憶内容を前記第１復元点における記憶内容に復元させるステップと、
（１０Ｓ）前記ライト要求の禁止を解除するステップと、
（１１Ｓ）前記ライト要求の禁止が解除されることにより生成される新たなジャーナルデータを前記第３ボリュームに記憶させるステップと、
（１２Ｓ）前記所定時点の記憶内容に復元された前記第１ボリュームと前記第２ボリュームとの間に生じる差分の位置を、第３差分ビットマップに記憶させるステップと、
（１３Ｓ）前記第１復元点が第２復元点として確定された場合には、前記第３ボリュームに記憶されている前記各ジャーナルデータのうち、前記新たなジャーナルデータはそのまま維持し、前記確定された第２復元点以降の連続する全てのジャーナルデータを無効化させるステップと、
（１４Ｓ）前記第３差分ビットマップを前記第１差分ビットマップとして利用するステップと、
（１５Ｓ）前記目標保護期間を経過した前記所定のジャーナルデータを前記第２ボリュームに反映させるステップと、
を含む第２制御モードを実行する、請求項１４に記載の記憶制御装置の制御方法。
【請求項１６】
前記制御部は、前記第１制御モードの実行停止が指示された場合に、
（１６Ｓ）前記上位装置から前記第１ボリュームへのライト要求に基づく前記ジャーナルデータの生成を中止させるステップと、
（１７Ｓ）前記上位装置から前記第１ボリュームへのライト要求による差分の発生を第４差分ビットマップに記憶させるステップと、
を含む第３制御モードを実行する、請求項１５に記載の記憶制御装置の制御方法。
【請求項１７】
前記第３制御モードは、
（１８Ｓ）前記目標保護期間を経過した前記所定のジャーナルデータの、前記第２ボリュームへの反映を中止させるステップを、さらに含む請求項１６に記載の記憶制御装置の制御方法。
【請求項１８】
上位装置からのライトデータを記憶する第１ボリュームと、
前記第１ボリュームの所定時点における記憶内容がコピーされる第２ボリュームと、
前記第１ボリュームを対象とするライト要求に基づいて生成されるジャーナルデータを記憶する第３ボリュームと、
前記第１ボリュームと前記第２ボリュームとの間の記憶内容の差分が生じた位置を、予め定められる複数の所定区間毎にそれぞれ管理する複数の第１差分ビットマップと、
前記第１ボリューム、前記第２ボリューム、前記第３ボリューム及び前記各第１差分ビットマップを制御するための制御部であって、
（１）前記第１ボリュームの前記所定時点における記憶内容を前記第２ボリュームに記憶させるための形成コピー機能と、
（２）前記上位装置からの前記ライト要求に基づいて前記ジャーナルデータを生成し、生成した前記ジャーナルデータを前記第３ボリュームに記憶させるジャーナル生成機能と、（３）前記所定時点以降に前記上位装置から発行される前記ライト要求によって前記第１ボリュームと前記第２ボリュームとの間に生じる差分の位置を、前記所定区間毎に選択される一つの前記第１差分ビットマップに記憶させる差分管理機能と、
（４）前記第３ボリュームに記憶される各ジャーナルデータのうち、予め指定される目標保護期間を経過した所定のジャーナルデータを前記第２ボリュームに反映させる反映機能と、
（５）前記第２ボリュームに反映された前記所定のジャーナルデータを破棄するジャーナル破棄機能と、
（６）前記各第１差分ビットマップのうち、対応する全ての前記ジャーナルデータが破棄された所定の第１差分ビットマップの記憶内容を消去して、新たな第１差分ビットマップとして再利用する再利用機能と、をそれぞれ実行する制御部と、
を備える情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置、記憶制御装置の制御方法及び情報処理システムに関する。
【背景技術】
【０００２】
日々増大する多量のデータを効率的に管理するために、例えば、企業や医療機関、政府機関、教育機関等の各種組織では、記憶制御装置を使用する。記憶制御装置には、例えば、売上げデータ、顧客データ、研究データ等のような重要なデータも記憶されるため、人為的ミス等によるデータの消失に備える必要がある。データ消失に対する防衛策として、ボリュームのバックアップを定期的に作成する方法が挙げられる。
【０００３】
しかし、バックアップ作成及びリストアにはそれぞれ長い時間がかかる。また、バックアップが作成された時点にしかデータを戻すことができないため、使い勝手が悪い。そこで、他の防衛策として、ボリュームのスナップショットを作成し、かつ、ボリュームへの更新が発生するたびにジャーナルデータを取得し、このジャーナルデータを管理するようにした第１従来技術も知られている（特許文献１）。しかし、この従来技術でも、スナップショットを作成する必要があり、使い勝手の点で改善の余地がある。
【０００４】
そこで、ジャーナルデータを用いて任意時点にリストアさせることができるようにした第２従来技術も知られている（特許文献２）。
【特許文献１】特開２００５−１８７３８号公報
【特許文献２】米国特許出願公開第２００５／００２８０２２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前記第２従来技術では、保護対象のデータボリュームと、保護対象のデータボリュームのある時点での記憶内容がコピーされたセカンダリボリュームと、ジャーナルデータを記憶するジャーナルボリュームとを用意している。リストア時には、第２従来技術は、セカンダリボリュームからデータボリュームにデータをコピーさせ、データボリュームの記憶内容をセカンダリボリュームの記憶内容に一致させる。次に、第２従来技術では、指定された時点までのジャーナルデータをジャーナルボリュームから読み出して、データボリュームに書き込む。従って、第２従来技術によれば、更新された単位で（ジャーナルデータ単位で）、任意の時点にリストアでき、ユーザの使い勝手は改善される。
【０００６】
しかし、ジャーナルボリュームの容量が一定の場合、いずれジャーナルボリュームはジャーナルデータで満杯になるため、リストア可能な期間を長くするのは難しい。ジャーナルボリュームの容量を拡張可能な構成とした場合、記憶制御装置の有する記憶容量の多くがジャーナルデータの管理に消費されてしまう可能性がある。
【０００７】
本発明は、上記の問題点に鑑みてなされたもので、その目的は、保護対象ボリュームのデータを効率良く保護することができる記憶制御装置、記憶制御装置の制御方法及び情報処理システムを提供することにある。本発明の他の目的は、ジャーナルデータを効率よく管理し、より高速なリストアを可能とする記憶制御装置、記憶制御装置の制御方法及び情報処理システムを提供することにある。本発明の別の目的は、ジャーナルデータを効率良く管理し、リストア可能な時点の選択範囲を広げることができる記憶制御装置、記憶制御装置の制御方法及び情報処理システムを提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００８】
上記課題を解決すべく、本発明に従う、上位装置により利用されるデータを記憶するための記憶制御装置は、上位装置からのライトデータを記憶する第１記憶領域と、第１記憶領域の所定時点における記憶内容がコピーされる第２記憶領域と、第１記憶領域と第２記憶領域との間の記憶内容の差分が生じた位置を、複数の差分ビットマップを予め定められる複数の所定期間毎に切り替えて使用することにより、管理する制御部と、を備える。
【０００９】
本発明の別の観点に従う、上位装置により利用されるデータを記憶するための記憶制御装置は、上位装置からのライトデータを記憶する第１ボリュームと、第１ボリュームの所定時点における記憶内容がコピーされる第２ボリュームと、第１ボリュームを対象とするライト要求に基づいて生成されるジャーナルデータを記憶する第３ボリュームと、第１ボリュームと第２ボリュームとの間の記憶内容の差分が生じた位置を、予め定められる複数の所定区間毎にそれぞれ管理する複数の第１差分ビットマップと、第１ボリューム、第２ボリューム、第３ボリューム及び各第１差分ビットマップを制御するための制御部とを備える。
【００１０】
そして、制御部は、（１）第１ボリュームの所定時点における記憶内容を第２ボリュームに記憶させるための形成コピー機能と、（２）上位装置からのライト要求に基づいてジャーナルデータを生成し、生成したジャーナルデータを第３ボリュームに記憶させるジャーナル生成機能と、（３）所定時点以降に上位装置から発行されるライト要求によって第１ボリュームと第２ボリュームとの間に生じる差分の位置を、所定区間毎に選択される一つの第１差分ビットマップに記憶させる差分管理機能と、（４）第３ボリュームに記憶される各ジャーナルデータのうち、予め指定される目標保護期間を経過した所定のジャーナルデータを第２ボリュームに反映させる反映機能と、（５）第２ボリュームに反映された所定のジャーナルデータを破棄するジャーナル破棄機能と、（６）各第１差分ビットマップのうち、対応する全てのジャーナルデータが破棄された所定の第１差分ビットマップの記憶内容を消去して、新たな第１差分ビットマップとして再利用する再利用機能と、をそれぞれ実行する。
【００１１】
本発明の実施形態では、制御部は、さらに、第１リストア機能（７）を実行する。この第１リストア機能は、（７）第１リストアの実行が指示された場合、（７−２）各第１差分ビットマップの記憶内容をマージして第２差分ビットマップを生成し、（７−３）この生成された第２差分ビットマップに基づいて第２ボリュームの記憶内容を第１ボリュームに差分コピーさせることにより、第１ボリュームの記憶内容を所定時点まで戻し、（７−４）第３ボリュームに記憶された各ジャーナルデータのうち、指定される第１復元点までのジャーナルデータを第１ボリュームに反映させることにより、第１ボリュームの記憶内容を第１復元点における記憶内容に復元させるものである。
【００１２】
本発明の実施形態では、第１リストア機能（７）は、第１リストアの実行が指示された場合に、（７−１）上位装置から第１ボリュームへのライト要求を禁止し、かつ、反映機能（４）の作動を停止させた後で、（７−２）〜（７−４）をそれぞれ実行する。
【００１３】
本発明の実施形態では、第１リストア機能（７）は、（７−２）〜（７−４）をそれぞれ実行した後において、（７−５）上位装置から第１ボリュームへのライト要求の禁止を解除させることにより、ジャーナル生成機能（２）により生成される新たなジャーナルデータを第３ボリュームに記憶させ、（７−６）所定時点の記憶内容に復元された第１ボリュームと第２ボリュームとの間に生じる差分の位置を、第３差分ビットマップに記憶させる。
【００１４】
本発明の実施形態では、第１リストア機能（７）は、（７−２）〜（７−６）をそれぞれ実行した後において、（７−７）第１復元点とは別の第１復元点を指定する第１リストアの実行が指示された場合には、新たなジャーナルデータを破棄させ、（７−８）各第１差分ビットマップ及び第３差分ビットマップの記憶内容をマージして別の第２差分ビットマップを生成し、（７−９）この生成された別の第２差分ビットマップに基づいて第２ボリュームの記憶内容を第１ボリュームにコピーさせることにより、第１ボリュームの記憶内容を所定時点まで戻し、（７−１０）第３ボリュームに記憶された各ジャーナルデータのうち、別の第１復元点までのジャーナルデータを第１ボリュームに反映させることにより、第１ボリュームの記憶内容を別の第１復元点における記憶内容に復元させる。
【００１５】
本発明の実施形態では、第１リストア機能（７）は、（７−８）において、第２差分ビットマップを生成した後で、第３差分ビットマップを消去させる。
【００１６】
本発明の実施形態では、制御部は、さらに、第２リストア機能（８）を実行する。この第２リストア機能は、（８）第２リストアの実行が指示された場合、（８−１）第３ボリュームに記憶されている各ジャーナルデータのうち、指定される第２復元点以降の連続する全てのジャーナルデータを無効化し、（８−２）上位装置から第１ボリュームへのライト要求の禁止を解除し、かつ、反映機能（４）の作動を再開させる。
【００１７】
本発明の実施形態では、制御部は、（７−１）〜（７−６）をそれぞれ実行した後で、（８）第２リストアの実行が指示された場合は、（８−１Ａ）第３ボリュームに記憶されている各ジャーナルデータのうち、（７−５）において生成される新たなジャーナルデータはそのまま維持し、指定される第２復元点以降の連続する全てのジャーナルデータは無効化し、（８−２Ａ）第３差分ビットマップを第１差分ビットマップとして利用するための、第２リストア機能を実行する。
【００１８】
本発明の実施形態では、第１復元点は、第３ボリュームに記憶されている各ジャーナルデータによって管理される期間内から選択される。
【００１９】
本発明の実施形態では、第１復元点または第２復元点は、第２リストアの実行前から第３ボリュームに記憶されており、かつ、第２リストアの実行後も第３ボリュームに記憶されている各ジャーナルデータによって管理される第１期間内、または、第２リストアの実行後から第３ボリュームに新たに記憶されるジャーナルデータによって管理される第２期間内のいずれかから選択可能である。
【００２０】
本発明の実施形態では、第３ボリュームの使用率が予め設定される第１閾値に達した場合、反映機能（４）は、目標保護期間を経過する前のジャーナルデータも第２ボリュームに反映し、かつ、ジャーナル破棄機能（５）は、第２ボリュームに反映されたジャーナルデータを破棄する。
【００２１】
本発明の実施形態では、第３ボリュームの使用率が予め設定される第２閾値に達した場合、制御部は、上位装置から第１ボリュームへのライト要求の発行量を制限させる。例えば、ライト要求に対する応答を遅らせることにより、上位装置から発行されるライト要求の量を減少させることができる。
【００２２】
本発明の他の観点に従う、上位装置により利用されるデータを記憶するための記憶制御装置を制御するための方法では、記憶制御装置は、上位装置からのライトデータを記憶する第１ボリュームと、第１ボリュームの所定時点における記憶内容がコピーされる第２ボリュームと、第１ボリュームを対象とするライト要求に基づいて生成されるジャーナルデータを記憶する第３ボリュームと、第１ボリュームと第２ボリュームとの間の記憶内容の差分が生じた位置を、予め定められる複数の所定区間毎にそれぞれ管理する複数の第１差分ビットマップと、第１ボリューム、第２ボリューム、第３ボリューム及び各第１差分ビットマップを制御するための制御部とを備えており、制御部は、下記の第１制御モードを実行する。第１制御モードは、（１Ｓ）第１ボリュームの所定時点における記憶内容を第２ボリュームに記憶させるステップと、（２Ｓ）上位装置からのライト要求に基づいてジャーナルデータを生成し、生成したジャーナルデータを第３ボリュームに記憶させるステップと、（３Ｓ）所定時点以降に上位装置から発行されるライト要求によって第１ボリュームと第２ボリュームとの間に生じる差分の位置を、所定区間毎に選択される一つの第１差分ビットマップに記憶させるステップと、（４Ｓ）第３ボリュームに記憶される各ジャーナルデータのうち、予め指定される目標保護期間を経過した所定のジャーナルデータを第２ボリュームに反映させるステップと、（５Ｓ）所定のジャーナルデータを破棄するステップと、（６Ｓ）各第１差分ビットマップのうち、対応する全てのジャーナルデータが破棄された所定の第１差分ビットマップの記憶内容を消去して、新たな第１差分ビットマップとして再利用するステップと、を含む。
【００２３】
本発明の実施形態では、制御部は、第２制御モードを実行する。第２制御モードは、（６Ｓ）に続けて、（７Ｓ）第１復元点を指定して第１リストアの実行が指示された場合は、上位装置からのライト要求を禁止し、かつ、各第１差分ビットマップの記憶内容をマージして第２差分ビットマップを生成するステップと、（８Ｓ）生成された第２差分ビットマップに基づいて第２ボリュームの記憶内容を第１ボリュームにコピーさせることにより、第１ボリュームの記憶内容を所定時点まで戻すステップと、（９Ｓ）第３ボリュームに記憶された各ジャーナルデータのうち、第１復元点までのジャーナルデータを第１ボリュームに反映させることにより、第１ボリュームの記憶内容を第１復元点における記憶内容に復元させるステップと、（１０Ｓ）ライト要求の禁止を解除するステップと、（１１Ｓ）ライト要求の禁止が解除されることにより生成される新たなジャーナルデータを第３ボリュームに記憶させるステップと、（１２Ｓ）所定時点の記憶内容に復元された第１ボリュームと第２ボリュームとの間に生じる差分の位置を、第３差分ビットマップに記憶させるステップと、（１３Ｓ）第１復元点が第２復元点として確定された場合には、第３ボリュームに記憶されている各ジャーナルデータのうち、新たなジャーナルデータはそのまま維持し、確定された第２復元点以降の連続する全てのジャーナルデータを無効化させるステップと、（１４Ｓ）第３差分ビットマップを第１差分ビットマップとして利用するステップと、（１５Ｓ）目標保護期間を経過した所定のジャーナルデータを第２ボリュームに反映させるステップと、を含む。
【００２４】
本発明の実施形態では、制御部は、第１制御モードの実行停止が指示された場合に、第３制御モードを実行する。第３制御モードは、（１６Ｓ）上位装置から第１ボリュームへのライト要求に基づくジャーナルデータの生成を中止させるステップと、（１７Ｓ）上位装置から第１ボリュームへのライト要求による差分の発生を第４差分ビットマップに記憶させるステップと、を含む。
【００２５】
本発明の実施形態では、第３制御モードは、（１８Ｓ）目標保護期間を経過した所定のジャーナルデータの、第２ボリュームへの反映を中止させるステップを、さらに含むこともできる。
【００２６】
本発明のさらに別の観点に従う、情報処理システムは、上位装置からのライトデータを記憶する第１ボリュームと、第１ボリュームの所定時点における記憶内容がコピーされる第２ボリュームと、第１ボリュームを対象とするライト要求に基づいて生成されるジャーナルデータを記憶する第３ボリュームと、第１ボリュームと第２ボリュームとの間の記憶内容の差分が生じた位置を、予め定められる複数の所定区間毎にそれぞれ管理する複数の第１差分ビットマップと、第１ボリューム、第２ボリューム、第３ボリューム及び各第１差分ビットマップを制御するための制御部であって、（１）第１ボリュームの所定時点における記憶内容を第２ボリュームに記憶させるための形成コピー機能と、（２）上位装置からのライト要求に基づいてジャーナルデータを生成し、生成したジャーナルデータを第３ボリュームに記憶させるジャーナル生成機能と、（３）所定時点以降に上位装置から発行されるライト要求によって第１ボリュームと第２ボリュームとの間に生じる差分の位置を、所定区間毎に選択される一つの第１差分ビットマップに記憶させる差分管理機能と、（４）第３ボリュームに記憶される各ジャーナルデータのうち、予め指定される目標保護期間を経過した所定のジャーナルデータを第２ボリュームに反映させる反映機能と、（５）第２ボリュームに反映された所定のジャーナルデータを破棄するジャーナル破棄機能と、（６）各第１差分ビットマップのうち、対応する全てのジャーナルデータが破棄された所定の第１差分ビットマップの記憶内容を消去して、新たな第１差分ビットマップとして再利用する再利用機能と、をそれぞれ実行する制御部と、を備える。
【００２７】
本発明の各部、各機能、各ステップの少なくとも一部は、コンピュータプログラムにより実現可能な場合がある。このようなコンピュータプログラムは、例えば、記憶デバイスに記憶されて、あるいは、通信ネットワークを介して、流通される。
【発明を実施するための最良の形態】
【００２８】
図１は、本発明の実施形態の概要を示す説明図である。図１には、本実施形態に係る記憶制御装置１を含む情報処理システムの概要が示されている。図１（ａ）は、通常運用時の動作を示し、図１（ｂ）は、リストア時の動作を示す。
【００２９】
まず図１（ａ）を参照する。この情報処理システムは、例えば、記憶制御装置１と、ホスト２とを備える。後述の実施例から明らかなように、情報処理システムは、管理サーバ３０や別の記憶制御装置４０をさらに備えることもできる。
【００３０】
記憶制御装置１は、例えば、ハードディスクドライブやフラッシュメモリデバイス等のような物理的記憶デバイスを複数備えている。この物理的記憶デバイスの有する物理的記憶領域を仮想化することにより、論理的記憶デバイスが作成される。この論理的記憶デバイスを、以下の説明では、論理ボリューム、またはボリュームと呼ぶ。
【００３１】
記憶制御装置１は、例えば、保護対象ボリューム（図中「PVOL」）３と、基底ボリューム（図中「BVOL」）４と、ジャーナルボリューム５と、区間差分ビットマップ６とを備えることができる。
【００３２】
保護対象ボリューム３は、その記憶内容がジャーナルデータによって連続的に保護されるボリュームである。保護対象ボリューム３に記憶されるデータを、連続的に指定可能な任意の復元点によって復元させる技術を、本明細書では、ＣＤＰ（Continuous Data Protection）と呼ぶ。以下、説明の便宜上、保護対象ボリューム３を、正ボリューム３と呼ぶ場合がある。
【００３３】
正ボリューム３は、ホスト２に接続されており、ホスト２から書き込まれるデータを記憶する。ホスト２は、正ボリューム３にデータを書き込んだり、正ボリューム３からデータを読み出すことができる。基底ボリューム４は、ある所定時点において正ボリュームに記憶されていたデータを記憶する。後述のように、基底ボリューム４には、目標保護期間を経過したジャーナルデータが順番に書き込まれていく。従って、基底ボリューム４は、正ボリューム３の最新の記憶内容から所定時間（目標保護期間）だけ前の記憶内容を記憶する。基底ボリューム４が示している正ボリューム３の過去の時点を基底点と呼ぶ。基底点は、実時間の経過に応じて変化していく。基底点の変化を、基底点シフトと呼ぶ場合がある。
【００３４】
基底ボリューム４と正ボリューム３の記憶内容の時間差が常に一定であるわけではなく、後述の実施例のように、基底ボリューム４と正ボリューム３の記憶内容の時間差に変化を生じる場合がある。
【００３５】
ジャーナルボリューム５は、ジャーナルデータ５Ａを保存するボリュームである。ジャーナルデータ５Ａは、ホスト２によって正ボリューム３が更新された履歴を管理するためのデータである。従って、ジャーナルデータ５Ａは、更新履歴管理データと呼ぶことができ、ジャーナルボリューム５は、更新履歴管理用ボリュームと呼ぶことができる。
【００３６】
区間差分ビットマップ６は、予め設定される所定の区間毎にそれぞれ用意される差分ビットマップである。区間差分ビットマップ６は、例えば、正ボリューム３の各論理トラック単位のような所定単位で、更新の有無を管理する。区間は、時間やジャーナルボリューム５の使用率等に応じて定めることができる。更新された位置にはビット１が設定され、更新されていない位置にはビット０が設定される。差分の発生位置を示すビットを差分ビットと呼ぶ。
【００３７】
一つの例では、所定時間（図１中では「１時間」）毎に、それぞれ別々の差分ビットマップ６Ａを使用することができる。即ち、９時−１０時では、差分ビットマップ６Ａ（9:00-10:00）を使用して差分を管理し、これに続く１０時−１１時では、別の差分ビットマップ６Ａ（10:00-11:00）を使用して差分を管理することができる。
【００３８】
別の一つの例では、差分ビットマップ６Ａの切替後に蓄積されたジャーナルデータ量を別途管理しておき、その管理されるジャーナルデータ量がジャーナルボリューム５の全容量の所定割合に達した場合に、別の差分ビットマップ６Ａに切り替える。
【００３９】
目標保護期間とは、正ボリューム３の記憶内容を過去に戻すことが可能な期間を意味し、例えば、「３時間」のように予め設定される。正ボリューム３の記憶内容が実際に保護される時間と目標保護期間とは基本的に一致するが、後述の実施例のように、目標保護期間と実際の保護期間とか不一致の場合もある。
【００４０】
目標保護期間を経過したジャーナルデータ５Ａは、順番に基底ボリューム４に書き込まれていく。これにより、基底ボリューム４の記憶内容は、正ボリューム３の記憶内容から目標保護期間だけ遅れて追従することになる。
【００４１】
通常運用時の動作を説明する。まず最初に、ユーザは、保護対象となる正ボリューム３及び目標保護期間を指定する。記憶制御装置１は、正ボリューム３に記憶されている全データを基底ボリューム４にコピーする。図１（ａ）に示す例では、９時の時点におけるデータが基底ボリューム４にコピーされたものとする。即ち、図１（ａ）では、ＣＤＰ開始時刻が９時の場合を示す。
【００４２】
ホスト２は、正ボリューム３にアクセスし、データを読み書きする。ホスト２から送信されたライトデータが正ボリューム３に書き込まれた場合（Ｓ１）、つまり、正ボリューム３を対象とするライト要求がホスト２から発行された場合、記憶制御装置１は、そのライト要求に基づいてジャーナルデータ５Ａを生成する。生成されたジャーナルデータ５Ａは、ジャーナルボリューム５に保存される（Ｓ２）。
【００４３】
なお、正ボリューム３のある時点の記憶内容を基底ボリューム４にコピーさせる形成コピー中に、ホスト２が正ボリューム３にデータを書き込む場合もある。正ボリューム３から基底ボリューム４へのコピーが完了していない未コピー領域について、ホスト２が新たなデータの書込みを要求した場合を説明する。
【００４４】
この場合、一つの例として、記憶制御装置１は、未コピー領域に記憶されているデータ（旧データ）を正ボリューム３から基底ボリューム４にコピーさせた後で、ホスト２からの新たなデータを正ボリューム３に書き込む。
【００４５】
別の一つの例として、形成コピー中に発行された新たなライト要求のライトデータを「新データ」のような属性をつけてキャッシュメモリ上で管理し、未コピー領域に記憶されている旧データと別に管理する方法もある。この例では、正ボリューム３から基底ボリューム４への旧データのコピーと、ホスト２からのライト要求の処理（新データの上書き）とを非同期で行うことができる。なお、さらに別の方法もある。
【００４６】
ホスト２によって正ボリューム３が更新された位置（例えば、論理トラック）は、ライト要求の発行時刻が含まれる期間（区間）を担当する差分ビットマップ６Ａに記憶される（Ｓ３）。時間が経過して、最初の差分ビットマップ６Ａの担当期間を過ぎた場合、記憶制御装置１は、別の新たな差分ビットマップ６Ａに切り替えて、ホスト２によって正ボリューム３が更新された位置を管理する。
【００４７】
ＣＤＰ開始時刻から目標保護期間を経過すると、目標保護期間を経過したジャーナルデータ５Ａは、基底ボリューム４に順番に書き込まれる（Ｓ４）。つまり、現在時刻が１２時を過ぎた場合、現在時刻（１２時）よりも目標保護期間（３時間）だけ前に生成されたジャーナルデータは、生成された順番で基底ボリューム４に書き込まれる。基底ボリューム４に書き込まれたジャーナルデータ５Ａは、破棄される。
【００４８】
本明細書では、ジャーナルデータ５Ａを基底ボリューム４または正ボリューム３に書き込んで、基底ボリューム４または正ボリューム３の記憶内容を更新させる動作を、「格上げ」または「反映」と呼ぶ場合がある。
【００４９】
図１ではさらに時間が経過した様子が示されている。現在時刻が「13:05」になった場合、「9:55」から「10:05」までに作成されたジャーナルデータ５Ａは、目標保護期間を経過したことになるので、基底ボリューム４に書き込まれる。これにより、基底ボリューム４の記憶内容は、現在時刻から３時間前の「10:05」における正ボリューム３の記憶内容と一致する。このように、通常運用時には、基底ボリューム４の記憶内容は、目標保護期間だけ遅れて、正ボリューム３の記憶内容に追従する。
【００５０】
各区間の差分ビットマップ６Ａのうち、自身の管理下にあるジャーナルデータ５Ａが全て基底ボリューム４に書き込まれた区間差分ビットマップ６Ａは、その記憶内容が消去されて再利用される。例えば、現在時刻が「13:05」の場合、基底点は３時間前の「10:05」となっている。「9:00−10:00」の区間を担当する差分ビットマップ６Ａ（9:00-10:00）に関連する各ジャーナルデータ５Ａは、既に基底ボリューム４に書き込まれている。
【００５１】
従って、この差分ビットマップ６Ａ（9:00-10:00）は、既に用済みであり、保存しておく必要がない。そこで、差分ビットマップ６Ａ（9:00-10:00）の記憶内容は消去され、別の新たな区間の差分を管理するために再利用される。
【００５２】
図１（ｂ）を参照して、リストア時の動作を説明する。例えば、ホスト２上のアプリケーションプログラムで発生した障害やユーザの誤操作等により、正ボリューム３の記憶内容に誤りを生じる可能性がある。
【００５３】
正ボリューム３の記憶内容に誤りを生じた場合、ユーザは、正ボリューム３の記憶内容を所望の時点まで復元させるための指示を発行する。ユーザは、保護期間内の任意の時刻を復元点（リストア点）として選択することができる。図１（ｂ）の例では、ユーザは、10:05−13:05の期間内の任意時刻を選択できる。ここでは、ユーザは、復元点として「12:30」を指定したものとする。
【００５４】
正ボリューム３をリストアする場合、ホスト２から正ボリューム３へのアクセスは禁止される（Ｓ５）。即ち、記憶制御装置１は、ホスト２からライト要求が発行された場合、ホスト２にエラーを返す。なお、リストアの開始に先立って、ユーザがホスト２を停止させることもできる。Ｓ５に続いて、基底ボリューム４へのジャーナルデータ５Ａの書込みも停止させる（Ｓ６）。基底ボリューム４へのジャーナルデータ５Ａの書込みを停止させることにより、基底点の変化によって復元可能な期間が短縮されてしまうのを防止することができる。なお、基底ボリューム４へのジャーナルデータ５Ａの書込みを、リストアの実行とは無関係に停止させることもできる。
【００５５】
記憶制御装置１は、リストアが指定された時刻に存在する各区間差分ビットマップ６Ａの記憶内容をマージすることによって、差分コピー用の差分ビットマップ６Ｂを生成する（Ｓ７）。即ち、記憶制御装置１は、各区間差分ビットマップ６Ａの論理和（ＯＲ）を求めることにより、差分コピー用の差分ビットマップ６Ｂを得る。この差分ビットマップ６Ｂには、基底点から現在時刻までの間に更新された全ての位置が記憶されている。
【００５６】
記憶制御装置１は、差分コピー用の差分ビットマップ６Ｂを用いて、基底ボリューム４から正ボリューム３にデータを差分コピーする（Ｓ８）。つまり、記憶制御装置１は、差分ビットマップ６Ｂにビット１が設定されている位置についてのみ、基底ボリューム４に記憶されているデータを正ボリューム３にコピーする。
【００５７】
差分コピー用の差分ビットマップ６Ｂは、正ボリューム３の記憶内容を基底ボリューム４の記憶内容に一致させるためのリストアコピーを実行するために使用される。従って、差分ビットマップ６Ｂは、リストアコピー用差分ビットマップと呼ぶこともできる。
【００５８】
基底点の記憶内容から更新されたデータだけをコピーするため、基底ボリューム４の全データを正ボリューム３にコピーする場合よりも速やかに、正ボリューム３の記憶内容を基底ボリューム４の記憶内容に一致させることができる。
【００５９】
このように、記憶制御装置１は、まず最初に、正ボリューム３の記憶内容を基底ボリューム４で管理されている基底点の記憶内容まで戻し（Ｓ８）、次に、指定された復元点までのジャーナルデータ５Ａを正ボリューム３に書き込む（Ｓ９）。これにより、正ボリューム３の記憶内容は、指定された復元点まで戻る。
【００６０】
その後、ホスト２から正ボリューム３へのアクセス禁止が解除される。ホスト２は、復元点にリストアされた正ボリューム３にアクセスし、アプリケーションプログラムが正ボリューム３を使用するために必要なリカバリ処理を実施する。リカバリ処理としては、例えば、ファイルシステムにおけるfsckコマンドの実行、DBMS（DataBase Management System）におけるクラッシュリカバリ処理やロールフォワード処理等が挙げられる。リカバリ処理の終了後に、ユーザやアプリケーションプログラムは、正ボリューム３が障害直前の状態に回復したか否かを確認する。正ボリューム３の回復が確認された場合、ホスト２のアプリケーションプログラムは、正ボリューム３を使用する。本明細書では、リカバリ処理及びリカバリ処理の確認を合わせて「リカバリ」と呼ぶ場合がある。
【００６１】
本実施形態は、上述のように構成されるため、以下の効果を奏する。本実施形態では、通常運用時には、目標保護期間を経過したジャーナルデータ５Ａを基底ボリューム４に書き込むことにより、基底ボリューム４の記憶内容を正ボリューム３から目標保護期間だけ遅れた記憶内容として、遷移させることができる。従って、リストア可能な期間の始点である基底点を、現在時刻から一定時間だけ遅らせて追従させることができる。基底ボリューム４に書き込まれたジャーナルデータ５Ａは破棄されるため、ジャーナルボリューム５がジャーナルデータ５Ａで満杯になる可能性を低減することができる。
【００６２】
本実施形態では、予め設定される複数の区間毎にそれぞれ別々の差分ビットマップ６Ａを割り当てて、正ボリューム３と基底ボリューム４との間の差分を各区間毎に管理する構成である。従って、差分ビットマップ６Ａに対応付けられる全てのジャーナルデータ５Ａが基底ボリューム４に書き込まれた後で、その差分ビットマップ６Ａの記憶内容を消去して（ゼロクリアして）、再利用することができる。これにより、不要な差分ビットマップ６Ａが記憶制御装置１のメモリ領域に記憶されたままになるのを防止し、かつ、記憶制御装置１のメモリ領域を効率的に使用することができる。
【００６３】
これに対し、もしも、全区間を通じて一つの差分ビットマップを用いる場合、つまり、単一の差分ビットマップによって正ボリューム３と基底ボリューム４との間の差分を管理する場合を考える。この場合、いったんビット１に設定されると、ビット０に戻すことはできず、余計な差分ビット（ビット１に設定されているビット）が時間の経過につれて蓄積されていく。
【００６４】
基底ボリューム４に書き込まれたジャーナルデータ５Ａに対応する差分ビットは「０」に戻しても構わないが、その後に同一の場所に別のデータが上書きされる可能性があるため、ビット１からビット０に戻すことはできない。
【００６５】
従って、単一の差分ビットマップを用いる場合、時間の経過につれて余分な差分ビットが蓄積されていくため、リストア時に基底ボリューム４から正ボリューム３にコピーされるデータ量が増大する。この結果、正ボリューム３の記憶内容を基底点まで戻すための時間が長くなり、リカバリに長時間を必要とする。本実施形態では、区間毎にそれぞれ別々の差分ビットマップ６Ａを用いるため、不要な差分ビットが蓄積されるのを防止し、リストア時のコピー量を低減し、リカバリ時間を短縮することができる。さらに、本実施形態では、不要な差分ビットマップ６Ａの記憶内容を消去して再利用できるため、記憶制御装置１のメモリ領域を効率的に使用できる。
【００６６】
本実施形態の記憶制御装置１は、図１に示す構成に限られず、後述の実施例で明らかにされる構成を含むこともできる。また、ジャーナルデータ５Ａの管理や差分ビットマップ６Ａの管理は、記憶制御装置１の外部で行うこともできる。例えば、ホスト２やホスト２に接続された別のコンピュータ装置によって、ジャーナル管理及び／または差分管理を行う構成とすることもできる。以下、本発明の実施例を詳細に説明する。
【実施例１】
【００６７】
図２は、本実施例による記憶制御装置１０を含む情報処理システムのハードウェア構成を模式的に示す説明図である。説明の前に、図１に示す実施形態と以下に述べる実施例との対応関係を明らかにする。
【００６８】
「記憶制御装置」としての記憶制御装置１０は図１中の記憶制御装置１に、「上位装置」としてのホスト２０は図１中のホスト２に、それぞれ対応する。「管理装置」と表現可能な管理サーバ３０は、図１では省略されている。
【００６９】
「第１ボリューム」としての正ボリューム２３０Ｐ（図４参照）は、図１中の正ボリューム３に対応する。「第２ボリューム」としての基底ボリューム２３０Ｂ（図４参照）は、図１中の基底ボリューム４に対応する。「第３ボリューム」としてのジャーナルボリューム２３０Ｊ（図４参照）は、図１中のジャーナルボリューム５に対応する。
【００７０】
「ジャーナルデータ」としてのジャーナルデータＪＤ（図４参照）は、図１中のジャーナルデータ５Ａに対応する。「第１差分ビットマップ」としての区間差分ビットマップＢＭ２０（図４参照）は、図１中の区間差分ビットマップ６Ａに対応する。「制御部」としてのコントローラ１００は、図１中では図示を省略されている。
【００７１】
図４に示される「第２差分ビットマップ」としての差分コピー用差分ビットマップ（あるいは形成コピー用差分ビットマップ）ＢＭ１０は、図１中の差分ビットマップ６Ｂに対応する。
【００７２】
図４に示される「第３差分ビットマップ」としてのリカバリ中の差分ビットマップＢＭ３０は、図１では省略されている。同様に、図４に示す「第４差分ビットマップ」としてのＣＤＰ停止中の差分ビットマップＢＭ４０も、図１では省略されている。
【００７３】
なお、後述のテンポラリリストアは「第１リストア」に、後述の「コンプリートリストア」は「第２リストア」に、それぞれ対応する。
【００７４】
図１に戻る。ホスト２０と記憶制御装置１０とは、例えば、ＳＡＮ（Storage Area Network）のような通信経路ＣＮ１を介して、双方向通信可能に接続されている。ホスト２０は、例えば、サーバコンピュータ、メインフレームコンピュータ、ワークステーション等のようなコンピュータ装置として構成される。
【００７５】
ホスト２０がメインフレームコンピュータである場合、例えば、FICON（Fibre Connection：登録商標）、ESCON（Enterprise System Connection：登録商標）、ACONARC（Advanced Connection Architecture：登録商標）、FIBARC（Fibre Connection Architecture：登録商標）等の通信プロトコルに従って、データ転送が行われる。
【００７６】
上述の専用プロトコル以外に、ホスト２０と記憶制御装置１０とは、例えば、iSCSI（internet Small Computer System Interface）、TCP/IP（Transmission Control Protocol/Internet Protocol）、FCP（Fibre Channel Protocol）のような各種通信プロトコルを用いてデータ転送を行うこともできる。
【００７７】
記憶制御装置１０は、システム内の記憶資源を一元的に管理する役割を果たすこともできる。例えば、記憶制御装置１０は、システム内に散在する物理的な記憶資源を仮想化して、ホスト２０に提供する機能を備えることができる。即ち、記憶制御装置１０は、外部記憶制御装置４０内の記憶資源を、それがあたかも記憶制御装置１０内の記憶資源であるかのように、ホスト２０に見せかけることができる。このように、記憶制御装置１０は、システム内に散在する記憶資源を仮想化するための仮想化装置としての側面を備えることができる。この側面に注目するならば、記憶制御装置１０は、必ずしもディスクアレイ装置等のように構成される必要はなく、例えば、ファイバチャネルスイッチ等のような別の装置として構成することもできる。
【００７８】
記憶制御装置１０の構成を説明する。記憶制御装置１０は、コントローラ１００と記憶装置ユニット（以下、ＨＤＵ）とに大別することができる。コントローラ１００は、記憶制御装置１０の動作を制御するものである。コントローラ１００は、例えば、チャネルアダプタ（以下、ＣＨＡ）１１０，ディスクアダプタ（以下、ＤＫＡ）１２０，キャッシュメモリ（図中、ＣＭ）１３０，共有メモリ（図中、ＳＭ）１４０，接続制御部１５０及びサービスプロセッサ（以下、ＳＶＰ）１６０を備えて構成される。
【００７９】
ＣＨＡ１１０は、ホスト２０との間のデータ通信を制御するためのもので、例えば、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。各ＣＨＡ１１０は、少なくとも一つ以上の通信ポート１１１を備えている。通信ポート１１１には、例えば、WWN（World Wide Name）のような識別情報が設定される。ホスト２０と記憶制御装置１０とが、iSCSI（internet Small Computer System Interface）等を用いてデータ通信を行う場合、通信ポート１１１には、ＩＰ（Internet Protocol）アドレス等の識別情報が設定される。
【００８０】
図２中には、２種類のＣＨＡ１１０が示されている。図２中左側に位置する一方のＣＨＡ１１０は、ホスト２０からのコマンドを受信して処理するためのものであり、その通信ポート１１１は、ターゲットポートとなっている。図２中右側に位置する他方のＣＨＡ１１０は、外部記憶制御装置４０にコマンドを発行するためのものであり、その通信ポート１１１は、イニシエータポートとなっている。
【００８１】
ＤＫＡ１２０は、ＨＤＵ２００内の各ディスクドライブ２１０との間のデータ通信を制御するためのもので、ＣＨＡ１１０と同様に、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。
【００８２】
各ＤＫＡ１２０と各ディスクドライブ２１０とは、例えば、ファイバチャネルプロトコルに従って、ブロック単位のデータ転送を行う。コントローラ１００が各ディスクドライブ２１０にアクセスするための経路は、冗長化されている。いずれか一方のＤＫＡ１２０や通信経路に障害が発生した場合でも、コントローラ１００は、他方のＤＫＡ１２０や通信経路を用いて、ディスクドライブ２１０にアクセス可能である。同様に、ホスト２０とコントローラ１００との間の経路、外部記憶制御装置４０とコントローラ１００との間の経路も冗長化することができる。
【００８３】
ＣＨＡ１１０及びＤＫＡ１２０の動作を簡単に説明する。ＣＨＡ１１０は、ホスト２０から発行されたリードコマンドを受信すると、リードコマンドを共有メモリ１４０に記憶させる。ＤＫＡ１２０は、共有メモリ１４０を随時参照しており、未処理のリードコマンドを発見すると、ディスクドライブ２１０からデータを読み出して、キャッシュメモリ１３０に記憶させる。ＣＨＡ１１０は、キャッシュメモリ１３０に移されたデータを読み出し、ホスト２０に送信する。
【００８４】
ＣＨＡ１１０は、ホスト２０から発行されたライトコマンドを受信すると、ライトコマンドを共有メモリ１４０に記憶させる。ＣＨＡ１１０は、受信したライトデータをキャッシュメモリ１３０に記憶させる。ＣＨＡ１１０は、キャッシュメモリ１３０にライトデータを記憶させた後、ホスト２０に書込み完了を報告する。ＤＫＡ１２０は、共有メモリ１４０に記憶されたライトコマンドに従って、キャッシュメモリ１３０に記憶されたライトデータを読出し、書込み対象のボリューム２３０Ｐに対応するディスクドライブ２１０に記憶させる。
【００８５】
キャッシュメモリ１３０は、例えば、ホスト２０から受信したライトデータ等を記憶するものである。キャッシュメモリ１３０は、例えば不揮発メモリから構成される。共有メモリ１４０は、例えば不揮発メモリから構成される。共有メモリ１４０には、制御情報や管理情報等が記憶される。
【００８６】
共有メモリ１４０及びキャッシュメモリ１３０は、同一のメモリ基板上に混在して設けることができる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
【００８７】
接続制御部１５０は、各ＣＨＡ１１０と、各ＤＫＡ１２０と、キャッシュメモリ１３０及び共有メモリ１４０をそれぞれ接続させるものである。これにより、全てのＣＨＡ１１０，ＤＫＡ１２０は、キャッシュメモリ１３０及び共有メモリ１４０にそれぞれアクセス可能である。なお、接続制御部１５０は、例えばクロスバスイッチ等として構成することができる。
【００８８】
ＳＶＰ１６０は、ＬＡＮ等の内部ネットワークＣＮ４を介して、各ＣＨＡ１１０にそれぞれ接続されている。また、ＳＶＰ１６０は、ＬＡＮ等の通信ネットワークＣＮ２を介して、管理サーバ３０に接続可能である。ＳＶＰ１６０は、記憶制御装置１０内部の各種状態を収集し、管理サーバ３０に提供する。なお、ＳＶＰ１６０は、ＣＨＡ１１０及びＤＫＡ１２０の両方に接続されてもよい。ＳＶＰ１６０は、共有メモリ１４０を介して、各種のステータス情報を収集可能であるため、ＳＶＰ１６０とＣＨＡ１１０とを接続するだけでも良い。
【００８９】
コントローラ１００の構成は、上述した構成に限定されない。例えば、一つまたは複数の制御基板上に、ホスト２０との間のデータ通信を行う機能と、外部記憶制御装置４０との間のデータ通信を行う機能と、ディスクドライブ２１０との間のデータ通信を行う機能と、データを一時的に保存する機能と、構成情報等を書換可能に保存する機能とを、それぞれ設ける構成でもよい。
【００９０】
ＨＤＵ２００の構成について説明する。ＨＤＵ２００は、複数のディスクドライブ２１０を備えている。各ディスクドライブ２１０は、例えば、ハードディスクドライブ、フラッシュメモリデバイス、光ディスクドライブ、光磁気ディスクドライブ、ホログラフィックメモリデバイス等として実現される。要するに、ＨＤＵ２００は、書換可能な不揮発性の記憶装置を備えている。
【００９１】
ＲＡＩＤ構成等によっても相違するが、例えば、３個１組や４個１組等の所定数のディスクドライブ２１０によって、パリティグループ２２０が構成される。パリティグループ２２０は、パリティグループ２２０内の各ディスクドライブ２１０がそれぞれ有する物理的記憶領域を仮想化したものである。パリティグループ２２０の有する物理的記憶領域には、所定サイズまたは可変サイズの論理デバイス（LDEV：Logigal DEVice）２３０を設定できる。論理デバイス２３０は、LUN（Logical Unit Number ）に対応付けられて、ホスト２０に論理ボリュームとして提供される。以下の説明では、論理デバイス２３０を論理ボリューム２３０またはボリューム２３０と呼ぶ。
【００９２】
外部記憶制御装置４０は、記憶制御装置１０と同様に、例えば、コントローラ４１とＨＤＵ４２とを備えている。ＨＤＵ４２の有する一つまたは複数のディスクドライブを用いて、論理ボリュームが設けられる。外部記憶制御装置４０は、記憶制御装置１０から見た場合に記憶制御装置１０の外部に存在するため、外部記憶制御装置と呼ばれる。
【００９３】
外部記憶制御装置４０の有する論理ボリュームを、記憶制御装置１０内に仮想的に設けられる中間記憶デバイスにマッピングし、この中間記憶デバイス上に論理ボリューム２３０を設定することにより、記憶制御装置１０は、外部記憶制御装置４０の有する論理ボリュームを自分自身の内部に取り込んで利用することができる。
【００９４】
管理サーバ３０は、記憶制御装置１０の設定や構成等を管理する装置である。ユーザは、管理サーバ３０を介して、例えば、ＣＤＰ対象のボリュームの設定、目標保護期間の設定等を記憶制御装置１０に指示する。なお、管理サーバ３０の機能を、ホスト２０内に設ける構成でもよい。
【００９５】
図３は、ソフトウェア構成を模式的に示す説明図である。ホスト２０内には、不図示のアプリケーションプログラムの他に、例えば、管理部２１を設けることができる。管理部２１は、ＣＤＰに関する種々の設定を行うためのプログラムである。管理サーバ３０内にも、ＣＤＰに関する種々の設定を行うための管理部３１が設けられている。図３に示すように、ホスト２０及び管理サーバ３０の両方が記憶制御装置１０の設定変更等を行うことができるように構成してもよいし、いずれか一方のみが記憶制御装置１０の設定変更等を行うことができるように構成してもよい。
【００９６】
図４は、記憶制御装置１０の論理的構成を模式的に示す説明図である。記憶制御装置１０内には、複数種類のボリューム２３０Ｐ，２３０Ｂ，２３０Ｊがそれぞれ少なくとも一つ以上設けられる。これらの各ボリューム２３０Ｐ，２３０Ｂ，２３０Ｊは、それぞれディスクドライブ２１０の有する物理的記憶領域を仮想化することにより生成される。
【００９７】
正ボリューム２３０Ｐは、ＣＤＰ機能によって保護されるボリュームである。正ボリューム２３０Ｐは、ホスト２０によって使用される。基底ボリューム２３０Ｂは、正ボリューム２３０Ｐの過去の所定時点の記憶内容を維持するボリュームである。ジャーナルボリューム２３０Ｊは、正ボリューム２３０Ｐの更新時に生成されるジャーナルデータＪＤを記憶するためのボリュームである。
【００９８】
なお、ジャーナルボリューム２３０Ｊには、チェックポイントマーカ（以下、ＣＰＭ）を記憶させることもできる。ＣＰＭとは、ユーザやアプリケーションプログラムが、復元可能点を予め明示的に指示するために使用するデータである。従って、ユーザやアプリケーションプログラムは、時刻またはＣＰＭのいずれかを用いて復元点を指定することができる。ユーザは、ＣＰＭを設定する場合に、任意の情報（例えば、ラベル）をＣＰＭに付けることができる。
【００９９】
なお、ＣＰＭとジャーナルデータＪＤとを一緒に管理する場合でも、ＣＰＭに設定されているジャーナルシーケンス番号をメモリに記憶しておくことにより、速やかにＣＰＭを検索することができる。なお、設定されたＣＰＭを削除することもできる。例えば、ＣＰＭを設定可能な数に上限がある場合、ユーザは、削除対象のＣＰＭの番号を指定することにより、その指定されたＣＰＭを削除させることができる。
【０１００】
ＣＰＭに付与されるＣＰＭ番号は、ユーザによって手動で指定される場合と、記憶制御装置１０が自動的に指定する場合とがある。ユーザが手動でＣＰＭ番号を指定する場合、例えば、使用中のＣＰＭ番号の一覧を予め取得し、ユーザは、未使用のＣＰＭ番号を選択する。もしもユーザによって選択されたＣＰＭ番号が使用中の番号である場合、エラーが返される。記憶制御装置１０が自動的にＣＰＭ番号を設定する場合、例えば、未使用の番号から順番に使用される。未使用の番号が存在しない場合、エラーが返される。
【０１０１】
ＣＰＭの一覧を参照する操作の例を説明する。ユーザは、ＣＤＰグループを指定して、使用中のＣＰＭ番号の一覧を管理画面に表示させることができる。ユーザは、表示された一覧の中から所望のＣＰＭ番号を指定することにより、そのＣＰＭの詳細な情報を管理画面に表示させることができる。詳細な情報としては、例えば、ＣＰＭの設定された時刻や、ＣＰＭに付与されたラベル等を挙げることができる。なお、ユーザは、ＣＰＭの一覧の中から所望のＣＰＭを削除することもできる。
【０１０２】
本実施例では、一つまたは複数のボリューム２３０ＰをＣＤＰ対象として保護することができる。つまり、一つのボリューム２３０Ｐだけを単独で保護することもできるし、あるいは、複数のボリューム２３０Ｐをグループ化し、グループ全体として保護することもできる。例えば、互いに関連するデータを記憶する複数のボリューム２３０Ｐをグループ化し、ＣＤＰによる保護動作を同期させることができる。
【０１０３】
基底ボリューム２３０Ｂは、正ボリューム２３０Ｐに一対一で対応付けられる。これに対し、一つのジャーナルボリューム２３０Ｊは、複数の正ボリューム２３０Ｐにそれぞれ対応付けることができる。
【０１０４】
記憶制御装置１０は、複数種類の差分ビットマップＢＭ１０〜ＢＭ４０を備える。差分コピー用の差分ビットマップＢＭ１０は、リストア時に、基底ボリューム２３０Ｂから正ボリューム２３０Ｐにデータを差分コピーする場合に使用される。このＢＭ１０は、リストアコピー用差分ビットマップと呼ぶこともできる。
【０１０５】
なお、差分コピー用のＢＭ１０は、正ボリューム２３０Ｐから基底ボリューム２３０Ｂに差分データをコピーする場合にも使用することができる。さらに、正ボリューム２３０Ｐから基底ボリューム２３０Ｂにデータをコピーする際に使用する形成コピー用差分ビットマップと、基底ボリューム２３０Ｂから正ボリューム２３０Ｐにデータをコピーする際に使用するリストアコピー用差分ビットマップとを別々に用意することもできる。
【０１０６】
さらに、基底ボリューム２３０Ｂから正ボリューム２３０Ｐにデータをコピーするリストアコピーに使用する差分ビットマップと、正ボリューム２３０Ｐから基底ボリューム２３０Ｂにデータをコピーする形成／再開コピー（形成コピーまたは再開コピー）に使用する差分ビットマップとを、別々に用意することもできる。両コピーで使用する差分ビットマップをそれぞれ別々にすることにより、形成／再開コピーが終了していなくても、リストアコピーを行うことができる。つまり、形成／再開コピーとリストアコピーとを同時に実行させることができる。
【０１０７】
リストアコピーに使用する差分ビットマップは、形成コピーまたは再開コピーにより基底ボリューム２３０Ｂから正ボリューム２３０Ｐにデータコピーの完了した領域のうち、リストアのために基底ボリューム２３０Ｂから正ボリューム２３０Ｐにデータコピーが完了したか否かを判別するために使用することができる。
【０１０８】
区間差分ビットマップＢＭ２０は、予め設定される各区間毎に、正ボリューム２３０Ｐと基底ボリューム２３０Ｂとの間に生じる差分の位置をそれぞれ管理する。区間差分ビットマップＢＭ２０が使用されていた時間帯（例えば、ジャーナルシーケンス番号の範囲）を、その区間差分ビットマップＢＭ２０の属性として管理する。リカバリ中に使用される差分ビットマップＢＭ３０は、リカバリ中に発生する差分を管理するために使用される。リカバリ中であっても、ホスト２０はライト要求を発行する場合があり、このライト要求によって生じる正ボリューム２３０Ｐと基底ボリューム２３０Ｂとの間の差分は、差分ビットマップＢＭ３０により記憶される。この差分ビットマップＢＭ３０は、リカバリ中差分ビットマップと呼ぶこともできる。
【０１０９】
ＣＤＰ停止中に使用される差分ビットマップＢＭ４０は、ＣＤＰ停止中に発行されるライト要求によって発生する差分を管理するために使用される。この差分ビットマップＢＭ４０は、ＣＤＰ停止中差分ビットマップと呼ぶこともできる。
【０１１０】
図５は、ジャーナルボリューム２３０Ｊの記憶構成を模式的に示す説明図である。ジャーナルボリューム２３０Ｊの記憶領域は、管理領域とデータ領域とに大別される。管理領域には、ジャーナルデータＪＤを管理するためのデータやＣＰＭが記憶される。データ領域には、ジャーナルデータＪＤのデータ本体が記憶される。
【０１１１】
管理データ（メタデータ）としては、例えば、ボリューム番号（図中「ＶＯＬ＃」）、スタートＬＢＡ、ブロック数、シーケンス番号（図中「ＳＥＱ＃」）、時刻、データ、フラグ等を挙げることができる。
【０１１２】
「ボリューム番号」とは、正ボリューム２３０Ｐを特定するための情報である。「スタートＬＢＡ」とは、正ボリューム２３０Ｐに書き込まれるライトデータの先頭を示す論理ブロックアドレスである。「ブロック数」とは、ライトデータのデータサイズを示す情報である。「シーケンス番号」とは、ジャーナルデータＪＤに連番で設定される識別番号である。「時刻」とは、ライト要求が発行された時刻である。「データ」とは、データ本体の位置を示すポインタである。「フラグ」とは、そのジャーナルデータＪＤを有効なものとして扱うか無効として扱うかを示すための制御情報である。なお、ジャーナルデータの有効または無効を示すためのフラグに代えて、例えば、無効とするジャーナルデータのシーケンス番号を別に管理する方法でもよい。この場合、管理領域内の管理データ（メタデータ）を書き換える必要がないので、処理負荷を軽減することができる。
【０１１３】
フラグの値が有効に設定されているジャーナルデータＪＤは、目標保護期間を経過した後で、基底ボリューム２３０Ｂに書き込まれる。フラグの値が無効に設定されているジャーナルデータＪＤは、目標保護期間を経過した後でも、基底ボリューム２３０Ｂに書き込まれない。即ち、無効なジャーナルデータＪＤは、格上げ処理の対象外となる。格上げ処理とは、ジャーナルデータをボリュームに書き込んで、そのボリュームの記憶内容をアップデートさせる処理である。
【０１１４】
なお、ＣＰＭは、ジャーナルデータＪＤを管理する管理データと一緒に管理することもできるし、別のテーブルで管理することもできる。
【０１１５】
図６は、区間差分ビットマップＢＭ２０の使用方法を示す説明図である。例えば、「１時間」等のような、予め設定される所定の区間毎に、それぞれ一つずつの差分ビットマップＢＭ２０が使用される。
【０１１６】
図６に示す例では、「9:00-10:00」の区間でＢＭ２０（09:00-10:00）が、「10:00-11:00」の区間でＢＭ２０（10:00-11:00）が、「11:00-12:00」の区間でＢＭ２０（11:00-12:00）が、「12:00-13:00」の区間でＢＭ２０（12:00-13:00）が、「13:00-」の区間でＢＭ２０（13:00-）が、それぞれ使用されている。
【０１１７】
目標保護期間が「３時間」に設定される場合、現在時刻から３時間を経過したジャーナルデータＪＤは、基底ボリューム２３０Ｂに書き込まれる。基底ボリューム２３０Ｂに書き込まれたジャーナルデータＪＤは、破棄される。なお、本実施例では、経過時間に応じて格上げ処理を行う場合を説明しているが、これに代えて、上述のように、ジャーナルボリューム２３０Ｊの使用率に応じて格上げ処理を行うこともできる。
【０１１８】
差分ビットマップＢＭ２０（09:00-10:00）で管理されている全てのジャーナルデータＪＤ（09:01-09:55）が、基底ボリューム２３０Ｂに書き込まれて破棄された場合、その差分ビットマップＢＭ２０（09:00-10:00）は、不要となる。この不要となる差分ビットマップＢＭ２０を、空きビットマップと呼ぶことがある。従って、差分ビットマップＢＭ２０（09:00-10:00）の記憶内容は消去され、別の新たな区間（14:00-15:00）を管理するための差分ビットマップＢＭ２０として再利用される。
【０１１９】
なお、通常運用中に目標保護期間ＴＰＴを変更することも可能である。例えば、通常運用中に目標保護期間が延長された場合、延長された時間分のジャーナルデータＪＤがジャーナルボリューム２３０Ｊに蓄積されるまで、格上げ処理は停止される。格上げ処理が停止される期間中、空きビットマップ（自分の管理下にある全てのジャーナルデータが格上げ処理された差分ビットマップＢＭ２０である）は生じない。また、目標保護期間の延長により、区間差分ビットマップＢＭ２０を切り替えるタイミングも変化する。
【０１２０】
そこで、第１の方法として、空きビットマップが生じるまで、現在使用中の区間差分ビットマップＢＭ２０を使用し続ける方法がある。
【０１２１】
第２の方法として、最も古い区間差分ビットマップＢＭ２０を２つ選択し、この選択された各区間差分ビットマップＢＭ２０をマージして一つの区間差分ビットマップＢＭ２０にまとめることにより、空きビットマップを一つ生成する方法がある。
【０１２２】
第３の方法として、目標保護期間ＴＰＴの延長の度合に応じて、所定個数ずつの区間差分ビットマップＢＭ２０を１つの差分ビットマップＢＭ２０にまとめることにより、空きビットマップを得る方法がある。例えば、目標保護期間ＴＰＴが２倍になった場合（ＴＰＴ＝２×ＴＰＴ）、２面ずつの区間差分ビットマップＢＭ２０をマージして１つにまとめ、目標保護期間ＴＰＴが３倍になった場合（ＴＰＴ＝３×ＴＰＴ）、３面ずつの区間差分ビットマップＢＭ２０をマージして１つにまとめる。目標保護期間ＴＰＴが１．５倍になった場合（ＴＰＴ＝１．５×ＴＰＴ）、３面の区間差分ビットマップＢＭ２０のうち２面の区間差分ビットマップＢＭ２０をマージして１つにまとめ、残りの区間差分ビットマップＢＭ２０はそのままとする。
【０１２３】
ここで、区間差分ビットマップＢＭ２０は、区間の数よりも２つ多い数だけ用意するのが好ましい。つまり、ｎ個の区間に分けて差分を管理する場合、差分ビットマップＢＭ２０の総数は、ｎ＋２個に設定されるのが好ましい。最古の差分ビットマップＢＭ２０を消去して再利用するには、幾らかの処理時間を必要とするためである。差分ビットマップＢＭ２０の切替タイミングに発行されるライト要求を確実に管理するために、区間数よりも２つだけ多い数の差分ビットマップＢＭ２０を用意するのが好ましい。
【０１２４】
図６に点線で示すように、基底ボリューム２３０Ｂには、差分ビットマップＢＭ２０（09:00-10:00）で管理される区間内のジャーナルデータＪＤ（09:01-09:55）が全て書き込まれる。これにより、基底ボリューム２３０Ｂの記憶内容は、「09:55」の時点における正ボリューム２３０Ｐの記憶内容に一致する。その後、時間が進んで「13:05」になると、その３時間前である「10:05」までのジャーナルデータＪＤが、基底ボリューム２３０Ｂに書き込まれる。これにより、基底ボリューム２３０Ｂの記憶内容は、正ボリューム２３０Ｐの「10:05」における記憶内容に一致する。
【０１２５】
このように、基底ボリューム２３０Ｂの記憶内容は、対応する正ボリューム２３０Ｐの記憶内容に、目標保護時間分だけ遅れて追従する。即ち、基底ボリューム２３０Ｂが示す記憶内容の時刻（この時刻を基底点と呼ぶ）は、実時間の進行につれてシフトする。基底点は、正ボリューム２３０Ｐの記憶内容を復元可能な期間の始点を示している。ＣＤＰ機能だけでは、基底点より過去に遡って正ボリューム２３０Ｐの記憶内容を復元させることはできない。なお、基底ボリューム２３０ＢへのジャーナルデータＪＤの書込みを停止させると、基底点のシフトも停止する。
【０１２６】
図７は、記憶制御装置１０により実行される制御モードを示す説明図である。記憶制御装置１０は、後述のように、例えば、ＣＤＰ形成及びＣＤＰ削除モード（Ｓ１１）と、リカバリモード（Ｓ１２）と、ＣＤＰ停止及びＣＤＰ再開モード（Ｓ１３）とを備える。ここで、後述のＳ１６は「第１制御モード」に、Ｓ１８，Ｓ１９，Ｓ２０，Ｓ２１は「第２制御モード」に、Ｓ２３は「第３制御モード」に、それぞれ対応する。
【０１２７】
ＣＤＰ形成及びＣＤＰ削除モード（Ｓ１１）の概要を説明する。詳細は図８と共に後述する。ＣＤＰ形成及びＣＤＰ削除モード（Ｓ１１）は、初期状態（Ｓ１４）から始まり、ＣＤＰを形成して（Ｓ１５）、通常運用処理を行う（Ｓ１６）。
【０１２８】
ＣＤＰを形成するとは、ＣＤＰにより保護される正ボリューム２３０Ｐを指定し、この保護対象の正ボリューム２３０Ｐに記憶されているデータを基底ボリューム２３０Ｂにコピー等する処理を意味する。即ち、Ｓ１５は、ＣＤＰ機能を利用するための環境を整える処理である。
【０１２９】
通常運用処理（Ｓ１６）では、ホスト２０からライト要求が発行される度にジャーナルデータＪＤを生成して、ジャーナルボリューム２３０Ｊに記憶させる。そして、通常運用処理（Ｓ１６）では、目標保護期間を経過したジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込むことにより、基底ボリューム２３０Ｂの記憶内容を更新させ、基底点をシフトさせる。
【０１３０】
ＣＤＰ機能を解除する場合、ＣＤＰ削除処理（Ｓ１７）が実行される。ＣＤＰ削除処理（Ｓ１７）では、正ボリューム２３０Ｐに設定されていた「ＣＤＰによる保護対象」という属性を解除し、通常のボリュームに戻す。その正ボリューム２３０Ｐとコピーペアを形成していた基底ボリューム２３０Ｂも、通常のボリュームに戻される。また、ＣＤＰ削除処理（Ｓ１７）では、ＣＤＰが解除された正ボリューム２３０Ｐに関するジャーナルデータＪＤを破棄する。
【０１３１】
なお、一つのジャーナルボリューム２３０Ｊによって複数の正ボリューム２３０Ｐの更新履歴を管理することもできる。この場合、一つの正ボリューム２３０Ｐに関するＣＤＰが削除されても、ジャーナルボリューム２３０Ｊ内のジャーナルデータＪＤを破棄することはできない。この場合、削除されたＣＤＰに関連するジャーナルデータＪＤは、破棄せずに無効化する。即ち、削除されたＣＤＰに関するジャーナルデータＪＤを無効なものとして取り扱う。ジャーナルデータＪＤが無効であるか否かは、管理データ中のフラグを用いて管理してもよいし、ジャーナルデータのシーケンス番号で管理してもよい。
【０１３２】
例えば、複数のジャーナルボリューム２３０Ｊに跨って設けられるジャーナル領域を複数の正ボリューム２３０Ｐが共用しており、異なる正ボリューム２３０Ｐの更新履歴がランダムにジャーナルボリューム２３０Ｊに書き込まれているような場合、その中の一つの正ボリューム２３０Ｐに関するＣＤＰを削除しても、その削除されたＣＤＰに関するジャーナルデータＪＤは破棄することができない。ジャーナル領域内に各正ボリューム２３０Ｐに関するジャーナルデータＪＤが混在しているためである。従って、この場合、その削除されたＣＤＰに関するジャーナルデータＪＤは、無効化する。
【０１３３】
これに対し、ジャーナルボリューム２３０Ｐと正ボリューム２３０Ｐとが一対一で対応しているような場合、その正ボリューム２３０Ｐに関するＣＤＰが削除されたときは、その正ボリューム２３０Ｐに対応付けられているジャーナルボリューム２３０Ｊは、未使用ボリュームに戻される。
【０１３４】
リカバリモード（Ｓ１２）を説明する。通常運用処理（Ｓ１６）の実行中に、何らかの障害が発生すると、この障害は、ユーザまたはアプリケーションプログラムに認識され、障害調査が行われる（Ｓ１８）。障害を回避すべく、ユーザは、テンポラリリストア（Ｓ１９）及びリカバリ（Ｓ２０）を少なくとも一回ずつ実行する。
【０１３５】
テンポラリリストア（Ｓ１９）とは、ＣＤＰによる保護対象である正ボリューム２３０Ｐの記憶内容を、ユーザの指定する復元点の記憶内容に一時的に戻す処理である。リカバリ（Ｓ２０）とは、復元された正ボリューム２３０Ｐにfsck等のような処理を実施することにより、アプリケーションプログラムが利用可能な状態にするための処理である。
【０１３６】
リカバリが正常に完了したことが確認された場合、ユーザは、コンプリートリストア（Ｓ２１）の実行を指示する。コンプリートリストア（Ｓ２１）とは、リカバリされた記憶内容を確定させるための処理である。そして、コンプリートリストア（Ｓ２１）の終了後に、通常運用処理（Ｓ１６）に移行する。
【０１３７】
なお、テンポラリリストア及びリストアを介さずに、直接コンプリートリストアすることもできる。この場合、テンポラリリストアの完了時に復元点以降のジャーナルデータＪＤを無効化し、リストア後に生じる更新位置をリストア中差分ビットマップＢＭ３０ではなく、区間差分ビットマップＢＭ２０によって管理する。
【０１３８】
テンポラリリストアを取り消すこともできる。テンポラリリストアを取り消すためのコマンドが発行された場合、例えば、テンポラリリストアを開始した時点（ライト要求の受付が禁止された時点である）まで再度テンポラリリストアして、次にコンプリートリストアを実行する。これにより、いったん指示したテンポラリリストアを取り消して、テンポラリリストアの実行を指示するための状態に戻すことができる。
【０１３９】
テンポラリリストアをやり直す場合に用いる差分コピー用の差分ビットマップＢＭ１０は、基底点からテンポラリリストアをやり直す前の復元点までの各区間差分ビットマップＢＭ２０と、リカバリ中差分ビットマップＢＭ３０とをマージすることにより、得ることができる。
【０１４０】
ＣＤＰ停止及びＣＤＰ再開モード（Ｓ１３）を説明する。ＣＤＰ停止及びＣＤＰ再開モード（Ｓ１３）は、ＣＤＰ機能の実行に何らかの障害が発生した場合に実施される。例えば、ホスト２０が正ボリューム２３０Ｐへライトアクセスする頻度が大きく、ジャーナルボリューム２３０Ｊが満杯になった場合に、ＣＤＰ停止及びＣＤＰ再開モード（Ｓ１３）が実行される。
【０１４１】
ＣＤＰ停止処理（Ｓ２３）では、ホスト２０が正ボリューム２３０Ｐにライトアクセスした場合でも、ジャーナルデータＪＤの新規生成を中止し、かつ、ジャーナルボリューム２３０Ｊに蓄積されているジャーナルデータＪＤの基底ボリューム２３０Ｂへの書込み処理（格上げ処理）を停止させる。その後、Ｓ１８〜Ｓ２１で述べたと同様に、障害調査（Ｓ２４）、テンポラリリストア（Ｓ２５）、リカバリ（Ｓ２６）及びコンプリートリストア（Ｓ２７）が実行される。障害が回復すると、ユーザは、ＣＤＰを再開させることができる（Ｓ２２）。ＣＤＰ再開処理（Ｓ２２）では、再開が指示された時点における正ボリューム２３０Ｐの記憶内容を基底ボリューム２３０Ｂにコピーし、ＣＤＰ停止前に蓄積された過去のジャーナルデータＪＤは破棄される。
【０１４２】
なお、ＣＤＰ停止処理（Ｓ２３）と格上げ処理の停止とは、必ずしも連動して行われる必要はない。ＣＤＰの停止とは無関係に格上げ処理のみを停止させることもできる。また、ＣＤＰを停止する場合でも、格上げ処理を停止させる必要がない場合もある。
【０１４３】
ＣＤＰ停止後にリカバリすることなく、ＣＤＰを再開させることもできる。障害発生時にリカバリを行えばよい。
【０１４４】
図８は、ＣＤＰ形成及びＣＤＰ削除モード（Ｓ１１）の処理の流れを模式的に示す説明図である。図８（１）に示す初期状態では、ＣＤＰ機能は作動しておらず、ホスト２０は通常のボリューム２３０にアクセスしている（Ｓ３１）。
【０１４５】
図８（２）に示すＣＤＰ形成状態では、通常のボリューム２３０の属性をＣＤＰにより保護される正ボリューム２３０Ｐに、別の通常ボリューム２３０の属性を基底ボリューム２３０Ｂに、それぞれ変更する。
【０１４６】
記憶制御装置１０は、正ボリューム２３０Ｐの記憶内容を基底ボリューム２３０Ｂに全てコピーする（Ｓ３２）。これにより、基底ボリューム２３０Ｂの記憶内容は、ＣＤＰ開始時の時刻における正ボリューム２３０Ｐの記憶内容に一致する。基底点は、ＣＤＰ開始時刻（図８の例では「09:00」）となる。記憶制御装置１０は、ホスト２０によって正ボリューム２３０Ｐが更新されると、ジャーナルデータＪＤを生成してジャーナルボリューム２３０Ｊに記憶させる（Ｓ３３）。なお、正ボリューム２３０Ｐから基底ボリューム２３０Ｂへのコピー中において、ホスト２０が、正ボリューム２３０Ｐから基底ボリューム２３０Ｂへのコピーが完了していない未コピー領域にデータを書き込もうとした場合、その未コピー領域に記憶されているデータを正ボリューム２３０Ｐから基底ボリューム２３０Ｂにコピーさせてから、ホスト２０からのライト要求を受け付ける。
【０１４７】
図８（３）に示す通常運用状態では、記憶制御装置１０は、ジャーナルボリューム２３０Ｊに記憶されている各ジャーナルデータＪＤのうち、目標保護期間を経過したジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込む。即ち、目標保護期間を経過したジャーナルデータＪＤは、基底ボリューム２３０Ｂに反映され、基底点が変更される。基底ボリューム２３０Ｂに書き込まれたジャーナルデータＪＤは、破棄される。
【０１４８】
ＣＤＰでは、ホスト２０からライト要求が発行される度に自動的にジャーナルデータＪＤが生成されて蓄積される。従って、ユーザは、ライト要求の発行単位で（ジャーナルデータ単位で）、正ボリューム２３０Ｐの記憶内容を復元可能である。さらに、ユーザまたはアプリケーションプログラムは、ＣＰＭの挿入を明示的に指示することにより、任意の復元可能点を予め用意させることもできる（Ｓ３５）。有効なＣＰＭが存在する場合、ユーザまたはアプリケーションプログラムは、その有効なＣＰＭを指定することにより、正ボリューム２３０Ｐの記憶内容を所望の時点まで回復させることができる。
【０１４９】
なお、通常運用状態では、所定の区間毎にそれぞれ一つの差分ビットマップＢＭ２０が、正ボリューム２３０Ｐと基底ボリューム２３０Ｂとの間の差分を管理する。
【０１５０】
図８（４）に示すＣＤＰ削除状態では、記憶制御装置１０は、ＣＤＰによる保護対象に設定されていた正ボリューム２３０Ｐを通常ボリューム２３０に（Ｓ３６）、基底ボリューム２３０Ｂを通常ボリューム２３０に（Ｓ３８）、それぞれ変更する。また、記憶制御装置１０は、ジャーナルボリューム２３０Ｊに記憶されているジャーナルデータＪＤを、無効化する（Ｓ３７）。これにより、初期状態に戻る。
【０１５１】
ジャーナルデータＪＤを無効化するとは、通常ボリューム２３０に変更される正ボリューム２３０Ｐに関して取得されたジャーナルデータＪＤを、無効なジャーナルデータとして扱うことを意味する。無効化されたジャーナルデータＪＤは、格上げ処理の対象外として扱われる。ジャーナルデータが有効であるか否かは、ジャーナルデータＪＤを管理するためのデータ中に含まれるフラグによって示される。一つのジャーナルボリューム２３０Ｊが複数の正ボリューム２３０Ｐに対応付けられている場合、各正ボリューム２３０Ｐに関するジャーナルデータＪＤがジャーナルボリューム２３０Ｊに混在している。このように、ある時点以降のジャーナルデータＪＤを単純に破棄することができない場合、ジャーナルデータＪＤを破棄する代わりに無効化する。
【０１５２】
図９は、リカバリモード（Ｓ１２）の処理の流れを模式的に示す説明図である。図９（１）に示す通常運用中に何らかの障害が発生すると、この障害はユーザまたはアプリケーションプログラムによって検出される。
【０１５３】
通常運用状態から図９（２）に示すテンポラリリストア状態に移行する。テンポラリリストア状態に移行するに際して、ホスト２０による正ボリューム２３０Ｐへのアクセスが禁止される（Ｓ４１）。記憶制御装置１０は、目標保護期間を経過したジャーナルデータＪＤが存在する場合であっても、そのジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込む処理を停止させる（Ｓ４２）。即ち、記憶制御装置１０は、ジャーナルデータＪＤの格上げを停止し、現在の基底点を維持する。図９では、現在の基底点は「10:00」となっている。
【０１５４】
記憶制御装置１０は、差分コピー用の差分ビットマップＢＭ１０を用いて、基底ボリューム２３０Ｂの記憶内容を正ボリューム２３０Ｐに差分コピーする（Ｓ４３）。これにより、正ボリューム２３０Ｐの記憶内容は、基底ボリューム２３０Ｂで維持されていた基底点まで復帰する。
【０１５５】
記憶制御装置１０は、ジャーナルボリューム２３０Ｊに記憶されているジャーナルデータＪＤのうち、指定された復元点までの各ジャーナルデータＪＤを順番に読み出して、正ボリューム２３０Ｐに書き込む（Ｓ４４）。これにより、正ボリューム２３０Ｐの記憶内容は、指定された復元点まで復帰する。図９では、復元点として「12:30」が指定された様子を示す。
【０１５６】
図９（３）に示すリカバリ状態では、ホスト２０による正ボリューム２３０Ｐへのライトアクセスの禁止が解除され（Ｓ４５）、ホスト２０からリカバリ内容を確認するためのデータが記憶制御装置１０に入力される。記憶制御装置１０は、リカバリ後に発行されるライトデータに基づいてジャーナルデータＪＤを生成し、このジャーナルデータＪＤをジャーナルボリューム２３０Ｊに記憶させる（Ｓ４６）。
【０１５７】
ホスト２０からのライトアクセス禁止が解除されることにより、正ボリューム２３０Ｐの記憶内容及びジャーナルボリューム２３０Ｊの記憶内容は、それぞれ更新される。図９（３）において、リカバリ直後の正ボリューム２３０Ｐの記憶内容は、「12:30」の時点に復帰しているが、実時間は「13:30」である。
【０１５８】
さらに、リカバリ後のライトアクセスによって、正ボリューム２３０Ｐの記憶内容は、「12:30」の時点の記憶内容から多少変化する。この変化を、図９（３）では「12':30’」として示している。かっこ内の値は実時間である。
【０１５９】
ジャーナルボリューム２３０Ｊは、最初「10:00-13:00」の期間内に生成されたジャーナルデータＪＤが蓄積されている。リカバリ後のライトアクセスによって、ジャーナルボリューム２３０Ｊには、既存のジャーナルデータ（10:00-13:00）に加えて、リカバリ後に生成されるジャーナルデータ（12:30-12':30'）も蓄積される。
【０１６０】
図９（４）に示すように、リカバリ内容に不満のあるユーザは、別の復元点を指定して、再度テンポラリリストアを実行させることもできる。再度のテンポラリリストアでは、図９（２）で述べたテンポラリリストアと同様に、ホスト２０による正ボリューム２３０Ｐへのアクセスを禁止させ（Ｓ４７）、図９（３）で取得されたリカバリ後のジャーナルデータＪＤ（12:30-12':30'）を破棄する（Ｓ４８）。そして、記憶制御装置１０は、基底ボリューム２３０Ｂから正ボリューム２３０Ｐに、両ボリューム２３０Ｐ，２３０Ｂ間の差分をコピーする（Ｓ４９）。記憶制御装置１０は、正ボリューム２３０Ｐの記憶内容が再指定された復元点（12:10）の記憶内容に一致するまで、ジャーナルデータＪＤを正ボリューム２３０Ｐに書き込んでいく（Ｓ５０）。
【０１６１】
なお、１つのジャーナルボリューム２３０Ｊが複数の正ボリューム２３０Ｐに対応付けられており、かつ、その中の一つの正ボリューム２３０Ｐについてリストアされる場合は、テンポラリリストアをやり直すときにジャーナルデータＪＤを破棄できない。この場合は、ジャーナルデータＪＤを無効化する。ジャーナルボリューム２３０Ｊと正ボリューム２３０Ｐとが一対一で対応している場合や、グループ単位で一括してリストアを実行する場合には、ジャーナルデータＪＤを破棄することができる。
【０１６２】
例えば、複数のジャーナルボリューム２３０Ｊに跨って設けられるジャーナル領域を複数の正ボリューム２３０Ｐが共用しており、異なる正ボリューム２３０Ｐの更新履歴がランダムにジャーナルボリューム２３０Ｊに書き込まれているような場合、その中の一つの正ボリューム２３０Ｐに関してリストアを行う場合、そのリストアされる正ボリューム２３０Ｐに関するジャーナルデータＪＤは破棄することができない。ジャーナル領域内に各正ボリューム２３０Ｐに関するジャーナルデータＪＤが混在しているためである。従って、この場合、そのリストアされる正ボリューム２３０Ｐに関するジャーナルデータＪＤは、無効化する。
【０１６３】
ユーザは、図９（３）に示すリカバリと図９（４）に示す再度のテンポラリリストアとを複数回繰り返すことができる。これにより、ユーザは、所望の時点を検出する。そして、所望の時点を発見したユーザは、記憶制御装置１０にコンプリートリストアの実行を指示する。図９では、「12:30」が所望の時点として選択されたものとする。
【０１６４】
図９（５）に示すコンプリートリストアでは、リカバリされた記憶内容が確定され、ホスト２０からのアクセス禁止が解除される（Ｓ５１）。図９（５）では、正ボリューム２３０Ｐの記憶内容は、「13:45」の時点の内容に変化している。現在時刻よりも目標保護期間だけ前のジャーナルデータ（図９（５）の例では、「10:00-10:45」までのジャーナルデータ）ＪＤは、基底ボリューム２３０Ｂに書き込まれ、その後破棄される（Ｓ５２）。なお、格上げ処理の再開とコンプリートリストアとを別々に行うこともできる。つまり、例えば、コンプリートリストアの実行後に直ちに格上げ処理を再開すると、保護期間が短縮されるため、格上げ処理の再開を遅らせる場合もある
【０１６５】
ジャーナルボリューム２３０Ｊに保存されるジャーナルデータＪＤの範囲は、「10:00-13:00，12:00-12':30'」から「10:45-12:30，13:30-13:45」に変化する（Ｓ５３）。リカバリ確認によって生成されたジャーナルデータ（12:30-12':30'）は、コンプリートリストアの実行に際して破棄される。リカバリ前に蓄積されていたジャーナルデータ（10:00-13:00）のうち、確定された復元点（12:30）以降のジャーナルデータ（12:30-13:00）も、コンプリートリストアの実行によって破棄される。
【０１６６】
従って、ジャーナルボリューム２３０Ｊには、「10:45-12:30」の範囲のジャーナルデータＪＤと、「13:30-13:45」の範囲のジャーナルデータＪＤとがそれぞれ記憶される。つまり、コンプリートリストアの実行によって、ＣＤＰで復元可能な期間は、リカバリ前から存在する第１期間（10:45-12:30）と、リカバリ後に発生する第２期間（13:30-13:45）との２つの期間に分断される。
【０１６７】
コンプリートリストアの完了後は、図９（６）に示す通常運用状態に移行する。通常運用状態では、上述のように、記憶制御装置１０は、ホスト２０から正ボリューム２３０Ｐへのライトアクセス（Ｓ５５）に基づいてジャーナルデータＪＤを生成し、生成したジャーナルデータＪＤをジャーナルボリューム２３０Ｊに記憶させる（Ｓ５６）。記憶制御装置１０は、ジャーナルボリューム２３０Ｊ内に、目標保護期間分のジャーナルデータＪＤを記憶させ（Ｓ５７）、目標保護期間を経過したジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込む（Ｓ５８）。基底ボリューム２３０Ｂに反映されたジャーナルデータＪＤは、破棄される。
【０１６８】
図１０は、図７中のＣＤＰ停止（Ｓ２３）及びＣＤＰ再開（Ｓ２２）の処理の流れを模式的に示す説明図である。図１０（１）に示す通常運用中に、例えば、ジャーナルボリューム２３０ＪがジャーナルデータＪＤで満杯になったものと仮定する。なお、ジャーナルボリューム２３０Ｊが満杯になる場合のほかに、ユーザの指示によってＣＤＰが停止される場合もある。例えば、正ボリューム２３０Ｐの性能低下を避ける場合や、正ボリューム２３０Ｐのフォーマット時に保護不要なライトデータが多量に発生するような場合、ユーザは、ＣＤＰを停止させることができる。
【０１６９】
ジャーナルボリューム２３０Ｊが満杯になった場合、図１０（２）に示すＣＤＰ停止状態に移行する。ＣＤＰ停止状態においても、ホスト２０は正ボリューム２３０Ｐにアクセスして書き込むことができる（Ｓ６１）。しかし、記憶制御装置１０は、ジャーナルデータＪＤを生成しない。記憶制御装置１０は、基底ボリューム２３０Ｂへのジャーナルデータの書込み処理を停止し（Ｓ６２）、ジャーナルボリューム２３０Ｊに記憶されているジャーナルデータＪＤをそのまま保持する（Ｓ６３）。
【０１７０】
ＣＤＰの再開が指示されると、図９（３）に示すＣＤＰ再開状態に移行する。記憶制御装置１０は、正ボリューム２３０Ｐの記憶内容を基底ボリューム２３０Ｂに全てコピーし（Ｓ６４）、基底点をＣＤＰ再開が指示された時刻に変更する。記憶制御装置１０は、ホスト２０から正ボリューム２３０Ｐへのライトアクセス（Ｓ６５）に基づいて、ジャーナルデータＪＤを生成し、生成したジャーナルデータＪＤをジャーナルボリューム２３０Ｊに記憶させる（Ｓ６６）。記憶制御装置１０は、ＣＤＰ再開前に記憶されていた古いジャーナルデータＪＤを全て破棄し、ＣＤＰ再開後に取得されたジャーナルデータＪＤのみをジャーナルボリューム２３０Ｊに保存させる（Ｓ６７）。
【０１７１】
図１１は、図７中のＣＤＰ停止後におけるリカバリ処理（Ｓ２３〜Ｓ２７）の流れを模式的に示す説明図である。図１１（１）に示すＣＤＰ停止状態では、上述のように、ジャーナルデータＪＤの取得及び保存は停止されており（Ｓ８１）、かつ、既に蓄積されているジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込む処理も停止されている（Ｓ８２）。
【０１７２】
ＣＤＰ停止状態において、何らかの障害が発生した場合、ユーザは、図１１（２）に示すように、テンポラリリストアを実行させる。テンポラリリストアの実行に先立って、ホスト２０による正ボリューム２３０Ｐへのアクセスは停止される（Ｓ８３）。記憶制御装置１０は、差分コピー用の差分ビットマップＢＭ１０を用いて、基底ボリューム２３０Ｂの記憶内容と正ボリューム２３０Ｐの記憶内容との差分を、基底ボリューム２３０Ｂから正ボリューム２３０Ｐにコピーさせる（Ｓ８４）。続いて、記憶制御装置１０は、正ボリューム２３０Ｐの記憶内容が指定された復元点の記憶内容になるまで、ジャーナルデータＪＤを正ボリューム２３０Ｐに書き込む（Ｓ８５）。
【０１７３】
図１１（３）に示すリカバリ状態では、ホスト２０による正ボリューム２３０Ｐへのアクセス禁止が解除される（Ｓ８６）。記憶制御装置１０は、リカバリ後に発行されるライトデータの書込み位置（更新位置）を、ＣＤＰ停止中の差分ビットマップＢＭ４０を用いて管理する（Ｓ８６）。
【０１７４】
なお、ＣＤＰ停止後のテンポラリリストアによって差分コピー用差分ビットマップＢＭ１０を作成した後は、いったんＣＤＰ停止中の差分ビットマップＢＭ４０の記憶内容を消去する。即ち、差分ビットマップＢＭ４０において更新位置を示すために「１」がセットされた箇所を、「０」に戻す。そして、テンポラリリストア後のリカバリにおいて、差分ビットマップＢＭ４０を再使用する。
【０１７５】
図１１（４）に示すコンプリートリストアでは、リカバリされた記憶内容が確定され、ホスト２０からのアクセスはそのまま継続される（Ｓ８７）。記憶制御装置１０は、確定された復元点以降のジャーナルデータＪＤを無効化する（Ｓ８８）。そして、図１１（５）に示すＣＤＰ停止状態に移行し、ホスト２０によって更新された位置を差分ビットマップＢＭ４０を用いて管理する。
【０１７６】
図１２〜図１８に基づいて、ＣＤＰによって保護される期間の変化を説明する。図１２は、ＣＤＰによる保護の開始から通常運用状態に移行するまでの保護期間の変化を示す説明図である。図１２〜図１８において、ジャーナルデータＪＤの蓄積状態を斜線部で示し、削除されたジャーナルデータＪＤの範囲を黒く塗りつぶして示す。つまり、図中の斜線部は、ジャーナルデータＪＤによって回復可能な保護期間ＰＴを示す。
【０１７７】
初期状態では、正ボリューム２３０Ｐ及び基底ボリューム２３０Ｂはいずれも設定されておらず、ＣＤＰによる保護は行われていない。ＣＤＰ形成の指示が与えられると、正ボリューム２３０Ｐ及び基底ボリューム２３０Ｂがそれぞれ設定され、ＣＤＰ形成が指示された時刻ｔｄ１における正ボリューム２３０Ｐの記憶内容を基底ボリューム２３０Ｂにコピーするための形成コピーが開始される。
【０１７８】
形成コピー中に、ホスト２０は、正ボリューム２３０Ｐを対象とするライト要求を発行できる。上述の通り、形成コピー中に、正ボリューム２３０Ｐから基底ボリューム２３０Ｂへのコピーが完了していない未コピー領域についてライト要求が発行された場合、例えば、一つの方法として、未コピー領域に記憶されているデータを基底ボリューム２３０Ｂにコピーした後で、そのライト要求を受け付ける。記憶制御装置１０は、ライト要求に基づいてジャーナルデータＪＤを生成し、ジャーナルボリューム２３０Ｊに記憶させる。形成コピーの完了時刻ｔｄ２において、ジャーナルボリューム２３０Ｊには、ＣＤＰ形成時刻ｔｄ１から形成コピー完了時刻ｔｄ２までの間に発行されたライト要求に関するジャーナルデータＪＤが保存される。従って、この場合の保護期間ＰＴ１は、ｔｄ１からｔｄ２までの期間となる。保護期間ＰＴ１は、未だ目標保護期間ＴＰＴに達していない。
【０１７９】
形成コピー完了後、記憶制御装置１０は通常運用状態１に移行する。ここで、通常運用状態の時間変化を分かり易く示すために、「通常運用１」、「通常運用２」、「通常運用３」のように、時間の経過に応じて番号を添えている。
【０１８０】
通常運用１では、ジャーナルボリューム２３０Ｊには、ｔｄ１からｔｄ３までに発行されたライト要求に関するジャーナルデータＪＤが保存される。この場合の保護期間ＰＴ２は、ｔｄ１からｔｄ３までの期間である。保護期間ＰＴ２は、未だ目標保護期間ＴＰＴに達していない。
【０１８１】
通常運用２では、ｔｄ１からｔｄ４までに発行されたライト要求に関するジャーナルデータＪＤがジャーナルボリューム２３０Ｊに保存されている。この場合の保護期間ＰＴ３は、ｔｄ１からｔｄ４までの期間である。保護期間ＰＴ３は、目標保護期間ＴＰＴに一致したものとする。
【０１８２】
さらに時刻の進んだ通常運用３では、目標保護期間ＴＰＴを経過したジャーナルデータＪＤは、基底ボリューム２３０Ｂに書き込まれ、そして破棄される。即ち、最新のデータ時刻ｔｄ５から目標保護期間ＴＰＴだけ前の時刻以前の範囲に蓄積されたジャーナルデータＪＤ（Δｔｄａ＝（ｔｄ５−ＴＰＴ）−ｔｄ１）は、基底ボリューム２３０Ｂに順番に書き込まれていく。基底ボリューム２３０Ｂに書き込まれたジャーナルデータＪＤは、破棄される。ジャーナルボリューム２３０Ｊには、目標保護期間ＴＰＴ分のジャーナルデータＪＤが蓄積されているため、ユーザまたはアプリケーションプログラムは、現在時刻ｔｄ５から目標保護期間ＴＰＴだけ前の時刻の範囲内で、任意の時刻を復元点として指定することができる。
【０１８３】
図１３は、コンプリートリストア後に保護期間が分断される様子を示す。図１３の最上段に示すように、通常運用状態において何らかの障害が発生し、その障害発生がユーザまたはアプリケーションプログラムに認識されたと仮定する。
【０１８４】
ジャーナルボリューム２３０Ｊには、最古時刻ｔｄ９から最新時刻ｔｄ１１までの期間内に発行されたライト要求に関するジャーナルデータＪＤが保存されている。障害発生が認識された場合、テンポラリリストアの実行に先立って、ホスト２０から正ボリューム２３０Ｐへのアクセスは停止され、かつ、ジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込む処理も停止される。
【０１８５】
なお、必要に応じて、テンポラリリストアの実行の有無とは別に、ジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込む処理のみを停止させることもできる。例えば、図７中のＳ１８に示す障害調査を実行する前に、格上げ処理を停止させるのが好ましい。格上げ処理を停止しない場合、障害を調査している間に保護期間が短縮されてしまうためである。従って、障害調査を開始する前に、格上げ処理を停止して保護期間が短縮されるのを防止する方が望ましい。但し、例えば、目標保護期間が十分長く設定されているような場合は、障害調査の開始前に格上げ処理を停止させる必要はない。
【０１８６】
時刻ｔｄ１１を復元点としてテンポラリリストアの実行が指示される。各区間差分ビットマップＢＭ２０をマージして差分コピー用差分ビットマップＢＭ１０が生成され、この差分ビットマップＢＭ１０を用いて、基底ボリューム２３０Ｂから正ボリューム２３０Ｐにデータが差分コピーされる。その後、最古時刻ｔｄ９から復元点ｔｄ１１までの間のジャーナルデータＪＤが基底ボリューム２３０Ｂに順番に書き込まれ、テンポラリリストアが完了する。
【０１８７】
時刻ｔｄ１２においてテンポラリリストアが完了し、リカバリされた記憶内容を確認するためのコマンドやデータがホスト２０から発行される。記憶制御装置１０は、テンポラリリストア後にホスト２０から発行されたライトデータに関するジャーナルデータＪＤを生成し、ジャーナルボリューム２３０Ｊに記憶させる。
【０１８８】
復元点ｔｄ１１のテンポラリリストアによるリカバリ内容に不満のある、ユーザやアプリケーションプログラムは、別の時刻ｔｄ１３を復元点として２度目のテンポラリリストアの実行を指示する。時刻ｔｄ１４において、２度目のテンポラリリストアの実行が指示されると、１度目のテンポラリリストア後に蓄積されていたジャーナルデータＪＤ（ｔｄ１２−ｔｄ１４の範囲内のジャーナルデータＪＤ）は、破棄される。
【０１８９】
２度目のテンポラリリストアが完了すると、ユーザまたはアプリケーションプログラムは、リカバリされた記憶内容を確認する。リカバリ後の時刻ｔｄ１５以降に、ホスト２０から発行されたライトデータに関してジャーナルデータＪＤが生成され、ジャーナルボリューム２３０Ｊに記憶される。
【０１９０】
ユーザまたはアプリケーションプログラムが２度目のテンポラリリストアの結果に満足した場合、ｔｄ１７において、コンプリートリストアの実行が指示される。コンプリートリストアの実行が指示されることにより、正ボリューム２３０Ｐの記憶内容は、復元点ｔｄ１３における記憶内容に確定される。記憶制御装置１０は、確定された復元点ｔｄ１３以降に蓄積された連続するジャーナルデータＪＤを全て破棄する。即ち、図示の例では、ｔｄ１３からｔｄ１０までの期間内のジャーナルデータＪＤが全て破棄される。
【０１９１】
記憶制御装置１０は、現在時刻ｔｄ１７から目標保護期間ＴＰＴだけ前の時刻ｔｄ１６以前に蓄積されたジャーナルデータＪＤは、順番に基底ボリューム２３０Ｂに書き込まれて破棄される。即ち、目標保護期間ＴＰＴを外れた範囲（ｔｄ１６−ｔｄ１０の範囲）のジャーナルデータＪＤは、格上げ処理された後で破棄される。
【０１９２】
コンプリートリストアの完了後に通常運用が開始される。通常運用では、ｔｄ１５以降に発行されるライト要求に関するジャーナルデータＪＤがジャーナルボリューム２３０Ｊに蓄積されていく。その一方、目標保護期間ＴＰＴを過ぎたジャーナルデータＪＤ（ｔｄ１８−ｔｄ１６）は、順番に基底ボリューム２３０Ｂに書き込まれて破棄される。
【０１９３】
ここで注目すべき点は、コンプリートリストアの実行によって、ＣＤＰによる保護期間ＰＴが２つに分断されるという点である。保護期間ＰＴは、より古い期間である第１期間（ｔｄ１６−ｔｄ１３）と、より新しい期間である第２期間（ｔｄ１５−ｔｄ１７）とに分割される。
【０１９４】
コンプリートリストアの実行後に、復元点ｔｄ１３以前のジャーナルデータＪＤ（ｔｄ１６−ｔｄ１３の範囲のジャーナルデータＪＤ）を、直ちに基底ボリューム２３０Ｂに書き込んで破棄するという構成も可能である。つまり、第１期間（ｔｄ１６−ｔｄ１３）内のジャーナルデータＪＤについて直ちに格上げ処理を実施し、基底点をｔｄ１６からｔｄ１３に進めることも可能である。
【０１９５】
しかし、本実施例のように、コンプリートリストアの復元点ｔｄ１３以前のジャーナルデータＪＤを保持しておくことにより、ユーザは、コンプリートリストアの実行後においても、ｔｄ１３以前の時刻へのリカバリを指示することができ、ユーザの使い勝手が向上する。
【０１９６】
複数の正ボリューム２３０ＰがＣＤＰグループとしてグループ化されている場合、２つの方法のいずれかでリカバリさせることができる。第１方法は、グループ単位でリストア制御を実施する方法である。第１方法では、ＣＤＰグループ内の全ての正ボリューム２３０Ｐについて、各保護期間ＰＴがそれぞれ一致するように、同期して制御する。
【０１９７】
第１方法では、ＣＤＰグループ内の全ての正ボリューム２３０Ｐは、同一時刻の記憶内容に復元され、かつ、ジャーナルデータＪＤの格上げ処理の停止及び再開も同時に実施される。第１方法の場合、ＣＤＰグループ内の全ての正ボリューム２３０Ｐの保護期間ＰＴは、図１３で説明したように遷移する。
【０１９８】
第２方法は、ボリューム単位でリストア制御を実施する方法である。第２方法では、ＣＤＰグループ内の各正ボリューム２３０Ｐは、それぞれ個別にテンポラリリストア及びコンプリートリストアを行うことができる。なお、ＣＤＰグループ内の複数の正ボリューム２３０Ｐについて、ボリューム単位のリストア制御を行うこともできる。
【０１９９】
ところで、ＣＤＰグループ内のある正ボリューム２３０Ｐについて、テンポラリリストアを行う場合、コンプリートリストアについて説明したのと同様に、リカバリ処理中のジャーナルデータＪＤを破棄することはできない。従って、そのジャーナルデータＪＤは、無効化される。
【０２００】
第２方法の場合、ＣＤＰグループ内の一方の正ボリューム２３０Ｐについて図１３に示すようなリストアが実施された場合、同一ＣＤＰグループ内の他方の正ボリューム２３０Ｐについては、図１４に示す制御が実施される。ここでは、説明の便宜上、一方の正ボリューム２３０Ｐ及び基底ボリューム２３０Ｂには（１）を添え、他方の正ボリューム２３０Ｐ及び基底ボリューム２３０Ｂには（２）を添える。
【０２０１】
図１３で述べたように、一方の正ボリューム２３０Ｐ（１）についてテンポラリリストアの実行が指示されると、一方の基底ボリューム２３０Ｂ（１）へのジャーナルデータＪＤの書込みは停止され、一方の基底点は一時的に固定される。これと同時に、他方の基底ボリューム２３０Ｂ（２）へのジャーナルデータＪＤの書込みも停止され、他方の基底点も一時的に固定される。
【０２０２】
その後、一方の正ボリューム２３０Ｐ（１）のコンプリートリストアが完了すると、一方の基底点の進行が再開される。これと同時に、他方の基底ボリューム２３０Ｂ（２）の基底点についても進行が再開される。
【０２０３】
ここで、正ボリューム２３０Ｐに物理的な障害が発生した場合の処理を説明する。この場合、まず最初に、故障したディスクドライブ２１０を正常なディスクドライブ２１０と交換する。そして、ディスクドライブ交換後の１回目のテンポラリリストアでは、基底ボリューム２３０Ｂから正ボリューム２３０Ｐに全データをコピーし、さらに、ジャーナルデータＪＤを正ボリューム２３０Ｐに書き込む。２回目のテンポラリリストアからは、上述の通り、複数の区間差分ビットマップＢＭ２０をマージして差分コピー用の差分ビットマップＢＭ１０を生成し、この差分ビットマップＢＭ１０を用いて差分コピーを行うことにより、テンポラリリストアを実行する。
【０２０４】
なお、正ボリューム２３０Ｐとは別のボリュームにリストアすることもできる。例えば、１回目のテンポラリリストアでは、基底ボリューム２３０Ｂの全データを別ボリュームにコピーした後、ジャーナルデータＪＤを別ボリュームに書き込む。２回目のテンポラリリストアでは、上述した通り、区間差分ビットマップＢＭ２０をマージして得られる差分コピー用の差分ビットマップＢＭ１０を用いて差分コピーを行うことにより、テンポラリリストアを実行する。
【０２０５】
それぞれ保護期間の異なる複数の正ボリューム２３０ＰからＣＤＰグループが構成されている場合、幾つかの方法でリストアを管理することができる。例えば、第１の方法では、ＣＤＰグループ内の各正ボリューム２３０Ｐの保護期間が重なっている時点のみ、復元可能とする。第２の方法では、指定された復元点が保護期間に含まれている正ボリューム２３０Ｐのみ、復元させる。第３の方法では、指定された復元点が保護期間に含まれている正ボリューム２３０Ｐのみ、その指定された復元点に復元し、指定された復元点が保護期間に含まれていない他の正ボリューム２３０Ｐについては、それぞれの保護期間内で最も指定された復元点に近い時点に復元させる。
【０２０６】
ここで、ＣＤＰグループ内の一部の正ボリューム２３０Ｐについて、ＣＤＰを停止したり、ＣＤＰを再開したりする場合について説明する。ＣＤＰグループ内のボリューム単位でＣＤＰを停止させる場合、停止対象の正ボリューム２３０Ｐに関するジャーナルデータＪＤの取得のみを停止させる。ＣＤＰグループ内のボリューム単位でＣＤＰを再開させる場合、再開対象の正ボリューム２３０Ｐに関して過去に取得されたジャーナルデータＪＤのみを無効化し、さらに、差分コピー等を行う。ＣＤＰグループ内のボリューム単位でＣＤＰを削除する場合、削除対象の正ボリューム２３０Ｐに関するジャーナルデータＪＤのみを無効化する。なお、ジャーナルデータＪＤを破棄可能な場合、そのジャーナルデータＪＤを無効化せずに破棄することもできる。
【０２０７】
図１５は、ＣＤＰを停止させた後でＣＤＰを再開させる場合の、保護期間ＰＴの変化を示す説明図である。時刻ｔｄ２１において、ＣＤＰの停止が指示されると、新規のジャーナルデータＪＤの生成は停止される。
【０２０８】
ＣＤＰ停止の指示が発行された時点で、目標保護期間ＴＰＴから外れた古いジャーナルデータＪＤ（ｔｄ２２−ｔｄ２０の期間内のジャーナルデータ）は、基底ボリューム２３０Ｂに書き込む必要はない。つまり、ジャーナルデータの取得停止とジャーナルデータの格上げ停止とは、同時に実行する必要はない。
【０２０９】
ＣＤＰ停止中は、ジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込む処理は、停止される。そして、時刻ｔｄ２５において、ＣＤＰ再開が指示されると、ジャーナルボリューム２３０Ｊに蓄積されていたジャーナルデータは全て破棄される。同時に、時刻ｔｄ２５以降に生じる新たなジャーナルデータＪＤの蓄積が開始される。
【０２１０】
時刻ｔｄ２６において、ＣＤＰを再開させるための、基底ボリューム２３０Ｂから正ボリューム２３０Ｐへの形成コピーが完了し、通常運用状態に移行する。以後、ジャーナルボリューム２３０Ｊには、目標保護期間ＴＰＴ分のジャーナルデータＪＤが次第に蓄積されていく。
【０２１１】
なお、ＣＤＰグループ内の一部の正ボリューム２３０Ｐについてのみ、ＣＤＰの停止、ＣＤＰの再開及びＣＤＰの削除を行うことができる。
【０２１２】
図１６は、ジャーナルボリューム２３０Ｊが満杯状態となるのを抑制するための、連続格上げ処理の様子を示す説明図である。連続格上げ処理とは、目標保護期間ＴＰＴから外れたジャーナルデータＪＤに加えて、目標保護期間ＴＰＴ内のジャーナルデータＪＤも基底ボリューム２３０Ｂに書込んで破棄させる処理である。連続格上げ処理は、ジャーナルボリューム２３０Ｊの使用率ＵＪが連続格上げ処理の開始閾値Ｔｈ１に達した場合（ＵＪ＝Ｔｈ１）に開始される。
【０２１３】
図１６の最上段に示すように、通常運用状態において、ジャーナルボリューム２３０Ｊには、時刻ｔｄ３０から最新時刻ｔｄ３１までに発行されたライト要求に関するジャーナルデータＪＤが保存されている。即ち、目標保護期間ＴＰＴは、ｔｄ３０からｔｄ３１までの期間である。
【０２１４】
次の段に示すように、ジャーナルボリューム２３０Ｊの使用率ＵＪが開始閾値Ｔｈ１に達したと仮定する。目標保護期間ＴＰＴを外れた範囲のジャーナルデータＪＤ（ｔｄ３２−ｔｄ３０）は、通常通り、基底ボリューム２３０Ｂに書き込まれて破棄される。
【０２１５】
さらに次の段に示すように、連続格上げ処理が開始されると、目標保護期間ＴＰＴから外れたジャーナルデータＪＤ及び目標保護期間ＴＰＴ内のジャーナルデータＪＤの一部が、それぞれ基底ボリューム２３０Ｂに書き込まれて破棄される。図１６では、時刻ｔｄ１６までのジャーナルデータＪＤが基底ボリューム２３０Ｂに書き込まれて破棄される様子が示されている。
【０２１６】
連続格上げ処理を開始することにより、ジャーナルボリューム２３０Ｊが満杯になる時期を遅らせることができる。しかし、例えば、ホスト２０が正ボリューム２３０Ｐを短時間で多量に更新したような場合、ジャーナルボリューム２３０ＪはジャーナルデータＪＤで満杯となる。
【０２１７】
ジャーナルボリューム２３０Ｊが満杯になった場合（ＵＪ＝１００％）、次の段に示すように、連続格上げ処理は停止される。従って、目標保護期間ＴＰＴに含まれる時刻ｔｄ３４以降のジャーナルデータＪＤは、基底ボリューム２３０Ｂに書き込まれない。
【０２１８】
ジャーナルボリューム２３０Ｊが満杯になると、ＣＤＰは停止される。その後、ユーザまたはアプリケーションプログラムからＣＤＰ再開が明示的に指示された場合、ＣＤＰが再開される。ＣＤＰ停止及びＣＤＰ再開に関する保護期間ＰＴの変化は、図１５で述べたので省略する。
【０２１９】
図１７は、連続格上げ処理を実行した場合の、別の変化を示す説明図である。図１６では、連続格上げ処理を実行することにより、目標保護期間ＴＰＴ内のジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込んで破棄することができた。
【０２２０】
しかし、ホスト２０による正ボリューム２３０Ｐの更新量（ライト要求の発行頻度）が多い場合、図１７に示すように、連続格上げ処理を実施しても、目標保護期間ＴＰＴ内のジャーナルデータＪＤを書き込むことができない可能性がある。この場合は、結果的に、目標保護期間ＴＰＴよりも実際の保護期間ＰＴの方が長くなる。
【０２２１】
図１８は、流入制限処理を実行した場合の保護期間ＰＴの変化を示す説明図である。流入制限処理とは、ホスト２０による正ボリューム２３０Ｐへの書込みを制限させる処理である。流入制限処理は、ジャーナルボリューム２３０Ｊの使用率ＵＪが流入制限処理の開始閾値Ｔｈ２に達した場合（ＵＪ＝Ｔｈ２）に開始される。
【０２２２】
図１８の上から２番目の段に示すように、使用率ＵＪが閾値Ｔｈ１に達すると（ＵＪ＝Ｔｈ１）、まず最初に、上述の連続格上げ処理が開始される。これにより、次の段に示すように、目標保護期間ＴＰＴ内の時刻ｔｄ４０までのジャーナルデータが基底ボリューム２３０Ｂに書き込まれて破棄される。しかし、ホスト２０からの多量のライト要求発行が停止せず、使用率ＵＪが閾値Ｔｈ２に達すると（ＵＪ＝Ｔｈ２）、流入制限処理が開始される。
【０２２３】
次の段に示すように、流入制限処理が開始されると、ホスト２０から発行されるライト要求の量（即ち、流入量）とジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込んで破棄する処理（即ち、格上げ処理）の処理量とがバランスする点で、保護期間ＰＴが定まる。
【０２２４】
記憶制御装置１０は、ホスト２０から発行されるライト要求の量を抑制しつつ、ジャーナルボリューム２３０Ｊ内のジャーナルデータＪＤの格上げ処理を実行する。そして、使用率ＵＪが連続格上げ処理を停止させるための閾値Ｔｈ３まで低下すると（ＵＪ＝Ｔｈ３）、連続格上げ処理は停止され、通常運用状態に移行する。通常運用状態に移行した直後は、目標保護期間ＴＰＴよりも実際の保護期間ＰＴの方が短い（ＴＰＴ＞ＰＴ）。連続格上げ処理の実施によって、目標保護期間ＴＰＴ内のジャーナルデータＪＤについても格上げ処理を行ったためである。以後、目標保護期間ＴＰＴと保護期間ＰＴとが一致するまで、ジャーナルデータＪＤがジャーナルボリューム２３０Ｊに蓄積されていく。
【０２２５】
なお、流入制限を行わず、連続格上げ処理のみを実行した場合でも、保護期間が図１８に示すような変化を見せる場合がある。
【０２２６】
図１９〜図２２のフローチャートに基づいて、記憶制御装置１０の動作の一部を別の観点から説明する。以下の各フローチャートは、処理の概要を示しており、実際のコンピュータプログラムとは相違する場合がある。また、いわゆる当業者であれば、フローチャート中のステップを別のステップに変更したり、削除等することができるであろう。
【０２２７】
図１９は、通常運用状態の処理を示すフローチャートである。記憶制御装置１０は、ホスト２０からライトデータを受領すると（S100:YES）、ライトデータを正ボリューム２３０Ｐに書込む（Ｓ１０１）。
【０２２８】
記憶制御装置１０は、受信したライトデータに関するジャーナルデータＪＤを生成し（Ｓ１０２）、このジャーナルデータＪＤをジャーナルボリューム２３０Ｊに記憶させる（Ｓ１０３）。一方、ホスト２０からＣＰＭが発行された場合（S100:NO，S104:YES）、記憶制御装置１０は、ＣＰＭをジャーナルボリューム２３０Ｊに記憶させる（Ｓ１０５）。
【０２２９】
記憶制御装置１０は、ジャーナルボリューム２３０Ｊに記憶されている各ジャーナルデータＪＤに設定されている時刻情報と現在時刻とを比較することにより、目標保護期間ＴＰＴを過ぎたジャーナルデータＪＤが存在するか否か、つまり、目標保護期間ＴＰＴから外れたジャーナルデータＪＤが存在するか否かを判定する（Ｓ１０６）。
【０２３０】
目標保護期間ＴＰＴから外れたジャーナルデータＪＤが存在する場合（S106:YES）、記憶制御装置１０は、目標保護期間ＴＰＴから外れたジャーナルデータＪＤを基底ボリューム２３０Ｂに書込み、書き込んだ後で破棄する（Ｓ１０７）。
【０２３１】
図２０は、区間差分ビットマップＢＭ２０を切替ながら使用する処理を示すフローチャートである。記憶制御装置１０は、ホスト２０からライトデータを受領したか否かを判定する（Ｓ１１０）。つまり、記憶制御装置１０は、ホスト２０からライト要求が発行されたか否かを監視している（Ｓ１１０）。
【０２３２】
ライトデータを受領した場合（S110:YES）、記憶制御装置１０は、現在使用中の差分ビットマップＢＭ２０に、そのライトデータの書込み位置を記憶させる（Ｓ１１１）。即ち、記憶制御装置１０は、そのライトデータによって更新される論理トラックに対応する差分ビットに「１」を設定する。
【０２３３】
記憶制御装置１０は、差分ビットマップＢＭ２０を切り替える時期が到来したか否かを判定する（Ｓ１１２）。例えば、区間を所定時間として定義している場合、記憶制御装置１０は、所定時間が経過したか否かを判定する。これに代えて、例えば、ジャーナルボリューム２３０Ｊの使用率ＵＪで区間を定義している場合、記憶制御装置１０は、所定の使用率に達したか否かを判定する。
【０２３４】
切替時期が到来したと判定された場合（S112:YES）、記憶制御装置１０は、次の差分ビットマップＢＭ２０に切り替えて、ホスト２０による正ボリューム２３０Ｐの更新を管理する（Ｓ１１３）。
【０２３５】
記憶制御装置１０は、使用済の各差分ビットマップＢＭ２０について、その管理下にあるジャーナルデータＪＤが全て基底ボリューム２３０Ｂに書き込まれた差分ビットマップＢＭ２０が存在するか否かを判定する（Ｓ１１４）。つまり、記憶制御装置１０は、使用済差分ビットマップＢＭ２０に対応付けられている全てのジャーナルデータＪＤについて格上げ処理が完了している使用済差分ビットマップＢＭ２０が存在するか否かを判定する（Ｓ１１４）。
【０２３６】
対応する全てのジャーナルデータＪＤが基底ボリューム２３０Ｂに書き込まれて破棄されている、使用済の差分ビットマップＢＭ２０が検出された場合（S114:YES）、記憶制御装置１０は、その使用済の差分ビットマップＢＭ２０の記憶内容を消去し（Ｓ１１５）、その差分ビットマップＢＭ２０を次の区間での差分管理に使用する。
【０２３７】
図２１は、リカバリ処理を示すフローチャートである。テンポラリリストアの実行に先立って、ホスト２０から正ボリューム２３０Ｐへのアクセスが禁止される（Ｓ１２０）。このホストアクセスの禁止は、ユーザまたはアプリケーションプログラムによって実行させることができる。
【０２３８】
記憶制御装置１０は、目標保護期間ＴＰＴを外れたジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込んでから破棄する処理（格上げ処理）を停止する（Ｓ１２１）。これにより、基底ボリューム２３０Ｂの示す基底点は固定され、進行を停止する。
【０２３９】
記憶制御装置１０は、選択可能な保護期間ＰＴ及び設定済のＣＰＭについて、ホスト２０に通知する（Ｓ１２２）。ホスト２０は、この通知された情報に基づいて、テンポラリリストアさせる復元点を選択する。
【０２４０】
記憶制御装置１０は、各区間差分ビットマップＢＭ２０をマージして、差分コピー用の差分ビットマップＢＭ１０を生成する（Ｓ１２３）。即ち、記憶制御装置１０は、各区間差分ビットマップＢＭ２０の論理和を求めることにより、差分コピー用の差分ビットマップＢＭ１０を生成する。記憶制御装置１０は、この差分ビットマップＢＭ１０を用いて、基底ボリューム２３０Ｂと正ボリューム２３０Ｐとの間の差分データのみを、基底ボリューム２３０Ｂから正ボリューム２３０Ｐにコピーさせる（Ｓ１２４）。これにより、正ボリューム２３０Ｐの記憶内容は、基底ボリューム２３０Ｂの記憶内容に一致する。
【０２４１】
記憶制御装置１０は、ジャーナルボリューム２３０Ｊに記憶されている各ジャーナルデータＪＤのうち、最古のジャーナルデータから指定された復元点のジャーナルデータまでを順番に読み出して、正ボリューム２３０Ｐに書き込む（Ｓ１２５）。
【０２４２】
記憶制御装置１０は、差分コピー用の差分ビットマップＢＭ１０からリカバリ中差分ビットマップＢＭ３０に切り替える（Ｓ１２６）。ホスト２０による正ボリューム２３０Ｐへのアクセス禁止が解除されると、ホスト２０による正ボリューム２３０Ｐの更新位置を差分ビットマップＢＭ３０で管理する。また、記憶制御装置１０は、ホスト２０から発行されたライト要求に関するジャーナルデータＪＤを生成し、ジャーナルボリューム２３０Ｊに記憶させる（Ｓ１２７）。
【０２４３】
再度のテンポラリリストアの実行が指示された場合（S128:YES）、記憶制御装置１０は、最初のリカバリ後に蓄積されたジャーナルデータＪＤを破棄する（Ｓ１２９）。そして、記憶制御装置１０は、各区間差分ビットマップＢＭ２０及びリカバリ中差分ビットマップＢＭ３０をマージして、差分コピー用の差分ビットマップＢＭ１０を改めて生成する（Ｓ１３０）。ユーザまたはアプリケーションプログラムは、テンポラリリストアによって復元された記憶内容に満足するまで、Ｓ１２４〜Ｓ１３０のステップを繰り返し実行させることができる。
【０２４４】
テンポラリリストアによってリカバリされた記憶内容をユーザまたはアプリケーションプログラムが承認し、コンプリートリストアの実行が指示された場合（S128:NO，S131:YES）、記憶制御装置１０は、確定された復元点から「I/O停止点」までのジャーナルデータＪＤを無効化または破棄する（Ｓ１３２）。「I/O停止点」までのジャーナルデータＪＤとは、Ｓ１２０で停止されるホスト２０からのライト要求について生成されたジャーナルデータＪＤである。
【０２４５】
記憶制御装置１０は、Ｓ１２６で使用を開始したリカバリ中差分ビットマップＢＭ３０を区間差分ビットマップＢＭ２０として使用する（Ｓ１３３）。そして、記憶制御装置１０は、Ｓ１３２で無効化または破棄されたジャーナルデータＪＤに対応付けられている区間差分ビットマップＢＭ２０を破棄する（Ｓ１３４）。なお、Ｓ１３４等では、便宜上、「破棄する」ものとして述べるが、区間差分ビットマップＢＭ２０の記憶内容を消去する行為も含む。つまり、Ｓ１３４では、不要となった各区間差分ビットマップＢＭ２０を破棄し、再利用に備える。記憶制御装置１０は、無効化または破棄されたジャーナルデータＪＤの範囲内に含まれるＣＰＭを破棄する（Ｓ１３５）。
【０２４６】
記憶制御装置１０は、ジャーナルデータＪＤの格上げ処理を再開し（Ｓ１３６）、通常運用状態へ移行する（Ｓ１３７）。
【０２４７】
図２２は、ジャーナルボリューム２３０Ｊの使用率を管理する処理を示すフローチャートである。記憶制御装置１０は、ジャーナルボリューム２３０Ｊの使用率ＵＪを取得し（Ｓ１４０）、使用率ＵＪが連続格上げ処理の開始閾値Ｔｈ１に達したか否かを判定する（Ｓ１４１）。使用率ＵＪが開始閾値Ｔｈ１に達した場合（S141:YES）、記憶制御装置１０は、上述の連続格上げ処理を実行する（Ｓ１４２）。
【０２４８】
記憶制御装置１０は、使用率ＵＪが流入制限処理の開始閾値Ｔｈ２に達したか否かを判定する（Ｓ１４３）。使用率ＵＪが流入制限処理の開始閾値Ｔｈ２に達した場合（S143:YES）、流入制限処理の実行についてユーザまたはアプリケーションプログラムの許可を得られているか否かが判定される（Ｓ１４４）。流入制限処理を行うと、アプリケーションプログラムの処理時間が長くなる。従って、ユーザまたはアプリケーションプログラムによる事前の許可を得てから流入制限処理を開始するのが好ましい。
【０２４９】
流入制限処理の開始について許可を得た場合（S144:YES）、記憶制御装置１０は、ホスト２０から正ボリューム２３０Ｐに書き込まれるライトデータの量を制限し、ジャーナルデータＪＤの生成量を抑制する（Ｓ１４５）。正ボリューム２３０Ｐに流入するライトデータの量を制限する方法としては、例えば、ホスト２０から発行されたライト要求に対する応答を遅延させる方法が挙げられる。
【０２５０】
記憶制御装置１０は、使用率ＵＪが連続格上げ処理を停止させるための閾値Ｔｈ３に達したか否かを判定する（Ｓ１４６）。使用率ＵＪが停止閾値Ｔｈ３に達したと判定された場合（S146:YES）、記憶制御装置１０は、連続格上げ処理を停止し（Ｓ１４７）、Ｓ１４０に戻る。
【０２５１】
使用率ＵＪが停止閾値Ｔｈ３に達していないと判定された場合（S146:NO）、記憶制御装置１０は、使用率ＵＪが１００％に達したか否かを判定する（Ｓ１４８）。使用率ＵＪが１００％に達していない場合（S148:NO）、Ｓ１４０に戻る。使用率ＵＪが１００％に達した場合（S148:YES）、記憶制御装置１０は、ＣＤＰを停止させる（Ｓ１４９）。
【０２５２】
図２３は、ＣＤＰ機能を設定するための画面例を示す説明図である。ＣＤＰ設定画面は、例えば、ホスト２０や管理サーバ３０の端末画面に表示させることができる。ＣＤＰ設定画面には、例えば、ＣＤＰグループ指定部Ｇ１１と、正ボリューム指定部Ｇ１２と、基底ボリュームＧ１３と、ジャーナルボリューム指定部Ｇ１４と、目標保護期間指定部Ｇ１５と、流入制限指定部Ｇ１６と、確定ボタンＢ１１及び取消ボタンＢ１２とを含めることができる。
【０２５３】
なお、図２３に示す要素以外に、例えば、ジャーナルボリューム２３０Ｊを登録するための指定部、ジャーナルボリューム２３０Ｊを削除するための指定部、ＣＤＰグループ単位で一括してテンポラリリストアまたはコンプリートリストアを実行させるための指定部、ボリューム単位でテンポラリリストアまたはコンプリートリストアを実行させるための指定部、テンポラリリストアを取り消すための指定部、テンポラリリストアを介さずに直接コンプリートリストアを実行させるための指定部、ＣＰＭを設定するための指定部等を設けることができる。なお、ここでは、ＧＵＩ（Graphical User Interface）を用いる場合を説明するが、コマンドラインによって各種指示を与えることもできる。
【０２５４】
ジャーナルボリューム登録操作の例を説明する。ユーザは、ＣＤＰグループを指定し、指定したボリュームをジャーナルボリュームとして追加登録することができる。
【０２５５】
ジャーナルボリューム削除操作の例を説明する。ユーザがＣＤＰグループを指定すると、そのＣＤＰグループ内のジャーナルボリュームの一覧が表示される。ユーザによって指定されたジャーナルボリュームは、そのＣＤＰグループから外される。
【０２５６】
ＣＤＰグループ内の複数の正ボリュームによってジャーナルボリュームを共用している場合、ジャーナルデータの破棄は、ＣＤＰグループ単位でしか行うことができない。従って、「目標保護期間」は、ＣＤＰグループの属性となる。
【０２５７】
ＣＤＰグループ指定部Ｇ１１は、ＣＤＰグループを指定するためのものである。正ボリューム指定部Ｇ１２は、ＣＤＰによる保護対象となる正ボリューム２３０Ｐを指定するためのものである。基底ボリューム指定部Ｇ１３は、基底ボリューム２３０Ｂを指定するためのものである。ジャーナルボリューム指定部Ｇ１４は、Ｇ１２で指定された正ボリューム２３０Ｐに関するジャーナルデータＪＤを格納するための、ジャーナルボリューム２３０Ｊを指定するためのものである。目標保護期間指定部Ｇ１５は、目標保護期間ＴＰＴの値を指定するためのものである。流入制限指定部Ｇ１６は、流入制限処理の可否、流入制限を許可する場合の開始閾値Ｔｈ２の値をそれぞれ指定するためのものである。
【０２５８】
なお、既存のＣＤＰグループを指定して、ＣＤＰによる保護対象となる正ボリューム２３０Ｐを新たに設定する場合は、ジャーナルボリューム２３０Ｊを改めて指定する必要はない。ＣＤＰグループを設定するときに、ジャーナルボリューム２３０Ｊを指定済だからである。
【０２５９】
図２４は、リカバリ設定を行うための画面例を示す説明図である。このリカバリ設定画面には、ＣＤＰ設定画面と同様に、例えば、ホスト２０や管理サーバ３０の端末画面に表示される。
【０２６０】
リカバリ設定画面には、例えば、ＣＤＰグループ指定部Ｇ２１と、正ボリューム指定部Ｇ２２と、復元可能点表示部Ｇ２３と、復元点指定部Ｇ２４と、ボタンＢ２１〜Ｂ２３とを含めることができる。なお、これら以外に、グループ単位でリカバリするか、ボリューム単位でリカバリするか等を指定するための指定部を備えることもできる。
【０２６１】
ＣＤＰグループ指定部Ｇ２１は、リカバリ対象の正ボリューム２３０Ｐが含まれているＣＤＰグループを指定するものである。正ボリューム指定部Ｇ２２は、リカバリ対象の正ボリューム２３０Ｐを指定するためのものである。復元可能点表示部Ｇ２３は、復元可能な期間やＣＰＭを表示させるものである。この表示部Ｇ２３には、ジャーナルデータＪＤで保護されている一つまたは複数の期間やＣＰＭが表示される。復元点指定部Ｇ２４は、リカバリ可能な期間またはＣＰＭから選択される復元点を指定するものである。なお、ボタンＢ２１は、テンポラリリストアの実行を指示するものである。ボタンＢ２２は、コンプリートリストアの実行を指示するものである。
【０２６２】
本実施例は、上述のように構成されるため、以下の効果を奏する。本実施例では、通常運用時には、目標保護期間ＴＰＴを経過したジャーナルデータＪＤを基底ボリューム２３０Ｂに書き込むことにより、基底ボリューム２３０Ｂの記憶内容を正ボリューム２３０Ｐから目標保護期間だけ遅れた記憶内容として、遷移させることができる。
【０２６３】
従って、本実施例では、リストア可能な期間の始点である基底点を、現在時刻から一定時間だけ遅らせて追従させることができる。そして、基底ボリューム２３０Ｂに書き込まれたジャーナルデータＪＤは破棄されるため、ジャーナルボリューム２３０ＪがジャーナルデータＪＤで満杯になる可能性を低減することができる。
【０２６４】
本実施例では、予め設定される複数の区間毎にそれぞれ別々の差分ビットマップＢＭ２０を割り当てて、正ボリューム２３０Ｐと基底ボリューム２３０Ｂとの間の差分を各区間毎に管理する。従って、差分ビットマップＢＭ２０に対応付けられる全てのジャーナルデータＪＤが基底ボリューム２３０Ｂに書き込まれた後で、その差分ビットマップＢＭ２０の記憶内容を消去して、再利用できる。これにより、不要な差分ビットマップＢＭ２０が記憶制御装置１０のメモリ領域に記憶されたままになるのを防止し、記憶制御装置１０のメモリ領域を効率的に使用できる。
【０２６５】
さらに、本実施例では、各区間差分ビットマップＢＭ２０をマージして差分コピー用の差分ビットマップＢＭ１０を生成し、リストア時には、基底ボリューム２３０Ｂから正ボリューム２３０Ｐに差分コピーする構成である。これにより、基底ボリューム２３０Ｂから正ボリューム２３０Ｐにコピーするデータ量を少なくすることができ、リカバリ時間を短縮することができる。
【０２６６】
本実施例では、ユーザは、複数回のリカバリを実行させることができるため、使い勝手が向上する。さらに、本実施例では、リカバリが複数回実施された場合でも、後日利用可能なジャーナルデータＪＤを破棄せずに残しておくため、ユーザの選択可能な復元点の範囲を広げることができ、より一層使い勝手が向上する。
【実施例２】
【０２６７】
図２５に基づいて本発明の第２実施例を説明する。本実施例を含む下記の各実施例は、前記第１実施例の変形例に該当する。図２５は、本実施例による記憶制御装置１０により実行される、ライト処理を示すフローチャートである。本実施例では、正ボリューム２３０Ｐへのライトデータの書込と、差分ビットの設定及びジャーナルデータの作成とを、同期させる。
【０２６８】
記憶制御装置１０は、ホスト２０からライトコマンドを受領すると（Ｓ２００）、そのライトコマンドで書込みの要求されたボリュームが、ＣＤＰによる保護対象のボリュームであるか否かを判定する（Ｓ２０１）。ＣＤＰによる保護対象ボリュームについてのライトコマンドではない場合（S201:NO）、記憶制御装置１０は、通常の書込み処理を行う（Ｓ２０２）。
【０２６９】
Ｓ２００で受領したライトコマンドがＣＤＰによる保護対象ボリュームへの書込みを要求するものである場合（S201:YES）、記憶制御装置１０は、書込み対象のボリュームに関する状態を取得する（Ｓ２０３）。記憶制御装置１０は、書込み対象のボリュームの状態が「ライト禁止」であるか否かを判定する（Ｓ２０４）。ライト禁止とは、そのボリュームへの書込みが禁止されている状態であることを意味する。書込み対象のボリュームがライト禁止状態の場合（S204:YES）、記憶制御装置１０は、ホスト２０にエラー応答を送信する（Ｓ２１５）。
【０２７０】
書込み対象ボリュームがライト禁止状態ではない場合（S204:NO）、記憶制御装置１０は、差分ビットマップＢＭ２０の切替時期が到来したか否かを判定する（Ｓ２０５）。切替時期が到来した場合（S205:YES）、記憶制御装置１０は、差分ビットマップＢＭ２０を別の差分ビットマップＢＭ２０に切り替え、ジャーナルデータ量の値を０にリセットする（Ｓ２０６）。差分ビットマップＢＭ２０の切替時期ではない場合（S205:NO）、Ｓ２０６はスキップされてＳ２０７に移る。
【０２７１】
記憶制御装置１０は、Ｓ２００で受領したライトコマンドで要求された書込み位置に対応する差分ビットを、オンに設定する（Ｓ２０７）。次に、記憶制御装置１０は、ジャーナルデータを取得するか否かを判定し（Ｓ２０８）、ジャーナルデータを取得すると判定した場合（S208:YES）、流入制限を実行するか否かを判定する（Ｓ２０９）。流入制限を行う場合（S209:YES）、記憶制御装置１０は、予め設定された所定時間だけ待機する（Ｓ２１０）。
【０２７２】
所定時間待機した後、記憶制御装置１０は、現在時刻及びシーケンス番号（Seq#）を取得し、ジャーナル管理情報及びジャーナルデータをそれぞれ作成し、これらジャーナル管理情報及びジャーナルデータをジャーナルボリュームに記憶させる（Ｓ２１１）。なお、流入制限を行わない場合（S209:NO）、記憶制御装置１０は、Ｓ２１０をスキップしてＳ２１１を実行する。
【０２７３】
記憶制御装置１０は、ジャーナルボリュームに蓄積されたジャーナルデータ量を更新する（Ｓ２１２）。なお、記憶制御装置１０は、差分ビットマップＢＭ２０を切り替る場合、差分ビットマップＢＭ２０を別の差分ビットマップＢＭ２０に切り替えた後で、ジャーナルデータ量を更新する。
【０２７４】
記憶制御装置１０は、ホスト２０から受領したライトデータを正ボリューム２３０Ｐに書込み（Ｓ２１３）、ホスト２０にライトコマンドの処理が完了した旨を報告する（Ｓ２１４）。なお、書込み対象のボリュームの状態が「ライト禁止」である場合（S204:YES）、記憶制御装置１０は、ホスト２０にエラーである旨を応答する（Ｓ２１５）。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【実施例３】
【０２７５】
図２６に基づいて本発明の第３実施例を説明する。本実施例では、正ボリューム２３０Ｐへのライトデータの書込とは、非同期で、ジャーナルデータを作成する。図２６は、本実施例によるライト処理等のフローチャートである。以下の各フローチャートでも同様であるが、既に述べたステップと同様のステップについては説明を省略し、特徴的なステップを中心に説明する。
【０２７６】
記憶制御装置１０は、流入制限を実行するか否かを判断した後で（Ｓ２０９，Ｓ２１０）、ライトデータが書き込まれる領域について、未作成のジャーナルデータが存在するか否かを判定する（Ｓ２２０）。即ち、本実施例では、ライトデータの処理とジャーナルデータの処理とを非同期で実行するため、Ｓ２２０では、以前のライトデータに関するジャーナルデータを作成しているか否かを判定する。このため、本実施例では、正ボリューム２３０Ｐの更新位置を管理する差分ビットマップのような、ジャーナルデータが作成されているか否かを管理するためのジャーナルデータ作成管理用ビットマップを有する。以前に受領したライトデータに関するジャーナルデータが未だ作成されていない領域には、未作成ビットがオン状態にセットされる。
【０２７７】
今回受領したライトデータが書き込まれる領域に関して、未作成のジャーナルデータが存在する場合（S220:YES）、記憶制御装置１０は、未作成のジャーナルデータを作成し、未作成ビットをオフにする（Ｓ２２１）。
【０２７８】
記憶制御装置１０は、前記Ｓ２２１と同様に、ジャーナル管理情報及びジャーナルデータを作成して、ジャーナルボリュームに書込み（Ｓ２２２）、今回受領したライトデータに関するジャーナルデータについて、未作成ビットをオンに設定する（Ｓ２２３）。Ｓ２２０で「NO」と判定された場合、Ｓ２２１をスキップしてＳ２２２に移る。
【０２７９】
記憶制御装置１０は、ライト処理とはタイミングにおいて、未作成のジャーナルデータに関するジャーナル管理情報を取得し（Ｓ２２４）、ジャーナルデータを作成してジャーナルボリュームに記憶させる（Ｓ２２５）。記憶制御装置１０は、未作成ビットをオフに設定する（Ｓ２２５）。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【０２８０】
本実施例では、ライト処理とは別のタイミングでジャーナルデータを作成するため、第２実施例に比べて、ライトコマンドの処理に要する時間を短縮することができ、ホストへの応答時間を短くすることができる。
【実施例４】
【０２８１】
図２７に基づいて本発明の第４実施例を説明する。本実施例では、ライトデータの書込み処理とは非同期で、差分ビットマップＢＭ２０に差分ビットを設定する。図２７は、本実施例によるライト処理等を示すフローチャートである。
【０２８２】
記憶制御装置１０は、ライトデータを受領した後、そのライトデータに関するジャーナルデータ管理情報及びジャーナルデータを作成し、ジャーナルボリュームに書き込む（Ｓ２３０）。記憶制御装置１０は、ジャーナルデータ量を更新する（Ｓ２３１）。
【０２８３】
ライト処理とは別のタイミングにおいて、記憶制御装置１０は、ジャーナル管理情報を取得し（Ｓ２３２）、差分ビットマップＢＭ２０の切替タイミングが到来したか否かを判定する（Ｓ２３３）。切替タイミングが到来した場合（S233:YES）、記憶制御装置１０は、現在使用中の差分ビットマップＢＭ２０を別の差分ビットマップＢＭ２０に切り替え、ジャーナルデータ量を消去する（Ｓ２３４）。即ち、記憶制御装置１０は、ジャーナルデータ量を「０」に戻す（Ｓ２３４）。
【０２８４】
記憶制御装置１０は、Ｓ２３２で取得したジャーナルデータ管理情報に対応するライトデータについて、差分ビットをオンに設定する（Ｓ２３５）。このように構成される本実施例も前記第１実施例と同様の効果を奏する。また、本実施例では、差分ビットマップの更新をライト処理とは別のタイミングで非同期に行うため、前記第２実施例に比較して、ライトコマンドの処理時間を短縮することができ、ライトコマンドの処理完了をホストに速やかに通知することができる。
【実施例５】
【０２８５】
図２８に基づいて本発明の第５実施例を説明する。本実施例では、目標保護期間よりも古いジャーナルデータを、基底ボリューム２３０Ｂに書き込む。図２８は、本実施例による格上げ処理のフローチャートである。
【０２８６】
記憶制御装置１０は、ジャーナルデータ管理情報を取得し（Ｓ２４０）、連続格上げを行うか否かを判定する（Ｓ２４１）。連続格上げを行わない場合（S241:NO）、記憶制御装置１０は、現在時刻を取得し（Ｓ２４２）、Ｓ２４０で取得したジャーナル管理情報が目標保護期間を経過した古い情報であるか否かを判定する（Ｓ２４３）。
【０２８７】
目標保護期間より古い場合（S243:YES）、ジャーナル管理情報に対応するジャーナルデータを基底ボリューム２３０Ｂに書き込む（Ｓ２４４）。記憶制御装置１０は、格上げ済のジャーナルデータを特定するためのシーケンス番号及びジャーナルデータ量をそれぞれ更新する（Ｓ２４５）。
【０２８８】
連続格上げを行う場合（S241:YES）、記憶制御装置１０は、Ｓ２４２及びＳ２４３をスキップして、Ｓ２４４に移る。目標保護期間よりも古いジャーナル管理情報ではない場合（S243:NO）、記憶制御装置１０は、そのジャーナル管理情報が目標保護期間よりも古くなるまで待機する。
【０２８９】
記憶制御装置１０は、基底ボリューム２３０Ｂに格上げされた範囲のＣＰＭを破棄し（Ｓ２４５）、差分ビットマップを０にリセットする（Ｓ２４６）。
【０２９０】
記憶制御装置１０は、ジャーナルデータ量が連続格上げ処理を停止させるための閾値以下になったか否かを判定する（Ｓ２４６）。ジャーナルデータ量、つまり、ジャーナルボリュームの使用率が停止閾値以下になった場合（S246:YES）、記憶制御装置１０は、連続格上げ処理を停止させる（Ｓ２４７）。
【０２９１】
記憶制御装置１０は、未だ格上げされていないジャーナルデータが存在するか否かを判定する（Ｓ２４８）。格上げされていないジャーナルデータが存在する場合（S24:YES）、Ｓ２４０に戻る。Ｓ２４６で「NO」と判定された場合、Ｓ２４７をスキップしてＳ２４８に移る。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【実施例６】
【０２９２】
図２９に基づいて本発明の第６実施例を説明する。本実施例では、ジャーナルデータ量（即ち、これはジャーナルボリュームの使用率でもある）に基づいて、格上げ処理を行うようになっている。
【０２９３】
記憶制御装置１０は、ジャーナルデータ量を取得し（Ｓ２５０）、現在のジャーナルデータ量が格上げ実行を判定するための閾値以上であるか否かを判定する（Ｓ２５１）。即ち、記憶制御装置１０は、ジャーナルデータ量が閾値に達するまで、格上げ処理の実行を待つ（S251:NO，S250）。
【０２９４】
ジャーナルデータ量が閾値に達した場合（S251:YES）、記憶制御装置１０は、ジャーナル管理情報を取得する（Ｓ２５２）。記憶制御装置１０は、基底ボリューム２３０Ｂにジャーナルデータを書込み、格上げ済のジャーナルデータを管理するためのシーケンス番号を更新する（Ｓ２５３）。さらに、記憶制御装置１０は、格上げされたジャーナルデータを破棄し、ジャーナルデータ量を更新する（Ｓ２５３）。
【０２９５】
記憶制御装置１０は、基底ボリューム２３０Ｂに格上げされた範囲のＣＰＭを破棄し、差分ビットマップを０にリセットする（Ｓ２５４）。記憶制御装置１０は、未だ格上げされていないジャーナルデータが存在するか否かを判定し（Ｓ２５５）、格上げされていないジャーナルデータが存在する場合（S255:YES）、Ｓ２５０に戻る。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【実施例７】
【０２９６】
図３０に基づいて本発明の第７実施例を説明する。本実施例では、正ボリューム２３０Ｐにライトデータが書き込まれる際に、その書込み対象の領域に記憶されている古いデータを基底ボリューム２３０Ｂにコピーさせる。図３０は、本実施例によるライト処理を簡略化して示すフローチャートである。図３０では、流入制限の制御や、差分ビットマップの切替等を省略している。本実施例では、新たなライトデータを正ボリューム２３０Ｐに書き込む前に、書込み対象領域に記憶されている古いデータを基底ボリューム２３０Ｂに書き込むことにより、その古いデータを基底ボリューム２３０Ｂに退避させる処理を「追い出しコピー」と呼ぶ場合がある。
【０２９７】
記憶制御装置１０は、ホスト２０からライトコマンドを受領すると（Ｓ２６０）、書込み対象の領域について形成コピーが完了しているか否かを判定する（Ｓ２６１）。形成コピーが完了していない場合（S261:NO）、記憶制御装置１０は、その書込み対象の領域に記憶されているデータを、正ボリューム２３０Ｐから基底ボリューム２３０Ｂにコピーし、さらに、形成コピーを管理するための差分ビットマップの差分ビットをオフに設定する（Ｓ２６２）。つまり、記憶制御装置１０は、その書込み対象の領域について形成コピーが完了した旨を差分ビットマップに記録する。
【０２９８】
記憶制御装置１０は、シーケンス番号及びタイムスタンプを取得して（Ｓ２６３）、ジャーナル管理情報及びジャーナルデータを生成し、作成したジャーナル管理情報及びジャーナルデータをジャーナルボリュームに記憶させる（Ｓ２６３）。また、記憶制御装置１０は、ジャーナルデータ量を更新する（Ｓ２６３）。
【０２９９】
記憶制御装置１０は、現在の区間を担当する差分ビットマップＢＭ２０において、Ｓ２６０で受領したライトコマンドに対応する領域の差分ビットをオンに設定し（Ｓ２６４）、ライトデータを正ボリューム２３０Ｐに書き込む（Ｓ２６５）。記憶制御装置１０は、ホスト２０にライトコマンドの処理が完了した旨を報告する（Ｓ２６６）。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【実施例８】
【０３００】
図３１に基づいて本発明の第８実施例を説明する。本実施例では、「追い出しコピー」を行わずに形成コピーを行う。図３１は、本実施例による形成コピー処理のフローチャートである。
【０３０１】
記憶制御装置１０は、形成コマンドを受領すると（Ｓ２７０）、形成コピーを制御するための差分ビットマップを生成する（Ｓ２７１）。記憶制御装置１０は、形成コピーを開始するためのシーケンス番号を取得し（Ｓ２７２）、正ボリューム２３０Ｐから基底ボリューム２３０Ｂに差分データをコピーする（Ｓ２７３）。記憶制御装置１０は、差分コピーの終了した領域について、Ｓ２７１で生成した差分ビットマップの差分ビットをオフに設定する（Ｓ２７４）。
【０３０２】
記憶制御装置１０は、形成コピーが完了したか否かを判定し（Ｓ２７５）、形成コピーが完了するまで（S275:NO）、Ｓ２７３及びＳ２７４を繰り返し実行する。形成コピーが完了すると（S275:YES）、記憶制御装置１０は、形成コピーの終了位置を示すシーケンス番号を取得する（Ｓ２７６）。形成コピーの終了位置は、保護期間の開始位置を示す。記憶制御装置１０は、形成コピー中の差分データを管理するための差分ビットマップから区間を管理するための差分ビットマップに切り替えて、本処理を終了する（Ｓ２７７）。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【実施例９】
【０３０３】
図３２に基づいて本発明の第９実施例を説明する。本実施例では、形成コピー中に発行されたライトコマンドを、「追い出しコピー」せずに処理する。図３２には、形成コピーの実行中におけるライト処理のフローチャートである。
【０３０４】
記憶制御装置１０は、形成コピー中にホスト２０からライトコマンドを受領すると（Ｓ２８０）、形成コピー済の領域への書込み要求であるか否かを判定する（Ｓ２８１）。形成コピーが完了している領域に関するライトコマンドである場合（S281:YES）、記憶制御装置１０は、シーケンス番号及びタイムスタンプを取得し、ジャーナル管理情報及びジャーナルデータを生成し、生成したジャーナル管理情報及びジャーナルデータをジャーナルボリュームに記憶させる（Ｓ２８２）。また、記憶制御装置１０は、ジャーナルデータ量を更新する（Ｓ２８２）。
【０３０５】
記憶制御装置１０は、形成中の更新位置を管理するための差分ビットマップにおいて、書込み対象領域に対応する差分ビットをオンに設定する（Ｓ２８３）。記憶制御装置１０は、正ボリューム２３０Ｐにライトデータを書込み（Ｓ２８４）、ホスト２０にライトコマンドの処理が完了した旨を報告する（Ｓ２８５）。
【０３０６】
一方、形成コピーが終了していない領域への書込み要求の場合（S281:NO）、記憶制御装置１０は、Ｓ２８２及びＳ２８３をスキップし、Ｓ２８４に移る。即ち、書込み対象領域に記憶されている古いデータを基底ボリューム２３０Ｂに退避させることなく、上書きするようになっている。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【実施例１０】
【０３０７】
図３３に基づいて本発明の第１０実施例を説明する。本実施例では、前記第９実施例による形成コピーが行われる場合において、テンポラリリストアを実行する。図３３は、本実施例によるテンポラリリストア処理のフローチャートである。
【０３０８】
記憶制御装置１０は、格上げ処理を停止させる命令を受けて、基底ボリューム２３０Ｂへのジャーナルデータの書込みを停止させる（Ｓ２９０）。記憶制御装置１０は、保護期間の表示を要求する命令を受けて、保護期間及びＣＰＭを通知する（Ｓ２９１）。
【０３０９】
記憶制御装置１０は、テンポラリリストアを実行させる命令を受けて、正ボリューム２３０Ｐの状態を「ライト禁止」に設定し、これにより、ホスト２０からのI/O受付を禁止する（Ｓ２９２）。
【０３１０】
記憶制御装置１０は、形成コピー中の差分を管理するビットマップと、各区間毎の差分を管理するビットマップとをマージすることにより、コピー用の差分ビットマップを生成する（Ｓ２９３）。記憶制御装置１０は、コピー用の差分ビットマップを用いて、基底ボリューム２３０Ｂから正ボリューム２３０Ｐにデータをコピーする（Ｓ２９４）。記憶制御装置１０は、形成コピー開始時のシーケンス番号から復元点のシーケンス番号までのジャーナルデータを、正ボリューム２３０Ｐに書き込む（Ｓ２９５）。このように構成される本実施例も前記第１実施例と同様の効果を奏する。
【０３１１】
なお、本発明は、上述した実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、ＣＤＰの停止、ＣＤＰの再開、ＣＤＰの削除、テンポラリリストア及びコンプリートリストアの各処理は、ＣＤＰグループ単位で一括して行うこともできるし、ボリューム単位で行うこともできる。
【０３１２】
また、ボリューム単位で各処理を行う場合、複数のボリュームについて同時に前記各処理を行わせることもできる。また、ユーザは、ＣＰＭや時刻によって復元点を指定することにより、テンポラリリストアを経由せずに、直接コンプリートリストアを実行させることもできる。また、テンポラリリストアやＣＤＰの停止処理とは独立して、格上げ停止処理を行うこともできる。コンプリートリストアと独立して、格上げ処理を再開させることもできる。
【図面の簡単な説明】
【０３１３】
【図１】本発明の実施形態の概略を示す説明図である。
【図２】本発明の実施例に係る記憶制御装置を含む情報処理システムの全体構成を示す説明図である。
【図３】記憶制御装置等のプログラム構成の概要を示す説明図である。
【図４】記憶制御装置の論理構成の概要を示す説明図である。
【図５】ジャーナルデータの構成の概要を示す説明図である。
【図６】区間毎に差分ビットマップを切り替えて差分を管理する様子を示す説明図である。
【図７】制御モードの遷移を示す説明図である。
【図８】初期状態からＣＤＰを形成して運用状態に移行し、ＣＤＰを削除するまでの処理の流れを示す説明図である。
【図９】テンポラリリストア及びコンプリートリストアを行う場合の処理の流れを示す説明図である。
【図１０】ＣＤＰをいったん停止させた後でＣＤＰを再開させる場合の処理の流れを示す説明図である。
【図１１】ＣＤＰ停止中にテンポラリリストア及びコンプリートリストアを行う場合の処理の流れを示す説明図である。
【図１２】通常運用状態における保護期間の変化を示す説明図である。
【図１３】リカバリ時における保護期間の変化を示す説明図である。
【図１４】ボリューム単位の制御を行う場合に、リカバリ対象のボリュームとは別のボリュームに関する保護期間の変化を示す説明図である。
【図１５】ＣＤＰの停止後にＣＤＰを再開させる場合の保護期間の変化を示す説明図である。
【図１６】目標保護期間内のジャーナルデータも基底ボリュームに反映させる場合の保護期間の変化を示す説明図である。
【図１７】図１６と同様の説明図であって、ホストからのライトアクセスが大きい場合の保護期間の変化を示す説明図である。
【図１８】ホストからのライトアクセスを制限する場合の保護期間の変化を示す説明図である。
【図１９】通常運用状態の処理を示すフローチャートである。
【図２０】区間差分ビットマップを切り替えて使用する処理を示すフローチャートである。
【図２１】リカバリ処理を示すフローチャートである。
【図２２】ジャーナルボリュームを管理する処理を示すフローチャートである。
【図２３】ＣＤＰ設定画面を示す説明図である。
【図２４】リカバリ設定画面を示す説明図である。
【図２５】本発明の第２実施例に係るライト処理のフローチャートである。
【図２６】本発明の第３実施例に係るライト処理のフローチャートである。
【図２７】本発明の第４実施例に係るライト処理のフローチャートである。
【図２８】本発明の第５実施例に係る格上げ処理のフローチャートである。
【図２９】本発明の第６実施例に係る格上げ処理のフローチャートである。
【図３０】本発明の第７実施例に係るライト処理のフローチャートである。
【図３１】本発明の第８実施例に係る形成コピー処理のフローチャートである。
【図３２】本発明の第９実施例に係るライト処理のフローチャートである。
【図３３】本発明の第１０実施例に係るテンポラリリストア処理のフローチャートである。
【符号の説明】
【０３１４】
１…記憶制御装置、２…ホスト、３…正ボリューム（保護対象ボリューム）、４…基底ボリューム、５…ジャーナルボリューム、５Ａ…ジャーナルデータ、６，６Ａ…区間差分ビットマップ、６Ｂ…差分コピー用の差分ビットマップ、１０…記憶制御装置、２０…ホスト、２１…管理部、３０…管理サーバ、３１…管理部、４０…外部記憶制御装置、４１…コントローラ、４２…ＨＤＵ、１００…コントローラ、１１０…チャネルアダプタ（CHA）、１１１…通信ポート、１２０…ディスクアダプタ（DKA）、１３０…キャッシュメモリ、１４０…共有メモリ、１５０…接続制御部、１６０…サービスプロセッサ（SVP）、２００…ＨＤＵ、２１０…ディスクドライブ、２２０…パリティグループ、２３０…ボリューム、２３０Ｂ…基底ボリューム、２３０Ｊ…ジャーナルボリューム、２３０Ｐ…正ボリューム、ＢＭ１０…差分コピー用差分ビットマップ、ＢＭ２０…区間差分ビットマップ、ＢＭ３０…リカバリ中差分ビットマップ、ＢＭ４０…リカバリ中差分ビットマップ、ＪＤ…ジャーナルデータ、ＰＴ…保護期間、ＴＰＴ…目標保護期間
【図１】
2008282241.tif 000003
【図２】
2008282241.tif 000004
【図３】
2008282241.tif 000005
【図４】
2008282241.tif 000006
【図５】
2008282241.tif 000007
【図６】
2008282241.tif 000008
【図７】
2008282241.tif 000009
【図８】
2008282241.tif 000010
【図９】
2008282241.tif 000011
【図１０】
2008282241.tif 000012
【図１１】
2008282241.tif 000013
【図１２】
2008282241.tif 000014
【図１３】
2008282241.tif 000015
【図１４】
2008282241.tif 000016
【図１５】
2008282241.tif 000017
【図１６】
2008282241.tif 000018
【図１７】
2008282241.tif 000019
【図１８】
2008282241.tif 000020
【図１９】
2008282241.tif 000021
【図２０】
2008282241.tif 000022
【図２１】
2008282241.tif 000023
【図２２】
2008282241.tif 000024
【図２３】
2008282241.tif 000025
【図２４】
2008282241.tif 000026
【図２５】
2008282241.tif 000027
【図２６】
2008282241.tif 000028
【図２７】
2008282241.tif 000029
【図２８】
2008282241.tif 000030
【図２９】
2008282241.tif 000031
【図３０】
2008282241.tif 000032
【図３１】
2008282241.tif 000033
【図３２】
2008282241.tif 000034
【図３３】
2008282241.tif 000035