(57)【要約】【課題】本発明は、メモリ容量の増加を有効に防止し得ると共に、データの転送効率を格段的に向上させ得る記憶制御装置を提案するものである。【解決手段】上位装置から送信されるデータを記憶するためのボリュームを提供する記憶制御装置であって、ボリュームに書き込まれたデータを、第１のデータ単位、又は当該第１のデータ単位内における第１のデータ単位に比して小さい第２のデータ単位で管理する管理部と、所定のタイミングで、ボリュームのスナップショットを取得するスナップショット取得部と、スナップショット取得部によるスナップショットにより取得されたボリュームのデータを、第１のデータ単位又は第２のデータ単位で、外部機器に転送する転送部とを備えるようにした。【選択図】図７
2007188277.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から送信されるデータを記憶するためのボリュームを提供する記憶制御装置であって、
前記ボリュームに書き込まれた前記データを、第１のデータ単位、又は当該第１のデータ単位内における前記第１のデータ単位に比して小さい第２のデータ単位で管理する管理部と、
所定のタイミングで、前記ボリュームのスナップショットを取得するスナップショット取得部と、
前記スナップショット取得部による前記スナップショットにより取得された前記ボリュームの前記データを、前記第１のデータ単位又は前記第２のデータ単位で、外部機器に転送する転送部と
を備えることを特徴とする記憶制御装置。
【請求項２】
前記転送部は、
前記管理部により前記第２のデータ単位で管理されていないときに、前記第１のデータ単位で、前記データを転送する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項３】
前記管理部は、
ビットマップテーブルにより前記第１のデータ単位を管理し、前記第２のデータ単位の先頭位置及び大きさにより前記第２のデータ単位を管理する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項４】
前記管理部は、
前記ビットマップテーブルのビット位置に対応したアドレスで、前記第２のデータ単位をハッシュ管理する
ことを特徴とする請求項３に記載の記憶制御装置。
【請求項５】
前記管理部は、
前記データの前記第２のデータ単位の領域が、すでに管理されているデータの第２のデータ単位の領域と重なっているときに、すでに管理されているデータの第２のデータ単位を変更して、１つの第２のデータ単位の領域にまとめて管理する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項６】
前記管理部は、
前記第２のデータ単位の領域の合計値が所定の閾値より大きいときに、管理している前記第２のデータ単位の領域をすべて削除する
ことを特徴とする請求項２に記載の記憶制御装置。
【請求項７】
前記管理部は、
前記第２のデータ単位の領域の数が所定の数より大きいときに、管理している前記第２のデータ単位の領域をすべて削除する
ことを特徴とする請求項２に記載の記憶制御装置。
【請求項８】
上位装置から送信されるコマンドに基づいた処理を実行する制御部と、
特定のコマンドを格納するための格納部と
を備え、
前記制御部は、
前記格納部に格納された前記特定のコマンドを優先的に実行する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項９】
前記格納部は、
前記外部機器に前記データを転送するためのデータ転送コマンドを格納し、
前記制御部は、
前記データ転送コマンドを優先的に実行する
ことを特徴とする請求項７に記載の記憶制御装置。
【請求項１０】
前記制御部は、
前記外部機器と通信するための通信コマンドのうち、同種の前記通信コマンドを１つのまとめコマンドにまとめて、前記外部機器に送信し、前記外部機器から送信される、前記外部機器での処理結果に基づいて、対応する処理を実行する
ことを特徴とする請求項８に記載の記憶制御装置。
【請求項１１】
上位装置から送信されるデータを記憶するためのボリュームを提供する記憶制御装置のデータ管理方法であって、
前記ボリュームに書き込まれた前記データを、第１のデータ単位、又は当該第１のデータ単位内における前記第１のデータ単位に比して小さい第２のデータ単位で管理する第１のステップと、
所定のタイミングで、前記ボリュームのスナップショットを取得する第２のステップと、
前記第２のステップにおける前記スナップショットにより取得された前記ボリュームの前記データを、前記第１のデータ単位又は前記第２のデータ単位で、外部機器に転送する第３のステップと
を備えることを特徴とする記憶制御装置のデータ管理方法。
【請求項１２】
前記第３のステップでは、
前記第１のステップにおいて、前記第２のデータ単位で管理していないときに、前記第１のデータ単位で、前記データを転送する
ことを特徴とする請求項１１に記載の記憶制御装置のデータ管理方法。
【請求項１３】
前記第１のステップでは、
ビットマップテーブルにより前記第１のデータ単位を管理し、前記第２のデータ単位の先頭位置及び大きさにより前記第２のデータ単位を管理する
ことを特徴とする請求項１１に記載の記憶制御装置のデータ管理方法。
【請求項１４】
前記第１のステップでは、
前記ビットマップテーブルのビット位置に対応したアドレスで、前記第２のデータ単位をハッシュ管理する
ことを特徴とする請求項１３に記載の記憶制御装置のデータ管理方法。
【請求項１５】
前記第１のステップでは、
前記データの前記第２のデータ単位の領域が、すでに管理されているデータの第２のデータ単位の領域と重なっているときに、すでに管理されているデータの第２のデータ単位の領域を変更して、１つの第２のデータ単位の領域にまとめて管理する
ことを特徴とする請求項１１に記載の記憶制御装置のデータ管理方法。
【請求項１６】
前記第１のステップでは、
前記第２のデータ単位の領域の合計値が所定の閾値より大きいときに、管理している前記第２のデータ単位の領域をすべて削除する
ことを特徴とする請求項１２に記載の記憶制御装置のデータ管理方法。
【請求項１７】
前記第１のステップでは、
前記第２のデータ単位の領域の数が所定の数より大きいときに、管理している前記第２のデータ単位の領域をすべて削除する
ことを特徴とする請求項１２に記載の記憶制御装置のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及びそのデータ管理方法に関し、例えば、ホストシステムから送信されるデータが記憶された記憶制御装置のボリュームを、他の記憶制御装置に複製するストレージシステムに適用して好適なものである。
【背景技術】
【０００２】
従来、記憶システムに対する被災対策（ディザスタリカバリ）として、あるサイトにおいて運用されている、ホストシステムから送信されるデータを記憶する記憶制御装置（以下、正側の記憶制御装置と呼ぶ）のボリュームのバックアップを、これと遠隔したサイトに設置された記憶制御装置（以下、副側の記憶制御装置と呼ぶ）のボリュームにおいて管理する技術（以下、この技術を「リモートコピー」と呼ぶ）が知られており、これに関する種々の技術が提案されている。
【０００３】
例えば、特開平１１−２５９３４８号公報では、正側の記憶制御装置は、少なくとも１つのボリュームを有しており、当該ボリュームの少なくとも一部のスナップショットを取得する要求を副側の記憶制御装置に送信し、副側の記憶制御装置は、スナップショットを取得する要求に応答し、正側の記憶制御装置のボリュームの複製コピーであるボリュームを有しており、対応する部分のスナップショットを取得することによって、正側の記憶制御装置のボリュームを、副側の記憶制御装置のボリュームに複製するようになされている。
【０００４】
また、例えば、特開２００５−２６７５６９号公報では、記憶制御装置は、第１のボリュームへのデータの読書きを制御し、当該ボリュームに新たに記憶されたデータを、世代ごとの差分データとして第２のボリュームに書き込むように制御し、当該第２のボリュームに記憶されている世代ごとの差分データの関係を管理するスナップショット管理テーブルをメモリの領域に設けることによって差分データを管理する。そして、記憶制御装置は、スナップショット管理テーブルにより、特定の世代の仮想ボリュームを生成し、当該仮想ボリュームを用いてリモートコピーを行うようになされている。
【０００５】
さらに、例えば、特開２００５−２７５４９４号公報では、副側の記憶制御装置は、正側の記憶制御装置から差分関連情報を受信し、当該受信された差分関連情報に基づいて、世代管理情報を生成し、生成された世代管理情報及び副側の記憶制御装置のボリュームに基づいて、指定された世代の記憶内容を復元するようになされている。
【特許文献１】特開平１１−２５９３４８号公報
【特許文献２】特開２００５−２６７５６９号公報
【特許文献３】特開２００５−２７５４９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、このようなストレージシステムでは、正側の記憶制御装置においてスナップショットにより取得したボリュームのデータを管理するための管理ビットが不足しないように、当該管理ビットを、ホストシステムから正側の記憶制御装置に転送されるデータに比して十分大きな差分管理単位のデータサイズで管理するようになされている。
【０００７】
しかしながら、このようなストレージシステムでは、差分管理単位のデータサイズに比して、ホストシステムから正側の記憶制御装置に転送されるデータのデータサイズのほうが小さくなるため、ホストシステムから転送されるデータを、正側の記憶制御装置から副側の記憶制御装置に転送する場合には、ホストシステムから正側の記憶制御装置に転送されるデータのデータサイズが小さいにもかかわらず、差分管理単位のデータサイズで転送しなければならないこととなる。
【０００８】
このため、このようなストレージシステムでは、ホストシステムから正側の記憶制御装置へのデータ転送に比して、正側の記憶制御装置から副側の記憶制御装置へのデータ転送のほうが遅くなり、正側の記憶制御装置において、正側の記憶制御装置から副側の記憶制御装置への転送待ちの差分データが蓄積されるおそれがある。
【０００９】
一方、このようなストレージシステムでは、差分管理単位のデータサイズを小さくした場合には、差分データを管理するための管理ビット数を増加させなければならず、当該管理ビットを保持するために、膨大なメモリ容量が必要となることとなる。
【００１０】
本発明は以上の点を考慮してなされたもので、メモリ容量の増加を有効に防止し得ると共に、データの転送効率を格段的に向上させ得る記憶制御装置及びデータ管理方法を提案するものである。
【課題を解決するための手段】
【００１１】
かかる課題を解決するために本発明においては、上位装置から送信されるデータを記憶するためのボリュームを提供する記憶制御装置であって、ボリュームに書き込まれたデータを、第１のデータ単位、又は当該第１のデータ単位内における第１のデータ単位に比して小さい第２のデータ単位で管理する管理部と、所定のタイミングで、ボリュームのスナップショットを取得するスナップショット取得部と、スナップショット取得部によるスナップショットにより取得されたボリュームのデータを、第１のデータ単位又は第２のデータ単位で、外部機器に転送する転送部とを備えるようにした。
【００１２】
従って、第１のデータ単位内における、外部機器に転送するデータが少ない場合には、第２のデータ単位でデータを転送することによりデータの転送量を少なくすることができ、第１のデータ単位内における外部機器に転送するデータが多い場合には、第１のデータ単位でデータを転送することにより第２のデータ単位の管理数を少なくすることができる。
【００１３】
また、本発明においては、上位装置から送信されるデータを記憶するためのボリュームを提供する記憶制御装置のデータ管理方法であって、ボリュームに書き込まれたデータを、第１のデータ単位、又は当該第１のデータ単位内における第１のデータ単位に比して小さい第２のデータ単位で管理する第１のステップと、所定のタイミングで、ボリュームのスナップショットを取得する第２のステップと、第２のステップにおけるスナップショットにより取得されたボリュームのデータを、第１のデータ単位又は第２のデータ単位で、外部機器に転送する第３のステップとを備えるようにした。
【００１４】
従って、第１のデータ単位内における、外部機器に転送するデータが少ない場合には、第２のデータ単位でデータを転送することによりデータの転送量を少なくすることができ、第１のデータ単位内における外部機器に転送するデータが多い場合には、第１のデータ単位でデータを転送することにより第２のデータ単位の管理数を少なくすることができる。
【発明の効果】
【００１５】
本発明によれば、上位装置から送信されるデータを記憶するためのボリュームを提供する記憶制御装置であって、ボリュームに書き込まれたデータを、第１のデータ単位、又は当該第１のデータ単位内における第１のデータ単位に比して小さい第２のデータ単位で管理し、所定のタイミングで、ボリュームのスナップショットを取得するスナップショット取得して、スナップショットにより取得したボリュームのデータを、第１のデータ単位又は第２のデータ単位で、外部機器に転送することにより、外部機器に転送するデータが少ない場合には、第２のデータ単位でデータを転送することによりデータの転送量を少なくすることができ、第１のデータ単位内における外部機器に転送するデータが多い場合には、第１のデータ単位でデータを転送することにより第２のデータ単位の管理数を少なくすることができ、かくして、メモリ容量の増加を有効に防止し得ると共に、データの転送効率を格段的に向上させ得る記憶制御装置及びデータ管理方法を実現できる。
【発明を実施するための最良の形態】
【００１６】
以下図面について、本発明の一実施の形態を詳述する。
【００１７】
（１）本実施の形態におけるストレージシステムの構成
図１は、本実施形態に係るストレージシステム１０のシステム構成を示す。ストレージシステム１０は、第１の記憶制御装置２０と第２の記憶制御装置５０とを備える。第１の記憶制御装置２０、第２の記憶制御装置５０、正ホストシステム１００、及び副ホストシステム１１０は、ＳＡＮ（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）９０を介して管理端末８０に接続されている。管理端末８０は、例えば、ＣＰＵ、メモリ及びディスプレイ等のハードウェア資源を備えるコンピュータシステムである。システム管理者は、管理端末８０を入力操作することにより、第１の記憶制御装置２０を管理するためのコマンドを第１の記憶制御装置２０に送信する。
【００４０】
第１の記憶制御装置２０を管理するためのコマンドとして、例えば、記憶デバイス４１の増設或いは減設、又はＲＡＩＤ構成の変更を指示するためのコマンド、正ホストシステム１００と第１の記憶制御装置２０との間の通信パスを設定するためのコマンド、ＣＰＵ２３のマイクロプログラムをメモリ２６にインストールするためのコマンド、第１の記憶制御装置２０の動作状態の確認や故障部位を特定するためのコマンド等がある。
【００４１】
第２の記憶制御装置５０は、主に、コントローラ６０と、記憶装置７０とを備える。コントローラ６０の詳細構成は、上述したコントローラ３０の詳細構成と同様である。コントローラ６０は、信頼性向上のため、コントローラ６０Ａ、６０Ｂの２つのコントローラから構成されている。
【００４２】
コントローラ６０Ａは、ＬＡＮインターフェース６１Ａ、フロントエンドインターフェース６２Ａ、ＣＰＵ６３Ａ、データ転送コントローラ６４Ａ、キャッシュメモリ６５Ａ、ローカルメモリ６６Ａ、及びバックエンドインターフェース６７Ａを備える。コントローラ３０Ｂの詳細構成は、上述したコントローラ６０Ａの詳細構成と同様である。なお、添え字「Ａ」及び「Ｂ」を付さずに表記する場合には、コントローラ６０Ａ、６０Ｂのどちらでも良く、どちらか一方であることを示している。記憶装置７０は、複数のディスクドライブ７１を備える。
【００４３】
コントローラ６０は、複数のディスクドライブ７１をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０、１、５）で制御することができる。ＲＡＩＤ方式においては、複数のディスクドライブ７１が一つのＲＡＩＤグループとして管理される。ＲＡＩＤグループ上には、副ホストシステム１１０からのアクセス単位である複数の論理ボリューム７２が定義されている。それぞれの論理ボリューム７２には、ＬＵＮがアサインされる。
【００４４】
図２は、各種マイクロプログラム、ボリューム管理テーブル、及びハッシュ管理テーブルを示す。ローカルメモリ２６は、内部コピー実行プログラム２００、リモートコピー実行プログラム２１０、制御プログラム２２０、ボリューム管理テーブル２３０、ハッシュ管理テーブル２４０、コマンドジョブ優先実行プログラム２５０、及びまとめ通信実行プログラム２６０を格納する。なお、ローカルメモリ６６には、ハッシュ管理テーブル２４０、及びコマンドジョブ優先実行プログラム２５０が格納されていない。
【００４５】
内部コピー実行プログラム２２０は、内部コピー処理、及びスナップショット更新処理を実行する。リモートコピー実行プログラム２１０は、リモートコピーを実行する。制御プログラム２２０は、内部コピー実行プログラム２００、リモートコピー実行プログラム２１０、を制御する。ボリューム管理テーブル２３０は、複数の論理ボリューム４２に関する情報を格納する。なお、ハッシュ管理テーブル２４０、コマンドジョブ優先実行プログラム２５０、及びまとめ通信実行プログラム２６０については後述する。
【００４６】
図３は、ボリューム管理テーブル２３０のテーブル構造を示す。ボリューム管理テーブル２３０には、複数の論理ボリューム４２の各々について、論理ボリューム（以下、「ＶＯＬ」と略記することがある。）を識別するためのＶＯＬ−ＩＤと、その論理ボリュームへのアクセスパスを示すパス情報と、その論理ボリュームの種類（以下、「ＶＯＬ種類」と記す。）と、その論理ボリュームがプールＶＯＬであるか否かを示すフラグ（以下、「プールＶＯＬ」フラグと記す。）と、その論理ボリュームを含んだＶＯＬペアに関する情報（以下、「ペア情報」と記す。）と、が対応付けられて格納される。ボリューム管理テーブル２３０に格納される情報のうちの少なくとも一つの情報要素（例えば、ＶＯＬ−ＩＤ、ＶＯＬ種類、プールＶＯＬフラグ）は、管理端末８０又は正ホストシステム１００などから入力できる。
【００４７】
ＶＯＬ種類としては、例えば、「プライマリ」、「セカンダリ」、「プール」がある。「プライマリ」という種類のＶＯＬ（以下、「プライマリＶＯＬ」又は「ＰＶＯＬ」と記す。）は、コピー処理（例えば、リモートコピー処理）において、コピー元となるＶＯＬである。「セカンダリ」という種類のＶＯＬ（以下、「セカンダリＶＯＬ」又は「ＳＶＯＬ」と記す。）は、コピー処理（例えば、リモートコピー処理）において、コピー先となるＶＯＬである。
【００４８】
セカンダリＶＯＬは、少なくともプライマリＶＯＬの容量以上の記憶容量を有する。プライマリＶＯＬもセカンダリＶＯＬも、パス情報は定義されている。但し、「プール」という種類のＶＯＬ（以下、「プールＶＯＬ」と記す。）は、パス情報が未定義である。プールＶＯＬの詳細については、後述する。
【００４９】
プールＶＯＬフラグは、それに対応する論理ボリュームがプールＶＯＬであるか否かを示す。具体的には、例えば、プールＶＯＬフラグが「１」であれば、それに対応する論理ボリュームは、プールＶＯＬであり、プールＶＯＬフラグが「０」であれば、それに対応する論理ボリュームは、プールＶＯＬでない。
【００５０】
ペア情報には、例えば、ペア相手情報、及びペア状態が含まれている。ペア相手情報には、例えば、ペア相手となる論理ボリューム（以下、ペア相手ＶＯＬ）に関する情報として、ペア相手ＶＯＬを有する記憶制御装置のＩＤ、ペア相手ＶＯＬのＶＯＬ−ＩＤ、及びパス情報などがある。ペア状態としては、例えば、「ＳＭＰＬ」、「ＣＯＰＹ」、「ＰＡＩＲ」、「ＰＳＵＳ」、「ＳＰＬＩＴ」、「ＳＳＷＳ」などがある。
【００５１】
「ＳＭＰＬ」とは、ペア生成前の正副関係のない状態を示す。
【００５２】
「ＣＯＰＹ」は、プライマリＶＯＬのデータをセカンダリＶＯＬにコピーする形成コピー中の状態を示す。「ＣＯＰＹ」では、セカンダリＶＯＬへのライトは禁止される。
【００５３】
「ＰＡＩＲ」は、プライマリＶＯＬからセカンダリＶＯＬへ非同期コピーを行っている状態を示す。「ＰＡＩＲ」では、セカンダリＶＯＬへのライトは禁止される。
【００５４】
「ＰＳＵＳ」は、プライマリＶＯＬからセカンダリＶＯＬへ非同期コピーを停止している状態を示す。「ＰＳＵＳ」では、セカンダリＶＯＬへのリード／ライトは禁止される。
【００５５】
「ＳＰＬＩＴ」は、プライマリＶＯＬとセカンダリＶＯＬとを論理的に分離して、プライマリＶＯＬの更新前後の差分データのみをセカンダリＶＯＬにコピーする状態を示す。
【００５６】
「ＳＳＷＳ」は、セカンダリＶＯＬがリード／ライト可能な状態を示す。「ＳＳＷＳ」では、セカンダリＶＯＬのデータは、前回の確定内容にリストアされ、プライマリＶＯＬは、「ＰＳＵＳ」に遷移する。
【００５７】
ＣＰＵ２３は、ボリューム管理テーブル２３０を参照することにより、アクセスすべき論理ボリューム４２の種類、及びペア情報を特定することができる。また、ＣＰＵ２３は、プールＶＯＬが後述のバーチャルＶＯＬに割りアサインされた場合には、そのプールＶＯＬへのパスを表す情報を定義し、定義されたパス情報をボリューム管理テーブル２３０に登録することができる。
【００５８】
また、ＣＰＵ２３は、アサインされなくなったプールＶＯＬについてのパス情報を消去することにより、プールＶＯＬを未使用状態にすることができる。ＣＰＵ２３は、各プールＶＯＬについて、パス情報が登録されているか否かにより、各プールＶＯＬが使用中であるか、或いは未使用状態であるかを判別することができる。
【００５９】
図４は、第１の記憶制御装置２０が実行する非同期リモートコピーの処理概要を示す。第１の記憶制御装置２０は、ＣＰＵ２３、キャッシュメモリ２５、プライマリＶＯＬ６００、バーチャルＶＯＬ６１０、複数のプールＶＯＬ６２０、スナップショット管理情報３００、及び転送差分ビットマップテーブル５１０を備える。
【００６０】
プールＶＯＬ６２０は、プライマリＶＯＬ６００とバーチャルＶＯＬ６１０とのペア状態がスプリットされた時点以降にプライマリＶＯＬ６００のデータイメージが更新されたときに、更新前後の差分データを退避させるための論理ボリュームである。
【００６１】
バーチャルＶＯＬ６１０は、ある時刻にプライマリＶＯＬ６００に格納されているデータと、ある時刻以降にプライマリＶＯＬ６００からプールＶＯＬ６２０に退避されたデータとから、ある時刻におけるプライマリＶＯＬ６００のデータイメージを復元するための仮想的な論理ボリュームである。
【００６２】
バーチャルＶＯＬ６１０は、プライマリＶＯＬ６００のスナップショットを論理的に保持することができる。バーチャルＶＯＬ６１０は、プライマリＶＯＬ６００又はセカンダリＶＯＬ７００とペアを形成することができる。
【００６３】
本実施の形態では、バーチャルＶＯＬ６１０は、キャッシュメモリ２５の記憶領域に形成される場合を例示するが、ディスクドライブ４１の記憶領域に形成されていてもよい。説明の便宜上、バーチャルＶＯＬ６１０をＰ＿ＶＶＯＬと略記する場合がある。
【００６４】
ＣＰＵ２３は、バーチャルＶＯＬ６１０に、複数のプールＶＯＬ６２０の中から一以上のプールＶＯＬ６２０（例えば、どのＶＯＬにも対応付けられていない未使用のプールＶＯＬ）を選択し、選択された一以上のプールＶＯＬ６２０をバーチャルＶＯＬ６１０にアサインできる。ＣＰＵ２３は、バーチャルＶＯＬ６１０にアサインされるプールＶＯＬ６２０の数を、記憶資源の消費状況に応じて、適宜に増減することができる。
【００６５】
スナップショット管理情報３００は、ある時刻におけるプライマリＶＯＬ６００のデータイメージを、スナップショットを用いて復元するための情報である。ＣＰＵ２３は、スナップショット管理情報３００を参照することにより、ある時刻におけるプライマリＶＯＬ６００のデータイメージを構成する各データがプールＶＯＬ６２０に存在するのか、或いはプライマリＶＯＬ６００に存在するのかを判別し、判別された方からデータを取得することにより、ある時刻におけるプライマリＶＯＬ６００のデータイメージをバーチャルＶＯＬ６１０に復元できる。スナップショット管理情報３００は、プライマリＶＯＬ６００のデータ更新位置を示す差分ビットマップテーブル３１０を含む。
【００６６】
転送差分ビットマップテーブル５１０は、プライマリＶＯＬ６００のデータがセカンダリＶＯＬにイニシャルコピーされた後において、プライマリＶＯＬ６００のデータが更新されたときに、セカンダリＶＯＬ７００にリモートコピーされるべき差分データの位置（言い換えれば、プライマリＶＯＬ６００のデータ更新位置）を示す。
【００６７】
ＣＰＵ２３は、プライマリＶＯＬ６００とバーチャルＶＯＬ６１０との間のペア状態をコピー状態にすることができる。プライマリＶＯＬ６００とバーチャルＶＯＬ６１０との間のペア状態がコピー状態になっているときに、プライマリＶＯＬ６００にデータが書き込まれると、ＣＰＵ２３は、そのデータをバーチャルＶＯＬ６１０又はプールＶＯＬ６２０に書き込む。
【００６８】
ＣＰＵ２３は、プライマリＶＯＬ６００とバーチャルＶＯＬ６１０との間のペア状態をスプリット状態にすることができる。プライマリＶＯＬ６００とバーチャルＶＯＬ６１０との間のペア状態がスプリット状態になっているときに、プライマリＶＯＬ６００にデータが書き込まれると、ＣＰＵ２３は、内部コピープログラム２００を動作させて、内部コピー処理及びスナップショット更新処理を実行する。
【００６９】
第２の記憶制御装置５０は、ＣＰＵ６３、キャッシュメモリ６５、セカンダリＶＯＬ７００、複数のバーチャルＶＯＬ７１０Ａ，７１０Ｂ、複数のプールＶＯＬ７２０、スナップショット管理情報４００、及び転送差分ビットマップテーブル５２０を備える。
【００７０】
プールＶＯＬ７２０は、セカンダリＶＯＬ７００とバーチャルＶＯＬ７１０Ａ又はバーチャルＶＯＬ７１０Ｂとのペア状態がスプリットされた時点以降にセカンダリＶＯＬ７００のデータイメージが更新されたときに、更新前後の差分データを退避させるための論理ボリュームである。
【００７１】
バーチャルＶＯＬ７１０Ａ，７１０Ｂは、ある時刻にセカンダリＶＯＬ７００に格納されているデータと、ある時刻以降にセカンダリＶＯＬ７００からバーチャルＶＯＬ７１０Ａ，７１０Ｂに退避されたデータとから、ある時刻におけるセカンダリＶＯＬ７００のデータイメージを復元するための仮想的な論理ボリュームである。バーチャルＶＯＬ７１０Ａ，７１０Ｂは、セカンダリＶＯＬ７００のスナップショットを論理的に保持することができる。
【００７２】
本実施の形態では、バーチャルＶＯＬ７１０Ａ，７１０Ｂは、キャッシュメモリ６５の記憶領域に形成される場合を例示するが、ディスクドライブ７１の記憶領域に形成されていてもよい。説明の便宜上、バーチャルＶＯＬ７１０Ａ，７１０ＢをＳ＿ＶＶＯＬと略記する場合がある。
【００７３】
スナップショット管理情報４００は、ある時刻におけるセカンダリＶＯＬ７００のデータイメージを、スナップショットを用いて復元するための情報である。ＣＰＵ６３は、スナップショット管理情報４００を参照することにより、ある時刻におけるセカンダリＶＯＬ７００のデータイメージを構成する各データがプールＶＯＬ７２０に存在するのか、或いはセカンダリＶＯＬ７００に存在するのかを判別し、判別された方からデータを取得することにより、ある時刻におけるセカンダリＶＯＬ７００のデータイメージをバーチャルＶＯＬ７１０Ａ，７１０Ｂに復元できる。スナップショット管理情報４００は、セカンダリＶＯＬ７００のデータ更新位置を示す差分ビットマップテーブル４１０Ａ，４１０Ｂを含む。
【００７４】
転送差分ビットマップテーブル５２０は、プライマリＶＯＬ６００のデータがセカンダリＶＯＬにイニシャルコピーされた後において、プライマリＶＯＬ６００のデータが更新されたときに、リモートコピーによりセカンダリＶＯＬ７００のデータが更新された位置を示す。
【００７５】
次に、内部コピー処理、スナップショット更新処理、及びリモートコピー処理の詳細について説明を加える。以降の説明では、プライマリＶＯＬ６００とバーチャネルＶＯＬ６１０との間のペア状態がスプリット状態にあることを前提とする。
【００７６】
第１の記憶制御装置２０は、正ホストシステム１００からライトコマンドを受信すると（Ｓ１０１）、ライトデータをキャッシュメモリ２５に格納し（Ｓ１０２）、ライト完了を正ホストシステム１００に報告する（Ｓ１０３）。
【００７７】
ＣＰＵ２３は、キャッシュメモリ２５に書き込まれたライトデータを読み出し、プライマリＶＯＬ６００に書き込む（Ｓ１０４）。このとき、ＣＰＵ２３は、更新前データ（ライトデータによって更新（上書き）される前のデータであって、且つプライマリＶＯＬ６００に書かれていた過去のデータ）をプライマリＶＯＬ６００からプールＶＯＬ６２０に移動させる（Ｓ１０５）。本明細書では、更新前データをプールＶＯＬに移動させる処理を「スナップショット更新処理」と称する。
【００７８】
プライマリＶＯＬ６００とバーチャネルＶＯＬ６１０との間のペア状態がスプリット状態にあるときに、内部コピーを実行すると、ある時刻におけるプライマリＶＯＬ６００のデータイメージを構成する各データは、プライマリＶＯＬ６００とプールＶＯＬ６２０とに分散される。
【００７９】
次に、ＣＰＵ２３は、スナップショット管理情報３００を、プライマリＶＯＬ６００とバーチャネルＶＯＬ６１０との間のペア状態がスプリットされた時点（以下、「スプリット時点」と称する。）にプライマリＶＯＬ６００に格納されているデータと、そのスプリット時点以降にプライマリＶＯＬ６００からプールＶＯＬ６２０に移動されたデータとから、そのスプリット時点におけるプライマリＶＯＬ６００のデータイメージを復元するための情報に更新する（Ｓ１０６）。このスナップショット更新処理により、バーチャルＶＯＬ６１０は、プライマリＶＯＬ６００のスナップショットを論理的に保持することができる。
【００８０】
ＣＰＵ２３は、プライマリＶＯＬ６００とバーチャネルＶＯＬ６１０との間のペア状態がスプリット状態にあるときに、正ホストシステム１００からライトコマンドを受信する都度に、上述したＳ１０２〜Ｓ１０６の処理を繰り返し実行する。
【００８１】
ＣＰＵ２３は、スプリット時点から所定時間経過後にリモートコピー実行プログラム２１０を動作させ、リモートコピー処理を実行する。リモートコピー実行プログラム２１０は、差分ビットマップテーブル３１０を転送差分ビットマップテーブル５１０にマージする。
【００８２】
そして、リモートコピー実行プログラム２１０は、転送差分ビットマップテーブル５１０に基づいて、スプリット時点におけるプライマリＶＯＬ６００のデータイメージを復元するための各データがプライマリＶＯＬ６００に存在するのか、或いはプールＶＯＬ６２０に存在するのかを判別し、判別された方からデータを取得して、そのデータを第２の記憶制御装置５０に転送する（Ｓ１０７）。このリモートコピー処理により、スプリット時点におけるプライマリＶＯＬ６００のデータイメージがセカンダリＶＯＬ７００に再現される。
【００８３】
第２の記憶制御装置５０は、第１の記憶制御装置２０からデータを受信すると、第１の記憶制御装置２０にライト完了を報告する（Ｓ１０８）。
【００８４】
なお、第１の記憶制御装置２０では、バーチャルＶＯＬ６１０、スナップショット管理情報３００、及び転送差分ビットマップテーブル５１０をキャッシュメモリ２５Ａ、２５Ｂに二重書きすることによって、コントローラ３０のうち、一方のコントローラに障害が発生した場合にも、他方のコントローラのＣＰＵが引き続き内部コピー処理、スナップショット更新処理、及びリモートコピー処理を実行することができるようになされている。
【００８５】
以後、ＣＰＵ６３は、第１の記憶制御装置２０から受信したデータをセカンダリＶＯＬ７００に書き込む際に、更新前データ（ライトデータによって更新（上書き）される前のデータであって、且つセカンダリＶＯＬ７００に書かれていた過去のデータ）をセカンダリＶＯＬ７００からプールＶＯＬ７２０に移動させる（Ｓ１０９）。
【００８６】
更に、ＣＰＵ６３は、スナップショット管理情報４００を、スプリット時点にセカンダリＶＯＬ７００に格納されているデータと、スプリット時点以降にセカンダリＶＯＬ７００からプールＶＯＬ７２０に移動されたデータとから、スプリット時点におけるセカンダリＶＯＬ７００のデータイメージを復元するための情報に更新する（Ｓ１１０）。
【００８７】
尚、ＣＰＵ６３は、バーチャルＶＯＬ７１０Ａ，７１０Ｂを交互に切り替えて使用する。これにより、例えば、ＣＰＵ６３は、バーチャルＶＯＬ７１０ＡにセカンダリＶＯＬ７００のスナップショットを論理的に作成しつつ、差分ビットマップテーブル４１０Ｂをクリアすることができる。差分ビットマップテーブル４１０Ａ，４１０Ｂをクリアするには、長時間を要する。バーチャルＶＯＬ７１０Ａ，７１０Ｂを交互に切り替えて使用することで、スナップショットの作成と、差分ビットマップテーブル４１０Ａ，４１０Ｂのクリアを並行処理できるので、効率がよいこととなる。
【００８８】
なお、第２の記憶制御装置５０では、バーチャルＶＯＬ７１０Ａ、７１０Ｂ、スナップショット管理情報４００、及び転送差分ビットマップテーブル５２０をキャッシュメモリ６５Ａ、６５Ｂに二重書きすることによって、コントローラ６０のうち、一方のコントローラに障害が発生した場合にも、他方のコントローラのＣＰＵが引き続き内部コピー処理、スナップショット更新処理、及びリモートコピー処理を実行することができるようになされている。
【００８９】
図５は、第１の記憶制御装置２０において実行される非同期リモートコピーの処理シーケンスを示す。時刻ｔ０は、プライマリＶＯＬ６００とバーチャルＶＯＬ６１０との間のペア状態がスプリットされたスプリット時点を示す。この時刻ｔ０におけるプライマリＶＯＬ６００のデータイメージを「イメージＴ０」と称する。イメージＴ０は、プライマリＶＯＬ６００の第一のブロック領域にデータブロックＡが格納されているデータイメージとする。この時刻ｔ０の時点では、プールＶＯＬ６２０に更新前データは格納されていない。スナップショット管理情報３００は、イメージＴ０を復元するための情報になっている。
【００９０】
時刻ｔ１で（つまり、スプリット状態の期間中に）、プライマリＶＯＬ６００の第一のブロック領域にデータブロックＢが上書きされると、プライマリＶＯＬ６００のデータイメージがイメージＴ０からイメージＴ１に変化する。このとき、内部コピー実行プログラム２００は、データブロックＡ（更新前データ）をプライマリＶＯＬ６００からバーチャルＶＯＬ６２０に書き込み、スナップショット管理情報３００を、プライマリＶＯＬ６００の第一のブロック領域に更新があり、且つその第一のブロック領域に存在していたデータブロックＡ（更新前データ）がバーチャルＶＯＬ６２０に格納されたことを示す情報に更新する。
【００９１】
また、時刻ｔ１で、制御プログラム２２０がリモートコピー処理の実行をリモートコピー実行プログラム２１０に命じる。リモートコピー実行プログラム２１０は、転送差分ビットマップテーブル５１０を参照することにより、イメージＴ０を構成するデータブロックＡがバーチャルＶＯＬ６１０に存在することを特定し、バーチャルＶＯＬ６１０からデータブロックＡを取得し、データブロックＡを第２の記憶制御装置５０に送信する。
【００９２】
時刻ｔ２は、リモートコピー処理が完了した時点である。この結果、時刻ｔ０の時点でプライマリＶＯＬ６００に形成されていたイメージＴ０が、セカンダリＶＯＬ７００に複製される。
【００９３】
また、時刻ｔ２で（つまり、スプリット状態の期間中に）、プライマリＶＯＬ６００の第二のブロック領域にデータブロックＣが書かれると、プライマリＶＯＬ６００のデータイメージがイメージＴ１からイメージＴ２に変化する。このとき、内部コピー実行プログラム２００は、スナップショット管理情報３００を、プライマリＶＯＬ６００第二のブロック領域に更新があったことを示す情報に更新する。
【００９４】
例えば、時刻ｔ２の後であって時刻ｔ３の前に、プライマリＶＯＬ６００の第二のブロック領域にデータブロックＤが上書きされると、プライマリＶＯＬ６００のデータイメージがイメージＴ２からイメージＴ３（第一のブロック領域にデータブロックＢが存在し、第二のブロック領域にデータブロックＤが存在するデータイメージ）に変化する。
【００９５】
このとき、内部コピー実行プログラム２００は、データブロックＣ（更新前データ）をプライマリＶＯＬ６００からプールＶＯＬ６２０に移動させ、スナップショット管理情報３００を、プライマリＶＯＬ６００の第二のブロック領域に更新があり、その第二のブロック領域に存在していたデータブロックＣがプールＶＯＬ６２０に格納されたことを示す情報に更新する。
【００９６】
その後、プライマリＶＯＬ６００の更新が行われる前に、時刻ｔ３で、再び、プライマリＶＯＬ６００とバーチャルＶＯＬ６１０とがスプリット状態にされる。
【００９７】
この時刻ｔ３の時点で、換言すれば、スプリット状態にされた場合に、ＣＰＵ２３は、その時刻ｔ３におけるプライマリＶＯＬ６００のイメージＴ３をバーチャルＶＯＬ６１０に論理的に保持することを目的として、プールＶＯＬ６２０に格納されている全ての更新前データを消去する。
【００９８】
また、ＣＰＵ２３は、スナップショット管理情報３００を、イメージＴ０を復元するための情報からイメージＴ３を復元するための情報に更新する。具体的には、例えば、時刻ｔ３の時点では、プライマリＶＯＬ６００において、未だ更新が行われていない状態なので、ＣＰＵ２３は、スナップショット管理情報３００を、プライマリＶＯＬ６００で更新が行われていないことを示す情報に更新する。
【００９９】
時刻ｔ４の時点でプライマリＶＯＬ６００の第二のブロック領域にデータブロックＥが上書きされると、プライマリＶＯＬ６００のデータイメージがイメージＴ３からイメージＴ４に変化する。このとき、内部コピー実行プログラム２００は、データブロックＤ（更新前データ）をプライマリＶＯＬ６００からバーチャルＶＯＬ６１０に書き込み、スナップショット管理情報３００を、プライマリＶＯＬ６００の第二のブロック領域で更新があり、且つその第二のブロック領域に存在していたデータブロックＤがプールＶＯＬ６２０に移動したことを示す情報に更新する。
【０１００】
時刻ｔ４の時点でリモートコピー処理が行われる。リモートコピー実行プログラム２１０は、転送差分ビットマップテーブル５１０を参照することにより、プライマリＶＯＬ６００の第一のブロック領域に更新が無いので、イメージＴ３を構成するデータブロックＢがプライマリＶＯＬ６００に存在することを把握し、更にプライマリＶＯＬ６００の第二のブロック領域に更新があったので、イメージＴ３を構成する別のデータブロックＤがプールＶＯＬ６２０に存在することを把握する。リモートコピー実行プログラ２１０は、プライマリＶＯＬ６００からデータブロックＢを取得し、更にプールＶＯＬ６２０からデータブロックＤを取得し、データブロックＢ及びデータブロックＤを第２の記憶制御装置５０に転送する。
【０１０１】
時刻ｔ５の時点は、リモートコピー処理が完了した時点である。この結果、セカンダリＶＯＬ７００におけるイメージＴ０が、時刻ｔ３におけるプライマリＶＯＬ６００のイメージＴ３に更新される。つまり、セカンダリＶＯＬ７００の第一ブロック領域のデータブロックＡにデータブロックＢが上書きされ、更にセカンダリＶＯＬ７００の第二のブロック領域にデータブロックＤが書き込まれる。
【０１０２】
尚、これ以降、第２の記憶制御装置５０は、次のスプリット時点ｔ６のイメージＴ６を構成するデータを受信するまでの期間、イメージＴ３を保存する。
【０１０３】
以後、時刻ｔ３乃至時刻ｔ５において実行された上述の処理が繰り返される。
【０１０４】
つまり、第１の記憶制御装置２０では、定期的に又は不定期的に、プライマリＶＯＬ６００とバーチャルＶＯＬ６１０とがスプリット状態にされる。そのスプリット状態にされている期間中であって、次にスプリット状態にされる時点までに（換言すれば、内部コピー処理及びスナップショット更新処理に並行して）、リモートコピー処理が実行される。そのリモートコピー処理が完了した時点以降に、再び、プライマリＶＯＬ６００とバーチャルＶＯＬ６１０とがスプリット状態にされ、プールＶＯＬ６２０から更新前データが消去される。
【０１０５】
このような処理が繰り返されることにより、定期的に又は不定期的になされたスプリット時点におけるプライマリＶＯＬ６００のデータイメージ（図５の例では、時刻ｔ０におけるイメージＴ０、時刻ｔ３におけるイメージＴ３、時刻ｔ６におけるイメージＴ６）をバーチャルＶＯＬ６１０に論理的に保持し、そのデータイメージをセカンダリＶＯＬ７００にコピーできる。
【０１０６】
図６は、本実施形態に係るスナップショット更新処理の概要を示し、より詳細には、プライマリＶＯＬ６００のデータイメージがイメージＴ３からイメージＴ４に変化し、バーチャルＶＯＬ６１０によってイメージＴ３が論理的に保持される様子を示す。
【０１０７】
スナップショット管理情報３００は、差分ビットマップテーブル３１０、アドレステーブル３２０、及び差分データ制御ブロック（Differential Data Control Block）３３０を含む。
【０１０８】
差分ビットマップテーブル３１０は、プライマリＶＯＬ６００内の複数のブロック領域（例えば、１ブロック領域は６４Ｋバイト）にそれぞれ対応する複数のビットを有する。例えば、イメージＴ３からイメージＴ４に変わる場合、図６に示すように、プライマリＶＯＬ６００の第一のブロック領域は、更新されないので、その第一のブロック領域に対応するビットは「０」のままであり、第二のブロック領域のデータブロックＤにデータブロックＥが上書きされたので、その第二のブロック領域に対応するビットが「０」から「１」に更新される。
【０１０９】
アドレステーブル３２０は、プライマリＶＯＬ６００の複数のブロック領域にそれぞれ対応したアドレス領域を有する。あるブロック領域に対応する更新前データが存在していれば、そのあるブロック領域に対応するアドレス領域には、そのアドレス領域に対応するアドレスであって、差分データ制御ブロック３３０上のアドレスが格納される。
【０１１０】
差分データ制御ブロック３３０は、例えば、プールＶＯＬ６２０内の複数のブロック領域にそれぞれ対応する管理領域を有する。各管理領域には、プールＶＯＬ６２０内のブロック領域に対応する位置に格納された更新前データがどの世代のスナップショットのデータであるかが記録される。ＣＰＵ２３は、管理領域を辿ることによって、複数世代の更新前データを取得することができる。
【０１１１】
尚、差分データ制御ブロック３３０の使用されていない領域は、空きキューとして管理される。空きキューは、空きキューカウンタ３４０によって管理される。
【０１１２】
上述の構成により、スナップショット作成時点におけるプライマリＶＯＬ６００のデータイメージを論理的にバーチャルＶＯＬ６１０に複写できる。そして、バーチャルＶＯＬ６１０内のデータがどの世代の更新前データであるかは、差分データ制御ブロック３３０によって管理される。
【０１１３】
（２）本実施の形態によるライトデータの処理
（２−１）本実施の形態による差分ビットマップテーブル３１０及びハッシュ管理テーブル２４０を用いたライトデータの管理処理
次に、本実施の形態によるストレージシステム１０における差分ビットマップテーブル３１０及びハッシュ管理テーブル２４０を用いたライトデータの管理処理について説明する。本実施の形態によるストレージシステム１０は、ブロック領域（第１のデータ管理単位）と、当該ブロック領域に比して小さい領域（第２のデータ管理単位）とにより、ライトデータを管理することを特徴の１つとしている。
【０１１４】
図７は、ハッシュ管理テーブル２４０のテーブル構造を示す。ハッシュ管理テーブル２４０は、ブロック領域に比して小さい領域（以下、これを小ブロック領域と呼ぶ）（例えば、１小ブロック領域の最小単位は５１２バイト）でライトデータを管理する管理情報２４１が、当該管理情報２４１を検索するための先頭アドレス部２４２の先頭アドレスから順に結び付けられることにより構成されている。
【０１１５】
図８は、管理情報２４１の構造を示す。管理情報２４１には、プライマリＶＯＬ６００のＬＵＮを表すＰＬＵＮ２４１１、バーチャルＶＯＬ６１０のＬＵＮを表すＰ＿ＶＬＵＮ２４１２、差分ビットマップテーブル３１０におけるビットの位置を表す差分ビット位置２４１３、次に結び付けられる管理情報２４１のブロック領域内における小ブロック領域の先頭ＬＢＡ（Logical Brock Address）を表す次管理情報先頭ＬＢＡ２４１４、プライマリＶＯＬ６００のコンシステンシグループ（Consistency Group）を表すＣＴＧ２４１５、ハッシュ管理テーブル２４０の差分管理ＩＤ（Identification）を表す差分管理ＩＤ２４１６、ブロック領域内における小ブロック領域の先頭ＬＢＡを表す先頭ＬＢＡ２４１７、及び先頭ＬＢＡ２４１７からの小ブロック領域の大きさを表す小ブロック領域レングス２４１８が格納されている。
【０１１６】
このハッシュ管理テーブル２４０では、差分ビットマップテーブル３１０のビット位置の番号に対応させることにより、先頭アドレス部２４２の先頭アドレスが構成されている。
【０１１７】
また、ハッシュ管理テーブル２４０は、管理情報２４１を結び付けるときに、当該管理情報を結び付ける先頭アドレス部２４２の先頭アドレスを、管理情報２４１の差分ビット位置２４１３から検索する。
【０１１８】
そして、ハッシュ管理テーブル２４０は、当該管理情報２４１を、管理情報２４１の差分ビット位置２４１３から検索された先頭アドレス部２４２の先頭アドレスに結び付けることにより管理する。
【０１１９】
なお、ハッシュ管理テーブル２４０は、先頭アドレス部２４２の先頭アドレスに管理情報２４１が結び付けられている状態において、管理情報２４１の差分ビット位置２４１３から同一の先頭アドレス部２４２の先頭アドレスが検索された場合には、当該管理情報２４１を、先頭アドレス部２４２の先頭アドレスに結び付けられている管理情報２４１に結び付けることにより管理する。
【０１２０】
また、ハッシュ管理テーブル２４０は、その後、管理情報２４１の差分ビット位置２４１３から同一の先頭アドレス部２４２の先頭アドレスが検索された場合には、当該管理情報２４１を、一番最後に結び付けられている管理情報２４１に結び付けることにより管理する。
【０１２１】
このようにして、ハッシュ管理テーブル２４０では、差分ビットマップテーブル３１０のビット位置の番号に、先頭アドレス部２４２の先頭アドレスを対応させることにより、差分ビットマップテーブル３１０のビット位置の番号で、管理情報２４１をハッシュ管理することができ、この結果、管理情報２４１を効率的に負荷分散することができ、一段と検索性の良いハッシュ管理を行うことができる。
【０１２２】
また、ハッシュ管理テーブル２４０では、先頭ＬＢＡ２４１７、及び小ブロック領域レングス２４１８で小ブロック領域を管理することにより、小ブロック領域のビットマップテーブルで管理する場合に比して、一段と少ないメモリ容量でライトデータを管理することができるようになされている。
【０１２３】
ここで、図９及び図１０は、このストレージシステム１０における差分ビットマップテーブル３１０及びハッシュ管理テーブル２４０を用いたライトデータの管理処理に関する第１の記憶制御装置２０の具体的な処理手順を示したフローチャートである。
【０１２４】
ＣＰＵ２３は、初期時、図９及び図１０に示すライトデータ管理処理手順ＲＴ１に従って、正ホストシステム１００からライトデータを受信するのを待機モードで待ち受ける（Ｓ２０１）。
【０１２５】
やがて、ＣＰＵ２３は、正ホストシステム１００からライトデータを受信すると（Ｓ２０１：ＹＥＳ）、受信したライトデータをプライマリＶＯＬ６００に書き込み、書き込まれたライトデータのブロック領域に対応する差分ビットマップテーブル３１０のビットを「０」から「１」に更新する（Ｓ２０２）。
【０１２６】
続いて、ＣＰＵ２３は、ハッシュ管理テーブル２４０の容量を調査して、ハッシュ管理テーブル２４０に、新たに書き込まれたライトデータの管理情報２４１を格納する容量があるか否かをチェックする（Ｓ２０３）。
【０１２７】
そして、ＣＰＵ２３は、ハッシュ管理テーブル２４０に、新たに書き込まれたライトデータの管理情報２４１を格納する容量がない場合（Ｓ２０３：ＮＯ）には、書き込まれたライトデータのブロック領域に対応する差分ビットマップ３１０のビットで、書き込まれたライトデータを管理し（Ｓ２０４）、この後、再び、正ホストシステム１００からライトデータを受信するのを待ち受ける待機モードに戻る（Ｓ２０１）。
【０１２８】
これに対して、ＣＰＵ２３は、新たに管理情報２４１を格納する容量がある場合（Ｓ２０３：ＹＥＳ）には、書き込まれたライトデータの管理情報２４１（以下、これをライト管理情報２４１と呼ぶ）を作成する（Ｓ２０５）。
【０１２９】
この場合、例えば、ライト管理情報２４１は、図１１に示すように、ＰＬＵＮ２４１１が「３」であり、Ｐ＿ＶＬＵＮ２４１２が「３」であり、差分ビット位置２４１３が「４」であり、次管理情報先頭ＬＢＡ２４１４が「０ｘ００」であり、ＣＴＧ２４１５が「５」であり、差分管理ＩＤ２４１６が「１５」であり、先頭ＬＢＡ２４１７が「６４」（先頭から３２Ｋバイトの位置）であり、小ブロック領域レングス２４１８が「３２」（１６Ｋバイト）であるものとする。
【０１３０】
なお、ライト管理情報２４１の次管理情報先頭ＬＢＡ２４１４における「０ｘ００」は、ハッシュ管理テーブル２４０における先頭アドレス部２４２の先頭アドレスに結び付けられる一番最後の管理情報２４１であり、次の管理情報２４１が結び付けられていないことを示している。
【０１３１】
続いて、ＣＰＵ２３は、ライト管理情報２４１を結び付ける先頭アドレス部２４２の先頭アドレスを、当該ライト管理情報２４１の差分ビット位置２４１３から検索する（Ｓ２０６）。
【０１３２】
続いて、ＣＰＵ２３は、ライト管理情報２４１の差分ビット位置２４１３に基づいて検索された先頭アドレス部２４２の先頭アドレスに、すでに別の管理情報２４１が結び付けられているか否かをチェックする（Ｓ２０７）。
【０１３３】
そして、ＣＰＵ２３は、先頭アドレス部２４２の先頭アドレスに、別の管理情報２４１が結び付けられていない場合（Ｓ２０７：ＮＯ）には、当該ライト管理情報２４１を先頭アドレス部２４２の先頭アドレスに結び付けて、ハッシュ管理テーブル２４０におけるライト管理情報２４１の先頭アドレス２４１７及び小ブロック領域レングス２４１８で、書き込まれたライトデータを管理し（Ｓ２０８）、この後、再び、正ホストシステム１００からライトデータを受信するのを待ち受ける待機モードに戻る（Ｓ２０１）。
【０１３４】
これに対して、ＣＰＵ２３は、先頭アドレス部２４２の先頭アドレスに、すでに別の管理情報２４１が結び付けられている場合（Ｓ２０７：ＹＥＳ）には、別の管理情報２４１の先頭ＬＢＡ２４１７、及び小ブロック領域レングス２４１８を調査して、書き込まれたライトデータが別の管理情報２４１で管理されているライトデータと重なっているか否かをチェックする（Ｓ２０９）。
【０１３５】
そして、ＣＰＵ２３は、書き込まれたライトデータが別の管理情報２４１で管理されているライトデータと重なっている場合（Ｓ２０９：ＹＥＳ）には、結び付けられている別の管理情報２４１の先頭ＬＢＡ２４１７、及び小ブロック領域レングス２４１８を調査して、ライト管理情報２４１、及び別の管理情報２４１を１つの管理情報２４１にまとめるように変更して、引き続きハッシュ管理テーブル２４０におけるライト管理情報２４１の先頭アドレス２４１７及び小ブロック領域レングス２４１８で、書き込まれたライトデータを管理する（Ｓ２１０）。
【０１３６】
例えば、先頭アドレス部２４２の先頭アドレスに、すでに結び付けられている別の管理情報２４１の先頭ＬＢＡ２４１７が「３２」であり、小ブロック領域レングス２４１８が「４８」である場合には、図１２に示すように、当該管理情報２４１が管理しているライトデータに、書き込まれたライトデータが重なることとなる。
【０１３７】
このとき、ＣＰＵ２３は、図１３に示すように、先頭アドレス部２４２の先頭アドレスに、すでに結び付けられている別の管理情報２４１の小ブロック領域レングス２４１８を「４８」から「６４」に変更することにより、先頭アドレス部２４２の先頭アドレスに、すでに結び付けられている別の管理情報２４１と、ライト管理情報２４１とをまとめて、１つの管理情報２４１として管理することができる。
【０１３８】
このようにして、ＣＰＵ２３では、ハッシュ管理テーブル２４０において、書き込まれたライトデータが別の管理情報２４１で管理されているライトデータと重なっている場合に、重複したライトデータを別々の管理情報２４１で管理することなく、１つの管理情報２４１で管理することにより、一段と少ないハッシュ管理テーブル２４０のメモリ容量でライトデータを管理することができ、この結果、ハッシュ管理テーブル２４０のメモリ容量を有効に用いて、ライトデータの転送効率を向上することができるようになされている。
【０１３９】
これに対して、ＣＰＵ２３は、書き込まれたライトデータが別の管理情報２４１で管理されているライトデータと重なっていない場合には（Ｓ２０９：ＮＯ）、先頭アドレス部２４２の先頭アドレスにすでに結び付けられている別の管理情報２４１の数を調査して、先頭アドレス部２４２の先頭アドレスに、すでに別の管理情報２４１が４つ結び付けられているか否かをチェックする（Ｓ２１１）。
【０１４０】
そして、ＣＰＵ２３は、先頭アドレス部２４２の先頭アドレスにすでに結び付けられている別の管理情報２４１が４つより少ない場合（Ｓ２１１：ＮＯ）には、先頭アドレス部２４２の先頭アドレスにすでに結び付けられている別の管理情報２４１、及びライト管理情報２４１の小ブロック領域レングス２４１８の合計値を調査して、当該合計値が所定の閾値（例えば、閾値は４８Ｋバイト）より大きいか否かをチェックする（Ｓ２１２）。
【０１４１】
そして、ＣＰＵ２３は、小ブロック領域レングス２４１８の合計値が閾値より大きい場合（Ｓ２１２：ＹＥＳ）、又は先頭アドレス部２４２の先頭アドレスにすでに結び付けられている別の管理情報２４１が４つである場合（Ｓ２１１：ＹＥＳ）には、先頭アドレス部２４２の先頭アドレスにすでに結び付けられている管理情報２４１をすべて削除して、書き込まれたライトデータのブロック領域に対応する差分ビットマップ３１０のビットで、書き込まれたライトデータを管理し（Ｓ２０４）、この後、再び、正ホストシステム１００からライトデータを受信するのを待ち受ける待機モードに戻る（Ｓ２０１）。
【０１４２】
このようにして、ＣＰＵ２３では、ブロック領域で第２の記憶制御装置５０にライトデータを転送しても転送効率がさほど変わらないライトデータの管理情報２４１を管理することなく、すべて削除することにより、一段と少ないハッシュ管理テーブル２４０のメモリ容量でライトデータを管理することができ、この結果、ハッシュ管理テーブル２４０のメモリ容量を有効に用いて、ライトデータの転送効率を向上することができるようになされている。
【０１４３】
これに対して、ＣＰＵ２３は、小ブロック領域レングス２４１８の合計値が閾値以下である場合（Ｓ２１２：ＮＯ）には、先頭アドレス部２４２の先頭アドレスに結び付けられている一番最後の管理情報２４１に、ライト管理情報２４１を結び付け、ハッシュ管理テーブル２４０におけるライト管理情報２４１の先頭アドレス２４１７及び小ブロック領域レングス２４１８で、書き込まれたライトデータを管理する（Ｓ２１４）。
【０１４４】
この場合、例えば、ＣＰＵ２３は、先頭アドレス部２４２の先頭アドレスに結び付けられている一番最後の管理情報２４１の次管理情報先頭ＬＢＡ２４１４を、「０ｘ００」から、ライト管理情報２４１の先頭ＬＢＡ２４１７である「１６」に変更することにより、先頭アドレス部２４２の先頭アドレスに結び付けられている一番最後の管理情報２４１に、ライト管理情報２４１を結び付けるようになされている。
【０１４５】
そして、ＣＰＵ２３は、この後、再び、正ホストシステム１００からライトデータを受信するのを待ち受ける待機モードに戻る（Ｓ２０１）。
【０１４６】
（２−２）本実施の形態による差分ビットマップテーブル３１０及びハッシュ管理テーブル２４０を用いたライトデータの転送処理
次に、本実施の形態によるストレージシステム１０における差分ビットマップテーブル３１０及びハッシュ管理テーブル２４０を用いたライトデータの転送処理について説明する。本実施の形態によるストレージシステム１０は、ブロック領域（第１のデータ管理単位）、又は当該ブロック領域に比して小さい領域（第２のデータ管理単位）で、ライトデータを第２の記憶制御装置５０に転送するようになされている。
【０１４７】
ここで、図１４及び図１５は、このストレージシステム１０における差分ビットマップテーブル３１０及びハッシュ管理テーブル２４０を用いたライトデータの転送処理に関する第１の記憶制御装置２０及び第２の記憶制御装置５０の具体的な処理手順を示したフローチャートである。
【０１４８】
ＣＰＵ２３は、初期時、図１４に示すライトデータ転送処理手順ＲＴ２に従って、スプリット時点から所定時間が経過するのを待機モードで待ち受ける（Ｓ３０１）。
【０１４９】
やがて、ＣＰＵ２３は、スプリット時点から所定時間が経過すると（Ｓ３０１：ＹＥＳ）、リモートコピー実行プログラム２１０を動作させ、差分ビットマップテーブル３１０を転送差分ビットマップテーブル５１０にマージする（Ｓ３０２）。
【０１５０】
続いて、ＣＰＵ２３は、転送差分ビットマップテーブル５１０のビットが「１」に更新されているビットを検索することにより、「１」に更新されているビットに対応した転送すべきブロック領域を検索する（Ｓ３０３）。
【０１５１】
続いて、ＣＰＵ２３は、転送差分ビットマップテーブル５１０のビットが「１」に更新されているビットを検索した検索結果として、「１」に更新されているビットに対応した転送すべきブロック領域があるか否かをチェックする（Ｓ３０４）。
【０１５２】
そして、ＣＰＵ２３は、「１」に更新されているビットに対応した転送すべきブロック領域がない場合（Ｓ３０４：ＮＯ）には、この後、再び、スプリット時点から所定時間が経過するのを待ち受ける待機モードに戻る（Ｓ３０１）。
【０１５３】
これに対して、ＣＰＵ２３は、「１」に更新されているビットに対応した転送すべきブロック領域がある場合（Ｓ３０４：ＹＥＳ）には、転送差分ビットマップテーブル５１０のビットが「１」に更新されているビット位置に対応するハッシュ管理テーブル２４０の先頭アドレス部の先頭アドレスに結び付けられている管理情報２４１を検索することにより、「１」に更新されているビットに対応した転送すべきブロック領域内における転送すべきブロック領域を検索する（Ｓ３０５）。
【０１５４】
続いて、ＣＰＵ２３は、転送差分ビットマップテーブル５１０のビットが「１」に更新されているビット位置に対応するハッシュ管理テーブル２４０の先頭アドレス部の先頭アドレスに結び付けられている管理情報２４１を検索した検索結果として、転送すべきブロック領域内における転送すべき小ブロック領域があるか否かをチェックする（Ｓ３０６）。
【０１５５】
そして、ＣＰＵ２３は、転送すべきブロック領域内における転送すべき小ブロック領域がある場合（Ｓ３０６：ＹＥＳ）には、転送すべきブロック領域内における転送すべき小ブロック領域で上述のリモートコピー処理を実行して、転送すべきブロック領域内における転送すべき小ブロック領域を転送すると、転送した小ブロック領域に対応する管理情報２４１を削除する（Ｓ３０７）。
【０１５６】
この場合、例えば、ＣＰＵ２３は、削除した管理情報２４１の１つ前に結び付けられていた次管理情報先頭ＬＢＡ２４１４を、削除した管理情報２４１の１つ後に結び付けられていた次管理情報先頭ＬＢＡ２４１４に変更することにより、削除した管理情報２４１の１つ前に結び付けられていた管理情報２４１に、削除した管理情報２４１の１つ後に結び付けられていた管理情報２４１を結び付けるようになされている。
【０１５７】
続いて、ＣＰＵ２３は、転送差分ビットマップテーブル５１０のビットが「１」に更新されているビット位置に対応するハッシュ管理テーブル２４０の先頭アドレス部の先頭アドレスに結び付けられている管理情報２４１を検索することにより、転送すべきブロック領域内における転送すべき小ブロック領域をすべて転送したか否かをチェックする（Ｓ３０８）。
【０１５８】
そして、ＣＰＵ２３は、転送すべきブロック領域内における転送すべき小ブロック領域をすべて転送していない場合（Ｓ３０８：ＮＯ）には、転送すべきブロック領域内における転送すべき小ブロック領域で上述のリモートコピー処理を実行して、転送すべきブロック領域内における転送すべき小ブロック領域を転送すると、転送した小ブロック領域に対応する管理情報２４１を削除する（Ｓ３０７）。
【０１５９】
これに対して、ＣＰＵ２３は、転送すべきブロック領域内における転送すべき小ブロック領域がない場合（Ｓ３０６：ＮＯ）には、転送すべきブロック領域で上述のリモートコピー処理を実行する（Ｓ３０９）。
【０１６０】
そして、ＣＰＵ２３は、転送すべきブロック領域内における転送すべき小ブロック領域をすべて転送した場合（Ｓ３０８：ＹＥＳ）、又は転送すべきブロック領域で上述のリモートコピー処理を実行した場合には、転送したブロック領域に対応する転送差分ビットマップテーブル５１０のビットを「１」から「０」に更新する（Ｓ３１０）。
【０１６１】
続いて、ＣＰＵ２３は、「１」に更新されているビットに対応した転送すべきブロック領域内における転送すべきブロック領域を検索することにより、転送すべきブロック領域をすべて転送したか否かをチェックする（Ｓ３１１）。
【０１６２】
そして、ＣＰＵ２３は、転送すべきブロック領域をすべて転送していない場合（Ｓ３１１：ＮＯ）には、転送すべきブロック領域内における転送すべき小ブロック領域があるか否かをチェックする（Ｓ３０６）。
【０１６３】
これに対して、ＣＰＵ２３は、転送すべきブロック領域をすべて転送した場合（Ｓ３１１：ＹＥＳ）には、この後、再び、スプリット時点から所定時間が経過するのを待ち受ける待機モードに戻る（Ｓ３０１）。
【０１６４】
この後、ＣＰＵ６３は、上述のリモートコピー処理により、スプリット時点におけるプライマリＶＯＬ６００のデータイメージをセカンダリＶＯＬ７００に再現し、ＣＰＵ２３にライト完了を報告する。
【０１６５】
また、ＣＰＵ６３は、ＣＰＵから受信したデータをセカンダリＶＯＬ７００に書き込む際に、更新前データ（ライトデータによって更新（上書き）される前のデータであって、且つセカンダリＶＯＬ７００に書かれていた過去のデータ）をセカンダリＶＯＬ７００からプールＶＯＬ７２０に移動させる。
【０１６６】
そして、ＣＰＵ６３は、スナップショット管理情報４００を、スプリット時点にセカンダリＶＯＬ７００に格納されているデータと、スプリット時点以降にセカンダリＶＯＬ７００からプールＶＯＬ７２０に移動されたデータとから、スプリット時点におけるセカンダリＶＯＬ７００のデータイメージを復元するための情報に更新するようになされている。
【０１６７】
なお、第１の記憶制御装置２０では、バーチャルＶＯＬ６１０、スナップショット管理情報３００、及び転送差分ビットマップテーブル５１０については、キャッシュメモリ２５Ａ、２５Ｂにおいて、二重書きされるようになされているが、ハッシュ管理テーブル２４０については、ローカルメモリ２６に格納されているため、二重書きされるようになされていない。
【０１６８】
従って、第１の記憶制御装置２０では、リモートコピー処理時に一方のコントローラに障害が発生した場合には、他方のコントローラのＣＰＵが引き続きリモートコピー処理を実行するが、この場合、他方のコントローラのＣＰＵにおいては、ハッシュ管理テーブル２４０を参照せず、転送差分ビットマップテーブル３１０のみを参照することにより、転送するブロック領域で上述のリモートコピー処理を実行するようになされている。
【０１６９】
また、第１の記憶制御装置２０では、リモートコピー処理時に一方のコントローラに障害が発生した場合において、正ホストシステム１００から新たに他方のコントローラのＣＰＵに、ライトデータを受信した場合には、ハッシュ管理テーブル２４０に管理情報２４１が格納されている場合には、すべての管理情報２４１を削除して、その時点から、他方のコントローラのＣＰＵにおいて、差分ビットマップテーブル３１０及びハッシュ管理テーブル２４０を用いた管理処理及び転送処理を実行するようになされている。
【０１７０】
一方、第１の記憶制御装置２０では、その後、一方のコントローラの障害が回復した場合においては、障害発生後から回復までの矛盾を防止するため、一方のコントローラのＣＰＵにおいて、ハッシュ管理テーブル２４０を参照せず、転送差分ビットマップテーブル３１０のみを参照することにより、転送するブロック領域で上述のリモートコピー処理を実行するようになされている。
【０１７１】
また、第１の記憶制御装置２０では、一方のコントローラの障害が回復した場合において、正ホストシステム１００から新たに当該コントローラのＣＰＵに、ライトデータを受信した場合には、ハッシュ管理テーブル２４０に管理情報２４１が格納されている場合には、すべての管理情報２４１を削除して、その時点から、一方のコントローラのＣＰＵにおいて、差分ビットマップテーブル３１０及びハッシュ管理テーブル２４０を用いた管理処理及び転送処理を実行するようになされている。
【０１７２】
このようにして、ストレージシステム１０では、差分ビットマップテーブル３１０のビットにより、ブロック領域のライトデータを管理すると共に、ハッシュ管理テーブル２４０の管理情報２４１により、ブロック領域に比して小さい領域のライトデータを管理する。
【０１７３】
従って、ストレージシステム１０では、ブロック領域内における、第２の記憶制御装置５０に転送するライトデータが少ない場合には、小ブロック領域でリモートコピー処理を実行することによりライトデータの転送量を少なくすることができ、ブロック領域内における第２の記憶制御装置５０に転送するライトデータが多い場合には、ブロック領域でリモートコピー処理を実行することによりハッシュ管理テーブル２４０のメモリ容量を小さくすることができ、かくして、メモリ容量の増加を有効に防止することができると共に、データの転送効率を格段的に向上させることができる。
【０１７４】
なお、本実施の形態においては、ブロック領域（第１のデータ管理単位）と、当該ブロック領域に比して小さい領域（第２のデータ管理単位）とにより、ライトデータを管理した場合について述べたが、本発明はこれに限らず、例えば、３つ以上のデータ管理単位によって、ライトデータを管理するようにしても良い。
【０１７５】
また、本実施の形態においては、１ブロック領域を「６４Ｋバイト」、１小ブロック領域の最小単位を「５１２バイト」とした場合について述べたが、本発明はこれに限らず、例えば、１ブロック領域を「６４Ｋバイト」、１小ブロック領域の最小単位を「８Ｋバイト」としても良く、この他種々の大きさのブロック領域、及び小ブロック領域で管理することができる。
【０１７６】
さらに、本実施の形態においては、先頭アドレス部２４２の先頭アドレスにすでに結び付けられている管理情報２４１をすべて削除して、書き込まれたライトデータのブロック領域に対応する差分ビットマップ３１０のビットで、書き込まれたライトデータを管理する閾値を「４８Ｋバイト」とした場合について述べたが、本発明はこれに限らず、例えば、閾値を「３２Ｋバイト」としても良く、この他種々の大きさの閾値にすることができる。
【０１７７】
さらに、本実施の形態においては、先頭アドレス部２４２の先頭アドレスにすでに結び付けられている別の管理情報２４１が４つである場合に、先頭アドレス部２４２の先頭アドレスにすでに結び付けられている管理情報２４１をすべて削除して、書き込まれたライトデータのブロック領域に対応する差分ビットマップ３１０のビットで、書き込まれたライトデータを管理した場合について述べたが、本発明はこれに限らず、例えば、別の管理情報２４１が４つ以下であっても良く、又は４つより大きい数であっても良く、この他種々の数にすることができる。
【０１７８】
（３）本実施の形態によるコマンドジョブの優先実行処理
次に、本実施の形態によるストレージシステム１０におけるコマンドジョブの優先実行処理について説明する。本実施の形態によるストレージシステム１０は、コマンドジョブの優先度を設定し、当該優先度ごとにコマンドジョブを並べて格納し、優先度に基づく設定に従って、並べられた順にコマンドジョブを実行することを特徴の１つとしている。
【０１７９】
図１６は、ＣＰＵ２３によるコマンドジョブ優先実行プログラム２５０の実行により行われるコマンドジョブ優先実行処理の概略図を示す。ＣＰＵ２３は、コマンドジョブ優先実行プログラム２５０を実行することにより、ジョブ生成部２５０１、高優先格納部２５０２、ノーマル格納部２５０３、コマンドジョブスケジューラ２５０４、コマンドジョブ実行部２５０５、コマンドジョブ振り分け情報２５０６、及びコマンドジョブ実行設定情報２５０７をローカルメモリ２６に展開する。
【０１８０】
ここで、図１７は、このストレージシステム１０におけるコマンドジョブの格納処理に関する第１の記憶制御装置２０の具体的な処理手順を示したフローチャートである。
【０１８１】
ＣＰＵ２３は、初期時、図１７に示すコマンドジョブの格納処理手順ＲＴ３に従って、正ホストシステム１００からのリードコマンドやライトコマンド、リモートコピー処理の実行要求、内部コピー処理の実行要求等に基づいて、ＣＰＵ２３がこれらの動作を実行するためのジョブであるコマンドジョブの生成要求がジョブコマンド生成部２５０１に受信
したか否かをチェックする（Ｓ４０１）。
【０１８２】
そして、ＣＰＵ２３は、コマンドジョブの生成要求がジョブコマンド生成部２５０１に受信していない場合（Ｓ４０１：ＮＯ）には、コマンドジョブの生成要求がジョブコマンド生成部２５０１に受信するのを待機モードで待ち受ける。
【０１８３】
これに対して、ＣＰＵ２３は、コマンドジョブの生成要求がジョブコマンド生成部２５０１に受信した場合（Ｓ４０１：ＹＥＳ）には、ジョブコマンド生成部２５０１において、上述のアクセスや要求等に対応するコマンドジョブを生成する（Ｓ４０２）。
【０１８４】
続いて、ＣＰＵ２３は、ジョブコマンド生成部２５０１において、コマンドジョブ振り分け情報２５０６を参照することにより、生成したコマンドジョブを、高優先格納部２５０２に格納するのか否かをチェックする（Ｓ４０３）。
【０１８５】
この場合、高優先格納部２５０２は、コマンドジョブのうち、優先度「高」のコマンドジョブを格納するようになされており、コマンドジョブを古い順に並べて格納するようになされている。
【０１８６】
また、ノーマル格納部２５０３は、コマンドジョブのうち、優先度「中」のコマンドジョブを格納するようになされており、コマンドジョブを古い順に並べて格納するようになされている。
【０１８７】
具体的に、高優先格納部２５０２及びノーマル格納部２５０３は、格納したコマンドジョブを、古く格納した順に取り出すようにする方式であり、一番新しく格納されたコマンドジョブが一番最後に取り出される、ＦＩＦＯ（First In First Out）型のバッファのような機能を有している。
【０１８８】
さらに、コマンドジョブ振り分け情報２５０６は、コマンドジョブの優先度を設定するようになされており、コマンドジョブのうち、どのコマンドジョブを高優先格納部２５０２に振り分けて格納し、どのコマンドジョブをノーマル格納部２５０３に振り分けて格納するのかを表す情報である。
【０１８９】
具体的に、コマンドジョブ振り分け情報２５０６は、例えば、コマンドジョブのうち、リモートコピー処理を行うための「データ転送ジョブ（転送ジョブ）」、及びデータ転送ジョブの「ステージングジョブ（ＳＴＧジョブ）」については、優先度「高」のコマンドジョブであり、それ以外のコマンドジョブについては、優先度「中」のコマンドジョブである旨が書き込まれている。
【０１９０】
そして、ＣＰＵ２３は、ジョブコマンド生成部２５０１において、コマンドジョブ振り分け情報２５０６を参照することにより、生成したコマンドジョブを高優先格納部２５０２に格納する場合（Ｓ４０３：ＹＥＳ）には、生成したコマンドジョブを、すでに高優先格納部２５０２に古い順に並べられているコマンドジョブの一番後ろに並べるようにして、高優先格納部２５０２に格納する（Ｓ４０４）。
【０１９１】
これに対して、ＣＰＵ２３は、ジョブコマンド生成部２５０１において、コマンドジョブ振り分け情報２５０６を参照することにより、生成したコマンドジョブをノーマル格納部２５０３に格納する場合（Ｓ４０３：ＮＯ）には、生成したコマンドジョブを、すでにノーマル優先格納部２５０３に古い順に並べられているコマンドジョブの一番後ろに並べるようにして、ノーマル格納部２５０３に格納する（Ｓ４０５）。
【０１９２】
例えば、ＣＰＵ２３は、生成したコマンドジョブが「データ転送ジョブ」である場合には、「データ転送ジョブ」を、すでに高優先格納部２５０２に古い順に並べられているコマンドジョブの一番後ろに並べるようにして、高優先格納部２５０２に格納し、生成したコマンドジョブが「まとめジョブ」である場合には、「まとめジョブ」を、すでにノーマル格納部２５０３に古い順に並べられているコマンドジョブの一番後ろに並べるようにして、ノーマル格納部２５０３に格納するようになされている。
【０１９３】
やがて、ＣＰＵ２３は、この後、再び、コマンドジョブの生成要求がジョブコマンド生成部２５０１に受信したか否かをチェックする（Ｓ４０１）。
【０１９４】
また、図１８は、このストレージシステム１０におけるコマンドジョブの優先実行処理に関する第１の記憶制御装置２０の具体的な処理手順を示したフローチャートである。
【０１９５】
ＣＰＵ２３は、初期時、図１８に示すコマンドジョブの優先実行処理手順ＲＴ４に従って、コマンドジョブスケジューラ２５０４において、高優先格納部２５０２、又はノーマル格納部２５０３にコマンドジョブが格納されているか否かをチェックする（Ｓ５０１）。
【０１９６】
そして、ＣＰＵ２３は、高優先格納部２５０２、又はノーマル格納部２５０３にコマンドジョブが格納されていない場合（Ｓ５０１：ＮＯ）には、高優先格納部２５０２、又はノーマル格納部２５０３にコマンドジョブが格納されるのを待機モードで待ち受ける。
【０１９７】
これに対して、ＣＰＵ２３は、高優先格納部２５０２、又はノーマル格納部２５０３にコマンドジョブが格納されている場合（Ｓ５０１：ＹＥＳ）には、コマンドジョブスケジューラ２５０４において、コマンドジョブ実行設定情報２５０７を参照することにより、高優先格納部２５０２、又はノーマル格納部２５０３のどちらからコマンドジョブを取り出すのかを選択して、格納されたのが一番古いコマンドジョブを、コマンドジョブ実行部２５０５に送る（Ｓ５０２）。
【０１９８】
この場合、コマンドジョブスケジューラ２５０４は、高優先格納部２５０２、又はノーマル格納部２５０３のどちらからコマンドジョブを取り出すのかを選択して、選択した格納部に格納されたのが一番古いコマンドジョブを、コマンドジョブ実行部２５０５に送るようになされている。
【０１９９】
また、コマンドジョブスケジューラ２５０４は、コマンドジョブ実行部２５０５でのコマンドジョブの実行が終了するたびに、上述と同様に高優先格納部２５０２、又はノーマル格納部２５０３を選択して、コマンドジョブをコマンドジョブ実行部２５０５に送るようになされている。
【０２００】
コマンドジョブ実行設定情報２５０７は、高優先格納部２５０２に格納されているコマンドジョブを取り出してコマンドジョブ実行部２５０５に送るのか、ノーマル格納部２５０３に格納されているコマンドジョブを取り出してコマンドジョブ実行部２５０５に送るのかを表す情報である。
【０２０１】
具体的に、コマンドジョブ実行設定情報２５０７は、例えば、高優先格納部２５０２に格納されているコマンドジョブを取り出してコマンドジョブ実行部２５０５に送るのと、ノーマル格納部２５０３に格納されているコマンドジョブを取り出してコマンドジョブ実行部２５０５に送るのとを「２：１」で実行させる旨が書き込まれている。
【０２０２】
すなわち、ＣＰＵ２３は、コマンドジョブスケジューラ２５０４において、高優先格納部２５０２に格納されているコマンドジョブを古い順から２つ送ると、ノーマル格納部２５０３に格納されている一番古いコマンドジョブを１つ送るようになされている。
【０２０３】
続いて、ＣＰＵ２３は、コマンドジョブ実行部２５０５において、コマンドジョブスケジューラ２５０４から送られたコマンドジョブを実行する（Ｓ５０３）。
【０２０４】
続いて、ＣＰＵ２３は、コマンドジョブスケジューラ２５０４において、高優先格納部２５０２、又はノーマル格納部２５０３にまだ未実行のコマンドジョブが格納されているか否かをチェックする（Ｓ５０４）。
【０２０５】
そして、ＣＰＵ２３は、高優先格納部２５０２、又はノーマル格納部２５０３にまだ未実行のコマンドジョブが格納されている場合（Ｓ５０４：ＹＥＳ）には、この後、再び、コマンドジョブスケジューラ２５０４において、コマンドジョブ実行設定情報２５０７を参照することにより、高優先格納部２５０２、又はノーマル格納部２５０３からコマンドジョブを選択して、コマンドジョブ実行部２５０５に送る（Ｓ５０２）。
【０２０６】
これに対して、ＣＰＵ２３は、高優先格納部２５０２、又はノーマル格納部２５０３にまだ未実行のコマンドジョブが格納されていない場合（Ｓ５０４：ＮＯ）には、この後、このコマンドジョブの優先実行処理手順ＲＴ４を終了する（Ｓ５０５）。
【０２０７】
なお、ＣＰＵ２３は、コマンドジョブスケジューラ２５０４において、高優先格納部２５０２にコマンドジョブが格納されていない場合には、新しく高優先格納部２５０２にコマンドジョブが格納されるまでは、ノーマル格納部２５０３のコマンドジョブを取り出してコマンドジョブ実行部２５０５に送り、ノーマル格納部２５０３にコマンドジョブが格納されていない場合には、新しくノーマル格納部２５０３にコマンドジョブが格納されるまでは、高優先格納部２５０２のコマンドジョブを取り出してコマンドジョブ実行部２５０５に送るようになされている。
【０２０８】
そして、ＣＰＵ２３は、高優先格納部２５０２、及びノーマル格納部２５０３にコマンドジョブが格納されている場合には、コマンドジョブスケジューラ２５０４において、コマンドジョブ実行設定情報２５０７を参照するようになされている。
【０２０９】
このようにして、ストレージシステム１０では、高優先格納部２５０２を設け、コマンドジョブの優先度を設定して、優先度「高」のコマンドジョブを高優先格納部２５０２に格納し、コマンドジョブ実行設定情報２５０７に従って、優先度「高」のコマンドジョブを優先的に実行することにより、ＣＰＵ２３が過負荷状態であっても、第１の記憶制御装置２０の処理性能を維持するために優先的に実行しなければならないコマンドジョブが実行されないといった事態を未然かつ有効に防止し、この結果、第１の記憶制御装置２０の処理性能をバランス良く維持することができる。
【０２１０】
また、ストレージシステム１０では、「データ転送ジョブ」及びその「ステージングジョブ」を高優先格納部２５０２に格納し、コマンドジョブ実行設定情報２５０７に従って、「データ転送ジョブ」及びその「ステージングジョブ」を優先的に実行することにより、ＣＰＵ２３が過負荷状態であっても、正ホストシステム１００からのアクセス処理性能と第２の記憶制御装置５０へのデータ転送性能をバランス良く維持することができる。
【０２１１】
なお、本実施の形態においては、コマンドジョブ振り分け情報２５０６を、「データ転送ジョブ（転送ジョブ）」、及びデータ転送ジョブの「ステージングジョブ（ＳＴＧジョブ）」を優先度「高」のコマンドジョブとし、それ以外のコマンドジョブを優先度「中」のコマンドジョブのコマンドとした場合について述べたが、本発明はこれに限らず、例えば、「コピージョブ」を優先度「高」のコマンドジョブとする等、この他種々に、コマンドジョブの優先度を自由に設定、又は変更することができる。
【０２１２】
また、本実施の形態においては、コマンドジョブ振り分け情報２５０６により、優先度「高」のコマンドジョブ、又は優先度「中」のコマンドジョブの２つのコマンドジョブにより、対応する格納部に振り分けた場合について述べたが、本発明はこれに限らず、優先度「高」のコマンドジョブ、優先度「中」のコマンドジョブ、又は優先度「低」のコマンドジョブの３つのコマンドジョブにより、対応する格納部に振り分けても良く、優先後の振り分け、及び対応する格納部の数を３つ以上にして、それぞれ対応する格納部に振り分けるようにしても良い。
【０２１３】
さらに、本実施の形態においては、コマンドジョブ実行設定情報２５０７を参照することにより、高優先格納部２５０２に格納されているコマンドジョブを取り出してコマンドジョブ実行部２５０５に送るのと、ノーマル格納部２５０３に格納されているコマンドジョブを取り出してコマンドジョブ実行部２５０５に送るのとを「２：１」で実行させた場合について述べたが、本発明はこれに限らず、例えば、「３：１」や「５：２」等の「２：１」以外の比率で実行するようにしても良く、また、比率以外にも、種々の方法で、高優先格納部２５０２、又はノーマル格納部２５０３のどちらからコマンドジョブを取り出すのかを選択することができる。
【０２１４】
このように、ストレージシステム１０では、コマンドジョブ振り分け情報２５０６及びコマンドジョブ実行設定情報２５０７を自由に設定、又は変更することにより、一段と第１の記憶制御装置２０の処理性能をバランス良く維持することができる。
【０２１５】
（４）本実施の形態によるまとめ通信コマンドの送受信処理
次に、本実施の形態によるストレージシステム１０におけるまとめ通信コマンドの送受信処理について説明する。本実施の形態によるストレージシステム１０は、通信元の記憶制御装置において、同種の通信コマンドを１つのまとめ通信コマンドにまとめて、通信先の記憶制御装置に送信して、通信先の記憶制御装置において、まとめ通信コマンドを個々の通信コマンドに分割し、個々に通信コマンドに対する処理を実行して、まとめ通信コマンドの処理結果を通信元の記憶制御装置に送信し、通信元の記憶制御装置において、送信された処理結果に対する処理を実行することを特徴の１つとしている。
【０２１６】
ここで、図１９は、ＣＰＵ２３及びＣＰＵ６３によるまとめ通信実行プログラム２６０の実行により行われるまとめ通信コマンドの送受信処理に関する第１の記憶制御装置２０及び第２の記憶制御装置５０の具体的な処理手順を示したフローチャートである。
【０２１７】
ＣＰＵ２３は、初期時、図１９に示すまとめ通信コマンドの送受信処理ＲＴ５に従って、正ホストシステム１００から第２の記憶制御装置５０との通信制御に関する複数の通信コマンドを受信する（Ｓ６０１）。
【０２１８】
続いて、ＣＰＵ２３は、複数の通信コマンドのうち、通信コマンドＡ，通信コマンドＢ、通信コマンドＣ、及び通信コマンドＤが同種の通信コマンドであった場合、図２０に示すように、これら個々の通信コマンドＡ，通信コマンドＢ、通信コマンドＣ、及び通信コマンドＤを並べてリスト化することにより、同種の通信コマンドＡ〜Ｄを１つのまとめ通信コマンドＭにまとめる（Ｓ６０２）。
【０２１９】
この場合、例えば、通信コマンドＡ〜Ｄとしては、プライマリＶＯＬ６００とペア状態である４つのセカンダリＶＯＬ７００をすべてスプリット状態にするための４つのスプリットコマンドである。
【０２２０】
続いて、ＣＰＵ２３は、まとめ通信コマンドＭを送信する旨の通知コマンドを生成し、当該通知コマンドを第２の記憶制御装置５０に送信する（Ｓ６０３）。
【０２２１】
続いて、ＣＰＵ６３は、第１の記憶制御装置２０から通知コマンドを受信すると、次に受信する通信コマンドがまとめ通信コマンドである旨を認識し、次に受信する通信コマンドがまとめ通信コマンドである旨を認識した応答コマンドを生成して、当該応答コマンドを第２の記憶制御装置５０に送信する（Ｓ６０４）。
【０２２２】
続いて、ＣＰＵ２３は、第２の記憶制御装置５０から応答コマンドを受信すると、まとめ通信コマンドＭを第２の記憶制御装置５０に送信する（Ｓ６０５）。
【０２２３】
続いて、ＣＰＵ６３は、第１の記憶制御装置２０からまとめ通信コマンドＭを受信すると、まとめ通信コマンドＭを個々の通信コマンドＡ〜Ｄに分割し、これら個々の通信コマンドＡ〜Ｄに対する処理を実行し、当該各処理の処理結果を得て、まとめ通信コマンドＭに対する処理結果を送信する（Ｓ６０６）。
【０２２４】
この場合、ＣＰＵ６３は、図２１に示すように、例えば、当該各処理の処理結果Ａ〜Ｄがすべて正常終了した場合には、まとめ通信コマンドＭに対する処理結果として、まとめ通信コマンドＭのうちの最後の通信コマンドである通信コマンドＤに対する処理結果である、「正常終了」した処理結果Ｄを第２の記憶制御装置５０に送信するようになされている。
【０２２５】
また、ＣＰＵ６３は、図２２に示すように、例えば、通信コマンドＣに対する処理結果である処理結果Ｃが異常終了した場合には、未実行の通信コマンドＤの処理を破棄し、まとめ通信コマンドＭに対する処理結果として、「異常終了」した処理結果Ｃを第２の記憶制御装置５０に送信するようになされている。
【０２２６】
続いて、ＣＰＵ６３は、第２の記憶制御装置５０からまとめ通信コマンドＭに対する処理結果を受信すると、受信した処理結果に対する処理を実行する（Ｓ６０７）。
【０２２７】
この場合、ＣＰＵ６３は、例えば、当該各処理の処理結果Ａ〜Ｄがすべて正常終了し、まとめ通信コマンドＭに対する処理結果として、「正常終了」した処理結果Ｄを受信した場合には、まとめ通信コマンドＭのうちの最後の通信コマンドを確認し、当該通信コマンドが通信コマンドＤであることから、まとめ通信コマンドＭが正常に終了したと判断し、例えば、次のまとめ通信コマンドの送受信処理を実行するようになされている。
【０２２８】
また、ＣＰＵ６３は、例えば、通信コマンドＣに対する処理結果である処理結果Ｃが異常終了し、まとめ通信コマンドＭに対する処理結果として、「異常終了」した処理結果Ｃを受信した場合には、まとめ通信コマンドＭのうちの最後の通信コマンドを確認し、当該通信コマンドが通信コマンドＤであることから、まとめ通信コマンドＭが通信コマンドＣで異常に終了したと判断し、例えば、通信コマンドＣ及び通信コマンドＤについて、再び、まとめ通信コマンドの送受信処理を実行するようになされている。
【０２２９】
このようにして、ストレージシステム１０では、第１の記憶制御装置２０において、同種の通信コマンドＡ〜Ｄを１つのまとめ通信コマンドＭにまとめて、第２の記憶制御装置５０に送信し、第２の記憶制御装置５０において、まとめ通信コマンドＭを個々の通信コマンドＡ〜Ｄに分割し、個々に通信コマンドＡ〜Ｄに対する処理を実行して、まとめ通信コマンドＭに対する処理結果を第１の記憶制御装置２０に送信し、第１の記憶制御装置２０において、送信された処理結果に対する処理を実行することにより、同種の通信コマンドを１回ごとに通信することによるデータ転送性能の低下を未然かつ有効に防止することができ、かくして、データ転送性能を向上することができる。
【０２３０】
また、例えば、通信コマンドＣに対する処理結果である処理結果Ｃが異常終了した場合には、未実行の通信コマンドＤの処理を破棄し、まとめ通信コマンドＭに対する処理結果として、「異常終了」した処理結果Ｃを第２の記憶制御装置５０に送信することにより、障害が発生した時点で、障害が発生したことを即時に報告して、障害に対応する処理を実行することができ、かくして、ストレージシステム１０の処理性能を向上することができる。
【０２３１】
なお、本実施の形態においては、通信コマンドＡ〜Ｄとして、プライマリＶＯＬ６００とペア状態である４つのセカンダリＶＯＬ７００をすべてスプリット状態にするための４つのスプリットコマンドを例としてあげたが場合について述べたが、本発明はこれに限らず、例えば、プライマリＶＯＬ６００とペア状態である４つのセカンダリＶＯＬ７００のペア状態を確認する４つのペア状態確認コマンドや、所定の時間ごとのプライマリＶＯＬ６００からセカンダリＶＯＬ７００への更新コピー時における４つの更新コピー通信コマンド、所定の時間ごとのプライマリＶＯＬ６００からセカンダリＶＯＬ７００への更新コピー時にコピー処理が完了しなかった４つの更新コピー通信コマンド等でも良く、この他種々の同種の通信コマンドに適用することができる。
【０２３２】
また、本実施の形態においては、複数の通信コマンドのうち、通信コマンドＡ，通信コマンドＢ、通信コマンドＣ、及び通信コマンドＤが同種の通信コマンドであった場合について述べたが、本発明はこれに限らず、例えば、同種の通信コマンドであれば、４つ以下の通信コマンドを、１つのまとめ通信コマンドにまとめるようにしても良く、又は４つより多い通信コマンドを、１つのまとめ通信コマンドにまとめるようにしても良い。
【産業上の利用可能性】
【０２３３】
本発明は、ディスクアレイ装置間においてデータを管理するストレージシステムのほか、この他種々のデータ転送の管理を伴う機器に適用することができる。
【図面の簡単な説明】
【０２３４】
【図１】本実施の形態によるストレージシステムの構成を示す略線図である。
【図２】ローカルメモリの構成を示す略線図ある。
【図３】ボリューム管理テーブルの説明に供する概念図である。
【図４】非同期リモートコピーの処理概要の説明に供する概念図である。
【図５】非同期リモートコピーの処理シーケンスの説明に供する概念図である。
【図６】スナップショット更新処理の概要の説明に供する概念図である。
【図７】ハッシュ管理テーブルの説明に供する概念図である。
【図８】管理情報の説明に供する概念図である。
【図９】ライトデータの管理処理手順の説明に供するフローチャートである。
【図１０】ライトデータの管理処理手順の説明に供するフローチャートである。
【図１１】管理情報の説明に供する概念図である。
【図１２】管理情報のまとめの説明に供する概念図である。
【図１３】管理情報のまとめの説明に供する概念図である。
【図１４】ライトデータの転送処理手順の説明に供するフローチャートである。
【図１５】ライトデータの転送処理手順の説明に供するフローチャートである。
【図１６】コマンドジョブの優先実行処理の説明に供する概念図である。
【図１７】コマンドジョブの格納処理手順の説明に供するフローチャートである。
【図１８】コマンドジョブの優先実行処理手順の説明に供するフローチャートである。
【図１９】まとめ通信コマンドの送受信処理手順の説明に供するフローチャートである。
【図２０】通信コマンドまとめ処理の説明に供する概念図である。
【図２１】通信コマンドまとめ処理の説明に供する概念図である。
【図２２】通信コマンドまとめ処理の説明に供する概念図である。
【符号の説明】
【０２３５】
１０……ストレージシステム、２０……第１の記憶制御装置、２３……ＣＰＵ、２６……ローカルメモリ、３０、６０……コントローラ、４０、７０……記憶装置、４１、７１……ディスクドライブ、４２、７２……論理ボリューム、５０……第２の記憶制御装置、８０……管理端末、１００……正ホストシステム、２００……内部コピー実行プログラム、２１０……リモートコピー実行プログラム、２２０……制御プログラム、２３０……ボリューム管理テーブル、２４０……ハッシュ管理テーブル、２４１……管理情報、２４１１……ＰＬＵＮ、２４１２……Ｐ＿ＶＬＵＮ、２４１３……差分ビット位置、２４１４……次管理情報先頭ＬＢＡ、２４１５……ＣＴＧ、２４１６……差分管理ＩＤ、２４１７……先頭ＬＢＡ、２４１８……小ブロック領域レングス、２４２……先頭アドレス、２５０……コマンドジョブ実行プログラム、２５０１……コマンドジョブ生成部、２５０２……高優先格納部、２５０３……ノーマル格納部、２５０４……ジョブコマンドコントローラ、２５０５……ジョブコマンド実行部、２５０６……コマンドジョブ振り分け情報、２５０７……コマンドジョブ実行設定情報、２６０……まとめ通信実行プログラム
【図１】
2007188277.tif 000003
【図２】
2007188277.tif 000004
【図３】
2007188277.tif 000005
【図４】
2007188277.tif 000006
【図５】
2007188277.tif 000007
【図６】
2007188277.tif 000008
【図７】
2007188277.tif 000009
【図８】
2007188277.tif 000010
【図９】
2007188277.tif 000011
【図１０】
2007188277.tif 000012
【図１１】
2007188277.tif 000013
【図１２】
2007188277.tif 000014
【図１３】
2007188277.tif 000015
【図１４】
2007188277.tif 000016
【図１５】
2007188277.tif 000017
【図１６】
2007188277.tif 000018
【図１７】
2007188277.tif 000019
【図１８】
2007188277.tif 000020
【図１９】
2007188277.tif 000021
【図２０】
2007188277.tif 000022
【図２１】
2007188277.tif 000023
【図２２】
2007188277.tif 000024