(57)【要約】【課題】本発明の記憶制御装置は、仮想ボリュームを管理するテーブルをプールに保存し、さらに、そのテーブルの状態を最新状態に保持する。【解決手段】第１仮想ボリューム３を管理する第１ＤＭＴ５は、第１プール２に保存される。第１仮想ボリューム制御部６は、未使用の仮想スロットに関するライトコマンドをライトコマンド発行装置８から受領すると（Ｓ１）、その仮想スロットに第１プール内の未使用の実スロットを割当て（Ｓ２）、第１ＤＭＴを更新する（Ｓ３）。第１仮想ボリューム制御部６は、受信データの有効性を判別し（Ｓ４）、”０”データを受信した場合、割り当てた実スロットを解放し（Ｓ５）、第１ＤＭＴを再び更新し（Ｓ６）、受信データを破棄する（Ｓ７）。有効なデータの場合、ＤＭＴ更新後にデステージを行う（Ｓ７）。【選択図】図１
2009116809.tif 000002
【特許請求の範囲】
【請求項１】
ライトコマンド発行装置により使用される記憶制御装置であって、
複数の実記憶領域を有するプールを管理する実記憶領域管理部と、
複数の仮想記憶領域から構成される仮想ボリュームであって、前記ライトコマンド発行装置から発行されるライトコマンドに応じて、前記仮想記憶領域に前記実記憶領域が割り当てられる仮想ボリュームと、
前記各仮想記憶領域と前記各実記憶領域との対応関係を管理するための記憶領域管理テーブルであって、前記プールに保存される記憶領域管理テーブルと、
前記仮想ボリュームを構成する前記各仮想記憶領域のうち前記ライトコマンドに対応する所定の前記仮想記憶領域に、前記プール内の前記各実記憶領域のうち、未割当ての実記憶領域の中から選択される所定の実記憶領域を割り当てる、仮想ボリューム制御部とを備え、
前記プール内の前記記憶領域管理テーブルを更新させる処理と、前記ライトコマンドに対応するライトデータを前記所定の実記憶領域に記憶させる処理とは、非同期で実行されるようになっており、
前記仮想ボリューム制御部は、前記所定の仮想記憶領域に前記所定の実記憶領域を割り当てた後で、前記記憶領域管理テーブルを更新させる処理を実行し、次に、前記ライトデータを前記所定の実記憶領域に記憶させる処理を実行する記憶制御装置。
【請求項２】
前記仮想ボリューム制御部は、前記記憶領域管理テーブルを更新した後で、前記ライトデータが無効なライトデータであるか否かを判定し、無効なライトデータであると判定した場合には、前記所定の仮想記憶領域に割り当てられた前記所定の実記憶領域を解放して、前記記憶領域管理テーブルを再び更新し、かつ、前記無効なライトデータを破棄する請求項１に記載の記憶制御装置。
【請求項３】
前記仮想ボリューム制御部は、前記ライトデータが有効なライトデータであると判定した場合、前記ライトデータを前記所定の実記憶領域に記憶させる請求項２に記載の記憶制御装置。
【請求項４】
前記仮想ボリューム制御部は、前記記憶領域管理テーブルを更新した後で、前記ライトデータが無効なライトデータであるか否かを判定し、無効なライトデータであると判定した場合には、前記所定の実記憶領域に既に記憶されているデータが無効なデータであるか否かを判定し、前記所定の実記憶領域に既に記憶されているデータが無効なデータであると判定した場合には、前記所定の実記憶領域を解放して前記記憶領域管理テーブルを再び更新し、かつ、前記無効なライトデータを破棄する請求項１に記載の記憶制御装置。
【請求項５】
前記仮想ボリューム制御部は、前記ライトデータが有効なライトデータであると判定した場合、及び、前記所定の実記憶領域に既に記憶されているデータが有効なデータであると判定した場合には、前記ライトデータを前記所定の実記憶領域に記憶させる請求項４に記載の記憶制御装置。
【請求項６】
前記仮想ボリューム制御部は、前記ライトデータが”０”データの場合に、無効なライトデータであると判定し、前記ライトデータが”０”データでない場合に、有効なライトデータであると判定する請求項１〜請求項５のいずれかに記載の記憶制御装置。
【請求項７】
前記実記憶領域管理部は、前記プールを複数管理しており、
前記記憶領域管理テーブルと前記ライトデータとは、同一のプール内にそれぞれ記憶される請求項１〜請求項５のいずれかに記載の記憶制御装置。
【請求項８】
前記プールは、記憶制御装置の外部に設けられている請求項１〜請求項５のいずれかに記載の記憶制御装置。
【請求項９】
仮想ボリューム制御部は、前記ライトデータ及び前記記憶領域管理テーブルを、別の記憶制御装置に転送して記憶させることもできる請求項１〜請求項５のいずれかに記載の記憶制御装置。
【請求項１０】
前記ライトコマンド発行装置は、ホストコンピュータ、他の記憶制御装置、バックアップデータを保持するバックアップ装置のいずれか一つである請求項１〜請求項５のいずれかに記載の記憶制御装置。
【請求項１１】
第１記憶制御装置と第２記憶制御装置とを有するストレージシステムであって、
前記第１記憶制御装置は、
前記第２記憶制御装置の有するプール内の複数の実記憶領域を、前記第１記憶制御装置内の実記憶領域として使用するための取り込み部と、
複数の仮想記憶領域から構成される仮想ボリュームであって、ライトコマンド発行装置から発行されるライトコマンドに応じて、前記取り込み部により取り込まれる前記実記憶領域が前記仮想記憶領域に割り当てられる仮想ボリュームと、
前記各仮想記憶領域と前記各実記憶領域との対応関係を管理するための第１記憶領域管理テーブルと、
前記仮想ボリュームを構成する前記各仮想記憶領域のうち前記ライトコマンドに対応する所定の前記仮想記憶領域に、前記各実記憶領域のうち、未割当ての実記憶領域の中から選択される所定の実記憶領域を割り当てる、仮想ボリューム制御部とを備えており、
前記第２記憶制御装置は、前記各実記憶領域を有する前記プールと、このプールに記憶される前記第１記憶領域管理テーブルのコピーとを備えており、
前記仮想ボリューム制御部は、（１）前記所定の仮想記憶領域に前記所定の実記憶領域を割り当てた後で、（２）前記第１記憶領域管理テーブルを更新し、（３）前記第２記憶制御装置に前記第１記憶領域管理テーブルの前記コピーの更新を指示し、（４）前記第１記憶領域管理テーブルの前記コピーの更新を確認した後で、（５）前記ライトコマンドに対応するライトデータを前記所定の実記憶領域に記憶させる、ストレージシステム。
【請求項１２】
第１記憶制御装置と第２記憶制御装置とを有するストレージシステムであって、
前記第１記憶制御装置は、
複数の第１実記憶領域を有する第１プールを管理する第１実記憶領域管理部と、
複数の第１仮想記憶領域から構成される第１仮想ボリュームであって、受信された第１ライトコマンドに応じて、前記第１仮想記憶領域に前記第１実記憶領域が割り当てられる第１仮想ボリュームと、
前記各第１仮想記憶領域と前記各第１実記憶領域との対応関係を管理するための第１記憶領域管理テーブルであって、前記第１プール内に記憶される第１記憶領域管理テーブルと、
前記第１仮想ボリュームを構成する前記各第１仮想記憶領域のうち前記第１ライトコマンドに対応する所定の前記第１仮想記憶領域に、前記第１プール内の前記各第１実記憶領域のうち、未割当ての第１実記憶領域の中から選択される所定の第１実記憶領域を割り当てる第１仮想ボリューム制御部であって、前記所定の第１仮想記憶領域に前記所定の第１実記憶領域を割り当てた後で、前記第１プール内の前記第１記憶領域管理テーブルを更新し、次に、前記第１ライトコマンドに対応する第１ライトデータを前記所定の第１実記憶領域に記憶させる第１仮想ボリューム制御部と、
前記第１ライトコマンドに対応する第２ライトコマンドを発行し、前記第１ライトデータに対応する第２ライトデータを前記第２記憶制御装置に送信することにより、前記第２ライトデータを前記第２記憶制御装置内に記憶させるコピー制御部と、
を備えており、
前記第２記憶制御装置は、
複数の第２実記憶領域を有する第２プールを管理する第２実記憶領域管理部と、
複数の第２仮想記憶領域から構成され、かつ、前記第１仮想ボリュームとコピーペアを形成する第２仮想ボリュームであって、前記第２ライトコマンドに応じて、前記第２仮想記憶領域に前記第２実記憶領域が割り当てられる第２仮想ボリュームと、
前記各第２仮想記憶領域と前記各第２実記憶領域との対応関係を管理するための第２記憶領域管理テーブルであって、前記第２プール内に保存される第２記憶領域管理テーブルと、
前記第２仮想ボリュームを構成する前記各第２仮想記憶領域のうち前記第２ライトコマンドに対応する所定の前記第２仮想記憶領域に、前記第２プール内の前記各第２実記憶領域のうち、未割当ての第２実記憶領域の中から選択される所定の第２実記憶領域を割り当てる第２仮想ボリューム制御部であって、前記所定の第２仮想記憶領域に前記所定の第２実記憶領域を割り当てた後で、前記第２プール内の前記第２記憶領域管理テーブルを更新し、次に、前記第２ライトデータを前記所定の第２実記憶領域に記憶させる第２仮想ボリューム制御部と、
を備えるストレージシステム。
【請求項１３】
さらに、前記第１仮想ボリューム制御部は、前記第１記憶領域管理テーブルを更新した後で、前記第１ライトデータが無効な第１ライトデータであるか否かを判定し、無効な第１ライトデータであると判定した場合には、前記所定の第１仮想記憶領域に割り当てられた前記所定の第１実記憶領域を解放して前記第１記憶領域管理テーブルを再び更新し、かつ、前記無効な第１ライトデータを破棄し、
さらに、前記第２仮想ボリューム制御部は、前記第２記憶領域管理テーブルを更新した後で、前記第２ライトデータが無効な第２ライトデータであるか否かを判定し、無効な第２ライトデータであると判定した場合には、前記所定の第２仮想記憶領域に割り当てられた前記所定の第２実記憶領域を解放して前記第２記憶領域管理テーブルを再び更新し、かつ、前記無効な第２ライトデータを破棄する、
請求項１２に記載のストレージシステム。
【請求項１４】
第１記憶制御装置と第２記憶制御装置とを有するストレージシステムであって、
前記第１記憶制御装置は、
複数の第１実記憶領域を有する第１プールを管理する第１実記憶領域管理部と、
複数の第１仮想記憶領域から構成される第１仮想ボリュームであって、受信された第１ライトコマンドに応じて、前記第１仮想記憶領域に前記第１実記憶領域が割り当てられる第１仮想ボリュームと、
前記各第１仮想記憶領域と前記各第１実記憶領域との対応関係を管理するための第１記憶領域管理テーブルであって、前記第１プール内に記憶される第１記憶領域管理テーブルと、
前記第１仮想ボリュームを構成する前記各第１仮想記憶領域のうち前記第１ライトコマンドに対応する所定の前記第１仮想記憶領域に、前記第１プール内の前記各第１実記憶領域のうち、未割当ての第１実記憶領域の中から選択される所定の第１実記憶領域を割り当てる第１仮想ボリューム制御部であって、前記所定の第１仮想記憶領域に前記所定の第１実記憶領域を割り当てた後で、前記第１記憶領域管理テーブルを更新し、前記第１ライトコマンドに対応する第１ライトデータを前記所定の第１実記憶領域に記憶させる第１仮想ボリューム制御部と、
前記第１プール内に記憶されたデータ及び前記第１記憶領域管理テーブルを、前記第２記憶制御装置に向けて送信し、前記第２記憶制御装置内の第２プールにコピーさせる第１コピー制御部と、
を備えており、
前記第２記憶制御装置は、
複数の第２実記憶領域を有する前記第２プールを管理する第２実記憶領域管理部と、
複数の第２仮想記憶領域から構成され、かつ、前記第１仮想ボリュームとコピーペアを形成する第２仮想ボリュームと、
前記第１仮想ボリュームと前記第２仮想ボリュームとの対応関係を管理するための仮想ボリューム対応管理テーブルと、
前記各第２仮想記憶領域と前記各第２実記憶領域との対応関係を管理するための第２記憶領域管理テーブルであって、前記第２プール内に記憶される第２記憶領域管理テーブルと、
前記第１コピー制御部から受信する前記第１プール内の前記データ及び前記第１記憶領域管理テーブルを前記第２プール内にそれぞれ記憶させる第２コピー制御部と、
前記第２仮想ボリュームの構成を管理する第２仮想ボリューム制御部であって、前記第２プール内にコピーされた前記第１記憶領域管理テーブルが更新された場合には、前記第２プール内の前記第１記憶領域管理テーブルのコピーと、前記仮想ボリューム対応管理テーブルと、前記第２コピー制御部により管理されるコピー管理テーブルとを用いることにより、前記第２記憶領域管理テーブルを更新させる第２仮想ボリューム制御部と、
を備えるストレージシステム。
【請求項１５】
ライトコマンドに応じて仮想記憶領域に実記憶領域が割り当てられる仮想ボリュームを制御する方法であって、
前記ライトコマンドによって指定された仮想記憶領域に、実記憶領域が割り当てられているか否かを判定するステップと、
前記指定された仮想記憶領域に前記実記憶領域が割り当てられていない場合、プール内から未割当ての実記憶領域を選択して、前記指定された仮想記憶領域に割り当てるステップと、
前記仮想記憶領域と前記実記憶領域との対応関係を管理する記憶領域管理テーブルを更新するステップと、
前記ライトコマンドに対応するライトデータを受信してキャッシュメモリに記憶させるステップと、
前記キャッシュメモリに記憶された前記ライトデータが有効なライトデータであるか否かを判定するステップと、
前記ライトデータが無効なライトデータであると判定された場合、前記指定された仮想記憶領域に割り当てられた前記実記憶領域を解放して未割当て状態に戻すステップと、
前記記憶領域管理テーブルを再び更新させるステップと、
前記キャッシュメモリに記憶された前記無効なライトデータを破棄するステップと、
前記キャッシュメモリに記憶された前記ライトデータが有効なライトデータであると判定された場合、前記有効なライトデータを、前記指定された仮想記憶領域に割り当てられた前記実記憶領域に記憶させるステップと、
をそれぞれ実行する仮想ボリュームの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置、ストレージシステム及び仮想ボリュームの制御方法に関するものである。
【背景技術】
【０００２】
例えば、政府機関、企業、教育機関等では、多種多量のデータを取り扱うために、比較的大規模なストレージシステムを用いてデータを管理する。このストレージシステムは、少なくとも一つの記憶制御装置を備える。記憶制御装置、例えば、多数の記憶デバイスを備えており、ＲＡＩＤ（Redundant Array of Inexpensive Disks）に基づく記憶領域を提供することができる。記憶デバイス群が提供する物理的な記憶領域上には少なくとも１つ以上の論理デバイス（論理ボリュームとも呼ばれる）が形成される。ホストコンピュータ（以下、「ホスト」）は、論理デバイスに対してライトコマンドやリードコマンドを発行することにより、データの書込みやデータの読出しを行う。
【０００３】
ホストからのライトコマンド（ライトアクセス）に応じて、実記憶領域を動的に仮想ボリュームに割り当てるようにした技術は知られている（特許文献１）。この従来技術では、ホストが仮想ボリュームにデータを書き込む場合に、書込先として指定された領域に、実記憶領域を割り当てる。従って、仮想ボリュームの見かけ上の記憶容量を大きくしても、実際に必要な記憶容量は、ホストにより使用されている領域の合計値で済む。仮想ボリュームの実容量は、仮想ボリュームに割り当てられる実記憶領域の合計値である。この従来技術では、ホストによる仮想ボリュームの使用状態に応じて、仮想ボリュームの実容量を可変に調節できる。
【０００４】
なお、本出願人は、特願２００７−０１３３８４号明細書において、仮想ボリュームのデータを効率的にバックアップする技術を開示している。しかし、特願２００７−０１３３８４号明細書は、未だ公開されておらず、従来技術に該当しない点に留意されたい。
【特許文献１】特開２００３−１５９１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
仮想ボリュームに割り当てられる実記憶領域は、記憶領域管理テーブルによって管理されるため、記憶領域管理テーブルが失われた場合には、仮想ボリュームへのデータ入出力を行うことができなくなる。
【０００６】
従って、記憶領域管理テーブルをどのように保護するかは、記憶制御装置の信頼性の点で重要である。例えば、二重化されたメモリに記憶領域管理テーブルを保存したり、揮発性メモリをバッテリによってバックアップしたりすることが考えられる。しかし、コントローラ内のメモリにのみ記憶領域管理テーブルを保存する方法では、必ずしも保護が十分であるとは言えない。二重化されたメモリの一方に障害が生じたり、あるいは、バッテリに異常が生じた場合には、記憶領域管理テーブルの保護の冗長性が失われる。
【０００７】
そこで、記憶領域管理テーブルを、記憶デバイスの記憶領域（実記憶領域）に書き込んで保存する方法が考えられる。しかし、記憶領域管理テーブルを記憶デバイスに書き込んで保存するタイミングと、仮想ボリュームに書き込まれたユーザデータ（ライトデータ）を記憶デバイスに書き込むタイミングとは、必ずしも一致していない。
【０００８】
特に、記憶制御装置の外部に存在する記憶デバイスを用いる場合、記憶領域管理テーブルのデステージ処理と、ライトデータのデステージ処理とは非同期で行われる。デステージ処理とは、キャッシュメモリ上のデータを記憶デバイスの記憶領域に書き込む処理である。ステージ処理とは、その逆に、記憶デバイスの記憶領域からデータを読み出して、キャッシュメモリに記憶させる処理である。
【０００９】
記憶領域管理テーブルのデステージ処理とライトデータのデステージ処理とが非同期で実行されるため、両者が整合しなくなる可能性が考えられる。例えば、ライトデータのデステージ処理が先に行われ、次に、記憶領域管理テーブルのデステージ処理が行われる場合を想定する。ライトデータのデステージ処理は正常に終了したものの、何らかの原因によって、記憶領域管理テーブルのデステージ処理が正常に終了しなかった場合、記憶領域管理テーブルの内容とライトデータの記憶状態とが整合しなくなる。
【００１０】
記憶領域管理テーブルは更新されていないため、その内容は古いままである。従って、新たなライトコマンドが発行された場合、既にライトデータが書き込まれた実記憶領域を、新たなライトコマンドのために使用してしまう可能性がある。既に使用されている実記憶領域が、別のライトコマンドを処理するために使用されると、その実記憶領域に記憶されていたライトデータは失われてしまう。
【００１１】
リードコマンドが発行された場合、記憶領域管理テーブルの内容が古いままなので、実際には記憶デバイスの実記憶領域にデータが記憶されているにも拘わらず、該当データ無しと判定される。従って、記憶制御装置は、リードコマンドの発行元に”０”データを返すことになる。
【００１２】
このように、記憶領域管理テーブルのより手厚い保護と、記憶領域管理テーブルと実記憶領域に記憶されるデータとの整合性を維持することは、仮想ボリュームを提供する記憶制御装置にとって重要な問題となる。
【００１３】
ところで、記憶制御装置で管理されるデータのコピーをバックアップ装置に記憶させることも行われる。ここで例えば、バックアップ元の記憶制御装置とバックアップ先の記憶制御装置とが、それぞれ仮想ボリュームを生成する機能を備えており、かつ、仮想ボリュームの全体について通常のボリュームバックアップを行った場合を想定する。
【００１４】
この場合、ホストによって認識される、仮想ボリュームの全体についてバックアップされるため、バックアップ先の記憶制御装置では、バックアップ元の仮想ボリュームの仮想容量と同一サイズの実容量が使用される。バックアップ元の仮想ボリューム内で未使用の領域についても、実記憶領域が割り当てられてしまうためである。
【００１５】
従って、バックアップ先の記憶制御装置では、必要に応じて必要なだけの実記憶領域を使用できるという仮想ボリュームの利点が失われてしまい、記憶領域を効率的に使用することができない。
【００１６】
本発明は、上記の問題点に鑑みてなされたもので、その目的は、記憶領域管理テーブルと実記憶領域に記憶されるライトデータとの整合性を維持することができ、信頼性を向上できるようにした記憶制御装置、ストレージシステム及び仮想ボリュームの制御方法を提供することにある。本発明の他の目的は、記憶領域管理テーブルと実記憶領域に記憶されるライトデータの整合性を維持し、かつ、記憶領域を効率的に使用することができる記憶制御装置、ストレージシステム及び仮想ボリュームの制御方法を提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
【課題を解決するための手段】
【００１７】
上記課題を解決すべく、本発明の第１観点に従う記憶制御装置は、ライトコマンド発行装置により使用される記憶制御装置であって、複数の実記憶領域を有するプールを管理する実記憶領域管理部と、複数の仮想記憶領域から構成される仮想ボリュームであって、ライトコマンド発行装置から発行されるライトコマンドに応じて、仮想記憶領域に実記憶領域が割り当てられる仮想ボリュームと、各仮想記憶領域と各実記憶領域との対応関係を管理するための記憶領域管理テーブルであって、プールに保存される記憶領域管理テーブルと、仮想ボリュームを構成する各仮想記憶領域のうちライトコマンドに対応する所定の仮想記憶領域に、プール内の各実記憶領域のうち、未割当ての実記憶領域の中から選択される所定の実記憶領域を割り当てる、仮想ボリューム制御部とを備え、プール内の記憶領域管理テーブルを更新させる処理と、ライトコマンドに対応するライトデータを所定の実記憶領域に記憶させる処理とは、非同期で実行されるようになっており、仮想ボリューム制御部は、所定の仮想記憶領域に所定の実記憶領域を割り当てた後で、記憶領域管理テーブルを更新させる処理を実行し、次に、ライトデータを所定の実記憶領域に記憶させる処理を実行する。
【００１８】
第２観点では、第１観点において、仮想ボリューム制御部は、記憶領域管理テーブルを更新した後で、ライトデータが無効なライトデータであるか否かを判定し、無効なライトデータであると判定した場合には、所定の仮想記憶領域に割り当てられた所定の実記憶領域を解放して、記憶領域管理テーブルを再び更新し、かつ、無効なライトデータを破棄する。
【００１９】
第３観点では、第２観点において、仮想ボリューム制御部は、ライトデータが有効なライトデータであると判定した場合、ライトデータを所定の実記憶領域に記憶させる。
【００２０】
第４観点では、第１観点において、仮想ボリューム制御部は、記憶領域管理テーブルを更新した後で、ライトデータが無効なライトデータであるか否かを判定し、無効なライトデータであると判定した場合には、所定の実記憶領域に既に記憶されているデータが無効なデータであるか否かを判定し、所定の実記憶領域に既に記憶されているデータが無効なデータであると判定した場合には、所定の実記憶領域を解放して記憶領域管理テーブルを再び更新し、かつ、無効なライトデータを破棄する。
【００２１】
第５観点では、第４観点において、仮想ボリューム制御部は、ライトデータが有効なライトデータであると判定した場合、及び、所定の実記憶領域に既に記憶されているデータが有効なデータであると判定した場合には、ライトデータを所定の実記憶領域に記憶させる。
【００２２】
第６観点では、第１〜５観点のいずれかにおいて、仮想ボリューム制御部は、ライトデータが”０”データの場合に、無効なライトデータであると判定し、ライトデータが”０”データでない場合に、有効なライトデータであると判定する。
【００２３】
第７観点では、第１〜５観点のいずれかにおいて、実記憶領域管理部は、プールを複数管理しており、記憶領域管理テーブルとライトデータとは、同一のプール内にそれぞれ記憶される。
【００２４】
第８観点では、第１〜５観点のいずれかにおいて、プールは、記憶制御装置の外部に設けられている。
【００２５】
第９観点では、第１〜５観点のいずれかにおいて、仮想ボリューム制御部は、ライトデータ及び記憶領域管理テーブルを、別の記憶制御装置に転送して記憶可能である。
【００２６】
第１０観点では、第１〜５観点のいずれかにおいて、ライトコマンド発行装置は、ホストコンピュータ、他の記憶制御装置、バックアップデータを保持するバックアップ装置のいずれか一つである。
【００２７】
本発明の第１１観点に従うストレージシステムは、第１記憶制御装置と第２記憶制御装置とを有するストレージシステムであって、第１記憶制御装置は、第２記憶制御装置の有するプール内の複数の実記憶領域を、第１記憶制御装置内の実記憶領域として使用するための取り込み部と、複数の仮想記憶領域から構成される仮想ボリュームであって、ライトコマンド発行装置から発行されるライトコマンドに応じて、取り込み部により取り込まれる実記憶領域が仮想記憶領域に割り当てられる仮想ボリュームと、各仮想記憶領域と各実記憶領域との対応関係を管理するための第１記憶領域管理テーブルと、仮想ボリュームを構成する各仮想記憶領域のうちライトコマンドに対応する所定の仮想記憶領域に、各実記憶領域のうち、未割当ての実記憶領域の中から選択される所定の実記憶領域を割り当てる、仮想ボリューム制御部とを備えており、第２記憶制御装置は、各実記憶領域を有するプールと、このプールに記憶される第１記憶領域管理テーブルのコピーとを備えており、仮想ボリューム制御部は、（１）所定の仮想記憶領域に所定の実記憶領域を割り当てた後で、（２）第１記憶領域管理テーブルを更新し、（３）第２記憶制御装置に第１記憶領域管理テーブルのコピーの更新を指示し、（４）第１記憶領域管理テーブルのコピーの更新を確認した後で、（５）ライトコマンドに対応するライトデータを所定の実記憶領域に記憶させる。
【００２８】
本発明の第１２観点に従うストレージシステムは、第１記憶制御装置と第２記憶制御装置とを有するストレージシステムであって、第１記憶制御装置は、複数の第１実記憶領域を有する第１プールを管理する第１実記憶領域管理部と、複数の第１仮想記憶領域から構成される第１仮想ボリュームであって、受信された第１ライトコマンドに応じて、第１仮想記憶領域に第１実記憶領域が割り当てられる第１仮想ボリュームと、各第１仮想記憶領域と各第１実記憶領域との対応関係を管理するための第１記憶領域管理テーブルであって、第１プール内に記憶される第１記憶領域管理テーブルと、第１仮想ボリュームを構成する各第１仮想記憶領域のうち第１ライトコマンドに対応する所定の第１仮想記憶領域に、第１プール内の各第１実記憶領域のうち、未割当ての第１実記憶領域の中から選択される所定の第１実記憶領域を割り当てる第１仮想ボリューム制御部であって、所定の第１仮想記憶領域に所定の第１実記憶領域を割り当てた後で、第１プール内の第１記憶領域管理テーブルを更新し、次に、第１ライトコマンドに対応する第１ライトデータを所定の第１実記憶領域に記憶させる第１仮想ボリューム制御部と、第１ライトコマンドに対応する第２ライトコマンドを発行し、第１ライトデータに対応する第２ライトデータを第２記憶制御装置に送信することにより、第２ライトデータを第２記憶制御装置内に記憶させるコピー制御部と、を備えており、第２記憶制御装置は、複数の第２実記憶領域を有する第２プールを管理する第２実記憶領域管理部と、複数の第２仮想記憶領域から構成され、かつ、第１仮想ボリュームとコピーペアを形成する第２仮想ボリュームであって、第２ライトコマンドに応じて、第２仮想記憶領域に第２実記憶領域が割り当てられる第２仮想ボリュームと、各第２仮想記憶領域と各第２実記憶領域との対応関係を管理するための第２記憶領域管理テーブルであって、第２プール内に保存される第２記憶領域管理テーブルと、第２仮想ボリュームを構成する各第２仮想記憶領域のうち第２ライトコマンドに対応する所定の第２仮想記憶領域に、第２プール内の各第２実記憶領域のうち、未割当ての第２実記憶領域の中から選択される所定の第２実記憶領域を割り当てる第２仮想ボリューム制御部であって、所定の第２仮想記憶領域に所定の第２実記憶領域を割り当てた後で、第２プール内の第２記憶領域管理テーブルを更新し、次に、第２ライトデータを所定の第２実記憶領域に記憶させる第２仮想ボリューム制御部と、を備える。
【００２９】
第１３観点では、第１２観点において、さらに、第１仮想ボリューム制御部は、第１記憶領域管理テーブルを更新した後で、第１ライトデータが無効な第１ライトデータであるか否かを判定し、無効な第１ライトデータであると判定した場合には、所定の第１仮想記憶領域に割り当てられた所定の第１実記憶領域を解放して第１記憶領域管理テーブルを再び更新し、かつ、無効な第１ライトデータを破棄し、さらに、第２仮想ボリューム制御部は、第２記憶領域管理テーブルを更新した後で、第２ライトデータが無効な第２ライトデータであるか否かを判定し、無効な第２ライトデータであると判定した場合には、所定の第２仮想記憶領域に割り当てられた所定の第２実記憶領域を解放して第２記憶領域管理テーブルを再び更新し、かつ、無効な第２ライトデータを破棄する。
【００３０】
本発明の第１４観点に従うストレージシステムは、第１記憶制御装置と第２記憶制御装置とを有するストレージシステムであって、第１記憶制御装置は、複数の第１実記憶領域を有する第１プールを管理する第１実記憶領域管理部と、複数の第１仮想記憶領域から構成される第１仮想ボリュームであって、受信された第１ライトコマンドに応じて、第１仮想記憶領域に第１実記憶領域が割り当てられる第１仮想ボリュームと、各第１仮想記憶領域と各第１実記憶領域との対応関係を管理するための第１記憶領域管理テーブルであって、第１プール内に記憶される第１記憶領域管理テーブルと、第１仮想ボリュームを構成する各第１仮想記憶領域のうち第１ライトコマンドに対応する所定の第１仮想記憶領域に、第１プール内の各第１実記憶領域のうち、未割当ての第１実記憶領域の中から選択される所定の第１実記憶領域を割り当てる第１仮想ボリューム制御部であって、所定の第１仮想記憶領域に所定の第１実記憶領域を割り当てた後で、第１記憶領域管理テーブルを更新し、第１ライトコマンドに対応する第１ライトデータを所定の第１実記憶領域に記憶させる第１仮想ボリューム制御部と、第１プール内に記憶されたデータ及び第１記憶領域管理テーブルを、第２記憶制御装置に向けて送信し、第２記憶制御装置内の第２プールにコピーさせる第１コピー制御部と、を備えており、第２記憶制御装置は、複数の第２実記憶領域を有する第２プールを管理する第２実記憶領域管理部と、複数の第２仮想記憶領域から構成され、かつ、第１仮想ボリュームとコピーペアを形成する第２仮想ボリュームと、第１仮想ボリュームと第２仮想ボリュームとの対応関係を管理するための仮想ボリューム対応管理テーブルと、各第２仮想記憶領域と各第２実記憶領域との対応関係を管理するための第２記憶領域管理テーブルであって、第２プール内に記憶される第２記憶領域管理テーブルと、第１コピー制御部から受信する第１プール内のデータ及び第１記憶領域管理テーブルを第２プール内にそれぞれ記憶させる第２コピー制御部と、第２仮想ボリュームの構成を管理する第２仮想ボリューム制御部であって、第２プール内にコピーされた第１記憶領域管理テーブルが更新された場合には、第２プール内の第１記憶領域管理テーブルのコピーと、仮想ボリューム対応管理テーブルと、第２コピー制御部により管理されるコピー管理テーブルとを用いることにより、第２記憶領域管理テーブルを更新させる第２仮想ボリューム制御部と、を備える。
【００３１】
本発明の第１５観点に従う仮想ボリュームの制御方法は、ライトコマンドに応じて仮想記憶領域に実記憶領域が割り当てられる仮想ボリュームを制御する方法であって、ライトコマンドによって指定された仮想記憶領域に、実記憶領域が割り当てられているか否かを判定するステップと、指定された仮想記憶領域に実記憶領域が割り当てられていない場合、プール内から未割当ての実記憶領域を選択して、指定された仮想記憶領域に割り当てるステップと、仮想記憶領域と実記憶領域との対応関係を管理する記憶領域管理テーブルを更新するステップと、ライトコマンドに対応するライトデータを受信してキャッシュメモリに記憶させるステップと、キャッシュメモリに記憶されたライトデータが有効なライトデータであるか否かを判定するステップと、ライトデータが無効なライトデータであると判定された場合、指定された仮想記憶領域に割り当てられた実記憶領域を解放して未割当て状態に戻すステップと、記憶領域管理テーブルを再び更新させるステップと、キャッシュメモリに記憶された無効なライトデータを破棄するステップと、キャッシュメモリに記憶されたライトデータが有効なライトデータであると判定された場合、有効なライトデータを、指定された仮想記憶領域に割り当てられた実記憶領域に記憶させるステップと、をそれぞれ実行する。
【００３２】
本発明の手段、機能、ステップの全部または一部は、コンピュータシステムにより実行されるコンピュータプログラムとして構成可能な場合がある。本発明の構成の全部または一部がコンピュータプログラムから構成された場合、このコンピュータプログラムは、例えば、各種記憶媒体に固定して配布等することができ、あるいは、通信ネットワークを介して送信することもできる。
【発明を実施するための最良の形態】
【００３３】
図１は、本発明の実施形態の全体概要を示す構成説明図である。本実施形態では、後述のように、データの格納先の管理と実際の格納状態との整合性を維持し、さらに、記憶領域を効率的に使用する。
【００３４】
図１に示すストレージシステムは、例えば、第１記憶制御装置１と、ライトコマンド発行装置８と、第２記憶制御装置９とを備えて構成される。ライトコマンド発行装置８は、例えば、メインフレームコンピュータ、サーバコンピュータ、パーソナルコンピュータ等のホストコンピュータ、あるいは、別の記憶制御装置（第２記憶制御装置９を含む）やバックアップ装置５０（図１９参照）のように構成される。
【００３５】
ライトコマンド発行装置８と第１記憶制御装置１とは、例えば、ＦＣ＿ＳＡＮ（Fibre Channel_Storage Area Network）、ＩＰ＿ＳＡＮ（Internet Protocol_SAN）、ＬＡＮ（Local Area Network）等の通信ネットワークＣＮを介して接続される。
【００３６】
ライトコマンド発行装置８がメインフレームコンピュータの場合、例えば、ＦＩＣＯＮ（Fibre Connection：登録商標）、ＥＳＣＯＮ（Enterprise System Connection：登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture：登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture：登録商標）のような通信プロトコルが用いられる。ライトコマンド発行装置８がサーバコンピュータ、パーソナルコンピュータ、他の記憶制御装置等である場合、例えば、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、ＦＣＰ（Fibre Channel
Protocol）、ｉＳＣＳＩ（internet Small Computer System Interface）のような通信プロトコルが用いられる。
【００３７】
第１記憶制御装置１は、例えば、第１プール２と、第１仮想ボリューム３と、第１プール管理部４と、第１記憶領域管理テーブル５と、第１仮想ボリューム制御部６と、キャッシュメモリ７とを備える。図中及び以下の説明では、便宜上、記憶領域管理テーブルを「ＤＭＴ（Dynamic Mapping Table）」と示す。
【００３８】
第１プール２は、複数の記憶デバイスがそれぞれ有する物理的記憶領域（実記憶領域）を備えている。記憶デバイスとしては、例えば、ハードディスクデバイス、フラッシュメモリデバイス、光磁気ディスク、光ディスク、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（MagnetoresistiveRandom Access Memory）、相変化メモリ（Ovonic Unified
Memory）、ＲＲＡＭ（Resistance
RAM）」等の、種々の型記憶デバイスを利用可能である。記憶デバイスとしてハードディスクデバイスを用いる場合、例えば、ＦＣ（Fibre Channel）ディスク、ＳＣＳＩ（Small Computer System Interface）ディスク、ＳＡＴＡディスク、ＡＴＡ（AT Attachment）ディスク、ＳＡＳ（Serial Attached SCSI）ディスク等を用いることができる。
【００３９】
仮想ボリューム３は、仮想的に生成される論理ボリュームである。ライトコマンド発行装置８から発行されるライトコマンドに応じて、仮想ボリューム３を構成する仮想記憶領域に、第１プール２内の実記憶領域が割り当てられる。仮想ボリューム３を書込先とするライトデータは、キャッシュメモリ７に一時的に記憶される。キャッシュメモリ７に記憶されたライトデータは、適当なタイミングで、記憶デバイスに書き込まれる。キャッシュメモリ７のデータを記憶デバイスに書き込む処理をデステージ処理（デステージング）と呼び、記憶デバイス内のデータをキャッシュメモリ７に記憶させる処理をステージ処理（ステージング）と呼ぶ。
【００４０】
第１プール管理部４は、「実記憶領域管理部」に該当する。第１プール管理部４は、第１プール２内の各実記憶領域を管理する。即ち、第１プール管理部４は、どの実記憶領域が使用中であり、どの実記憶領域が未使用であるか等を管理する。
【００４１】
第１ＤＭＴ５は、仮想ボリューム３の構成を管理するための情報である。第１ＤＭＴ５は、仮想ボリューム内の仮想記憶領域がどの実記憶領域に対応付けられているか等を管理する。従って、第１ＤＭＴ５を用いることにより、仮想ボリューム３内の仮想記憶領域を書込先として指定するライトデータを、その指定された仮想記憶領域に対応する実記憶領域に格納することができる。
【００４２】
第１仮想ボリューム制御部６は、仮想ボリューム３を制御する。第１仮想ボリューム制御部６は、受信したライトコマンドに応じて、仮想ボリューム３に実記憶領域を割当て、受信したライトデータを実記憶領域に書き込ませる。
【００４３】
第２記憶制御装置９は、第１記憶制御装置１とは別の記憶制御装置である。第２記憶制御装置９は、例えば、第２プール９Ａと、第２仮想ボリューム９Ｂと、第２プール管理部９Ｃと、第２仮想ボリューム制御部９Ｄと、第２ＤＭＴ９Ｅとを備える。
【００４４】
後述の実施例で明らかとなるように、第２記憶制御装置９は、複数の用途に用いることができる。第１の用途は、第２記憶制御装置９を、第１記憶制御装置に実記憶領域を提供するための提供元の記憶制御装置として使用するものである。即ち、第１記憶制御装置１は、第２プール９Ａの有する実記憶領域を第１記憶制御装置１内に取り込んで、それがあたかも第１記憶制御装置１の実記憶領域であるかのように使用する。例えば、第２プール９Ａ内の実記憶領域へアクセスするための情報を、第１記憶制御装置１内で管理することにより、第１記憶制御装置１は、第２プール９Ａ内の実記憶領域にデータを入出力することができる。
【００４５】
第１の用途の場合、第２記憶制御装置９は、第１記憶制御装置１に従属する記憶制御装置となる。第１記憶制御装置１が必要とする実記憶領域は、第２記憶制御装置９によって提供される。従って、第１記憶制御装置１は、第１プール２を備える必要はない。第１の用途では、第１記憶制御装置１は、第２記憶制御装置を仮想化する仮想化装置、または、仮想化機能を備えるスイッチ等のように構成することができる。
【００４６】
第２の用途は、第２記憶制御装置９を、第１記憶制御装置１と同等の記憶制御装置として扱い、第１記憶制御装置１のバックアップに使用するものである。この用途では、例えば、第１記憶制御装置１はプライマリ記憶制御装置となり、第２記憶制御装置９はセカンダリ記憶制御装置となる。
【００４７】
第２の用途では、第１仮想ボリューム３と第２仮想ボリューム９Ｂとはコピーペアを形成し、第２仮想ボリューム９Ｂには、第１仮想ボリューム３の記憶内容と同一の記憶内容がコピーされる。これにより、第１記憶制御装置１に何らかの障害が生じた場合でも、ホストは、第２記憶制御装置９を用いて業務処理を継続することができる。
【００４８】
第３の用途は、第２記憶制御装置９を第１記憶制御装置１のバックアップに使用するものであるが、通常時は仮想ボリューム９Ｂを形成しない。即ち、第２記憶制御装置９は、第１仮想ボリューム３に記憶されたデータのコピーと、第２仮想ボリューム９Ｂを生成するための第２ＤＭＴ９Ｅとを保持しており、第１記憶制御装置１に障害が発生した場合に、第２仮想ボリューム９Ｂを生成する。
【００４９】
第４の用途は、第２記憶制御装置９を、バックアップデータを記憶するバックアップ装置として使用する。第４の用途では、第１仮想ボリューム３の所定時点における記憶内容を、第２仮想ボリューム９Ｂに予めコピーしておく。第１記憶制御装置１が障害から復旧した場合に、第２仮想ボリューム９Ｂから第１仮想ボリューム３に初期コピーを行うことにより、第１仮想ボリューム３の記憶内容を所定時点の記憶内容に復元できる。なお、上述した用途以外の用途も考えられるであろう。また、上述した用途が複数組み合わされる場合もある。
【００５０】
本実施形態によるストレージシステムの動作を説明する。第１仮想ボリューム制御部６は、ライトコマンド発行装置８から発行されたライトコマンドを受信すると（Ｓ１）、ライトコマンドにより指定された仮想記憶領域に、第１プール２（または第２プール９Ａ）にプールされている、未割当ての（未使用の）実記憶領域を割り当てる（Ｓ２）。第１仮想ボリューム制御部６は、仮想記憶領域に実記憶領域を割り当てた後（Ｓ２）、第１プール２内の第１ＤＭＴ５を更新する（Ｓ３）。なお、既に実記憶領域が割り当てられている仮想記憶領域を書き換えるためのライトコマンドである場合、実記憶領域は割り当てられない。
【００５１】
ライトコマンド発行装置８から送信されたライトデータは、第１記憶制御装置１により受信され、キャッシュメモリ７に記憶される。第１仮想ボリューム制御部６は、キャッシュメモリ７に記憶されたライトデータを分析し、そのライトデータが有効であるか否かを判定する（Ｓ４）。
【００５２】
有効なライトデータとは、論理アドレス等を除いたデータ本体に”０”以外が含まれているライトデータであり、無効なライトデータとは、データ本体が全て”０”から構成されるデータである。
【００５３】
有効なライトデータの場合、第１仮想ボリューム制御部６は、適当なタイミングを見計らって、キャッシュメモリ７に記憶されているライトデータを、そのライトデータの格納先として対応付けられた実記憶領域に記憶させる（Ｓ７）。第１記憶制御装置１と第２記憶制御装置９とがクラスタを構成していたり、ディザスタリカバリシステムを構成しているような場合、第１仮想ボリューム制御部６は、ライトデータを第２記憶制御装置９に送信してコピーさせることもできる（Ｓ８）。
【００５４】
無効なライトデータの場合、第１仮想ボリューム制御部６は、Ｓ２で割り当てた実記憶領域を解放し、未割当て状態に戻す（Ｓ５）。さらに、第１仮想ボリューム制御部６は、実記憶領域の解放を記憶させるべく、第１ＤＭＴ５を再び更新する（Ｓ６）。さらに、第１仮想ボリューム制御部６は、キャッシュメモリ７に記憶されている無効なライトデータを破棄する（Ｓ６）。
【００５５】
キャッシュメモリ７上のライトデータを破棄するとは、そのライトデータを消去する場合に限らず、そのライトデータの記憶されているキャッシュ領域の再利用を許可する場合も含む。通常の場合、キャッシュメモリ７に記憶されているデータは、デステージ処理が完了するまで保護され、そのキャッシュ領域への上書きは制限される。
【００５６】
デステージ処理が完了した場合、そのキャッシュ領域を未使用領域と同様に使用することができる。従って、無効なライトデータの場合、そのライトデータを記憶するキャッシュ領域の管理ステータスを、デステージ処理が完了した状態に設定することにより、別の新たなライトデータの受け入れるために再使用することができる。
【００５７】
このように構成される本実施形態では、以下の効果を奏する。本実施形態では、仮想記憶領域に実記憶領域を割り当てた後で（Ｓ２）、第１ＤＭＴ５を更新し（Ｓ３）、ライトデータのデステージ処理を実行する（Ｓ７）。従って、常に、第１ＤＭＴ５の記憶内容を最新状態に保つことができ、ライトデータの記憶状態とＤＭＴ５の記憶内容とを整合させることができる。
【００５８】
もしも、何らかの原因でライトデータのデステージ処理（Ｓ７）が失敗した場合でも、ライトデータはデステージ処理が完了するまでキャッシュメモリ７上で保護されているため、ライトデータは消失しない。そして、別のタイミングで実行されるデステージ処理によって、ライトデータは実記憶領域に書き込まれる。ライトデータのデステージ処理が完了すると、ライトデータの実際の記憶状態とＤＭＴ５の記憶内容とが一致する。従って、古い内容のＤＭＴを用いることによって、既に割り当てられている実記憶領域を別のライトコマンドに割り当てるという事態の発生は防止される。これにより、記憶制御装置の信頼性が向上し、ユーザの使い勝手も高まる。
【００５９】
本実施形態では、ライトデータが有効か否かを判別し（Ｓ４）、無効なライトデータであると判定された場合は、割り当てた実記憶領域を解放し（Ｓ５）、無効なライトデータを破棄する（Ｓ６）。従って、未使用の仮想記憶領域に実記憶領域が割り当てられるのを防止して、実記憶領域を効率的に利用できる。
【００６０】
例えば、第２記憶制御装置９が、第１仮想ボリューム３全体のバックアップデータを保持しており、第２記憶制御装置９の有するバックアップデータを第１記憶制御装置１にリストアする場合を例に挙げる。
【００６１】
第２記憶制御装置９の有するバックアップデータは、第１仮想ボリューム３の全仮想容量のデータであり、それが使用されているか否かを問わず、全ての仮想記憶領域に対応している。従って、第２記憶制御装置９から第１記憶制御装置１にバックアップデータを転送すると、第１仮想ボリューム制御部６は、未使用の仮想記憶領域に対しても、実記憶領域を割り当てる。これにより、実記憶領域の使用効率が低下し、仮想ボリューム３の利点が失われる。
【００６２】
これに対し、本実施形態では、受信したライトデータの有効性を判別し、有効なライトデータの場合にのみ実記憶領域を割当て、無効なライトデータには実記憶領域を割り当てない。従って、実記憶領域を効率的に使用することができる。
【００６３】
本実施形態では、ＤＭＴ５とライトデータの両方を、同一のプール２（またはプール９Ａ）内に保存するため、メモリ上にのみＤＭＴ５を保存する構成に比べて、ＤＭＴ５をより強固に保護することができ、記憶制御装置の信頼性を向上させることができる。
【００６４】
上述の実施形態は、本発明の理解に役立つように本発明の概要を示しており、本発明の範囲を図１に示す例に制限するものではない。以下、本実施形態を詳細に説明する。
【実施例１】
【００６５】
図２は、本実施例によるストレージシステムの全体概要を示す説明図である。本実施例では、第２記憶制御装置２０の有する実記憶領域を第１記憶制御装置１０が取り込んで使用する場合を説明する。
【００６６】
第１記憶制御装置１０から見て、第２記憶制御装置２０は第１記憶制御装置１０の外部に存在する記憶制御装置である。従って、第２記憶制御装置２０を外部記憶制御装置と呼ぶこともできる。本実施例では、第１記憶制御装置１０が、第２記憶制御装置２０の有する実記憶領域を使用して仮想ボリュームを生成する。ホスト３０からは、第１記憶制御装置１０内の仮想ボリュームにデータを読み書きしているように見えるが、データの実際の格納先は第２記憶制御装置２０内の実記憶領域である。このように、第１記憶制御装置１０が、その外部に存在する第２記憶制御装置２０の有する実記憶領域を利用する構成を、本明細書では、「外部接続」と呼ぶ。第１記憶制御装置１０は、外部接続構成における接続元の記憶制御装置であり、第２記憶制御装置２０は、外部接続構成における接続先の記憶制御装置である。
【００６７】
図１との対応関係について説明する。第１記憶制御装置１０は図１中の第１記憶制御装置１に、第２記憶制御装置２０は図１中の第２記憶制御装置９に、ホスト３０は図１中のライトコマンド発行装置８に、第１プール１２４は図１中の第１プール２に、第２プール２２４は図１中の第２プール９Ａに、それぞれ対応する。第１コントローラ１１０は、図１中の第１仮想ボリューム制御部６の機能を実現し、第２コントローラ２１０は、図１中の第２仮想ボリューム制御部９Ｄの機能を実現する。
【００６８】
より詳しくは、図３に示す仮想ボリューム制御部１３２は、図１に示す仮想ボリューム制御部６に対応し、図３に示すボリューム管理部１３１，２３１は、図１中のプール管理部４，９Ｃに対応する。図３に示す仮想ボリューム管理テーブル１３５は、図１中のＤＭＴ５に対応する。図３に示す仮想ボリューム１４０は、図１中の仮想ボリューム３に対応する。
【００６９】
接続構成を説明する。ホスト３０と第１記憶制御装置１０とは、例えば、ＦＣ−ＳＡＮやＩＰネットワークのような通信ネットワークＣＮ１０を介して、双方向通信可能に接続される。第１記憶制御装置１０と第２記憶制御装置２０も、ＦＣ−ＳＡＮやＩＰ−ＳＡＮのような通信ネットワークＣＮ２０を介して、双方向通信可能に接続される。管理サーバ４０と第１記憶制御装置１０とは、例えば、ＬＡＮ（Local Area Network）のような通信ネットワークＣＮ３０を介して、双方向通信に接続される。
【００７０】
なお、上述した接続構成は一例であって、本発明はそれに限定されない。例えば、通信ネットワークＣＮ１０を用いて、第１記憶制御装置１０，第２記憶制御装置２０，ホスト３０及び管理サーバ４０をそれぞれ接続する構成でもよい。しかし、ホスト３０との通信に使用するＩ／Ｏ（Input/Output）用の通信ネットワークＣＮ１０と、各記憶制御装置１０，２０間でのデータ転送等に使用する装置間ネットワークＣＮ２０とを切り離すことにより、ホスト３０やＩ／Ｏ用ネットワークＣＮ１０に負担をかけることなく、各記憶制御装置１０，２０間でデータ転送を行うことができる。
【００７１】
ホスト３０を説明する。ホスト３０は、例えば、メインフレームコンピュータ、サーバコンピュータ、パーソナルコンピュータ等のようなコンピュータ装置として構成されており、プロセッサやメモリ等を備えている。
【００７２】
ホスト３０は、アプリケーションプログラム３１と通信制御部３２を備える。アプリケーションプログラム３１は、第１記憶制御装置１０内の仮想ボリューム１４０にアクセスして、データを読み書きするソフトウェア製品である。通信制御部３２は、記憶制御装置１０との間で通信を行うためのものである。
【００７３】
管理サーバ４０は、第１記憶制御装置１０の各種状態を管理したり、第１記憶制御装置１０の構成を設定等するためのコンピュータ装置である。管理サーバ４０は、サービスプロセッサ１１６を介して、通信経路やボリュームの設定を行うことができる。
【００７４】
第１記憶制御装置１０の構成を説明する。第１記憶制御装置１０は、例えば、第１コントローラ１１０と、第１記憶部１２０とを備える。なお、第１記憶制御装置１０は、第２記憶制御装置２０の有する実記憶領域を取り込んで使用することができるため、第１記憶制御装置１０は必ずしも第１記憶部１２０を備える必要はない。
【００７５】
第１コントローラ１１０は、第１記憶制御装置１０の全体動作を制御する。第１コントローラ１１０は、例えば、チャネルアダプタ１１１と、ディスクアダプタ１１２と、キャッシュメモリ１１３と、共有メモリ１１４と、接続制御部１１５と、サービスプロセッサ１１６とを備える。以下の説明では、チャネルアダプタをＣＨＡと、ディスクアダプタをＤＫＡと呼ぶことにする。
【００７６】
ＣＨＡ１１１は、ホスト３０や第２記憶制御装置２０のような外部装置と通信するための制御基板である。各ＣＨＡ１１１は、それぞれ少なくとも一つ以上の通信ポートを備えている。各通信ポートには、ＷＷＮ（World Wide Name）やＩＰアドレスのようなポート識別情報が設定されている。
【００７７】
図２の例では、一方のＣＨＡ１１１は、ホスト３０に接続され、他方のＣＨＡ１１１は、第２記憶制御装置２０に接続されている。一方のＣＨＡ１１１は、ホスト３０から発行されたコマンドを受領したり、ホスト３０にコマンドの処理結果等を送信する。他方のＣＨＡ１１１は、外部接続用のＣＨＡである。他方のＣＨＡ１１１は、第２記憶制御装置２０にコマンドを発行したり、第２記憶制御装置２０からコマンドの処理結果等を受信したりする。
【００７８】
ＤＫＡ１１２は、第１記憶部１２０内の各記憶デバイス１２１と通信を行うための制御基板である。ＤＫＡ１１２は、例えば、論理アドレスと物理アドレスとの変換処理、ＲＡＩＤ構成に必要な処理等を実行する。
【００７９】
キャッシュメモリ１１３は、ホスト３０や第２記憶制御装置２０から受信したデータを記憶するためのメモリである。キャッシュメモリ１１３の各キャッシュ領域は、例えば、フリー状態、クリーン状態、ダーティ状態のいずれかに設定される。フリー状態とは、そのキャッシュ領域が未使用である状態である。クリーン状態とは、デステージ処理の完了したデータが記憶されている状態である。ダーティ状態とは、そのキャッシュ領域に記憶されているデータのデステージ処理が完了していない状態である。
【００８０】
共有メモリ１１４には、記憶制御装置１０の動作を制御するために使用される各種の制御情報や管理情報が記憶される。接続制御部１１５は、例えば、クロスバスイッチ等のように構成され、各ＣＨＡ１１１及び各ＤＫＡ１１２を、キャッシュメモリ１１３及び共有メモリ１１４にそれぞれ接続させる。
【００８１】
サービスプロセッサ１１６は、内部ネットワークを介して各ＣＨＡ１１１に接続されており、各ＣＨＡ１１１を介して、記憶制御装置１０内の各種状態を収集する。各種状態としては、例えば、キャッシュメモリの使用率等を挙げることができる。
【００８２】
第１記憶部１２０は、複数の記憶デバイス１２１を備えている。記憶デバイス１２１としては、例えば、ハードディスクデバイスやフラッシュメモリデバイス等の種々の記憶デバイスを使用可能である。
【００８３】
記憶デバイス１２１の有する物理的記憶領域をグループ化することにより、パリティグループ１２２を形成することができる。パリティグループ１２２は、後述する仮想論理デバイス（ＶＤＥＶ）でもある。パリティグループ１２２の記憶領域には、少なくとも一つ以上の論理デバイス１２３を設けることができる。論理デバイス（図中、ＬＤＥＶ）１２３は、ＬＵＮ（Logical Unit Number）に対応付けられて、ホスト３０に提供される。
【００８４】
論理デバイス１２３は、第１プール１２４に収容されて管理される。便宜上、第１プール１２４を１個のみ図示するが、複数のプール１２４を設けることができる。
【００８５】
以下の説明では、論理デバイスを論理ボリュームと呼ぶ場合がある。また、記憶デバイス１２１の物理的記憶領域に基づいて生成される論理ボリュームを、実ボリュームと呼ぶことができる。これに対し、後述の仮想ボリューム１４０は、一つまたは複数の実ボリューム内の記憶領域（実記憶領域）を適宜寄せ集めて形成される。なお、第２記憶制御装置２０の有する実ボリュームは、外部ボリュームと呼ぶこともできる。
【００８６】
第２記憶制御装置２０は、例えば、第２コントローラ２１０と、第２記憶部２２０とを備えて構成される。第２コントローラ２１０は、例えば、第１コントローラ１１０と同様に、外部装置（ここでは、第１記憶制御装置１０が外部装置となる。）と通信を行う機能と、第２記憶部２２０と通信を行う機能と、外部装置から受信したコマンドを処理し、その処理結果を外部装置に送信する機能とを備える。
【００８７】
第２記憶部２２０は、第１記憶部１２０と同様に、複数の記憶デバイス２２１を備えている。パリティグループ２２２には、少なくとも一つ以上の論理デバイス２２３を設けることができる。各論理デバイス２２３は、第２プール２２４に収容されている。
【００８８】
図３は、機能構成に着目したブロックである。図３等では、管理サーバ４０を省略している。第１コントローラ１１０は、例えば、コマンド処理部１３０と、ボリューム管理部１３１と、仮想ボリューム制御部１３２の各機能を実現する。第１コントローラ１１０は、例えば、論理ボリューム管理テーブル１３３と、外部ボリューム管理テーブル１３４と、仮想ボリューム管理テーブル１３５とを使用する。第１コントローラ１１０は、仮想ボリューム１４０を生成して、ホスト３０に提供する。
【００８９】
コマンド処理部１３０は、ホスト３０から受信したコマンドを処理し、その処理結果をホスト３０に送信する。さらに、コマンド処理部１３０は、第２記憶制御装置２０に向けてコマンドを送信し、その処理結果を第２記憶制御装置２０から受信する。
【００９０】
ボリューム管理部１３１は、「実記憶領域管理部」に該当する。ボリューム管理部１３１は、論理ボリューム管理テーブル１３３及び外部ボリューム管理テーブル１３４を用いることにより、第１記憶制御装置１０の内部及び外部に存在する実ボリュームを管理することができる。各テーブル１３３，１３４については後述する。
【００９１】
仮想ボリューム制御部１３２は、「記憶領域管理テーブル」としての仮想ボリューム管理テーブル１３５を用いることにより、仮想ボリューム１４０を生成し、この仮想ボリューム１４０をホスト３０に提供する。以下の説明では、仮想ボリューム管理テーブルをＤＭＴと略する場合がある。このテーブル１３５の詳細は後述する。
【００９２】
第２コントローラ２１０は、コマンド処理部２３０と、ボリューム管理部２３１とをそれぞれ実現する。コマンド処理部２３０は、第１コントローラ１１０から受信したコマンドを処理し、その処理結果を第１コントローラ１１０に送信する。ボリューム管理部２３１は、論理ボリューム管理テーブル２３３を用いることにより、第２プール２２４内の実記憶領域を管理する。
【００９３】
第２コントローラ２１０には、第１コントローラ１１０内のＤＭＴ１３５のコピー１３５Ａを保持されることもできる。ＤＭＴ１３５のコピー１３５Ａは、第２プール２２４内に記憶される。もしも万が一、第１記憶制御装置１０内のＤＭＴ１３５が破損して、修復不能となったような場合、第１コントローラ１１０は、第２記憶制御装置２０内のＤＭＴ１３５のコピー１３５Ａを読み出して使用する。
【００９４】
図４は、論理ボリューム管理テーブル１３３の説明図である。論理ボリューム管理テーブル１３３は、プール内の実記憶領域を管理するためのテーブルである。このテーブル１３３は、例えば、論理デバイス番号（ＬＤＥＶ＃）１３３１と、ボリューム種別１３３２と、仮想論理デバイス番号（ＶＤＥＶ＃）１３３３と、開始アドレス１３３４と、サイズ１３３５とを対応付けて管理する。
【００９５】
論理デバイス番号１３３１とは、各論理デバイス１２３をそれぞれ識別するための情報である。ボリューム種別１３３２とは、各論理デバイス１２３が内部ボリュームであるか外部ボリュームであるかの区別を示す情報である。内部ボリュームとは、第１記憶制御装置１０内に存在する実ボリュームである。外部ボリュームとは、第２記憶制御装置２０内に存在する実ボリュームである。
【００９６】
仮想論理デバイス番号１３３３とは、仮想論理デバイス（パリティグループ）１２２を識別するための情報である。開始アドレス１３３４とは、仮想論理デバイス内に設定された論理デバイス１２３の開始アドレスを示す。サイズ１３３５とは、論理デバイス１２３のサイズを示す。
【００９７】
第１コントローラ１１０は、論理ボリューム管理テーブル１３３を用いることにより、各論理デバイス（実ボリューム）が、どの仮想論理デバイス１２２のどこに設定されており、かつ、その論理デバイスが第１記憶制御装置１０の内外いずれに存在するのかを知ることができる。
【００９８】
なお、図４を含む以下の各図に示す値は、それぞれ参考的な値であり、本発明の範囲を制限するものではない。各図面内の参考値は、それぞれの図面において使用され、別の図面に影響を与えない。
【００９９】
図５は、外部ボリューム管理テーブル１３４の説明図である。外部ボリューム管理テーブル１３４は、第２記憶制御装置２０の第２プール２２４内に存在する実ボリューム２２３にアクセスするために用いられる。
【０１００】
外部ボリューム管理テーブル１３４は、例えば、仮想論理デバイス番号１３４１と、接続ポート１３４２と、外部ストレージ情報１３４３とを対応付けて管理する。仮想論理デバイス番号１３４１とは、第１記憶制御装置１０内の仮想論理デバイス１２２を識別するための情報である。接続ポート１３４２とは、第２記憶制御装置２０内の実ボリューム２２３にアクセスするために使用される通信ポートを特定する情報である。
【０１０１】
外部ストレージ情報１３４３とは、第２記憶制御装置２０内の実ボリューム２２３にアクセスするための情報である。外部ストレージ情報１３４３は、例えば、ＬＵＮ＿Ｃ１、ベンダ名Ｃ２、装置名Ｃ３及びボリュームＩＤ＿Ｃ４を備える。
【０１０２】
ＬＵＮ＿Ｃ１は、第２記憶制御装置２０内の実ボリューム２２３に設定されたＬＵＮを示す情報である。ベンダ名Ｃ２は、第２記憶制御装置２０の製造元を示す。装置名Ｃ３は、第２記憶制御装置２０を識別する情報である。ボリュームＩＤ＿Ｃ４は、第２記憶制御装置２０内の実ボリューム２２３を特定する情報である。ボリュームＩＤは、ボリューム番号と呼び変えてもよい。
【０１０３】
第１コントローラ１１０は、外部ボリューム管理テーブル１３４を用いることにより、第２記憶制御装置２０内の実ボリューム２２３にアクセスすることができる。なお、論理ボリューム管理テーブル１３３と外部ボリューム管理テーブル１３４とを結合させて一つのテーブルにまとめることもできる。
【０１０４】
図６は、仮想ボリューム管理テーブル１３５を示す説明図である。仮想ボリューム管理テーブル１３５は、仮想ボリューム１４０の構成を管理するものである。仮想ボリューム管理テーブル１３５は、例えば、仮想ボリューム番号１３５１と、スロット番号１３５２と、割当てフラグ１３５３と、プール番号１３５４と、スロット番号１３５５とを対応付けて管理する。
【０１０５】
仮想ボリューム番号１３５１は、仮想ボリューム１４０を識別する情報である。本実施例では、便宜上一つの仮想ボリューム１４０のみを示すが、複数の仮想ボリューム１４０を生成することができる。スロット番号１３５２とは、仮想ボリューム１４０を構成する各記憶領域（仮想記憶領域）をそれぞれ識別する情報である。
【０１０６】
本実施例では、仮想ボリューム及び論理ボリュームの構成単位をスロットと呼ぶ。即ち、各ボリューム１４０は、複数のスロットの集合体としてそれぞれ構成される。構成単位は、セグメントでもよい。以下の説明では、仮想ボリューム１４０のスロットを仮想スロットと、実ボリュームのスロットを実スロットと、呼ぶ場合がある。
【０１０７】
割当てフラグ１３５３は、仮想スロットに実スロットが割り当てられているか否かを識別するための情報である。仮想スロットに実スロットが割り当てられている場合、「割当済み」と設定される。仮想スロットに実スロットが割り当てられていない場合、「未割当て」と設定される。なお、図中では、便宜上、割当済みを「済」と、未割当てを「未」とそれぞれ略記する。
【０１０８】
プール番号１３５４は、仮想スロットに割り当てられた実スロットが存在するプールを特定する情報である。スロット番号１３５５は、実ボリュームのスロット、即ち、実スロットを特定する情報である。
【０１０９】
第１コントローラ１１０は、仮想ボリューム管理テーブル１３５を用いることにより、仮想ボリューム１４０のへの実スロットの割当て状況を把握することができる。
【０１１０】
図７〜図９に基づいて本実施例によるストレージシステムの動作を説明する。なお、以下に示す各フローチャートは、本発明の理解及び実施に必要な程度で各処理の概要を示しており、実際のコンピュータプログラムと相違する場合がある。いわゆる当業者であれば、図示されたステップの変更や新規ステップの追加、既存ステップの削除等を行うことができるであろう。
【０１１１】
ホスト３０は、仮想ボリューム１４０にデータを書き込むべく、ライトコマンドを発行する（Ｓ１０）。第１コントローラ１１０は、ライトコマンドを受領する（Ｓ１１）。第１コントローラ１１０は、ＤＭＴ１３５を参照し、書込先として指定されたアドレス（仮想スロット番号）に実スロットが割当済みであるか否かを判定する（Ｓ１２）。
【０１１２】
仮想スロットに実スロットが割り当てられていない場合（S12:NO）、第１コントローラ１１０は、プール内の未使用の実スロットを選択して、その選択した実スロットを書込先の仮想スロットに割当て（Ｓ１３）、ＤＭＴ１３５を更新する（Ｓ１４）。
【０１１３】
第１コントローラ１１０は、第２記憶制御装置２０内に保持されている、ＤＭＴ１３５のコピー１３５Ａを更新させるべく、更新要求を発行する（Ｓ１５）。第２コントローラ２１０は、第１コントローラ１１０から更新要求を受領すると（Ｓ１６）、第２プール２２４内に記憶されているＤＭＴ１３５のコピー１３５Ａを更新し（Ｓ１７）、更新が完了した旨を第１コントローラ１１０に報告する（Ｓ１８）。第１コントローラ１１０は、第２コントローラ２１０からの完了報告を受領し（Ｓ１９）、ＤＭＴ１３５のコピー１３５Ａが更新されたことを確認する。
【０１１４】
ホスト３０から指定された書込先スロットに実スロットが割り当てられている場合（S12:YES）、上述のＳ１３等はスキップされてＳ２０に移る。
【０１１５】
第１コントローラ１１０は、ライトデータを受け入れるべく、キャッシュメモリ１１３の領域を確保する（Ｓ２０）。Ｓ１１で受信したライトコマンドには、これから送信されるライトデータのサイズが示されている。第１コントローラ１１０は、キャッシュメモリ１１３の各領域のうち、フリー状態の領域を優先して選択する。フリー状態の領域が存在しない場合やフリー状態の領域だけでは足りない場合、第１コントローラ１１０は、クリーン状態の領域を選択する。クリーン状態の領域が足りない場合、第１コントローラ１１０は、ホスト３０にビジーを応答する。
【０１１６】
第１コントローラ１１０は、ライトデータを受信するためのキャッシュ領域を確保すると（Ｓ２０）、ホスト３０に通知する（Ｓ２１）。ホスト３０は、第１コントローラ１１０からの通知を受信し（Ｓ２２）、ライトデータを送信する（Ｓ２３）。
【０１１７】
第１コントローラ１１０は、ホスト３０から送信されたライトデータを受信し（Ｓ２４）、Ｓ２０で確保したキャッシュ領域に記憶させる（Ｓ２５）。第１コントローラ１１０は、ライトデータをキャッシュメモリ１１３に記憶させた時点で、ホスト３０にライトコマンドの処理が完了した旨を通知する（Ｓ２６）。この通知によって、ホスト３０は、ライトコマンドの処理が正常に完了したことを確認する（Ｓ２７）。
【０１１８】
その後、第１コントローラ１１０は、所定のタイミングを見計らって、デステージ処理（Ｓ２８）及び第２記憶制御装置２０への書込み処理（Ｓ２９）を実行する。Ｓ１３で仮想ボリューム１４０に割り当てられた実スロットが、第１プール１２４内に存在する場合、デステージ処理が行われる（Ｓ２８）。Ｓ１３で仮想ボリューム１４０に割り当てられた実スロットが、第２プール２２４内に存在する場合、第２記憶制御装置２０への書込み処理（Ｓ２９）が行われる。
【０１１９】
なお、後述の実施例に示すように、第１記憶制御装置１０内の仮想ボリューム１４０と第２記憶制御装置２０内の仮想ボリューム２４０（図１０参照）とがコピーペアを形成する場合、デステージ処理（Ｓ２８）及び第２記憶制御装置２０への書込み処理（Ｓ２９）の両方が実行される。
【０１２０】
図７で述べたように、第１コントローラ１１０は、ホスト３０から発行されたライトコマンドが新たな仮想スロットへの書込みを要求する場合（S12:NO）、その新たな仮想スロットに実スロットを割り当てる（Ｓ１３）。ホスト３０から発行されたライトコマンドが既存データの更新を要求する場合（S12:YES）、第１コントローラ１１０は、その仮想スロットに実スロットを割り当てない。
【０１２１】
第１コントローラ１１０は、書込先として指定された仮想スロットに実スロットを割り当てた場合、ライトデータをデステージ等（Ｓ２８，Ｓ２９）するよりも前に、ＤＭＴ１３５を更新する（Ｓ１４）。さらに、第１コントローラ１１０は、ライトデータをデステージ等する前に、第２記憶制御装置２０内のＤＭＴ１３５のコピー１３５Ａの更新を要求する（Ｓ１５）。
【０１２２】
つまり、本実施例では、第１記憶制御装置１０内のＤＭＴ１３５及び第２記憶制御装置２０内のＤＭＴ１３５のコピー１３５Ａの両方をそれぞれ更新した後で、ライトデータを実スロットに保存する（Ｓ２８，Ｓ２９）。これにより、ＤＭＴ１３５，１３５Ａの状態を、常に最新状態に保つことができる。
【０１２３】
なお、ＤＭＴ１３５のコピー１３５Ａの更新に関する処理（Ｓ１５〜Ｓ１９）は、ライトデータの受信に関する処理（Ｓ２０〜Ｓ２６）と並行して実行できる。従って、第１コントローラ１１０は、コピー１３５Ａの更新完了を確認するよりも前に、キャッシュ領域を確保してホスト３０からライトデータを受信することができる。
【０１２４】
但し、上述のように、ホスト３０から受信したライトデータがプール内の実スロットに書き込まれるタイミングは、ＤＭＴ１３５及びコピー１３５Ａの更新されるタイミングよりも後である。本実施例及び以下の各実施例では、プール内のデータの保存状態よりも、ＤＭＴの更新状態の方が新しくなるように制御される。
【０１２５】
デステージ処理（Ｓ２８）では、第１コントローラ１１０は、仮想スロットに割り当てられた実スロットに、ライトデータを書き込む。即ち、第１コントローラ１１０は、仮想スロットに割り当てられた実スロットを有する記憶デバイスに、ライトデータを書き込んで記憶させる。
【０１２６】
図８は、図７中の第２記憶制御装置２０への書込み処理（Ｓ２９）の詳細を示すフローチャートである。第１コントローラ１１０は、ＤＭＴ１３５及び外部ボリューム管理テーブル１３４を用いることにより、第２コントローラ２１０に向けてライトコマンドを発行する（Ｓ３０）。
【０１２７】
第２コントローラ２１０は、第１コントローラ１１０からのライトコマンドを受信すると（Ｓ３１）、第１コントローラ１１０から送信されるライトデータを受け入れるべく、キャッシュ領域を確保する（Ｓ３２）。第２コントローラ２１０は、キャッシュ領域を確保すると、第１コントローラ１１０に通知する（Ｓ３３）。
【０１２８】
第１コントローラ１１０は、第２コントローラ２１０からの通知を受信すると（Ｓ３４）、ライトデータを第２コントローラ２１０に向けて送信する（Ｓ３５）。第２コントローラ２１０は、第１コントローラ１１０から送信されたライトデータを受信し（Ｓ３６）、このライトデータをＳ３２で確保したキャッシュ領域に記憶させる（Ｓ３７）。
【０１２９】
第２コントローラ２１０は、ライトデータをキャッシュ領域に記憶させると、ライトコマンドの処理が完了した旨を第１コントローラ１１０に報告する（Ｓ３８）。第１コントローラ１１０は、第２コントローラ２１０からの完了報告によって、Ｓ３０で発行したライトコマンドの処理が正常に完了したことを確認する（Ｓ３９）。
【０１３０】
その後、所定のタイミングを見計らって、第２コントローラ２１０は、Ｓ３７でキャッシュ領域に記憶されたライトデータを、記憶デバイス２２１に書き込む（Ｓ４０）。なお、第２コントローラ２１０は、デステージ処理（Ｓ４０）を完了した後で、ライトコマンドの処理完了を第１コントローラ１１０に通知することもできる。
【０１３１】
図９は、リード処理を示すフローチャートである。仮想ボリューム１４０の仮想スロットに、第２プール２２４内の実スロットが割り当てられている場合を説明する。
【０１３２】
ホスト３０は、仮想ボリューム１４０に記憶されたデータの読出しを要求する。第１コントローラ１１０は、ホスト３０からリードコマンドを受領する（Ｓ５０）。リードコマンドには、仮想ボリューム番号と、読出し先の論理アドレス（読出し先の仮想スロット番号）とが含まれている。
【０１３３】
第１コントローラ１１０は、リードコマンドで指定された読出し先の仮想スロットに実スロットが割当済みであるか否かを判定する（Ｓ５１）。読出し先の仮想スロットに実スロットが割り当てられていない場合（S51:NO）、第１コントローラ１１０は、ホスト３０に”０”を送信する（Ｓ５２）。
【０１３４】
読出し先の仮想スロットに実スロットが割り当てられている場合（S51:YES）、第１コントローラ１１０は、読出しを要求されたデータ（リードデータ）がキャッシュメモリ１１３に記憶されているか否かを判定する（Ｓ５３）。
【０１３５】
ホスト３０から要求されたデータがキャッシュメモリ１１３に記憶されている場合（S53:YES）、第１コントローラ１１０は、そのデータをキャッシュメモリ１１３から読み出して、ホスト３０に送信する（Ｓ５４）。
【０１３６】
ホスト３０から要求されたデータがキャッシュメモリ１１３に記憶されていない場合（S53:NO）、第１コントローラ１１０は、第２コントローラ２１０に向けてリードコマンドを発行する（Ｓ５５）。
【０１３７】
第２コントローラ２１０は、第１コントローラ１１０からのリードコマンドを受信すると（Ｓ５６）、第２プール２２４の実スロットからデータを読出し（Ｓ５７）、第１コントローラ１１０に送信する（Ｓ５８）。
【０１３８】
第１コントローラ１１０は、第２コントローラ２１０からデータを受信し、キャッシュメモリ１１３に記憶させる（Ｓ５９）。この後、第１コントローラ１１０は、キャッシュメモリ１１３に記憶されたデータを読出して、ホスト３０に送信する（Ｓ５４）。
【０１３９】
本実施例は、上述のように構成されるため、以下の効果を奏する。本実施例では、図７で述べたように、仮想スロットに実スロットを割り当てた後で、ＤＭＴ１３５及びＤＭＴ１３５のコピーを更新し、その次に、ライトデータをプールに保存する。従って、ＤＭＴ１３５，１３５Ａを常に最新状態に保つことができる。従って、古い内容のＤＭＴによって、既に割り当てられている実スロットが別のライトコマンドに再び割り当てるという事態が生じるのを防止することができ、信頼性が向上する。
【０１４０】
本実施例では、ＤＭＴ１３５をライトデータと同じプール１２４内に保存する。従って、ＤＭＴ１３５をメモリ上でのみ管理する方式に比べて、ＤＭＴの保護レベルを上げることができ、記憶制御装置の信頼を高めることができる。
【０１４１】
本実施例では、ＤＭＴ１３５のコピー１３５Ａを第２記憶制御装置２０内に記憶させ、かつ、第１記憶制御装置１０内のＤＭＴ１３５と第２記憶制御装置２０内のコピー１３５Ａとを同期させる。従って、第１記憶制御装置１０内のＤＭＴ１３５が万が一失われた場合でも、コピー１３５Ａを用いることにより、仮想ボリューム１４０を制御することができ、記憶制御装置の信頼性が向上する。
【０１４２】
本実施例では、第１記憶制御装置１０が第２記憶制御装置２０内の第２プール２２４で管理されている実スロットへのアクセス経路を把握しており（外部ボリューム管理テーブル１３４）、ホスト３０からのコマンドに対応するコマンドを第１記憶制御装置１０で生成して第２記憶制御装置２０に送信する。これにより、本実施例では、第１記憶制御装置１０は、第２記憶制御装置２０の有する実スロットを利用することができる。従って、第２記憶制御装置２０の有する記憶領域（第２プール）を有効利用して、仮想ボリューム１４０を生成することができ、ユーザの使い勝手が向上する。
【実施例２】
【０１４３】
図１０〜図１８に基づいて第２実施例を説明する。本実施例を含む以下の各実施例は、第１実施例の変形例に該当する。以下、第１実施例と重複する説明は割愛する。本実施例では、第１記憶制御装置１０内の第１仮想ボリューム１４０と第２記憶制御装置２０内の第２仮想ボリューム２４０とでコピーペアを形成する。仮想ボリューム間でデータをコピーする。
【０１４４】
図１０は、本実施例によるストレージシステムの全体構成図である。本実施例の第２記憶制御装置２０は、第２仮想ボリューム２４０を備えている。第２仮想ボリューム２４０には、第２プール２２４内の実スロットが割り当てられる。第１記憶制御装置１０の第１仮想ボリューム１４０には、第１プール１２４内の実スロットが割り当てられる。第１仮想ボリューム１４０と第２仮想ボリューム２４０とはコピーペアを形成しており、第１仮想ボリューム１４０の記憶内容が第２仮想ボリューム２４０にも記憶される。第２記憶制御装置２０の構成変更等は、第２記憶制御装置２０に接続された管理サーバ４０から行うことができる。
【０１４５】
図１１は、本実施例による機能ブロック図である。第１コントローラ１１０は、例えば、コマンド処理部１３０と、ボリューム管理部１３１と、仮想ボリューム制御部１３２と、遠隔コピー制御部１３７とをそれぞれ実現する。第１コントローラ１１０は、論理ボリューム管理テーブル１３３，仮想ボリューム管理テーブル１３５，仮想ボリューム対応管理テーブル１３６，コピー管理テーブル１３８を備える。
【０１４６】
遠隔コピー制御部１３７は、第１記憶制御装置１０と第２記憶制御装置２０との間でのデータコピーを制御するものである。遠隔コピーは、仮想ボリューム間のコピーと、プール間のコピーとに大別することができる。本実施例では、主に仮想ボリューム間コピーについて説明し、後述の実施例でプール間コピーを説明する。遠隔コピーは、リモートコピーと呼ぶこともできる。
【０１４７】
仮想ボリューム対応管理テーブル１３６は、第１仮想ボリューム１４０と第２仮想ボリューム２４０との対応関係を管理するテーブルである。仮想ボリューム対応管理テーブル１３６の詳細は後述する。
【０１４８】
コピー管理テーブル１３８は、第１記憶制御装置１０と第２記憶制御装置２０との間のコピーを管理するためのテーブルである。コピー管理テーブル１３８は、図１３に示すように、コントローラ間コピー管理テーブル１３８Ａ、または／及び、コピー管理用のビットマップ１３８Ｂとして構成することもできる。
【０１４９】
本実施例で述べる仮想ボリューム間コピーの場合、第１仮想ボリューム１４０のどの仮想スロットが更新され、第１仮想ボリューム１４０で更新された仮想スロットのうち、どの仮想スロットが第２仮想ボリューム２４０に記憶されたかを、管理できればよい。従って、本実施例では、図１３に示すコントローラ間コピー管理テーブル１３８Ａを使用する必要はない。
【０１５０】
第２コントローラ２１０は、例えば、コマンド処理部２３０と、ボリューム管理部２３１と、仮想ボリューム制御部２３２と、遠隔コピー制御部２３７とをそれぞれ実現するようになっている。第２コントローラ２１０は、論理ボリューム管理テーブル２３３，仮想ボリューム管理テーブル２３５，仮想ボリューム対応管理テーブル２３６及びコピー管理テーブル２３８を備える。
【０１５１】
なお、第１実施例でも同様であるが、第１コントローラ１１０についての説明によって容易に理解できるため、第２コントローラ２１０の有する機能やテーブルの説明は、省略する。
【０１５２】
図１２は、仮想ボリューム対応管理テーブル１３６の構成を示す。仮想ボリューム対応管理テーブル１３６は、例えば、プライマリ装置番号１３６１と、仮想ボリューム番号１３６２と、スロット番号１３６３と、セカンダリ装置番号１３６４と、仮想ボリューム番号１３６５と、スロット番号１３６５とを対応付けて管理する。
【０１５３】
プライマリ装置番号１３６１は、プライマリ装置となる記憶制御装置を特定するための情報である。本実施例では、第１記憶制御装置１０がプライマリ装置となる。仮想ボリューム番号１３６２は、コピー元の仮想ボリュームを特定する情報である。本実施例では、第１仮想ボリューム１４０がコピー元の仮想ボリュームとなる。スロット番号１３６３は、コピー元仮想ボリュームの各仮想スロットを識別する情報である。即ち、スロット番号１３６３は、コピー元の仮想記憶領域を特定する。
【０１５４】
セカンダリ装置番号１３６４は、セカンダリ装置となる記憶制御装置を特定する情報である。本実施例では、第２記憶制御装置２０がセカンダリ装置となる。仮想ボリューム番号１３６５は、コピー先の仮想ボリュームを特定する情報である。本実施例では、第２仮想ボリューム２４０がコピー先の仮想ボリュームとなる。スロット番号１３６６は、コピー先仮想ボリュームの各仮想スロットを識別する情報である。スロット番号１３６６は、コピー先の仮想記憶領域を特定する。
【０１５５】
図１３は、コピー管理テーブル１３８の一例を示す説明図である。図１３の上側に示すコントローラ間コピー管理テーブル１３８Ａは、後述の実施例において使用される。コントローラ間コピー管理テーブル１３８Ａは、第１プール１２４と第２プール２２４との間で、データをコピーする場合に使用される。
【０１５６】
コントローラ間コピー管理テーブル１３８Ａは、例えば、プライマリ装置番号１３８１と、グループ番号１３８２と、論理デバイス番号１３８３と、論理アドレス１３８４と、セカンダリ装置番号１３８５と、グループ番号１３８６と、論理デバイス番号１３８７と、論理アドレス１３８８とを対応付けて管理する。
【０１５７】
プライマリ装置番号１３８１は、コピー元となる記憶制御装置を特定するための情報である。グループ番号１３８２は、コピー元のグループを特定する情報である。同時に更新されるべきデータは、同一のコピーグループに所属する。これにより、整合性を維持すべきデータを同時にコピーすることができる。
【０１５８】
論理デバイス番号１３８３は、コピー元の実ボリュームを特定する情報である。論理アドレス１３８４は、コピー元の実ボリュームに記憶されているコピー元データの開始アドレスを示す。
【０１５９】
セカンダリ装置番号１３８５は、コピー先となる記憶制御装置を特定するための情報である。グループ番号１３８６は、コピー先のグループを特定する情報である。論理デバイス番号１３８７は、コピー先の実ボリュームを特定する情報である。論理アドレス１３８８は、コピー先データの開始アドレスを示す。
【０１６０】
図１３の下側に示すコピー管理用ビットマップ１３８Ｂは、コピー済のスロットを管理するための管理テーブルである。
【０１６１】
図１４は、第１仮想ボリューム１４０の全記憶内容を第２仮想ボリューム２４０に初期コピーする様子を示す説明図である。詳細は後述するが、第１記憶制御装置１０は、第１仮想ボリューム１４０の全ての仮想スロットから順番にデータを読出し、第２記憶制御装置２０に送信する。
【０１６２】
仮想ボリューム１４０に記憶されているデータの実体は、第１プール１２４内に存在するため、第１プール１２４から読み出されたデータがキャッシュメモリ１１３に記憶され、キャッシュメモリ１１３から第２記憶制御装置２０に向けて送信される。
【０１６３】
第２記憶制御装置２０は、第１記憶制御装置１０からデータを受信すると、第２仮想ボリューム２４０の仮想スロットに第２プール２２４内の未使用スロットを割当て、その割り当てた実スロット内に第１記憶制御装置１０から受信したデータを記憶する。
【０１６４】
図１５は、コピー元である第１コントローラ１１０により実行される初期コピー処理を示す。この処理は、遠隔コピー制御部１３７と仮想ボリューム制御部１３２との共同作業によって実行される。遠隔コピー制御部１３７は、Ｓ７０，Ｓ７６〜Ｓ７９を担当する。仮想ボリューム制御部１３２は、Ｓ７１〜Ｓ７５を担当する。
【０１６５】
初期コピー処理では、コピー元の記憶制御装置１０において、第１仮想ボリューム１４０からデータを読み出す処理が行われ、コピー先の記憶制御装置２０において、第２仮想ボリューム２４０にデータを書き込む処理が行われる。
【０１６６】
遠隔コピー制御部１３７は、仮想ボリューム制御部１３２に、指定する仮想スロットからのデータ読み出しを要求する（Ｓ７０）。仮想ボリューム制御部１３２は、Ｓ７０の要求を受領すると（Ｓ７１）、指定された仮想スロットに実スロットが割当済みであるか否かを判定する（Ｓ７２）。
【０１６７】
データ読出しを指定された仮想スロットに実スロットが割り当てられている場合（S72:YES）、仮想ボリューム制御部１３２は、その実スロットからデータを読み出してキャッシュメモリ１１３に記憶させる（Ｓ７３）。仮想ボリューム制御部１３２は、ステージング処理が完了した旨を遠隔コピー制御部１３７に通知する（Ｓ７５）。
【０１６８】
データ読出しを指定された仮想スロットに実スロットが割り当てられていない場合（S72:NO）、仮想ボリューム制御部１３２は、”０”データをキャッシュメモリ１１３に記憶させる（Ｓ７４）。
【０１６９】
遠隔コピー制御部１３７は、ステージング処理が完了した旨の通知を受領すると（Ｓ７６）、キャッシュメモリ１１３に記憶されたデータを第２記憶制御装置２０に転送してコピーさせる（Ｓ７７）。遠隔コピー制御部１３７は、スロット番号を指定して、そのスロットに記憶されているデータを第２記憶制御装置２０に送信する。
【０１７０】
遠隔コピー制御部１３７は、第２記憶制御装置２０にデータを送信した仮想スロットについてコピー管理用ビットマップ１３８Ｂを更新し（Ｓ７８）、第１仮想ボリューム１４０の全ての仮想スロットのコピーが完了したか否かを判定する（Ｓ７９）。未だコピーされていない仮想スロットがある場合（S79:NO）、Ｓ７０〜Ｓ７８のステップが繰り返される。第１仮想ボリューム１４０の全体について、第２記憶制御装置２０へのコピーが完了すると（S79:YES）、本処理は終了する。
【０１７１】
図１６は、コピー先である第２コントローラ２１０により実行される初期コピー処理を示すフローチャートである。本処理は、第２コントローラ２１０の仮想ボリューム制御部２３２によって実行される。
【０１７２】
第２コントローラ２１０は、第１コントローラ１１０から指定された仮想スロットに、実スロットが割り当てられているか否かを判定する（Ｓ９０）。指定された仮想スロットに実スロットが割り当てられていない場合（S90:NO）、第２コントローラ２１０は、第２プール２２４内の未使用の実スロットを選択し、この選択された実スロットを指定された仮想スロットに割り当てる（Ｓ９１）。第２コントローラ２１０は、第２仮想ボリューム２４０の構成を管理する第２ＤＭＴ２３５を更新する（Ｓ９２）。
【０１７３】
指定された仮想スロットに実スロットが割り当てられている場合（S90:YES）、Ｓ９１，Ｓ９２はスキップされ、Ｓ９３に移る。
【０１７４】
第２コントローラ２１０は、第１コントローラ１１０から受信したデータを、第２コントローラ２１０内のキャッシュメモリに記憶し（Ｓ９３）、ライトコマンドの処理が完了した旨を第１コントローラ１１０に報告する（Ｓ９４）。
【０１７５】
第２コントローラ２１０は、第１コントローラ１１０から受信したデータが有効なデータであるか否かを判定する（Ｓ９５）。有効なデータとは、その全体が”０”データではないデータを意味する。有効ではないデータとは無効なデータを意味し、無効なデータとは、”０”データを意味する。
【０１７６】
図１５のＳ７４で述べたように、コピー元の第１仮想ボリューム１４０において、実スロットが割り当てられていない仮想スロットについては、”０”データが第２記憶制御装置に送信される。従って、第２コントローラ２１０が第１コントローラ１１０から受信するデータは、有効なデータと無効なデータとが混在する。そこで、第２コントローラ２１０は、受信データが有効なデータであるか否かを判定する（Ｓ９５）。
【０１７７】
有効なデータの場合（S95:YES）、第２コントローラ２１０は、適当なタイミングを見計らってデステージ処理を行う（Ｓ９６）。即ち、第２コントローラ２１０は、第１コントローラ１１０から受信したデータを、Ｓ９１で仮想スロットに割り当てられた実スロットを有する記憶デバイス２２１内に記憶させる。
【０１７８】
第１コントローラ１１０から無効なデータを受信した場合（S95:NO）、第２コントローラ２１０は、データの書込先としてＳ９１で選択された実スロットからデータを読み出す（Ｓ９７）。即ち、第２コントローラ２１０は、Ｓ９１で選択された実スロットにＳ９３で受信したデータを書き込む前に、その実スロットに既に記憶されている旧データを読み出す。
【０１７９】
第２コントローラ２１０は、Ｓ９１で選択された実スロットに記憶されているデータが無効なデータであるか否かを判定する（Ｓ９８）。既に記憶されているデータが有効なデータの場合（S98:NO）、第２コントローラ２１０は、Ｓ９６に移り、Ｓ９３で受信したデータをデステージ処理する。つまり、旧データが有効なデータの場合（S98:NO）、旧データは新データによって上書きされる（Ｓ９６）。
【０１８０】
旧データが無効なデータの場合（S98:YES）、第２コントローラ２１０は、Ｓ９１で選択された実スロットを解放して（Ｓ９９）、未使用状態（未割当て状態）に戻し、第２ＤＭＴ２３５を更新する（Ｓ１００）。さらに、第２コントローラ２１０は、Ｓ９３でキャッシュメモリに記憶されたデータを破棄し（Ｓ１０１）、処理を終了する。
【０１８１】
つまり、書込先として選択された実スロットに有効な旧データが書き込まれていない場合（S98:YES）、第２コントローラ２１０は、第１コントローラ１１０から受信したデータを第２仮想ボリュームに書き込むことなく、処理を終了させる。
【０１８２】
図１６に示す処理により、第１仮想ボリューム１４０から第２仮想ボリューム２４０にボリュームコピーする場合でも、第２記憶制御装置２０は、第２仮想ボリューム２４０の全ての仮想スロットに実スロットを割り当てることがない。第２記憶制御装置２０は、第１仮想ボリューム１４０内で使用されている部分についてのみ、第２仮想ボリューム２４０の仮想スロットに実スロットを割り当てる。従って、第２記憶制御装置２０の第２プール２２４で管理されている実スロットを有効に使用して、第２仮想ボリューム２４０を生成することができる。
【０１８３】
また、第２コントローラ２１０内のキャッシュメモリから、無効なデータを速やかに破棄するため、キャッシュメモリを効率的に使用することができる。
【０１８４】
図１４〜図１６で述べた、第１仮想ボリューム１４０から第２仮想ボリューム２４０へのボリューム単位の初期コピーは、第２仮想ボリューム２４０から第１仮想ボリューム１４０へのリストア処理に応用することができる。
【０１８５】
図１７は、第２仮想ボリューム２４０の記憶内容を第１仮想ボリューム１４０に書き込んでリストアする様子を示す説明図である。リストア処理は、上述した初期コピーにおけるコピー元とコピー先の関係が逆転する。つまり、リストア処理では、コピー元の記憶制御装置は第２記憶制御装置２０となり、コピー先の記憶制御装置は第１記憶制御装置１０となる。
【０１８６】
図１８は、第１コントローラ１１０により実行されるリストア処理のフローチャートである。この処理は、図１６に示す初期コピーと同様に行われる。図中のＳ９０Ａ〜Ｓ１０１Ａは、図１６中のＳ９０〜Ｓ１０１にそれぞれ対応するため、説明を省略する。
【０１８７】
リストア処理時に、コピー先である第１コントローラ１１０は、受信データの有効性を判別し（Ｓ９５Ａ）、無効なデータが第１仮想ボリューム１４０に書き込まれるのを防止する。これにより、第１仮想ボリューム１４０の全仮想スロットについて、第１プール１２４内の実スロットが割り当てられるのを防止することができる。
【０１８８】
このように構成される本実施例も第１実施例と同様の効果を奏する。これに加えて、本実施例では、ボリューム全体をコピーする場合（例えば、初期コピー時及びリストア時）、使用されていない仮想スロットに実スロットを割り当てることがなく、プール内の実スロットを有効に使用して仮想ボリュームを生成することができる。
【実施例３】
【０１８９】
図１９に基づいて第３実施例を説明する。本実施例では、第２記憶制御装置２０に代えて、バックアップ装置５０を用いる。バックアップ装置５０は、例えば、コントローラ５１と、バックアップ用記憶デバイス５２を備える。バックアップ用記憶デバイス５２は、例えば、磁気テープデバイスやハードディスクデバイスのように構成される。コントローラ５１は、バックアップ用記憶デバイス５２の作動を制御する。
【０１９０】
第１仮想ボリューム１４０に記憶されているデータは、指定されたバックアップ時刻に、バックアップ装置５０にボリュームコピーされる（Ｓ１１０）。リストア時には、バックアップ装置５０に記憶されているデータが、第１仮想ボリューム１４０に書き込まれる（Ｓ１１１）。
【０１９１】
第１記憶制御装置１０からバックアップ装置５０へのコピーは（Ｓ１１０）、図１５に示す処理と同様に行うことができる。バックアップ装置５０から第１記憶制御装置１０へのコピーは、図１７に示す処理と同様に行うことができる。このように構成される本実施例も第１実施例及び第２実施例と同様の効果を奏する。
【実施例４】
【０１９２】
図２０〜図２４に基づいて第４実施例を説明する。本実施例では、第１記憶制御装置１０の第１プール１２４から第２記憶制御装置２０の第２プール２２４に、データをコピーすることにより、第１仮想ボリューム１４０と第２仮想ボリューム２４０の記憶内容を同期させる例を示す。つまり、本実施例では、仮想ボリューム同士でボリュームコピーを行うのではなく、データを記憶するプール同士で、ブロックレベルのコピーを行う。
【０１９３】
図２０は、本実施例によるストレージシステムの全体構成図である。本実施例では、第１プール１２４と第２プール２２４とがコピーペアを形成している。第２プール２２４には、第１ＤＭＴ１３５のコピー１３５Ａと、第２ＤＭＴ２３５が記憶されている。
【０１９４】
なお、図２０では図示を省略しているが、図２３に示すように、第２記憶制御装置２０の第２プール２２４には、各テーブル１３５Ａ，２３３，２３５，２３６，２３８がそれぞれ記憶されている。コントローラ間コピー管理テーブル２３８Ａは、図１３で述べたコントローラ間コピー管理テーブル１３８Ａと同様に構成される。
【０１９５】
図２１は、第１コントローラ１１０により実行されるライト処理を示すフローチャートである。第１コントローラ１１０は、ホスト３０から発行されたライトコマンドを受信すると（Ｓ１２０）、ライトコマンドによって指定された仮想スロットに実スロットを割当済みか否かを判定する（Ｓ１２１）。
【０１９６】
指定された仮想スロットに実スロットが割り当てられていない場合（S121:NO）、第１コントローラ１１０は、指定された仮想スロットに第１プール１２４内の未使用の実スロットを割当て（Ｓ１２２）、第１ＤＭＴ１３５を更新する（Ｓ１２３）。
【０１９７】
第１コントローラ１１０は、キャッシュ領域を確保し、ホスト３０から受信したライトデータを、確保したキャッシュ領域に記憶する（Ｓ１２４）。第１コントローラ１１０は、上述の通り、ライトデータが有効なデータであるか否かを判別し、無効なデータの場合は、Ｓ１２２で割り当てられた実スロットを解放し、かつ、キャッシュ領域に記憶されたライトデータ（”０”データ）を破棄する（Ｓ１２５）。そして、第１コントローラ１１０は、適当なタイミングを見計らって、データを第１プール１２４内の実スロットに書き込む（Ｓ１２６）。
【０１９８】
プール間の記憶内容を同期させるプール間コピー処理は、ライト処理と非同期で動作している。第１コントローラ１１０は、第１プール内で更新されたデータを読出し（Ｓ１３０）、このデータを第２記憶制御装置２０に向けて送信する（Ｓ１３１）。第１コントローラ１１０は、コピー管理用ビットマップを更新する（Ｓ１３２）。第１コントローラ１１０は、第１プール１２４内で更新された全ての実スロットについて、第２プール２２４へのコピーが完了したか否かを判定する（Ｓ１３３）。更新された全ての実スロットについてコピーが完了するまで、Ｓ１３０〜Ｓ１３２のステップが繰り返される。
【０１９９】
図２２は、第２コントローラ２１０側の処理を示すフローチャートである。第２コントローラ２１０では、プール間コピー処理（Ｓ１４０〜Ｓ１４４）と、ＤＭＴ更新処理（Ｓ１５０〜Ｓ１５６）とが実行される。
【０２００】
プール間コピー処理を先に説明する。第２コントローラ２１０は、第１コントローラ１１０からデータを受信すると（Ｓ１４０）、このデータを第２コントローラ２１０内のキャッシュメモリに記憶し（Ｓ１４１）、第１コントローラ１１０に処理が完了した旨を報告する（Ｓ１４２）。第２コントローラ２１０は、コントローラ間コピー管理テーブル２３８Ａを更新する（Ｓ１４３）。第２コントローラ２１０は、適当なタイミングを見計らって、キャッシュメモリに記憶されたデータを第２プール２２４内の実スロットに記憶させる（Ｓ１４４）。
【０２０１】
ＤＭＴ更新処理を説明する。第２コントローラ２１０は、第２プール２２４内のどこに第１ＤＭＴ１３５のコピー１３５Ａが記憶されているかを把握している。そこで、第２コントローラ２１０は、第１プール１２４から第２プール２２４へのプール間コピーによって、第２プール２２４内の第１ＤＭＴ１３５のコピー１３５Ａが更新されたか否かを判定する（Ｓ１５０）。
【０２０２】
第２プール２２４内の第１ＤＭＴ１３５のコピー１３５Ａが更新された場合（S150:YES）、第２コントローラ２１０は、そのコピー１３５Ａを参照し、第１仮想ボリューム１４０内で更新された仮想スロットを特定する（Ｓ１５１）。
【０２０３】
第２コントローラ２１０は、仮想ボリューム対応管理テーブル２３６を参照し（Ｓ１５２）、第１仮想ボリューム１４０内で更新された仮想スロットに対応する、第２仮想ボリューム２４０内の仮想スロットを特定する（Ｓ１５３）。
【０２０４】
第２コントローラ２１０は、コントローラ間コピー管理テーブル２３８Ａを参照し（Ｓ１５４）、第１仮想ボリューム１４０内で更新された仮想スロットに記憶されたデータ（即ち、更新された仮想スロットのデータ）が、第２プール２２４内のどの実スロットに記憶されたかを確認する（Ｓ１５５）。
【０２０５】
以上の処理により、第２仮想ボリューム２４０の更新対象の仮想スロット及び更新データの格納先とが判明する。そこで、第２コントローラ２１０は、第２プール２２４に記憶されている第２ＤＭＴ２３５を更新する（Ｓ１５６）。
【０２０６】
図２３は、第２ＤＭＴ２３５を更新する際の各テーブルの関係を模式的に示す説明図である。図２３の左側では、仮想スロットの特定を行い、図２３の右側では実スロットを特定する。
【０２０７】
上述の通り、第１ＤＭＴ１３５のコピー１３５Ａは、第１仮想ボリューム１４０のアドレス（仮想スロット番号）とデータの格納先アドレス（実スロット番号）とを対応付けて管理している。第１仮想ボリューム１４０の記憶内容が変更された場合、その変更に伴って第１ＤＭＴ１３５が更新される。そして、プール間コピーにより、第１ＤＭＴ１３５のコピー１３５Ａの内容も更新される。
【０２０８】
仮想ボリューム対応管理テーブル２３６を参照することにより、第１仮想ボリューム１４０で更新された仮想スロットに対応する、第２仮想ボリューム２４０の仮想スロットを検出することができる。
【０２０９】
一方、第１ＤＭＴ１３５のコピー１３５Ａを参照することにより、第１プール１２４内で更新された実スロットを検出できる。さらに、コントローラ間コピー管理テーブル２３８Ａ及び論理ボリューム管理テーブル２３３を用いることにより、第１プール１２４内で更新された実スロットに対応する、第２プール２２４内の実スロットを検出することができる。従って、図２３の下側に示すように、第２コントローラ２１０は、更新された仮想スロットと更新された実スロットとに基づいて、第２仮想ボリューム２４０を管理する第２ＤＭＴ２３５を更新することができる。
【０２１０】
このように構成される本実施例では、第１実施例と同様の効果を奏する。さらに、本実施例では、第１プール１２４と第２プール２２４との間でデータをコピーし、第２コントローラ２１０は、プール間コピーの結果に基づいて、第２仮想ボリューム２４０を管理するための第２ＤＭＴ２３５を更新する。
【０２１１】
従って、本実施例では、第１記憶制御装置２０から第２記憶制御装置２０にデータをコピーする場合、及びその逆方向のコピーにおいて、無駄なデータ（”０”データ）が転送されない。従って、プール間コピーに使用される通信ネットワークの負荷を増大させることなく、第１仮想ボリューム１４０の記憶内容と第２仮想ボリューム２４０の記憶内容とを一致させることができる。
【実施例５】
【０２１２】
図２４に基づいて第５実施例を説明する。第５実施例は、第４実施例の変形例に該当し、第２記憶制御装置２０をいわゆるコールドスタンバイ状態に置く。つまり、プール間コピーによって、第２仮想ボリューム２４０をいつでも生成可能な状態にしておき、障害発生時に第２仮想ボリューム２４０を構築してホスト３０に提供することもできる。
【０２１３】
図２４は、ディザスタリカバリ時に第２コントローラ２１０により実行される処理を示すフローチャートである。第２コントローラ２１０は、第１記憶制御装置１０に障害の生じたことを検出する（Ｓ１６０）。例えば、第１コントローラ１１０との間で実行されるハートビート通信が停止した場合、または、ホスト３０または管理サーバ４０からディザスタリカバリの指示が与えられた場合に、第２コントローラ２１０は、第１記憶制御装置１０に障害が発生したことを検出することができる。
【０２１４】
第２コントローラ２１０は、第２プール２２４に記憶されている第２ＤＭＴ２３５を用いて第２仮想ボリューム２４０を生成し（Ｓ１６１）、通信経路の設定等を行って、第２仮想ボリューム２４０をホスト３０に提供する（Ｓ１６２）。第２コントローラ２１０は、ホスト３０からのライトコマンドやリードコマンドを処理し、その処理結果をホスト３０に返信する（Ｓ１６３）。このように構成される本実施例も第１、第４実施例と同様の効果を奏する。
【０２１５】
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０２１６】
【図１】本発明の実施形態を示す概念図である。
【図２】本発明の実施例に係るシステムのハードウェア構成図である。
【図３】コントローラの機能を模式的に示す説明図である。
【図４】論理ボリューム管理テーブルを示す説明図である。
【図５】外部ボリューム管理テーブルを示す説明図である。
【図６】仮想ボリューム管理テーブルを示す説明図である。
【図７】ホストからのライトコマンドを処理するライト処理を示すフローチャートである。
【図８】第１記憶制御装置から第２記憶制御装置にライトデータを送信して、第２記憶制御装置内に記憶させる処理を示すフローチャートである。
【図９】ホストからのリードコマンドを処理するリード処理を示すフローチャートである。
【図１０】第２実施例に係るストレージシステムの全体構成を示す説明図である。
【図１１】コントローラの機能を示すブロック図である。
【図１２】仮想ボリューム対応管理テーブルを示す説明図である。
【図１３】コントローラ間コピー管理テーブル及びコピー管理用ビットマップをそれぞれ示す説明図である。
【図１４】第１記憶制御装置から第２記憶制御装置に、ボリュームコピーによって初期コピーを行う様子を示す説明図である。
【図１５】第１記憶制御装置が第２記憶制御装置にボリューム単位でデータを送信する処理を示すフローチャートである。
【図１６】第２記憶制御装置が第１記憶制御装置からボリューム単位でデータを受信して記憶する処理を示すフローチャートである。
【図１７】第２記憶制御装置の記憶内容を用いてリストアする場合の説明図である。
【図１８】第１記憶制御装置におけるリストア処理を示すフローチャートである。
【図１９】第３実施例に係るストレージシステムの全体構成を示す説明図である。
【図２０】第４実施例に係るストレージシステムの全体構成を示す説明図である。
【図２１】ライト処理と、第１プールから第２プールへのリモートコピー処理をそれぞれ示すフローチャートである。
【図２２】第１プールから受信したデータを第２プールに保存する処理と、第２ＤＭＴを更新する処理をそれぞれ示すフローチャートである。
【図２３】第２プールの更新結果に基づいて第２ＤＭＴを更新する方法を示す説明図である。
【図２４】第５実施例に係るストレージシステムにおいて実行される、ディザスタリカバリ処理を示すフローチャートである。
【符号の説明】
【０２１７】
１：第１記憶制御装置、２：第１プール、３：仮想ボリューム、４：第１プール管理部、５：記憶領域管理テーブル（ＤＭＴ１）、６：第１仮想ボリューム制御部、７：キャッシュメモリ、８：ライトコマンド発行装置、９：第２記憶制御装置、９Ａ：第２プール、９Ｂ：第２仮想ボリューム、９Ｃ：第２プール管理部、９Ｄ：第２仮想ボリューム制御部、１０：第１記憶制御装置、２０：第２記憶制御装置、３０：ホスト、３１：アプリケーションプログラム、３２：通信制御部、４０：管理サーバ、５０：バックアップ装置、５１：コントローラ、５２：バックアップ用記憶デバイス、１１０：第１コントローラ、１１１：チャネルアダプタ（CHA）、１１２：ディスクアダプタ（DKA）、１１３：キャッシュメモリ（CM）、１１４：共有メモリ（SM）、１１５：接続制御部、１１６：サービスプロセッサ（SVP）、１２０：第１記憶部、１２１：記憶デバイス、１２２：パリティグループ（VDEV）、１２３：論理デバイス（LDEV）、１２４：第１プール、１３０：コマンド処理部、１３１：ボリューム管理部、１３２：仮想ボリューム制御部、１３３：論理ボリューム管理テーブル、１３４：外部ボリューム管理テーブル、１３５：仮想ボリューム管理テーブル（DMT１）、１３５Ａ：第１DMTのコピー、１３６：仮想ボリューム対応管理テーブル、１３７：遠隔コピー制御部、１３８：コピー管理テーブル、１３８Ａ：コントローラ間コピー管理テーブル、１３８Ｂ：コピー管理用ビットマップ、１４０：第１仮想ボリューム、２１０：第２コントローラ、２２０：第２記憶部、２２１：記憶デバイス、２２２：パリティグループ（VDEV）、２２３：論理デバイス（LDEV）、２２４：第２プール、２３０：コマンド処理部、２３１：ボリューム管理部、２３２：仮想ボリューム制御部、２３３：論理ボリューム管理テーブル、２３５：仮想ボリューム管理テーブル、２３６：仮想ボリューム対応管理テーブル、２３７：遠隔コピー制御部、２３８：コピー管理テーブル、２３８Ａ：コントローラ間コピー管理テーブル、２４０：第２仮想ボリューム。
【図１】
2009116809.tif 000003
【図２】
2009116809.tif 000004
【図３】
2009116809.tif 000005
【図４】
2009116809.tif 000006
【図５】
2009116809.tif 000007
【図６】
2009116809.tif 000008
【図７】
2009116809.tif 000009
【図８】
2009116809.tif 000010
【図９】
2009116809.tif 000011
【図１０】
2009116809.tif 000012
【図１１】
2009116809.tif 000013
【図１２】
2009116809.tif 000014
【図１３】
2009116809.tif 000015
【図１４】
2009116809.tif 000016
【図１５】
2009116809.tif 000017
【図１６】
2009116809.tif 000018
【図１７】
2009116809.tif 000019
【図１８】
2009116809.tif 000020
【図１９】
2009116809.tif 000021
【図２０】
2009116809.tif 000022
【図２１】
2009116809.tif 000023
【図２２】
2009116809.tif 000024
【図２３】
2009116809.tif 000025
【図２４】
2009116809.tif 000026