(57)【特許請求の範囲】
【請求項１】
第１の記憶制御装置及び第２の記憶制御装置を有し、上位装置から前記第１の記憶制御装置に与えられる書込み対象のデータを前記第１の記憶制御装置及び前記第２の記憶制御装置において二重化して保有するストレージシステムであって、
前記第１の記憶制御装置は、
前記上位装置から与えられる前記書込み対象のデータを記憶するための第１の記憶領域を提供する第１の記憶デバイスと、
前記第１の記憶領域のデータイメージでなる第１のスナップショットを定期的又は不定期に作成し、作成した前記第１のスナップショットを復元するためのデータを前記第２の記憶制御装置に転送する第１のコントローラと
を備え、
前記第２の記憶制御装置は、
前記第１のスナップショットを復元するためのデータに基づき得られる前記第１のスナップショットを記憶するための第２の記憶領域を提供する第２の記憶デバイスと、
前記上位装置から前記第１の記憶制御装置を介して与えられる前記第２の記憶制御装置に対するスナップショット作成要求に応じて、前記第２の記憶領域のデータイメージでなる外部からアクセス可能な第２のスナップショットを作成する第２のコントローラと
を備え、
前記第１の記憶制御装置の前記第１のコントローラは、
前記上位装置から前記第２の記憶制御装置に対する前記スナップショット作成要求が与えられたときに、前記第２の記憶制御装置に対する前記差分データの転送を中断すると共に前記第１のスナップショットを作成し、当該第１のスナップショットを復元するためのデータと、当該データの転送を中断した前記第１のスナップショットの未転送の前記データとをまとめて前記第２の記憶制御装置に転送する
ことを特徴とするストレージシステム。
【請求項２】
前記第１の記憶制御装置の前記第１のコントローラは、
前記上位装置から前記第２の記憶制御装置に対する前記スナップショット作成要求が与えられたときに、当該スナップショット要求が与えられた時点で作成した前記第１のスナップショットを復元するための前記データの転送を管理するための第１のビットマップと、前記データの転送を中断した前記第１のスナップショットの未転送の前記データを管理するための第２のビットマップとを合わせた第３のビットマップを作成し、当該第３のビットマップに基づいて、前記スナップショット作成要求が与えられた時点で作成した前記第１のスナップショットを復元するための前記データと、前記データの転送を中断した前記第１のスナップショットの未転送の前記データとをまとめて前記第２の記憶制御装置に送信する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記第２の記憶制御装置の前記第２のコントローラは、
前記第２の記憶領域のデータイメージでなる第３のスナップショットを当該第２の記憶領域に保存された前記第１のスナップショットに基づいて作成し、当該第３のスナップショットに基づいて前記第２のスナップショットを作成する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記第２の記憶制御装置の前記第２のコントローラは、
前記スナップショット作成要求に応じて、既存の前記第２のスナップショットに基づいて新たな前記第２のスナップショットを作成する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記第２の記憶制御装置の前記第２のコントローラは、
前記第２の記憶領域の所定単位ごとに複数のビットからなる管理情報を保持し、前記第２の記憶領域のデータ内容と、作成された前記第２のスナップショットとの間に差分があるか否かを対応する前記管理情報の当該第２のスナップショットに割り当てたビットの値によって管理し、
既存の前記第２のスナップショットに基づいて新たな前記第２のスナップショットを作成したときには、前記管理情報に含まれる各前記ビットのうちの１つの前記ビットを、当該既存の第２のスナップショットと、前記新たな第２のスナップショットとで共用する共用ビットに割り当て、当該共用ビットを用いて、前記第２の記憶領域のデータ内容と、前記既存の第２のスナップショット及び前記新たな第２のスナップショットとの間に差分があるか否かを管理する
ことを特徴とする請求項４に記載のストレージシステム。
【請求項６】
前記第２の記憶制御装置の前記第２のコントローラは、
新たな前記第２のスナップショットを作成したときには、前記管理情報に含まれる各前記ビットのうちの１つの前記ビットを当該新たな第２のスナップショットに専用の専用ビットとして割り当て、
新たな前記第２のスナップショットの作成後、所定のタイミングで、前記共用ビットの情報を対応する前記専用ビットにバックグランド処理で書き換える
ことを特徴とする請求項５に記載のストレージシステム。
【請求項７】
前記第２の記憶制御装置の前記第２のコントローラは、
前記管理情報の各前記ビットがそれぞれどの第２のスナップショットに割り当てられているかを管理するためのビット管理情報を有し、当該ビット管理情報を更新するようにして、前記共用ビットの情報を対応する前記専用ビットにバックグランド処理で書き換える
ことを特徴とする請求項６に記載のストレージシステム。
【請求項８】
前記上位装置は、
前記第２の記憶制御装置に対する前記スナップショット作成要求に時刻情報を格納し、
前記第１の記憶制御装置は、
前記スナップショット作成要求に格納された前記時刻情報を抽出して前記第２の記憶制御装置に送信し、
前記第２の記憶制御装置は、
前記第１の記憶制御装置から送信される前記時刻情報を、対応する前記第２のスナップショットと対応付けて記憶し、
ユーザからの要求に応じて、前記時刻情報を当該ユーザに提供する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項９】
前記時刻情報は、
前記上位装置が前記スナップショット作成要求を前記第１の記憶制御装置に発行した時刻を表す情報である
ことを特徴とする請求項８に記載のストレージシステム。
【請求項１０】
第１の記憶制御装置及び第２の記憶制御装置を有し、上位装置から前記第１の記憶制御装置に与えられる書込み対象のデータを前記第１の記憶制御装置及び前記第２の記憶制御装置において二重化して保有するストレージシステムにおけるスナップショット管理方法であって、
前記第１の記憶制御装置において、前記上位装置から与えられる前記書込み対象のデータを記憶するための第１の記憶領域のデータイメージでなる第１のスナップショットを定期的又は不定期に作成し、作成した前記第１のスナップショットを復元するための差分データを前記第２の記憶制御装置に転送する第１のステップと、
前記第２の記憶制御装置において、前記上位装置から前記第１の記憶制御装置を介して与えられる前記第２の記憶制御装置に対するスナップショット作成要求に応じて、前記第１のスナップショットを復元するためのデータに基づき得られる前記第１のスナップショットを記憶するための第２の記憶領域のデータイメージでなる外部からアクセス可能な第２のスナップショットを作成する第２のステップと
を備え、
前記第１のステップでは、
前記上位装置から前記第２の記憶制御装置に対する前記スナップショット作成要求が与えられたときに、前記第２の記憶制御装置に対する前記差分データの転送を中断すると共に前記第１のスナップショットを作成し、当該第１のスナップショットを復元するためのデータと、当該データの転送を中断した前記第１のスナップショットの未転送の前記データとをまとめて前記第２の記憶制御装置に転送する
ことを特徴とするスナップショット管理方法。
【請求項１１】
前記第１のステップでは、
前記上位装置から前記第２の記憶制御装置に対する前記スナップショット作成要求が与えられたときに、当該スナップショット作成要求が与えられた時点で作成した前記第１のスナップショットを復元するための前記データの転送を管理するための第１のビットマップと、前記データの転送を中断した前記第１のスナップショットの未転送の前記データを管理するための第２のビットマップとを合わせた第３のビットマップを作成し、
作成した前記第３のビットマップに基づいて、前記スナップショット作成要求が与えられた時点で作成した前記第１のスナップショットを復元するための前記データと、前記データの転送を中断した前記第１のスナップショットの未転送の前記データとをまとめて前記第２の記憶制御装置に送信する
ことを特徴とする請求項１０に記載のスナップショット管理方法。
【請求項１２】
前記第２のステップでは、
前記第２の記憶領域のデータイメージでなる第３のスナップショットを当該第２の記憶領域に保存された前記第１のスナップショットに基づいて作成し、当該第３のスナップショットに基づいて前記第２のスナップショットを作成する
ことを特徴とする請求項１０に記載のスナップショット管理方法。
【請求項１３】
前記スナップショット作成要求に応じて、既存の前記第２のスナップショットに基づいて新たな前記第２のスナップショットを作成する第３のステップを備える
ことを特徴とする請求項１０に記載のスナップショット管理方法。
【請求項１４】
前記第３のステップでは、
前記第２の記憶領域の所定単位ごとに複数のビットからなる管理情報を保持し、前記第２の記憶領域のデータ内容と、作成された前記第２のスナップショットとの間に差分があるか否かを対応する前記管理情報の当該第２のスナップショットに割り当てたビットの値によって管理し、
既存の前記第２のスナップショットに基づいて新たな前記第２のスナップショットを作成したときには、前記管理情報に含まれる各前記ビットのうちの１つの前記ビットを、当該既存の第２のスナップショットと、前記新たな第２のスナップショットとで共用する共用ビットに割り当て、
当該共用ビットを用いて、前記第２の記憶領域のデータ内容と、前記既存の第２のスナップショット及び前記新たな第２のスナップショットとの間に差分があるか否かを管理する
ことを特徴とする請求項１３に記載のスナップショット管理方法。
【請求項１５】
前記第２のステップでは、
新たな前記第２のスナップショットを作成したときには、前記管理情報に含まれる各前記ビットのうちの１つの前記ビットを当該新たな第２のスナップショットに専用の専用ビットとして割り当て、
新たな前記第２のスナップショットの作成後、所定のタイミングで、前記共用ビットの情報を対応する前記専用ビットにバックグランド処理で書き換える
ことを特徴とする請求項１０に記載のスナップショット管理方法。
【請求項１６】
前記管理情報の各前記ビットがそれぞれどの第２のスナップショットに割り当てられているかを管理するためのビット管理情報を更新するようにして、前記共用ビットの情報を対応する前記専用ビットにバックグランド処理で書き換える
ことを特徴とする請求項１５に記載のスナップショット管理方法。
【請求項１７】
前記上位装置は、
前記第２の記憶制御装置に対する前記スナップショット作成要求に時刻情報を格納し、
前記第１又は第２のステップにおいて、
前記第１の記憶制御装置は、
前記スナップショット作成要求に格納された前記時刻情報を抽出して前記第２の記憶制御装置に送信し、
前記第２のステップにおいて、
前記第２の記憶制御装置は、
前記第１の記憶制御装置から送信される前記時刻情報を、対応する前記第２のスナップショットと対応付けて記憶し、
ユーザからの要求に応じて、前記時刻情報を当該ユーザに提供する
ことを特徴とする請求項１０に記載のスナップショット管理方法。
【請求項１８】
前記時刻情報は、
前記上位装置が前記スナップショット作成要求を前記第１の記憶制御装置に発行した時刻を表す情報である
ことを特徴とする請求項１７に記載のスナップショット管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及びスナップショット管理方法に関し、いわゆるスナップショット機能及びリモートコピー機能が搭載された複数の記憶制御装置から構成されるストレージシステムに適用して好適なものである。
【背景技術】
【０００２】
従来、記憶制御装置として、ある時点における論理ボリュームのデータイメージ（スナップショット）を保持する、いわゆるスナップショット機能が搭載されたものがある。この種の記憶制御装置におけるスナップショットの作成手法としては、元の論理ボリュームの差分だけを保持する第１のスナップショット作成方法と、データを２つの論理ボリュームに二重化して保持し、スナップショット作成時に二重化を停止して片方の論理ボリュームをスナップショットとして提供する第２のスナップショット作成方法となどが提案されている。
【０００３】
また近年では、かかる第２のスナップショット作成方法について、スナップショットを一時的に保存するテンポラリ用の論理ボリュームをさらに設け、この論理ボリュームを、スナップショットとして提供する論理ボリュームに格納されたデータをテープ媒体等に保存する際のバッファとして用いることが提案されている（特許文献１参照）。この方法によれば、スナップショット取得のために二重化を停止している時間を短縮でき、またミラー再同期化する際のオリジナルデータのミラー先論理ボリュームへのコピー量を削減し、データベースプログラムからのデータアクセス性能が低下するミラー再同期化時間を短縮することができる利点がある。
【０００４】
一方、従来、地震、火災、洪水等の天災やテロなどに対するデータ保護方法として、100〜数100〔km〕程度分離したメインセンタ及びリモートセンタにそれぞれ設置した正側及び副側の記憶制御装置間でデータを二重化して保有する、いわゆるリモートコピー機能を採用したストレージシステムが実用化されている。
【０００５】
リモートコピー機能は、同期型と非同期型の２種類に大別される。このうち、同期型は、正側の記憶制御装置及び副側の記憶制御装置の両方にデータを書き込んだことを条件として、上位装置にライト完了を報告するようにしてリモートコピーが行われ、非同期型は、正側の記憶制御装置にデータが書き込まれた段階で、上位装置にライト完了を報告し、適当な時期にそのデータを副側の記憶制御装置に転送するようにしてリモートコピーが行われる。
【０００６】
ところで、かかるリモートコピー機能を採用した従来のストレージシステムでは、正側及び副側にそれぞれ複数の記憶制御装置が存在する場合、これら正側及び副側の記憶制御装置の対応するもの同士がそれぞれ独立に通信リンクで接続されてリモートコピーが行なわれている。このため、正側の記憶制御装置が設置されたメインセンタが機能を失った場合、どの時点までのデータがリモートコピーされていたのかがリモートセンタに設置された副側の記憶制御装置ごとに異なるために、データごとにタイムスタンプを付すなどしていない場合にメインセンタ及びリモートセンタの整合性をとることが困難であった。
【０００７】
そこで、近年、メインセンタ側において、１台の記憶制御装置（以下、これを主記憶制御装置と呼ぶ）に残りの記憶制御装置（以下、これを副記憶制御装置と呼ぶ）を接続し、予め定められた契機で主記憶制御装置がリモートコピーの一時停止と一時停止の解除を繰り返し、これに連動して副記憶制御装置がリモートコピーの一時停止と一時停止解除を繰り返すことで、一時停止時におけるメインセンタとリモートセンタとの間のデータの整合性をとることが提案されている。
【特許文献１】特開２００１−３３１３７８号公報
【特許文献２】特開２００１−２０９５６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、リモートコピー機能のうちの非同期型を採用したストレージシステムにおいて、例えば定期的に正側の記憶制御装置から副側の記憶制御装置へのデータコピーが行なわれている場合、あるサイクルのリモートコピーが完了するまでは、これとは別に正側の記憶制御装置から副側の記憶制御装置にデータを転送することができない。このため、従来のストレージシステムでは、あるサイクルのリモートコピーの途中で正側の記憶制御装置においてスナップショットを作成したとしても、これを迅速に副側の記憶制御装置に送信することができない。
【０００９】
従って、かかるストレージシステムにおいて、あるサイクルのリモートコピーの途中で正側の記憶制御装置においてスナップショットを作成した場合に、これを迅速に副側の記憶制御装置に送信することができれば、ストレージシステムの機能性を向上させて、ストレージシステム全体としての利便性を向上させ得るものと考えられる。
【００１０】
本発明は以上の点を考慮してなされたもので、利便性を向上し得るストレージシステム及びスナップショット管理方法を提案しようとするものである。
【課題を解決するための手段】
【００１１】
かかる課題を解決するため本発明においては、第１の記憶制御装置及び第２の記憶制御装置を有し、上位装置から前記第１の記憶制御装置に与えられる書込み対象のデータを前記第１の記憶制御装置及び前記第２の記憶制御装置において二重化して保有するストレージシステムであって、前記第１の記憶制御装置は、前記上位装置から与えられる前記書込み対象のデータを記憶するための第１の記憶領域を提供する第１の記憶デバイスと、前記第１の記憶領域のデータイメージでなる第１のスナップショットを定期的又は不定期に作成し、作成した前記第１のスナップショットを復元するためのデータを前記第２の記憶制御装置に転送する第１のコントローラとを備え、前記第２の記憶制御装置は、前記第１のスナップショットを復元するためのデータに基づき得られる前記第１のスナップショットを記憶するための第２の記憶領域を提供する第２の記憶デバイスと、前記上位装置から前記第１の記憶制御装置を介して与えられる前記第２の記憶制御装置に対するスナップショット作成要求に応じて、前記第２の記憶領域のデータイメージでなる外部からアクセス可能な第２のスナップショットを作成する第２のコントローラとを備え、前記第１の記憶制御装置の前記第１のコントローラは、前記上位装置から前記第２の記憶制御装置に対する前記スナップショット作成要求が与えられたときに、前記第２の記憶制御装置に対する前記差分データの転送を中断すると共に前記第１のスナップショットを作成し、当該第１のスナップショットを復元するためのデータと、当該データの転送を中断した前記第１のスナップショットの未転送の前記データとをまとめて前記第２の記憶制御装置に転送することを特徴とする。
【００１２】
この結果このストレージシステムでは、上位装置から第１の記憶制御装置に第２の記憶制御装置に対するスナップショット作成要求が与えられた時点で第１の記憶制御装置において作成した第１のスナップショットと同じ内容の第２のスナップショットを迅速に第２の記憶制御装置内に作成することができる。
【００１３】
また本発明においては、第１の記憶制御装置及び第２の記憶制御装置を有し、上位装置から前記第１の記憶制御装置に与えられる書込み対象のデータを前記第１の記憶制御装置及び前記第２の記憶制御装置において二重化して保有するストレージシステムにおけるスナップショット管理方法であって、前記第１の記憶制御装置において、前記上位装置から与えられる前記書込み対象のデータを記憶するための第１の記憶領域のデータイメージでなる第１のスナップショットを定期的又は不定期に作成し、作成した前記第１のスナップショットを復元するための差分データを前記第２の記憶制御装置に転送する第１のステップと、前記第２の記憶制御装置において、前記上位装置から前記第１の記憶制御装置を介して与えられる前記第２の記憶制御装置に対するスナップショット作成要求に応じて、前記第１のスナップショットを復元するためのデータに基づき得られる前記第１のスナップショットを記憶するための第２の記憶領域のデータイメージでなる外部からアクセス可能な第２のスナップショットを作成する第２のステップとを備え、前記第１のステップでは、前記上位装置から前記第２の記憶制御装置に対する前記スナップショット作成要求が与えられたときに、前記第２の記憶制御装置に対する前記差分データの転送を中断すると共に前記第１のスナップショットを作成し、当該第１のスナップショットを復元するためのデータと、当該データの転送を中断した前記第１のスナップショットの未転送の前記データとをまとめて前記第２の記憶制御装置に転送することを特徴とする。
【００１４】
この結果このスナップショット管理方法によれば、上位装置から第１の記憶制御装置に第２の記憶制御装置に対するスナップショット作成要求が与えられた時点で第１の記憶制御装置において作成した第１のスナップショットと同じ内容の第２のスナップショットを迅速に第２の記憶制御装置内に作成することができる。
【発明の効果】
【００１５】
本発明によれば、ストレージシステムの機能性を向上させて、ストレージシステム全体としての利便性を向上させることができる。
【発明を実施するための最良の形態】
【００１６】
以下図面について、本発明の一実施の形態を詳述する。
【００１７】
（１）本実施の形態によるストレージシステムの構成
図１は本実施形態に係るストレージシステム１のシステム構成を示す。このストレージシステム１は、第１の記憶制御装置２と第２の記憶制御装置３とを備える。第１の記憶制御装置２、第２の記憶制御装置３、正ホストシステム４、及び副ホストシステム５は、ＳＡＮ（Storage Area Network）６を介して相互に接続されている。
【００１８】
正ホストシステム４は、常用系の上位装置としてのホストシステムであり、主として、システムが正常なときに、第１の記憶制御装置２にＩ／Ｏ処理を要求する。副ホストシステム５は、待機系のホストシステムであり、主として、システムに障害が発生したときに、第２の記憶制御装置３にＩ／Ｏ処理を要求し、障害発生時に正ホストシステム４が行っていた処理を引き継ぐ。正ホストシステム４、及び副ホストシステム５は、例えば、パーソナルコンピュータ、ワークステーション、メインフレームコンピュータ等である。
【００１９】
ストレージシステム１は、第１の記憶制御装置２に書き込まれたデータが第２の記憶制御装置３にリモートコピーされることにより、かかるデータを第１及び第２の記憶制御装置２，３において二重化して保有することができるように構成されている。この場合第２の記憶制御装置３は、第１の記憶制御装置２が過去に保持していたデータイメージと同一のデータイメージを保持する。これにより、第１の記憶制御装置２に障害が生じた場合でも、第２の記憶制御装置３を用いて、システムを稼動させることができる。
【００２０】
リモートコピーとしては、第１の記憶制御装置２と第２の記憶制御装置３との両方にデータを書き込んだことを条件として、正ホストシステム４にライト完了を報告する同期コピーでもよく、或いは第１の記憶制御装置２にデータが書き込まれた段階で、正ホストシステム４にライト完了を報告し、適当な時期にそのデータを第２の記憶制御装置３に転送する非同期コピーでもよい。以下の説明では、第１の記憶制御装置２を稼働系の正記憶制御装置として運用し、第２の記憶制御装置３を待機系の副記憶制御装置として運用する例を示す。
【００２１】
第１の記憶制御装置２は、主に、コントローラ１０と、記憶装置１１とを備える。
【００２２】
コントローラ１０は、ＬＡＮ（Local Area Network）インターフェース２０、フロントエンドインターフェース２１、ＣＰＵ２２、データ転送コントローラ２３、キャッシュメモリ２４、ローカルメモリ２５、及びバックエンドインターフェース２６を備える。
【００２３】
コントローラ１０は、後述のように記憶装置１１内に配置された複数のディスクドライブ３０をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。ＲＡＩＤ方式においては、複数のディスクドライブ３０が一つのＲＡＩＤグループとして管理される。ＲＡＩＤグループ上には、正ホストシステム４からのアクセス単位である複数の論理ボリューム３１が定義されている。それぞれの論理ボリューム３１には、ＬＵＮ（Logical Unit Number）がアサインされる。
【００２４】
ＣＰＵ２２は、正ホストシステム４からのデータ入出力要求に応答して、複数のディスクドライブ３０へのＩ／Ｏ処理（ライトアクセス、又はリードアクセス）を制御するプロセッサである。
【００２５】
ローカルメモリ２５には、各種マイクロプログラム、及びボリューム管理テーブルなどが格納されている。各種マイクロプログラム、及びボリューム管理テーブルの詳細については、後述する。
【００２６】
キャッシュメモリ２４は、ディスクドライブ３０に書き込むためのライトデータ、又はディスクドライブ３０から読み出したリードデータを一時的に格納するバッファメモリである。キャッシュメモリ２４は、電源バックアップされており、第１の記憶制御装置２に電源障害が発生した場合でも、キャッシュデータのロストを防ぐ不揮発性メモリとして構成されている。
【００２７】
データ転送コントローラ２３は、キャッシュメモリ２４、フロントエンドインターフェース２１、バックエンドインターフェース２６、及びＣＰＵ２２を相互に接続し、正ホストシステム４とディスクドライブ３０との間のデータ転送を制御する。正ホストシステム４からのライトアクセスが要求されると、データ転送コントローラ２３は、フロントエンドインターフェース２１を介して正ホストシステム４から受け取ったデータをキャッシュメモリ２４に書き込み、その後、そのライトデータをディスクドライブ３０へ非同期書き込みすることを目的として、そのライトデータをバックエンドインターフェース２６へ転送する。また、正ホストシステム４からのリードアクセスが要求されると、バックエンドインターフェース２６を介してディスクドライブ３０から読みとったリードデータをキャッシュメモリ２４に書き込むとともに、フロントエンドインターフェース２１にそのリードデータを転送する。
【００２８】
フロントエンドインターフェース２１は、正ホストシステム４とのインターフェースを制御するコントローラであり、例えば、ファイバチャネルプロトコルに基づく正ホストシステム４からのブロックアクセス要求を受信する機能を有する。
【００２９】
バックエンドインターフェース２６は、ディスクドライブ３０とのインターフェースを制御するコントローラであり、例えば、ディスクドライブ３０を制御するプロトコルに基づくディスクドライブ３０へのデータ入出力要求を制御する機能を有する。
【００３０】
ＬＡＮインターフェース２０は、ＬＡＮ７に接続するインターフェースであり、ＴＣＰ／ＩＰに基づいて管理端末８との間でデータ及び制御信号の送受信を制御する。
【００３１】
記憶装置１１は、複数のディスクドライブ３０を備える。ディスクドライブ３０は、ＦＣ（Fibre Channel）ディスクドライブ、ＳＡＴＡ（Serial Advanced Technology Attachment）ディスクドライブ、ＰＡＴＡ（Parallel Advanced Technology Attachment）ディスクドライブ、ＦＡＴＡ（Fibre Attached Technology Adapted）ディスクドライブ、ＳＡＳ（Serial Attached SCSI）ディスクドライブ或いはＳＣＳＩ（Small Computer System Interface）ディスクドライブ等のストレージデバイスである。
【００３２】
第１の記憶制御装置２は、ＬＡＮ（Local Area Network）７を介して管理端末８に接続されている。管理端末８は、例えば、ＣＰＵ、メモリ及びディスプレイ等のハードウェア資源を備えるコンピュータシステムである。システム管理者は、管理端末８を入力操作することにより、第１の記憶制御装置２を管理するためのコマンドを第１の記憶制御装置２に送信する。第１の記憶制御装置２を管理するためのコマンドとして、例えば、記憶デバイス３０の増設或いは減設、又はＲＡＩＤ構成の変更を指示するためのコマンド、正ホストシステム４と第１の記憶制御装置２との間の通信パスを設定するためのコマンド、ＣＰＵ２２のマイクロプログラムをメモリ２５にインストールするためのコマンド、第１の記憶制御装置２の動作状態の確認や故障部位を特定するためのコマンド等がある。
【００３３】
第２の記憶制御装置３は、主に、コントローラ４０と、記憶装置５０とを備える。
【００３４】
コントローラ４０の詳細構成は、上述したコントローラ１０の詳細構成と同様である。記憶装置５０は、複数のディスクドライブ５１を備える。コントローラ４０は、複数のディスクドライブ５１をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。ＲＡＩＤ方式においては、複数のディスクドライブ５１が一つのＲＡＩＤグループとして管理される。ＲＡＩＤグループ上には、副ホストシステム５からのアクセス単位である複数の論理ボリューム５２が定義されている。それぞれの論理ボリューム５２には、ＬＵＮ（Logical Unit Number）がアサインされる。
【００３５】
図２は各種マイクロプログラム及びボリューム管理テーブルを示す。
【００３６】
ローカルメモリ２５は、内部コピー実行プログラム６０、リモートコピー実行プログラム６１、制御プログラム６２、及びボリューム管理テーブル６３を格納する。内部コピー実行プログラム６０は、内部コピー処理、及びスナップショット更新処理を実行する。リモートコピー実行プログラム６１は、リモートコピーを実行する。制御プログラム６２は、内部コピー実行プログラム６０、及びリモートコピー実行プログラム６１を制御する。ボリューム管理テーブル６３は、複数の論理ボリューム４２に関する情報を格納する。
【００３７】
図３はボリューム管理テーブル６３のテーブル構造を示す。
【００３８】
ボリューム管理テーブル６３には、複数の論理ボリューム３１の各々について、その論理ボリューム（以下、「ＶＯＬ」と略記することがある。）３１を識別するためのＶＯＬ−ＩＤと、その論理ボリュームへのアクセスパスを示すパス情報と、その論理ボリューム３１の種類（以下、「ＶＯＬ種類」と記す。）と、その論理ボリューム３１がプールＶＯＬであるか否かを示すフラグ（以下、「プールＶＯＬ」フラグと記す。）と、その論理ボリューム３１を含んだＶＯＬペアに関する情報（以下、「ペア情報」と記す。）と、が対応付けられて格納される。ボリューム管理テーブル６３に格納される情報のうちの少なくとも一つの情報要素（例えば、ＶＯＬ−ＩＤ、ＶＯＬ種類、プールＶＯＬフラグ）は、管理端末８又は正ホストシステム４などから入力できる。
【００３９】
ＶＯＬ種類としては、例えば、「プライマリ」、「セカンダリ」、「プール」がある。「プライマリ」という種類のＶＯＬ（以下、「プライマリＶＯＬ」又は「ＰＶＯＬ」と記す。）は、コピー処理（例えば、リモートコピー処理）において、コピー元となるＶＯＬである。「セカンダリ」という種類のＶＯＬ（以下、「セカンダリＶＯＬ」又は「ＳＶＯＬ」と記す。）は、コピー処理（例えば、リモートコピー処理）において、コピー先となるＶＯＬである。セカンダリＶＯＬは、少なくともプライマリＶＯＬの容量以上の記憶容量を有する。プライマリＶＯＬもセカンダリＶＯＬも、パス情報は定義されている。但し、「プール」という種類のＶＯＬ（以下、「プールＶＯＬ」と記す。）は、パス情報が未定義である。プールＶＯＬの詳細については、後述する。
【００４０】
プールＶＯＬフラグは、それに対応する論理ボリューム３１がプールＶＯＬであるか否かを示す。具体的には、例えば、プールＶＯＬフラグが「１」であれば、それに対応する論理ボリュームは、プールＶＯＬであり、プールＶＯＬフラグが「０」であれば、それに対応する論理ボリュームは、プールＶＯＬでない。
【００４１】
ペア情報には、例えば、ペア相手情報、及びペア状態が含まれている。ペア相手情報には、例えば、ペア相手となる論理ボリューム３１（以下、ペア相手ＶＯＬ）に関する情報として、ペア相手ＶＯＬを有する記憶制御装置のＩＤ、ペア相手ＶＯＬのＶＯＬ−ＩＤ、及びパス情報などがある。ペア状態としては、例えば、「ＳＭＰＬ」、「ＣＯＰＹ」、「ＰＡＩＲ」、「ＰＳＵＳ」、「ＳＰＬＩＴ」、「ＳＳＷＳ」などがある。
【００４２】
「ＳＭＰＬ」とは、ペア生成前の正副関係のない状態を示す。
【００４３】
「ＣＯＰＹ」は、プライマリＶＯＬのデータをセカンダリＶＯＬにコピーする形成コピー中の状態を示す。「ＣＯＰＹ」では、セカンダリＶＯＬへのライトは禁止される。
【００４４】
「ＰＡＩＲ」は、プライマリＶＯＬからセカンダリＶＯＬへ非同期コピーを行っている状態を示す。「ＰＡＩＲ」では、セカンダリＶＯＬへのライトは禁止される。
【００４５】
「ＰＳＵＳ」は、プライマリＶＯＬからセカンダリＶＯＬへ非同期コピーを停止している状態を示す。「ＰＳＵＳ」では、セカンダリＶＯＬへのリード／ライトは禁止される。
【００４６】
「ＳＰＬＩＴ」は、プライマリＶＯＬとセカンダリＶＯＬとを論理的に分離して、プライマリＶＯＬの更新前後の差分データのみをセカンダリＶＯＬにコピーする状態を示す。
【００４７】
「ＳＳＷＳ」は、セカンダリＶＯＬがリード／ライト可能な状態を示す。「ＳＳＷＳ」では、セカンダリＶＯＬのデータは、前回の確定内容にリストアされ、プライマリＶＯＬは、「ＰＳＵＳ」に遷移する。
【００４８】
ＣＰＵ２２は、ボリューム管理テーブル６３を参照することにより、アクセスすべき論理ボリューム３１の種類、及びペア情報を特定することができる。また、ＣＰＵ２２は、プールＶＯＬが後述のバーチャルＶＯＬにアサインされた場合には、そのプールＶＯＬへのパスを表す情報を定義し、定義されたパス情報をボリューム管理テーブル６３に登録することができる。また、ＣＰＵ２２は、アサインされなくなったプールＶＯＬについてのパス情報を消去することにより、プールＶＯＬを未使用状態にすることができる。ＣＰＵ２２は、各プールＶＯＬについて、パス情報が登録されているか否かにより、各プールＶＯＬが使用中であるか、或いは未使用状態であるかを判別することができる。
【００４９】
図４は第１の記憶制御装置２が実行する非同期リモートコピーの処理概要を示す。
【００５０】
第１の記憶制御装置２は、ＣＰＵ２２、キャッシュメモリ２４、プライマリＶＯＬ７０、バーチャルＶＯＬ７１、複数のプールＶＯＬ７２、スナップショット管理情報７３、及び転送差分ビットマップテーブル７４を備える。
【００５１】
プールＶＯＬ７２は、プライマリＶＯＬ７０とバーチャルＶＯＬ７１とのペア状態がスプリットされた時点以降にプライマリＶＯＬ７０のデータイメージが更新されたときに、更新前後の差分データを退避させるための論理ボリュームである。
【００５２】
バーチャルＶＯＬ７１は、ある時刻にプライマリＶＯＬ７０に格納されているデータと、ある時刻以降にプライマリＶＯＬ７０からプールＶＯＬ７２に退避されたデータとから、ある時刻におけるプライマリＶＯＬ７０のデータイメージを復元するための仮想的な論理ボリュームである。バーチャルＶＯＬ７１は、プライマリＶＯＬ７０のスナップショットを論理的に保持することができる。バーチャルＶＯＬ７１は、プライマリＶＯＬ７０又はセカンダリＶＯＬ８０とペアを形成することができる。本実施の形態では、バーチャルＶＯＬ７１は、キャッシュメモリ２４の記憶領域に形成される場合を例示するが、ディスクドライブ３０（図１）の記憶領域に形成されていてもよい。説明の便宜上、バーチャルＶＯＬ７１をＰ＿ＶＶＯＬと略記する場合がある。
【００５３】
ＣＰＵ２２は、バーチャルＶＯＬ７１に、複数のプールＶＯＬ７２の中から一以上のプールＶＯＬ（例えば、どのＶＯＬにも対応付けられていない未使用のプールＶＯＬ）７２を選択し、選択された一以上のプールＶＯＬ７２をバーチャルＶＯＬ７１にアサインできる。ＣＰＵ２２は、バーチャルＶＯＬ７１にアサインされるプールＶＯＬ７２の数を、記憶資源の消費状況に応じて、適宜に増減することができる。
【００５４】
スナップショット管理情報７３は、ある時刻におけるプライマリＶＯＬ７０のデータイメージを、スナップショットを用いて復元するための情報である。ＣＰＵ２２は、スナップショット管理情報７３を参照することにより、ある時刻におけるプライマリＶＯＬ７０のデータイメージを構成する各データがプールＶＯＬ７２に存在するのか、或いはプライマリＶＯＬ７０に存在するのかを判別し、判別された方からデータを取得することにより、ある時刻におけるプライマリＶＯＬ７０のデータイメージをバーチャルＶＯＬ７１に復元できる。スナップショット管理情報７３は、プライマリＶＯＬ７０のデータ更新位置を示す差分ビットマップテーブル７５を含む。
【００５５】
転送差分ビットマップテーブル７４は、プライマリＶＯＬ７０のデータがセカンダリＶＯＬ８０にイニシャルコピーされた後において、プライマリＶＯＬ７０のデータが更新されたときに、セカンダリＶＯＬ８０にリモートコピーされるべき差分データの位置（言い換えれば、プライマリＶＯＬ７０のデータ更新位置）を示す。
【００５６】
ＣＰＵ２２は、プライマリＶＯＬ８０とバーチャルＶＯＬ７１との間のペア状態をコピー状態にすることができる。プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態がコピー状態になっているときに、プライマリＶＯＬ７０にデータが書き込まれると、ＣＰＵ２２は、そのデータをバーチャルＶＯＬ７１又はプールＶＯＬ７２に書き込む。
【００５７】
ＣＰＵ２２は、プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態をスプリット状態にすることができる。プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態がスプリット状態になっているときに、プライマリＶＯＬ７０にデータが書き込まれると、ＣＰＵ２２は、内部コピープログラム６０（図２）を動作させて、内部コピー処理及びスナップショット更新処理を実行する。
【００５８】
第２の記憶制御装置３は、ＣＰＵ８１、キャッシュメモリ８２、セカンダリＶＯＬ８０、複数のバーチャルＶＯＬ８３、複数のプールＶＯＬ８４、スナップショット管理情報７３、及び転送差分ビットマップテーブル８５を備える。
【００５９】
プールＶＯＬ８４は、セカンダリＶＯＬ８０と１つのバーチャルＶＯＬ８３とのペア状態がスプリットされた時点以降にセカンダリＶＯＬ８０のデータイメージが更新されたときに、更新前後の差分データを退避させるための論理ボリュームである。
【００６０】
バーチャルＶＯＬ８３Ａ，８３Ｂは、ある時刻にセカンダリＶＯＬ８０に格納されているデータと、ある時刻以降にセカンダリＶＯＬ８０からプールＶＯＬ８４に退避されたデータとから、ある時刻におけるセカンダリＶＯＬ８０のデータイメージを復元するための仮想的な論理ボリュームである。バーチャルＶＯＬ８３は、セカンダリＶＯＬ８０のスナップショットを論理的に保持することができる。本実施形態では、バーチャルＶＯＬ８３は、キャッシュメモリ８２の記憶領域に形成される場合を例示するが、ディスクドライブ７１（図１）の記憶領域に形成されていてもよい。説明の便宜上、バーチャルＶＯＬ８３をＳ＿ＶＶＯＬと略記する場合がある。
【００６１】
スナップショット管理情報８６は、ある時刻におけるセカンダリＶＯＬ８０のデータイメージを、スナップショットを用いて復元するための情報である。ＣＰＵ８１は、スナップショット管理情報８６を参照することにより、ある時刻におけるセカンダリＶＯＬ８０のデータイメージを構成する各データがプールＶＯＬ８４に存在するのか、或いはセカンダリＶＯＬ８０に存在するのかを判別し、判別された方からデータを取得することにより、ある時刻におけるセカンダリＶＯＬ８０のデータイメージをバーチャルＶＯＬ８３に復元できる。スナップショット管理情報８６は、セカンダリＶＯＬ８０のデータ更新位置を示す差分ビットマップテーブル８７を含む。
【００６２】
転送差分ビットマップテーブル８５は、プライマリＶＯＬ７０のデータがセカンダリＶＯＬ８０にイニシャルコピーされた後において、プライマリＶＯＬ７０のデータが更新されたときに、リモートコピーによりセカンダリＶＯＬ８０のデータが更新された位置を示す。
【００６３】
次に、内部コピー処理、スナップショット更新処理、及びリモートコピー処理の詳細について説明を加える。以降の説明では、プライマリＶＯＬ７０とバーチャネルＶＯＬ７１との間のペア状態がスプリット状態にあることを前提とする。
【００６４】
第１の記憶制御装置２は、正ホストシステム４からライトアクセス要求を受けると（Ｓ１）、ライトデータをキャッシュメモリ２４に格納し（Ｓ２）、ライト完了を正ホストシステム４に報告する（Ｓ３）。
【００６５】
ＣＰＵ２２は、キャッシュメモリ２４に書き込まれたライトデータを読み出し、プライマリＶＯＬ７０に書き込む（Ｓ４）。このとき、ＣＰＵ２２は、更新前データ（ライトデータによって更新（上書き）される前のデータであって、かつプライマリＶＯＬ７０に書かれていた過去のデータ）をプライマリＶＯＬ７０からプールＶＯＬ７２に移動させる（Ｓ５）。
【００６６】
プライマリＶＯＬ７０とバーチャネルＶＯＬ７１との間のペア状態がスプリット状態にあるときに、内部コピーを実行すると、ある時刻におけるプライマリＶＯＬ７０のデータイメージを構成する各データは、プライマリＶＯＬ７０とプールＶＯＬ７２とに分散される。
【００６７】
次に、ＣＰＵ２２は、スナップショット管理情報７３を、プライマリＶＯＬ７０とバーチャネルＶＯＬ７１との間のペア状態がスプリットされた時点（以下、「スプリット時点」と称する。）にプライマリＶＯＬ７０に格納されているデータと、そのスプリット時点以降にプライマリＶＯＬ７０からプールＶＯＬ７２に移動されたデータとから、そのスプリット時点におけるプライマリＶＯＬ７０のデータイメージを復元するための情報に更新する（Ｓ６）。このスナップショット更新処理により、バーチャルＶＯＬ７１は、プライマリＶＯＬ７０のスナップショットを論理的に保持することができる。
【００６８】
ＣＰＵ２２は、プライマリＶＯＬ７０とバーチャネルＶＯＬ７１との間のペア状態がスプリット状態にあるときに、正ホストシステム４からライトアクセス要求を受ける都度に、上述したＳ２〜Ｓ６の処理を繰り返し実行する。
【００６９】
ＣＰＵ２２は、スプリット時点から所定時間経過後にリモートコピー実行プログラム６１（図２）を動作させ、リモートコピー処理を実行する。リモートコピー実行プログラム６１は、差分ビットマップテーブル７５を転送差分ビットマップテーブル７４にマージする。そして、リモートコピー実行プログラム６１は、転送差分ビットマップテーブル７４に基づいて、スプリット時点におけるプライマリＶＯＬ７０のデータイメージを復元するための各データがプライマリＶＯＬ７０に存在するのか、或いはプールＶＯＬ７２に存在するのかを判別し、判別された方からデータを取得して、そのデータを第２の記憶制御装置３に転送する（Ｓ７）。このリモートコピー処理により、スプリット時点におけるプライマリＶＯＬ７０のデータイメージがセカンダリＶＯＬ８０に再現される。
【００７０】
第２の記憶制御装置３は、第１の記憶制御装置２からデータを受信すると、第１の記憶制御装置２にライト完了を報告する（Ｓ８）。
【００７１】
以後、ＣＰＵ８１は、第１の記憶制御装置２から受信したデータをセカンダリＶＯＬ８０に書き込む際に、更新前データ（ライトデータによって更新（上書き）される前のデータであって、かつセカンダリＶＯＬ８０に書かれていた過去のデータ）をセカンダリＶＯＬ８０からプールＶＯＬ８４に移動させる（Ｓ９）。
【００７２】
更に、ＣＰＵ８１は、スナップショット管理情報８６を、スプリット時点にセカンダリＶＯＬ８０に格納されているデータと、スプリット時点以降にセカンダリＶＯＬ８０からプールＶＯＬ８４に移動されたデータとから、スプリット時点におけるセカンダリＶＯＬ８０のデータイメージを復元するための情報に更新する（Ｓ１０）。
【００７３】
尚、ＣＰＵ８１は、２つのバーチャルＶＯＬ８３を交互に切り替えて使用する。これにより、例えば、ＣＰＵ８１は、一方のバーチャルＶＯＬ８３にセカンダリＶＯＬ８０のスナップショットを論理的に作成しつつ、他方のバーチャルＶＯＬ８３と対応付けられた差分ビットマップテーブル８７をクリアすることができる。差分ビットマップテーブル８７をクリアするには、長時間を要する。２つのバーチャルＶＯＬ８３を交互に切り替えて使用することで、スナップショットの作成と、差分ビットマップテーブル８７のクリアを並行処理できるので、効率がよい。
【００７４】
図５は第１の記憶制御装置２において実行される非同期リモートコピーの処理シーケンスを示す。
【００７５】
非同期リモートコピーは、まず、正ホストシステム４から第１の記憶制御装置２に与えられる非同期リモートコピー処理の実行命令に基づいて、第１の記憶制御装置２及び第２の記憶制御装置３間でプライマリＶＯＬ７０のデータをすべてセカンダリＶＯＬ８０にコピーする初期コピーから行なわれる。そしてこの初期コピーが終了すると、第１の記憶制御装置２において、プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態がスプリットされる。
【００７６】
図５の時刻ｔ０は、プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態がスプリットされたスプリット時点を示す。この時刻ｔ０におけるプライマリＶＯＬ７０のデータイメージを「イメージＴ０」と称する。イメージＴ０は、プライマリＶＯＬ７０の第１のブロック領域にデータブロックＡが格納されているデータイメージとする。この時刻ｔ０の時点では、プールＶＯＬ７１に更新前データは格納されていない。スナップショット管理情報７３は、イメージＴ０を復元するための情報になっている。
【００７７】
時刻ｔ１で（つまり、スプリット状態の期間中に）、プライマリＶＯＬ７０の第１のブロック領域にデータブロックＢが上書きされると、プライマリＶＯＬ７０のデータイメージがイメージＴ０からイメージＴ１に変化する。このとき、内部コピー実行プログラム６０は、データブロックＡ（更新前データ）をプライマリＶＯＬ７０からプールＶＯＬ７２に書き込み、スナップショット管理情報７３を、プライマリＶＯＬ７０の第１のブロック領域に更新があり、かつその第１のブロック領域に存在していたデータブロックＡ（更新前データ）がプールＶＯＬ７２に格納されたことを示す情報に更新する。
【００７８】
また、時刻ｔ１で、制御プログラム６２（図２）がリモートコピー処理の実行をリモートコピー実行プログラム６１（図２）に命じる。リモートコピー実行プログラム６１は、転送差分ビットマップテーブル７４を参照することにより、イメージＴ０を構成するデータブロックＡがプールＶＯＬ７２に存在することを特定し、プールＶＯＬ７２からデータブロックＡを取得し、データブロックＡを第２の記憶制御装置３に送信する。
【００７９】
時刻ｔ２は、リモートコピー処理が完了した時点である。この結果、時刻ｔ０の時点でプライマリＶＯＬ７０に形成されていたイメージＴ０が、セカンダリＶＯＬ８０に複製される。
【００８０】
また、時刻ｔ２で（つまり、スプリット状態の期間中に）、プライマリＶＯＬ７０の第２のブロック領域にデータブロックＣが書かれると、プライマリＶＯＬ７０のデータイメージがイメージＴ１からイメージＴ２に変化する。このとき、内部コピー実行プログラム６０（図２）は、スナップショット管理情報７３を、プライマリＶＯＬ７０の第２のブロック領域に更新があったことを示す情報に更新する。
【００８１】
例えば、時刻ｔ２の後であって時刻ｔ３の前に、プライマリＶＯＬ７０の第２のブロック領域にデータブロックＤが上書きされると、プライマリＶＯＬ７０のデータイメージがイメージＴ２からイメージＴ３（第１のブロック領域にデータブロックＢが存在し、第２のブロック領域にデータブロックＤが存在するデータイメージ）に変化する。このとき、内部コピー実行プログラム６０は、データブロックＣ（更新前データ）をプライマリＶＯＬ７０からプールＶＯＬ７２に移動させ、スナップショット管理情報７３を、プライマリＶＯＬ７０の第２のブロック領域に更新があり、その第２のブロック領域に存在していたデータブロックＣがプールＶＯＬ７２に格納されたことを示す情報に更新する。
【００８２】
その後、プライマリＶＯＬ７０の更新が行われる前に、時刻ｔ３で、再び、プライマリＶＯＬ７０とバーチャルＶＯＬ７１とがスプリット状態にされる。
【００８３】
この時刻ｔ３の時点で、換言すれば、スプリット状態にされた場合に、ＣＰＵ２２は、その時刻ｔ３におけるプライマリＶＯＬ７０のイメージＴ３をバーチャルＶＯＬ７１に論理的に保持することを目的として、プールＶＯＬ７２に格納されている全ての更新前データを消去する。
【００８４】
また、ＣＰＵ２２は、スナップショット管理情報７３を、イメージＴ０を復元するための情報からイメージＴ３を復元するための情報に更新する。具体的には、例えば、時刻ｔ３の時点では、プライマリＶＯＬ７０において、未だ更新が行われていない状態なので、ＣＰＵ２２は、スナップショット管理情報７３を、プライマリＶＯＬ７０で更新が行われていないことを示す情報に更新する。
【００８５】
時刻ｔ４の時点でプライマリＶＯＬ７０の第２のブロック領域にデータブロックＥが上書きされると、プライマリＶＯＬ７０のデータイメージがイメージＴ３からイメージＴ４に変化する。このとき、内部コピー実行プログラム６０は、データブロックＤ（更新前データ）をプライマリＶＯＬ７０からプールＶＯＬ７２に書き込み、スナップショット管理情報７３を、プライマリＶＯＬ７０の第２のブロック領域で更新があり、かつその第２のブロック領域に存在していたデータブロックＤがプールＶＯＬ７２に移動したことを示す情報に更新する。
【００８６】
時刻ｔ４の時点でリモートコピー処理が行われる。リモートコピー実行プログラム６１（図２）は、転送差分ビットマップテーブル７４を参照することにより、プライマリＶＯＬ７０の第１のブロック領域に更新が無いので、イメージＴ３を構成するデータブロックＢがプライマリＶＯＬ７０に存在することを把握し、更にプライマリＶＯＬ７０の第２のブロック領域に更新があったので、イメージＴ３を構成する別のデータブロックＤがプールＶＯＬ７２に存在することを把握する。リモートコピー実行プログラム６１は、プライマリＶＯＬ７０からデータブロックＢを取得し、更にプールＶＯＬ７２からデータブロックＤを取得し、データブロックＢ及びデータブロックＤを第２の記憶制御装置３に転送する。
【００８７】
時刻ｔ５の時点は、リモートコピー処理が完了した時点である。この結果、セカンダリＶＯＬ８０におけるイメージＴ０が、時刻ｔ３におけるプライマリＶＯＬ７０のイメージＴ３に更新される。つまり、セカンダリＶＯＬ８０の第１ブロック領域のデータブロックＡにデータブロックＢが上書きされ、更にセカンダリＶＯＬ８０の第２のブロック領域にデータブロックＤが書き込まれる。
【００８８】
尚、これ以降、第２の記憶制御装置３は、次のスプリット時点ｔ６のイメージＴ６を構成するデータを受信するまでの期間、イメージＴ３を保存する。
【００８９】
以後、時刻ｔ３乃至時刻ｔ５において実行された上述の処理が定期的に繰り返される。
【００９０】
つまり、第１の記憶制御装置２では、例えば１５秒間隔で、プライマリＶＯＬ７０とバーチャルＶＯＬ７１とがスプリット状態にされる。そのスプリット状態にされている期間中であって、次にスプリット状態にされる時点までに（換言すれば、内部コピー処理及びスナップショット更新処理に並行して）、リモートコピー処理が実行される。そのリモートコピー処理が完了した時点以降に、再び、プライマリＶＯＬ７０とバーチャルＶＯＬ７１とがスプリット状態にされ、プールＶＯＬ７２から更新前データが消去される。このような処理が繰り返されることにより、定期的になされたスプリット時点におけるプライマリＶＯＬ７０のデータイメージ（図５の例では、時刻ｔ０におけるイメージＴ０、時刻ｔ３におけるイメージＴ３、時刻ｔ６におけるイメージＴ６）をバーチャルＶＯＬ７１に論理的に保持し、そのデータイメージをセカンダリＶＯＬ８０にコピーできる。
【００９１】
なお、このストレージシステム１の場合、このようなリモートコピー処理を単独のプライマリＶＯＬ７０についてだけでなく、コンテンシーグループ９０（図６）についても行なうことができる。コンテンシーグループ９０とは、図６に示すように、例えばデータベースのデータが格納されるプライマリＶＯＬ７０1と、当該データベースについてのログデータが格納されるプライマリＶＯＬ７０2と、当該データベースについての制御情報が格納されるプライマリＶＯＬ７０3となど、それぞれ関連するデータが格納された複数のプライマリＶＯＬ７０（７０1〜７０3）から構成されるプライマリＶＯＬ群をいう。
【００９２】
そして、このストレージシステム１では、第１の記憶制御装置２内に所望のコンテンシーグループ９０の各プライマリＶＯＬ７０1〜７０3とそれぞれ対応付けてバーチャルＶＯＬ７１1〜７１3を作成すると共に、第２の記憶制御装置３内に当該各プライマリＶＯＬ７０1〜７０3とそれぞれ対応付けてセカンダリＶＯＬ８０1〜８０3及びバーチャルＶＯＬ８３1〜８３3を作成できる。またこのストレージシステム１では、このコンテンシーグループ９０のリモートコピー処理を正ホストシステム４から指示することによって、このコンテンシーグループ９０に含まれる各プライマリＶＯＬのデータイメージを、それぞれ図５について上述した手順に従って、同じタイミングで第１の記憶制御装置２内の対応するバーチャルＶＯＬ７１1〜７１3を介して第２の記憶制御装置３内の対応するセカンダリＶＯＬ８０1〜８０3にコピーすることができる。
【００９３】
図７は本実施形態に係るスナップショット更新処理の概要を示し、より詳細には、プライマリＶＯＬ７０のデータイメージがイメージＴ３からイメージＴ４に変化し、バーチャルＶＯＬ７１によってイメージＴ３が論理的に保持される様子を示す。
【００９４】
スナップショット管理情報７３は、差分ビットマップテーブル１００、アドレステーブル１０１、及び差分データ制御ブロック（ＤＤＣＢ：Differential Data Control Block）１０２を含む。
【００９５】
差分ビットマップテーブル１００は、プライマリＶＯＬ７０内の複数のブロック領域（例えば、１ブロック領域は６４Ｋバイト）にそれぞれ対応する複数のビットを有する。例えば、イメージＴ３からイメージＴ４に変わる場合、図７に示すように、プライマリＶＯＬ７０の第１のブロック領域は、更新されないので、その第１のブロック領域に対応するビットは「０」のままであり、第２のブロック領域のデータブロックＤにデータブロックＤが上書きされるので、その第２のブロック領域に対応するビットが「０」から「１」に更新される。
【００９６】
アドレステーブル１０１は、プライマリＶＯＬ７０の複数のブロック領域にそれぞれ対応したアドレス領域を有する。あるブロック領域に対応する更新前データが存在していれば、そのあるブロック領域に対応するアドレス領域には、そのアドレス領域に対応するアドレスであって、差分データ制御ブロック１０２上のアドレスが格納される。
【００９７】
差分データ制御ブロック１０２は、例えば、プールＶＯＬ７２内の複数のブロック領域にそれぞれ対応する管理領域を有する。各管理領域には、プールＶＯＬ７２内のブロック領域に対応する位置に格納された更新前データがどの階層のスナップショットのデータであるかが記録される。ＣＰＵ２２は、管理領域を辿ることによって、複数階層の更新前データを取得することができる。
【００９８】
尚、差分データ制御ブロック１０２の使用されていない領域は、空きキューとして管理される。空きキューは、空きキューカウンタ１０３によって管理される。
【００９９】
上述の構成により、スナップショット作成時点におけるプライマリＶＯＬ７０のデータイメージを論理的にバーチャルＶＯＬ７１に複写できる。そして、バーチャルＶＯＬ７１内のデータがどの階層の更新前データであるかは、差分データ制御ブロック１０２によって管理される。
【０１００】
（２）外部スナップショット作成機能
次に、ストレージシステム１に採用された外部スナップショット作成機能について説明する。本実施の形態によるストレージシステム１は、図８に示すように、正ホストシステム４から第１の記憶制御装置２に対して外部スナップショット作成要求を与えることにより、その要求が与えられた時点で第１の記憶制御装置２において作成したプライマリＶＯＬ７０のスナップショットと同一内容の外部からアクセス可能なスナップショット（以下、これを外部スナップショットと呼ぶ）を第２の記憶制御装置３内に迅速に作成できる点を特徴の１つとしている。
【０１０１】
この外部スナップショットは、外部スナップショット作成要求が第１の記憶制御装置２に与えられた時点のプライマリＶＯＬ７０のバックアップとして、アクセス可能な状態で１つだけ作成される点において、セカンダリＶＯＬ８０に障害が発生した場合のバックアップとして、外部から認識できない状態で一定時間ごとに作成されてバーチャルＶＯＬ８３に保持されるセカンダリＶＯＬ８０のデータイメージ（以下、これを内部スナップショットと呼ぶ）と相違する。
【０１０２】
なお、かかる外部スナップショット作成要求がコンテンシーグループを指定して与えられた場合には、そのコンテンシーグループに属する各プライマリＶＯＬ７０（７０1〜７０3（図６））のスナップショットと同一内容の外部スナップショットがそれぞれ第２の記憶制御装置３内に作成される。
【０１０３】
ただし、１つのプライマリＶＯＬ７０に対応させて、第２の記憶制御装置３内に１つの外部スナップショットを作成する処理も、コンテンシーグループ９０を構成する各プライマリＶＯＬ７０にそれぞれ対応させて、第２の記憶制御装置３内に複数の外部スナップショットを作成する処理も、作成する外部スナップショットの数が異なるだけで実際の処理内容は同様である。よって、以下においては、１つのプライマリＶＯＬ７０に対応させて１つの外部スナップショットを第２の記憶制御装置３内に作成する場合を例に説明する。
【０１０４】
ところで、ストレージシステム１では、上述のように第１の記憶制御装置２において、図９に示すように、定期的にプライマリＶＯＬ７０とバーチャルＶＯＬ７１とをスプリット状態にして第１及び第２の記憶制御装置２，３間でリモートコピー処理を実行することで、プライマリＶＯＬ及びセカンダリＶＯＬ間の遠隔コピーを実現している。
【０１０５】
このため、あるサイクルのリモートコピー処理実行中に正ホストシステム４から外部スナップショット作成要求が与えられたとしても、図１０に示すように、そのサイクルのリモートコピー処理が完了してセカンダリＶＯＬ８０のデータが確定する（バーチャルＶＯＬにスナップショットが作成される）までは、外部スナップショット作成要求が与えられた時刻で作成したプライマリＶＯＬ７０のスナップショットを復元するための差分データを第１の記憶制御装置２から第２の記憶制御装置３に転送することができない。従って、何らの手当てもしなければ、外部スナップショット作成要求が与えられた時刻で作成したプライマリＶＯＬ７０のスナップショットと同一内容の外部スナップショットを、迅速に第２の記憶制御装置３内に作成することができない。
【０１０６】
そこで、ストレージシステム１においては、あるサイクルのリモートコピー処理実行中に正ホストシステム４から外部スナップショット作成要求が与えられた場合、図１１に示すように、そのサイクルのリモートコピー処理を中断し、その後そのサイクルの未転送の差分データと、外部スナップショット作成要求が与えられた時点のプライマリＶＯＬ７０のデータイメージを復元するための差分データとをまとめて第１の記憶制御装置２から第２の記憶制御装置３に送信することにより、かかる外部スナップショットを迅速に作成し得るようになされている。
【０１０７】
図１２は、このような外部スナップショットの作成処理に関する第１の記憶制御装置２のＣＰＵ２２（図１）の処理内容を示すフローチャートである。ＣＰＵ２２は、リモートコピー実行プログラム６１（図２）に基づき、この図１２に示す正側用外部スナップショット作成処理手順に従って、外部スナップショット作成要求が与えられた時刻で作成したプライマリＶＯＬ７０のスナップショットと同一内容の外部スナップショットを第２の記憶制御装置３内に作成するための処理を実行する。
【０１０８】
すなわちＣＰＵ２２は、正ホストシステム４から外部スナップショット作成要求が与えられると、そのとき実行していたリモートコピー処理（データ転送処理）を中断し、この後第２の記憶制御装置３に対して、外部スナップショットを作成すべき旨のコマンド（以下、これを外部スナップショット作成指示コマンドと呼ぶ）を送信する（Ｓ２０）。またＣＰＵ２２は、これと並行して、その時点におけるプライマリＶＯＬ７０のデータイメージをバーチャルＶＯＬ７１に反映することにより、当該時点におけるプライマリＶＯＬ７０のスナップショットを作成する（Ｓ２１）。
【０１０９】
続いてＣＰＵ２２は、図１３に示すように、ステップＳ２１において作成したスナップショットの差分データの転送を管理するための転送差分ビットマップテーブル７４Ａと、ステップＳ２０においてリモートコピー処理を中断したスナップショットの未転送の差分データを管理するための転送差分ビットマップテーブル７４Ｂとをマージした（合わせた）ビットマップテーブル（以下、これをマージビットマップテーブルと呼ぶ）７４Ｃを作成する（Ｓ２２）。
【０１１０】
次いで、ＣＰＵ２２は、このマージビットマップテーブル７４Ｃに基づいて、外部スナップショット作成要求が与えられた時点のプライマリＶＯＬ７０のスナップショットを復元するために必要な差分データを第１の記憶制御装置２から第２の記憶制御装置３に送信するためのリモートコピー処理を開始する（Ｓ２３−Ｓ２４−Ｓ２３）
【０１１１】
そしてＣＰＵは、この後かかるリモートコピー処理が終了すると（Ｓ２４：ＹＥＳ）、第２の記憶制御装置３に所定のデータ転送終了通知を送信することにより、第１の記憶制御装置２のバーチャルＶＯＬ７１と第２の記憶制御装置３のセカンダリＶＯＬ８０とのペア状態を「ＰＳＵＳ」に移行させ（Ｓ２５）、その後この一連の処理を終了する。
【０１１２】
一方、図１４は、外部スナップショットの作成処理に関する第２の記憶制御装置３のＣＰＵ８１（図４）の処理内容を示すフローチャートである。ＣＰＵ８１は、リモートコピー実行プログラム６１に基づき、この図１４に示す副側用外部スナップショット作成処理手順に従って、外部スナップショット作成要求が与えられた時刻で作成したプライマリＶＯＬ７０のスナップショットと同一内容の外部スナップショットを作成する。
【０１１３】
すなわちＣＰＵ８１は、第１の記憶制御装置２からの外部スナップショット作成指示コマンド（図１２のステップＳ２０参照）を受信すると、まず、そのとき実行中のリモートコピー処理を中断し（Ｓ３０）、この後第１の記憶制御装置２から図１３について上述したマージビットマップテーブル７４Ｃに基づく差分データの転送が開始されるのを待ち受ける（Ｓ３１）。
【０１１４】
そしてＣＰＵ８１は、やがて差分データの転送が開始されると、かかる差分データの受信処理を実行する（Ｓ３２−Ｓ３３−Ｓ３２）。またＣＰＵ８１は、この後その受信処理が完了すると（Ｓ３３：ＹＥＳ）、そのときのセカンダリＶＯＬ８０のデータイメージをバーチャルＶＯＬ８３に反映するように当該バーチャルＶＯＬ８３を更新する（Ｓ３４）。
【０１１５】
さらにＣＰＵ８１は、この後第１の記憶制御装置２から送信されてきたデータ転送終了通知（図１２のステップＳ２５参照）を受信すると、そのときのバーチャルＶＯＬ８３のデータイメージを反映した外部からアクセス可能なバーチャルＶＯＬ１１０、つまり外部スナップショットを作成する（Ｓ３５）。このとき作成される外部スナップショットは、第１の記憶制御装置２が外部スナップショット作成要求を受けた時刻で作成したプライマリＶＯＬ７０のスナップショットと同一のデータ内容を有する。そしてＣＰＵ８１は、この後この一連の処理を終了する。
【０１１６】
（３）外部スナップショット作成時間提示機能
ここで、上述のように第１の記憶制御装置２に外部スナップショット作成要求が与えられた時刻で作成したプライマリＶＯＬ７０のスナップショットと同一内容の外部スナップショットを第２の記憶制御装置３内に作成する場合、第１の記憶制御装置２から第２の記憶制御装置３への差分データの転送にある程度の時間を要するため、第１の記憶制御装置２に外部スナップショット作成指示が与えられてから第２の記憶制御装置３内に外部スナップショットが作成されるまでにタイムラグが発生する。
【０１１７】
このため、例えばある時刻で作成したプライマリＶＯＬ７０のスナップショットと同一内容の外部スナップショットをテープ状記憶媒体などに保存しようとする場合などにおいて、第２の記憶制御装置３内に作成された複数の外部スナップショットのうち、目的の外部スナップショットがどれであるかをユーザが明確に識別できるような工夫が必要となる。
【０１１８】
この場合において、このストレージシステム１では、第１の記憶制御装置２内のバーチャルＶＯＬ７１と第２の記憶制御装置３内のセカンダリＶＯＬ８０との間のリモートコピー処理が完了した場合に、これらバーチャルＶＯＬ７１及びセカンダリＶＯＬ８０間のペア状態が「ＰＡＩＲ」から「ＰＳＵＳ」に遷移するため、正ホストシステム４から既存のコマンド（例えば「pairdisplay」コマンド）を用いてバーチャルＶＯＬ７１及びセカンダリＶＯＬ８０のペア状態を監視することで、外部スナップショットの作成のタイミングを検出することができる。
【０１１９】
しかしながら、この方法により外部スナップショットの作成のタイミングを検出できたとしても、その作成された外部スナップショットが確実に目的の外部スナップショットであるという保証はなく、より確実にユーザが目的の外部スナップショットを特定できる工夫が望まれる。
【０１２０】
そこで、このストレージシステム１では、正ホストシステム４から第１の記憶制御装置２に対して外部スナップショット作成要求が発行された時刻を当該第１の記憶制御装置２から第２の記憶制御装置３に通知し、この時刻を第２の記憶制御装置３において、そのとき作成した外部スナップショットと関連付けて管理することにより、この時刻に基づいて、ユーザが第２の記憶制御装置３内に作成された外部スナップショットを識別し得るようになされている。
【０１２１】
実際上、このストレージシステム１の場合、外部スナップショット作成要求には、文字列データを格納するためのフィールド（以下、これを文字列格納フィールドと呼ぶ）が設けられている。そして正ホストシステム４は、第１の記憶制御装置２に外部スナップショット作成要求を発行する際には、時刻情報として、その時刻を表す文字列のデータをこの文字列格納フィールドに格納する。
【０１２２】
また第１の記憶制御装置２のＣＰＵ２２は、外部スナップショット作成要求を受信したときには、この外部スナップショット作成要求の文字列格納フィールドに格納されている文字列データを抽出して記憶し、その後図１２について上述した正側用外部スナップショット作成処理手順のステップＳ２５において第２の記憶制御装置３にデータ転送終了通知を送信する際に、この文字列データをデータ転送終了通知の所定位置に格納して第２の記憶制御装置３に送信する。
【０１２３】
第２の記憶制御装置３のＣＰＵ８１は、データ転送終了通知を受信したときには、かかる文字列データをこのデータ転送終了通知の所定位置から読み出し、この読み出した文字列データをそのとき作成した外部スナップショットと対応付けて記憶する。
【０１２４】
またＣＰＵ８１は、この後第２の記憶制御装置３に接続された管理端末等を用いて外部スナップショットに関する情報の表示指令がユーザにより入力された場合には、この文字列データをその管理端末等に送信することにより、当該文字列データに基づく文字列をその管理端末等に可視表示させる。
【０１２５】
このようにしてこのストレージシステム１では、第２の記憶制御装置３に作成された外部スナップショットが、いつの時点のプライマリＶＯＬ７０のデータイメージを反映したものであるかを、この可視表示された文字列によりユーザが容易に認識することができるようになされている。
【０１２６】
一方、このストレージシステム１の場合、第１の記憶制御装置２のＣＰＵ２２は、例えば特開２００２−４９５１７号公報に開示された方法を利用して、プライマリＶＯＬ７０のデータイメージをバーチャルＶＯＬ７１に反映するようにしてスナップショットを作成するごとに、そのスナップショットにシーケンス番号を付与し、このシーケンス番号を管理している。この場合において、第１の記憶制御装置２のＣＰＵ２２は、かかるシーケンス番号をコンテンシーグループごとに管理する。
【０１２７】
そしてＣＰＵ２２は、そのスナップショットについての差分データを第２の記憶制御装置３に送信し終えた時点をもって、そのスナップショットについてのリモートコピー処理を完了したと判定する。またＣＰＵ２２は、この後、正ホストシステム４からの要求に応じて、かかるリモートコピー処理が完了した時間を当該正ホストシステム４に通知する。
【０１２８】
これより、このストレージシステム１では、この機能を利用することによって、第１の記憶制御装置２に接続された正ホストシステム４を利用するユーザが、作成指示した外部スナップショットが第２の記憶制御装置３内に作成された大まかな時間を認識することができるようになされている。
【０１２９】
（４）ストレージシステムにおける複数スナップショット管理方法
（４−１）共用ビットによる複数スナップショットの管理
ところで、このストレージシステム１の場合、リモートコピー処理の実行中はセカンダリＶＯＬ８０のデータが確定しないため、当該セカンダリＶＯＬ８０に基づいて外部スナップショットを作成することができない。
【０１３０】
一方、リモートコピー処理の完了後は、当該リモートコピー処理の完了後のセカンダリＶＯＬ８０のデータイメージである内部スナップショットがバーチャルＶＯＬ８３に保持される。そしてこのバーチャルＶＯＬ８３に保持された内部スナップショットは、データが確定した状態にある。
【０１３１】
そこで、第２の記憶制御装置３のＣＰＵ８１は、図１４について上述した副側用外部スナップショット作成処理手順のステップＳ３５において、かかるバーチャルＶＯＬ８３に保持された内部スナップショットに基づいて外部スナップショットを作成する。従って、図１５に示すように、セカンダリＶＯＬ８０から見て内部スナップショットを保持するバーチャルＶＯＬ８３は「子」、外部スナップショットを保持するバーチャルＶＯＬ１１０は「孫」の関係となる。
【０１３２】
この場合、スナップショット機能が搭載された従来の記憶制御装置でも複数のスナップショットを作成することはできたが、かかる従来の記憶制御装置では正ボリュームに対して複数の副ボリュームを作成する「親」と「子」の階層の関係までしかサポートしていない。
【０１３３】
しかしながら、本実施の形態によるストレージシステム１では、図１５に示すように、第２の記憶制御装置５０内にセカンダリＶＯＬ８０に基づいて「子」階層のバーチャルＶＯＬ８３（内部スナップショット）を複数作成することができ、またこれら「子」階層のバーチャルＶＯＬ８３（内部スナップショット）に基づいて「孫」階層のバーチャルＶＯＬ１１０（外部スナップショット）を作成することができる。さらにストレージシステム１では、「孫」階層以降も、既存のバーチャルＶＯＬ１１０（外部スナップショット）に基づいて順次バーチャルＶＯＬ１１０（外部スナップショット）を作成することもできる。このため、セカンダリＶＯＬ８０と、これら作成した複数階層のバーチャルＶＯＬ１１０（外部スナップショット）との間の差分を管理するための新たなスナップショット管理方法が必要となる。
【０１３４】
そこでこのストレージシステム１の場合、第２の記憶制御装置３は、セカンダリＶＯＬ８０の各ブロックとそれぞれ対応させて、図１６に示すように、正ＶＯＬアドレステーブル１２０によってそのローカルメモリ８２（図４）上の保存位置が管理された階層管理ビットマップテーブル１２１をスナップショット管理情報８６（図４）の一部としてローカルメモリ８２に保持している。
【０１３５】
そしてこのストレージシステム１では、この階層管理ビットマップテーブル１２１によって、各階層のバーチャルＶＯＬ８３，１１０に保持されたスナップショットと、セカンダリＶＯＬ８０のデータ内容との間に差分があるか否かを管理する一方、カスケードな関係を有する一群のバーチャルＶＯＬ８３Ａ，８３Ｂ，１１０について共用する共用ビットを各階層管理ビットマップテーブル１２１に導入し、この共用ビットによって、新たなバーチャルＶＯＬ１１０の作成時におけるかかる一群のバーチャルＶＯＬ８３，１１０の差分管理を一括して行ない得るようになされている。
【０１３６】
実際上、階層管理ビットマップテーブル１２１は、図１６からも明らかなように、複数のビットから構成されている。そして第２の記憶制御装置３のＣＰＵ８１は、第２の記憶制御装置３内に内部スナップショットや外部スナップショットを保持するための新たなバーチャルＶＯＬ８３，１１０を作成するごとに、その作成したバーチャルＶＯＬ８３，１１０に対して階層管理ビットマップテーブル１２１内の１つの未使用のビット（他のバーチャルＶＯＬ８３，１１０に割り当てられていないビット）をそのバーチャルＶＯＬ８３，１１０に専用のビット（以下、これを専用ビットと呼ぶ）として順次割り当てる。またＣＰＵ８１は、これと併せてこのバーチャルＶＯＬ８３，１１０の作成によって新たにカスケードな関係となった各バーチャルＶＯＬの組に対して、それぞれ階層管理ビットマップテーブル１２１内の１つの未使用のビットを共用ビットとして割り当てる。
【０１３７】
例えばＣＰＵ８１は、図１７（Ａ）に示すように、第２の記憶制御装置３内に「子」階層のバーチャルＶＯＬ８３（ＬＵＮ♯１）が１つしか存在しない状態のときには、そのバーチャルＶＯＬ８３に対して階層管理ビットマップテーブル１２１の１つのビット（図１７（Ａ）の例では左端のビット）を専用ビットとして割り当てる。またＣＰＵ８１は、図１７（Ｂ）に示すように、この後このバーチャルＶＯＬ８３とカスケードに「孫」階層のバーチャルＶＯＬ１１０（ＬＵＮ♯２）を作成したときには、この「孫」階層のバーチャルＶＯＬ１１０に専用ビット（図１７（Ｂ）の例では左から３番目のビット）を１つ割り当て、当該「孫」階層のバーチャルＶＯＬ１１０の作成によって発生した、カスケードな関係を有する「子」階層及び「孫」階層の各バーチャルＶＯＬ８３，１１０（ＬＵＮ♯１，ＬＵＮ♯２）の組に対して１つの共用ビット（図１７（Ｂ）の例では左端のビット）を割り当てる。
【０１３８】
さらにＣＰＵ８１は、図１７（Ｂ）の状態から、図１７（Ｃ）に示すように、かかる「孫」階層のバーチャルＶＯＬ１１０（ＬＵＮ♯２）とカスケードに「曾孫」階層のバーチャルＶＯＬ１１０（ＬＵＮ♯５）を作成した場合には、この「曾孫」階層のバーチャルＶＯＬ１１０に対して専用ビットを１つ割り当て、これと同時にカスケードな関係を有する「子」階層、「孫」階層及び「曾孫」階層の各バーチャルＶＯＬ８３，１１０（ＬＵＮ♯１，ＬＵＮ♯２，ＬＵＮ♯５）の組と、「孫」階層及び「曾孫」階層のバーチャルＶＯＬ１１０（ＬＵＮ♯２，ＬＵＮ♯５）の組とに対して、それぞれ１つの共用ビットを割り当てる。
【０１３９】
この場合において、ＣＰＵ８１は、上述のようなバーチャルＶＯＬ８３，１１０の組に対して共用ビットに割り当てる割当て処理を、新たな外部スナップショットが作成されることにより共用ビットが必要になったときに、階層管理ビットマップテーブル１２１の変更量が少なくなるような元の階層管理ビットマップテーブル１２１のデータを有効に活用できる方法で行なう。
【０１４０】
例えばＣＰＵ８１は、図１７（Ａ）の状態から図１７（Ｂ）のように外部スナップショットを保持する新たな「孫」階層のバーチャルＶＯＬ１１０（ＬＵＮ♯２）を作成した場合には、それまで「子」階層のバーチャルＶＯＬ８３（ＬＵＮ♯１）の専用ビットとして割り当てていたビットを、「子」階層のバーチャルＶＯＬ８３及び「孫」階層のバーチャルＶＯＬ（ＬＵＮ♯２）の共用ビットに変更し、これとは別に新たに「子」階層及び「孫」階層の各バーチャルＶＯＬ８３，１１０にそれぞれ未使用のビットを専用ビットとして割り当てる。
【０１４１】
またＣＰＵ８１は、例えば図１７（Ｂ）の状態から図１７（Ｃ）のように外部スナップショットを保持する新たな「曾孫」階層のバーチャルＶＯＬ１１０（ＬＵ♯５）を作成した場合には、それまで「子」階層及び「孫」階層のバーチャルＶＯＬ８３，１１０（ＬＵＮ１，ＬＵＮ２）の共用ビットとして割り当てていたビットを、「子」階層、「孫」階層及び「曾孫」階層の各バーチャルＶＯＬ８３，１１０の共用ビットに変更すると共に、それまで「孫」階層のバーチャルＶＯＬ１１０の専用ビットとして割り当てていたビットを、「孫」階層及び「曾孫」階層のバーチャルＶＯＬ１１０の共用ビットに変更し、これとは別に新たに「孫」階層及び「曾孫」階層のバーチャルＶＯＬ１１０にそれぞれ未使用のビットを専用ビットとして割り当てる。
【０１４２】
そしてＣＰＵ８１は、この後上述のようにして複数階層のバーチャルＶＯＬ８３，１１０に割り当てた共用ビットのうち、「１」に設定できる共用ビットが存在するときには、専用ビットに優先して、その共用ビットを「１」に設定する。
【０１４３】
例えば図１７（Ａ）の状態から図１７（Ｂ）のように新たな外部スナップショットを保持する「孫」階層のバーチャルＶＯＬ１１０（ＬＵＮ♯２）を作成したときには、「子」階層及び「孫」階層の各バーチャルＶＯＬ８３，１１０（ＬＵＮ♯１，ＬＵＮ♯２）の共用ビットをそれぞれ「１」に設定することも、これら「子」階層及び「孫」階層の各バーチャルＶＯＬ８３，１１０の専用ビットをそれぞれ「１」に設定することもできる場合がある。そこで、この場合にＣＰＵ８１は、「子」階層及び「孫」階層の各バーチャルＶＯＬ８３，１１０にそれぞれ割り当てた専用ビットをそれぞれ「１」に設定するのではなく、かかる共用ビットを「１」に設定する。
【０１４４】
また例えば図１７（Ｂ）の状態から図１７（Ｃ）のように「曾孫」階層のバーチャルＶＯＬ１１０（ＬＵ♯５）を作成したときには、「子」階層、「孫」階層及び「曾孫」階層の各バーチャルＶＯＬ８３，１１０（ＬＵＮ♯１，ＬＵＮ♯２，ＬＵＮ♯５）の共用ビットを「１」に設定することも、これら「子」階層、「孫」階層及び「曾孫」階層の各バーチャルＶＯＬ８３，１１０の専用ビットをそれぞれ「１」に設定することもできる場合がある。そこで、この場合にＣＰＵ８１は、「子」階層、「孫」階層及び「曾孫」階層の各バーチャルＶＯＬ８３，１１０の専用ビットをそれぞれ「１」に設定するのではなく、かかる共用ビットを「１」に設定することとなる。
【０１４５】
このようにこのストレージシステム１では、かかる場合に専用ビットに優先して共用ビットを「１」に設定することにより、新たなバーチャルＶＯＬ８３，１１０（内部スナップショット又は外部スナップショット）の作成時に変更すべき階層管理ビットマップテーブル１２１上のビット数を低減し、これによりかかる新たなバーチャルＶＯＬ８３，１１０（内部スナップショット又は外部スナップショット）の生成処理をより容易かつ迅速に行い得るようになされている。
【０１４６】
なお、上述のような共用ビットの作成及び割当て処理は、新たなバーチャルＶＯＬ８３，１１０の生成処理をより容易かつ迅速に行うためのものであるため、新たなバーチャルＶＯＬ８３，１１０が作成されたタイミングにおいてのみ行なわれる。従って、例えばその後セカンダリＶＯＬ８０やバーチャルＶＯＬ８３，１１０にデータの書込みが発生した場合、ＣＰＵ８１は、共用ビットに「１」を設定できる場合であっても、共用ビットに優先して専用ビットを「１」に設定することになる。
【０１４７】
ところで、このストレージシステム１では、階層管理ビットマップテーブル１２１の各ビットがそれぞれどのバーチャルＶＯＬ８３，１１０に割り当てられているかを、図１６に示すようなビット管理用ビットマップテーブル１２２によって管理している。
【０１４８】
このビット管理用ビットマップテーブル１２２は、複数のビットから構成されるもので、階層管理ビットマップテーブル１２１上の各ビットにそれぞれ対応させて設けられる。
【０１４９】
この場合、ビット管理用ビットマップテーブル１２２の各ビットは、それぞれ未だ作成されていない論理ユニットのＬＵＮを含めて、予め先頭ビット（図１６のビット管理用ビットマップテーブル１２２における最上段のビット）から順番にＬＵＮの小さい論理ユニットとそれぞれ対応付けられている。
【０１５０】
そして第２の記憶制御装置３のＣＰＵ８１は、階層管理ビットマップテーブル１２１の各ビットを共用ビット又はいずれかのバーチャルＶＯＬ８３，１１０の専用ビットに割り当てる際には、そのビットと対応付けられたビット管理用ビットマップテーブル１２２上の割当て対象の論理ユニットのＬＵＮと対応付けられたビットに「１」を設定し、他のビットに「０」を設定する。
【０１５１】
例えば、図１７（Ｂ）の例では、階層管理ビットマップテーブル１２１の２番目のビットが「子」階層のバーチャルＶＯＬ８３と対応付けられているため、ＣＰＵ８１は、そのビットと対応するビット管理用ビットマップテーブル１２２について、かかる「子」階層のバーチャルＶＯＬ８３に付与されたＬＵＮ（この図１７（Ｂ）の例では「♯１」）と対応するビット（図１６の例では一番上のビット）に「１」を設定し、他のビットに「０」を設定する。
【０１５２】
また図１７（Ｂ）の例では、階層管理ビットマップテーブル１２１の左端のビットが「子」階層及び「孫」階層の共用ビットとなっているため、ＣＰＵ８１は、そのビットと対応するビット管理用ビットマップテーブル１２２について、かかる「子」階層及び「孫」階層のバーチャルＶＯＬ８３，１１０にそれぞれ付与されたＬＵＮ（この図１７（Ｂ）の例では、それぞれ「♯１」及び「♯２」）と対応するビット（図１６の例では上から１番目及び２番目のビット）に「１」を設定し、他のビットに「０」を設定する。
【０１５３】
そしてＣＰＵ８１は、内部スナップショット又は外部スナップショットを保持する新たなバーチャルＶＯＬ８３，１１０の作成によって階層管理ビットマップテーブル１２１の更新が必要となるごとに、これに応じて必要なビット管理用ビットマップテーブル１２２を更新し、これにより階層管理ビットマップテーブル１２１上の各ビットとバーチャルＶＯＬ８３，１１０との対応付けを必要に応じて変更する。
【０１５４】
このようにこのストレージシステム１では、階層管理ビットマップテーブル１２１の各ビットがそれぞれどのバーチャルＶＯＬ８３，１１０に割り当てられているかの管理をこのビット管理用ビットマップテーブル１２２に基づいて行うことにより、階層管理ビットマップテーブル１２１の各ビットの割り当てを容易に設定又は変更することができるようになされている。
【０１５５】
（４−２）共用ビット削除処理
上述のように共用ビットを利用する場合、作成されるバーチャルＶＯＬ８３，１１０が多くなればなるほど多くの共用ビットを必要とするため、共用ビットを利用しない方法に比べてより多くのメモリ資源を使用することになる。従って、この共用ビットをそのままにしておくと、かかる階層管理ビットマップテーブル１２２を記憶保持するメモリ資源（ローカルメモリ２５（図１））を圧迫することになる。
【０１５６】
そこでこのストレージシステム１の場合、第２の記憶制御装置３のＣＰＵ８１は、新たなバーチャルＶＯＬ８３，１１０が作成された後、所定時間が経過したときには、図１８に示すように、各階層管理ビットマップテーブル１２１について、共用ビットが存在するか否かの確認を行い、共用ビットが存在し、かつその共用ビットが「０」に設定されている場合には、その共用ビットを直ちに削除する一方、共用ビットが存在し、かつその共用ビットが「１」に設定されている場合には、バックグランド処理でその共用ビットを対応する専用ビットに書き換えた上で、その共用ビットを削除する処理を実行する。
【０１５７】
例えば図１７（Ａ）の状態から図１７（Ｂ）のように新たな外部スナップショットを保持する「孫」階層のバーチャルＶＯＬ１１０（ＬＵＮ♯２）を作成したときには、上述のように「子」階層及び「孫」階層の各バーチャルＶＯＬ８３，１１０について共用する共用ビットに「１」が設定される。そこで、ＣＰＵ８１は、この後「子」階層及び「孫」階層の各バーチャルＶＯＬ８３，１１０にそれぞれ割り当てた専用ビットをそれぞれ「１」に変更した後に、かかる共用ビットを削除する処理をバックグランドで実行する。
【０１５８】
また例えば図１７（Ｂ）の状態から図１７（Ｃ）のように「曾孫」階層のバーチャルＶＯＬ１１０（ＬＵ♯５）を作成したときには、上述のように「子」階層、「孫」階層及び「曾孫」階層の各バーチャルＶＯＬ８３，１１０について共用する共用ビットに「１」が設定される。そこで、ＣＰＵ８１は、この後「子」階層、「孫」階層及び「曾孫」階層の各バーチャルＶＯＬ８３，１１０の専用ビットをそれぞれ「１」に変更した後に、かかる共用ビットを削除する処理をバックグランドで実行する。
【０１５９】
このようにしてこのストレージシステム１では、共用ビットを削除する処理を実行することにより、階層管理ビットマップテーブル１２１上の不要なビットの使用を是正し、これによりメモリ資源の浪費を防止し得るようになされている。
【０１６０】
（５）サイクル更新時間調整機能及び転送量調整機能
ところで、このストレージシステム１においては、第１の記憶制御装置２内に作成されるバーチャルＶＯＬ７１が１つの場合、このバーチャルＶＯＬ７１の内容が第２の記憶制御装置３内のセカンダリＶＯＬ８０に反映され、さらにこのセカンダリＶＯＬ８０の内容がバーチャルＶＯＬ８３に反映されて当該バーチャルＶＯＬ８３の内容が確定しない限り、次のセカンダリＶＯＬ７０のスナップショットを作成できない。
【０１６１】
この結果、例えば正ホストシステム４からのデータライト量が多くなると、第１の記憶制御装置２から第２の記憶制御装置３に転送される差分データのデータ量が多くなるために、一時的に第２の記憶制御装置３においてバーチャルＶＯＬ８３の内容の確定時間の時間間隔が長くなり、障害発生時のデータロスト量が増加するという問題がある。
【０１６２】
そこでこのストレージシステム１では、第１の記憶制御装置２内にバーチャルＶＯＬ７１を複数設け、これを循環的に順次使用する一方、図１９に示すように、正ホストシステム４からのライト要求の増加により一定サイクル内でのリモート転送が間に合わずに、データ未転送のバーチャルＶＯＬ７１が複数となった場合には、正ホストシステム４からのライト要求を数回に１回の割合でのみ受け付けるなどライト受付量を制限することにより、かかる問題に対応し得るようになされている。
【０１６３】
またこのストレージシステム１では、通常のサイクルとは別に正ホストシステム１を用いて第１の記憶制御装置２から第２の記憶制御装置３へのユーザがデータ転送の契機を与えられるようになされており、これにより第１の記憶制御装置２から第２の記憶制御装置３への差分データを転送する際の１回分のデータ転送量を小さくして、障害発生時のデータロスト量を低減させ得るようになされている。
【０１６４】
（６）本実施の形態の効果
以上のように、このストレージシステム１では、第１の記憶制御装置２が、第２の記憶制御装置３に対する外部スナップショット作成要求が与えられたときに、第２の記憶制御装置３に対するそのサイクルの差分データの転送を中断すると共に、その時点におけるプライマリＶＯＬ７０のスナップショットを作成し、このスナップショットの差分データと、そのサイクルの未転送の差分データとをまとめて第２の記憶制御装置３に転送する。
【０１６５】
従って、このストレージシステム１では、正ホストシステム４から第１の記憶制御装置２に外部スナップショット作成要求が与えられた時点で第１の記憶制御装置において作成したスナップショットと同じ内容の外部スナップショットを迅速に第２の記憶制御装置３内に作成することができる。かくするにつき、ストレージシステム１の機能性を向上させて、ストレージシステム１全体としての利便性を向上させることができる。
【０１６６】
（７）他の実施の形態
なお上述の実施の形態においては、プライマリＶＯＬ７０（第１の記憶領域）のデータイメージでなるスナップショットを定期的又は不定期に作成し、作成したスナップショット（第１のスナップショット）の差分データを第２の記憶制御装置３に転送する第１の記憶制御装置２のコントローラ１０と、正ホストシステム４から第１の記憶制御装置２を介して与えられる第２の記憶制御装置３に対するスナップショット作成要求に応じて、セカンダリＶＯＬ８０（第２の記憶領域）のデータイメージでなる外部からアクセス可能な外部スナップショット（第１のスナップショット）を作成する第２の記憶制御装置３のコントローラ４０とを、図１のように構成するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成を広く適用することができる。
【産業上の利用可能性】
【０１６７】
本発明は、いわゆるスナップショット機能及びリモートコピー機能が搭載された複数の記憶制御装置から構成されるストレージシステムに適用できる。
【図面の簡単な説明】
【０１６８】
【図１】本実施の形態によるストレージシステムの構成を示すブロック図である。
【図２】ローカルメモリに格納される情報の一例を示す概念図である。
【図３】ボリューム管理テーブルの構成例を示す概念図である。
【図４】ストレージシステムにおける処理の流れの説明に供する概念図である。
【図５】ストレージシステムにおけるスナップショット管理方法の説明に供するタイミングチャートである。
【図６】コンテンシーグループの説明に供する概念図である。
【図７】スプリット状態開始時とリモートコピー実行時とを含んだ全体的な流れの説明に供する概念図である。
【図８】ストレージシステムにおける外部スナップショット作成機能の概要説明に供する概念図である。
【図９】ストレージシステムにおけるリモートコピー機能の説明に供するタイミングチャートである。
【図１０】ストレージシステムにおけるリモートコピー機能の問題点の説明に供するタイミングチャートである。
【図１１】ストレージシステムにおける外部スナップショット作成機能の概要説明に供するタイミングチャートである。
【図１２】正側用外部スナップショット作成処理手順を示すフローチャートである。
【図１３】転送差分ビットマップテーブルのマージの説明に供する概念図である。
【図１４】副側用外部スナップショット作成処理手順を示すフローチャートである。
【図１５】バーチャルＶＯＬの階層の説明に供する概念図である。
【図１６】階層管理ビットマップテーブル１２１の説明に供する概念図である。
【図１７】（Ａ）−（Ｃ）は、ストレージシステムにおける複数スナップショット管理方法の説明に供する概念図である。
【図１８】共用ビット削除処理の説明に供する概念図である。
【図１９】サイクル更新時間調整機能及び転送量調整機能の説明に供するタイミングチャートである。
【符号の説明】
【０１６９】
１……ストレージシステム、２，３……記憶制御装置、４……正ホストシステム、１０……コントローラ、１１……記憶装置、２２……ＣＰＵ、２５……ローカルメモリ、３０……ディスクドライブ、７０……プライマリＶＯＬ、７１，８３，１１０……バーチャルＶＯＬ、７４，７４Ａ，７４Ｂ，７４Ｃ……転送差分ビットマップテーブル、８０……セカンダリＶＯＬ、１２１……階層管理ビットマップテーブル、１２２……ビット管理用ビットマップテーブル。
【図１】
0004800031.tif 000002
【図２】
0004800031.tif 000003
【図３】
0004800031.tif 000004
【図４】
0004800031.tif 000005
【図５】
0004800031.tif 000006
【図６】
0004800031.tif 000007
【図７】
0004800031.tif 000008
【図８】
0004800031.tif 000009
【図９】
0004800031.tif 000010
【図１０】
0004800031.tif 000011
【図１１】
0004800031.tif 000012
【図１２】
0004800031.tif 000013
【図１３】
0004800031.tif 000014
【図１４】
0004800031.tif 000015
【図１５】
0004800031.tif 000016
【図１６】
0004800031.tif 000017
【図１７】
0004800031.tif 000018
【図１８】
0004800031.tif 000019
【図１９】
0004800031.tif 000020