(57)【要約】【課題】キャッシュメモリの記憶領域を犠牲にすることなく、記憶媒体にバックアップを採る場合のスナップショット作成に要する時間を短縮する。【解決手段】テーブル２５０は、キャッシュメモリ１０４にキャッシングされたデータのうちのダーティデータの範囲を示す第１の変数と、バックアップＬＤＩＳＫ１１ｂに書き込まれるべきスナップデータの範囲を示す第２の変数とを含むキャッシュ管理用データを保持する。キャッシュメモリ管理部２４３は、ホスト機器からのスナップショット作成要求時、キャッシュ管理用データに含まれている第１の変数を前記第２の変数にコピーし、コピー完了をもって、レプリケーションの状態を、スナップショットがバックアップＬＤＩＳＫ１１ｂのデータとして確定していないことを示す状態に遷移させると共に、スナップショット作成要求に対するスナップショット作成の完了をホスト機器に通知する。【選択図】      図３
2010122761.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶媒体及び第２の記憶媒体と、
ホスト機器と前記第１及び第２の記憶媒体との間に介在し、前記第１及び第２の記憶媒体のレプリケーション管理上の状態が第１の状態では、前記第１及び第２の記憶媒体を、前記第１の記憶媒体に記憶されているデータの複製が前記第２の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備し、
前記制御装置は、
前記第１及び第２の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、
前記キャッシュメモリに記憶されたデータのうち前記第１の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第１の変数と、前記第２の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第２の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、
前記ホスト機器からのスナップショット作成要求に応じて、前記第１の変数を前記第２の変数にコピーし、前記第２の変数へのコピー完了をもって、レプリケーション管理上の状態を、前記第１の状態から前記第１及び第２の記憶媒体が論理的に分離された第２の状態に移行する状態であり、スナップショットが前記第２の記憶媒体のデータとして確定していないことを示す第３の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、
前記第１の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、
前記第１の状態において、前記デステージング制御手段によってデステージングが指定された場合、前記第１の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第１及び第２の記憶媒体の双方に書き込むための制御に応じて前記第１の変数を更新し、前記第１の状態以外において、前記デステージング制御手段によってデステージングが指定された場合、前記第１の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第１の記憶媒体に、前記第２の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第２の記憶媒体に、それぞれ書き込むための制御に応じて前記第１及び第２の変数を更新する書き込み制御手段とを含む
ことを特徴とするデータ記憶装置。
【請求項２】
前記書き込み制御手段は、前記ホスト機器からの前記第１の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたアクセス範囲が前記第２の変数の示す範囲と重複しているかを判定し、重複している場合、その重複している範囲のデータを前記第２の記憶媒体に書き込むための制御を行い、当該書き込み制御に応じて前記第２の変数を更新することを特徴とする請求項１記載のデータ記憶装置。
【請求項３】
第１の記憶媒体及び第２の記憶媒体と、
ホスト機器と前記第１及び第２の記憶媒体との間に介在し、前記第１及び第２の記憶媒体のレプリケーション管理上の状態が第１の状態では、前記第１及び第２の記憶媒体を、前記第１の記憶媒体に記憶されているデータの複製が前記第２の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備し、
前記制御装置は、
前記第１及び第２の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、
前記キャッシュメモリに記憶されたデータのうち前記第１の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第１の変数と、前記第２の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第２の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、
前記ホスト機器からのスナップショット作成要求に応じて、前記レプリケーション管理上の状態を、前記第１の状態から前記第１及び第２の記憶媒体とが論理的に分離された第２の状態に移行する状態であり、スナップショットが前記第２の記憶媒体のデータとして確定していないことを示す第３の状態に遷移させ、当該第３の状態への遷移をもって前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、
前記第１の記憶媒体または前記第２の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、
前記第１の状態における前記ホスト機器からの前記第１の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第１及び第２の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第１及び第２の変数を更新する書き込み制御手段であって、前記デステージング制御手段によって、前記第１の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングが指定された場合、前記第１の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第１の記憶媒体に、前記第２の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第２の記憶媒体に、それぞれ書き込むための制御を行い、当該書き込み制御に応じて前記第１及び第２の変数を更新する書き込み制御手段とを含む
ことを特徴とするデータ記憶装置。
【請求項４】
前記書き込み制御手段は、前記第３の状態における前記ホスト機器からの前記第１の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたアクセス範囲が前記第２の変数の示す範囲と重複しているかを判定し、
重複している場合、その重複している範囲のデータを前記第２の記憶媒体に書き込むための制御を行い、当該書き込み制御に応じて前記第２の変数を更新する一方、重複の有無に無関係に当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第１の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第１の変数を更新し、前記第２の状態における前記ホスト機器からの前記第１の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第１の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第１の変数を更新することを特徴とする請求項４記載のデータ記憶装置。
【請求項５】
第１の記憶媒体及び第２の記憶媒体と、ホスト機器と前記第１及び第２の記憶媒体との間に介在し、前記第１及び第２の記憶媒体のレプリケーション管理上の状態が第１の状態では、前記第１及び第２の記憶媒体を、前記第１の記憶媒体に記憶されているデータの複製が前記第２の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置であって、キャッシュメモリと、前記キャッシュメモリに記憶されたデータのうち前記第１の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第１の変数と、前記第２の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第２の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、前記第１の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、スナップショット作成手段と、書き込み制御手段とを含む制御装置とを備えたデータ記憶装置に適用される筐体内レプリケーション方法において、
前記ホスト機器からのスナップショット作成要求に応じて、前記レプリケーション管理上の状態を、前記第１の状態から、前記第１の記憶媒体と前記第２の記憶媒体とが論理的に分離された第２の状態に変更するに際し、前記スナップショット作成手段が、前記第１の変数を前記第２の変数にコピーするステップと、
前記コピーするステップの完了をもって、前記スナップショット作成手段が、前記レプリケーション管理上の状態を、前記第１の状態から前記第２の状態に移行する状態であり、スナップショットが前記第２の記憶媒体のデータとして確定していないことを示す第３の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するステップと、
前記第１の状態において、前記デステージング制御手段によって前記デステージングが指定された場合、前記書き込み制御手段が、前記第１の変数で指定される範囲のデータを前記第１及び第２の記憶媒体の双方に書き込むための制御を行い、当該書き込み制御に応じて前記第１の変数を更新するステップと、
前記第１の状態以外において、前記デステージング制御手段によって前記デステージングが指定された場合、前記書き込み制御手段が、前記第１の変数で指定される範囲のデータを前記第１の記憶媒体に、前記第２の変数で指定される範囲のデータを前記第２の記憶媒体に、それぞれ書き込むための制御を行い、当該書き込み制御に応じて前記第１及び第２の変数を更新するステップと
を具備することを特徴とする筐体内レプリケーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、マスタディスクのような第１の記憶媒体（一次記憶媒体）とバックアップディスクのような第２の記憶媒体（二次記憶媒体）とをミラーとして運用するデータ記憶装置及び筐体内レプリケーション方法に関する。
【背景技術】
【０００２】
昨今、ディスク容量の増大のペースは著しく、それに伴い、データ量増大のペースも著しい。このような状況下、テープ機器へのバックアップは非常に時間を要するため、ディスクをバックアップ先に指定するケースが増えている。
【０００３】
通常、ディスクにバックアップを採るケースでは、マスタディスクとバックアップディスクを常時ミラーとして運用し、バックアップ作成時に、サーバ側にてコミットポイント作成またはファイルシステムアンマウントを実行し、サーバメモリ上のダーティデータを全て吐き出し、データ記憶装置のキャッシュ（キャッシュメモリ）上のデータをマスタディスクとバックアップディスクとの両方に吐き出した（デステージングした）後に、マスタディスクとバックアップディスクを分離（ミラー状態を解除）して、バックアップの生成を行う。このバックアップディスクの分離、つまりミラー状態の解除は、スナップショット作成と称されている。
【０００４】
このように、スナップショット作成（ミラー状態の解除）にあたっては、マスタとバックアップの両方に書き込みを実施するために、最悪のケース（例えばデータ記憶装置のキャッシュ上に、ランダム書き込みとなるダーティデータが非常に多く存在する場合）では、多大な時間を要することになる。
【０００５】
そこで、例えば特許文献１には、ディスクにバックアップを採る場合のスナップショット作成に要する時間を短縮することを可能とする技術（先行技術）が記載されている。この特許文献１に記載の先行技術の特徴は、キャッシュに格納されるマスタディスクのダーティデータ（デステージングされるべきデータ）がキャッシュ上に占める総容量を制限（例えばキャッシュの容量の１／２に制限）し、且つ、その総容量分のバッファ（退避エリア）をキャッシュ上に予め確保しておき、スナップショット作成時に、その予め確保されたバッファに対してマスタディスクのダーティデータをコピー（退避）し、そのコピー完了をもって、スナップショット作成を完了とすることにある。
【特許文献１】特開２００５−３１７４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
先行技術においては、ディスクにバックアップを採る場合のスナップショット作成に要する時間を短縮することができる。しかし、先行技術では、マスタディスクのダーティデータがキャッシュ上に占める総容量を制限し、その総容量分のバッファをキャッシュ上に確保する必要がある。この総容量の最大値は、キャッシュの記憶容量の１／２である。このため、先行技術では、キャッシュの記憶領域の高々１／２しかキャッシングのために使用することができない。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、キャッシュ（キャッシュメモリ）の記憶領域を犠牲にすることなく、記憶媒体にバックアップを採る場合のスナップショット作成に要する時間を短縮することができるデータ記憶装置及び筐体内レプリケーション方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の１つの観点によれば、第１の記憶媒体及び第２の記憶媒体と、ホスト機器と前記第１及び第２の記憶媒体との間に介在し、前記第１及び第２の記憶媒体のレプリケーション管理上の状態が第１の状態では、前記第１及び第２の記憶媒体を、前記第１の記憶媒体に記憶されているデータの複製が前記第２の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備するデータ記憶装置が提供される。このデータ記憶装置において、前記制御装置は、前記第１及び第２の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、前記キャッシュメモリに記憶されたデータのうち前記第１の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第１の変数と、前記第２の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第２の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、前記ホスト機器からのスナップショット作成要求に応じて、前記第１の変数を前記第２の変数にコピーし、前記第２の変数へのコピー完了をもって、レプリケーション管理上の状態を、前記第１の状態から前記第１及び第２の記憶媒体が論理的に分離された第２の状態に移行する状態であり、スナップショットが前記第２の記憶媒体のデータとして確定していないことを示す第３の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、前記第１の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、前記第１の状態において、前記デステージング制御手段によってデステージングが指定された場合、前記第１の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第１及び第２の記憶媒体の双方に書き込むための制御に応じて前記第１の変数を更新し、前記第１の状態以外において、前記デステージング制御手段によってデステージングが指定された場合、前記第１の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第１の記憶媒体に、前記第２の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第２の記憶媒体に、それぞれ書き込むための制御に応じて前記第１及び第２の変数を更新する書き込み制御手段とを含む。
【発明の効果】
【０００９】
本発明によれば、第１の記憶媒体（マスタ記憶媒体）と第２の記憶媒体（バックアップ記憶媒体）とを論理的に分離するための、ホスト機器からのスナップショット作成要求（スプリットコマンド）の受信時に、第１の記憶媒体及び第２の記憶媒体に対するデステージングを不要とすることができるため、スナップショット作成に要する時間を短縮することができる。しかも、第２の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第２の変数を格納するための記憶領域以外に、特別な記憶領域は必要ないため、従来技術と異なりキャッシュメモリの記憶領域を犠牲にすることがない。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係るデータ記憶装置１の概略構成を示すブロック図である。  
図１に示されるデータ記憶装置１は、制御装置１０と、複数、例えば２つの記憶媒体１１ａ及び１１ｂとから構成される。制御装置１０はデータ通信路２を介して接続されるホスト機器と記憶媒体１１ａ及び１１ｂとの間に介在して設けられる。記憶媒体１１ａ及び記憶媒体１１ｂは、それぞれマスタ記憶媒体（一次記憶媒体）及びバックアップ記憶媒体（二次記憶媒体）として用いられるものとする。本実施形態において、記憶媒体１１ａ及び１１ｂは、ディスク、例えば論理ディスク（ＬＤＩＳＫ）である。そこで以下の説明では、マスタ記憶媒体１１ａ及びバックアップ記憶媒体１１ｂを、それぞれマスタ論理ディスク（マスタＬＤＩＳＫ）１１ａ及びバックアップ論理ディスク（バックアップＬＤＩＳＫ）１１ｂと呼ぶ。また、単に論理ディスク（ＬＤＩＳＫ）１１ａ及び１１ｂと呼ぶこともある。
【００１１】
制御装置１０は、ホストインタフェース部（ＨＯＳＴ  Ｉ／Ｆ）１０１、ＣＰＵ１０２、プログラムメモリ１０３、キャッシュメモリ１０４及びＨＤＤインタフェース部（ＨＤＤ  Ｉ／Ｆ）１０５を有している。なお、データ通信路２を介してデータ記憶装置１に接続されるものとしては、ホスト機器となるコンピュータまたはその集合体の他、他のデータ記憶装置も想定される。
【００１２】
ホストインタフェース部１０１及びＨＤＤインタフェース部１０５は、それぞれ外部接続される装置との間の通信を制御する。ホストインタフェース部１０１はデータ通信路２側の通信を司る。ＨＤＤインタフェース部１０５はＬＤＩＳＫ１１ａ及び１１ｂ側の通信を司る。
【００１３】
ＣＰＵ１０２は、制御装置１０における必要処理を実行するものであり、プログラムメモリ１０３には、そのための各種プログラムが格納されている。ここで説明する筐体内レプリケーションの手法は、このプログラムメモリ１０３（コンピュータ読み取り可能な記憶媒体）に格納されているプログラムをＣＰＵ１０２が読み取って実行することによって実現されるものとする。プログラムメモリ１０３には、上述のプログラムを格納するための領域に加えて、ＣＰＵ１０２が利用するデータ等を格納するための領域も確保されている。
【００１４】
キャッシュメモリ１０４は、データ通信路２を介して接続されるホスト機器（或いは他のデータ記憶装置）からデータ記憶装置１内のＬＤＩＳＫ１１ｉ（ｉ＝ａ，ｂ）に対して発行される入出力要求（ＩＯ要求）に対するバッファの役目を提供する。図２は、キャッシュメモリ１０４の構造を示す。キャッシュメモリ１０４は、ある論理的な単位に分割されて管理されている。この分割された単位で自由にＬＤＩＳＫ１１ｉ内の記憶位置に対応させて、その記憶位置のデータをキャッシュメモリ１０４に格納することができる。この分割された１つの単位をキャッシュブロックと呼ぶ。
【００１５】
ここで、図２に示されるキャッシュメモリ１０４は、例えば１６ＫＢ（キロバイト）単位のキャッシュブロックに分割されている。各キャッシュブロックは、例えばセットアソシアティブ方式によるメモリマッピングで管理される。キャッシュメモリ１０４上では、リードキャッシュ（ＲＤＣ）とライトバックキャッシュ（ＷＢＣ）の２種類のデータが管理される。ホスト機器からのリード／ライトアクセスに応じて各エントリがサーチされ、対象となるキャッシュブロックとホスト機器またはＬＤＩＳＫ１１ｉとの間でデータ転送が行われる。
【００１６】
例えば、ホスト機器からＬＤＩＳＫ１１ｉへのデータ書き込み処理は、キャッシュメモリ１０４を用いて次のように行われる。まず、入出力要求で指定されたデータ（書き込みデータ）がキャッシュメモリ１０４にエントリされた時点で、要求元のホスト機器に対して書き込み処理完了が通知される。その後に、キャッシュメモリ１０４からＬＤＩＳＫ１１ｉに対する実際のデータ書き込みが実行される。
【００１７】
一方、ＬＤＩＳＫ１１ｉからのデータ読み込み処理は、次のように行われる。まず、該当するデータがキャッシュメモリ１０４にエントリ（キャッシュ）されているか否かが判定され、エントリされていれば、そのデータがキャッシュメモリ１０４からデータ通信路２を介してホスト機器に返される。これに対し、該当するデータがキャッシュメモリ１０４にエントリされていないならば、データがＬＤＩＳＫ１１ｉからキャッシュメモリ１０４に読み出されて、しかる後に、要求元のホスト機器に対して読み出されたデータがデータ通信路２を介して返される。
【００１８】
図３は、図１に示される制御装置１０のプログラムメモリ１０３に格納されるプログラムをＣＰＵ１０２が読み取って実行することによって実現されるモジュール構成を主として示すブロック図である。
【００１９】
ホストインタフェース制御部（ＨＯＳＴ  Ｉ／Ｆ制御部）２１０は、ホスト機器（または他のデータ記憶装置）との間のインタフェース処理を担当する。ＩＯ管理部（入出力管理部）２２０は、ＩＯアクセス管理（入出力アクセス管理）及びＩＯアクセス領域制御（入出力アクセス領域制御）を実行する。レプリケーション管理部２３０は、レプリケーション処理を行う。
【００２０】
キャッシュ管理モジュール２４０は、ＩＯアクセス制御部２４１、デステージング／ステージング制御部２４２、キャッシュメモリ管理部２４３及びＬＤＩＳＫアクセス制御部（論理ディスクアクセス制御部）２４４から構成される。
【００２１】
ＩＯアクセス制御部２４１は、ＩＯ管理部２２０からＩＯ要求を受け付けるブロックであり、ＩＯ要求に基づきリード／ライトアクセスを制御する。特にＩＯアクセス制御部２４１は、ホスト機器からのＩＯ要求（ホストＩＯ要求）に基づき、ホスト機器からのリード／ライトアクセスを制御する。ＩＯ要求は、アドレスと転送サイズとからなるアドレス情報を含む。
【００２２】
ＩＯアクセス制御部２４１は、このアクセス情報に基づき、キャッシュメモリ管理部２４３との連携により、該当するキャッシュブロックのエントリをサーチする。ＩＯアクセス制御部２４１は、このエントリのサーチ（エントリサーチ）に基づき、キャッシュメモリ１０４とホスト機器との間のデータ転送をホストインタフェース制御部２１０に対して要求する。またＩＯアクセス制御部２４１は、アクセス情報で指定されるデータの格納状態により、ディスク転送（キャッシュメモリ１０４とＬＤＩＳＫ１１ｉとの間のデータ転送）を必要とする場合に、ディスク転送のための情報をＬＤＩＳＫアクセス制御部２４４に引き渡すことにより、必要なディスクデータの転送を行わせる。
【００２３】
キャッシュメモリ管理部２４３は、キャッシュカラム単位に割り当てられているキャッシュブロックと対象となるＬＤＩＳＫ１１ｉの領域とをマッピングし、ホスト機器からライトされたデータまたはディスクからリードされたデータの格納状態を管理する。このキャッシュメモリ管理部２４３によるデータの格納状態の管理には、キャッシュブロック管理テーブル２５０と、スナップカウンタ２６０ａ及び２６０ｂと、レプリケーション管理テーブル２７０とが用いられる。
【００２４】
キャッシュブロック管理テーブル２５０及びレプリケーション管理テーブル２７０は、例えば、図１に示されるプログラムメモリ１０３の所定の領域に格納される。つまりプログラムメモリ１０３は、キャッシュブロック管理テーブル２５０及びレプリケーション管理テーブル２７０をそれぞれ記憶する記憶手段を含む。なお、キャッシュブロック管理テーブル２５０及びレプリケーション管理テーブル２７０が、それぞれ独立したメモリに格納される構成であっても構わない。
【００２５】
スナップカウンタ２６０ｉ（ｉ＝ａ，ｂ）はＬＤＩＳＫ１１ｉ毎に設けられる。本実施形態においてスナップカウンタ２６０ｉは、プログラムメモリ１０３内に置かれるソフトウェアカウンタである。なおスナップカウンタ２６０ｉがハードウェアカウンタであっても構わない。
【００２６】
デステージング／ステージング制御部２４２は、ホストＩＯ要求のアクセス情報に基づきシーケンシャルライトまたはシーケンシャルリードの検出を行う。シーケンシャルなアクセスを検出した場合、デステージング／ステージング制御部２４２は、シーケンシャルライトであれば後追い吐き出し要求を、シーケンシャルリードであればデータ先読み要求を、ＩＯ管理部２２０に領域を指定して発行する。またデステージング／ステージング制御部２４２は、特定のタイミングで未吐き出しのＷＢＣデータ（ダーティデータ）を抽出し、ストライプグループ単位にまとめてＬＤＩＳＫ１１ｉに書き込むための要求をＩＯ管理部２２０に領域を指定して発行する。
【００２７】
本実施形態において、ＬＤＩＳＫ１１ａ及び１１ｂはそれぞれ、複数のディスクアレイ、例えば図３に示されるようなＲＡＩＤ（Redundant Arrays of Independent Disks，Redundant Arrays of Inexpensive Disks）構成の２つのディスクアレイ（ＳＤＩＳＫ）１１０ａ及び１１０ｂから構成される。つまり、本実施形態の説明において、データ記憶装置１はディスクアレイ装置である。一般にディスクアレイ装置では、ディスクアレイを構成する例えば複数の物理ディスクが一定のサイズに分割して管理される。この分割された単位はストライプと呼ばれる。ストライプグループとは、ディスクアレイを構成する複数の物理ディスクの同一オフセット位置のストライプの集合を指す。
【００２８】
ＲＡＩＤ制御部２８０は、ＬＤＩＳＫアクセス制御部２４４からの要求に応じて、ＬＤＩＳＫ１１ｉ内のディスク転送の対象となるＳＤＩＳＫ１１０ｉとの間のディスクデータの転送を制御する。ＨＤＤインタフェース制御部（ＨＤＤ  Ｉ／Ｆ制御部）２９０は、ＲＡＩＤ制御部２８０からの要求に応じて、ＳＤＩＳＫ１１０ｉ内のディスク転送の対象となる、１つ以上の物理ディスクとの間のディスクデータの転送を制御する。
【００２９】
なお、キャッシュメモリ１０４を２重化することも可能である。その場合、周知のミラードキャッシュ制御やコンカレントキャッシュ制御が必要となるが、これらについては本発明の本質ではないので説明を省略する。
【００３０】
また、ＬＤＩＳＫ１１ａ及び１１ｂが必ずしもディスクアレイから構成されている必要はなく、したがってデータ記憶装置１がディスクアレイ装置でなくともよい。更に、ＬＤＩＳＫ１１ａ及び１１ｂに代えて物理ディスクのような他の記憶媒体を用いることも可能である。
【００３１】
図４は、キャッシュブロック管理テーブル２５０のデータ構造例を示す。キャッシュブロック管理テーブル２５０は、キャッシュメモリ１０４にエントリされたデータを管理するためキャッシュ管理用データを保持する。キャッシュブロック管理テーブル２５０の各エントリは、ＬＤＩＳＫ番号フィールド２５１、ステートフラグフィールド２５２、論理アドレスフィールド２５３、ＷＢＣビット（ＷＢＣエントリビット）フィールド２５４、ＲＤＣビット（ＲＤＣエントリビット）フィールド２５５及びスナップビットフィールド２５６から構成される。
【００３２】
ＬＤＩＳＫ番号フィールド２５１は、該当キャッシュブロックが割り当てられているＬＤＩＳＫ番号を保持するのに用いられる。ステートフラグフィールド２５２は、該当キャッシュブロックの状態を示すフラグ情報を保持するのに用いられる。論理アドレスフィールド２５３は、該当キャッシュブロックが割り当てられているＬＤＩＳＫ内の領域の論理アドレスを保持するのに用いられる。
【００３３】
ＷＢＣビットフィールド２５４は、該当キャッシュブロック内のダーティデータ（ＬＤＩＳＫ番号フィールド２５１で示されるＬＤＩＳＫに保存されるべきデータ）のエントリ状態をセクタ単位で示すビットマップ（第１の変数）を保持するのに用いられる。ＲＤＣビットフィールド２５５は、該当キャッシュブロック内のリードキャッシュデータのエントリ状態をセクタ単位で示すビットマップを保持するのに用いられる。スナップビットフィールド２５６は、該当キャッシュブロックにおいてバックアップＬＤＩＳＫに保存されるべきデータ（未保存のスナップデータ）のエントリ状態をセクタ単位で示すビットマップ（第２の変数）を保持するのに用いられる。
【００３４】
ＷＢＣビットフィールド２５４、ＲＤＣビットフィールド２５５及びスナップビットフィールド２５６にそれぞれ保持されるビットマップを構成するビットを、それぞれ、ＷＢＣビット、ＲＤＣビット及びスナップビットと称する。ＷＢＣビット、ＲＤＣビット及びスナップビットは、例えば“１”のとき該当キャッシュブロック内の該当セクタのデータ（ダーティデータ、リードキャッシュデータ、及び未保存のスナップデータ）がキャッシュメモリ１０４にエントリされており、“０”のとき該当セクタのデータはキャッシュメモリ１０４にエントリされていないことを示す。
【００３５】
本実施形態では、１キャッシュブロックは１６ＫＢ（キロバイト）であり、１セクタは５１２Ｂ（バイト）である。つまり、１キャッシュブロックのサイズは３２セクタ分である。したがって、ＷＢＣビットフィールド２５４、ＲＤＣビットフィールド２５５及びスナップビットフィールド２５６の各フィールドに保持されるビットマップは、３２ビットで構成される。ＬＤＩＳＫ１１ｉ毎の“１”のスナップビットが存在するキャッシュブロックの数（未保存のスナップデータが存在するキャッシュブロックの数）は、スナップカウンタ２６０ｉによってカウントされる。
【００３６】
図５は、本実施形態で適用されるレプリケーション（筐体内レプリケーション）の状態遷移の一例を示す。本実施形態のデータ記憶装置１において取り得るレプリケーションの状態、つまりマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション（レプリケーション管理）の状態は、同期状態（第１の状態）、スプリット状態（第２の状態）及びスプリット移行状態（第３の状態）の３つである。
【００３７】
「同期状態」とは、本実施形態のようにＬＤＩＳＫ１１ａがマスタＬＤＩＳＫ（一次記憶媒体）で、ＬＤＩＳＫ１１ｂがバックアップＬＤＩＳＫ（二次記憶媒体）である場合、両ＬＤＩＳＫがミラーとして同期をとって運用されている状態を指す。「スプリット状態」とは、マスタＬＤＩＳＫとバックアップＬＤＩＳＫとが論理的に分離（切り離）されている状態を指す。
【００３８】
「スプリット移行状態」とは、「同期状態」から「スプリット状態」へ移行する中間状態であり、スナップショットがバックアップＬＤＩＳＫ１１ｂのデータとして確定していない状態を指す。具体的には、マスタＬＤＩＳＫ１１ａに対応付けられているキャッシュブロックの中に、バックアップＬＤＩＳＫ１１ｂに保存されるべきデータ（未保存のスナップデータ）を含むキャッシュブロックが１つ以上存在する状態を指す。つまり、「スプリット移行状態」とは、マスタＬＤＩＳＫ１１ａに対応付けられているキャッシュ管理モジュール２４０のエントリの中に、“１”にセットされているスナップビットを含むエントリが１つ以上存在する状態を指す。
【００３９】
なお、「スプリット移行状態」はホスト機器からは認識されないものとする。つまりデータ記憶装置１における「スプリット移行状態」は、ホスト機器からは「スプリット状態」として認識されるものとする。
【００４０】
以下の説明では、レプリケーションが設定されるマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂの両ＬＤＩＳＫ（論理ディスク）を、メンバＬＤＩＳＫ（メンバ論理ディスク）、またはレプリケーションを構成するメンバＬＤＩＳＫと称することがある。
【００４１】
レプリケーションの状態は、レプリケーション管理テーブル２７０によって管理される。図６は、レプリケーション管理テーブル２７０のデータ構造例を示す。レプリケーション管理テーブル２７０の各エントリは、マスタＬＤＩＳＫ番号フィールド２７１、バックアップＬＤＩＳＫ番号フィールド２７２及びステータスフィールド２７３から構成される。
【００４２】
マスタＬＤＩＳＫ番号フィールド２７１及びバックアップＬＤＩＳＫ番号フィールド２７２は、レプリケーションを構成するメンバＬＤＩＳＫのそれぞれＬＤＩＳＫ番号（マスタＬＤＩＳＫ番号及びバックアップＬＤＩＳＫ番号）を保持するのに用いられる。ステータスフィールド２７３は、フィールド２７１及び２７２に保持されているＬＤＩＳＫ番号で指定されるメンバＬＤＩＳＫのレプリケーション状態を示すステータス情報を保持するのに用いられる。
【００４３】
マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーションの状態が同期状態にあるときに、制御装置１０内のホストインタフェース制御部２１０がホスト機器からスナップショット作成（ミラー状態の解除）を指示するためのスプリットコマンド（スナップショット作成要求）を受信したものとする。ＩＯ管理部２２０は、このスプリットコマンドをホストインタフェース制御部２１０から受け取ると、キャッシュ管理モジュール２４０内のＩＯアクセス制御部２４１を介してキャッシュメモリ管理部２４３にスナップショット作成を要求する。すると、キャッシュメモリ管理部２４３はスナップショット作成手段として機能して、以下に述べるスナップショット作成処理を実行する。
【００４４】
以下、スプリットコマンド受信時のキャッシュメモリ管理部２４３を中心とする動作について、図７のフローチャートを参照して説明する。  
まずキャッシュメモリ管理部２４３は、キャッシュブロック管理テーブル２５０を参照し、ＬＤＩＳＫ番号フィールド２５１に保持されているＬＤＩＳＫ番号がマスタＬＤＩＳＫ１１ａのＬＤＩＳＫ番号と一致、且つＷＢＣビットフィールド２５４に保持されているビットマップに“０”でないＷＢＣビット（つまり、“１”にセットされているＷＢＣビット）を含むエントリ（目的エントリ）をサーチする（ステップＳ１）。
【００４５】
キャッシュメモリ管理部２４３は、ステップＳ１でのサーチの結果、目的エントリの有無を判定する（ステップＳ２）。もし、目的エントリがあったならば（ステップＳ２がＹｅｓ）、つまりキャッシュメモリ１０４上にマスタＬＤＩＳＫ１１ａに保存されるべきデータ（ダーティデータ）が存在するならば、サーチされた全ての目的エントリについて、キャッシュメモリ管理部２４３は、エントリのＷＢＣビットフィールド２５４に保持されているビットマップ（ＷＢＣビット群）を、エントリ内のスナップビットフィールド２５６にスナップビット群からなるビットマップとしてコピーする（ステップＳ３）。このコピーにより、サーチされた各目的エントリのスナップビットフィールド２５６に保持されるビットマップは、スプリットコマンド受信時における未保存のスナップデータの範囲を示す。
【００４６】
そしてキャッシュメモリ管理部２４３は、マスタＬＤＩＳＫ１１ａに対応したスナップカウンタ２６０ａを、例えばサーチできたエントリの数だけインクリメントする（ステップＳ４）。スナップカウンタ２６０ａの値は、キャッシュメモリ１０４に存在する、バックアップＬＤＩＳＫ１１ｂに保存されるべきスナップデータを含むキャッシュブロックの数を示す。なお、本実施形態と異なって、ＬＤＩＳＫ１１ａがバックアップＬＤＳＩＫ、ＬＤＩＳＫ１１ｂがマスタＬＤＩＳＫとして用いられる場合には、キャッシュメモリ１０４に存在する、バックアップＬＤＩＳＫに保存されるべきスナップデータを含むキャッシュブロックの数を示すのに、スナップカウンタ２６０ｂが用いられる。
【００４７】
ステップＳ４が実行された場合、スナップカウンタ２６０ａの値は０でなく、１より大きい。このことは、バックアップＬＤＩＳＫ１１ｂに保存されるべきスナップデータを含むキャッシュブロックがキャッシュメモリ１０４内に存在することを示す。この場合、キャッシュメモリ管理部２４３は、レプリケーション管理テーブル２７０内でマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのＬＤＩＳＫ番号に対応付けて保持されているステータス情報を、レプリケーション管理部２３０によって、同期状態を示すステータス情報からスプリット移行状態を示すステータス情報に更新させる（ステップＳ５）。これにより、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション状態は、図５において矢印５０１で示されるように、同期状態からスプリット移行状態に遷移する。
【００４８】
キャッシュメモリ管理部２４３は、ステップＳ５の実行後、ホスト機器からのスプリットコマンド（スプリット要求）に対し、レプリケーション管理部２３０によりＩＯ管理部２２０を介してホスト機器にスプリット完了を通知させる（ステップＳ７）。
【００４９】
このように本実施形態においては、ホスト機器からのスプリットコマンドの受信時に、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂに対するデステージングが行われない。キャッシュメモリ管理部２４３（スナップショット作成手段）は、キャッシュブロック管理テーブル２５０内の、“１”にセットされているＷＢＣビットを含むエントリを対象に、エントリのＷＢＣビットフィールド２５４に保持されているビットマップを、エントリ内のスナップビットフィールド２５６にコピーする動作の完了をもって、ホスト機器にスプリット完了を通知する。ホスト機器は、このスプリット完了通知により、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーションの状態が、同期状態からスプリット状態に遷移したと認識する。つまり本実施形態では、データ記憶装置１におけるスプリット移行状態は、ホスト機器からは、前述のにようにスプリット状態として認識される。
【００５０】
一方、目的エントリが１つもなかった場合（ステップＳ２がＮｏ）、つまりキャッシュメモリ１０４上にダーティデータが存在せず、スナップカウンタ２６０ａの値が０の場合には、キャッシュメモリ管理部２４３は、レプリケーション管理テーブル２７０内でマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのＬＤＩＳＫ番号に対応付けて保持されているステータス情報を、レプリケーション管理部２３０によって、スプリット状態を示すステータス情報に更新させる（ステップＳ６）。つまりマスタＬＤＩＳＫ１１ａに保存されるべきダーティデータが存在せず、したがってバックアップＬＤＩＳＫ１１ｂに保存されるべきスナップデータも存在しない場合、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション状態は、同期状態から、スプリット移行状態を経由することなく、スプリット状態に遷移する。しかし、このような状態遷移の例は希である。通常は、後述するようにスプリット完了通知後に、図５において矢印５０２で示されるように、スプリット移行状態からスプリット状態に遷移する。
【００５１】
キャッシュメモリ管理部２４３は、ステップＳ６の実行後、ホスト機器からのスプリットコマンドに対し、レプリケーション管理部２３０によりＩＯ管理部２２０を介してホスト機器にスプリット完了を通知させる（ステップＳ７）。
【００５２】
その後、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂがスプリット状態にあるときに、ホスト機器から制御装置１０に対してシンクコマンドが発行されたものとする。この場合、ホスト機器からのマスタＬＤＩＳＫ１１ａに対するＩ／Ｏ要求及びバックアップＬＤＩＳＫ１１ｂに対するＩ／Ｏ要求が一時止められる。ここで、マスタＬＤＩＳＫ１１ａの内容とバックアップＬＤＩＳＫ１１ｂの内容とが相違しているならば、その相違しているマスタＬＤＩＳＫ１１ａのデータの複製（コピー）がバックアップＬＤＩＳＫ１１ｂに保存される。そして、レプリケーション管理テーブル２７０内でマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのＬＤＩＳＫ番号に対応付けて保持されているステータス情報が、スプリット状態から同期状態に更新される。これにより、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション状態が、図５において矢印５０３で示されるように、スプリット状態から同期状態に遷移する。
【００５３】
次に、メンバＬＤＩＳＫのうちの、例えばマスタＬＤＩＳＫ１１ａにデータを書き込むことを要求するための書き込み要求（第１の書き込み要求）が、ホスト機器から制御装置１０に対して発行された場合の動作について、図８のフローチャートを参照して説明する。
【００５４】
ホスト機器からの第１の書き込み要求は、制御装置１０内のホストインタフェース制御部２１０で受信されて、ＩＯ管理部２２０を介してキャッシュ管理モジュール２４０に渡される。するとキャッシュ管理モジュール２４０内のキャッシュメモリ管理部２４３は書き込み制御手段として機能して、図８のフローチャートに従う処理を次のように実行する。
【００５５】
まずキャッシュメモリ管理部２４３は、ホスト機器からの第１の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル２５０を参照し、アクセス情報によって示されるマスタＬＤＩＳＫ１１ａ内のアクセス範囲（書き込み範囲）に対応するキャッシュブロックのエントリをサーチする（ステップＳ１１）。
【００５６】
次にキャッシュメモリ管理部２４３は、サーチされたキャッシュブロック管理テーブル２５０内のエントリのスナップビットフィールド２５６に保持されているビットマップ（スナップビット群）のうちの“１”にセットされているスナップビットの範囲と、アクセス範囲とが重複しているかを判定する（ステップＳ１２）。つまりキャッシュメモリ管理部２４３は、スナップ時のダーティデータの範囲とアクセス範囲とが重複しているかを判定する。
【００５７】
もし、両範囲が重複しているならば（ステップＳ１２がＹｅｓ）、その重複を解消するために、キャッシュメモリ管理部２４３は、キャッシュメモリ１０４に格納されている、その重複範囲に対応するキャッシュブロック内のデータ（未保存のスナップ時のデータ）をバックアップＬＤＩＳＫ１１ｂに書き込むための書き込みリクエスト（をＬＤＩＳＫアクセス制御部２４４に発行し、バックアップＬＤＩＳＫ１１ｂに重複範囲に対応するスナップ時のデータを保存する（ステップＳ１３）。
【００５８】
書き込みリクエストの発行によりＬＤＩＳＫアクセス制御部２４４は、ＲＡＩＤ制御部２８０及びＨＤＤインタフェース制御部２９０を介して、重複範囲に対応するキャッシュブロック内のデータを、バックアップＬＤＩＳＫ１１ｂの該当するアクセス範囲に書き込むためのライトアクセス制御を開始する。このバックアップＬＤＩＳＫ１１ｂへのライトアクセス制御により、バックアップＬＤＩＳＫ１１ｂに重複範囲に対応するスナップ時のデータが保存される。
【００５９】
もし本実施形態と異なって、ステップＳ１１〜Ｓ１３が実行されずに、ホスト機器からの第１の書き込み要求に従ってマスタＬＤＩＳＫ１１ａに対するデータの書き込みが行われたならば、重複範囲に対応するキャッシュメモリ１０４の領域のデータが、第１の書き込み要求で指定される新たなデータで上書きされるため、重複範囲に対応するスナップ時のデータが失われてしまう。そのため従来技術では、ホスト機器からのスプリットコマンドの受信時に、キャッシュメモリ１０４上のダーティデータをマスタディスクとバックアップディスクの両方に吐き出すデステージングを必要とする。本実施形態では、このようなデステージングを行うことなく、重複範囲に対応するスナップ時のデータが失われてしまう不具合を防止することができる。
【００６０】
さて、キャッシュメモリ管理部２４３は、ステップＳ１３の後、サーチされたキャッシュブロック管理テーブル２５０内のエントリのスナップビットフィールド２５６に保持されているビットマップ（スナップビット群）のうちの重複範囲のスナップビットを“０”にリセットする（ステップＳ１４）。これにより、スナップ時より後に重複範囲に対応するマスタＬＤＩＳＫ１１ａの領域に書き込まれるデータが、未保存のスナップデータとしてバックアップＬＤＩＳＫ１１ｂに保存される不具合を防止できる。
【００６１】
次にキャッシュメモリ管理部２４３は、重複範囲のスナップビットをリセットしたことにより、サーチされたキャッシュブロック管理テーブル２５０内のエントリのスナップビットフィールド２５６に保持されているビットマップ中の全スナップビットが全て“０”となっているかを判定する（ステップＳ１５）。もし、全スナップビットが “０”となっているならば（ステップＳ１５がＹｅｓ）、キャッシュメモリ管理部２４３はマスタＬＤＩＳＫ１１ａに対応して設けられているスナップカウンタ２６０ａを、重複範囲に対応するキャッシュブロックの数だけディクリメントする（ステップＳ１６）。
【００６２】
次にキャッシュメモリ管理部２４３は、スナップカウンタ２６０ａをディクリメントした結果、スナップカウンタ２６０ａの値が０となったかを判定する（ステップＳ１７）。もし、スナップカウンタ２６０ａの値が０となったならば（ステップＳ１７がＹｅｓ）、キャッシュメモリ管理部２４３は、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション状態を、レプリケーション管理部２３０によってスプリット移行状態からスプリット状態に遷移させる（ステップＳ１８）。即ちレプリケーション管理部２３０は、キャッシュメモリ管理部２４３からの要求に応じて、レプリケーション管理テーブル２７０内でマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのＬＤＩＳＫ番号に対応付けて保持されているステータス情報を、スプリット状態を示すステータス情報に更新する。
【００６３】
すると、ＩＯ管理部２２０は、ホスト機器からの第１の書き込み要求で指定されたマスタＬＤＩＳＫ１１ａに書き込むべきデータ（ライトデータ）を、ホスト機器に要求する（ステップＳ１９）。以降の動作は従来と同様であり、まず、ＩＯ管理部２２０からホスト機器に要求されたデータ（第１の書き込み要求で指定されたマスタＬＤＩＳＫ１１ａに書き込むべきデータ）が、ホスト機器から制御装置１０に転送される。ホスト機器から制御装置１０に転送されたライトデータは、制御装置１０で受信される。
【００６４】
本実施形態において、ホスト機器から転送されたデータの「受信」とは、データがキャッシュメモリ１０４にエントリされることを含む。つまり、ホスト機器から制御装置１０に転送された、マスタＬＤＩＳＫ１１ａに書き込むべきライトデータは、ステップＳ１１でサーチされたキャッシュブロック管理テーブル２５０の目的エントリに対応付けられているキャッシュメモリ１０４内のキャッシュブロックに、ＩＯ管理部２２０からの要求に基づくＩＯアクセス制御部２４１の制御の下で、キャッシュメモリ管理部２４３によってエントリされる。すると、ＩＯ管理部２２０からホスト機器に対して書き込み処理完了が通知される。このときキャッシュメモリ管理部２４３は、サーチされた目的エントリのＷＢＣビットフィールド２５４に保持されているビットマップのうち、第１の書き込み要求で指定されたアクセス範囲に対応するＷＢＣビットを“１”にセットする。
【００６５】
一方、ステップＳ１２、Ｓ１５またはＳ１７の判定がＮｏの場合には、ステップＳ１２、Ｓ１５またはＳ１７に続いてステップＳ１９が実行される。
【００６６】
なお、図８のフローチャートでは省略されているが、ステップＳ１１で目的エントリをサーチできなかった場合、つまりアクセス範囲にヒットしなかった場合にも、ステップＳ１９が実行される。但し、目的エントリをサーチできなかった場合、キャッシュメモリ管理部２４３は、キャッシュメモリ１０４上のキャッシュブロック（空きキャッシュブロック）を確保して、確保されたキャッシュブロックに、ライトデータをエントリする。すると、ＩＯ管理部２２０からホスト機器に対して書き込み処理完了が通知される。
【００６７】
このときキャッシュメモリ管理部２４３は、キャッシュブロック管理テーブル２５０内の空きエントリを確保して、確保されたエントリに、キャッシュブロックをマスタＬＤＩＳＫ１１ａのアクセス範囲に対応付けて管理するためのエントリ情報を設定する。このエントリ情報のＬＤＩＳＫ番号フィールド２５１にはマスタＬＤＩＳＫ１１ａのＬＤＩＳＫ番号が保持され、ＷＢＣビットフィールド２５４にはデータの範囲を示すビットマップ（ＷＢＣビット群）が保持される。
【００６８】
次に、レプリケーションが設定されているマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのうちの、バックアップＬＤＩＳＫ１１ｂにデータを書き込むための書き込み要求（第２の書き込み要求）が、ホスト機器から制御装置１０に対して発行された場合の動作について、図９のフローチャートを参照して説明する。
【００６９】
ホスト機器からの第２の書き込み要求は、ホストインタフェース制御部２１０で受信されて、ＩＯ管理部２２０を介してキャッシュ管理モジュール２４０に渡される。するとキャッシュ管理モジュール２４０内のキャッシュメモリ管理部２４３は書き込み制御手段として機能して、図９のフローチャートに従う処理を次のように実行する。
【００７０】
まずキャッシュメモリ管理部２４３は、ホスト機器からの第２の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル２５０を参照し、アクセス情報によって指定されるバックアップＬＤＩＳＫ１１ｂ内のアクセス範囲（書き込み範囲）に対応するキャッシュブロックのエントリをサーチする（ステップＳ２１）。
【００７１】
するとＩＯ管理部２２０は、ホスト機器からの第２の書き込み要求で指定されたバックアップＬＤＩＳＫ１１ｂに書き込むべきデータを、ホスト機器に要求する（ステップＳ２２）。これにより、第２の書き込み要求で指定されたバックアップＬＤＩＳＫ１１ｂに書き込むべきデータがホスト機器から転送されて、制御装置１０で受信される。つまり、バックアップＬＤＩＳＫ１１ｂに書き込むべきデータは、ステップＳ１１でサーチされたキャッシュブロック管理テーブル２５０の目的エントリに対応付けられているキャッシュメモリ１０４内のキャッシュブロックにエントリされる。
【００７２】
なお、図９のフローチャートでは省略されているが、ステップＳ２１で目的エントリをサーチできなかった場合、つまりアクセス範囲にヒットしなかった場合にも、ステップＳ２２が実行される。但し、目的エントリをサーチできなかった場合、キャッシュメモリ管理部２４３は、キャッシュメモリ１０４上のキャッシュブロックを確保して、確保されたキャッシュブロックに、上記データを格納する。このときキャッシュメモリ管理部２４３は、キャッシュメモリ１０４内のエントリを確保して、確保されたエントリに、キャッシュブロックをバックアップＬＤＩＳＫ１１ｂのアクセス範囲に対応付けて管理するためのエントリ情報を設定する。このエントリ情報のＬＤＩＳＫ番号フィールド２５１にはバックアップＬＤＩＳＫ１１ｂのＬＤＩＳＫ番号が保持され、ＷＢＣビットフィールド２５４にはデータの範囲を示すビットマップ（ＷＢＣビット群）が保持される。
【００７３】
次にキャッシュメモリ管理部２４３は、レプリケーション管理テーブル２７０を参照し、バックアップＬＤＩＳＫ１１ｂをメンバＬＤＩＳＫとするレプリケーションの状態がスプリット移行状態にあるかを判定する（ステップＳ２３）。このレプリケーションの状態は、バックアップＬＤＩＳＫ１１ｂのＬＤＩＳＫ番号が保持されているバックアップＬＤＩＳＫ番号フィールド２７２を含むレプリケーション管理テーブル２７０のエントリを探して、エントリ内のステータスフィールド２７３を参照することによって判定することができる。
【００７４】
もし、レプリケーションの状態がスプリット移行状態にある場合（ステップＳ２３がＹｅｓ）、キャッシュメモリ管理部２４３は、第２の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル２５０を参照し、アクセス情報よって示されるバックアップＬＤＩＳＫ１１ｂ内のアクセス範囲（書き込み範囲）と同一のマスタＬＤＩＳＫ１１ａ内の範囲（領域）に対応するキャッシュブロックのエントリをサーチする（ステップＳ２４）。このステップＳ２４は、例えばステップＳ２２でホスト機器に要求されたデータ（バックアップＬＤＩＳＫ１１ｂに書き込まれるべきデータ）がホスト機器から転送されて制御装置１０で受信された後に実行される。
【００７５】
キャッシュメモリ管理部２４３は、ステップＳ２４でのサーチの結果、キャッシュブロック管理テーブル２５０内の該当するキャッシュブロックの目的エントリがサーチできたかを判定する（ステップＳ２５）。もし、目的エントリがサーチできたならば（ステップＳ２５がＹｅｓ）、つまりアクセス範囲にヒットしたならば、キャッシュメモリ管理部２４３は、エントリのスナップビットフィールド２５６に保持されているビットマップ（スナップビット群）のうちのアクセス範囲に対応するスナップビットの範囲に“１”にセットされているスナップビットが存在するかを判定する（ステップＳ２６）。
【００７６】
ここで、アクセス範囲に対応するスナップビットの範囲に、“１”にセットされているスナップビットが存在するものとする（ステップＳ２６がＹｅｓ）。つまり、サーチされたキャッシュブロック管理テーブル２５０内のエントリのスナップビットフィールド２５６に保持されているビットマップ（スナップビット群）のうちの“１”にセットされているスナップビットの範囲と、アクセス範囲（書き込み範囲）に対応するスナップビットの範囲とが重複しているものとする。
【００７７】
このことは、バックアップＬＤＩＳＫにおける重複しているスナップデータの領域に、第２の書き込み要求で指定されたデータが上書きされることとなるため、重複領域に対応するキャッシュブロック内のデータ（未保存のスナップ時のデータ）をバックアップＬＤＩＳＫに書き込む必要がなくなることを意味する。逆に、第２の書き込み要求で指定されたデータのバックアップＬＤＩＳＫ１１ｂへの書き込みが実行されたとしても、重複領域に対応するキャッシュブロック内のデータ（未保存のスナップ時のデータ）をバックアップＬＤＩＳＫに書き込む動作が行われるならば、第２の書き込み要求で指定されたデータはマスタＬＤＩＳＫ１１ａの古いデータで上書きされる可能性がある。
【００７８】
そこで本実施形態においキャッシュメモリ管理部２４３は、ステップＳ２４でサーチされたキャッシュブロック管理テーブル２５０内のエントリのスナップビットフィールド２５６に保持されているビットマップ（スナップビット群）のうち、アクセス範囲に対応するスナップビットを“０”にリセットする（ステップＳ２７）。これにより、第２の書き込み要求で指定されたデータのバックアップＬＤＩＳＫ１１ｂへの書き込みが実行されても、そのデータが重複範囲に対応するマスタＬＤＩＳＫ１１ａの古いデータで上書きされることを防止できる。
【００７９】
次にキャッシュメモリ管理部２４３は、アクセス範囲に対応するスナップビットをリセットしたことにより、サーチされたキャッシュブロック管理テーブル２５０内のエントリのスナップビットフィールド２５６に保持されているビットマップ中の全スナップビットが全て“０”となっているかを判定する（ステップＳ２８）。もし、全スナップビットが “０”となっているならば（ステップＳ２８がＹｅｓ）、キャッシュメモリ管理部２４３はマスタＬＤＩＳＫ１１ａに対応したスナップカウンタ２６０ａを、アクセス範囲に対応するキャッシュブロックの数だけディクリメントする（ステップＳ２９）。
【００８０】
次にキャッシュメモリ管理部２４３は、スナップカウンタ２６０ａをディクリメントした結果、スナップカウンタ２６０ａの値が０となったかを判定する（ステップＳ３０）。もし、スナップカウンタ２６０ａの値が０となったならば（ステップＳ３０がＹｅｓ）、キャッシュメモリ管理部２４３は、ステップＳ１８と同様に、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション状態を、レプリケーション管理部２３０によってスプリット移行状態からスプリット状態に遷移させる（ステップＳ３１）。
【００８１】
次に、ホスト機器から制御装置１０に対して、マスタＬＤＩＳＫ１１ａからデータを読み込むことを要求するための読み込み要求（第１の読み込み要求）が発行されたものとする。この場合、全てのレプリケーション状態で処理の内容に差異はないため、説明を省略する。
【００８２】
次に、ホスト機器から制御装置１０に対して、バックアップＬＤＩＳＫ１１ｂからデータを読み込むことを要求するための読み込み要求（第２の読み込み要求）が発行された場合の動作について、図１０のフローチャートを参照して説明する。
【００８３】
ホスト機器からの第２の読み込み要求は、制御装置１０内のホストインタフェース制御部２１０で受信されて、ＩＯ管理部２２０を介してキャッシュ管理モジュール２４０に渡される。するとキャッシュ管理モジュール２４０内のキャッシュメモリ管理部２４３は読み込み制御手段として機能して、図１０のフローチャートに従う処理を次のように実行する。
【００８４】
まずキャッシュメモリ管理部２４３は、ステップＳ２３と同様に、レプリケーション管理テーブル２７０を参照し、バックアップＬＤＩＳＫ１１ｂをメンバＬＤＩＳＫとするレプリケーションの状態がスプリット移行状態にあるかを判定する（ステップＳ４１）。
【００８５】
もし、レプリケーションの状態がスプリット移行状態にある場合（ステップＳ４１がＹｅｓ）、キャッシュメモリ管理部２４３は、第２の読み込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル２５０を参照し、アクセス情報よって示されるバックアップＬＤＩＳＫ１１ｂ内のアクセス範囲（読み込み範囲）と同一のマスタＬＤＩＳＫ１１ａ内の範囲（領域）に対応するキャッシュブロックのエントリをサーチする（ステップＳ４２）。
【００８６】
キャッシュメモリ管理部２４３は、ステップＳ４２でのサーチの結果、キャッシュブロック管理テーブル２５０内の該当するキャッシュブロックの目的エントリがサーチできたかを判定する（ステップＳ４３）。もし、目的エントリがサーチできたならば（ステップＳ４３がＹｅｓ）、つまりアクセス範囲にヒットしたならば、キャッシュメモリ管理部２４３は、エントリのスナップビットフィールド２５６に保持されているビットマップ（スナップビット群）のうちの“１”にセットされているスナップビットの範囲と、アクセス範囲（読み込み範囲）に対応するスナップビットの範囲とが重複しているかを判定する（ステップＳ４４）。つまりキャッシュメモリ管理部２４３は、スナップ時のダーティデータ（未保存のスナップデータ）とアクセス範囲とが重複しているかを判定する。
【００８７】
もし、両範囲が重複しているならば（ステップＳ４４がＹｅｓ）、その重複範囲に関しては、キャッシュメモリ管理部２４３は、キャッシュメモリ１０４に格納されている、重複範囲に対応するキャッシュブロック内のデータ、つまり未保存のスナップ時のマスタＬＤＩＳＫ１１ａのデータを、ＩＯアクセス制御部２４１により、バックアップＬＤＩＳＫ１１ｂのデータとしてホスト機器に転送させる（ステップＳ４５）。
【００８８】
一方、バックアップＬＤＩＳＫ１１ｂ内のアクセス範囲のうち重複範囲以外の範囲（非重複範囲）に関しては、キャッシュメモリ管理部２４３はキャッシュブロック管理テーブル２５０を参照し、バックアップＬＤＩＳＫ１１ｂの非重複範囲に対応するキャッシュブロックのエントリをサーチする（ステップＳ４６）。キャッシュメモリ管理部２４３は、バックアップＬＤＩＳＫ１１ｂの非重複範囲に対応するキャッシュブロックのエントリがサーチできたか否かによって、キャッシュブロックのデータ、またはバックアップＬＤＩＳＫ１１ｂ内の非重複範囲のデータを、ＩＯアクセス制御部２４１によってホスト機器に転送させる（ステップＳ４７）。
【００８９】
一方、ステップＳ４１、Ｓ４３またはＳ４４の判定がＮｏの場合、キャッシュメモリ管理部２４３は、第２の読み込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル２５０を参照し、アクセス情報によって示されるバックアップＬＤＩＳＫ１１ｂ内のアクセス範囲に対応するキャッシュブロックのエントリをサーチする（ステップＳ４６）。このアクセス範囲は、重複範囲が０の場合の非重複範囲に相当する。キャッシュメモリ管理部２４３は、バックアップＬＤＩＳＫ１１ｂのアクセス範囲に対応するキャッシュブロックのエントリがサーチできたか否かによって、キャッシュブロックのデータ、またはバックアップＬＤＩＳＫ１１ｂ内のアクセス範囲のデータを、ＩＯアクセス制御部２４１によってホスト機器に転送させる（ステップＳ４７）。
【００９０】
次に、デステージング時の動作について、図１１のフローチャートを参照して説明する。今、デステージング／ステージング制御部２４２が、マスタＬＤＩＳＫ１１ａまたはバックアップＬＤＩＳＫ１１ｂに対して未だ書き込みが実施されていないキャッシュメモリ１０４上のデータを対象とするデステージングを、ＩＯ管理部２２０に対して要求したものとする。このデステージング要求はＩＯ管理部２２０からＩＯアクセス制御部２４１を介してキャッシュメモリ管理部２４３に通知される。するとキャッシュメモリ管理部２４３は書き込み制御手段として機能して、図１１のフローチャートに従う処理を次のように実行する。
【００９１】
まずキャッシュメモリ管理部２４３は、キャッシュブロック管理テーブル２５０を参照し、ＷＢＣビットフィールド２５４に保持されているビットマップ（ＷＢＣビット群）内に“１”にセットされているＷＢＣビットが存在するキャッシュブロックのエントリをサーチする（ステップＳ５１）。
【００９２】
キャッシュメモリ管理部２４３は、ステップＳ５１でサーチされた各キャッシュブロックのエントリについて、エントリのスナップビットフィールド２５６に保持されているビットマップ（スナップビット群）内に“１”にセットされているスナップビットが存在するかを判定する（ステップＳ５２）。
【００９３】
キャッシュメモリ管理部２４３は、“１”にセットされているスナップビットが存在するエントリ（ステップＳ５２の判定がＹｅｓのエントリ）について、エントリのスナップビットフィールド２５６及びＷＢＣビットフィールド２５４を比較し、“１”であるスナップビットの範囲とＷＢＣビットの範囲が一致しているかを判定する（ステップＳ５３）。
【００９４】
もし、一致している場合（ステップＳ５３がＹｅｓ）、キャッシュメモリ管理部２４３は、キャッシュブロック内のその範囲のデータをマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂの双方に書き込むことを、ＬＤＩＳＫアクセス制御部２４４に対して要求する（ステップＳ５４）。
【００９５】
これに対し、一致していない場合（ステップＳ５３がＮｏ）、キャッシュメモリ管理部２４３は、キャッシュブロック内のＷＢＣビットが“１”の範囲のデータをマスタＬＤＩＳＫ１１ａに書き込み、キャッシュブロック内のスナップビットが“１”の範囲のデータをバックアップＬＤＩＳＫ１１ｂに書き込むことを、ＬＤＩＳＫアクセス制御部２４４に対して要求する（ステップＳ５５）。
【００９６】
なお、ステップＳ５４は、ステップＳ５５と等価である。よって、ステップＳ５３の判定を省略して、常にステップＳ５４あるいはステップＳ５５が行われる構成であっても構わない。
【００９７】
キャッシュメモリ管理部２４３は、ステップＳ５４またはＳ５５（に基づく書き込み）が行われると、“１”にセットされているスナップビットが存在するキャッシュブロック管理テーブル２５０内の該当エントリのＷＢＣビットフィールド２５４及びスナップビットフィールド２５６を対象に、それぞれ、ＬＤＩＳＫアクセス制御部２４４に対して要求された書き込み範囲に対応するＷＢＣビット及びスナップビットをクリアする（ステップＳ５６）。
【００９８】
次にキャッシュメモリ管理部２４３は、書き込み範囲のスナップビットをリセットしたことにより、キャッシュブロック管理テーブル２５０内の該当エントリの中に、スナップビットフィールド２５６に保持されているビットマップ中の全スナップビットが全て“０”となったエントリが存在するかを判定する（ステップＳ５７）。もし、該当するエントリが存在するならば（ステップＳ５７がＹｅｓ）、キャッシュメモリ管理部２４３はマスタＬＤＩＳＫ１１ａに対応して設けられているスナップカウンタ２６０ａを、対応するキャッシュブロックの数だけディクリメントする（ステップＳ５８）。
【００９９】
次にキャッシュメモリ管理部２４３は、スナップカウンタ２６０ａをディクリメントした結果、スナップカウンタ２６０ａの値が０となったかを判定する（ステップＳ５９）。もし、スナップカウンタ２６０ａの値が０となったならば（ステップＳ５９がＹｅｓ）、キャッシュメモリ管理部２４３は、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション状態を、レプリケーション管理部２３０によって、スプリット移行状態からスプリット状態に遷移させる（ステップＳ６０）。即ちレプリケーション管理部２３０は、キャッシュメモリ管理部２４３からの要求に応じて、レプリケーション管理テーブル２７０内でマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのＬＤＩＳＫ番号に対応付けて保持されているステータスを、スプリット状態を示すステータスに更新する。
【０１００】
一方、ステップＳ５７の判定がＮｏの場合、ステップＳ５８以降の処理は行われない。また、ステップＳ５９の判定がＮｏの場合、ステップＳ６０の処理は行われない。
【０１０１】
さて、キャッシュメモリ管理部２４３は、“１”にセットされているＷＢＣビットは存在するが、“１”にセットされているスナップビットは存在しないエントリ（ステップＳ５２の判定がＮｏのエントリ）に対応するキャッシュブロックについて、次のように処理する。まずキャッシュメモリ管理部２４３は、レプリケーション管理テーブル２７０を参照して、レプリケーションの状態が同期状態にあるかを判定する（ステップＳ６１）。
【０１０２】
もし、同期状態にある場合（ステップＳ６１がＹｅｓ）、キャッシュメモリ管理部２４３は、ステップＳ５２の判定がＮｏのエントリのＷＢＣビットフィールド２５４に基づき、エントリに対応するキャッシュブロック内のＷＢＣビットが“１”の範囲のデータをマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂの双方に書き込む（筐体内レプリケーションの）ための書き込みリクエストをＬＤＩＳＫアクセス制御部２４４に発行する（ステップＳ６２）。
【０１０３】
キャッシュメモリ管理部２４３は、書き込みリクエストに基づく書き込み（ここでは筐体内レプリケーション）が行われると、ステップＳ５２の判定がＮｏのエントリ（“１”にセットされているスナップビットが存在しないエントリ）のＷＢＣビットフィールド２５４を対象に、書き込みリクエストで指定した書き込み範囲に対応するＷＢＣビットをリセットする（ステップＳ６４）。
【０１０４】
これに対し、同期状態にないならば（ステップＳ６１がＮｏ）、キャッシュメモリ管理部２４３は、ステップＳ５２の判定がＮｏのエントリのＷＢＣビットフィールド２５４に基づき、エントリに対応するキャッシュブロック内のＷＢＣビットが“１”の範囲のデータをマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのいずれか一方に書き込むための書き込みリクエストをＬＤＩＳＫアクセス制御部２４４に発行する（ステップＳ６３）。マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのいずれにデータを書き込むかは、ステップＳ５２の判定がＮｏのエントリのＬＤＩＳＫ番号フィールド２５１に保持されているＬＤＩＳＫ番号が、マスタＬＤＩＳＫ１１ａまたはバックアップＬＤＩＳＫ１１ｂのいずれ対応付けられているかによって決定される。
【０１０５】
キャッシュメモリ管理部２４３は、書き込みリクエストに基づく書き込みが行われると、ステップＳ５２の判定がＮｏのエントリのＷＢＣビットフィールド２５４を対象に、書き込み範囲に対応するＷＢＣビットをリセットする（ステップＳ６４）。
【０１０６】
このように本実施形態においては、ホスト機器からのスプリットコマンドの受信時に、キャッシュブロック管理テーブル２５０内のエントリのＷＢＣビットフィールド２５４に保持されているビットマップ（キャッシュメモリ１０４にキャッシングされたデータのうちマスタＬＤＩＳＫ１１ａに対して書き込みが実施されていないダーティデータの範囲を示すビットマップ）が、エントリのスナップビットフィールド２５６に保持されているビットマップ（バックアップＬＤＩＳＫ１１ｂに書き込まれるべきデータであるスナップデータの範囲を示すビットマップ）にコピーされる。そして、このコピー完了をもって、レプリケーションの状態が、同期状態からスプリット移行状態に遷移されて、スプリットコマンドに対するスナップショット作成の完了がホスト機器に通知される。ダーティデータのマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂへの書き出しは、スナップショット作成の完了の通知後に行われる。
【０１０７】
つまり、本実施形態によれば、スプリットコマンドの受信時に、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂに対するデステージングを行わないため、従来と比較して同期状態からスプリット状態への移行が短時間で完了し、高速にスナップショットを作成できる。しかも本実施形態では、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂに対するデステージングを行わずに、ミラー状態からスプリット状態へ移行しているにも拘わらず、キャッシュブロック管理テーブル２５０内での上述のコピー処理により、バックアップＬＤＩＳＫ１１ｂを正しくスプリット状態で運用させることができる。
【０１０８】
［変形例］
次に、実施形態の変形例について説明する。この変形例の第１の特徴は、実施形態と異なり、スプリットコマンドの受信時のスナップショット作成処理において、“１”にセットされているＷＢＣビットを含むエントリをサーチして、エントリのＷＢＣビットフィールド２５４に保持されているビットマップを、エントリ内のスナップビットフィールド２５６にコピーする動作を行わずに、レプリケーションの状態を同期状態からスプリット移行状態に遷移するだけで、スプリットコマンドに対するスプリット完了がホスト機器に通知される点にある。本変形例の第２の特徴は、マスタＬＤＩＳＫ１１ａにデータを書き込むことを要求するための第１の書き込み要求が、ホスト機器から制御装置１０に対して発行された場合の動作が、レプリケーションの状態（スプリット移行状態、スプリット状態または同期状態のいずれであるか）によって異なる点にもある。
【０１０９】
まず、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション状態が同期状態にあるときに、ホスト機器から制御装置１０に対してスナップショット作成を指示するためのスプリットコマンドが発行された場合の動作について、図１２のフローチャートを参照して説明する。制御装置１０内のキャッシュメモリ管理部２４３は、スプリットコマンドを受信すると、スナップショット作成手段として機能する。
【０１１０】
まずキャッシュメモリ管理部２４３は、マスタＬＤＩＳＫ１１ａに対応して設けられているスナップカウンタ２６０ａの値が０であるかを判定する（ステップＳ７１）。スナップカウンタ２６０ａの値が０でない場合（ステップＳ７１がＮｏ）、キャッシュメモリ管理部２４３は、レプリケーション管理テーブル２７０内でマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのＬＤＩＳＫ番号に対応付けて保持されているステータス情報を、レプリケーション管理部２３０によって、スプリット移行状態を示すステータス情報に更新させる（ステップＳ７２）。そしてキャッシュメモリ管理部２４３は、ホスト機器からのスプリットコマンド（スプリット要求）に対して、ＩＯ管理部２２０によりホスト機器にスプリット完了を通知させる（ステップＳ７３）。
【０１１１】
このように本変形例においては、ホスト機器からのスプリットコマンド受信時に、上記実施形態と異なって、キャッシュブロック管理テーブル２５０におけるＷＢＣビットをスナップビットとしてコピーする処理を行わずに、レプリケーションの状態が同期状態からスプリット移行状態に遷移され、この状態遷移をもって、ホスト機器にスプリット完了が通知される。
【０１１２】
但し、スナップカウンタ２６０ａの値が０の場合には（ステップＳ７１がＹｅｓ）、キャッシュメモリ管理部２４３は、レプリケーション管理部２３０によって、スプリット状態を示すステータス情報に更新させる（ステップＳ７４）。そしてキャッシュメモリ管理部２４３は、ホスト機器からのスプリットコマンドに対して、ＩＯ管理部２２０によりホスト機器にスプリット完了を通知させる（ステップＳ７３）。
【０１１３】
次に、レプリケーションが設定されているマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのうちの、マスタＬＤＩＳＫ１１ａにデータを書き込むことを要求するための第１の書き込み要求が、ホスト機器から制御装置１０に対して発行された場合の動作について、図１３のフローチャートを参照して説明する。
【０１１４】
キャッシュメモリ管理部２４３は、ステップＳ１１と同様に、ホスト機器からの第１の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル２５０を参照し、アクセス情報によって示されるマスタＬＤＩＳＫ１１ａ内のアクセス範囲（書き込み範囲）に対応するキャッシュブロックのエントリをサーチする（ステップＳ８１）。
【０１１５】
次にキャッシュメモリ管理部２４３は、レプリケーション管理テーブル２７０を参照し、マスタＬＤＩＳＫ１１ａをメンバＬＤＩＳＫとするレプリケーションの状態がスプリット移行状態にあるかを判定する（ステップＳ８２）。もし、レプリケーションの状態がスプリット移行状態にあるならば（ステップＳ８２がＹｅｓ）、キャッシュメモリ管理部２４３はステップＳ１２と同様に、サーチされたキャッシュブロック管理テーブル２５０内のエントリのスナップビットフィールド２５６に保持されているビットマップのうちの“１”にセットされているスナップビットの範囲と、アクセス範囲とが重複しているかを判定する（ステップＳ８３）。
【０１１６】
もし、スナップビットの範囲とアクセス範囲とが重複しているならば（ステップＳ８３がＹｅｓ）、キャッシュメモリ管理部２４３はステップＳ１３と同様に、キャッシュメモリ１０４に格納されている、その重複範囲に対応するキャッシュブロック内のデータをバックアップＬＤＩＳＫ１１ｂに書き込むための書き込みリクエストをＬＤＩＳＫアクセス制御部２４４に発行する（ステップＳ８４）。これにより、バックアップＬＤＩＳＫ１１ｂに、重複範囲に対応するスナップ時のデータが反映される。
【０１１７】
次にキャッシュメモリ管理部２４３はステップＳ１４及びＳ１５と同様に、サーチされたキャッシュブロック管理テーブル２５０内のエントリのスナップビットフィールド２５６に保持されているビットマップのうちの重複範囲のスナップビットをクリアし、しかる後にビットマップ中の全スナップビットが全て“０”となっているかを判定する（ステップＳ８５及びＳ８６）。もし、全スナップビットが “０”となっているならば（ステップＳ８６がＹｅｓ）、キャッシュメモリ管理部２４３はステップＳ１６及びＳ１７と同様に、スナップカウンタ２６０ａを重複範囲に対応するキャッシュブロックの数だけディクリメントし（ステップＳ８７）、ディクリメント後のスナップカウンタ２６０ａの値が０となったかを判定する（ステップＳ８８）。
【０１１８】
もし、スナップカウンタ２６０ａの値が０となったならば（ステップＳ８８がＹｅｓ）、キャッシュメモリ管理部２４３はステップＳ１８と同様に、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのレプリケーション状態を、レプリケーション管理部２３０によって、スプリット移行状態からスプリット状態に遷移させる（ステップＳ８９）。マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂがスプリット状態に遷移すると、ＩＯ管理部２２０は、ホスト機器からの第１の書き込み要求で指定されたマスタＬＤＩＳＫ１１ａに書き込むべきデータを、ホスト機器に要求する（ステップＳ９０）。これにより、要求されたデータがホスト機器から転送されて、制御装置１０で受信される。
【０１１９】
するとキャッシュメモリ管理部２４３は、サーチされたキャッシュブロック管理テーブル２５０内のエントリのＷＢＣビットフィールド２５４に保持されているビットマップのうち、第１の書き込み要求で指定されたアクセス範囲（書き込み範囲）に対応するＷＢＣビットを“１”にセットする（ステップＳ９１）。つまりキャッシュメモリ管理部２４３は、第１の書き込み要求で指定された書き込み範囲を、サーチされたキャッシュブロック管理テーブル２５０内のエントリのＷＢＣビットフィールド２５４のみに反映する。ステップＳ８３、Ｓ８６またはＳ８８の判定がＮｏの場合には、ステップＳ８３、Ｓ８６またはＳ８８に続いて、ステップＳ９０及びＳ９１が実行される。
【０１２０】
一方、ステップＳ８２の判定がＮｏの場合、つまりレプリケーションの状態がスプリット移行状態でない場合には、キャッシュメモリ管理部２４３は、レプリケーションの状態がスプリット状態にあるかを判定する（ステップＳ９２）。もし、レプリケーションの状態がスプリット状態にあるならば（ステップＳ９２がＹｅｓ）、ステップＳ９０及びＳ９１が実行されて、第１の書き込み要求で指定された書き込み範囲が、サーチされたキャッシュブロック管理テーブル２５０内のエントリのＷＢＣビットフィールド２５４のみに反映される。
【０１２１】
これに対し、レプリケーションの状態がスプリット状態にないならば（ステップＳ９２がＮｏ）、つまりレプリケーションの状態が同期状態にあるならば、ＩＯ管理部２２０はステップＳ９０と同様に、ホスト機器からの第１の書き込み要求で指定されたマスタＬＤＩＳＫ１１ａに書き込むべきデータを、ホスト機器に要求する（ステップＳ９３）。これにより、要求されたデータがホスト機器から転送されて、制御装置１０で受信される。
【０１２２】
するとキャッシュメモリ管理部２４３は、サーチされたキャッシュブロック管理テーブル２５０内のエントリのＷＢＣビットフィールド２５４及びスナップビットフィールド２５６にそれぞれ保持されているビットマップのうち、第１の書き込み要求で指定されたアクセス範囲（書き込み範囲）に対応するＷＢＣビット及びスナップビットを“１”にセットする（ステップＳ９４）。つまりキャッシュメモリ管理部２４３は、第１の書き込み要求で指定された書き込み範囲を、サーチされたキャッシュブロック管理テーブル２５０内のエントリのＷＢＣビットフィールド２５４及びスナップビットフィールド２５６の双方に反映する。
【０１２３】
このように本変形例においては、レプリケーションの状態が同期状態にある場合に、第１の書き込み要求で指定された書き込み範囲に対応するキャッシュメモリ１０４上のデータが、書き込み範囲に対応するＷＢＣビットにより、マスタＬＤＩＳＫ１１ａに書き込むべきダーティデータとして指定されるだけでなく、書き込み範囲に対応するスナップビットにより、バックアップＬＤＩＳＫ１１ｂに書き込むべきスナップデータとして指定される。このことは、上記実施形態におけるスナップショット作成処理で実行される上述のコピー動作を、同期状態において逐次行うことと等価である。
【０１２４】
次にキャッシュメモリ管理部２４３は、ステップＳ９４の実行前の、サーチされたキャッシュブロック管理テーブル２５０内のエントリにおける書き込み範囲に対応するスナップビットが“０”であったかを判定する（ステップＳ９５）。つまりキャッシュメモリ管理部２４３は、書き込み範囲に対応するスナップビットが“０”から“１”に更新されたかを判定する。ステップＳ９５の判定がＹｅｓの場合、キャッシュメモリ管理部２４３は、スナップカウンタ２６０ａを書き込み範囲に対応するキャッシュブロックの数だけインクリメントする（ステップＳ９６）。これに対し、ステップＳ９５の判定がＮｏの場合、ステップＳ９６は行われない。
【０１２５】
次に、レプリケーションが設定されているマスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂのうちのバックアップＬＤＩＳＫ１１ｂにデータを書き込むことを要求するための第２の書き込み要求が、ホスト機器から制御装置１０に対して発行されたものとする。この場合、実施形態と同様に、図９のフローチャートに従って処理が行われる。
【０１２６】
次に、ホスト機器から制御装置１０に対して、マスタＬＤＩＳＫ１１ａからデータを読み込むことを要求するための第１の読み込み要求が発行されたものとする。この場合、全てのレプリケーション状態で処理の内容に差異はないため、説明を省略する。
【０１２７】
次に、ホスト機器から制御装置１０に対して、バックアップＬＤＩＳＫ１１ｂからデータを読み込むことを要求するための第２の読み込み要求が発行されたものとする。この場合、実施形態と同様に、図１０のフローチャートに従って処理が行われる。
【０１２８】
次に、本変形例におけるデステージング時の動作について、図１１のフローチャートと相違する点を中心に、図１４のフローチャートを参照して説明する。なお、図１４において、図１１と等価な処理ステップには、同一参照符号を付してある。
【０１２９】
図１４のフローチャートが図１１のそれと相違する点は、ステップＳ５９の判定がＹｅｓの場合に、ステップＳ６０ではなくて、ステップＳ１００が実行されることにある。このステップＳ１００において、キャッシュメモリ管理部２４３は、レプリケーション管理テーブル２７０を参照し、バックアップＬＤＩＳＫ１１ｂをメンバＬＤＩＳＫとするレプリケーションの状態がスプリット移行状態にあるかを判定する。キャッシュメモリ管理部２４３は、レプリケーションの状態がスプリット移行状態にある場合だけ（ステップＳ１００がＹｅｓ）、ステップ６０を実行する。即ちキャッシュメモリ管理部２４３は、スナップカウンタ２６０ａの値が０となり（ステップＳ５９がＹｅｓ）、レプリケーションの状態がスプリット移行状態にある場合だけ（ステップＳ１００がＹｅｓ）、レプリケーションの状態を、レプリケーション管理部２３０によってスプリット移行状態からスプリット状態に遷移させる（ステップＳ６０）。
【０１３０】
また、図１４のフローチャートにおけるステップＳ５４は、筐体内レプリケーションの制御が実行されることと等価である。その理由は、第１の書き込み要求で指定された書き込み範囲が、同期状態におけるステップＳ９３及びＳ９４の処理（図１３のフローチャート参照）により、ステップＳ８１でサーチされたキャッシュブロック管理テーブル２５０内のエントリのＷＢＣビットフィールド２５４だけでなく、エントリのスナップビットフィールド２５６にも反映されているからである。
【０１３１】
また、図１４のフローチャートが図１１のそれと相違する他の点は、“１”にセットされているスナップビットが存在しないエントリ（ステップＳ５２の判定がＮｏのエントリ）について、キャッシュメモリ管理部２４３が、常にステップＳ６３及びＳ６４のみを実行することである。その理由は、上述のように、図１４のフローチャートにおけるステップＳ５４により、実質的な筐体内レプリケーションの制御が実行されるからである。
【０１３２】
本変形例においても、ホスト機器からのスプリットコマンドの受信時に、マスタＬＤＩＳＫ１１ａ及びバックアップＬＤＩＳＫ１１ｂに対するデステージングを行わないため、ミラー状態からスプリット状態への移行が従来技術と比較して大幅に短時間で完了することができる。
【０１３３】
なお、本発明は、実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【０１３４】
【図１】本発明の一実施形態に係るデータ記憶装置の概略構成を示すブロック図。
【図２】同実施形態におけるキャッシュメモリの構造を説明するための図。
【図３】同実施形態における制御装置のモジュール構成を主として示すブロック図。
【図４】同実施形態において制御装置に含まれるキャッシュブロック管理テーブルのデータ構造例を示す図。
【図５】同実施形態におけるレプリケーションの状態遷移の一例を示す図。
【図６】同実施形態において制御装置に含まれるレプリケーション管理テーブルのデータ構造例を示す図。
【図７】同実施形態におけるスプリットコマンド受信時の処理手順を示すフローチャート。
【図８】同実施形態においてマスタ論理ディスクにデータを書き込むことを要求するための書き込み要求（第１の書き込み要求）がホスト機器から発行された場合の処理手順を示すフローチャート。
【図９】同実施形態においてバックアップ論理ディスクにデータを書き込むことを要求するための書き込み要求（第２の書き込み要求）がホスト機器から発行された場合の処理手順を示すフローチャート。
【図１０】同実施形態においてバックアップ論理ディスクからデータを読み込むことを要求するための読み込み要求がホスト機器から発行された場合の処理手順を示すフローチャート。
【図１１】同実施形態におけるデステージング時の処理手順を示すフローチャート。
【図１２】同実施形態の変形例におけるスプリットコマンド受信時の処理手順を示すフローチャート。
【図１３】同変形例において第１の書き込み要求がホスト機器から発行された場合の処理手順を示すフローチャート。
【図１４】同変形例におけるデステージング時の処理手順を示すフローチャート。
【符号の説明】
【０１３５】
１…データ記憶装置、２…データ通信路、１０…制御装置、１１ａ…論理ディスク（ＬＤＩＳＫ、マスタ論理ディスク、マスタＬＤＩＳＫ、第１の記憶媒体）、１１ｂ…論理ディスク（ＬＤＩＳＫ、バックアップ論理ディスク、バックアップＬＤＩＳＫ、第２の記憶媒体）、１０２…ＣＰＵ、１０３…プログラムメモリ、１０４…キャッシュメモリ、２１０…ホストインタフェース制御部、２２０…ＩＯ管理部、２３０…レプリケーション管理部、２４０…キャッシュ管理モジュール、２４１…ＩＯアクセス制御部、２４２…デステージング／ステージング制御部、２４３…キャッシュメモリ管理部、２４４…ＬＤＩＳＫアクセス制御部、２５０…キャッシュブロック管理テーブル、２６０ａ，２６０ｂ…スナップカウンタ、２７０…レプリケーション管理テーブル。
【図１】
2010122761.tif 000003
【図２】
2010122761.tif 000004
【図３】
2010122761.tif 000005
【図４】
2010122761.tif 000006
【図５】
2010122761.tif 000007
【図６】
2010122761.tif 000008
【図７】
2010122761.tif 000009
【図８】
2010122761.tif 000010
【図９】
2010122761.tif 000011
【図１０】
2010122761.tif 000012
【図１１】
2010122761.tif 000013
【図１２】
2010122761.tif 000014
【図１３】
2010122761.tif 000015
【図１４】
2010122761.tif 000016