本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
なお、以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
また、以下の説明では、種々の対象(例えば、ボリューム、チャンク、ページ等)の識別情報の種類として、番号が採用されるが、他種の識別情報が採用されても良い。
また、以下の説明において、後述するコントローラが行う処理の少なくとも一部が、プロセッサ(例えばCPU(Central Processing Unit))がコンピュータプログラムを実行することによって行われる。プロセッサは、CPUそれ自体であっても良いし、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから各コントローラにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
まず、本発明の一実施形態について説明する。
図1は、本発明の一実施形態に係る計算機システムの全体構成図である。
計算機システムは、ストレージシステムの一例としてのストレージ装置1と、ホスト計算機(以下、単に「ホスト」ということもある)2と、管理端末3とを有する。ストレージ装置1、ホスト2、管理端末3の数は、1以上とすることができる。ストレージ装置1と、ホスト2とは、通信ネットワーク(例えば、SAN(Storage Area Network))5を介して相互に接続されている。また、ストレージシ装置1と、管理端末3は、通信ネットワーク(例えば、LAN(Local Area Network))6を介して相互に接続されている。ストレージ装置1は、ホスト2で利用されるデータを記憶する。ホスト2は、各種処理を実行し、ストレージ装置1からデータを読み出したり、ストレージ装置1へデータを書き込んだりする。管理端末3は、図示しないCPUが管理プログラム31を実行することにより各種処理を行う。管理端末3は、表示装置を有し、その表示装置にストレージ装置1の管理用の画面を表示することができる。管理端末3は、管理操作リクエストをユーザー(例えば、管理端末3のオペレーター)から受け付け、管理操作リクエストをストレージ装置1に対して送信する。
ストレージ装置1は、コントローラ11と、複数のディスク装置12とを有する。各コントローラ11は、図示しない内部バスを介して各ディスク装置12に接続されている。また、本実施形態では、複数のディスク装置12に基づく記憶領域(以下、プール)14が形成されている。
ディスク装置12は、ディスク型の記憶メディアのドライブであり、ホスト2からライト要求されたデータを記憶する。ストレージ装置1においては、ディスク装置12に加えて、又は、ディスク装置12に代えて、他種の記憶メディアを有する記憶デバイス(例えばフラッシュメモリドライブ)を備えても良い。
図2は、本発明の一実施形態に係る正ボリュームと副ボリュームとの関係を説明する図である。
正ボリューム(PVOL)301は、ホスト2が処理に利用するデータを書き込むボリュームである。PVOL301は、複数のディスク装置12で構成されたRAIDグループ(所定のRAID(Redundant Array of Independent (or Inexpensive) Disks)レベルでデータを記憶するディスク装置群)に基づく実体的な論理ボリュームであっても良いし、RAIDグループに基づかない仮想的な論理ボリューム(例えば、シンプロビジョニングに従うボリューム、或いは、外部のストレージ装置の記憶資源(例えば論理ボリューム)がマッピングされたボリューム)であっても良い。一方、各副ボリューム(SVOL)15は、PVOL105に対するスナップショット取得時点におけるスナップショットイメージを記憶するボリュームである。SVOL15は、仮想的な論理ボリュームであり、SVOL15が記憶するデータは、実際には、PVOL301又はプール14に記憶されている。本実施形態においては、SVOL15は、世代番号(世代#)により、そのスナップショットの取得時点を表すようにしており、古いものから順に、世代#1、世代#2、世代#3・・・となっている(つまり、旧い世代ほど世代番号が若い)。
世代#1のSVOL15内の領域R2と、世代#2のSVOL15内の領域R3は、PVOL内の領域R1を参照するように設定される。世代#3のSVOL15内の領域R4は、世代#2と世代#3の間に更新された領域(PVOL301内の領域)から退避されたデータを記憶している、プール14内の領域R5を参照するように設定される。また、世代#1と世代#2の間に更新され世代#2と世代#3の間に更新されなかった領域(PVOL301における領域)に対応する、世代#2のSVOL15内の領域R7、及び、世代#3のSVOL15内の領域R8ついては、世代#1と世代#2の間に更新された領域(PVOL301における領域)から退避されたデータを記憶している、プール14内の領域R6を参照するように設定される。
図3は、本発明の一実施形態に係るストレージ装置におけるデータ管理処理の一部の概要を説明する図である。
コントローラ11は、PVOL301を指定したライト(WR)要求(ライト要求)をホスト2から受領した時に、CAW(Copy after write)実行の可否を判断する(図中(1))。コントローラ11は、PVOL301内の書き込み先の領域(スロット)からデータを未退避であって、キャッシュ領域121に確保されたキャッシュサブ領域(以下、「確保領域」と言うことがある)がホストダーティでない場合には(PVOL301に格納されていないデータを記憶している確保領域でない場合には)、PVOL301内のライト先領域について、CAW属性をONにし、世代#として、最新世代番号(最新世代#)+1(つまり最新世代番号に1を加算した値)を登録する(図中(2))。ここで、CAW属性のONは、CAWを実行すべきことを意味し、CAW属性のOFFは、CAWを実行しないことを意味する。スロットとは、キャッシュ領域121における管理単位である所定の容量単位の領域である。スロットサイズは、例えば、ホスト2からのライト要求時のライトデータのサイズよりも大きくてもよい。なお、本実施形態では、PVOLがスロットと同じサイズの領域に分割して管理されており、PVOLにおける分割された領域もスロットと言うこととする。
次いで、コントローラ11は、ライト要求に従うライト対象のデータ(WRデータ:ライトデータ)をホスト2から受けとって、確保領域におけるライト面(W面)(ボリュームに書き込むデータを記憶する領域)にライトデータを書き込む。次いで、コントローラ11は、ホスト2にライト要求に対するレスポンスを送信する(図中(4))。
これとは、非同期で(バックエンドで)、コントローラ11は、PVOL301内のライト先領域についてのCAW属性を検出する(図中(5))。コントローラ11は、CAW属性がONの場合には、確保領域におけるリード面(R面)(ボリュームから読み出されたデータを記憶する領域)に、その確保領域におけるW面が記憶するデータのライト先領域(PVOL内の領域(スロット))の更新前のデータがキャッシュされているかを判定する。コントローラ11は、キャッシュミスの場合には、ステージング、すなわち、PVOL301内のライト先領域からデータを確保領域内のR面に読み出す(図中(6))。次いで、コントローラ11は、ライト先領域(PVOL301内の領域)に対応する、SVOL15内の領域に、プール14から領域(ページ)を割り当て(図中(7))、当該ページに、R面に読み出したデータを退避する(図中(8))。ここで、ページとは、プール14において割り当てを行う単位領域をいう。ページのサイズは、例えば、スロットと同じサイズでよい。
図4は、本発明の一実施形態に係るコントローラの構成図である。
コントローラ11は、メモリ111と、CPU112と、上位インターフェース(上位I/F)113と、下位インターフェース(下位I/F)114と、インターフェース(I/F)115と、ブリッジ116とを有する。ブリッジ116は、メモリ111と、CPU112と、上位I/F113と、下位I/F114と、I/F115とを相互に通信可能に接続する。
メモリ111は、制御に必要なデータ及びプログラムを記憶する。具体的には、メモリ111は、世代管理プログラム117と、プール管理プログラム118と、コピー処理プログラム119と、I/O処理プログラム120とを記憶する。世代管理プログラム117は、ペア情報管理テーブル1171と、差分領域管理テーブル1172とを管理し、スナップショットの管理処理を実行する。プール管理プログラム118は、アドレス管理テーブル1181と、ページ管理テーブル1182とを管理し、プール14の管理処理を実行する。コピー処理プログラム119は、データのコピー処理を実行する。I/O処理プログラム120は、他のプログラムを適宜呼び出して、データの入出力処理を実行する。
また、メモリ111は、キャッシュメモリで構成されるキャッシュ領域121を有する。キャッシュ領域121は、例えば、SRAMやEEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性メモリ、あるいは、バッテリーバックアップされたDRAM等で構成され、ストレージ装置1がシャットダウン状態であっても揮発させないようにするデータを格納する。
CPU112は、メモリ111に格納されたプログラムを実行することにより、各部を制御して各種処理を実行する。上位I/F113は、ホスト2との通信を仲介する。上位I/F113は、例えば、Fibre Channel(FC),iSCSI等であってもよい。下位I/F114は、ディスク装置12との通信を仲介する。下位I/F114は、例えば、FC、SAS、SATA等のディスクI/Fである。I/F115は、管理端末3との通信を仲介する。
図5は、本発明の一実施形態に係るペア情報管理テーブルを説明する図である。なお、以下の説明では、適宜、論理ボリュームを「VOL」と記載する。
ペア情報管理テーブル1171は、PVOL番号(PVOL#)と、最新世代番号(最新世代#)と、ペアIDと、SVOL番号(SVOL#)と、世代番号(世代#)と、ステータスとを対応付けたレコードを管理する。
PVOL#は、コピー元となるボリューム(PVOL)をストレージ装置1内で一意に特定する番号である。最新世代#は、対応するPVOLにおける最新のスナップショットの世代番号である。ペアIDは、PVOLとSVOLとのペア(コピーペア)を一意に特定する番号である。SVOL#は、コピー先となるボリューム(SVOL)をストレージ装置1内で一意に特定する番号である。世代#は、対応するSVOLが格納するスナップショットの世代番号である。ステータスは、対応するコピーペアの状態である。ステータスとしては、スナップショットを保持している状態を示すSnapshot保持と、Snapshotを取得していない状態を示すSnapshot未取得と、対応するSVOLからのリストアを実行している状態を示すリストア中がある。ここで、「リストア」とは、SVOLに退避されているスナップショットのデータをPVOLに反映させることである。
例えば、同図における一番上のレコードは、VOL#0のVOLがPVOLであり、その最新世代番号は、3であり、VOL#6のSVOLと、コピーペアが構成され、そのペアIDが0であり、このSVOLは、世代番号が1であり、スナップショットを保持していることを示している。
図6は、本発明の一実施形態に係る差分領域管理テーブルを説明する図である。
差分領域管理テーブル1172は、PVOL番号(PVOL#)と、領域IDと、退避状態と、リストア状態と、CAW属性と、世代番号(世代#)とを対応付けたレコードを管理する。
PVOL#は、コピー元となるVOL(PVOL)をストレージ装置1内で一意に特定する番号である。領域IDは、領域特定情報の一例であり、VOLにおいて区分されている領域(スロット)を特定する番号である。退避状態は、PVOLにおける領域に書き込まれるデータがプール14に退避されているか否かを示す情報である。退避状態としては、例えば、データを退避していることを示す「退避済み」と、データを退避していないことを示す「未退避」とがある。リストア状態は、リストアが実行された際のリストアの状態を示す情報である。リストア状態としては、リストアが実行された場合には、リストアが済んでいることを示す「済み」が設定され、リストアが実行されていない場合には、「未」が設定される。CAW属性は、当該領域についてCAWを実行する必要がある場合、すなわち、対応するPVOLの領域からデータを退避させるコピーを実行する必要がある場合には、「ON」が設定され、CAWを実行する必要がない場合、すなわち、PVOLの領域からデータを退避させる必要がない場合には、「OFF」が設定される。世代#は、該当する領域に書き込むべきデータ(キャッシュ領域121内のデータ(データ要素))に対応するスナップショットの世代番号である。本実施形態では、最新のスナップショット取得時点以降に書き込まれたデータ要素の世代#としては、書き込まれた時点のスナップショットの最新世代#+1が設定される。ここで、この世代番号が、PVOLに対するスナップショット取得時点との時間的関係を示す時間関係情報の一例である。なお、世代#に代えて、スナップショット取得時間が管理されてもよく、要は、データ要素について、各スナップショットの取得時点との一致又は前後等の時間関係を把握できる情報であればよい。
例えば、同図における2番目のレコードは、VOL#が0のVOL内の領域#が1の領域においては、データ要素が未退避であり、リストアは実行されておらず、当該領域に対してデータが書き込まれる場合には、CAWを実行することを示し、当該領域のデータは、スナップショットの世代#は、2であることを示している。
図7は、本発明の一実施形態に係るアドレス管理テーブルを説明する図である。
アドレス管理テーブル1181は、VOL番号(VOL#)と、領域IDと、共有ページIDと、自ページIDとを対応付けたレコードを管理する。
VOL#は、SVOLをストレージ装置1内で一意に特定する番号である。領域IDは、VOLにおいて区分されている領域を特定する番号である。共有ページIDは、当該領域のデータが格納される共有ページを特定する番号である。共有ページは、他のSVOLからも参照される可能性があるページである。自ページIDは、当該領域のデータが格納される自ページを特定する番号である。自ページは、対応するSVOLのみで参照されるページである。具体的には、対応するSVOLが書き込み可能なスナップショットを管理しており、当該SVOLに対して書き込みがあった場合のデータを格納するページである。例えば、同図の一番上のレコードは、VOL#0のVOLの領域#0の領域について、共有ページIDが1であり、自ページIDが10であることを示している。
図8は、本発明の一実施形態に係るプール及びSVOLを説明する図である。
プール14は、複数のディスク装置12により構成されたRAID(Redundant Array of Independent (or Inexpensive) Disksの略))グループ13に基づく記憶領域である。プール14は、複数のチャンク131で構成されており、各チャンク131が、複数のページ132で構成されている。SVOL(仮想ボリューム:VVOL)15に対しては、データが実際に格納される領域に対して、プール14のページ132が割り当てられる。
図9は、本発明の一実施形態に係るページ管理テーブルを説明する図である。
ページ管理テーブル1182は、チャンクIDと、ページIDと、ステータスと、アドレスとを対応付けたレコードを管理する。チャンクIDは、ページ132を含むチャンク131をプール14内で一意に特定する番号である。ページIDは、ページ132をプール14内で一意に特定する番号である。ステータスは、ページ132の状態である。ページの状態としては、例えば、「Allocated」と、「Unallocated」とがある。アドレスは、対応するページを割当ているボリュームのアドレスである。例えば、同図の一番上のレコードは、チャンクID0のチャック131のページID0のページ132は、Vol1のボリュームのアドレス2の領域として割り当てられていることを示している。
次に、ストレージ装置1で行われる動作を説明する。
図10は、本発明の一実施形態に係るPVOLライト処理の第1のフローチャートである。
図10に示すように、PVOLライト処理においては、ストレージ装置1のコントローラ11は、ホスト2からライト要求を受領すると(ステップS1)、ペア情報管理テーブル1171におけるライト要求のライト対象のPVOL#のステータスを参照することにより、ライト要求に対応するPVOLがリストア中であるか否かを判定する(ステップS2)。ここで、ライト要求には、例えば、ライトデータを書き込むPVOLを示すLUN(論理ユニット番号)と、PVOLにおけるライト先領域に属するLBA(論理ブロックアドレス)とが含まれており、LUN及びLBAにより、PVOLのVOL#及びライト先領域の領域IDとを特定することができる。
ステップ2の判定の結果、リストア中である場合(ステップS2でYes)には、コントローラ11は、ポイントP(図15参照)に処理を進める。一方、リストア中でない場合(ステップS2でNo)、又は、ポイントRから進んできた場合には、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト要求のライト対象の領域を含むスロットについてステータスが「Snapshot保持あり」であるか否かを判定する(ステップS3)。
この結果、「スナップショット保持あり」でない場合(ステップS3でNo)には、コントローラ11は、ポイントN(図12参照)に処理を進める。一方、「スナップショット保持あり」である場合(ステップS3でYes)には、コントローラ11は、差分領域管理テーブル1172を参照し、当該スロットが未退避であるか否か、すなわち、当該スロットに書き込むべきキャッシュ領域121のデータ要素が未退避であるか否かを判定する(ステップS4)。この結果、当該スロットが未退避でない場合(ステップS4でNo)には、コントローラ11は、ポイントN(図12参照)に処理を進める。一方、当該スロットが未退避である場合(ステップS4でYes)には、差分領域管理テーブル1172を参照し、当該スロットのCAW属性がONであるか否かを判定する(ステップS5)。
この結果、CAW属性がONではない場合(ステップS5でNo)には、コントローラ11は、キャッシュ領域121のキャッシュ状態がホストダーティであるか、すなわち、当該スロットに対応するキャッシュ領域121のW面に、データがあるか否かを判定し(ステップS6)、ホストダーティでない場合(ステップS6でNo)には、ポイントA(図11参照)に処理を進める一方、ホストダーティである場合(ステップS6でYes)には、ポイントB(図13参照)に処理を進める。
一方、ステップS5の結果、CAW属性がONの場合(ステップS5でYes)には、コントローラ11は、当該領域の世代#が最新世代#より大きいか否かを判定する(ステップS7)。この結果、当該領域の世代#が最新世代#より大きい場合(ステップS7でYes)には、当該領域に書き込むべきキャッシュ領域121のデータは、最新のスナップショットを取得した時点よりも後に更新されたデータであって、スナップショットを構成するデータ(スナップショット構成要素)ではないことを意味しているので、コントローラ11は、処理をポイントN(図12参照)に進める一方、当該領域の世代#が最新世代#以下の場合(ステップS7でNo)には、当該領域に書き込むべきキャッシュ領域121のデータが書き込まれた時点よりも後で、次のスナップショットの取得がされていることを示し、当該キャッシュ領域121のデータは、スナップショット構成要素であることを意味しているので、ポイントC(図14参照)に処理を進める。
図11は、本発明の一実施形態に係るPVOLライト処理の第2のフローチャートである。
ポイントAに処理を進めると、図11に示すように、コントローラ11は、差分領域管理テーブル1172のライト要求に対応する領域のCAW属性をONに設定し(ステップS11)、当該領域の世代#に、ペア情報管理テーブル1171の対応するPVOLの最新世代#に1を加算した値を設定する(ステップS12)。これにより、当該領域に格納すべきキャッシュ領域121のデータが、最新のスナップショット取得時よりも後に更新されたデータであることが把握できるようになる。次いで、コントローラ11は、当該領域に書き込むべきライトデータをメモリ111のキャッシュ領域121に格納し(ステップS13)、ライト要求に対する応答をホスト2に対して送信する(ステップS14)。
図12は、本発明の一実施形態に係るPVOLライト処理の第3のフローチャートである。
ポイントNに処理を進めると、図12に示すように、コントローラ11は、ライトデータをメモリ111のキャッシュ領域121に格納し(ステップS21)、ライト要求に対する応答をホスト2に対して送信する(ステップS22)。これにより、キャッシュ領域121のデータは、新たなライトデータに更新される。
図13は、本発明の一実施形態に係るPVOLライト処理の第4のフローチャートである。
ポイントBに処理を進めると、図13に示すように、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14から領域を割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS31)。すなわち、割り当てたページのステータスを割当済みにするとともに、アドレスに、SVOLの該当する領域のアドレスを設定する。次いで、コントローラ11は、キャッシュ領域121に格納されているPVOLのデータを割り当てられた領域(ページ)にコピーする(ステップS32)。なお、キャッシュ領域121に格納されているデータが、スロットの一部のデータのみである場合には、PVOLの対応するスロットのデータをキャッシュ領域121のR面に読み出し、スロットの足りない部分のデータをR面に読み出したデータで補充した後に、割り当てられたページにコピーする。
次いで、コントローラ11は、差分領域管理テーブル1172の当該領域に対応する退避状態に退避済みを設定し(ステップS33)、ライトデータをメモリ111のキャッシュ領域121に格納し(ステップS34)、ライト要求に対する応答をホスト2に対して送信する(ステップS35)。
図14は、本発明の一実施形態に係るPVOLライト処理の第5のフローチャートである。
ポイントCに処理を進めると、図14に示すように、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、ひとつ前の世代のSVOL、すなわち、当該世代#−1のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS41)。次いで、コントローラ11は、PVOLに格納されている対応する領域のデータ(旧データ:現在よりひとつ前の世代のスナップショットを構成するデータ)を割り当てられたページにコピーし(ステップS42)、差分領域管理テーブル1172の対応する領域のCAW属性をOFFに設定する(ステップS43)。これにより、ひとつ前の世代のスナップショット構成要素を適切にひとつ前の世代のスナップショットイメージを管理するSVOLに退避することができる。また、PVOLの一つの領域のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
次いで、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS44)。次いで、コントローラ11は、キャッシュ領域121に格納されているPVOLに書き込むべきデータ(現在の世代のスナップショット構成要素)を割り当てられたページにコピーし(ステップS45)、差分領域管理テーブル1172の対応する領域の退避状態を退避済みに設定し、世代#を削除する(ステップS46)。これにより、現在の世代のスナップショット構成要素を適切に現在の世代のスナップショットイメージを管理するSVOLに退避することができる。また、PVOLの一つの領域に対応するキャッシュ領域121のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
コントローラ11は、ライトデータをメモリ111のキャッシュ領域121に格納し(ステップS47)、ライト要求に対する応答をホスト2に対して送信する(ステップS48)。この処理によると、PVOLの一つの領域に対応するデータ要素についての退避処理だけであるので、比較的短時間で処理を終えることができ、ホスト2へのライトレスポンスを比較的早くすることができる。
図15は、本発明の一実施形態に係るPVOLライト処理の第6のフローチャートである。
ポイントPに処理を進めると、図15に示すように、コントローラ11は、差分領域管理テーブル1172を参照し、ライト要求に対応するPVOLの領域におけるリストアが未実行であるか否かを判定し(ステップS51)、リストアが実行されて完了している場合(ステップS51でNo)には、ポイントR(図10参照)に処理を進める。一方、リストアが未実行の場合(ステップS51でYes)には、コントローラ11は、差分領域管理テーブル1172を参照し、対応する領域に格納すべきキャッシュ領域121のデータ要素が未退避であるか否かを判定する(ステップS52)。この結果、未退避でない場合(ステップS52でNo)には、ポイントS(図16参照)に進む。一方、対応する領域が未退避である場合(ステップS52でYes)には、差分領域管理テーブル1172を参照し、当該スロットのCAW属性がONであるか否かを判定する(ステップS53)。
この結果、CAW属性がONではない場合(ステップS53でNo)には、コントローラ11は、キャッシュ状態がホストダーティであるか、すなわち、キャッシュ領域121のW面にデータがあるか否かを判定し(ステップS54)、ホストダーティでない場合には、ポイントT(図17参照)に処理を進める(ステップS54でNo)一方、ホストダーティである場合(ステップS54でYes)には、ポイントU(図18参照)に処理を進める。
一方、ステップS53の結果、CAW属性がONの場合(ステップS53でYes)には、コントローラ11は、当該領域の世代#が最新世代#より大きいか否かを判定し(ステップS55)、当該領域の世代#が最新世代#より大きい場合(ステップS55でYes)には、処理をポイントS(図16参照)に進める一方、当該領域の世代#が最新世代#以下の場合(ステップS55でNo)には、ポイントW(図19参照)に処理を進める。
図16は、本発明の一実施形態に係るPVOLライト処理の第7のフローチャートである。
ポイントSに処理を進めると、図16に示すように、コントローラ11は、対応する領域について、SVOLからPVOLへのリストアコピーを実行し(ステップS61)、差分領域管理テーブル1172の対応する領域のリストア状態をリストア済みに設定する(ステップS62)。次いで、コントローラ11は、ライトデータをメモリ111のキャッシュ領域121に格納し(ステップS63)、ライト要求に対する応答をホスト2に対して送信する(ステップS64)。
図17は、本発明の一実施形態に係るPVOLライト処理の第8のフローチャートである。
ポイントTに処理を進めると、図17に示すように、コントローラ11は、差分領域管理テーブル1172のライト要求に対応する領域のCAW属性をONに設定し(ステップS71)、当該領域の世代#に、ペア情報管理テーブル1171の対応するPVOLの最新世代#に1を加算した値を設定する(ステップS72)。これにより、当該領域に格納すべきキャッシュ領域121のデータが、最新のスナップショット取得時よりも後に更新されたデータであることが把握できるようになる。次いで、コントローラ11は、対応する領域について、SVOLからPVOLへのリストアコピーを実行し(ステップS73)、差分領域管理テーブル1172の対応する領域のリストア状態をリストア済みに設定する(ステップS74)。次いで、コントローラ11は、ライトデータをメモリ111のキャッシュ領域121に格納し(ステップS75)、ライト要求に対する応答をホスト2に対して送信する(ステップS76)。
図18は、本発明の一実施形態に係るPVOLライト処理の第9のフローチャートである。
ポイントUに処理を進めると、図18に示すように、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS81)。次いで、コントローラ11は、キャッシュ領域121に格納されているPVOLのデータを割り当てられた領域にコピーする(ステップS82)。なお、キャッシュ領域121に格納されているデータが、スロットの一部のデータのみである場合には、PVOLの対応するスロットのデータをキャッシュ領域のR面に読み出し、スロットの足りない部分のデータをR面に読み出したデータで補充した後に、割り当てられたページにコピーする。次いで、差分領域管理テーブル1172の当該領域に対応する退避状態に退避済みを設定し(ステップS83)、処理をポイントS(図16参照)に進める。
図19は、本発明の一実施形態に係るPVOLライト処理の第10のフローチャートである。
ポイントWに処理を進めると、図19に示すように、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、ひとつ前の世代のSVOL、すなわち、当該世代#−1のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14から領域を割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS91)。次いで、コントローラ11は、PVOLに格納されている対応する領域のデータ(旧データ:現在よりひとつ前の世代のスナップショットのデータ)を割り当てられた領域にコピーし(ステップS92)、差分領域管理テーブル1172の対応する領域のCAW属性をOFFに設定し、世代#を削除する(ステップS93)。これにより、ひとつ前の世代のスナップショット構成要素を適切にひとつ前の世代のスナップショットイメージを管理するSVOLに退避することができる。また、PVOLの一つの領域についての退避処理であるので、比較的短時間で処理を終了することができる。
次いで、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14から領域を割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS94)。次いで、コントローラ11は、キャッシュ領域121に格納されているPVOLに対応する領域のデータ(現在の世代のスナップショットのデータ)を割り当てられた領域にコピーし(ステップS95)、差分領域管理テーブル1172の対応する領域の退避状態を退避済みに設定し(ステップS96)、処理をポイントS(図16参照)に進める。これにより、現在の世代のスナップショット構成要素を適切に現在の世代のスナップショットイメージを管理するSVOLに退避することができる。また、PVOLの一つの領域に対応するキャッシュ領域121のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
図20は、本発明の一実施形態に係るバックエンド処理のフローチャートである。
このバックエンド処理は、例えば、任意のタイミング、例えば、所定の時間毎や、アクセス頻度が低い時間において実行される。コントローラ11は、差分領域管理テーブル1172を参照し、CAW属性がONのPVOLの領域を検出する(ステップS101)。次いで、コントローラ11は、差分領域管理テーブル1172に基づいて、検出した領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#−1のSVOLを特定し、当該SVOLの領域に対してプール14から領域を割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS102)。次いで、コントローラ11は、PVOLに格納されている対応する領域のデータを割り当てられた領域にコピーする(ステップS103)。
次いで、コントローラ11は、当該領域の世代#が最新世代#+1であるか否かを判定し(ステップS104)、当該領域の世代#が最新世代#+1である場合(ステップS104でYes)には、差分領域管理テーブル1172の当該領域に対応する退避状態に、退避済みを設定する(ステップS105)一方当該領域の世代#が最新世代#+1でない場合(ステップS104でNo)には、何もしない。次いで、コントローラ11は、差分領域管理テーブル1172の当該領域に対応するCAW属性をOFFに設定する(ステップS106)。上記処理により、PVOLのCAW属性がONとなっている領域のデータについて、I/Oリクエストと非同期で、SVOLへと退避することができる。また、PVOLの領域のデータをSVOLへと退避することができるので、PVOLライト処理において、ライトデータをキャッシュ領域121に格納する前に、PVOLの領域のデータをSVOLへと退避しなければならない状況、例えば、ステップS7のNoに該当するような状況を低減することができ、ライトレスポンスを向上することができる。
図21は、本発明の一実施形態に係るPVOLリード処理の第1のフローチャートである。
PVOLリード処理においては、コントローラ11は、ホスト2からリード要求を受領すると(ステップS111)、ペア情報管理テーブル1171におけるリード要求のリード対象のPVOLのステータスを参照することにより、リード要求に対応するPVOLがリストア中であるか否かを判定する(ステップS112)。この結果、リストア中でない場合(ステップS112でNo)には、コントローラ11は、対応するPVOLの領域(又は、当該領域のデータを格納するキャッシュ領域121)からデータを読み出す通常リード処理を実行する(ステップS113)。一方、リストア中である場合(ステップS112でYes)には、コントローラ11は、差分領域管理テーブル1172を参照し、リード要求に対応するPVOLのスロットにおけるリストアが未実行であるか否かを判定し(ステップS114)、リストアが完了している場合(ステップS114でNo)には、通常リード処理を実行する(ステップS115)。
一方、リストアが未実行である場合(ステップS114でYes)には、コントローラ11は、差分領域管理テーブル1172を参照し、対応するスロットが未退避であるか否か、すなわち、当該スロットに書き込むべきキャッシュ領域121のデータ要素が未退避であるか否かを判定する(ステップS116)。この結果、未退避でない場合(ステップS116でNo)には、処理をポイントD(図22参照)に進める。一方、未退避である場合(ステップS116でYes)には、差分領域管理テーブル1172を参照し、当該スロットのCAW属性がONであるか否かを判定する(ステップS117)。
この結果、CAW属性がONではない場合(ステップS117でNo)には、コントローラ11は、キャッシュ状態がホストダーティであるか、すなわち、キャッシュ領域121のW面にデータがあるか否かを判定し(ステップS118)、ホストダーティでない場合には、ポイントE(図23参照)に処理を進める(ステップS118でNo)一方、ホストダーティである場合(ステップS118でYes)には、ポイントF(図24参照)に処理を進める。
一方、ステップS117の結果、CAW属性がONの場合(ステップS117でYes)には、当該スロットの世代#が最新世代#より大きいか否かを判定し(ステップS119)、当該スロットの世代#が最新世代#より大きい場合(ステップS119でYes)には、処理をポイントD(図22参照)に進める一方、当該領域の世代#が最新世代#以下の場合(ステップS119でNo)には、ポイントG(図25参照)に処理を進める。
図22は、本発明の一実施形態に係るPVOLリード処理の第2のフローチャートである。
ポイントDに処理を進めると、図22に示すように、コントローラ11は、対応するスロットについて、SVOLからPVOLへのリストアコピーを実行し(ステップS121)、差分領域管理テーブル1172の対応するスロットのリストア状態をリストア済みに設定する(ステップS122)。次いで、コントローラ11は、PVOLの対応する領域を読み出してホスト2へ送信する(ステップS123)。
図23は、本発明の一実施形態に係るPVOLリード処理の第3のフローチャートである。
ポイントEに処理を進めると、図23に示すように、コントローラ11は、差分領域管理テーブル1172のリード要求に対応する領域を含むスロットのCAW属性をONに設定し(ステップS131)、当該領域の世代#に、ペア情報管理テーブル1171の対応するPVOLの最新世代#に1を加算した値を設定する(ステップS132)。次いで、コントローラ11は、対応する領域について、SVOLからPVOLへのリストアコピーを実行し(ステップS133)、差分領域管理テーブル1172の対応する領域のリストア状態をリストア済みに設定する(ステップS134)。次いで、コントローラ11は、PVOLの対応する領域を読み出してホスト2へ送信する(ステップS135)。
図24は、本発明の一実施形態に係るPVOLリード処理の第4のフローチャートである。
ポイントFに処理を進めると、図24に示すように、コントローラ11は、差分領域管理テーブル1172に基づいて、リード対象のPVOLの領域を含むスロットに対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#のSVOLを特定し、リード対象の領域に対応する当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS141)。次いで、コントローラ11は、キャッシュ領域121に格納されているPVOLに書き込むべきデータを割り当てられたページにコピーする(ステップS142)。なお、キャッシュ領域121に格納されているデータが、スロットの一部のデータのみである場合には、PVOLの対応するスロットのデータをキャッシュ領域のR面に読み出し、スロットの足りない部分のデータをR面に読み出したデータで補充した後に、割り当てられたページにコピーする。次いで、差分領域管理テーブル1172の当該スロットに対応する退避状態に退避済みを設定し(ステップS143)、処理をポイントD(図22参照)に進める。
図25は、本発明の一実施形態に係るPVOLリード処理の第5のフローチャートである。
ポイントGに処理を進めると、図25に示すように、コントローラ11は、差分領域管理テーブル1172に基づいて、リード対象のPVOLの領域を含むスロットに対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、ひとつ前の世代のSVOL、すなわち、当該世代#−1のSVOLを特定し、リード対象の領域に対応する当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS151)。次いで、コントローラ11は、PVOLに格納されている対応する領域のデータ(旧データ:現在よりひとつ前の世代のスナップショットを構成するデータ)を割り当てられた領域にコピーし(ステップS152)、差分領域管理テーブル1172の対応する領域のCAW属性をOFFに設定する(ステップS153)。これにより、ひとつ前の世代のスナップショット構成要素を適切にひとつ前の世代のスナップショットイメージを管理するSVOLに退避することができる。また、PVOLの一つの領域のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
次いで、コントローラ11は、差分領域管理テーブル1172に基づいて、リード対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#のSVOLを特定し、リード対象の領域に対応する当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS154)。次いで、コントローラ11は、キャッシュ領域121に格納されているPVOLに対応する領域のデータ(現在の世代のスナップショット構成要素)を割り当てられたページにコピーし(ステップS155)、差分領域管理テーブル1172の対応する領域の退避状態を退避済みに設定し(ステップS156)、処理をポイントD(図22参照)に進める。これにより、現在の世代のスナップショット構成要素を適切に現在の世代のスナップショットイメージを管理するSVOLに退避することができる。また、PVOLの一つの領域に対応するキャッシュ領域121のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
図26は、本発明の一実施形態に係るSVOLリード処理のフローチャートである。
SVOLリード処理においては、コントローラ11は、ホスト2からリード要求を受領すると(ステップS201)、アドレス管理テーブル1181を参照することにより、リード要求に対応するSVOLの領域(ページ)がPVOLを参照しているかを判定する(ステップS202)。この結果、PVOLを参照していない場合(ステップS202でNo)には、SVOLに対応付けられているページからデータを読み出し(リード)し、ホスト2にデータを送信する(ステップS203)。
一方、PVOLを参照している場合(ステップS202でYes)には、コントローラ11は、差分領域管理テーブル1172を参照し、SVOLの当該領域に対応するPVOLのスロットのCAW属性がONであるか否かを判定する(ステップS204)。この結果、CAW属性がONではない場合(ステップS204でNo)には、コントローラ11は、対応するPVOLの対応するスロットからデータをリードし、ホスト2にデータを送信する(ステップS205)。
一方、CAW属性がONの場合(ステップS204でYes)には、コントローラ11は、当該スロットの世代#が当該SVOLの世代#より大きいか否かを判定し(ステップS206)、当該スロットの世代#が当該SVOLの世代#以下の場合(ステップS206でNo)には、キャッシュ領域121に格納されているデータがSVOLのスナップショットの取得時以前のデータ要素であるので、PVOLの領域に対応するキャッシュ領域121からデータをリードし、ホスト2にデータを送信する(ステップS207)。
一方、当該スロットの世代#が当該SVOLの世代#より大きい場合(ステップS206でYes)には、キャッシュ領域121に格納されているデータがSVOLのスナップショットの取得時よりも後のデータ要素であるので、コントローラ11は、当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS208)。次いで、コントローラ11は、PVOLに格納されている対応する領域のデータ(旧データ:現在よりひとつ前の世代のスナップショットを構成するデータ)を割り当てられた領域にコピーし(ステップS209)、差分領域管理テーブル1172の対応する領域のCAW属性をOFFに設定し(ステップS210)、リード対象のSVOLの領域に対応付けられているページからデータを読み出し(リード)し、ホスト2にデータを送信する(ステップS211)。
図27は、本発明の一実施形態に係るSVOLライト処理の第1のフローチャートである。
SVOLライト処理においては、コントローラ11は、ホスト2からライト要求を受領すると(ステップS221)、ペア情報管理テーブル1171におけるライト要求のライト対象のSVOLに対応付けられたステータスを参照することにより、ライト対象のSVOLがリストア中であるか否かを判定する(ステップS222)。この結果、リストア中である場合(ステップS222でYes)には、コントローラ11は、ライトを実行しない(ステップS223)。
一方、リストア中でない場合(ステップS222でNo)には、コントローラ11は、アドレス管理テーブル1181を参照することにより、ライト要求に対応するSVOLの領域がPVOLを参照しているかを判定する(ステップS224)。この結果、PVOLを参照していない場合(ステップS224でNo)には、コントローラ11は、処理をポイントH(図28参照)に進める。
一方、PVOLを参照している場合(ステップS224でYes)には、コントローラ11は、差分領域管理テーブル1172を参照し、当該スロットのCAW属性がONであるか否かを判定する(ステップS225)。この結果、CAW属性がONではない場合(ステップS225でNo)には、コントローラ11は、処理をポイントI(図29参照)に進める。
一方、CAW属性がONの場合(ステップS225でYes)には、コントローラ11は、当該スロットの世代#が当該SVOLの世代#より大きいか否かを判定し(ステップS226)、当該スロットの世代#が当該SVOLの世代#以下の場合(ステップS226でNo)には、処理をポイントI(図29参照)に進める。
一方、当該領域の世代#が当該SVOLの世代#より大きい場合(ステップS226でYes)には、コントローラ11は、ライト対象の領域に対応する当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS227)。次いで、コントローラ11は、対応するPVOLの対応する領域のデータ(旧データ:現在よりひとつ前の世代のスナップショットを構成するデータ)を割り当てられた領域にコピーし(ステップS228)、差分領域管理テーブル1172の対応する領域のCAW属性をOFFに設定し(ステップS229)、ライト対象のSVOLの領域に対応付けられているページにライトデータを書き込み(ライトし)し、ホスト2に応答を送信する(ステップS230)。
図28は、本発明の一実施形態に係るSVOLライト処理の第2のフローチャートである。
ポイントHに処理を進めると、図28に示すように、コントローラ11は、アドレス管理テーブル1181を参照し、ライト対象のSVOLの領域に対して、自ページはあるか否かを判定し(ステップS231)、自ページがある場合(ステップS231でYes)には、ライトデータを自ページに書き込み、ホスト2に応答を送信する(ステップS232)。
一方、自ページがない場合(ステップS231でNo)には、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のSVOLの領域に対してプール14からページを自ページとして割り当て、アドレス管理テーブル1181を割り当てに従って更新し(ステップS233)、対応する領域の共有ページのデータを、割り当てられたページにコピーする(ステップS234)。次いで、コントローラ11は、ライト対象のデータを自ページにコピーし、ホスト2に応答を送信する(ステップS235)。
図29は、本発明の一実施形態に係るSVOLライト処理の第3のフローチャートである。
ポイントIに処理を進めると、図29に示すように、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のSVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS241)。次いで、コントローラ11は、SVOLの領域に対応するキャッシュ領域121のPVOLのデータ(現在の世代のスナップショットを構成するデータ)を割り当てられた領域にコピーし(ステップS242)、差分領域管理テーブル1172の対応する領域の退避状態を退避済みに設定し(ステップS243)、当該ページにライトデータを書き込み、ホスト2に応答を送信する(ステップS244)。
図30は、本発明の一実施形態に係るスナップショット取得処理のフローチャートである。
スナップショット取得処理は、例えば、予め設定された時刻や、ホスト2等からスナップショット取得要求があった場合に実行される。
コントローラ11は、ペア情報管理テーブル1171において、スナップショット取得対象のPVOLの次のスナップショットの管理用のSVOLに対応するステータスをSnapshot保持に設定し(ステップS251)、対応する最新世代#をカウントアップし(ステップS252)、当該SVOLの世代#に最新世代#を設定する(ステップS253)。このように、本実施形態においては、次のスナップショットの取得処理においては、PVOLの領域のデータを退避等する処理を行う必要がなく、短時間でPVOLに対するアクセスを行うことができる。
図31は、本発明の一実施形態に係るスナップショット削除処理のフローチャートである。
スナップショット削除処理は、例えば、ホスト2等からスナップショット削除要求があった場合に実行される。
コントローラ11は、差分領域管理テーブル1172から、スナップショット削除対象となるSVOLに対応するPVOLについてのCAW属性がONの領域を検出し(ステップS261)、当該CAW属性がONの領域に対して、必要に応じて退避コピーを実行する(ステップS262)。具体的には、削除するSVOLが記憶している領域であって、他のスナップショットにより参照されている領域のデータについては、参照しているSVOLの領域に退避コピーをする。
次いで、コントローラ11はPVOLの退避した領域について、差分領域管理テーブル1172のCAW属性をOFFに設定し(ステップS263)、ペア情報管理テーブル1171の対応するSVOLのステータスをSnapshot未取得に設定する(ステップS264)。
以上説明したように、本発明の一実施形態に係る計算機システムによると、アクセスレスポンスを維持しつつ、次のスナップショットの取得時の処理を短時間化することができる。
次に、本発明の変形例に係る計算機システムを説明する。変形例に係る計算機システムは、上記実施形態に係る計算機システムのストレージ装置1において、キャッシュ領域121にライトデータを一時的に記憶する領域(テンポラリ領域)をさらに設けるようにしたものである。
図32は、本発明の変形例に係るPVOLライト処理の一部の概要を説明する図である。
ストレージ装置1は、ホスト2からライト(WR)要求を受領した時に、CAW実行の可否を判断する(図中(1))。「スナップショット保持あり」であって、対応する領域のデータが未退避である場合には、ライト対象のデータ(WRデータ)を受けとって、キャッシュ領域121のテンポラリ領域121tに書き込む(図中(2))。次いで、ホスト2にライト要求に対するレスポンスを行う(図中(3))。これにより、ホスト2に対するライトレスポンスを向上することができる。
次いで、これとは、非同期で、バックエンド処理を実行し、PVOLの領域に対するCAW属性を検出し(図中(5))。CAW属性がONの場合には、キャッシュ領域のリード面(R面)に先にライト対象の領域の更新前のデータがキャッシュされているかを判定し、キャッシュミスの場合には、PVOLの対応する領域を含むスロットをステージングする、すなわち、キャッシュ領域121のR面に読み出す(図中(4))。次いで、SVOLの対応する領域としてプール14から領域(ページ)を割り当て(図中(5))、当該領域に、キャッシュ領域121のR面に読み出したデータを退避コピーする(図中(6))。次いで、キャッシュ領域121のテンポラリ領域121tに格納したライトデータをPVOLの対応する領域のキャッシュ領域121に反映させ(図中(7))、差分領域管理テーブル1172の領域の退避状態として退避済みを設定する(図中(8))。
次に、変形例に係るストレージ装置の動作を説明する。
図33は、本発明の変形例に係るPVOLライト処理の第1のフローチャートである。なお、上記実施形態と同様なステップについては、同一の符号を付すこととし、以下に、変形例に係るPVOLライト処理について、実施形態に係るPVOLライト処理との差異を中心に説明する。
本変形例に係るPVOLライト処理においては、ステップS6において、コントローラ11が、キャッシュ状態がホストダーティであるか否かを判定した場合に、キャッシュ状態がホストダーティでない場合(ステップS6でNo)には、ポイントX(図34参照)に処理を進める。
また、ステップS7において、コントローラ11が当該領域の世代#が最新世代#より大きいか否かを判定した場合において、当該領域の世代#が最新世代#以下の場合(ステップS7でNo)には、ポイントY(図35参照)に処理を進める。
図34は、本発明の変形例に係るPVOLライト処理の第2のフローチャートである。
ポイントXに処理を進めると、図34に示すように、コントローラ11は、ライトデータをキャッシュ領域121のテンポラリ領域121tに格納し(ステップS301)、ライト要求に対する応答をホスト2に対して送信する(ステップS302)。これにより、ホスト2に対するライトレスポンスを向上することができる。
次いで、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14から領域を割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS303)。次いで、コントローラ11は、キャッシュ領域121に格納されているPVOLのデータを割り当てられた領域にコピーする(ステップS304)。なお、キャッシュ領域121に格納されているデータが、スロットの一部のデータのみである場合には、PVOLの対応するスロットのデータをキャッシュ領域のR面に読み出し、スロットの足りない部分のデータをR面に読み出したデータで補充した後に、割り当てられたページにコピーする。
次いで、コントローラ11は、テンポラリ領域121tのデータを、キャッシュ領域121のPVOL用の領域にコピーし(ステップS305)、差分領域管理テーブル1172の当該領域の退避状態に退避済みを設定する(ステップS306)。
図35は、本発明の変形例に係るPVOLライト処理の第3のフローチャートである。
ポイントYに処理を進めると、図35に示すように、コントローラ11は、ライトデータをキャッシュ領域121のテンポラリ領域121tに格納し(ステップS311)、ライト要求に対する応答をホスト2に対して送信する(ステップS312)。これにより、ホスト2に対するライトレスポンスを向上することができる。
差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#−1のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14から領域を割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS313)。次いで、コントローラ11は、PVOLに格納されている対応する領域のデータ(旧データ:現在よりひとつ前の世代のスナップショットを構成するデータ)を割り当てられた領域にコピーし(ステップS314)、差分領域管理テーブル1172の対応する領域のCAW属性をOFFに設定し、世代#を削除する(ステップS315)。
次いで、コントローラ11は、差分領域管理テーブル1172に基づいて、ライト対象のPVOLの領域に対応付けられている世代#を特定し、ペア情報管理テーブル1171に基づいて、当該世代#のSVOLを特定し、ライト対象の領域に対応する当該SVOLの領域に対してプール14からページを割り当て、ページ管理テーブル1182を割り当てに従って更新する(ステップS316)。次いで、コントローラ11は、キャッシュ領域121に格納されているPVOLの対応する領域に書き込むべきデータ(現在の世代のスナップショットを構成するデータ)を割り当てられたページにコピーする(ステップS317)。なお、キャッシュ領域121に格納されているデータが、スロットの一部のデータのみである場合には、PVOLの対応するスロットのデータをキャッシュ領域のR面に読み出し、スロットの足りない部分のデータをR面に読み出したデータで補充した後に、割り当てられたページにコピーする。
次いで、コントローラ11は、テンポラリ領域121tのデータを、キャッシュ領域121のPVOL用の領域にコピーし(ステップS318)、差分領域管理テーブル1172の当該領域に対応する退避状態に退避済みを設定する(ステップS319)。
以上、本発明を実施形態に基づいて説明したが、本発明は上述した実施の形態に限られず、他の様々な態様に適用可能である。