(57)【要約】【課題】バックアップ対象のソースボリュームが故障しても全ての世代のソースボリュームを復元できるようにする。【解決手段】ソースボリューム１３ａのフルコピー処理の後に更新データブロックをバックアップボリューム１３０の対応領域にコピーする差分コピー処理を行なう第１バックアップ処理と、ソースボリューム１３ａにおける、前世代からの更新領域を含むデータブロックの更新前データブロックを、現在の世代に対応する世代別バックアップボリューム１３１〜１３３に保存する世代別バックアップ処理を行なう第２バックアップ処理と、を実行するとともに、第２バックアップ処理による世代別バックアップ処理の世代切替タイミングで、第１バックアップ処理による差分コピー処理を実行する。【選択図】図２
2014137711.tif 000002
【特許請求の範囲】
【請求項１】
バックアップ対象となるソースボリュームを有するストレージ装置であって、
前記ソースボリュームの全データをコピーしてバックアップボリュームを作成するフルコピー処理の後、前記ソースボリュームで更新されたデータブロックを前記バックアップボリュームの対応領域にコピーする差分コピー処理を行なう第１バックアップ処理部と、
前記ソースボリュームにおける、前世代からの更新領域を含むデータブロックの更新前データブロックを、現在の世代に対応する世代別バックアップボリュームに保存する世代別バックアップ処理を行なう第２バックアップ処理部と、
前記第２バックアップ処理部による前記世代別バックアップ処理の世代切替タイミングで、前記第１バックアップ処理部による前記差分コピー処理を実行させる制御部と、を備えた、ストレージ装置。
【請求項２】
前記制御部は、スタートコマンドに応じて前記第１バックアップ処理部に前記フルコピー処理を実行させた後、前記世代切替タイミング毎に発行されるリスタートコマンドに応じて前記第１バックアップ処理部に前記差分コピー処理を実行させる、請求項１記載のストレージ装置。
【請求項３】
前記ソースボリュームに割り当てられた複数のデータブロックのそれぞれについて、当該データブロック内のデータが更新されたか否かを示す更新情報を記憶する第１記憶部を備え、
前記第１バックアップ処理部は、前記世代切替タイミングで前記更新情報に基づき前記差分コピー処理を行なうとともに、前記更新情報をリセットする、請求項１または請求項２に記載のストレージ装置。
【請求項４】
前記第２バックアップ処理部は、前記更新前データブロックに応じた容量の記憶領域を前記世代別バックアップボリュームとして確保し前記更新前データブロックに割り当てる、請求項１〜請求項３のいずれか一項に記載のストレージ装置。
【請求項５】
前記第２バックアップ処理部は、所定の解放条件を満たした場合、前記世代別バックアップボリュームとして確保された記憶領域を解放する、請求項４記載のストレージ装置。
【請求項６】
前記第２バックアップ処理部は、保存すべき前記世代別バックアップボリュームの世代数が所定数を超えた場合、最古の世代別バックアップボリュームとして確保された記憶領域を解放する、請求項５記載のストレージ装置。
【請求項７】
複数の前記世代別バックアップボリュームのそれぞれについて、当該世代別バックアップボリュームに保存されている前記更新前データブロックが、前記ソースボリュームに割り当てられた複数のデータブロックのうちのいずれのデータブロックに対応するかを示す世代別データブロック情報を記憶する第２記憶部と、
復元対象世代のバックアップボリュームを、前記バックアップボリュームと、前記復元対象世代以降の前記世代別バックアップボリュームおよび前記世代別データブロック情報とに基づき復元する復元部と、を備えた、請求項１〜請求項６のいずれか一項に記載のストレージ装置。
【請求項８】
バックアップ対象となるソースボリュームを有するストレージ装置を構成するコンピュータに、
前記ソースボリュームの全データをコピーしてバックアップボリュームを作成するフルコピー処理の後、前記ソースボリュームで更新されたデータブロックを前記バックアップボリュームの対応領域にコピーする差分コピー処理を行なう第１バックアップ処理と、
前記ソースボリュームにおける、前世代からの更新領域を含むデータブロックの更新前データブロックを、現在の世代に対応する世代別バックアップボリュームに保存する世代別バックアップ処理を行なう第２バックアップ処理と、を実行させるとともに、
前記第２バックアップ処理による前記世代別バックアップ処理の世代切替タイミングで、前記第１バックアップ処理による前記差分コピー処理を実行する、
処理を、前記コンピュータに実行させる、バックアッププログラム。
【請求項９】
バックアップ対象となるソースボリュームを有するストレージ装置におけるバックアップ方法であって、
前記ソースボリュームの全データをコピーしてバックアップボリュームを作成するフルコピー処理の後、前記ソースボリュームで更新されたデータブロックを前記バックアップボリュームの対応領域にコピーする差分コピー処理を行なう第１バックアップ処理と、
前記ソースボリュームにおける、前世代からの更新領域を含むデータブロックの更新前データブロックを、現在の世代に対応する世代別バックアップボリュームに保存する世代別バックアップ処理を行なう第２バックアップ処理と、を実行するとともに、
前記第２バックアップ処理による前記世代別バックアップ処理の世代切替タイミングで、前記第１バックアップ処理による前記差分コピー処理を実行する、バックアップ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、バックアッププログラム、およびバックアップ方法に関する。
【背景技術】
【０００２】
ストレージ装置におけるソースボリューム（例えば業務ボリューム）をバックアップする手法の一つとして、ＯＰＣ（One Point Copy）が知られている。ＯＰＣとは、バックアップ対象となるデータについて所定時点におけるデータであるスナップショットを作成するものである。ＯＰＣを実行するストレージ装置は、ユーザからＯＰＣ指示を受けると、当該ＯＰＣ指示を受けた時点におけるソースボリュームの全データをコピーしスナップショット（バックアップデータ）として格納することにより、ソースボリュームのバックアップを行なう。
【０００３】
このようなＯＰＣの拡張機能として、ＱＯＰＣ（Quick One Point Copy），ＳｎａｐＯＰＣ（Snapshot One Point Copy），ＳｎａｐＯＰＣ＋などが知られている。
【０００４】
ＱＯＰＣは、ＯＰＣによる全データの物理コピーを実施してバックアップボリュームを作成したあとに、ホスト装置からリスタート（restart）指示を受けると、当該リスタート指示を受けるまでの更新分データ（差分データ）のみをバックアップボリュームに反映する機能である。ＱＯＰＣは、以下の２つの特徴(1), (2)を有する。
【０００５】
特徴(1)：ＯＰＣによるコピー処理が完了したあと、コピー元ボリューム（ソースボリューム）に対する更新箇所を記憶しておき、リスタート依頼時（リスタート指示時）に、当該リスタート依頼時までに更新された箇所における更新データのみをバックアップボリュームにコピーする。そのため、ＱＯＰＣでは、全データの物理コピーを行なったあとは、リスタートによる差分のみのコピーを行なえばよく、コピーデータ量の削減やコピーの高速化を実現することが可能になる。
【０００６】
特徴(2)：セッションは、ＯＰＣによるコピー処理が完了したあとも自動的に消去されることはなく、ソフトウエアによって停止することで消去される。つまり、セッションが消去されてしまうと、リスタートを行なうことができなくなるので、セッションは簡単に消去することができないようになっている。
【０００７】
ＳｎａｐＯＰＣは、バックアップデータを作成する際、コピー元ボリュームのデータのうち、更新された部分のみをバックアップすることで、コピー先（バックアップ先）の物理領域を縮小化しコピーに要するコストの削減を実現するものである。
【０００８】
ＳｎａｐＯＰＣの拡張機能であるＳｎａｐＯＰＣ＋は、バックアップボリュームを世代毎に作成し、ソースボリュームの全面コピーを行なわず、ソースボリュームの更新があった場合に、更新対象箇所の更新前のデータ（旧データ）を、対応する世代のバックアップボリュームにコピーする。つまり、ＳｎａｐＯＰＣ＋では、世代別バックアップボリュームであるＳＤＶ（Snap Data Volume）が世代毎（例えば曜日毎）に作成され、各ＳＤＶに対し各世代間の差分データのみがコピーされる。
【０００９】
例えば、ＳｎａｐＯＰＣ＋を実装するストレージ装置は、図１０に示すように、コピー元であるソースボリューム１００の世代別バックアップボリュームとして、月曜日，火曜日，水曜日のＳＤＶ２０１，２０２，２０３をそれぞれ月曜日，火曜日，水曜日に作成する。このとき、月曜日のＳＤＶ２０１には、月曜日に更新されたデータの更新前データのみが記憶され、火曜日のＳＤＶ２０２には、火曜日に更新されたデータの更新前データのみが記憶され、水曜日のＳＤＶ２０３には、水曜日に更新されたデータの更新前データのみが記憶される。
【００１０】
これにより、ＳｎａｐＯＰＣ＋による世代管理では、ソースボリューム１００について少ない物理ボリューム容量で複数世代のバックアップを実現することができる。図１０や図１１に示す例では、物理ボリュームとして、ソースボリューム１００と、各世代の差分データを保存する、ソースボリューム１００よりも少容量のＳＤＶ２０１〜２０３とがそなえられる。そして、ストレージ装置は、ソースボリューム１００と世代別のＳＤＶ２０１〜２０３とを組み合わせることで、各世代のバックアップボリューム（月曜日データ，火曜日データ，水曜日データ）を、論理ボリュームとしてホスト装置２に見せ、ホスト装置２にアクセスさせることができる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−２９２８６５号公報
【特許文献２】特開２００４−３４１８４０号公報
【特許文献３】特開２０１０−１４００６５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、ソースボリューム１００とストレージ装置に接続されるホスト装置２との間では、運用上、極めて頻繁に、Ｉ／Ｏ（Input/Output）のやり取り、つまり入出力要求および当該入出力要求に応じた入出力データのやり取りが行なわれる。このため、ソースボリューム１００は、ＱＯＰＣによって作成されるバックアップボリュームや、ＳｎａｐＯＰＣ＋によって作成される世代別のＳＤＶ２０１〜２０３と比べ、故障・損傷する可能性が高い。ソースボリューム１００が故障すると、図１２に示すように、ＳＤＶ２０１〜２０３が故障していなくても、論理ボリュームとしての全世代のバックアップボリュームが失われてしまった状態となる。したがって、ホスト装置２からのＩ／Ｏが全てエラーとなり、システム運用に支障を来たす。
【００１３】
一つの側面で、本発明は、バックアップ対象のソースボリュームが故障しても全ての世代のバックアップボリュームを復元できるようにすることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本件の他の目的の一つとして位置付けることができる。
【課題を解決するための手段】
【００１４】
本件のストレージ装置は、バックアップ対象となるソースボリュームを有し、第１バックアップ処理部，第２バックアップ処理部および制御部を備えている。第１バックアップ処理部は、前記ソースボリュームの全データをコピーしてバックアップボリュームを作成するフルコピー処理の後、前記ソースボリュームで更新されたデータブロックを前記バックアップボリュームの対応領域にコピーする差分コピー処理を行なう。第２バックアップ処理部は、前記ソースボリュームにおける、前世代からの更新領域を含むデータブロックの更新前データブロックを、現在の世代に対応する世代別バックアップボリュームに保存する世代別バックアップ処理を行なう。制御部は、前記第２バックアップ処理部による前記世代別バックアップ処理の世代切替タイミングで、前記第１バックアップ処理部による前記差分コピー処理を実行させる。
【発明の効果】
【００１５】
一実施形態によれば、バックアップ対象のソースボリュームが故障しても全ての世代のバックアップボリュームを復元することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態のストレージ装置のハードウエア構成を示すブロック図である。
【図２】本実施形態のストレージ装置の機能構成を示すブロック図である。
【図３】本実施形態のストレージ装置における物理ボリュームと、ホスト装置側から見える論理ボリュームとの関係を示す図である。
【図４】本実施形態のストレージ装置による、更新前データブロックの保存領域の自動割当処理および解放処理を説明する図である。
【図５】本実施形態のストレージ装置におけるスタート／リスタート要求時の処理（第１バックアップ処理）を説明するフローチャートである。
【図６】本実施形態のストレージ装置に対するホスト装置からの書込Ｉ／Ｏ要求時の処理（第２バックアップ処理）を説明するフローチャートである。
【図７】本実施形態のストレージ装置に対するホスト装置からの世代データ読出要求時の処理（復元処理）を説明するフローチャートである。
【図８】（Ａ）〜（Ｃ）は本実施形態のストレージ装置によるバックアップ処理を具体的に説明する図である。
【図９】本実施形態のストレージ装置による世代データ読出処理（復元処理）を具体的に説明する図である。
【図１０】ＳｎａｐＯＰＣ＋により世代別バックアップボリュームを作成する様子を示す図である。
【図１１】ＳｎａｐＯＰＣ＋を実装するストレージ装置における物理ボリュームと、ホスト装置側から見える論理ボリューム（各世代のバックアップボリューム）との関係を示す図である。
【図１２】ＳｎａｐＯＰＣ＋を実装するストレージ装置における課題を説明する図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照して実施の形態を説明する。
〔１〕本実施形態の構成
〔１−１〕ストレージ装置のハードウエア構成
図１は、本実施形態のストレージ装置１のハードウエア構成を示すブロック図である。
図１に示すように、ストレージ装置１は、オペレータが使用する業務サーバ等のホスト装置（ホストコンピュータ）２に接続され、ホスト装置２からの各種要求を受け、当該要求に応じた各種処理を行なう。
【００１８】
ストレージ装置１は、４つのＣＡ（Channel Adapter）１１，２組のＣＭ（Centralized Module）１２および４つのディスク（Disk；ＨＤＤ(Hard Disk Drive)）１３を同一筐体内にそなえて構成されている。なお、本実施形態のストレージ装置１では、記憶装置として、ディスク（ＨＤＤ）１３が用いられているが、ＳＳＤ（Solid State Device）等の記憶装置が用いられてもよい。
【００１９】
各ＣＡ１１は、ホスト装置２とのインタフェース制御を行ない、ホスト装置２との間でデータ通信を行なう。
各ＣＭ１２は、２つのＣＡ１１，１１と２つのディスク１３，１３との間に介装され、本ストレージ装置１における資源の管理を行なう。各ＣＭ１２によって管理される資源は、例えば、ＣＡ１１およびディスク１３のほか、後述するメモリ２２，ＤＡ２３およびコピー制御部２４などである。そして、各ＣＭ１２は、ホスト装置２や他のＣＭ１２からの要求に応じ、２つのディスク１３，１３に対する各種処理（データ書込処理，データ更新処理，データ読出処理，データコピー処理など）を行なう。また、２組のＣＭ１２は、バスなどによって相互に接続され、他のＣＭ１２によって管理されるディスク１３に対するアクセスが可能に構成されている。
【００２０】
各ディスク１３は、ユーザデータや制御情報などを格納・記憶する。本実施形態のストレージ装置１では、一方のＣＭ１２によって管理される一のディスク１３に、ホスト装置２からアクセスされるソースボリューム１３ａがバックアップ対象ボリュームとして割り当てられる。また、他方のＣＭ１２によって管理される一のディスク１３のバックアップボリューム用領域１３ｂに、ソースボリューム１３ａのデータについてのバックアップボリューム１３０（図２，図４参照）と複数世代のＳＤＶ１３１〜１３３（図２，図４参照）のデータとが格納される。
【００２１】
なお、ソースボリューム１３ａは、一のディスク１３の全てのデータ領域であってもよいし、一のディスク１３の一部のデータ領域であってもよい。同様に、バックアップボリューム用領域１３ｂは、一のディスク１３の全てのデータ領域であってもよいし、一のディスク１３の一部のデータ領域であってもよい。また、本実施形態において、ソースボリューム１３ａおよびバックアップボリューム用領域１３ｂは、それぞれ異なるＣＭ１２，１２に接続されたディスク１３，１３に属しているが、同じＣＭ１２に接続された異なるディスク１３，１３に属していてもよいし、同じディスク１３に属していてもよい。さらに、本実施形態において、ソースボリューム１３ａとバックアップボリューム用領域１３ｂとは、同一筐体内に属しているが、それぞれ異なる筐体に属していてもよい。
【００２２】
各ＣＭ１２は、ＣＰＵ（Central Processing Unit）２１，メモリ２２，ＤＡ（Device Adapter）２３およびコピー制御部２４を有する。２つのＤＡ２３，２３は、それぞれ当該ＣＭ１２によって管理される２つのディスク１３，１３とのインタフェース制御を行ない、各ディスク１３との間でデータ通信を行なう。メモリ（Memory）２２は、ユーザデータや制御データなどを格納するほか、ホスト装置２から各ディスク１３へ書き込まれるデータや各ディスク１３からホスト装置２や他のＣＭ１２へ読み出されるデータを一時的に格納する。
【００２３】
さらに、メモリ２２は、図２や図５〜図９を参照しながら後述するごとく、コピービットマップ２２１を記憶するほか、トラッキングビットマップ（更新情報）２２２を記憶する第１記憶部、および、ＳＤＶ用ビットマップ（世代別データブロック情報）２２３１〜２２３３を記憶する第２記憶部として機能する。
ＣＰＵ２１は、メモリ２２，ＤＡ２３および後述するコピー制御部２４を管理する。
【００２４】
〔１−２〕ストレージ装置の機能構成
次に、図２〜図４を参照しながら、本実施形態のストレージ装置１（コピー制御部２４）の機能構成について説明する。ここで、図２は、本実施形態のストレージ装置１（コピー制御部２４）の機能構成を示すブロック図である。図３は、本実施形態のストレージ装置１における物理ボリュームと、ホスト装置２側から見える論理ボリュームとの関係を示す図である。図４は、本実施形態のストレージ装置１による、更新前データブロックの保存領域の自動割当処理および解放処理を説明する図である。
【００２５】
図２に示すように、コピー制御部（処理部）２４は、第１バックアップ処理部２４１，第２バックアップ処理部２４２，制御部２４３および復元部２４４としての機能を有している。これらの機能は、少なくとも、ソースボリューム１３ａを保存するディスク１３を管理する一方のＣＭ１２のコピー制御部２４にそなえられるが、２つのＣＭ１２，１２の両方にそなえられていてもよい。なお、第１バックアップ処理部２４１，第２バックアップ処理部２４２，制御部２４３および復元部２４４としての機能は、コピー制御部２４を成す処理部が所定のアプリケーションプログラム（バックアッププログラム）を実行することにより実現される。
【００２６】
第１バックアップ処理部２４１は、ＱＯＰＣを実行する。つまり、第１バックアップ処理部２４１は、ソースボリューム１３ａについてのフルコピー処理を行なった後、ソースボリューム１３ａで更新されたデータブロックをバックアップボリューム１３０の対応領域にコピーする差分コピー処理を行なう。フルコピー処理では、ソースボリューム１３ａについて、ＯＰＣによる全データの物理コピーが実施され、バックアップボリューム用領域１３ｂにバックアップボリューム１３０が作成される。フルコピー処理の後、差分コピー処理では、ソースボリューム１３ａで更新された部分を含むデータブロックが、バックアップボリューム１３０の対応領域にコピーされる。
【００２７】
このとき、ソースボリューム１３ａに対する更新箇所は、メモリ（第１記憶部）２２のトラッキングビットマップ２２２に、更新情報として記憶される。つまり、トラッキングビットマップ（更新情報）２２２には、ソースボリューム１３ａの各データブロックについて、各データブロック内のデータが更新されたか否かを示す更新情報が設定される。なお、トラッキングビットマップ２２２に対する更新情報の設定は、図６を参照しながら後述するように、第２バックアップ処理部２４２によって行なわれる。
【００２８】
トラッキングビットマップ２２２における各ビットは、ソースボリューム１３ａの各データブロックに対応付けられる。各データブロック内のデータが更新されていない場合、トラッキングビットマップ２２２において、当該データブロックに対応するビットには、“０”が更新情報として設定される。一方、各データブロック内のデータが更新された場合、トラッキングビットマップ２２２において、当該データブロックに対応するビットには、“１”（オン）が更新情報として設定される。なお、トラッキングビットマップ２２２の具体的な例については、図８を参照しながら後述する。
【００２９】
第１バックアップ処理部２４１は、図５や図８を参照しながら後述するごとく、上述したトラッキングビットマップ（更新情報）２２２を、メモリ２２のコピービットマップ２２１にマージし、マージしたコピービットマップ２２１に基づき差分コピー処理を行なう。つまり、第１バックアップ処理部２４１は、コピービットマップ２２１において“１”を設定されたビットに対応するデータブロック、即ちソースボリューム１３ａで更新された部分を含むデータブロックを、バックアップボリューム１３０の対応領域にコピー（上書き）する。第１バックアップ処理部２４１は、当該データブロックを対応領域にコピーすると、コピービットマップ２２１における当該データブロックに対応するビットを“１”から“０”に書き換える。
【００３０】
第２バックアップ処理部２４２は、ＳｎａｐＯＰＣ＋を実行する。つまり、第２バックアップ処理部２４２は、ホスト装置２からソースボリューム１３ａのデータブロックに対する書込Ｉ／Ｏ要求（更新要求）があった場合、以下のような世代別バックアップ処理を行なう。世代別バックアップ処理では、ソースボリューム１３ａにおける、前世代からの更新領域を含むデータブロックの更新前データブロック（旧データ）が、現在の世代に対応する世代別バックアップボリュームに退避保存される。図２〜図４に示す例では、バックアップボリューム用領域１３ｂにおいて、世代別バックアップボリュームであるＳＤＶ１３１〜１３３が世代毎（例えば曜日毎）に作成され、各ＳＤＶ１３１〜１３３に対し各世代間の差分データのみがコピーされる。なお、本実施形態において、第２バックアップ処理部２４２による世代別バックアップ処理の世代切替は、例えば、曜日つまり日付が変わるタイミング（世代切替タイミング）で行なわれるものとする。
【００３１】
より具体的に、図２〜図４に示す例において、ソースボリューム１３ａの世代別バックアップボリュームとして、月曜日，火曜日，水曜日のＳＤＶ１３１，１３２，１３３がそれぞれ月曜日，火曜日，水曜日に作成される。このとき、月曜日のＳＤＶ（差分データ(月)）１３１には、月曜日に更新されたデータを含むデータブロックの更新前データブロックのみが記憶され、火曜日のＳＤＶ（差分データ(火)）１３２には、火曜日に更新されたデータを含むデータブロックの更新前データブロックのみが記憶され、水曜日のＳＤＶ（差分データ(水)）１３３には、水曜日に更新されたデータを含むデータブロックの更新前データのみが記憶される。
【００３２】
このとき、第２バックアップ処理部２４２は、世代毎にＳＤＶ１３１〜１３３を作成する際に、ＳＤＶ１３１〜１３３のそれぞれについて、ＳＤＶ用ビットマップ（差分データ用ビットマップ）２２３１〜２２３３を、メモリ（第２記憶部）２２のＳＤＶ用ビットマップ領域２２３に世代別データブロック情報として作成する。つまり、各ＳＤＶ用ビットマップ２２３１〜２２３３には、各ＳＤＶ１３１〜１３３に保存されている更新前データブロックが、ソースボリューム１３ａに割り当てられた複数のデータブロックのうちのいずれのデータブロックに対応するかを示す世代別データブロック情報を設定される。
【００３３】
ＳＤＶ用ビットマップ２２３１〜２２３３における各ビットは、ソースボリューム１３ａの各データブロックに対応付けられる。ＳＤＶ１３１〜１３３に更新前データブロックが保存されている場合、ビットマップ２２３１〜２２３３において、当該更新前データブロックが保存されていたソースボリューム１３ａのデータブロックに対応するビットに、“１”が世代別データブロック情報として設定される。ビットマップ２２３１〜２２３３において、上述のように“１”が設定されるビット以外のビットには、“０”（オフ）が設定される。また、各ＳＤＶ１３１〜１３３に複数の更新前データブロックが保存される場合、各更新前データブロックが、ビットマップ２２３１〜２２３３におけるどのビットに対応するかに関する対応情報も、併せてＳＤＶ用ビットマップ領域２２３に保存される。なお、ＳＤＶ用ビットマップ２２３１〜２２３３の具体的な例については、図８や図９を参照しながら後述する。
【００３４】
また、第２バックアップ処理部２４２は、更新前データブロックを保存する際、図２や図４に示すように、プール領域１３ｃから、当該更新前データブロックに応じた容量の未割り当て（未使用）領域をＳＤＶ１３１〜１３３として確保し更新前データブロックに割り当てる。例えば図２や図４では、データブロックの単位容量を有する６個のプールボリュームＰＶ１〜ＰＶ６が、バックアップボリューム用領域１３ｂのプール領域１３ｃに用意されている。そして、プールボリュームＰＶ１〜ＰＶ３がそれぞれＳＤＶ１３１〜１３３として割り当てられ、プールボリュームＰＶ４〜ＰＶ６が、未使用領域としてプール領域１３ｃに確保されている。なお、プール領域１３ｃは、制御部においてデータブロックとして割り当て可能な未割り当て領域として管理されている記憶領域である。
【００３５】
さらに、第２バックアップ処理部２４２は、所定の解放条件を満たした場合、ＳＤＶ１３１〜１３３として確保された領域を解放しプール領域１３ｃに戻す。例えば、第２バックアップ処理部２４２は、保存すべきＳＤＶの世代数が所定数を超えた場合、最古のＳＤＶとして確保された領域を解放しプール領域１３ｃに戻す。図４に示す例では、保存すべきＳＤＶの世代数が所定数３を超えた場合、つまりＳＤＶの世代数が４になった場合、最古のＳＤＶ１３４として確保された領域が、解放され、プール領域１３ｃに未使用領域のプールボリュームＰＶ４として戻される。なお、ＳＤＶの解放処理は、本実施形態では、例えば図５を参照しながら後述するように、世代切替タイミング（リスタートコマンドの発行タイミング）で実行される。
【００３６】
一方、制御部２４３は、第２バックアップ処理部２４２による世代別バックアップ処理の世代切替タイミング（本実施形態では曜日が変わるタイミング）で、第１バックアップ処理部２４１による差分コピー処理を実行させる。このとき、制御部２４３は、スタートコマンドに応じて第１バックアップ処理部２４１にフルコピー処理を実行させた後、世代切替タイミング毎に発行されるリスタートコマンドに応じて第１バックアップ処理部２４１に差分コピー処理を実行させる。なお、スタートコマンド（スタート要求）およびリスタートコマンド（リスタート要求）は、制御部２４３が自律的に発行してもよいし、ホスト装置２が発行してもよい。
【００３７】
第１バックアップ処理部２４１は、世代切替タイミング（リスタートコマンドの発行タイミング）で、トラッキングビットマップ２２２に基づき、上述した差分コピー処理を行なうとともに、トラッキングビットマップ２２２をリセットする。具体的には、図５や図８を参照しながら後述するごとく、第１バックアップ処理部２４１は、世代切替タイミングでリスタートコマンドに応じて、コピービットマップ２２１に対するトラッキングビットマップ２２２のマージ処理（論理和演算）を行なう。この後、第１バックアップ処理部２４１は、マージしたコピービットマップ２２１に基づき差分コピー処理を行なうとともに、トラッキングビットマップ２２２の各ビットを“０”にリセットする。
【００３８】
復元部２４４は、ホスト装置２から世代データ読出要求を受けると、当該要求で指定される復元（読出）対象世代のバックアップボリュームを、バックアップボリューム１３０と、復元対象世代以降のＳＤＶ１３１〜１３３およびＳＤＶ用ビットマップ２２３１〜２２３３とに基づき復元する。これにより、図３に示すように、本実施形態のストレージ装置１では、ソースボリューム１３ａを用いることなく復元対象世代のバックアップボリュームを復元することができる。したがって、ソースボリューム１３ａが壊れても、各世代のバックアップボリューム（月曜日データ，火曜日データ，水曜日データ）を、論理ボリュームとしてホスト装置２に見せ、ホスト装置２にアクセスさせることができる。なお、具体的な復元処理については、図６や図９を参照しながら後述する。また、本実施形態において、復元部２４４による処理は、コピー制御部２４で実行されているが、ＣＰＵ２１で実行されてもよい。
【００３９】
〔２〕本実施形態のストレージ装置の動作
上述のごとく構成された本実施形態のストレージ装置１では、ＳｎａｐＯＰＣ＋（第２バックアップ処理部２４２）の世代切替タイミングで、ソースボリューム１３ａから差分データが取得され、ＱＯＰＣ（第１バックアップ処理部２４１）によって差分データがバックアップボリューム１３０にコピーされる。ただし、ＱＯＰＣの開始時に、一度、スタートコマンドに応じてソースボリューム１３ａのフルコピー処理を行なう必要があり、フルコピー処理後は、世代切替タイミングで発行されるリスタートコマンドに応じて差分コピー処理が実行され、差分データが取得される。これにより、図３に示すように、ソースボリューム１３ａにおいて故障が発生した時でも、バックアップボリューム１３０に対し各世代のＳＤＶ（月曜データ〜水曜データ）１３１〜１３３を書き戻すことで、各世代の論理ボリュームを作成することができる。したがって、ユーザデータを守ることができるとともに、ホスト装置２に影響を与えずに運用を継続することができる。
【００４０】
また、本実施形態のストレージ装置１では、図４に示すように、更新前データブロック（旧データ）を保存する際、差分データ用ボリューム（プールボリュームＰＶ１〜ＰＶ６のいずれか）が、プール領域１３ｃから更新前データブロックに対し自動的に割り当てられるように制御される。そして、ＳＤＶの世代数が所定数を超えた場合、最古のＳＤＶの領域は解放されてプール領域１３ｃに戻されるように制御される。これにより、バックアップボリューム用領域１３ｂとして用いられるディスクの使用効率を高めることができる。
【００４１】
以下、本実施形態のストレージ装置１の動作について、図５〜図９を参照しながら説明する。
〔２−１〕スタート／リスタート要求時の処理（第１バックアップ処理）
まず、図５に示すフローチャート（ステップＳ１１〜Ｓ１９）に従って、本実施形態のストレージ装置１におけるスタート／リスタート要求時の処理（第１バックアップ処理）について説明する。
【００４２】
コピー制御部２４（制御部２４３）において、スタートコマンド（スタート要求）またはリスタートコマンド（リスタート要求）を受けると、図５に示す処理が起動され、まず、当該要求がスタート要求であるか否かが判定される（ステップＳ１１）。当該要求がスタート要求である場合（ステップＳ１１のＹＥＳルート）、ＱＯＰＣの開始時であり、ソースボリューム１３ａのフルコピー処理を行なう必要がある。このため、第１バックアップ処理部２４１は、コピービットマップ２２１の全ビットに“１”（オン）を設定するとともに（ステップＳ１２）、トラッキングビットの全ビットに“０”（オフ）を設定する（ステップＳ１３）。
【００４３】
この後、第２バックアップ処理部２４２において、ＳｎａｐＯＰＣ＋で保存すべきＳＤＶの世代数が所定数（例えば３）を超えたか否かが判定される（ステップＳ１４）。保存すべきＳＤＶの世代数が所定数を超えた場合（ステップＳ１４のＹＥＳルート）、最古のＳＤＶとして確保された領域が、解放されプール領域１３ｃに戻される（ステップＳ１５）。一方、保存すべきＳＤＶの世代数が所定数を超えていない場合（ステップＳ１４のＮＯルート）、ステップＳ１５の処理はスキップされる。初回の処理に際しては、まだＳＤＶは確保されていないので、ステップＳ１４では、保存すべきＳＤＶの世代数が所定数を超えていないと判定される（ステップＳ１４のＮＯルート）。
【００４４】
そして、第１バックアップ処理部２４１は、コピービットマップ２２１に対するトラッキングビットマップ２２２のマージ処理（論理和演算）を行なう（ステップＳ１６）。初回の処理に際しては、全ビットに“０”を設定されたトラッキングビットマップ２２２が、全ビットに“１”を設定されたコピービットマップ２２１にマージされるので、コピービットマップ２２１の全ビットは“１”を設定された状態のままである。この後、第１バックアップ処理部２４１は、トラッキングビットマップ２２２の全ビットに“０”を設定する、つまりトラッキングビットマップ２２２の全ビットを“０”にリセットする（ステップＳ１７）。
【００４５】
ついで、第１バックアップ処理部２４１は、コピービットマップ２２１に“１”を設定されたビットが存在するか否かを判定する（ステップＳ１８）。“１”を設定されたビットが存在する場合（ステップＳ１８のＹＥＳルート）、第１バックアップ処理部２４１は、コピービットマップ２２１において“１”を設定されたビットに対応するデータブロックを、バックアップボリューム１３０の対応領域にコピーする（ステップＳ１９）。即ち、初回の処理に際して、第１バックアップ処理部２４１は、ソースボリューム１３ａの全てのデータブロックを、バックアップボリューム１３０の対応領域にコピーする。
【００４６】
そして、第１バックアップ処理部２４１は、各データブロックを対応領域にコピーすると、コピービットマップ２２１における当該データブロックに対応するビットを“１”から“０”に書き換える。したがって、ソースボリューム１３ａの全データブロックがバックアップボリューム１３０の対応領域にコピーされると、コピービットマップ２２１の全ビットは“０”にリセットされ、第１バックアップ処理部２４１は処理を終了する。
【００４７】
このようにして、スタートコマンドに応じて開始される初回の処理に際しては、第１バックアップ処理部２４１によって、ソースボリューム１３ａの全データをバックアップボリューム１３０にコピーするフルコピー処理が実行される。
【００４８】
フルコピー処理の後、コピー制御部２４（制御部２４３）において、スタートコマンド（スタート要求）またはリスタートコマンド（リスタート要求）を受けると、図５に示す処理が起動され、初回の処理と同様、当該要求がスタート要求であるか否かが判定される（ステップＳ１１）。フルコピー処理後に受ける要求は、基本的に、世代切替タイミング毎に発行されるリスタート要求であるため、ステップＳ１１では、受けた要求がスタート要求でないと判定され（ステップＳ１１のＮＯルート）、ステップＳ１４〜Ｓ２０の処理が実行される。このとき、２回目以降の処理は、第１バックアップ処理部２４１による差分コピー処理である。
【００４９】
ステップＳ１４においては、初回の処理と同様、第２バックアップ処理部２４２において、ＳｎａｐＯＰＣ＋で保存すべきＳＤＶの世代数が所定数（例えば３）を超えたか否かが判定される。保存すべきＳＤＶの世代数が所定数を超えた場合（ステップＳ１４のＹＥＳルート）、最古のＳＤＶとして確保された領域が、解放されプール領域１３ｃに戻される（ステップＳ１５）。一方、保存すべきＳＤＶの世代数が所定数を超えていない場合（ステップＳ１４のＮＯルート）、ステップＳ１５の処理はスキップされる。
【００５０】
そして、第１バックアップ処理部２４１は、初回の処理と同様、コピービットマップ２２１に対するトラッキングビットマップ２２２のマージ処理（論理和演算）を行なう（ステップＳ１６）。２回目以降の処理に際しては、今回のリスタート要求が発行されるまでの間にソースボリューム１３ａで更新されたデータブロックに対応するビットに“１”を設定されたトラッキングビットマップ２２２が、全ビットに“０”を設定されたコピービットマップ２２１にマージされる。この後、第１バックアップ処理部２４１は、トラッキングビットマップ２２２の全ビットを“０”にリセットする（ステップＳ１７）。
【００５１】
ついで、第１バックアップ処理部２４１は、初回の処理と同様、コピービットマップ２２１に“１”を設定されたビットが存在するか否かを判定する（ステップＳ１８）。“１”を設定されたビットが存在しない場合（ステップＳ１８のＮＯルート）、第１バックアップ処理部２４１は、処理を終了する。一方、“１”を設定されたビットが存在する場合（ステップＳ１８のＹＥＳルート）、第１バックアップ処理部２４１は、コピービットマップ２２１において“１”を設定されたビットに対応するデータブロックを、バックアップボリューム１３０の対応領域にコピーする（ステップＳ１９）。即ち、２回目以降の処理に際して、第１バックアップ処理部２４１は、コピービットマップ２２１において“１”を設定されたビットに対応するデータブロック、即ちソースボリューム１３ａで更新された部分を含むデータブロックを、バックアップボリューム１３０の対応領域にコピー（上書き）する。
【００５２】
そして、第１バックアップ処理部２４１は、各データブロックを対応領域にコピーすると、コピービットマップ２２１における当該データブロックに対応するビットを“１”から“０”に書き換える。したがって、コピービットマップ２２１によって指定されたデータブロックが全てバックアップボリューム１３０の対応領域にコピーされると、コピービットマップ２２１の全ビットは“０”にリセットされ、第１バックアップ処理部２４１は処理を終了する。
【００５３】
このようにして、リスタートコマンドに応じて開始される２回目の処理に際しては、ソースボリューム１３ａで更新されたデータブロックをバックアップボリューム１３０の対応領域にコピーする差分コピー処理が実行される。
【００５４】
〔２−２〕書込Ｉ／Ｏ要求時の処理（第２バックアップ処理）
次に、図６に示すフローチャート（ステップＳ２１〜Ｓ２５）に従って、本実施形態のストレージ装置１に対するホスト装置２からの書込Ｉ／Ｏ要求時の処理（第２バックアップ処理）について説明する。
【００５５】
コピー制御部２４（第２バックアップ処理部２４２）において、ホスト装置２からソースボリューム１３ａに対する書込Ｉ／Ｏ要求を受けると、図６に示す処理が起動され、まず、当該要求の書込対象の領域を含む更新前データブロック（旧データ）が、既にＳＤＶに保存済みであるか否かが判定される（ステップＳ２１）。当該更新前データブロックが保存済みでない場合（ステップＳ２１のＮＯルート）、第２バックアップ処理部２４２は、プール領域１３ｃから、当該更新前データブロックに応じた容量の未使用領域をＳＤＶ（ＳｎａｐＯＰＣ＋用ボリューム）として確保し更新前データブロックに割り当てる（ステップＳ２２）。
【００５６】
この後、第２バックアップ処理部２４２は、更新前データブロックを割り当てられた領域に退避保存し、現在の世代に対応するＳＤＶを作成する（ステップＳ２３）。そして、第２バックアップ処理部２４２は、ＳＤＶ用ビットマップおよびトラッキングビットマップ２２２において、ＳＤＶに書き込まれたデータブロックに応じたビットに“１”（オン）を設定する（ステップＳ２４）。つまり、ＳＤＶ用ビットマップにおいては、更新前データブロックが保存されていたソースボリューム１３ａのデータブロックに対応するビットに、“１”が世代別データブロック情報として設定される。また、トラッキングビットマップ２２２においては、書込Ｉ／Ｏ要求によってソースボリューム１３ａで更新されるデータブロックに対応するビットに、“１”が更新情報として設定される。
【００５７】
以上のようにして、更新前データブロック（旧データ）をＳＤＶに退避保存する世代別バックアップ処理を行なうとともに、ＳＤＶ用ビットマップおよびトラッキングビットマップ２２２に対する設定を行なった後、第２バックアップ処理部２４２は、書込Ｉ／Ｏ要求に応じた、ソースボリューム１３ａに対する書込を許可する（ステップＳ２５）。これにより、ホスト装置２からの書込Ｉ／Ｏ要求が実行される。
【００５８】
なお、更新前データブロックが保存済みである場合（ステップＳ２１のＹＥＳルート）、更新前データブロックは既にＳＤＶに退避保存されている。このため、第２バックアップ処理部２４２は、ステップＳ２２〜Ｓ２４の処理をスキップし、直ちに、書込Ｉ／Ｏ要求に応じた、ソースボリューム１３ａに対する書込を許可する（ステップＳ２５）。これにより、ホスト装置２からの書込Ｉ／Ｏ要求が直ちに実行される。
【００５９】
〔２−３〕世代データ読出要求時の処理（復元処理）
次に、図７に示すフローチャート（ステップＳ３１〜Ｓ３８）に従って、本実施形態のストレージ装置１に対するホスト装置２からの世代データ読出要求時の処理（復元処理）について説明する。
【００６０】
ソースボリューム１３ａの故障時等に、コピー制御部２４（復元部２４４）において、ホスト装置２から世代データ読出要求を受けると、図７に示す処理が起動され、まず、当該要求の読出（復元）対象世代（以下、要求世代という）が最新世代であるか否かが判定される（ステップＳ３１）。当該要求世代が最新世代である場合（ステップＳ３１のＹＥＳルート）、現在のバックアップボリューム１３０が要求世代のバックアップボリュームである。したがって、復元部２４４は、現在のバックアップボリューム１３０をホスト装置２に読ませる（ステップＳ３８）。これにより、要求世代のバックアップボリュームが復元される。
【００６１】
一方、当該要求世代が最新世代でない場合（ステップＳ３１のＮＯルート）、復元部２４４は、ステップＳ３２〜Ｓ３７による復元処理を実行する。
まず、復元部２４４は、処理世代として当該要求世代を設定する（ステップＳ３２）。この後、復元部２４４は、処理世代のＳＤＶ用ビットマップにおいて“１”（オン）を設定されているビットに対応する差分データ（更新前データブロック，旧データ）を、処理世代のＳＤＶから読み出し、バックアップボリューム１３０の対応領域に書き戻す（ステップＳ３３）。
【００６２】
そして、復元部２４４は、バックアップボリューム１３０の全領域に対し差分データが書き戻されたか否かを判定する（ステップＳ３４）。バックアップボリューム１３０の全領域に対し差分データが書き戻された場合（ステップＳ３４のＹＥＳルート）、その時点でのバックアップボリューム１３０が要求世代のバックアップボリュームである。したがって、復元部２４４は、ステップＳ３３で差分データを書き戻されたバックアップボリューム１３０をホスト装置２に読ませる（ステップＳ３８）。これにより、要求世代のバックアップボリュームが復元される。
【００６３】
バックアップボリューム１３０の全領域に対し差分データが書き戻されていない場合（ステップＳ３４のＮＯルート）、復元部２４４は、処理世代が最新世代であるか否かを判定する（ステップＳ３５）。処理世代が最新世代である場合（ステップＳ３５のＹＥＳルート）、その時点でのバックアップボリューム１３０が要求世代のバックアップボリュームである。したがって、復元部２４４は、ステップＳ３３で差分データを書き戻されたバックアップボリューム１３０をホスト装置２に読ませる（ステップＳ３８）。これにより、要求世代のバックアップボリュームが復元される。
【００６４】
処理世代が最新世代でない場合（ステップＳ３５のＮＯルート）、復元部２４４は、ステップＳ３３で用いたＳＤＶ用ビットマップにおいて“０”（オフ）が設定されている領域を残領域として求める（ステップＳ３６）。また、復元部２４４は、処理世代として、現在の世代よりも一つ新しい世代を設定する（ステップＳ３７）。この後、復元部２４４は、処理世代のＳＤＶ用ビットマップのうちの前記残領域において“１”を設定されているビットに対応する差分データを、処理世代のＳＤＶから読み出し、バックアップボリューム１３０の対応領域に書き戻す（ステップＳ３３）。以下同様に復元部２４４がステップＳ３３〜Ｓ３８の処理を実行することにより、要求世代のバックアップボリュームが復元される。
【００６５】
〔２−４〕ストレージ装置による具体的なバックアップ処理
次に、図８（Ａ）〜図８（Ｃ）を参照しながら、本実施形態のストレージ装置１によるバックアップ処理について具体的に説明する。ここでは、バックアップ処理が、月曜日に開始され水曜日まで実行された場合について説明する。図８（Ａ）〜図８（Ｃ）は、それぞれ月曜日〜水曜日の状態を示す。また、図８（Ａ）〜図８（Ｃ）に示す例では、ソースボリューム１３ａおよびバックアップボリューム１３０には、３つのデータブロックが割り当てられている。また、コピービットマップ２２１およびトラッキングビットマップ２２２のそれぞれは、前記３つのデータブロックに対応する３つのビットを有している。さらに、曜日毎に作成されるＳＤＶ１３１〜１３３のそれぞれに対しては、前述の通り、ＳＤＶ用ビットマップ２２３１〜２２３３が作成され、各ビットマップ２２３１〜２２３３は、前記３つのデータブロックに対応する３つのビットを有している。
【００６６】
まず、図８（Ａ）を参照しながら、月曜日の状態について説明する。バックアップ処理開始時点で、バックアップ対象のソースボリューム１３ａには３つのデータブロックＡ，Ｂ，Ｃが保存されている。この時点で、スタートコマンドが発行され、バックアップ処理が開始されると、ソースボリューム１３ａからバックアップボリューム１３０へのＱＯＰＣセッションが開始され、図５を参照しながら前述したフルコピー処理が実行される。
【００６７】
このとき、コピービットマップ２２１の全ビットに“１”が設定され、トラッキングビットの全ビットに“０”が設定され、コピービットマップ２２１に対するトラッキングビットマップ２２２のマージ処理が行なわれる。そして、コピービットマップ２２１において“１”を設定されたビットに対応するデータブロックを、バックアップボリューム１３０の対応領域にコピーすることで、フルコピー処理が実行される。フルコピー処理終了時にはコピービットマップ２２１およびトラッキングビットマップ２２２の全ビットは０にリセットされる。
【００６８】
この状態で、ホスト装置２からの書込Ｉ／Ｏ要求によりソースボリューム１３ａのデータブロックＡがデータブロックＤに更新される場合、ＳｎａｐＯＰＣ＋セッションが開始され、更新前データブロック（差分データ）Ａが、プール領域１３ｃから割り当てられたＳＤＶ（月）１３１に退避保存される。そして、ＳＤＶ用ビットマップ２２３１のデータブロックＡに対応するビットに“１”が設定されるとともに、トラッキングビットマップ２２２のデータブロックＡに対応するビットに“１”が設定される。この後、ソースボリューム１３ａに対する書込が許可され、ソースボリューム１３ａのデータブロックＡがデータブロックＤに書き換えられる。
【００６９】
ついで、図８（Ｂ）を参照しながら、火曜日の状態について説明する。世代切替タイミング（曜日が変わるタイミング）でリスタートコマンドが発行されると、ソースボリューム１３ａからバックアップボリューム１３０へのＱＯＰＣセッションがリスタートされ、図５を参照しながら前述した差分コピー処理が実行される。
【００７０】
このとき、コピービットマップ２２１に対するトラッキングビットマップ２２２のマージ処理が行なわれ、コピービットマップ２２１において“１”を設定されたビットに対応するデータブロックＤを、バックアップボリューム１３０の対応領域にコピーすることで、差分コピー処理が実行される。差分コピー処理終了時にはコピービットマップ２２１およびトラッキングビットマップ２２２の全ビットは０にリセットされる。
【００７１】
この状態で、ホスト装置２からの書込Ｉ／Ｏ要求によりソースボリューム１３ａのデータブロックＤ，ＣがそれぞれデータブロックＥ，Ｆに更新される場合、ＳｎａｐＯＰＣ＋セッションが開始され、更新前データブロック（差分データ）Ｄ，Ｃが、プール領域１３ｃから割り当てられたＳＤＶ（火）１３２に退避保存される。そして、ＳＤＶ用ビットマップ２２３２のデータブロックＤ，Ｃに対応するビットに“１”が設定されるとともに、トラッキングビットマップ２２２のデータブロックＤ，Ｃに対応するビットに“１”が設定される。この後、ソースボリューム１３ａに対する書込が許可され、ソースボリューム１３ａのデータブロックＤ，ＣがそれぞれデータブロックＥ，Ｆに書き換えられる。
【００７２】
ついで、図８（Ｃ）を参照しながら、水曜日の状態について説明する。世代切替タイミング（曜日が変わるタイミング）でリスタートコマンドが発行されると、ソースボリューム１３ａからバックアップボリューム１３０へのＱＯＰＣセッションがリスタートされ、図５を参照しながら前述した差分コピー処理が実行される。
【００７３】
このとき、コピービットマップ２２１に対するトラッキングビットマップ２２２のマージ処理が行なわれ、コピービットマップ２２１において“１”を設定されたビットに対応するデータブロックＥ，Ｆを、それぞれバックアップボリューム１３０の対応領域にコピーすることで、差分コピー処理が実行される。差分コピー処理終了時にはコピービットマップ２２１およびトラッキングビットマップ２２２の全ビットは０にリセットされる。
【００７４】
この状態で、ホスト装置２からの書込Ｉ／Ｏ要求によりソースボリューム１３ａのデータブロックＥ，Ｂ，ＦがそれぞれデータブロックＧ，Ｈ，Ｉに更新される場合、ＳｎａｐＯＰＣ＋セッションが開始され、更新前データブロック（差分データ）Ｅ，Ｂ，Ｆが、プール領域１３ｃから割り当てられたＳＤＶ（水）１３３に退避保存される。そして、ＳＤＶ用ビットマップ２２３３のデータブロックＥ，Ｂ，Ｆに対応するビットに“１”が設定されるとともに、トラッキングビットマップ２２２のデータブロックＥ，Ｂ，Ｆに対応するビットに“１”が設定される。この後、ソースボリューム１３ａに対する書込が許可され、ソースボリューム１３ａのデータブロックＥ，Ｂ，ＦがそれぞれデータブロックＧ，Ｈ，Ｉに書き換えられる。
【００７５】
木曜日以降は、上述と同様の手順で、リスタートコマンドによる差分コピー処理と、ＳｎａｐＯＰＣ＋による世代別バックアップ処理とを繰り返し実行することで、世代バックアップが行なわれる。ただし、本実施形態では、リスタートコマンドによる差分コピー処理時に、ＳｎａｐＯＰＣ＋で保存すべきＳＤＶの世代数が所定数を超えたか否かが判定される。そして、保存すべきＳＤＶの世代数が所定数を超えた場合、最古のＳＤＶとして確保された領域が、解放されプール領域１３ｃに戻される（図５のステップＳ１４，Ｓ１５参照）。
【００７６】
〔２−５〕ストレージ装置による具体的な世代データ読出処理（復元処理）
次に、図９を参照しながら、本実施形態のストレージ装置１による世代データ読出処理（復元処理）について具体的に説明する。ここでは、図８（Ａ）〜図８（Ｃ）に示すように、ＱＯＰＣによりデータブロックＥ，Ｂ，Ｆを保存するバックアップボリューム１３０と、ＳＤＶ１３１〜１３３と、ＳＤＶ用ビットマップ２２３１〜２２３３とが作成されているものとする。このような状態でソースボリューム１３ａが故障した際に、各世代データ（各曜日データ）を復元してホスト装置２に読ませる処理について、以下に説明する。
【００７７】
ホスト装置２から、月曜日のデータを読み出す世代データ読出要求を受けると、月曜日のＳＤＶ用ビットマップ２２３１が参照される。そして、ビットマップ２２３１において“１”を設定されているビット（領域１）に対応する差分データＡが見出され、矢印Ａ１に示すように、差分データＡがバックアップボリューム１３０の対応領域に書き戻され、データブロックＥがデータブロックＡに書き換えられる。
【００７８】
この後、月曜日のＳＤＶ１３１にデータが保存されていない領域、つまり月曜日のＳＤＶ用ビットマップ２２３１において“０”が設定されている領域２，３が残領域として求められる。この残領域について、月曜日よりも一世代新しい火曜日のＳＤＶ用ビットマップ２２３２が参照される。すると、ビットマップ２２３２において“１”が設定されているビット（領域３）に対応する差分データＣが見出され、矢印Ａ２に示すように、差分データＣがバックアップボリューム１３０の対応領域に書き戻され、データブロックＦがデータブロックＣに書き換えられる。
【００７９】
さらに、月曜日および火曜日のＳＤＶ用ビットマップ２２３１，２２３２において“０”が設定されている領域２が残領域として求められる。この残領域について、火曜日よりも一世代新しい水曜日のＳＤＶ用ビットマップ２２３３が参照される。すると、ビットマップ２２３３において“１”が設定されているビット（領域２）に対応する差分データＢが見出され、矢印Ａ３に示すように、差分データＢがバックアップボリューム１３０の対応領域に書き戻され、データブロックＢがデータブロックＢに書き換えられる。
【００８０】
このようにして、バックアップボリューム１３０の全領域に対し差分データが書き戻されると、バックアップボリューム１３０において月曜日データが復元されたものと判断され、復元部２４４は、ホスト装置２にバックアップボリューム１３０（月曜日データ）を読ませる。なお、復元部２４４は、差分データＢをバックアップボリューム１３０へ書き戻す前に、バックアップボリューム１３０の領域２に差分データＢと同じデータが保存されていることを判別できたならば、差分データＢを書き戻す処理を中止してもよい。
【００８１】
ホスト装置２から、火曜日のデータを読み出す世代データ読出要求を受けると、火曜日のＳＤＶ用ビットマップ２２３２が参照される。そして、ビットマップ２２３２において“１”を設定されているビット（領域１，３）に対応する差分データＤ，Ｃが見出され、矢印Ａ４，Ａ５に示すように、差分データＤ，Ｃがそれぞれバックアップボリューム１３０の対応領域に書き戻され、データブロックＥ，ＦがそれぞれデータブロックＤ，Ｃに書き換えられる。
【００８２】
この後、火曜日のＳＤＶ１３２にデータが保存されていない領域、つまり火曜日のＳＤＶ用ビットマップ２２３２において“０”が設定されている領域２が残領域として求められる。この残領域について、火曜日よりも一世代新しい水曜日のＳＤＶ用ビットマップ２２３３が参照される。すると、ビットマップ２２３３において“１”が設定されているビット（領域２）に対応する差分データＢが見出され、矢印Ａ６に示すように、差分データＢがバックアップボリューム１３０の対応領域に書き戻され、データブロックＢがデータブロックＢに書き換えられる。
【００８３】
このようにして、バックアップボリューム１３０の全領域に対し差分データが書き戻されると、バックアップボリューム１３０において火曜日データが復元されたものと判断され、復元部２４４は、ホスト装置２にバックアップボリューム１３０（火曜日データ）を読ませる。なお、復元部２４４は、差分データＢをバックアップボリューム１３０へ書き戻す前に、バックアップボリューム１３０の領域２に差分データＢと同じデータが保存されていることを判別できたならば、差分データＢを書き戻す処理を中止してもよい。
【００８４】
ホスト装置２から、水曜日のデータを読み出す世代データ読出要求を受けると、要求世代の水曜日は最新世代であるので、現在のバックアップボリューム１３０が要求世代のバックアップボリュームである。したがって、復元部２４４は、現在のバックアップボリューム１３０をそのままホスト装置２に読ませる。
【００８５】
〔３〕本実施形態の情報処理装置の効果
このように、本実施形態のストレージ装置１によれば、ＳｎａｐＯＰＣ＋の世代切替タイミングでＱＯＰＣを用いて自動的に差分コピー処理が行なわれる。そして、当該世代切替タイミングから次の世代切替タイミングまでの間のＩ／Ｏ更新によって発生した差分データは、世代別バックアップボリュームであるＳＤＶによって自動的にバックアップされる。なお、ＱＯＰＣは、開始時にスタートコマンドでソースボリューム１３ａのフルコピー処理を行ない、フルコピー以降はリスタートコマンドで差分コピー処理を行なう。
【００８６】
したがって、ホスト装置２の運用ボリュームであるソースボリューム１３ａが故障した時に、ホスト装置２から復元したい世代が指定されると、ＱＯＰＣによって作成されたバックアップボリューム１３０とＳｎａｐＯＰＣ＋によって作成された各世代のＳＤＶ１３１〜１３３との組み合わせで、任意の世代データを復元することができる。このため、差分世代バックアップ運用環境の中でソースボリューム１３ａが壊れたとしても、迅速に各世代の運用データを復元できるので、全世代のバックアップボリュームは確実に保存されるとともに、任意の世代へのＩ／Ｏがエラーにならずシステムの運用に影響を与えることがない。
【００８７】
また、本実施形態のストレージ装置１では、図４に示すように、更新前データブロックを保存する際、差分データ用ボリュームが、プール領域１３ｃから更新前データブロックに対し自動的に割り当てられるように制御される。そして、ＳＤＶの世代数が所定数を超えた場合、最古のＳＤＶの領域は解放されてプール領域１３ｃに戻される。これにより、バックアップボリューム用領域１３ｂとして用いられるディスクの使用効率を高めることができる。
【００８８】
〔４〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【００８９】
なお、本実施形態では、ストレージ装置１が、４つのＣＡ１１，２組のＣＭ１２および４つのディスク１３をそなえている場合について説明しているが、本発明は、これらの数に限定されるものでない。同様に、本実施形態では、プール領域１３ｃのプールボリュームが６個であり、ＳＤＶの解放基準の所定数が３である場合について説明しているが、本発明は、これらの数に限定されるものでない。
【００９０】
また、上述した第１バックアップ処理部２４１，第２バックアップ処理部２４２，制御部２４３および復元部２４４としての機能の全部もしくは一部は、コピー処理部２４として機能するコンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（バックアッププログラム）を実行することによって実現される。
【００９１】
また、上記アプリケーションプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【００９２】
ここで、コンピュータとは、ハードウエアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウエアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウエアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記アプリケーションプログラムは、上述のようなコンピュータに、第１バックアップ処理部２４１，第２バックアップ処理部２４２，制御部２４３および復元部２４４としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【００９３】
〔５〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
バックアップ対象となるソースボリュームを有するストレージ装置であって、
前記ソースボリュームの全データをコピーしてバックアップボリュームを作成するフルコピー処理の後、前記ソースボリュームで更新されたデータブロックを前記バックアップボリュームの対応領域にコピーする差分コピー処理を行なう第１バックアップ処理部と、
前記ソースボリュームにおける、前世代からの更新領域を含むデータブロックの更新前データブロックを、現在の世代に対応する世代別バックアップボリュームに保存する世代別バックアップ処理を行なう第２バックアップ処理部と、
前記第２バックアップ処理部による前記世代別バックアップ処理の世代切替タイミングで、前記第１バックアップ処理部による前記差分コピー処理を実行させる制御部と、を備えた、ストレージ装置。
【００９４】
（付記２）
前記制御部は、スタートコマンドに応じて前記第１バックアップ処理部に前記フルコピー処理を実行させた後、前記世代切替タイミング毎に発行されるリスタートコマンドに応じて前記第１バックアップ処理部に前記差分コピー処理を実行させる、付記１記載のストレージ装置。
【００９５】
（付記３）
前記ソースボリュームに割り当てられた複数のデータブロックのそれぞれについて、当該データブロック内のデータが更新されたか否かを示す更新情報を記憶する第１記憶部を備え、
前記第１バックアップ処理部は、前記世代切替タイミングで前記更新情報に基づき前記差分コピー処理を行なうとともに、前記更新情報をリセットする、付記１または付記２に記載のストレージ装置。
【００９６】
（付記４）
前記第２バックアップ処理部は、前記更新前データブロックに応じた容量の記憶領域を前記世代別バックアップボリュームとして確保し前記更新前データブロックに割り当てる、付記１〜付記３のいずれか一項に記載のストレージ装置。
【００９７】
（付記５）
前記第２バックアップ処理部は、所定の解放条件を満たした場合、前記世代別バックアップボリュームとして確保された記憶領域を解放する、付記４記載のストレージ装置。
【００９８】
（付記６）
前記第２バックアップ処理部は、保存すべき前記世代別バックアップボリュームの世代数が所定数を超えた場合、最古の世代別バックアップボリュームとして確保された記憶領域を解放する、付記５記載のストレージ装置。
【００９９】
（付記７）
複数の前記世代別バックアップボリュームのそれぞれについて、当該世代別バックアップボリュームに保存されている前記更新前データブロックが、前記ソースボリュームに割り当てられた複数のデータブロックのうちのいずれのデータブロックに対応するかを示す世代別データブロック情報を記憶する第２記憶部と、
復元対象世代のバックアップボリュームを、前記バックアップボリュームと、前記復元対象世代以降の前記世代別バックアップボリュームおよび前記世代別データブロック情報とに基づき復元する復元部と、を備えた、付記１〜付記６のいずれか一項に記載のストレージ装置。
【０１００】
（付記８）
バックアップ対象となるソースボリュームを有するストレージ装置を構成するコンピュータに、
前記ソースボリュームの全データをコピーしてバックアップボリュームを作成するフルコピー処理の後、前記ソースボリュームで更新されたデータブロックを前記バックアップボリュームの対応領域にコピーする差分コピー処理を行なう第１バックアップ処理と、
前記ソースボリュームにおける、前世代からの更新領域を含むデータブロックの更新前データブロックを、現在の世代に対応する世代別バックアップボリュームに保存する世代別バックアップ処理を行なう第２バックアップ処理と、を実行させるとともに、
前記第２バックアップ処理による前記世代別バックアップ処理の世代切替タイミングで、前記第１バックアップ処理による前記差分コピー処理を実行する、
処理を、前記コンピュータに実行させる、バックアッププログラム。
【０１０１】
（付記９）
スタートコマンドに応じて前記フルコピー処理を実行した後、前記世代切替タイミング毎に発行されるリスタートコマンドに応じて前記差分コピー処理を実行する、
処理を、前記コンピュータに実行させる、付記８記載のバックアッププログラム。
【０１０２】
（付記１０）
前記ソースボリュームに割り当てられた複数のデータブロックのそれぞれについて、当該データブロック内のデータが更新されたか否かを示す更新情報を記憶し、
前記第１バックアップ処理に際し、前記世代切替タイミングで前記更新情報に基づき前記差分コピー処理を行なうとともに、前記更新情報をリセットする、
処理を、前記コンピュータに実行させる、付記８または付記９に記載のバックアッププログラム。
【０１０３】
（付記１１）
前記第２バックアップ処理に際し、前記更新前データブロックに応じた容量の記憶領域を前記世代別バックアップボリュームとして確保し前記更新前データブロックに割り当てる、
処理を、前記コンピュータに実行させる、付記８〜付記１０のいずれか一項に記載のバックアッププログラム。
【０１０４】
（付記１２）
前記第２バックアップ処理に際し、所定の解放条件を満たした場合、前記世代別バックアップボリュームとして確保された記憶領域を解放する、
処理を、前記コンピュータに実行させる、付記１１記載のバックアッププログラム。
【０１０５】
（付記１３）
前記第２バックアップ処理に際し、保存すべき前記世代別バックアップボリュームの世代数が所定数を超えた場合、最古の世代別バックアップボリュームとして確保された記憶領域を解放する、
処理を、前記コンピュータに実行させる、付記１２記載のバックアッププログラム。
【０１０６】
（付記１４）
複数の前記世代別バックアップボリュームのそれぞれについて、当該世代別バックアップボリュームに保存されている前記更新前データブロックが、前記ソースボリュームに割り当てられた複数のデータブロックのうちのいずれのデータブロックに対応するかを示す世代別データブロック情報を記憶し、
復元対象世代のバックアップボリュームを、前記バックアップボリュームと、前記復元対象世代以降の前記世代別バックアップボリュームおよび前記世代別データブロック情報とに基づき復元する、
処理を、前記コンピュータに実行させる、付記８〜付記１３のいずれか一項に記載のバックアッププログラム。
【０１０７】
（付記１５）
バックアップ対象となるソースボリュームを有するストレージ装置におけるバックアップ方法であって、
前記ソースボリュームの全データをコピーしてバックアップボリュームを作成するフルコピー処理の後、前記ソースボリュームで更新されたデータブロックを前記バックアップボリュームの対応領域にコピーする差分コピー処理を行なう第１バックアップ処理と、
前記ソースボリュームにおける、前世代からの更新領域を含むデータブロックの更新前データブロックを、現在の世代に対応する世代別バックアップボリュームに保存する世代別バックアップ処理を行なう第２バックアップ処理と、を実行するとともに、
前記第２バックアップ処理による前記世代別バックアップ処理の世代切替タイミングで、前記第１バックアップ処理による前記差分コピー処理を実行する、バックアップ方法。
【０１０８】
（付記１６）
スタートコマンドに応じて前記フルコピー処理を実行した後、前記世代切替タイミング毎に発行されるリスタートコマンドに応じて前記差分コピー処理を実行する、付記１５記載のバックアップ方法。
【０１０９】
（付記１７）
前記ソースボリュームに割り当てられた複数のデータブロックのそれぞれについて、当該データブロック内のデータが更新されたか否かを示す更新情報を記憶し、
前記第１バックアップ処理に際し、前記世代切替タイミングで前記更新情報に基づき前記差分コピー処理を行なうとともに、前記更新情報をリセットする、付記１５または付記１６に記載のバックアップ方法。
【０１１０】
（付記１８）
前記第２バックアップ処理に際し、前記更新前データブロックに応じた容量の記憶領域を前記世代別バックアップボリュームとして確保し前記更新前データブロックに割り当てる、付記１５〜付記１７のいずれか一項に記載のバックアップ方法。
【０１１１】
（付記１９）
前記第２バックアップ処理に際し、所定の解放条件を満たした場合、前記世代別バックアップボリュームとして確保された記憶領域を解放する、付記１８記載のバックアップ方法。
【０１１２】
（付記２０）
複数の前記世代別バックアップボリュームのそれぞれについて、当該世代別バックアップボリュームに保存されている前記更新前データブロックが、前記ソースボリュームに割り当てられた複数のデータブロックのうちのいずれのデータブロックに対応するかを示す世代別データブロック情報を記憶し、
復元対象世代のバックアップボリュームを、前記バックアップボリュームと、前記復元対象世代以降の前記世代別バックアップボリュームおよび前記世代別データブロック情報とに基づき復元する、付記１５〜付記１９のいずれか一項に記載のバックアップ方法。
【符号の説明】
【０１１３】
１    ストレージ装置
１００    バックアップ装置
２    ホスト装置（業務サーバ，ホストコンピュータ）
１１    ＣＡ（Channel Adapter）
１２    ＣＭ（Centralized Module）
１３    ディスク（ＨＤＤ；Disk）
１３ａ    ソースボリューム（バックアップ対象ボリューム；業務ボリューム）
１３ｂ    バックアップボリューム用領域
１３ｃ    プール領域
１３０    バックアップボリューム
１３１〜１３４    世代別バックアップボリューム（ＳＤＶ；Snap Data Volume）
２１    ＣＰＵ（Central Processing Unit）
２２    メモリ（第１記憶部，第２記憶部）
２２１    コピービットマップ
２２２    トラッキングビットマップ（更新情報）
２２３    ＳＤＶ用ビットマップ領域
２２３１〜２２３３    ＳＤＶ用ビットマップ（世代別データブロック情報，差分データ用ビットマップ）
２３    ＤＡ（Disk Adapter）
２４    コピー制御部（処理部）
２４１    第１バックアップ処理部
２４２    第２バックアップ処理部
２４３    制御部
２４４    復元部
【図１】
2014137711.tif 000003
【図２】
2014137711.tif 000004
【図３】
2014137711.tif 000005
【図４】
2014137711.tif 000006
【図５】
2014137711.tif 000007
【図６】
2014137711.tif 000008
【図７】
2014137711.tif 000009
【図８】
2014137711.tif 000010
【図９】
2014137711.tif 000011
【図１０】
2014137711.tif 000012
【図１１】
2014137711.tif 000013
【図１２】
2014137711.tif 000014