説明

データ記憶システムおよび非同期レプリケーション方法

【課題】正データ記憶装置の判断によりデータ更新の確実な順序保証を可能とする。
【解決手段】正データ記憶装置10-1のキャッシュメモリ管理部は、第1の記憶媒体へのデータの書き込みがホスト装置13-1から指定された場合、指定されたデータをライトバックデータとして記憶するためのキャッシュ領域と、指定されたデータを副データ記憶装置10-2に送信するためのバッファ領域とを第1のキャッシュメモリに確保しそれぞれにデータを書き込む。正データ記憶装置10-1のレプリケーション管理部は、バッファ領域に記憶されたデータを未確定ライトデータとして第2のキャッシュメモリに書き込むための未確定ライトを副データ記憶装置10-2に要求し、未確定ライトデータが予め定められた量を超える場合、第2のキャッシュメモリに既に書き込まれている未確定ライトデータをライトバックデータに確定する未確定ライト確定を副データ記憶装置10-2に要求する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態はデータ記憶装置および非同期レプリケーション方法に関する。
【背景技術】
【0002】
従来、正サイト(プライマリサイト)に配置された正データ記憶装置(一次データ記憶装置)と、正サイトから遠隔の地に存在する副サイト(セカンダリサイト)に配置された副データ記憶装置(二次データ記憶装置)とから構成されるデータ記憶システムがある。この種のデータ記憶システムには、高信頼性化のために、災害などによる正サイトの破壊時に、副サイトにて事業を継続する要求がある。
【0003】
このため、副データ記憶装置には、正データ記憶装置に記憶されているデータの複製が保存される。この複製の作成では、副データ記憶装置でのデータ更新を、正データ記憶装置でのデータ更新と同様の順序で行う必要がある。つまり、データ記憶システムには、正データ記憶装置及び副データ記憶装置間で、データ更新の順序を保証するための順序保証機能が要求される。またデータ記憶装置には、正サイトと副サイトとの距離に依存しないディスク性能を保証する機能も要求される。
【0004】
そこで、データ記憶装置においては、高信頼性化に必要な上述の機能要件を満たすために、例えば、正サイトにてデータ処理を完了しつつ副サイトへデータの転送を行う非同期レプリケーション機能を備えているのが一般的である。
【0005】
しかしながら、この非同期レプリケーション機能を実現するためには、正データ記憶装置及び副データ記憶装置に、キャッシュメモリとは別に専用のバッファを設けることや、正サイト及び副サイト間に専用の中継転送装置を設けることが必要である。また、シーケンス番号を振り、バックアップ装置でそのシーケンス番号を解釈する等のプロトコルオーバヘッドがあった。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003-167684号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
正サイトのデータ記憶装置の判断によりデータ更新の順序保証を行うことが可能であり、中継装置や専用大容量バッファを必要とせず、プロトコルによるオーバヘッドを低減し、同一領域に対する連続ライト時もホスト装置へのレスポンス低下が発生しないデータ記憶システムおよび非同期レプリケーション方法を提供することが課題である。
【課題を解決するための手段】
【0008】
本実施形態のデータ記憶システムは、データを記憶するための第1の記憶媒体と、前記第1の記憶媒体へのアクセスを制御する第1の制御装置とを有する第1のデータ記憶装置と、データを記憶するための第2の記憶媒体と、前記第2の記憶媒体へのアクセスを制御する第2の制御装置とを有し、前記第1のデータ記憶装置とデータ通信路を介して接続される第2のデータ記憶装置とを具備し、前記第1の制御装置は、前記第1の記憶媒体に対して読み出しまたは書き込みされるデータを記憶する第1のキャッシュメモリと、前記第1のキャッシュメモリに対するアクセスを管理する第1のキャッシュメモリ管理手段と、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための特定のレプリケーション状態を備えるレプリケーション管理を行うためのレプリケーション管理手段とを備え、前記第2の制御装置は、前記第2の記憶媒体に対して読み出しまたは書き込みされるデータを記憶する第2のキャッシュメモリを備え、前記第1のキャッシュメモリ管理手段は、前記特定のレプリケーション状態において、外部の装置から前記第1の記憶媒体へのデータの書き込みが指定された場合、前記第1のキャッシュメモリに、前記指定されたデータを前記第1の記憶媒体に書き出されるべきライトバックデータとして記憶するためのキャッシュ領域と、前記指定されたデータを前記第2のデータ記憶装置に送信されるべき前記第2の記憶媒体に書き出すことが禁止される未確定ライトデータとして記憶するためのバッファ領域とを確保し、それぞれの領域に前記指定されたデータを書き込み、前記レプリケーション管理手段は、全ての前記バッファ領域に書き込まれた前記未確定ライトデータを、前記第2のキャッシュメモリに書き込むための未確定ライトを前記第2のデータ記憶装置に要求し、前記未確定ライトを要求することにより前記未確定ライトデータが設定された量を超える場合、もしくは予め定められたタイミングが到来した場合に、前記バッファ領域から前記第2のキャッシュメモリに前記未確定ライトデータとして既に書き込まれているデータを前記第2の記憶媒体に書き出されるべきライトバックデータに確定するための未確定ライト確定を前記第2のデータ記憶装置に要求することを特徴とする。
【図面の簡単な説明】
【0009】
【図1】本実施形態に係るデータ記憶システムの構成を示すブロック図。
【図2】本実施形態に係るデータ記憶装置の概略構成を示すブロック図。
【図3】図1に示される制御装置のモジュール構成を主として示すブロック図。
【図4】本実施形態で適用されるキャッシュディレクトリエントリのデータ構造例を 示す図ブロック図。
【図5】本実施形態で適用されるレプリケーション管理テーブル及びI/O管理リストのデータ構造例を示す図。
【図6】本実施形態において外部の装置からライト処理が要求された場合のデータ記憶装置における処理の手順を示すフローチャート。
【図7】本実施形態における正データ記憶装置側で実行される未確定ライトコマンドの処理の手順を示すフローチャート。
【図8】本実施形態における正データ記憶装置側で実行される未確定ライトコマンドの処理の手順を示すフローチャート。
【図9】本実施形態における正データ記憶装置側で実行される未確定ライト確定コマンド処理の手順を示すフローチャート。
【図10】本実施形態における副データ記憶装置側で実行される未確定ライト確定コマンド処理の手順を示すフローチャート。
【図11】本実施形態におけるキャッシュブロック確保時の処理の詳細な手順を示すフローチャート。
【発明を実施するための形態】
【0010】
以下、本実施形態について図面を参照して説明する。
【0011】
図1は、本実施形態に係るデータ記憶システム100の構成を示す。データ記憶システム100は、正サイト100-1に配置された正データ記憶装置(第1のデータ記憶装置)10-1、及び副サイト100-2に配置された副データ記憶装置(第2のデータ記憶装置)10-2を備える。正サイト100-1及び副サイト100-2は、例えば互いに距離的に離れた位置に存在する。つまり副サイト100-2は、正サイト100-1に対して遠隔地に存在する。
【0012】
正サイト100-1において、正データ記憶装置10-1は、接続機器12-1を含むデータ通信路11-1を介して上位装置であるホスト装置13-1と接続されている。副サイト100-2において、副データ記憶装置10-2は、接続機器12-2を含むデータ通信路11-2を介してホスト装置13-2と接続されている。データ通信路11-1、データ通信路11-2は、例えばFibre ChannelやiSCSI、SCSIである。なお、正データ記憶装置10-1が、ホスト装置13-1を含む複数のホスト装置とデータ通信路11-1を介して接続されていても構わない。同様に、副データ記憶装置10-2が、ホスト装置13-2を含む複数のホスト装置とデータ通信路11-2を介して接続されていても構わない。ホスト装置13-1は正データ記憶装置10-1を利用するコンピュータであり、ホスト装置13-2は副データ記憶装置10-2を利用するコンピュータである。
【0013】
正サイト100-1の接続機器12-1と副サイト100-2の接続機器12-2とは、ネットワーク14を介して接続されている。接続機器12-1及び12-2は、例えばファブリックスイッチである。ネットワーク14は、例えば広域ネットワークである。接続機器12-1及び12-2は、ネットワーク14と、例えば図示せぬファイバチャネル-インターネットプロトコル(FCP)変換器を中継して接続される。
【0014】
図2は図1に示されるデータ記憶装置10-i(i=1、2)の概略構成を示すブロック図である。
【0015】
データ記憶装置10-iは、制御部20-iと記憶媒体80-iとから構成される。制御部20-iは、データ通信路11-iを介して接続されるホスト装置13-iと記憶媒体80-iとの間に介在して設けられる。記憶媒体80-iは、例えば論理ディスクであり、ハードディスクドライブ(HDD)やSSD(Solid State Drive)などで構成される。以下、記憶媒体80-iを論理ディスク(LDISK)80−iと呼ぶ。本実施形態では、説明を簡略化するために、データ記憶装置10-iが1つのLDISK80-iを有するものとする。しかしデータ記憶装置10-iが、複数のLDISKを有していても構わない。
【0016】
制御部20-iは、ホスト I/F部(HOST I/F)61-i、CPU21-i、プログラムメモリ31-i、フラッシュメモリ41-i、キャッシュメモリ51-i、及びHDD I/F部(HDD I/F)71-iを有している。
【0017】
ホスト I/F部61-iは、外部接続される装置との間の通信を制御する。すなわち、ホスト I/F部61-iはデータ通信路11-i側の通信を司る。また、HDD I/F部71-iはLDISK80-i側の通信を司る。
【0018】
CPU21-iは、制御部20-iにおける必要処理を実行するものであり、フラッシュメモリ41-iは、そのための各種プログラムが格納されている不揮発メモリである。プログラムメモリ31-iには、不揮発メモリであるフラッシュメモリ41-iからロードされたプログラムとCPU21-iが利用するデータ等を格納するためのデータ領域が格納されている。本実施形態で適用される非同期レプリケーションの手法は、このプログラムメモリ31-iにロードされ、格納されているプログラムをCPU21-iが読み取って実行することによって実現されるものとする。プログラムメモリ31-iには、上述のプログラムを格納するための領域に加えて、CPU21-iが利用するデータ等を格納するための領域も確保されている。
【0019】
キャッシュメモリ51-iは、データ通信路11-iを介して接続されるホスト装置13-iまたは他のデータ記憶装置からデータ記憶装置10-i内のLDISK80-iに対して発行される入出力要求(I/O要求)において、読み出しまたは書き込みされるデータを一時的に格納する。
【0020】
キャッシュメモリ51-iは、ある論理的な単位に分割されて管理されている。この分割された単位で自由にLDISK80-i内の記憶位置に対応させて、その記憶位置のデータをキャッシュメモリ51-iに格納することができる。この分割された1つの単位をキャッシュブロックと呼ぶ。各キャッシュブロックは、例えばセットアソシアティブ方式によるメモリマッピングで管理されるものとする。
【0021】
データ記憶装置10-iにおいて、外部の装置、例えばホスト装置13-iからの入力要求に対する書き込み処理は、次のように行われる。まず、入力要求で指定された入力データ(書き込みデータ)がキャッシュメモリ51-iにエントリされた時点で、要求元のホスト装置13-iに対して書き込み処理完了が通知される。その後に、キャッシュメモリ51-iからLDISK80-iに対する実際のデータ書き込みが実行される。
【0022】
一方、ホスト装置13-iからの出力要求に対する読み出し処理は、次のように行われる。まず、該当するデータがキャッシュメモリ51-iにエントリ(キャッシュ)されているか否かが判定され、エントリされていれば、そのデータがキャッシュメモリ51-iからデータ通信路11-iを介してホスト装置13-iに返される。これに対し、該当するデータがキャッシュメモリ51-iにエントリされていないならば、そのデータがLDISK80-iからキャッシュメモリ51-iに読み出される。そして、読み出されたデータが、要求元のホスト装置13-iに対してデータ通信路11-iを介して返される。
【0023】
図3は、例えば図2に示される制御部20-iのプログラムメモリ31-iに格納されるプログラムをCPU21-iが読み取って実行することによって実現されるモジュール構成を主として示すブロック図である。
【0024】
ホストI/F制御部(ホスト I/F制御部)210-iは、データ記憶装置10-iとホスト装置13-iとの間のインタフェース処理を担当する。特に、正データ記憶装置10-1のホスト I/F制御部210-1は、他のデータ記憶装置(副データ記憶装置10-2)との間のインタフェース処理も担当する。このインタフェース処理は入出力処理を含む。つまりホスト I/F制御部210-iは、後述するコミュニケーションポート管理部270-iから例えばCDB(Command Descriptor Block: コマンド記述ブロック)を用いて送られるコマンドを受信して、そのコマンドを他のデータ記憶装置に送信することにより、他のデータ記憶装置との間の入出力処理を行う。本実施形態において、ホスト装置13-1から正データ記憶装置10-1に対してCDBを用いて送られるコマンドに通常ライトコマンドがある。また、正データ記憶装置10-1から副データ記憶装置10-2に対してCDBを用いて送られるコマンドに、未確定ライトコマンドと未確定ライト確定コマンドとがある。これらのコマンドについては後述する。
【0025】
I/O管理部(入出力管理部)220-iは、ホスト I/F制御部210-iで受信したCDBのデコードを行う。特に、副データ記憶装置10-2のI/O管理部220-2は、未確定ライトコマンドまたは未確定ライト確定コマンドに応じて、キャッシュメモリ管理部230-2に対して未確定ライトコマンドまたは未確定ライト確定コマンドを要求することによりI/Oアクセス管理(入出力アクセス管理)を行う。
【0026】
キャッシュメモリ管理部230-iはI/O管理部220-iからの要求を受けて、キャッシュディレクトリ記憶部231-iに格納されているキャッシュディレクトリ232-iに基づいてキャッシュメモリ51-i(図2参照)におけるI/Oアクセス管理を行う。キャッシュディレクトリ232-iのデータ構造については後述する。
【0027】
本実施形態において、LDISK80-iは、複数のディスクアレイ、例えば図3に示されるようなRAID(Redundant Arrays of Independent Disks、Redundant Arrays of Inexpensive Disks)構成の2つのディスクアレイ800-iから構成されるものとする。つまり、本実施形態においてデータ記憶装置10-iはディスクアレイ装置である。
【0028】
なお、ディスクアレイ800-iがLDISK80-iと1対1で対応するとは限らない。例えば、ディスクアレイ800-iの一部がLDISK80-iの一部に割り当てられ、ディスクアレイ800-iの他の一部が別のLDISKの一部に割り当てられても構わない。
【0029】
RAID制御部240-iは、各ディスクアレイ800-iを物理ディスクの集合として管理する。RAID制御部240-iは、キャッシュメモリ管理部230-iからの要求に応じて、LDISK80-i内のディスク転送の対象となるディスクアレイ800-iとの間のディスクデータの転送を制御する。HDD I/F制御部(HDD I/F制御部)250-iは、RAID制御部240-iからの要求に応じて、ディスクアレイ800-i内のディスク転送の対象となる、1つ以上の物理ディスクとの間のディスクデータの転送を制御する。
【0030】
なお、LDISK80-iは必ずしもディスクアレイから構成されている必要はなく、したがって、データ記憶装置10-iがディスクアレイ装置でなくともよい。更に、LDISK80-iに代えて物理ディスクのような他の記憶媒体を用いることも可能である。
【0031】
レプリケーション管理部260-iは、レプリケーション管理データ記憶部261-iに格納されているレプリケーション管理テーブル262-i及びI/O管理リスト記憶部263-iに格納されているI/O管理リスト264-iに基づいてレプリケーションの管理及び制御を行う。レプリケーション管理テーブル262-i及びI/O管理リスト264-iのデータ構造については後述する。
【0032】
コミュニケーションポート管理部270-iは他のデータ記憶装置との間の通信のためにアクセスポートを管理する。
【0033】
前述したように、キャッシュメモリ51-iを管理するための論理的な単位はキャッシュブロックと呼ばれる。このキャッシュブロックと1対1に対応し、キャッシュブロックを管理するための管理データ構造は、キャッシュディレクトリエントリと呼ばれる。キャッシュディレクトリ232-iは、キャッシュディレクトリエントリの集合である。
【0034】
図4は、キャッシュディレクトリのデータ構造例を示す。本実施形態において、キャッシュディレクトリエントリのデータ(キャッシュディレクトリデータ)は、論理ディスク番号、論理アドレス、状態フラグ、リードキャッシュビットマップ、ライトバックビットマップ(第1の変数)、及び未確定ライトビットマップ(第2の変数)から構成される。
【0035】
論理ディスク番号は、該当するキャッシュブロックが割り当てられている論理ディスクを示し、論理アドレスは、該当するキャッシュブロックが割り当てられている論理ディスク内の領域(論理ブロック領域)の開始アドレスを示す。状態フラグは、該当するキャッシュブロックの状態、例えばキャッシュブロックを使用中であるか否かを示す。
【0036】
リードキャッシュビットマップ、ライトバックビットマップ及び未確定ライトビットマップは、該当するキャッシュブロック内の有効データの位置を、ブロックよりも小サイズの単位、例えばセクタ単位で、ビットにより示す。有効データとは、リードキャッシュビットマップでは、該当キャッシュブロック内のリードキャッシュデータを指し、ライトバックビットマップでは、該当キャッシュブロック内において論理ディスク番号で示される論理ディスクに書き出されるべきライトバックデータ(いわゆるダーティデータ)を指す。また、未確定ライトビットマップでは、該当キャッシュブロック内の未確定ライトデータを指す。未確定ライトデータは、ライトバックデータと異なり、論理ディスクに書き出されるべきでないデータ、つまり論理ディスクに書き出すことが禁止されるデータである。未確定データが確定されるとライトバックデータとして扱われる。
【0037】
本実施形態において、レプリケーションの状態は、同期(SYNC)状態、コピー(COPY)状態及びスプリット(SPLIT)状態の3つである。レプリケーション作成直後の初期状態はSPLITである。SPLIT状態とは、正データ記憶装置10-1のLDISK80-1(正論理ディスク)と副データ記憶装置10-2のLDISK80-2(副論理ディスク)とが論理的に切り離された状態を指す。つまりSPLIT状態では、正データ記憶装置10-1及び副データ記憶装置10-2は、それぞれ独立のデータ記憶装置として機能する。
【0038】
SPLIT状態において、例えばホスト装置13-1から正データ記憶装置10-1に同期要求が与えられると、SPLIT状態からCOPY状態に遷移する。このCOPY状態では、LDISK80-1からデータを読み出し、この読み出されたデータをLDISK80-2に書き込むCOPY処理が行われる。このCOPY処理では、正データ記憶装置10-1から副データ記憶装置10-2に、通常ライトが要求される。この際の副データ記憶装置10-2での処理は後述の図6に示す外部の装置からライト処理が要求された場合のデータ記憶装置における処理の手順において、未確定ライト要求でない場合の処理と同様である。すなわち、通常のライトと同じく副データ記憶装置10-2のタイミングで実行されるデステージング処理により副論理ディスクにCOPY処理が行われる。COPY処理が完了すると、SYNC状態に遷移する。これらの状態は、レプリケーション管理部260-iによって制御される。
【0039】
図5は、レプリケーション管理部260-iによるレプリケーションの管理および制御に用いられるレプリケーション管理テーブル262-i及びI/O管理リスト264-iのデータ構造例を示す。レプリケーション管理テーブル262-iは、正論理ディスク番号、副論理ディスク番号、レプリケーションステート情報、レプリケーション周期情報、確定周期情報、送信可能データ量情報、送信済みデータ量情報及び確定フラグを保持する。
【0040】
正論理ディスク番号は、正データ記憶装置10-1内のレプリケーション元(レプリケーションマスタ)となる正論理ディスクの番号を示す。副論理ディスク番号は、副データ記憶装置10-2内のレプリケーション先(レプリケーションサブ)となる副論理ディスクの番号を示す。レプリケーションステート情報は前述の3つのレプリケーションの状態のいずれかを示す。本実施形態では、LDISK80-1(第1の記憶媒体)とLDISK80-2(第2の記憶媒体)とは対をなし、レプリケーションペアを構成する。
【0041】
レプリケーション周期情報は、正データ記憶装置10-1から後述するバッファリングI/Oリストに記載されたI/O要求に対応するライトデータを副データ記憶装置10-2へと転送する転送処理を行う周期を示す。確定周期情報は未確定ライトデータを確定する周期を示す。送信可能データ量情報は、確定周期情報の示す1周期内で正データ記憶装置10-1から副データ記憶装置10-2に未確定データとして送信可能なデータ量を示す。送信可能データ量は、例えば、1周期内に副データ記憶装置10-2に送られる未確定データのために、キャッシュメモリ51-2内の領域を割り当てることが許される量に設定される。送信済みデータ量情報は、正データ記憶装置10-1から副データ記憶装置10-2に未確定データとして既に送信されている送信済みデータ量を示す。確定フラグは、未確定ライト確定コマンドが実行中であるか否かを示す。
【0042】
I/O管理リスト264-iは、実行I/Oリスト264a-i、ペンディングI/Oリスト264b-i、およびバッファリングI/Oリスト264c-iから構成される。実行I/Oリスト264a-iは、実行I/O要求を要求順に保持するキュー形式のリスト構造を有する。ペンディングI/Oリスト264b-iは、ペンディングI/O要求を要求順に保持するキュー形式のリスト構造を有する。実行I/O要求とは、現時点において実
行が可能なI/O要求を指す。ペンディングI/O要求とは、現時点において実行が不可のI/O要求を指す。バッファリングI/Oリスト264c-iは、バッファリングI/O要求を要求順に保持するキュー形式のリスト構造を有する。バッファリングI/O要求とは未確定ライトデータとして副データ記憶装置に送信するI/O要求を指す。
【0043】
次に、本実施形態の動作について、レプリケーションの状態がSYNC状態のときに、ホスト装置13-1から正データ記憶装置10-1に通常ライトコマンドを含むCDBが送信された場合の正データ記憶装置10-1及び副データ記憶装置10-2の動作を例に、図6のフローチャートを参照して説明する。
【0044】
今、ホスト装置13-1から正データ記憶装置10-1に、通常ライトコマンドを含むCDBがデータ通信路11-1を介して送信されたものとする。通常ライトコマンドは、論理ディスク番号、開始アドレス及びサイズから構成されるアクセス情報を含む。このアクセス情報中の正論理ディスク番号は、正データ記憶装置10-1内の書き込み先のLDISK80-1を示す。アクセス情報中の開始アドレスは、データが書き込まれるべきLDISK80-1内の記憶領域(ライトアクセス範囲)の先頭位置のアドレスを示し、アクセス情報中のサイズは、この記憶領域のサイズ(転送サイズ)を示す。
【0045】
ホスト装置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要求であり、通常ライトコマンドに含まれているアクセス情報を継承する。
【0046】
次に、キャッシュメモリ管理部230-1は、I/O要求に含まれているアクセス情報中の論理ディスク番号の示すLDISK80-1がレプリケーションマスタであるかを判定する(ステップS2)。
【0047】
本実施形態のようにレプリケーションマスタである場合(ステップS2がYes)、キャッシュメモリ管理部230-1は、I/O管理部220-1から送信されたCDBライト処理のためのI/O要求(ここでは通常ライト要求)を受信すると、このI/O要求に基づいて、キャッシュメモリ51-1(第1のキャッシュメモリ)内で必要なキャッシュブロックと、このキャッシュブロックと同じ容量のバッファとを確保し(ステップS3)、I/O要求で指定されるライト処理に必要なライトデータを受信し、ステップS3で確保したキャッシュブロックとバッファとそれぞれに記憶する(ステップS5)。そして、キャッシュブロックが使用中であることを示すフラグと、バッファが確保されていること示すフラグとをキャッシュディレクトリ232-1のキャッシュディレクトリエントリに含まれている状態フラグにセットする。なお、確保されたバッファはライトデータを副データ記憶装置10-2に転送するために用いられる。
【0048】
次に、キャッシュメモリ管理部230-1は、I/O管理部220-1から受信したI/O要求が未確定ライト要求であるかを判定する(ステップS7)。本実施形態のように未確定ライト要求でないならば(ステップS7がNo)、受信したライトデータをキャッシュメモリ51-1内の確保されたキャッシュブロックにエントリする(ステップS8)。このステップS8においてキャッシュメモリ管理部230-1は、I/O管理部220-1から受信した通常ライト要求に含まれているアクセス情報の示すライトアクセス範囲を、確保されたキャッシュブロックに対応する、キャッシュディレクトリ232-1のキャッシュディレクトリエントリに含まれているライトバックビットマップに反映する。即ちキャッシュメモリ管理部230-1は、確保されたキャッシュブロックに対応するライトバックビットマップのうち、通常ライト要求で指定されたライトアクセス範囲に対応するビットを例えば"1"にセットする。
【0049】
図6に示されるフローチャートは、正データ記憶装置10-1及び副データ記憶装置10-2で共通に実行される。しかし本実施形態において、ホスト装置13-1から正データ記憶装置10-1に送信されるCDBに含まれるライトコマンドは、通常ライトコマンドに限られる。したがって、正データ記憶装置10-1では、ステップS7は必ずしも必要でなく、ステップS5、もしくはステップ6の次にステップS8が実行されても構わない。
【0050】
次にキャッシュメモリ管理部230-1は、I/O要求に含まれているアクセス情報中の論理ディスク番号の示すLDISK80-1がレプリケーションマスタであるかを判定する(ステップS10)。本実施形態のようにレプリケーションマスタである場合(ステップS10がYes)、キャッシュメモリ管理部230-1はレプリケーション管理部260-1にレプリケーション管理のためのI/O要求を送出する。このI/O要求は、通常ライト要求と同様に、論理ディスク番号、開始アドレス及びサイズから構成されるアクセス情報を含む。
【0051】
レプリケーション管理部260-1は、キャッシュメモリ管理部230-1からI/O要求を受信すると、I/O管理リスト264-1のペンディングI/Oリスト264b-1を参照する。そしてレプリケーション管理部260-1は、ペンディングI/Oリスト264b-1にI/O要求があるかを判定する(ステップS13)。
【0052】
ペンディングI/Oリスト264b-1にI/O要求がある場合(ステップS13がYes)は、正データ記憶装置10-1及び副データ記憶装置10-2の間でデータ更新の順序を保証するためには、今回キャッシュメモリ管理部230-1から受信したI/O要求(に対応する未確定ライト要求)を正データ記憶装置10-1から副データ記憶装置10-2に直ちに送信できないことを意味する。
【0053】
そこで、ステップS13の判定がYesの場合、レプリケーション管理部260-1は、キャッシュメモリ管理部230-1から受信したI/O要求をペンディングI/Oリスト264b-1の最後尾に追加する(ステップS14)。このステップS14においてレプリケーション管理部260-1が、未確定ライト確定コマンドの処理を開始するのは後述するステップS18から分岐された場合のみである。これは、ペンディングI/Oリスト264b-1に最初に繋がれているI/O実行時に既に前記処理を開始しているからである。
【0054】
次にレプリケーション管理部260-1は、ホスト装置13-1からの通常ライト要求に対する応答として、ライト完了を示すステータス情報をホスト装置13-1に通知し(ステップS15)、確保したキャッシュブロックの開放を行う(ステップS16)。具体的には、キャッシュブロック確保時にキャッシュディレクトリ232-1のキャッシュディレクトリエントリに含まれている状態フラグにセットしたキャッシュブロックが使用中であることを示すフラグをクリアする。そしてレプリケーション管理部260-1は、未確定ライト確定コマンドの実行完了が副データ記憶装置10-2から通知されるのを待つ状態に入る(ステップS17)。なお、未確定ライト確定コマンドの実行が成功した場合は、後述するステップS18から処理を再開する。未確定ライト確定コマンドの実行が失敗した場合は、エラーとして完了する。この未確定ライト確定コマンドの処理については後述する。
【0055】
一方、ステップS13の判定がNoの場合、レプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されている送信済みデータ量情報と送信可能データ量情報とに基づき、現在の送信済みデータ量と送信可能データ量とを確認する。そしてレプリケーション管理部260-1は、送信済みデータ量に今回受信したデータ量(つまり副データ記憶装置10-2に送信されるべきデータ量)を加えた値"送信済みデータ量+受信データ量"が送信可能データ量を超えているかを判定する(ステップS18)。
【0056】
"送信済みデータ量+受信データ量"が送信可能データ量を超えていると(ステップS18がYes)、今回受信されたデータを副データ記憶装置10-2に送信できないことを意味する。そこで、ステップS18の判定がYesの場合、レプリケーション管理部260-1は、ステップS14を実行し、未確定ライト確定コマンドの処理を開始する。
【0057】
これに対し、ステップS18の判定がNoの場合、レプリケーション管理部260-1は、キャッシュメモリ管理部230-1から受信したI/O要求をバッファリングI/Oリスト264c-1の最後尾に追加する(ステップS19)。そしてレプリケーション管理部260-1は、ホスト装置13-1からの通常ライト要求に対する応答として、ライト完了を示すステータス情報をホスト装置13-1に通知し(ステップS20)、確保したキャッシュブロックを開放する(ステップS21)。その後、レプリケーション管理部260-1は、正データ記憶装置10-1から副データ記憶装置10-2へのライトデータ転送処理を待つ状態となる。
【0058】
上述のライトデータ転送処理は、レプリケーション管理テーブル262-1に保持されているレプリケーション周期情報の示すレプリケーション周期(タイミング)が到来した場合に実行される。このレプリケーション周期について説明する。
【0059】
レプリケーション管理部260-1は、最初の通常ライト要求の実行時、つまり、送信済みデータ量が"0"の状態で通常ライトが完了した際、タイマをレプリケーション管理テーブル262-1に保持されているレプリケーション周期情報の示すレプリケーション周期を表す時間にセットする。そしてレプリケーション管理部260-1は、このタイマがタイムアウトした場合に、ライトデータ転送処理を実行する。また、タイマはライトデータ転送処理が完了した際にはリセットされる。
【0060】
レプリケーション管理部260-1は、上記タイマセットの条件を満たした場合には、このタイマをレプリケーション周期情報に基づいてセットし直す。これにより本実施形態では、レプリケーション周期情報の示すレプリケーション周期で未確定ライトコマンドによるライトデータ転送処理が実行される。なお、上述の未確定ライトコマンドの処理は、レプリケーション周期(タイミング)が到来した場合だけでなく、バッファリングI/OリストのI/O要求の量があらかじめ設定した閾値を超えた場合や、送信可能データ量に対して、確保されたバッファのデータ量があらかじめ設定した比率を超えた場合に行うようにすることも可能である。また、実行I/Oリストの要素が空になったことをトリガにして実行することも可能である。
【0061】
図7、図8を用いて、レプリケーション周期が到来した際の正データ記憶装置10-1の動作である周期処理について説明する。
【0062】
まず、未確定ライト確定コマンドが実行中であるか否かを、図5に示すレプリケーション管理テーブル262-1のもつ確定フラグによって判定する(ステップS31)。未確定ライト確定コマンドが実行中であれば(ステップS31がNo)、処理を行わず、次のレプリケーション周期が到来するまで待つ。未確定ライト確定コマンドが実行中で無い場合(ステップS31がYes)、実行I/Oリスト264a-1にI/O要求があるか否かの判定を行う(ステップS32)。
【0063】
実行I/Oリスト264a-iにI/O要求がある場合(ステップS32がNo)、ステップS31がNoの場合と同様の処理を行う。実行I/Oリスト264a-1にI/O要求が無い場合(ステップS32がYes)、バッファリングI/Oリスト264c-1にI/O要求があるか否かの判定を行う(ステップS33)。
【0064】
バッファリングI/Oリスト264c-1にI/O要求が無い場合(ステップS33がNo)、ステップS31、ステップS32がNoの場合と同様の処理を行う。バッファリングI/Oリスト264c-1にI/O要求がある場合(ステップS33がYes)、副データ記憶装置10-2に対して同時に転送することが可能なライトデータの判定を行う。
【0065】
まず、バッファリングI/Oリスト264c-1に、同じ領域に対する複数のI/O要求が積まれているか否かの判定を行う(ステップS34)。
【0066】
バッファリングI/Oリスト264c-1に同じ領域に対する複数のI/O要求が積まれている場合(ステップS34がNo)、バッファリングI/Oリスト264c-1において最後にあるI/O要求のみを残し、他のバッファを開放してI/O要求を完了させる(ステップS35)。バッファリングI/Oリストはキュー形式であり、先頭から順に繋いでいくため、順序が入れ替わることはない。
【0067】
バッファリングI/Oリスト264c-1に同じ領域に対する複数のI/O要求が積まれていない場合(ステップS34がYes)、バッファリングI/Oリスト264c-1に領域が重複する複数のライト要求が存在するか否かの判定を行う(ステップS36)。
【0068】
バッファリングI/Oリスト264c-1に領域が重複する複数のI/O要求がない場合(ステップS36がYes)、バッファリングI/Oリスト264c-1のI/O要求の全てを実行I/Oリスト264a-1に移動する(ステップS37)。バッファリングI/Oリスト264c-1内に領域が重複するI/O要求が存在する場合(ステップS36がNo)、バッファリングI/Oリスト264c-1の先頭から、最初に領域が重複するI/O要求の1つ前まで、つまり、領域の重複が発生するより前のI/O要求を、実行I/Oリスト264a-1に移動する(ステップS38)。
【0069】
その後、実行I/Oリスト264a-1のI/O要求をコミュニケーションポート管理部270-1が副データ記憶装置10-2に未確定ライト要求する(ステップS39)。ステップS39において、副データ記憶装置10-2に送信される未確定ライト要求は、副データ記憶装置10-2のI/O管理部220-2がデコードし実行する。
【0070】
すなわち、バッファリングI/Oリスト264c-1内が有するI/O要求であるバッファリングI/O要求とは、外部の装置から要求されたI/O要求のうち、実行が可能なI/O要求を指す。実行I/O要求とは、バッファリングI/O要求のうち、領域が重複するI/O要求を除いたものを指す。
【0071】
続いて、図6を用いて、正データ記憶装置10-1から未確定ライトコマンドを受信した副データ記憶装置10-2の処理について説明する。
【0072】
図7のステップS39において、レプリケーション管理部260-1により、バッファリングI/Oリスト264c-1に追加されたI/O要求に対応する未確定ライトコマンドの発行がコミュニケーションポート管理部270-1に要求される。するとコミュニケーションポート管理部270-1は、未確定ライトコマンドを含むCDBを副データ記憶装置10-2に送信する。そして、レプリケーション管理部260-1は、未確定ライトコマンドに対する副データ記憶装置10-2からの応答を待つ。
【0073】
そして、ステップS39で副データ記憶装置10-2に送信されたCDBは、未確定ライトコマンドを含む。この未確定ライトコマンドは、論理ディスク番号、開始アドレス及びサイズから構成されるアクセス情報を含む。論理ディスク番号は、正論理ディスク番号と対応付けてレプリケーション管理テーブル262-1に格納されている副論理ディスク番号で、副データ記憶装置10-2の書き込み先のLDISK80-2を示す。
【0074】
副データ記憶装置10-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要求であり、未確定ライトコマンドに含まれているアクセス情報を継承する。
【0075】
キャッシュメモリ管理部230-2は、I/O管理部220-2からライト処理のためのI/O要求(ここでは未確定ライト要求)を受信すると、このI/O要求に基づいて、キャッシュメモリ51-2(第2のキャッシュメモリ)内で必要なキャッシュブロックを確保し(ステップS4)、I/O要求で指定されるライト処理に必要なライトデータをステップS4で確保したキャッシュブロックに受信する(ステップS6)。そして、キャッシュブロックが使用中であることを示すフラグをキャッシュディレクトリ232-1のキャッシュディレクトリエントリに含まれている状態フラグにセットする。なお、ここでは、CDBは副データ記憶装置10-2に送信されているため、ステップS1の次にステップS4を実行する。
【0076】
次にキャッシュメモリ管理部230-2は、受信したI/O要求が未確定ライト要求であるかを判定する(ステップS7)。本実施形態のように未確定ライト要求の場合(ステップS7がYes)、受信したライトデータを、キャッシュメモリ51-2内の確保されたキャッシュブロックにエントリする(ステップS9)。このステップS9においてキャッシュメモリ管理部230-2は、未確定ライト要求に含まれているアクセス情報の示すライトアクセス範囲を、確保されたキャッシュブロックに対応するキャッシュディレクトリ232-2のキャッシュディレクトリエントリに含まれている未確定ライトビットマップに反映する。即ちキャッシュメモリ管理部230-2は、確保されたキャッシュブロックに対応する未確定ライトビットマップのうち、未確定ライト要求で指定されたライトアクセス範囲に対応するビットを例えば"1"にセットする。
【0077】
次にキャッシュメモリ管理部230-2は、I/O要求に含まれているアクセス情報中の論理ディスク番号の示すLDISK80-2がレプリケーションマスタであるかを判定する(ステップS10)。ここではレプリケーションマスタでないため(ステップS10がNo)、キャッシュメモリ管理部230-2は、正データ記憶装置10-1からの未確定ライト要求に対する応答として、未確定ライト完了を示すステータス情報を正データ記憶装置10-1に通知し(ステップS11)、確保したキャッシュブロックを開放する(ステップS12)。
【0078】
ここで、図8を用いて、未確定ライト完了を示すステータス情報を受信した際の正データ記憶装置10-1の処理を説明する。
【0079】
正データ記憶装置10-1からの未確定ライト要求に対する応答として、ライト完了を示すステータス情報が、副データ記憶装置10-2から正データ記憶装置10-1に通知される(ステップS23)。すると、レプリケーション管理部260-1は、未確定ライトに成功したか否かを、このステータス情報に基づいて判定する(ステップS24)。
【0080】
もし、未確定ライトに成功したならば(ステップS24がYes)、レプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されている送信済みデータ量情報を、現在の送信済みデータ量に今回受信されたデータ量(副データ記憶装置10-2に送信されたデータ量)を加えた値を示すように更新する(ステップS26)。次にレプリケーション管理部260-1は、実行I/Oリスト264a-1から、成功した未確定ライトに対応するI/O要求を削除し(ステップS27)、確保したバッファの開放を行う(ステップS28)。具体的には、バッファ確保時にキャッシュディレクトリ232-1のキャッシュディレクトリエントリに含まれている状態フラグにセットしたバッファ確保中であることを示すフラグをクリアする。これにより、正データ記憶装置10-1におけるI/O要求の処理は完了する(ステップS29)。
【0081】
これに対し、未確定ライトに失敗したならば(ステップS24がNo)、レプリケーション管理部260-1は、レプリケーションの状態をSYNC状態からSPLIT状態に遷移する(ステップS25)。即ちレプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されているレプリケーションステート情報を、SPLIT状態を示すように更新する。そしてレプリケーション管理部260-1はステップS36に進む。このステップS36においてレプリケーション管理部260-1は、実行I/Oリスト264a-1から、失敗した未確定ライトに対応するI/O要求を削除し(ステップS27)、確保したバッファの開放を行う(ステップS28)。これにより、正データ記憶装置10-1におけるI/O要求の処理は完了する(ステップS29)。
【0082】
次に、ステップS14に続いて実行される正データ記憶装置10-1における未確定ライト確定コマンドの処理について、図9のフローチャートを参照して説明する。
【0083】
まず正データ記憶装置10-1のレプリケーション管理部260-1は、実行I/Oリスト264a-1を参照し、この実行I/Oリスト264a-1にI/O要求があるかを判定する(ステップS61)。もし、実行I/Oリスト264a-1にI/O要求があるならば(ステップS61がYes)、レプリケーション管理部260-1は、そのI/O要求の実行完了を待つ(ステップ62)。
【0084】
これに対し、実行I/Oリスト264a-1にI/O要求がないか、或いは実行I/Oリスト264a-1にI/O要求がなくなったならば(ステップS61がNo)、レプリケーション管理部260-1は、未確定ライト確定コマンドの発行をコミュニケーションポート管理部270-1に要求する(ステップS63)。するとコミュニケーションポート管理部270-1は、未確定ライト確定コマンドを含むCDBを副データ記憶装置10-2に送信し、未確定ライト確定コマンドを含むCDBを副データ記憶装置10-2に送信したことを示すフラグをレプリケーション管理テーブル262-1の確定フラグにセットする。未確定ライト確定コマンドは、正データ記憶装置10-1からの未確定ライト要求に応じてキャッシュメモリ51-2にライトされた未確定データをライトバックデータとして確定させることを指定する。未確定ライト確定コマンドは、確定されたデータが書き出されるべきLDISK80-2を示す論理ディスク番号を含む。このように本実施形態では、実行I/Oリスト264a-1にI/O要求がある場合、全てのI/O要求の実行完了を待った後に、未確定ライト確定コマンドを含むCDBが正データ記憶装置10-1から副データ記憶装置10-2に送信される。
【0085】
未確定ライト確定コマンドを含むCDBが副データ記憶装置10-2に送信されると、レプリケーション管理部260-1は、この未確定ライト確定コマンドに対する副データ記憶装置10-2からの応答を待つ(図6ステップS17)。レプリケーション管理部260-1は、未確定ライト確定コマンドに対する副データ記憶装置10-2からのステータス情報を受信すると、その情報に基づき、未確定ライト確定に成功したかを判定する(ステップS64)。
【0086】
もし、未確定ライト確定に成功したならば(ステップS64がYes)、レプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されている送信済みデータ量情報を"0"に初期化する。そしてレプリケーション管理部260-1は、ペンディングI/Oリスト264b-1に繋がれているI/O要求を先頭から順に外して、図6のフローチャートにおけるステップS18から処理を再開する(ステップS65)。但し、ペンディングI/Oリスト264b-1から外されたI/O要求に関する、ホスト装置13-1へのステータス情報の転送(図6ステップS11またはS20)は、このI/O要求をペンディングI/Oリスト264b-1に追加した際に既に行われているため、今回は実行されない。
【0087】
これに対し、未確定ライト確定に失敗したならば(ステップS64がNo)、レプリケーション管理部260-1は、レプリケーション管理テーブル262-1に保持されているレプリケーションステート情報を、SPLIT状態を示すように更新する(ステップS66)。つまりレプリケーション管理部260-1は、レプリケーションの状態を、SYNC状態からSPLIT状態に遷移させる。そしてレプリケーション管理部260-1は、ペンディングI/Oリスト264b-1の待ち状態にあるI/O要求をエラーとして完了させる(ステップS67)。この際、副データ記憶装置10-2へのデータ転送は行われない。
【0088】
上述の未確定ライト確定コマンドの処理は、図6のフローチャートのステップS13の判定条件が成立した場合だけでなく、レプリケーション管理テーブル262-1に保持されている確定周期情報の示す確定周期(タイミング)が到来した場合にも実行される。この確定周期について説明する。
【0089】
レプリケーション管理部260-1は、最初の未確定ライト要求の実行時、つまり、送信済みデータ量が"0"の状態で未確定ライトが完了した際に、タイマをレプリケーション管理テーブル262-1に保持されている確定周期情報の示す確定周期を表す時間にセットする。そしてレプリケーション管理部260-1は、このタイマがタイムアウトした場合にも、図6のフローチャートのステップS13の判定条件が成立した場合と同様に、未確定ライト確定コマンドの処理を実行する。また、タイマはステップS14によって開始された未確定ライト確定コマンドが完了した際にはリセットされる。
【0090】
レプリケーション管理部260-1は、上記タイマセットの条件を満たした場合には、このタイマを確定周期情報に基づいてセットし直す。これにより本実施形態では、ステップS13の判定条件が成立した場合だけでなく、確定周期情報の示す確定周期でも未確定ライト確定コマンドの処理が実行される。
【0091】
次に、副データ記憶装置10-2側での未確定ライト確定コマンドの処理について図10を用いて説明する。
【0092】
今、正データ記憶装置10-1から副データ記憶装置10-2に送信された未確定ライト
確定コマンドを含むCDBが、ホストI/F制御部210-2で受信され、I/O管理部220-2に渡されたものとする。I/O管理部220-2は、CDBが未確定ライト確定コマンドを含む場合、キャッシュメモリ管理部230-2に対してライト処理のためのI/O要求として、未確定ライト確定要求を送出する(ステップS50)。未確定ライト確定要求は、対応する副論理ディスク番号を含む。
【0093】
キャッシュメモリ管理部230-2は、未確定ライト確定要求に含まれている副論理ディスク番号の示すLDISK80-2に対応するキャッシュブロックのエントリを全てサーチする(ステップS51)。次にキャッシュメモリ管理部230-2は、該当するキャッシュブロックに対応するキャッシュディレクトリ232-2内の該当するキャッシュディレクトリエントリに含まれている未確定ビットマップを、ライトバックマップにコピーする(ステップS52)。すなわち、キャッシュメモリ管理部230-2は、未確定ビットマップ内で"1"にセットされているビットの状態、つまり未確定ライトデータの範囲を示すビットの状態をライトバックマップにコピー(反映)する。しかる後、キャッシュメモリ管理部230-2は未確定ビットマップを初期化する(ステップS53)。即ちキャッシュメモリ管理部230-2は、ライトバックマップにコピーされた未確定ビットマップ内のビット(ここでは未確定ビットマップの全ビット)を"0"にリセットする。
【0094】
キャッシュメモリ管理部230-2、LDISK80-2に対応する全てのキャッシュブはロックのエントリについて、上述のコピー処理を実行する。そしてキャッシュメモリ管理部230-2は、正データ記憶装置10-1からの未確定ライト確定コマンドに対する応答として、完了を示すステータス情報を正データ記憶装置10-1に通知する(ステップS54)。
【0095】
このような未確定ライト確定コマンドの処理による完了時点では、キャッシュメモリ51-2には、未確定ライトデータが存在しないことになる。
【0096】
次に、本実施形態において、ステップS3もしくはS4における、キャッシュブロックやバッファの確保からI/O要求の処理の完了までは、該当するライトデータをエントリするのに用いられているキャッシュブロックおよびバッファが、キャッシュディレクトリエントリ内の状態フラグに基づいて排他される。つまり使用中のキャッシュブロックおよびバッファは他のI/O要求によって使用されない状態となる。 以下、キャッシュメモリ管理部230-iによって実行されるキャッシュブロック確保時の処理(ステップS3もしくは4)の詳細について、図11のフローチャートを参照して説明する。
【0097】
まず、キャッシュメモリ管理部230-iは、I/O管理部220-iからライト処理のためのI/O要求(通常ライト要求または未確定ライト要求)を受信すると、キャッシュブロック確保のために、キャッシュディレクトリ232-iを参照し、このI/O要求に含まれているアクセス情報によって示されるLDISK80-i内のライトアクセス範囲に対応するキャッシュブロックのエントリをサーチする(ステップS41)。そしてキャッシュメモリ管理部230-iは、キャッシュブロックエントリのサーチの結果、該当するキャッシュブロックのエントリが見つけられたかを判定する(ステップS42)。つまりキャッシュメモリ管理部230-iは、該当するキャッシュブロックが既に確保されているかを判定する。
【0098】
もし、該当するキャッシュブロックのエントリが見つけられたならば(ステップS42がYes)、キャッシュメモリ管理部230-iは、このキャッシュブロックのエントリが他のI/O要求のための処理で現在使用されているかを判定する(ステップS44)。このステップS44の判定は、該当するキャッシュブロックに対応するキャッシュディレクトリ232-i内のキャッシュディレクトリエントリ(以下、該当するキャッシュディレクトリエントリと称する)に含まれている状態フラグに基づいて行われる。もし、該当するキャッシュブロックが使用中でないならば(ステップS44がNo)、キャッシュメモリ管理部230-iは、I/O要求が通常ライト要求であるかを判定する(ステップS45)。
【0099】
キャッシュメモリ管理部230-iが制御装置20-2に含まれているキャッシュメモリ管理部230-2であり、I/O要求が正データ記憶装置10-1から送られた未確定ライト要求である場合、ステップS45の判定はNoとなる。この場合、キャッシュメモリ管理部230-2は、該当するキャッシュディレクトリエントリに含まれているライトバックビットマップの少なくとも一部のビットがセットされているかを判定する(ステップS46)。この判定により、該当するキャッシュブロックにライトバックデータが含まれているかが判定される。
【0100】
ステップS46の判定がYesのとき、キャッシュメモリ管理部230-2は、他のI/O要求で使用されていない該当するキャッシュブロック中のライトバックデータを、該当するキャッシュディレクトリエントリに含まれている論理ディスク番号及び論理アドレスで指定されるLDISK80-2内のブロック領域に書き出すためのI/O要求を、RAID制御部240-2に送出する(ステップS47)。キャッシュメモリ管理部230-2は、このI/O要求に対するRAID制御部240-2から書き出しの完了が通知されるのを待つ(ステップS48)。この段階では、該当するキャッシュブロックに新たに書き込まれるべきライトデータは受信されていない。
【0101】
このように、未確定ライト要求の処理時(ステップS45がNo)、キャッシュブロックサーチ(ステップS41)の結果、該当するキャッシュブロックのエントリがあり(ステップS42がYes)、且つ、該当するキャッシュディレクトリエントリ内のライトバックビットマップの少なくとも一部のビットがセットされている場合(ステップS46がYes)、キャッシュメモリ管理部230-2は該当するキャッシュブロック中のライトバックデータの書き出しをRAID制御部240-2に要求し、その書き出しの完了を待つ。これにより、該当するキャッシュディレクトリエントリに含まれているライトバックビットマップ及び未確定ライトビットマップのビットがいずれもセットされている状態が発生するのを防止できる。つまり、同一キャッシュブロック内のデータが、ライトバックデータであって且つ未確定ライトデータであると、ライトバックビットマップ及び未確定ライトビットマップによって示されるのを防止できる。
【0102】
このような、キャッシュメモリ管理部230-2の制御により、キャッシュメモリ51-2上のライトバックデータ、つまり正データ記憶装置10-1からの未確定ライト確定コマンドの処理により確定されているキャッシュメモリ51-2上のデータは、未確定データで上書きされることなく、必ずLDISK80-2に書き出される。
【0103】
さて、キャッシュメモリ管理部230-iは書き出しの完了の待ち状態で、RAID制御部240-iから書き出しの完了が通知されると(ステップS49)、今回I/O管理部220-iから受信したI/O要求で指定されるライト処理に必要なライトデータの受信をI/O管理部220-iに要求する(ステップS50)。これによりキャッシュメモリ管理部230-iは、ライトデータを受信して、キャッシュブロック確保時の処理を終了する。
【0104】
一方、該当するキャッシュブロックのエントリが見つけられなかった場合(ステップS42がNo)、キャッシュメモリ管理部230-iは新規にキャッシュブロックを確保し(ステップS43)、しかる後にステップS50を実行する。また、該当するキャッシュブロックのエントリが他のI/O要求のための処理で使用中であるならば(ステップS44がYes)、キャッシュメモリ管理部230-iはステップS48に進んで、そのI/O要求の完了を待つ。以降の動作は、ステップS47からステップS48に進んだ場合と同様である。
【0105】
また、該当するキャッシュディレクトリエントリに含まれているライトバックビットマップの全ビットがセットされていないならば(ステップS46がNo)、キャッシュメモリ管理部230-iはステップS50に進んで、今回I/O管理部220-iから受信したI/O要求で指定されるライト処理に必要なライトデータの受信をI/O管理部220-iに要求する。
【0106】
一方、キャッシュメモリ管理部230-iが制御装置20-1(第1の制御装置)に含まれているキャッシュメモリ管理部230-1であり、今回I/O管理部220-1から受信したI/O要求がホスト装置13-1から送られた通常ライト要求である場合(ステップS45がYes)、キャッシュメモリ管理部230-1はステップS50に進んで、このI/O要求で指定されるライト処理に必要なライトデータの受信をI/O管理部220-1に要求する。
【0107】
なお、同一キャッシュブロック内でもライトバックビットマップ内でセットされているビットの範囲と、未確定ライト要求の示すライトアクセス範囲とが重複していない場合、必ずしも、ステップS47の実行によって該当するキャッシュブロック中のライトバックデータの書き出しを要求する必要はない。そこで、ステップ46に代えて、ライトバックビットマップ内でセットされているビットの範囲と、未確定ライト要求の示すライトアクセス範囲とが重複するかを判定する新たなステップを適用しても構わない。そして、この新たなステップの判定がYesの場合に、キャッシュメモリ管理部230-iが該当するキャッシュブロックに含まれている重複部分のライトバックデータの書き出しをRAID制御部240-iに要求し(ステップS47)、その書き出しの完了を待つ(ステップS48)ようにしてもよい。これにより、キャッシュブロックのデータの書き出しが無用に要求されるのを防止しつつ、キャッシュブロック内でライトバックビットマップのビットと未確定ライトビットマップのビットとがいずれもセットされている領域が存在するのを防止できる。
【0108】
次に、レプリケーションの状態がSPLIT状態のときに、ホスト装置13-1から正データ記憶装置10-1に通常ライトコマンドを含むCDBが送信された場合の正データ記憶装置10-1の動作について簡単に説明する。この場合、正データ記憶装置10-1はレプリケーションマスタではない単なるデータ記憶装置として機能する。このため正データ記憶装置10-1では、図6及び8のフローチャートにおいて、自身がレプリケーションマスタでない場合の通常ライト要求処理(ステップS1、S4、6、S7、S8、S10〜S12、S29)が実行される。
【0109】
次に、レプリケーションの状態がCOPY状態のときの正データ記憶装置10-1の動作について簡単に説明する。この場合、レプリケーション管理部260-1は、図6及び8のフローチャートにおけるレプリケーション管理部260-iの処理(ステップS13〜S20)に代えて、単に、ライト完了を示すステータス情報をホスト装置13-1に通知する処理(ステップS20に相当する処理)を行う。ここでは、SYNC状態と異なり、I/O管理リスト264-1中のバッファリングI/Oリスト264c-1及びペンディングI/Oリスト264b-1の処理が行われない。そして、レプリケーション管理部260-1はコミュニケーションポート管理部270-1に要求することにより、コミュニケーションポート管理部270-1の制御の下で、通常ライトコマンドに対応する確定ライトコマンドを副データ記憶装置10-2に送信する。
【0110】
ここで、データ記憶システム100において、大規模災害等により正サイト100-1がダウンし、正データ記憶装置10-1がアクセス不能になったものとする。この場合、副データ記憶装置10-2は、ホスト装置13-2からの指示により、SPLIT状態に遷移する。但し、正データ記憶装置10-1はアクセス不能のため、副データ記憶装置10-2は、通常のSPLIT状態ではなく、エラーSPLIT状態に遷移する。本実施形態において、エラーSPLIT状態に遷移する処理の対象となる副論理ディスクは、LDISK80-1に対応する、LDISK80-2である。
【0111】
エラーSPLIT状態に遷移する処理において、キャッシュメモリ管理部230-2は、その時点でキャッシュメモリ51-2に格納されている未確定ライトデータを破棄する。これにより、副データ記憶装置10-2の状態を、最後に未確定データが確定された時点までロールバックすることができる。つまり、LDISK80-2を、最後に正データ記憶装置10-1からの未確定ライト確定コマンドを処理した時点の内容に戻すことができる。
【0112】
未確定ライトデータは次のようにして破棄される。まずキャッシュメモリ管理部230-2は、エラーSPLIT状態に遷移する処理の対象となる、LDISK80-2に対応するキャッシュブロックのエントリを全てサーチする。次にキャッシュメモリ管理部230-2は、該当するキャッシュブロックに対応するキャッシュディレクトリ232-2内の該当するキャッシュディレクトリエントリに含まれている未確定ビットマップ内のビットを全てリセットする。これにより、エラーSPLIT状態に遷移する処理の開始時点でキャッシュメモリ51-2に格納されている未確定ライトデータが破棄される。
【0113】
なお、LDISK80-1とLDISK80-2の差分、即ちレプリケーションペアの差分を差分テーブル等により管理する場合、未確定ライトデータが破棄された領域に相当する差分をセットするとよい。
【0114】
上述の本実施形態におけるデータ記憶システムは、レプリケーションペアが1つである場合を説明しているが、データ記憶システムが複数のレプリケーションペアを有していても構わない。このようなデータ記憶システムにおいて、データの整合性が要求される複数のレプリケーションペア毎にグループ化して、そのグループ(コンシステンシグループ)毎に、未確定ライト処理、未確定ライト確定処理が行われる構成とすることも可能である。この場合、正データ記憶装置10-1から副データ記憶装置10-2に送信される未確定ライト確定コマンドに、副論理ディスク番号に代えてコンシステンシグループ番号を持たせればよい。
【0115】
本実施形態では、ライト要求の順序を保証するために、この要求が要求順に繋がれるI/O管理リスト264-iのデータが用いられる。
【0116】
本実施形態では非同期レプリケーションが適用される。即ち本実施形態では、ホスト装置13-1から正データ記憶装置10-1への通常ライト要求に対する正データ記憶装置10-1からホスト装置13-1へのステータス情報の転送は、正データ記憶装置10-1から副データ記憶装置10-2に対するデータ転送の時間に影響されない。
【0117】
そこで本実施形態では、正データ記憶装置10-1から副データ記憶装置10-2に対する未確定データ確定コマンドの発行の前後で、正データ記憶装置10-1がホスト装置13-1から受信したライトデータの順序を保証している。このことは、先に述べたような、既に確定しているキャッシュメモリ51-2上のライトデータが未確定データで上書きされるのを防止する仕組みから明らかである。また、ある未確定データ確定コマンドから次の未確定データ確定コマンドまでの期間内で、LDISK80-1の同一領域に対する更新が行われた場合の順序は、前記したように正データ記憶装置10-1のキャッシュブロックを副データ記憶装置10-2に対する未確定ライト完了後まで排他することで保証している(時間的に後から書き込まれたデータがそれ以前に書き込まれたデータで上書きされることがない)。
【0118】
また本実施形態では、確定コマンド実行中に同一領域に連続でライト要求が行われた場合での非同期性も実現可能である。なお、同一領域に連続でライト要求が行われた場合、副サイトにライトデータを転送する際に、最後に要求されたライトデータのみを転送することによって、ホスト装置へのレスポンスを低減することが可能である。
【0119】
また本実施形態では、最大ロールバック時間を、確定周期情報の示す確定周期によって保証することができる。この最大ロールバック時間とは、正サイト100-1のダウン時に、LDISK80-2の内容を、その時点からどれくらい前のLDISK80-1の内容に巻き戻すことができるかを指す。
【0120】
また本実施形態によれば、正サイト100-1及び副サイト100-2の間に専用の中継転送装置を必要とせず、また正サイト100-1及び副サイト100-2にキャッシュメモリ51-1、51-2とは別に専用のバッファを必要としない、比較的安価な非同期レプリケーションを実現できる。また、シーケンス番号を振る等のプロトコルオーバヘッドを減らすこともできる。
【0121】
なお、上記本実施形態はそのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、本実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。また、上記本実施形態では、データ転送用バッファをキャッシュメモリ51-iに確保しているが、LDISK、HDD、SSDなどのキャッシュメモリに限らない記憶媒体に確保しても良い。その場合は、バッファを確保しているかを示すための状態フラグをキャッシュメモリ管理部ではなく、バッファを確保した先の記憶媒体の管理部が有することとする。
【符号の説明】
【0122】
100-1…正サイト、100-2…副サイト、10-1…正データ記憶装置(第1のデータ記憶装置)、10-2…副データ記憶装置(第2のデータ記憶装置)、13-1、13-2…ホスト装置、20-i…制御装置、80-i…論理ディスク(LDISK、記憶媒体)、11-1、11-2…データ通信路、21-i…CPU、31-i…プログラムメモリ、51-i…キャッシュメモリ、230-i…キャッシュメモリ管理部、231-i…キャッシュディレクトリ記憶部、232-i…キャッシュディレクトリ、260-i…レプリケーション管理部、261-i…レプリケーション管理データ記憶部、262-i…レプリケーション管理テーブル、263-i…I/O管理リスト記憶部、264-i、…I/O管理リスト、264a-i…実行I/Oリスト、264b-i…ペンディングI/Oリスト、264c-i…バッファリングI/Oリスト

【特許請求の範囲】
【請求項1】
データを記憶するための第1の記憶媒体と、前記第1の記憶媒体へのアクセスを制御する第1の制御装置とを有する第1のデータ記憶装置と、
データを記憶するための第2の記憶媒体と、前記第2の記憶媒体へのアクセスを制御する第2の制御装置とを有し、前記第1のデータ記憶装置とデータ通信路を介して接続される第2のデータ記憶装置とを具備し、
前記第1の制御装置は、 前記第1の記憶媒体に対して読み出しまたは書き込みされるデータを記憶する第1のキャッシュメモリと、 前記第2のデータ記憶装置に送信されるべきライトデータを記憶するためのバッファ領域と、 前記第1のキャッシュメモリに対するアクセスを管理する第1のキャッシュメモリ管理手段と、 前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための特定のレプリケーション状態を備えるレプリケーション管理を行うためのレプリケーション管理手段とを備え、
前記第2の制御装置は、 前記第2の記憶媒体に対して読み出しまたは書き込みされるデータを記憶する第2のキャッシュメモリを備え、
前記第1のキャッシュメモリ管理手段は、 前記特定のレプリケーション状態において、外部の装置から前記第1の記憶媒体へのデータの書き込みが指定された場合、前記第1のキャッシュメモリ、および前記バッファ領域のそれぞれに前記指定されたデータを書き込み、
前記レプリケーション管理手段は、前記バッファ領域に書き込まれた前記ライトデータを、前記第2のキャッシュメモリに未確定ライトデータとして書き込むための未確定ライトを前記第2のデータ記憶装置に要求し、
前記未確定ライトを要求することにより前記ライトデータが設定された量を超える場合、もしくは予め定められたタイミングが到来した場合に、前記バッファ領域から前記第2のキャッシュメモリに前記未確定ライトデータとして既に書き込まれているデータを前記第2の記憶媒体に書き出されるべきライトバックデータに確定するための未確定ライト確定を前記第2のデータ記憶装置に要求することを特徴とするデータ記憶システム。
【請求項2】
前記レプリケーション管理手段は、前記第2のキャッシュメモリの同一の領域に対する複数の前記未確定ライトの要求を行う場合に、前記複数の未確定ライトの要求の内、最後に要求された未確定ライトデータのみを送信することを特徴とする請求項1に記載のデータ記憶システム。
【請求項3】
前記レプリケーション管理手段は、予め定められたレプリケーション周期が到来した場合に前記未確定ライトを前記第2のデータ記憶装置に要求することを特徴とする請求項1および請求項2に記載のデータ記憶システム。
【請求項4】
前記レプリケーション管理手段は、前記バッファ領域のデータ量が予め定められたデータ量を超える場合に、前記未確定ライトを前記第2のデータ記憶装置に要求することを特徴とする請求項1および請求項2に記載のデータ記憶システム。
【請求項5】
データを記憶するための第1の記憶媒体と、前記第1の記憶媒体へのアクセスを制御する第1の制御装置とを有する第1のデータ記憶装置と、データを記憶するための第2の記憶媒体と、前記第2の記憶媒体へのアクセスを制御する第2の制御装置とを有し、前記第1のデータ記憶装置とデータ通信路を介して接続される第2のデータ記憶装置とを具備し、前記第1の制御装置は、前記第1の記憶媒体に対して読み出しまたは書き込みされるデータを記憶する第1のキャッシュメモリと、前記第2のデータ記憶装置に送信されるべきライトデータを記憶するためのバッファ領域とを備え、前記第2の制御装置は、前記第2の記憶媒体に対して読み出しまたは書き込みされるデータを記憶する第2のキャッシュメモリを備えるデータ記憶システムに適用される非同期レプリケーション方法であって、
前記第1及び第2の記憶媒体を前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存される際のミラーとして運用するための特定のレプリケーション状態において、外部の装置から前記第1の記憶媒体へのデータの書き込みが指定された場合に、
前記第1の制御装置が前記指定されたデータを前記第1の記憶媒体に書き出されるべきライトバックデータとして前記第1のキャッシュメモリに書き込むステップと、
前記指定されたデータを前記第2のデータ記憶装置に送信されるべきライトデータとして前記バッファ領域に書き込むステップと、
あらかじめ定めたレプリケーション周期が到来した場合に、前記第1の制御装置が、前記バッファ領域に書き込まれた前記ライトデータを前記第2のキャッシュメモリに転送するための未確定ライトを前記第2のデータ記憶装置に要求するステップと、
前記未確定ライトを要求することによりを前記第2のキャッシュメモリに転送される前記ライトデータが前記予め定められた量を超えると判定された場合、もしくは予め定められた確定周期が到来した場合に、前記第2のキャッシュメモリに転送された前記ライトデータを前記第2の記憶媒体に書き出されるべきライトバックデータに確定するための未確定ライト確定を、前記第1の制御装置が前記第2のデータ記憶装置に要求するステップとを具備することを特徴とする非同期レプリケーション方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−22645(P2012−22645A)
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願番号】特願2010−162203(P2010−162203)
【出願日】平成22年7月16日(2010.7.16)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】