(57)【特許請求の範囲】
【請求項１】
メモリ領域と、キャッシュメモリ領域と、プロセッサとを有し、ホスト計算機と通信可能に接続されるストレージシステムであって、
複数の論理ボリュームは、正ボリュームと、前記正ボリュームの複数のスナップショット取得時点にそれぞれ対応した複数のスナップショットイメージを保持するための複数の副ボリュームとを含み、
前記正ボリュームは、複数の論理領域で構成された論理ボリュームであり、
前記メモリ領域は、前記キャッシュメモリ領域に記憶されており論理領域に書き込むべきデータ要素と前記正ボリュームに対するスナップショット取得時点との時間的関係を示す時間関係情報を記憶し、
前記プロセッサは、
（Ａ）前記ホスト計算機から前記正ボリュームへのライト要求を受け付け、
（Ｂ）前記ライト要求に従うライト先論理領域への書き込み対象のデータ要素に対応しており前記キャッシュメモリ領域に記憶されているデータ要素であるキャッシュ内データ要素が、前記時間関係情報に基づいて、前記複数のスナップショットイメージのうちの少なくともいずれかのスナップショットイメージを構成するデータ要素であるスナップショット構成要素であるか否かを判定し、
（Ｃ）前記（Ｂ）の判定結果が肯定の場合には、前記時間関係情報に基づいて、前記複数の副ボリュームのうち、前記スナップショット構成要素を退避すべきスナップショット取得時点のスナップショットイメージを保持するための副ボリュームを特定し、当該特定した副ボリュームに前記キャッシュ内データ要素を退避し、その後、前記書き込み対象のデータ要素を前記キャッシュメモリ領域に格納し、前記ライト要求の応答を前記ホスト計算機へ返し、
（Ｄ）前記（Ｂ）の判定結果が否定の場合には、前記書き込み対象のデータ要素を前記キャッシュメモリ領域に格納し、前記ライト要求の応答を前記ホスト計算機へ返す、
ストレージシステム。
【請求項２】
前記時間関係情報は、前記正ボリュームのスナップショットの取得時点を表す世代を示す世代番号であり、
前記正ボリュームのスナップショットの最新世代以降に書き込まれるデータ要素の世代番号は、最新世代の番号に１が加算された世代番号であり、
前記プロセッサは、前記（Ｂ）において、前記キャッシュ内データ要素についての世代番号が、前記正ボリュームのスナップショットの最新世代番号以下の場合に、前記キャッシュ内データ要素がスナップショット構成要素であると判定する、
請求項１に記載のストレージシステム。
【請求項３】
前記プロセッサは、
（Ｆ）前記正ボリュームのスナップショットを取得する指示を受け付けた場合には、前記スナップショットの最新世代の番号に１を加算したものを、新たな最新世代として前記メモリ領域に記憶し、
（Ｇ）前記指示に対応する時点のスナップショットを保持する副ボリュームの世代番号を、前記最新世代として前記メモリ領域に記憶する、
請求項２に記載のストレージシステム。
【請求項４】
前記ライト先論理領域内のデータ要素が副ボリュームに未退避であり、且つ、ＣＡＷ（Copy  After  Write）を実行しないことを意味する値であるＣＡＷ属性ＯＦＦが前記ライト先論理領域に対応付けられている場合、前記キャッシュ内データ要素が、前記正ボリュームへ未だ格納されていないデータ要素でなければ、前記（Ｂ）に代えて、前記プロセッサは、前記ライト先論理領域に対応付けられているＣＡＷ属性ＯＦＦを、ＣＡＷを実行することを意味する値であるＣＡＷ属性ＯＮに変更し、前記ライト先論理領域についての時間関係情報を更新し、前記書き込み対象のデータ要素を前記キャッシュメモリ領域に格納し、
前記ライト先論理領域内のデータ要素が、副ボリュームに未退避であり、且つ、ＣＡＷ属性ＯＮが前記ライト先論理領域に関連付けられている場合、前記プロセッサは、前記（Ｂ）を実行する、
請求項１乃至３のうちのいずれか１項に記載のストレージシステム。
【請求項５】
前記プロセッサは、任意のタイミングで、前記ＣＡＷ属性ＯＮが対応付けられている論理領域を特定し、前記特定した論理領域内のデータ要素を、当該データ要素を構成要素とするスナップショットイメージを保持するための副ボリュームに退避し、前記特定した論理領域に対応付けられている前記ＣＡＷ属性ＯＮを、前記ＣＡＷ属性ＯＦＦに変更する、
請求項４に記載のストレージシステム。
【請求項６】
前記時間関係情報は、前記正ボリュームのスナップショットの取得時点を表す世代を示す世代番号であり、
前記正ボリュームのスナップショットの最新世代以降に書き込まれるデータ要素の世代番号は、最新世代の番号に１が加算された世代番号であり、
前記プロセッサは、前記特定した論理領域に対応付けられている世代番号が、最新世代の番号に１が加算された世代番号であれば、前記特定した論理領域内のデータ要素について未退避を退避済みに変更する、
請求項５に記載のストレージシステム。
【請求項７】
前記正ボリュームを構成する複数の論理領域は、複数の正論理領域であり、
前記一以上の副ボリュームの各々は、複数の論理領域である複数の副論理領域で構成されており、
前記プロセッサは、
（ａ）前記ホスト計算機から副ボリュームに対するリード要求を受け付け、
（ｂ）前記読出し要求に従うリード元の副論理領域は、前記正ボリュームを参照しており、リード元副論理領域に対応する正論理領域についての前記ＣＡＷ属性ＯＮが対応付けられている場合、前記リード元の副論理領域に対応する正論理領域についての前記時間関係情報に基づいて、前記キャッシュメモリ領域に格納されているデータ要素が前記副ボリュームのスナップショットの取得時よりも後のデータ要素であるか否かを判定し、
（ｃ）前記（ｂ）の判定結果が肯定の場合には、前記データ要素を格納すべき正論理領域に格納されているデータ要素を、その正論理領域に対応する副論理領域に退避させ、当該副論理領域からデータ要素を読み出して、前記リード要求の要求元の前記ホスト計算機に送信し、
（ｄ）前記（ｂ）の判定結果が否定の場合には、前記キャッシュメモリ領域に格納されているデータ要素を読み出して、前記リード要求の要求元の前記ホスト計算機に送信する、
請求項４乃至６のうちのいずれか１項記載のストレージシステム。
【請求項８】
前記正ボリュームを構成する複数の論理領域は、複数の正論理領域であり、
前記一以上の副ボリュームの各々は、複数の論理領域である複数の副論理領域で構成されており、
前記プロセッサは、
（ｆ）前記ホスト計算機から副ボリュームに対するライト要求を受け付け、
（ｇ）前記（ｆ）で受けたライト要求に従うライト先の副論理領域は、前記正ボリュームを参照しており、そのライト先副論理領域に対応する正論理領域について前記ＣＡＷ属性ＯＮが対応付けられている場合には、前記ライト先副論理領域に対応する正論理領域についての前記時間関係情報に基づいて、前記キャッシュメモリ領域に格納されているデータ要素が前記副ボリュームのスナップショットの取得時よりも後のデータ要素であるか否かを判定し、
（ｈ）前記（ｇ）の判定結果が肯定の場合には、前記ライト先の副論理領域に対応する正論理領域に格納されているデータ要素を、前記ライト先の副論理領域に退避し、当該ライト先の副論理領域にライト対象のデータ要素を書き込み、
（ｉ）前記（ｇ）の判定結果が否定の場合には、前記キャッシュメモリ領域に格納されているデータ要素を、ライト先の副論理領域に退避し、当該ライト先の副論理領域に書き込み対象のデータを書き込む、
請求項４乃至７のうちのいずれか１項に記載のストレージシステム。
【請求項９】
前記正ボリュームを構成する複数の論理領域は、複数の正論理領域であり、
前記一以上の副ボリュームの各々は、複数の論理領域である複数の副論理領域で構成されており、
前記プロセッサは、前記キャッシュ内データ要素がスナップショット構成要素である場合には、前記ライト先の正論理領域内のデータ要素を、当該データ要素を構成要素とするスナップショットイメージを保持するための副ボリューム内の、前記ライト先正論理領域と対応する副論理領域へ退避する、
請求項１乃至８のうちのいずれか１項に記載のストレージシステム。
【請求項１０】
前記正ボリュームを構成する複数の論理領域は、複数の正論理領域であり、
前記一以上の副ボリュームの各々は、複数の論理領域である複数の副論理領域で構成されており、
前記プロセッサは、
前記ライト先正論理領域が、リストアの対象であって、リストアが未実行である場合に、前記ライト先正論理領域に格納されているデータ要素、及び前記キャッシュメモリ領域に格納されており前記正ボリュームに書き込むべき前記データ要素を、それぞれ対応する副ボリュームに退避させた後に、リストア元の副ボリューム内の、前記ライト先正論理領域に対応する副論理領域内のデータ要素を、前記正ボリューム内の前記ライト先領域にコピーする、
請求項１乃至９のうちのいずれか１項に記載のストレージシステム。
【請求項１１】
前記プロセッサは、
（Ｐ）前記ホスト計算機から前記正ボリュームを指定したリード要求を受け付け、
（Ｑ）前記リード要求に従うリード元の論理領域が、リストアの対象であって、リストアが未実行である場合に、前記キャッシュメモリ領域に記憶されており前記リード元の論理領域に書き込むべきデータ要素についての時間関係情報に基づいて、前記キャッシュメモリ領域に格納されているデータ要素がスナップショット構成要素であるか否かを判定し、
（Ｒ）前記キャッシュメモリ領域に格納されているデータ要素がスナップショット構成要素である場合には、当該スナップショット構成要素を構成要素とするスナップショットイメージを保持するための副ボリュームに、前記キャッシュメモリ領域の前記スナップショット構成要素を退避させ、前記リード元の論理領域内のデータ要素を、当該データ要素を構成要素とするスナップショットイメージを保持するための副ボリューム内の、前記リード元論理領域に対応する仮想領域に退避し、その後、リストア元の副ボリューム内の、前記リード元論理領域に対応する仮想領域内のデータ要素を、前記正ボリューム内の前記リード元論理領域にコピーし、前記リード元論理領域にコピーしたデータ要素を、前記リード要求の要求元の前記ホスト計算機に送信し、
（Ｓ）前記キャッシュメモリ領域に格納されているデータ要素がスナップショット構成要素でない場合には、リストア元の副ボリューム内の、前記リード元論理領域に対応する仮想領域内のデータ要素を、前記リード元論理領域にコピーし、前記リード元論理領域にコピーしたデータ要素を、前記リード要求の要求元の前記ホスト計算機に送信する
請求項１乃至１０のうちのいずれか１項に記載のストレージシステム。
【請求項１２】
前記メモリ領域は、前記時間関係情報を前記正ボリュームの論理領域毎に記憶する
請求項１乃至１１のうちのいずれか１項に記載のストレージシステム。
【請求項１３】
前記キャッシュメモリ領域は、ライト要求の対象のデータ要素を一時的に格納させるテンポラリ領域と、そのテンポラリ領域とは別の領域である正ボリューム用領域とを有し、
前記プロセッサは、前記（Ａ）で、前記書き込み対象のデータ要素を前記テンポラリ領域に格納し、そのライト要求に対する応答を前記ホスト計算機に送信し、
前記プロセッサは、前記（Ｃ）で、当該スナップショット構成要素を構成要素とするスナップショットイメージを保持するための副ボリュームに前記キャッシュメモリ領域の前記スナップショット構成要素を退避し、その後、前記ライト対象のデータ要素を前記テンポラリ領域から前記正ボリューム用領域に移し、
前記プロセッサは、前記（Ｄ）で、前記ライト対象のデータ要素を前記テンポラリ領域から前記正ボリューム用領域に移す、
請求項１乃至１２のうちのいずれか１項に記載のストレージシステム。
【請求項１４】
複数の論理領域で構成された正ボリュームを指定したライト要求を受け付け、
前記ライト要求に従うライト先論理領域への書き込み対象のデータ要素に対応しておりキャッシュメモリ領域に記憶されているデータ要素であるキャッシュ内データ要素が、前記キャッシュメモリ領域に記憶されており論理領域に書き込むべきデータ要素と前記正ボリュームに対するスナップショット取得時点との時間的関係を示す時間関係情報を基に、前記正ボリュームの複数のスナップショット取得時点にそれぞれ対応した複数のスナップショットイメージのうちの少なくともいずれかのスナップショットイメージを構成するスナップショット構成要素であるか否かを判定し、
前記判定結果が肯定の場合には、前記時間関係情報に基づいて、前記複数のスナップショットイメージを保持するための複数の副ボリュームのうち、前記スナップショット構成要素を退避すべきスナップショット取得時点のスナップショットイメージを保持するための副ボリュームを特定し、当該特定した副ボリュームに、前記キャッシュ内データ要素を退避し、その後、前記書き込み対象のデータ要素を前記キャッシュメモリ領域に格納し、前記ライト要求の応答を前記ホスト計算機へ返し、
前記判定結果が否定の場合には、前記書き込み対象のデータ要素を前記キャッシュメモリ領域に格納し、前記ライト要求の応答を前記ホスト計算機へ返す、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを格納する論理ボリュームのスナップショットを管理するストレージシステムでの記憶制御に関する。
【背景技術】
【０００２】
従来、ストレージシステムに管理されているボリュームのデータをバックアップすることが行われている。バックアップとしては、例えば、所定の時点のボリュームの状態のスナップショットを管理する方法が知られている。
【０００３】
スナップショットを管理する場合においては、退避元のボリューム（正ボリューム）にライトアクセスが発生した際には、正ボリュームのライト先の領域のデータを退避先のボリューム（副ボリューム）に退避させ、その後、正ボリュームにライト対象のデータをコピーし、ライトアクセス元に応答を返す。このため、ライトアクセスが発生してから、ライトアクセス元に応答を返すまでに長時間を要し、ライトレスポンスが悪いという問題がある。
【０００４】
これに対して、ライトアクセス発生時に、ライトデータをキャッシュメモリに書き込んで応答を返し、ライトアクセスと非同期で、正ボリュームのデータを副ボリュームに退避させ、キャッシュメモリのライトデータを正ボリュームに書き込むことにより、ライトレスポンスを高速化するコピーアフターライト（ＣＡＷ）技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２００６／０１４３４１２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、特許文献１に記載された技術では、次のスナップショットを取得する場合においては、キャッシュに格納しているデータを正ボリュームへ反映していないときには、正ボリュームの退避していないデータのすべてを副ボリュームへ退避し、その後、キャッシュの反映していないすべてのデータを正ボリュームへ格納することが完了するまで、正ボリュームに対する処理を長時間待たなければならないという問題がある。
【０００７】
本発明は、上記課題に鑑みなされたものであり、その目的は、アクセスレスポンスを維持しつつ、次のスナップショットの取得時の処理を短時間化することのできる技術を提供することにある。
【課題を解決するための手段】
【０００８】
ストレージシステムは、複数の記憶媒体と、メモリ領域と、キャッシュメモリ領域と、プロセッサとを有し、ホスト計算機と通信可能に接続される。複数の記憶媒体に基づき複数のページで構成されたプールと、複数の論理ボリュームとが設けられる。複数の論理ボリュームは、正ボリュームと、正ボリュームの一以上のスナップショット取得時点にそれぞれ対応した一以上の副ボリュームとを含む。正ボリュームは、ホスト計算機による処理に利用されるデータが格納され複数の論理領域で構成された論理ボリュームである。副ボリュームは、正ボリュームのスナップショットイメージを保持するための、複数の仮想領域で構成された仮想的な論理ボリュームである。データの書き込み先の仮想領域に、プール内のページが未割当ての場合、その仮想領域にページが割り当てられ、割り当てられたページにデータが格納される。メモリ領域は、キャッシュメモリ領域に記憶されており論理領域に書き込むべきデータ要素と正ボリュームに対するスナップショット取得時点との時間的関係を示す時間関係情報を、例えば各論理領域について記憶する。
【０００９】
プロセッサは、ホスト計算機から正ボリュームへのライト要求を受け付ける。プロセッサは、ライト要求に従うライト先の論理領域に書き込むべきデータ要素でありキャッシュメモリ領域に記憶されているデータ要素について、時間関係をメモリ領域内の時間関係情報を基に特定する。プロセッサは、当該時間関係に基づいて、キャッシュメモリ領域に記憶されているデータ要素がスナップショットイメージを構成するデータ要素であるスナップショット構成要素であるか否かを判定する。プロセッサは、キャッシュメモリ領域に格納されているデータ要素がスナップショット構成要素である場合には、当該スナップショット構成要素を構成要素とするスナップショットイメージを保持するための副ボリュームにキャッシュメモリ領域内の前記データ要素を退避し、その後、書き込み対象のデータ要素をキャッシュメモリ領域に格納する。プロセッサは、キャッシュメモリ領域に格納されているデータ要素がスナップショット構成要素でない場合には、書き込み対象のデータ要素をキャッシュメモリ領域に格納する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の一実施形態に係る計算機システムの全体構成図である。
【図２】図２は、本発明の一実施形態に係る正ボリュームと副ボリュームとの関係を説明する図である。
【図３】図３は、本発明の一実施形態に係るストレージ装置におけるデータ管理処理の一部の概要を説明する図である。
【図４】図４は、本発明の一実施形態に係るコントローラの構成図である。
【図５】図５は、本発明の一実施形態に係るペア情報管理テーブルを説明する図である。
【図６】図６は、本発明の一実施形態に係る差分領域管理テーブルを説明する図である。
【図７】図７は、本発明の一実施形態に係るアドレス管理テーブルを説明する図である。
【図８】図８は、本発明の一実施形態に係るプール及びＳＶＯＬを説明する図である。
【図９】図９は、本発明の一実施形態に係るページ管理テーブルを説明する図である。
【図１０】図１０は、本発明の一実施形態に係るＰＶＯＬライト処理の第１のフローチャートである。
【図１１】図１１は、本発明の一実施形態に係るＰＶＯＬライト処理の第２のフローチャートである。
【図１２】図１２は、本発明の一実施形態に係るＰＶＯＬライト処理の第３のフローチャートである。
【図１３】図１３は、本発明の一実施形態に係るＰＶＯＬライト処理の第４のフローチャートである。
【図１４】図１４は、本発明の一実施形態に係るＰＶＯＬライト処理の第５のフローチャートである。
【図１５】図１５は、本発明の一実施形態に係るＰＶＯＬライト処理の第６のフローチャートである。
【図１６】図１６は、本発明の一実施形態に係るＰＶＯＬライト処理の第７のフローチャートである。
【図１７】図１７は、本発明の一実施形態に係るＰＶＯＬライト処理の第８のフローチャートである。
【図１８】図１８は、本発明の一実施形態に係るＰＶＯＬライト処理の第９のフローチャートである。
【図１９】図１９は、本発明の一実施形態に係るＰＶＯＬライト処理の第１０のフローチャートである。
【図２０】図２０は、本発明の一実施形態に係るバックエンド処理のフローチャートである。
【図２１】図２１は、本発明の一実施形態に係るＰＶＯＬリード処理の第１のフローチャートである。
【図２２】図２２は、本発明の一実施形態に係るＰＶＯＬリード処理の第２のフローチャートである。
【図２３】図２３は、本発明の一実施形態に係るＰＶＯＬリード処理の第３のフローチャートである。
【図２４】図２４は、本発明の一実施形態に係るＰＶＯＬリード処理の第４のフローチャートである。
【図２５】図２５は、本発明の一実施形態に係るＰＶＯＬリード処理の第５のフローチャートである。
【図２６】図２６は、本発明の一実施形態に係るＳＶＯＬリード処理のフローチャートである。
【図２７】図２７は、本発明の一実施形態に係るＳＶＯＬライト処理の第１のフローチャートである。
【図２８】図２８は、本発明の一実施形態に係るＳＶＯＬライト処理の第２のフローチャートである。
【図２９】図２９は、本発明の一実施形態に係るＳＶＯＬライト処理の第３のフローチャートである。
【図３０】図３０は、本発明の一実施形態に係るＳｎａｐｓｈｏｔ取得処理のフローチャートである。
【図３１】図３１は、本発明の一実施形態に係るＳｎａｐｓｈｏｔ削除処理のフローチャートである。
【図３２】図３２は、本発明の変形例に係るＰＶＯＬライト処理の一部の概要を説明する図である。
【図３３】図３３は、本発明の変形例に係るＰＶＯＬライト処理の第１のフローチャートである。
【図３４】図３４は、本発明の変形例に係るＰＶＯＬライト処理の第２のフローチャートである。
【図３５】図３５は、本発明の変形例に係るＰＶＯＬライト処理の第３のフローチャートである。
【発明を実施するための形態】
【００１１】
本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
なお、以下の説明では、「ｘｘｘテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｘｘｘテーブル」を「ｘｘｘ情報」と呼ぶことができる。
【００１３】
また、以下の説明では、種々の対象（例えば、ボリューム、チャンク、ページ等）の識別情報の種類として、番号が採用されるが、他種の識別情報が採用されても良い。
【００１４】
また、以下の説明において、後述するコントローラが行う処理の少なくとも一部が、プロセッサ（例えばＣＰＵ（Central  Processing  Unit））がコンピュータプログラムを実行することによって行われる。プロセッサは、ＣＰＵそれ自体であっても良いし、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから各コントローラにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
【００１５】
まず、本発明の一実施形態について説明する。
【００１６】
図１は、本発明の一実施形態に係る計算機システムの全体構成図である。
【００１７】
計算機システムは、ストレージシステムの一例としてのストレージ装置１と、ホスト計算機（以下、単に「ホスト」ということもある）２と、管理端末３とを有する。ストレージ装置１、ホスト２、管理端末３の数は、１以上とすることができる。ストレージ装置１と、ホスト２とは、通信ネットワーク（例えば、ＳＡＮ（Storage Area Network））５を介して相互に接続されている。また、ストレージシ装置１と、管理端末３は、通信ネットワーク（例えば、ＬＡＮ（Local Area Network））６を介して相互に接続されている。ストレージ装置１は、ホスト２で利用されるデータを記憶する。ホスト２は、各種処理を実行し、ストレージ装置１からデータを読み出したり、ストレージ装置１へデータを書き込んだりする。管理端末３は、図示しないＣＰＵが管理プログラム３１を実行することにより各種処理を行う。管理端末３は、表示装置を有し、その表示装置にストレージ装置１の管理用の画面を表示することができる。管理端末３は、管理操作リクエストをユーザー（例えば、管理端末３のオペレーター）から受け付け、管理操作リクエストをストレージ装置１に対して送信する。
【００１８】
ストレージ装置１は、コントローラ１１と、複数のディスク装置１２とを有する。各コントローラ１１は、図示しない内部バスを介して各ディスク装置１２に接続されている。また、本実施形態では、複数のディスク装置１２に基づく記憶領域（以下、プール）１４が形成されている。
【００１９】
ディスク装置１２は、ディスク型の記憶メディアのドライブであり、ホスト２からライト要求されたデータを記憶する。ストレージ装置１においては、ディスク装置１２に加えて、又は、ディスク装置１２に代えて、他種の記憶メディアを有する記憶デバイス（例えばフラッシュメモリドライブ）を備えても良い。
【００２０】
図２は、本発明の一実施形態に係る正ボリュームと副ボリュームとの関係を説明する図である。
【００２１】
正ボリューム（ＰＶＯＬ）３０１は、ホスト２が処理に利用するデータを書き込むボリュームである。ＰＶＯＬ３０１は、複数のディスク装置１２で構成されたＲＡＩＤグループ（所定のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）レベルでデータを記憶するディスク装置群）に基づく実体的な論理ボリュームであっても良いし、ＲＡＩＤグループに基づかない仮想的な論理ボリューム（例えば、シンプロビジョニングに従うボリューム、或いは、外部のストレージ装置の記憶資源（例えば論理ボリューム）がマッピングされたボリューム）であっても良い。一方、各副ボリューム（ＳＶＯＬ）１５は、ＰＶＯＬ１０５に対するスナップショット取得時点におけるスナップショットイメージを記憶するボリュームである。ＳＶＯＬ１５は、仮想的な論理ボリュームであり、ＳＶＯＬ１５が記憶するデータは、実際には、ＰＶＯＬ３０１又はプール１４に記憶されている。本実施形態においては、ＳＶＯＬ１５は、世代番号（世代＃）により、そのスナップショットの取得時点を表すようにしており、古いものから順に、世代＃１、世代＃２、世代＃３・・・となっている（つまり、旧い世代ほど世代番号が若い）。
【００２２】
世代＃１のＳＶＯＬ１５内の領域Ｒ２と、世代＃２のＳＶＯＬ１５内の領域Ｒ３は、ＰＶＯＬ内の領域Ｒ１を参照するように設定される。世代＃３のＳＶＯＬ１５内の領域Ｒ４は、世代＃２と世代＃３の間に更新された領域（ＰＶＯＬ３０１内の領域）から退避されたデータを記憶している、プール１４内の領域Ｒ５を参照するように設定される。また、世代＃１と世代＃２の間に更新され世代＃２と世代＃３の間に更新されなかった領域（ＰＶＯＬ３０１における領域）に対応する、世代＃２のＳＶＯＬ１５内の領域Ｒ７、及び、世代＃３のＳＶＯＬ１５内の領域Ｒ８ついては、世代＃１と世代＃２の間に更新された領域（ＰＶＯＬ３０１における領域）から退避されたデータを記憶している、プール１４内の領域Ｒ６を参照するように設定される。
【００２３】
図３は、本発明の一実施形態に係るストレージ装置におけるデータ管理処理の一部の概要を説明する図である。
【００２４】
コントローラ１１は、ＰＶＯＬ３０１を指定したライト（ＷＲ）要求（ライト要求）をホスト２から受領した時に、ＣＡＷ（Copy after write）実行の可否を判断する（図中（１））。コントローラ１１は、ＰＶＯＬ３０１内の書き込み先の領域（スロット）からデータを未退避であって、キャッシュ領域１２１に確保されたキャッシュサブ領域（以下、「確保領域」と言うことがある）がホストダーティでない場合には（ＰＶＯＬ３０１に格納されていないデータを記憶している確保領域でない場合には）、ＰＶＯＬ３０１内のライト先領域について、ＣＡＷ属性をＯＮにし、世代＃として、最新世代番号（最新世代＃）＋１（つまり最新世代番号に１を加算した値）を登録する（図中（２））。ここで、ＣＡＷ属性のＯＮは、ＣＡＷを実行すべきことを意味し、ＣＡＷ属性のＯＦＦは、ＣＡＷを実行しないことを意味する。スロットとは、キャッシュ領域１２１における管理単位である所定の容量単位の領域である。スロットサイズは、例えば、ホスト２からのライト要求時のライトデータのサイズよりも大きくてもよい。なお、本実施形態では、ＰＶＯＬがスロットと同じサイズの領域に分割して管理されており、ＰＶＯＬにおける分割された領域もスロットと言うこととする。
【００２５】
次いで、コントローラ１１は、ライト要求に従うライト対象のデータ（ＷＲデータ：ライトデータ）をホスト２から受けとって、確保領域におけるライト面（Ｗ面）（ボリュームに書き込むデータを記憶する領域）にライトデータを書き込む。次いで、コントローラ１１は、ホスト２にライト要求に対するレスポンスを送信する（図中（４））。
【００２６】
これとは、非同期で（バックエンドで）、コントローラ１１は、ＰＶＯＬ３０１内のライト先領域についてのＣＡＷ属性を検出する（図中（５））。コントローラ１１は、ＣＡＷ属性がＯＮの場合には、確保領域におけるリード面（Ｒ面）（ボリュームから読み出されたデータを記憶する領域）に、その確保領域におけるＷ面が記憶するデータのライト先領域（ＰＶＯＬ内の領域（スロット））の更新前のデータがキャッシュされているかを判定する。コントローラ１１は、キャッシュミスの場合には、ステージング、すなわち、ＰＶＯＬ３０１内のライト先領域からデータを確保領域内のＲ面に読み出す（図中（６））。次いで、コントローラ１１は、ライト先領域（ＰＶＯＬ３０１内の領域）に対応する、ＳＶＯＬ１５内の領域に、プール１４から領域（ページ）を割り当て（図中（７））、当該ページに、Ｒ面に読み出したデータを退避する（図中（８））。ここで、ページとは、プール１４において割り当てを行う単位領域をいう。ページのサイズは、例えば、スロットと同じサイズでよい。
【００２７】
図４は、本発明の一実施形態に係るコントローラの構成図である。
【００２８】
コントローラ１１は、メモリ１１１と、ＣＰＵ１１２と、上位インターフェース（上位Ｉ／Ｆ）１１３と、下位インターフェース（下位Ｉ／Ｆ）１１４と、インターフェース（Ｉ／Ｆ）１１５と、ブリッジ１１６とを有する。ブリッジ１１６は、メモリ１１１と、ＣＰＵ１１２と、上位Ｉ／Ｆ１１３と、下位Ｉ／Ｆ１１４と、Ｉ／Ｆ１１５とを相互に通信可能に接続する。
【００２９】
メモリ１１１は、制御に必要なデータ及びプログラムを記憶する。具体的には、メモリ１１１は、世代管理プログラム１１７と、プール管理プログラム１１８と、コピー処理プログラム１１９と、Ｉ／Ｏ処理プログラム１２０とを記憶する。世代管理プログラム１１７は、ペア情報管理テーブル１１７１と、差分領域管理テーブル１１７２とを管理し、スナップショットの管理処理を実行する。プール管理プログラム１１８は、アドレス管理テーブル１１８１と、ページ管理テーブル１１８２とを管理し、プール１４の管理処理を実行する。コピー処理プログラム１１９は、データのコピー処理を実行する。Ｉ／Ｏ処理プログラム１２０は、他のプログラムを適宜呼び出して、データの入出力処理を実行する。
【００３０】
また、メモリ１１１は、キャッシュメモリで構成されるキャッシュ領域１２１を有する。キャッシュ領域１２１は、例えば、ＳＲＡＭやＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）等の不揮発性メモリ、あるいは、バッテリーバックアップされたＤＲＡＭ等で構成され、ストレージ装置１がシャットダウン状態であっても揮発させないようにするデータを格納する。
【００３１】
ＣＰＵ１１２は、メモリ１１１に格納されたプログラムを実行することにより、各部を制御して各種処理を実行する。上位Ｉ／Ｆ１１３は、ホスト２との通信を仲介する。上位Ｉ／Ｆ１１３は、例えば、Fibre Channel(FC)，iSCSI等であってもよい。下位Ｉ／Ｆ１１４は、ディスク装置１２との通信を仲介する。下位Ｉ／Ｆ１１４は、例えば、ＦＣ、ＳＡＳ、ＳＡＴＡ等のディスクＩ／Ｆである。Ｉ／Ｆ１１５は、管理端末３との通信を仲介する。
【００３２】
図５は、本発明の一実施形態に係るペア情報管理テーブルを説明する図である。なお、以下の説明では、適宜、論理ボリュームを「ＶＯＬ」と記載する。
【００３３】
ペア情報管理テーブル１１７１は、ＰＶＯＬ番号（ＰＶＯＬ＃）と、最新世代番号（最新世代＃）と、ペアＩＤと、ＳＶＯＬ番号（ＳＶＯＬ＃）と、世代番号（世代＃）と、ステータスとを対応付けたレコードを管理する。
【００３４】
ＰＶＯＬ＃は、コピー元となるボリューム（ＰＶＯＬ）をストレージ装置１内で一意に特定する番号である。最新世代＃は、対応するＰＶＯＬにおける最新のスナップショットの世代番号である。ペアＩＤは、ＰＶＯＬとＳＶＯＬとのペア（コピーペア）を一意に特定する番号である。ＳＶＯＬ＃は、コピー先となるボリューム（ＳＶＯＬ）をストレージ装置１内で一意に特定する番号である。世代＃は、対応するＳＶＯＬが格納するスナップショットの世代番号である。ステータスは、対応するコピーペアの状態である。ステータスとしては、スナップショットを保持している状態を示すＳｎａｐｓｈｏｔ保持と、Ｓｎａｐｓｈｏｔを取得していない状態を示すＳｎａｐｓｈｏｔ未取得と、対応するＳＶＯＬからのリストアを実行している状態を示すリストア中がある。ここで、「リストア」とは、ＳＶＯＬに退避されているスナップショットのデータをＰＶＯＬに反映させることである。
【００３５】
例えば、同図における一番上のレコードは、ＶＯＬ＃０のＶＯＬがＰＶＯＬであり、その最新世代番号は、３であり、ＶＯＬ＃６のＳＶＯＬと、コピーペアが構成され、そのペアＩＤが０であり、このＳＶＯＬは、世代番号が１であり、スナップショットを保持していることを示している。
【００３６】
図６は、本発明の一実施形態に係る差分領域管理テーブルを説明する図である。
【００３７】
差分領域管理テーブル１１７２は、ＰＶＯＬ番号（ＰＶＯＬ＃）と、領域ＩＤと、退避状態と、リストア状態と、ＣＡＷ属性と、世代番号（世代＃）とを対応付けたレコードを管理する。
【００３８】
ＰＶＯＬ＃は、コピー元となるＶＯＬ（ＰＶＯＬ）をストレージ装置１内で一意に特定する番号である。領域ＩＤは、領域特定情報の一例であり、ＶＯＬにおいて区分されている領域（スロット）を特定する番号である。退避状態は、ＰＶＯＬにおける領域に書き込まれるデータがプール１４に退避されているか否かを示す情報である。退避状態としては、例えば、データを退避していることを示す「退避済み」と、データを退避していないことを示す「未退避」とがある。リストア状態は、リストアが実行された際のリストアの状態を示す情報である。リストア状態としては、リストアが実行された場合には、リストアが済んでいることを示す「済み」が設定され、リストアが実行されていない場合には、「未」が設定される。ＣＡＷ属性は、当該領域についてＣＡＷを実行する必要がある場合、すなわち、対応するＰＶＯＬの領域からデータを退避させるコピーを実行する必要がある場合には、「ＯＮ」が設定され、ＣＡＷを実行する必要がない場合、すなわち、ＰＶＯＬの領域からデータを退避させる必要がない場合には、「ＯＦＦ」が設定される。世代＃は、該当する領域に書き込むべきデータ（キャッシュ領域１２１内のデータ（データ要素））に対応するスナップショットの世代番号である。本実施形態では、最新のスナップショット取得時点以降に書き込まれたデータ要素の世代＃としては、書き込まれた時点のスナップショットの最新世代＃＋１が設定される。ここで、この世代番号が、ＰＶＯＬに対するスナップショット取得時点との時間的関係を示す時間関係情報の一例である。なお、世代＃に代えて、スナップショット取得時間が管理されてもよく、要は、データ要素について、各スナップショットの取得時点との一致又は前後等の時間関係を把握できる情報であればよい。
【００３９】
例えば、同図における２番目のレコードは、ＶＯＬ＃が０のＶＯＬ内の領域＃が１の領域においては、データ要素が未退避であり、リストアは実行されておらず、当該領域に対してデータが書き込まれる場合には、ＣＡＷを実行することを示し、当該領域のデータは、スナップショットの世代＃は、２であることを示している。
【００４０】
図７は、本発明の一実施形態に係るアドレス管理テーブルを説明する図である。
【００４１】
アドレス管理テーブル１１８１は、ＶＯＬ番号（ＶＯＬ＃）と、領域ＩＤと、共有ページＩＤと、自ページＩＤとを対応付けたレコードを管理する。
【００４２】
ＶＯＬ＃は、ＳＶＯＬをストレージ装置１内で一意に特定する番号である。領域ＩＤは、ＶＯＬにおいて区分されている領域を特定する番号である。共有ページＩＤは、当該領域のデータが格納される共有ページを特定する番号である。共有ページは、他のＳＶＯＬからも参照される可能性があるページである。自ページＩＤは、当該領域のデータが格納される自ページを特定する番号である。自ページは、対応するＳＶＯＬのみで参照されるページである。具体的には、対応するＳＶＯＬが書き込み可能なスナップショットを管理しており、当該ＳＶＯＬに対して書き込みがあった場合のデータを格納するページである。例えば、同図の一番上のレコードは、ＶＯＬ＃０のＶＯＬの領域＃０の領域について、共有ページＩＤが１であり、自ページＩＤが１０であることを示している。
【００４３】
図８は、本発明の一実施形態に係るプール及びＳＶＯＬを説明する図である。
【００４４】
プール１４は、複数のディスク装置１２により構成されたＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  （ｏｒ  Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓの略））グループ１３に基づく記憶領域である。プール１４は、複数のチャンク１３１で構成されており、各チャンク１３１が、複数のページ１３２で構成されている。ＳＶＯＬ（仮想ボリューム：ＶＶＯＬ）１５に対しては、データが実際に格納される領域に対して、プール１４のページ１３２が割り当てられる。
【００４５】
図９は、本発明の一実施形態に係るページ管理テーブルを説明する図である。
【００４６】
ページ管理テーブル１１８２は、チャンクＩＤと、ページＩＤと、ステータスと、アドレスとを対応付けたレコードを管理する。チャンクＩＤは、ページ１３２を含むチャンク１３１をプール１４内で一意に特定する番号である。ページＩＤは、ページ１３２をプール１４内で一意に特定する番号である。ステータスは、ページ１３２の状態である。ページの状態としては、例えば、「Ａｌｌｏｃａｔｅｄ」と、「Ｕｎａｌｌｏｃａｔｅｄ」とがある。アドレスは、対応するページを割当ているボリュームのアドレスである。例えば、同図の一番上のレコードは、チャンクＩＤ０のチャック１３１のページＩＤ０のページ１３２は、Ｖｏｌ１のボリュームのアドレス２の領域として割り当てられていることを示している。
【００４７】
次に、ストレージ装置１で行われる動作を説明する。
【００４８】
図１０は、本発明の一実施形態に係るＰＶＯＬライト処理の第１のフローチャートである。
【００４９】
図１０に示すように、ＰＶＯＬライト処理においては、ストレージ装置１のコントローラ１１は、ホスト２からライト要求を受領すると（ステップＳ１）、ペア情報管理テーブル１１７１におけるライト要求のライト対象のＰＶＯＬ＃のステータスを参照することにより、ライト要求に対応するＰＶＯＬがリストア中であるか否かを判定する（ステップＳ２）。ここで、ライト要求には、例えば、ライトデータを書き込むＰＶＯＬを示すＬＵＮ（論理ユニット番号）と、ＰＶＯＬにおけるライト先領域に属するＬＢＡ（論理ブロックアドレス）とが含まれており、ＬＵＮ及びＬＢＡにより、ＰＶＯＬのＶＯＬ＃及びライト先領域の領域ＩＤとを特定することができる。
【００５０】
ステップ２の判定の結果、リストア中である場合（ステップＳ２でＹｅｓ）には、コントローラ１１は、ポイントＰ（図１５参照）に処理を進める。一方、リストア中でない場合（ステップＳ２でＮｏ）、又は、ポイントＲから進んできた場合には、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト要求のライト対象の領域を含むスロットについてステータスが「Ｓｎａｐｓｈｏｔ保持あり」であるか否かを判定する（ステップＳ３）。
【００５１】
この結果、「スナップショット保持あり」でない場合（ステップＳ３でＮｏ）には、コントローラ１１は、ポイントＮ（図１２参照）に処理を進める。一方、「スナップショット保持あり」である場合（ステップＳ３でＹｅｓ）には、コントローラ１１は、差分領域管理テーブル１１７２を参照し、当該スロットが未退避であるか否か、すなわち、当該スロットに書き込むべきキャッシュ領域１２１のデータ要素が未退避であるか否かを判定する（ステップＳ４）。この結果、当該スロットが未退避でない場合（ステップＳ４でＮｏ）には、コントローラ１１は、ポイントＮ（図１２参照）に処理を進める。一方、当該スロットが未退避である場合（ステップＳ４でＹｅｓ）には、差分領域管理テーブル１１７２を参照し、当該スロットのＣＡＷ属性がＯＮであるか否かを判定する（ステップＳ５）。
【００５２】
この結果、ＣＡＷ属性がＯＮではない場合（ステップＳ５でＮｏ）には、コントローラ１１は、キャッシュ領域１２１のキャッシュ状態がホストダーティであるか、すなわち、当該スロットに対応するキャッシュ領域１２１のＷ面に、データがあるか否かを判定し（ステップＳ６）、ホストダーティでない場合（ステップＳ６でＮｏ）には、ポイントＡ（図１１参照）に処理を進める一方、ホストダーティである場合（ステップＳ６でＹｅｓ）には、ポイントＢ（図１３参照）に処理を進める。
【００５３】
一方、ステップＳ５の結果、ＣＡＷ属性がＯＮの場合（ステップＳ５でＹｅｓ）には、コントローラ１１は、当該領域の世代＃が最新世代＃より大きいか否かを判定する（ステップＳ７）。この結果、当該領域の世代＃が最新世代＃より大きい場合（ステップＳ７でＹｅｓ）には、当該領域に書き込むべきキャッシュ領域１２１のデータは、最新のスナップショットを取得した時点よりも後に更新されたデータであって、スナップショットを構成するデータ（スナップショット構成要素）ではないことを意味しているので、コントローラ１１は、処理をポイントＮ（図１２参照）に進める一方、当該領域の世代＃が最新世代＃以下の場合（ステップＳ７でＮｏ）には、当該領域に書き込むべきキャッシュ領域１２１のデータが書き込まれた時点よりも後で、次のスナップショットの取得がされていることを示し、当該キャッシュ領域１２１のデータは、スナップショット構成要素であることを意味しているので、ポイントＣ（図１４参照）に処理を進める。
【００５４】
図１１は、本発明の一実施形態に係るＰＶＯＬライト処理の第２のフローチャートである。
【００５５】
ポイントＡに処理を進めると、図１１に示すように、コントローラ１１は、差分領域管理テーブル１１７２のライト要求に対応する領域のＣＡＷ属性をＯＮに設定し（ステップＳ１１）、当該領域の世代＃に、ペア情報管理テーブル１１７１の対応するＰＶＯＬの最新世代＃に１を加算した値を設定する（ステップＳ１２）。これにより、当該領域に格納すべきキャッシュ領域１２１のデータが、最新のスナップショット取得時よりも後に更新されたデータであることが把握できるようになる。次いで、コントローラ１１は、当該領域に書き込むべきライトデータをメモリ１１１のキャッシュ領域１２１に格納し（ステップＳ１３）、ライト要求に対する応答をホスト２に対して送信する（ステップＳ１４）。
【００５６】
図１２は、本発明の一実施形態に係るＰＶＯＬライト処理の第３のフローチャートである。
【００５７】
ポイントＮに処理を進めると、図１２に示すように、コントローラ１１は、ライトデータをメモリ１１１のキャッシュ領域１２１に格納し（ステップＳ２１）、ライト要求に対する応答をホスト２に対して送信する（ステップＳ２２）。これにより、キャッシュ領域１２１のデータは、新たなライトデータに更新される。
【００５８】
図１３は、本発明の一実施形態に係るＰＶＯＬライト処理の第４のフローチャートである。
【００５９】
ポイントＢに処理を進めると、図１３に示すように、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４から領域を割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ３１）。すなわち、割り当てたページのステータスを割当済みにするとともに、アドレスに、ＳＶＯＬの該当する領域のアドレスを設定する。次いで、コントローラ１１は、キャッシュ領域１２１に格納されているＰＶＯＬのデータを割り当てられた領域（ページ）にコピーする（ステップＳ３２）。なお、キャッシュ領域１２１に格納されているデータが、スロットの一部のデータのみである場合には、ＰＶＯＬの対応するスロットのデータをキャッシュ領域１２１のＲ面に読み出し、スロットの足りない部分のデータをＲ面に読み出したデータで補充した後に、割り当てられたページにコピーする。
【００６０】
次いで、コントローラ１１は、差分領域管理テーブル１１７２の当該領域に対応する退避状態に退避済みを設定し（ステップＳ３３）、ライトデータをメモリ１１１のキャッシュ領域１２１に格納し（ステップＳ３４）、ライト要求に対する応答をホスト２に対して送信する（ステップＳ３５）。
【００６１】
図１４は、本発明の一実施形態に係るＰＶＯＬライト処理の第５のフローチャートである。
【００６２】
ポイントＣに処理を進めると、図１４に示すように、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、ひとつ前の世代のＳＶＯＬ、すなわち、当該世代＃−１のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ４１）。次いで、コントローラ１１は、ＰＶＯＬに格納されている対応する領域のデータ（旧データ：現在よりひとつ前の世代のスナップショットを構成するデータ）を割り当てられたページにコピーし（ステップＳ４２）、差分領域管理テーブル１１７２の対応する領域のＣＡＷ属性をＯＦＦに設定する（ステップＳ４３）。これにより、ひとつ前の世代のスナップショット構成要素を適切にひとつ前の世代のスナップショットイメージを管理するＳＶＯＬに退避することができる。また、ＰＶＯＬの一つの領域のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
【００６３】
次いで、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ４４）。次いで、コントローラ１１は、キャッシュ領域１２１に格納されているＰＶＯＬに書き込むべきデータ（現在の世代のスナップショット構成要素）を割り当てられたページにコピーし（ステップＳ４５）、差分領域管理テーブル１１７２の対応する領域の退避状態を退避済みに設定し、世代＃を削除する（ステップＳ４６）。これにより、現在の世代のスナップショット構成要素を適切に現在の世代のスナップショットイメージを管理するＳＶＯＬに退避することができる。また、ＰＶＯＬの一つの領域に対応するキャッシュ領域１２１のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
【００６４】
コントローラ１１は、ライトデータをメモリ１１１のキャッシュ領域１２１に格納し（ステップＳ４７）、ライト要求に対する応答をホスト２に対して送信する（ステップＳ４８）。この処理によると、ＰＶＯＬの一つの領域に対応するデータ要素についての退避処理だけであるので、比較的短時間で処理を終えることができ、ホスト２へのライトレスポンスを比較的早くすることができる。
【００６５】
図１５は、本発明の一実施形態に係るＰＶＯＬライト処理の第６のフローチャートである。
【００６６】
ポイントＰに処理を進めると、図１５に示すように、コントローラ１１は、差分領域管理テーブル１１７２を参照し、ライト要求に対応するＰＶＯＬの領域におけるリストアが未実行であるか否かを判定し（ステップＳ５１）、リストアが実行されて完了している場合（ステップＳ５１でＮｏ）には、ポイントＲ（図１０参照）に処理を進める。一方、リストアが未実行の場合（ステップＳ５１でＹｅｓ）には、コントローラ１１は、差分領域管理テーブル１１７２を参照し、対応する領域に格納すべきキャッシュ領域１２１のデータ要素が未退避であるか否かを判定する（ステップＳ５２）。この結果、未退避でない場合（ステップＳ５２でＮｏ）には、ポイントＳ（図１６参照）に進む。一方、対応する領域が未退避である場合（ステップＳ５２でＹｅｓ）には、差分領域管理テーブル１１７２を参照し、当該スロットのＣＡＷ属性がＯＮであるか否かを判定する（ステップＳ５３）。
【００６７】
この結果、ＣＡＷ属性がＯＮではない場合（ステップＳ５３でＮｏ）には、コントローラ１１は、キャッシュ状態がホストダーティであるか、すなわち、キャッシュ領域１２１のＷ面にデータがあるか否かを判定し（ステップＳ５４）、ホストダーティでない場合には、ポイントＴ（図１７参照）に処理を進める（ステップＳ５４でＮｏ）一方、ホストダーティである場合（ステップＳ５４でＹｅｓ）には、ポイントＵ（図１８参照）に処理を進める。
【００６８】
一方、ステップＳ５３の結果、ＣＡＷ属性がＯＮの場合（ステップＳ５３でＹｅｓ）には、コントローラ１１は、当該領域の世代＃が最新世代＃より大きいか否かを判定し（ステップＳ５５）、当該領域の世代＃が最新世代＃より大きい場合（ステップＳ５５でＹｅｓ）には、処理をポイントＳ（図１６参照）に進める一方、当該領域の世代＃が最新世代＃以下の場合（ステップＳ５５でＮｏ）には、ポイントＷ（図１９参照）に処理を進める。
【００６９】
図１６は、本発明の一実施形態に係るＰＶＯＬライト処理の第７のフローチャートである。
【００７０】
ポイントＳに処理を進めると、図１６に示すように、コントローラ１１は、対応する領域について、ＳＶＯＬからＰＶＯＬへのリストアコピーを実行し（ステップＳ６１）、差分領域管理テーブル１１７２の対応する領域のリストア状態をリストア済みに設定する（ステップＳ６２）。次いで、コントローラ１１は、ライトデータをメモリ１１１のキャッシュ領域１２１に格納し（ステップＳ６３）、ライト要求に対する応答をホスト２に対して送信する（ステップＳ６４）。
【００７１】
図１７は、本発明の一実施形態に係るＰＶＯＬライト処理の第８のフローチャートである。
【００７２】
ポイントＴに処理を進めると、図１７に示すように、コントローラ１１は、差分領域管理テーブル１１７２のライト要求に対応する領域のＣＡＷ属性をＯＮに設定し（ステップＳ７１）、当該領域の世代＃に、ペア情報管理テーブル１１７１の対応するＰＶＯＬの最新世代＃に１を加算した値を設定する（ステップＳ７２）。これにより、当該領域に格納すべきキャッシュ領域１２１のデータが、最新のスナップショット取得時よりも後に更新されたデータであることが把握できるようになる。次いで、コントローラ１１は、対応する領域について、ＳＶＯＬからＰＶＯＬへのリストアコピーを実行し（ステップＳ７３）、差分領域管理テーブル１１７２の対応する領域のリストア状態をリストア済みに設定する（ステップＳ７４）。次いで、コントローラ１１は、ライトデータをメモリ１１１のキャッシュ領域１２１に格納し（ステップＳ７５）、ライト要求に対する応答をホスト２に対して送信する（ステップＳ７６）。
【００７３】
図１８は、本発明の一実施形態に係るＰＶＯＬライト処理の第９のフローチャートである。
【００７４】
ポイントＵに処理を進めると、図１８に示すように、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ８１）。次いで、コントローラ１１は、キャッシュ領域１２１に格納されているＰＶＯＬのデータを割り当てられた領域にコピーする（ステップＳ８２）。なお、キャッシュ領域１２１に格納されているデータが、スロットの一部のデータのみである場合には、ＰＶＯＬの対応するスロットのデータをキャッシュ領域のＲ面に読み出し、スロットの足りない部分のデータをＲ面に読み出したデータで補充した後に、割り当てられたページにコピーする。次いで、差分領域管理テーブル１１７２の当該領域に対応する退避状態に退避済みを設定し（ステップＳ８３）、処理をポイントＳ（図１６参照）に進める。
【００７５】
図１９は、本発明の一実施形態に係るＰＶＯＬライト処理の第１０のフローチャートである。
【００７６】
ポイントＷに処理を進めると、図１９に示すように、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、ひとつ前の世代のＳＶＯＬ、すなわち、当該世代＃−１のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４から領域を割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ９１）。次いで、コントローラ１１は、ＰＶＯＬに格納されている対応する領域のデータ（旧データ：現在よりひとつ前の世代のスナップショットのデータ）を割り当てられた領域にコピーし（ステップＳ９２）、差分領域管理テーブル１１７２の対応する領域のＣＡＷ属性をＯＦＦに設定し、世代＃を削除する（ステップＳ９３）。これにより、ひとつ前の世代のスナップショット構成要素を適切にひとつ前の世代のスナップショットイメージを管理するＳＶＯＬに退避することができる。また、ＰＶＯＬの一つの領域についての退避処理であるので、比較的短時間で処理を終了することができる。
【００７７】
次いで、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４から領域を割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ９４）。次いで、コントローラ１１は、キャッシュ領域１２１に格納されているＰＶＯＬに対応する領域のデータ（現在の世代のスナップショットのデータ）を割り当てられた領域にコピーし（ステップＳ９５）、差分領域管理テーブル１１７２の対応する領域の退避状態を退避済みに設定し（ステップＳ９６）、処理をポイントＳ（図１６参照）に進める。これにより、現在の世代のスナップショット構成要素を適切に現在の世代のスナップショットイメージを管理するＳＶＯＬに退避することができる。また、ＰＶＯＬの一つの領域に対応するキャッシュ領域１２１のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
【００７８】
図２０は、本発明の一実施形態に係るバックエンド処理のフローチャートである。
【００７９】
このバックエンド処理は、例えば、任意のタイミング、例えば、所定の時間毎や、アクセス頻度が低い時間において実行される。コントローラ１１は、差分領域管理テーブル１１７２を参照し、ＣＡＷ属性がＯＮのＰＶＯＬの領域を検出する（ステップＳ１０１）。次いで、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、検出した領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃−１のＳＶＯＬを特定し、当該ＳＶＯＬの領域に対してプール１４から領域を割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ１０２）。次いで、コントローラ１１は、ＰＶＯＬに格納されている対応する領域のデータを割り当てられた領域にコピーする（ステップＳ１０３）。
【００８０】
次いで、コントローラ１１は、当該領域の世代＃が最新世代＃＋１であるか否かを判定し（ステップＳ１０４）、当該領域の世代＃が最新世代＃＋１である場合（ステップＳ１０４でＹｅｓ）には、差分領域管理テーブル１１７２の当該領域に対応する退避状態に、退避済みを設定する（ステップＳ１０５）一方当該領域の世代＃が最新世代＃＋１でない場合（ステップＳ１０４でＮｏ）には、何もしない。次いで、コントローラ１１は、差分領域管理テーブル１１７２の当該領域に対応するＣＡＷ属性をＯＦＦに設定する（ステップＳ１０６）。上記処理により、ＰＶＯＬのＣＡＷ属性がＯＮとなっている領域のデータについて、Ｉ／Ｏリクエストと非同期で、ＳＶＯＬへと退避することができる。また、ＰＶＯＬの領域のデータをＳＶＯＬへと退避することができるので、ＰＶＯＬライト処理において、ライトデータをキャッシュ領域１２１に格納する前に、ＰＶＯＬの領域のデータをＳＶＯＬへと退避しなければならない状況、例えば、ステップＳ７のＮｏに該当するような状況を低減することができ、ライトレスポンスを向上することができる。
【００８１】
図２１は、本発明の一実施形態に係るＰＶＯＬリード処理の第１のフローチャートである。
【００８２】
ＰＶＯＬリード処理においては、コントローラ１１は、ホスト２からリード要求を受領すると（ステップＳ１１１）、ペア情報管理テーブル１１７１におけるリード要求のリード対象のＰＶＯＬのステータスを参照することにより、リード要求に対応するＰＶＯＬがリストア中であるか否かを判定する（ステップＳ１１２）。この結果、リストア中でない場合（ステップＳ１１２でＮｏ）には、コントローラ１１は、対応するＰＶＯＬの領域（又は、当該領域のデータを格納するキャッシュ領域１２１）からデータを読み出す通常リード処理を実行する（ステップＳ１１３）。一方、リストア中である場合（ステップＳ１１２でＹｅｓ）には、コントローラ１１は、差分領域管理テーブル１１７２を参照し、リード要求に対応するＰＶＯＬのスロットにおけるリストアが未実行であるか否かを判定し（ステップＳ１１４）、リストアが完了している場合（ステップＳ１１４でＮｏ）には、通常リード処理を実行する（ステップＳ１１５）。
【００８３】
一方、リストアが未実行である場合（ステップＳ１１４でＹｅｓ）には、コントローラ１１は、差分領域管理テーブル１１７２を参照し、対応するスロットが未退避であるか否か、すなわち、当該スロットに書き込むべきキャッシュ領域１２１のデータ要素が未退避であるか否かを判定する（ステップＳ１１６）。この結果、未退避でない場合（ステップＳ１１６でＮｏ）には、処理をポイントＤ（図２２参照）に進める。一方、未退避である場合（ステップＳ１１６でＹｅｓ）には、差分領域管理テーブル１１７２を参照し、当該スロットのＣＡＷ属性がＯＮであるか否かを判定する（ステップＳ１１７）。
【００８４】
この結果、ＣＡＷ属性がＯＮではない場合（ステップＳ１１７でＮｏ）には、コントローラ１１は、キャッシュ状態がホストダーティであるか、すなわち、キャッシュ領域１２１のＷ面にデータがあるか否かを判定し（ステップＳ１１８）、ホストダーティでない場合には、ポイントＥ（図２３参照）に処理を進める（ステップＳ１１８でＮｏ）一方、ホストダーティである場合（ステップＳ１１８でＹｅｓ）には、ポイントＦ（図２４参照）に処理を進める。
【００８５】
一方、ステップＳ１１７の結果、ＣＡＷ属性がＯＮの場合（ステップＳ１１７でＹｅｓ）には、当該スロットの世代＃が最新世代＃より大きいか否かを判定し（ステップＳ１１９）、当該スロットの世代＃が最新世代＃より大きい場合（ステップＳ１１９でＹｅｓ）には、処理をポイントＤ（図２２参照）に進める一方、当該領域の世代＃が最新世代＃以下の場合（ステップＳ１１９でＮｏ）には、ポイントＧ（図２５参照）に処理を進める。
【００８６】
図２２は、本発明の一実施形態に係るＰＶＯＬリード処理の第２のフローチャートである。
【００８７】
ポイントＤに処理を進めると、図２２に示すように、コントローラ１１は、対応するスロットについて、ＳＶＯＬからＰＶＯＬへのリストアコピーを実行し（ステップＳ１２１）、差分領域管理テーブル１１７２の対応するスロットのリストア状態をリストア済みに設定する（ステップＳ１２２）。次いで、コントローラ１１は、ＰＶＯＬの対応する領域を読み出してホスト２へ送信する（ステップＳ１２３）。
【００８８】
図２３は、本発明の一実施形態に係るＰＶＯＬリード処理の第３のフローチャートである。
【００８９】
ポイントＥに処理を進めると、図２３に示すように、コントローラ１１は、差分領域管理テーブル１１７２のリード要求に対応する領域を含むスロットのＣＡＷ属性をＯＮに設定し（ステップＳ１３１）、当該領域の世代＃に、ペア情報管理テーブル１１７１の対応するＰＶＯＬの最新世代＃に１を加算した値を設定する（ステップＳ１３２）。次いで、コントローラ１１は、対応する領域について、ＳＶＯＬからＰＶＯＬへのリストアコピーを実行し（ステップＳ１３３）、差分領域管理テーブル１１７２の対応する領域のリストア状態をリストア済みに設定する（ステップＳ１３４）。次いで、コントローラ１１は、ＰＶＯＬの対応する領域を読み出してホスト２へ送信する（ステップＳ１３５）。
【００９０】
図２４は、本発明の一実施形態に係るＰＶＯＬリード処理の第４のフローチャートである。
【００９１】
ポイントＦに処理を進めると、図２４に示すように、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、リード対象のＰＶＯＬの領域を含むスロットに対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃のＳＶＯＬを特定し、リード対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ１４１）。次いで、コントローラ１１は、キャッシュ領域１２１に格納されているＰＶＯＬに書き込むべきデータを割り当てられたページにコピーする（ステップＳ１４２）。なお、キャッシュ領域１２１に格納されているデータが、スロットの一部のデータのみである場合には、ＰＶＯＬの対応するスロットのデータをキャッシュ領域のＲ面に読み出し、スロットの足りない部分のデータをＲ面に読み出したデータで補充した後に、割り当てられたページにコピーする。次いで、差分領域管理テーブル１１７２の当該スロットに対応する退避状態に退避済みを設定し（ステップＳ１４３）、処理をポイントＤ（図２２参照）に進める。
【００９２】
図２５は、本発明の一実施形態に係るＰＶＯＬリード処理の第５のフローチャートである。
【００９３】
ポイントＧに処理を進めると、図２５に示すように、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、リード対象のＰＶＯＬの領域を含むスロットに対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、ひとつ前の世代のＳＶＯＬ、すなわち、当該世代＃−１のＳＶＯＬを特定し、リード対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ１５１）。次いで、コントローラ１１は、ＰＶＯＬに格納されている対応する領域のデータ（旧データ：現在よりひとつ前の世代のスナップショットを構成するデータ）を割り当てられた領域にコピーし（ステップＳ１５２）、差分領域管理テーブル１１７２の対応する領域のＣＡＷ属性をＯＦＦに設定する（ステップＳ１５３）。これにより、ひとつ前の世代のスナップショット構成要素を適切にひとつ前の世代のスナップショットイメージを管理するＳＶＯＬに退避することができる。また、ＰＶＯＬの一つの領域のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
【００９４】
次いで、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、リード対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃のＳＶＯＬを特定し、リード対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ１５４）。次いで、コントローラ１１は、キャッシュ領域１２１に格納されているＰＶＯＬに対応する領域のデータ（現在の世代のスナップショット構成要素）を割り当てられたページにコピーし（ステップＳ１５５）、差分領域管理テーブル１１７２の対応する領域の退避状態を退避済みに設定し（ステップＳ１５６）、処理をポイントＤ（図２２参照）に進める。これにより、現在の世代のスナップショット構成要素を適切に現在の世代のスナップショットイメージを管理するＳＶＯＬに退避することができる。また、ＰＶＯＬの一つの領域に対応するキャッシュ領域１２１のデータ要素についての退避処理であるので、比較的短時間で処理を終了することができる。
【００９５】
図２６は、本発明の一実施形態に係るＳＶＯＬリード処理のフローチャートである。
【００９６】
ＳＶＯＬリード処理においては、コントローラ１１は、ホスト２からリード要求を受領すると（ステップＳ２０１）、アドレス管理テーブル１１８１を参照することにより、リード要求に対応するＳＶＯＬの領域（ページ）がＰＶＯＬを参照しているかを判定する（ステップＳ２０２）。この結果、ＰＶＯＬを参照していない場合（ステップＳ２０２でＮｏ）には、ＳＶＯＬに対応付けられているページからデータを読み出し（リード）し、ホスト２にデータを送信する（ステップＳ２０３）。
【００９７】
一方、ＰＶＯＬを参照している場合（ステップＳ２０２でＹｅｓ）には、コントローラ１１は、差分領域管理テーブル１１７２を参照し、ＳＶＯＬの当該領域に対応するＰＶＯＬのスロットのＣＡＷ属性がＯＮであるか否かを判定する（ステップＳ２０４）。この結果、ＣＡＷ属性がＯＮではない場合（ステップＳ２０４でＮｏ）には、コントローラ１１は、対応するＰＶＯＬの対応するスロットからデータをリードし、ホスト２にデータを送信する（ステップＳ２０５）。
【００９８】
一方、ＣＡＷ属性がＯＮの場合（ステップＳ２０４でＹｅｓ）には、コントローラ１１は、当該スロットの世代＃が当該ＳＶＯＬの世代＃より大きいか否かを判定し（ステップＳ２０６）、当該スロットの世代＃が当該ＳＶＯＬの世代＃以下の場合（ステップＳ２０６でＮｏ）には、キャッシュ領域１２１に格納されているデータがＳＶＯＬのスナップショットの取得時以前のデータ要素であるので、ＰＶＯＬの領域に対応するキャッシュ領域１２１からデータをリードし、ホスト２にデータを送信する（ステップＳ２０７）。
【００９９】
一方、当該スロットの世代＃が当該ＳＶＯＬの世代＃より大きい場合（ステップＳ２０６でＹｅｓ）には、キャッシュ領域１２１に格納されているデータがＳＶＯＬのスナップショットの取得時よりも後のデータ要素であるので、コントローラ１１は、当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ２０８）。次いで、コントローラ１１は、ＰＶＯＬに格納されている対応する領域のデータ（旧データ：現在よりひとつ前の世代のスナップショットを構成するデータ）を割り当てられた領域にコピーし（ステップＳ２０９）、差分領域管理テーブル１１７２の対応する領域のＣＡＷ属性をＯＦＦに設定し（ステップＳ２１０）、リード対象のＳＶＯＬの領域に対応付けられているページからデータを読み出し（リード）し、ホスト２にデータを送信する（ステップＳ２１１）。
【０１００】
図２７は、本発明の一実施形態に係るＳＶＯＬライト処理の第１のフローチャートである。
【０１０１】
ＳＶＯＬライト処理においては、コントローラ１１は、ホスト２からライト要求を受領すると（ステップＳ２２１）、ペア情報管理テーブル１１７１におけるライト要求のライト対象のＳＶＯＬに対応付けられたステータスを参照することにより、ライト対象のＳＶＯＬがリストア中であるか否かを判定する（ステップＳ２２２）。この結果、リストア中である場合（ステップＳ２２２でＹｅｓ）には、コントローラ１１は、ライトを実行しない（ステップＳ２２３）。
【０１０２】
一方、リストア中でない場合（ステップＳ２２２でＮｏ）には、コントローラ１１は、アドレス管理テーブル１１８１を参照することにより、ライト要求に対応するＳＶＯＬの領域がＰＶＯＬを参照しているかを判定する（ステップＳ２２４）。この結果、ＰＶＯＬを参照していない場合（ステップＳ２２４でＮｏ）には、コントローラ１１は、処理をポイントＨ（図２８参照）に進める。
【０１０３】
一方、ＰＶＯＬを参照している場合（ステップＳ２２４でＹｅｓ）には、コントローラ１１は、差分領域管理テーブル１１７２を参照し、当該スロットのＣＡＷ属性がＯＮであるか否かを判定する（ステップＳ２２５）。この結果、ＣＡＷ属性がＯＮではない場合（ステップＳ２２５でＮｏ）には、コントローラ１１は、処理をポイントＩ（図２９参照）に進める。
【０１０４】
一方、ＣＡＷ属性がＯＮの場合（ステップＳ２２５でＹｅｓ）には、コントローラ１１は、当該スロットの世代＃が当該ＳＶＯＬの世代＃より大きいか否かを判定し（ステップＳ２２６）、当該スロットの世代＃が当該ＳＶＯＬの世代＃以下の場合（ステップＳ２２６でＮｏ）には、処理をポイントＩ（図２９参照）に進める。
【０１０５】
一方、当該領域の世代＃が当該ＳＶＯＬの世代＃より大きい場合（ステップＳ２２６でＹｅｓ）には、コントローラ１１は、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ２２７）。次いで、コントローラ１１は、対応するＰＶＯＬの対応する領域のデータ（旧データ：現在よりひとつ前の世代のスナップショットを構成するデータ）を割り当てられた領域にコピーし（ステップＳ２２８）、差分領域管理テーブル１１７２の対応する領域のＣＡＷ属性をＯＦＦに設定し（ステップＳ２２９）、ライト対象のＳＶＯＬの領域に対応付けられているページにライトデータを書き込み（ライトし）し、ホスト２に応答を送信する（ステップＳ２３０）。
【０１０６】
図２８は、本発明の一実施形態に係るＳＶＯＬライト処理の第２のフローチャートである。
【０１０７】
ポイントＨに処理を進めると、図２８に示すように、コントローラ１１は、アドレス管理テーブル１１８１を参照し、ライト対象のＳＶＯＬの領域に対して、自ページはあるか否かを判定し（ステップＳ２３１）、自ページがある場合（ステップＳ２３１でＹｅｓ）には、ライトデータを自ページに書き込み、ホスト２に応答を送信する（ステップＳ２３２）。
【０１０８】
一方、自ページがない場合（ステップＳ２３１でＮｏ）には、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＳＶＯＬの領域に対してプール１４からページを自ページとして割り当て、アドレス管理テーブル１１８１を割り当てに従って更新し（ステップＳ２３３）、対応する領域の共有ページのデータを、割り当てられたページにコピーする（ステップＳ２３４）。次いで、コントローラ１１は、ライト対象のデータを自ページにコピーし、ホスト２に応答を送信する（ステップＳ２３５）。
【０１０９】
図２９は、本発明の一実施形態に係るＳＶＯＬライト処理の第３のフローチャートである。
【０１１０】
ポイントＩに処理を進めると、図２９に示すように、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ２４１）。次いで、コントローラ１１は、ＳＶＯＬの領域に対応するキャッシュ領域１２１のＰＶＯＬのデータ（現在の世代のスナップショットを構成するデータ）を割り当てられた領域にコピーし（ステップＳ２４２）、差分領域管理テーブル１１７２の対応する領域の退避状態を退避済みに設定し（ステップＳ２４３）、当該ページにライトデータを書き込み、ホスト２に応答を送信する（ステップＳ２４４）。
【０１１１】
図３０は、本発明の一実施形態に係るスナップショット取得処理のフローチャートである。
【０１１２】
スナップショット取得処理は、例えば、予め設定された時刻や、ホスト２等からスナップショット取得要求があった場合に実行される。
【０１１３】
コントローラ１１は、ペア情報管理テーブル１１７１において、スナップショット取得対象のＰＶＯＬの次のスナップショットの管理用のＳＶＯＬに対応するステータスをＳｎａｐｓｈｏｔ保持に設定し（ステップＳ２５１）、対応する最新世代＃をカウントアップし（ステップＳ２５２）、当該ＳＶＯＬの世代＃に最新世代＃を設定する（ステップＳ２５３）。このように、本実施形態においては、次のスナップショットの取得処理においては、ＰＶＯＬの領域のデータを退避等する処理を行う必要がなく、短時間でＰＶＯＬに対するアクセスを行うことができる。
【０１１４】
図３１は、本発明の一実施形態に係るスナップショット削除処理のフローチャートである。
【０１１５】
スナップショット削除処理は、例えば、ホスト２等からスナップショット削除要求があった場合に実行される。
【０１１６】
コントローラ１１は、差分領域管理テーブル１１７２から、スナップショット削除対象となるＳＶＯＬに対応するＰＶＯＬについてのＣＡＷ属性がＯＮの領域を検出し（ステップＳ２６１）、当該ＣＡＷ属性がＯＮの領域に対して、必要に応じて退避コピーを実行する（ステップＳ２６２）。具体的には、削除するＳＶＯＬが記憶している領域であって、他のスナップショットにより参照されている領域のデータについては、参照しているＳＶＯＬの領域に退避コピーをする。
【０１１７】
次いで、コントローラ１１はＰＶＯＬの退避した領域について、差分領域管理テーブル１１７２のＣＡＷ属性をＯＦＦに設定し（ステップＳ２６３）、ペア情報管理テーブル１１７１の対応するＳＶＯＬのステータスをＳｎａｐｓｈｏｔ未取得に設定する（ステップＳ２６４）。
【０１１８】
以上説明したように、本発明の一実施形態に係る計算機システムによると、アクセスレスポンスを維持しつつ、次のスナップショットの取得時の処理を短時間化することができる。
【０１１９】
次に、本発明の変形例に係る計算機システムを説明する。変形例に係る計算機システムは、上記実施形態に係る計算機システムのストレージ装置１において、キャッシュ領域１２１にライトデータを一時的に記憶する領域（テンポラリ領域）をさらに設けるようにしたものである。
【０１２０】
図３２は、本発明の変形例に係るＰＶＯＬライト処理の一部の概要を説明する図である。
【０１２１】
ストレージ装置１は、ホスト２からライト（ＷＲ）要求を受領した時に、ＣＡＷ実行の可否を判断する（図中（１））。「スナップショット保持あり」であって、対応する領域のデータが未退避である場合には、ライト対象のデータ（ＷＲデータ）を受けとって、キャッシュ領域１２１のテンポラリ領域１２１ｔに書き込む（図中（２））。次いで、ホスト２にライト要求に対するレスポンスを行う（図中（３））。これにより、ホスト２に対するライトレスポンスを向上することができる。
【０１２２】
次いで、これとは、非同期で、バックエンド処理を実行し、ＰＶＯＬの領域に対するＣＡＷ属性を検出し（図中（５））。ＣＡＷ属性がＯＮの場合には、キャッシュ領域のリード面（Ｒ面）に先にライト対象の領域の更新前のデータがキャッシュされているかを判定し、キャッシュミスの場合には、ＰＶＯＬの対応する領域を含むスロットをステージングする、すなわち、キャッシュ領域１２１のＲ面に読み出す（図中（４））。次いで、ＳＶＯＬの対応する領域としてプール１４から領域（ページ）を割り当て（図中（５））、当該領域に、キャッシュ領域１２１のＲ面に読み出したデータを退避コピーする（図中（６））。次いで、キャッシュ領域１２１のテンポラリ領域１２１ｔに格納したライトデータをＰＶＯＬの対応する領域のキャッシュ領域１２１に反映させ（図中（７））、差分領域管理テーブル１１７２の領域の退避状態として退避済みを設定する（図中（８））。
【０１２３】
次に、変形例に係るストレージ装置の動作を説明する。
【０１２４】
図３３は、本発明の変形例に係るＰＶＯＬライト処理の第１のフローチャートである。なお、上記実施形態と同様なステップについては、同一の符号を付すこととし、以下に、変形例に係るＰＶＯＬライト処理について、実施形態に係るＰＶＯＬライト処理との差異を中心に説明する。
【０１２５】
本変形例に係るＰＶＯＬライト処理においては、ステップＳ６において、コントローラ１１が、キャッシュ状態がホストダーティであるか否かを判定した場合に、キャッシュ状態がホストダーティでない場合（ステップＳ６でＮｏ）には、ポイントＸ（図３４参照）に処理を進める。
【０１２６】
また、ステップＳ７において、コントローラ１１が当該領域の世代＃が最新世代＃より大きいか否かを判定した場合において、当該領域の世代＃が最新世代＃以下の場合（ステップＳ７でＮｏ）には、ポイントＹ（図３５参照）に処理を進める。
【０１２７】
図３４は、本発明の変形例に係るＰＶＯＬライト処理の第２のフローチャートである。
【０１２８】
ポイントＸに処理を進めると、図３４に示すように、コントローラ１１は、ライトデータをキャッシュ領域１２１のテンポラリ領域１２１ｔに格納し（ステップＳ３０１）、ライト要求に対する応答をホスト２に対して送信する（ステップＳ３０２）。これにより、ホスト２に対するライトレスポンスを向上することができる。
【０１２９】
次いで、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４から領域を割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ３０３）。次いで、コントローラ１１は、キャッシュ領域１２１に格納されているＰＶＯＬのデータを割り当てられた領域にコピーする（ステップＳ３０４）。なお、キャッシュ領域１２１に格納されているデータが、スロットの一部のデータのみである場合には、ＰＶＯＬの対応するスロットのデータをキャッシュ領域のＲ面に読み出し、スロットの足りない部分のデータをＲ面に読み出したデータで補充した後に、割り当てられたページにコピーする。
【０１３０】
次いで、コントローラ１１は、テンポラリ領域１２１ｔのデータを、キャッシュ領域１２１のＰＶＯＬ用の領域にコピーし（ステップＳ３０５）、差分領域管理テーブル１１７２の当該領域の退避状態に退避済みを設定する（ステップＳ３０６）。
【０１３１】
図３５は、本発明の変形例に係るＰＶＯＬライト処理の第３のフローチャートである。
【０１３２】
ポイントＹに処理を進めると、図３５に示すように、コントローラ１１は、ライトデータをキャッシュ領域１２１のテンポラリ領域１２１ｔに格納し（ステップＳ３１１）、ライト要求に対する応答をホスト２に対して送信する（ステップＳ３１２）。これにより、ホスト２に対するライトレスポンスを向上することができる。
【０１３３】
差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃−１のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４から領域を割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ３１３）。次いで、コントローラ１１は、ＰＶＯＬに格納されている対応する領域のデータ（旧データ：現在よりひとつ前の世代のスナップショットを構成するデータ）を割り当てられた領域にコピーし（ステップＳ３１４）、差分領域管理テーブル１１７２の対応する領域のＣＡＷ属性をＯＦＦに設定し、世代＃を削除する（ステップＳ３１５）。
【０１３４】
次いで、コントローラ１１は、差分領域管理テーブル１１７２に基づいて、ライト対象のＰＶＯＬの領域に対応付けられている世代＃を特定し、ペア情報管理テーブル１１７１に基づいて、当該世代＃のＳＶＯＬを特定し、ライト対象の領域に対応する当該ＳＶＯＬの領域に対してプール１４からページを割り当て、ページ管理テーブル１１８２を割り当てに従って更新する（ステップＳ３１６）。次いで、コントローラ１１は、キャッシュ領域１２１に格納されているＰＶＯＬの対応する領域に書き込むべきデータ（現在の世代のスナップショットを構成するデータ）を割り当てられたページにコピーする（ステップＳ３１７）。なお、キャッシュ領域１２１に格納されているデータが、スロットの一部のデータのみである場合には、ＰＶＯＬの対応するスロットのデータをキャッシュ領域のＲ面に読み出し、スロットの足りない部分のデータをＲ面に読み出したデータで補充した後に、割り当てられたページにコピーする。
【０１３５】
次いで、コントローラ１１は、テンポラリ領域１２１ｔのデータを、キャッシュ領域１２１のＰＶＯＬ用の領域にコピーし（ステップＳ３１８）、差分領域管理テーブル１１７２の当該領域に対応する退避状態に退避済みを設定する（ステップＳ３１９）。
【０１３６】
以上、本発明を実施形態に基づいて説明したが、本発明は上述した実施の形態に限られず、他の様々な態様に適用可能である。
【符号の説明】
【０１３７】
１…ストレージ装置、１１…コントローラ、１１１…メモリ、１１２…ＣＰＵ、１２１…キャッシュ領域、１２…ディスク装置、１４…プール
【図１】
0005873545.tif 000002
【図２】
0005873545.tif 000003
【図３】
0005873545.tif 000004
【図４】
0005873545.tif 000005
【図５】
0005873545.tif 000006
【図６】
0005873545.tif 000007
【図７】
0005873545.tif 000008
【図８】
0005873545.tif 000009
【図９】
0005873545.tif 000010
【図１０】
0005873545.tif 000011
【図１１】
0005873545.tif 000012
【図１２】
0005873545.tif 000013
【図１３】
0005873545.tif 000014
【図１４】
0005873545.tif 000015
【図１５】
0005873545.tif 000016
【図１６】
0005873545.tif 000017
【図１７】
0005873545.tif 000018
【図１８】
0005873545.tif 000019
【図１９】
0005873545.tif 000020
【図２０】
0005873545.tif 000021
【図２１】
0005873545.tif 000022
【図２２】
0005873545.tif 000023
【図２３】
0005873545.tif 000024
【図２４】
0005873545.tif 000025
【図２５】
0005873545.tif 000026
【図２６】
0005873545.tif 000027
【図２７】
0005873545.tif 000028
【図２８】
0005873545.tif 000029
【図２９】
0005873545.tif 000030
【図３０】
0005873545.tif 000031
【図３１】
0005873545.tif 000032
【図３２】
0005873545.tif 000033
【図３３】
0005873545.tif 000034
【図３４】
0005873545.tif 000035
【図３５】
0005873545.tif 000036