(57)【特許請求の範囲】
【請求項１】
第１の記憶領域に記憶されているデータの第１のスナップショットが第２の記憶領域に作成された状態で、前記第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成するスナップショット作成部と、
今回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を示す第１の状況情報と、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を示す第２の状況情報とを記憶する記憶部と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記第２の記憶領域の所定の領域に格納されているデータの読み出し要求があった場合、前記第２の状況情報に基づいて、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を確認する確認部と、
前記確認部により、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーが完了していると判断された場合、前記第１の記憶領域に記憶されている前記読み出し要求に応じたデータを読み出すデータ読み出し部とをさらに有することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記第１の記憶領域をスナップショットの作成先とした第３の記憶領域の所定の領域にデータの書き込み要求があった場合、前記スナップショット作成部は、前記第２の状況情報が物理コピーが完了したことを示す情報であり、かつ、今回の前記第１のスナップショットの作成に伴う前記第２の記憶領域への物理コピーの完了状況を示す第３の状況情報が物理コピー未完了を示す情報である場合、前記第１の記憶領域に記憶されている前記書き込み要求に応じたデータを前記第２の記憶領域に物理コピーした後に、前記第３の記憶領域に記憶されている前記書き込み要求に応じたデータを前記第１の記憶領域に物理コピーすることを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記第２のスナップショットは、第３の記憶領域に記憶されているデータのスナップショットであり、前記第１のスナップショットが存在する間は前記第１の記憶領域に格納され、
前記第１の記憶領域に記憶されているデータの第３のスナップショットが生成され、当該第３のスナップショットが前記第３の記憶領域に存在するとき、前記スナップショット作成部は、前記第２のスナップショットを生成することにより前記第３のスナップショットを前記第１の記憶領域に復元する
ことを特徴とする請求項１記載のデータ処理装置。
【請求項５】
第１の記憶領域に記憶されているデータの第１のスナップショットが第２の記憶領域に作成された状態で、前記第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成し、
今回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を示す第１の状況情報と、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を示す第２の状況情報とを記憶する、
ことを特徴とするデータ処理方法。
【請求項６】
コンピュータに、
第１の記憶領域に記憶されているデータの第１のスナップショットが第２の記憶領域に作成された状態で、前記第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成する作成手順、
今回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を示す第１の状況情報と、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を示す第２の状況情報とを記憶する記憶手順、
を実行させることを特徴とするデータ処理プログラム。
【請求項７】
第１の記憶領域と第２の記憶領域とを有する記憶装置と、
前記第１の記憶領域に記憶されているデータの第１のスナップショットが前記第２の記憶領域に作成された状態で、前記第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成するスナップショット作成部と、
今回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を示す第１の状況情報と、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの完了状況を示す第２の状況情報とを記憶する記憶部と、
を有することを特徴とするストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置、データ処理方法、データ処理プログラムおよびストレージ装置に関する。
【背景技術】
【０００２】
データベースに格納されているファイルのバックアップのため、定期的にデータベースの更新を止め、その時点でのファイルを保存する運用方法が知られている。
定期的にデータベースのバックアップを取る技術として、ある時点のデータイメージのコピーを瞬時に作成するスナップショットが知られている。スナップショットでは論理的には瞬時にディスクイメージのコピーを作成し、物理的にはデータアクセスが行われた時点で更新領域のコピーが行われる。このようなコピー方式は、いわゆるコピーオンライトと呼ばれている。
【０００３】
また、スナップショットを物理的に完全な複製データとしたい場合は、コピーオンライトを行うと同時にバックグラウンドでデータイメージ全体のコピーを行う方法も知られている。
【０００４】
スナップショットでは、以上のような機能を実現するためにデータイメージを一定の区画に分割し、区画毎にコピーが完了しているか否かを、例えばビットマップ形式で記録している。
【０００５】
通常、スナップショットはコピー元とは独立したデータとして運用可能である。例えばオリジナルデータをアプリケーションＡで使用し、スナップショットをアプリケーションＢで使用する、といった使い方が考えられる。そのため、使用者の視点で考えるとスナップショットから別のスナップショットを作成することも可能であることが望ましい。この場合、１つ目のスナップショットの作成に伴うコピー処理と、２つ目のスナップショットの作成に伴うコピー処理が協調して動作することになる。以下、この協調した２つのコピーをカスケードコピーと呼ぶ。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２４４５０１号公報
【特許文献２】特開２０１０−２６９３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
カスケードコピー処理は、カスケード元のスナップショットを作成してから、カスケード先のスナップショットを作成した場合にはデータを保証することができる。
しかしながら、例えば（特許文献２）の方法ではカスケード先のスナップショットを作成してから、そのコピー元ボリュームをコピー先としたスナップショットを作成する、つまり、カスケード元のスナップショットが後から作成された場合はスナップショット作成時のコピー元データが正しくコピー先に反映されることを保証することができないという問題がある。
【０００８】
本発明はこのような点に鑑みてなされたものであり、スナップショットにより作成されたデータの信頼性を保証するデータ処理装置、データ処理方法、データ処理プログラムおよびストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、開示のデータ処理装置が提供される。開示のデータ処理装置は、スナップショット作成部と、記憶部とを有している。
スナップショット作成部は、第１の記憶領域に記憶されているデータの第１のスナップショットが第２の記憶領域に作成された状態で、第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成する。
【００１０】
記憶部は、今回の第２のスナップショットの作成に伴う第１の記憶領域への物理コピーの進捗を示す第１の進捗情報と、前回の第２のスナップショットの作成に伴う第１の記憶領域への物理コピーの進捗を示す第２の進捗情報とを記憶する。
【発明の効果】
【００１１】
スナップショットにより作成されたデータの信頼性を保証することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のデータ処理装置の概要を示す図である。
【図２】第２の実施の形態のストレージシステムを示すブロック図である。
【図３】制御モジュールの機能を示すブロック図である。
【図４】ビットマップおよびカスケードビットマップを説明する図である。
【図５】カスケードビットマップの作成方法を説明する図である。
【図６】カスケードビットマップの作成方法を説明する図である。
【図７】カスケードビットマップの作成方法を説明する図である。
【図８】カスケードビットマップの作成方法を説明する図である。
【図９】制御方法を説明する際のボリュームの構成を示す図である。
【図１０】データ書き込み処理を示すフローチャートである。
【図１１】データ読み出し処理を示すフローチャートである。
【図１２】カスケードビットマップを用いた制御方法の具体例を示す図である。
【図１３】カスケードビットマップを用いない制御方法の具体例（比較例）を示す図である。
【図１４】カスケードビットマップを用いた制御方法の具体例を示す図である。
【図１５】カスケードビットマップを用いた制御方法の具体例を示す図である。
【図１６】カスケードビットマップを用いた制御方法の具体例を示す図である。
【図１７】第２の実施の形態の処理の応用例を示す図である。
【発明を実施するための形態】
【００１３】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のデータ処理装置について説明し、その後、実施の形態をより具体的に説明する。
【００１４】
＜第１の実施の形態＞
図１は、第１の実施の形態のデータ処理装置の概要を示す図である。
実施の形態のデータ処理装置１は、スナップショット作成部１ａと、記憶部１ｂとを有している。
【００１５】
スナップショット作成部１ａは、第１の記憶領域２ａに記憶されているデータの第１のスナップショットが第２の記憶領域２ｂに作成された状態で、第１の記憶領域２ａをスナップショットの作成先とした第２のスナップショットを作成する。
【００１６】
図１では、第３の記憶領域２ｃが有する領域ａ、ｂ、ｃ、ｄに記憶されているデータの第２のスナップショットを第１の記憶領域２ａが有する領域ａ、ｂ、ｃ、ｄに作成する。
第１の記憶領域２ａ、第２の記憶領域２ｂ、および第３の記憶領域２ｃとしては、例えば、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）や、ＳＳＤ（Solid State Drive）等が挙げられる。
【００１７】
また、第１の記憶領域２ａ、第２の記憶領域２ｂ、および第３の記憶領域２ｃは、それぞれ別個の記憶装置であってもよいし、１つの記憶装置内の異なる領域であってもよい。
スナップショットでは、論理的には、瞬時にディスクイメージのコピーを作成し、物理的には、データアクセスが行われた時点で更新領域のコピー（物理コピー）が行われる。このため、領域毎に、スナップショットの作成に伴う物理コピーの進捗を示す進捗情報が記憶される。
【００１８】
この進捗情報は、例えば、スナップショット作成部１ａが作成することができる。
記憶部１ｂは、今回の第２のスナップショットの作成に伴う第１の記憶領域２ａへの物理コピーの進捗を示す第１の進捗情報３ａと、前回の第２のスナップショットの作成に伴う第１の記憶領域２ａへの物理コピーの進捗を示す第２の進捗情報３ｂとを記憶する。すなわち、図１では、第３の記憶領域２ｃに記憶されているデータの第２のスナップショットが、第１の記憶領域２ａに少なくとも２回作成されていることを示している。なお、本実施の形態では、第１の進捗情報３ａと第２の進捗情報３ｂをビットマップ形式で記憶している。
【００１９】
第１の進捗情報３ａおよび第２の進捗情報３ｂが示す４つの領域は、それぞれ、第３の記憶領域２ｃおよび第１の記憶領域２ａが有する領域ａ、ｂ、ｃ、ｄに対応している。
第１の進捗情報３ａおよび第２の進捗情報３ｂの各ビットには、第１の記憶領域２ａに対し、物理コピーが完了しているか否かを示す値（完了を示す「０」または未完了を示す「１」）が設定される。なお、第１の進捗情報３ａは、今回の第２のスナップショットを新たに作成するにあたり、全てのビットの値が「１」にリセットされている。
【００２０】
図１では、第１の進捗情報のビットの値は、全て「１」であるため、今回の第２のスナップショットの作成に伴う第３の記憶領域２ｃから第１の記憶領域２ａへの物理コピーは、いずれの領域ａ、ｂ、ｃ、ｄにおいても未だ作成が完了していないことを示している。
【００２１】
他方、第２の進捗情報は、領域ａ、ｂに対応するビットの値が「１」であり、領域ｃ、ｄに対応するビットの値が「０」であるため、前回の第２のスナップショットの作成に伴う第３の記憶領域２ｃから第１の記憶領域２ａへの物理コピーは、領域ｃ、ｄについては完了していることを示している。
【００２２】
また、記憶部１ｂは、第１のスナップショットについても第２のスナップショットと同様に、今回の第１のスナップショットの作成に伴う第１の記憶領域２ａから第２の記憶領域２ｂへの物理コピーの進捗を示す第３の進捗情報３ｃを記憶することができる。なお、図１では、第１のスナップショットについて第２の進捗情報に対応する進捗情報が作成されていない。これは、第１のスナップショットが１回しか作成されていないことを示している。なお、第１のスナップショットについて第２の進捗情報に対応する進捗情報として、全てのビットの値が「１」である進捗情報を作成するようにしてもよい。
【００２３】
また、本実施の形態のデータ処理装置１は、確認部１ｃとデータ読み出し部１ｄを備えることができる。
確認部１ｃは、第２の記憶領域２ｂの所定の領域に格納されているデータの読み出し要求があった場合、第２の進捗情報３ｂに基づいて、前回の第２のスナップショットの作成に伴う第３の記憶領域２ｃから第１の記憶領域２ａへの物理コピーの進捗を確認する。本実施の形態では、第２の記憶領域２ｂの領域ｄのデータ読み出し要求があった場合を例示する。
【００２４】
データ読み出し部１ｄは、図示しないデータ処理装置１以外の装置からの第１の記憶領域２ａ、第２の記憶領域２ｂおよび第３の記憶領域２ｃへのデータ読み出し要求を制御する。
【００２５】
第２の記憶領域２ｂの領域ｄのデータ読み出し要求があった場合、確認部１ｃは、第１の進捗情報３ａ、第２の進捗情報３ｂおよび第３の進捗情報３ｃに基づいて、領域ｄへのデータの物理コピーが完了しているか否かを判断する。
【００２６】
具体的には、まず、確認部１ｃは、読み出し要求に応じたデータの記憶先を特定するために、第３の進捗情報３ｃの領域ｄに対応するビットを参照する。第３の進捗情報３ｃの領域ｄに対応するビットは、「１」であるため、コピーが未完了であることを示している。従って、データ読み出し部１ｄは、第２の記憶領域２ｂには、読み出し要求に応じたデータが未だ記憶されていないと判断する。
【００２７】
次に、確認部１ｃは、読み出し要求に応じたデータの記憶先を特定するために、第１の記憶領域２ａをスナップショット作成先とする第３の記憶領域２ｃとの間の第１の進捗情報３ａおよび第２の進捗情報３ｂを参照する。
【００２８】
第１の進捗情報３ａの領域ｄに対応するビットは、「１」であるため、コピーが未完了であることを示している。しかし、第２の進捗情報３ｂの領域ｄに対応するビットは、「０」であるため、コピーが完了であることを示している。従って、確認部１ｃは、領域ｄについては第２のスナップショットの作成に伴う物理コピーが完了していると判断し、第１の記憶領域２ａに読み出すべきデータが存在していると判断する。そして、確認部１ｃは、判断結果をデータ読み出し部１ｄに通知する。データ読み出し部１ｄは、確認部１ｃから通知された判断結果に基づいて、第１の記憶領域２ａの領域ｄからデータを読み出す。そして、読み出したデータを前述したデータ処理装置１以外の装置に送信する。
【００２９】
仮に、確認部１ｃが第１の進捗情報３ａおよび第３の進捗情報３ｃのみに基づいて、領域ｄへのデータのコピーが完了しているか否かを判断すると、第１の進捗情報３ａおよび第３の進捗情報３ｃの領域ｄに対応するビットは、いずれも「１」であるため、領域ｄにについて第３の記憶領域２ｃから第１の記憶領域２ａへの物理コピーが未完了であることを示している。従って、確認部１ｃは、第３の記憶領域２ｃに読み出すべきデータが存在していると判断する。このため、データ読み出し部１ｄは、第３の記憶領域２ｃの領域ｄからデータを読み出してしまう。
【００３０】
ところが、第１の進捗情報３ａは、今回の第２のスナップショットを再度、作成するにあたり、全てのビットの値が「１」にリセットされている。このため、現時点での第１の進捗情報３ａは、前回のスナップショットにおけるコピーが完了しているか否かを示す結果が保証できないものとなっている。例えば、第３の記憶領域２ｃの領域ｄに記憶されているデータが前回の第２のスナップショット作成後に更新されている場合も全てのビットの値が「１」にリセットされている。リセットされているため、確認部１ｃは、第１の記憶領域２ａに読み出すべきデータが存在していると判断する。この判断のため、データ読み出し部１ｄは、更新されたデータ（読み出し対象とは異なるデータ）を読み出してしまう。
【００３１】
本実施の形態のデータ処理装置１によれば、第２の進捗情報３ｂを、第１の進捗情報３ａとは別個に記憶することにより、今回のスナップショットの作成後においても、前回の第２のスナップショットに伴う第１の記憶領域２ａへの物理コピーの進捗を把握することができる。従って、前回の第２のスナップショットが作成された後に、第３の記憶領域２ｃのデータが更新された場合においても、データ読み出し部１ｄが読み出し要求とは異なるデータを読み出すことを抑制することができる。
【００３２】
なお、スナップショット作成部１ａは、データ処理装置１が有するＣＰＵ（Central Processing Unit）が備える機能により実現することができる。また、記憶部１ｂは、データ処理装置１が有するＲＡＭ（Random Access Memory）やハードディスクドライブ等が備えるデータ記憶領域により実現することができる。
【００３３】
以下、実施の形態をより具体的に説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態のストレージシステムを示すブロック図である。
【００３４】
ストレージシステム１００は、ホストコンピュータ３０と、ストレージ装置４０とを有している。
ストレージ装置４０は、制御モジュール（ＣＭ：Controller Module）１０ａ、１０ｂ、１０ｃと、ドライブエンクロージャ（ＤＥ：Drive Enclosure）２０とを有している。
【００３５】
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ、ストレージ装置４０に対し着脱可能になっている。
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ、同じ機能を有しており、ストレージ装置４０のドライブエンクロージャ２０へのデータ書き込み、およびドライブエンクロージャ２０からのデータの読み出しを制御する。同じ機能を有する制御モジュールを２以上有することで、ストレージシステム１００は、システムの冗長性が確保されている。
【００３６】
ここで、制御モジュール１０ａは、ＣＰＵ１１によって装置全体が制御されている。
ＣＰＵ１１には、内部バスを介してメモリ１２、チャネルアダプタ（ＣＡ：Channel Adapter）１３およびファイバチャネル（ＦＣ：Fibre Channel）スイッチ１４が接続されている。
【００３７】
メモリ１２には、ＣＰＵ１１に実行させるプログラムの少なくとも一部が一時的に格納される。また、メモリ１２には、ＣＰＵ１１による処理に必要な各種データが格納される。さらに、メモリには、後述するコピービットマップおよびカスケードビットマップが格納される。
【００３８】
チャネルアダプタ１３は、ファイバチャネルスイッチ３１に接続され、ファイバチャネルスイッチ３１を介してホストコンピュータ３０のチャネルＣＨ１、ＣＨ２、ＣＨ３、ＣＨ４に接続される。この経路を介して、ホストコンピュータ３０と、ＣＰＵ１１との間でデータの送受信が行われる。
【００３９】
ファイバチャネルスイッチ１４は、外部のドライブエンクロージャ２０に接続される。ＣＰＵ１１は、ファイバチャネルスイッチ１４を介して外部のドライブエンクロージャ２０との間でデータの送受信を行う。
【００４０】
なお、制御モジュール１０ｂ、１０ｃのハードウェア構成も、制御モジュール１０ａと同様である。
制御モジュール１０ａ、１０ｂ、１０ｃは、それぞれ、アクセス指示情報としてＩ／Ｏコマンドをドライブエンクロージャ２０に送信し、ストレージ装置の記憶領域に対するデータの入出力指令を行う。また、入出力指令からアクセス監視時間が経過しても応答が得られないときは、このＩ／Ｏ処理を中断するアボート指示コマンドをドライブエンクロージャ２０に送信する。
【００４１】
ドライブエンクロージャ２０は、カスケードコピーの実行先、および実行元となる複数のボリュームを有している。ボリュームを構成するドライブとしては、例えばハードディスクドライブや、ＳＳＤや、光磁気ディスクや、光ディスク（ブルーレイ等）等が挙げられる。
【００４２】
ドライブエンクロージャ２０は、冗長性を考慮したＲＡＩＤ構成をなしていてもよい。
なお、図２では、１つのホストコンピュータ３０を図示しているが、複数のホストコンピュータが、ストレージ装置４０に接続されていてもよい。
【００４３】
このようなハードウェア構成によって、制御モジュール１０ａ、１０ｂおよび１０ｃの処理機能を実現することができる。
次に、制御モジュール１０ａの機能を説明する。
【００４４】
図３は、制御モジュールの機能を示すブロック図である。
Ｉ／Ｏ処理実行部１１０は、ホストコンピュータ３０とのＩ／Ｏ処理を実行する。具体的には、ホストコンピュータ３０からデータの読み出し要求を受信すると、ドライブエンクロージャ２０のデータ読み出し先のボリュームの指定された領域からデータを読み出し、ホストコンピュータ３０に応答する。また、ホストコンピュータ３０からデータの書き込み要求を受信すると、ドライブエンクロージャ２０のデータ書き込み先のボリュームの指定された領域にデータを書き込む。
【００４５】
また、Ｉ／Ｏ処理実行部１１０は、ホストコンピュータ３０からスナップショットを作成する旨の指示を受信すると、指示をカスケードコピー実行部１３０に送る。また、当該指示に対する応答をホストコンピュータ３０に応答する。
【００４６】
データ保持ボリューム検索部１２０は、Ｉ／Ｏ処理実行部１１０が受け付けた、書き込み要求の書き込み先のデータまたは読み出し要求の読み出し先のデータを保持するボリュームを判断する。具体的には、コピー元のボリュームからコピー先へのボリュームへのコピービットマップが物理コピー完了か否かを確認する。
【００４７】
また、データ保持ボリューム検索部１２０は、各ボリューム内に存在する不可欠データを検索する。なお、不可欠データについては、後述する。
カスケードコピー実行部１３０は、スナップショットを実行する機能を有している。また、カスケードコピー実行部１３０は、１つ目のスナップショットの作成に伴うコピー処理と２つ目のスナップショットの作成に伴うコピー処理とを協調して動作させるカスケードコピーを実行する。
【００４８】
カスケードコピー実行部１３０は、コピービットマップ作成・更新部１３１とカスケードビットマップ作成・更新部１３２とを有している。
コピービットマップ作成・更新部１３１は、スナップショットの作成に伴い、コピービットマップを作成する。また、コピービットマップ作成・更新部１３１は、カスケードコピーの実行に伴い、コピービットマップを更新する。
【００４９】
カスケードビットマップ作成・更新部１３２は、スナップショットの作成に伴い、カスケードビットマップを作成する。また、カスケードビットマップ作成・更新部１３２は、カスケードコピーの実行に伴い、カスケードビットマップを更新する。
【００５０】
コピービットマップ記憶部１４０は、コピービットマップを記憶する。
カスケードビットマップ記憶部１５０は、カスケードビットマップを記憶する。
次に、ビットマップおよびカスケードビットマップが示す内容を説明する。
【００５１】
＜ビットマップおよびカスケードビットマップ＞
図４は、ビットマップおよびカスケードビットマップを説明する図である。
本実施の形態では、説明を分かり易くするため、ボリュームＶｏｌ１およびボリュームＶｏｌ２を４つの記憶領域を示す領域ａ〜ｄに区切っている。
【００５２】
前述したように、コピービットマップ作成・更新部１３１は、スナップショットの作成に伴い、コピービットマップを作成する。作成されたコピービットマップＣｏＢ１は、領域ａ〜ｄに対応する４つのビットマップ格納部Ａ〜Ｄを有している。
【００５３】
コピービットマップ作成・更新部１３１は、各ビットマップ格納部Ａ〜Ｄに、それぞれ、領域ａ〜ｄの物理コピーが完了したことを示す「０」または領域ａ〜ｄのコピーが未完了であることを示す「１」を設定する。例えば、ボリュームＶｏｌ１からボリュームＶｏｌ２へのスナップショットの作成に伴い、ボリュームＶｏｌ１の領域ａからボリュームＶｏｌ２の領域ａへのデータの物理コピーが完了した場合、コピービットマップ作成・更新部１３１は、コピービットマップＣｏＢ１のビットマップ格納部Ａを「０」に設定する。この設定により、コピービットマップＣｏＢ１のビットマップ格納部Ａを参照することで、ボリュームＶｏｌ１の領域ａからボリュームＶｏｌ２の領域ａへのデータの物理コピーが終了したことを判断することができる。
【００５４】
また、カスケードビットマップ作成・更新部１３２は、スナップショットの作成や、カスケードコピーに伴い、カスケードビットマップを作成する。例えば、作成されたカスケードビットマップＣａＢ１は、領域ａ〜ｄに対応する４つのビットマップ格納部Ｅ〜Ｈを有している。
【００５５】
ここで、ビットマップ格納部Ｅは、ビットマップ格納部Ａに対応している。ビットマップ格納部Ｆは、ビットマップ格納部Ｂに対応している。ビットマップ格納部Ｇは、ビットマップ格納部Ｃに対応している。ビットマップ格納部Ｈは、ビットマップ格納部Ｄに対応している。
【００５６】
カスケードビットマップ作成・更新部１３２は、各ビットマップ格納部Ｅ〜Ｈに、それぞれ、領域ａ〜ｄの物理コピーが完了したことを示す「０」または領域ａ〜ｄの物理コピーが未完了であることを示す「１」を設定する。
【００５７】
例えば、ボリュームＶｏｌ１の領域ａからボリュームＶｏｌ２の領域ａにスナップショットが再作成された場合、カスケードビットマップ作成・更新部１３２は、カスケードビットマップＣａＢ１のビットマップ格納部Ｅを「０」に設定する。
【００５８】
この設定により、カスケードビットマップＣａＢ１のビットマップ格納部Ｅを参照することで、コピービットマップＣｏＢが書き換えられた場合でも、ボリュームＶｏｌ１の領域ａからボリュームＶｏｌ２の領域ａへの物理コピーが完了していることを判断することができる。
【００５９】
なお、以下の説明では、符号Ａ〜Ｈの図示を省略する。
次に、カスケードビットマップの作成方法を説明する。
＜カスケードビットマップの作成方法＞
＜ルール１＞
図５は、カスケードビットマップの作成方法を説明する図である。
【００６０】
本実施の形態では、単独のスナップショットや、カスケードコピーを新規にスタートする場合は、カスケードビットマップ作成・更新部１３２が、全てのビットを物理コピー未完了（ビット＝１）のカスケードビットマップを用意する。
【００６１】
図５（ａ）は、ボリュームＶｏｌ１のスナップショットαをボリュームＶｏｌ２に作成する場合を示している。
ボリュームＶｏｌ１のスナップショットαの作成をボリュームＶｏｌ２に開始する場合、カスケードビットマップ作成・更新部１３２は、ビットマップ格納部Ｅ〜Ｈにいずれも「１」を設定したカスケードビットマップＣａＢ１を作成する。
【００６２】
また、コピービットマップ作成・更新部１３１は、ビットマップ格納部Ａ〜Ｄにいずれも「１」を設定したコピービットマップＣｏＢ１を作成する。
ここで、コピービットマップＣｏＢ１は、これから実行するスナップショットαに伴う物理コピーの進捗に応じて、各ビットマップ格納部Ａ〜Ｄの値が変化するのに対し、カスケードビットマップＣａＢ１は、これから実行するスナップショットαの次のスナップショットαが実行されるまで、各ビットマップ格納部Ｅ〜Ｈの値はいずれも「１」のままである点で異なる。
【００６３】
図５（ｂ）は、ボリュームＶｏｌ２のスナップショットβをボリュームＶｏｌ３に作成する場合を示している。
なお、スナップショットαの「α」およびスナップショットβの「β」は、識別符号としての役割を有しており、スナップショットの順序を示すものではない。
【００６４】
ボリュームＶｏｌ１のスナップショットαに伴う物理コピーとボリュームＶｏｌ２のスナップショットβに伴う物理コピーが協調して動作しているため、当該コピーは、カスケードコピーとなる。以下、スナップショットαに伴う物理コピーを「カスケード元のコピー」と言う。また、スナップショットβに伴う物理コピーを「カスケード先のコピー」と言う。
【００６５】
ボリュームＶｏｌ２のスナップショットβの作成をボリュームＶｏｌ３に開始する場合、コピービットマップ作成・更新部１３１は、ビットマップ格納部Ａ〜Ｄにいずれも「１」を設定したコピービットマップＣｏＢ２を作成する。
【００６６】
また、カスケードビットマップ作成・更新部１３２は、ビットマップ格納部Ｅ〜Ｈにいずれも「１」を設定したカスケードビットマップＣａＢ２を作成する。
なお、本実施の形態では、スナップショットαおよびスナップショットβを作成する時点でコピービットマップおよびカスケードビットマップを作成した。しかし、これに限らず、スナップショットを作成する時点では、カスケードビットマップを作成せず、カスケードコピーを実行する際に、カスケードビットマップを作成するようにすることもできる。
【００６７】
＜ルール２＞
図６は、カスケードビットマップの作成方法を説明する図である。
図６（ａ）は、カスケードコピー動作中を示している。具体的には、カスケードコピー実行部１３０が、スナップショットαを実行した結果、データイメージのコピーは、ボリュームＶｏｌ２に瞬時にコピーされる。その後、ボリュームＶｏｌ１の領域ａ、ｂのボリュームＶｏｌ２に対する物理コピーが完了していることを示している。
【００６８】
図６（ｂ）、（ｃ）は、ボリュームＶｏｌ１〜ボリュームＶｏｌ３のカスケードコピーが設定されている状態で、カスケードコピー実行部１３０が、ボリュームＶｏｌ１からボリュームＶｏｌ２へのスナップショットα（カスケード元のコピー）を再作成（１から新たに再度作成）した場合を示している。
【００６９】
カスケードコピー実行部１３０は、ボリュームＶｏｌ２とボリュームＶｏｌ３とのカスケードコピーが設定されている状態で、ボリュームＶｏｌ１からボリュームＶｏｌ２へのスナップショット（カスケード元のコピー）を再作成すると、カスケードビットマップ作成・更新部１３２は、図６（ｂ）に示すように、コピービットマップＣｏＢ１のビットマップ格納部Ａ〜Ｄに記憶されているデータと、カスケードビットマップＣａＢ１のビットマップ格納部Ｅ〜Ｈに記憶されているデータとの論理積（ＡＮＤ）を取る。論理積を取ることにより、コピービットマップＣｏＢ１の、スナップショットαに伴う物理コピーが完了している領域が、カスケードビットマップＣａＢ１に上書きされる。
【００７０】
その後、コピービットマップ作成・更新部１３１は、図６（ｃ）に示すように、コピービットマップＣｏＢ１を更新する。例えば、スナップショットの再作成により、ボリュームＶｏｌ１の領域ａ〜ｄの全てをボリュームＶｏｌ２に物理コピーする場合、コピービットマップ作成・更新部１３１は、コピービットマップＣｏＢ１のビットマップ格納部Ａ〜Ｄの全てのビットを物理コピー未完了（ビット＝１）に更新する。
【００７１】
ルール２に従い、カスケードビットマップ作成・更新部１３２が、スナップショットα再作成時にコピービットマップＣｏＢ１のデータをカスケードビットマップＣａＢ１に上書きして退避することにより、スナップショットαの再作成を実行したときの、ドライブエンクロージャ２０から読み出すデータの信頼性を保証することができる。
【００７２】
＜ルール３＞
図７は、カスケードビットマップの作成方法を説明する図である。
図７（ａ）は、ボリュームＶｏｌ２からボリュームＶｏｌ３へのスナップショットβを示している。
【００７３】
ボリュームＶｏｌ２からボリュームＶｏｌ３へのスナップショットβの実行後に、ボリュームＶｏｌ１からボリュームＶｏｌ２へのスナップショットαを開始する場合、スナップショットβが、カスケード先のスナップショットとなり、スナップショットαがカスケード元のスナップショットとなる。
【００７４】
図７（ｂ）に示すように、カスケードビットマップ作成・更新部１３２は、最初のスナップショットαの開始時に、全てのビットを物理コピー完了（ビット＝０）に設定したカスケードビットマップＣａＢ１を作成する。そして、例えばカスケードコピー実行部１３０が、ボリュームＶｏｌ１の領域ａ〜ｄの全部をスナップショットαによりボリュームＶｏｌ２にコピーする場合、カスケードビットマップ作成・更新部１３２は、コピービットマップＣｏＢ１の全てのビットを物理コピー未完了（ビット＝１）に設定する。
【００７５】
最初のスナップショットαの開始時に、カスケードビットマップＣａＢ１の全てのビットを物理コピー完了（ビット＝０）に設定することにより、カスケードビットマップＣａＢ１は、データ読み出しまたはデータ書き込み要求時には、ボリュームＶｏｌ２に記憶されているデータをそのまま適用可能であることを示す情報となる。従って、カスケード元のスナップショットαを後から作成する場合であってもドライブエンクロージャ２０から読み出すデータの信頼性を保証することができる。
【００７６】
＜ルール４＞
図８は、カスケードビットマップの作成方法を説明する図である。
図８（ａ）は、ボリュームＶｏｌ１〜ボリュームＶｏｌ３のカスケードコピー動作中を示している。
【００７７】
図８（ｂ）は、ボリュームＶｏｌ２とボリュームＶｏｌ３とのスナップショットが再作成されたときのコピービットマップおよびカスケードビットマップの設定を説明する図である。
【００７８】
カスケードコピー実行部１３０が、ボリュームＶｏｌ１とボリュームＶｏｌ２とのカスケード元のコピーを設定している状態で、ボリュームＶｏｌ２とボリュームＶｏｌ３とのカスケード先のスナップショットを再作成すると、カスケードビットマップ作成・更新部１３２は、カスケード元のカスケードビットマップＣａＢ１の全てのビットを未完了（ビット＝１）に設定する。この設定は、カスケード元、カスケード先の順番でカスケードコピーが実行された場合は、カスケードコピー実行部１３０がコピービットマップＣｏＢ１およびコピービットマップＣｏＢ２のみでコピーを管理することができるため、カスケードビットマップＣａＢ１が、カスケードコピーに影響を与えないようにするためである。
【００７９】
次に、ホストコンピュータ３０からデータ書き込み要求またはデータ読み出し要求を受信したときの、ストレージ装置４０のカスケードビットマップを用いた制御方法を、フローチャートを用いて説明する。
【００８０】
図９は、制御方法を説明する際のボリュームの構成を示す図である。
フローチャートを説明するにあたり、図９に示すボリュームの構成を想定する。図９では、本実施の形態のドライブエンクロージャ２０が有するドライブを、（２ｎ＋１）個のボリュームに分けた場合を示している。
【００８１】
以下、ボリュームＶｏｌ（ｎ）から見てボリュームＶｏｌ１に向かう方向をカスケード元側、ボリュームＶｏｌ（ｎ）から見てボリュームＶｏｌ（２ｎ）に向かう方向をカスケード先側と言う。
【００８２】
図１０は、データ書き込み処理を示すフローチャートである。
［ステップＳ１］  Ｉ／Ｏ処理実行部１１０が、ボリュームＶｏｌ（ｎ）に対するデータの書き込み要求を受け取ると、ステップＳ２に遷移する。
【００８３】
［ステップＳ２］  データ保持ボリューム検索部１２０が、コピービットマップＣｏＢ（ｎ−１）を参照し、書き込み要求があったボリュームＶｏｌ（ｎ）の領域に対応するビット（以下、「対応ビット」と言う）を参照し、対応ビット＝０か否かを判断する。対応ビット＝０であれば（ステップＳ２のＹｅｓ）、データ保持ボリューム検索部１２０は、書き込み要求があったボリュームＶｏｌ（ｎ）の区画が物理コピー完了であると判断し、ステップＳ８に遷移する。対応ビット＝０でなければ、（ステップＳ２のＮｏ）、データ保持ボリューム検索部１２０は、書き込み要求があったボリュームＶｏｌ（ｎ）の区画が物理コピー完了ではないと判断し、ステップＳ３に遷移する。
【００８４】
［ステップＳ３］  データ保持ボリューム検索部１２０が、ボリュームＶｏｌ（ｎ＋１）に不可欠データが存在するか否かを判断する。
不可欠データが存在するか否かの判定は、ボリュームＶｏｌ（ｎ）からボリュームＶｏｌ（ｎ＋１）へのカスケードコピーに対応するカスケードビットマップＣａＢ（ｎ）の対応ビットの物理コピーが完了（ビット＝０）に設定されており、なおかつ、ボリュームＶｏｌ（ｎ＋１）をコピー元とするコピー処理のコピービットマップの対応ビットの物理コピーが未完了（ビット＝１）に設定されている場合に、ボリュームＶｏｌ（ｎ＋１）に不可欠データが存在すると判定する。
【００８５】
ボリュームＶｏｌ（ｎ＋１）に不可欠データが存在しない場合（ステップＳ３のＮｏ）、ステップＳ６に遷移する。ボリュームＶｏｌ（ｎ＋１）に不可欠データが存在する場合（ステップＳ３のＹｅｓ）、ステップＳ４に遷移する。
【００８６】
［ステップＳ４］  データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ＋１）からカスケード先側に向かって不可欠データの存在しないボリューム（以下、ボリュームＶｏｌ（Ｘ）とする）を検索する。ボリュームＶｏｌ（Ｘ）が見つかればステップＳ５に遷移する。ボリュームＶｏｌ（Ｘ）が見つからなければ、最後尾のボリュームＶｏｌ（２ｎ）をボリュームＶｏｌ（Ｘ）に設定する。
【００８７】
［ステップＳ５］  データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ＋１）からボリュームＶｏｌ（Ｘ）までの物理コピーをカスケード先側に向かって順番に実施する。例えば、ボリュームＶｏｌ（Ｘ）がボリュームＶｏｌ（ｎ＋３）であれば、まず、ボリュームＶｏｌ（ｎ＋１）からボリュームＶｏｌ（ｎ＋２）の物理コピーを行う。次に、ボリュームＶｏｌ（ｎ＋２）からボリュームＶｏｌ（ｎ＋３）の物理コピーを行う。
【００８８】
その後、ボリュームＶｏｌ（ｎ）からボリュームＶｏｌ（ｎ＋１）へのスナップショットに対応するコピービットマップＣｏＢ（ｎ）の対応ビットを物理コピー完了（ビット＝０）に設定する。その後、ステップＳ６に遷移する。
【００８９】
［ステップＳ６］  データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ）からカスケード元側に向かってデータ保持ボリュームを検索する。具体的には、カスケード元側のコピービットマップまたはカスケードビットマップのいずれかが物理コピー完了（ビット＝０）であれば、データ保持ボリューム検索部１２０は、この物理コピー完了（ビット＝０）であるコピービットマップまたはカスケードビットマップが物理コピー完了を示すコピー先のボリューム（例えば、カスケードビットマップ（ＣａＢ（ｎ−１）であればボリュームＶｏｌ（ｎ））をデータ保持ボリュームと判断する。カスケード元側に全て遡ってもアクセス範囲が物理コピー完了のセッションが見つからなかった場合は、データ保持ボリューム検索部１２０は、カスケードの開始ボリュームＶｏｌ１をデータ保持ボリュームと判断する。ボリュームの判断が終了すると、ステップＳ７に遷移する。
【００９０】
［ステップＳ７］  カスケードコピー実行部１３０は、ステップＳ６にて決定したデータ保持ボリュームからボリュームＶｏｌ（ｎ＋１）へ物理コピーを実施する。データ保持ボリュームからボリュームＶｏｌ（ｎ＋１）へ物理コピーが完了すると、コピービットマップ作成・更新部１３１は、コピービットマップＣｏＢ（ｎ）の対応ビットを物理コピー完了（ビット＝０）に設定する。
【００９１】
［ステップＳ８］  データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ−１）からボリュームＶｏｌ（ｎ）へのコピービットマップＣｏＢ（ｎ−１）の対応ビットを参照し、対応ビット＝０か否かを判断する。対応ビット＝０であれば（ステップＳ８のＹｅｓ）、書き込み要求があったボリュームＶｏｌ（ｎ）の区画が物理コピー完了であると判断し、ステップＳ１１に遷移する。対応ビット＝０でなければ、（ステップＳ８のＮｏ）、書き込み要求があったボリュームＶｏｌ（ｎ）の区画が物理コピー完了ではないと判断し、ステップＳ９に遷移する。
【００９２】
［ステップＳ９］  データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ−１）からカスケード元側に向かってデータ保持ボリュームを検索する。コピービットマップまたはカスケードビットマップのいずれかの対応ビットが物理コピー完了（ビット＝０）であれば、データ保持ボリューム検索部１２０は、この物理コピー完了（ビット＝０）であるコピービットマップまたはカスケードビットマップが物理コピー完了を示すコピー先のボリュームをデータ保持ボリュームと判断する。カスケード元側に全て遡ってもアクセス範囲が物理コピー完了のセッションが見つからなかった場合は、カスケードの開始ボリュームであるボリュームＶｏｌ１をデータ保持ボリュームに決定する。その後、ステップＳ１０に遷移する。
【００９３】
［ステップＳ１０］  カスケードコピー実行部１３０は、ステップＳ９にて決定したデータ保持ボリュームからボリュームＶｏｌ（ｎ）へ物理コピーを実施する。そしてコピービットマップ作成・更新部１３１は、コピービットマップＣｏＢ（ｎ−１）の対応ビットを物理コピー完了（ビット＝０）に設定する。その後、ステップＳ１１に遷移する。
【００９４】
［ステップＳ１１］  Ｉ／Ｏ処理実行部１１０は、データの書き込みＩ／Ｏを受け付けて、ホストコンピュータ３０に応答を返す。
その後、データ書き込み処理を終了する。
【００９５】
以上で、図１０に示す処理の説明を終了する。
次に、データ読み出し処理を説明する。
図１１は、データ読み出し処理を示すフローチャートである。
【００９６】
［ステップＳ２１］  Ｉ／Ｏ処理実行部１１０が、ボリュームＶｏｌ（ｎ）に対するデータの読み出し要求を受領すると、ステップＳ２２に遷移する。
［ステップＳ２２］  データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ−１）からボリュームＶｏｌ（ｎ）へのコピービットマップＣｏＢ（ｎ−１）の対応ビットを参照し、対応ビット＝０か否かを判断する。対応ビット＝０であれば（ステップＳ２２のＹｅｓ）、データ保持ボリューム検索部１２０は、読み出し要求があったボリュームＶｏｌ（ｎ）の領域が物理コピー完了であると判断し、ステップＳ２３に遷移する。対応ビット＝０でなければ、（ステップＳ２２のＮｏ）、データ保持ボリューム検索部１２０は、読み出し要求があったボリュームＶｏｌ（ｎ）の領域が物理コピー完了ではないと判断し、ステップＳ２４に遷移する。
【００９７】
［ステップＳ２３］  データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ）をデータ保持ボリュームであると判断する。その後、ステップＳ２５に遷移する。
［ステップＳ２４］  データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ）からカスケード元側に遡ってデータ保持ボリュームを検索する。コピービットマップまたはカスケードビットマップのいずれかの対応ビットが物理コピー完了（ビット＝０）であれば、データ保持ボリューム検索部１２０は、この物理コピー完了（ビット＝０）であるコピービットマップまたはカスケードビットマップが物理コピー完了を示すコピー先のボリュームをデータ保持ボリュームと判断する。カスケード元側に全て遡ってもアクセス範囲が物理コピー完了のセッションが見つからなかった場合は、データ保持ボリューム検索部１２０は、カスケードの開始ボリュームであるボリュームＶｏｌ１をデータ保持ボリュームであると判断する。その後、ステップＳ２５に遷移する。
【００９８】
［ステップＳ２５］  Ｉ／Ｏ処理実行部１１０は、ステップＳ２３またはステップＳ２４にてデータ保持ボリューム検索部１２０が判断したデータ保持ボリュームのデータをホストコンピュータ３０に応答する。なお、データの読み出しの場合、特に物理コピーを行う必要がないため何らかの方法で応答すればよい。応答方法については特に限定されない。
【００９９】
その後、データ読み出し処理を終了する。
以上で、図１１に示す処理の説明を終了する。
＜カスケードビットマップを用いた制御の具体例＞
以降、前述したフローチャートの具体例１〜４を説明する。
【０１００】
＜具体例１＞
図１２は、カスケードビットマップを用いた制御方法の具体例を示す図である。
具体例１は、スナップショットβ、スナップショットαの順番にスナップショットが作成された場合において、スナップショットβに対するデータの読み出し要求を受け取った場合の動作を示す例である。
【０１０１】
図１２では、スナップショットの実行に伴う各ボリュームの論理イメージと物理イメージの両方を表示している。そして、対応するボリュームには同じ符号を付している。以下、図１４、図１５、図１６においても同様である。
【０１０２】
図１２に示すように、Ｉ／Ｏ処理実行部１１０が、ボリュームＶｏｌ３の領域ｄに対するデータ読み出し要求をホストコンピュータ３０から受信した場合、データ保持ボリューム検索部１２０は、各スナップショットのコピービットマップＣｏＢ１、ＣｏＢ２およびカスケードビットマップＣａＢ１、ＣａＢ２の領域ｄの対応ビットを確認する。スナップショットαのカスケードビットマップＣａＢ１の領域ｄに対応するビットマップ格納部Ｈのビットは物理コピー完了（ビット＝０）であることから、データ保持ボリューム検索部１２０は、スナップショットαの再作成前にボリュームＶｏｌ１からボリュームＶｏｌ２のコピー処理は済んでいたと判断することができる。従って、Ｉ／Ｏ処理実行部１１０は、ボリュームＶｏｌ２の領域ｄに対応する物理データをホストコンピュータ３０に応答する。
【０１０３】
図１３は、カスケードビットマップを用いない制御方法の具体例（比較例）を示す図である。
図１３（ａ）では、スナップショットεとスナップショットζが実行され、コピービットマップＣｏＢ９１、ＣｏＢ９２の各ビットが未完了（ビット＝１）に設定されている。
【０１０４】
その後、図１３（ｂ）に示すように、ボリュームＶｏｌ９１の領域ｄのデータＹが、ボリュームＶｏｌ９２に物理コピーされる。物理コピーが完了すると、コピービットマップＣｏＢ９１の領域ｄに対応するビットマップ格納部のビットがコピー完了（ビット＝０）に設定される。
【０１０５】
スナップショットεとスナップショットζによるボリュームＶｏｌ９３のデータの値を保証するには、ボリュームＶｏｌ９３の領域ｄに対しデータ読み出し要求があったときに、ボリュームＶｏｌ９２からスナップショットζを作成した時点のコピー元のデータ、すなわち、データＹが読める必要がある。
【０１０６】
しかし、図１３（ｂ）に示すように、ボリュームＶｏｌ９１の領域ｄのデータＹのボリュームＶｏｌ９２への物理コピーが完了した後に、ボリュームＶｏｌ９１のデータＹがデータＺに更新され、その後、図１３（ｃ）に示すように、カスケード元のスナップショットεを再作成した場合に前述したルール２を適用してしまうと、コピービットマップＣｏＢ９１の各ビットが未完了（ビット＝１）に設定されてしまう。
【０１０７】
この結果、コピービットマップＣｏＢ９１およびコピービットマップＣｏＢ９２の双方の領域ｄの対応ビットが未完了であるため、ボリュームＶｏｌ９１がデータを保持していると判定される。従って、図１３（ｄ）に示すように、ボリュームＶｏｌ９３の領域ｄに対しデータ読み出し要求があった場合には、更新が発生した後のボリュームＶｏｌ９１の領域「ｄ」のデータＺが読み出されてしまう。
【０１０８】
具体例１によれば、再作成時のコピービットマップＣｏＢ１の各ビットマップ格納部の値をカスケードビットマップＣａＢ１に退避することにより、スナップショットにより作成されたデータの信頼性を保証することができる。
【０１０９】
＜具体例２＞
図１４は、カスケードビットマップを用いた制御方法の具体例を示す図である。
具体例２は、多段カスケードコピーの中間ボリュームに対するリードデータの読み出し動作を示す例である。ここで、多段カスケードコピーとは、複数のカスケードコピーを連結させたものである。
【０１１０】
図１４に示すように、Ｉ／Ｏ処理実行部１１０が、ボリュームＶｏｌ（ｎ−１）の領域ｄに対するデータ読み出し要求をホストコンピュータ３０から受信した場合、データ保持ボリューム検索部１２０は、データの読み出し要求を受け付けたボリュームＶｏｌ（ｎ−１）からカスケード元側（ボリュームＶｏｌ（ｎ−２）、Ｖｏｌ（ｎ−３）、・・・）に向かって、データ保持ボリュームを検索する。コピービットマップまたはカスケードビットマップのいずれかの対応ビットが物理コピー完了（ビット＝０）であるボリュームを確認した場合、データ保持ボリューム検索部１２０は、該当コピー処理のコピー先ボリュームをデータ保持ボリュームと判断する。
【０１１１】
図１４では、カスケードビットマップＣａＢ１の対応ビットが物理コピー完了であることを示しているため、ボリュームＶｏｌ２がデータを保持していると判断することができる。従って、データ保持ボリューム検索部１２０は、ボリュームＶｏｌ２をデータ保持ボリュームと判断する。
【０１１２】
Ｉ／Ｏ処理実行部１１０は、ボリュームＶｏｌ２に格納されているデータをホストコンピュータ３０に応答する。
なお、応答の際には、コピー処理量を押さえるため、ボリュームＶｏｌ２のデータ読み出し要求に対応する物理データのみをボリュームＶｏｌ（ｎ−１）に物理コピーした上で、ボリュームＶｏｌ（ｎ−１）に格納されているデータ読み出し要求に対応する物理データをホストコンピュータ３０に応答するようにしてもよい。
【０１１３】
＜具体例３＞
図１５は、カスケードビットマップを用いた制御方法の具体例を示す図である。
具体例３は、スナップショットβ、スナップショットαの順番にスナップショットが作成された場合において、ボリュームＶｏｌ１に対するデータの書き込み要求を受け取った場合の動作を示す例である。
【０１１４】
図１５に示すように、Ｉ／Ｏ処理実行部１１０が、ボリュームＶｏｌ１の領域ｄに対するデータ書き込み要求をホストコンピュータ３０から受信した場合、スナップショットαのボリュームの領域ｄに対応するカスケードビットマップＣａＢ１のビットマップ格納部Ｈの値が物理コピー完了（ビット＝０）、かつ、スナップショットβの領域ｄに対応するコピービットマップＣｏＢ２のビットマップ格納部Ｄの値が未完了（ビット＝１）の場合、ボリュームＶｏｌ２にはスナップショットαの再作成前のデータが含まれ、なおかつ、この再作成前のデータをボリュームＶｏｌ３が必要としている。従って、データ保持ボリューム検索部１２０は、ボリュームＶｏｌ２は、不可欠データを含んでいると判断する。
【０１１５】
ボリュームＶｏｌ２が不可欠データを含むため、カスケードコピー実行部１３０は、ボリュームＶｏｌ２からボリュームＶｏｌ３への物理コピーにより不可欠データをボリュームＶｏｌ３にコピーした上でボリュームＶｏｌ１からボリュームＶｏｌ２への物理コピーを行う。その後、Ｉ／Ｏ処理実行部１１０が、受信した書き込み要求のデータをボリュームＶｏｌ１の領域ｄに書き込む。
【０１１６】
＜具体例４＞
図１６は、カスケードビットマップを用いた制御方法の具体例を示す図である。
具体例４は、多段カスケードの中間ボリュームに対するデータの書き込み要求を受け取った場合の動作を示す例である。
【０１１７】
図１６に示すように、Ｉ／Ｏ処理実行部１１０が、ボリュームＶｏｌ（ｎ−１）の領域ｄに対するデータ書き込み要求をホストコンピュータ３０から受信した場合、データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ−１）からボリュームＶｏｌ（ｎ）へのスナップショットのコピービットマップＣｏＢ（ｎ）を確認する。本具体例４では、コピービットマップＣｏＢ（ｎ−１）が未完了（ビット＝１）であるので、データ保持ボリューム検索部１２０は、ボリュームＶｏｌ（ｎ）からカスケード元側に向かって、データ保持ボリュームを検索する。
【０１１８】
図１６では、カスケードビットマップＣａＢ１の対応ビットが物理コピー完了（ビット＝０）であるため、データ保持ボリューム検索部１２０は、ボリュームＶｏｌ２がデータ保持ボリュームであると判断する。
【０１１９】
カスケードコピー実行部１３０は、ボリュームＶｏｌ２からボリュームＶｏｌ（ｎ−１）へのデータの物理コピー、およびボリュームＶｏｌ２からボリュームＶｏｌ（ｎ）へのデータの物理コピーを行う。
【０１２０】
なお、ボリュームＶｏｌ（ｎ）のデータ保持ボリュームがボリュームＶｏｌ（ｎ−１）より前の世代である場合、論理上、ボリュームＶｏｌ（ｎ−１）とボリュームＶｏｌ（ｎ）のデータ保持ボリュームは同じボリュームとなるため、その場合は２回目のデータ保持ボリュームの検索は省略してもよい。
【０１２１】
以上述べたように、実施の形態のストレージシステム１００によれば、スナップショットαに伴う物理コピー処理が完了しているかどうかに関わらず、スナップショットβのコピー先データから新たなスナップショットを作成することができる。また、スナップショットβに伴う物理コピー処理が完了しているかどうかに関わらず、スナップショットαのコピー元ボリュームをスナップショット作成先としてスナップショットを作成することができる。
【０１２２】
さらに、カスケードを構成するスナップショットのうち任意のスナップショットを再作成することができる。
従って、スナップショットにより作成されたデータの信頼性を保証することができる。
【０１２３】
＜応用例＞
図１７は、第２の実施の形態の処理の応用例を示す図である。
図１７に示すように、ボリュームＶｏｌ１１からボリュームＶｏｌ１２にスナップショットγが作成され、ボリュームＶｏｌ１１からボリュームＶｏｌ１３にスナップショットδが作成された場合、すなわち、同一のソースボリュームに対する複数のスナップショットが作成された場合、いずれか一方をソースボリュームに書き戻し（リストア）をしたい場合がある。例えば、ソースボリュームのデータが破壊されたときにバックアップとして採取していたスナップショットを用いて復旧する場合である。リストアをスナップショットによって行うことができれば、リストアが瞬時に完了するため望ましい。
【０１２４】
スナップショットγと、新規にスタートするリストア処理はカスケード関係となるため、ルール１〜ルール４に従ってコピービットマップとカスケードビットマップを作成、更新し、リストア処理を行うことにより、リストア処理によってリストアされたデータの信頼性を保証することができる。
【０１２５】
以上、本発明のデータ処理装置、データ処理方法、データ処理プログラムおよびストレージ装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１２６】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、データ処理装置１および制御モジュール１０ａ、１０ｂ、１０ｃが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１２７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１２９】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１３０】
以上の第１〜第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  第１の記憶領域に記憶されているデータの第１のスナップショットが第２の記憶領域に作成された状態で、前記第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成するスナップショット作成部と、
今回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を示す第１の進捗情報と、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を示す第２の進捗情報とを記憶する記憶部と、
を有することを特徴とするデータ処理装置。
【０１３１】
（付記２）  前記第２の記憶領域の所定の領域に格納されているデータの読み出し要求があった場合、前記第２の進捗情報に基づいて、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を確認する確認部と、
前記確認部により、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーが完了していると判断された場合、前記第１の記憶領域に記憶されている前記読み出し要求に応じたデータを読み出すデータ読み出し部とをさらに有することを特徴とする付記１記載のデータ処理装置。
【０１３２】
（付記３）  前記第１の記憶領域をスナップショットの作成先とした第３の記憶領域の所定の領域にデータの書き込み要求があった場合、前記スナップショット作成部は、前記第２の進捗情報が物理コピーが完了したことを示す情報であり、かつ、今回の前記第１のスナップショットの作成に伴う前記第２の記憶領域への物理コピーの進捗を示す第３の進捗情報が物理コピー未完了を示す情報である場合、前記第１の記憶領域に記憶されている前記書き込み要求に応じたデータを前記第２の記憶領域に物理コピーした後に、前記第３の記憶領域に記憶されている前記書き込み要求に応じたデータを前記第１の記憶領域に物理コピーすることを特徴とする付記１記載のデータ処理装置。
【０１３３】
（付記４）  前記スナップショット作成部は、前記第２のスナップショットを再作成する場合、前記第２の進捗情報を前記第１の進捗情報に複写した後に、前記第２の進捗情報を物理コピー未完了を示す情報に設定することを特徴とする付記１記載のデータ処理装置。
【０１３４】
（付記５）  前記スナップショット作成部は、前記第２のスナップショットを再作成する場合、前記第２の進捗情報を物理コピーが完了したことを示す情報に設定することを特徴とする付記１記載のデータ処理装置。
【０１３５】
（付記６）  前記スナップショット作成部は、前記第２のスナップショットが作成され、かつ、前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーが完了していない状態で前記第１のスナップショットを再作成する場合、前記第２の進捗情報を物理コピー未完了を示す情報に設定することを特徴とする付記１記載のデータ処理装置。
【０１３６】
（付記７）  前記第１の進捗情報および前記第２の進捗情報は、ビットマップ形式で作成されていることを特徴とする付記１記載のデータ処理装置。
（付記８）  第１の記憶領域に記憶されているデータの第１のスナップショットが第２の記憶領域に作成された状態で、前記第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成し、
今回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を示す第１の進捗情報と、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を示す第２の進捗情報とを記憶する、
ことを特徴とするデータ処理方法。
【０１３７】
（付記９）  コンピュータに、
第１の記憶領域に記憶されているデータの第１のスナップショットが第２の記憶領域に作成された状態で、前記第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成する作成手順、
今回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を示す第１の進捗情報と、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を示す第２の進捗情報とを記憶する記憶手順、
を実行させることを特徴とするデータ処理プログラム。
【０１３８】
（付記１０）  第１の記憶領域と第２の記憶領域とを有する記憶装置と、
前記第１の記憶領域に記憶されているデータの第１のスナップショットが前記第２の記憶領域に作成された状態で、前記第１の記憶領域をスナップショットの作成先とした第２のスナップショットを作成するスナップショット作成部と、
今回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を示す第１の進捗情報と、前回の前記第２のスナップショットの作成に伴う前記第１の記憶領域への物理コピーの進捗を示す第２の進捗情報とを記憶する記憶部と、
を有することを特徴とするストレージ装置。
【符号の説明】
【０１３９】
１  データ処理装置
１ａ  スナップショット作成部
１ｂ  記憶部
１ｃ  確認部
１ｄ  データ読み出し部
２ａ  第１の記憶領域
２ｂ  第２の記憶領域
２ｃ  第３の記憶領域
３ａ  第１の進捗情報
３ｂ  第２の進捗情報
３ｃ  第３の進捗情報
１０ａ、１０ｂ、１０ｃ  制御モジュール
１１  ＣＰＵ
１２  メモリ
１３  チャネルアダプタ
１４  ファイバチャネルスイッチ
２０  ドライブエンクロージャ
３０  ホストコンピュータ
４０  ストレージ装置
１００  ストレージシステム
１１０  Ｉ／Ｏ処理実行部
１２０  データ保持ボリューム検索部
１３０  カスケードコピー実行部
１３１  コピービットマップ作成・更新部
１３２  カスケードビットマップ作成・更新部
１４０  コピービットマップ記憶部
１５０  カスケードビットマップ記憶部
ＣａＢ１、ＣａＢ２、ＣａＢ（ｎ−２）、ＣａＢ（ｎ−１）、ＣａＢ（ｎ）、ＣａＢ（２ｎ−１）  カスケードビットマップ
ＣｏＢ１、ＣｏＢ２、ＣｏＢ（ｎ−２）、ＣｏＢ（ｎ−１）、ＣｏＢ（ｎ）、ＣｏＢ（２ｎ−１）  コピービットマップ
Ｖｏｌ１、Ｖｏｌ２、Ｖｏｌ３、Ｖｏｌ１１、Ｖｏｌ２、Ｖｏｌ３、Ｖｏｌ（ｎ−１）、Ｖｏｌ（ｎ）、Ｖｏｌ（ｎ＋１）、Ｖｏｌ（２ｎ）  ボリューム
【図１】
0005565157.tif 000002
【図２】
0005565157.tif 000003
【図３】
0005565157.tif 000004
【図４】
0005565157.tif 000005
【図５】
0005565157.tif 000006
【図６】
0005565157.tif 000007
【図７】
0005565157.tif 000008
【図８】
0005565157.tif 000009
【図９】
0005565157.tif 000010
【図１０】
0005565157.tif 000011
【図１１】
0005565157.tif 000012
【図１２】
0005565157.tif 000013
【図１３】
0005565157.tif 000014
【図１４】
0005565157.tif 000015
【図１５】
0005565157.tif 000016
【図１６】
0005565157.tif 000017
【図１７】
0005565157.tif 000018