(57)【要約】      （修正有）【課題】全てのグループが目標保護期間を満たし、かつ、必要となる空き容量を確保できる容量管理を行う。【解決手段】ストレージシステムは、ストレージコントローラと、複数のボリュームと、複数のボリュームに物理的記憶領域を割り当てるプールと、を有する。ストレージコントローラは、第１の目標保護期間が設定される第１のプライマリボリュームと、第１のプライマリボリュームへ更新に関する履歴情報を格納するボリュームとを含む第１のグループと、第２の目標保護期間が設定される第２のプライマリボリュームと、第２のプライマリボリュームへ更新に関する履歴情報を格納するボリュームとを含む第２のグループとを構成し、第１のグループと第２のグループに含まれるボリュームは、同一のプールを利用するものであり、プールの空き容量増加させる場合、第１の保護可能期間と第２の保護可能期間が同一となるように、パージ対象となる履歴情報を決定する。【選択図】図１
2020204932.tif 000002
【特許請求の範囲】
【請求項１】
ストレージコントローラと、前記ストレージコントローラによって構成される、複数のボリュームと、前記複数のボリュームの論理的記憶領域に物理的記憶領域を割り当てるプールと、を有するストレージシステムにおいて、
前記ストレージコントローラは、
前記複数のボリュームの内、第１の目標保護期間が設定される１以上の第１のプライマリボリュームと、前記第１のプライマリボリュームの所定時刻のコピーを格納する第１のコピー用ボリュームと、前記第１のプライマリボリュームへ更新に関する履歴情報を格納する第１の履歴情報用ボリュームとを含む第１のグループと、
前記複数のボリュームの内、第２の目標保護期間が設定される１以上の第２のプライマリボリュームと、前記第２のプライマリボリュームの所定時刻のコピーを格納する第２のコピー用ボリュームと、前記第２のプライマリボリュームへ更新に関する履歴情報を格納する第２の履歴情報用ボリュームとを含む第２のグループとを構成し、
前記第１のグループと前記第２のグループに含まれるボリュームは、同一の前記プールの物理的記憶領域を利用するものであり、
前記第１の履歴情報用ボリュームに格納された前記第１のプライマリボリュームへ更新に関する履歴情報が、前記第１の目標保護期間及び第１の保護可能期間を提供でき、前記第２の履歴情報用ボリュームに格納された前記第２のプライマリボリュームへ更新に関する履歴情報が前記第２の目標保護期間より長い期間に相当する第２の保護可能期間を提供できる状態から、前記プールの空き容量増加させる場合、前記第１の保護可能期間と前記第２の保護可能期間が所定の関係となるように、前記第１の保護可能期間および前記第２の保護可能期間からパージ対象となる履歴情報を決定することを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムにおいて、
前記所定の関係は、前記第１の保護可能期間と前記第２の保護可能期間とが同一になることであることを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムにおいて、
前記パージ対象となる履歴情報を、前記第１のコピー用ボリュームおよび前記第２のコピー用ボリュームとにそれぞれ反映させることを特徴とするストレージシステム。
【請求項４】
請求項１に記載のストレージシステムにおいて、
前記ストレージコントローラは、
前記パージ対象となる前記履歴情報をパージすることによって短縮する前記第１の保護可能期間及び前記第２の保護可能期間を、表示するよう制御することを特徴とするストレージシステム。
【請求項５】
請求項１に記載のストレージシステムにおいて、
前記プールの空き容量増加させるため、前記第１の目標保護期間を構成する前記第１の履歴情報用ボリュームに格納された前記第１のプライマリボリュームへ更新に関する履歴情報の一部と、前記第２の目標保護期間を構成する前記第２の履歴情報用ボリュームに格納された前記第２のプライマリボリュームへ更新に関する履歴情報の一部をパージする場合、前記第１の目標保護期間と前記第２の目標保護期間が短縮される期間が同一となるようにパージ対象となる履歴情報を決定することを特徴とするストレージシステム。
【請求項６】
請求項５に記載のストレージシステムにおいて、
前記ストレージコントローラは、
前記パージ対象となる前記履歴情報をパージすることによって短縮する前記第１の目標保護期間及び前記第２の目標保護期間を、表示するよう制御することを特徴とするストレージシステム。
【請求項７】
請求項６に記載のストレージシステムにおいて、
前記ストレージコントローラは、表示した目標保護期間の短縮を承認する信号を入力に応答して、前記パージ対象となる履歴情報のパージ処理を実行することを特徴とするストレージシステム。
【請求項８】
請求項１に記載のストレージシステムにおいて、
前記ストレージコントローラは、
前記第１のグループを、前記複数のボリュームの内、前記第１の目標保護期間が設定される前記第１のプライマリボリュームの第１の世代のスナップショットを格納する第１のスナップショットボリュームと、前記第２の目標保護期間が設定される前記第２のプライマリボリュームの第１の世代のスナップショットを格納する第２のスナップショットボリュームとで構成し、
前記第２のグループを、前記複数のボリュームの内、前記第２の目標保護期間が設定される前記第１のプライマリボリュームの第２の世代のスナップショットを格納する第３のスナップショットボリュームと、前記第２の目標保護期間が設定される前記第２のプライマリボリュームの第２の世代のスナップショットを格納する第４のスナップショットボリュームとで構成することを特徴とするストレージシステム。
【請求項９】
ストレージコントローラと、前記ストレージコントローラによって構成される、複数のボリュームと、前記複数のボリュームの論理的記憶領域に物理的記憶領域を割り当てるプールと、を有するストレージシステムの履歴情報管理方法において、
前記ストレージコントローラは、
前記複数のボリュームの内、第１の目標保護期間が設定される１以上の第１のプライマリボリュームと、前記第１のプライマリボリュームの所定時刻のコピーを格納する第１のコピー用ボリュームと、前記第１のプライマリボリュームへ更新に関する履歴情報を格納する第１の履歴情報用ボリュームとを含む第１のグループと、
前記複数のボリュームの内、第２の目標保護期間が設定される１以上の第２のプライマリボリュームと、前記第２のプライマリボリュームの所定時刻のコピーを格納する第２のコピー用ボリュームと、前記第２のプライマリボリュームへ更新に関する履歴情報を格納する第２の履歴情報用ボリュームとを含む第２のグループとを構成し、
前記第１のグループと前記第２のグループに含まれるボリュームは、同一の前記プールの物理的記憶領域を利用するものであり、
前記第１の履歴情報用ボリュームに格納された前記第１のプライマリボリュームへ更新に関する履歴情報が、前記第１の目標保護期間及び第１の保護可能期間を提供でき、前記第２の履歴情報用ボリュームに格納された前記第２のプライマリボリュームへ更新に関する履歴情報が前記第２の目標保護期間より長い期間に相当する第２の保護可能期間を提供できる状態から、前記プールの空き容量増加させる場合、前記第１の保護可能期間と前記第２の保護可能期間が所定の関係となるように、前記第１の保護可能期間および前記第２の保護可能期間からパージ対象となる履歴情報を決定することを特徴とするストレージシステムの履歴情報管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関し、特にストレージシステムの履歴情報管理方法に関する。
【背景技術】
【０００２】
ストレージシステムの障害発生、人的ミス、及び、ランサムウェアなどによるデータ改ざんなどにより、データを喪失してしまった場合、正常な状態に速やかに復旧することが要求される。
【０００３】
ＣＤＰ（Continuous Data Protection）は、指定された過去のどの時点(リカバリポイント)へも復旧できる技術である（特許文献１）。ＣＤＰでは、業務データが格納された本番ボリュームへのライト処理では更新される前のデータを退避し、継続的に履歴情報を保管する。障害等が検出されると、リカバリポイントを指定して、退避したデータに戻していくリストア処理を実施する。履歴情報はプールに格納され、古い履歴からパージしてストレージ空き容量を確保している。
【０００４】
特許文献１では、ジャーナルグループ（１つのジャーナルボリュームで履歴が管理される論理ボリューム群）に設定した目標保護期間を超過した履歴は基底ボリュームに書き込んで基底ボリュームの記憶内容を更新させ、ジャーナルボリュームからパージされることが開示されている。目標保護期間とは、保護対象のボリュームの記憶内容を過去に戻すことが可能な期間を意味し、例えば、「３時間」のように予め設定される。これをメタ情報と呼び、更新前データ、更新時刻、更新データ格納位置（アドレス情報)が主な要素である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第８０４６５４９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＣＤＰでは、ＣＤＰ対象ボリュームの記憶内容を過去に戻すことが可能な期間である目標保護期間を設定する。例えばボリュームごとに「３日」のように予め設定される。ここで、複数ボリュームをグループ化し、グループ全体として保護することとする場合、グループ単位でリストア制御を行う。グループ内の全てのボリュームは同一時刻の記憶内容に復元され、復元後の業務の再開も同時に実施される。
【０００７】
前記複数のグループが１つのプールを利用する場合、どのグループからどれだけの容量分パージすべきかを決定する必要がある。
【０００８】
しかしながら、上記特許文献１には、目標保護期間の異なる複数のグループが一つのプールに入っていることは想定されていない。
【０００９】
本発明の目的は、全てのグループが目標保護期間を満たし、かつ、必要となる空き容量を確保できるストレージシステムおよび履歴情報管理方法を提供することである。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明のストレージシステムの一態様は、ストレージコントローラと、ストレージコントローラによって構成される、複数のボリュームと、複数のボリュームの論理的記憶領域に物理的記憶領域を割り当てるプールと、を有するストレージシステムにおいて、ストレージコントローラは、複数のボリュームの内、第１の目標保護期間が設定される１以上の第１のプライマリボリュームと、第１のプライマリボリュームの所定時刻のコピーを格納する第１のコピー用ボリュームと、第１のプライマリボリュームへ更新に関する履歴情報を格納する第１の履歴情報用ボリュームとを含む第１のグループと、複数のボリュームの内、第２の目標保護期間が設定される１以上の第２のプライマリボリュームと、第２のプライマリボリュームの所定時刻のコピーを格納する第２のコピー用ボリュームと、第２のプライマリボリュームへ更新に関する履歴情報を格納する第２の履歴情報用ボリュームとを含む第２のグループとを構成し、第１のグループと第２のグループに含まれるボリュームは、同一のプールの物理的記憶領域を利用するものであり、第１の履歴情報用ボリュームに格納された第１のプライマリボリュームへ更新に関する履歴情報が、第１の目標保護期間及び第１の保護可能期間を提供でき、第２の履歴情報用ボリュームに格納された第２のプライマリボリュームへ更新に関する履歴情報が第２の目標保護期間より長い期間に相当する第２の保護可能期間を提供できる状態から、プールの空き容量増加させる場合、第１の保護可能期間と第２の保護可能期間が所定の関係となるように、第１の保護可能期間および第２の保護可能期間からパージ対象となる履歴情報を決定する。
【発明の効果】
【００１１】
本発明によれば、プール内の各グループで目標保護期間と実際の保護期間の差が小さくなるようにパージ期間を算出するため、グループ間で保護可能な期間の履歴情報を平等に残しつつ、プールが満杯にならないようにする。
【図面の簡単な説明】
【００１２】
【図１】プール容量回収方法の概要を示すフローチャートである。
【図２】ストレージシステムを含むシステムの構成例を示す図である。
【図３】メモリの構成と、メモリ内のプログラム及び管理情報との例を示す図である。
【図４】ＣＤＰ構成の一例を示す図である。
【図５】ＶＯＬ管理テーブルの例を示す図である。
【図６】アドレス変換テーブルの例を示す図である。
【図７】ページ割当管理テーブルの例を示す図である。
【図８】プール管理テーブルの例を示す図である。
【図９】ＣＤＰ管理テーブルの例を示す図である。
【図１０】ＣＤＰグループ管理テーブルの例を示す図である。
【図１１】ＣＤＰの実施の一例を示す図である。
【図１２】ＣＤＰ対象のボリュームの書き込み履歴のデータ量の変化の様子を示す図である。
【図１３】プール容量の回収の考え方を説明する図である。
【図１４】必要とするプールの容量を予測し算出する処理のフローチャートである。
【図１５】保護可能期間の書き込みデータ量を算出する処理を示すフローチャートである。
【図１６】プールの保護可能期間のデータのうち、どのデータをパージするかを決定する処理を示すフローチャートである。
【図１７】保護可能期間のデータの中からパージするデータを選択する処理を示したフローチャートである。
【図１８】目標保護期間のデータの内、どのデータをパージするか決定する処理を示したフローチャートである。
【図１９】プール容量を回収する処理を起動する処理を示すフローチャートである。
【図２０】ストレージシステムにおけるスナップショット構成を説明図である。
【図２１】他のアドレス変換テーブルの例を示す図である。
【図２２】スナップショットを取得する場合のボリュームへのライト処理を説明する図である。
【図２３】スナップショットを取得する場合のボリュームへのライト処理を説明する図である。
【図２４】二つのスナップショットを取得する場合のボリュームへのライト処理を説明する図である。
【図２５】二つのスナップショットを取得する場合のボリュームへのライト処理を説明する図である。
【図２６】コンシステンシグループを示す図である。
【発明を実施するための形態】
【００１３】
以下の説明において、「インターフェース部」は、１以上のインターフェースでよい。この１以上のインターフェースは、１以上の同種の通信インターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし、２以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１４】
また、以下の説明において、「メモリ部」は、１以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも１つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
【００１５】
また、以下の説明において、「ＰＤＥＶ部」は、１以上のＰＤＥＶであり、典型的には補助記憶デバイスでよい。「ＰＤＥＶ」は、物理的な記憶デバイス（Physical storage DEVice）を意味し、典型的には、不揮発性の記憶デバイス、例えばＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive）である。もしくは、フラッシュパッケージでもよい。
【００１６】
フラッシュパッケージは不揮発性記憶媒体を含む記憶デバイスである。フラッシュパッケージの構成例としては、コントローラと、計算機システムからのライトデータを記憶するための記憶媒体であるフラッシュメモリを有する。コントローラは、ドライブＩ／Ｆ、プロセッサ、メモリ、フラッシュＩ／Ｆ、圧縮機能を有する論理回路を有し、これらは内部ネットワークを介して相互接続されている。圧縮機能は無くてもよい。
【００１７】
また、以下の説明において、「記憶部」は、メモリ部とＰＤＥＶ部の少なくとも１つ（典型的には少なくともメモリ部）である。
【００１８】
また、以下の説明において、「プロセッサ部」は、１以上のプロセッサである。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサであるが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサでもよい。少なくとも１つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
【００１９】
また、少なくとも１つのプロセッサは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサでもよい。
【００２０】
また、以下の説明において、「ｘｘｘテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。
【００２１】
また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００２２】
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び／又はインターフェース部などを用いながら行うため、処理の主語が、プロセッサ部（或いは、そのプロセッサ部を有するコントローラのようなデバイス）とされてもよい。
【００２３】
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な（例えば非一時的な）記録媒体にあってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００２４】
また、以下の説明において、「計算機システム」は、１以上の物理的な計算機を含んだシステムである。物理的な計算機は、汎用計算機でも専用計算機でもよい。物理的な計算機は、Ｉ／Ｏ（Input/Output）要求を発行する計算機（例えばホスト計算機やサーバシステムと呼ぶ）として機能してもよいし、Ｉ／Ｏ要求に応答してデータのＩ／Ｏを行う計算機（例えばストレージ装置）として機能してもよい。
【００２５】
すなわち、計算機システムは、Ｉ／Ｏ要求を発行する１以上のサーバシステム、及び、Ｉ／Ｏ要求に応答してデータのＩ／Ｏを行う１以上のストレージ装置であるストレージシステムのうちの少なくとも１つでよい。少なくとも１つの物理的な計算機において、１以上の仮想的な計算機（例えばＶＭ（Virtual Machine））が実行されてもよい。仮想的な計算機は、Ｉ／Ｏ要求を発行する計算機でもよいし、Ｉ／Ｏ要求に応答してデータのＩ／Ｏを行う計算機でもよい。
【００２６】
また、計算機システムは、１以上（典型的には複数）の物理的なノード装置で構成された分散システムでよい。物理的なノード装置は、物理的な計算機である。
【００２７】
また、物理的な計算機（例えばノード装置）が所定のソフトウェアを実行することにより、その物理的な計算機、又は、その物理的な計算機を含んだ計算機システムに、ＳＤｘ（Software-Defined anything）が構築されてもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）又はＳＤＤＣ（Software-defined Datacenter）が採用されてもよい。
【００２８】
例えば、ストレージ機能を有するソフトウェアが物理的な汎用の計算機で実行されることにより、ＳＤＳとしてのストレージシステムが構築されてもよい。
【００２９】
また、少なくとも１つの物理的な計算機（例えばストレージ装置）が、サーバシステムとしての１以上の仮想的な計算機と、ストレージシステムのストレージコントローラ（典型的には、Ｉ／Ｏ要求に応答してデータをＰＤＥＶ部に対して入出力する装置）としての仮想的な計算機とが実行されてもよい。
【００３０】
言い換えれば、このような少なくとも１つの物理的な計算機は、サーバシステムの少なくとも一部としての機能と、ストレージシステムの少なくとも一部としての機能の両方を有してもよい。
【００３１】
また、計算機システム（典型的にはストレージシステム）は、冗長構成グループを有してよい。冗長構成は、Erasure Coding、ＲＡＩＮ（Redundant Array of Independent Nodes）及びノード間ミラーリングのように複数のノード装置での構成でもよいし、ＰＤＥＶ部の少なくとも一部としての１以上のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループのように単一の計算機（例えばノード装置）での構成でもよい。
【００３２】
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報（例えば、英字や符号を含んだ識別子）が採用されてもよい。
【００３３】
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号（又は、参照符号のうちの共通符号）を使用し、同種の要素を区別して説明する場合は、要素の識別番号（又は参照符号）を使用することがある。
【００３４】
例えば、記憶領域の単位である「ページ」を特に区別しないで説明する場合には、「ページ５１」と記載し、個々のページを区別して説明する場合には、ページの番号を用いて「ページ＃０」、「ページ＃１」のように記載したり、参照符号を用いて「単独ページ５１Ｐ」、「共通ページ５１Ｃ」のように記載したりすることがある。
【実施例１】
【００３５】
＜動作概要＞
以下、図面を参照して、実施例１を説明する。
まず、実施例１に係るプール容量回収方法の概要を説明する。
【００３６】
図１は、実施例１に係るプール容量回収方法の概要を示すフローチャートである。
プール毎に処理を行う。将来必要とするプールの空き容量を現在の書き込み処理数を参考に予測して算出する（Ｓ１１）。現在の空き容量と、Ｓ１１で算出した必要とする空き容量を比較し（Ｓ１２）、現在の空き容量で十分足りていれば処理を終了する。空き容量が足りていない場合は、プール容量回収可能な容量を算出し（Ｓ１３）、各グループのパージする履歴情報を決定し（Ｓ１４）、パージを実行する（Ｓ１５）。尚、Ｓはステップを表す。
【００３７】
Ｓ１１からＳ１４は、後述するプール容量回収プログラム４１３によって実行され、Ｓ１５は、リードライトプログラム４１１によって実行される。
【００３８】
＜システム構成＞
ストレージシステム２００は、図２に示すようにストレージコントローラ１０１を有する。ストレージコントローラ１０１は、プロセッサ部２１１を含むコントローラの一例である。ストレージコントローラ１０１は、ＣＤＰ機能やＣＤＰで使用する仮想的に論理ボリュームをコピーする機能としてボリューム複製機能を有する。
【００３９】
図２は、ストレージシステム２００を含むシステムの構成例を示す図である。ストレージシステム２００は、複数（又は１つ）の物理的記憶デバイスであるＰＤＥＶ２２０と、ＰＤＥＶ２２０に接続されたストレージコントローラ１０１とを有する。
【００４０】
ストレージコントローラ１０１は、Ｉ／Ｆ２１４と、Ｉ／Ｆ２１５と、Ｉ／Ｆ２１３と、メモリ２１２と、それらに接続されたプロセッサ２１１とを有する。Ｉ／Ｆ２１４、Ｉ／Ｆ２１５、及びＩ／Ｆ２１３が、インターフェース部の一例である。メモリ２１２が、記憶部の一例である。プロセッサ２１１が、プロセッサ部の一例である。
【００４１】
Ｉ／Ｆ２１４は、サーバシステム２０１とストレージコントローラ１０１との間のデータのやり取りを仲介する通信インターフェースデバイスである。Ｉ／Ｆ２１４に、ＦＣ（Fibre Channel）ネットワーク２０３を介して、サーバシステム２０１が接続される。
【００４２】
サーバシステム２０１は、ストレージコントローラ１０１に対して、Ｉ／Ｏ先（例えばＬＵＮ（Logical Unit Number）のような論理ボリューム番号や、ＬＢＡ（Logical Block Address）のような論理アドレス）を指定したＩ／Ｏ要求（ライト要求又はリード要求）を送信する。
【００４３】
Ｉ／Ｆ２１５は、管理システム２０５とストレージコントローラ１０１の間のデータのやり取りを仲介する通信インターフェースデバイスである。Ｉ／Ｆ２１５に、ＩＰ（Internet Protocol）ネットワーク２０４を介して、管理システム２０５が接続される。
【００４４】
ネットワーク２０３及びネットワーク２０４は、同一の通信ネットワークでもよい。管理システム２０５は、ストレージシステム２００を管理する。
【００４５】
Ｉ／Ｆ２１３は、複数のＰＤＥＶ２２０とストレージコントローラ１０１の間のデータのやり取りを仲介する通信インターフェースデバイスである。Ｉ／Ｆ２１３には、複数のＰＤＥＶ２２０が接続される。
【００４６】
メモリ２１２は、プロセッサ２１１が実行するプログラムと、プロセッサ２１１が使用するデータを記憶する。プロセッサ２１１は、メモリ２１２に格納されているプログラムを実行する。例えば、メモリ２１２及びプロセッサ２１１の組が二重化されている。
【００４７】
ストレージシステムの障害発生、人的ミス、及び、ランサムウェアなどによるデータ改ざんなどにより、データを喪失してしまう事態に備えて、元データをバックアップする技術がいくつかある。
【００４８】
バックアップ技術の一つに、或る限られた期間については任意の時点の元データを復元可能とするＣＤＰ（Continuous Data Protection）技術が知られている。本技術では、元データの更新の際に、元データの更新に関する履歴を表す情報（以下、ジャーナル）を取得し、そのジャーナルを、元データが記憶されている記憶領域（プライマリの論理ボリューム、以下、プライマリボリューム「ＰＶＯＬ」という）とは別の記憶領域（例えば、論理ボリューム、以下、ジャーナルボリューム「ＪＶＯＬ」、或いは、プライマリボリュームの更新に関する履歴情報を格納するため、履歴情報用ボリュームと言う）に保存しておく。また、ジャーナル取得前の元データの複製（以下、「基底データ」）を作成しておき、それを、元データやジャーナルが記憶されている記憶領域とはまた別の記憶領域（例えば、論理ボリューム、以下、基底ボリューム「ＢＶＯＬ」、或いはプライマリボリュームのコピーを格納するため、コピー用ボリュームと言う）に保存しておく。
【００４９】
任意の指定時刻を指定したデータ復元要求を受けた場合には、ＢＶＯＬ作成時刻（基底データの取得時刻）からその指定時刻までに取得されたジャーナルをＢＶＯＬに反映することで、ＢＶＯＬ内に、指定時刻における元データが復元される（すなわち、基底データが、指定時刻における元データに更新される）。
【００５０】
以下、ＣＤＰ技術に従うバックアップ技術を用いて説明するが、本発明では、バックアップ技術は、データを復旧させる方法であれば良く、ＣＤＰ技術に従うバックアップ技術である必要はない。ＣＤＰ技術に必要な要素を用いて説明するが発明の本質ではない。例えばＢＶＯＬやＪＶＯＬがあることが必須ではない。過去のある時点に戻るための情報があればよい。例えば、過去の書き込み時刻と書き込みアドレスと書き込みデータからなる履歴情報と、現在のボリュームに格納されたデータがあればよい。
【００５１】
図３は、メモリ２１２の構成と、メモリ２１２内のプログラム及び管理情報との例を示す図である。メモリ２１２は、ローカルメモリ４０１、キャッシュメモリ４０２、及び共有メモリ４０４というメモリ領域を含む。これらのメモリ領域のうちの少なくとも１つは、独立したメモリであってもよい。ローカルメモリ４０１は、このローカルメモリ４０１を含むメモリ２１２と同一組に属するプロセッサ２１１により使用される。
【００５２】
ローカルメモリ４０１には、リードライトプログラム４１１、ＣＤＰ制御プログラム４１２、及び、プール容量回収プログラム４１３、スナップショットプログラム４１４が格納される。これらのプログラムについては後述する。
【００５３】
キャッシュメモリ４０２には、ＰＤＥＶ２２０に対してライト又はリードされるデータセットが一時的に格納される。
【００５４】
共有メモリ４０４は、この共有メモリ４０４を含むメモリ２１２と同一組に属するプロセッサ２１１、及び異なる組に属するプロセッサ２１１の両方により使用される。共有メモリ４０４には、管理情報が格納される。
【００５５】
管理情報は、ＶＯＬ管理テーブル４２１、アドレス変換テーブル４２２、ページ割当管理テーブル４２３、プール管理テーブル４２４、ＣＤＰ管理テーブル４２５、ＣＤＰグループ管理テーブル４２６を含む。
【００５６】
＜ＣＤＰ構成＞
図４は、ストレージシステム２００におけるＣＤＰ構成を示す説明図である。ストレージシステム２００内には、ＣＤＰ制御プログラム４１２によって、複数種類のボリューム５０１Ｐ、５０１Ｂ、５０１Ｊがそれぞれ少なくとも一つ以上設けられる。これらの各ボリューム５０１Ｐ、５０１Ｂ、５０１Ｊは、それぞれＰＤＥＶ２２０の有する物理的記憶領域を仮想化することにより生成される。ボリューム５０１ＰはＰＤＥＶから生成されるプールを使用し、ボリューム５０１Ｐの論理的記憶領域であるページにプール５０３の物理的記憶領域であるページ５１を割り付ける。ページ５１内の記憶領域単位Ｂにマッピングされた物理的記憶領域にデータを格納する。以下、説明はボリュームで行うが、記憶領域の部分的な領域でもよい。
【００５７】
ボリューム５０１Ｐは、ＣＤＰ機能によって保護されるボリュームである。ボリューム５０１Ｐはその記憶内容がジャーナルデータによって連続的に保護されるＰＶＯＬボリューム（プライマリボリューム）である。ボリューム５０１Ｐはサーバシステム２０１と接続され、サーバシステム２０１から書き込まれるデータを記憶する、業務に使用される本番ボリュームである。サーバシステム２０１はボリューム５０１Ｐにデータを書き込み、ボリューム５０１Ｐからデータを読み出すことができる。
【００５８】
ボリューム５０１Ｂは、ボリューム５０１Ｐの過去の所定時点の記憶内容を維持する基底ボリュームＢＶＯＬ、即ち、コピー用ボリュームである。基底ボリュームＢＶＯＬはＰＶＯＬの最新の記憶内容から前の記憶内容が記憶されたボリュームである。ＢＶＯＬとＰＶＯＬの記憶内容の時間差は常に一定になるように制御する。但し、必ずしも一定時間となる必要はない。例えば、ＢＶＯＬにジャーナルデータを順番に書きこむ場合、ＰＶＯＬの記憶内容から遅れて追随することになる。別の方法として、ＢＶＯＬを新たな時刻に取り直す方法がある。また、ＢＶＯＬは、フルバックアップで複製を取る方法、スナップショット、クローンでとる等の方法がある。
【００５９】
ボリューム５０１Ｊは、ボリューム５０１Ｐの更新時に生成されるジャーナルデータを記憶するためのジャーナルボリュームＪＶＯＬであり、履歴情報を格納する履歴情報用ボリュームである。ジャーナルデータは、サーバシステム２０１によってＰＶＯＬが更新された履歴を管理するためのデータである。
【００６０】
実施例１では、一つまたは複数のボリューム５０１ＰをＣＤＰ対象として保護することができる。つまり、一つのボリューム５０１Ｐだけを単独で保護することもできるし、あるいは、複数のボリューム５０１ＰをＣＤＰグループ５２０＿ｎによりグループ化し、グループ全体として保護することもできる。例えば、互いに関連するデータを記憶する複数のボリューム５０１Ｐをグループ化し、ＣＤＰによる保護動作を同期させることができる。即ち、グループは、ストレージコントローラ１０１によって構成される、保護期間を同一に設定されるデータ、ボリュームやボリューム群で、例えば、図４に示すＣＤＰグループ５２０＿ｎでは、１又は複数のボリューム５０１Ｐ、１又は複数のジャーナルボリューム５０１Ｊ、１又は複数の基底ボリュームから構成される。
【００６１】
基底ボリュームＢＶＯＬは、ＰＶＯＬに一対一で対応付けられる。これに対し、一つのジャーナルボリューム５０１Ｊは、複数のボリューム５０１Ｐにそれぞれ対応付けることができる。
【００６２】
複数のボリューム５０１ＰがＣＤＰグループとしてグループ化されている場合、２つの方法のいずれかでリカバリさせることができる。第１の方法は、グループ単位でリストア制御を実施する方法である。第１の方法では、ＣＤＰグループ内の全てのボリューム５０１Ｐについて、各保護期間がそれぞれ一致するように、同期して制御する。第２方法は、ボリューム単位でリストア制御を実施する方法である。第２方法では、ＣＤＰグループ内の各正ボリューム５０１Ｐは、それぞれ個別にリストア処理を実施する。本発明では第１方法のリストア制御を実施する。
【００６３】
＜管理情報＞
次に、管理情報である各テーブルの例を説明する。
図５は、ＶＯＬ管理テーブル４２１の例を示す図である。ボリューム５０１Ｐのようにサーバシステム２０１に提供される論理ボリュームも、基底ボリューム５０１Ｂ及びジャーナルボリューム５０１Jのようにサーバシステム２０１に提供されない論理ボリュームも、「ＶＯＬ」と総称してもよい。
【００６４】
ＶＯＬ管理テーブル４２１は、ＶＯＬに関する情報を保持する。例えば、ＶＯＬ管理テーブル４２１は、ＶＯＬ毎にエントリを有する。各エントリは、ＶＯＬ＃８０１、ＶＯＬ容量８０２、プール＃８０３、及び、グループ＃８０４といった情報を格納する。以下、１つのＶＯＬ（「対象ＶＯＬ」と呼ぶ）を例に取って説明する。
【００６５】
ＶＯＬ＃８０１は、対象ＶＯＬの番号（識別番号）の情報である。ＶＯＬ容量８０２は、対象ＶＯＬの容量の情報である。プール＃８０３は、対象ＶＯＬに関連付けられているプール５０３の番号の情報である。グループ＃８０４は、対象ボリュームが属するＣＤＰグループ番号（識別番号）である。ここではＰＶＯＬのみを登録しているが、ＶＯＬ属性情報を設け、対象ＶＯＬの属性の情報を持つことで、例えば、基底ボリュームは“基底”、ジャーナルボリュームは“ジャーナル”、というように全てのＶＯＬを管理してもよい。
【００６６】
図６は、アドレス変換テーブル４２２の例を示す図である。アドレス変換テーブル４２２は、ボリューム５０１毎に設定される。アドレス変換テーブル４２２は、参照元の論理アドレス（ＶＯＬ内アドレス）と参照先の論理アドレスとの関係に関する情報を保持する。
【００６７】
例えば、アドレス変換テーブル４２２は、ページ又はブロック毎にエントリを有する。各エントリは、ＶＯＬ内アドレス９０１、参照先ページ＃９０２、及びデータサイズ９０３といった情報を格納する。以下、１つのブロック６０１（「対象ブロック」と呼ぶ）を例に取って説明する。
【００６８】
ＶＯＬ内アドレス９０１は、ボリューム５０１における対象ブロックの論理アドレス（例えば先頭論理アドレス）の情報である。参照先ページ＃９０２は、対象ブロックの参照先のプールのページにおける対象ブロックの論理アドレスに対応する論理アドレス（参照先プール内の論理アドレス）の情報である。データサイズ９０３は、対象ブロックのサイズの情報である。
【００６９】
図７は、ページ割当管理テーブル４２３の例を示す図である。ページ割当管理テーブル４２３は、プール５０３毎に設定される。ページ割当管理テーブル４２３は、ページ５１とその割当先との関係に関する情報を保持する。例えば、ページ割当管理テーブル４２３は、ページ５１毎にエントリを有する。
【００７０】
各エントリは、ページ＃１２０１、割当フラグ１２０２、割当先ＶＯＬ＃１２０３、及び割当先ＶＯＬ内アドレス１２０４といった情報を格納する。以下、１つのページ５１（「対象ページ」と呼ぶ）を例に取って説明する。ページ＃１２０１は、対象ページの番号の情報である。割当フラグ１２０２は、対象ページが割り当てられているか（“割当済”）、割り当てられていないか（“未割当”）の情報である。
【００７１】
割当先ＶＯＬ＃１２０３は、対象ページの割当先ＶＯＬ（ボリューム５０１）の番号の情報である。割当先ＶＯＬ内アドレス１２０４は、対象ページの割当先ＶＯＬにおける領域の論理アドレス（例えば先頭論理アドレス）の情報である。
【００７２】
図８は、プール管理テーブル４２４の例を示す図である。プール管理テーブル４２４は、プール５０３に関する情報を保持するテーブルである。
【００７３】
プール管理テーブル４２４は、例えば、プール５０３毎に、プール＃１１０１、容量１１０２、空き容量１１０３、グループ＃１１０４、書き込み要求頻度１１０５といった情報を格納する。プール＃１１０１は、対象プール５０３を識別する情報、例えばプール番号等である。容量１１０２は、対象となるプールの総容量である。空き容量１１０３は、容量１１０２のうち、使用可能な容量である。プール容量のうち割り当て済みのページの総容量をプールの容量から除いた値である。グループ＃１１０４は当該プールに属するＣＤＰグループ番号の情報を示す。書き込み要求頻度１１０５はプールへの書き込み要求数を処理した数を単位時間当たりに換算した値のものである。
【００７４】
図９は、ＣＤＰ管理テーブル４２５の例を示す図である。図９のＣＤＰ管理テーブル４２５は、ジャーナルボリューム５０１Ｊの記憶構成を模式的に示す説明図である。ジャーナルボリューム５０１Ｊの記憶領域は、ジャーナルデータを管理するためのデータと、ジャーナルデータのデータ本体が記憶される。
【００７５】
ＣＤＰ管理データ４２５としては、例えば、ＶＯＬ＃６０１に各ボリューム（ＰＶＯＬ）のジャーナルデータを格納するボリューム番号を登録する。ジャーナルデータの管理データは、ボリューム番号６０１（図中「ＶＯＬ＃」）、データ総量６１２、メタ情報格納先６１３等を挙げることができる。
【００７６】
ボリューム番号６０１とは、ボリューム５０１Ｐを特定するための情報である。データ総量６１２は、メタ情報格納先６１３につながっているメタ情報６２０のデータ格納先６２５にポイントされるデータ量の全容量が格納される。メタ情報格納先６１３は、メタ情報６２０の先頭アドレスが格納される。
【００７７】
メタ情報６２０は、時刻６２１、アドレス６２２、長さ６２３、容量６２４、データ格納先アドレス６２５、フラグ６２６等を挙げることができる。
【００７８】
時刻６２１とは、ボリューム５０１Ｐに書き込み要求が発生した時刻の情報である。アドレス６２２とは、ボリューム５０１Ｐに書き込まれるライトデータの先頭を示す論理ブロックアドレス（ＬＢＡ）である。長さ６２３とは、ライトデータのデータサイズを示す情報である。容量６２４とは、書き込まれるライトデータの容量である。データ格納先６２５とは、データ本体のプール上での格納位置を示すアドレスである。フラグ６２６とは、そのジャーナルデータを有効なものとして扱うか無効として扱うかを示すための制御情報である。
【００７９】
図１０は、ＣＤＰグループ管理テーブル４２６の例を示す図である。ＣＤＰグループ管理テーブル４２６は、ＣＤＰグループの情報を保持し、プール毎に持つ。
複数のボリュームのうち、同一の目標保護期間が設定されるボリュームにＣＤＰグループを設定する。例えば、あるアプリケーションで使用されるデータは、一つあるいはそれ以上のボリュームに保存される。そこでジャーナリングが保証されるデータボリュームの最小ユニットであるＣＤＰグループを設定する。ＣＤＰを適用するＶＯＬは一つ以上のＶＯＬからグループが組める。
【００８０】
例えば、グループ番号７０１は、対象ＣＤＰグループの番号の情報である。ＶＯＬ＃７０２は、対象ＣＤＰグループに属するＰＶＯＬのＶＯＬ＃の情報である。目標保護期間７０３は、ＣＤＰグループに属する全てのボリュームの目標保護期間の情報である。目標保護期間とは、保護対象のボリュームの記憶内容を過去に戻すことが可能な期間を意味し、例えば、「３時間」のように予め設定される。
【００８１】
ＣＤＰグループ管理テーブル４２６はモニタ情報も持つ。モニタ情報もグループ毎に持ち、プールの単位時間当たりの書き込みデータ量を算出するためのデータを蓄積する。
【００８２】
例えば、書き込み回数７０４は、グループ番号７０１に属するＶＯＬ＃７０２（ＰＶＯＬ）のボリュームが書き込み要求を受けて書き込み処理をプールに対して実施した回数である。書き込みデータ量７０５は前記書き込み処理をした時に書き込んだデータ量である。モニタ開始時刻７０６は書き込み要求回数や書き込みデータ量のモニタを開始する時刻であり、モニタ終了時刻７０７は前記モニタを終了する時刻である。平均書き込み回数は、書き込み回数７０４／（モニタ終了時刻−モニタ開始時刻）で算出できる。
【００８３】
図８に示す、書き込み要求頻度（単位時間当たりの書き込みデータ量）１１０５はサーバシステム２０１からＰＶＯＬへの書き込み要求のモニタしたものである。予め設定されたモニタ期間内の書き込み要求を参照し、書き込みの頻度と書き込み要求のデータサイズを算出し登録している。予め設定されたモニタ期間とは、例えば現在時刻から１日前までなどとする。書き込み要求頻度１１０５は、例えば数時間毎などに算出しなおし適宜データを書き換える。書き込み要求頻度１１０５は、複数モニタ期間のデータを格納してもよい。書き込み要求頻度１１０５は、管理システム２０５が書き込みの頻度と書き込み要求のデータサイズを算出し管理システム２０５内のメモリに登録してもよい。
【００８４】
書き込み要求頻度１１０５は、プールに属するＣＤＰグループをグループ＃１１０４から参照し、参照したグループ＃に対応するグループ番号７０１の書き込み回数７０４と書き込みデータ量７０５から算出した値を使って算出する。プールに属するグループ全ての単位時間当たりの書き込みデータ量を算出し、グループ間で平均した値をプールの単位時間当たりの書き込みデータ量として書き込み要求頻度１１０５に登録する。
以上が各テーブルの説明である。
【００８５】
＜ＣＤＰ技術を用いたバックアップ動作＞
ここで、一例としてＣＤＰ技術を用いたバックアップを説明する。通常運用時のＣＤＰ動作の一例を説明する。最初に、ユーザは、保護対象となるボリューム５０１Ｐ及び目標保護期間を指定する。ストレージコントローラ１０１は、ボリューム５０１Ｐに記憶されている全データを基底ボリューム５０１Ｂにコピーする。例えば、９時の時点におけるデータが基底ボリューム５０２Ｂにコピーされたものとすると、ＣＤＰ開始時刻は９時であることを示す。
【００８６】
サーバシステム２０１は、ボリューム５０１Ｐにアクセスし、データを読み書きする。サーバシステム２０１から送信されたライトデータがボリューム５０１Ｐに書き込まれた場合、つまり、ボリューム５０１Ｐを対象とするライト要求がサーバシステム２０１から発行された場合、ストレージコントローラ１０１は、そのライト要求に基づいてジャーナルデータ（メタ情報）６２０を生成する。生成されたジャーナルデータ６２０は、ジャーナルボリューム５０１Ｊに保存される。ライトデータはボリューム５０１Ｐに書き込まれる。
【００８７】
なお、ボリューム５０１Ｐのある時点の記憶内容を基底ボリューム５０１Ｂにコピーさせている最中に、サーバシステム２０１がボリューム５０１Ｐにデータを書き込む場合もある。ボリューム５０１Ｐから基底ボリューム５０１Ｂへのコピーが完了していない未コピー領域について、サーバシステム２０１が新たなデータの書込みを要求した場合を説明する。
【００８８】
この場合、一つの例として、ストレージコントローラ１０１は、未コピー領域に記憶されているデータ（旧データ）をボリューム５０１Ｐから基底ボリューム５０１Ｂにコピーさせた後で、サーバシステム２０１からの新たなデータをボリューム５０１Ｐに書き込む。
【００８９】
別の一つの例として、ボリューム５０１Ｐから基底ボリューム５０１Ｂへのコピー中に発行された新たなライト要求のライトデータを、「新データ」のような属性をつけてキャッシュメモリ上で管理し、未コピー領域に記憶されている旧データと別に管理する方法もある。この例では、ボリューム５０１Ｐから基底ボリューム５０１Ｂへの旧データのコピーと、サーバシステム２０１からのライト要求の処理（新データの上書き）とを非同期で行うことができる。なお、さらに別の方法もある。
【００９０】
サーバシステム２０１によってボリューム５０１Ｐが更新された位置は、ライト要求の発行時刻が含まれる期間（区間）を担当する差分ビットマップに記憶される。更新位置は、例えば、スロット単位やブロック単位等のように予め設定される所定サイズ単位で管理することができる。
【００９１】
時間が経過して、最初の差分ビットマップの担当期間を過ぎた場合、ストレージコントローラ１０１は、別の新たな差分ビットマップに切り替えて、サーバシステム２０１によってボリューム５０１Ｐが更新された位置を管理する。
【００９２】
ＣＤＰ開始時刻から目標保護期間を経過すると、目標保護期間を経過したジャーナルデータ６２０は、基底ボリューム５０１Ｂに順番に書き込まれる。つまり、現在時刻が１２時を過ぎた場合、現在時刻（１２時）よりも目標保護期間（３時間）だけ前に生成されたジャーナルデータは、生成された順番で基底ボリューム５０１Ｂに書き込まれる。基底ボリューム５０１Ｂに書き込まれたジャーナルデータ６２０は、破棄される。
【００９３】
＜リストア動作＞
リストア時の動作を説明する。例えば、サーバシステム２０１上のアプリケーションプログラムで発生した障害やユーザの誤操作等により、ボリューム５０１Ｐの記憶内容に誤りを生じる可能性がある。
【００９４】
ボリューム５０１Ｐの記憶内容に誤りを生じた場合、ユーザは、ボリューム５０１Ｐの記憶内容を所望の時点まで復元させるための指示を発行する。ユーザは、保護期間内の任意の時刻を復元点（リストア点）として選択することができる。
【００９５】
任意の指定時刻を指定したデータ復元要求を受けた場合には、ＢＶＯＬ作成時刻（基底データの取得時刻）からその指定時刻までに取得されたジャーナルを順次にＢＶＯＬに反映することで、ＢＶＯＬ内に、指定時刻における元データが復元される（すなわち、基底データが、指定時刻における元データに更新される）。
【００９６】
また、ランサムウェア等によるデータ改ざんが発生する可能性がある。改ざんがされた時刻を特定可能であれば改ざん時刻を復元点として選択しリストアする。改ざんされた時刻が特定不可能な場合は、データが正常であることが確認できた最も現在時刻に近い書き込み要求があった時刻を復元点として選択しリストアする。
【００９７】
＜他のＣＤＰ動作＞
通常運用時のＣＤＰ動作の別の一例を説明する。最初に、ユーザは、保護対象となるボリューム５０１Ｐ及び目標保護期間を指定する。ストレージコントローラ１０１は、ボリューム５０１Ｐに記憶されている全データを基底ボリューム５０１Ｂにコピーする。
【００９８】
サーバシステム２０１から送信されたライトデータがボリューム５０１Ｐに書き込まれた場合、つまり、ボリューム５０１Ｐを対象とするライト要求がサーバシステム２０１から発行された場合、ストレージコントローラ１０１は、そのライト要求のあったボリューム５０１Ｐのアドレスに既にデータが格納されているデータ（旧データ）に基づいてジャーナルデータ（メタ情報）６２０を生成する。生成されたジャーナルデータ６２０は、ジャーナルボリューム５０１Ｊに保存される。ジャーナルデータ６２０が登録されてから、ライト要求のあったデータをボリューム５０１Ｐの対象箇所へ書き込む。
【００９９】
なお、ボリューム５０１Ｐのある時点の記憶内容を基底ボリューム５０１Ｂにコピーさせている最中に、サーバシステム２０１がボリューム５０１Ｐにデータを書き込む場合もある。ボリューム５０１Ｐから基底ボリューム５０１Ｂへのコピーが完了していない未コピー領域について、サーバシステム２０１が新たなデータの書込みを要求した場合を説明する。
【０１００】
＜ＣＤＰ構成＞
図１１はＣＤＰ構成の一例である。ここでは、ボリューム５０１Ｐを対象とするライト要求がサーバシステム２０１から発行された場合、ストレージコントローラ１０１は、そのライト要求先に基づいてジャーナルデータ（メタ情報）６２０を生成する。生成されたジャーナルデータ６２０は、ジャーナルボリューム５０１Ｊに保存される。
【０１０１】
ＣＤＰ対象ボリューム５０１Ｐにはボリューム内のアドレスaにデータＡ１が、アドレスｂにデータＢ１が、アドレスｃにデータＣ１が、アドレスｄにデータＤ１が格納されている。これらは全てサーバシステム２０１から送信されたライトデータである。送信された時刻ｔは０である。ボリューム５０１Ｐは仮想ボリュームであるため、データＡ１、Ｂ１、Ｃ１、Ｄ１は実際にはプール５０３内に格納されている。
【０１０２】
図１１のメタ情報６２０は、図９のメタ情報６２０のテーブル情報のうち一部を示している。メタ情報６２０に時刻ｔ６２１に０、ボリューム５０１Ｐのデータ格納場所であるアドレス６２２に、それぞれａ、ｂ、ｃ、ｄを格納し、実際のデータ格納先のアドレス情報をデータ格納先（データ格納アドレス＃））６２５に格納する。データ格納先６２５に格納されたアドレスはプール上のデータの格納先である。
【０１０３】
ボリューム５０１Ｐのスナップショットを取得し、基底ボリューム５０１Ｂを生成する（Ｓ２１）。基底ボリュームも仮想ボリュームであり、実際のデータはプール内に格納さている。
【０１０４】
時刻ｔ１に、サーバシステム２０１からボリューム５０１Ｐのアドレスaへの書き込み要求を受ける。ライトデータＡ２を旧データＡ１に上書きされる（Ｓ２２）。メタ情報６２０にジャーナルを追加する。データＡ２はプールの新しいところに格納する。これにより、データＡ２の前にデータＡ１が書き込まれていた履歴が管理できる。
【０１０５】
時刻ｔ２に、サーバシステム２０１からボリューム５０１Ｐのアドレスｄへの書き込み要求を受ける。ライトデータＤ２を旧データＤ１に上書きする（Ｓ２３）。メタ情報６２０にジャーナルを追加する。
【０１０６】
時刻ｔ３に、サーバシステム２０１からボリューム５０１Ｐのアドレスｃへの書き込み要求を受ける。ライトデータＣ２を旧データＣ１に上書きする（Ｓ２４）。メタ情報６２０にジャーナルを追加する。
【０１０７】
リストア動作は、例えば、時刻ｔ１の時点にボリューム５０１Ｐを復元したい場合、ボリューム５０１Ｂが時刻ｔ０時点の状態であるので、ボリューム５０１Ｂに時刻ｔ０〜ｔ１の期間に受信したライト要求を対象とする。具体的には、ボリューム５０１Ｐのメタ情報６２０の時刻６２２が時刻ｔ０から順に時刻ｔ１まで、メタ情報６２０のデータ格納アドレス６２５に格納されたプール上のアドレスに格納されているデータを書き込む処理を実行する。ボリューム５０１Ｐの故障した部分のデータをボリュームＢからコピーすることで修復する。ボリューム５０１Ｐの故障したデータのうち、自分で修復できるものは修復する。
【０１０８】
図１２は、ＣＤＰ対象のボリュームの書き込み履歴のデータ量の変化の様子を示す図である。書き込みデータはメタ情報６２０内でポイントされているプールのアドレスに格納されている。ボリュームの書き込み履歴のデータ量とは、過去の時点から現在までの書き込みデータの総容量である。
【０１０９】
データ量５１０ｎ[ｉ]は、ＶＯＬ＃ｉの時刻ｎに書き込み処理を受け取り、プールに格納された書き込みデータ量の総和である。データ量５１０ｎ−１[ｉ]は、時刻ｎ−１に書き込み処理によりプールに格納されたデータ量の総和である。時刻ｎ−１は時刻ｎより過去であり、時刻ｎ＋１は時刻ｎより現在の時刻に近い時刻である。
【０１１０】
図１２（ａ）：現在時刻が時刻ｎ＋１
ＶＯＬ＃iの目標保護期間が３日であり、ｎ＝１日単位だとすると、ＶＯＬ＃iの目標保護期間のデータ量は、時刻情報ｎ−１から時刻ｎ＋１のデータ量５１０の合計値である。時刻ｎ−２のデータはＶＯＬ＃iの目標保護期間を過ぎた過去の履歴データであるため、時刻ｎ＋１になったタイミングで不要な情報となる。時刻ｎ＋１の時点で時刻ｎ−２以前の履歴データがパージ可能である。ＣＤＰでは目標保護期間に含まれるデータは必ず保持するし、時刻が変化していくと目標保護期間も変化していくため、保護の対象となるデータも変化していく。例えば目標保護期間を１週間と指定された場合、１週間前までのどの時点にも戻せるように１週間分のデータを保持する。図１２に示すように、現在時刻が時刻ｎから時刻ｎ＋１に進んだ時、時刻ｎ−２は目標保護期間を過ぎるため、時刻ｎ−２のデータはパージしてプールの空き容量にすることが可能となる。
【０１１１】
図１２（ｂ）：現在時刻がｎ＋２
現在時刻がｎ＋１から時刻ｎ＋２に進んだ時、時刻ｎ−１以前の履歴データはパージしてプールの空き容量にすることが可能な履歴データとなる。
【０１１２】
図１２（ｃ）：現在時刻がｎ＋３
現在時刻がｎ＋２から時刻ｎ＋３に進んだ時、時刻ｎ以前の履歴データはパージしてプールの空き容量にすることが可能な履歴データとなる。
【０１１３】
但し、プールの空き容量が十分大きく、すぐにはプールが枯渇することがないと予測された場合（プールの容量に余裕がある）、目標保護期間より以前の時刻のデータも保持したままにすることができる。これにより、ユーザに目標保護期間以前の状態を提供することができる。目標保護期間以前を「保護可能期間」と呼ぶ。保護可能期間は図１２（ｄ）に示されている。保護可能期間はユーザに保護を保証する期間ではないが履歴情報が残っていれば保護が可能であることを示す。
【０１１４】
図１３は、プール容量の回収の考え方を説明する図を示す。あるプールに属するＣＤＰグループ＃１とＣＤＰグループ＃２がある。以下、ＣＤＰグループを単にグループと呼ぶ場合がある。プールの空き容量が不足を防止するため、プールの空き容量として確保することが必要な空き容量は１００ＧＢとする。即ち、１００ＧＢだけ、プールの空き容量増加させる。
【０１１５】
グループ＃１は、目標保護期間が７日である。現在から過去７日分の合計データ量は１４０ＧＢである。７日前より前のデータは保護可能期間２日分の合計データ量４０ＧＢを持つ。グループ＃２は、目標保護期間が３日である。現在から過去３日分の合計データ量は３００ＧＢである。３日前より前のデータは保護可能期間１日分の合計データ量１００ＧＢを持つ。
【０１１６】
同じプールに属するグループ＃１とグループ＃２の保護可能期間のデータ量の合計量は４０ＧＢ＋１００ＧＢ＝１４０ＧＢである。この１４０ＧＢのデータ量のうち１００ＧＢをパージして必要な空き容量を確保する。１４０ＧＢの中からグループ＃１とグループ＃２のパージ量の割合は、パージ後の保護可能期間が同一となるよう、残すデータ量を決定する。図１３の例では、グループ＃１のパージするデータ量は３３．３ＧＢであり、グループ＃１の保護可能期間の残すデータ量は８時間分の６．６７ＧＢである。グループ＃２のパージするデータ量は６６．７ＧＢであり、グループ＃２の保護可能期間の残すデータ量は８時間分の３３．３ＧＢである。なお、パージ後の保護可能期間は同一ではなく、所定の関係になるようにすることも可能である。所定の関係とは、例えば、データの重要やSLA（Service Level Agreement）に基づく比率（重要データは通常データの２倍など）や、目標保護期間に比例した関係（保護可能期間も７対３の長さにする）である。また、保護可能期間の長さではなく保護可能期間のデータ量で定まる所定の関係にしてもよい。
【０１１７】
上記のように目標保護期間が異なる複数のグループが同一プールに存在する場合でも、プール満杯を回避しつつ、保護期間を出来る限り長く保つことができる。複数のグループが同一プールに存在する場合、どのグループからどの程度の容量をパージすべきか決めることは難しい。目標保護期間を全グループで満たすようにパージしたとしても、プールの空きを十分に確保できない場合も考慮する必要がある。グループの目標保護期間を考慮したパージ量を決めることで、目標保護期間をグループ間で均等に守ることができる。目標保護期間を保てない場合でもグループ間で均等に目標保護期間の短縮期間を均等になるように各グループがパージする量を決定する。
【０１１８】
＜動作フロー＞
図１４は、図１のＳ１１の詳細処理を示すフローチャート図である。必要とするプールの容量を予測し算出する処理である。プール毎に本処理を実行する。
【０１１９】
ストレージコントローラ１０１はプール容量回収プログラム４１３を実行する。まず、ストレージコントローラ１０１は、必要とするプール容量を予測すべき期間を決定する。例えば現在から３日分の空き容量を算出するとする（Ｓ１１１０）。ストレージコントローラ１０１は、書き込み要求頻度（単位時間あたりの書き込みデータ量）１１０５を参照する。書き込みデータ量１１０５が１日単位の書き込みデータ量の場合、３倍することで３日分が必要なプールの容量を算出する（Ｓ１１１２）。
単位時間あたりの書き込みデータ量は、グループ毎やプールボリューム毎に取得してもよい。
【０１２０】
Ｓ１１１０にて算出した必要な空き容量と現在の空き容量を比較して（Ｓ１２）、現在の空き容量が必要な空き容量より多い場合は空き容量は既に十分確保できているとして処理を終了する。必要な空き容量が不足している場合は、空き容量を確保するために、Ｓ１３の処理へ進む。具体的には、保護可能期間のデータのうち一部を破棄（パージ）して空き容量を増やす。パージする容量は必要な空き容量の不足分として、必要な空き容量から現在の空き容量を減算することで算出できる。
【０１２１】
また別の実施例として、ＰＤＥＶがフラッシュメディアの場合、プール内のガベージの総量を求め、Ｓ１１１０にて算出した必要な空き容量とガベージの総量を比較してガベージを空き容量にすれば空き容量が足りる場合はガベージコレクションを実行してもよい。その際には、ガベージコレクションを実行するためにかかる時間を考慮し、ガベージコレクションにかかる時間とパージ時間が予め決めた閾値以下であればガベージコレクションを選択する。なお、フラッシュメディアの場合パージ後はガベージとなり、ガベージコレクションが完了すると空き領域として使用可能となる。
【０１２２】
単位時間当たりの書き込みデータ量を予測するために、書き込み要求を受信する頻度と前記書き込み要求の書き込みデータサイズ（容量）をモニタする。モニタはプール内のグループ毎に行う。一例としてボリューム毎にモニタを行い、グループに属する全ボリュームのモニタを行った結果から、グループの書き込み要求頻度を算出してもよい。一例としてボリュームより小さい記憶単位で行ってもよい。
【０１２３】
モニタを実行するときには、モニタ時間帯を指定する。もしくは、ストレージシステムでＣＤＰ機能が稼動している間は常にモニタし、モニタ開始時刻とモニタ終了時刻までの予め決めたモニタ期間の書き込み要求数をカウントし、モニタ終了時刻になったら、モニタ終了時刻をモニタ開始時刻に設定を新たな期間のモニタを行い、モニタ処理を継続する。
【０１２４】
図１５は、図１のＳ１３の処理で、プール全体の回収可能容量を算出する処理である。
つまり、プールに格納された書き込みデータのうち、目標保護期間を過ぎた保護可能期間に書き込みされたデータ全体の容量を算出する。
【０１２５】
ストレージコントローラ１０１はプール容量回収プログラム４１３を実行する。図８に示したプール管理テーブル４２４を参照し、プール番号から対応するグループ番号を取得する。取得したグループ番号を図１０に示したＣＤＰグループ管理テーブル４２６からプールを使用するグループ、即ちグループ７０１の対象となるグループの目標保護期間７０３を参照する（Ｓ１３１０）。容量はプールのグループに属するボリュームのメタ情報６２０の時刻６２１を参照し、グループ#iに属するＶｏｌ＃ｊの保護可能期間の総容量算出、つまり、目標保護期間７０３の時刻より過去の時刻をもつメタ情報を抽出し、メタ情報のデータ量である容量６２４を合算していく（Ｓ１３１２）。
【０１２６】
次に、グループ＃iのＶｏｌの保護可能期間内の累計、つまり、これをボリューム毎に行い、グループでの保護可能期間のデータ量の総容量を算出する（Ｓ１３１４）。次に、プールに属する前記グループ＃iの保護可能期間内の累計、つまり、プールを使用する全グループの保護可能期間のデータ量の総容量を合算し、プール内の目標保護期間外の容量を算出する（Ｓ１３１６）。
保護可能期間の容量は一定時間間隔に算出し、算出した結果をテーブルに保持してもよい。
【０１２７】
図１６は、グループ毎にパージする情報を決定するＳ１４の処理である。つまり、Ｓ１３で求めたプールの保護可能期間のデータのうち、どのデータをパージするかを決定する処理を示すフローチャート図である。
【０１２８】
ストレージコントローラ１０１はプール容量回収プログラム４１３を実行する。確保すべき容量は、必要な空き容量の不足分として、必要な空き容量−現在の空き容量により、算出できる。確保すべき容量と前記プールに属する全グループの保護可能期間のデータ量の総容量（パージ可能容量）を比較し（Ｓ１４１０）、確保すべき容量が小さい場合はＳ１４１２へ進む。それ以外はＳ１４１６へ進む。確保すべき容量が小さい場合、パージするデータを選択する処理する（Ｓ１４１２）。前記パージするデータを報告して終了する（Ｓ１４１４）。パージの結果、保護可能期間が短縮されるため、ストレージコントローラ１０１は、実際にリストアする際にＳ１４１４で教示された保護可能期間を管理システム２０５の表示装置などに表示するよう制御する。
【０１２９】
Ｓ１４１０で確保すべき容量の方が大きい場合（Ｓ１４１６）、保護可能期間のデータ全てをパージしても容量が足りないことから、目標保護期間のデータからパージするデータを選択する（Ｓ１４１８）。Ｓ１４１８にて選択したデータと保護可能期間のデータを教示する（Ｓ１４２０）。さらに、目標保護期間の変更を管理システム２０５の表示装置などに表示するよう制御することで教示する（Ｓ１４２２）。目標保護期間の変更を教示された場合、管理者が変更を許す場合、パージＳ１５を実行するようにする。即ち、ストレージコントローラは、管理者から目標保護期間を短縮することを承認する信号が入力された場合に、パージ処理を実行する。パージの結果、目標保護期間が短縮されるため、ストレージコントローラ１０１は、実際にリストアする際に、教示された目標保護期間を表示装置などに表示するよう制御する。確保すべき容量を満たすために、ジャーナルの殆どをパージしなければならない場合、或いは、パージによっても確保すべき容量に満たない場合には、プールの容量を拡張しても良い。
【０１３０】
Ｓ１４２４で確保すべき容量とパージ可能容量が等しい場合、保護可能期間のデータ全てのジャーナルをパージデータとして教示する（Ｓ１４２６）。パージにより保護可能期間の変更は管理システム２０５の表示装置などに表示するよう制御する。
確保すべき容量と現在の空き容量が同じ場合は、保護可能期間のデータを全てパージすることを教示する。
【０１３１】
図１７は、Ｓ１４１２の処理の一例を示すフローチャート図である。保護可能期間のデータの中からパージするデータを選択する。
【０１３２】
保護可能期間のデータをパージする場合、メタ情報の時刻６２１の古い時刻のメタ情報から順に選択し、データ格納先６２５に示されるアドレスに格納されたデータをパージする。プールに属する各グループの目標保護期間から同じ期間分の保護可能期間のデータが残るように各グループのパージするデータ量を決める。
【０１３３】
目標保護期間からデータを残す期間をｘとする。例えば、あるプールのグループ＃１の目標保護期間を３日間、グループ＃２の目標保護期間を１週間、ｘを１６時間とすると、グループ＃１は現在時刻から３日＋１６時間より前の時刻のメタ情報に示されるデータをパージする。グループ＃２は１週間＋１６時間より前の時刻のメタ情報に示されるデータをパージする。
【０１３４】
パージすべき容量（不足容量）を以下の式により算出する（Ｓ１５１０）。
パージする容量＝必要な空き容量−現在の空き容量
【０１３５】
次に、保護可能期間のメタ情報の時刻が一番過去であるものからメタ情報のある時刻までの書き込みデータの合計容量が前記パージする容量分となる時刻を求める。
【０１３６】
図１４と同様に、プールに属するグループ毎に単位時間あたりの書き込みデータ量であるグループ[i]の単位時間あたりの書き込みデータ量をｓ_ｗｄａｔａ[i]を求める（Ｓ１５１２）。グループ[i]の単位時間あたりの書き込みデータ量をｓ_ｗｄａｔａ[i]と、グループ[i]の過去一番古い時刻[i]とすると、グループ[i]のパージ終了時刻ｔ_ｐ_ｅｎｄ[i]は、
パージする期間＝前記パージする容量／Σｓ_ｗｄａｔａ[i]
パージ終了時刻ｔ_ｐ_ｅｎｄ[i]＝過去一番古い時刻[i]＋パージする期間
（Ｓ１５１４）
保護可能期間の書き込みデータのうち、メタ情報の時刻の一番古いものからｔ_ｐ_ｅｎｄ[i]までの書き込みデータをパージする。
【０１３７】
以上のことから、プールに属するグループ[i]のパージを順次実施する。グループ[i]のメタ情報の時刻の一番古いものから順にデータに格納されるアドレスに格納されるデータをパージしていく。データが格納された場所は解放され空き領域となる。メタ情報も削除する。パージしたデータの容量は合算して保持しておく（Ｓ１５１６）。プール内全グループのパージ処理が終了し、前記パージしたデータの容量の合算がパージする容量を超えていれば処理を終了し、パージする容量に満たない場合は更なる保護可能期間の書き込みデータのパージを続ける（Ｓ１５１８）。パージを続ける場合は、パージ終了時刻を早めてパージする。
【０１３８】
図１８は、Ｓ１４１８の処理を示すフローチャート図を示す。保護可能期間のデータをパージしただけでは不足する場合、目標保護期間のデータもパージする必要があるため、どのデータをパージするか決定する。プールに属する複数のグループの目標保護期間の短縮時間が同じになるようにパージするデータを選択する。
【０１３９】
前記プールの不足容量を、確保すべき容量−保護可能期間のデータ総容量により、算出する（Ｓ１６１０）。
【０１４０】
プールにおける、目標保護期間から単位時間あたりの書き込みデータ量を参照する（Ｓ１６１２）。
【０１４１】
目標保護期間の最古の時刻から順にメタ情報の書き込みデータをパージしそのパージ量の累積量がS１６１０で求めたプール不足容量より大きくなる、パージ終了時刻を求める。
パージする期間＝前記パージする容量／Σｓ_ｗｄａｔａ[i]
パージ終了時刻ｔ_ｐ_ｅｎｄ[i]＝過去一番古い時刻[i]＋パージする期間
（Ｓ１６１４）
【０１４２】
目標保護期間の書き込みデータのうち、メタ情報の時刻の一番古いものからｔ_ｐ_ｅｎｄ[i]までの書き込みデータをパージする。
【０１４３】
以上のことから、プールに属するグループ[i]のパージを順次実施する。グループ[i]のメタ情報の時刻の一番古いものから順にデータに格納されるアドレスに格納されるデータをパージしていく。データが格納された場所は解放され空き領域となる。メタ情報も削除する。パージしたデータの容量は合算して保持しておく（Ｓ１６１６）。プール内全グループのパージ処理が終了し、前記パージしたデータの容量の合算がパージする容量を超えていれば処理をＳ１６２０へ進み、パージする容量に満たない場合は更なる保護可能期間の書き込みデータのパージを続ける（Ｓ１６１８）。パージを続ける場合は、パージ終了時刻を繰り上げてパージする。
【０１４４】
パージが終了したら、目標保護期間が変更になったこと、現在の目標保護期間について報告する（Ｓ１６２０）。
【０１４５】
別の実施例では、目標保護期間が1日未満のグループがあった場合、そのグループの目標保護期間は変更しない。即ち前記グループの目標保護期間のメタ情報の書き込みデータは削除しない。
【０１４６】
別の実施例ではグループ毎に保護可能期間の設定できる。また保護可能期間は目標保護期間のグループ間の比率に合わせることもできる。例えばグループ＃１が目標保護期間２日でグループ＃２が４日の場合、本パージ処理により、グループ＃１は１日分の履歴を保護し、グループ＃２は２日分の履歴を保護する。
【０１４７】
図１９はプール容量を回収する処理を起動する処理を示すフローチャート図である。
【０１４８】
プールの空き容量を定期的に監視する。予め設定した閾値とプールの空き容量を比較し（Ｓ１８１０）、空き容量が閾値を下回った場合は、Ｓ１０のプール容量回収処理を起動する（Ｓ１８１２）。
【０１４９】
定期的な監視以外に、他の処理でプール容量をチェックし空き容量が少ないと判断された場合には起動する。
【０１５０】
他には、ユーザやシステム管理者が指示をしてプール容量回収処理を起動することもできる。その際には、管理システム２０１経由、または、ストレージシステムに接続された端末（図示せず）から指示する。
【０１５１】
別の実施例において、ストレージシステム２００にスナップショットを取得することでデータ保護を実現する方法がある。スナップショット技術は特許公報５６５７８０１号公報に記載されている。
【０１５２】
以上のように、復旧処理するための履歴情報を格納する必要なプールの空き容量を算出し、目標保護期間を過ぎた余剰期間である履歴情報の容量を算出し、目標保護期間を過ぎた余剰期間である履歴情報のうちどの情報をパージするかを決定する。
【０１５３】
プール内の各グループで目標保護期間と実際の保護期間の差が小さくなるようにパージ期間を算出するため、グループ間で保護可能な期間の履歴情報を平等に残しつつ、プールが満杯にならないようにすることができる。
【実施例２】
【０１５４】
図２０は、ストレージシステム２００におけるスナップショット構成の説明図である。ストレージシステム２００内には、ローカルメモリ４０１にあるスナップショット制御プログラム４１４によって、ボリューム５１１Ｐの複製のボリューム５１１Ｓが少なくとも一つ以上設けられる。ボリューム５１１Ｐ及びボリューム５１１Ｓは、ＰＤＥＶ２２０の有する物理的記憶領域を仮想化することにより生成される。ボリューム５１１Ｐの仮想化は図４で説明したものと同様である。また、ボリューム５１１Ｐは仮想化せずにＰＤＥＶ２２０の有する物理的記憶領域から直接生成してもよい。また、ボリューム５１１Ｐ及びボリューム５１１Ｓはボリュームでなく記憶領域でもよい。以下、ボリュームを用いて説明するが発明の本質は変わらない。
【０１５５】
ボリューム５１１Ｐは、スナップショット制御プログラム４１４により、スナップショットボリュームが作成される。ボリューム５１１Ｐはその記憶内容がスナップショットボリューム５１１Ｓによって保護されるＰＶＯＬボリュームである。ボリューム５１１Ｐはサーバシステム２０１と接続され、サーバシステム２０１から書き込まれるデータを記憶する、業務に使用される本番ボリュームである。サーバシステム２０１はボリューム５１１Ｐにデータを書き込み、ボリューム５１１Ｐからデータを読み出すことができる。
【０１５６】
ボリューム５１１Ｓは、ボリューム５１１Ｐのスナップショットボリュームであり、ボリューム５１１Ｐの過去の所定時点の記憶内容を維持するボリュームである。ある時点にボリューム５１１Ｐのスナップショットを取ったらその時点の状態としてボリューム５１１Ｓが保護される。スナップショットは複数取ることができる。ある時点ｔ０でスナップショットＳＳＶＯＬ＃１１を取り、時点ｔ０から将来の時点ｔ１にスナップショットＳＳＶＯＬ＃１２を取った場合、時点ｔ０の時点及びｔ１の時点のボリューム５１１Ｐは保護可能である。例えば、時点ｔ０と時点ｔ１の間の時点ｔｘに障害が発生した場合、時点ｔ０に復元可能である。
【０１５７】
図４の説明したとおり、ボリューム５１１Ｐのページにプール５０３のページ５１を割り付ける。図２０に示す通り、スナップショット取得後においては、ページ５１はボリューム５１１Ｐのコピー先のボリューム５１１Ｓはボリューム５１１Ｐのページ５１を参照するようにする。すなわち、ボリューム＃１を複製した後においては、ページ５１Ｐとは、ボリューム＃１から参照され、また、ボリューム＃１のスナップショットであるボリューム＃１１からも、ボリューム＃１を介して間接的に参照されるようになる。
【０１５８】
図２１は、アドレス変換テーブル４２２＿１の例を示す図である。アドレス変換テーブル４２２＿１は、ボリューム５１１毎に設定される。アドレス変換テーブル４２２＿１は、参照元の論理アドレス（ＶＯＬ内アドレス）と参照先の論理アドレスとの関係に関する情報を保持する。
【０１５９】
例えば、アドレス変換テーブル４２２＿１は、ページ又はブロック毎にエントリを有する。各エントリは、ＶＯＬ内アドレス９１１、参照先ページ＃９１２、参照ＶＯＬ９１３、及びデータサイズ９１４といった情報を格納する。以下、１つのブロック６０１（「対象ブロック」と呼ぶ）を例に取って説明する。
【０１６０】
ＶＯＬ内アドレス９１１は、ボリューム５１１Ｐにおける対象ブロックの論理アドレス（例えば先頭論理アドレス）の情報である。参照先ページ＃９１２は、対象ブロックの参照先のプールのページにおける対象ブロックの論理アドレスに対応する論理アドレス（参照先プール内の論理アドレス）の情報である。参照ＶＯＬ９１３は、ボリューム５１１Ｐのスナップショットボリューム５１１Ｓのうち、ＶＯＬ内アドレス９１１を参照しているボリュームの番号である。データサイズ９１４は、対象ブロックのサイズの情報である。
【０１６１】
図２２は、図２０の構成におけるボリューム５１１Ｐへのライト処理を説明する図である。図２０を適宜参照して説明する。
【０１６２】
ボリューム＃１のデータセットＡは、プールに格納された実データへマッピングされている。ボリューム＃１のスナップショットである別のボリューム＃１１は、スナップショットが取られた時、スナップショット元であるボリューム＃１をボリューム＃１１の全アドレスが参照する。即ち、ボリューム＃１１はボリューム＃１を介してプールに格納されるデータセットを参照する。
【０１６３】
データセットＡを更新する処理を図２２に示す。ボリューム＃１のデータセットＡは、別のボリューム＃１１から参照されているため、データセットＡを更新する前にデータセットＡをプール領域内の新たな領域、例えば、新たに確保したページ＃２に退避コピーを行う。ボリューム＃１１は、ボリューム＃１のデータセットＡへのポイント先を、データセットＡの退避先領域に切り替える。そして、ボリューム＃１１のアドレス変換テーブル４２２＿１の参照先ページ９１２を切り替えたポイント先に更新する。その後、データセットＡが格納されていた領域に新たな書き込みデータであるデータセットＥを上書きする。
【０１６４】
同じ領域へ更に書き込み処理をする場合、例えば、データセットＥが他のボリュームから参照されていなければ、データセットＥが格納されていた領域にデータセットＦを上書きする（図２３）。
【０１６５】
ボリューム＃１のスナップショットが複数個取られていた場合、スナップショットボリューム＃１１＿０〜ｎの中で、スナップショット取得時刻の最古のボリューム＃１１＿０を退避先のデータセットＡへポイントし、他のスナップショットのボリューム＃１１＿ｎはボリューム＃１１＿０を参照する（図２４〜図２５）。図２４に示すように、ボリューム＃１のスナップショットをボリューム＃１１＿０とボリューム＃１１＿１に２つ取る場合、ボリューム＃１１＿０とボリューム＃１１＿１ともにボリューム＃１をポイントする。図２５に示すように、データセットＡにデータセットＥが上書きされると、ボリューム＃１１＿０は退避して格納されたデータセットＡをポイントし、ボリューム＃１１＿１はボリューム１１＿０をポイントする。ボリューム＃１１＿１はボリューム＃１１＿０を介してデータセットＡを参照する。
【０１６６】
別の実施例として、プール５０３を仮想ボリューム用の領域とスナップショット用の領域とに分けて使用量を管理してもよい。
【０１６７】
実施例２では、一つまたは複数のボリューム５１１ＰをＣＤＰ対象として保護することができる。つまり、一つのボリューム５１１Ｐだけを単独で保護することもできるし、あるいは、複数のボリューム５１１Ｐをコンシステンシグループ５２１＿ｎによりグループ化し、グループ全体として保護することもできる。即ち、グループとは、保護期間を同一に設定されるデータ、ボリュームやボリューム群で、コンシステンシグループ５２１＿ｎである。実施例１で説明した図４に示すＣＤＰグループ５２０＿ｎに相当する。
【０１６８】
図２６に、図２０の構成におけるコンシステンシグループを示す。
コンシステンシグループ５２１は、ボリューム５１１のスナップショットであるボリューム５１１Ｓの同じ世代を含む。例えば、ボリューム５１１Ｐ＿１のスナップショットボリュームであるボリューム５１１Ｓ＿１＿１と、ボリューム５１１Ｐ＿２のスナップショットボリュームであるボリューム５１１Ｓ＿２＿１がコンシステンシグループ５２１＿１に属する。コンシステンシグループ５２１ごとに目標保護期間を設定する。例えばコンシステンシグループ５２１＿１は目標保護期間3日、コンシステンシグループ５２１＿２は目標保護期間1日というように、コンシステンシグループ５２１ごとに目標保護期間を設ける。コンシステンシグループ５２１の目標保護期間に基づいて図１の処理を実施する。
【０１６９】
別の実施例として、図１のＳ１１の必要とするプールの容量を予測し算出する処理（図１４）のＳ１１１２の処理の詳細を示す。実施例２の場合、既に書き込みされたデータに対し再度書き込みする上書き処理について、スナップショットを取った他のボリュームが上書き処理される旧データ参照していれば、旧データを退避するための新たな領域が必要となる。
【０１７０】
他のボリュームが上書き処理される旧データを参照していなければ、旧データに上書きするため新たな領域は必要ないの。このことから、データへの１度の上書きの頻度と２度目以降の上書きの頻度をモニタし必要な容量を予測する。例えば、図２０のボリューム＃１のＡはボリューム＃１１から参照されている。図２３のボリューム＃１のＥはどのスナップショット世代からも参照されていない。ストレージコントローラ１０１はプール容量回収プログラム４１３を実行し、単位時間当たりの書き込み要求数と、そのうちの上書き要求数をモニタし、１回目の書き込み頻度、２回目の書き込み頻度、３回目以降の書き込み頻度を予測する。１回目の書き込みではデータ格納容量が必要であり、２回目の書き込みでも退避する分のデータ格納容量が必要となる。３回目以降はデータが格納された領域に上書きするのみのため、新たな容量は必要としない。書き込み頻度から単位時間当たりの書き込みデータ量を算出し必要なプール容量を予測する。
別の方法として、業務ボリュームの容量と同じ容量をスナップショットで必要なプール容量として設定してもよい。
【０１７１】
以上のように、プールに属する各グループの目標保護期間と保護可能期間の期間が同じようになるように、過去の書き込み要求があったデータをパージするため、期待するデータ保護期間を達成できるグループを増やしつつ、プールが満杯にならないように制御する。
【０１７２】
以上、一実施形態を説明したが、これは１つの例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。
【０１７３】
本発明は、他の種々の形態でも実施することが可能である。例えば、ライト要求のようなＩ／Ｏ要求の送信元（Ｉ／Ｏ元）は、上述の実施形態では、サーバシステム２０１であるが、ストレージシステム２００における図示しないプログラム（例えば、ＶＭ上で実行されるアプリケーションプログラム）であってもよい。
【符号の説明】
【０１７４】
１００：計算機システム、
１０１：ストレージコントローラ、
２００：ストレージシステム、
２０１：サーバシステム、
２０３：ネットワーク、
２０４：ネットワーク、
２０５：管理システム、
２１１：プロセッサ、
２１２：メモリ、
２１３：Ｉ／Ｆ、
２１４：Ｉ／Ｆ、
２１５：Ｉ／Ｆ、
２２０：ＰＤＥＶ、
４０１：ローカルメモリ、
４０２：キャッシュメモリ、
４０４：共有メモリ、
４１１：リードライトプログラム、
４１２：ＣＤＰ制御プログラム、
４１３：プール容量回収プログラム、
４１４：スナップショットプログラム、
５０１Ｐ：プライマリボリューム、
５０１Ｂ：基底ボリューム、
５０１Ｊ：ジャーナルボリューム、
５０３：プール、
５２０：ＣＤＰグループ。
【図１】
2020204932.tif 000003
【図２】
2020204932.tif 000004
【図３】
2020204932.tif 000005
【図４】
2020204932.tif 000006
【図５】
2020204932.tif 000007
【図６】
2020204932.tif 000008
【図７】
2020204932.tif 000009
【図８】
2020204932.tif 000010
【図９】
2020204932.tif 000011
【図１０】
2020204932.tif 000012
【図１１】
2020204932.tif 000013
【図１２】
2020204932.tif 000014
【図１３】
2020204932.tif 000015
【図１４】
2020204932.tif 000016
【図１５】
2020204932.tif 000017
【図１６】
2020204932.tif 000018
【図１７】
2020204932.tif 000019
【図１８】
2020204932.tif 000020
【図１９】
2020204932.tif 000021
【図２０】
2020204932.tif 000022
【図２１】
2020204932.tif 000023
【図２２】
2020204932.tif 000024
【図２３】
2020204932.tif 000025
【図２４】
2020204932.tif 000026
【図２５】
2020204932.tif 000027
【図２６】
2020204932.tif 000028