(57)【要約】【課題】    記憶領域を効率的に利用可能なストレージシステム等を提供する。【解決手段】    ストレージシステム（１２００）は、記憶領域を提供する第１のボリュームと、上記第１のボリュームに対する差分を含む他の記憶領域を提供する第２のボリュームと、特定のデータに対する削除要求を受け付けた場合、当該特定のデータを含む、上記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、上記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、上記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放するボリューム管理部と、を備える。【選択図】  図１２
2016181078.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域を提供する第１のボリュームと、
前記第１のボリュームに対する差分を含む他の記憶領域を提供する第２のボリュームと、
特定のデータに対する削除要求を受け付けた場合、当該特定のデータを含む、前記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、前記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、前記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放する
ボリューム管理手段と、を備える
ストレージシステム。
【請求項２】
前記ボリューム管理手段は、
前記特定のデータを含む前記第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた前記第１の特定部分記憶領域に含まれるデータとが同一である場合に、前記記憶デバイスの記憶領域のうち、前記第２の特定部分記憶領域に割り当てられた領域を解放する
請求項１に記載のストレージシステム。
【請求項３】
前記ボリューム管理手段は、
前記削除要求を受け付けた際、前記第２の特定部分記憶領域に含まれるデータが、当該第２の特定部分記憶領域と関連付けされた前記第１の特定部分記憶領域に含まれるデータから更新されたか否かを確認し、
当該確認の結果、前記第２の特定部分記憶領域に含まれるデータが更新されたと判定した場合、当該第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた前記第１の特定部分記憶領域に含まれるデータとの間の同一性を確認し
これらの部分領域に含まれるデータが同一であると判定した場合、前記記憶デバイスにおいて前記第２の特定部分記憶領域に割り当てられた領域を解放する
請求項１又は請求項２に記載のストレージシステム。
【請求項４】
前記ボリューム管理手段は、前記削除要求を受け付けた場合、
前記第２のボリュームに含まれる１以上の部分的な記憶領域毎に、当該記憶領域に含まれるデータが、当該部分的な記憶領域と関連付けされた前記第１のボリュームに含まれる部分的な記憶領域に含まれるデータから更新されたか否かを表す差分有効性情報を含む、第２のボリューム管理情報を参照することにより、前記第２の特定部分記憶領域に含まれるデータが更新されたか否かを判定し、
当該第２の特定部分記憶領域が更新されたと判定した場合、当該第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた前記第１の特定部分記憶領域に含まれるデータとの間の同一性を確認し、
これらの部分領域に含まれるデータが同一であると判定した場合、前記記憶デバイスにおいて当該第２の特定部分記憶領域に割り当てられた領域を解放するとともに、当該第２の特定部分記憶領域に関する前記差分有効性情報に、データの更新が発生していないことを表す情報を設定する、
請求項３に記載のストレージシステム。
【請求項５】
前記第２のボリューム管理情報が、前記第２のボリュームに含まれる１以上の部分的な記憶領域毎に、当該記憶領域に含まれるデータと、当該記憶領域と関連付けされた前記第１のボリュームに含まれる部分的な記憶領域に含まれるデータとの間の同一性の判定要否を表す差分チェック要求情報を更に含み、
前記ボリューム管理手段は、
前記削除要求を受け付けたタイミングにおいて、前記第２の特定部分記憶領域に関する前記差分有効性情報に基づいて、当該第２の特定部分記憶領域に含まれるデータが更新されたと判定した場合には、当該第２の特定部分記憶領域に関する前記差分チェック要求情報に、同一性の判定が必要であることを表す情報を設定し、
前記削除要求を受け付けたタイミングよりも後の任意のタイミングにおいて、前記差分チェック要求情報に同一性の判定が必要であることを表す情報が設定されている場合、前記第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた前記第１の特定部分記憶領域に含まれるデータとの間の同一性を確認する
請求項４に記載のストレージシステム。
【請求項６】
前記ボリューム管理手段は、前記第２の特定部分記憶領域に含まれるデータが更新されたと判定した場合、当該第２の特定部分記憶領域に含まれるデータから生成された、当該データと他のデータとが同一であるか否かを判定可能な情報であるチェックコードと、当該第２の特定部分記憶領域と関連付けされた前記第１の特定部分領域に含まれるデータから生成された前記チェックコードとを比較することにより、当該第２の特定部分記憶領域に含まれるデータと、当該第１の特定部分記憶領域に含まれるデータとの間の同一性を判定する、
請求項３乃至請求項５のいずれかに記載のストレージシステム。
【請求項７】
前記ボリューム管理手段は、前記第２の特定部分記憶領域に含まれるデータから生成された前記チェックコードと、当該第２の特定部分記憶領域と関連付けされた前記第１の特定部分領域から生成された前記チェックコードとが同一であると判定した場合、当該第２の特定部分領域に含まれる全データと、当該第１の特定部分領域に含まれる全データとを更に比較することにより、当該第２の特定部分記憶領域に含まれるデータと、当該第１の特定部分記憶領域に含まれるデータとの間の同一性を判定する、
請求項６に記載のストレージシステム。
【請求項８】
前記ボリューム管理手段は、
前記第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた前記第１の特定部分記憶領域に含まれるデータとの間の同一性を確認し、
これらデータが同一であると判定した場合、前記記憶デバイスにおいて前記第２の特定部分記憶領域に割り当てられた領域に特定の値を設定する
請求項１乃至請求項７のいずれかに記載のストレージシステム。
【請求項９】
記憶領域を提供する第１のボリュームと、前記第１のボリュームに対する差分を含む記憶領域を提供する第２のボリュームとを有するストレージに含まれる特定のデータに対する削除要求を受け付け、
当該特定のデータを含む、前記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、前記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、前記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放する
ストレージの管理方法。
【請求項１０】
記憶領域を提供する第１のボリュームと、前記第１のボリュームに対する差分を含む記憶領域を提供する第２のボリュームとを有するストレージに含まれる特定のデータに対する削除要求を受け付ける処理と、
当該特定のデータを含む、前記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、前記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、前記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放する処理と、をコンピュータに実行させる
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶領域を効率的に利用可能なストレージシステム等に関する。
【背景技術】
【０００２】
近年、情報通信システムの運用或いは管理を容易にし、それらに要するコストを低減可能な技術として、各種仮想化技術が普及している。係る仮想化技術は、情報処理装置等（或いはその周辺機器等）を仮想化した仮想マシンを提供することが可能であり、係る仮想マシンを利用した情報システムを構築することが可能である。
【０００３】
ストレージシステム（あるいはストレージ装置）を仮想化する技術の一つとしてリンクドクローン（Ｌｉｎｋｅｄ  Ｃｌｏｎｅ）機能と呼ばれる技術がある。Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能が実装されたストレージシステムは、クローンボリュームと呼ばれるボリューム（記憶領域）と、エンティティボリュームと呼ばれるボリュームとを用いて、仮想的なストレージ（記憶領域）を提供する。クローンボリュームは、例えば、各仮想マシンにおいて個別に使用されるデータ等を保持する（含む）ボリュームである。また、エンティティボリュームは、例えば、各仮想マシンにおいて共通に使用される（共有可能な）データを含むボリュームである。
【０００４】
より具体的には、Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能が実装されたストレージシステムにおいては、クローンボリューム毎に、エンティティボリュームとの間の差分を表すデータ（差分データ）が、物理ディスクに記憶される。係る物理ディスクは、例えば、ハードディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ：ＨＤＤ）や、半導体記憶装置等の、任意の記憶デバイスを有する記憶装置である。係るストレージシステムにおいては、上記した差分データが、物理ディスクにおいて確保された記憶領域（記憶容量）に格納される。これより、係るストレージシステムにおいては、差分データを効率よく管理可能であり、また、ストレージ容量を効率的に利用可能な技術が求められている。
【０００５】
ストレージ容量の効率的な利用に関連する技術が、例えば、以下の特許文献に開示されている。
【０００６】
特許文献１（特開２０１１−２４８７４２号公報）は、仮想マシンが占有するストレージ容量を削減する技術を開示する。特許文献１に開示された技術は、既存の仮想マシンが使用するディスクイメージと、マスタとして使用するマスタディスクイメージとの差分を抽出する。特許文献１に開示された技術は、係る差分を保存した差分ディスクイメージを用いて、仮想マシンのディスクイメージを置き換えることにより、仮想マシンが使用するストレージ容量を削減する。
【０００７】
特許文献２（特開２０１３−０５４４１６号公報）は、バックアップデータの複製先に求められる物理的な記憶容量を削減する技術を開示する。特許文献２に開示された技術は、複製元のデータ領域に含まれる部分領域毎に、それらの領域に含まれるデータの同一性を判定可能なコードを生成して保存する。特許文献２に開示された技術は、同一のデータが格納された部分領域を複製先のデータ領域に複製する際、それらの部分領域に対して同一の物理記憶領域を割り当てることにより、物理記憶領域における重複を排除する。
【０００８】
特許文献３（特開２００６−０１１８１１号公報）は、ホスト装置に接続されたストレージシステムにおいて、不要なデータを管理対象から除外する技術を開示する。特許文献３に開示されたストレージシステムは、プライマリボリュームと、当該プライマリボリュームに対する差分が蓄積された差分ボリュームとを有する。係る技術は、ホスト装置におけるファイルシステムにおいて参照されない領域に関連付けられた、プライマリボリュームの記憶領域を特定する。そして、係る技術は、特定されたプライマリボリュームの記憶領域に関連付けられた差分ボリュームの記憶領域を削除する。
【０００９】
なお、ストレージ容量の効率的な利用と直接関係する技術ではないが、ストレージの管理或いは運用等に関連する技術が、以下の特許文献に開示されている。
【００１０】
例えば、特許文献４（特開２０１４−０３２５１５号公報）は、ネットワークを介してデータを複製するストレージシステムにおいて、データの複製中に、複製対象のデータを含む一部の記憶領域を解放する技術を開示する。
【００１１】
また、例えば、特許文献５（特開２００８−１５８５７０号公報）は、複数のストレージ装置が、それぞれ自装置に記憶されたデータのチェックコードを作成して相互に交換することにより、それぞれの装置に記憶されたデータの同一性を検証する技術を開示する。これにより、特許文献５に開示された技術は、同一データの転送を低減し、通信回線の使用率を低減することが可能である。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１１−２４８７４２号公報
【特許文献２】特開２０１３−０５４４１６号公報
【特許文献３】特開２００６−０１１８１１号公報
【特許文献４】特開２０１４−０３２５１５号公報
【特許文献５】特開２００８−１５８５７０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能を備えたストレージシステムにおいて、仮想マシンがデータの更新を行う場合、以下のような処理が実行される。即ち、係るストレージシステムは、物理ディスクからクローンボリュームに用いられる記憶領域（差分データっを記憶する領域）を確保する。係るストレージシステムは、確保された記憶領域に記憶されるデータ（差分データ）を更新する。そして、係るストレージシステムは、エンティティボリュームとクローンボリュームとの間に差分データがあることを表す情報を、例えば任意の管理情報（例えば、管理テーブル等）を用いて管理する。
【００１４】
例えば、更新したデータが消去された場合など、クローンボリュームにおける特定の記憶領域と、エンティティボリュームにおいて対応する特定の記憶領域とが同一のデータを含む場合がある。この場合、クローンボリュームに含まれるデータと、エンティティボリュームに含まれるデータとは同一のものであるにも関わらず、これらに対して、物理ディスクから記憶領域が重複して割り当てられる可能性がある。
【００１５】
ストレージシステムの運用が継続され、仮想マシンにおけるファイルの作成と削除が繰り返された場合、エンティティボリュームとクローンボリュームとにおいて、同一のデータを含む領域が多数作成される可能性がある。上記のようにクローンボリュームにおいて差分データが生成された場合、そのクローンボリューム自体を削除するまで、当該差分データを記憶する物理ディスク容量が確保されたままになる場合がある。即ち、この場合、同一のデータが重複して複数の領域に記憶されることから、ストレージの効率的な利用が十分に実現されない可能性がある。即ち、この場合、Ｌｉｎｋｅｄ  Ｃｌｏｎｅ技術を採用しているにも関わらず、クローンボリュームとエンティティボリュームとの差分データにのみ物理ディスクの記憶領域を割り当てる効率的な運用管理が、十分に実行できないという問題が発生する可能性がある。
【００１６】
これに対して、上記特許文献１に開示された技術は、既存の仮想マシンを、リンクドクローン機能を利用した仮想マシンに変換する方法を開示するにすぎない。また、特許文献２に開示された技術は、バックアップ処理等において複製データを作成する際に、データの重複を排除する技術である。特許文献３は、ホスト装置のファイルシステムにおいて参照されない空き領域を、ストレージシステムにおける管理対象から除外する技術を開示するにすぎない。特許文献４は、ストレージに格納されたデータを解放する具体的な一手段を開示するにすぎない。また、特許文献５は、複数のストレージにおけるデータの同一性を検証可能な技術を開示するのみである。即ち、上記各特許文献に開示された技術はいずれも、上記説明した課題を解決可能な技術ではない。
【００１７】
本発明は上記のような事情を鑑みてなされたものである。即ち、本発明は、記憶されるデータの重複を排除することにより、記憶領域を効率的に利用可能なストレージシステム等を提供することを主たる目的の一つとする。
【課題を解決するための手段】
【００１８】
上記の目的を達成すべく、本発明の一態様に係るストレージシステムは、以下の構成を備える。即ち、本発明の一態様に係るストレージシステムは、記憶領域を提供する第１のボリュームと、上記第１のボリュームに対する差分を含む他の記憶領域を提供する第２のボリュームと、特定のデータに対する削除要求を受け付けた場合、当該特定のデータを含む、上記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、上記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、上記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放するボリューム管理手段と、を備える。
【００１９】
また、本発明の一態様に係るストレージの管理方法は、以下の構成を備える。即ち、本発明の一態様に係るストレージの管理方法は、記憶領域を提供する第１のボリュームと、上記第１のボリュームに対する差分を含む記憶領域を提供する第２のボリュームとを有するストレージに含まれる特定のデータに対する削除要求を受け付け、当該特定のデータを含む、上記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、上記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、上記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放する。
【００２０】
また、同目的は、上記構成を有するストレージシステム、あるいはストレージの設定方法を、コンピュータによって実現するコンピュータ・プログラム、及び、そのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記録媒体等によっても達成される。
【発明の効果】
【００２１】
本発明によれば、記憶されるデータの重複を排除することにより、記憶領域を効率的に利用可能である。
【図面の簡単な説明】
【００２２】
【図１】図１は、本発明の第１の実施形態におけるストレージシステムの機能的な構成を例示するブロック図である。
【図２】図２は、本発明の第１の実施形態におけるストレージシステムの構成要素（リンクドクローン機能制御部）の機能的な構成を例示するブロック図である。
【図３】図３は、本発明の第１の実施形態における記憶領域間の関連を模式的に表す図である。
【図４】図４は、本発明の第１の実施形態におけるストレージシステムにおいて用いられる管理情報（エンティティボリューム差分管理テーブル）の構成例を示すブロック図である。
【図５】図５は、本発明の第１の実施形態におけるストレージシステムにおいて用いられる管理情報（クローンボリューム差分管理テーブル）の構成例を示すブロック図である。
【図６】図６は、本発明の第１の実施形態におけるストレージシステムの構成要素（差分情報管理部）の機能的な構成を例示するブロック図である。
【図７】図７は、本発明の第１の実施形態におけるストレージシステムの動作（データの参照処理）を例示するフローチャートである。
【図８Ａ】図８Ａは、本発明の第１の実施形態において、各記憶領域に含まれるデータの関連を模式的に表す図（１／２）である。
【図８Ｂ】図８Ｂは、本発明の第１の実施形態において、各記憶領域に含まれるデータの関連を模式的に表す図（１／２）である。
【図９】図９は、本発明の第１の実施形態におけるストレージシステムの動作（データの更新処理）を例示するフローチャートである。
【図１０】図１０は、本発明の第１の実施形態におけるストレージシステムの動作（データの削除処理）を例示するフローチャートである。
【図１１】図１１は、本発明の第１の実施形態におけるストレージシステムの動作（物理記憶領域の解放）を例示するフローチャートである。
【図１２】図１２は、本発明の第２の実施形態におけるストレージシステム１２００の機能的な構成を例示するブロック図である。
【図１３】図１３は、本発明の各実施形態に係るストレージシステム、あるいは、その構成要素を実現可能なハードウェアの構成を例示する図である。
【発明を実施するための形態】
【００２３】
以下、本発明を実施する形態について図面を参照して詳細に説明する。以下の各実施形態に記載されている構成は例示であり、本発明の技術範囲はそれらには限定されない。
【００２４】
まず、本発明の各実施形態に関する説明に先立って、本発明の理解を容易にするため、本発明に関する技術的背景等について具体的に説明する。
【００２５】
Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能を提供するストレージシステムにおいては、マスターデータであるエンティティボリュームと、各仮想マシンが使用するクローンボリュームとは、それぞれ複数の部分領域から構成される。係る部分領域は、例えば、特定のアドレス範囲（例えば、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）によるアドレス等）を用いて規定されてもよい。
【００２６】
Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能を提供するストレージシステムにおいては、エンティティボリュームの部分領域と、クローンボリュームの部分領域とが関連付けられる。具体的には、例えば、エンティティボリュームの部分領域と、クローンボリュームの部分領域とは、特定のアドレス範囲毎に関連付けられてもよい。ストレージシステムは、各仮想マシンが使用するクローンボリュームにおけるそれぞれの部分領域について、マスターデータとなるエンティティボリュームとの差分を管理する。
【００２７】
Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能を提供するストレージシステムは、ホスト装置（例えば、仮想マシンや、仮想マシンを実行する情報処理装置等）からのアクセス要求に対応して、クローンボリューム又はエンティティボリュームに記憶されたデータを提供する。より具体的には、クローンボリュームとエンティティボリュームとの間に差分がない場合、ホスト装置がクローンボリュームのデータを参照すると、エンティティボリュームのデータが参照される。具体的には、例えば、ホスト装置がクローンボリュームにおける特定の記憶領域に記憶されたデータを参照すると、当該特定の記憶領域に関連付けされたエンティティボリュームの記憶領域が特定される。そして、その特定されたエンティティボリュームにおける記憶領域に含まれるデータが、ホスト装置に提供される。
【００２８】
ホスト装置から、クローンボリュームに対して書き込み処理が行われた場合、エンティティボリュームとクローンボリュームとの間に差分が発生する。この場合、ストレージシステムは、例えば、書き込みが行われたクローンボリュームにおける部分領域と、当該部分領域に関連付けされたエンティティボリュームにおける部分領域との間の差分を、物理ディスクに書き込む。そして、ストレージシステムは、その部分領域に差分があることを示す情報（例えばフラグ等）を管理情報（例えば、部分領域毎に差分の有無を表す管理テーブルや差分マップ等）にセットする。これ以降、係る差分が存在する部分領域に対するアクセスは、書き込みが行われたデータ（即ち、クローンボリュームに書き込まれ、物理ディスクに記憶されたデータ）に対して行われる。
【００２９】
このように、Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能を提供するストレージシステムは、物理ディスクに記憶されるデータを、エンティティボリュームとクローンボリュームとの間の差分データに限定するよう制御する。これにより、係るストレージシステムは、多数の仮想マシンが作成された場合でも、仮想マシン毎に全データを物理ディスクに格納する場合と比較して、使用される物理ディスクの容量（記憶領域）を削減することができる。即ち、係るストレージシステムは、各仮想マシンに共通するエンティティボリュームのデータを、仮想マシン毎に重複して物理ディスクに記録する必要がないことから、使用される物理ディスクの記憶容量を低減可能である。
【００３０】
上記したように、例えば、クローンボリュームにおいて更新されたデータを消去した場合等、クローンボリュームにおける特定の部分領域に含まれるデータと、それに関連付けされたエンティティボリュームにおける部分領域に含まれるデータとが同一となる場合がある。即ち、それらの部分領域については、同一のデータが重複して物理ディスクに記憶されることから、物理ディスクの記憶領域が無用に消費されている。ストレージシステムの運用が継続され、仮想マシンにおけるファイルの作成と削除とが繰り返された場合、物理ディスクにおいて同一のデータを含む（即ち、同一のデータを保持する）記憶領域が重複して複数確保される可能性がある。物理ディスクにおいて、上記したような同一のデータを含む重複した記憶領域を低減可能であれば、記憶領域をより効率的に利用可能である。
【００３１】
以下の各実施形態を用いて説明する本発明は、クローンボリュームとエンティティボリュームの差分データのうち、不要なデータを削減することにより、物理ディスク容量を効率的に管理可能なストレージシステム等を提供可能である。
【００３２】
なお、以下の各実施形態に記載するストレージシステムは１以上の専用のハードウェア装置、あるいは、コンピュータ等の汎用のハードウェア装置を用いて実現可能である。以下の各実施形態におけるストレージシステムは単体の装置（ストレージ装置）として実現されてもよく、複数のハードウェア装置により構成されたシステムとして実現されてもよい。なお、係るストレージシステムを実現可能なハードウェア構成例（例えば図１３）については後述する。
【００３３】
＜第１の実施形態＞
本発明の第１の実施形態について、図面を参照して説明する。
【００３４】
（構成）
図１は、本実施形態におけるストレージシステム１００の機能的な構成を例示するブロック図である。本実施形態におけるストレージシステム１００は１つ又は複数のホスト装置（図１における１０１）に接続されている。ストレージシステム１００は、ホスト装置１０１から各種コマンドを受信し、係るコマンドに従い各種処理を実行する。なお、図１にはホスト１乃至ホスト３が例示されているが、本ストレージシステムに接続可能なホストの数は、任意に定められてよい。
【００３５】
それぞれのホスト装置１０１には、仮想マシン１０１ａが配置される。図１に示す具体例では、各ホスト装置１０１に対して仮想マシン１０１ａが２台配置されている。各ホスト装置１０１には任意の台数の仮想マシンが配置されてよい。なお、係る仮想マシン１０１ａ及び仮想マシン１０１ａの実行環境（仮想化基盤）は、周知の任意の仮想化技術を用いて実現可能であることから、詳細な説明を省略する。
【００３６】
ストレージシステム１００は、大別して、ホスト制御部１０２と、ディスク制御部１０３と、リンクドクローンボリューム管理部１０５と、リンクドクローン機能制御部１０６と、論理ボリューム管理部１０７と、差分情報管理部１０８と、を含む。ストレージシステム１００は、更に、物理ディスク群１０４を含んでもよい。ストレージシステム１００を構成するこれらの構成要素の間は、任意の通信手段を用いて通信可能に接続されていてもよい。以下、ストレージシステム１００を構成する各構成要素について説明する。
【００３７】
ストレージシステム１００は、ホスト装置１０１からの各種コマンドを受信するホスト制御部１０２を備える。ホスト制御部１０２は、各ホスト装置１０１から受信したコマンドを解析して、当該コマンド毎に実行する処理を決定する。係るコマンドは、例えば、ストレージに対する各種アクセスを実行するコマンドであってもよい。係るコマンドは、例えば、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）インタフェース規格により規定されたコマンドであってもよいが、これには限定されない。
【００３８】
また、ストレージシステム１００は、物理ディスク群１０４を制御するディスク制御部１０３を備える。物理ディスク群１０４を構成する物理ディスクは、例えば、ＨＤＤや半導体記憶装置等の、物理的な記憶デバイスを有する記憶装置である。物理ディスク群１０４は、図１に例示するように、ストレージシステム１００の内部に搭載されてもよい。また、物理ディスク群１０４は、ストレージシステム１００の外部に設けられるとともに、ストレージシステム１００と通信可能に接続されてもよい。なお、係る物理ディスク群１０４を構成する物理ディスク（図１における物理ディスク００乃至物理ディスクＮ）の数は、任意に定められてよい。リンクドクローンボリューム（Ｌｉｎｋｅｄ  Ｃｌｏｎｅ  Ｖｏｌｕｍｅ）管理部１０５（後述）により管理されるエンティティボリューム、あるいは、クローンボリュームに含まれる（保持される）データは、それぞれ関連付けされた物理ディスクにおける記憶領域（物理記憶領域）に記憶される。ディスク制御部１０３は、係る物理ディスク群１０４に対する、記憶領域の確保及び解放、確保された記憶領域に対する各種アクセス（参照、更新、削除等）を制御する。なお、ディスク制御部１０３は、物理ディスク群１０４における記憶領域を解放する際、当該開放された記憶領域に対して特定の値（例えば「０」）を書き込むことが可能である。
【００３９】
また、ストレージシステム１００は、リンクドクローンボリューム管理部１０５を備える。リンクドクローンボリューム管理部１０５は、ディスク制御部１０３を通じて、物理ディスク群１０４から、データを格納する記憶領域（物理記憶領域）を確保する。そして、リンクドクローンボリューム管理部１０５は、確保した物理記憶領域を用いて、エンティティボリューム（「第１のボリューム」と称する場合がある）あるいはクローンボリューム（「第２のボリューム」と称する場合がある）を構成する。リンクドクローンボリューム管理部１０５は、例えば、エンティティボリューム、あるいは、クローンボリュームに対する各種アクセス処理を実行してもよい。なお、リンクドクローンボリューム管理部１０５は、ホスト装置１０１及び仮想マシン１０１ａの数等に応じて、任意の数のエンティティボリュームあるいはクローンボリュームを構成してよい。
【００４０】
また、ストレージシステム１００は、リンクドクローン（Ｌｉｎｋｅｄ  Ｃｌｏｎｅ）機能制御部１０６を備える。リンクドクローン機能制御部１０６は、上記リンクドクローンボリューム管理部１０５により構成されたエンティティボリュームと、クローンボリュームとに基づいて、後述する論理ボリューム管理部１０７に対して、論理的な記憶ボリュームを識別可能なＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）を提供する。例えば、ホスト装置１０１（仮想マシン１０１ａ）からは、係るＬＵＮ毎に一つの論理的なストレージデバイスが認識される。仮想マシン１０１ａは、ＬＵＮ毎に提供される論理ボリュームにアクセスする。
【００４１】
リンクドクローン機能制御部１０６及び論理ボリューム管理部１０７（後述）は、エンティティボリュームと、クローンボリュームと、論理ボリュームとを、例えば、図３に例示するように、特定の部分領域毎に関連付けてもよい。この場合、上記各ボリュームにおける部分領域は他のボリュームにおける部分領域と関連付けされる。例えば、ホスト装置１０１（仮想マシン１０１ａ）が、論理ボリュームにおける特定の領域に含まれる（保持される）データにアクセスした場合、クローンボリューム或いはエンティティボリュームにおいて関連する領域のデータがアクセスされる。上記各ボリュームにおける部分領域は、例えば、図３に例示するように、アドレスの範囲毎に区切られてもよい。これらの各ボリュームは、例えば、それぞれのボリュームに含まれる部分領域を識別可能な識別情報（ＩＤ：Ｉｄｅｎｔｉｆｉｅｒ）等を用いて、相互に関連付けられてもよい。なお、以下、それぞれのボリュームにおいて関連付けされた部分領域を、「関連する領域（関連領域）」あるいは「関連する部分領域（関連部分領域）」と称する場合がある。例えば、図３に示す具体例の場合、符号３０１が付された「エンティティボリューム０００」における領域に対して、符号３０２が付された「クローンボリューム００１」における領域を、「関連する領域（関連領域）」と称する場合がある。同様に、符号３０２が付された「クローンボリューム００１」における領域に対して、符号３０１が付された「エンティティボリューム０００」における領域を「関連する領域（関連領域）」と称する場合がある。それぞれのボリュームにおける関連領域（関連する部分領域）は、例えば、同じアドレスの範囲に存在する部分領域であってもよく、同じ識別情報が付与された部分領域であってもよい。
【００４２】
リンクドクローン機能制御部１０６は、図２に例示するように、差分管理テーブル２０１を有する。差分管理テーブル２０１は、エンティティボリュームに関する情報を保持するエンティティボリューム差分管理テーブル２０１ａ（「第１のボリューム管理情報」と称する場合がある）を含む。また、差分管理テーブル２０１は、クローンボリュームに関する情報を保持するクローンボリューム差分管理テーブル２０１ｂ（「第２のボリューム管理情報」と称する場合がある）を含む。
【００４３】
エンティティボリューム差分管理テーブル２０１ａは、図４に例示するように、各エンティティボリューム毎に、差分領域ＩＤ４０１と、範囲情報４０２と、差分データチェックコード４０３とを関連付けて保持する。
【００４４】
差分領域ＩＤ４０１は、例えば、エンティティボリュームを構成する部分領域である差分領域を識別（特定）可能な識別情報であってもよい。なお、エンティティボリューム差分管理テーブル２０１ａは、差分領域ＩＤ４０１を含まなくともよい。
【００４５】
範囲情報４０２は、例えば、特定の差分領域４０１を構成する記憶領域の範囲を表す情報である。範囲情報４０２は、例えば、特定の差分領域を構成するアドレスの範囲を表す情報であってもよい。この場合、範囲情報４０２は、例えば、各差分範囲の開始ＬＢＡと、終了ＬＢＡとを保持してもよい。なお、範囲情報４０２は、アドレス範囲に限定されず、例えば、特定の差分領域を構成するブロック数と、ストレージの先頭からのオフセットとを保持してもよい。
【００４６】
差分データチェックコード４０３は、特定の差分領域に保持されるデータと、他のデータとが同一であるか否かを判定可能なコードである。係るチェックコードは、例えば、特定の差分領域に含まれるデータから算出されたハッシュ値であってもよい。係るハッシュは、例えば、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ  ５）、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）等の周知の技術を用いて算出されてもよい。
【００４７】
エンティティボリューム差分管理テーブル２０１ａは、上記以外にも、例えば、エンティティボリュームに含まれる差分領域に割り当てられた、物理ディスク群１０４における記憶領域（物理記憶領域）を特定可能な情報を保持してもよい。
【００４８】
クローンボリューム差分管理テーブル２０１ｂは、図５に例示するように、各クローンボリューム毎に、差分領域ＩＤ５０１と、範囲情報５０２と、差分有効フラグ５０３と、差分データチェック要求フラグ５０４とを関連付けて保持する。
【００４９】
差分領域ＩＤ５０１は、クローンボリュームを構成する部分領域である差分領域を識別（特定）可能な識別情報である。差分領域ＩＤ５０１は、図４に例示する差分領域ＩＤ４０１と同様としてもよい。エンティティボリュームにおける差分領域と、クローンボリュームにおける差分領域とは、差分領域ＩＤ４０１と、差分領域ＩＤ５０１とを用いて関連付けされてもよい。
【００５０】
範囲情報５０２は、特定の差分領域５０１を構成する記憶領域の範囲を表す情報である。範囲情報５０２は、例えば、特定の差分領域を構成するアドレスの範囲を表してもよく、各差分範囲の開始ＬＢＡと、終了ＬＢＡとを保持してもよい。なお、範囲情報５０２は、図４に例示する範囲情報４０２と同様としてもよい。
【００５１】
差分有効フラグ５０３は、クローンボリュームにおけるある差分領域が、当該差分領域に関するエンティティボリュームにおける関連領域から更新されたか否かを表す情報（「差分有効性情報」と称する場合がある）である。なお、差分有効フラグ５０３は、係る更新により差分が生じたか否かを表してもよい。図５に示す具体例においては、差分有効フラグが「１」（有効）の場合、更新が発生した（差分が存在する）ことを表し、差分有効フラグが「０」（無効）の場合、更新されていない（差分が存在しない）ことを表す。図５に示す具体例では、差分領域ＩＤが「００００」である差分領域に関する差分有効フラグが「１」に設定されている。この場合、クローンボリュームにおける差分領域「００００」に含まれるデータは、エンティティボリュームにおける差分領域「００００」に含まれるデータから更新されたことを表す。なお、差分有効フラグに関する処理については、後述する。
【００５２】
差分データチェック要求フラグ５０４は、クローンボリュームにおけるある差分領域と、当該差分領域に関するエンティティボリュームにおける関連領域との間に差分が存在するか否かを確認する処理を実行するか否か表す情報である。換言すると、差分データチェック要求フラグ５０４は、クローンボリュームにおける特定の差分領域に含まれるデータと、エンティティボリュームにおける関連領域に含まれるデータとの同一性を判定する処理を実行するか否かを表す情報である。以下、差分データチェック要求フラグ５０４を、「差分チェック要求情報」と称する場合がある。
【００５３】
本実施形態においては、リンクドクローン機能制御部１０６が、クローンボリュームに含まれるデータの削除要求を受け付けた際、当該データを含む差分領域に関する差分データチェック要求フラグ５０４を設定する。なお、差分データチェック要求フラグ５０４に関する処理については、後述する。
【００５４】
クローンボリューム差分管理テーブル２０１ｂは、上記以外にも、例えば、クローンボリュームに含まれる差分領域に割り当てられた、物理ディスク群１０４における記憶領域（物理記憶領域）を特定可能な情報を保持してもよい。
【００５５】
また、ストレージシステム１００は、論理ボリューム管理部１０７を備える。論理ボリューム管理部１０７は、ホスト制御部１０２を通じて、各ホスト装置１０１にＬＵＮを論理ボリュームとして提供する。論理ボリューム管理部１０７は、また、各ホスト装置１０１から、論理ボリュームに関する各種コマンドを受け付ける。論理ボリューム管理部１０７は、受け付けたコマンドを解析し、リンクドクローンボリューム管理部１０５に対して、エンティティボリューム、又は、クローンボリュームに対する各種アクセス処理の実行を要求してもよい。
【００５６】
また、ストレージシステム１００は、差分情報管理部１０８を備える。差分情報管理部１０８は、リンクドクローン機能制御部１０６を監視する。より具体的には、差分情報管理部１０８は、リンクドクローン機能制御部１０６が保持する差分情報（差分管理テーブル２０１が保持する情報）の状態を監視してもよい。差分情報管理部１０８は、図６に例示するように、差分情報管理部１０８は、差分データ比較部６０１とチェックコード生成部６０２と、差分データ解放部６０３とを有する。
【００５７】
差分データ比較部６０１はクローンボリューム差分管理テーブル２０１ｂの差分データチェック要求フラグ（図５の５０４）を監視し、フラグが有効な場合、チェックコード生成部６０２にデータの比較（コンペア）を指示する。
【００５８】
チェックコード生成部６０２は、エンティティボリュームにおける各差分領域のチェックコードを生成する。また、チェックコード生成部６０２は、差分データチェック要求フラグに「有効」が設定されている、クローンボリュームにおける差分領域のチェックコードを生成する。
【００５９】
差分データ比較部６０１は、チェックコード生成部６０２により生成された、クローンボリュームにおける差分領域のチェックコードと、エンティティボリュームにおける関連領域のチェックコードと比較する。差分データ比較部６０１は、それらが同値（同一）であった場合、それぞれのボリュームにおける同じ差分領域に含まれる全データのコンペアチェックを行う。係るコンペアチェックは、例えば、クローンボリュームにおける差分領域に含まれるデータと、当該差分領域に関連するエンティティボリュームにおける関連領域に含まれるデータとを、バイト単位やビット単位で比較する処理であってもよい。
【００６０】
チェックコードの生成方法によっては、異なるデータに対して同じチェックコードが生成される場合（コリジョン）がある。例えば、あるデータに対するチェックコードとして、係るデータのハッシュを算出する場合、異なるデータから同一のハッシュ値が算出される可能性がある（ハッシュ・コリジョン）。即ち、同一のデータからは同一のチェックコードが生成されるが、チェックコードが同一であっても、生成元のデータが必ずしも同一ではない場合がある。差分データ比較部６０１は、２つの差分領域のチェックコードが同一である場合、更にそれぞれの領域に含まれる全データをコンペアすることにより、係るコリジョンの影響を排除し、データの同一性を判定可能である。なお、チェックコード生成部６０２が係るコンペアチェックを実行し、その結果を、差分データ比較部６０１あるいは、差分データ解放部６０３に通知してもよい。
【００６１】
差分データ解放部６０３は、上記コンペアチェックの結果が同一であることが確認された場合、ディスク制御部１０３に対して、当該差分領域のデータを記憶するために確保されている物理ディスク群における記憶領域の解放を指示する。また、差分データ解放部６０３は、上記コンペアチェックの結果が同一であることが確認された場合、クローンボリューム差分管理テーブル２０１ｂの差分データ有効フラグを無効に設定する。
【００６２】
なお、図１、図２、図６に例示した本実施形態におけるストレージシステムの構成は、一つの具体例にすぎず、それぞれの構成要素の区分けは任意に変更可能である。即ち、本実施形態におけるストレージシステム１００は、図１、図２、図６に例示した構成に限定されず、上記説明した各構成要素と同様の機能を実現可能な任意の構成により実現可能である。例えば、図１の具体例における、リンクドクローンボリューム管理部１０５、リンクドクローン機能制御部１０６、論理ボリューム管理部１０７、及び、差分情報管理部１０８は、その一部又は全部が統合された任意の構成要素を用いて実現されてもよい。同様に、図６に例示する差分データ比較部６０１、チェックコード生成部６０２、及び、差分データ解放部６０３は、その一部又は全部が統合された任意の構成要素を用いて実現されてもよい。
【００６３】
（動作）
次に、上記のように構成された本実施形態におけるストレージシステム１００の動作について説明する。
【００６４】
上記したように、ストレージシステム１００には、一つ又は複数のホスト装置１０１が接続されている。またそれぞれのホスト装置１０１には一つ又は複数の仮想マシン１０１ａが配置される。ストレージシステム１００は、それぞれの仮想マシン１０１ａに対して、ストレージ（論理ボリューム）を提供する。
【００６５】
まず、ストレージシステム１００においてＬｉｎｋｅｄ  Ｃｌｏｎｅ機能を提供可能とする処理について説明する。
【００６６】
Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能を提供するにあたり、まず、ストレージシステム１００のリンクドクローンボリューム管理部１０５が、エンティティボリュームを作成する。この際、リンクドクローンボリューム管理部１０５は、ディスク制御部１０３に対して、物理ディスク群１０４から必要なディスク容量を取得（確保）するよう依頼してもよい。なお、エンティティボリュームが作成された際、リンクドクローン機能制御部１０６が、エンティティボリューム差分管理テーブル２０１ａを生成してもよい。
【００６７】
上記作成されたエンティティボリュームに対して、仮想マシン１０１ａが使用する各種システムデータが、ホスト装置１０１により書き込まれる。係るシステムデータは、例えば、複数の仮想マシン１０１ａにおいて共通する、システムを構成する各種データ（例えば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や、各種ミドルウェア等）であってもよい。ホスト装置１０１がシステムデータを書き込むことにより、仮想マシン１０１ａの基盤（ベース）となる環境が構築される。
【００６８】
係る環境の構築が完了した後、差分情報管理部１０８は、エンティティボリューム差分管理テーブル２０１ａに設定されたエンティティボリュームの全差分領域について、チェックコードを生成する。なお、差分情報管理部１０８は、チェックコード生成部６０２を用いて、係るチェックコードを生成してもよい。差分情報管理部１０８は、エンティティボリューム差分管理テーブル２０１ａの差分データチェックコード領域（図４の４０２）に、生成したチェックコードを書き込む。なお、差分情報管理部１０８は、生成したチェックコードをリンクドクローン機能制御部１０６に通知し、リンクドクローン機能制御部１０６が、エンティティボリューム差分管理テーブル２０１ａに対して当該チェックコードを書き込んでもよい。
【００６９】
次にリンクドクローンボリューム管理部１０５は、各仮想マシン１０１ａの初期的なクローンボリュームを作成する。初期状態において、係るクローンボリュームは、エンティティボリュームに対する差分を含まない。クローンボリュームが作成された際、リンクドクローン機能制御部１０６が、クローンボリューム差分管理テーブル２０１ｂを生成してもよい。
【００７０】
次に、Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能を提供可能なストレージシステム１００に対して、ホスト装置１０１（より具体的には、仮想マシン１０１ａ）からアクセス要求があった場合の処理について説明する。
【００７１】
まず、仮想マシン１０１ａから、ストレージシステム１００に対してデータのリード（参照）要求が通知された場合の処理について、図７に例示するフローチャートを参照して説明する。
【００７２】
まず、仮想マシン１０１ａからストレージシステム１００に対してデータのリード（参照）要求が通知される（ステップＳ７０１）。より具体的には、例えば、仮想マシン１０１ａが、ホスト制御部１０２に対して、論理ボリューム管理部１０７が提供する論理ボリュームにおける特定のデータ（あるいは領域）に対する参照要求を通知する。係る参照要求は、例えば、特定のコマンドにより表されてもよい。ホスト制御部１０２は、例えば、係る参照要求を解析し、リンクドクローンボリューム管理部１０５に対して当該特定のデータに関する参照アクセスを要求する。この場合、ホスト制御部１０２は、当該特定のデータが格納されたアドレス領域に対する参照アクセスを要求してもよい。
【００７３】
リンクドクローンボリューム管理部１０５は、リンクドクローン機能制御部１０６の差分管理テーブル２０１（特にはクローンボリューム差分管理テーブル２０１ｂ）を参照し、当該特定のデータが格納された差分領域に対する差分有効フラグ（図５の５０３）を確認する。具体的には、リンクドクローンボリューム管理部１０５は、係る差分有効フラグに「有効」が設定されているか否かを判定する（ステップＳ７０２）。リンクドクローンボリューム管理部１０５は、例えば、差分有効フラグに設定された値が「１」の場合、差分有効フラグに「有効」を表す情報が設定されていると判定してもよい。また、リンクドクローンボリューム管理部１０５は、例えば、差分有効フラグに設定された値が「０」の場合、差分有効フラグに「無効」を表す情報が設定されていると判定してもよい。
【００７４】
差分有効フラグが無効であった場合（ステップＳ７０２においてＮＯ）、リンクドクローンボリューム管理部１０５は、エンティティボリュームに割り当てられている物理ディスク群１０４の記憶領域からデータを読み出す（参照する）（ステップＳ７０３）。
【００７５】
一方、差分有効フラグが有効であった場合（ステップＳ７０２においてＹＥＳ）、リンクドクローンボリューム管理部１０５は、クローンボリュームに割り当てられている物理ディスク群（１６）からデータを読み出す（参照する）（ステップＳ７０４）。
【００７６】
上記ステップＳ７０３あるいはステップＳ７０４において、リンクドクローンボリューム管理部１０５は、ディスク制御部１０３を介して、物理ディスク群１０４に記憶されたデータを読み出してもよい。
【００７７】
リンクドクローンボリューム管理部１０５は、読み出したデータをホスト制御部１０２に通知し、ホスト制御部１０２が、係るデータを仮想マシン１０１ａに応答してもよい。
【００７８】
図８Ａに示す具体例を参照して、上記処理について説明する。例えば、仮想マシン１０１ａが、論理ボリュームにおける領域８０１ａに含まれるデータに対するアクセス要求を通知したことを想定する。図８Ａに例示するように、クローンボリューム００１における領域８０２ａと、エンティティボリューム０００における領域８０３ａとは異なるデータを含む（保持する）。よって、クローンボリューム差分管理テーブル２０１ｂにおいて、領域８０２ａに関する差分有効フラグには「有効（例えば「１」）」が設定されている。この場合、仮想マシン１０１ａに対する応答として、領域８０２ａ（クローンボリューム００１）に含まれるデータが通知される。
【００７９】
次に、例えば、仮想マシン１０１ａが、論理ボリュームにおける領域８０１ｂに含まれるデータに対するアクセス要求を通知したことを想定する。図８Ａに例示するように、クローンボリューム００１における領域８０２ｂと、エンティティボリュームにおける領域８０３ｂとの間には差分が存在しない。即ち、この場合、クローンボリューム差分管理テーブル２０１ｂにおいて、領域８０２ｂに関する差分有効フラグには「無効（例えば「０」）」が設定されている。この場合、仮想マシン１０１ａに対する応答として、領域８０３ｂ（エンティティボリューム０００）に含まれるデータが通知される。
【００８０】
次に、仮想マシン１０１ａから、ストレージシステム１００に対してデータライト（更新）要求が通知された場合の処理について、図９に例示するフローチャートを参照して説明する。
【００８１】
まず、まず、仮想マシン１０１ａからストレージシステム１００に対してデータのライト（更新）要求が通知される（ステップＳ９０１）。より具体的には、例えば、仮想マシン１０１ａが、ホスト制御部１０２に対して、論理ボリューム管理部１０７が提供する論理ボリュームにおける特定のデータ（あるいは領域）に対する更新要求を通知する。係る更新要求は、例えば、特定のコマンドにより表されてもよい。ホスト制御部１０２は、例えば、係る更新要求を解析し、リンクドクローンボリューム管理部１０５に対して、当該データに対する更新アクセスを要求する。この場合、ホスト制御部１０２は、当該データが格納されたアドレス領域に対する更新アクセスを要求してもよい。
【００８２】
リンクドクローンボリューム管理部１０５は、リンクドクローン機能制御部１０６の差分管理テーブル２０１を参照し、当該データが格納された差分領域に対する差分有効フラグ（図５の５０３）を確認する。そして、リンクドクローンボリューム管理部１０５は、係る差分有効フラグに「有効」が設定されているか否かを判定する（ステップＳ９０２）。
【００８３】
差分有効フラグが有効であった場合（ステップＳ９０２においてＹＥＳ）、仮想マシン１０１ａから通信されたデータを用いて、更新対象のデータを含む（保持する）クローンボリュームの差分領域を更新する（ステップＳ９０５）。これにより、更新対象のデータを含むクローンボリュームの差分領域に割り当てられている、物理ディスク群１０４の記憶領域のデータが更新される。
【００８４】
一方差分有効フラグが無効であった場合（ステップＳ９０２においてＮＯ）、リンクドクローンボリューム管理部１０５は、物理ディスク群１０４における物理記憶領域を確保する（ステップＳ９０３）。この場合、リンクドクローンボリューム管理部１０５は、ディスク制御部１０３に対して、物理ディスク群１０４における物理記憶領域の確保を依頼してもよい。確保される物理記憶領域のサイズ（記憶容量）は、更新対象のデータのサイズに応じて定められてもよく、差分領域のサイズに応じて定められてもよい。リンクドクローンボリューム管理部１０５が確保する物理記憶領域は、更新対象のデータを含むクローンボリュームの差分領域に割り当てられる。
【００８５】
リンクドクローンボリューム管理部１０５は、当該更新対象のデータを含む（保持する）エンティティボリュームの差分領域から、更新対象のデータを読み込み、クローンボリュームにおける関連領域に複製する（ステップＳ９０４）。複製されたデータは、上記ステップＳ９０３において確保された物理記憶領域に記憶される。
【００８６】
次に、リンクドクローンボリューム管理部１０５は、ステップＳ９０３、Ｓ９０４においてエンティティボリュームから複製されたクローンボリュームの差分領域を、仮想マシン１０１ａから通知されたデータを用いて更新する（ステップＳ９０５）。これにより、更新対象のデータを含むクローンボリュームの差分領域に割り当てられている、物理ディスク群１０４の記憶領域のデータが更新される。ステップＳ９０５において、リンクドクローンボリューム管理部１０５は、ディスク制御部１０３に対して、物理ディスク群１０４における特定の物理記憶領域に対するデータの更新を依頼してもよい。
【００８７】
係る更新処理の後、リンクドクローン機能制御部１０６は、クローンボリューム差分管理テーブル２０１ｂにおいて、上記更新されたデータを含む差分領域に関する差分有効フラグに「有効」を表す情報を設定する（ステップＳ９０６）。より具体的には、リンクドクローン機能制御部１０６は、例えば、係る差分有効フラグに「１」を設定してもよい。この場合、リンクドクローンボリューム管理部１０５が、クローンボリューム差分管理テーブル２０１ｂにおける差分有効フラグを直接設定してもよい。また、リンクドクローンボリューム管理部１０５が上記更新処理の終了をリンクドクローン機能制御部１０６に通知し、リンクドクローン機能制御部１０６が差分有効フラグを設定してもよい。
【００８８】
次に、仮想マシン１０１ａから、クローンボリュームが含む（保持する）データの削除要求を通知された場合の処理について、図１０に例示するフローチャートを参照して説明する。
【００８９】
本実施形態におけるストレージシステム１００は、ＳＣＳＩコマンドにおけるＵＮＭＡＰコマンドに対応しており、仮想マシン１０１ａに対して、ＵＮＭＡＰコマンドをサポートすることを通知する。なお、仮想マシン１０１ａは、例えば、ストレージシステム１００に関する設定情報等を参照することにより、ストレージシステム１００がＵＮＭＡＰコマンドをサポートすることを認識してもよい。なお、ＵＮＭＡＰコマンドは、物理ディスクにおける未使用の領域を解放するコマンドである。より具体的には、例えば、仮想マシン１０１ａが特定のデータを削除する際、ＵＮＭＡＰコマンドを発行する。ＵＮＭＡＰコマンドに対応したストレージシステムは、ＵＮＭＡＰコマンドが発行された物理記憶領域が不使用になった場合、当該物理記憶領域を解放可能である。
【００９０】
まず、仮想マシン１０１ａはクローンボリュームのデータを削除する際、ストレージシステム１００に対して削除要求を通知する。この際、仮想マシン１０１ａは、ストレージシステム１００に対してＵＮＭＡＰコマンドを発行する。
【００９１】
ホスト制御部１０２は、仮想マシン１０１ａから通知されたデータの削除要求を受信する（ステップＳ１００１）。より具体的には、ホスト制御部１０２は、ＬＵＮが付与された論理ボリュームに対するＵＮＭＡＰコマンドを受け付ける。ホスト制御部１０２は、係る削除要求をリンクドクローン機能制御部１０６に通知する。
【００９２】
リンクドクローン機能制御部１０６は、クローンボリューム差分管理テーブル２０１ｂを参照し、当該削除要求が通知されたデータを含む差分領域に関する差分有効フラグ（図５の５０３）を確認する（ステップＳ１００２）。
【００９３】
差分有効フラグ有効である場合（ステップＳ１００２においてＹＥＳ）、リンクドクローン機能制御部１０６は、クローンボリューム差分管理テーブル２０１ｂにおける当該差分領域に関する差分データチェック要求フラグを有効化する（ステップＳ１００３）。リンクドクローン機能制御部１０６は、この場合、リンクドクローンボリューム管理部１０５に、係るデータの削除を通知してもよい。
【００９４】
差分有効フラグ無効である場合（ステップＳ１００２においてＮＯ）、クローンボリュームにおける当該差分領域についてはデータの更新が実行されていない。これより、リンクドクローン機能制御部１０６は、リンクドクローンボリューム管理部１０５に対して、上記データ更新処理と同様の処理を実行するよう通知する。この場合、リンクドクローンボリューム管理部１０５は、物理ディスク群１０４から物理記憶領域を確保する（ステップＳ１００４）。リンクドクローンボリューム管理部１０５が確保する物理記憶領域は、削除対象のデータを含むクローンボリュームの差分領域に割り当てられる。そして、リンクドクローンボリューム管理部１０５は、当該削除対象のデータを含むエンティティボリュームの差分領域からデータを読み込み、クローンボリュームにおける関連領域に複製する（ステップＳ１００５）。複製されたデータは、上記ステップＳ１００４において確保された物理記憶領域に記憶される。
【００９５】
上記ステップＳ１００３、あるいは、ステップＳ１００５が完了した際、リンクドクローンボリューム管理部１０５は、クローンボリュームから、当該削除対象のデータを削除する（ステップＳ１００６）。この際、リンクドクローンボリューム管理部１０５は、ディスク制御部１０３に対して、クローンボリュームに割り当てられた物理記憶領域から、削除対象のデータを削除するよう依頼してもよい。ディスク制御部１０３は、上記依頼に基づいて、当該物理記憶領域に含まれるデータを削除する。より具体的にはディスク制御部１０３は、物理記憶領域から削除対象のデータを削除し、係る物理記憶領域に「０」データを設定する。リンクドクローンボリューム管理部１０５は、上記削除処理の完了を、リンクドクローン機能制御部１０６に通知してもよい。
【００９６】
次に、リンクドクローン機能制御部１０６は、削除対象のデータを含むクローンボリュームにおける差分領域に関する差分有効フラグを「有効」に設定する（ステップＳ１００７）。リンクドクローン機能制御部１０６は、上記ステップＳ１００２乃至Ｓ１００７の処理の終了後、ホスト制御部１０２に対して、処理終了を通知してもよい。係る通知を受け付けたホスト制御部１０２は、削除要求（ＵＮＭＡＰコマンド）を発行した仮想マシン１０１ａに対して、削除終了を応答してもよい。
【００９７】
次に、物理ディスク群１０４において確保された物理記憶領域の解放処理について、図１１に例示するフローチャートを参照して説明する。
【００９８】
差分情報管理部１０８は、例えば、特定のタイミングで、各クローンボリュームに関するクローンボリューム差分管理テーブル２０１ｂを監視する。係る特定のタイミングは、例えば、上記した特定のデータに対する削除要求を受け付けたタイミングよりも後の任意のタイミングであってもよい。差分情報管理部１０８は、例えば、所定の時間間隔毎に、クローンボリューム差分管理テーブル２０１ｂを監視してもよい。
【００９９】
差分情報管理部１０８は、クローンボリューム差分管理テーブル２０１ｂに含まれる全てのクローンボリュームに関する差分管理テーブルについて、下記処理を実行する。
【０１００】
まず、差分情報管理部１０８は、クローンボリューム差分管理テーブル２０１ｂを参照する（ステップＳ１１０１）。この場合、差分情報管理部１０８は、リンクドクローン機能制御部１０６を介して、クローンボリューム差分管理テーブル２０１ｂを参照してもよい。
【０１０１】
次に、差分情報管理部１０８は、クローンボリューム差分管理テーブル２０１ｂにおいてｎ番目（ｎは０以上の整数）の差分領域に関する情報を確認する（Ｓ１１０３）。なお、ｎは０に初期化される（ステップＳ１１０２）。０番目の差分領域は、クローンボリューム差分管理テーブル２０１ｂの先頭に登録された差分領域であってもよい。以下において、ｎ番目の差分領域を、単に差分領域ｎと称する場合がある。
【０１０２】
次に、差分情報管理部１０８は、差分領域ｎに関する差分有効フラグ（図５の５０３）に「有効」が設定されているか確認する（ステップＳ１１０４）。
【０１０３】
差分有効フラグが「有効」ではない場合（ステップＳ１１０４においてＮＯ）、差分情報管理部１０８は、クローンボリューム差分管理テーブル２０１ｂに次の差分領域があるか確認する（ステップＳ１１１２）。差分情報管理部１０８は、次の差分領域があれば（ステップＳ１１１２においてＹＥＳ）、ｎをインクリメントし（ステップＳ１１１３）、ステップＳ１１０３から処理を続行する。差分情報管理部１０８は、次の差分領域がなければ（ステップＳ１１１２においてＮＯ）、処理を終了する。
【０１０４】
次に、差分有効フラグが「有効」である場合（ステップＳ１１０４においてＹＥＳ）、差分情報管理部１０８は、差分領域ｎに関する差分データチェック要求フラグ（図５の５０４）に「有効」が設定されているか確認する（ステップＳ１１０５）。
【０１０５】
差分データチェック要求フラグが「有効」ではない場合（ステップＳ１１０５においてＮＯ）、差分情報管理部１０８は、ステップＳ１１２から処理を続行する。
【０１０６】
差分データチェック要求フラグが「有効」である場合（ステップＳ１１０５においてＹＥＳ）、差分情報管理部１０８は、差分領域ｎに含まれる（保持されている）データのチェックコードを生成する（ステップＳ１１０６）。この場合、差分情報管理部１０８は、チェックコード生成部６０２を用いて、当該チェックコードを生成してもよい。
【０１０７】
次に、差分情報管理部１０８は、クローンボリュームにおける差分領域ｎのチェックコードと、差分領域ｎに関連するエンティティボリュームにおける関連領域のチェックコードとが同一か否かを比較する（ステップＳ１１０７）。この際、差分情報管理部１０８は、エンティティボリューム差分管理テーブル２０１ａを参照することにより、上記差分領域に関する差分データチェックコードを参照してもよい。
【０１０８】
これらのチェックコードが同一ではない場合（ステップＳ１１０７においてＮＯ）、差分情報管理部１０８は、ステップＳ１１１２から処理を続行する。
【０１０９】
これらのチェックコードが同一である場合（ステップＳ１１０７においてＹＥＳ）、差分情報管理部１０８は、以下の処理を実行する。即ち、差分情報管理部１０８は、差分領域ｎに含まれるデータと、差分領域ｎに関連するエンティティボリュームにおける関連領域に含まれるデータとを比較する（ステップＳ１１０８）。より具体的には、差分情報管理部１０８は、差分領域ｎに含まれる全データと、差分領域ｎに関連するエンティティボリュームにおける関連領域に含まれる全データとについてコンペア処理を実行する。なお、上記の場合における差分領域ｎに含まれる全データは、差分領域ｎにおいて削除対象のデータ（ステップＳ１００１において受け付けた削除要求の対象であるデータ）が削除された後のデータである。
【０１１０】
係る比較の結果、これらのデータが一致しない（同一ではない）場合（ステップＳ１１０９においてＮＯ）、差分情報管理部１０８は、ステップＳ１１１２から処理を続行する。
【０１１１】
係る比較の結果、これらのデータが一致する場合（ステップＳ１１０９においてＹＥＳ）、差分情報管理部１０８は、物理ディスク群１０４において当該差分領域ｎに割り当てられた物理記憶領域（記憶容量）を解放する（ステップＳ１１１０）。この場合、差分情報管理部１０８が、ディスク制御部１０３に対して差分領域ｎに割り当てられた物理記憶領域の解放を通知し、ディスク制御部１０３が、係る物理記憶領域の解放処理を実行してもよい。
【０１１２】
そして、差分情報管理部１０８は、クローンボリューム差分管理テーブル２０１ｂにおいて、差分領域ｎに関する差分有効フラグを無効化する（ステップＳ１１１１）。この場合、差分情報管理部１０８は、差分有効フラグに「無効（例えば「０」）」を設定してもよい。
【０１１３】
上記処理より、当該差分領域ｎに関する差分有効フラグが無効に設定される。これより、次回以降、当該差分領域ｎにアクセスが発生した場合、当該差分領域ｎに関するエンティティボリュームにおける関連領域がアクセスされる。また、物理ディスク群１０４において解放された物理記憶領域は、新たにクローンボリュームを更新した際に、更新された差分領域に関するデータを保存する記憶領域として使用可能である。
【０１１４】
上記ステップＳ１１１１の後、差分情報管理部１０８は、ステップＳ１１１２から処理を続行する。
【０１１５】
図８Ｂに示す具体例を参照して、上記処理について説明する。図８Ｂに示す具体例では、例えば、仮想マシン１０１ａが、図８Ａに示す具体例の状況から、論理ボリュームにおける領域８０１ｃに含まれるデータの削除要求を通知したことを想定する。図８Ｂに示すように、領域８０１ｃに含まれるデータを削除した結果、クローンボリューム００２における記憶領域８０２ｃと、エンティティボリューム０００における領域８０３ａとは、同一のデータを含む。この場合、差分情報管理部１０８は、クローンボリューム００２における記憶領域８０２ｃに割り当てられた物理ディスク群１０４の記憶領域を解放する（ステップＳ１１０１乃至ステップＳ１１１１）。これにより、ストレージシステム１００は、物理ディスク群１０４において、同一のデータを重複して保持する不要な記憶領域を解放可能である。
【０１１６】
なお、上記したように、差分情報管理部１０８は、データに対する削除要求を受け付けたタイミングと異なるタイミングで、上記説明したステップＳ１１０１乃至ステップＳ１１１３に係る処理を実行可能である。上記説明したステップＳ１１０１乃至ステップＳ１１１３に係る処理には、比較的長い処理時間が必要となる場合がある。ストレージシステム１００は、ホスト装置１０１からの削除要求を受信したタイミングで素早くレスポンスを返し、その後の任意のタイミングで比較的長い処理時間を要する上記処理を実行してもよい。これにより、ストレージシステム１００は、ホスト装置１０１に対する応答性能の低下させずに、物理ディスク群１０４における不要な記憶領域を解放可能である。
【０１１７】
（効果）
ストレージシステム１００は、クローンボリュームにおける差分領域に含まれるデータが削除された際に、係る差分領域に含まれるデータと、エンティティボリュームにおける関連領域に含まれるデータとの同一性を確認する。そして、これらの領域に含まれるデータが同一である場合、クローンボリュームにおける差分領域に割り当てられた物理記憶領域を解放する。これにより、本実施形態におけるストレージシステム１００は、Ｌｉｎｋｅｄ  Ｃｌｏｎｅ機能を使用した仮想マシン環境において、物理ディスク群１０４に確保される記憶領域を効率よく管理及び運用することが可能である。換言すると、本実施形態におけるストレージシステム１００は、物理ディスク群１０４において確保される記憶容量（使用される物理記憶領域の容量）を効率よく利用することが可能である。より具体的には、ストレージシステム１００は、仮想マシン１０１ａからのＵＮＭＡＰコマンドの発行通知を契機に、エンティティボリュームとクローンボリュームとにおいて関連する差分領域に含まれるデータが同一であるか否かをチェックする。そして、係るチェックの結果、これらの差分領域に含まれるデータが同一であることが確認できた場合、ストレージシステム１００は、物理ディスク群１０４においてクローンボリュームの差分領域に割り当てられた物理ディスク容量を解放する。これにより、ストレージシステム１００は、同一のデータが物理ディスク群１０４に重複して記憶されたままにならないよう、物理ディスク群１０４における記憶領域を解放可能である。
【０１１８】
以上より、本実施形態におけるストレージシステム１００によれば、記憶されるデータの重複を排除することにより、記憶領域を効率的に利用可能である。また、これにより、ストレージシステム１００は、より多数の仮想マシン環境を構築することができる。
【０１１９】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。図１２は、本発明の第２の実施形態におけるストレージシステム１２００の機能的な構成を例示するブロック図である。
【０１２０】
図１２に例示するように、本実施形態におけるストレージシステム１２００は、第１のボリューム１２０１と、第２のボリューム１２０２と、ボリューム管理部１２０３と、を備える。ストレージシステム１２００を構成するこれらの構成要素の間は、任意の通信手段を用いて通信可能に接続されている。以下、それぞれの構成要素について説明する。
【０１２１】
第１のボリューム１２０１は、記憶領域（例えば、論理的な記憶領域）を提供する。第１のボリューム１２０１が提供する記憶領域は、複数の部分的な記憶領域を含んでいてもよい。なお、第１のボリューム１２０１は、例えば、上記第１の実施形態におけるエンティティボリュームと同様としてもよい。
【０１２２】
第２のボリューム１２０２は、第１のボリューム１２０１に対する差分を含む記憶領域を提供する。第２のボリューム１２０２が提供する記憶領域は、複数の部分的な記憶領域を含んでいてもよい。なお、第２のボリューム１２０２は、例えば、上記第１の実施形態におけるクローンボリュームと同様としてもよい。また、上記第２のボリュームにおける部分的な記憶領域は、第１のボリュームにおける部分的な記憶領域と関連付けられてもよい。
【０１２３】
ボリューム管理部１２０３は、ストレージシステム１２００に対する、特定のデータの削除を要求する削除要求を受け付ける。そして、ボリューム管理部１２０３は、第２のボリューム１２０２における第２の特定部分記憶領域に含まれるデータと、第１のボリューム１２０１における第１の特定部分記憶領域に含まれるデータとの間の同一性を確認する。ここで、第２の特定部分記憶領域は、第２のボリューム１２０２が提供する記憶領域に含まれる部分的な記憶領域であり、当該特定のデータ（削除対象であるデータ）を含む。また、第１の特定部分記憶領域は、第１のボリューム１２０１が提供する記憶領域に含まれる部分的な記憶領域であり、上記第２の特定部分領域と関連付けされる。第２のボリューム１２０２が提供する記憶領域に含まれる部分的な記憶領域は、例えば、上記第１の実施形態におけるクローンボリュームにおける差分領域と同様としてもよい。この場合、第２の特定部分記憶領域は、クローンボリュームにおける削除対象のデータを含む部分領域に相当する。また、第１のボリューム１２０１が提供する記憶領域に含まれる部分的な記憶領域は、例えば、上記第１の実施形態におけるエンティティボリュームにおける差分領域と同様としてもよい。この場合、第１の特定部分記憶領域は、第２の特定部分記憶領域に関する関連領域に相当する。
【０１２４】
ボリューム管理部１２０３は、上記同一性を確認した結果に基づいて、第２のボリューム１２０２に含まれるデータを記憶する記憶デバイスの記憶領域のうち、第２の特定部分記憶領域に割り当てられた領域を解放する。ボリューム管理部１２０３は、例えば、上記第２の特定部分記憶領域に含まれるデータと、上記第１の特定部分記憶領域に含まれるデータとが同一である場合、上記第２の特定部分記憶領域に割り当てられた記憶デバイスの領域を解放してもよい。
【０１２５】
なお、係る記憶デバイスは、例えば、物理的な記憶デバイスであってもよく、論理的な記憶デバイスであってもよい。また、係る記憶デバイスは、仮想化されていてもよい。係る記憶デバイスは、例えば、上記第１の実施形態における物理ディスク群１０４と同様としてもよい。
【０１２６】
ボリューム管理部１２０３は、例えば、上記第１の実施形態における、ストレージシステム１００を構成する各構成要素において実現される機能を提供可能であってもよい。即ち、ボリューム管理部１２０３は、上記第１の実施形態におけるディスク制御部１０３、リンクドクローンボリューム管理部１０５、リンクドクローン機能制御部１０６、差分情報管理部１０８等において実現される機能を提供してもよい。
【０１２７】
上記のように構成されたストレージシステム１２００は、第１のボリューム及び第２のボリュームを含むストレージに対して特定のデータの削除が通知された場合、当該特定のデータを含む第２のボリュームにおける部分的な記憶領域を特定する。ストレージシステム１２００は、係る第２のボリュームにおける部分的な記憶領域（第２の特定部分記憶領域）に関連する、第１のボリュームにおける部分的な記憶領域（第１の特定部分記憶領域）を特定する。ストレージシステム１２００は、それらの部分的な記憶領域に含まれるデータが同一であるか否かを判定する。そして、ストレージシステム１２００は、その判定結果に基づいて、第２の特定部分記憶領域に割り当てられた、記憶デバイスにおける記憶領域を解放するか否かを判定可能である。これにより、例えば、第１の特定部分記憶領域と、第２の特定部分記憶領域が、同一のデータを含む場合、ストレージシステム１２００は、そのデータが物理ディスク群１０４に重複して記憶されたままにならないよう制御可能である。
【０１２８】
以上より、本実施形態におけるストレージシステム１２００によれば、記憶されるデータの重複を排除することにより、記憶領域を効率的に利用可能である。また、これにより、ストレージシステム１２００は、より多数の仮想マシン環境を構築することができる。
【０１２９】
＜ハードウェア及びソフトウェア・プログラム（コンピュータ・プログラム）の構成＞
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
【０１３０】
以下の説明において、上記各実施形態において説明したストレージシステム（１００、１２００）をまとめて、単に「ストレージシステム」と称する。またストレージシステムの各構成要素を、単に「ストレージシステムの構成要素」と称する。
【０１３１】
上記各実施形態において説明したストレージシステムは、１つ又は複数の専用のハードウェア装置により構成されてもよい。その場合、上記各図に示した各構成要素は、一部又は全部を統合したハードウェア（処理ロジックを実装した集積回路あるいは記憶デバイス等）として実現されてもよい。
【０１３２】
例えば、ストレージシステムを専用のハードウェアにより実現する場合、係るストレージシステムの構成要素は、それぞれの機能を提供可能な集積回路をＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）等により実装されてもよい。この場合、例えば、ストレージシステムの構成要素が保持するデータは、ＳｏＣとして統合されたＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）領域やフラッシュメモリ領域に記憶されてもよい。また、この場合、ストレージシステムの各構成要素を接続する通信回線としては、周知の通信バスを採用してもよい。また、各構成要素を接続する通信回線はバス接続に限らず、それぞれの構成要素間をピアツーピアで接続してもよい。ストレージシステムを複数のハードウェア装置により構成する場合、それぞれのハードウェア装置の間は、任意の通信手段（有線、無線、またはそれらの組み合わせ）により通信可能に接続されていてもよい。
【０１３３】
また、上述したストレージシステム又はその構成要素は、図１３に例示するような汎用のハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム（コンピュータ・プログラム）とによって構成されてもよい。この場合、ストレージシステムは、任意の数の、汎用のハードウェア装置及びソフトウェア・プログラムにより構成されてもよい。
【０１３４】
図１３における演算装置１３０１は、汎用のＣＰＵ（中央処理装置：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やマイクロプロセッサ等の演算処理装置である。演算装置１３０１は、例えば後述する不揮発性記憶装置１３０３に記憶された各種ソフトウェア・プログラムを記憶装置１３０２に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。例えば、上記各実施形態におけるストレージシステムの構成要素は、演算装置１３０１により実行されるソフトウェア・プログラムとして実現可能である。
【０１３５】
記憶装置１３０２は、演算装置１３０１から参照可能な、ＲＡＭ等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置１３０２は、揮発性のメモリ装置であってもよい。例えば、上記各実施形態におけるメモリ部２０４は、記憶装置１３０２を用いて実現可能である。
【０１３６】
不揮発性記憶装置１３０３は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置１３０３は、各種ソフトウェア・プログラムやデータ等を記憶可能である。例えば、上記各実施形態における物理ディスク群１０４に含まれる各物理ディスクは、不揮発性記憶装置１３０３を用いて実現可能である。
【０１３７】
ネットワークインタフェース１３０６は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）接続用インタフェース装置等を採用してもよい。記各実施形態におけるストレージシステムは、ネットワークインタフェース１３０６を介して、ホスト装置（例えばホスト装置１０１）と通信可能に接続されていてもよい。
【０１３８】
ドライブ装置１３０４は、例えば、後述する記録媒体１３０５に対するデータの読み込みや書き込みを処理する装置である。
【０１３９】
記録媒体１３０５は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
【０１４０】
入出力インタフェース１３０７は、外部装置との間の入出力を制御する装置である。
【０１４１】
なお、上記各実施形態におけるストレージシステムは、ネットワークインタフェース１３０６、ドライブ装置１３０４、及び、入出力インタフェース１３０７を備えてもよく、備えなくともよい。
【０１４２】
上述した各実施形態を例に説明した本発明におけるストレージシステムは、例えば、図１３に例示するハードウェア装置に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより、実現されてもよい。より具体的には、例えば、係る装置に対して供給したソフトウェア・プログラムを、演算装置１３０１が実行することによって、本発明が実現されてもよい。この場合、係るハードウェア装置で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。
【０１４３】
更に、上記ソフトウェア・プログラムは記録媒体１３０５に記録されてもよい。この場合、上記ソフトウェア・プログラムは、上記通信装置等の出荷段階、あるいは運用段階等において、適宜ドライブ装置１３０４を通じて不揮発性記憶装置１３０３に格納されるよう構成されてもよい。
【０１４４】
なお、上記の場合において、上記ストレージシステムへの各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
【０１４５】
そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。この場合、係る記録媒体は、ハードウェア装置と独立した媒体に限らず、ＬＡＮやインターネットなどにより伝送されたソフトウェア・プログラムをダウンロードして記憶又は一時記憶した記憶媒体を含む。
【０１４６】
また、上述したストレージシステムは、図１３に例示するハードウェア装置を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム（コンピュータ・プログラム）とによって構成されてもよい。この場合、図１３に例示するハードウェア装置の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図１３に例示するハードウェア装置を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。
【０１４７】
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。更に、上述した各実施形態、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【０１４８】
なお、上記の各実施形態の一部又は全部は、以下の付記のようにも記載されうる。なお、以下の付記は本発明をなんら限定するものではない。
【０１４９】
（付記１）
記憶領域を提供する第１のボリュームと、
上記第１のボリュームに対する差分を含む他の記憶領域を提供する第２のボリュームと、
特定のデータに対する削除要求を受け付けた場合、当該特定のデータを含む、上記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、上記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、上記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放する
ボリューム管理手段と、を備える
ストレージシステム。
【０１５０】
（付記２）
上記ボリューム管理手段は、
上記特定のデータを含む上記第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた上記第１の特定部分記憶領域に含まれるデータとが同一である場合に、上記記憶デバイスの記憶領域のうち、上記第２の特定部分記憶領域に割り当てられた領域を解放する
付記１に記載のストレージシステム。
【０１５１】
（付記３）
上記ボリューム管理手段は、
上記削除要求を受け付けた際、上記第２の特定部分記憶領域に含まれるデータが、当該第２の特定部分記憶領域と関連付けされた上記第１の特定部分記憶領域に含まれるデータから更新されたか否かを確認し、
当該確認の結果、上記第２の特定部分記憶領域に含まれるデータが更新されたと判定した場合、当該第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた上記第１の特定部分記憶領域に含まれるデータとの間の同一性を確認し
これらの部分領域に含まれるデータが同一であると判定した場合、上記記憶デバイスにおいて上記第２の特定部分記憶領域に割り当てられた領域を解放する
付記１又は付記２に記載のストレージシステム。
【０１５２】
（付記４）
上記ボリューム管理手段は、
上記ボリューム管理手段は、上記削除要求を受け付けた場合、
上記第２のボリュームに含まれる１以上の部分的な記憶領域毎に、当該記憶領域に含まれるデータが、当該部分的な記憶領域と関連付けされた上記第１のボリュームに含まれる部分的な記憶領域に含まれるデータから更新されたか否かを表す差分有効性情報を含む、第２のボリューム管理情報を参照することにより、上記第２の特定部分記憶領域に含まれるデータが更新されたか否かを判定し、
当該第２の特定部分記憶領域が更新されたと判定した場合、当該第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた上記第１の特定部分記憶領域に含まれるデータとの間の同一性を確認し、
これらの部分領域に含まれるデータが同一であると判定した場合、上記記憶デバイスにおいて当該第２の特定部分記憶領域に割り当てられた領域を解放するとともに、当該第２の特定部分記憶領域に関する上記差分有効性情報に、データの更新が発生していないことを表す情報を設定する、
付記３に記載のストレージシステム。
【０１５３】
（付記５）
上記第２のボリューム管理情報が、上記第２のボリュームに含まれる１以上の部分的な記憶領域毎に、当該記憶領域に含まれるデータと、当該記憶領域と関連付けされた上記第１のボリュームに含まれる部分的な記憶領域に含まれるデータとの間の同一性の判定要否を表す差分チェック要求情報を更に含み、
上記ボリューム管理手段は、
上記削除要求を受け付けたタイミングにおいて、上記第２の特定部分記憶領域に関する上記差分有効性情報に基づいて、当該第２の特定部分記憶領域に含まれるデータが更新されたと判定した場合には、当該第２の特定部分記憶領域に関する上記差分チェック要求情報に、同一性の判定が必要であることを表す情報を設定し、
上記削除要求を受け付けたタイミングよりも後の任意のタイミングにおいて、上記差分チェック要求情報に同一性の判定が必要であることを表す情報が設定されている場合、上記第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた上記第１の特定部分記憶領域に含まれるデータとの間の同一性を確認する
付記４に記載のストレージシステム。
【０１５４】
（付記６）
上記ボリューム管理手段は、上記第２の特定部分記憶領域に含まれるデータが更新されたと判定した場合、当該第２の特定部分記憶領域に含まれるデータから生成された、当該データと他のデータとが同一であるか否かを判定可能な情報であるチェックコードと、当該第２の特定部分記憶領域と関連付けされた上記第１の特定部分領域に含まれるデータから生成された上記チェックコードとを比較することにより、当該第２の特定部分記憶領域に含まれるデータと、当該第１の特定部分記憶領域に含まれるデータとの間の同一性を判定する、
付記３乃至付記５のいずれかに記載のストレージシステム。
【０１５５】
（付記７）
上記ボリューム管理手段は、上記第２の特定部分記憶領域に含まれるデータから生成された上記チェックコードと、当該第２の特定部分記憶領域と関連付けされた上記第１の特定部分領域から生成された上記チェックコードとが同一であると判定した場合、当該第２の特定部分領域に含まれる全データと、当該第１の特定部分領域に含まれる全データとを更に比較することにより、当該第２の特定部分記憶領域に含まれるデータと、当該第１の特定部分記憶領域に含まれるデータとの間の同一性を判定する、
付記６に記載のストレージシステム。
【０１５６】
（付記８）
上記ボリューム管理手段は、
上記第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分記憶領域が関連付けされた上記第１の特定部分記憶領域に含まれるデータとの間の同一性を確認し、
これらデータが同一であると判定した場合、上記記憶デバイスにおいて上記第２の特定部分記憶領域に割り当てられた領域に特定の値を設定する
付記１乃至付記７のいずれかに記載のストレージシステム。
【０１５７】
（付記９）
記憶領域を提供する第１のボリュームと、上記第１のボリュームに対する差分を含む記憶領域を提供する第２のボリュームとを有するストレージに含まれる特定のデータに対する削除要求を受け付け、
当該特定のデータを含む、上記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、上記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、上記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放する
ストレージの管理方法。
【０１５８】
（付記１０）
記憶領域を提供する第１のボリュームと、上記第１のボリュームに対する差分を含む記憶領域を提供する第２のボリュームとを有するストレージに含まれる特定のデータに対する削除要求を受け付ける処理と、
当該特定のデータを含む、上記第２のボリュームにおける部分的な記憶領域である第２の特定部分記憶領域に含まれるデータと、当該第２の特定部分領域と関連付けされた、上記第１のボリュームにおける部分的な記憶領域である第１の特定部分記憶領域に含まれるデータとの間の同一性を確認した結果に基づいて、上記第２のボリュームに割り当てられた記憶デバイスの記憶領域のうち、当該第２の特定部分記憶領域に割り当てられた領域を解放する処理と、をコンピュータに実行させる
コンピュータ・プログラム。
【０１５９】
（付記１１）
上記ボリューム管理手段は、
上記特定のデータが上記第１のボリュームが提供する記憶領域に含まれる場合、当該特定のデータを含む部分的な記憶領域と関連付けされた上記第２のボリュームにおける部分的な記憶領域に割り当てられる領域を、上記記憶デバイスにおいて新たに確保し、
上記第１のボリュームにおける部分的な記憶領域に含まれるデータを、上記第２のボリュームにおける部分的な記憶領域に複製し、
上記第２のボリュームにおける部分的な記憶領域おいて、上記特定のデータを削除し、
上記第２のボリュームにおける部分的な記憶領域おいて、上記特定のデータを削除した後のデータと、上記第１のボリュームにおける部分的な記憶領域に含まれるデータとの間の差分を判定した結果に基づいて、上記記憶デバイスにおいて上記第２のボリュームにおける部分的な記憶領域に割り当てられた領域を解放するか否かを判定する
付記１に記載のストレージシステム。
【０１６０】
（付記１２）
上記ボリューム管理手段は、
上記第１のボリュームに含まれる部分的な記憶領域毎に、当該部分的な記憶領域に含まれるデータに基づいて算出され、当該データと、他のデータとが同一であるか否かを判定可能な情報であるチェックコードを含む第１のボリューム管理情報を参照し、
上記削除要求を受け付けた際、上記第２の特定部分記憶領域に関するデータの更新が発生したと判定した場合に、上記第１のボリューム管理情報に含まれる、当該第２の特定部分記憶領域と関連付けされた上記第１の特定部分領域に関する上記チェックコードと、当該第２の特定部分記憶領域に含まれるデータから算出した上記チェックコードとを比較することにより、当該第２の特定部分記憶領域に保持されたデータと、当該第１の特定部分記憶領域に保持されたデータとの間の同一性を判定する、
付記３に記載のストレージシステム。
【０１６１】
（付記１３）
上記第１のボリューム及び上記第２のボリュームに関連付けされた記憶領域を有する論理ボリュームをホスト装置に提供するとともに、当該ホスト装置から通知される、上記論理ボリュームに対するアクセス要求を処理するホスト制御部を更に備え、
上記記憶デバイスは、物理的な記憶装置により構成される物理記憶手段であり、
上記ボリューム管理手段は、
上記ホスト制御部からアクセス要求を通知された際、当該アクセス要求が通知された上記論理ボリュームと関連付けされた上記第２のボリュームにおける部分的な記憶領域に関する上記差分有効性情報を確認し、
当該第２のボリュームにおける部分的な記憶領域に含まれるデータが、当該第２のボリュームにおける部分的な記憶領域と関連付けされた第１のボリュームにおける部分的な記憶領域に含まれるデータから更新されていない場合には、当該第１のボリュームにおける部分的な記憶領域に含まれるデータを上記ホスト制御部に提供し、
当該第２のボリュームにおける部分的な記憶領域に含まれるデータが、当該第２のボリュームにおける部分的な記憶領域と関連付けされた第１のボリュームにおける部分的な記憶領域に含まれるデータから更新されている場合には、第２のボリュームが提供する部分的な記憶領域に含まれるデータを上記ホスト制御部に提供する、
付記１に記載のストレージシステム。
【符号の説明】
【０１６２】
１００  ストレージシステム
１０１  ホスト装置
１０２  ホスト制御部
１０３  ディスク制御部
１０４  物理ディスク群
１０５  リンクドクローンボリューム管理部
１０６  リンクドクローン機能制御部
１０７  論理ボリューム管理部
１０８  差分情報管理部
６０１  差分データ比較部
６０２  チェックコード生成部
６０３  差分データ解放部
１２００  ストレージシステム
１２０１  第１のボリューム
１２０２  第２のボリューム
１２０３  ボリューム管理部
１３０１  演算装置
１３０２  記憶装置
１３０３  不揮発性記憶装置
１３０４  ドライブ装置
１３０５  記録媒体
１３０６  ネットワークインタフェース
１３０７  入出力インタフェース
【図１】
2016181078.tif 000003
【図２】
2016181078.tif 000004
【図３】
2016181078.tif 000005
【図４】
2016181078.tif 000006
【図５】
2016181078.tif 000007
【図６】
2016181078.tif 000008
【図７】
2016181078.tif 000009
【図８Ａ】
2016181078.tif 000010
【図８Ｂ】
2016181078.tif 000011
【図９】
2016181078.tif 000012
【図１０】
2016181078.tif 000013
【図１１】
2016181078.tif 000014
【図１２】
2016181078.tif 000015
【図１３】
2016181078.tif 000016