(57)【特許請求の範囲】
【請求項１】
データを格納する記憶装置と、前記記憶装置をアクセス対象とするコントローラとを備え、
前記コントローラは、
前記記憶装置に格納されたデータのうち論理ユニットのデータを複数の世代のスナップショットに関連づけて管理するスナップショット処理部を備え、
前記スナップショット処理部は、
前記複数の世代の論理ユニットのデータを、前記各世代共通の共通データと前記各世代の論理ユニット間で相違がある差分データとして管理し、
前記各世代のスナップショットに伴って前記各世代の論理ユニットのデータを更新するときに、当該更新に伴う更新データを前方差分データ格納領域にライトする前方差分方式または更新前のデータを旧データとして後方差分データ格納領域にコピーする後方差分方式を選択し、
前記各世代の論理ユニットは、
当該各世代の論理ユニットに共通するデータのためのベースボリュームと、前記差分データのうち前記更新データを前記前方差分方式で管理するための前方差分データまたは前記旧データを後方差分方式で管理するための後方差分データと、の組み合わせによって構成され、
さらに、前記スナップショット処理部は、
前記各世代のスナップショットに伴って前記各世代の論理ユニットのデータを更新するときに、オリジナルデータが存在するオリジナル論理ユニットを含むものまたは前記オリジナル論理ユニットとスナップショットを含むもののうち、前記ベースボリュームの共通データより古い部分のデータを前記後方差分データとして管理し、前記ベースボリュームの共通データより新しい部分のデータを前記前方差分データとして管理し、
前記各世代の論理ユニットのうち、前方差分方式で管理する、オリジナルデータが存在するオリジナル論理ユニットと、当該オリジナル論理ユニットとともに前方差分グループを構成するスナップショットと、に生じた更新データである前方差分データ量を低減するための契機で当該前方差分データを前記ベースボリュームにライトする際、前記ベースボリュームに前記更新データがライトされる前に存在した旧データを後方差分データとして後方差分データプールに退避し、ベースボリュームへ前記前方差分データのライト完了後に当該前方差分データを削除することにより、前方差分データを後方差分データに変換する差分変換を行う、ストレージシステム。
【請求項２】
前記スナップショット処理部は、前記各世代のスナップショットに伴って前記各世代の論理ユニットのデータを更新するときに、当該更新に伴う更新データを前方差分データとして前記ベースボリュームにライトし、前記ベースボリュームに前記更新データがライトされる前に存在した旧データを後方差分データとして後方差分データプールに退避し、前記各世代の論理ユニットのデータを更新したときには、前記更新データを前記各世代の論理ユニットから削除する、請求項１に記載のストレージシステム。
【請求項３】
前記コントローラは、前記前方差分データを前記後方差分データに変換する差分変換処理部を備え、
前記スナップショット処理部は、前記各世代のスナップショットに伴って前記各世代の論理ユニットのデータを更新するときに、前記前方差分データを前記ベースボリュームにライトし、当該ライトする前に前記ベースボリュームに存在した差分データを前記差分変換処理部で変換された前記後方差分データとして管理する、請求項１に記載のストレージシステム。
【請求項４】
前記コントローラは、前記前方差分データを前記後方差分データに変換する差分変換処理部を備え、
前記スナップショット処理部は、前記各世代のスナップショップまたはオリジナルデータが存在するオリジナル論理ユニットのうち前記差分変換処理部の変換処理により、前記ベースボリュームと全てのデータが一致した世代のスナップショットまたはオリジナル論理ユニットのデータを業務中に前記後方差分方式の管理対象に切り替える、請求項１に記載のストレージシステム。
【請求項５】
前記コントローラは、前記前方差分データを前記後方差分データに変換する差分変換処理部を備え、
前記差分変換処理部は、前記前方差分データのデータ量が閾値を超えたことを契機に前記前方差分データを前記後方差分データに変換する、請求項１に記載のストレージシステム。
【請求項６】
前記コントローラは、前記前方差分データを定期的な契機で前記後方差分データに変換する差分変換処理部を備えてなる、請求項１に記載のストレージシステム。
【請求項７】
前記コントローラは、管理端末からの指示に応答して、前記前方差分データを前記後方差分データに変換する差分変換処理部を備えてなる、請求項１に記載のストレージシステム。
【請求項８】
前記前方差分データは、可変長のデータの集まりと、前記各世代の論理ユニット内のアドレスに対応する各差分データを探索するためのインデックスから構成されてなる、請求項１に記載のストレージシステム。
【請求項９】
前記スナップショット処理部は、前記オリジナル論理ユニットに対して最初にスナップショットを取得したときには、当該スナップショットおよび前記オリジナル論理ユニットを管理するための方式として、前記前方差分方式または前記後方差分方式のいずれか一方を、前記コントローラに接続された管理端末からの指定に従って選択する、請求項１に記載のストレージシステム。
【請求項１０】
前記スナップショット処理部は、前記記憶装置に対するリードアクセスとライトアクセスとの比を基に、前記前方差分方式または前記後方差分方式のいずれか一方を選択する、請求項１に記載のストレージシステム。
【請求項１１】
データを格納する記憶装置と、前記記憶装置をアクセス対象とするコントローラとを備えるストレージシステムの制御方法であって、
前記コントローラは、
前記記憶装置に格納されたデータのうち論理ユニットのデータを複数の世代のスナップショットに関連づけて管理するステップと、
前記複数の世代の論理ユニットのデータを、前記各世代共通の共通データと前記各世代の論理ユニット間で相違がある差分データとして管理するステップと、
前記各世代のスナップショットに伴って前記各世代の論理ユニットのデータを更新するときに、当該更新に伴う更新データを前方差分データ格納領域にライトする前方差分方式または更新前のデータを旧データとして後方差分データ格納領域にコピーする後方差分方式を選択するステップと、
前記各世代の論理ユニットを、当該各世代の論理ユニットに共通するデータのためのベースボリュームと、前記差分データのうち前記更新データを前記前方差分方式で管理するための前方差分データまたは前記旧データを後方差分方式で管理するための後方差分データと、の組み合わせによって構成するステップと、
前記各世代のスナップショットに伴って前記各世代の論理ユニットのデータを更新するときに、オリジナルデータが存在するオリジナル論理ユニットを含むものまたは前記オリジナル論理ユニットとスナップショットを含むもののうち、前記ベースボリュームの共通データより古い部分のデータを前記後方差分データとして管理し、前記ベースボリュームの共通データより新しい部分のデータを前記前方差分データとして管理するステップと、
前記各世代の論理ユニットのうち、前方差分方式で管理する、オリジナルデータが存在するオリジナル論理ユニットと、当該オリジナル論理ユニットとともに前方差分グループを構成するスナップショットと、に生じた更新データである前方差分データ量を低減するための契機で当該前方差分データを前記ベースボリュームにライトする際、前記ベースボリュームに前記更新データがライトされる前に存在した旧データを後方差分データとして後方差分データプールに退避し、ベースボリュームへ前記前方差分データのライト完了後に当該前方差分データを削除することにより、前方差分データを後方差分データに変換する差分変換を行うステップと、
を実行する、ストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのバックアップに差分スナップショットを用いて、データ保護を効率的に行う技術に関する。
【背景技術】
【０００２】
ストレージシステムや、ストレージコントローラ、オペレーティングシステムのファイルシステムにおいては、ある指定された時点における静止状態のボリュームコピー（スナップショット）を作成し、データのバックアップ等のために用いるスナップショット技術が知られている。
【０００３】
また、最新データが存在する論理ユニット（ＬＵ）であるプロダクションＬＵと、スナップショットとの間に差異があるときに、差異がある領域のデータのみをコピーすることにより、ＬＵ全体の物理コピーを作成する方式や、更新データを時系列に全て記録するジャーナル方式よりも少ない容量でスナップショットを取得する差分スナップショット技術が知られている。
【０００４】
差分スナップショット技術として、スナップショット取得以降にＬＵが更新されるときに、更新前のデータ（後方差分データ）を他の領域にコピー（Copy-on-Write）することにより、スナップショットのデータを保持する、Copy-on-Write方式（米国特許5,649,152号公報）と、ＬＵが更新されるときに、元のデータを上書きせず、更新データ（前方差分データ）を他の領域にライトすることによりスナップショットのデータを保持する、Redirect-on-Write方式（米国特許5,819,292号公報、米国特許7,174,352号公報）が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許5,649,152号公報
【特許文献２】米国特許5,819,292号公報
【特許文献３】米国特許7,174,352号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
差分スナップショット技術をストレージシステムなどに適用するに際して、スナップショットの取得によって、プロダクションＬＵ（オリジナルデータが存在するＬＵ）へのアクセス時の性能が低下しないことが望ましいが、既知の差分スナップショット技術の適用によって、性能が低下するケースが存在する。
【０００７】
例えば、Copy-on-Write方式では、プロダクションＬＵ内のあるアドレスに対して、スナップショット取得後に最初のライトが行われたときに、通常のライト処理に加えて、Copy-on-Write処理に伴う、ドライブからの後方差分データのリード、および、他の領域へのライト処理が行われる。これによりスループットが低下し、ライトバックキャッシュに空きが無いときはホストへの応答性能もまた低下する。
【０００８】
また、Redirect-on-Write方式では、プロダクションＬＵに対して、少なくともスナップショット取得以降に更新されたデータについては、ホストコマンドに用いるボリューム内アドレス（ホストＬＢＡ）と、実際にデータが存在するアドレス（内部アドレス）とを関連付けるメタデータを持つ必要がある。また、プロダクションＬＵへのリード／ライト時にはメタデータを参照する必要がある。メタデータの総量が、コントローラのMPUから高速アクセスが可能なメモリ上に格納しきれなくなったケースでは、プロダクションＬＵへのリード／ライト時に、ドライブ上に格納されたメタデータを読み出さなければならないことがあり、これによりスループット・応答性能ともに低下する。
【０００９】
そこで、本発明は、スナップショットの取得によって、オリジナルデータが存在する論理ユニットへのアクセス時の性能が低下するのを防止することができるストレージシステムおよびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
前記目的を達成するために、本発明は、データを格納する記憶装置と、前記記憶装置をアクセス対象とするコントローラとを備え、前記コントローラは、前記記憶装置に格納されたデータのうち論理ユニットのデータを複数の世代のスナップショットに関連づけて管理するとともに、前記複数の世代の論理ユニットのデータを、前記各世代共通の共通データと前記各世代の論理ユニット間で相違がある差分データとして管理し、前記各世代のスナップショットに伴って前記各世代の論理ユニットのデータを更新するときに、当該更新に伴う更新データを前方差分データ格納領域にライトする前方差分方式または更新前のデータを旧データとして後方差分データ格納領域にコピーする後方差分方式を選択することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、スナップショットの取得によって、オリジナルデータが存在する論理ユニットへのアクセス時の性能が低下するのを防止することができる。
【図面の簡単な説明】
【００１２】
【図１】ストレージシステムの構成図。
【図２】スナップショット機能における差分管理方式の概要の説明図。
【図３】ドライブ部に含まれるデータの論理的内訳を示す図。
【図４】プロダクションＬＵのスナップショットの関する状態遷移図。
【図５】前方差分方式で取得したスナップショットＬＵの状態遷移図。
【図６】ＬＵ構成テーブルの構成図。
【図７】プール構成テーブルの構成図。
【図８】図９より図１２におけるアドレス変換情報の例を説明するための概略図。
【図９】アドレス変換テーブルの構成図。
【図１０】インデックス領域の構成説明図。
【図１１】（ａ）差分リスト領域の構成図、（ｂ）差分リストの構成図。
【図１２】（ａ）エクステント情報領域の構成図、（ｂ）エクステントリストテーブルの構成図。
【図１３】（ａ）後方差分データ管理領域の構成図、（ｂ）差分ブロック情報の構成図。
【図１４】リードコマンド実行時のドライブ部からのリード処理のフローチャート。
【図１５】ライトコマンド実行時のライト方式の選択処理のフローチャート。
【図１６】前方差分方式におけるライトコマンド実行時のドライブ部へのライト処理のフローチャート。
【図１７】後方差分方式で、プロダクションＬＵに対するライトコマンド実行時のドライブ部へのライト処理のフローチャート。
【図１８】後方差分方式で、スナップショットＬＵに対するライトコマンド実行時のドライブ部へのライト処理のフローチャート。
【図１９】スナップショット取得処理のフローチャート。
【図２０】差分変換処理を実行するＬＵの順序を決定するフローチャート。
【図２１】ＬＵ内差分データ変換処理のフローチャート。
【符号の説明】
【００１３】
１１  ストレージシステム
１２  ホスト
１３  管理端末
１４  ＳＡＮ
１１０  ストレージコントローラ
１１１  ＭＰＵ
１１２  管理端末Ｉ／Ｆ部
１１３  ホストＩ／Ｆ部
１１４  ドライブＩ／Ｆ部
１１５  メモリ
１１６  ドライブ部
２１  仮想ボリューム
２１０  前方差分グループ
２１３  後方差分グループ
２２  実データ
２２１  前方差分データ
２２２  ベースボリューム
２２３  後方差分データ
３１  前方差分データプール
３２  後方差分データプール
３３  構成情報領域
９１  前方差分データ管理領域
９１１  インデックス領域
９１２  差分リスト領域
９１３  エクステント情報領域
９２  後方差分データ管理領域
【発明を実施するための形態】
【００１４】
以下に図面を参照しながら本発明の実施の形態を説明する。図１は、本発明の実施の形態のストレージシステムの構成を示す図である。ストレージシステム１１は、記憶領域を含み、ＳＡＮ（Storage  Area  Network）１４に接続されたホスト１２からのコマンドによって、記憶領域のデータ（ユーザデータ）へのリード／ライトを実行する。ストレージシステム１１とホストとの接続形態は、ある１台のホストに直接接続される形態でも良いし、また、ホストに内蔵される形態でも良い。また、ストレージシステム１１は、管理端末１３からのコマンドによって、記憶領域内の論理ユニット（ＬＵ）の構成等のパラメータを変更する。
【００１５】
ストレージコントローラ１１０は、ストレージシステム１１を構成し、ホスト１２から受領したコマンドを解釈し、ドライブ部１１６に含まれる記憶領域へのリード／ライトを実行する。ストレージコントローラ１１０は、ＭＰＵ（Micro  Processing  Unit）１１１によって制御され、ホストＩ／Ｆ（Interface）部１１３によってＳＡＮ１４と、ドライブＩ／Ｆ部１１４によってドライブ部１１６と接続される。また、管理端末Ｉ／Ｆ１１２によって、管理端末１３と接続される。メモリ１１５は、ＭＰＵ１１１からの高速なアクセスが可能であり、ＭＰＵ１１１で実行されるストレージ制御プログラム１１５１、ストレージシステム１１の各種のパラメータを含む構成情報１１５６、ユーザデータを一時的に記憶するキャッシュ領域１１５９を含む。
【００１６】
ストレージ制御プログラム１１５１を構成するプログラムモジュールについて説明する。構成管理部１１５２は、管理端末１３からのコマンドや、他のプログラムモジュールからの指示等によって、構成情報１１５６の更新及び参照を行う。入出力処理部１１５３は、ホスト１２からのコマンドを解釈し、リード／ライトを実行する記憶領域を決定し、ドライブ部１１６とキャッシュ領域１１５９の間、及び、キャッシュ領域１１５９とホスト１２の間のデータ転送を実行する。スナップショット処理部１１５４は、スナップショットの取得（後述）および削除に関する処理を実行する。差分変換処理部１１５５は、スナップショットに関連する、差分変換処理（後述）を実行する。
【００１７】
構成情報１１５６に含まれる、ＬＵ構成テーブル１１５７は、ＬＵのリストおよびそれらの各種属性情報を含む。プール構成テーブル１１５０は、スナップショットにおける差分データを格納するプールのリストおよびそれらの各種属性情報を含む。アドレス変換テーブル１１５８は、スナップショットの適用に必要な、ホストＬＢＡ（Logical  Block  Address）と内部アドレスとを関連付ける情報を含む。
【００１８】
ドライブ部１１６には、最終的な記憶媒体であるドライブ１１６１を１台ないし複数台含む。記憶装置としてのドライブ１１６１には、磁気記憶装置（ハードディスク）やフラッシュメモリ等があり、ドライブの識別子、及びドライブ内部のアドレスによって、記憶先を指定することができる。
【００１９】
図２は、本発明の実施の形態のスナップショット機能における差分管理方式の概要の説明図である。実データ２２は、ドライブ部１１６に含まれる物理的な記憶領域（複数のブロックで構成される記憶領域）に格納される実際のデータである。これに対して、仮想ボリューム２１は、ドライブ部１１６の記憶領域上に物理的な連続領域を持たないＬＵであって、実データ２２に含まれる小ブロックの組み合わせへのマッピングによって成り立っているＬＵを表す。スナップショット機能の使用時には、プロダクションＬＵ、および、そのスナップショットとしては、仮想ボリューム２１が用いられる。
【００２０】
図２の例では、オリジナルデータが存在するオリジナル論理ユニットとしてのプロダクションＬＵ２１１に対して、取得時刻が新しい順（スナップショットの世代順）に、スナップショットＡ２１２、スナップショットＢ２１４、スナップショットＣ２１５が存在する。このうち、プロダクションＬＵ２１１とスナップショットＡ２１２は、前方差分グループ２１０に属する。これらＬＵのホストＬＢＡは、ベースボリューム２２２と、それよりも新しい部分のデータ群を示す前方差分データ２２１のいずれかへマッピングされる。
【００２１】
また、スナップショットＢ２１４とスナップショットＣ２１５は、後方差分グループ２１３に含まれる。これらＬＵのホストＬＢＡは、ベースボリューム２２２と、それよりも古い部分のデータ群を示す後方差分データ２２３のいずれかへマッピングされる。すなわち、プロダクションＬＵ、および、そのスナップショットは、取得時刻がより新しい前方差分グループ２１０と、より早い取得時効の後方差分グループ２１３のいずれかに含まれる。
【００２２】
この際、前方差分グレープ２１０に属するＬＵと後方差分グループ２１３に属するＬＵを各世代の論理ユニットとした場合、各世代の論理ユニットは、各世代で共通の論理ユニットであるベースラインボリューム２２２と、前方差分方式で管理するための前方差分データ２２１または後方差分方式で管理するための後方差分データ２２３である差分データとの組み合わせで構成される。
【００２３】
図３は、ドライブ部１１６に含まれるデータの論理的内訳を示している。ベースボリューム２２２は、各世代共通の共通データを格納するボリュームとしてそれぞれがプロダクションＬＵに対応しており、プロダクションＬＵと同数存在する。前方差分データプール３１は、前方差分データ２２１を格納する領域である。後方差分データプール３２は、後方差分データ２２３を格納する領域である。前方差分データプール３１、及び、後方差分データプール３２は、１個を複数のプロダクションＬＵおよびそのスナップショットで共有することもできる。構成情報領域３３は、構成情報１１５６をドライブで保管するための領域である。
【００２４】
図４は、プロダクションＬＵのスナップショットに関する状態遷移を示す。プロダクションＬＵのスナップショットに関する状態遷移は、ＭＰＵ１１１の処理状態を示すものであり、プロダクションＬＵの初期状態（ＬＵ作成時の状態）は、「スナップショット適用なし４１」である。
【００２５】
ＭＰＵ１１１は、管理端末１３からの指示等によりスナップショットの取得を行うが、このとき、プロダクションＬＵを前方差分方式（従来技術のRedirect-on-Write方式に分類される）で管理するか、または後方差分方式（従来技術のCopy-on-Write方式に分類される）で管理するかを選択可能とすることもできる。前方差分方式の選択時には、プロダクションＬＵの性能低下が全般的に少なくできるが、比較的ライトコマンドが少なく、特にリードコマンドの性能に最適化したいＬＵは、後方差分方式を選択することが考えられる。
【００２６】
前方差分方式によるスナップショット取得を選択した場合、ＭＰＵ１１１は、「スナップショット適用あり（前方）４２」に遷移する。この状態では、前方差分データ２２１をベースボリューム２２２にコピーすることで前方差分データ２２１の量を削減する差分変換処理を実行することができ、その実行中には、「差分変換処理中４３」に遷移し、実行完了時には状態４２に戻る。４２、４３の状態において、スナップショットをさらに取得することができる。また、全てのスナップショットを削除することにより、４１に遷移する。
【００２７】
後方差分方式によるスナップショット取得を選択した場合、ＭＰＵ１１１は、「スナップショット適用あり（後方）４４」に遷移し、全てのスナップショットを削除することにより、状態４１に遷移する。
【００２８】
図５は、前方差分方式で取得したスナップショットＬＵの状態遷移を示す。ＭＰＵ１１１は、スナップショットＬＵの初期状態では、「存在せず５１」として処理するが、あるプロダクションＬＵにおいて前方差分方式でスナップショットが取得されたときには、「前方差分方式スナップショット５２」状態へ遷移する。この後、ＭＰＵ１１１は、プロダクションＬＵに対して差分変換処理が実行されると、当該スナップショットの前方差分データ２２１についても差分変換処理が開始され、「差分変換処理中５３」に遷移する。
【００２９】
この状態において当該スナップショットへのライトが行われた場合は、ＭＰＵ１１１は、前方差分データ２２１としてライトデータを記録する。さらに、差分変換完了によって、「後方差分方式スナップショット５４」に遷移し、この状態において当該スナップショットへのライトを実行した場合は、後方差分データ２２３としてライトデータを記録する。当該スナップショットが削除された場合には、「存在せず５１」へ遷移する。
【００３０】
図６は、ＬＵ構成テーブル１１５７の一例を示す。ＬＵ構成テーブル１１５７の属性について説明する。ＬＵＮ６１は、ＬＵの識別番号を示す。種別６２は、プロダクションＬＵか、またはスナップショットＬＵかの別を示す。スナップショットＬＵは、必ず元となるプロダクションＬＵが存在しており、対応するプロダクションＬＵ６６によって、元となるプロダクションＬＵと関連付けられている。
【００３１】
容量６３は、ホスト１２から使用可能な容量を示す。スナップショットＬＵは、対応するプロダクションＬＵと必ず容量が一致するため、値を持たない。
【００３２】
ベースボリューム構成６４は、プロダクションＬＵに対応するベースボリューム２２２の構成（含まれるドライブ、アドレス範囲、ＲＡＩＤレベル）を示す。スナップショットＬＵは、対応するプロダクションＬＵを備えるベースボリューム２２２を共有するため、値を持たない。
【００３３】
世代番号６５は、同一のプロダクションＬＵから取得されたスナップショットＬＵの識別番号であり、取得時刻が古い方が小さい値を持つ。差分管理方式６７は、ＬＵが、前方差分方式、後方差分方式のいずれによって差分管理されているかを示す。
【００３４】
プールＩＤ６８は、前方差分データプール３１、後方差分データプール３２のそれぞれについて、どのデータプールを使用するかを示す。同一のプロダクションＬＵに属するプロダクションＬＵ群は、同一データプールを共有するため、値を持たない。
【００３５】
差分変換ポリシ６９は、プロダクションＬＵに対して、差分変換処理を実行する契機を定める。アドレス変換テーブル１１５８に含まれる、前方差分データ管理領域９１（図９、後述）のデータ量を、メモリ上に格納可能な量以下に抑え、プロダクションＬＵアクセス時の構成情報領域３３へのアクセスを不要とすることで、プロダクションＬＵの性能低下を抑えることができる。このため、差分変換処理は、前方差分データ管理領域９１のデータ量が、メモリ容量から決定する閾値を超えた契機で実行するのが、最適である。閾値を決定するときに、差分変換処理に要する時間を考慮して、メモリ容量よりもある程度低めに閾値を設定するといった考慮も含める。
【００３６】
また、差分変換処理は、前方差分データ管理領域９１のデータ量が、メモリ容量から決定する閾値を超えるよりも早いタイミングで実行したり、あるいは、ＭＰＵ１１１からドライブ部１１６へのリードアクセスとライトアクセスとの比を基に実行したりすることもできる。
【００３７】
前方差分データ管理領域９１のデータ量の計測は、同領域からのメモリ確保・解放に伴ってメモリ使用量を計測しても良いし、プール構成テーブル１１５０に含まれ、使用中の差分データ量を表す差分量カウンタ７４（図７）の、ストレージシステム１１全体の前方差分データプールの総計から、前方差分データ管理領域９１のデータ量を算出することもできる。
【００３８】
差分変換ポリシ６９として、その他には、定期実行という選択肢も考えられる。これは、ストレージシステム１１が使用される業務の性質上、負荷が少ない時間帯に、差分変換処理を実行したい、といったケースで有効である。
【００３９】
また、差分変換処理は、プロダクションＬＵの差分管理方式が前方であるときのみ実行できるため、差分管理方式が後方であるプロダクションＬＵに差分変換ポリシ６９を設定しても無効である。
【００４０】
差分変換ポリシ６９に設定した契機以外に、管理端末１３を介してユーザがコマンドを与えることにより差分変換処理を実行するという契機も考えられる。
【００４１】
図７は、プール構成テーブル１１５０の一例を示す。プール構成テーブル１１５０は、前方差分データプール３１、及び、後方差分データプール３２のリストを含む。以下、その属性について説明する。
【００４２】
プールＩＤ７１は、プールの識別番号を示し、ＬＵ構成テーブルのプールＩＤ６８に対応する。ボリューム構成７２は、ベースボリューム構成６４と同様に、プールの構成（含まれるドライブ、アドレス範囲、ＲＡＩＤレベル）を示す。
【００４３】
差分管理方式７３は、各プールが、前方差分データプール３１、または、後方差分データプール３２、のいずれであるかを示す。差分量カウンタ７４は、プール内で、いずれかのＬＵにより使用中の領域の総容量を示す。
【００４４】
図８より図１２までを用いて、前方差分方式スナップショットを実現するアドレス変換情報の一実施形態を説明する。図８は、図９より図１２までに示すアドレス変換情報の一例について、その例を説明するための概略図である。
【００４５】
ＬＵＮ＝０であるプロダクションＬＵ８１は、ベースボリューム８２と、前方差分データプール８３を実データとして構成されている。プロダクションＬＵ８１のうち、ホストＬＢＡが０１００ｈ、０３８０ｈ、０４００ｈ、１５２０ｈで開始する部分領域については、実データが前方差分データプール８３に存在し、それ以外の領域については、ベースボリューム８２に存在する。
【００４６】
図９は、アドレス変換テーブル１１５８の構成を示す。アドレス変換テーブル１１５８には、前方差分方式スナップショットに関するアドレス変換情報を持つ前方差分データ管理領域９１と、後方差分方式スナップショットに関するアドレス変換情報を持つ後方差分データ管理領域９２を含む。
【００４７】
前方差分データ管理領域９１には、インデックス領域９１１、差分リスト領域９１２、エクステント情報領域９１３を含む。それぞれの役割については、図１０〜図１２を用いて説明する。
【００４８】
図１０は、インデックス領域９１１の構成及び例を示す。インデックス領域の役割は、アドレス変換元となるホストＬＢＡから、差分リスト領域９１２の対応するエントリを高速に検索する支援を行うことである。そのため、一般的に知られた効率の良い探索アルゴリズムを用いることが望ましい。本実施例では、Ｂ＋Ｔｒｅｅアルゴリズム（Organization and Maintenance of Large Ordered Indexes by R. Bayer and E. McCreight In: Acta Informatica, Vol. 1, Fasc. 3, 1972, pp. 173-189）を用いた例を示している。
【００４９】
差分インデックス１００は、差分管理方式６７が“前方”である各ＬＵに対応して存在する、探索の出発点となる最上部の内部ノード１０１へのポインタである。
【００５０】
内部ノード１０１は、他の内部ノード１０１への複数のポインタ、および、各ポインタへの探索条件となるホストＬＢＡ範囲を持つ。内部ノード１０１は木構造に構成されており、探索対象となるホストＬＢＡの範囲を狭めていくために用いる。内部ノード１０１が指すポインタは、差分リスト１０２を指すこともある。差分リスト１０２は、ある定められた数（本実施例では、図１１の差分リスト２の例に示したように、４個）のエントリを持ち、内部ノード１０１に含まれるあるホストＬＢＡ範囲について、その範囲の差分エントリの数が差分リストが含むことができるエントリの数以下となることが、差分リストに記述できる数となることが、内部ノード１０１のポインタが差分リスト１０２を指す条件となる。
【００５１】
次に、ＬＵＮ０のホストＬＢＡ０４００ｈに対応する差分リスト１０２を探索する例を説明する。まず、ＬＵＮ０の差分インデックス１００Ａより探索を開始し、内部ノード１０１Ａを参照する。内部ノード１０１Ａでは、４０００ｈより小さいホストＬＢＡは、内部ノード１０１Ｂを次の探索先として指している。０４００ｈはこれに該当するため、次に、内部ノード１０１Ｂを探索する。内部ノード１０１Ｂでは、００５０ｈ以上で、２０００ｈより小さいホストＬＢＡは、差分リスト２  １０２Ｂを探索先として指している。０４００ｈはこれに該当するため、差分リスト２  １０２Ｂが探索結果となる。
【００５２】
図１１は、差分リスト領域の構成、及び、差分リストの例を示す。差分リスト領域９１２には、複数の差分リスト１０２が含まれている。差分リスト１０２は、差分データの生成／削除に応じて、入出力処理部１１５３やスナップショット処理部１１５４から確保・解放されるため、空き差分リストをリスト化したフリーリストに接続されて管理されている。フリーリスト用ポインタ１１０１は、フリーリストを構成するためのポインタである。内部ノード１０１も同様に、差分データの量に応じて動的に確保・解放されるため、フリーリスト等による管理を要する。
【００５３】
差分リスト１０２に含まれる属性を説明する。開始ＬＢＡ１１０２は、差分データに対応するホストＬＢＡの開始値を示す。Ｌｅｎｇｔｈ１１０３は、差分データ長を示す。Ｅｘｔｅｎｔ  ＩＤ１１０４は、開始ＬＢＡ１１０２・Ｌｅｎｇｔｈ１１０３によって表されたホストＬＢＡ範囲に対応する実データであるエクステント（後述）の識別番号を示す。Ｏｆｆｓｅｔ１１０５は、前記エクステント内で、前記実データが開始するオフセットアドレスを示す。
【００５４】
差分リスト２  １０２Ｂの例では、第１のエントリは、ホストＬＢＡ範囲０１００ｈ〜０１７９ｈに対応する実データが、Ｅｘｔｅｎｔ  ＩＤ＝１、Ｏｆｆｓｅｔ＝０の実データであることを示している。
【００５５】
図１２は、エクステント情報領域９１３の構成、及び、エクステントリストテーブル１２０１の例を示している。エクステントとは、前方差分データプール３１に含まれる、任意のセクタ数のサイズを取ることができる可変長のデータブロックである。前方差分方式が適用されたＬＵにおいて生じた差分データは、エクステントとして前方差分データプール３１に格納される。エクステントリストテーブル１２０１には、エクステント毎の属性を示す情報が含まれる。
【００５６】
また、前方差分データプール３１のうち、エクステント未確保の領域は、フリーインデックス１２０２によって管理される。
【００５７】
エクステントリストテーブル１２０１に含まれる属性を説明する。Ｅｘｔｅｎｔ  ＩＤ１２０３は、前方差分データプール３１内におけるエクステントの識別番号を示し、差分リスト１０２のＥｘｔｅｎｔ  ＩＤ１１０４と対応している。プール内開始ＬＢＡ１２０４は、前方差分データプール３１内において、当該エクステントの実データが開始するＬＢＡを示す。Ｌｅｎｇｔｈ１２０５は、当該エクステントのデータ長を示す。参照カウンタ１２０６は、当該エクステントを差分データとして含んでいるＬＵの数を示す。
【００５８】
図１３は、後方差分データ管理領域９２の構成を示す。後方差分方式スナップショットの実現方式の一例として、固定長の差分ブロックにより差分データを実現する方式を示す。差分ブロック管理テーブル１３０１は、ある同一のプロダクションＬＵに属し、差分管理方式６７が“後方”であるＬＵ群に対応して存在し、ホストＬＢＡと、差分ブロック情報１３０２のリストとの対応関係を示す。差分ブロック情報１３０２のリストは、後方差分データが存在するＬＵについて、ＬＵＮと、プール内の差分ブロックとの対応関係を示す。プール内ブロックＩＤ１３０３は、プール内における差分ブロックの識別番号を示し、当該差分ブロックに差分データを持つＬＵのリストを、ＬＵＮ１３０４が示す。リストポインタ１３０５は、差分ブロック情報１３０２のリストを構成するために必要なポインタである。
【００５９】
図９から図１３に関して、アドレス変換テーブル１１５８が、メモリ１１５の許可された領域を上回るサイズであるときは、仮想記憶等の仕組みにより、構成情報領域３３に全体が含まれるアドレス変換テーブル１１５８の一部をメモリ１１５に配置する方式を取ることが考えられる。
【００６０】
図１４は、リードコマンド実行時のドライブ部１１６からのリード処理のフローチャートを示す。以下の処理は、ＭＰＵ１１１によって実行される。
【００６１】
ステップＳ１４１において、リードコマンドの対象となるＬＵの差分管理方式による分岐を行う。
【００６２】
前方差分方式であった場合、ステップＳ１４２において、リードコマンドのホストＬＢＡに基づいて、インデックス領域９１１に含まれるインデックスの探索を、対象ＬＵの差分インデックス１００を出発点として実行する。これによって、対象ホストＬＢＡに対応するエクステントの存否、及び、存在するならば、そのＥｘｔｅｎｔ  ＩＤ１２０３を求める。
【００６３】
後方差分方式であった場合、ステップＳ１４３において、リードコマンドのホストＬＢＡに基づいて、後方差分データ管理領域９２を探索し、対象ホストＬＢＡに対応する差分ブロックの存否、及び、存在するならば、そのプール内ブロックＩＤ１３０３を求める。
【００６４】
ステップＳ１４４において、対象ホストＬＢＡに対応する差分データ（エクステントまたは差分ブロック）の存否による分岐を行う。差分データが存在するならば、ステップＳ１４５、Ｓ１４６の差分データリードを実行する。
【００６５】
ステップＳ１４５において、前記差分データに対応する、差分データプール内のアドレス（ドライブ１１６１、及び、その内部のＬＢＡ）を、ステップＳ１４３またはＳ１４４で求めた差分データの情報に基づいて決定する。アドレスを決定するにあたっては、ＲＡＩＤが適用されたボリュームであれば、ＲＡＩＤ方式に基づいたアドレス変換もまた行われる。
【００６６】
ステップＳ１４６において、差分データプール内のドライブ１１６１にリードコマンドを発行し、ドライブ１１６１からキャッシュ領域１１５９へのデータ転送を実行する。
【００６７】
ステップＳ１４７において、対象ホストＬＢＡの範囲に、差分データが含まれていない部分が存在するかどうかを判断する。存在する場合、ステップＳ１４８を実行する。また、ステップＳ１４４において、対象ホストＬＢＡの範囲に差分データが含まれていないと判断された場合も、ステップＳ１４８を実行する。
【００６８】
ステップＳ１４８において、ベースボリューム２２２内のドライブ１１６１にリードコマンドを発行し、ドライブ１１６１からキャッシュ領域１１５９へのデータ転送を実行する。
【００６９】
以上のステップにより、リードコマンド実行時のドライブ部１１６からのリード処理を実行する。
【００７０】
図１５から図１８は、ライトコマンド実行時のドライブ部１１６へのライト処理のフローチャートを示す。図１５は、ライトコマンド実行時のライト方式の選択処理のフローチャートを示す。ライト処理は、対象ＬＵの差分管理方式および種別によって異なるため、Ｗｒｉｔｅ処理１（対象ＬＵが前方差分方式のとき。ステップＳ１５３）、Ｗｒｉｔｅ処理２（対象ＬＵが後方差分方式で、かつプロダクションＬＵのとき。ステップＳ１５４）、Ｗｒｉｔｅ処理３（対象ＬＵが後方差分方式で、かつスナップショットＬＵのとき。ステップＳ１５５）として図１６から図１８でそれぞれ説明する。以下の処理は、ＭＰＵ１１１によって実行される。
【００７１】
後方差分方式においては、プロダクションＬＵに対しては、ライトデータがベースボリューム２２２に書き込まれるのに対して、スナップショットＬＵに対しては、ライトデータが後方差分データプール３２に書き込まれるという方式の違いがある。
【００７２】
まず、ライト方式の選択処理を行うに際して、ＭＰＵ１１１は、ステップＳ１５１において、差分管理方式による分岐を行い、さらに、差分管理方式が後方差分方式のときは、ステップＳ１５２において、ＬＵの種別による分岐を行う。
【００７３】
図１６は、前方差分方式におけるライトコマンド実行時のドライブ部１１６へのライト処理のフローチャートを示す。以下の処理は、ＭＰＵ１１１によって実行される。
【００７４】
ステップＳ１６１において、リード処理におけるステップＳ１４２と同様に、対象ホストＬＢＡに対応するエクステントの存否、及び、存在するならば、そのＥｘｔｅｎｔ  ＩＤ１２０３を求める。
【００７５】
ステップＳ１６２において、ステップＳ１６１の結果に基づいて、対象ホストＬＢＡに対応するエクステントが存在するならば、ステップＳ１６３へ、存在しないならば、ステップＳ１６７への分岐を行う。
【００７６】
ステップＳ１６３において、当該エクステントの参照カウンタ１２０６に基づいた分岐を行う。参照カウンタ＝１のエクステントであれば、ライト対象のＬＵ以外のＬＵと共有されていないため、ステップＳ１６４に進み、エクステントに対してライトデータを上書きする。対象ホストＬＢＡの範囲に複数のエクステントが含まれているケースもあるが、そのうちの参照カウンタ＝１である全てのエクステントに対して、ステップＳ１６４の処理を実行する。
【００７７】
ステップＳ１６５において、Ｓ１６３と同様に、当該エクステントの参照カウンタ１２０６に基づいた分岐を行う。参照カウンタ＞１のエクステントは、ライト対象のＬＵ以外のＬＵと共有されているため、エクステントに上書きをすると、エクステントを共有している他のＬＵのデータもまた変更されてしまう。これを防ぐために、ステップＳ１６６に進み、新たなエクステントを確保し、ライトデータを書き込む。
【００７８】
ステップＳ１６７において、対象ホストＬＢＡ範囲のうち、エクステントではなくベースボリューム２２２に実データが存在する範囲、すなわち、ステップＳ１６４、ステップＳ１６６のいずれにおいてもライトされていない範囲が存在するかどうかを判断する。存在するときは、ステップＳ１６８に進み、前期範囲に対応する新たなエクステントを確保し、ライトデータを書きこむ。
【００７９】
以上のステップにより、前方差分方式におけるライトコマンド実行時のドライブ部１１６へのライト処理を実行する。
【００８０】
図１７は、後方差分方式で、プロダクションＬＵに対するライトコマンド実行時のドライブ部１１６へのライト処理のフローチャートを示す。以下の処理は、ＭＰＵ１１１がスナップショット処理部１１５４を起動することによって実行される。
【００８１】
プロダクションＬＵへのライト時には、ベースボリューム２２２がライト先となるが、このとき、スナップショットＬＵの保存のため、更新前のデータが差分ブロックとして後方差分データプール３２に退避されていなければならない。まだ退避されていないスナップショットＬＵのデータが存在すれば、退避処理を実行する必要がある。
【００８２】
このような観点により、ＭＰＵ１１１は、ステップＳ１７１において、対象ホストＬＢＡについて、全てのスナップショットＬＵが既に差分ブロックを持っているかどうか、すなわち、差分ブロック管理テーブル１３０１において、対象ホストＬＢＡのいずれかの差分ブロック情報１３０２のＬＵＮリスト１３０４に含まれているかどうかを判断する。全てのスナップショットＬＵが既に差分ブロックを持っていて、退避処理の必要が無ければ、ステップＳ１７４に進む。そうでなければ、退避処理を実行するため、ステップＳ１７２に進む。
【００８３】
Ｓ１７２において、新たに差分ブロック情報１３０２を作成し、対象ホストＬＢＡのリストポインタに接続する。さらに前記差分ブロック情報のＬＵＮリスト１３０４には、全てのスナップショットＬＵのＬＵＮを含める。
【００８４】
Ｓ１７３において、ベースボリューム２２２にある対象ホストＬＢＡの更新前のデータを、差分ブロックにコピーする。
【００８５】
Ｓ１７４において、ベースボリューム２２２の対象ホストＬＢＡにライトデータを書き込む。
【００８６】
以上のステップにより、後方差分方式で、プロダクションＬＵに対するライトコマンド実行時のドライブ部１１６へのライト処理を実行する。
【００８７】
図１８は、後方差分方式で、スナップショットＬＵに対するライトコマンド実行時のドライブ部１１６へのライト処理のフローチャートを示す。以下の処理は、ＭＰＵ１１１がスナップショット処理部１１５４を起動することによって実行される。
【００８８】
スナップショットＬＵへのライト時には、後方差分データプール３２がライト先になるが、差分ブロックが確保されていないか、または差分ブロックを他のスナップショットＬＵと共有しているケースでは、新規差分ブロックを確保し、更新前データのコピーを実行する必要がある。
【００８９】
このような観点により、ＭＰＵ１１１は、ステップＳ１８１において、対象ホストＬＢＡについて既に差分ブロックが存在するかどうか、かつ、その差分ブロックが当該スナップショットＬＵのみ参照しているかどうかを判断する。条件を満足した場合、新規差分ブロックの確保は不要であるため、ステップＳ１８４に進む。条件を満足しない場合、ステップＳ１８２に進む。
【００９０】
ステップＳ１８２において、新たに差分ブロック情報１３０２を作成し、対象ホストＬＢＡのリストポインタに接続する。さらに前記差分ブロック情報のＬＵＮリスト１３０４には、当該スナップショットＬＵのＬＵＮのみを含め、既存の差分ブロック情報があれば当該スナップショットＬＵのＬＵＮを削除する。
【００９１】
ステップＳ１８３において、ベースボリューム２２２または後方差分データプール３２にある更新前のデータを、旧データとして前記差分ブロックにコピーする。次に、ステップＳ１８４において、ライトデータを差分ブロックに上書きする。
【００９２】
以上のステップにより、後方差分方式で、スナップショットＬＵに対するライトコマンド実行時のドライブ部１１６へのライト処理を実行する。
【００９３】
図１９は、スナップショット取得処理のフローチャートを示す。以下の処理は、ＭＰＵ１１１がスナップショット処理部１１５４を起動することによって実行される。先ず、ＭＰＵ１１１は、ステップＳ１９１において、スナップショット取得の対象となるプロダクションＬＵの差分管理方式による分岐を行う。
【００９４】
前方差分方式であった場合、ＬＵには個別に差分インデックス１００、及び、内部ノード１０１、差分リスト１０２で構成されるインデックス情報が必要であるため、ステップＳ１９２において、プロダクションＬＵのインデックス情報を、新規のスナップショットＬＵのインデックス情報としてコピーを行う。
【００９５】
ステップＳ１９３において、プロダクションＬＵに含まれる全てのエクステントについて、参照カウンタ１２０６を加算する。参照カウンタ１２０６は、スナップショットＬＵを消去するときには、そのスナップショットＬＵに含まれる全てのエクステントについて、減算する。
【００９６】
ステップＳ１９２、及び、Ｓ１９３は、ホストコマンドの実行とは排他的に実行されなければならない。
【００９７】
ステップＳ１９４において、ＬＵ構成テーブル１１５７に対して、新規のスナップショットＬＵを示すエントリを追加する。
【００９８】
図２０及び図２１は、差分変換処理のフローチャートを示す。差分変換処理とは、前方差分データ２２１をベースボリューム２２２にライトし、ベースボリューム２２２のライト前のデータを後方差分データ２２３として退避させることによって、前方差分方式のプロダクションＬＵ及びスナップショットＬＵに属する前方差分データ２２１を削除する処理である。
【００９９】
図２０は、差分変換処理を実行するＬＵの順序を決定するフローチャートを示す。差分変換処理は、対象となるプロダクションＬＵに属し、かつ前方差分方式である全てのスナップショットＬＵについて、取得時刻が最も古いものから順に実行する。次に、プロダクションＬＵに対して実行する。以下の処理は、ＭＰＵ１１１が差分変換処理部１１５５を起動することで実行される。
【０１００】
先ず、ＭＰＵ１１１は、ステップＳ２０１において、対象となるプロダクションＬＵに属し、かつ差分管理方式が前方差分方式であるスナップショットＬＵの存否を、ＬＵ構成テーブル１１５７に基づいて判断する。存在するときは、ステップＳ２０２へ、存在しないときは、ステップＳ２０５へ進む。
【０１０１】
ステップＳ２０２において、対象となるプロダクションＬＵに属し、かつ差分管理方式６７が前方差分方式であるスナップショットＬＵのうち、世代番号６５が最も大きいもの、すなわち、取得時刻が最も古いものを探索する。
【０１０２】
ステップＳ２０３において、ステップＳ２０２で探索したＬＵを対象に、ＬＵ内差分データ変換処理を実行する。ＬＵ内差分データ変換処理の詳細は、図２１を参照して後述する。
【０１０３】
ステップＳ２０４において、ＬＵ内差分データ変換処理がステップＳ２０３で完了した、スナップショットＬＵの差分管理方式６７を、“後方”に変更する。
【０１０４】
前方差分方式のスナップショットＬＵが、差分変換処理の開始前から存在しないか、または全てＬＵ内差分データ変換処理が完了したときに、ステップＳ２０５に進み、プロダクションＬＵを対象として選択する。
【０１０５】
ステップＳ２０６において、ステップＳ２０５で選択したプロダクションＬＵを対象に、ＬＵ内差分データ変換処理を実行する。
【０１０６】
また、差分変換処理を実行する目的として、これまで説明した、前方差分データ２２１の削減以外に、プロダクションＬＵの差分管理方式を、前方差分方式から後方差分方式に変更することが考えられる。差分管理方式の前方差分方式から後方差分方式への変更は、プロダクションＬＵのアクセスパターンが、時間の経過により、前方差分方式が適した、比較的ライトが多いものから、後方差分方式が適した、ライトが少ないものに変わってきたときに有効である。この目的での差分変換処理は、管理端末１３を介して、ユーザがコマンドを与えた契機で実行されることが考えられる。
【０１０７】
図２１は、ＬＵ内差分データ変換処理のフローチャートを示す。ＬＵ内差分データ変換処理は、対象ＬＵに属する全ての前方差分データ２２１をベースボリューム２２２に反映させる。以下の処理は、ＭＰＵ１１１が差分変換処理部１１５５を起動することで実行される。
【０１０８】
まず、ＭＰＵ１１１は、ステップＳ２１１において、前方差分データ管理領域９１を探索し、対象ＬＵに属するエクステントを１個選択する。
【０１０９】
次に、ＭＰＵ１１１は、ステップＳ２１２において、対象ＬＵに属するエクステントの存否による分岐を行う。エクステントが存在しない場合、ＬＵ内差分データ変換処理を完了する。エクステントの存否確認を高速に行うため、特定のＬＵに属するエクステント数のカウンタを設け、エクステント割り当て時に加算、削除時に減算する、といった方法が考えられる。
【０１１０】
また、例えばホストＬＢＡの昇順でエクステントの探索を行った場合、ＬＵ内差分データ変換処理の途中で新規に割り当てられたエクステントが、変換対象から漏れてしまうため、前記のようなエクステントについては、リスト化して、ホストＬＢＡに基づいた探索・変換の完了後に、前記リストが持つ全てのエクステントの変換処理を行う、といった方式が考えられる。
【０１１１】
次に、ＭＰＵ１１１は、ステップＳ２１３において、ステップＳ２１１で選択されたエクステントのホストＬＢＡ範囲のベースボリューム２２２を参照する、他の前方差分方式のＬＵが存在するかどうかを判断する。存在する場合、エクステントのデータをベースボリューム２２２に反映させると、反映前のデータを参照しているＬＵのデータを破壊してしまうことになる。この破壊から逃れるため、ＭＰＵ１１１は、エクステントのデータをベースボリューム２２２に反映する前に、ステップＳ２１４において、データ退避を目的として、新規エクステントの当該ＬＵへの割り当て、及び、前記エクステントへのベースボリューム２２２のデータのコピーを行う。
【０１１２】
この後、ＭＰＵ１１１は、ステップＳ２１５において、図１７を用いて説明したＷｒｉｔｅ処理２を実行する。Ｗｒｉｔｅ処理２は、ベースボリューム２２２のデータを後方差分データ２２３に退避させ、その後でベースボリューム２２２にライトする処理である。ライトするデータは、ステップＳ２１１で選択されたエクステントのデータである。
【０１１３】
ステップＳ２１６において、エクステントを削除する前処理として、差分リスト１０２から前記エクステントを指す差分管理情報を削除し、エクステントリストテーブル１２０１から、前記エクステントに対応する参照カウンタ１２０６を減算する。
【０１１４】
ステップＳ２１７において、前記参照カウンタ１２０６が０であるかどうか判定する。０であれば、前記エクステントを参照する他のＬＵは無く、削除可能であるため、ステップＳ２１８に進み、エクステントリストテーブル１２０１を更新し、エクステントの削除を行う。
【０１１５】
ステップＳ２１７またはＳ２１８が完了すると、対象ＬＵに属する全てのエクステントに対する差分変換処理をループ実行するため、ステップＳ２１１に戻る。
【０１１６】
ステップＳ２１２において、対象ＬＵに属する未処理のエクステントが残っているかどうかをチェックし、そして、前記チェックの開始から、図２０のステップＳ２０４における差分管理方式の変更までの間に、新規のエクステントが割り当てられないようにライトを抑止する必要がある。
【０１１７】
本実施形態によれば、ストレージコントローラ１１０は、ドライブ部１１６に格納されたデータのうち論理ユニットのデータを複数の世代のスナップショット２１２、２１４、２１５に関連づけて管理するスナップショット処理部１１５４を備え、スナップショット処理部１１５４は、複数の世代の論理ユニットのデータを、各世代共通の共通データであるベースボリューム２２２と各世代の論理ユニット間で相違がある差分データ（２２１、２２３）として管理し、各世代のスナップショットに伴って各世代の論理ユニットのデータを更新するときに、この更新に伴う更新データを、前方差分データ格納領域である前方差分データプール３１にライトする前方差分方式または更新前のデータを旧データとして後方差分データ格納領域である後方差分データプール３２にコピーする後方差分方式を選択するようにしたため、スナップショットの取得によって、プロダクションＬＵへのアクセス時の性能が低下するのを防止することができる。
【０１１８】
本実施形態によれば、スナップショット処理部１１５４は、各世代のスナップショットに伴って各世代の論理ユニットのデータを更新するときに、この更新に伴う更新データを前方差分データ２２１としてベースボリューム２２２にライトし、ベースボリューム２２２に更新データがライトされる前に存在した旧データを後方差分データ２２３として後方差分データプール３２に退避し、各世代の論理ユニットのデータを更新したときには、各世代の論理ユニットのうちプロダクションＬＵおよびこのプロダクションＬＵとともに前方差分グループ２１０を構成するスナップショット２１２の前方差分データ２２１を削除するようにしたため、前方差分方式によるスナップショットを適用したプロダクションＬＵについて、ホストコマンド実行に必要なメタデータを、差分変換処理の実行によって削減することができる。
【０１１９】
これによって、メタデータの総量を一定以下に抑えることができ、例えばメモリ容量以下に抑えることで、メタデータ読み込みのためのドライブアクセスを不要にすることができ、スナップショット適用による性能低下を防ぐことができる。
【０１２０】
また、プロダクションＬＵは前方差分方式であるため、後方差分方式のような更新前データの退避のためのドライブアクセスを不要にすることができ、スナップショット適用による性能低下を防ぐことができる。
【０１２１】
本発明の実施の形態によれば、差分変換処理を実行するタイミングを選択することができるため、負荷の少ない時間帯に差分変換処理を実行することができ、性能低下を防ぐことができる。
【０１２２】
本発明の実施の形態によれば、リード／ライトが行われるプロダクションＬＵには前方差分方式を、リードがほとんどを占めるプロダクションＬＵには後方差分方式を、といったように、アクセスパターンに最適な差分管理方式を選択することができる。
【０１２３】
本発明の実施の形態によれば、プロダクションＬＵへのアクセスパターンが、前方差分方式に適したものから、後方差分方式に適したものに変わってきたときに、差分管理方式を前方差分方式から後方差分方式に変更することができる。
【図１】
0005244979.tif 000002
【図２】
0005244979.tif 000003
【図３】
0005244979.tif 000004
【図４】
0005244979.tif 000005
【図５】
0005244979.tif 000006
【図６】
0005244979.tif 000007
【図７】
0005244979.tif 000008
【図８】
0005244979.tif 000009
【図９】
0005244979.tif 000010
【図１０】
0005244979.tif 000011
【図１１】
0005244979.tif 000012
【図１２】
0005244979.tif 000013
【図１３】
0005244979.tif 000014
【図１４】
0005244979.tif 000015
【図１５】
0005244979.tif 000016
【図１６】
0005244979.tif 000017
【図１７】
0005244979.tif 000018
【図１８】
0005244979.tif 000019
【図１９】
0005244979.tif 000020
【図２０】
0005244979.tif 000021
【図２１】
0005244979.tif 000022