以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るデータ記憶システムの構成を示すブロック図である。本実施形態において、データ記憶システムは、正サイト10-1に配置された正データ記憶装置11-1、及び副サイト10-2に配置された副データ記憶装置11-2を備える。正サイト10-1及び副サイト10-2は、例えば互いに距離的に離れた位置に存在する。つまり副サイト10-2は、正サイト10-1に対して遠隔地に存在する。
正サイト10-1において、正データ記憶装置(第1のデータ記憶装置)11-1は、接続機器12-1を含むデータ通信路120-1を介してホスト装置13-1と接続されている。副サイト10-2において、副データ記憶装置(第2のデータ記憶装置)11-2は、接続機器12-2を含むデータ通信路120-2を介してホスト装置13-2と接続されている。なお、正データ記憶装置11-1が、ホスト装置13-1を含む複数のホスト装置とデータ通信路120-1を介して接続されていても構わない。同様に、副データ記憶装置11-2が、ホスト装置13-2を含む複数のホスト装置とデータ通信路120-2を介して接続されていても構わない。ホスト装置13-1は正データ記憶装置11-1を利用するコンピュータであり、ホスト装置13-2は副データ記憶装置11-2を利用するコンピュータである。
正サイト10-1の接続機器12-1と副サイト10-2の接続機器12-2とは、ネットワーク14を介して接続されている。接続機器12-1及び12-2は、例えばファブリックスイッチである。ネットワーク14は、例えば広域ネットワークである。接続機器12-1及び12-2は、ネットワーク14と、例えば図示せぬファイバチャネル−インターネットプロトコル変換器を中継して接続される。
図2は、図1に示されるデータ記憶装置11-i(i=1,2)の概略構成を示すブロック図である。
データ記憶装置11-iは、制御装置20-iと、記憶媒体21-iとから構成される。制御装置20-iは、データ通信路120-iを介して接続されるホスト装置13-i(図1参照)と記憶媒体21-iとの間に介在して設けられる。記憶媒体21-iは、ディスク、例えば論理ディスクである。そこで以下の説明では、記憶媒体21-iを論理ディスク(LDISK)21-iと呼ぶ。本実施形態では、説明を簡略化するために、データ記憶装置11-iが1つのLDISK21-iを有するものとする。しかしデータ記憶装置11-iが、複数のLDISKを有していても構わない。
制御装置20-iは、ホストインタフェース部(HOST I/F)201-i、CPU202-i、プログラムメモリ203-i、キャッシュメモリ204-i及びHDDインタフェース部(HDD I/F)205-iを有している。
ホストインタフェース部201-iは、外部接続される装置との間の通信を制御する。ホストインタフェース部201-iはデータ通信路120-i側の通信を司る。HDDインタフェース部205-iはLDISK21-i側の通信を司る。
CPU202-iは、制御装置20-iにおける必要処理を実行するものであり、プログラムメモリ203-iには、そのための各種プログラムが格納されている。本実施形態で適用される非同期レプリケーションの手法は、このプログラムメモリ203-i(コンピュータ読み取り可能な記憶媒体)に格納されているプログラムをCPU202-iが読み取って実行することによって実現されるものとする。プログラムメモリ203-iには、上述のプログラムを格納するための領域に加えて、CPU202-iが利用するデータ等を格納するための領域も確保されている。
キャッシュメモリ204-iは、データ通信路120-iを介して接続されるホスト装置13-iまたは他のデータ記憶装置からデータ記憶装置11-i内のLDISK21-iに対して発行される入出力要求(I/O要求)に対するバッファの役目を提供する。つまりキャッシュメモリ204-iは、LDISK21-iに対して読み出しまたは書き込みされるデータを格納する。
キャッシュメモリ204-iは、ある論理的な単位に分割されて管理されている。この分割された単位で自由にLDISK21-i内の記憶位置に対応させて、その記憶位置のデータをキャッシュメモリ204-iに格納することができる。この分割された1つの単位をキャッシュブロックと呼ぶ。各キャッシュブロックは、例えばセットアソシアティブ方式によるメモリマッピングで管理されるものとする。
データ記憶装置11-iにおいて、外部の装置、例えばホスト装置13-iからの入力要求に対する書き込み処理は、次のように行われる。まず、入力要求で指定された入力データ(書き込みデータ)がキャッシュメモリ204-iにエントリされた時点で、要求元のホスト装置13-iに対して書き込み処理完了が通知される。その後に、キャッシュメモリ204-iからLDISK21-iに対する実際のデータ書き込みが実行される。
一方、ホスト装置13-iからの出力要求に対する読み出し処理は、次のように行われる。まず、該当するデータがキャッシュメモリ204-iにエントリ(キャッシュ)されているか否かが判定され、エントリされていれば、そのデータがキャッシュメモリ204-iからデータ通信路120-iを介してホスト装置13-iに返される。これに対し、該当するデータがキャッシュメモリ204-iにエントリされていないならば、そのデータがLDISK21-iからキャッシュメモリ204-iに読み出される。そして、読み出されたデータが、要求元のホスト装置13-iに対してデータ通信路120-iを介して返される。
図3は、例えば図2に示される制御装置20-iのプログラムメモリ203-iに格納されるプログラムをCPU202-iが読み取って実行することによって実現されるモジュール構成を主として示すブロック図である。
ホストI/F制御部(ホストインタフェース制御部)210-iは、ホスト装置13-iとの間のインタフェース処理を担当する。特に、正データ記憶装置11-1のホストI/F制御部210-1は、他のデータ記憶装置(副データ記憶装置11-2)との間のインタフェース処理も担当する。このインタフェース処理は入出力処理を含む。つまりホストI/F制御部210-iは、後述するコミュニケーションポート管理部270-iから例えばCDB(Command Descriptor Block: コマンド記述ブロック)を用いて送られるコマンドを受信して、そのコマンドを他のデータ記憶装置に送信することにより、他のデータ記憶装置との間の入出力処理を行う。本実施形態において、ホスト装置13-1から正データ記憶装置11-1に対してCDBを用いて送られるコマンドに通常ライトコマンドがある。また、正データ記憶装置11-1から副データ記憶装置11-2にに対してCDBを用いて送られるコマンドに、未確定ライトコマンドと未確定ライト確定コマンドとがある。これらのコマンドについては後述する。
I/O管理部(入出力管理部)220-iは、ホストI/F制御部210-iで受信したCDBのデコードを行う。特に、副データ記憶装置11-2のI/O管理部220-2は、未確定ライトコマンドまたは未確定ライト確定コマンドに応じて、キャッシュメモリ管理部230-iに対して未確定ライトまたは未確定ライト確定を要求することにより、I/Oアクセス管理(入出力アクセス管理)を行う。
キャッシュメモリ管理部230-iは、I/O管理部220-iからの要求を受けて、キャッシュディレクトリ記憶部231-iに格納されているキャッシュディレクトリ232-iに基づいてキャッシュメモリ204-i(図2参照)におけるI/Oアクセス管理を行う。キャッシュディレクトリ232-iのデータ構造については後述する。
本実施形態において、LDISK21-iは、複数のディスクアレイ、例えば図3に示されるようなRAID(Redundant Arrays of Independent Disks,Redundant Arrays of Inexpensive Disks)構成の2つのディスクアレイ211-iから構成されるものとする。つまり、本実施形態において、データ記憶装置11-iはディスクアレイ装置である。
なお、ディスクアレイ211-iがLDISK21-iと1対1で対応するとは限らない。例えば、ディスクアレイ211-iの一部がLDISK21-iの一部に割り当てられ、ディスクアレイ211-iの他の一部が別のLDISKの一部に割り当てられても構わない。
RAID制御部240-iは、各ディスクアレイ211-iを物理ディスクの集合として管理する。RAID制御部240-iは、キャッシュメモリ管理部230-iからの要求に応じて、LDISK21-i内のディスク転送の対象となるディスクアレイ211-iとの間のディスクデータの転送を制御する。HDD I/F制御部(HDDインタフェース制御部)250-iは、RAID制御部240-iからの要求に応じて、ディスクアレイ211-i内のディスク転送の対象となる、1つ以上の物理ディスクとの間のディスクデータの転送を制御する。
なお、LDISK21-iは必ずしもディスクアレイから構成されている必要はなく、したがってデータ記憶装置11-iがディスクアレイ装置でなくともよい。更に、LDISK21-iに代えて物理ディスクのような他の記憶媒体を用いることも可能である。
レプリケーション管理部260-iは、レプリケーション管理データ記憶部261-iに格納されているレプリケーション管理テーブル262-i及びI/O管理リスト記憶部263-iに格納されているI/O管理リスト264-iに基づいてレプリケーションの管理及び制御を行う。レプリケーション管理テーブル262-i及びI/O管理リスト264-iのデータ構造については後述する。
コミュニケーションポート管理部270-iは他のデータ記憶装置との間の通信のためにアクセスポートを管理する。
前述したように、キャッシュメモリ204-iを管理するための論理的な単位はキャッシュブロックと呼ばれる。このキャッシュブロックと1対1に対応し、キャッシュブロックを管理するための管理データ構造は、キャッシュディレクトリエントリと呼ばれる。キャッシュディレクトリ232-iは、キャッシュディレクトリエントリの集合である。
図4は、キャッシュディレクトリエントリのデータ構造例を示す。本実施形態において、キャッシュディレクトリエントリのデータ(キャッシュディレクトリデータ)は、論理ディスク番号、論理アドレス、状態フラグ、リードキャッシュビットマップ、ライトバックビットマップ(第1の変数)、及び未確定ライトビットマップ(第2の変数)から構成される。
論理ディスク番号は、該当するキャッシュブロックが割り当てられているLDISKを示し、論理アドレスは、該当するキャッシュブロックが割り当てられているLDISK内の領域(論理ブロック領域)の開始アドレスを示す。状態フラグは、該当するキャッシュブロックの状態、例えばキャッシュブロックを使用中であるか否かを示す。
リードキャッシュビットマップ、ライトバックビットマップ及び未確定ライトビットマップは、該当するキャッシュブロック内の有効データの位置を、ブロックよりも小サイズの単位、例えばセクタ単位で、ビットにより示す。有効データとは、リードキャッシュビットマップでは、該当キャッシュブロック内のリードキャッシュデータを指し、ライトバックビットマップでは、該当キャッシュブロック内で論理ディスク番号で示されるLDISKに書き出されるべきライトバックデータ(いわゆるダーティデータ)を指す。また、未確定ライトビットマップでは、該当キャッシュブロック内の未確定ライトデータを指す。未確定ライトデータは、ライトバックデータと異なり、LDISKに書き出されるべきでないデータ、つまりLDISKに書き出すことが禁止されるデータである。未確定データが確定されるとライトバックデータとして扱われる。
本実施形態において、レプリケーションの状態は、同期(SYNC)状態、コピー(COPY)状態及びスプリット(SPLIT)状態の3つである。レプリケーション作成直後の初期状態はSPLITである。SPLIT状態とは、正データ記憶装置11-1のLDISK21-1(正論理ディスク)と副データ記憶装置11-2のLDISK21-2(副論理ディスク)とが論理的に切り離された状態を指す。つまりSPLIT状態では、正データ記憶装置11-1及び副データ記憶装置11-2は、それぞれ独立のデータ記憶装置として機能する。
SPLIT状態において、例えばホスト装置13-1から正データ記憶装置11-1に同期要求が与えられると、SPLIT状態からCOPY状態に遷移する。このCOPY状態では、LDISK21-1からデータを読み出し、この読み出されたデータをLDISK21-2に書き込むCOPY処理が行われる。このCOPY処理では、正データ記憶装置11-1から副データ記憶装置11-2に、通常ライトが要求される。COPY処理が完了すると、SYNC状態に遷移する。これらの状態は、レプリケーション管理部260-iによって管理・制御される。
図5は、レプリケーション管理部260-iによるレプリケーションの管理に用いられるレプリケーション管理テーブル262-i及びI/O管理リスト264-iのデータ構造例を示す。レプリケーション管理テーブル262-iは、正論理ディスク番号、副論理ディスク番号、レプリケーションステート情報、確定周期情報、送信データ可能量情報及び送信済みデータ量情報を保持する。
正論理ディスク番号は、正データ記憶装置11-1内のレプリケーション元(レプリケーションマスタ)となる正論理ディスクの番号を示す。副論理ディスク番号は、副データ記憶装置11-2内のレプリケーション先(レプリケーションサブ)となる副論理ディスクの番号を示す。レプリケーションステート情報は前述の3つのレプリケーションの状態のいずれかを示す。本実施形態では、LDISK21-1(第1の記憶媒体)とLDISK21-2(第2の記憶媒体)とは対をなし、レプリケーションペアを構成する。
確定周期情報は、未確定ライトデータを確定する周期を示す。送信可能データ量情報は、確定周期情報の示す1周期内で正データ記憶装置11-1から副データ記憶装置11-2に未確定データとして送信可能なデータ量を示す。送信可能データ量は、例えば、1周期内に副データ記憶装置11-2に送られる未確定データのために、キャッシュメモリ204-2内の領域を割り当てることが許される量に設定される。送信済みデータ量情報は、正データ記憶装置11-1から副データ記憶装置11-2に未確定データとして既に送信されている送信済みデータ量を示す。
I/O管理リスト264-iは、実行I/Oリスト264a-i及びペンディングI/Oリスト264b-iから構成される。実行I/Oリスト264a-iは、実行I/O要求を要求順に保持するキュー形式のリスト構造を有する。実行I/O要求とは、実行が可能なI/O要求を指す。ペンディングI/Oリスト264b-iは、ペンディングI/O要求を要求順に保持するキュー形式のリスト構造を有する。ペンディングI/O要求とは、現時点において実行が不可のI/O要求を指す。
次に本実施形態の動作について、レプリケーションの状態がSYNC状態のときに、ホスト装置13-1から正データ記憶装置11-1に通常ライトコマンドを含むCDBが送信された場合の正データ記憶装置11-1及び副データ記憶装置11-2の動作を例に、図6及び7のフローチャートを参照して説明する。
今、ホスト装置13-1から正データ記憶装置11-1に、通常ライトコマンドを含むCDBがデータ通信路120-1を介して送信されたものとする。通常ライトコマンドは、論理ディスク番号、開始アドレス及びサイズから構成されるアクセス情報を含む。このアクセス情報中の正論理ディスク番号は、正データ記憶装置11-1内の書き込み先のLDISK21-1を示す。アクセス情報中の開始アドレスは、データが書き込まれるべき、LDISK21-1内の記憶領域(ライトアクセス範囲)の先頭位置のアドレスを示し、アクセス情報中のサイズは、この記憶領域のサイズ(転送サイズ)を示す。
ホスト装置13-1から送信されたCDBは、ホストI/F制御部210-1で受信され、I/O管理部220-1に渡される。I/O管理部220-1は、渡されたCDBをデコードする(ステップS1)。ステップS1においてI/O管理部220-1は、CDBが本実施形態のように通常ライトコマンドを含む場合、キャッシュメモリ管理部230-1に対してライト処理のためのI/O要求として、通常ライト要求を送出する。通常ライト要求は、通常ライト処理のためのI/O要求であり、通常ライトコマンドに含まれているアクセス情報を継承する。
キャッシュメモリ管理部230-1は、I/O管理部220-1からライト処理のためのI/O要求(ここでは通常ライト要求)を受信すると、このI/O要求に基づいて、キャッシュメモリ204-1( 第1のキャッシュメモリ)内で必要なキャッシュブロックを確保し、キャッシュブロックが使用中であることを示すフラグをキャッシュディレクトリ232-1のキャッシュディレクトリエントリに含まれている状態フラグにセットする(ステップS2)。このステップS2においてキャッシュメモリ管理部230-1は、I/O要求で指定されるライト処理に必要なライトデータを受信する。
次にキャッシュメモリ管理部230-1は、I/O管理部220-1から受信したI/O要求が未確定ライト要求であるかを判定する(ステップS3)。本実施形態のように未確定ライト要求でないならば(ステップS3がNo)、受信したライトデータを、キャッシュメモリ204-1内の確保されたキャッシュブロックにエントリする(ステップS5)。このステップS5においてキャッシュメモリ管理部230-1は、通常ライト要求に含まれているアクセス情報の示すライトアクセス範囲を、確保されたキャッシュブロックに対応する、キャッシュディレクトリ232-1のキャッシュディレクトリエントリに含まれているライトバックビットマップに反映する。即ちキャッシュメモリ管理部230-1は、確保されたキャッシュブロックに対応するライトバックビットマップのうち、通常ライト要求で指定されたライトアクセス範囲に対応するビットを例えば“1”にセットする。
本実施形態では、図6及び7に示されるフローチャートは、正データ記憶装置11-1及び副データ記憶装置11-2で共通に実行される。しかし本実施形態において、ホスト装置13-1から正データ記憶装置11-1に送信されるCDBに含まれるライトコマンドは、通常ライトコマンドに限られる。したがって、正データ記憶装置11-1では、ステップS3は必ずしも必要でなく、ステップS2の次にステップS5が実行されても構わない。
次にキャッシュメモリ管理部230-1は、I/O要求に含まれているアクセス情報中の論理ディスク番号の示すLDISK21-1がレプリケーションマスタであるかを判定する(ステップS6)。本実施形態のようにレプリケーションマスタである場合(ステップS6がYes)、キャッシュメモリ管理部230-1はレプリケーション管理部260-1にレプリケーション管理のためのI/O要求を送出する。このI/O要求は、通常ライト要求と同様に、論理ディスク番号、開始アドレス及びサイズから構成されるアクセス情報を含む。
レプリケーション管理部260-1は、キャッシュメモリ管理部230-1からI/O要求を受信すると、I/O管理リスト264-1のペンディングI/Oリスト264b-1を参照する。そしてレプリケーション管理部260-1は、ペンディングI/Oリスト264b-1にI/O要求があるかを判定する(ステップS8)。
なお、ペンディングI/Oリスト264b-1にI/O要求がある場合(ステップS8がYes)は、正データ記憶装置11-1及び副データ記憶装置11-2の間でデータ更新の順序を保証するためには、今回キャッシュメモリ管理部230-1から受信したI/O要求(に対応する未確定ライト要求)を正データ記憶装置11-1から副データ記憶装置11-2に直ちに送信できないことを意味する。
そこで、ステップS8の判定がYesの場合、レプリケーション管理部260-1は、キャッシュメモリ管理部230-1から受信したI/O要求をペンディングI/Oリスト264b-1の最後尾に追加する(ステップS9)。このステップS9においてレプリケーション管理部260-1が、未確定ライト確定コマンドの処理を開始するのは後述するステップS12から分岐された場合のみである。これは、ペンディングI/Oリスト264-1に最初に繋がれているI/O実行時に既に前記処理を開始しているからである。
次にレプリケーション管理部260-1は、ホスト装置13-1からの通常ライト要求に対する応答として、ライト完了を示すステータス情報をホスト装置13-1に通知する(ステップS10)。そしてレプリケーション管理部260-1は、未確定ライト確定コマンドの実行完了が副データ記憶装置11-2から通知されるのを待つ状態に入る(ステップS11)。
一方、ステップS8の判定がNoの場合、レプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されている送信済みデータ量情報と送信可能データ量情報とに基づき、現在の送信済みデータ量と送信可能データ量とを確認する。そしてレプリケーション管理部260-1は、送信済みデータ量に今回受信されたデータ量(つまり副データ記憶装置11-2に送信されるべきデータ量)を加えた値“送信済みデータ量+受信データ量”が送信可能データ量を超えているかを判定する(ステップS12)。
“送信済みデータ量+受信データ量”が送信可能データ量を超えていると(ステップS12がYes)、今回受信されたデータを副データ記憶装置11-2に送信できないことを意味する。そこで、ステップS12の判定がYesの場合、レプリケーション管理部260-1は、ステップS9を実行し、未確定ライト確定コマンドの処理を開始する。
これに対し、ステップS12の判定がNoの場合、レプリケーション管理部260-1は、キャッシュメモリ管理部230-1から受信したI/O要求を実行I/Oリスト264a-1の最後尾に追加する(ステップS13)。そしてレプリケーション管理部260-1は、ホスト装置13-1からの通常ライト要求に対する応答として、ライト完了を示すステータス情報をホスト装置13-1に通知する(ステップS14)。このステップ14において、レプリケーション管理部260-1は、実行I/Oリスト264a-1に追加されたI/O要求に対応する未確定ライトコマンドの発行をコミュニケーションポート管理部270-1に要求する。
するとコミュニケーションポート管理部270-1は、未確定ライトコマンドを含むCDBを副データ記憶装置11-2に送信する(ステップS15)。一方、レプリケーション管理部260-1は、未確定ライトコマンドに対する副データ記憶装置11-2からの応答を待つ。
さて、ステップ15で副データ記憶装置11-2に送信されたCDBは、未確定ライトコマンドを含む。この未確定ライトコマンドは、論理ディスク番号、開始アドレス及びサイズから構成されるアクセス情報を含む。論理ディスク番号は、正論理ディスク番号と対応付けてレプリケーション管理テーブル262-1に格納されている副論理ディスク番号で、副データ記憶装置11-2の書き込み先のLDISK21-2を示す。
副データ記憶装置11-2に送信されたCDBは、制御装置20-2(第2の制御装置)のホストI/F制御部210-2で受信され、I/O管理部220-2に渡される。I/O管理部220-2は、渡されたCDBをデコードする(ステップS1)。ステップS1においてI/O管理部220-2は、CDBが未確定ライトコマンドを含む場合、キャッシュメモリ管理部230-2に対してライト処理のためのI/O要求として、未確定ライト要求を送出する。未確定ライト要求は、未確定ライト処理のためのI/O要求であり、未確定ライトコマンドに含まれているアクセス情報を継承する。
キャッシュメモリ管理部230-2は、I/O管理部220-2からライト処理のためのI/O要求(ここでは未確定ライト要求)を受信すると、このI/O要求に基づいて、キャッシュメモリ204-2(第2のキャッシュメモリ)内で必要なキャッシュブロックを確保する(ステップS2)。このステップS2においてキャッシュメモリ管理部230-2は、I/O要求で指定されるライト処理に必要なライトデータを受信する。
次にキャッシュメモリ管理部230-2は、受信したI/O要求が未確定ライト要求であるかを判定する(ステップS3)。未確定ライト要求の場合(ステップS3がYes)、受信したライトデータを、キャッシュメモリ204-2内の確保されたキャッシュブロックにエントリする(ステップS4)。このステップS4においてキャッシュメモリ管理部230-2は、未確定ライト要求に含まれているアクセス情報の示すライトアクセス範囲を、確保されたキャッシュブロックに対応するキャッシュディレクトリ232-2のキャッシュディレクトリエントリに含まれている未確定ライトビットマップに反映する。即ちキャッシュメモリ管理部230-2は、確保されたキャッシュブロックに対応する未確定ライトビットマップのうち、未確定ライト要求で指定されたライトアクセス範囲に対応するビットを例えば“1”にセットする。
次にキャッシュメモリ管理部230-2は、I/O要求に含まれているアクセス情報中の論理ディスク番号の示すLDISK21-2がレプリケーションマスタであるかを判定する(ステップS6)。レプリケーションマスタでない場合(ステップS6がNo)、キャッシュメモリ管理部230-2は、正データ記憶装置11-1からの未確定ライト要求に対する応答として、ライト完了を示すステータス情報を正データ記憶装置11-1に通知する(ステップS7)。これにより、副データ記憶装置11-2におけるI/O要求の処理が完了する(ステップS20)。
さて、正データ記憶装置11-1からの未確定ライト要求に対する応答として、ライト完了を示すステータス情報が、副データ記憶装置11-2から正データ記憶装置11-1に通知される(ステップS7)。
すると、レプリケーション管理部260-1は、未確定ライトに成功したかを、このステータス情報に基づいて判定する(ステップS16)。もし、未確定ライトに成功したならば(ステップS16がYes)、レプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されている送信済みデータ量情報を、現在の送信済みデータ量に今回受信されたデータ量(副データ記憶装置11-2に送信されたデータ量)を加えた値を示すように更新する(ステップS17)。次にレプリケーション管理部260-1は、実行I/Oリスト264a-1から、成功した未確定ライトに対応するI/O要求を削除する(ステップS18)。
これにより、正データ記憶装置11-1におけるI/O要求の処理は完了する(ステップS20)。なお、I/O要求完了時には、確保したキャッシュブロックの開放を行う。具体的には、キャッシュブロック確保時にキャッシュディレクトリ232-1のキャッシュディレクトリエントリに含まれている状態フラグにセットしたキャッシュブロックが使用中であることを示すフラグをクリアする。
これに対し、未確定ライトに失敗したならば(ステップS16がNo)、レプリケーション管理部260-1は、レプリケーションの状態をSYNC状態からSPLIT状態に遷移する(ステップS19)。即ちレプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されているレプリケーションステート情報を、SPLIT状態を示すように更新する。そしてレプリケーション管理部260-1はステップS18に進む。このステップS18においてレプリケーション管理部260-1は、実行I/Oリスト264a-1から、失敗した未確定ライトに対応するI/O要求を削除する。これにより、正データ記憶装置11-1におけるI/O要求の処理は完了する(ステップS20)。
さて、本実施形態において、ステップS2でのキャッシュブロック確保からI/O要求の処理の完了までは、該当するライトデータをエントリするのに用いられているキャッシュブロックが、キャッシュディレクトリエントリ内の状態フラグに基づいて排他される。つまり使用中のキャッシュブロックは他のI/O要求によって使用されない状態となる。
以下、キャッシュメモリ管理部230-iによって実行されるキャッシュブロック確保時の処理(ステップS2)の詳細について、図8のフローチャートを参照して説明する。
まず、キャッシュメモリ管理部230-iは、I/O管理部220-iからライト処理のためのI/O要求(通常ライト要求または未確定ライト要求)を受信すると、キャッシュブロック確保のために、キャッシュディレクトリ232-iを参照し、このI/O要求に含まれているアクセス情報によって示されるLDISK21-i内のライトアクセス範囲に対応するキャッシュブロックのエントリをサーチする(ステップS21)。そしてキャッシュメモリ管理部230-iは、キャッシュブロックエントリのサーチの結果、該当するキャッシュブロックのエントリが見つけられたかを判定する(ステップS22)。つまりキャッシュメモリ管理部230-iは、該当するキャッシュブロックが既に確保されているかを判定する。
もし、該当するキャッシュブロックのエントリが見つけられたならば(ステップS22がYes)、キャッシュメモリ管理部230-iは、このキャッシュブロックのエントリが他のI/O要求のための処理で現在使用されているかを判定する(ステップS24)。このステップS24の判定は、該当するキャッシュブロックに対応するキャッシュディレクトリ232-i内のキャッシュディレクトリエントリ(以下、該当するキャッシュディレクトリエントリと称する)に含まれている状態フラグに基づいて行われる。もし、該当するキャッシュブロックが使用中でないならば(ステップS24がNo)、キャッシュメモリ管理部230-iは、I/O要求が通常ライト要求であるかを判定する(ステップS25)。
キャッシュメモリ管理部230-iが制御装置20-2に含まれているキャッシュメモリ管理部230-2であり、I/O要求が正データ記憶装置11-1から送られた未確定ライト要求である場合、ステップS25の判定はNoとなる。この場合、キャッシュメモリ管理部230-2は、該当するキャッシュディレクトリエントリに含まれているライトバックビットマップの少なくとも一部のビットがセットされているかを判定する(ステップS26)。この判定により、該当するキャッシュブロックにライトバックデータが含まれているかが判定される。
ステップS26の判定がYesのとき、キャッシュメモリ管理部230-2は、他のI/O要求で使用されていない該当するキャッシュブロック中のライトバックデータを、該当するキャッシュディレクトリエントリに含まれている論理ディスク番号及び論理アドレスで指定されるLDISK21-2内のブロック領域に書き出すためのI/O要求を、RAID制御部240-2に送出する(ステップS27)。キャッシュメモリ管理部230-2は、このI/O要求に対するRAID制御部240-2から書き出しの完了が通知されるのを待つ(ステップS28)。この段階では、該当するキャッシュブロックに新たに書き込まれるべきライトデータは受信されていない。
このように、未確定ライト要求の処理時(ステップS25がNo)、キャッシュブロックサーチ(ステップS21)の結果、該当するキャッシュブロックのエントリがあり(ステップS22がYes)、且つ、該当するキャッシュディレクトリエントリ内のライトバックビットマップの少なくとも一部のビットがセットされている場合(ステップS26がYes)、キャッシュメモリ管理部230-2は該当するキャッシュブロック中のライトバックデータの書き出しをRAID制御部240-2に要求し、その書き出しの完了を待つ。これにより、該当するキャッシュディレクトリエントリに含まれているライトバックビットマップ及び未確定ライトビットマップのビットがいずれもセットされている状態が発生するのを防止できる。つまり、同一キャッシュブロック内のデータが、ライトバックデータであって且つ未確定ライトデータであると、ライトバックビットマップ及び未確定ライトビットマップによって示されるのを防止できる。
このような、キャッシュメモリ管理部230-2の制御により、キャッシュメモリ204-2上のライトバックデータ、つまり正データ記憶装置11-1からの未確定ライト確定コマンドの処理により確定されているキャッシュメモリ204-2上のデータは、未確定データで上書きされることなく、必ずLDISK21-2に書き出される。
さて、キャッシュメモリ管理部230-iは書き出しの完了の待ち状態で、RAID制御部240-iから書き出しの完了が通知されると(ステップS29)、今回I/O管理部220-iから受信したI/O要求で指定されるライト処理に必要なライトデータの受信をI/O管理部220-iに要求する(ステップS30)。これによりキャッシュメモリ管理部230-iは、ライトデータを受信して、キャッシュブロック確保時の処理を終了する。
一方、該当するキャッシュブロックのエントリが見つけられなかった場合(ステップS22がNo)、キャッシュメモリ管理部230-iは新規にキャッシュブロックを確保し(ステップS23)、しかる後にステップS30を実行する。また、該当するキャッシュブロックのエントリが他のI/O要求のための処理で使用中であるならば(ステップS24がYes)、キャッシュメモリ管理部230-iはステップS28に進んで、そのI/O要求の完了を待つ。以降の動作は、ステップS27からステップS28に進んだ場合と同様である。
また、該当するキャッシュディレクトリエントリに含まれているライトバックビットマップの全ビットがセットされていないならば(ステップS26がNo)、キャッシュメモリ管理部230-iはステップS30に進んで、今回I/O管理部220-iから受信したI/O要求で指定されるライト処理に必要なライトデータの受信をI/O管理部220-iに要求する。
一方、キャッシュメモリ管理部230-iが制御装置20-1に含まれているキャッシュメモリ管理部230-1であり、今回I/O管理部220-1から受信したI/O要求がホスト装置13-1から送られた通常ライト要求である場合(ステップS25がYes)、キャッシュメモリ管理部230-1はステップS30に進んで、このI/O要求で指定されるライト処理に必要なライトデータの受信をI/O管理部220-1に要求する。
なお、同一キャッシュブロック内でもライトバックビットマップ内でセットされているビットの範囲と、未確定ライト要求の示すライトアクセス範囲とが重複していない場合、必ずしも、ステップS27の実行によって該当するキャッシュブロック中のライトバックデータの書き出しを要求する必要はない。そこで、ステップ26に代えて、ライトバックビットマップ内でセットされているビットの範囲と、未確定ライト要求の示すライトアクセス範囲とが重複するかを判定する新たなステップを適用しても構わない。そして、この新たなステップの判定がYesの場合に、キャッシュメモリ管理部230-iが該当するキャッシュブロックに含まれている重複部分のライトバックデータの書き出しをRAID制御部240-iに要求し(ステップS27)、その書き出しの完了を待つ(ステップS28)ようにしてもよい。これにより、キャッシュブロックのデータの書き出しが無用に要求されるのを防止しつつ、キャッシュブロック内でライトバックビットマップのビットと未確定ライトビットマップのビットとがいずれもセットされている領域が存在するのを防止できる。
次に、レプリケーションの状態がSPLIT状態のときに、ホスト装置13-1から正データ記憶装置11-1に通常ライトコマンドを含むCDBが送信された場合の正データ記憶装置11-1の動作について簡単に説明する。この場合、正データ記憶装置11-1はレプリケーションマスタではない単なるデータ記憶装置として機能する。このため正データ記憶装置11-1では、図6及び7のフローチャートにおいて、自身がレプリケーションマスタでない場合の通常ライト要求処理(ステップS1〜S3,S5〜S7,S20)が実行される。
次に、レプリケーションの状態がCOPY状態のときの正データ記憶装置11-1の動作について簡単に説明する。この場合、レプリケーション管理部260-1は、図6及び7のフローチャートにおけるレプリケーション管理部260-iの処理(ステップS8〜S14)に代えて、単に、ライト完了を示すステータス情報をホスト装置13-1に通知する処理(ステップS14に相当する処理)を行う。ここでは、SYNC状態と異なり、I/O管理リスト264-1中の実行I/Oリスト264a-1及びペンディングI/Oリスト264b-1の処理が行われない。そして、レプリケーション管理部260-1はコミュニケーションポート管理部270-1に要求することにより、コミュニケーションポート管理部270-1の制御の下で、通常ライトコマンドに対応する確定ライトコマンドを副データ記憶装置11-2に送信する。
次に、正データ記憶装置11-1において実行される未確定ライト確定コマンドの処理について、図9のフローチャートを参照して説明する。
まず正データ記憶装置11-1のレプリケーション管理部260-1は、実行I/Oリスト264a-1を参照し、この実行I/Oリスト264a-1にI/O要求があるかを判定する(ステップS31)。もし、実行I/Oリスト264a-1にI/O要求があるならば(ステップS31がYes)、レプリケーション管理部260-1は、そのI/O要求の実行完了を待つ(ステップ32)。
これに対し、実行I/Oリスト264a-1にI/O要求がないか、或いは実行I/Oリスト264a-1にI/O要求がなくなったならば(ステップS31がNo)、レプリケーション管理部260-1は、未確定ライト確定コマンドの発行をコミュニケーションポート管理部270-1に要求する。するとコミュニケーションポート管理部270-1は、未確定ライト確定コマンドを含むCDBを副データ記憶装置11-2に送信する(ステップS33)。未確定ライト確定コマンドは、正データ記憶装置11-1からの未確定ライト要求に応じてキャッシュメモリ204-2にライトされた未確定データをライトバックデータとして確定させることを指定する。未確定ライト確定コマンドは、確定されたデータが書き出されるべきLDISK21-2を示す論理ディスク番号を含む。
このように本実施形態では、実行I/Oリスト264a-1にI/O要求がある場合、そのI/O要求の実行完了を全て待った後に、未確定ライト確定コマンドを含むCDBが正データ記憶装置11-1から副データ記憶装置11-2に送信される。
未確定ライト確定コマンドを含むCDBが副データ記憶装置11-2に送信されると、レプリケーション管理部260-1は、この未確定ライト確定コマンドに対する副データ記憶装置11-2からの応答を待つ(図6ステップS11)。レプリケーション管理部260-1は、未確定ライト確定コマンドに対する副データ記憶装置11-2からのステータス情報を受信すると、その情報に基づき、未確定ライト確定に成功したかを判定する(ステップS34)。
もし、未確定ライト確定に成功したならば(ステップS34がYes)、レプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されている送信済みデータ量情報を0に初期化する。そしてレプリケーション管理部260-1は、ペンディングI/Oリスト264b-1に繋がれているI/O要求を先頭から順に外して、図6のフローチャートにおけるステップS12から処理を再開する(ステップS35)。但し、ペンディングI/Oリスト264b-1から外されたI/O要求に関する、ホスト装置13-1へのステータス情報の転送(図6ステップS10またはS14)は、このI/O要求をペンディングI/Oリスト264b-1に追加した際に既に行われているため、今回は実行されない。
これに対し、未確定ライト確定に失敗したならば(ステップS34がNo)、レプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されているレプリケーションステート情報を、SPLIT状態を示すように更新する(ステップS36)。つまりレプリケーション管理部260-1は、レプリケーションの状態を、SYNC状態からSPLIT状態に遷移させる。そしてレプリケーション管理部260-1は、ペンディングI/Oリスト264b-1の待ち状態にあるI/O要求をエラーとして完了させる(ステップS37)。この際、副データ記憶装置11-2へのデータ転送は行われない。
上述の未確定ライト確定コマンドの処理は、図6のフローチャートのステップS8の判定条件が成立した場合だけでなく、レプリケーション管理テーブル262-1に保持されている確定周期情報の示す確定周期(タイミング)が到来した場合にも実行される。この確定周期について説明する。
レプリケーション管理部260-1は、最初の未確定ライト要求の実行時、つまり、送信済みデータ量が0の状態で未確定ライトが完了した際に、タイマを、レプリケーション管理テーブル262-1に保持されている確定周期情報の示す確定周期を表す時間にセットする。そしてレプリケーション管理部260-1は、このタイマがタイムアウトした場合にも、図6のフローチャートのステップS8の判定条件が成立した場合と同様に、未確定ライト確定コマンドの処理を実行する。また、タイマはステップS9によって開始された未確定ライト確定コマンドが完了した際にはリセットされる。
レプリケーション管理部260-1は、上記タイマセットの条件を満たした場合には、このタイマを確定周期情報に基づいてセットし直す。これにより本実施形態では、ステップS8の判定条件が成立した場合だけでなく、確定周期情報の示す確定周期でも未確定ライト確定コマンドの処理が実行される。
次に、副データ記憶装置11-2側での未確定ライト確定コマンドの処理について説明する。今、正データ記憶装置11-1から副データ記憶装置11-2に送信された未確定ライト確定コマンドを含むCDBが、ホストI/F制御部210-2で受信され、I/O管理部220-2に渡されたものとする。I/O管理部220-2は、CDBが未確定ライト確定コマンドを含む場合、キャッシュメモリ管理部230-2に対してライト処理のためのI/O要求として、未確定ライト確定要求を送出する。未確定ライト確定要求は、対応する副論理ディスク番号を含む。
キャッシュメモリ管理部230-2は、未確定ライト確定要求に含まれている副論理ディスク番号の示すLDISK21-2に対応するキャッシュブロックのエントリを全てサーチする。次にキャッシュメモリ管理部230-2は、該当するキャッシュブロックに対応するキャッシュディレクトリ232-2内の該当するキャッシュディレクトリエントリに含まれている未確定ビットマップを、ライトバックマップにコピーする。すなわち、キャッシュメモリ管理部230-2は、未確定ビットマップ内で“1”にセットされているビットの状態、つまり未確定ライトデータの範囲を示すビットの状態をライトバックマップにコピー(反映)する。しかる後、キャッシュメモリ管理部230-2は未確定ビットマップを初期化する。即ちキャッシュメモリ管理部230-2は、ライトバックマップにコピーされた未確定ビットマップ内のビット(ここでは未確定ビットマップの全ビット)を“0”にリセットする。
キャッシュメモリ管理部230-2は、LDISK21-2に対応する全てのキャッシュブロックのエントリについて、上述のコピー処理を実行する。そしてキャッシュメモリ管理部230-2は、正データ記憶装置11-1からの未確定ライト確定コマンドに対する応答として、完了を示すステータス情報を正データ記憶装置11-1に通知する。
このような未確定ライト確定コマンドの処理による完了時点では、キャッシュメモリ204-2には、未確定ライトデータが存在しないことになる。
さて、図1のデータ記憶システムにおいて、大規模災害等により正サイト10-1がダウンし、正データ記憶装置11-1がアクセス不能になったものとする。この場合、副データ記憶装置11-2は、ホスト装置13-2からの指示により、SPLIT状態に遷移する。但し、正データ記憶装置11-1はアクセス不能のため、副データ記憶装置11-2は、通常のSPLIT状態ではなく、エラーSPLIT状態に遷移する。本実施形態において、エラーSPLIT状態に遷移する処理の対象となる副論理ディスクは、LDISK21-1に対応する、LDISK21-2である。
エラーSPLIT状態に遷移する処理において、キャッシュメモリ管理部230-2は、その時点でキャッシュメモリ204-2に格納されている未確定ライトデータを破棄する。これにより、副データ記憶装置11-2の状態を、最後に未確定データが確定された時点までロールバックすることができる。つまり、LDISK21-2を、最後に正データ記憶装置11-1からの未確定ライト確定コマンドを処理した時点の内容に戻すことができる。
未確定ライトデータは次のようにして破棄される。まずキャッシュメモリ管理部230-2は、エラーSPLIT状態に遷移する処理の対象となる、LDISK21-2に対応するキャッシュブロックのエントリを全てサーチする。次にキャッシュメモリ管理部230-2は、該当するキャッシュブロックに対応するキャッシュディレクトリ232-2内の該当するキャッシュディレクトリエントリに含まれている未確定ビットマップ内のビットを全てリセットする。これにより、エラーSPLIT状態に遷移する処理の開始時点でキャッシュメモリ204-2に格納されている未確定ライトデータが破棄される。
なお、LDISK21-1とLDISK21-2の差分、即ちレプリケーションペアの差分を差分テーブル等により管理する場合、未確定ライトデータが破棄された領域に相当する差分をセットするとよい。
上述の本実施形態におけるデータ記憶システムは、レプリケーションペアが1つである場合を説明しているが、データ記憶システムが複数のレプリケーションペアを有していても構わない。このようなデータ記憶システムにおいて、データの整合性が要求される複数のレプリケーションペア毎にグループ化して、そのグループ(コンシステンシグループ)毎に、未確定ライト処理、未確定ライト確定処理が行われる構成とすることも可能である。この場合、正データ記憶装置11-1から副データ記憶装置11-2に送信される未確定ライト確定コマンドに、副論理ディスク番号に代えてコンシステンシグループ番号を持たせればよい。
また本実施形態では、ライト要求の順序を保証するために、この要求が要求順に繋がれるI/O管理リスト264-iのデータが用いられる。しかし、I/O要求毎にシーケンシャルでユニークなIDを割り当てることにより、リスト構造のデータを用いることなく、I/O要求の順序を保証することも可能である。
本実施形態では非同期レプリケーションが適用される。即ち本実施形態では、ホスト装置13-1から正データ記憶装置11-1への通常ライト要求に対する正データ記憶装置11-1からホスト装置13-1へのステータス情報の転送は、正データ記憶装置11-1から副データ記憶装置11-2に対するデータ転送の時間に影響されない。
そこで本実施形態では、正データ記憶装置11-1から副データ記憶装置11-2に対する未確定データ確定コマンドの発行の前後で、正データ記憶装置11-1がホスト装置13-1から受信したライトデータの順序を保証している。このことは、先に述べたような、既に確定しているキャッシュメモリ204-2上のライトデータが未確定データで上書きされるのを防止する仕組みから明らかである。また、ある未確定データ確定コマンドから次の未確定データ確定コマンドまでの期間内で、LDISK21-1の同一領域に対する更新が行われた場合の順序は、前記したように正データ記憶装置11-1のキャッシュブロックを副データ記憶装置11-2に対する未確定ライト完了後まで排他することで保証している(時間的に後から書き込まれたデータがそれ以前に書き込まれたデータで上書きされることがない)。
また本実施形態では、最大ロールバック時間を、確定周期情報の示す確定周期によって保証することができる。この最大ロールバック時間とは、正サイト10-1のダウン時に、LDISK21-2の内容を、その時点からどれくらい前のLDISK21-1の内容に巻き戻すことができるかを指す。
本実施形態によれば、正サイト10-1及び副サイト10-2の間に専用の中継転送装置を必要とせず、また正サイト10-1及び副サイト10-2にキャッシュメモリ204-1,204-2とは別に専用のバッファを必要としない、比較的安価な非同期レプリケーションを実現できる。
[変形例]
次に、実施形態の変形例について、図1乃至図3を援用して説明する。
図10は、実施形態の変形例で適用される、レプリケーション管理テーブル2620-i及びI/O管理リスト2640-iのデータ構造例を示す。レプリケーション管理テーブル2620-i及びI/O管理リスト2640-iは、それぞれ、図3に示されるレプリケーション管理テーブル262-i及びI/O管理リスト264-iに代えて用いられる。
図10に示されるレプリケーション管理テーブル2620-iは、正論理ディスク番号、副論理ディスク番号及びレプリケーションステート情報を保持する。このようにレプリケーション管理テーブル2620-iは、実施形態で用いられるレプリケーション管理テーブル262-iと異なり、確定周期情報、送信データ可能量情報及び送信済みデータ量情報を含まない。
図10に示されるI/O管理リスト2640-iは、実行I/Oリスト2640a-iから構成される。I/O管理リスト2640-iは、実施形態で用いられるI/O管理リスト264-iと異なり、ペンディングI/Oリストはない。実行I/Oリスト2640a-iは、実行I/O要求を要求順に保持するキュー形式のリスト構造を有する。実行I/O要求は、実施形態と同様に、論理ディスク番号、開始アドレス及びサイズから構成されるアクセス情報を含む。
実行I/Oリスト2640a-iのI/O要求には、リスト2640a-i内で後続するI/O要求を指す次ポインタ、及びリスト2640a-i内で先行するI/O要求を指す前ポインタが付される。このように、実行I/Oリスト2640a-iは、双方向リスト構造を有する。実行I/Oリスト2640a-iの先頭のI/O要求に付される前ポインタには、先行するI/O要求がないことを示す値が用いられる。実行I/Oリスト2640a-iの最後尾のI/O要求に付される次ポインタには、後続するI/O要求がないことを示す値が用いられる。
実行I/Oリスト2640a-iのI/O要求には、シーケンスフラグも付される。シーケンスフラグは、対応するI/O要求のシーケンスの進捗度合い、このI/O要求に対応する未確定ライトコマンドで指定された未確定ライトが完了している未確定ライト完了状態にあるかを示す。
次に、変形例の動作について、実施形態と相違する点を中心に説明する。
まず、レプリケーションの状態がSYNC状態のときに、ホスト装置13-1から正データ記憶装置11-1に通常ライトコマンドを含むCDBが送信された場合の正データ記憶装置11-1の動作について、図11及び12のフローチャートを参照して説明する。なお、図11及び12において、図6及び7と等価なステップには同一参照符号を付してある。
ホスト装置13-1から正データ記憶装置11-1に、通常ライトコマンドを含むCDBが送信された場合、正データ記憶装置11-1では、実施形態と同様に、ステップS1〜S3,S5,S6が実行される。ここで、通常ライトコマンドに含まれている論理ディスク番号が、LDISK21-1を示すものとする。この場合、LDISK21-1はレプリケーションマスタであるから、ステップS6の判定はYesとなる。
するとレプリケーション管理部260-1は、実施形態と異なって無条件にステップS13に進み、ステップS1でデコードされた通常ライトコマンドに対応する通常ライト要求を実行I/Oリスト2640a-1の最後尾に追加する。ここで、実行I/Oリスト2640a-1に追加されるI/O要求に付されるシーケンスフラグはリセットされており、未確定ライト完了状態にないことを示す。
その後、実施形態と同様に、ステップS14〜S16が実行される。ステップS15では、正データ記憶装置11-1から副データ記憶装置11-2に未確定ライトコマンドを含むCDBが送信される。ステップS15に続くステップS16では、ステップS15で正データ記憶装置11-1から副データ記憶装置11-2に送信された未確定ライトコマンドの指定する未確定ライトに成功したかが判定される。未確定ライトコマンドは、ステップS13で追加されたI/O要求(通常ライト要求)に対応する。
未確定ライトに成功したならば(ステップS16がYes)、レプリケーション管理部260-1はステップS41に進む。ステップS41においてレプリケーション管理部260-1は、実行I/Oリスト2640a-1のI/O要求の集合のうち、成功した未確定ライトを指定する未確定ライトコマンドに対応するI/O要求に付されているシーケンスフラグをセットする。これにより、シーケンスフラグは、未確定ライト完了状態を示す。
次にレプリケーション管理部260-1は、成功した未確定ライトを指定する未確定ライトコマンドに対応するI/O要求が、実行I/Oリスト2640a-1の先頭かを判定する(ステップS42)。
判定の対象となるI/O要求が実行I/Oリスト2640a-1の先頭であるならば(ステップS42がYes)、レプリケーション管理部260-1は、実行I/Oリスト2640a-1のI/O要求の集合のうち、最も古いI/O要求に対応する未確定ライトが完了したと判断する。そこで、レプリケーション管理部260-1は、この完了した未確定ライトでキャッシュメモリ204-2に書き込まれたデータを確定させるための、未確定ライト確定コマンドの処理を開始する(ステップS43)。
このように、変形例における未確定ライト確定コマンドの処理は、実施形態におけるそれと相違して、実行I/Oリスト2640a-1の先頭のI/O要求から順に、未確定ライト完了状態にあるI/O要求が存在する限り、I/O要求を単位に実行される。これによって、正データ記憶装置11-1及び副データ記憶装置11-2の間でデータ更新の順序を保証することができる。未確定ライト完了状態にあるI/O要求であるかは、そのI/O要求に付されているシーケンスフラグがセットされているかによって判定される。
レプリケーション管理部260-1が未確定ライト確定コマンドの処理を開始すると(ステップS43)、正データ記憶装置11-1から副データ記憶装置11-2に、未確定ライト確定コマンドを含むCDBが送信される。この未確定ライト確定コマンドは、実施形態と異なり、副論理ディスク番号だけでなく、開始アドレス及びサイズから構成されるアクセス情報を含む。このアクセス情報中の副論理ディスク番号には、実行I/Oリスト2640a-1の先頭のI/O要求に含まれているアクセス情報中の正論理ディスク番号と対応付けてレプリケーション管理テーブル262-1に格納されている副論理ディスク番号が用いられる。 よって、副データ記憶装置11-2では、正データ記憶装置11-1で実行された通常ライトのアクセス範囲に対応する範囲の未確定データが確定される。
さて、レプリケーション管理部260-1は未確定ライト確定コマンドの処理を開始すると(ステップS43)、未確定ライト確定コマンドの実行完了が副データ記憶装置11-2から通知されるのを待つ状態に入る(ステップS44)。
一方、判定の対象となるI/O要求が実行I/Oリスト2640a-1の先頭でないならば(ステップS42がNo)、副データ記憶装置11-2では、少なくとも、リスト2640a-1の先頭のI/O要求に対応する未確定ライトの実行中であることから、レプリケーション管理部260-1はステップS43をスキップして、ステップS44に進む。
また、未確定ライトに失敗したならば(ステップS16がNo)、レプリケーション管理部260-1は、レプリケーションの状態をSYNC状態からSPLIT状態に遷移する(ステップS19)。そしてレプリケーション管理部260-1は、実行I/Oリスト264a-1から、失敗した未確定ライトに対応するI/O要求を削除する(ステップS45)。このステップS45において、レプリケーション管理部260-1は、削除されたI/O要求をエラーとして完了させる。これにより、正データ記憶装置11-1におけるI/O要求の処理は完了する(ステップS46)。なお、実行I/Oリスト264a-1からI/O要求を削除する際には、削除されるI/O要求に先行するI/O要求の次ポインタが、削除されるI/O要求に後続するI/O要求を指し、削除されるI/O要求に後続するI/O要求の前ポインタが、削除されるI/O要求に先行するI/O要求を指すように更新される。
次に、正データ記憶装置11-1から副データ記憶装置11-2に未確定ライトコマンドが送信された場合の副データ記憶装置11-2の動作について、図11及び12のフローチャートを参照して簡単に説明する。この場合、副データ記憶装置11-2では、I/O要求が未確定ライト要求である場合の処理が実行される(ステップS1〜S4,S6,S7)。そして、ステップS7が実行されると、副データ記憶装置11-2におけるI/O要求の処理は完了する(ステップS45)。
変形例では、ステップS2でのキャッシュブロック確保時からI/O要求の処理が完了するステップS20の時点、または後述する未確定ライト確定コマンドの処理が完了する時点までは、該当するライトデータをエントリするのに用いられているキャッシュブロックが、キャッシュディレクトリエントリ内の状態フラグに基づいて排他される。ここで、キャッシュブロック確保時の処理は、図8のフローチャートの示す手順で実行される。
次に、副データ記憶装置11-2側での未確定ライト確定コマンドの処理について説明する。正データ記憶装置11-1から副データ記憶装置11-2に送信された未確定ライト確定コマンドを含むCDBが、ホストI/F制御部210-2で受信され、I/O管理部220-2に渡されたものとする。I/O管理部220-2は、CDBが未確定ライト確定コマンドを含む場合、キャッシュメモリ管理部230-2に対してライト処理のためのI/O要求として、未確定ライト確定要求を送出する。未確定ライト確定要求は、対応する未確定ライト確定コマンドに含まれている副論理ディスク番号、開始アドレス及びサイズから構成されるアクセス情報を含む。
キャッシュメモリ管理部230-2は、未確定ライト確定要求に含まれているアクセス情報の示すLDISK21-2内のアクセス範囲に対応するキャッシュブロックのエントリを全てサーチする。次にキャッシュメモリ管理部230-2は、該当するキャッシュブロックに対応するキャッシュディレクトリ232-2内の該当するキャッシュディレクトリエントリに含まれている未確定ビットマップをライトバックマップにコピーする。すなわち、キャッシュメモリ管理部230-2は、未確定ビットマップ内でアクセス範囲に属し且つセットされているビットの状態(未確定ライトデータの範囲を示すビットの状態)をライトバックマップにコピーする。しかる後、キャッシュメモリ管理部230-2は、ライトバックマップにコピーされた未確定ビットマップ内のビットをリセットする。
キャッシュメモリ管理部230-2は、LDISK21-2内のアクセス範囲に対応する全てのキャッシュブロックのエントリについて、コピー処理を実行する。そしてキャッシュメモリ管理部230-2は、正データ記憶装置11-1からの未確定ライト確定コマンドに対する応答として、完了を示すステータス情報を正データ記憶装置11-1に通知する。
変形例において、大規模災害等により正サイト10-1がダウンして正データ記憶装置11-1がアクセス不能になったものとする。この場合、副データ記憶装置11-2は、ホスト装置13-2からの指示により、SPLIT状態(エラーSPLIT状態)に遷移する。
エラーSPLIT状態に遷移する処理において、キャッシュメモリ管理部230-2は、その時点でキャッシュメモリ204-2に格納されている未確定ライトデータを破棄する。これにより、副データ記憶装置11-2の状態を、最後に未確定データが確定された時点までロールバックすることができる。つまり、LDISK21-2を、最後に正データ記憶装置11-1からの未確定ライト確定コマンドを処理した時点の内容に戻すことができる。
レプリケーション管理テーブル2620-iは、確定周期情報を持たない。このため変形例では、最大ロールバック時間は一意に決まらない。しかし変形例における未確定ライト確定コマンドの処理は、実行I/Oリスト2640a-iの先頭のI/O要求から順に、未確定ライト完了状態にあるI/O要求が存在する限り、I/O要求を単位に実行される。よって変形例においては、最大ロールバック時間を短くすることが可能となる。
変形例においても、データ記憶システムが有するレプリケーションペアが1つである場合について説明しているが、データ記憶システムが複数のレプリケーションペアを有していても構わない。このようなデータ記憶システムにおいて、複数のレプリケーションペアをグループ化し、コンシステンシグループ毎に実行I/Oリスト2640a-iを持つようにしてもよい。
また変形例では、ライト要求の順序を保証するために、この要求が要求順に繋がれる実行I/Oリスト2640a-iのデータが用いられる。しかし、I/O要求毎にシーケンシャルでユニークなIDを割り当てることにより、リスト構造のデータを用いることなく、I/O要求の順序を保証することも可能である。
変形例によれば、正サイト10-1及び副サイト10-2の間に専用の中継転送装置を必要とせず、また正サイト10-1及び副サイト10-2にキャッシュメモリ204-1,204-2とは別に専用のバッファを必要としない比較的安価な非同期レプリケーションを実現できる。
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。