(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-30
(45)【発行日】2023-11-08
(54)【発明の名称】スナップショットのコピーオンライトのデータ移動を回避するインフラストラクチャとしての重複除外
(51)【国際特許分類】
G06F 3/06 20060101AFI20231031BHJP
G06F 11/14 20060101ALN20231031BHJP
【FI】
G06F3/06 304B
G06F3/06 301W
G06F3/06 304F
G06F11/14 653
(21)【出願番号】P 2020541342
(86)(22)【出願日】2018-09-24
(86)【国際出願番号】 US2018052548
(87)【国際公開番号】W WO2019070450
(87)【国際公開日】2019-04-11
【審査請求日】2021-09-16
(32)【優先日】2017-10-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520119699
【氏名又は名称】ザダラ ストレージ インコーポレイテッド
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(74)【代理人】
【識別番号】100165157
【氏名又は名称】芝 哲央
(74)【代理人】
【識別番号】100205659
【氏名又は名称】齋藤 拓也
(74)【代理人】
【識別番号】100126000
【氏名又は名称】岩池 満
(74)【代理人】
【識別番号】100185269
【氏名又は名称】小菅 一弘
(72)【発明者】
【氏名】リャカス アレックス
(72)【発明者】
【氏名】カウシク ヴィー. シアム
【審査官】打出 義尚
(56)【参考文献】
【文献】特開2017-083933(JP,A)
【文献】特表2015-534684(JP,A)
【文献】米国特許出願公開第2012/0221817(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 11/14
(57)【特許請求の範囲】
【請求項1】
スナップショットコピー・オン・ライトのためのデータ移動を低減するためのストレージシステムの方法において、
複数のスナップショットチャンクを備えたライブバーチャルボリュームを提供するステップであって、前記複数のスナップショットチャンクの各スナップショットチャンクは、複数の重複排除チャンクに分割され、前記複数の重複排除チャンクのそれぞれは、ディスク上のディスクチャンクにマッピングされる、ステップと、
スナップショットを構成する複数のスナップショットチャンクのそれぞれの複数の重複排除チャンクのそれぞれを、前記ディスク上のそれぞれのディスクチャンクにマッピングすることによって、前記ディスク内の前記ライブバーチャルボリュームの潜在的なデータのいずれをもコピーすることなく、前記ライブバーチャルボリュームの前記スナップショットを作成するステップと、
ディスクチャンクにマッピングされ、且つスナップショットからもマッピングされた重複排除チャンクのセットを含む前記ライブバーチャルボリュームのスナップショットチャンクへのホストライト動作に応答して、重複排除動作を用いるスナップショットコピー・オン・ライトを実行するステップと、
を備え、
前記重複排除動作は、
データが特定の重複排除チャンクで変更された場合、
前記ライブバーチャルボリュームへの前記ホストライト動作によって書き込まれている前記スナップショットチャンクの各重複排除チャンクを決定するステップと、
前記
ライブバーチャルボリュームの前記スナップショットチャンクの前記変更された重複排除チャンクを、異なるディスクチャンクまたは新しいディスクチャンクにマッピングするステップと、を備え、
前記ホストライト動作の前に前記
ライブバーチャルボリュームの前記スナップショットチャンクの前記特定の重複排除チャンクからマッピングされ、且つ前記スナップショットからマッピングされたディスクチャンクは、前記ホストライト動作の後に前記スナップショットからマッピングされたままになり、
変更された重複排除チャンクは、
そのデータパターンが、重複排除データベースの既存のパターンと一致する場合は、異なるディスクチャンクへ、
そのデータパターンが新しいため、重複排除データベース内の既存のパターンと一致しない場合は、新しいディスクチャンクへ、
マッピングされ、
スナップショットチャンクは、前記
ライブバーチャルボリュームが変更されるときに、スナップショットレイヤがコピー・オン・ライト動作を実行する論理ユニットである、方法。
【請求項2】
前記重複排除動作は、前記ホストライトにより書き込まれるデータパターンの参照カウントをインクリメントするステップをさらに備えた、請求項1に記載の方法。
【請求項3】
前記重複排除動作は、前記ホストライトにより上書きされたデータパターンの参照カウントをデクリメントするステップをさらに備えた請求項1に記載の方法。
【請求項4】
スナップショットレイヤと、前記スナップショットレイヤの下の重複排除レイヤを実行するように構成されたプロセッサであって、
前記スナップショットレイヤは、
ライブバーチャルボリュームの潜在的データのいずれをもディスクにコピーすることなく、前記ライブバーチャルボリュームのスナップショットを作成し、前記ライブバーチャルボリュームは、ディスク上のディスクロケーションに前記重複排除レイヤを介してマッピングされたスナップショットチャンクを備え、
ディスクチャンクにマッピングされ、且つスナップショットからもマッピングされた重複排除チャンクのセットを含む前記ライブバーチャルボリュームのスナップショットチャンクへの各ホストライトに関して、スナップショットコピー・オン・ライト動作を実行する、ように構成されたスナップショットレイヤであり、
前記重複排除レイヤは、
各スナップショットチャンクを複数の重複排除チャンクに分割し、前記複数の重複排除チャンクのそれぞれを前記ディスク上のディスクチャンクにマッピングし、
各スナップショットコピー・オン・ライト動作に関して、重複排除動作を実行する、ように構成された重複排除レイヤであり、
前記重複排除動作は、
データが特定の重複排除チャンクで変更された場合、前記ライブバーチャルボリュームへのホストライト動作によって書き込まれている前記スナップショットチャンクの各重複排除チャンクを決定するステップと、
前記ライブバーチャルボリュームの前記スナップショットチャンクの前記変更された重複排除チャンクを、異なるディスクチャンクまたは新しいディスクチャンクにマッピングするステップと、を備え、
前記ホストライト動作の前に前記ライブバーチャルボリュームの前記スナップショットチャンクの前記特定の重複排除チャンクからマッピングされ、且つ前記スナップショットからマッピングされたディスクチャンクは、前記ホストライト動作の後に前記スナップショットからマッピングされたままになり、
変更された重複排除チャンクは、
そのデータパターンが、重複排除データベースの既存のパターンと一致する場合は、異なるディスクチャンクへ、
そのデータパターンが新しいため、重複排除データベース内の既存のパターンと一致しない場合は、新しいディスクチャンクへ、
マッピングされ、
スナップショットチャンクは、
前記ライブバーチャルボリュームが変更されるときに、スナップショットレイヤがコピー・オン・ライト動作を実行する論理ユニットである、
プロセッサを含む、ストレージシステム。
【請求項5】
前記重複排除動作は、さらに前記ホストライトにより書き込まれたデータパターンの参照カウントをインクリメントすることをさらに備えた、請求項4に記載のシステム。
【請求項6】
前記重複排除動作は、前記ホストライトにより上書きされたデータパターンの参照カウントをデクリメントすることをさらに備えた、請求項4に記載のシステム。
【請求項7】
スナップショットコピー・オン・ライト動作のためのデータ移動を低減するように、ストレージシステムをインプリメントするように、プロセッサにより実行可能な命令で符号化された非一時的コンピュータ可読記憶媒体において、前記命令は、
複数のスナップショットチャンクを備えたライブバーチャルボリュームを提供することであって、前記複数のスナップショットチャンクの各スナップショットチャンクは、複数の重複排除チャンクに分割され、前記複数の重複排除チャンクの各重複排除チャンクは、ディスク上のディスクチャンクにマッピングされる、ライブバーチャルボリュームを提供することと、
スナップショットを構成する複数のスナップショットチャンクのそれぞれの複数の重複排除チャンクのそれぞれを、前記ディスク上のそれぞれのディスクチャンクにマッピングすることによって、前記ライブバーチャルボリュームの潜在的データのいずれをも、前記ディスクにコピーすることなく、前記ライブバーチャルボリュームの前記スナップショットを作成することと、
ディスクチャンクにマッピングされ、且つスナップショットからもマッピングされた重複排除チャンクのセットを含む前記ライブバーチャルボリュームのスナップショットチャンクへの各ホストライト動作に応答して、重複排除動作を用いるスナップショットコピー・オン・ライト動作を実行することと、
を備え、
前記重複排除動作は、
データが特定の重複排除チャンクで変更された場合、
前記ライブバーチャルボリュームへのホストライト動作によって書き込まれている前記スナップショットチャンクの各重複排除チャンクを決定するステップと、
前記
ライブバーチャルボリュームの前記スナップショットチャンクの前記変更された重複排除チャンクを、異なるディスクチャンクまたは新しいディスクチャンクにマッピングするステップと、を備え、
前記ホストライト動作の前に前記
ライブバーチャルボリュームの前記スナップショットチャンクの前記特定の重複排除チャンクからマッピングされ、且つ前記スナップショットからマッピングされたディスクチャンクは、前記ホストライト動作の後に前記スナップショットからマッピングされたままになり、
変更された重複排除チャンクは、
そのデータパターンが、重複排除データベース(114)の既存のパターンと一致する場合は、異なるディスクチャンクへ、
そのデータパターンが新しいため、重複排除データベース(114)内の既存のパターンと一致しない場合は、
新しいディスクチャンクへ、
マッピングされ、
スナップショットチャンクは、前記
ライブバーチャルボリュームが変更されるときに、スナップショットレイヤ(108)がコピー・オン・ライト動作を実行する論理ユニットである、
非一時的コンピュータ可読記憶媒体。
【請求項8】
前記重複排除動作は、前記ホストライトにより書き込まれるデータパターンの参照カウントをインクリメントすることをさらに備えた、請求項7に記載の記憶媒体。
【請求項9】
前記重複排除動作は、前記ホストライトにより上書きされるデータパターンの参照カウントをデクリメントすることをさらに備えた、請求項7に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スナップショットおよびコピーオンライトに関し、より詳細には、重複排除レイヤをスナップショットレイヤの下位に配置することにより、スナップショットコピー・オン・ライトのデータ移動を低減することに関する。
【背景技術】
【0002】
ほとんどのストレージシステムのスナップショットインプリメンテーションは、ボリュームと、そのスナップショットとの間のデータチャンク(chunks of data)を共有する。異なるストレージシステムは、異なる粒度(granularity)で、この共有を維持する。例えば、256キロバイト(KB)または1メガバイト(MB)チャンク粒度は、ボリュームと、そのスナップショットとの間で共有される。
【0003】
共有されたチャンクが、入力するホストライト(例えば、8KBライト)により上書きされると、ほとんどのストレージシステムは、チャンク粒度(256KBまたは1MB)バッファを別のロケーションにコピーし、入力書き込みを、このバッファに適用するするコピーオンライト(COW)動作を実行する。この動作は、チャンク粒度データを読取り、別のロケーションに書き込むことを含み、入出力(I/O)インテンシブである。
【0004】
重複排除システムは、バッファのフィンガープリント(例えば、ハッシュ)を計算することにより、反復されるバッファパターンを識別する。正確なパターンの反復バッファが書き込まれるとき、重複排除は、共有バッファの参照カウントをインクリメントし、データポインタが、共有データロケーションを指すようにセットアップする。
【発明の概要】
【0005】
この開示の、1つまたは複数の例において、ストレージシステムは、スナップショットトラッッキングに対して、高い粒度(例えば、256KB/1MB/2MB/4MB)を使用し、重複排除に対して、低い粒度(例えば、8KB/16K)を使用する。システムは、スナップショットコピー・オン・ライト(COW)データ移動を回避するために、スナップショットレイヤの下位に重複排除レイヤを有する。スナップショットCOWオペレーションは、そのかわり、共有バッファに対応する重複チャンクのすべてについて、重複排除参照カウントをインクリメントするであろう。従って、スナップショットCOW動作は、基本的には、保持される潜在的重複排除チャンクの、重複排除参照カウントの増分になり、それらのチャンクに対する任意のデータの読み取りおよび書き込み動作を回避する。スナップショットCOW動作は非常に軽量になるため、4MBなどの、より大きなサイズでスナップショットの粒度を設定することが可能である。
【図面の簡単な説明】
【0006】
【
図1】
図1は、この開示のいくつかの例におけるストレージシステムである。
【
図2】
図2は、この開示のいくつかの例におけるバーチャルボリュームと、そのスナップショットを図示するブロック図である。
【
図3】
図3は、この開示のいくつかの例におけるバーチャルボリュームと、そのスナップショットを図示するブロック図である。
【
図4】
図4は、この開示のいくつかの例におけるバーチャルボリュームと、そのスナップショットを図示するブロック図である。
【
図5】
図5は、この開示のいくつかの例におけるスナップショットコピー・オン・ライトのためのデータ移動を低減するための、
図1のストレージシステムの方法のフローチャートである。
【
図6】
図6は、この開示のいくつかの例における重複排除オペレーションを用いることにより、スナップショットコピー・オン・ライトを実行するための、
図1のストレージシステムの方法のフローチャートである。
【発明を実施するための形態】
【0007】
異なる図面に対する同じ参照符号の使用は、類似または同一のエレメントを示す。
図1は、この開示のいくつかの例におけるデータストレージシステム100のブロック図である。システム100は、別のシステムのアプリケーション104により、アクセス可能(例えば、読み取りおよび書き込み)である仮想ボリューム102を公開(expose)する。システム100は、仮想ボリューム102への書き込み動作を受け取ると、仮想ボリューム102のマッピングを調べ、書き込みをディスク106上の正しい物理的位置にルーティングする。システム100が、仮想ボリューム102への読み取り動作を受け取ると、仮想ボリュームのマッピングを調べ、ディスク106上の正しい物理ロケーションからデータを読み取る。
【0008】
システム100は、仮想ボリューム102を、スナップショットチャンクに論理的に分割し、それらをディスクロケーションにマッピングするスナップショットレイヤ108を含む。スナップショットチャンクは、仮想ボリューム102が変更されるとき、スナップショットレイヤ108が、コピー・オン・ライト動作を実行する論理ユニットである。例えば、スナップショットチャンクは、256KB、1MB、2MBまたは4MBであり得る。スナップショットチャンクを追跡するために、スナップショットレイヤ108は、キーとバリューの集合を維持し、キーが、スナップショットチャンクを特定し(例えば、スナップショットチャンクインデックス)、対応するバリューがスナップショットチャンクのディスクロケーションを特定する(例えば、ディスク上の論理ブロックアドレス)。キーとバリューのマッピングは、Bツリー(例えば、B+ツリー)としてインプリメントすることができる。後述するように、スナップショットレイヤ108の下位に重複排除レイヤ112があるとき、バリューは実際には、物理ディスク106のような物理ストレージ上の重複排除チャンクへのスナップショットチャンクの、他のマッピングに対するキーである抽象識別子(abstract identifier)である。
【0009】
スナップショットレイヤ108は、ある時点で仮想ボリューム102のデータを取り込む、仮想ボリュームのスナップショット110を作る。スナップショット110は、多くの方法でインプリメントすることができる。スナップショット110は、バーチャルボリューム102のためのマッピングが、書き込み可能(ライブ)であることを維持しながら、バーチャルボリューム102のマッピング(Bツリー)のリードオンリクローン(read-only clone)であり得る。クローニング(cloning)は、バーチャルボリューム102に関するすべてのマッピングをコピーすることは、必要ないであろう。Bツリーのルート(root)のみがコピーされ、クローニングされたB-ツリーのルートを形成する。リファレンスカウントは、Bツリー毎に追跡され、Bツリーは、1より大きい参照カウントを有する任意の共有ブロックをシャドウイングすることにより変更される。クローニングとシャドウイングに関する詳細については、Rode, Ohad, "B-tree, Shadowing and Clones," ACM Transactions on Storage (TOS), vol. 3, issue 4, February 2008を参照されたい。あるいは、スナップショット110は、バーチャルボリューム102が書き込み可能(ライブ)であることを維持しながらバーチャルボリューム102のマッピング(Bツリー)のリードオンリコピーであり得る。どちらの方法でも、スナップショット110には、最初に仮想ボリューム102のスナップショットチャンクと、基礎となるディスクロケーションを共有するスナップショットチャンクがあるため、ディスク106の仮想ボリューム102の潜在的データは、コピーされない。
【0010】
システム100は、スナップショットレイヤ108の下位に、重複排除データベース(DB)114を有する重複排除レイヤ112を含む。重複レイヤ112は、バーチャルボリューム102の各スナップショットチャンクを、重複排除チャンクに論理的に分割し、重複排除チャンクを、ディスク106上のディスクチャンクにマッピングする。重複排除チャンクは、重複排除レイヤ112が、重複排除のためのデータを比較する論理的単位である。例えば、重複排除チャンクは、4KB、8KB、または16KBであり得る。重複排除レイヤ112は、異なる重複排除チャンクに書き込まれる同一データパターンを検出し、それらのディスク106上の同じディスクチャンクにマッピングする。
【0011】
重複排除チャンク内のデータパターンが、固有か否かを判断するために、重複排除レイヤ112は、そのデータパターンに対するフィンガプリントを生成し、重複排除DB114に記憶された、既知データパターンに関する既存のフィンガプリントと比較する。フィンガプリントは、データパターンのハッシュ関数値であり得る。フィンガプリントが、既存のフィンガプリントと一致すると、重複排除レイヤ112は、重複排除チャンクを、ディスク106内の既存のディスクチャンクにマッピングし、重複排除DB114内の、対応するデータパターンに関する参照カウントを、インクリメントする。フィンガプリントがいかなる既存のフィンガプリントにも一致しないとき、重複排除レイヤ112は、ディスク106に新しいディスクチャンクを割り当て、新しいデータパターンをディスク106内の新しいディスクチャンクに書き込み、重複排除チャンクをディスク106内の新しいディスクチャンクにマッピングする。重複排除レイヤ112は、また、1の参照カウントを有する重複排除DB114に新しいフィンガプリントを追加し、バーチャルボリューム102に書き込まれている、重複排除DB114内の、任意の既知のデータパターンの、参照カウントをデクリメントする。
【0012】
図2は、この開示のいくつかの例におけるバーチャルボリューム102と、バーチャルボリューム102のスナップショット110を図示するブロック図である。上述したように、スナップショットレイヤ108は、バーチャルボリューム102を、スナップショットチャンクに分割する。例示目的のために、バーチャルボリューム102は、スナップショットチャンク202-1、202-2、202-3に分割される。上述したように、重複排除レイヤ112は、各スナップショットチャンクを、重複排除チャンクに分割し、各重複排除チャンクをディスク106上のディスクチャンクに、マッピングする。例示目的のために、スナップショットチャンク202-2は、ディスク106上の重複排除パターンX、Y、ZおよびWに、それぞれマッピングされた重複排除チャンク1、2、3、4に分割される。上述したように、スナップショットレイヤ108は、バーチャルボリューム102のいかなる潜在的データもディスク106にコピーすることなくバーチャルボリューム102のスナップショット110を作成する。例えば、スナップショットレイヤ108は、バーチャルボリューム102のためのマッピングのリードオンリコピーを作る。例示目的のために、スナップショット110は、スナップショットチャンク204-1、204-2、204-3に分割され、これらは、バーチャルボリューム102のスナップショットチャンク202-1、202-2、202-3に対応する。例示目的のために、スナップショットチャンク204-2は、ディスク106上のデータパターンX、Y、Zを有するディスクチャンクにそれぞれマッピングされた重複排除チャンク2’、3’、4’に分割される。
【0013】
図1に戻ると、アプリケーション104が、バーチャルボリューム102のスナップショットチャンクの一部を再書き込みしたいとき、スナップショットレイヤ108は、ディスク106上の潜在的な物理ロケーションが、バーチャルボリューム102のスナップショットチャンクと、スナップショット110のスナップショットチャンクとの間で共有されるかどうかを判断する。例えば、スナップショットレイヤ108は、その再書き込みが、スナップショット110が作られてから、スナップショットチャンクに対する最初の書き込みか否かを判断する。そうであるなら、スナップショットレイヤ108は、スナップショットコピー・オン・ライト(COW)動作を実行する。
【0014】
典型的なCOW動作において、一般的なスナップショットレイヤは、バーチャルボリューム102のスナップショットチャンクのための新しい物理ロケーションをディスク106にアロケートし、バーチャルボリューム102のスナップショットチャンクに関する現在の(古い)物理ロケーションから、現在の(古い)データを読み出し、古いデータを新しいデータで更新し、更新されたデータをディスク106内の新しい物理ロケーションに書き込み、バーチャルボリューム102のマッピングを更新する。これは、スナップショットチャンク全体のデータを読み取り、更新し、次に、たとえスナップショットチャンクの小さな部分のみが書き換えられたとしても、書き換えられる。この開示の例において、スナップショットレイヤ108は、重複排除レイヤ112を採用してスナップショットCOW動作を実行する。
【0015】
図3を参照すると、アプリケーション104(
図1)は、部分的にバーチャルボリューム102のスナップショットチャンク202-2を再書き込みする。例えば、アプリケーション104は、スナップショットチャンク202-2の重複排除チャンク1の中でデータパターンXの上に、新しいデータパターンUを書く。スナップショットチャンク202-2全体に対して、スナップショットCOWを実行する代わりに、スナップショットレイヤ108は、重複排除レイヤ112を用いて、再書き込みされる重複排除チャンク1のみにスナップショットCOW動作を実行する。
【0016】
重複排除レイヤ112は、データパターンUが固有か否かを判断する。重複排除レイヤ112が固有であるかどうかを判断するために、重複排除レイヤ112は、データパターンUに関するフィンガプリントを生成し、それを重複排除DB114内の既知のデータパターンに関する既存のフィンガプリントと比較する。
図4に示すように、フィンガプリントがいかなる既存のフィンガプリントにも一致しないとき、重複排除レイヤ112は、ディスク106に新しいディスクチャンクをアロケートし、データパターンUをディスク106内の新しいディスクチャンクに書き込み、バーチャルボリューム102内のスナップショットチャンク202-2の重複排除チャンク1を、データパターンUを有する新しいディスクチャンクにマッピングする。スナップショット110内のスナップショット204-2の重複排除チャンクは、依然としてデータパターンXを有する古いディスクチャンクを指していることに留意する必要がある。重複排除レイヤ112はまた、新しいフィンガプリントを、1の参照カウントを有する重複排除DB114に追加し、上書きされるデータパターンXの参照カウントをデクリメントする。フィンガプリントが既存のフィンガプリントと一致すると、重複排除レイヤ112は、バーチャルボリューム102内のスナップショットチャンク202-2の重複排除チャンク1を、ディスク106内の既存のディスクチャンクにマッピングし、重複DB114内の、対応するデータパターンの参照カウントを、インクリメントする。
【0017】
上述したように、スナップショットCOW動作は、維持される潜在的重複チャンクに対して重複参照インクリメントになり、これらのチャンクに対する何らかのデータの読み書きを回避する。スナップショットCOWが軽量になるので、4MBのような、より大きなサイズのスナップショット粒度を持つことが可能である。
【0018】
図5は、この開示のいくつかの例におけるスナップショットCOWのデータ移動を低減するためのストレージシステム100の方法500のフローチャートである。方法500は、コンピュータシステム内のプロセッサにより実行されるコンピュータ可読媒体に符号化された命令としてインプリメントすることができる。方法500は、1つまたは複数のブロックにより図示される、1つまたは複数の動作、機能または行為を含むことができる。ブロックは、シーケンシャルな順番に図示されるけれども、これらのブロックは、また並列に実行することもでき、および/またはここに記載された順番とは異なる順番で実行することができる。また、種々のブロックは、所望のインプリメンテーションに基づいて、より少ないブロックに結合することができ、さらなるブロックに分割することもでき、および/または削除することができる。方法500は、ブロック502において開始することができる。
【0019】
ブロック502において、ストレージシステム100は、スナップショットチャンクを含むライブボリューム(live volume)(例えば、
図1の仮想ボリューム)を提供する。各スナップショットチャンクは、複数の重複排除チャンクを含み、各重複排除チャンクは、ディスク106上のディスクチャンクにマッピングされる(例えば、
図2においてスナップショットチャンク202-2はデータパターンX、Y、ZおよびWを有するディスクチャンクにマッピングされる)。ブロック502の次にブロック504に進む。
【0020】
ブロック504において、ストレージシステムシステム100(特にスナップショットレイヤ108)は、ライブボリューム(例えば、
図2のスナップショット110)のコピーであるスナップショットを作成する。ブロック504の次にブロック506に進む。ブロック506において、スナップショットを有するディスクチャンクのセットを共有する、ライブボリュームのスナップショットチャンクに、各ホストが書き込む場合、ストレージシステム100(より具体的には、スナップショットレイヤ108と、重複排除レイヤ112)は、重複排動作を用いることにより、スナップショットコピー・オン・ライトを実行する。
【0021】
図6は、この開示のいくつかの例におけるブロック506(
図5)を実行するためのストレージシステム100の方法600のフローチャートである。方法600は、ブロック602で開始することができる。ブロック602において、ホストの書き込みに応答して、ストレージシステム100(より具体的には重複排除レイヤ112)は、ライブボリュームのスナップショットチャンクの1つまたは複数の重複排除チャンク(例えば、
図3のバーチャルボリューム102内のスナップショットチャンク202-2の重複排除チャンク1)が、ホストの書き込みにより変化したかを判断する。ブロック602の次にブロック604に進む。
【0022】
ブロック604において、ストレージシステム100(より具体的にはレイヤ112)は、各変化した重複排除チャンクを、異なるディスクチャンク、または新しいディスクチャンクにマッピングする。変化した重複排除チャンクは、そのデータパターンが重複排除DB114内の既存のパターンに一致する場合、異なるディスクチャンクにマッピングされる。変化した重複排除チャンクは、そのデータパターンが新しく、それゆえ重複排除DB114内のいずれの既存パターンにも一致しない場合、新しいディスクチャンクにマッピングされる。ブロック604の次にブロック606に進む。
【0023】
ブロック606において、ストレージシステム100(より具体的には、重複排除レイヤ112は、ホストライト(host write)により書き込まれる、各データパターンの参照カウントをインクリメントする。ブロック606の次にブロック608に進む。ブロック608において、ストレージシステム100(より具体的には、重複排除レイヤ112)は、ホストライトにより上書きされる、各データパターンの参照カウントをデクリメントする。開示した実施形態の特徴の種々の他の適応および組み合わせは、この発明の範囲内である。様々な実施形態が以下の請求項により包含される。