(57)【要約】【課題】スナップショット機能を提供するにあたり保持しなければならない差分データを効率よく管理し、記憶領域の有効利用を図る。【解決手段】スナップショットの取得に際し、Ｐ−ＶＯＬ２２のデータが更新された場合に、当該更新により生じた差分データについてＤ−ＶＯＬ２３の第２のアドレスの第２の記憶領域に格納されるべきデータである対象データと同一のデータが、既にＤ−ＶＯＬ２３の他の第２のアドレスで特定される他の第２の記憶領域に格納されているか否かを判断し、格納されている場合、対象データを新たにＤ−ＶＯＬ２３に格納せず、スナップショット管理テーブル（ＣｏＷテーブル１３１）に、当該対象データが格納されていた第１のアドレスに対応づけて、同一のデータが格納されている第２の記憶領域を特定する第２のアドレスを登録するようにする。【選択図】図２
2010072746.tif 000002
【特許請求の範囲】
【請求項１】
外部装置からの要求に応じて第１の論理ボリュームであるＰ−ＶＯＬへのデータＩ／Ｏ処理を行うＩ／Ｏ処理部と、
ある時点における前記Ｐ−ＶＯＬの状態であるスナップショットを再現すべく、前記Ｐ−ＶＯＬのデータが更新されることにより生じた差分データを第２の論理ボリュームであるＤ−ＶＯＬに格納し、前記Ｐ−ＶＯＬの第１の記憶領域を特定する第１のアドレスに対応づけて、前記第１のアドレスについて取得した前記差分データが格納される前記Ｄ−ＶＯＬの第２の記憶領域を特定する第２のアドレスが登録されるスナップショット管理テーブルを管理するスナップショット処理部と、
前記Ｐ−ＶＯＬのデータが更新された場合に、当該更新により生じた前記差分データについて前記Ｄ−ＶＯＬの前記第２のアドレスの前記第２の記憶領域に格納されるべきデータである対象データと同一のデータが、既に前記Ｄ−ＶＯＬの他の前記第２のアドレスで特定される他の前記第２の記憶領域に格納されているか否かを判断し、
格納されていない場合には、前記Ｄ−ＶＯＬの未使用の前記第２の記憶領域に前記対象データを記憶するとともに、前記スナップショット管理テーブルに、当該対象データが格納されていた前記第１のアドレスに対応づけて、当該対象データを格納した前記第２の記憶領域を特定する前記第２のアドレスを登録し、
格納されている場合には、前記対象データを前記Ｄ−ＶＯＬに格納せずに、前記スナップショット管理テーブルに、当該対象データが格納されていた前記第１のアドレスに対応づけて、前記同一のデータが格納されている前記第２の記憶領域を特定する前記第２のアドレスを登録する差分データ管理部を備える
ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記差分データ管理部によって行われる、前記対象データと同一のデータが既に前記Ｄ−ＶＯＬの前記他の第２のアドレスで特定される前記記憶領域に格納されているか否かの前記判断は、
前記対象データに対応する、前記第１の記憶領域に格納されているデータについて求めた第１のハッシュ値と、前記第２の記憶領域に格納されているデータについて求めた第２のハッシュ値とを比較することにより行われること
を特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記差分データ管理部は、
前記差分データが格納されている前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスの数を管理し、
スナップショットの削除要求があった場合に、前記数に基づき前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスが存在しないことを確認した場合にのみ、前記Ｄ−ＶＯＬから前記差分データを削除すること
を特徴とするストレージシステム。
【請求項４】
請求項１に記載のストレージシステムであって、
前記差分データ管理部による、前記対象データと同一のデータが既に前記Ｄ−ＶＯＬの他の前記第２のアドレスで特定される前記記憶領域に格納されているか否かの前記判断は、前記対象データに対応する、前記第１の記憶領域に格納されているデータについて求めた第１のハッシュ値と、前記第２の記憶領域に格納されているデータについて求めた第２のハッシュ値とを比較することにより行われ、
前記差分データ管理部は、
前記差分データについて前記第２のハッシュ値を保持し、
前記差分データが格納されている前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスの数を管理し、
スナップショットの削除要求があった場合に、前記数に基づき前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスが存在しないと判断した場合にのみ、前記差分データを前記Ｄ−ＶＯＬから削除するとともに、当該差分データについて保持している前記第２のハッシュ値を削除すること
を特徴とするストレージシステム。
【請求項５】
請求項３または４のいずれか一項に記載のストレージシステムであって、
前記差分データ管理部は、
前記Ｐ−ＶＯＬのデータが更新され、当該更新により生じた前記差分データについて前記Ｄ−ＶＯＬの前記第２のアドレスの前記第２の記憶領域に格納されるべきデータである対象データと同一のデータが、既に前記Ｄ−ＶＯＬの他の前記第２のアドレスで特定される前記第２の記憶領域に格納されていると判断した場合に前記数をインクリメントし、
前記Ｐ−ＶＯＬの一つがスナップショットの削除により前記差分データの利用を停止した場合に前記数をデクリメントし、
前記数が所定の下限値となった場合に、前記数に基づき前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスが存在しないと判断すること
を特徴とするストレージシステム。
【請求項６】
請求項５に記載のストレージシステムであって、
前記差分データ管理部は、前記差分データが削除された前記第２のアドレスの前記第２の記憶領域を前記対象データの格納先として再利用すること
を特徴とするストレージシステム。
【請求項７】
請求項１に記載のストレージシステムであって、
前記スナップショット処理部は、前記スナップショットの世代別に前記スナップショット管理テーブルを管理し、
前記Ｄ−ＶＯＬに前記各世代の前記差分データが混在すること
を特徴とするストレージシステム。
【請求項８】
請求項１に記載のストレージシステムであって、
前記第１のハッシュ値を、前記Ｐ−ＶＯＬへのデータの書き込みがなされるタイミングで予め計算して保持しておくこと
を特徴とするストレージシステム。
【請求項９】
外部装置からの要求に応じて第１の論理ボリュームであるＰ−ＶＯＬへのデータＩ／Ｏ処理を行うＩ／Ｏ処理部と、
ある時点における前記Ｐ−ＶＯＬの状態であるスナップショットを再現すべく、前記Ｐ−ＶＯＬのデータが更新されることにより生じた差分データを第２の論理ボリュームであるＤ−ＶＯＬに格納し、前記Ｐ−ＶＯＬの第１の記憶領域を特定する第１のアドレスに対応づけて、前記第１のアドレスについて取得した前記差分データが格納される前記Ｄ−ＶＯＬの第２の記憶領域を特定する第２のアドレスが登録されるスナップショット管理テーブルを管理するスナップショット処理部と、
前記Ｐ−ＶＯＬのデータが更新された場合に、当該更新により生じた前記差分データについて前記Ｄ−ＶＯＬの前記第２のアドレスの前記第２の記憶領域に格納されるべきデータである対象データと同一のデータが、既に前記Ｄ−ＶＯＬの他の前記第２のアドレスで特定される他の前記第２の記憶領域に格納されているか否かを判断し、
格納されていない場合には、前記Ｄ−ＶＯＬの未使用の前記第２の記憶領域に前記対象データを記憶するとともに、前記スナップショット管理テーブルに、当該対象データが格納されていた前記第１のアドレスに対応づけて、当該対象データを格納した前記第２の記憶領域を特定する前記第２のアドレスを登録し、
格納されている場合には、前記対象データを前記Ｄ−ＶＯＬに格納せずに、前記スナップショット管理テーブルに、当該対象データが格納されていた前記第１のアドレスに対応づけて、前記同一のデータが格納されている前記第２の記憶領域を特定する前記第２のアドレスを登録する差分データ管理部を
備え、
前記差分データ管理部によって行われる、前記対象データと同一のデータが既に前記Ｄ−ＶＯＬの前記他の第２のアドレスで特定される前記記憶領域に格納されているか否かの前記判断は、
前記対象データに対応する、前記第１の記憶領域に格納されているデータについて求めた第１のハッシュ値と、前記第２の記憶領域に格納されているデータについて求めた第２のハッシュ値とを比較することにより行われ、
前記差分データ管理部は、
前記差分データについて前記第２のハッシュ値を保持し、
前記差分データが格納されている前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスの数を管理し、
スナップショットの削除要求があった場合に、前記数に基づき前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスが存在しないと判断した場合にのみ、前記差分データを前記Ｄ−ＶＯＬから削除するとともに、当該差分データについて保持している前記第２のハッシュ値を削除すること
を特徴とするストレージシステム。
【請求項１０】
外部装置からの要求に応じて第１の論理ボリュームであるＰ−ＶＯＬへのデータＩ／Ｏ処理を行うＩ／Ｏ処理部と、
ある時点における前記Ｐ−ＶＯＬの状態であるスナップショットを再現すべく、前記Ｐ−ＶＯＬのデータが更新されることにより生じた差分データを第２の論理ボリュームであるＤ−ＶＯＬに格納し、前記Ｐ−ＶＯＬの第１の記憶領域を特定する第１のアドレスに対応づけて、前記第１のアドレスについて取得した前記差分データが格納される前記Ｄ−ＶＯＬの第２の記憶領域を特定する第２のアドレスが登録されるスナップショット管理テーブルを管理するスナップショット処理部と
を備えるストレージシステムの運用方法であって、
前記ストレージシステムが、
前記Ｐ−ＶＯＬのデータが更新された場合に、当該更新により生じた前記差分データについて前記Ｄ−ＶＯＬの前記第２のアドレスの前記第２の記憶領域に格納されるべきデータである対象データと同一のデータが、既に前記Ｄ−ＶＯＬの他の前記第２のアドレスで特定される他の前記第２の記憶領域に格納されているか否かを判断するステップと、
格納されていない場合には、前記Ｄ−ＶＯＬの未使用の前記第２の記憶領域に前記対象データを記憶するとともに、前記スナップショット管理テーブルに、当該対象データが格納されていた前記第１のアドレスに対応づけて、当該対象データを格納した前記第２の記憶領域を特定する前記第２のアドレスを登録するステップと、
格納されている場合には、前記対象データを前記Ｄ−ＶＯＬに格納せずに、前記スナップショット管理テーブルに、当該対象データが格納されていた前記第１のアドレスに対応づけて、前記同一のデータが格納されている前記第２の記憶領域を特定する前記第２のアドレスを登録するステップと
を実行することを特徴とするストレージシステムの運用方法。
【請求項１１】
請求項１０に記載のストレージシステムの運用方法であって、
前記対象データと同一のデータが既に前記Ｄ−ＶＯＬの前記他の第２のアドレスで特定される前記記憶領域に格納されているか否かの前記判断は、
前記対象データに対応する、前記第１の記憶領域に格納されているデータについて求めた第１のハッシュ値と、前記第２の記憶領域に格納されているデータについて求めた第２のハッシュ値とを比較することにより行われること
を特徴とするストレージシステムの運用方法。
【請求項１２】
請求項１０に記載のストレージシステムの運用方法であって、
前記差分データが格納されている前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスの数を管理し、
スナップショットの削除要求があった場合に、前記数に基づき前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスが存在しないことを確認した場合にのみ、前記Ｄ−ＶＯＬから前記差分データを削除すること
を特徴とするストレージシステムの運用方法。
【請求項１３】
請求項１０に記載のストレージシステムの運用方法であって、
前記対象データと同一のデータが既に前記Ｄ−ＶＯＬの他の前記第２のアドレスで特定される前記記憶領域に格納されているか否かの前記判断は、
前記対象データに対応する、前記第１の記憶領域に格納されているデータについて求めた第１のハッシュ値と、前記第２の記憶領域に格納されているデータについて求めた第２のハッシュ値とを比較することにより行われ、
前記差分データについて前記第２のハッシュ値を保持し、
前記差分データが格納されている前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスの数を管理し、
スナップショットの削除要求があった場合に、前記数に基づき前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスが存在しないと判断した場合にのみ、前記差分データを前記Ｄ−ＶＯＬから削除するとともに、当該差分データについて保持している前記第２のハッシュ値を削除すること
を特徴とするストレージシステムの運用方法。
【請求項１４】
請求項１３または１４のいずれか一項に記載のストレージシステムの運用方法であって、
前記Ｐ−ＶＯＬのデータが更新され、当該更新により生じた前記差分データについて前記Ｄ−ＶＯＬの前記第２のアドレスの前記第２の記憶領域に格納されるべきデータである対象データと同一のデータが、既に前記Ｄ−ＶＯＬの他の前記第２のアドレスで特定される前記第２の記憶領域に格納されていると判断した場合に前記数をインクリメントし、
前記Ｐ−ＶＯＬの一つがスナップショットの削除により前記差分データの利用を停止した場合に前記数をデクリメントし、
前記数が所定の下限値となった場合に、前記数に基づき前記第２のアドレスに対応づけられている、前記Ｐ−ＶＯＬの前記第１のアドレスが存在しないと判断すること
を特徴とするストレージシステムの運用方法。
【請求項１５】
請求項１０に記載のストレージシステムの運用方法であって、
前記ストレージシステムが、
前記各ステップの実行に先立ち、
前記Ｄ−ＶＯＬの異なる前記第２のアドレスの前記第２の記憶領域に格納されている前記差分データが同一である場合に、各前記第２のアドレスに対応づけられている前記第１のアドレスが、それらのうちの一の前記差分データが格納されている前記第２のアドレスに対応するように、前記スナップショット管理テーブルの内容を設定すること
を特徴とするストレージシステムの運用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、及びストレージシステムの運用方法に関し、とくにスナップショット機能を提供するにあたり保持しなければならない差分データを効率よく管理し、記憶領域の有効利用を図るための技術に関する。
【背景技術】
【０００２】
ストレージシステムの機能として、運用中のボリューム（以下、運用ボリュームと称する。）のある時点の状態（以下、スナップショットと称する。）を、ユーザ等からの要求に応じて提供する機能（以下、スナップショット機能と称する。）がある。このスナップショット機能は、通常は運用ボリュームのある時点のスナップショットを再現するためのデータ（以下、差分データと称する。）を運用ボリュームとは別のボリューム（以下、差分ボリュームと称する。）に退避しておき、ユーザ等からの要求に応じて、現在の運用ボリュームのデータと差分ボリュームに退避しておいた差分データとによってある時点のスナップショットを再現するという方法で実現される（例えば特許文献１〜３を参照）。
【特許文献１】米国特許第５６４９１５２号明細書
【特許文献２】米国特許第７１２０７６８号明細書
【特許文献３】米国特許第７２３７０７６号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記方法によるスナップショット機能の実現に際しては、差分ボリュームに蓄積される差分データの管理が問題となる。即ち、ストレージシステムが差分ボリュームとして提供可能な記憶領域は限られるので、差分データは可能な限り効率よく差分ボリュームに管理することが望ましい。
【０００４】
そこで本発明は、スナップショット機能を提供するにあたり保持しなければならない差分データを効率よく管理し、記憶領域の有効利用を図ることが可能な、ストレージシステム、及びストレージシステムの運用方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決するための本発明のうちの一つは、
外部装置からの要求に応じて第１の論理ボリュームであるＰ−ＶＯＬへのデータＩ／Ｏ処理を行うＩ／Ｏ処理部と、
ある時点における前記Ｐ−ＶＯＬの状態であるスナップショットを再現すべく、前記Ｐ−ＶＯＬのデータが更新により生じた差分のデータを第２の論理ボリュームであるＤ−ＶＯＬに格納し、前記Ｐ−ＶＯＬの第１の記憶領域を特定する第１のアドレスに対応づけて、前記第１のアドレスについて取得した前記差分データが格納される前記Ｄ−ＶＯＬの第２の記憶領域を特定する第２のアドレスが登録されるスナップショット管理テーブルを管理するスナップショット処理部と
を備えるストレージシステムであって、
前記Ｐ−ＶＯＬのデータが更新された場合に、当該更新により生じた前記差分データについて前記Ｄ−ＶＯＬの前記第２のアドレスの前記第２の記憶領域に格納されるべきデータである対象データと同一のデータが、既に前記Ｄ−ＶＯＬの他の前記第２のアドレスで特定される他の前記第２の記憶領域に格納されているか否かを判断し、
格納されていない場合には、前記Ｄ−ＶＯＬの未使用の前記第２の記憶領域に前記対象データを記憶するとともに、前記スナップショット管理テーブルに、当該対象データが格納されていた前記第１のアドレスに対応づけて、当該対象データを格納した前記第２の記憶領域を特定する前記第２のアドレスを登録し、
格納されている場合には、前記対象データを前記Ｄ−ＶＯＬに格納せずに、前記スナップショット管理テーブルに、当該対象データが格納されていた前記第１のアドレスに対応づけて、前記同一のデータが格納されている前記第２の記憶領域を特定する前記第２のアドレスを登録する差分データ管理部を備える。
【０００６】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための最良の形態の欄、及び図面により明らかにされる。
【発明の効果】
【０００７】
本発明によれば、スナップショットの実現にあたり、記憶資源を有効に利用することができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照しつつ実施の形態について説明する。  
図１Ａに一実施形態として説明する情報処理システム１のハードウエア構成を示している。同図に示すように、情報処理システム１は、ストレージシステム５を構成するサーバ装置１０及びストレージ装置２０、クライアント装置３０（外部装置、ホスト装置）、及び管理装置４０を含む。サーバ装置１０、クライアント装置３０、及び管理装置４０は、パーソナルコンピュータやワークステーション、メインフレーム等のコンピュータ（情報処理装置）である。
【０００９】
サーバ装置１０とストレージ装置２０とは、ＬＡＮ（Local Area Network）やＳＡＮ（Storage Area Network）等の通信ネットワークを介して通信可能に接続している。サーバ装置１０は、ＬＡＮやインターネット、公衆通信網、専用線等を介して、クライアント装置３０及び管理装置４０と通信可能に接続している。  
クライアント装置３０は、ストレージシステム５が提供する記憶領域を利用する。管理装置４０は、オペレータ等がサーバ装置１０やストレージ装置２０の設定機能、管理機能等を提供する。
【００１０】
尚、サーバ装置１０とストレージ装置２０は、同一筐体に収容される等して一体的に構成されていてもよいし、別筐体に収容される等して別体として構成されていてもよい。管理装置４０はクライアント装置３０であってもよいし、サーバ装置１０又はストレージ装置の一部として構成されていてもよい。
【００１１】
サーバ装置１０は、クライアント装置３０から送られてくるデータ入出力要求を受け付けた場合にストレージ装置２０の記憶領域にアクセスする。ストレージ装置２０は、ハードディスクドライブ等の物理記憶媒体２１を有している。ストレージ装置２０は、物理記憶媒体２１を例えばＲＡＩＤ（Redundant Array of Inexpensive Disks）方式で運用する。
【００１２】
尚、ストレージ装置２０の一例として、クライアント装置３０との間で通信を行うチャネル制御部、物理記憶媒体２１へのアクセスを行うディスク制御部、チャネル制御部とディスク制御部とのデータの受け渡し等に利用されるキャッシュメモリ、各部を通信可能に接続する通信機構を備えるディスクアレイ装置がある。
【００１３】
ストレージ装置２０は、サーバ装置１０に論理的な記憶領域たる論理ボリューム（Logical Volume（以下、ＬＶと称する。））を提供する。尚、後述するスナップショット機能における第１の論理ボリューム（プライマリボリューム）（以下、Ｐ−ＶＯＬ２２（P-VOL : Primary Volume）と称する。）、及び第２の論理ボリューム（差分ボリューム）（以下、Ｄ−ＶＯＬ２３（D-VOL:Differential Volume）と称する。）は、いずれもＬＶである。
【００１４】
図１Ｂは、サーバ装置１０、クライアント装置３０、又は管理装置４０として利用可能なコンピュータの一例である。このコンピュータ１００は、中央処理装置１０１（例えばＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit））、主記憶装置１０２（例えばＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory））、補助記憶装置１０３（例えばハードディスク）、ユーザの操作入力を受け付ける入力装置１０４（例えばキーボードやマウス）、出力装置１０５（例えば液晶モニタ）、他の装置との間の通信を実現する通信インタフェース１０６（例えばＮＩＣ（Network Interface Card）やＨＢＡ（Host Bus Adapter）)を備えている。
【００１５】
図２にサーバ装置１０の主な機能、及びサーバ装置１０が管理するデータを示している。サーバ装置１０は、Ｉ／Ｏ処理部１２１、スナップショット処理部１２２、及び差分データ管理部１２０の各機能を有する。このうち差分データ管理部１２０は、さらに差分重複管理部１２３、差分退避管理部１２４、ハッシュ値生成部１２５、ディスク制御部１２６、差分データ削除部１２７、及び重複防止機能導入部１２８の各機能を提供する。
【００１６】
尚、サーバ装置１０の上記各機能は、サーバ装置１０のＣＰＵ１１が、メモリ１２に読み出されているプログラムを実行することによって、もしくは、サーバ装置１０のハードウエアによって実現される。また上記各機能の実現に際しては、サーバ装置１０において動作するオペレーティングシステムやデバイスドライバ等の他のソフトウエアによって実現される機能が関与することがある。
【００１７】
図２に示すＩ／Ｏ処理部１２１は、クライアント装置３０から送信されてくるＩ／Ｏ要求（データ書き込み要求、データ読み出し要求）を受け付け、ストレージ装置２０へのデータの書き込み又はデータの読み出しを行う。またＩ／Ｏ処理部１２１は、データの書き込み完了報告、読み出したデータ等をクライアント装置３０に送信する。
【００１８】
尚、サーバ装置１０がＮＡＳ（Network Attached Storage）である場合には、Ｉ／Ｏ処理部１２１はさらにＮＦＳ（Network File System）やＣＩＦＳ（Common Internet File System）等のファイル共用機能、及びファイルシステム等のＮＡＳの特徴的な機能を有する。
【００１９】
スナップショット処理部１２２は、クライアント装置３０から送信されてくるスナップショット取得要求の受け付け、ある時点のスナップショットの取得、スナップショットの参照要求の受け付け、クライアント装置３０へのスナップショットの提供、スナップショットの削除を行う。
【００２０】
ここでスナップショットの取得とは、Ｐ−ＶＯＬ２２において更新されたブロックのデータ（以下、差分データと称する。）をＤ−ＶＯＬ２３に退避することをいう。またスナップショットの提供とは、現在のＰ−ＶＯＬ２２のデータとＤ−ＶＯＬ２３に退避された差分データとに基づいて、過去のある時点におけるＰ−ＶＯＬ２２の状態を再現することをいう。またスナップショットの削除とは、Ｄ−ＶＯＬ２３から削除対象の差分データを削除することをいう。
【００２１】
図２に示す差分データ管理部１２０の詳細については後述する。  
図２に示しているように、サーバ装置１０は、ＣｏＷテーブル１３１（CoW：Copy On Write）、ハッシュ値テーブル１３２、差分データ管理テーブル１３３、及び既存データ重複排除テーブル１３４（図では重複排除テーブルと略記している。）を管理している。尚、以下の説明ではハッシュ値テーブル１３２はＰ−ＶＯＬ２２に、ＣｏＷテーブル１３１、差分データ管理テーブル１３３、及び既存データ重複排除テーブル１３４はＤ−ＶＯＬ２３に、夫々格納されているものとしているが、各テーブルの格納位置は必ずしもこれに限定されない。
【００２２】
図３ＡにＣｏＷテーブル１３１の一例を示す。ＣｏＷテーブル１３１は、スナップショットの管理に際し利用されるテーブルである。ＣｏＷテーブル１３１は、スナップショットの各世代に対応する一つ以上の個別のテーブル群（以下、世代別テーブル１３１１〜１３１ｎと称する。）で構成される。
【００２３】
ＣｏＷテーブル１３１には、Ｐ−ＶＯＬ２２の記憶領域（第１の記憶領域）を特定するブロックアドレス１３１１１（第１のアドレス）に対応づけて、スナップショットの取得によって退避されるべき差分データが格納されるＤ−ＶＯＬ２３の記憶領域（第２の記憶領域）を特定するブロックアドレス１３１１２（第２のアドレス）が管理されている。
【００２４】
尚、差分データが取得されていない場合には、対応するＤ−ＶＯＬ２３のブロックアドレス１３１１２に例えば「０」や「ＮＯＮＥ」といった実データでないことを意味するデータが格納される。
【００２５】
図３Ｂにハッシュ値テーブル１３２の一例を示す。同図に示すように、ハッシュ値テーブル１３２には、Ｐ−ＶＯＬ２２のブロックアドレス１３２１に対応づけて、そのＰ−ＶＯＬ２２のブロックアドレス１３２１に格納されているデータから生成されるハッシュ値１３２２が管理される。
【００２６】
図３Ｃに差分データ管理テーブル１３３の一例を示す。同図に示すように、差分データ管理テーブル１３３には、Ｄ−ＶＯＬ２３のブロックアドレス１３２１に対応づけて、参照カウンタ１３２２、及び対応するＤ−ＶＯＬ２３のブロックアドレス１３２１に格納されている差分データのハッシュ値１３２３が管理される。
【００２７】
図３Ｄに既存データ重複排除テーブル１３４の一例を示す。同図に示すように、既存データ重複排除テーブル１３４には、Ｄ−ＶＯＬ２３のブロックアドレス１３４１とＰ−ＶＯＬ２２のブロックアドレス１３４２の組み合わせに対応づけて、始点世代１３４２及び終点世代１３４４が管理される。既存データ重複排除テーブル１３４の詳細については後述する。
【００２８】
次に以上に説明した情報処理システム１において行われる処理について説明する。
【００２９】
＜差分データのＤ−ＶＯＬ２３への重複格納防止＞
情報処理システム１では、差分データがＤ−ＶＯＬ２３に重複して格納されてしまわないようにするために、スナップショットの取得に際し特有の処理が行われる。以下、この処理について図４に示すフローチャートとともに説明する。尚、以下の説明において符号の前に付した文字「Ｓ」はステップを意味する。
【００３０】
まずサーバ装置１０のＩ／Ｏ処理部１２１がクライアント装置３０からＰ−ＶＯＬ２２へのデータの書き込み要求を受け付ける（Ｓ４１１）。するとＩ／Ｏ処理部１２１は、差分データ管理部１２０に対し、データが書き込まれるＰ−ＶＯＬ２２のブロックアドレス（以下、対象ブロックアドレスと称する。）と、書き込み対象のデータ（以下、対象データと称する。）を指定してデータの書き込みを指示する（Ｓ４１２）。
【００３１】
差分データ管理部１２０の差分重複管理部１２３は、上記指示を受けると、Ｄ−ＶＯＬ２３にＰ−ＶＯＬ２２が現在利用中の差分データが存在するか否かを判断する（Ｓ４１３）。この判断は、例えばスナップショットを管理している少なくとも一世代分のＣｏＷテーブル１３１が存在するか否かを調べることにより行われる。利用中のスナップショットが存在すれば（Ｓ４１３：ＹＥＳ）Ｓ４１４に進み、利用中のスナップショットが存在しなければ（Ｓ４１３：ＮＯ）Ｓ４２３に進む。
【００３２】
次に差分退避管理部１２４が、対象データのＰ−ＶＯＬ２２への書き込みに伴って生じたＤ−ＶＯＬ２３に退避すべき差分データが、Ｄ−ＶＯＬ２３に既に格納済か否かを判断する。ここでこの判断は、最新のスナップショット世代のＣｏＷテーブル１３１の対象ブロックアドレスにＤ−ＶＯＬ２３のブロックアドレスが格納されているか否かを調べることにより行われる。退避済でなければ（Ｓ４１４：ＮＯ）Ｓ４１５に進む。退避済であれば（Ｓ４１４：ＹＥＳ）Ｓ４２３に進む。
【００３３】
Ｓ４１５では、差分重複管理部１２３は、ハッシュ値テーブル１３２から、対象ブロックアドレスのハッシュ値を取得する。そして差分重複管理部１２３は、ハッシュ値テーブル１３２から取得したハッシュ値に一致するハッシュ値が差分データ管理テーブル１３３に存在するか否かを調べる（Ｓ４１６）。存在すれば（Ｓ４１６：ＹＥＳ）Ｓ４１７に進み、存在しなければ（Ｓ４１６：ＮＯ）Ｓ４２０に進む。
【００３４】
Ｓ４１７では、差分重複管理部１２３は、一致したハッシュ値に対応するＤ−ＶＯＬ２３のブロックアドレスを差分データ管理テーブル１３３から取得する。そして差分重複管理部１２３は、ＣｏＷテーブル１３１の対象ブロックアドレスの該当世代に、差分データ管理テーブル１３３から取得したＤ−ＶＯＬ２３のブロックアドレスを格納する（Ｓ４１８）。またこのとき、差分重複管理部１２３は、差分データ管理テーブル１３３の当該Ｄ−ＶＯＬ２３のブロックアドレスに対応する参照カウンタ１３２２に１を加算（インクリメント）する（Ｓ４１９）。Ｓ４１９の後は、Ｓ４２３に進む。
【００３５】
Ｓ４２０では、差分重複管理部１２３が、差分データの退避先となるＤ−ＶＯＬ２３のブロックアドレス（以下、退避先ブロックアドレスと称する。）を決定し、決定した退避先ブロックアドレスに差分データを格納する（Ｓ４２１）。またこのとき、差分重複管理部１２３は、ＣｏＷテーブル１３１の対象ブロックアドレスの該当世代に当該退避先ブロックアドレスを格納する（Ｓ４２２）。
【００３６】
Ｓ４２３以降の処理は、Ｐ−ＶＯＬ２２に対象データを格納する処理であり、差分重複管理部１２３が対象データをＰ−ＶＯＬ２２の対象ブロックアドレスに格納し（Ｓ４２３）、さらに対象データのハッシュ値をハッシュ値テーブル１３２に格納する。
【００３７】
このように、スナップショットの取得に際し、差分データ管理部１２０は、Ｄ−ＶＯＬ２３に既に差分データが格納されているか否かを判断し、格納されていれば既に格納されている差分データのブロックアドレスをＣｏＷテーブル１３１に格納し、これによりＰ−ＶＯＬ２２の複数のブロックアドレスにＤ−ＶＯＬ２３の同一のブロックアドレスの差分データが対応付けられることになる。このため、Ｄ−ＶＯＬ２３の異なるブロックに同一のデータが書き込まれないようになり、Ｄ−ＶＯＬ２３の記憶領域を有効に利用することができる。
【００３８】
尚、以上では、差分データをＤ−ＶＯＬ２３に退避させる前に重複チェック（ハッシュ値の比較）を行っているが、差分データをＤ−ＶＯＬ２３に退避した後に重複チェックを行って、重複するデータをＤ−ＶＯＬ２３から削除するようにしてもよい。
【００３９】
またＰ−ＶＯＬ２２の各ブロックアドレスのデータのハッシュ値は、差分データのＤ−ＶＯＬ２３への退避が発生する際に計算してもよいし、退避前の例えばＰ−ＶＯＬ２２へのデータの格納時等に計算してハッシュ値テーブル１３２に予め格納しておくようにしてもよい。後者の場合、Ｐ−ＶＯＬ２２のデータのハッシュ値を計算する期間と差分データを退避する期間の重複を避けることができ、特定の期間に負荷が集中するのを効果的に避けることができる。
【００４０】
＜差分データの削除＞
以上の仕組みによれば同一の差分データがＤ−ＶＯＬ２３に重複して格納されるのを防ぐことができる。しかしこの仕組みを導入すればＤ−ＶＯＬ２３に格納されている一の差分データが、Ｐ−ＶＯＬ２２の複数のブロックアドレスに対応づけられることが生じ得る。このため、あるスナップショットを削除しようとする場合には、その差分データがＣｏＷテーブル１３１においてＰ−ＶＯＬ２２のいずれのブロックアドレスにも対応づけられていないことを確認しなければならない。以下、この確認に関する処理について、図５に示すフローチャートとともに説明する。
【００４１】
まずサーバ装置１０のＩ／Ｏ処理部１２１が、クライアント装置３０から、あるＰ−ＶＯＬ２２についてのスナップショット（以下、削除対象スナップショットと称する。）の削除要求（以下、スナップショット削除要求と称する。）を受け付ける（Ｓ５１１）。するとＩ／Ｏ処理部１２１は、差分データ管理部１２０に、削除対象スナップショットを指定して（特定世代（ここでは一例としてｘ世代とする）の指定を含む。）、スナップショットの削除を指示する（Ｓ５１２）。  
次に差分データ管理部１２０の差分データ削除部１２７は、ＣｏＷテーブル１３１から、削除対象スナップショット（世代ｘ）の差分データを格納しているＤ−ＶＯＬ２３のブロックアドレス（以下、削除候補ブロックアドレスと称する。）を全て取得する（Ｓ５１３）。
【００４２】
次に差分データ削除部１２７は、全ての削除候補ブロックアドレス（世代ｘ）について、差分データ管理テーブル１３３の参照カウンタ１３２２の値を減算したか否かを判断する（Ｓ５１４）。減算していない場合には（Ｓ５１４：ＮＯ）Ｓ５１５に進み、減算している場合には（Ｓ５１４：ＹＥＳ）、Ｓ５１９に進む。  
続くＳ５１５では、差分データ削除部１２７が、参照カウンタ１３２２の減算が済んでいない削除候補ブロックアドレスを一つ選択する。  
Ｓ５１６において、差分データ削除部１２７は、Ｓ５１５で選択した削除候補ブロックアドレスについて、参照カウンタ１３２２の値を１だけ減算（デクリメント）する。  
Ｓ５１７において、差分データ削除部１２７は、Ｓ５１６で参照カウンタ１３２２の値を減算した後の削除候補ブロックアドレスの参照カウンタの値が「０」（下限値）か否かを判断する。参照カウンタ１３２２の値が「０」であれば（Ｓ５１７：ＹＥＳ）、Ｓ５１７に進み、「０」でなければ（Ｓ５１７：ＮＯ）Ｓ５１４に戻る。
【００４３】
Ｓ５１８において、差分データ削除部１２７は、Ｄ−ＶＯＬ２３の選択されている削除候補ブロックアドレスで指定される記憶領域に格納されている差分データを削除する。尚、ここでいう削除とは、その削除候補ブロックアドレスの記憶領域に新たなデータの書き込みができる状態にすることである。  
Ｓ５１９において、差分データ削除部１２７は、選択されている削除候補ブロックアドレスについて、その差分データ管理テーブル１３３のハッシュ値１３３３を削除する。その後はＳ５１４に戻る。  
尚、悪意の第三者の閲覧を防ぐ等、セキュリティを確保すべく、削除した差分データが格納されていた記憶領域や、削除した差分管理テーブル１３３のハッシュ値１３３３の記憶領域に例えば「０」や「ＮＯＮＥ」といった実データとして意味を持たないデータを書き込むようにしてもよい。  
Ｓ５２０では、差分データ削除部１２７が、削除対象スナップショット（世代ｘ）のＣｏＷテーブル１３１を削除する。
【００４４】
以上に説明したように、Ｄ−ＶＯＬ２３の削除候補ブロックアドレスの記憶領域に格納されている差分データは、当該削除候補ブロックアドレスの差分データ管理テーブル１３３の参照カウンタ１３２２の値が「０」（下限値）になった場合、即ち、その差分データがいずれのＰ−ＶＯＬ２２のブロックアドレスにも対応づけられていない（差分データとして利用されない）ことが確認された場合に限り、差分データがＤ−ＶＯＬ２３から削除される。
【００４５】
以上の方法によれば、スナップショットの削除に際し、Ｄ−ＶＯＬ２３から差分データを安全に削除することができる。そして差分データが削除されたＤ−ＶＯＬ２３の記憶領域は、新たに生じた差分データの退避先として再利用可能となり、Ｄ−ＶＯＬ２３の効率的な運用が可能となる。
【００４６】
＜既存環境への導入方法＞
次に、スナップショット機能が既に導入されている既存のシステムに対し、図４に示したＤ−ＶＯＬ２３の差分データの重複格納を防ぐ仕組みを導入する方法について、図６Ａ、図６Ｂに示すフローチャートとともに説明する。尚、以下に説明する処理は、例えば管理装置４０やクライアント装置３０から送られてくる指示を受け付けたことを契機として開始される。
【００４７】
図６Ａに示すように、まず差分データ管理部１２０の重複防止機能導入部１２８が、ハッシュ値テーブル１３２を生成するとともに（Ｓ６１１）、差分データ管理部１２０のハッシュ値生成部１２５にハッシュ値の計算を指示する。  
ハッシュ値生成部１２５は、上記指示を受けると、Ｐ−ＶＯＬ２２の各ブロックアドレスに格納されているデータのハッシュ値を求め、求めたハッシュ値をＰ−ＶＯＬ２２のブロックアドレス１３２１に対応づけて、ハッシュ値テーブル１３２に格納する（Ｓ６１２）。
【００４８】
次に重複防止機能導入部１２８は、差分データ管理テーブル１３３を生成し（Ｓ６１３）、ハッシュ値生成部１２５に対し、Ｄ−ＶＯＬ２３の各ブロックに格納されている差分データのハッシュ値の計算を指示する。  
ハッシュ値生成部１２５は、上記指示を受けると、Ｄ−ＶＯＬ２３の各ブロックに格納されている差分データのハッシュ値を求め、求めたハッシュ値をＤ−ＶＯＬ２３のブロックアドレス１３３１に対応づけて差分データ管理テーブル１３３に格納する（Ｓ６１４）。
【００４９】
次に重複防止機能導入部１２８は、全世代のＣｏＷテーブル１３１を参照して差分データ管理テーブル１３３の参照カウンタ１３２２の値を設定する。具体的には、重複防止機能導入部１２８は、各世代のＣｏＷテーブル１３１のＤ−ＶＯＬ２３のブロックアドレスの記憶領域の内容を順に調べ、その記憶領域に有意な値（差分データが格納されているブロックアドレス）が設定されていれば、差分データ管理テーブル１３３の該当のＤ−ＶＯＬ２３のブロックアドレス１３２１の参照カウンタ１３２２に１を加算（インクリメント）する（Ｓ６１５）。尚、Ｐ−ＶＯＬ２２が複数存在する場合には、上記参照カウンタ１３２２の設定は、存在する全てのＰ−ＶＯＬ２２について行われる。
【００５０】
次に重複防止機能導入部１２８は、既存データ重複排除テーブル１３４を生成する。図３Ｄに示すように、既存データ重複排除テーブル１３４には、Ｄ−ＶＯＬ２３の各ブロックアドレス１３４１に対応づけて、Ｐ−ＶＯＬ２２のブロックアドレス１３４２、始点世代１３４３、及び終点世代１３４４が管理される。このうち始点世代１３４３には、ＣｏＷテーブル１３１において、該当のＤ−ＶＯＬ２３のブロックアドレス１３４１が格納されている最古のスナップショット世代の世代数が設定される。また終点世代１３４４には、ＣｏＷテーブル１３１において、該当のＤ−ＶＯＬ２３のブロックアドレス１３４１が格納されている最新のスナップショット世代の世代数が設定される。
【００５１】
この既存データ重複排除テーブル１３４の生成方法について、図６Ａ（Ｓ６１６以降）とともに説明する。  
まず重複防止機能導入部１２８は、ＣｏＷテーブル１３１から、Ｐ−ＶＯＬ２２のブロックアドレスとＤ−ＶＯＬ２３のブロックアドレスの組み合わせを一つ選択する（Ｓ６１６）。  
次に重複防止機能導入部１２８は、選択した組み合わせが既存データ重複排除テーブル１３４に存在するか否かを判断する（Ｓ６１７）。存在しない場合は（Ｓ６１７：ＮＯ）Ｓ６１８に進み、存在する場合は（Ｓ６１７：ＹＥＳ）Ｓ６１９に進む。  
次に重複防止機能導入部１２８は、既存データ重複排除テーブル１３４に上記組み合わせを格納する。また重複防止機能導入部１２８は、上記組み合わせに対応する始点世代１３４３及び終点世代１３４４に、上記組み合わせの世代（当該組み合わせを選択したＣｏＷテーブル１３１の世代）を格納する（Ｓ６１８）。  
次に重複防止機能導入部１２８は、既存データ重複排除テーブル１３４の、選択されている組み合わせの終点世代１３４４に、当該組み合わせの世代数を格納する（Ｓ６１９）。その後はＳ６２０に進む。  
次に重複防止機能導入部１２８は、全世代のＣｏＷテーブル１３１から全ての上記組み合わせを選択したか否かを判断する（Ｓ６２０）。選択済でない場合は（Ｓ６２０：ＮＯ）未選択の組み合わせについてＳ６１７からの処理を行うべく、Ｓ６１６に戻る。選択済である場合は（Ｓ６２０：ＹＥＳ）Ｓ６２１に進む。  
以上の処理により、既存のＰ−ＶＯＬ２２及びＤ−ＶＯＬ２３の状態が反映された既存データ重複排除テーブル１３４が生成される。
【００５２】
次に重複防止機能導入部１２８は、ＣｏＷテーブル１３１のＤ−ＶＯＬ２３のブロックアドレス１３４１を、重複を排除した状態に設定する。この処理について、以下図６Ｂとともに説明する。
【００５３】
まず重複防止機能導入部１２８は、差分データ管理テーブル１３３から、Ｄ−ＶＯＬ２３のブロックアドレスを２つ選択し（以下、選択したブロックアドレスを、夫々、第１ブロックアドレス、第２ブロックアドレスと称する。）、両者のハッシュ値を照合する（Ｓ６２１）。照合の結果、両者のハッシュ値が一致する場合には（Ｓ６２１：ＹＥＳ）Ｓ６２２に進み、両者のハッシュ値が一致しない場合には（Ｓ６２１：ＮＯ）Ｓ６２４に進む。
【００５４】
Ｓ６２２において、重複防止機能導入部１２８は、既存データ重複排除テーブル１３４の、第２のブロックアドレスに対応づけられている、Ｐ−ＶＯＬ２２のブロックアドレス１３４２、始点世代１３４３、及び終点世代１３４４を取得する。そして重複防止機能導入部１２８は、取得した始点世代１３４３から終点世代１３４４までの各ＣｏＷテーブル１３１について、Ｓ６２２で取得したＰ−ＶＯＬ２２のブロックアドレスに対応づけられているＤ−ＶＯＬ２３のブロックアドレスを第２のブロックアドレスに置換する（Ｓ６２３）。これにより複数のＰ−ＶＯＬ２２のブロックアドレスがＤ−ＶＯＬ２３の所定のブロックアドレスに格納されている一の差分データに対応づけられることになる。Ｓ６２３の後はＳ６２４に進む。
【００５５】
Ｓ６２４において、重複防止機能導入部１２８は、差分データ管理テーブル１３３の全てのＤ−ＶＯＬ２３のブロックアドレスの組み合わせについてハッシュ値の比較が済んでいるか否かを判断する。済んでいなければ（Ｓ６２４：ＮＯ）Ｓ６２１に戻って他の組み合わせについて照合を行う。済んでいれば（Ｓ６２４：ＹＥＳ）処理は終了する。
【００５６】
尚、Ｓ６２１におけるハッシュ値の照合は、例えば既存データ重複排除テーブル１３４に比較処理済か否かを示すフラグを設け、毎回の比較に先立ち当該フラグから比較済か否かを判断し、比較済である場合はハッシュ値の比較の対象から除外するようにしてもよい。このようにすることで、重複してハッシュ値が比較されなくなり、処理の高速化を図ることができる。
【００５７】
以上によれば、運用中のＰ−ＶＯＬ２２の状態に対応したＣｏＷテーブル１３１、ハッシュ値テーブル１３２、及び差分データ管理テーブル１３３を生成することができ、既存のシステムを、前述したＤ−ＶＯＬ２３に差分データが重複して格納されるのを防ぐ図４のフローチャートに示した運用形態にスムーズに移行させることができる。
【００５８】
尚、以上の実施形態の説明は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明はその趣旨を逸脱することなく、変更、改良され得ると共に本発明にはその等価物が含まれることは勿論である。
【００５９】
例えば、以上ではＣｏＷテーブル１３１がブロックアドレス単位で差分データを管理しブロック単位で重複有無を判断する場合について説明したが、ファイル単位、ファイルを一定サイズのデータに分割したチャンク単位等、他の単位量（固定サイズ）ごとに重複有無を判断するようにしてもよい。
【００６０】
またデータが同一か否かの判断を、ハッシュ値を比較することにより行っているが、ハッシュ値を用いずにデータそのものを比較して行ってもよいし、他の特徴量に基づき判断するようにしてもよい。
【００６１】
またデータセンタ等では多数のＤ−ＶＯＬ２３が運用されているが、このように複数のＤ−ＶＯＬ２３が存在する場合には、Ｄ−ＶＯＬ２３ごとに前述の重複排除機能を適用するか否かをユーザが指定できるようにしてもよい。
【００６２】
図７にそのような指定を行う際にユーザに提示される重複排除機能設定画面７００の一例を示す。例えば同図に表示されているＤ−ＶＯＬ２３に重複排除機能を適用する場合には、重複排除指示のチェックボックス７１３をチェックした後、ＯＫボタン７１４をクリックする。
【００６３】
このようにすれば、例えば高速なレスポンスが要求されるＤ−ＶＯＬ２３については重複排除機能を適用しないようにするなど、Ｄ−ＶＯＬ２３の使用状況等に応じて柔軟な運用が可能となる。
【図面の簡単な説明】
【００６４】
【図１Ａ】情報処理システム１のハードウエアを示す図である。
【図１Ｂ】サーバ装置１０、クライアント装置３０、管理装置４０として利用可能なコンピュータのハードウエア構成の一例を示す図である。
【図２】サーバ装置１０の主な機能を示す図である。
【図３Ａ】ＣｏＷテーブル１３１の一例である。
【図３Ｂ】ハッシュ値テーブル１３２の一例である。
【図３Ｃ】差分データ管理テーブル１３３の一例である。
【図３Ｄ】既存データ重複排除テーブル１３４の一例である。
【図４】スナップショットの取得に際し行われる処理を説明するフローチャートである。
【図５】Ｄ−ＶＯＬ２３から差分データを削除する際に行われる処理を説明するフローチャートである。
【図６Ａ】既存のストレージシステムに、前述したＤ−ＶＯＬ２３に差分データが重複して格納されるのを防ぐ仕組みを導入する際の手順を説明するフローチャートである。
【図６Ｂ】既存のストレージシステムに、前述したＤ−ＶＯＬ２３に差分データが重複して格納されるのを防ぐ仕組みを導入する際の手順を説明するフローチャートである。
【図７】重複排除機能設定画面７００の一例である。
【符号の説明】
【００６５】
１  情報処理システム
５  ストレージシステム
１０  サーバ装置
２０  ストレージ装置
２２  Ｐ−ＶＯＬ
２３  Ｄ−ＶＯＬ
３０  クライアント装置
４０  管理装置
１２１  Ｉ／Ｏ処理部
１２２  スナップショット処理部
１２０  差分データ管理部
１２３  差分重複管理部
１２４  差分退避管理部
１２５  ハッシュ値生成部
１２６  ディスク制御部
１２７  差分データ削除部
１２８  重複防止機能導入部
１３１  ＣｏＷテーブル
１３２  ハッシュ値テーブル
１３３  差分データ管理テーブル
１３４  重複排除テーブル
【図１Ａ】
2010072746.tif 000003
【図１Ｂ】
2010072746.tif 000004
【図２】
2010072746.tif 000005
【図３Ａ】
2010072746.tif 000006
【図３Ｂ】
2010072746.tif 000007
【図３Ｃ】
2010072746.tif 000008
【図３Ｄ】
2010072746.tif 000009
【図４】
2010072746.tif 000010
【図５】
2010072746.tif 000011
【図６Ａ】
2010072746.tif 000012
【図６Ｂ】
2010072746.tif 000013
【図７】
2010072746.tif 000014