(57)【要約】【課題】  ホスト装置にとって不要なデータを記憶制御システムが管理しなくて済むようにする。【解決手段】  複数の記憶ブロックＰを有するプライマリボリューム２２Ｐと、複数の記憶ブロックＤを有する差分ボリューム２２Ｄとが備えられる。複数の記憶ブロックＤの少なくとも一つに、複数の記憶ブロックＰのいずれか一つに対応する差分データが記憶される。制御装置２１０は、どの記憶ブロックＰからホスト装置１００によりデータが読出されることが無いかを表すスナップショット管理テーブルＳ又はＣと、どの記憶ブロックＰに対応する差分データがどの記憶ブロックＤに記憶されているかが表された差分管理テーブル４００とに基づいて、ホスト装置１００にとって不要な差分データを特定し、特定された差分データを差分ボリューム２２Ｄから削除することと、差分管理テーブル４００から不要な情報要素を削除することとの少なくとも一方を行う。【選択図】図１
2006011811.tif 000002
【特許請求の範囲】
【請求項１】
データの読出しや書込みを行う外部装置に接続される記憶制御システムにおいて、
複数の第一記憶領域を有する第一の記憶デバイスと、
複数の第二記憶領域を有する第二の記憶デバイスと、
前記第一と第二の記憶デバイスのうちの少なくとも一つと前記外部装置との間で行われるデータのやり取りを制御する制御装置と
を備え、
前記複数の第二記憶領域の少なくとも一つに、前記複数の第一記憶領域のいずれか一つに対応する対応データが記憶され、
前記制御装置は、
どの第一記憶領域から前記外部装置によりデータが読出されることが無いかを表す読出し管理情報を取得し、
どの第一記憶領域に対応する対応データがどの第二記憶領域に記憶されているかが表された対応管理情報を取得し、
前記取得した読出し管理情報及び対応管理情報に基づいて、前記複数の第一記憶領域のうちのどの第一記憶領域に対応したどの第二記憶領域に、前記外部装置にとっての不要な対応データが記憶されているかを特定し、
前記特定された第二記憶領域が記憶する対応データをその第二記憶領域から除去することと、前記対応管理情報における前記特定された第二記憶領域を表す情報要素を前記対応管理情報から除去することとののうちの少なくとも一方を行う、
記憶制御システム。
【請求項２】
前記外部装置が、書込み対象データを前記記憶制御システムに送信し、且つ、前記書込み対象データの書込み先が、空きを表す空きデータが記憶されている第一記憶領域である場合において、
前記制御装置は、
第一のタイミングにおいて、前記外部装置から書込み対象データを受信した場合、前記複数の第二記憶領域の中から空きの第二記憶領域を選択し、前記選択した空きの第二記憶領域に、前記受信した書込み対象データの書込み先となる第一記憶領域の空きデータを書込み、且つ、前記受信した書込み対象データを、前記書込み先の第一記憶領域に書込み、
前記空きデータが書き込まれた第二記憶領域であって、前記空きデータを記憶していた第一記憶領域に対応した第二記憶領域が、前記複数の第二記憶領域のうちのどれであるかを表す情報要素を前記対応管理情報に書込み、
前記第一のタイミングのときにおける前記読出し管理情報を取得し、前記取得した読出し管理情報から、前記第一のタイミングのときに空きデータを記憶していた第一記憶領域が前記複数の第一記憶領域のうちのどれであるかを特定し、
前記取得した対応管理情報の中に、前記空きデータを記憶していた第一記憶領域に対応付けられた第二記憶領域を表す情報要素が含まれていれば、前記含まれている情報要素を前記対応管理情報の中から除去する、
請求項１記載の記憶制御システム。
【請求項３】
前記外部装置は、書込み対象データを前記記憶制御システムに送信し、
前記制御装置は、
第一のタイミングにおいて、前記外部装置から書込み対象データを受信した場合、前記複数の第二記憶領域の中から空きの第二記憶領域を選択し、前記選択した空きの第二記憶領域に、前記受信した書込み対象データを書込み、
前記書込み対象データに対応するデータが前記複数の第一の記憶領域のどの第一記憶領域に存在するかを特定し、前記特定された第一記憶領域に前記書込み対象データが書き込まれた第二記憶領域が対応することを表す情報要素を前記対応管理情報に書込み、
前記第一のタイミングのときにおける前記読出し管理情報を取得し、前記取得した読出し管理情報から、前記第一のタイミングのときに空きであった第一記憶領域が前記複数の第一記憶領域のうちのどれであるかを特定し、
前記取得した対応管理情報の中に、前記空きであった第一記憶領域に対応付けられた第二記憶領域を表す情報要素が含まれていれば、前記含まれている情報要素を前記対応管理情報の中から除去し、且つ、前記含まれている情報要素が表す第二記憶領域内の書込み対象データを前記第二記憶領域から除去する、
請求項１記載の記憶制御システム。
【請求項４】
前記外部装置が、書込み対象データを前記記憶制御システムに送信し、且つ、データの更新要求或いは削除要求を前記記憶制御システムに送信するようになっている場合、
前記制御装置は、
第一のタイミングにおいて、前記外部装置から書込み対象データを受信した場合、前記複数の第二記憶領域の中から空きの第二記憶領域を選択し、前記選択した空きの第二記憶領域に、前記書込み対象データの書込み先となる第一記憶領域内の第一データを書込み、且つ、前記受信した書込み対象データを、前記書込み先の第一記憶領域に書込み、
前記第一データが書き込まれた第二記憶領域であって、前記第一データを記憶していた第一記憶領域に対応した第二記憶領域が前記複数の第二記憶領域のうちのどれであるかを表す情報要素を前記対応管理情報に書込み、
前記第一のタイミングの後の第二のタイミングにおいて、データの更新要求或いは削除要求を前記外部装置から受信した場合、前記受信した更新要求或いは削除要求に応答して、前記第一記憶領域に記憶されているデータを消去し、
前記第二のタイミング以降のタイミングにおける前記読出し管理情報を取得し、前記取得した読出し管理情報から、前記複数の第一記憶領域のうちデータが記憶されていない空きの第一記憶領域を特定し、
前記取得した対応管理情報の中に、前記空きの第一記憶領域に対応付けられた第二記憶領域を表す情報要素が含まれていれば、前記含まれている情報要素を前記対応管理情報の中から除去し、且つ、前記含まれている情報要素が表す第二記憶領域内のデータを前記第二記憶領域から除去する、
請求項１記載の記憶制御システム。
【請求項５】
前記外部装置が、書込み対象データを前記記憶制御システムに送信し、且つ、データの更新要求或いは削除要求を前記記憶制御システムに送信するようになっている場合、
前記制御装置は、
第一のタイミングにおいて、前記外部装置から書込み対象データを受信した場合、前記複数の第二記憶領域の中から空きの第二記憶領域を選択し、前記選択した空きの第二記憶領域に、前記受信した書込み対象データを書込み、
前記書込み対象データに対応するデータが前記複数の第一の記憶領域のどの第一記憶領域に存在するかを特定し、前記特定された第一記憶領域に前記書込み対象データが書き込まれた第二記憶領域が対応することを表す情報要素を前記対応管理情報に書込み、
前記第一のタイミングの後の第二のタイミングにおいて、データの更新要求或いは削除要求を前記外部装置から受信した場合、前記受信した更新要求或いは削除要求に応答して、前記第一記憶領域に記憶されているデータを消去し、
前記第二のタイミング以降のタイミングにおける前記読出し管理情報を取得し、前記取得した読出し管理情報から、前記複数の第一記憶領域のうちデータが記憶されていない空きの第一記憶領域を特定し、
前記取得した対応管理情報の中に、前記空きの第一記憶領域に対応付けられた第二記憶領域を表す情報要素が含まれていれば、前記含まれている情報要素を前記対応管理情報の中から除去し、且つ、前記含まれている情報要素が表す第二記憶領域内の書込み対象データを前記第二記憶領域から除去する、
請求項１記載の記憶制御システム。
【請求項６】
複数の第一記憶領域を有する第一の記憶デバイスと、複数の第二記憶領域を有する第二の記憶デバイスとが備えられており、
前記複数の第二記憶領域の少なくとも一つに、前記複数の第一記憶領域のいずれか一つに対応する対応データを記憶するステップと、
どの第一記憶領域から前記外部装置によりデータが読出されることが無いかを表す読出し管理情報を作成するステップと、
前記読出し管理情報を取得するステップと、
どの第一記憶領域に対応する対応データがどの第二記憶領域に記憶されているかが表された対応管理情報を取得するステップと、
前記取得した読出し管理情報及び対応管理情報に基づいて、前記複数の第一記憶領域のうちのどの第一記憶領域に対応したどの第二記憶領域に、前記外部装置にとっての不要な対応データが記憶されているかを特定するステップと、
前記特定された第二記憶領域が記憶する対応データその第二記憶領域から除去することと、前記対応管理情報における前記特定された第二記憶領域を表す情報要素を前記対応管理情報から除去することとののうちの少なくとも一方を行うステップと
を有する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御システム及び記憶制御方法に関する。
【背景技術】
【０００２】
例えば、ＲＡＩＤ（Redundant Array of Independent Inexpensive Disks）システム等のような、アレイ状に配列された複数の物理的な記憶デバイス（例えばハードディスクドライブ）を備える記憶制御システムが知られている。その記憶制御システムが備える複数の記憶デバイスには、論理的な記憶デバイスである論理ボリュームが１又は複数個準備される。記憶制御システムには、一般に、ホスト装置が接続される。記憶制御システムは、ホスト装置からライト要求を受信し、そのライト要求に応答して、ホスト装置から受信したデータを論理ボリュームに書き込んだり、リード要求を受信し、そのリード要求に応答して、論理ボリュームから読み出したデータをホスト装置に送信したりする。
【０００３】
記憶制御システムとホスト装置とを備えるコンピュータシステムにおいては、記憶制御システムに記憶されるデータをバックアップする場合などに、元のデータを記憶した論理ボリュームの複製を生成する場合がある。この場合の複製ボリュームの生成において、費用面からの複製のための記憶領域の抑制や、更新されたボリュームを複製ボリュームより元に戻す場合（リストア）の運用面からの時間短縮などを目的として、更新された差分データを複製として記憶制御システム内に記憶するスナップショットと呼ばれる技術が知られている。すなわち、このような記憶制御システムは、或る時点における論理ボリューム内のデータ構成を管理するために、その論理ボリュームのスナップショットを作成することがある（例えば特開２００１−２１６１８５号公報）。
【０００４】
【特許文献１】特開２００１−２１６１８５号公報。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
論理ボリュームには、例えば、プライマリボリュームとセカンダリボリュームとの２種類がある。プライマリボリュームとセカンダリボリュームとは、互いに関連付けられることがある（例えばペア状態にされることがある）。スナップショットの作成では、例えば、記憶制御システムは、ホスト装置から新たなデータ（以下、更新データ）を受信して論理ボリュームに書込む場合、その更新データそれ自体、或いは、更新データに上書きされる元のデータを、差分データとして、特定のセカンダリボリューム（以下、便宜上「差分ボリューム」と呼ぶ）に書込む。このような方法でスナップショットを作成していく場合、更新データが書き込まれる都度に、差分データが履歴として差分ボリュームに蓄積されていくことになる（或いは、旧い差分データが新しい差分データに上書きされて消去されることがある）。このため、スナップショットの作成が開始されてから、スナップショットが解除される（換言すれば、全ての差分データが破棄される）までは、差分データが保持されている。
【０００６】
一方、プライマリボリューム内のデータを、ホスト装置がそのプライマリボリュームのファイルシステムを用いて管理する場合があるが、その場合、例えば、プライマリボリューム内のデータの破棄は、ホスト装置では、ファイルシステムの変更のみが実施され、記憶制御システムでは、そのファイルシステムに対応するデータの破棄のみが実施される。このため、ホスト装置にとって不要になったデータが、記憶制御システムでは差分ボリューム内に差分データとして残ったままになってしまうことがある。このような状況は、上記のようにデータの破棄に限らず、データの更新の場合（例えば、大サイズのデータを小サイズのデータに更新する場合）にも生じ得る。
【０００７】
従って、本発明の目的は、ホスト装置にとって不要なデータを記憶制御システムが管理しなくて済むようにすることにある。
【０００８】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本発明に従う記憶制御システムは、データの読出しや書込みを行う外部装置に接続される記憶制御システムであって、複数の第一記憶領域を有する第一の記憶デバイスと、複数の第二記憶領域を有する第二の記憶デバイスと、前記第一と第二の記憶デバイスのうちの少なくとも一つと前記外部装置との間で行われるデータのやり取りを制御する制御装置とを備える。前記複数の第二記憶領域の少なくとも一つに、前記複数の第一記憶領域のいずれか一つに対応する対応データが記憶される。前記制御装置は、どの第一記憶領域から前記外部装置によりデータが読出されることが無いかを表す読出し管理情報を取得する。また、制御装置は、どの第一記憶領域に対応する対応データがどの第二記憶領域に記憶されているかが表された対応管理情報を取得する（例えば、記憶制御システム内の所定の記憶域（例えばメモリ）から取得する）。また、制御装置は、前記取得した読出し管理情報及び対応管理情報に基づいて、前記複数の第一記憶領域のうちのどの第一記憶領域に対応したどの第二記憶領域に、前記外部装置にとっての不要な対応データが記憶されているかを特定する。また、制御装置は、前記特定された第二記憶領域が記憶する対応データをその第二記憶領域から除去することと、前記対応管理情報における前記特定された第二記憶領域を表す情報要素を前記対応管理情報から除去することとののうちの少なくとも一方を行う。
【００１０】
なお、前記第一と第二の記憶デバイスのうちの少なくとも一つは、例えば、物理的な記憶デバイスであっても良いし（例えばメモリ或いはハードディスク）、その物理的な記憶デバイスに用意される論理的な記憶デバイス（例えば論理ボリューム）であっても良い。
【００１１】
また、前記第一記憶領域及び前記第二記憶領域のうちの少なくとも一つは、例えば、ハードディスク上で管理されるセクタ或いはトラックであっても良いし、論理ボリュームにおける１以上のロジカルブロックであっても良い。
【００１２】
また、制御装置は、例えば、コンピュータプログラムを記憶した記憶媒体（例えばメモリ）と、そのコンピュータプログラムを読込むことによって動作するプロセッサ（例えばＣＰＵ）とを備えた装置とすることができる。また、制御装置が行う上述した処理は、１又は複数のコンピュータプログラムを読込んだプロセッサによって行われても良い。
【００１３】
また、前記対応データは、例えば、後に詳述する差分データであっても良い。
【００１４】
また、前記読出し管理情報は、例えば、それが生成される時点における、各第一記憶領域毎のデータの有無情報であっても良い。具体的には、例えば、前記読出し管理情報は、後に詳述するスナップショット取得時のスナップショット管理テーブル及び余剰差分管理破棄時（例えば現時点）のスナップショット管理テーブルのうちの一方又は双方であっても良い。
【００１５】
また、前記対応管理情報は、例えば、各第一記憶領域毎に、その第一記憶領域の位置と、その第一記憶領域に対応する対応データが記憶された第二記憶領域の位置とが記録された情報であっても良い。具体的には、例えば、前記対応管理情報は、後に詳述する差分管理テーブルであっても良い。
【００１６】
また、前記読出し管理情報及び前記対応管理情報のうちの少なくとも一方は、例えば、前記外部装置及び前記記憶制御システムの一方又は双方が生成しても良い。
【００１７】
上記記憶制御システムの第一の実施態様では、前記外部装置は、書込み対象データを前記記憶制御システムに送信するようになっている。また、前記書込み対象データの書込み先が、空きを表す空きデータが記憶されている第一記憶領域である。この場合、前記制御装置は、以下の処理を実行する。例えば、制御装置は、第一のタイミングにおいて、前記外部装置から書込み対象データを受信した場合、前記複数の第二記憶領域の中から空きの第二記憶領域を選択し、前記選択した空きの第二記憶領域に、前記受信した書込み対象データの書込み先となる第一記憶領域の空きデータを書込み、且つ、前記受信した書込み対象データを、前記書込み先の第一記憶領域に書込む。また、制御装置は、前記空きデータが書き込まれた第二記憶領域であって、前記空きデータを記憶していた第一記憶領域に対応した第二記憶領域が、前記複数の第二記憶領域のうちのどれであるかを表す情報要素を前記対応管理情報に書込む。また、制御装置は、前記第一のタイミングのときにおける前記読出し管理情報を取得し、前記取得した読出し管理情報から、前記第一のタイミングのときに空きデータを記憶していた第一記憶領域が前記複数の第一記憶領域のうちのどれであるかを特定する。また、制御装置は、前記取得した対応管理情報の中に、前記空きデータを記憶していた第一記憶領域に対応付けられた第二記憶領域を表す情報要素が含まれていれば、前記含まれている情報要素を前記対応管理情報の中から除去する。
【００１８】
なお、第一のタイミングは、例えば、スナップショット取得処理が開始されて以降のどのスナップショット取得時であってもよい。また、第一のタイミングにおける前記読出し管理情報は、例えば、前記外部装置及び前記記憶制御システムの一方又は双方が生成しても良い。
【００１９】
上記記憶制御システムの第二の実施態様では、前記外部装置は、書込み対象データを前記記憶制御システムに送信するようになっており、前記制御装置は、第一のタイミングにおいて、前記外部装置から書込み対象データを受信した場合、前記複数の第二記憶領域の中から空きの第二記憶領域を選択し、前記選択した空きの第二記憶領域に、前記受信した書込み対象データを書込む。また、制御装置は、前記書込み対象データに対応するデータが前記複数の第一の記憶領域のどの第一記憶領域に存在するかを特定し、前記特定された第一記憶領域に前記書込み対象データが書き込まれた第二記憶領域が対応することを表す情報要素（例えば位置情報）を前記対応管理情報に書込む。また、制御装置は、前記第一のタイミングのときにおける前記読出し管理情報を取得し、前記取得した読出し管理情報から、前記第一のタイミングのときに空きであった第一記憶領域が前記複数の第一記憶領域のうちのどれであるかを特定する。また、制御装置は、前記取得した対応管理情報の中に、前記空きであった第一記憶領域に対応付けられた第二記憶領域を表す情報要素が含まれていれば、前記含まれている情報要素を前記対応管理情報の中から除去し、且つ、前記含まれている情報要素が表す第二記憶領域内の書込み対象データを前記第二記憶領域から除去する。この場合、その書込み対象データは、その第二記憶領域に対応する第一記憶領域にコピーされることで、その第二記憶領域から除去されても良い。
【００２０】
上記記憶制御システムの第三の実施態様では、前記外部装置が、書込み対象データを前記記憶制御システムに送信し、且つ、データの更新要求（例えばデータファイルの上書き要求）或いは削除要求（例えばデータファイルの削除要求）を前記記憶制御システムに送信するようになっている。前記制御装置は、第一のタイミングにおいて、前記外部装置から書込み対象データを受信した場合、前記複数の第二記憶領域の中から空きの第二記憶領域を選択し、前記選択した空きの第二記憶領域に、前記書込み対象データの書込み先となる第一記憶領域の第一データを書込み、且つ、前記受信した書込み対象データを、前記書込み先の第一記憶領域に書込む。また、制御装置は、前記第一データが書き込まれた第二記憶領域であって、前記第一データを記憶していた第一記憶領域に対応した第二記憶領域が前記複数の第二記憶領域のうちのどれであるかを表す情報要素を前記対応管理情報に書込む。また、制御装置は、前記第一のタイミングの後の第二のタイミングにおいて、データの更新要求或いは削除要求を前記外部装置から受信した場合、前記受信した更新要求或いは削除要求に応答して、前記第一記憶領域に記憶されているデータを消去する。また、制御装置は、前記第二のタイミング以降のタイミングにおける前記読出し管理情報を取得し、前記取得した読出し管理情報から、前記複数の第一記憶領域のうちデータが記憶されていない空きの第一記憶領域を特定する。また、制御装置は、前記取得した対応管理情報の中に、前記空きの第一記憶領域に対応付けられた第二記憶領域を表す情報要素が含まれていれば、前記含まれている情報要素を前記対応管理情報の中から除去し、且つ、前記含まれている情報要素が表す第二記憶領域内のデータを前記第二記憶領域から除去する。
【００２１】
なお、前記第一のタイミングとは、例えば、第一記憶領域に存在するデータのバックアップを取ることを指定された時点であってもよい（具体的には、例えば、スナップショット取得処理が開始された以降のどのスナップショット取得時点であってもよい）。また、前記第二のタイミングとは、例えば、前記制御装置が前記外部装置からデータの更新要求或いは削除要求を受信する等により、前記制御装置が前記複数の第一記憶領域の少なくとも１つからデータを消去した時点であっても良い。また、前記第二のタイミング以降のタイミングとは、例えば、後述する余剰差分管理破棄時であっても良い。
【００２２】
上記記憶制御システムの第四の実施態様では、前記外部装置が、書込み対象データを前記記憶制御システムに送信し、且つ、データの更新要求或いは削除要求を前記記憶制御システムに送信するようになっている。前記制御装置は、第一のタイミングにおいて、前記外部装置から書込み対象データを受信した場合、前記複数の第二記憶領域の中から空きの第二記憶領域を選択し、前記選択した空きの第二記憶領域に、前記受信した書込み対象データを書込む。また、制御装置は、前記書込み対象データに対応するデータが前記複数の第一の記憶領域のどの第一記憶領域に存在するかを特定し、前記特定された第一記憶領域に前記書込み対象データが書き込まれた第二記憶領域が対応することを表す情報要素を前記対応管理情報に書込む。また、制御装置は、前記第一のタイミングの後の第二のタイミングにおいて、データの更新要求或いは削除要求を前記外部装置から受信した場合、前記受信した更新要求或いは削除要求に応答して、前記第一記憶領域に記憶されているデータを消去する。また、制御装置は、前記第二のタイミング以降のタイミングにおける前記読出し管理情報を取得し、前記取得した読出し管理情報から、前記複数の第一記憶領域のうちデータが記憶されていない空きの第一記憶領域を特定する。また、制御装置は、前記取得した対応管理情報の中に、前記空きの第一記憶領域に対応付けられた第二記憶領域の情報要素が含まれていれば、前記含まれている情報を前記対応管理情報の中から除去し、且つ、前記含まれている情報要素が表す第二記憶領域内の書込み対象データを前記第二記憶領域から除去する。この場合、その書込み対象データは、その第二記憶領域に対応する第一記憶領域にコピーされることで、その第二記憶領域から除去されても良い。
【００２３】
本発明に従う記憶制御方法は、複数の第一記憶領域を有する第一の記憶デバイスと、複数の第二記憶領域を有する第二の記憶デバイスとが備えられている場合、前記複数の第二記憶領域の少なくとも一つに、前記複数の第一記憶領域のいずれか一つに対応する対応データを記憶するステップと、どの第一記憶領域から前記外部装置によりデータが読出されることが無いかを表す読出し管理情報を作成するステップと、前記読出し管理情報を取得するステップと、どの第一記憶領域に対応する対応データがどの第二記憶領域に記憶されているかが表された対応管理情報を取得するステップと、前記取得した読出し管理情報及び対応管理情報に基づいて、前記複数の第一記憶領域のうちのどの第一記憶領域に対応したどの第二記憶領域に、前記外部装置にとっての不要な対応データが記憶されているかを特定するステップと、前記特定された第二記憶領域が記憶する対応データ、及び、前記対応管理情報における前記特定された第二記憶領域を表す情報のうちの少なくともいずれかを破棄するステップとを有する。
【発明の効果】
【００２４】
本発明によれば、ホスト装置にとって不要なデータを記憶制御システムが管理しなくて済む。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照して、本発明の一実施形態について説明する。
【００２６】
図１は、本発明の一実施形態に係るコンピュータシステムの構成例を示す。
【００２７】
このコンピュータシステム１には、ホスト装置１００と、そのホスト装置１００に通信ネットワークＣＮを介して接続された記憶制御システム２００とが備えられる。ホスト装置１００も記憶制御システム２００も、便宜上１台しか図示しないが、いずれも、１台に限らず複数台備えられていても良い。
【００２８】
ホスト装置１００は、例えば、ＣＰＵ（Central Processing Unit）１０１、記憶装置（例えばメモリ或いはハードディスク）１０２、通信ネットワークＣＮに接続されるインターフェース装置（Ｉ／Ｆと図示）１０３等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。記憶装置１０２には、所定の制御を行う制御プログラム１０６や、オペレーティングシステム（以下、ＯＳ）１０７が格納されており、ＣＰＵ１０１が、制御プログラム１０６やＯＳ１０７を読込むことにより、ホスト装置１００が、スナップショットに関する制御を行うことができる。具体的には、例えば、ＣＰＵ１０１に読み込まれた制御プログラム１０６が、スナップショット取得時及び余剰差分管理破棄時の各々の時点で、後述するスナップショット管理テーブルを作成して記憶装置１０２に登録し、それらをＩ／Ｆ１０３を介して記憶制御システム２００に送信する。なお、以下、スナップショット取得時点のスナップショット管理テーブルを「スナップショット管理テーブルＳ」と言い、余剰差分管理破棄時点のスナップショット管理テーブルを「スナップショット管理テーブルＣ」と言う。また、上記のＯＳ１０７としては、ウィンドウズ（登録商標）或いはリナックス（登録商標）等を採用することができる。また、余剰差分管理破棄時とは、例えば、後述する余剰差分管理破棄のための処理を行おうとする現時点のことを言う。
【００２９】
通信ネットワークＣＮは、どのような種類の通信ネットワークでも良く、例えば、ＬＡＮ或いはＳＡＮを採用することができる。
【００３０】
記憶制御システム２００は、複数の物理的な記憶デバイス２２０と、それらの記憶デバイス２２０に対するデータの書込みや読出し等を制御する制御装置２１０とを備えている。
【００３１】
複数の記憶デバイス２２０上には、複数の論理的な記憶デバイス（以下、論理ボリューム）が備えられる。複数の論理ボリュームには、ホスト装置１００がデータの記憶に使用する第一の記憶ボリュームであるプライマリボリューム２２Ｐと、スナップショット取得時以降に更新データの差分を記憶するための第二の記憶ボリュームである差分ボリューム（セカンダリボリューム）２３Ｄとがある。プライマリボリューム２２Ｐと差分ボリューム２３Ｄとは互いに関連付けられており、それに関する情報は、例えば、制御装置２１０のメモリ２１２で管理されている（例えば、プライマリボリューム２２ＰのボリュームＩＤと、差分ボリューム２３ＤのボリュームＩＤとが互いにメモリ２１２上で対応付けられている）。プライマリボリューム２２Ｐには、プライマリボリューム２２Ｐ内のデータを管理するためのファイルシステム２５Ｐが格納されている。差分ボリューム２２Ｄにも、同様に、差分ボリューム２２Ｄ内のデータを管理するためのファイルシステム２５Ｄが格納されている。
【００３２】
制御装置２１０には、通信ネットワークＣＮを介してホスト装置１００に接続されるホストインターフェース装置（ホストＩ／Ｆと図示）２１３と、複数の記憶デバイス２２０に接続されデータの書き込みや読出しを行うディスクインターフェース装置（ディスクＩ／Ｆと図示）２１４と、メモリ２１２と、記憶制御システム２００の各種制御を実施するＣＰＵ２１１とが備えられる。メモリ２１２には、例えば、スナップショットの制御のためのコンピュータプログラムであるスナップショット制御プログラム３００、差分管理テーブル４００、ホスト装置１００から受信したスナップショット管理テーブルＳ及びＣなどの情報が格納される。なお、スナップショット管理テーブルＳ及びＣは、ホスト装置１００において保持することも可能であり、さらに、スナップショット取得時および余剰差分管理破棄時に限らず、スナップショット取得後のある時間経過後の時点など、複数持つ場合もある。
【００３３】
以上が、コンピュータシステム１の概要である。なお、このコンピュータシステム１において、例えば、メモリ２１２は、装置に対して着脱自在であっても良いし、メモリに限らずハードディスク等の別種の記憶装置であっても良い。また、ＣＰＵ１０１及び２１１の少なくとも一方は、一つ又は複数個のＣＰＵで構成されていても良い。
【００３４】
図２Ａは、差分管理テーブル４００の構成例を示す。
【００３５】
本実施形態では、記憶制御システム２００は、論理ボリューム（少なくともプライマリボリューム２２Ｐ）のデータ記憶領域を、所定のデータサイズ（例えば５１２バイト）の記憶ブロックに区分し管理している。その記憶ブロックは、論理ボリュームのLBA(Logical Block Address)そのものであったり、LBAの幾つかの組み合わせであったりする。
【００３６】
図２Ａに示す差分管理テーブル４００は、プライマリボリューム２２Ｐの記憶ブロック全てに且つ一義に対応したテーブルブロックＴＢ１を持つ。各テーブルブロックＴＢ１は、図２Ａでは、横軸ｘおよび縦軸ｙの組み合わせで表現されており、例えば、（x2:y4）のように表現される。テーブルブロックＴＢ１に記録されるデータ（例えば、（x2:y4）に書き込まれたデータi）は、プライマリボリューム２２Ｐ上の或る記憶ブロックのスナップショット取得後の差分データとして差分ボリューム２２Ｄ上のどの記憶ブロックに格納されたかを表す位置座標（差分ボリューム２２Ｄにおける位置座表）をしめす。なお、差分管理テーブル４００において、データが存在しないテーブルブロックＴＢ１（例えば（x4:y1））は、そのテーブルブロックＴＢ１に対応するプライマリボリューム２２Ｐの記憶ブロックに対応した差分データが差分ボリューム２２Ｄ内に存在しないことを示す。
【００３７】
本実施形態におけるスナップショット管理では、上述のような差分管理テーブル４００をスナップショット管理プログラム３００が利用することで、バックアップ或いはリストアが実現される。以下、その具体例を説明する。
【００３８】
例えば、スナップショット取得時点後、ホスト装置１００からライト要求を受信した場合（換言すれば、ホスト装置１００においてデータ更新が発生した場合）、ＣＰＵ２１１に読込まれたスナップショット制御プログラム３００が、プライマリボリューム２２Ｐに記憶される或るデータに対応した差分データを作成し、差分ボリューム２２Ｄに書込む。また、このとき、スナップショット制御プログラム３００は、その差分データに対応するデータを記憶しているプライマリボリューム２２Ｐの記憶ブロックに対応した差分管理テーブル４００上のテーブルブロックＴＢ１（例えば（x3:y2））に、その差分データの書込み先となった差分ボリューム２２Ｄ上の記憶ブロックの位置座標を記録する。また、その際、一旦差分管理されたプライマリボリューム２２Ｐ上の記憶ブロックに対応した差分データについては、それ以降の更新の場合にも、前回使用された差分ボリューム２２Ｄの位置座標が使用され、且つ、差分管理テーブル４００上の異なるテーブルブロックＴＢ１に記録される位置座標（差分ボリューム２３Ｄの記憶ブロックの位置座標）は、重複しないように、スナップショット制御プログラム３００により制御される。
【００３９】
なお、本実施形態では、差分データとしては、以下の２種類のうち少なくとも一方を採用することができる。例えば、第１種の差分データは、ホスト装置１００からの新たなデータ（以下、更新データ）がプライマリボリューム２２Ｐ上の或る記憶ブロックに書き込まれる場合、その記憶ブロックに書き込まれていた元のデータのことである。第２種の差分データは、更新データが差分ボリューム２２Ｄの或る記憶ブロックに書き込まれる場合、その更新データそれ自体である。すなわち、第１種の差分データが採用される場合は、ホスト装置１００からの更新データはプライマリボリューム２２Ｐに記憶されるが、第２種の差分データが採用される場合は、更新データはプライマリボリューム２２Ｐに記憶されず、差分ボリューム２２Ｄに記憶される。
【００４０】
さて、スナップショットの解除（換言すれば、差分管理情報の破棄）は、スナップショット制御プログラム３００が、差分管理テーブル４００上の全てのテーブルブロックＴＢ１内の位置座標を破棄する（或いは、それに加えて、更に、差分ボリューム２２Ｄ内のデータを全て削除する）ことで行われる。これにより、次のスナップショット取得時点からは、差分データ無しの状態から、再度、差分管理が実行される。
【００４１】
次に、上記のスナップショット管理処理と、バックアップ処理或いはリストア処理との関連を説明する。
【００４２】
スナップショット取得後、制御装置２１０は、ホスト装置１００からリード要求を受けた場合、上記の差分管理方法において更新データをプライマリボリューム２２Ｐに書き込んだ場合には（つまり、第１種の差分データが採用された場合には）、ホスト装置１００からリード要求されたデータをプライマリボリューム２２Ｐから読み出してホスト装置１００に返信する。
【００４３】
一方、制御装置２１０は、ホスト装置１００からリード要求を受けた場合、上記の差分管理方法において差分ボリューム２２Ｄに更新データを書込んだ場合には（つまり、第２種の差分データが採用された場合には）、以下のような処理を行う。すなわち、制御装置２１０は、ホスト装置１００からリード要求されたプライマリボリューム２２Ｐの記憶ブロックに対応する差分管理テーブル４００上のテーブルブロックＴＢ１をチェックし、そのテーブルブロックＴＢ１に、差分ボリューム２２Ｄの位置座標が記録されていれば、その位置座標が表す差分ボリューム２２Ｄの記憶ブロックからデータを読み出してホスト装置１００に返信する。もし、上記対応するテーブルブロックＴＢ１に、差分ボリューム２２Ｄの位置座標が記録されていなければ、制御装置２１０は、上記リード要求されたプライマリボリューム２２Ｐの記憶ブロックからデータを読み出してホスト装置１００に返信する。
【００４４】
以上のようにして、スナップショット取得後も、ホスト装置１００は、最新の更新データを記憶制御システム２００（具体的は、プライマリボリューム２２Ｐ及び差分ボリューム２２Ｄのいずれか一方）から読み出すことが可能となっている。
【００４５】
ところで、スナップショット取得時点以降の差分管理により、更新データによって更新されていない元のデータ（例えば、スナップショット取得時点の元のデータ）が、バックアップとして、記憶制御システム２００に保持されている。この元のデータは、例えば、ホスト装置１００からのリード要求に対する返信の方法を変更したり、更新データを破棄したりすることにより、リストアすることが可能である。以下、更新データを破棄することで上記元のデータをリストアする場合の一例を説明する。
【００４６】
例えば、更新データを差分ボリューム２２Ｄに記憶する差分管理方法においては、スナップショット管理プログラム３００が、リストア処理として、差分管理テーブル４００に記録されている全ての位置座標をリセット（破棄）することで、プライマリボリューム２２Ｐから元のデータ（スナップショット取得時点以降の特定の時点のデータ）をバックアップとして読出すことができる。
【００４７】
また、例えば、更新データをプライマリボリューム２２Ｐの記憶ブロックに書込み、その記憶ブロックに記憶されていた元のデータを差分ボリューム２２Ｄに記憶する差分管理方法においては、スナップショット管理プログラム３００が、リストア処理として、差分管理テーブル４００から識別される差分ボリューム２２Ｄ内の全ての元のデータを、プライマリボリューム２２Ｐにコピーすることにより、スナップショット取得時点以降の元のデータをプライマリボリューム２２Ｐに復元される。そして、その後、スナップショット管理プログラム３００が、差分管理テーブル４００に記録されている全ての位置座標を破棄することで、プライマリボリューム２２Ｐから元のデータをバックアップデータとして読み出すことが可能になる。
【００４８】
以上、本実施形態におけるスナップショット管理の概要である。このスナップショット管理の説明によれば、差分データの管理は記憶制御システム２００内でのみ行われているため、ホスト装置１００にとって不要となったデータがどれかについてまでは判別することができない。そのため、不要なデータに記憶リソースが費やされ、さらに、リストア処理の場合には、処理に余計な時間がかかったりする場合がある。
【００４９】
以下、ホスト装置１００にとって不要となるデータが如何にして発生するかを、ホスト装置１００のデータ管理方法を述べた上で説明する。なお、ホスト装置１００が行うデータ管理には、データベースなどのアプリケーションによるものや、ＯＳ１０７が管理しているファイルシステム２５Ｐ、２５Ｄによるもの等があるが、以下、ファイルシステム２５Ｐ、２５Ｄを用いる場合を例にとり説明する。
【００５０】
図２Ｂは、本実施形態におけるファイルシステムの構造例を示す。なお、ファイルシステム２５Ｐも２５Ｄも構成は実質的に同じなので、２５Ｐを代表的に例に採り説明する。
【００５１】
図２Ｂに示すような構造をしたファイルシステム２５Ｐがプライマリボリューム２２Ｐに記録されることにより、ホスト装置１００のＯＳ１０７は、プライマリボリューム２２Ｐ内のデータを管理することができる。ファイルシステム２５Ｐには、例えば、スーパーブロック９００、ブロックグループディスクリプタ９１０、データブロックビットマップ９２０、ｉノードビットマップ９３０、ｉノードテーブル９４０及びデータブロック９５０が備えられている。スーパーブロック９００やブロックグループディスクリプタ９１０などに、そのファイルシステム２５Ｐに関する情報が記録され、関連する一連のデータ、すなわちファイルの情報がiノードテーブル９４０に記録される。また、そのファイルの具体的なデータは、データブロック９５０に記録される。iノードテーブル９３０内の一つ一つのiノード情報が、一つのファイルに対応し、そのファイルの具体的なデータのデータブロック９５０での位置情報が、iノードに記録される。データブロック９５０は、ファイルの具体的なデータを格納するために一定のサイズを有し、例えば、論理ボリュームのLBAのサイズを幾つか集めた単位に分割されるブロックから構成されている。データブロックビットマップ９２０には、そのブロックの使用有無が、そのブロックに対応したビットマップとして記録される。
【００５２】
ホスト装置１００のＯＳ１０７が、ファイルシステム２５Ｐ上にデータを記録する場合、iノードテーブル９４０の一つのiノードをファイルとして割り当て、ファイルに関する属性（例えばファイル名）をそのiノードに記録し、データブロックビットマップ９２０よりデータブロック９５０上の空きブロックを探し、探し出されたその空きブロックにデータを記録する。そして、ＯＳ１０７は、その空きブロックの位置情報をiノードに記録し、データの更新時には、iノードに記録されている情報からデータの記録位置を割り出して、データの更新を実行する。
【００５３】
また、ＯＳ１０７が、ファイルそれ自体を削除（又はファイルの一部を削除）する場合、iノードそれ自体の情報を削除（又は、iノードに記録されている、削除するデータに対応した位置情報）を削除し、且つ、その処理により空きエリアとなったデータブロック９５０内のブロックに対応するデータブロックビットマップ９２０上の情報を使用無し(空き)に変更する。
【００５４】
以上のようなＯＳ１０７の処理によって、データブロック９５０上の空きである位置のデータは、次にデータを書き込むまでは使用されない状態となり、そこにどのようなデータが記録されても良いことになる。
【００５５】
ここで、上述したスナップショット管理において、データブロック９５０上の空きエリアに、スナップショット取得時点以降にホスト装置１００上でのファイルの更新によりデータが記録された場合、記憶制御システム２００によって、そのデータに関する差分データが差分ボリューム２２Ｄに記憶される。
【００５６】
図３Ａは、更新前の元のデータが差分ボリューム２２Ｄに書き込まれる場合に、ホスト装置１００にとって不要なデータが発生してしまう場合の一例を示す。
【００５７】
図３Ａに示すように、更新データＤ１をプライマリボリューム２２Ｐの記憶ブロックＰに書込むスナップショット管理処理では、更新前の空きエリアのデータＤ２が、差分データとして差分ボリューム２２Ｄの記憶ブロックＤに書き込まれる。また、スナップショット制御プログラム３００によって、その空きエリア（例えばx3:y2）に対応した、差分管理テーブル４００上のテーブルブロックＴＢ１（例えば（x3:y2））に、その差分データＤ２の書込み先である差分ボリューム２２Ｄにおける記憶ブロック位置座標（例えば（x2:y3））が書き込まれる。また、スナップショット制御プログラム３００によって、更新データＤ１が、プライマリボリューム２２Ｐの上記空き記憶ブロックに書き込まれる。それにより、ＯＳ１０７によって、データブロックビットマップ９２０上のその空きエリアに対応するビットマップが、空き状態（例えば０）から使用状態（例えば１）に変更される。
【００５８】
なお、図３Ａにおけるスナップショット管理処理では、差分ボリューム２２Ｄに格納された差分データＤ２は、ファイルシステム２５Ｐにおいてはデータブロック９５０の空きエリアのデータなので、実際にはリストア処理においてリードされることは無い。また、例えば、プライマリボリューム２２Ｐにおける同一の記憶ブロックＰに、新たな更新データＤ１が書き込まれる都度に、更新前のデータＤ２は、差分ボリューム２２Ｄの或る記憶ブロックＤに格納されている旧い更新前データＤ２を上書きするか、或いは、上書きすることなく別の記憶ブロックＤに格納されても良い。後者の場合、それに伴い、新たな差分管理テーブル４００が準備されて、各データの更新時毎に、差分管理が行われても良い。
【００５９】
図３Ｂは、更新データが差分ボリューム２２Ｄに書き込まれる場合に、ホスト装置１００にとって不要なデータが発生してしまう場合の一例を示す。
【００６０】
図３Ｂに示すように、更新データＤ１を差分ボリューム２２Ｄに書込むスナップショット管理処理では、プライマリボリューム２２Ｐに空きエリアのデータＤ２が保持されたままになる。一方、そのデータＤ２に対応した更新データＤ１は、スナップショット制御プログラム３００によって、差分ボリューム２２Ｄの或る記憶ブロック（例えば空き状態の記憶ブロック）に書き込まれる。その際、スナップショット制御プログラム３００は、更新データＤ１に対応したデータＤ２を有する空きエリア（プライマリボリューム２２Ｐの空きエリア、例えばx3:y2）に対応した、差分管理テーブル４００上のテーブルブロックＴＢ１（例えば（x3:y2））に、その差分データＤ１の書込み先である差分ボリューム２２Ｄにおける記憶ブロック位置座標（例えば（x2:y3））を書き込む。
【００６１】
なお、図３Ｂに示すスナップショット管理処理が行われた場合、リストア処理では、空きエリアのデータＤ２はリードされることは無い。また、リストア処理以外の通常のホスト装置１００からのリード処理では、更新データＤ１がリードされることになるので、空きエリアのデータＤ２は必要ない。
【００６２】
以上のように、スナップショット管理処理において、ファイルシステム２５Ｐのデータブロック９５０上で空きであったエリアのデータについて差分管理することは、余剰な差分管理となる。
【００６３】
図４Ａは、更新前の元のデータが差分ボリューム２２Ｄに書き込まれる場合に、ホスト装置１００にとって不要なデータが発生してしまう場合の別の例を示す。具体的には、図４Ａは、その場合において、スナップショット取得時に、ファイルシステム２５Ｐのデータブロック９５０上のあるエリアが使用中であり、且つ、スナップショット取得後に、差分管理されていた、プライマリボリューム２２Ｐの記憶ブロック（以下、プライマリ記憶ブロック）が、その後にファイルの更新（例えば削除）で空きとなった場合の例を示す。
【００６４】
更新前の元のデータが差分ボリューム２２Ｄに書き込まれる場合、更新データＤ１はプライマリボリューム２２Ｐに書き込まれる。その後、図４Ａに示すように、ホスト装置１００のＯＳ１０７が、例えば更新データＤ１をプライマリ記憶ブロックから削除する場合、そのプライマリ記憶ブロックに対応したデータブロック９５０のエリアを空きエリアとし、その空きエリアに対応したビットマップを使用中から空き状態に変更する。この結果、その後、通常時（例えばリストア時ではない場合）には、ホスト装置１００のＯＳ１０７は、空きとなったプライマリ記憶ブロックから、データをリードすることは無い。このため、その空きとなったプライマリ記憶ブロックについて、差分ボリューム２２Ｄにおける位置座標（以下、差分位置座標）が差分管理テーブル４００で管理されていても、通常時には、その差分位置座標に対応する、差分ボリューム２２Ｄ内の記憶ブロック（以下、差分記憶ブロック）から、更新前の元のデータＤ２がＯＳ１０７に読出されることも無い。
【００６５】
図４Ｂは、更新データが差分ボリューム２２Ｄに書き込まれる場合に、ホスト装置１００にとって不要なデータが発生してしまう場合の別の例を示す。具体的には、図４Ｂは、その場合において、その場合において、スナップショット取得時に、ファイルシステム２５Ｐのデータブロック９５０上のあるエリアが使用中であり、且つ、スナップショット取得後に、差分管理されていた記憶ブロック（プライマリボリューム２２Ｐの記憶ブロック）がその後にファイルの更新（例えば削除）で空きとなった場合の例を示す。
【００６６】
図４Ｂに示すように、ホスト装置１００のＯＳ１０７が、例えば更新前の元のデータＤ２をプライマリボリューム２２Ｐから削除する場合、元のデータＤ２の記憶ブロックに対応したデータブロック９５０のエリアを空きエリアとし、その空きエリアに対応したビットマップを使用中から空き状態に変更する。この結果、その後、通常時（例えばリストア時ではない場合）には、ホスト装置１００のＯＳ１０７は、その空きエリアに対応したプライマリ記憶ブロックから、データをリードすることは無い。このため、その空きとなったプライマリ記憶ブロックについて差分位置座標が差分管理テーブル４００で管理されていても、通常時には、その差分位置座標に対応する差分記憶ブロックから、削除された元のデータＤ２に対応する更新データＤ１がＯＳ１０７に読み出されることも無い。また、リストア時のホスト装置１００からのリード要求では、更新前の元のデータＤ２をリードさせるので、やはり、更新データＤ１は必要ない。
【００６７】
以上のように、スナップショット取得時に、ファイルシステム２５Ｐにおけるデータブロック９５０の或るエリアが使用中になっていたとしても、その後にそのエリアが空きエリアとなった場合には、その空きエリアに対応したプライマリ記憶ブロックについて、差分管理テーブル４００で差分管理することは、無駄となる。
【００６８】
そこで、本実施形態では、以下に詳述するようなスナップショット管理テーブルを準備し、且つ、そのスナップショット管理テーブルを用いて後述する処理を行うことにより、上記のような無駄な差分管理を行うことを解消することができる。以下、その仕組みについて詳細に説明する。
【００６９】
図５は、スナップショット管理テーブルの構成例を示す。なお、スナップショット取得時のスナップショット管理テーブルＳも余剰差分管理破棄時のスナップショット管理テーブルＣも、同様の構成なので、スナップショット取得時のスナップショット管理テーブルＳを代表的に例に採り説明する。
【００７０】
スナップショット管理テーブルＳは、横軸m、縦軸nで表現されるセルＴＢ２を備える。本実施形態では、例えば、それぞれのセルＴＢ２は、ファイルシステム２５Ｐのデータブロックビットマップ９２０の構成要素に、一義的に関連づけられている。また、そのファイルシステム２５Ｐにおけるデータブロック９５０とデータブロックビットマップ９２０との関連性から、スナップショット管理テーブルＳの各セルＴＢ２は、データブロック９５０上の各データにも間接的且つ一義的に関連付けられている。また、詳細な説明は省略するが、複数のデータブロックビットマップ９２０の構成要素とスナップショット管理テーブルＳの一つのセルＴＢ２を重複しないように対応させる方式も考えられる。
【００７１】
スナップショット管理テーブルＳの各セルＴＢ２に記録されている情報、たとえば、座標m1:n1のセルに記録されている「０」や、座標m2:n1のセルに記録されている「１」は、ファイルシステム２５Ｐ上のデータブロックビットマップ９２０及びそれに対応するデータブロック９５０上のデータの有無を表す。具体的には、例えば、データブロック９５０上の空きエリアに対応するセル（例えば座標m1:n1のセル）には「０」が記録され、逆に、データブロック９５０上の使用中エリアに対応するセル（例えば座標m2:n1のセル）には「１」が記録される。
【００７２】
また、本実施形態においては、差分管理テーブル４００の各テーブルブロックＴＢ１も、スナップショット管理テーブルＳの各セルＴＢ２も、ファイルシステム２５Ｐ上のデータブロック９５０上のブロックと１対１になるように対応付けられている。本実施形態以外での場合についての詳細な説明は省略するが、例えば、同一のプライマリ記憶ブロック内のデータについて複数個の差分データが差分ボリューム２２Ｄに登録されることにより、差分管理テーブル４００が複数個生成されて備えられる場合、データブロック９５０上の各ブロックにおいて、複数の差分管理テーブル４００のテーブルブロックＴＢ１と、一つのスナップショット管理テーブルＳのセルＴＢ２とが重複しないように対応させる方式も考えられる。
【００７３】
以下、本実施形態において行われる処理について説明する。
【００７４】
図６Ａは、ホスト装置１００がスナップショット取得時のスナップショット管理テーブルＳを作成する場合の処理流れを示す。
【００７５】
ホスト装置１００の制御プログラム１０６は、スナップショット取得時を検出した場合（ステップＳ１でＹＥＳ）、その時点のファイルシステム２５Ｐに記録されている情報（例えばデータブロックビットマップ９２０及びデータブロック９５０）に基づいて、その時点におけるスナップショット管理テーブルＳを作成して記憶装置１０２に登録し、そのスナップショット管理テーブルＳを記憶制御システム２００に送信する（Ｓ２）。なお、制御プログラム１０６は、例えば、以下の（Ａ）〜（Ｃ）、
（Ａ）ホスト装置１００内の図示しないタイマ等により、ユーザ等によって設定された所定のタイミング（例えば時刻）を検出したとき、
（Ｂ）記憶制御システム２００から第１の所定信号（例えばスナップショット取得命令）を受信したとき、
（Ｃ）ホスト装置１００の図示しない入力装置を介してユーザからスナップショット取得命令を受けたとき、
のうちの少なくともいずれかのときに、そのときを、スナップショット取得時として検出することができる。また、制御プログラム１０６は、差分管理が開始されて以降（例えば、最初のスナップショット取得時以降）、新たにスナップショット取得時を検出する都度に、上述したＳ２の処理を実行しても良い。また、上記のように、スナップショット取得時のファイルシステム２５Ｐに基づいてスナップショット管理テーブルＳが作成された場合には、例えば、図３Ａのように、プライマリボリューム２２Ｐの空きの記憶ブロックに更新データＤ１が書き込まれる場合、その記憶ブロックに対応した、スナップショット管理テーブルＳのセルＴＢ２には、空きを表す「０」が記述される。すなわち、例えば、スナップショット取得時において、更新データＤ１がプライマリボリューム２２Ｐの空きの記憶ブロックに書き込まれる場合には、その空きの記憶ブロックに対応する空きエリア（ファイルシステム２５Ｐのデータブロック９５０の空きエリア）が空き状態から使用中に切り替わる前に、ファイルシステム２５Ｐに基づいてスナップショット管理テーブルＳが作成される。
【００７６】
図６Ｂは、ホスト装置１００が余剰差分管理破棄時のスナップショット管理テーブルＣを作成する場合の処理流れを示す。
【００７７】
ホスト装置１００の制御プログラム１０６は、差分管理が行われている期間において、余剰差分管理破棄時を検出した場合（Ｓ３でＹＥＳ）、その時点のファイルシステム２５Ｐに記録されている情報（例えばデータブロックビットマップ９２０及びデータブロック９５０）に基づいて、その時点におけるスナップショット管理テーブルＣを作成して記憶装置１０２に登録し、そのスナップショット管理テーブルＣを記憶制御システム２００に送信する（Ｓ４）。なお、制御プログラム１０６は、例えば、例えば、以下の（Ａ）〜（Ｄ）、
（Ａ）ホスト装置１００内の図示しないタイマ等により、ユーザ等によって予め設定された所定のタイミング（例えば時刻）を検出したとき、
（Ｂ）記憶制御システム２００から第２の所定信号（例えば余剰差分管理破棄命令）を受信したとき、
（Ｃ）ホスト装置１００の図示しない入力装置を介してユーザから余剰差分管理破棄命令を受けたとき、
（Ｄ）ホスト装置１００がリード要求或いはライト要求を発行するとき、
のうちの少なくともいずれのときに、そのときを、余剰差分管理破棄時として検出することができる。「余剰差分管理破棄」とは、余剰な差分管理が行われていればそれをしないようにすることを意味し、具体的には、例えば、差分管理テーブル４００において無駄に差分位置座標が記録されていればそれを破棄することを言う。すなわち、余剰差分管理破棄とは、リストア処理において行われる差分位置座標破棄、つまり、差分管理テーブル４００に記録されている全ての差分位置座標を破棄することとは意味が異なる。
【００７８】
図７は、記憶制御システム２００の制御装置２１０が余剰差分管理破棄を行う場合の処理流れを示す。
【００７９】
制御装置２１０のメモリ２１２には、ホスト装置１００から送信されたスナップショット管理テーブルＳ及びＣが、制御装置２１０のＣＰＵ２１１によって登録される。また、ＣＰＵ２１１に読込まれたスナップショット制御プログラム３００は、以下の（Ａ）〜（Ｃ）の場合、
（Ａ）ホスト装置１００或いはそれとは別の図示しない情報処理端末から、余剰に差分管理されている差分位置座標を破棄することの余剰差分管理破棄命令を受信したとき、
（Ｂ）記憶制御システム２００に搭載されている図示しないタイマ等により所定の時刻を検出したとき、
（Ｃ）余剰差分管理破棄時のスナップショット管理テーブルであることを示すテーブル属性を持ったスナップショット管理テーブルＣ（このような属性を持ったテーブルＣは、ホスト装置１００の制御プログラム１０６が生成しても良い）を受信して、そのテーブルＣから上記テーブル属性を検出したとき
の少なくともいずれかのときに、以下のＳ１２の処理を開始することができる。
【００８０】
まず、スナップショット制御プログラム３００は、スナップショット管理テーブルＳ上の複数のセルＴＢ２の中から一つのセルＴＢ２を選択し、そのセルＴＢ２に記録されている情報が「１」か「０」か、すなわち、そのセルＴＢ２に対応するエリア（スナップショット取得時のファイルシステム２５Ｐのデータブロック９５０のエリア）が使用中か空きのどちらであるかをチェックする（Ｓ１２）。
【００８１】
Ｓ１２の結果、空きであることが判別された場合（Ｓ１３でＹＥＳ）、スナップショット制御プログラム３００は、第１の方法で余剰の差分位置座標を破棄する（Ｓ１４）。具体的には、例えば、スナップショット制御プログラム３００は、更新データをプライマリボリューム２２Ｐに記憶させた場合には、上記空きエリア（つまり空きのプライマリ記憶ブロック）に対応した、差分管理テーブル４００のテーブルブロックＴＢ１を特定し、そのテーブルブロックＴＢ１に、差分位置座標が記録されていれば、その差分位置座標を消去する（それに加えて、差分位置座標が表す場所に存在するデータを消去しても良い）。或いは、例えば、スナップショット制御プログラム３００は、更新データを差分ボリューム２２Ｄに記憶させた場合には、空きのプライマリ記憶ブロックに対応した、差分管理テーブル４００のテーブルブロックＴＢ１を特定し、そのテーブルブロックＴＢ１に、差分位置座標が記録されていれば、その差分位置座標が表す記憶ブロックに存在する更新データを、それに対応する空きプライマリ記憶ブロックにコピーし、その後、その差分位置座標を差分管理テーブル４００から削除する。以上のＳ１４の処理により、図４Ａ及び図４Ｂを参照して説明した不要データＤ２、すなわち、スナップショット取得時のファイルシステム２５Ｐ上のデータブロック９５０で空きエリアとなっていたためにホスト装置１００にリードされることの無い不要データＤ２が破棄されたことになる。
【００８２】
Ｓ１２の結果、使用中であることが判別された場合（Ｓ１３でＮＯ）、スナップショット制御プログラム３００は、余剰差分管理破棄時のスナップショット管理テーブルＣ上の複数のセルＴＢ２の中から、上記Ｓ１２で選択したセルに対応するセルＴＢ２を選択し、そのセルＴＢ２に記録されている情報が「１」か「０」か、すなわち、そのセルＴＢ２に対応するエリア（余剰差分管理破棄時のファイルシステム２５Ｐのデータブロック９５０のエリア）が使用中か空きのどちらであるかをチェックする（Ｓ１５）。
【００８３】
Ｓ１５の結果、空きであることが判別された場合（Ｓ１６でＹＥＳ）、スナップショット制御プログラム３００は、第２の方法で余剰の差分位置座標を破棄する（Ｓ１７）。具体的には、例えば、スナップショット制御プログラム３００は、更新データをプライマリボリューム２２Ｐに記憶させた場合には、空きのプライマリ記憶ブロックに対応した、差分管理テーブル４００のテーブルブロックＴＢ１を特定し、そのテーブルブロックＴＢ１に、差分位置座標が記録されていれば、その差分位置座標が表す記憶ブロックに存在する更新前の元のデータＤ２を、それに対応する空きプライマリ記憶ブロックにコピーし、その後、その差分位置座標を差分管理テーブル４００から削除する。或いは、スナップショット制御プログラム３００は、更新データを差分ボリューム２２Ｄに記憶させた場合には、空きプライマリ記憶ブロックに対応した、差分管理テーブル４００のテーブルブロックＴＢ１を特定し、そのテーブルブロックＴＢ１に、差分位置座標が記録されていれば、その差分位置座標を消去する（それに加えて、差分位置座標が表す場所に存在する更新データＤ１を消去しても良い）。以上のＳ１７の処理により、図５Ａ及び図５Ｂを参照して説明した不要データＤ１、すなわち、スナップショット取得時はデータが存在しても、その後のファイルの更新（例えば削除）によって余剰差分管理破棄時では空きエリアとなった、その時時のファイルシステム２５Ｐ上のデータブロック９５０上のリードされない更新データＤ１が破棄されたことになる。
【００８４】
Ｓ１５の結果でも、使用中であることが判別された場合（Ｓ１６でＮＯ）、スナップショット制御プログラム３００は、スナップショット管理テーブルＳ及びＣの全てのセルについてＳ１２或いはＳ１５の処理を行っていなければ、Ｓ１２に戻り、未だチェックして無い別のセルについて上記チェックを行う。
【００８５】
以上の処理において、例えば、スナップショット取得時でも余剰差分管理破棄時でも、ファイルシステム２５Ｐのデータブロック９５０にデータが存在するような場合や、余剰差分管理破棄時点では、そのデータブロック９５０に空きエリアがあっても、その空きエリアに一度もデータが更新されない場合、すなわち、その空きエリアに対応する差分データが存在しない場合には、差分位置座標の破棄のための処理は行われなくても良く、その場合には、そのまま差分位置座標が差分管理テーブル４００に存在しても良いし、差分データそれ自体がない状態が続いても良い。
【００８６】
また、図６に示した処理流れは、ほんの一例であって、その流れに限定する必要は無い。例えば、スナップショット制御プログラム３００は、スナップショット取得時のスナップショット管理テーブルＳの全てのセルについてＳ１２〜Ｓ１４の処理を行った後に、余剰差分管理破棄時のスナップショット管理テーブルＣの全てのセル（或いは、Ｓ１３でＮＯとなったセルに対応するセルのみ）について、Ｓ１５〜Ｓ１７の処理を行っても良い。また、上記の処理において、スナップショット制御プログラム３００は、差分管理テーブル４００に記録されている差分位置座標を削除する場合、その差分位置座標が表す記憶ブロックに格納されているデータも削除しても良い。
【００８７】
以上、本発明の好適な実施形態を説明したが、これら本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、スナップショット管理テーブルＳ及びＣの少なくとも一つは、制御装置２１０が、プライマリボリューム２２Ｐのファイルシステム２５Ｐに記録されている情報に基づいて生成してメモリ２１２に登録しても良い。また、記憶制御システム２００は、ＮＡＳ（Network Attached Storage）であっても良い。また、図７に示した処理の一部又は全部を、ホスト装置１００（例えばそれの制御プログラム１０６）が実行しても良い。また、スナップショット制御プログラム３００は、差分管理テーブル４００の各テーブルブロックＴＢ１毎に、差分位置座標の更新の履歴（例えば、各スナップショット取得時点毎や、余剰差分管理破棄時の差分位置座標）をメモリ２１２等に記憶させていっても良い。
【図面の簡単な説明】
【００８８】
【図１】本発明の一実施形態に係るコンピュータシステムの全体構成を示す。
【図２】図２Ａは、差分管理テーブル４００の構成例を示す。図２Ｂは、本実施形態におけるファイルシステムの構造例を示す。
【図３】図３Ａは、更新前の元のデータが差分ボリューム２２Ｄに書き込まれる場合に、ホスト装置１００にとって不要なデータが発生してしまう場合の一例を示す。図３Ｂは、更新データが差分ボリューム２２Ｄに書き込まれる場合に、ホスト装置１００にとって不要なデータが発生してしまう場合の一例を示す。
【図４】図４Ａは、更新前の元のデータが差分ボリューム２２Ｄに書き込まれる場合に、ホスト装置１００にとって不要なデータが発生してしまう場合の別の例を示す。図４Ｂは、更新データが差分ボリューム２２Ｄに書き込まれる場合に、ホスト装置１００にとって不要なデータが発生してしまう場合の別の例を示す。
【図５】スナップショット管理テーブルの構成例を示す。
【図６】図６Ａは、ホスト装置１００がスナップショット取得時のスナップショット管理テーブルＳを作成する場合の処理流れを示す。図６Ｂは、ホスト装置１００が余剰差分管理破棄時のスナップショット管理テーブルＣを作成する場合の処理流れを示す。
【図７】記憶制御システム２００の制御装置２１０が余剰差分管理破棄を行う場合の処理流れを示す。
【符号の説明】
【００８９】
１…コンピュータシステム  ２２Ｐ…プライマリボリューム  ２２Ｄ…差分ボリューム  ２５Ｐ、２５Ｄ…ファイルシステム  １００…ホスト装置  １０１…ＣＰＵ  １０２…記憶装置  １０３…インターフェース装置（Ｉ／Ｆ）  １０６…制御プログラム  ２００…記憶制御システム  ２１０…制御装置  ２１１…ＣＰＵ  ２１２…メモリ  ２１３…ホストインターフェース装置（ホストＩ／Ｆ）  ２１４…ディスクインターフェース装置（ディスクＩ／Ｆ）  ３００…スナップショット制御プログラム  ４００…差分管理テーブル  Ｓ…スナップショット取得時のスナップショット管理テーブル  Ｃ…余剰差分管理破棄時のスナップショット管理テーブル  Ｐ…プライマリボリュームの記憶ブロック  Ｄ…差分ボリュームの記憶ブロック
【図１】
2006011811.tif 000003
【図２】
2006011811.tif 000004
【図３】
2006011811.tif 000005
【図４】
2006011811.tif 000006
【図５】
2006011811.tif 000007
【図６】
2006011811.tif 000008
【図７】
2006011811.tif 000009