データ記憶装置及び筐体内レプリケーション方法
【課題】キャッシュメモリの記憶領域を犠牲にすることなく、記憶媒体にバックアップを採る場合のスナップショット作成に要する時間を短縮する。
【解決手段】テーブル250は、キャッシュメモリ104にキャッシングされたデータのうちのダーティデータの範囲を示す第1の変数と、バックアップLDISK11bに書き込まれるべきスナップデータの範囲を示す第2の変数とを含むキャッシュ管理用データを保持する。キャッシュメモリ管理部243は、ホスト機器からのスナップショット作成要求時、キャッシュ管理用データに含まれている第1の変数を前記第2の変数にコピーし、コピー完了をもって、レプリケーションの状態を、スナップショットがバックアップLDISK11bのデータとして確定していないことを示す状態に遷移させると共に、スナップショット作成要求に対するスナップショット作成の完了をホスト機器に通知する。
【解決手段】テーブル250は、キャッシュメモリ104にキャッシングされたデータのうちのダーティデータの範囲を示す第1の変数と、バックアップLDISK11bに書き込まれるべきスナップデータの範囲を示す第2の変数とを含むキャッシュ管理用データを保持する。キャッシュメモリ管理部243は、ホスト機器からのスナップショット作成要求時、キャッシュ管理用データに含まれている第1の変数を前記第2の変数にコピーし、コピー完了をもって、レプリケーションの状態を、スナップショットがバックアップLDISK11bのデータとして確定していないことを示す状態に遷移させると共に、スナップショット作成要求に対するスナップショット作成の完了をホスト機器に通知する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、マスタディスクのような第1の記憶媒体(一次記憶媒体)とバックアップディスクのような第2の記憶媒体(二次記憶媒体)とをミラーとして運用するデータ記憶装置及び筐体内レプリケーション方法に関する。
【背景技術】
【0002】
昨今、ディスク容量の増大のペースは著しく、それに伴い、データ量増大のペースも著しい。このような状況下、テープ機器へのバックアップは非常に時間を要するため、ディスクをバックアップ先に指定するケースが増えている。
【0003】
通常、ディスクにバックアップを採るケースでは、マスタディスクとバックアップディスクを常時ミラーとして運用し、バックアップ作成時に、サーバ側にてコミットポイント作成またはファイルシステムアンマウントを実行し、サーバメモリ上のダーティデータを全て吐き出し、データ記憶装置のキャッシュ(キャッシュメモリ)上のデータをマスタディスクとバックアップディスクとの両方に吐き出した(デステージングした)後に、マスタディスクとバックアップディスクを分離(ミラー状態を解除)して、バックアップの生成を行う。このバックアップディスクの分離、つまりミラー状態の解除は、スナップショット作成と称されている。
【0004】
このように、スナップショット作成(ミラー状態の解除)にあたっては、マスタとバックアップの両方に書き込みを実施するために、最悪のケース(例えばデータ記憶装置のキャッシュ上に、ランダム書き込みとなるダーティデータが非常に多く存在する場合)では、多大な時間を要することになる。
【0005】
そこで、例えば特許文献1には、ディスクにバックアップを採る場合のスナップショット作成に要する時間を短縮することを可能とする技術(先行技術)が記載されている。この特許文献1に記載の先行技術の特徴は、キャッシュに格納されるマスタディスクのダーティデータ(デステージングされるべきデータ)がキャッシュ上に占める総容量を制限(例えばキャッシュの容量の1/2に制限)し、且つ、その総容量分のバッファ(退避エリア)をキャッシュ上に予め確保しておき、スナップショット作成時に、その予め確保されたバッファに対してマスタディスクのダーティデータをコピー(退避)し、そのコピー完了をもって、スナップショット作成を完了とすることにある。
【特許文献1】特開2005−31746号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
先行技術においては、ディスクにバックアップを採る場合のスナップショット作成に要する時間を短縮することができる。しかし、先行技術では、マスタディスクのダーティデータがキャッシュ上に占める総容量を制限し、その総容量分のバッファをキャッシュ上に確保する必要がある。この総容量の最大値は、キャッシュの記憶容量の1/2である。このため、先行技術では、キャッシュの記憶領域の高々1/2しかキャッシングのために使用することができない。
【0007】
本発明は上記事情を考慮してなされたものでその目的は、キャッシュ(キャッシュメモリ)の記憶領域を犠牲にすることなく、記憶媒体にバックアップを採る場合のスナップショット作成に要する時間を短縮することができるデータ記憶装置及び筐体内レプリケーション方法を提供することにある。
【課題を解決するための手段】
【0008】
本発明の1つの観点によれば、第1の記憶媒体及び第2の記憶媒体と、ホスト機器と前記第1及び第2の記憶媒体との間に介在し、前記第1及び第2の記憶媒体のレプリケーション管理上の状態が第1の状態では、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備するデータ記憶装置が提供される。このデータ記憶装置において、前記制御装置は、前記第1及び第2の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、前記キャッシュメモリに記憶されたデータのうち前記第1の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第1の変数と、前記第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、前記ホスト機器からのスナップショット作成要求に応じて、前記第1の変数を前記第2の変数にコピーし、前記第2の変数へのコピー完了をもって、レプリケーション管理上の状態を、前記第1の状態から前記第1及び第2の記憶媒体が論理的に分離された第2の状態に移行する状態であり、スナップショットが前記第2の記憶媒体のデータとして確定していないことを示す第3の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、前記第1の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、前記第1の状態において、前記デステージング制御手段によってデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1及び第2の記憶媒体の双方に書き込むための制御に応じて前記第1の変数を更新し、前記第1の状態以外において、前記デステージング制御手段によってデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1の記憶媒体に、前記第2の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第2の記憶媒体に、それぞれ書き込むための制御に応じて前記第1及び第2の変数を更新する書き込み制御手段とを含む。
【発明の効果】
【0009】
本発明によれば、第1の記憶媒体(マスタ記憶媒体)と第2の記憶媒体(バックアップ記憶媒体)とを論理的に分離するための、ホスト機器からのスナップショット作成要求(スプリットコマンド)の受信時に、第1の記憶媒体及び第2の記憶媒体に対するデステージングを不要とすることができるため、スナップショット作成に要する時間を短縮することができる。しかも、第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数を格納するための記憶領域以外に、特別な記憶領域は必要ないため、従来技術と異なりキャッシュメモリの記憶領域を犠牲にすることがない。
【発明を実施するための最良の形態】
【0010】
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るデータ記憶装置1の概略構成を示すブロック図である。
図1に示されるデータ記憶装置1は、制御装置10と、複数、例えば2つの記憶媒体11a及び11bとから構成される。制御装置10はデータ通信路2を介して接続されるホスト機器と記憶媒体11a及び11bとの間に介在して設けられる。記憶媒体11a及び記憶媒体11bは、それぞれマスタ記憶媒体(一次記憶媒体)及びバックアップ記憶媒体(二次記憶媒体)として用いられるものとする。本実施形態において、記憶媒体11a及び11bは、ディスク、例えば論理ディスク(LDISK)である。そこで以下の説明では、マスタ記憶媒体11a及びバックアップ記憶媒体11bを、それぞれマスタ論理ディスク(マスタLDISK)11a及びバックアップ論理ディスク(バックアップLDISK)11bと呼ぶ。また、単に論理ディスク(LDISK)11a及び11bと呼ぶこともある。
【0011】
制御装置10は、ホストインタフェース部(HOST I/F)101、CPU102、プログラムメモリ103、キャッシュメモリ104及びHDDインタフェース部(HDD I/F)105を有している。なお、データ通信路2を介してデータ記憶装置1に接続されるものとしては、ホスト機器となるコンピュータまたはその集合体の他、他のデータ記憶装置も想定される。
【0012】
ホストインタフェース部101及びHDDインタフェース部105は、それぞれ外部接続される装置との間の通信を制御する。ホストインタフェース部101はデータ通信路2側の通信を司る。HDDインタフェース部105はLDISK11a及び11b側の通信を司る。
【0013】
CPU102は、制御装置10における必要処理を実行するものであり、プログラムメモリ103には、そのための各種プログラムが格納されている。ここで説明する筐体内レプリケーションの手法は、このプログラムメモリ103(コンピュータ読み取り可能な記憶媒体)に格納されているプログラムをCPU102が読み取って実行することによって実現されるものとする。プログラムメモリ103には、上述のプログラムを格納するための領域に加えて、CPU102が利用するデータ等を格納するための領域も確保されている。
【0014】
キャッシュメモリ104は、データ通信路2を介して接続されるホスト機器(或いは他のデータ記憶装置)からデータ記憶装置1内のLDISK11i(i=a,b)に対して発行される入出力要求(IO要求)に対するバッファの役目を提供する。図2は、キャッシュメモリ104の構造を示す。キャッシュメモリ104は、ある論理的な単位に分割されて管理されている。この分割された単位で自由にLDISK11i内の記憶位置に対応させて、その記憶位置のデータをキャッシュメモリ104に格納することができる。この分割された1つの単位をキャッシュブロックと呼ぶ。
【0015】
ここで、図2に示されるキャッシュメモリ104は、例えば16KB(キロバイト)単位のキャッシュブロックに分割されている。各キャッシュブロックは、例えばセットアソシアティブ方式によるメモリマッピングで管理される。キャッシュメモリ104上では、リードキャッシュ(RDC)とライトバックキャッシュ(WBC)の2種類のデータが管理される。ホスト機器からのリード/ライトアクセスに応じて各エントリがサーチされ、対象となるキャッシュブロックとホスト機器またはLDISK11iとの間でデータ転送が行われる。
【0016】
例えば、ホスト機器からLDISK11iへのデータ書き込み処理は、キャッシュメモリ104を用いて次のように行われる。まず、入出力要求で指定されたデータ(書き込みデータ)がキャッシュメモリ104にエントリされた時点で、要求元のホスト機器に対して書き込み処理完了が通知される。その後に、キャッシュメモリ104からLDISK11iに対する実際のデータ書き込みが実行される。
【0017】
一方、LDISK11iからのデータ読み込み処理は、次のように行われる。まず、該当するデータがキャッシュメモリ104にエントリ(キャッシュ)されているか否かが判定され、エントリされていれば、そのデータがキャッシュメモリ104からデータ通信路2を介してホスト機器に返される。これに対し、該当するデータがキャッシュメモリ104にエントリされていないならば、データがLDISK11iからキャッシュメモリ104に読み出されて、しかる後に、要求元のホスト機器に対して読み出されたデータがデータ通信路2を介して返される。
【0018】
図3は、図1に示される制御装置10のプログラムメモリ103に格納されるプログラムをCPU102が読み取って実行することによって実現されるモジュール構成を主として示すブロック図である。
【0019】
ホストインタフェース制御部(HOST I/F制御部)210は、ホスト機器(または他のデータ記憶装置)との間のインタフェース処理を担当する。IO管理部(入出力管理部)220は、IOアクセス管理(入出力アクセス管理)及びIOアクセス領域制御(入出力アクセス領域制御)を実行する。レプリケーション管理部230は、レプリケーション処理を行う。
【0020】
キャッシュ管理モジュール240は、IOアクセス制御部241、デステージング/ステージング制御部242、キャッシュメモリ管理部243及びLDISKアクセス制御部(論理ディスクアクセス制御部)244から構成される。
【0021】
IOアクセス制御部241は、IO管理部220からIO要求を受け付けるブロックであり、IO要求に基づきリード/ライトアクセスを制御する。特にIOアクセス制御部241は、ホスト機器からのIO要求(ホストIO要求)に基づき、ホスト機器からのリード/ライトアクセスを制御する。IO要求は、アドレスと転送サイズとからなるアドレス情報を含む。
【0022】
IOアクセス制御部241は、このアクセス情報に基づき、キャッシュメモリ管理部243との連携により、該当するキャッシュブロックのエントリをサーチする。IOアクセス制御部241は、このエントリのサーチ(エントリサーチ)に基づき、キャッシュメモリ104とホスト機器との間のデータ転送をホストインタフェース制御部210に対して要求する。またIOアクセス制御部241は、アクセス情報で指定されるデータの格納状態により、ディスク転送(キャッシュメモリ104とLDISK11iとの間のデータ転送)を必要とする場合に、ディスク転送のための情報をLDISKアクセス制御部244に引き渡すことにより、必要なディスクデータの転送を行わせる。
【0023】
キャッシュメモリ管理部243は、キャッシュカラム単位に割り当てられているキャッシュブロックと対象となるLDISK11iの領域とをマッピングし、ホスト機器からライトされたデータまたはディスクからリードされたデータの格納状態を管理する。このキャッシュメモリ管理部243によるデータの格納状態の管理には、キャッシュブロック管理テーブル250と、スナップカウンタ260a及び260bと、レプリケーション管理テーブル270とが用いられる。
【0024】
キャッシュブロック管理テーブル250及びレプリケーション管理テーブル270は、例えば、図1に示されるプログラムメモリ103の所定の領域に格納される。つまりプログラムメモリ103は、キャッシュブロック管理テーブル250及びレプリケーション管理テーブル270をそれぞれ記憶する記憶手段を含む。なお、キャッシュブロック管理テーブル250及びレプリケーション管理テーブル270が、それぞれ独立したメモリに格納される構成であっても構わない。
【0025】
スナップカウンタ260i(i=a,b)はLDISK11i毎に設けられる。本実施形態においてスナップカウンタ260iは、プログラムメモリ103内に置かれるソフトウェアカウンタである。なおスナップカウンタ260iがハードウェアカウンタであっても構わない。
【0026】
デステージング/ステージング制御部242は、ホストIO要求のアクセス情報に基づきシーケンシャルライトまたはシーケンシャルリードの検出を行う。シーケンシャルなアクセスを検出した場合、デステージング/ステージング制御部242は、シーケンシャルライトであれば後追い吐き出し要求を、シーケンシャルリードであればデータ先読み要求を、IO管理部220に領域を指定して発行する。またデステージング/ステージング制御部242は、特定のタイミングで未吐き出しのWBCデータ(ダーティデータ)を抽出し、ストライプグループ単位にまとめてLDISK11iに書き込むための要求をIO管理部220に領域を指定して発行する。
【0027】
本実施形態において、LDISK11a及び11bはそれぞれ、複数のディスクアレイ、例えば図3に示されるようなRAID(Redundant Arrays of Independent Disks,Redundant Arrays of Inexpensive Disks)構成の2つのディスクアレイ(SDISK)110a及び110bから構成される。つまり、本実施形態の説明において、データ記憶装置1はディスクアレイ装置である。一般にディスクアレイ装置では、ディスクアレイを構成する例えば複数の物理ディスクが一定のサイズに分割して管理される。この分割された単位はストライプと呼ばれる。ストライプグループとは、ディスクアレイを構成する複数の物理ディスクの同一オフセット位置のストライプの集合を指す。
【0028】
RAID制御部280は、LDISKアクセス制御部244からの要求に応じて、LDISK11i内のディスク転送の対象となるSDISK110iとの間のディスクデータの転送を制御する。HDDインタフェース制御部(HDD I/F制御部)290は、RAID制御部280からの要求に応じて、SDISK110i内のディスク転送の対象となる、1つ以上の物理ディスクとの間のディスクデータの転送を制御する。
【0029】
なお、キャッシュメモリ104を2重化することも可能である。その場合、周知のミラードキャッシュ制御やコンカレントキャッシュ制御が必要となるが、これらについては本発明の本質ではないので説明を省略する。
【0030】
また、LDISK11a及び11bが必ずしもディスクアレイから構成されている必要はなく、したがってデータ記憶装置1がディスクアレイ装置でなくともよい。更に、LDISK11a及び11bに代えて物理ディスクのような他の記憶媒体を用いることも可能である。
【0031】
図4は、キャッシュブロック管理テーブル250のデータ構造例を示す。キャッシュブロック管理テーブル250は、キャッシュメモリ104にエントリされたデータを管理するためキャッシュ管理用データを保持する。キャッシュブロック管理テーブル250の各エントリは、LDISK番号フィールド251、ステートフラグフィールド252、論理アドレスフィールド253、WBCビット(WBCエントリビット)フィールド254、RDCビット(RDCエントリビット)フィールド255及びスナップビットフィールド256から構成される。
【0032】
LDISK番号フィールド251は、該当キャッシュブロックが割り当てられているLDISK番号を保持するのに用いられる。ステートフラグフィールド252は、該当キャッシュブロックの状態を示すフラグ情報を保持するのに用いられる。論理アドレスフィールド253は、該当キャッシュブロックが割り当てられているLDISK内の領域の論理アドレスを保持するのに用いられる。
【0033】
WBCビットフィールド254は、該当キャッシュブロック内のダーティデータ(LDISK番号フィールド251で示されるLDISKに保存されるべきデータ)のエントリ状態をセクタ単位で示すビットマップ(第1の変数)を保持するのに用いられる。RDCビットフィールド255は、該当キャッシュブロック内のリードキャッシュデータのエントリ状態をセクタ単位で示すビットマップを保持するのに用いられる。スナップビットフィールド256は、該当キャッシュブロックにおいてバックアップLDISKに保存されるべきデータ(未保存のスナップデータ)のエントリ状態をセクタ単位で示すビットマップ(第2の変数)を保持するのに用いられる。
【0034】
WBCビットフィールド254、RDCビットフィールド255及びスナップビットフィールド256にそれぞれ保持されるビットマップを構成するビットを、それぞれ、WBCビット、RDCビット及びスナップビットと称する。WBCビット、RDCビット及びスナップビットは、例えば“1”のとき該当キャッシュブロック内の該当セクタのデータ(ダーティデータ、リードキャッシュデータ、及び未保存のスナップデータ)がキャッシュメモリ104にエントリされており、“0”のとき該当セクタのデータはキャッシュメモリ104にエントリされていないことを示す。
【0035】
本実施形態では、1キャッシュブロックは16KB(キロバイト)であり、1セクタは512B(バイト)である。つまり、1キャッシュブロックのサイズは32セクタ分である。したがって、WBCビットフィールド254、RDCビットフィールド255及びスナップビットフィールド256の各フィールドに保持されるビットマップは、32ビットで構成される。LDISK11i毎の“1”のスナップビットが存在するキャッシュブロックの数(未保存のスナップデータが存在するキャッシュブロックの数)は、スナップカウンタ260iによってカウントされる。
【0036】
図5は、本実施形態で適用されるレプリケーション(筐体内レプリケーション)の状態遷移の一例を示す。本実施形態のデータ記憶装置1において取り得るレプリケーションの状態、つまりマスタLDISK11a及びバックアップLDISK11bのレプリケーション(レプリケーション管理)の状態は、同期状態(第1の状態)、スプリット状態(第2の状態)及びスプリット移行状態(第3の状態)の3つである。
【0037】
「同期状態」とは、本実施形態のようにLDISK11aがマスタLDISK(一次記憶媒体)で、LDISK11bがバックアップLDISK(二次記憶媒体)である場合、両LDISKがミラーとして同期をとって運用されている状態を指す。「スプリット状態」とは、マスタLDISKとバックアップLDISKとが論理的に分離(切り離)されている状態を指す。
【0038】
「スプリット移行状態」とは、「同期状態」から「スプリット状態」へ移行する中間状態であり、スナップショットがバックアップLDISK11bのデータとして確定していない状態を指す。具体的には、マスタLDISK11aに対応付けられているキャッシュブロックの中に、バックアップLDISK11bに保存されるべきデータ(未保存のスナップデータ)を含むキャッシュブロックが1つ以上存在する状態を指す。つまり、「スプリット移行状態」とは、マスタLDISK11aに対応付けられているキャッシュ管理モジュール240のエントリの中に、“1”にセットされているスナップビットを含むエントリが1つ以上存在する状態を指す。
【0039】
なお、「スプリット移行状態」はホスト機器からは認識されないものとする。つまりデータ記憶装置1における「スプリット移行状態」は、ホスト機器からは「スプリット状態」として認識されるものとする。
【0040】
以下の説明では、レプリケーションが設定されるマスタLDISK11a及びバックアップLDISK11bの両LDISK(論理ディスク)を、メンバLDISK(メンバ論理ディスク)、またはレプリケーションを構成するメンバLDISKと称することがある。
【0041】
レプリケーションの状態は、レプリケーション管理テーブル270によって管理される。図6は、レプリケーション管理テーブル270のデータ構造例を示す。レプリケーション管理テーブル270の各エントリは、マスタLDISK番号フィールド271、バックアップLDISK番号フィールド272及びステータスフィールド273から構成される。
【0042】
マスタLDISK番号フィールド271及びバックアップLDISK番号フィールド272は、レプリケーションを構成するメンバLDISKのそれぞれLDISK番号(マスタLDISK番号及びバックアップLDISK番号)を保持するのに用いられる。ステータスフィールド273は、フィールド271及び272に保持されているLDISK番号で指定されるメンバLDISKのレプリケーション状態を示すステータス情報を保持するのに用いられる。
【0043】
マスタLDISK11a及びバックアップLDISK11bのレプリケーションの状態が同期状態にあるときに、制御装置10内のホストインタフェース制御部210がホスト機器からスナップショット作成(ミラー状態の解除)を指示するためのスプリットコマンド(スナップショット作成要求)を受信したものとする。IO管理部220は、このスプリットコマンドをホストインタフェース制御部210から受け取ると、キャッシュ管理モジュール240内のIOアクセス制御部241を介してキャッシュメモリ管理部243にスナップショット作成を要求する。すると、キャッシュメモリ管理部243はスナップショット作成手段として機能して、以下に述べるスナップショット作成処理を実行する。
【0044】
以下、スプリットコマンド受信時のキャッシュメモリ管理部243を中心とする動作について、図7のフローチャートを参照して説明する。
まずキャッシュメモリ管理部243は、キャッシュブロック管理テーブル250を参照し、LDISK番号フィールド251に保持されているLDISK番号がマスタLDISK11aのLDISK番号と一致、且つWBCビットフィールド254に保持されているビットマップに“0”でないWBCビット(つまり、“1”にセットされているWBCビット)を含むエントリ(目的エントリ)をサーチする(ステップS1)。
【0045】
キャッシュメモリ管理部243は、ステップS1でのサーチの結果、目的エントリの有無を判定する(ステップS2)。もし、目的エントリがあったならば(ステップS2がYes)、つまりキャッシュメモリ104上にマスタLDISK11aに保存されるべきデータ(ダーティデータ)が存在するならば、サーチされた全ての目的エントリについて、キャッシュメモリ管理部243は、エントリのWBCビットフィールド254に保持されているビットマップ(WBCビット群)を、エントリ内のスナップビットフィールド256にスナップビット群からなるビットマップとしてコピーする(ステップS3)。このコピーにより、サーチされた各目的エントリのスナップビットフィールド256に保持されるビットマップは、スプリットコマンド受信時における未保存のスナップデータの範囲を示す。
【0046】
そしてキャッシュメモリ管理部243は、マスタLDISK11aに対応したスナップカウンタ260aを、例えばサーチできたエントリの数だけインクリメントする(ステップS4)。スナップカウンタ260aの値は、キャッシュメモリ104に存在する、バックアップLDISK11bに保存されるべきスナップデータを含むキャッシュブロックの数を示す。なお、本実施形態と異なって、LDISK11aがバックアップLDSIK、LDISK11bがマスタLDISKとして用いられる場合には、キャッシュメモリ104に存在する、バックアップLDISKに保存されるべきスナップデータを含むキャッシュブロックの数を示すのに、スナップカウンタ260bが用いられる。
【0047】
ステップS4が実行された場合、スナップカウンタ260aの値は0でなく、1より大きい。このことは、バックアップLDISK11bに保存されるべきスナップデータを含むキャッシュブロックがキャッシュメモリ104内に存在することを示す。この場合、キャッシュメモリ管理部243は、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報を、レプリケーション管理部230によって、同期状態を示すステータス情報からスプリット移行状態を示すステータス情報に更新させる(ステップS5)。これにより、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態は、図5において矢印501で示されるように、同期状態からスプリット移行状態に遷移する。
【0048】
キャッシュメモリ管理部243は、ステップS5の実行後、ホスト機器からのスプリットコマンド(スプリット要求)に対し、レプリケーション管理部230によりIO管理部220を介してホスト機器にスプリット完了を通知させる(ステップS7)。
【0049】
このように本実施形態においては、ホスト機器からのスプリットコマンドの受信時に、マスタLDISK11a及びバックアップLDISK11bに対するデステージングが行われない。キャッシュメモリ管理部243(スナップショット作成手段)は、キャッシュブロック管理テーブル250内の、“1”にセットされているWBCビットを含むエントリを対象に、エントリのWBCビットフィールド254に保持されているビットマップを、エントリ内のスナップビットフィールド256にコピーする動作の完了をもって、ホスト機器にスプリット完了を通知する。ホスト機器は、このスプリット完了通知により、マスタLDISK11a及びバックアップLDISK11bのレプリケーションの状態が、同期状態からスプリット状態に遷移したと認識する。つまり本実施形態では、データ記憶装置1におけるスプリット移行状態は、ホスト機器からは、前述のにようにスプリット状態として認識される。
【0050】
一方、目的エントリが1つもなかった場合(ステップS2がNo)、つまりキャッシュメモリ104上にダーティデータが存在せず、スナップカウンタ260aの値が0の場合には、キャッシュメモリ管理部243は、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報を、レプリケーション管理部230によって、スプリット状態を示すステータス情報に更新させる(ステップS6)。つまりマスタLDISK11aに保存されるべきダーティデータが存在せず、したがってバックアップLDISK11bに保存されるべきスナップデータも存在しない場合、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態は、同期状態から、スプリット移行状態を経由することなく、スプリット状態に遷移する。しかし、このような状態遷移の例は希である。通常は、後述するようにスプリット完了通知後に、図5において矢印502で示されるように、スプリット移行状態からスプリット状態に遷移する。
【0051】
キャッシュメモリ管理部243は、ステップS6の実行後、ホスト機器からのスプリットコマンドに対し、レプリケーション管理部230によりIO管理部220を介してホスト機器にスプリット完了を通知させる(ステップS7)。
【0052】
その後、マスタLDISK11a及びバックアップLDISK11bがスプリット状態にあるときに、ホスト機器から制御装置10に対してシンクコマンドが発行されたものとする。この場合、ホスト機器からのマスタLDISK11aに対するI/O要求及びバックアップLDISK11bに対するI/O要求が一時止められる。ここで、マスタLDISK11aの内容とバックアップLDISK11bの内容とが相違しているならば、その相違しているマスタLDISK11aのデータの複製(コピー)がバックアップLDISK11bに保存される。そして、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報が、スプリット状態から同期状態に更新される。これにより、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態が、図5において矢印503で示されるように、スプリット状態から同期状態に遷移する。
【0053】
次に、メンバLDISKのうちの、例えばマスタLDISK11aにデータを書き込むことを要求するための書き込み要求(第1の書き込み要求)が、ホスト機器から制御装置10に対して発行された場合の動作について、図8のフローチャートを参照して説明する。
【0054】
ホスト機器からの第1の書き込み要求は、制御装置10内のホストインタフェース制御部210で受信されて、IO管理部220を介してキャッシュ管理モジュール240に渡される。するとキャッシュ管理モジュール240内のキャッシュメモリ管理部243は書き込み制御手段として機能して、図8のフローチャートに従う処理を次のように実行する。
【0055】
まずキャッシュメモリ管理部243は、ホスト機器からの第1の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報によって示されるマスタLDISK11a内のアクセス範囲(書き込み範囲)に対応するキャッシュブロックのエントリをサーチする(ステップS11)。
【0056】
次にキャッシュメモリ管理部243は、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちの“1”にセットされているスナップビットの範囲と、アクセス範囲とが重複しているかを判定する(ステップS12)。つまりキャッシュメモリ管理部243は、スナップ時のダーティデータの範囲とアクセス範囲とが重複しているかを判定する。
【0057】
もし、両範囲が重複しているならば(ステップS12がYes)、その重複を解消するために、キャッシュメモリ管理部243は、キャッシュメモリ104に格納されている、その重複範囲に対応するキャッシュブロック内のデータ(未保存のスナップ時のデータ)をバックアップLDISK11bに書き込むための書き込みリクエスト(をLDISKアクセス制御部244に発行し、バックアップLDISK11bに重複範囲に対応するスナップ時のデータを保存する(ステップS13)。
【0058】
書き込みリクエストの発行によりLDISKアクセス制御部244は、RAID制御部280及びHDDインタフェース制御部290を介して、重複範囲に対応するキャッシュブロック内のデータを、バックアップLDISK11bの該当するアクセス範囲に書き込むためのライトアクセス制御を開始する。このバックアップLDISK11bへのライトアクセス制御により、バックアップLDISK11bに重複範囲に対応するスナップ時のデータが保存される。
【0059】
もし本実施形態と異なって、ステップS11〜S13が実行されずに、ホスト機器からの第1の書き込み要求に従ってマスタLDISK11aに対するデータの書き込みが行われたならば、重複範囲に対応するキャッシュメモリ104の領域のデータが、第1の書き込み要求で指定される新たなデータで上書きされるため、重複範囲に対応するスナップ時のデータが失われてしまう。そのため従来技術では、ホスト機器からのスプリットコマンドの受信時に、キャッシュメモリ104上のダーティデータをマスタディスクとバックアップディスクの両方に吐き出すデステージングを必要とする。本実施形態では、このようなデステージングを行うことなく、重複範囲に対応するスナップ時のデータが失われてしまう不具合を防止することができる。
【0060】
さて、キャッシュメモリ管理部243は、ステップS13の後、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちの重複範囲のスナップビットを“0”にリセットする(ステップS14)。これにより、スナップ時より後に重複範囲に対応するマスタLDISK11aの領域に書き込まれるデータが、未保存のスナップデータとしてバックアップLDISK11bに保存される不具合を防止できる。
【0061】
次にキャッシュメモリ管理部243は、重複範囲のスナップビットをリセットしたことにより、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ中の全スナップビットが全て“0”となっているかを判定する(ステップS15)。もし、全スナップビットが “0”となっているならば(ステップS15がYes)、キャッシュメモリ管理部243はマスタLDISK11aに対応して設けられているスナップカウンタ260aを、重複範囲に対応するキャッシュブロックの数だけディクリメントする(ステップS16)。
【0062】
次にキャッシュメモリ管理部243は、スナップカウンタ260aをディクリメントした結果、スナップカウンタ260aの値が0となったかを判定する(ステップS17)。もし、スナップカウンタ260aの値が0となったならば(ステップS17がYes)、キャッシュメモリ管理部243は、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態を、レプリケーション管理部230によってスプリット移行状態からスプリット状態に遷移させる(ステップS18)。即ちレプリケーション管理部230は、キャッシュメモリ管理部243からの要求に応じて、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報を、スプリット状態を示すステータス情報に更新する。
【0063】
すると、IO管理部220は、ホスト機器からの第1の書き込み要求で指定されたマスタLDISK11aに書き込むべきデータ(ライトデータ)を、ホスト機器に要求する(ステップS19)。以降の動作は従来と同様であり、まず、IO管理部220からホスト機器に要求されたデータ(第1の書き込み要求で指定されたマスタLDISK11aに書き込むべきデータ)が、ホスト機器から制御装置10に転送される。ホスト機器から制御装置10に転送されたライトデータは、制御装置10で受信される。
【0064】
本実施形態において、ホスト機器から転送されたデータの「受信」とは、データがキャッシュメモリ104にエントリされることを含む。つまり、ホスト機器から制御装置10に転送された、マスタLDISK11aに書き込むべきライトデータは、ステップS11でサーチされたキャッシュブロック管理テーブル250の目的エントリに対応付けられているキャッシュメモリ104内のキャッシュブロックに、IO管理部220からの要求に基づくIOアクセス制御部241の制御の下で、キャッシュメモリ管理部243によってエントリされる。すると、IO管理部220からホスト機器に対して書き込み処理完了が通知される。このときキャッシュメモリ管理部243は、サーチされた目的エントリのWBCビットフィールド254に保持されているビットマップのうち、第1の書き込み要求で指定されたアクセス範囲に対応するWBCビットを“1”にセットする。
【0065】
一方、ステップS12、S15またはS17の判定がNoの場合には、ステップS12、S15またはS17に続いてステップS19が実行される。
【0066】
なお、図8のフローチャートでは省略されているが、ステップS11で目的エントリをサーチできなかった場合、つまりアクセス範囲にヒットしなかった場合にも、ステップS19が実行される。但し、目的エントリをサーチできなかった場合、キャッシュメモリ管理部243は、キャッシュメモリ104上のキャッシュブロック(空きキャッシュブロック)を確保して、確保されたキャッシュブロックに、ライトデータをエントリする。すると、IO管理部220からホスト機器に対して書き込み処理完了が通知される。
【0067】
このときキャッシュメモリ管理部243は、キャッシュブロック管理テーブル250内の空きエントリを確保して、確保されたエントリに、キャッシュブロックをマスタLDISK11aのアクセス範囲に対応付けて管理するためのエントリ情報を設定する。このエントリ情報のLDISK番号フィールド251にはマスタLDISK11aのLDISK番号が保持され、WBCビットフィールド254にはデータの範囲を示すビットマップ(WBCビット群)が保持される。
【0068】
次に、レプリケーションが設定されているマスタLDISK11a及びバックアップLDISK11bのうちの、バックアップLDISK11bにデータを書き込むための書き込み要求(第2の書き込み要求)が、ホスト機器から制御装置10に対して発行された場合の動作について、図9のフローチャートを参照して説明する。
【0069】
ホスト機器からの第2の書き込み要求は、ホストインタフェース制御部210で受信されて、IO管理部220を介してキャッシュ管理モジュール240に渡される。するとキャッシュ管理モジュール240内のキャッシュメモリ管理部243は書き込み制御手段として機能して、図9のフローチャートに従う処理を次のように実行する。
【0070】
まずキャッシュメモリ管理部243は、ホスト機器からの第2の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報によって指定されるバックアップLDISK11b内のアクセス範囲(書き込み範囲)に対応するキャッシュブロックのエントリをサーチする(ステップS21)。
【0071】
するとIO管理部220は、ホスト機器からの第2の書き込み要求で指定されたバックアップLDISK11bに書き込むべきデータを、ホスト機器に要求する(ステップS22)。これにより、第2の書き込み要求で指定されたバックアップLDISK11bに書き込むべきデータがホスト機器から転送されて、制御装置10で受信される。つまり、バックアップLDISK11bに書き込むべきデータは、ステップS11でサーチされたキャッシュブロック管理テーブル250の目的エントリに対応付けられているキャッシュメモリ104内のキャッシュブロックにエントリされる。
【0072】
なお、図9のフローチャートでは省略されているが、ステップS21で目的エントリをサーチできなかった場合、つまりアクセス範囲にヒットしなかった場合にも、ステップS22が実行される。但し、目的エントリをサーチできなかった場合、キャッシュメモリ管理部243は、キャッシュメモリ104上のキャッシュブロックを確保して、確保されたキャッシュブロックに、上記データを格納する。このときキャッシュメモリ管理部243は、キャッシュメモリ104内のエントリを確保して、確保されたエントリに、キャッシュブロックをバックアップLDISK11bのアクセス範囲に対応付けて管理するためのエントリ情報を設定する。このエントリ情報のLDISK番号フィールド251にはバックアップLDISK11bのLDISK番号が保持され、WBCビットフィールド254にはデータの範囲を示すビットマップ(WBCビット群)が保持される。
【0073】
次にキャッシュメモリ管理部243は、レプリケーション管理テーブル270を参照し、バックアップLDISK11bをメンバLDISKとするレプリケーションの状態がスプリット移行状態にあるかを判定する(ステップS23)。このレプリケーションの状態は、バックアップLDISK11bのLDISK番号が保持されているバックアップLDISK番号フィールド272を含むレプリケーション管理テーブル270のエントリを探して、エントリ内のステータスフィールド273を参照することによって判定することができる。
【0074】
もし、レプリケーションの状態がスプリット移行状態にある場合(ステップS23がYes)、キャッシュメモリ管理部243は、第2の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報よって示されるバックアップLDISK11b内のアクセス範囲(書き込み範囲)と同一のマスタLDISK11a内の範囲(領域)に対応するキャッシュブロックのエントリをサーチする(ステップS24)。このステップS24は、例えばステップS22でホスト機器に要求されたデータ(バックアップLDISK11bに書き込まれるべきデータ)がホスト機器から転送されて制御装置10で受信された後に実行される。
【0075】
キャッシュメモリ管理部243は、ステップS24でのサーチの結果、キャッシュブロック管理テーブル250内の該当するキャッシュブロックの目的エントリがサーチできたかを判定する(ステップS25)。もし、目的エントリがサーチできたならば(ステップS25がYes)、つまりアクセス範囲にヒットしたならば、キャッシュメモリ管理部243は、エントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちのアクセス範囲に対応するスナップビットの範囲に“1”にセットされているスナップビットが存在するかを判定する(ステップS26)。
【0076】
ここで、アクセス範囲に対応するスナップビットの範囲に、“1”にセットされているスナップビットが存在するものとする(ステップS26がYes)。つまり、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちの“1”にセットされているスナップビットの範囲と、アクセス範囲(書き込み範囲)に対応するスナップビットの範囲とが重複しているものとする。
【0077】
このことは、バックアップLDISKにおける重複しているスナップデータの領域に、第2の書き込み要求で指定されたデータが上書きされることとなるため、重複領域に対応するキャッシュブロック内のデータ(未保存のスナップ時のデータ)をバックアップLDISKに書き込む必要がなくなることを意味する。逆に、第2の書き込み要求で指定されたデータのバックアップLDISK11bへの書き込みが実行されたとしても、重複領域に対応するキャッシュブロック内のデータ(未保存のスナップ時のデータ)をバックアップLDISKに書き込む動作が行われるならば、第2の書き込み要求で指定されたデータはマスタLDISK11aの古いデータで上書きされる可能性がある。
【0078】
そこで本実施形態においキャッシュメモリ管理部243は、ステップS24でサーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうち、アクセス範囲に対応するスナップビットを“0”にリセットする(ステップS27)。これにより、第2の書き込み要求で指定されたデータのバックアップLDISK11bへの書き込みが実行されても、そのデータが重複範囲に対応するマスタLDISK11aの古いデータで上書きされることを防止できる。
【0079】
次にキャッシュメモリ管理部243は、アクセス範囲に対応するスナップビットをリセットしたことにより、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ中の全スナップビットが全て“0”となっているかを判定する(ステップS28)。もし、全スナップビットが “0”となっているならば(ステップS28がYes)、キャッシュメモリ管理部243はマスタLDISK11aに対応したスナップカウンタ260aを、アクセス範囲に対応するキャッシュブロックの数だけディクリメントする(ステップS29)。
【0080】
次にキャッシュメモリ管理部243は、スナップカウンタ260aをディクリメントした結果、スナップカウンタ260aの値が0となったかを判定する(ステップS30)。もし、スナップカウンタ260aの値が0となったならば(ステップS30がYes)、キャッシュメモリ管理部243は、ステップS18と同様に、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態を、レプリケーション管理部230によってスプリット移行状態からスプリット状態に遷移させる(ステップS31)。
【0081】
次に、ホスト機器から制御装置10に対して、マスタLDISK11aからデータを読み込むことを要求するための読み込み要求(第1の読み込み要求)が発行されたものとする。この場合、全てのレプリケーション状態で処理の内容に差異はないため、説明を省略する。
【0082】
次に、ホスト機器から制御装置10に対して、バックアップLDISK11bからデータを読み込むことを要求するための読み込み要求(第2の読み込み要求)が発行された場合の動作について、図10のフローチャートを参照して説明する。
【0083】
ホスト機器からの第2の読み込み要求は、制御装置10内のホストインタフェース制御部210で受信されて、IO管理部220を介してキャッシュ管理モジュール240に渡される。するとキャッシュ管理モジュール240内のキャッシュメモリ管理部243は読み込み制御手段として機能して、図10のフローチャートに従う処理を次のように実行する。
【0084】
まずキャッシュメモリ管理部243は、ステップS23と同様に、レプリケーション管理テーブル270を参照し、バックアップLDISK11bをメンバLDISKとするレプリケーションの状態がスプリット移行状態にあるかを判定する(ステップS41)。
【0085】
もし、レプリケーションの状態がスプリット移行状態にある場合(ステップS41がYes)、キャッシュメモリ管理部243は、第2の読み込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報よって示されるバックアップLDISK11b内のアクセス範囲(読み込み範囲)と同一のマスタLDISK11a内の範囲(領域)に対応するキャッシュブロックのエントリをサーチする(ステップS42)。
【0086】
キャッシュメモリ管理部243は、ステップS42でのサーチの結果、キャッシュブロック管理テーブル250内の該当するキャッシュブロックの目的エントリがサーチできたかを判定する(ステップS43)。もし、目的エントリがサーチできたならば(ステップS43がYes)、つまりアクセス範囲にヒットしたならば、キャッシュメモリ管理部243は、エントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちの“1”にセットされているスナップビットの範囲と、アクセス範囲(読み込み範囲)に対応するスナップビットの範囲とが重複しているかを判定する(ステップS44)。つまりキャッシュメモリ管理部243は、スナップ時のダーティデータ(未保存のスナップデータ)とアクセス範囲とが重複しているかを判定する。
【0087】
もし、両範囲が重複しているならば(ステップS44がYes)、その重複範囲に関しては、キャッシュメモリ管理部243は、キャッシュメモリ104に格納されている、重複範囲に対応するキャッシュブロック内のデータ、つまり未保存のスナップ時のマスタLDISK11aのデータを、IOアクセス制御部241により、バックアップLDISK11bのデータとしてホスト機器に転送させる(ステップS45)。
【0088】
一方、バックアップLDISK11b内のアクセス範囲のうち重複範囲以外の範囲(非重複範囲)に関しては、キャッシュメモリ管理部243はキャッシュブロック管理テーブル250を参照し、バックアップLDISK11bの非重複範囲に対応するキャッシュブロックのエントリをサーチする(ステップS46)。キャッシュメモリ管理部243は、バックアップLDISK11bの非重複範囲に対応するキャッシュブロックのエントリがサーチできたか否かによって、キャッシュブロックのデータ、またはバックアップLDISK11b内の非重複範囲のデータを、IOアクセス制御部241によってホスト機器に転送させる(ステップS47)。
【0089】
一方、ステップS41、S43またはS44の判定がNoの場合、キャッシュメモリ管理部243は、第2の読み込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報によって示されるバックアップLDISK11b内のアクセス範囲に対応するキャッシュブロックのエントリをサーチする(ステップS46)。このアクセス範囲は、重複範囲が0の場合の非重複範囲に相当する。キャッシュメモリ管理部243は、バックアップLDISK11bのアクセス範囲に対応するキャッシュブロックのエントリがサーチできたか否かによって、キャッシュブロックのデータ、またはバックアップLDISK11b内のアクセス範囲のデータを、IOアクセス制御部241によってホスト機器に転送させる(ステップS47)。
【0090】
次に、デステージング時の動作について、図11のフローチャートを参照して説明する。今、デステージング/ステージング制御部242が、マスタLDISK11aまたはバックアップLDISK11bに対して未だ書き込みが実施されていないキャッシュメモリ104上のデータを対象とするデステージングを、IO管理部220に対して要求したものとする。このデステージング要求はIO管理部220からIOアクセス制御部241を介してキャッシュメモリ管理部243に通知される。するとキャッシュメモリ管理部243は書き込み制御手段として機能して、図11のフローチャートに従う処理を次のように実行する。
【0091】
まずキャッシュメモリ管理部243は、キャッシュブロック管理テーブル250を参照し、WBCビットフィールド254に保持されているビットマップ(WBCビット群)内に“1”にセットされているWBCビットが存在するキャッシュブロックのエントリをサーチする(ステップS51)。
【0092】
キャッシュメモリ管理部243は、ステップS51でサーチされた各キャッシュブロックのエントリについて、エントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)内に“1”にセットされているスナップビットが存在するかを判定する(ステップS52)。
【0093】
キャッシュメモリ管理部243は、“1”にセットされているスナップビットが存在するエントリ(ステップS52の判定がYesのエントリ)について、エントリのスナップビットフィールド256及びWBCビットフィールド254を比較し、“1”であるスナップビットの範囲とWBCビットの範囲が一致しているかを判定する(ステップS53)。
【0094】
もし、一致している場合(ステップS53がYes)、キャッシュメモリ管理部243は、キャッシュブロック内のその範囲のデータをマスタLDISK11a及びバックアップLDISK11bの双方に書き込むことを、LDISKアクセス制御部244に対して要求する(ステップS54)。
【0095】
これに対し、一致していない場合(ステップS53がNo)、キャッシュメモリ管理部243は、キャッシュブロック内のWBCビットが“1”の範囲のデータをマスタLDISK11aに書き込み、キャッシュブロック内のスナップビットが“1”の範囲のデータをバックアップLDISK11bに書き込むことを、LDISKアクセス制御部244に対して要求する(ステップS55)。
【0096】
なお、ステップS54は、ステップS55と等価である。よって、ステップS53の判定を省略して、常にステップS54あるいはステップS55が行われる構成であっても構わない。
【0097】
キャッシュメモリ管理部243は、ステップS54またはS55(に基づく書き込み)が行われると、“1”にセットされているスナップビットが存在するキャッシュブロック管理テーブル250内の該当エントリのWBCビットフィールド254及びスナップビットフィールド256を対象に、それぞれ、LDISKアクセス制御部244に対して要求された書き込み範囲に対応するWBCビット及びスナップビットをクリアする(ステップS56)。
【0098】
次にキャッシュメモリ管理部243は、書き込み範囲のスナップビットをリセットしたことにより、キャッシュブロック管理テーブル250内の該当エントリの中に、スナップビットフィールド256に保持されているビットマップ中の全スナップビットが全て“0”となったエントリが存在するかを判定する(ステップS57)。もし、該当するエントリが存在するならば(ステップS57がYes)、キャッシュメモリ管理部243はマスタLDISK11aに対応して設けられているスナップカウンタ260aを、対応するキャッシュブロックの数だけディクリメントする(ステップS58)。
【0099】
次にキャッシュメモリ管理部243は、スナップカウンタ260aをディクリメントした結果、スナップカウンタ260aの値が0となったかを判定する(ステップS59)。もし、スナップカウンタ260aの値が0となったならば(ステップS59がYes)、キャッシュメモリ管理部243は、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態を、レプリケーション管理部230によって、スプリット移行状態からスプリット状態に遷移させる(ステップS60)。即ちレプリケーション管理部230は、キャッシュメモリ管理部243からの要求に応じて、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータスを、スプリット状態を示すステータスに更新する。
【0100】
一方、ステップS57の判定がNoの場合、ステップS58以降の処理は行われない。また、ステップS59の判定がNoの場合、ステップS60の処理は行われない。
【0101】
さて、キャッシュメモリ管理部243は、“1”にセットされているWBCビットは存在するが、“1”にセットされているスナップビットは存在しないエントリ(ステップS52の判定がNoのエントリ)に対応するキャッシュブロックについて、次のように処理する。まずキャッシュメモリ管理部243は、レプリケーション管理テーブル270を参照して、レプリケーションの状態が同期状態にあるかを判定する(ステップS61)。
【0102】
もし、同期状態にある場合(ステップS61がYes)、キャッシュメモリ管理部243は、ステップS52の判定がNoのエントリのWBCビットフィールド254に基づき、エントリに対応するキャッシュブロック内のWBCビットが“1”の範囲のデータをマスタLDISK11a及びバックアップLDISK11bの双方に書き込む(筐体内レプリケーションの)ための書き込みリクエストをLDISKアクセス制御部244に発行する(ステップS62)。
【0103】
キャッシュメモリ管理部243は、書き込みリクエストに基づく書き込み(ここでは筐体内レプリケーション)が行われると、ステップS52の判定がNoのエントリ(“1”にセットされているスナップビットが存在しないエントリ)のWBCビットフィールド254を対象に、書き込みリクエストで指定した書き込み範囲に対応するWBCビットをリセットする(ステップS64)。
【0104】
これに対し、同期状態にないならば(ステップS61がNo)、キャッシュメモリ管理部243は、ステップS52の判定がNoのエントリのWBCビットフィールド254に基づき、エントリに対応するキャッシュブロック内のWBCビットが“1”の範囲のデータをマスタLDISK11a及びバックアップLDISK11bのいずれか一方に書き込むための書き込みリクエストをLDISKアクセス制御部244に発行する(ステップS63)。マスタLDISK11a及びバックアップLDISK11bのいずれにデータを書き込むかは、ステップS52の判定がNoのエントリのLDISK番号フィールド251に保持されているLDISK番号が、マスタLDISK11aまたはバックアップLDISK11bのいずれ対応付けられているかによって決定される。
【0105】
キャッシュメモリ管理部243は、書き込みリクエストに基づく書き込みが行われると、ステップS52の判定がNoのエントリのWBCビットフィールド254を対象に、書き込み範囲に対応するWBCビットをリセットする(ステップS64)。
【0106】
このように本実施形態においては、ホスト機器からのスプリットコマンドの受信時に、キャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254に保持されているビットマップ(キャッシュメモリ104にキャッシングされたデータのうちマスタLDISK11aに対して書き込みが実施されていないダーティデータの範囲を示すビットマップ)が、エントリのスナップビットフィールド256に保持されているビットマップ(バックアップLDISK11bに書き込まれるべきデータであるスナップデータの範囲を示すビットマップ)にコピーされる。そして、このコピー完了をもって、レプリケーションの状態が、同期状態からスプリット移行状態に遷移されて、スプリットコマンドに対するスナップショット作成の完了がホスト機器に通知される。ダーティデータのマスタLDISK11a及びバックアップLDISK11bへの書き出しは、スナップショット作成の完了の通知後に行われる。
【0107】
つまり、本実施形態によれば、スプリットコマンドの受信時に、マスタLDISK11a及びバックアップLDISK11bに対するデステージングを行わないため、従来と比較して同期状態からスプリット状態への移行が短時間で完了し、高速にスナップショットを作成できる。しかも本実施形態では、マスタLDISK11a及びバックアップLDISK11bに対するデステージングを行わずに、ミラー状態からスプリット状態へ移行しているにも拘わらず、キャッシュブロック管理テーブル250内での上述のコピー処理により、バックアップLDISK11bを正しくスプリット状態で運用させることができる。
【0108】
[変形例]
次に、実施形態の変形例について説明する。この変形例の第1の特徴は、実施形態と異なり、スプリットコマンドの受信時のスナップショット作成処理において、“1”にセットされているWBCビットを含むエントリをサーチして、エントリのWBCビットフィールド254に保持されているビットマップを、エントリ内のスナップビットフィールド256にコピーする動作を行わずに、レプリケーションの状態を同期状態からスプリット移行状態に遷移するだけで、スプリットコマンドに対するスプリット完了がホスト機器に通知される点にある。本変形例の第2の特徴は、マスタLDISK11aにデータを書き込むことを要求するための第1の書き込み要求が、ホスト機器から制御装置10に対して発行された場合の動作が、レプリケーションの状態(スプリット移行状態、スプリット状態または同期状態のいずれであるか)によって異なる点にもある。
【0109】
まず、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態が同期状態にあるときに、ホスト機器から制御装置10に対してスナップショット作成を指示するためのスプリットコマンドが発行された場合の動作について、図12のフローチャートを参照して説明する。制御装置10内のキャッシュメモリ管理部243は、スプリットコマンドを受信すると、スナップショット作成手段として機能する。
【0110】
まずキャッシュメモリ管理部243は、マスタLDISK11aに対応して設けられているスナップカウンタ260aの値が0であるかを判定する(ステップS71)。スナップカウンタ260aの値が0でない場合(ステップS71がNo)、キャッシュメモリ管理部243は、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報を、レプリケーション管理部230によって、スプリット移行状態を示すステータス情報に更新させる(ステップS72)。そしてキャッシュメモリ管理部243は、ホスト機器からのスプリットコマンド(スプリット要求)に対して、IO管理部220によりホスト機器にスプリット完了を通知させる(ステップS73)。
【0111】
このように本変形例においては、ホスト機器からのスプリットコマンド受信時に、上記実施形態と異なって、キャッシュブロック管理テーブル250におけるWBCビットをスナップビットとしてコピーする処理を行わずに、レプリケーションの状態が同期状態からスプリット移行状態に遷移され、この状態遷移をもって、ホスト機器にスプリット完了が通知される。
【0112】
但し、スナップカウンタ260aの値が0の場合には(ステップS71がYes)、キャッシュメモリ管理部243は、レプリケーション管理部230によって、スプリット状態を示すステータス情報に更新させる(ステップS74)。そしてキャッシュメモリ管理部243は、ホスト機器からのスプリットコマンドに対して、IO管理部220によりホスト機器にスプリット完了を通知させる(ステップS73)。
【0113】
次に、レプリケーションが設定されているマスタLDISK11a及びバックアップLDISK11bのうちの、マスタLDISK11aにデータを書き込むことを要求するための第1の書き込み要求が、ホスト機器から制御装置10に対して発行された場合の動作について、図13のフローチャートを参照して説明する。
【0114】
キャッシュメモリ管理部243は、ステップS11と同様に、ホスト機器からの第1の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報によって示されるマスタLDISK11a内のアクセス範囲(書き込み範囲)に対応するキャッシュブロックのエントリをサーチする(ステップS81)。
【0115】
次にキャッシュメモリ管理部243は、レプリケーション管理テーブル270を参照し、マスタLDISK11aをメンバLDISKとするレプリケーションの状態がスプリット移行状態にあるかを判定する(ステップS82)。もし、レプリケーションの状態がスプリット移行状態にあるならば(ステップS82がYes)、キャッシュメモリ管理部243はステップS12と同様に、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップのうちの“1”にセットされているスナップビットの範囲と、アクセス範囲とが重複しているかを判定する(ステップS83)。
【0116】
もし、スナップビットの範囲とアクセス範囲とが重複しているならば(ステップS83がYes)、キャッシュメモリ管理部243はステップS13と同様に、キャッシュメモリ104に格納されている、その重複範囲に対応するキャッシュブロック内のデータをバックアップLDISK11bに書き込むための書き込みリクエストをLDISKアクセス制御部244に発行する(ステップS84)。これにより、バックアップLDISK11bに、重複範囲に対応するスナップ時のデータが反映される。
【0117】
次にキャッシュメモリ管理部243はステップS14及びS15と同様に、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップのうちの重複範囲のスナップビットをクリアし、しかる後にビットマップ中の全スナップビットが全て“0”となっているかを判定する(ステップS85及びS86)。もし、全スナップビットが “0”となっているならば(ステップS86がYes)、キャッシュメモリ管理部243はステップS16及びS17と同様に、スナップカウンタ260aを重複範囲に対応するキャッシュブロックの数だけディクリメントし(ステップS87)、ディクリメント後のスナップカウンタ260aの値が0となったかを判定する(ステップS88)。
【0118】
もし、スナップカウンタ260aの値が0となったならば(ステップS88がYes)、キャッシュメモリ管理部243はステップS18と同様に、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態を、レプリケーション管理部230によって、スプリット移行状態からスプリット状態に遷移させる(ステップS89)。マスタLDISK11a及びバックアップLDISK11bがスプリット状態に遷移すると、IO管理部220は、ホスト機器からの第1の書き込み要求で指定されたマスタLDISK11aに書き込むべきデータを、ホスト機器に要求する(ステップS90)。これにより、要求されたデータがホスト機器から転送されて、制御装置10で受信される。
【0119】
するとキャッシュメモリ管理部243は、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254に保持されているビットマップのうち、第1の書き込み要求で指定されたアクセス範囲(書き込み範囲)に対応するWBCビットを“1”にセットする(ステップS91)。つまりキャッシュメモリ管理部243は、第1の書き込み要求で指定された書き込み範囲を、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254のみに反映する。ステップS83、S86またはS88の判定がNoの場合には、ステップS83、S86またはS88に続いて、ステップS90及びS91が実行される。
【0120】
一方、ステップS82の判定がNoの場合、つまりレプリケーションの状態がスプリット移行状態でない場合には、キャッシュメモリ管理部243は、レプリケーションの状態がスプリット状態にあるかを判定する(ステップS92)。もし、レプリケーションの状態がスプリット状態にあるならば(ステップS92がYes)、ステップS90及びS91が実行されて、第1の書き込み要求で指定された書き込み範囲が、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254のみに反映される。
【0121】
これに対し、レプリケーションの状態がスプリット状態にないならば(ステップS92がNo)、つまりレプリケーションの状態が同期状態にあるならば、IO管理部220はステップS90と同様に、ホスト機器からの第1の書き込み要求で指定されたマスタLDISK11aに書き込むべきデータを、ホスト機器に要求する(ステップS93)。これにより、要求されたデータがホスト機器から転送されて、制御装置10で受信される。
【0122】
するとキャッシュメモリ管理部243は、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254及びスナップビットフィールド256にそれぞれ保持されているビットマップのうち、第1の書き込み要求で指定されたアクセス範囲(書き込み範囲)に対応するWBCビット及びスナップビットを“1”にセットする(ステップS94)。つまりキャッシュメモリ管理部243は、第1の書き込み要求で指定された書き込み範囲を、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254及びスナップビットフィールド256の双方に反映する。
【0123】
このように本変形例においては、レプリケーションの状態が同期状態にある場合に、第1の書き込み要求で指定された書き込み範囲に対応するキャッシュメモリ104上のデータが、書き込み範囲に対応するWBCビットにより、マスタLDISK11aに書き込むべきダーティデータとして指定されるだけでなく、書き込み範囲に対応するスナップビットにより、バックアップLDISK11bに書き込むべきスナップデータとして指定される。このことは、上記実施形態におけるスナップショット作成処理で実行される上述のコピー動作を、同期状態において逐次行うことと等価である。
【0124】
次にキャッシュメモリ管理部243は、ステップS94の実行前の、サーチされたキャッシュブロック管理テーブル250内のエントリにおける書き込み範囲に対応するスナップビットが“0”であったかを判定する(ステップS95)。つまりキャッシュメモリ管理部243は、書き込み範囲に対応するスナップビットが“0”から“1”に更新されたかを判定する。ステップS95の判定がYesの場合、キャッシュメモリ管理部243は、スナップカウンタ260aを書き込み範囲に対応するキャッシュブロックの数だけインクリメントする(ステップS96)。これに対し、ステップS95の判定がNoの場合、ステップS96は行われない。
【0125】
次に、レプリケーションが設定されているマスタLDISK11a及びバックアップLDISK11bのうちのバックアップLDISK11bにデータを書き込むことを要求するための第2の書き込み要求が、ホスト機器から制御装置10に対して発行されたものとする。この場合、実施形態と同様に、図9のフローチャートに従って処理が行われる。
【0126】
次に、ホスト機器から制御装置10に対して、マスタLDISK11aからデータを読み込むことを要求するための第1の読み込み要求が発行されたものとする。この場合、全てのレプリケーション状態で処理の内容に差異はないため、説明を省略する。
【0127】
次に、ホスト機器から制御装置10に対して、バックアップLDISK11bからデータを読み込むことを要求するための第2の読み込み要求が発行されたものとする。この場合、実施形態と同様に、図10のフローチャートに従って処理が行われる。
【0128】
次に、本変形例におけるデステージング時の動作について、図11のフローチャートと相違する点を中心に、図14のフローチャートを参照して説明する。なお、図14において、図11と等価な処理ステップには、同一参照符号を付してある。
【0129】
図14のフローチャートが図11のそれと相違する点は、ステップS59の判定がYesの場合に、ステップS60ではなくて、ステップS100が実行されることにある。このステップS100において、キャッシュメモリ管理部243は、レプリケーション管理テーブル270を参照し、バックアップLDISK11bをメンバLDISKとするレプリケーションの状態がスプリット移行状態にあるかを判定する。キャッシュメモリ管理部243は、レプリケーションの状態がスプリット移行状態にある場合だけ(ステップS100がYes)、ステップ60を実行する。即ちキャッシュメモリ管理部243は、スナップカウンタ260aの値が0となり(ステップS59がYes)、レプリケーションの状態がスプリット移行状態にある場合だけ(ステップS100がYes)、レプリケーションの状態を、レプリケーション管理部230によってスプリット移行状態からスプリット状態に遷移させる(ステップS60)。
【0130】
また、図14のフローチャートにおけるステップS54は、筐体内レプリケーションの制御が実行されることと等価である。その理由は、第1の書き込み要求で指定された書き込み範囲が、同期状態におけるステップS93及びS94の処理(図13のフローチャート参照)により、ステップS81でサーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254だけでなく、エントリのスナップビットフィールド256にも反映されているからである。
【0131】
また、図14のフローチャートが図11のそれと相違する他の点は、“1”にセットされているスナップビットが存在しないエントリ(ステップS52の判定がNoのエントリ)について、キャッシュメモリ管理部243が、常にステップS63及びS64のみを実行することである。その理由は、上述のように、図14のフローチャートにおけるステップS54により、実質的な筐体内レプリケーションの制御が実行されるからである。
【0132】
本変形例においても、ホスト機器からのスプリットコマンドの受信時に、マスタLDISK11a及びバックアップLDISK11bに対するデステージングを行わないため、ミラー状態からスプリット状態への移行が従来技術と比較して大幅に短時間で完了することができる。
【0133】
なお、本発明は、実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【0134】
【図1】本発明の一実施形態に係るデータ記憶装置の概略構成を示すブロック図。
【図2】同実施形態におけるキャッシュメモリの構造を説明するための図。
【図3】同実施形態における制御装置のモジュール構成を主として示すブロック図。
【図4】同実施形態において制御装置に含まれるキャッシュブロック管理テーブルのデータ構造例を示す図。
【図5】同実施形態におけるレプリケーションの状態遷移の一例を示す図。
【図6】同実施形態において制御装置に含まれるレプリケーション管理テーブルのデータ構造例を示す図。
【図7】同実施形態におけるスプリットコマンド受信時の処理手順を示すフローチャート。
【図8】同実施形態においてマスタ論理ディスクにデータを書き込むことを要求するための書き込み要求(第1の書き込み要求)がホスト機器から発行された場合の処理手順を示すフローチャート。
【図9】同実施形態においてバックアップ論理ディスクにデータを書き込むことを要求するための書き込み要求(第2の書き込み要求)がホスト機器から発行された場合の処理手順を示すフローチャート。
【図10】同実施形態においてバックアップ論理ディスクからデータを読み込むことを要求するための読み込み要求がホスト機器から発行された場合の処理手順を示すフローチャート。
【図11】同実施形態におけるデステージング時の処理手順を示すフローチャート。
【図12】同実施形態の変形例におけるスプリットコマンド受信時の処理手順を示すフローチャート。
【図13】同変形例において第1の書き込み要求がホスト機器から発行された場合の処理手順を示すフローチャート。
【図14】同変形例におけるデステージング時の処理手順を示すフローチャート。
【符号の説明】
【0135】
1…データ記憶装置、2…データ通信路、10…制御装置、11a…論理ディスク(LDISK、マスタ論理ディスク、マスタLDISK、第1の記憶媒体)、11b…論理ディスク(LDISK、バックアップ論理ディスク、バックアップLDISK、第2の記憶媒体)、102…CPU、103…プログラムメモリ、104…キャッシュメモリ、210…ホストインタフェース制御部、220…IO管理部、230…レプリケーション管理部、240…キャッシュ管理モジュール、241…IOアクセス制御部、242…デステージング/ステージング制御部、243…キャッシュメモリ管理部、244…LDISKアクセス制御部、250…キャッシュブロック管理テーブル、260a,260b…スナップカウンタ、270…レプリケーション管理テーブル。
【技術分野】
【0001】
本発明は、例えば、マスタディスクのような第1の記憶媒体(一次記憶媒体)とバックアップディスクのような第2の記憶媒体(二次記憶媒体)とをミラーとして運用するデータ記憶装置及び筐体内レプリケーション方法に関する。
【背景技術】
【0002】
昨今、ディスク容量の増大のペースは著しく、それに伴い、データ量増大のペースも著しい。このような状況下、テープ機器へのバックアップは非常に時間を要するため、ディスクをバックアップ先に指定するケースが増えている。
【0003】
通常、ディスクにバックアップを採るケースでは、マスタディスクとバックアップディスクを常時ミラーとして運用し、バックアップ作成時に、サーバ側にてコミットポイント作成またはファイルシステムアンマウントを実行し、サーバメモリ上のダーティデータを全て吐き出し、データ記憶装置のキャッシュ(キャッシュメモリ)上のデータをマスタディスクとバックアップディスクとの両方に吐き出した(デステージングした)後に、マスタディスクとバックアップディスクを分離(ミラー状態を解除)して、バックアップの生成を行う。このバックアップディスクの分離、つまりミラー状態の解除は、スナップショット作成と称されている。
【0004】
このように、スナップショット作成(ミラー状態の解除)にあたっては、マスタとバックアップの両方に書き込みを実施するために、最悪のケース(例えばデータ記憶装置のキャッシュ上に、ランダム書き込みとなるダーティデータが非常に多く存在する場合)では、多大な時間を要することになる。
【0005】
そこで、例えば特許文献1には、ディスクにバックアップを採る場合のスナップショット作成に要する時間を短縮することを可能とする技術(先行技術)が記載されている。この特許文献1に記載の先行技術の特徴は、キャッシュに格納されるマスタディスクのダーティデータ(デステージングされるべきデータ)がキャッシュ上に占める総容量を制限(例えばキャッシュの容量の1/2に制限)し、且つ、その総容量分のバッファ(退避エリア)をキャッシュ上に予め確保しておき、スナップショット作成時に、その予め確保されたバッファに対してマスタディスクのダーティデータをコピー(退避)し、そのコピー完了をもって、スナップショット作成を完了とすることにある。
【特許文献1】特開2005−31746号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
先行技術においては、ディスクにバックアップを採る場合のスナップショット作成に要する時間を短縮することができる。しかし、先行技術では、マスタディスクのダーティデータがキャッシュ上に占める総容量を制限し、その総容量分のバッファをキャッシュ上に確保する必要がある。この総容量の最大値は、キャッシュの記憶容量の1/2である。このため、先行技術では、キャッシュの記憶領域の高々1/2しかキャッシングのために使用することができない。
【0007】
本発明は上記事情を考慮してなされたものでその目的は、キャッシュ(キャッシュメモリ)の記憶領域を犠牲にすることなく、記憶媒体にバックアップを採る場合のスナップショット作成に要する時間を短縮することができるデータ記憶装置及び筐体内レプリケーション方法を提供することにある。
【課題を解決するための手段】
【0008】
本発明の1つの観点によれば、第1の記憶媒体及び第2の記憶媒体と、ホスト機器と前記第1及び第2の記憶媒体との間に介在し、前記第1及び第2の記憶媒体のレプリケーション管理上の状態が第1の状態では、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備するデータ記憶装置が提供される。このデータ記憶装置において、前記制御装置は、前記第1及び第2の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、前記キャッシュメモリに記憶されたデータのうち前記第1の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第1の変数と、前記第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、前記ホスト機器からのスナップショット作成要求に応じて、前記第1の変数を前記第2の変数にコピーし、前記第2の変数へのコピー完了をもって、レプリケーション管理上の状態を、前記第1の状態から前記第1及び第2の記憶媒体が論理的に分離された第2の状態に移行する状態であり、スナップショットが前記第2の記憶媒体のデータとして確定していないことを示す第3の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、前記第1の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、前記第1の状態において、前記デステージング制御手段によってデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1及び第2の記憶媒体の双方に書き込むための制御に応じて前記第1の変数を更新し、前記第1の状態以外において、前記デステージング制御手段によってデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1の記憶媒体に、前記第2の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第2の記憶媒体に、それぞれ書き込むための制御に応じて前記第1及び第2の変数を更新する書き込み制御手段とを含む。
【発明の効果】
【0009】
本発明によれば、第1の記憶媒体(マスタ記憶媒体)と第2の記憶媒体(バックアップ記憶媒体)とを論理的に分離するための、ホスト機器からのスナップショット作成要求(スプリットコマンド)の受信時に、第1の記憶媒体及び第2の記憶媒体に対するデステージングを不要とすることができるため、スナップショット作成に要する時間を短縮することができる。しかも、第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数を格納するための記憶領域以外に、特別な記憶領域は必要ないため、従来技術と異なりキャッシュメモリの記憶領域を犠牲にすることがない。
【発明を実施するための最良の形態】
【0010】
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るデータ記憶装置1の概略構成を示すブロック図である。
図1に示されるデータ記憶装置1は、制御装置10と、複数、例えば2つの記憶媒体11a及び11bとから構成される。制御装置10はデータ通信路2を介して接続されるホスト機器と記憶媒体11a及び11bとの間に介在して設けられる。記憶媒体11a及び記憶媒体11bは、それぞれマスタ記憶媒体(一次記憶媒体)及びバックアップ記憶媒体(二次記憶媒体)として用いられるものとする。本実施形態において、記憶媒体11a及び11bは、ディスク、例えば論理ディスク(LDISK)である。そこで以下の説明では、マスタ記憶媒体11a及びバックアップ記憶媒体11bを、それぞれマスタ論理ディスク(マスタLDISK)11a及びバックアップ論理ディスク(バックアップLDISK)11bと呼ぶ。また、単に論理ディスク(LDISK)11a及び11bと呼ぶこともある。
【0011】
制御装置10は、ホストインタフェース部(HOST I/F)101、CPU102、プログラムメモリ103、キャッシュメモリ104及びHDDインタフェース部(HDD I/F)105を有している。なお、データ通信路2を介してデータ記憶装置1に接続されるものとしては、ホスト機器となるコンピュータまたはその集合体の他、他のデータ記憶装置も想定される。
【0012】
ホストインタフェース部101及びHDDインタフェース部105は、それぞれ外部接続される装置との間の通信を制御する。ホストインタフェース部101はデータ通信路2側の通信を司る。HDDインタフェース部105はLDISK11a及び11b側の通信を司る。
【0013】
CPU102は、制御装置10における必要処理を実行するものであり、プログラムメモリ103には、そのための各種プログラムが格納されている。ここで説明する筐体内レプリケーションの手法は、このプログラムメモリ103(コンピュータ読み取り可能な記憶媒体)に格納されているプログラムをCPU102が読み取って実行することによって実現されるものとする。プログラムメモリ103には、上述のプログラムを格納するための領域に加えて、CPU102が利用するデータ等を格納するための領域も確保されている。
【0014】
キャッシュメモリ104は、データ通信路2を介して接続されるホスト機器(或いは他のデータ記憶装置)からデータ記憶装置1内のLDISK11i(i=a,b)に対して発行される入出力要求(IO要求)に対するバッファの役目を提供する。図2は、キャッシュメモリ104の構造を示す。キャッシュメモリ104は、ある論理的な単位に分割されて管理されている。この分割された単位で自由にLDISK11i内の記憶位置に対応させて、その記憶位置のデータをキャッシュメモリ104に格納することができる。この分割された1つの単位をキャッシュブロックと呼ぶ。
【0015】
ここで、図2に示されるキャッシュメモリ104は、例えば16KB(キロバイト)単位のキャッシュブロックに分割されている。各キャッシュブロックは、例えばセットアソシアティブ方式によるメモリマッピングで管理される。キャッシュメモリ104上では、リードキャッシュ(RDC)とライトバックキャッシュ(WBC)の2種類のデータが管理される。ホスト機器からのリード/ライトアクセスに応じて各エントリがサーチされ、対象となるキャッシュブロックとホスト機器またはLDISK11iとの間でデータ転送が行われる。
【0016】
例えば、ホスト機器からLDISK11iへのデータ書き込み処理は、キャッシュメモリ104を用いて次のように行われる。まず、入出力要求で指定されたデータ(書き込みデータ)がキャッシュメモリ104にエントリされた時点で、要求元のホスト機器に対して書き込み処理完了が通知される。その後に、キャッシュメモリ104からLDISK11iに対する実際のデータ書き込みが実行される。
【0017】
一方、LDISK11iからのデータ読み込み処理は、次のように行われる。まず、該当するデータがキャッシュメモリ104にエントリ(キャッシュ)されているか否かが判定され、エントリされていれば、そのデータがキャッシュメモリ104からデータ通信路2を介してホスト機器に返される。これに対し、該当するデータがキャッシュメモリ104にエントリされていないならば、データがLDISK11iからキャッシュメモリ104に読み出されて、しかる後に、要求元のホスト機器に対して読み出されたデータがデータ通信路2を介して返される。
【0018】
図3は、図1に示される制御装置10のプログラムメモリ103に格納されるプログラムをCPU102が読み取って実行することによって実現されるモジュール構成を主として示すブロック図である。
【0019】
ホストインタフェース制御部(HOST I/F制御部)210は、ホスト機器(または他のデータ記憶装置)との間のインタフェース処理を担当する。IO管理部(入出力管理部)220は、IOアクセス管理(入出力アクセス管理)及びIOアクセス領域制御(入出力アクセス領域制御)を実行する。レプリケーション管理部230は、レプリケーション処理を行う。
【0020】
キャッシュ管理モジュール240は、IOアクセス制御部241、デステージング/ステージング制御部242、キャッシュメモリ管理部243及びLDISKアクセス制御部(論理ディスクアクセス制御部)244から構成される。
【0021】
IOアクセス制御部241は、IO管理部220からIO要求を受け付けるブロックであり、IO要求に基づきリード/ライトアクセスを制御する。特にIOアクセス制御部241は、ホスト機器からのIO要求(ホストIO要求)に基づき、ホスト機器からのリード/ライトアクセスを制御する。IO要求は、アドレスと転送サイズとからなるアドレス情報を含む。
【0022】
IOアクセス制御部241は、このアクセス情報に基づき、キャッシュメモリ管理部243との連携により、該当するキャッシュブロックのエントリをサーチする。IOアクセス制御部241は、このエントリのサーチ(エントリサーチ)に基づき、キャッシュメモリ104とホスト機器との間のデータ転送をホストインタフェース制御部210に対して要求する。またIOアクセス制御部241は、アクセス情報で指定されるデータの格納状態により、ディスク転送(キャッシュメモリ104とLDISK11iとの間のデータ転送)を必要とする場合に、ディスク転送のための情報をLDISKアクセス制御部244に引き渡すことにより、必要なディスクデータの転送を行わせる。
【0023】
キャッシュメモリ管理部243は、キャッシュカラム単位に割り当てられているキャッシュブロックと対象となるLDISK11iの領域とをマッピングし、ホスト機器からライトされたデータまたはディスクからリードされたデータの格納状態を管理する。このキャッシュメモリ管理部243によるデータの格納状態の管理には、キャッシュブロック管理テーブル250と、スナップカウンタ260a及び260bと、レプリケーション管理テーブル270とが用いられる。
【0024】
キャッシュブロック管理テーブル250及びレプリケーション管理テーブル270は、例えば、図1に示されるプログラムメモリ103の所定の領域に格納される。つまりプログラムメモリ103は、キャッシュブロック管理テーブル250及びレプリケーション管理テーブル270をそれぞれ記憶する記憶手段を含む。なお、キャッシュブロック管理テーブル250及びレプリケーション管理テーブル270が、それぞれ独立したメモリに格納される構成であっても構わない。
【0025】
スナップカウンタ260i(i=a,b)はLDISK11i毎に設けられる。本実施形態においてスナップカウンタ260iは、プログラムメモリ103内に置かれるソフトウェアカウンタである。なおスナップカウンタ260iがハードウェアカウンタであっても構わない。
【0026】
デステージング/ステージング制御部242は、ホストIO要求のアクセス情報に基づきシーケンシャルライトまたはシーケンシャルリードの検出を行う。シーケンシャルなアクセスを検出した場合、デステージング/ステージング制御部242は、シーケンシャルライトであれば後追い吐き出し要求を、シーケンシャルリードであればデータ先読み要求を、IO管理部220に領域を指定して発行する。またデステージング/ステージング制御部242は、特定のタイミングで未吐き出しのWBCデータ(ダーティデータ)を抽出し、ストライプグループ単位にまとめてLDISK11iに書き込むための要求をIO管理部220に領域を指定して発行する。
【0027】
本実施形態において、LDISK11a及び11bはそれぞれ、複数のディスクアレイ、例えば図3に示されるようなRAID(Redundant Arrays of Independent Disks,Redundant Arrays of Inexpensive Disks)構成の2つのディスクアレイ(SDISK)110a及び110bから構成される。つまり、本実施形態の説明において、データ記憶装置1はディスクアレイ装置である。一般にディスクアレイ装置では、ディスクアレイを構成する例えば複数の物理ディスクが一定のサイズに分割して管理される。この分割された単位はストライプと呼ばれる。ストライプグループとは、ディスクアレイを構成する複数の物理ディスクの同一オフセット位置のストライプの集合を指す。
【0028】
RAID制御部280は、LDISKアクセス制御部244からの要求に応じて、LDISK11i内のディスク転送の対象となるSDISK110iとの間のディスクデータの転送を制御する。HDDインタフェース制御部(HDD I/F制御部)290は、RAID制御部280からの要求に応じて、SDISK110i内のディスク転送の対象となる、1つ以上の物理ディスクとの間のディスクデータの転送を制御する。
【0029】
なお、キャッシュメモリ104を2重化することも可能である。その場合、周知のミラードキャッシュ制御やコンカレントキャッシュ制御が必要となるが、これらについては本発明の本質ではないので説明を省略する。
【0030】
また、LDISK11a及び11bが必ずしもディスクアレイから構成されている必要はなく、したがってデータ記憶装置1がディスクアレイ装置でなくともよい。更に、LDISK11a及び11bに代えて物理ディスクのような他の記憶媒体を用いることも可能である。
【0031】
図4は、キャッシュブロック管理テーブル250のデータ構造例を示す。キャッシュブロック管理テーブル250は、キャッシュメモリ104にエントリされたデータを管理するためキャッシュ管理用データを保持する。キャッシュブロック管理テーブル250の各エントリは、LDISK番号フィールド251、ステートフラグフィールド252、論理アドレスフィールド253、WBCビット(WBCエントリビット)フィールド254、RDCビット(RDCエントリビット)フィールド255及びスナップビットフィールド256から構成される。
【0032】
LDISK番号フィールド251は、該当キャッシュブロックが割り当てられているLDISK番号を保持するのに用いられる。ステートフラグフィールド252は、該当キャッシュブロックの状態を示すフラグ情報を保持するのに用いられる。論理アドレスフィールド253は、該当キャッシュブロックが割り当てられているLDISK内の領域の論理アドレスを保持するのに用いられる。
【0033】
WBCビットフィールド254は、該当キャッシュブロック内のダーティデータ(LDISK番号フィールド251で示されるLDISKに保存されるべきデータ)のエントリ状態をセクタ単位で示すビットマップ(第1の変数)を保持するのに用いられる。RDCビットフィールド255は、該当キャッシュブロック内のリードキャッシュデータのエントリ状態をセクタ単位で示すビットマップを保持するのに用いられる。スナップビットフィールド256は、該当キャッシュブロックにおいてバックアップLDISKに保存されるべきデータ(未保存のスナップデータ)のエントリ状態をセクタ単位で示すビットマップ(第2の変数)を保持するのに用いられる。
【0034】
WBCビットフィールド254、RDCビットフィールド255及びスナップビットフィールド256にそれぞれ保持されるビットマップを構成するビットを、それぞれ、WBCビット、RDCビット及びスナップビットと称する。WBCビット、RDCビット及びスナップビットは、例えば“1”のとき該当キャッシュブロック内の該当セクタのデータ(ダーティデータ、リードキャッシュデータ、及び未保存のスナップデータ)がキャッシュメモリ104にエントリされており、“0”のとき該当セクタのデータはキャッシュメモリ104にエントリされていないことを示す。
【0035】
本実施形態では、1キャッシュブロックは16KB(キロバイト)であり、1セクタは512B(バイト)である。つまり、1キャッシュブロックのサイズは32セクタ分である。したがって、WBCビットフィールド254、RDCビットフィールド255及びスナップビットフィールド256の各フィールドに保持されるビットマップは、32ビットで構成される。LDISK11i毎の“1”のスナップビットが存在するキャッシュブロックの数(未保存のスナップデータが存在するキャッシュブロックの数)は、スナップカウンタ260iによってカウントされる。
【0036】
図5は、本実施形態で適用されるレプリケーション(筐体内レプリケーション)の状態遷移の一例を示す。本実施形態のデータ記憶装置1において取り得るレプリケーションの状態、つまりマスタLDISK11a及びバックアップLDISK11bのレプリケーション(レプリケーション管理)の状態は、同期状態(第1の状態)、スプリット状態(第2の状態)及びスプリット移行状態(第3の状態)の3つである。
【0037】
「同期状態」とは、本実施形態のようにLDISK11aがマスタLDISK(一次記憶媒体)で、LDISK11bがバックアップLDISK(二次記憶媒体)である場合、両LDISKがミラーとして同期をとって運用されている状態を指す。「スプリット状態」とは、マスタLDISKとバックアップLDISKとが論理的に分離(切り離)されている状態を指す。
【0038】
「スプリット移行状態」とは、「同期状態」から「スプリット状態」へ移行する中間状態であり、スナップショットがバックアップLDISK11bのデータとして確定していない状態を指す。具体的には、マスタLDISK11aに対応付けられているキャッシュブロックの中に、バックアップLDISK11bに保存されるべきデータ(未保存のスナップデータ)を含むキャッシュブロックが1つ以上存在する状態を指す。つまり、「スプリット移行状態」とは、マスタLDISK11aに対応付けられているキャッシュ管理モジュール240のエントリの中に、“1”にセットされているスナップビットを含むエントリが1つ以上存在する状態を指す。
【0039】
なお、「スプリット移行状態」はホスト機器からは認識されないものとする。つまりデータ記憶装置1における「スプリット移行状態」は、ホスト機器からは「スプリット状態」として認識されるものとする。
【0040】
以下の説明では、レプリケーションが設定されるマスタLDISK11a及びバックアップLDISK11bの両LDISK(論理ディスク)を、メンバLDISK(メンバ論理ディスク)、またはレプリケーションを構成するメンバLDISKと称することがある。
【0041】
レプリケーションの状態は、レプリケーション管理テーブル270によって管理される。図6は、レプリケーション管理テーブル270のデータ構造例を示す。レプリケーション管理テーブル270の各エントリは、マスタLDISK番号フィールド271、バックアップLDISK番号フィールド272及びステータスフィールド273から構成される。
【0042】
マスタLDISK番号フィールド271及びバックアップLDISK番号フィールド272は、レプリケーションを構成するメンバLDISKのそれぞれLDISK番号(マスタLDISK番号及びバックアップLDISK番号)を保持するのに用いられる。ステータスフィールド273は、フィールド271及び272に保持されているLDISK番号で指定されるメンバLDISKのレプリケーション状態を示すステータス情報を保持するのに用いられる。
【0043】
マスタLDISK11a及びバックアップLDISK11bのレプリケーションの状態が同期状態にあるときに、制御装置10内のホストインタフェース制御部210がホスト機器からスナップショット作成(ミラー状態の解除)を指示するためのスプリットコマンド(スナップショット作成要求)を受信したものとする。IO管理部220は、このスプリットコマンドをホストインタフェース制御部210から受け取ると、キャッシュ管理モジュール240内のIOアクセス制御部241を介してキャッシュメモリ管理部243にスナップショット作成を要求する。すると、キャッシュメモリ管理部243はスナップショット作成手段として機能して、以下に述べるスナップショット作成処理を実行する。
【0044】
以下、スプリットコマンド受信時のキャッシュメモリ管理部243を中心とする動作について、図7のフローチャートを参照して説明する。
まずキャッシュメモリ管理部243は、キャッシュブロック管理テーブル250を参照し、LDISK番号フィールド251に保持されているLDISK番号がマスタLDISK11aのLDISK番号と一致、且つWBCビットフィールド254に保持されているビットマップに“0”でないWBCビット(つまり、“1”にセットされているWBCビット)を含むエントリ(目的エントリ)をサーチする(ステップS1)。
【0045】
キャッシュメモリ管理部243は、ステップS1でのサーチの結果、目的エントリの有無を判定する(ステップS2)。もし、目的エントリがあったならば(ステップS2がYes)、つまりキャッシュメモリ104上にマスタLDISK11aに保存されるべきデータ(ダーティデータ)が存在するならば、サーチされた全ての目的エントリについて、キャッシュメモリ管理部243は、エントリのWBCビットフィールド254に保持されているビットマップ(WBCビット群)を、エントリ内のスナップビットフィールド256にスナップビット群からなるビットマップとしてコピーする(ステップS3)。このコピーにより、サーチされた各目的エントリのスナップビットフィールド256に保持されるビットマップは、スプリットコマンド受信時における未保存のスナップデータの範囲を示す。
【0046】
そしてキャッシュメモリ管理部243は、マスタLDISK11aに対応したスナップカウンタ260aを、例えばサーチできたエントリの数だけインクリメントする(ステップS4)。スナップカウンタ260aの値は、キャッシュメモリ104に存在する、バックアップLDISK11bに保存されるべきスナップデータを含むキャッシュブロックの数を示す。なお、本実施形態と異なって、LDISK11aがバックアップLDSIK、LDISK11bがマスタLDISKとして用いられる場合には、キャッシュメモリ104に存在する、バックアップLDISKに保存されるべきスナップデータを含むキャッシュブロックの数を示すのに、スナップカウンタ260bが用いられる。
【0047】
ステップS4が実行された場合、スナップカウンタ260aの値は0でなく、1より大きい。このことは、バックアップLDISK11bに保存されるべきスナップデータを含むキャッシュブロックがキャッシュメモリ104内に存在することを示す。この場合、キャッシュメモリ管理部243は、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報を、レプリケーション管理部230によって、同期状態を示すステータス情報からスプリット移行状態を示すステータス情報に更新させる(ステップS5)。これにより、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態は、図5において矢印501で示されるように、同期状態からスプリット移行状態に遷移する。
【0048】
キャッシュメモリ管理部243は、ステップS5の実行後、ホスト機器からのスプリットコマンド(スプリット要求)に対し、レプリケーション管理部230によりIO管理部220を介してホスト機器にスプリット完了を通知させる(ステップS7)。
【0049】
このように本実施形態においては、ホスト機器からのスプリットコマンドの受信時に、マスタLDISK11a及びバックアップLDISK11bに対するデステージングが行われない。キャッシュメモリ管理部243(スナップショット作成手段)は、キャッシュブロック管理テーブル250内の、“1”にセットされているWBCビットを含むエントリを対象に、エントリのWBCビットフィールド254に保持されているビットマップを、エントリ内のスナップビットフィールド256にコピーする動作の完了をもって、ホスト機器にスプリット完了を通知する。ホスト機器は、このスプリット完了通知により、マスタLDISK11a及びバックアップLDISK11bのレプリケーションの状態が、同期状態からスプリット状態に遷移したと認識する。つまり本実施形態では、データ記憶装置1におけるスプリット移行状態は、ホスト機器からは、前述のにようにスプリット状態として認識される。
【0050】
一方、目的エントリが1つもなかった場合(ステップS2がNo)、つまりキャッシュメモリ104上にダーティデータが存在せず、スナップカウンタ260aの値が0の場合には、キャッシュメモリ管理部243は、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報を、レプリケーション管理部230によって、スプリット状態を示すステータス情報に更新させる(ステップS6)。つまりマスタLDISK11aに保存されるべきダーティデータが存在せず、したがってバックアップLDISK11bに保存されるべきスナップデータも存在しない場合、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態は、同期状態から、スプリット移行状態を経由することなく、スプリット状態に遷移する。しかし、このような状態遷移の例は希である。通常は、後述するようにスプリット完了通知後に、図5において矢印502で示されるように、スプリット移行状態からスプリット状態に遷移する。
【0051】
キャッシュメモリ管理部243は、ステップS6の実行後、ホスト機器からのスプリットコマンドに対し、レプリケーション管理部230によりIO管理部220を介してホスト機器にスプリット完了を通知させる(ステップS7)。
【0052】
その後、マスタLDISK11a及びバックアップLDISK11bがスプリット状態にあるときに、ホスト機器から制御装置10に対してシンクコマンドが発行されたものとする。この場合、ホスト機器からのマスタLDISK11aに対するI/O要求及びバックアップLDISK11bに対するI/O要求が一時止められる。ここで、マスタLDISK11aの内容とバックアップLDISK11bの内容とが相違しているならば、その相違しているマスタLDISK11aのデータの複製(コピー)がバックアップLDISK11bに保存される。そして、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報が、スプリット状態から同期状態に更新される。これにより、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態が、図5において矢印503で示されるように、スプリット状態から同期状態に遷移する。
【0053】
次に、メンバLDISKのうちの、例えばマスタLDISK11aにデータを書き込むことを要求するための書き込み要求(第1の書き込み要求)が、ホスト機器から制御装置10に対して発行された場合の動作について、図8のフローチャートを参照して説明する。
【0054】
ホスト機器からの第1の書き込み要求は、制御装置10内のホストインタフェース制御部210で受信されて、IO管理部220を介してキャッシュ管理モジュール240に渡される。するとキャッシュ管理モジュール240内のキャッシュメモリ管理部243は書き込み制御手段として機能して、図8のフローチャートに従う処理を次のように実行する。
【0055】
まずキャッシュメモリ管理部243は、ホスト機器からの第1の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報によって示されるマスタLDISK11a内のアクセス範囲(書き込み範囲)に対応するキャッシュブロックのエントリをサーチする(ステップS11)。
【0056】
次にキャッシュメモリ管理部243は、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちの“1”にセットされているスナップビットの範囲と、アクセス範囲とが重複しているかを判定する(ステップS12)。つまりキャッシュメモリ管理部243は、スナップ時のダーティデータの範囲とアクセス範囲とが重複しているかを判定する。
【0057】
もし、両範囲が重複しているならば(ステップS12がYes)、その重複を解消するために、キャッシュメモリ管理部243は、キャッシュメモリ104に格納されている、その重複範囲に対応するキャッシュブロック内のデータ(未保存のスナップ時のデータ)をバックアップLDISK11bに書き込むための書き込みリクエスト(をLDISKアクセス制御部244に発行し、バックアップLDISK11bに重複範囲に対応するスナップ時のデータを保存する(ステップS13)。
【0058】
書き込みリクエストの発行によりLDISKアクセス制御部244は、RAID制御部280及びHDDインタフェース制御部290を介して、重複範囲に対応するキャッシュブロック内のデータを、バックアップLDISK11bの該当するアクセス範囲に書き込むためのライトアクセス制御を開始する。このバックアップLDISK11bへのライトアクセス制御により、バックアップLDISK11bに重複範囲に対応するスナップ時のデータが保存される。
【0059】
もし本実施形態と異なって、ステップS11〜S13が実行されずに、ホスト機器からの第1の書き込み要求に従ってマスタLDISK11aに対するデータの書き込みが行われたならば、重複範囲に対応するキャッシュメモリ104の領域のデータが、第1の書き込み要求で指定される新たなデータで上書きされるため、重複範囲に対応するスナップ時のデータが失われてしまう。そのため従来技術では、ホスト機器からのスプリットコマンドの受信時に、キャッシュメモリ104上のダーティデータをマスタディスクとバックアップディスクの両方に吐き出すデステージングを必要とする。本実施形態では、このようなデステージングを行うことなく、重複範囲に対応するスナップ時のデータが失われてしまう不具合を防止することができる。
【0060】
さて、キャッシュメモリ管理部243は、ステップS13の後、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちの重複範囲のスナップビットを“0”にリセットする(ステップS14)。これにより、スナップ時より後に重複範囲に対応するマスタLDISK11aの領域に書き込まれるデータが、未保存のスナップデータとしてバックアップLDISK11bに保存される不具合を防止できる。
【0061】
次にキャッシュメモリ管理部243は、重複範囲のスナップビットをリセットしたことにより、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ中の全スナップビットが全て“0”となっているかを判定する(ステップS15)。もし、全スナップビットが “0”となっているならば(ステップS15がYes)、キャッシュメモリ管理部243はマスタLDISK11aに対応して設けられているスナップカウンタ260aを、重複範囲に対応するキャッシュブロックの数だけディクリメントする(ステップS16)。
【0062】
次にキャッシュメモリ管理部243は、スナップカウンタ260aをディクリメントした結果、スナップカウンタ260aの値が0となったかを判定する(ステップS17)。もし、スナップカウンタ260aの値が0となったならば(ステップS17がYes)、キャッシュメモリ管理部243は、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態を、レプリケーション管理部230によってスプリット移行状態からスプリット状態に遷移させる(ステップS18)。即ちレプリケーション管理部230は、キャッシュメモリ管理部243からの要求に応じて、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報を、スプリット状態を示すステータス情報に更新する。
【0063】
すると、IO管理部220は、ホスト機器からの第1の書き込み要求で指定されたマスタLDISK11aに書き込むべきデータ(ライトデータ)を、ホスト機器に要求する(ステップS19)。以降の動作は従来と同様であり、まず、IO管理部220からホスト機器に要求されたデータ(第1の書き込み要求で指定されたマスタLDISK11aに書き込むべきデータ)が、ホスト機器から制御装置10に転送される。ホスト機器から制御装置10に転送されたライトデータは、制御装置10で受信される。
【0064】
本実施形態において、ホスト機器から転送されたデータの「受信」とは、データがキャッシュメモリ104にエントリされることを含む。つまり、ホスト機器から制御装置10に転送された、マスタLDISK11aに書き込むべきライトデータは、ステップS11でサーチされたキャッシュブロック管理テーブル250の目的エントリに対応付けられているキャッシュメモリ104内のキャッシュブロックに、IO管理部220からの要求に基づくIOアクセス制御部241の制御の下で、キャッシュメモリ管理部243によってエントリされる。すると、IO管理部220からホスト機器に対して書き込み処理完了が通知される。このときキャッシュメモリ管理部243は、サーチされた目的エントリのWBCビットフィールド254に保持されているビットマップのうち、第1の書き込み要求で指定されたアクセス範囲に対応するWBCビットを“1”にセットする。
【0065】
一方、ステップS12、S15またはS17の判定がNoの場合には、ステップS12、S15またはS17に続いてステップS19が実行される。
【0066】
なお、図8のフローチャートでは省略されているが、ステップS11で目的エントリをサーチできなかった場合、つまりアクセス範囲にヒットしなかった場合にも、ステップS19が実行される。但し、目的エントリをサーチできなかった場合、キャッシュメモリ管理部243は、キャッシュメモリ104上のキャッシュブロック(空きキャッシュブロック)を確保して、確保されたキャッシュブロックに、ライトデータをエントリする。すると、IO管理部220からホスト機器に対して書き込み処理完了が通知される。
【0067】
このときキャッシュメモリ管理部243は、キャッシュブロック管理テーブル250内の空きエントリを確保して、確保されたエントリに、キャッシュブロックをマスタLDISK11aのアクセス範囲に対応付けて管理するためのエントリ情報を設定する。このエントリ情報のLDISK番号フィールド251にはマスタLDISK11aのLDISK番号が保持され、WBCビットフィールド254にはデータの範囲を示すビットマップ(WBCビット群)が保持される。
【0068】
次に、レプリケーションが設定されているマスタLDISK11a及びバックアップLDISK11bのうちの、バックアップLDISK11bにデータを書き込むための書き込み要求(第2の書き込み要求)が、ホスト機器から制御装置10に対して発行された場合の動作について、図9のフローチャートを参照して説明する。
【0069】
ホスト機器からの第2の書き込み要求は、ホストインタフェース制御部210で受信されて、IO管理部220を介してキャッシュ管理モジュール240に渡される。するとキャッシュ管理モジュール240内のキャッシュメモリ管理部243は書き込み制御手段として機能して、図9のフローチャートに従う処理を次のように実行する。
【0070】
まずキャッシュメモリ管理部243は、ホスト機器からの第2の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報によって指定されるバックアップLDISK11b内のアクセス範囲(書き込み範囲)に対応するキャッシュブロックのエントリをサーチする(ステップS21)。
【0071】
するとIO管理部220は、ホスト機器からの第2の書き込み要求で指定されたバックアップLDISK11bに書き込むべきデータを、ホスト機器に要求する(ステップS22)。これにより、第2の書き込み要求で指定されたバックアップLDISK11bに書き込むべきデータがホスト機器から転送されて、制御装置10で受信される。つまり、バックアップLDISK11bに書き込むべきデータは、ステップS11でサーチされたキャッシュブロック管理テーブル250の目的エントリに対応付けられているキャッシュメモリ104内のキャッシュブロックにエントリされる。
【0072】
なお、図9のフローチャートでは省略されているが、ステップS21で目的エントリをサーチできなかった場合、つまりアクセス範囲にヒットしなかった場合にも、ステップS22が実行される。但し、目的エントリをサーチできなかった場合、キャッシュメモリ管理部243は、キャッシュメモリ104上のキャッシュブロックを確保して、確保されたキャッシュブロックに、上記データを格納する。このときキャッシュメモリ管理部243は、キャッシュメモリ104内のエントリを確保して、確保されたエントリに、キャッシュブロックをバックアップLDISK11bのアクセス範囲に対応付けて管理するためのエントリ情報を設定する。このエントリ情報のLDISK番号フィールド251にはバックアップLDISK11bのLDISK番号が保持され、WBCビットフィールド254にはデータの範囲を示すビットマップ(WBCビット群)が保持される。
【0073】
次にキャッシュメモリ管理部243は、レプリケーション管理テーブル270を参照し、バックアップLDISK11bをメンバLDISKとするレプリケーションの状態がスプリット移行状態にあるかを判定する(ステップS23)。このレプリケーションの状態は、バックアップLDISK11bのLDISK番号が保持されているバックアップLDISK番号フィールド272を含むレプリケーション管理テーブル270のエントリを探して、エントリ内のステータスフィールド273を参照することによって判定することができる。
【0074】
もし、レプリケーションの状態がスプリット移行状態にある場合(ステップS23がYes)、キャッシュメモリ管理部243は、第2の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報よって示されるバックアップLDISK11b内のアクセス範囲(書き込み範囲)と同一のマスタLDISK11a内の範囲(領域)に対応するキャッシュブロックのエントリをサーチする(ステップS24)。このステップS24は、例えばステップS22でホスト機器に要求されたデータ(バックアップLDISK11bに書き込まれるべきデータ)がホスト機器から転送されて制御装置10で受信された後に実行される。
【0075】
キャッシュメモリ管理部243は、ステップS24でのサーチの結果、キャッシュブロック管理テーブル250内の該当するキャッシュブロックの目的エントリがサーチできたかを判定する(ステップS25)。もし、目的エントリがサーチできたならば(ステップS25がYes)、つまりアクセス範囲にヒットしたならば、キャッシュメモリ管理部243は、エントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちのアクセス範囲に対応するスナップビットの範囲に“1”にセットされているスナップビットが存在するかを判定する(ステップS26)。
【0076】
ここで、アクセス範囲に対応するスナップビットの範囲に、“1”にセットされているスナップビットが存在するものとする(ステップS26がYes)。つまり、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちの“1”にセットされているスナップビットの範囲と、アクセス範囲(書き込み範囲)に対応するスナップビットの範囲とが重複しているものとする。
【0077】
このことは、バックアップLDISKにおける重複しているスナップデータの領域に、第2の書き込み要求で指定されたデータが上書きされることとなるため、重複領域に対応するキャッシュブロック内のデータ(未保存のスナップ時のデータ)をバックアップLDISKに書き込む必要がなくなることを意味する。逆に、第2の書き込み要求で指定されたデータのバックアップLDISK11bへの書き込みが実行されたとしても、重複領域に対応するキャッシュブロック内のデータ(未保存のスナップ時のデータ)をバックアップLDISKに書き込む動作が行われるならば、第2の書き込み要求で指定されたデータはマスタLDISK11aの古いデータで上書きされる可能性がある。
【0078】
そこで本実施形態においキャッシュメモリ管理部243は、ステップS24でサーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうち、アクセス範囲に対応するスナップビットを“0”にリセットする(ステップS27)。これにより、第2の書き込み要求で指定されたデータのバックアップLDISK11bへの書き込みが実行されても、そのデータが重複範囲に対応するマスタLDISK11aの古いデータで上書きされることを防止できる。
【0079】
次にキャッシュメモリ管理部243は、アクセス範囲に対応するスナップビットをリセットしたことにより、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップ中の全スナップビットが全て“0”となっているかを判定する(ステップS28)。もし、全スナップビットが “0”となっているならば(ステップS28がYes)、キャッシュメモリ管理部243はマスタLDISK11aに対応したスナップカウンタ260aを、アクセス範囲に対応するキャッシュブロックの数だけディクリメントする(ステップS29)。
【0080】
次にキャッシュメモリ管理部243は、スナップカウンタ260aをディクリメントした結果、スナップカウンタ260aの値が0となったかを判定する(ステップS30)。もし、スナップカウンタ260aの値が0となったならば(ステップS30がYes)、キャッシュメモリ管理部243は、ステップS18と同様に、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態を、レプリケーション管理部230によってスプリット移行状態からスプリット状態に遷移させる(ステップS31)。
【0081】
次に、ホスト機器から制御装置10に対して、マスタLDISK11aからデータを読み込むことを要求するための読み込み要求(第1の読み込み要求)が発行されたものとする。この場合、全てのレプリケーション状態で処理の内容に差異はないため、説明を省略する。
【0082】
次に、ホスト機器から制御装置10に対して、バックアップLDISK11bからデータを読み込むことを要求するための読み込み要求(第2の読み込み要求)が発行された場合の動作について、図10のフローチャートを参照して説明する。
【0083】
ホスト機器からの第2の読み込み要求は、制御装置10内のホストインタフェース制御部210で受信されて、IO管理部220を介してキャッシュ管理モジュール240に渡される。するとキャッシュ管理モジュール240内のキャッシュメモリ管理部243は読み込み制御手段として機能して、図10のフローチャートに従う処理を次のように実行する。
【0084】
まずキャッシュメモリ管理部243は、ステップS23と同様に、レプリケーション管理テーブル270を参照し、バックアップLDISK11bをメンバLDISKとするレプリケーションの状態がスプリット移行状態にあるかを判定する(ステップS41)。
【0085】
もし、レプリケーションの状態がスプリット移行状態にある場合(ステップS41がYes)、キャッシュメモリ管理部243は、第2の読み込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報よって示されるバックアップLDISK11b内のアクセス範囲(読み込み範囲)と同一のマスタLDISK11a内の範囲(領域)に対応するキャッシュブロックのエントリをサーチする(ステップS42)。
【0086】
キャッシュメモリ管理部243は、ステップS42でのサーチの結果、キャッシュブロック管理テーブル250内の該当するキャッシュブロックの目的エントリがサーチできたかを判定する(ステップS43)。もし、目的エントリがサーチできたならば(ステップS43がYes)、つまりアクセス範囲にヒットしたならば、キャッシュメモリ管理部243は、エントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)のうちの“1”にセットされているスナップビットの範囲と、アクセス範囲(読み込み範囲)に対応するスナップビットの範囲とが重複しているかを判定する(ステップS44)。つまりキャッシュメモリ管理部243は、スナップ時のダーティデータ(未保存のスナップデータ)とアクセス範囲とが重複しているかを判定する。
【0087】
もし、両範囲が重複しているならば(ステップS44がYes)、その重複範囲に関しては、キャッシュメモリ管理部243は、キャッシュメモリ104に格納されている、重複範囲に対応するキャッシュブロック内のデータ、つまり未保存のスナップ時のマスタLDISK11aのデータを、IOアクセス制御部241により、バックアップLDISK11bのデータとしてホスト機器に転送させる(ステップS45)。
【0088】
一方、バックアップLDISK11b内のアクセス範囲のうち重複範囲以外の範囲(非重複範囲)に関しては、キャッシュメモリ管理部243はキャッシュブロック管理テーブル250を参照し、バックアップLDISK11bの非重複範囲に対応するキャッシュブロックのエントリをサーチする(ステップS46)。キャッシュメモリ管理部243は、バックアップLDISK11bの非重複範囲に対応するキャッシュブロックのエントリがサーチできたか否かによって、キャッシュブロックのデータ、またはバックアップLDISK11b内の非重複範囲のデータを、IOアクセス制御部241によってホスト機器に転送させる(ステップS47)。
【0089】
一方、ステップS41、S43またはS44の判定がNoの場合、キャッシュメモリ管理部243は、第2の読み込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報によって示されるバックアップLDISK11b内のアクセス範囲に対応するキャッシュブロックのエントリをサーチする(ステップS46)。このアクセス範囲は、重複範囲が0の場合の非重複範囲に相当する。キャッシュメモリ管理部243は、バックアップLDISK11bのアクセス範囲に対応するキャッシュブロックのエントリがサーチできたか否かによって、キャッシュブロックのデータ、またはバックアップLDISK11b内のアクセス範囲のデータを、IOアクセス制御部241によってホスト機器に転送させる(ステップS47)。
【0090】
次に、デステージング時の動作について、図11のフローチャートを参照して説明する。今、デステージング/ステージング制御部242が、マスタLDISK11aまたはバックアップLDISK11bに対して未だ書き込みが実施されていないキャッシュメモリ104上のデータを対象とするデステージングを、IO管理部220に対して要求したものとする。このデステージング要求はIO管理部220からIOアクセス制御部241を介してキャッシュメモリ管理部243に通知される。するとキャッシュメモリ管理部243は書き込み制御手段として機能して、図11のフローチャートに従う処理を次のように実行する。
【0091】
まずキャッシュメモリ管理部243は、キャッシュブロック管理テーブル250を参照し、WBCビットフィールド254に保持されているビットマップ(WBCビット群)内に“1”にセットされているWBCビットが存在するキャッシュブロックのエントリをサーチする(ステップS51)。
【0092】
キャッシュメモリ管理部243は、ステップS51でサーチされた各キャッシュブロックのエントリについて、エントリのスナップビットフィールド256に保持されているビットマップ(スナップビット群)内に“1”にセットされているスナップビットが存在するかを判定する(ステップS52)。
【0093】
キャッシュメモリ管理部243は、“1”にセットされているスナップビットが存在するエントリ(ステップS52の判定がYesのエントリ)について、エントリのスナップビットフィールド256及びWBCビットフィールド254を比較し、“1”であるスナップビットの範囲とWBCビットの範囲が一致しているかを判定する(ステップS53)。
【0094】
もし、一致している場合(ステップS53がYes)、キャッシュメモリ管理部243は、キャッシュブロック内のその範囲のデータをマスタLDISK11a及びバックアップLDISK11bの双方に書き込むことを、LDISKアクセス制御部244に対して要求する(ステップS54)。
【0095】
これに対し、一致していない場合(ステップS53がNo)、キャッシュメモリ管理部243は、キャッシュブロック内のWBCビットが“1”の範囲のデータをマスタLDISK11aに書き込み、キャッシュブロック内のスナップビットが“1”の範囲のデータをバックアップLDISK11bに書き込むことを、LDISKアクセス制御部244に対して要求する(ステップS55)。
【0096】
なお、ステップS54は、ステップS55と等価である。よって、ステップS53の判定を省略して、常にステップS54あるいはステップS55が行われる構成であっても構わない。
【0097】
キャッシュメモリ管理部243は、ステップS54またはS55(に基づく書き込み)が行われると、“1”にセットされているスナップビットが存在するキャッシュブロック管理テーブル250内の該当エントリのWBCビットフィールド254及びスナップビットフィールド256を対象に、それぞれ、LDISKアクセス制御部244に対して要求された書き込み範囲に対応するWBCビット及びスナップビットをクリアする(ステップS56)。
【0098】
次にキャッシュメモリ管理部243は、書き込み範囲のスナップビットをリセットしたことにより、キャッシュブロック管理テーブル250内の該当エントリの中に、スナップビットフィールド256に保持されているビットマップ中の全スナップビットが全て“0”となったエントリが存在するかを判定する(ステップS57)。もし、該当するエントリが存在するならば(ステップS57がYes)、キャッシュメモリ管理部243はマスタLDISK11aに対応して設けられているスナップカウンタ260aを、対応するキャッシュブロックの数だけディクリメントする(ステップS58)。
【0099】
次にキャッシュメモリ管理部243は、スナップカウンタ260aをディクリメントした結果、スナップカウンタ260aの値が0となったかを判定する(ステップS59)。もし、スナップカウンタ260aの値が0となったならば(ステップS59がYes)、キャッシュメモリ管理部243は、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態を、レプリケーション管理部230によって、スプリット移行状態からスプリット状態に遷移させる(ステップS60)。即ちレプリケーション管理部230は、キャッシュメモリ管理部243からの要求に応じて、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータスを、スプリット状態を示すステータスに更新する。
【0100】
一方、ステップS57の判定がNoの場合、ステップS58以降の処理は行われない。また、ステップS59の判定がNoの場合、ステップS60の処理は行われない。
【0101】
さて、キャッシュメモリ管理部243は、“1”にセットされているWBCビットは存在するが、“1”にセットされているスナップビットは存在しないエントリ(ステップS52の判定がNoのエントリ)に対応するキャッシュブロックについて、次のように処理する。まずキャッシュメモリ管理部243は、レプリケーション管理テーブル270を参照して、レプリケーションの状態が同期状態にあるかを判定する(ステップS61)。
【0102】
もし、同期状態にある場合(ステップS61がYes)、キャッシュメモリ管理部243は、ステップS52の判定がNoのエントリのWBCビットフィールド254に基づき、エントリに対応するキャッシュブロック内のWBCビットが“1”の範囲のデータをマスタLDISK11a及びバックアップLDISK11bの双方に書き込む(筐体内レプリケーションの)ための書き込みリクエストをLDISKアクセス制御部244に発行する(ステップS62)。
【0103】
キャッシュメモリ管理部243は、書き込みリクエストに基づく書き込み(ここでは筐体内レプリケーション)が行われると、ステップS52の判定がNoのエントリ(“1”にセットされているスナップビットが存在しないエントリ)のWBCビットフィールド254を対象に、書き込みリクエストで指定した書き込み範囲に対応するWBCビットをリセットする(ステップS64)。
【0104】
これに対し、同期状態にないならば(ステップS61がNo)、キャッシュメモリ管理部243は、ステップS52の判定がNoのエントリのWBCビットフィールド254に基づき、エントリに対応するキャッシュブロック内のWBCビットが“1”の範囲のデータをマスタLDISK11a及びバックアップLDISK11bのいずれか一方に書き込むための書き込みリクエストをLDISKアクセス制御部244に発行する(ステップS63)。マスタLDISK11a及びバックアップLDISK11bのいずれにデータを書き込むかは、ステップS52の判定がNoのエントリのLDISK番号フィールド251に保持されているLDISK番号が、マスタLDISK11aまたはバックアップLDISK11bのいずれ対応付けられているかによって決定される。
【0105】
キャッシュメモリ管理部243は、書き込みリクエストに基づく書き込みが行われると、ステップS52の判定がNoのエントリのWBCビットフィールド254を対象に、書き込み範囲に対応するWBCビットをリセットする(ステップS64)。
【0106】
このように本実施形態においては、ホスト機器からのスプリットコマンドの受信時に、キャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254に保持されているビットマップ(キャッシュメモリ104にキャッシングされたデータのうちマスタLDISK11aに対して書き込みが実施されていないダーティデータの範囲を示すビットマップ)が、エントリのスナップビットフィールド256に保持されているビットマップ(バックアップLDISK11bに書き込まれるべきデータであるスナップデータの範囲を示すビットマップ)にコピーされる。そして、このコピー完了をもって、レプリケーションの状態が、同期状態からスプリット移行状態に遷移されて、スプリットコマンドに対するスナップショット作成の完了がホスト機器に通知される。ダーティデータのマスタLDISK11a及びバックアップLDISK11bへの書き出しは、スナップショット作成の完了の通知後に行われる。
【0107】
つまり、本実施形態によれば、スプリットコマンドの受信時に、マスタLDISK11a及びバックアップLDISK11bに対するデステージングを行わないため、従来と比較して同期状態からスプリット状態への移行が短時間で完了し、高速にスナップショットを作成できる。しかも本実施形態では、マスタLDISK11a及びバックアップLDISK11bに対するデステージングを行わずに、ミラー状態からスプリット状態へ移行しているにも拘わらず、キャッシュブロック管理テーブル250内での上述のコピー処理により、バックアップLDISK11bを正しくスプリット状態で運用させることができる。
【0108】
[変形例]
次に、実施形態の変形例について説明する。この変形例の第1の特徴は、実施形態と異なり、スプリットコマンドの受信時のスナップショット作成処理において、“1”にセットされているWBCビットを含むエントリをサーチして、エントリのWBCビットフィールド254に保持されているビットマップを、エントリ内のスナップビットフィールド256にコピーする動作を行わずに、レプリケーションの状態を同期状態からスプリット移行状態に遷移するだけで、スプリットコマンドに対するスプリット完了がホスト機器に通知される点にある。本変形例の第2の特徴は、マスタLDISK11aにデータを書き込むことを要求するための第1の書き込み要求が、ホスト機器から制御装置10に対して発行された場合の動作が、レプリケーションの状態(スプリット移行状態、スプリット状態または同期状態のいずれであるか)によって異なる点にもある。
【0109】
まず、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態が同期状態にあるときに、ホスト機器から制御装置10に対してスナップショット作成を指示するためのスプリットコマンドが発行された場合の動作について、図12のフローチャートを参照して説明する。制御装置10内のキャッシュメモリ管理部243は、スプリットコマンドを受信すると、スナップショット作成手段として機能する。
【0110】
まずキャッシュメモリ管理部243は、マスタLDISK11aに対応して設けられているスナップカウンタ260aの値が0であるかを判定する(ステップS71)。スナップカウンタ260aの値が0でない場合(ステップS71がNo)、キャッシュメモリ管理部243は、レプリケーション管理テーブル270内でマスタLDISK11a及びバックアップLDISK11bのLDISK番号に対応付けて保持されているステータス情報を、レプリケーション管理部230によって、スプリット移行状態を示すステータス情報に更新させる(ステップS72)。そしてキャッシュメモリ管理部243は、ホスト機器からのスプリットコマンド(スプリット要求)に対して、IO管理部220によりホスト機器にスプリット完了を通知させる(ステップS73)。
【0111】
このように本変形例においては、ホスト機器からのスプリットコマンド受信時に、上記実施形態と異なって、キャッシュブロック管理テーブル250におけるWBCビットをスナップビットとしてコピーする処理を行わずに、レプリケーションの状態が同期状態からスプリット移行状態に遷移され、この状態遷移をもって、ホスト機器にスプリット完了が通知される。
【0112】
但し、スナップカウンタ260aの値が0の場合には(ステップS71がYes)、キャッシュメモリ管理部243は、レプリケーション管理部230によって、スプリット状態を示すステータス情報に更新させる(ステップS74)。そしてキャッシュメモリ管理部243は、ホスト機器からのスプリットコマンドに対して、IO管理部220によりホスト機器にスプリット完了を通知させる(ステップS73)。
【0113】
次に、レプリケーションが設定されているマスタLDISK11a及びバックアップLDISK11bのうちの、マスタLDISK11aにデータを書き込むことを要求するための第1の書き込み要求が、ホスト機器から制御装置10に対して発行された場合の動作について、図13のフローチャートを参照して説明する。
【0114】
キャッシュメモリ管理部243は、ステップS11と同様に、ホスト機器からの第1の書き込み要求に含まれているアクセス情報に基づいてキャッシュブロック管理テーブル250を参照し、アクセス情報によって示されるマスタLDISK11a内のアクセス範囲(書き込み範囲)に対応するキャッシュブロックのエントリをサーチする(ステップS81)。
【0115】
次にキャッシュメモリ管理部243は、レプリケーション管理テーブル270を参照し、マスタLDISK11aをメンバLDISKとするレプリケーションの状態がスプリット移行状態にあるかを判定する(ステップS82)。もし、レプリケーションの状態がスプリット移行状態にあるならば(ステップS82がYes)、キャッシュメモリ管理部243はステップS12と同様に、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップのうちの“1”にセットされているスナップビットの範囲と、アクセス範囲とが重複しているかを判定する(ステップS83)。
【0116】
もし、スナップビットの範囲とアクセス範囲とが重複しているならば(ステップS83がYes)、キャッシュメモリ管理部243はステップS13と同様に、キャッシュメモリ104に格納されている、その重複範囲に対応するキャッシュブロック内のデータをバックアップLDISK11bに書き込むための書き込みリクエストをLDISKアクセス制御部244に発行する(ステップS84)。これにより、バックアップLDISK11bに、重複範囲に対応するスナップ時のデータが反映される。
【0117】
次にキャッシュメモリ管理部243はステップS14及びS15と同様に、サーチされたキャッシュブロック管理テーブル250内のエントリのスナップビットフィールド256に保持されているビットマップのうちの重複範囲のスナップビットをクリアし、しかる後にビットマップ中の全スナップビットが全て“0”となっているかを判定する(ステップS85及びS86)。もし、全スナップビットが “0”となっているならば(ステップS86がYes)、キャッシュメモリ管理部243はステップS16及びS17と同様に、スナップカウンタ260aを重複範囲に対応するキャッシュブロックの数だけディクリメントし(ステップS87)、ディクリメント後のスナップカウンタ260aの値が0となったかを判定する(ステップS88)。
【0118】
もし、スナップカウンタ260aの値が0となったならば(ステップS88がYes)、キャッシュメモリ管理部243はステップS18と同様に、マスタLDISK11a及びバックアップLDISK11bのレプリケーション状態を、レプリケーション管理部230によって、スプリット移行状態からスプリット状態に遷移させる(ステップS89)。マスタLDISK11a及びバックアップLDISK11bがスプリット状態に遷移すると、IO管理部220は、ホスト機器からの第1の書き込み要求で指定されたマスタLDISK11aに書き込むべきデータを、ホスト機器に要求する(ステップS90)。これにより、要求されたデータがホスト機器から転送されて、制御装置10で受信される。
【0119】
するとキャッシュメモリ管理部243は、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254に保持されているビットマップのうち、第1の書き込み要求で指定されたアクセス範囲(書き込み範囲)に対応するWBCビットを“1”にセットする(ステップS91)。つまりキャッシュメモリ管理部243は、第1の書き込み要求で指定された書き込み範囲を、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254のみに反映する。ステップS83、S86またはS88の判定がNoの場合には、ステップS83、S86またはS88に続いて、ステップS90及びS91が実行される。
【0120】
一方、ステップS82の判定がNoの場合、つまりレプリケーションの状態がスプリット移行状態でない場合には、キャッシュメモリ管理部243は、レプリケーションの状態がスプリット状態にあるかを判定する(ステップS92)。もし、レプリケーションの状態がスプリット状態にあるならば(ステップS92がYes)、ステップS90及びS91が実行されて、第1の書き込み要求で指定された書き込み範囲が、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254のみに反映される。
【0121】
これに対し、レプリケーションの状態がスプリット状態にないならば(ステップS92がNo)、つまりレプリケーションの状態が同期状態にあるならば、IO管理部220はステップS90と同様に、ホスト機器からの第1の書き込み要求で指定されたマスタLDISK11aに書き込むべきデータを、ホスト機器に要求する(ステップS93)。これにより、要求されたデータがホスト機器から転送されて、制御装置10で受信される。
【0122】
するとキャッシュメモリ管理部243は、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254及びスナップビットフィールド256にそれぞれ保持されているビットマップのうち、第1の書き込み要求で指定されたアクセス範囲(書き込み範囲)に対応するWBCビット及びスナップビットを“1”にセットする(ステップS94)。つまりキャッシュメモリ管理部243は、第1の書き込み要求で指定された書き込み範囲を、サーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254及びスナップビットフィールド256の双方に反映する。
【0123】
このように本変形例においては、レプリケーションの状態が同期状態にある場合に、第1の書き込み要求で指定された書き込み範囲に対応するキャッシュメモリ104上のデータが、書き込み範囲に対応するWBCビットにより、マスタLDISK11aに書き込むべきダーティデータとして指定されるだけでなく、書き込み範囲に対応するスナップビットにより、バックアップLDISK11bに書き込むべきスナップデータとして指定される。このことは、上記実施形態におけるスナップショット作成処理で実行される上述のコピー動作を、同期状態において逐次行うことと等価である。
【0124】
次にキャッシュメモリ管理部243は、ステップS94の実行前の、サーチされたキャッシュブロック管理テーブル250内のエントリにおける書き込み範囲に対応するスナップビットが“0”であったかを判定する(ステップS95)。つまりキャッシュメモリ管理部243は、書き込み範囲に対応するスナップビットが“0”から“1”に更新されたかを判定する。ステップS95の判定がYesの場合、キャッシュメモリ管理部243は、スナップカウンタ260aを書き込み範囲に対応するキャッシュブロックの数だけインクリメントする(ステップS96)。これに対し、ステップS95の判定がNoの場合、ステップS96は行われない。
【0125】
次に、レプリケーションが設定されているマスタLDISK11a及びバックアップLDISK11bのうちのバックアップLDISK11bにデータを書き込むことを要求するための第2の書き込み要求が、ホスト機器から制御装置10に対して発行されたものとする。この場合、実施形態と同様に、図9のフローチャートに従って処理が行われる。
【0126】
次に、ホスト機器から制御装置10に対して、マスタLDISK11aからデータを読み込むことを要求するための第1の読み込み要求が発行されたものとする。この場合、全てのレプリケーション状態で処理の内容に差異はないため、説明を省略する。
【0127】
次に、ホスト機器から制御装置10に対して、バックアップLDISK11bからデータを読み込むことを要求するための第2の読み込み要求が発行されたものとする。この場合、実施形態と同様に、図10のフローチャートに従って処理が行われる。
【0128】
次に、本変形例におけるデステージング時の動作について、図11のフローチャートと相違する点を中心に、図14のフローチャートを参照して説明する。なお、図14において、図11と等価な処理ステップには、同一参照符号を付してある。
【0129】
図14のフローチャートが図11のそれと相違する点は、ステップS59の判定がYesの場合に、ステップS60ではなくて、ステップS100が実行されることにある。このステップS100において、キャッシュメモリ管理部243は、レプリケーション管理テーブル270を参照し、バックアップLDISK11bをメンバLDISKとするレプリケーションの状態がスプリット移行状態にあるかを判定する。キャッシュメモリ管理部243は、レプリケーションの状態がスプリット移行状態にある場合だけ(ステップS100がYes)、ステップ60を実行する。即ちキャッシュメモリ管理部243は、スナップカウンタ260aの値が0となり(ステップS59がYes)、レプリケーションの状態がスプリット移行状態にある場合だけ(ステップS100がYes)、レプリケーションの状態を、レプリケーション管理部230によってスプリット移行状態からスプリット状態に遷移させる(ステップS60)。
【0130】
また、図14のフローチャートにおけるステップS54は、筐体内レプリケーションの制御が実行されることと等価である。その理由は、第1の書き込み要求で指定された書き込み範囲が、同期状態におけるステップS93及びS94の処理(図13のフローチャート参照)により、ステップS81でサーチされたキャッシュブロック管理テーブル250内のエントリのWBCビットフィールド254だけでなく、エントリのスナップビットフィールド256にも反映されているからである。
【0131】
また、図14のフローチャートが図11のそれと相違する他の点は、“1”にセットされているスナップビットが存在しないエントリ(ステップS52の判定がNoのエントリ)について、キャッシュメモリ管理部243が、常にステップS63及びS64のみを実行することである。その理由は、上述のように、図14のフローチャートにおけるステップS54により、実質的な筐体内レプリケーションの制御が実行されるからである。
【0132】
本変形例においても、ホスト機器からのスプリットコマンドの受信時に、マスタLDISK11a及びバックアップLDISK11bに対するデステージングを行わないため、ミラー状態からスプリット状態への移行が従来技術と比較して大幅に短時間で完了することができる。
【0133】
なお、本発明は、実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【0134】
【図1】本発明の一実施形態に係るデータ記憶装置の概略構成を示すブロック図。
【図2】同実施形態におけるキャッシュメモリの構造を説明するための図。
【図3】同実施形態における制御装置のモジュール構成を主として示すブロック図。
【図4】同実施形態において制御装置に含まれるキャッシュブロック管理テーブルのデータ構造例を示す図。
【図5】同実施形態におけるレプリケーションの状態遷移の一例を示す図。
【図6】同実施形態において制御装置に含まれるレプリケーション管理テーブルのデータ構造例を示す図。
【図7】同実施形態におけるスプリットコマンド受信時の処理手順を示すフローチャート。
【図8】同実施形態においてマスタ論理ディスクにデータを書き込むことを要求するための書き込み要求(第1の書き込み要求)がホスト機器から発行された場合の処理手順を示すフローチャート。
【図9】同実施形態においてバックアップ論理ディスクにデータを書き込むことを要求するための書き込み要求(第2の書き込み要求)がホスト機器から発行された場合の処理手順を示すフローチャート。
【図10】同実施形態においてバックアップ論理ディスクからデータを読み込むことを要求するための読み込み要求がホスト機器から発行された場合の処理手順を示すフローチャート。
【図11】同実施形態におけるデステージング時の処理手順を示すフローチャート。
【図12】同実施形態の変形例におけるスプリットコマンド受信時の処理手順を示すフローチャート。
【図13】同変形例において第1の書き込み要求がホスト機器から発行された場合の処理手順を示すフローチャート。
【図14】同変形例におけるデステージング時の処理手順を示すフローチャート。
【符号の説明】
【0135】
1…データ記憶装置、2…データ通信路、10…制御装置、11a…論理ディスク(LDISK、マスタ論理ディスク、マスタLDISK、第1の記憶媒体)、11b…論理ディスク(LDISK、バックアップ論理ディスク、バックアップLDISK、第2の記憶媒体)、102…CPU、103…プログラムメモリ、104…キャッシュメモリ、210…ホストインタフェース制御部、220…IO管理部、230…レプリケーション管理部、240…キャッシュ管理モジュール、241…IOアクセス制御部、242…デステージング/ステージング制御部、243…キャッシュメモリ管理部、244…LDISKアクセス制御部、250…キャッシュブロック管理テーブル、260a,260b…スナップカウンタ、270…レプリケーション管理テーブル。
【特許請求の範囲】
【請求項1】
第1の記憶媒体及び第2の記憶媒体と、
ホスト機器と前記第1及び第2の記憶媒体との間に介在し、前記第1及び第2の記憶媒体のレプリケーション管理上の状態が第1の状態では、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備し、
前記制御装置は、
前記第1及び第2の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、
前記キャッシュメモリに記憶されたデータのうち前記第1の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第1の変数と、前記第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、
前記ホスト機器からのスナップショット作成要求に応じて、前記第1の変数を前記第2の変数にコピーし、前記第2の変数へのコピー完了をもって、レプリケーション管理上の状態を、前記第1の状態から前記第1及び第2の記憶媒体が論理的に分離された第2の状態に移行する状態であり、スナップショットが前記第2の記憶媒体のデータとして確定していないことを示す第3の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、
前記第1の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、
前記第1の状態において、前記デステージング制御手段によってデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1及び第2の記憶媒体の双方に書き込むための制御に応じて前記第1の変数を更新し、前記第1の状態以外において、前記デステージング制御手段によってデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1の記憶媒体に、前記第2の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第2の記憶媒体に、それぞれ書き込むための制御に応じて前記第1及び第2の変数を更新する書き込み制御手段とを含む
ことを特徴とするデータ記憶装置。
【請求項2】
前記書き込み制御手段は、前記ホスト機器からの前記第1の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたアクセス範囲が前記第2の変数の示す範囲と重複しているかを判定し、重複している場合、その重複している範囲のデータを前記第2の記憶媒体に書き込むための制御を行い、当該書き込み制御に応じて前記第2の変数を更新することを特徴とする請求項1記載のデータ記憶装置。
【請求項3】
第1の記憶媒体及び第2の記憶媒体と、
ホスト機器と前記第1及び第2の記憶媒体との間に介在し、前記第1及び第2の記憶媒体のレプリケーション管理上の状態が第1の状態では、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備し、
前記制御装置は、
前記第1及び第2の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、
前記キャッシュメモリに記憶されたデータのうち前記第1の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第1の変数と、前記第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、
前記ホスト機器からのスナップショット作成要求に応じて、前記レプリケーション管理上の状態を、前記第1の状態から前記第1及び第2の記憶媒体とが論理的に分離された第2の状態に移行する状態であり、スナップショットが前記第2の記憶媒体のデータとして確定していないことを示す第3の状態に遷移させ、当該第3の状態への遷移をもって前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、
前記第1の記憶媒体または前記第2の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、
前記第1の状態における前記ホスト機器からの前記第1の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第1及び第2の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第1及び第2の変数を更新する書き込み制御手段であって、前記デステージング制御手段によって、前記第1の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1の記憶媒体に、前記第2の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第2の記憶媒体に、それぞれ書き込むための制御を行い、当該書き込み制御に応じて前記第1及び第2の変数を更新する書き込み制御手段とを含む
ことを特徴とするデータ記憶装置。
【請求項4】
前記書き込み制御手段は、前記第3の状態における前記ホスト機器からの前記第1の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたアクセス範囲が前記第2の変数の示す範囲と重複しているかを判定し、
重複している場合、その重複している範囲のデータを前記第2の記憶媒体に書き込むための制御を行い、当該書き込み制御に応じて前記第2の変数を更新する一方、重複の有無に無関係に当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第1の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第1の変数を更新し、前記第2の状態における前記ホスト機器からの前記第1の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第1の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第1の変数を更新することを特徴とする請求項4記載のデータ記憶装置。
【請求項5】
第1の記憶媒体及び第2の記憶媒体と、ホスト機器と前記第1及び第2の記憶媒体との間に介在し、前記第1及び第2の記憶媒体のレプリケーション管理上の状態が第1の状態では、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置であって、キャッシュメモリと、前記キャッシュメモリに記憶されたデータのうち前記第1の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第1の変数と、前記第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、前記第1の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、スナップショット作成手段と、書き込み制御手段とを含む制御装置とを備えたデータ記憶装置に適用される筐体内レプリケーション方法において、
前記ホスト機器からのスナップショット作成要求に応じて、前記レプリケーション管理上の状態を、前記第1の状態から、前記第1の記憶媒体と前記第2の記憶媒体とが論理的に分離された第2の状態に変更するに際し、前記スナップショット作成手段が、前記第1の変数を前記第2の変数にコピーするステップと、
前記コピーするステップの完了をもって、前記スナップショット作成手段が、前記レプリケーション管理上の状態を、前記第1の状態から前記第2の状態に移行する状態であり、スナップショットが前記第2の記憶媒体のデータとして確定していないことを示す第3の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するステップと、
前記第1の状態において、前記デステージング制御手段によって前記デステージングが指定された場合、前記書き込み制御手段が、前記第1の変数で指定される範囲のデータを前記第1及び第2の記憶媒体の双方に書き込むための制御を行い、当該書き込み制御に応じて前記第1の変数を更新するステップと、
前記第1の状態以外において、前記デステージング制御手段によって前記デステージングが指定された場合、前記書き込み制御手段が、前記第1の変数で指定される範囲のデータを前記第1の記憶媒体に、前記第2の変数で指定される範囲のデータを前記第2の記憶媒体に、それぞれ書き込むための制御を行い、当該書き込み制御に応じて前記第1及び第2の変数を更新するステップと
を具備することを特徴とする筐体内レプリケーション方法。
【請求項1】
第1の記憶媒体及び第2の記憶媒体と、
ホスト機器と前記第1及び第2の記憶媒体との間に介在し、前記第1及び第2の記憶媒体のレプリケーション管理上の状態が第1の状態では、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備し、
前記制御装置は、
前記第1及び第2の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、
前記キャッシュメモリに記憶されたデータのうち前記第1の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第1の変数と、前記第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、
前記ホスト機器からのスナップショット作成要求に応じて、前記第1の変数を前記第2の変数にコピーし、前記第2の変数へのコピー完了をもって、レプリケーション管理上の状態を、前記第1の状態から前記第1及び第2の記憶媒体が論理的に分離された第2の状態に移行する状態であり、スナップショットが前記第2の記憶媒体のデータとして確定していないことを示す第3の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、
前記第1の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、
前記第1の状態において、前記デステージング制御手段によってデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1及び第2の記憶媒体の双方に書き込むための制御に応じて前記第1の変数を更新し、前記第1の状態以外において、前記デステージング制御手段によってデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1の記憶媒体に、前記第2の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第2の記憶媒体に、それぞれ書き込むための制御に応じて前記第1及び第2の変数を更新する書き込み制御手段とを含む
ことを特徴とするデータ記憶装置。
【請求項2】
前記書き込み制御手段は、前記ホスト機器からの前記第1の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたアクセス範囲が前記第2の変数の示す範囲と重複しているかを判定し、重複している場合、その重複している範囲のデータを前記第2の記憶媒体に書き込むための制御を行い、当該書き込み制御に応じて前記第2の変数を更新することを特徴とする請求項1記載のデータ記憶装置。
【請求項3】
第1の記憶媒体及び第2の記憶媒体と、
ホスト機器と前記第1及び第2の記憶媒体との間に介在し、前記第1及び第2の記憶媒体のレプリケーション管理上の状態が第1の状態では、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置とを具備し、
前記制御装置は、
前記第1及び第2の記憶媒体に対して読出しまたは書き込みされるデータを記憶するキャッシュメモリと、
前記キャッシュメモリに記憶されたデータのうち前記第1の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第1の変数と、前記第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、
前記ホスト機器からのスナップショット作成要求に応じて、前記レプリケーション管理上の状態を、前記第1の状態から前記第1及び第2の記憶媒体とが論理的に分離された第2の状態に移行する状態であり、スナップショットが前記第2の記憶媒体のデータとして確定していないことを示す第3の状態に遷移させ、当該第3の状態への遷移をもって前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するスナップショット作成手段と、
前記第1の記憶媒体または前記第2の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、
前記第1の状態における前記ホスト機器からの前記第1の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第1及び第2の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第1及び第2の変数を更新する書き込み制御手段であって、前記デステージング制御手段によって、前記第1の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングが指定された場合、前記第1の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第1の記憶媒体に、前記第2の変数で指定される範囲の前記キャッシュメモリ上のデータを前記第2の記憶媒体に、それぞれ書き込むための制御を行い、当該書き込み制御に応じて前記第1及び第2の変数を更新する書き込み制御手段とを含む
ことを特徴とするデータ記憶装置。
【請求項4】
前記書き込み制御手段は、前記第3の状態における前記ホスト機器からの前記第1の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたアクセス範囲が前記第2の変数の示す範囲と重複しているかを判定し、
重複している場合、その重複している範囲のデータを前記第2の記憶媒体に書き込むための制御を行い、当該書き込み制御に応じて前記第2の変数を更新する一方、重複の有無に無関係に当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第1の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第1の変数を更新し、前記第2の状態における前記ホスト機器からの前記第1の記憶媒体に対するデータ書き込み要求に応じ、当該データ書き込み要求で指定されたデータを前記キャッシュメモリに記憶すると共に、前記第1の変数の示す範囲に当該データ書き込み要求で指定されたアクセス範囲が含まれるように前記第1の変数を更新することを特徴とする請求項4記載のデータ記憶装置。
【請求項5】
第1の記憶媒体及び第2の記憶媒体と、ホスト機器と前記第1及び第2の記憶媒体との間に介在し、前記第1及び第2の記憶媒体のレプリケーション管理上の状態が第1の状態では、前記第1及び第2の記憶媒体を、前記第1の記憶媒体に記憶されているデータの複製が前記第2の記憶媒体に保存されるミラーとして運用するための制御を行う制御装置であって、キャッシュメモリと、前記キャッシュメモリに記憶されたデータのうち前記第1の記憶媒体に対して書き込みが実施されていないダーティデータの範囲を示す第1の変数と、前記第2の記憶媒体に書き込まれるべきデータであるスナップデータの範囲を示す第2の変数とを含む、前記キャッシュメモリに記憶されたデータを管理するためキャッシュ管理用データを記憶する記憶手段と、前記第1の記憶媒体に対して書き込みが実施されていない前記キャッシュメモリ上のデータを対象とするデステージングを制御するデステージング制御手段と、スナップショット作成手段と、書き込み制御手段とを含む制御装置とを備えたデータ記憶装置に適用される筐体内レプリケーション方法において、
前記ホスト機器からのスナップショット作成要求に応じて、前記レプリケーション管理上の状態を、前記第1の状態から、前記第1の記憶媒体と前記第2の記憶媒体とが論理的に分離された第2の状態に変更するに際し、前記スナップショット作成手段が、前記第1の変数を前記第2の変数にコピーするステップと、
前記コピーするステップの完了をもって、前記スナップショット作成手段が、前記レプリケーション管理上の状態を、前記第1の状態から前記第2の状態に移行する状態であり、スナップショットが前記第2の記憶媒体のデータとして確定していないことを示す第3の状態に遷移させると共に、前記スナップショット作成要求に対するスナップショット作成の完了を前記ホスト機器に通知するステップと、
前記第1の状態において、前記デステージング制御手段によって前記デステージングが指定された場合、前記書き込み制御手段が、前記第1の変数で指定される範囲のデータを前記第1及び第2の記憶媒体の双方に書き込むための制御を行い、当該書き込み制御に応じて前記第1の変数を更新するステップと、
前記第1の状態以外において、前記デステージング制御手段によって前記デステージングが指定された場合、前記書き込み制御手段が、前記第1の変数で指定される範囲のデータを前記第1の記憶媒体に、前記第2の変数で指定される範囲のデータを前記第2の記憶媒体に、それぞれ書き込むための制御を行い、当該書き込み制御に応じて前記第1及び第2の変数を更新するステップと
を具備することを特徴とする筐体内レプリケーション方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2010−122761(P2010−122761A)
【公開日】平成22年6月3日(2010.6.3)
【国際特許分類】
【出願番号】特願2008−293737(P2008−293737)
【出願日】平成20年11月17日(2008.11.17)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】
【公開日】平成22年6月3日(2010.6.3)
【国際特許分類】
【出願日】平成20年11月17日(2008.11.17)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】
[ Back to top ]