(57)【要約】スナップショットコピー・オン・ライトのためのデータ移動を低減するストレージシステムのための方法。この方法は、スナップショットチャンクを有するライブボリュームを提供することを含む。各スナップショットチャンクは、多数の重複排除チャンクを含む。各重複排除チャンクは、ディスク上のディスクチャンクにマッピングされる。この方法は、ライブボリュームのスナップショットを作成し、スナップショットを有するディスクチャンクのセットを共有するライブボリュームの、スナップショットチャンクへの各ホスト書き込みに関して、重複排除動作を用いることにより、スナップショットコピー・オン・ライト動作を実行することを含む。【選択図】図４
2020536342.tif 000002
【特許請求の範囲】
【請求項１】
スナップショットコピー・オン・ライトのためのデータ移動を低減するためのストレージシステムの方法において、
スナップショットチャンクを備えたライブボリュームを提供するステップであって、各スナップショットチャンクは、多数の重複排除チャンクを備え、各重複排除チャンクは、ディスク上のディスクチャンクにマッピングされる、ステップと、
前記ディスク内の前記ライブボリュームの潜在的なデータのいずれをもコピーすることなく、前記ライブボリュームのスナップショットを作成するステップと、
スナップショットを有するディスクチャンクのセットを共有するライブボリュームのスナップショットチャンクへの各ホストライトに対して、重複排除動作を用いてスナップショットコピー・オン・ライトを実行するステップと、
を備えた、方法。
【請求項２】
前記重複排除動作は、
前記ホストライトにより変更された前記ライブボリュームの前記スナップショットチャンクの重複排除チャンクを決定するステップと、
前記ライブボリュームの前記スナップショットチャンクの前記変更された重複排除チャンクを、異なるディスクチャンク、または新しいディスクチャンクにマッピングするステップと、を備えた、請求項１に記載の方法。
【請求項３】
前記重複排除動作は、前記ホストライトにより書き込まれるデータパターンの参照カウントをインクリメントするステップをさらに備えた、請求項２に記載の方法。
【請求項４】
前記重複排除動作は、前記ホストライトにより上書きされたデータパターンの参照カウントをデクリメントするステップをさらに備えた請求項２に記載の方法。
【請求項５】
ライブボリュームの潜在的データのいずれをもディスクにコピーすることなく、前記ライブボリュームのスナップショットを作成し、
スナップショットを有するディスクロケーションのセットを共有する前記ライブボリュームのスナップショットチャンクへの各ホストライトに関して、スナップショットコピー・オン・ライト動作を実行する、ように構成されたスナップショットレイヤと、
前記スナップショットレイヤの下位の重複排除レイヤであって、
各スナップショットチャンクを、前記ディスク上のディスクチャンクにマッピングされた重複排除チャンクに分割し、
各スナップショットコピー・オン・ライト動作に関して、重複排除動作を実行する、ように構成された重複排除レイヤと、
を備えた、ストレージシステム。
【請求項６】
前記重複排除動作は、
前記ホストライトにより変更された前記スナップショットチャンクの重複排除チャンクを決定し、
前記スナップショットチャンクの前記変更された重複排除チャンクを、異なるディスクチャンクまたは新しいディスクチャンクへマッピングする、
ことを備えた、請求項５に記載のシステム。
【請求項７】
前記重複排除動作は、さらに前記ホストライトにより書き込まれたデータパターンの参照カウントをインクリメントすることをさらに備えた、請求項６に記載のシステム。
【請求項８】
前記重複排除動作は、前記ホストライトにより上書きされたデータパターンの参照カウントをデクリメントすることをさらに備えた、請求項７に記載のシステム。
【請求項９】
スナップショットコピー・オン・ライト動作のためのデータ移動を低減するように、ストレージシステムをインプリメントするように、プロセッサにより実行可能な命令で符号化された非一時的コンピュータ可読記憶媒体において、前記命令は、
スナップショットチャンクを備えたライブボリュームを提供することであって、各スナップショットチャンクは、多数の重複排除チャンクを備え、各重複排除チャンクは、ディスク上のディスクチャンクにマッピングされる、ライブボリュームを提供することと、
ライブボリュームの潜在的データのいずれをも、前記ディスクにコピーすることなく、前記ライブボリュームのスナップショットを作成することと、
スナップショットを有するディスクチャンクのセットを共有する前記ライブボリュームのスナップショットチャンクへの各ホストライトに関して、重複排除動作を用いてスナップショットコピー・オン・ライト動作を実行することと、
を備えた、非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記重複排除動作は、
前記ホストライトにより変更された前記スナップショットチャンクの重複排除チャンクを決定することと、
前記スナップショットチャンクの前記変更された重複排除チャンクを、異なるディスクチャンクまたは新しいディスクチャンクにマッピングすることと、
を備えた、請求項９に記載の記憶媒体。
【請求項１１】
前記重複排除動作は、前記ホストライトにより書き込まれるデータパターンの参照カウントをインクリメントすることをさらに備えた、請求項１０に記載の記憶媒体。
【請求項１２】
前記重複排除動作は、前記ホストライトにより上書きされるデータパターンの参照カウントをデクリメントすることをさらに備えた、請求項１１に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スナップショットおよびコピーオンライトに関し、より詳細には、重複排除レイヤをスナップショットレイヤの下位に配置することにより、スナップショットコピー・オン・ライトのデータ移動を低減することに関する。
【背景技術】
【０００２】
ほとんどのストレージシステムのスナップショットインプリメンテーションは、ボリュームと、そのスナップショットとの間のデータチャンク（chunks of data）を共有する。異なるストレージシステムは、異なる粒度（granularity）で、この共有を維持する。例えば、２５６キロバイト（ＫＢ）または１メガバイト（ＭＢ）チャンク粒度は、ボリュームと、そのスナップショットとの間で共有される。
【０００３】
共有されたチャンクが、入力するホストライト（例えば、８ＫＢライト）により上書きされると、ほとんどのストレージシステムは、チャンク粒度（２５６ＫＢまたは１ＭＢ）バッファを別のロケーションにコピーし、入力書き込みを、このバッファに適用するするコピーオンライト（ＣＯＷ）動作を実行する。この動作は、チャンク粒度データを読取り、別のロケーションに書き込むことを含み、入出力（Ｉ／Ｏ）インテンシブである。
【０００４】
重複排除システムは、バッファのフィンガープリント（例えば、ハッシュ）を計算することにより、反復されるバッファパターンを識別する。正確なパターンの反復バッファが書き込まれるとき、重複排除は、共有バッファの参照カウントをインクリメントし、データポインタが、共有データロケーションを指すようにセットアップする。
【発明の概要】
【０００５】
この開示の、１つまたは複数の例において、ストレージシステムは、スナップショットトラッッキングに対して、高い粒度（例えば、２５６ＫＢ／１ＭＢ／２ＭＢ／４ＭＢ）を使用し、重複排除に対して、低い粒度（例えば、８ＫＢ／１６Ｋ）を使用する。システムは、スナップショットコピー・オン・ライト（ＣＯＷ）データ移動を回避するために、スナップショットレイヤの下位に重複排除レイヤを有する。スナップショットＣＯＷオペレーションは、そのかわり、共有バッファに対応する重複チャンクのすべてについて、重複排除参照カウントをインクリメントするであろう。従って、スナップショットＣＯＷ動作は、基本的には、保持される潜在的重複排除チャンクの、重複排除参照カウントの増分になり、それらのチャンクに対する任意のデータの読み取りおよび書き込み動作を回避する。スナップショットＣＯＷ動作は非常に軽量になるため、４ＭＢなどの、より大きなサイズでスナップショットの粒度を設定することが可能である。
【図面の簡単な説明】
【０００６】
【図１】図１は、この開示のいくつかの例におけるストレージシステムである。
【図２】図２は、この開示のいくつかの例におけるバーチャルボリュームと、そのスナップショットを図示するブロック図である。
【図３】図３は、この開示のいくつかの例におけるバーチャルボリュームと、そのスナップショットを図示するブロック図である。
【図４】図４は、この開示のいくつかの例におけるバーチャルボリュームと、そのスナップショットを図示するブロック図である。
【図５】図５は、この開示のいくつかの例におけるスナップショットコピー・オン・ライトのためのデータ移動を低減するための、図１のストレージシステムの方法のフローチャートである。
【図６】図６は、この開示のいくつかの例における重複排除オペレーションを用いることにより、スナップショットコピー・オン・ライトを実行するための、図１のストレージシステムの方法のフローチャートである。
【発明を実施するための形態】
【０００７】
異なる図面に対する同じ参照符号の使用は、類似または同一のエレメントを示す。図１は、この開示のいくつかの例におけるデータストレージシステム１００のブロック図である。システム１００は、別のシステムのアプリケーション１０４により、アクセス可能（例えば、読み取りおよび書き込み）である仮想ボリューム１０２を公開（expose）する。システム１００は、仮想ボリューム１０２への書き込み動作を受け取ると、仮想ボリューム１０２のマッピングを調べ、書き込みをディスク１０６上の正しい物理的位置にルーティングする。システム１００が、仮想ボリューム１０２への読み取り動作を受け取ると、仮想ボリュームのマッピングを調べ、ディスク１０６上の正しい物理ロケーションからデータを読み取る。
【０００８】
システム１００は、仮想ボリューム１０２を、スナップショットチャンクに論理的に分割し、それらをディスクロケーションにマッピングするスナップショットレイヤ１０８を含む。スナップショットチャンクは、仮想ボリューム１０２が変更されるとき、スナップショットレイヤ１０８が、コピー・オン・ライト動作を実行する論理ユニットである。例えば、スナップショットチャンクは、２５６ＫＢ、１ＭＢ、２ＭＢまたは４ＭＢであり得る。スナップショットチャンクを追跡するために、スナップショットレイヤ１０８は、キーとバリューの集合を維持し、キーが、スナップショットチャンクを特定し（例えば、スナップショットチャンクインデックス）、対応するバリューがスナップショットチャンクのディスクロケーションを特定する（例えば、ディスク上の論理ブロックアドレス）。キーとバリューのマッピングは、Ｂツリー（例えば、Ｂ＋ツリー）としてインプリメントすることができる。後述するように、スナップショットレイヤ１０８の下位に重複排除レイヤ１１２があるとき、バリューは実際には、物理ディスク１０６のような物理ストレージ上の重複排除チャンクへのスナップショットチャンクの、他のマッピングに対するキーである抽象識別子（abstract identifier）である。
【０００９】
スナップショットレイヤ１０８は、ある時点で仮想ボリューム１０２のデータを取り込む、仮想ボリュームのスナップショット１１０を作る。スナップショット１１０は、多くの方法でインプリメントすることができる。スナップショット１１０は、バーチャルボリューム１０２のためのマッピングが、書き込み可能（ライブ）であることを維持しながら、バーチャルボリューム１０２のマッピング（Ｂツリー）のリードオンリクローン（read-only clone）であり得る。クローニング（cloning）は、バーチャルボリューム１０２に関するすべてのマッピングをコピーすることは、必要ないであろう。Ｂツリーのルート（root）のみがコピーされ、クローニングされたＢ−ツリーのルートを形成する。リファレンスカウントは、Ｂツリー毎に追跡され、Ｂツリーは、１より大きい参照カウントを有する任意の共有ブロックをシャドウイングすることにより変更される。クローニングとシャドウイングに関する詳細については、Rode, Ohad, "B-tree, Shadowing and Clones," ACM Transactions on Storage (TOS), vol. 3, issue 4, February 2008を参照されたい。あるいは、スナップショット１１０は、バーチャルボリューム１０２が書き込み可能（ライブ）であることを維持しながらバーチャルボリューム１０２のマッピング（Ｂツリー）のリードオンリコピーであり得る。どちらの方法でも、スナップショット１１０には、最初に仮想ボリューム１０２のスナップショットチャンクと、基礎となるディスクロケーションを共有するスナップショットチャンクがあるため、ディスク１０６の仮想ボリューム１０２の潜在的データは、コピーされない。
【００１０】
システム１００は、スナップショットレイヤ１０８の下位に、重複排除データベース（ＤＢ）１１４を有する重複排除レイヤ１１２を含む。重複レイヤ１１２は、バーチャルボリューム１０２の各スナップショットチャンクを、重複排除チャンクに論理的に分割し、重複排除チャンクを、ディスク１０６上のディスクチャンクにマッピングする。重複排除チャンクは、重複排除レイヤ１１２が、重複排除のためのデータを比較する論理的単位である。例えば、重複排除チャンクは、４ＫＢ、８ＫＢ、または１６ＫＢであり得る。重複排除レイヤ１１２は、異なる重複排除チャンクに書き込まれる同一データパターンを検出し、それらのディスク１０６上の同じディスクチャンクにマッピングする。
【００１１】
重複排除チャンク内のデータパターンが、固有か否かを判断するために、重複排除レイヤ１１２は、そのデータパターンに対するフィンガプリントを生成し、重複排除ＤＢ１１４に記憶された、既知データパターンに関する既存のフィンガプリントと比較する。フィンガプリントは、データパターンのハッシュ関数値であり得る。フィンガプリントが、既存のフィンガプリントと一致すると、重複排除レイヤ１１２は、重複排除チャンクを、ディスク１０６内の既存のディスクチャンクにマッピングし、重複排除ＤＢ１１４内の、対応するデータパターンに関する参照カウントを、インクリメントする。フィンガプリントがいかなる既存のフィンガプリントにも一致しないとき、重複排除レイヤ１１２は、ディスク１０６に新しいディスクチャンクを割り当て、新しいデータパターンをディスク１０６内の新しいディスクチャンクに書き込み、重複排除チャンクをディスク１０６内の新しいディスクチャンクにマッピングする。重複排除レイヤ１１２は、また、１の参照カウントを有する重複排除ＤＢ１１４に新しいフィンガプリントを追加し、バーチャルボリューム１０２に書き込まれている、重複排除ＤＢ１１４内の、任意の既知のデータパターンの、参照カウントをデクリメントする。
【００１２】
図２は、この開示のいくつかの例におけるバーチャルボリューム１０２と、バーチャルボリューム１０２のスナップショット１１０を図示するブロック図である。上述したように、スナップショットレイヤ１０８は、バーチャルボリューム１０２を、スナップショットチャンクに分割する。例示目的のために、バーチャルボリューム１０２は、スナップショットチャンク２０２−１、２０２−２、２０２−３に分割される。上述したように、重複排除レイヤ１１２は、各スナップショットチャンクを、重複排除チャンクに分割し、各重複排除チャンクをディスク１０６上のディスクチャンクに、マッピングする。例示目的のために、スナップショットチャンク２０２−２は、ディスク１０６上の重複排除パターンＸ、Ｙ、ＺおよびＷに、それぞれマッピングされた重複排除チャンク１、２、３、４に分割される。上述したように、スナップショットレイヤ１０８は、バーチャルボリューム１０２のいかなる潜在的データもディスク１０６にコピーすることなくバーチャルボリューム１０２のスナップショット１１０を作成する。例えば、スナップショットレイヤ１０８は、バーチャルボリューム１０２のためのマッピングのリードオンリコピーを作る。例示目的のために、スナップショット１１０は、スナップショットチャンク２０４−１、２０４−２、２０４−３に分割され、これらは、バーチャルボリューム１０２のスナップショットチャンク２０２−１、２０２−２、２０２−３に対応する。例示目的のために、スナップショットチャンク２０４−２は、ディスク１０６上のデータパターンＸ、Ｙ、Zを有するディスクチャンクにそれぞれマッピングされた重複排除チャンク２’、３’、４’に分割される。
【００１３】
図１に戻ると、アプリケーション１０４が、バーチャルボリューム１０２のスナップショットチャンクの一部を再書き込みしたいとき、スナップショットレイヤ１０８は、ディスク１０６上の潜在的な物理ロケーションが、バーチャルボリューム１０２のスナップショットチャンクと、スナップショット１１０のスナップショットチャンクとの間で共有されるかどうかを判断する。例えば、スナップショットレイヤ１０８は、その再書き込みが、スナップショット１１０が作られてから、スナップショットチャンクに対する最初の書き込みか否かを判断する。そうであるなら、スナップショットレイヤ１０８は、スナップショットコピー・オン・ライト（ＣＯＷ）動作を実行する。
【００１４】
典型的なＣＯＷ動作において、一般的なスナップショットレイヤは、バーチャルボリューム１０２のスナップショットチャンクのための新しい物理ロケーションをディスク１０６にアロケートし、バーチャルボリューム１０２のスナップショットチャンクに関する現在の（古い）物理ロケーションから、現在の（古い）データを読み出し、古いデータを新しいデータで更新し、更新されたデータをディスク１０６内の新しい物理ロケーションに書き込み、バーチャルボリューム１０２のマッピングを更新する。これは、スナップショットチャンク全体のデータを読み取り、更新し、次に、たとえスナップショットチャンクの小さな部分のみが書き換えられたとしても、書き換えられる。この開示の例において、スナップショットレイヤ１０８は、重複排除レイヤ１１２を採用してスナップショットＣＯＷ動作を実行する。
【００１５】
図３を参照すると、アプリケーション１０４（図１）は、部分的にバーチャルボリューム１０２のスナップショットチャンク２０２−２を再書き込みする。例えば、アプリケーション１０４は、スナップショットチャンク２０２−２の重複排除チャンク1の中でデータパターンＸの上に、新しいデータパターンＵを書く。スナップショットチャンク２０２−２全体に対して、スナップショットＣＯＷを実行する代わりに、スナップショットレイヤ１０８は、重複排除レイヤ１１２を用いて、再書き込みされる重複排除チャンク１のみにスナップショットＣＯＷ動作を実行する。
【００１６】
重複排除レイヤ１１２は、データパターンＵが固有か否かを判断する。重複排除レイヤ１１２が固有であるかどうかを判断するために、重複排除レイヤ１１２は、データパターンＵに関するフィンガプリントを生成し、それを重複排除ＤＢ１１４内の既知のデータパターンに関する既存のフィンガプリントと比較する。図４に示すように、フィンガプリントがいかなる既存のフィンガプリントにも一致しないとき、重複排除レイヤ１１２は、ディスク１０６に新しいディスクチャンクをアロケートし、データパターンＵをディスク１０６内の新しいディスクチャンクに書き込み、バーチャルボリューム１０２内のスナップショットチャンク２０２−２の重複排除チャンク１を、データパターンＵを有する新しいディスクチャンクにマッピングする。スナップショット１１０内のスナップショット２０４−２の重複排除チャンクは、依然としてデータパターンＸを有する古いディスクチャンクを指していることに留意する必要がある。重複排除レイヤ１１２はまた、新しいフィンガプリントを、１の参照カウントを有する重複排除ＤＢ１１４に追加し、上書きされるデータパターンＸの参照カウントをデクリメントする。フィンガプリントが既存のフィンガプリントと一致すると、重複排除レイヤ１１２は、バーチャルボリューム１０２内のスナップショットチャンク２０２−２の重複排除チャンク１を、ディスク１０６内の既存のディスクチャンクにマッピングし、重複ＤＢ１１４内の、対応するデータパターンの参照カウントを、インクリメントする。
【００１７】
上述したように、スナップショットＣＯＷ動作は、維持される潜在的重複チャンクに対して重複参照インクリメントになり、これらのチャンクに対する何らかのデータの読み書きを回避する。スナップショットＣＯＷが軽量になるので、４ＭＢのような、より大きなサイズのスナップショット粒度を持つことが可能である。
【００１８】
図５は、この開示のいくつかの例におけるスナップショットＣＯＷのデータ移動を低減するためのストレージシステム１００の方法５００のフローチャートである。方法５００は、コンピュータシステム内のプロセッサにより実行されるコンピュータ可読媒体に符号化された命令としてインプリメントすることができる。方法５００は、１つまたは複数のブロックにより図示される、１つまたは複数の動作、機能または行為を含むことができる。ブロックは、シーケンシャルな順番に図示されるけれども、これらのブロックは、また並列に実行することもでき、および／またはここに記載された順番とは異なる順番で実行することができる。また、種々のブロックは、所望のインプリメンテーションに基づいて、より少ないブロックに結合することができ、さらなるブロックに分割することもでき、および／または削除することができる。方法５００は、ブロック５０２において開始することができる。
【００１９】
ブロック５０２において、ストレージシステム１００は、スナップショットチャンクを含むライブボリューム（live volume）（例えば、図１の仮想ボリューム）を提供する。各スナップショットチャンクは、複数の重複排除チャンクを含み、各重複排除チャンクは、ディスク１０６上のディスクチャンクにマッピングされる（例えば、図２においてスナップショットチャンク２０２−２はデータパターンＸ、Ｙ、ＺおよびＷを有するディスクチャンクにマッピングされる）。ブロック５０２の次にブロック５０４に進む。
【００２０】
ブロック５０４において、ストレージシステムシステム１００（特にスナップショットレイヤ１０８）は、ライブボリューム（例えば、図２のスナップショット１１０）のコピーであるスナップショットを作成する。ブロック５０４の次にブロック５０６に進む。ブロック５０６において、スナップショットを有するディスクチャンクのセットを共有する、ライブボリュームのスナップショットチャンクに、各ホストが書き込む場合、ストレージシステム１００（より具体的には、スナップショットレイヤ１０８と、重複排除レイヤ１１２）は、重複排動作を用いることにより、スナップショットコピー・オン・ライトを実行する。
【００２１】
図６は、この開示のいくつかの例におけるブロック５０６（図５）を実行するためのストレージシステム１００の方法６００のフローチャートである。方法６００は、ブロック６０２で開始することができる。ブロック６０２において、ホストの書き込みに応答して、ストレージシステム１００（より具体的には重複排除レイヤ１１２）は、ライブボリュームのスナップショットチャンクの１つまたは複数の重複排除チャンク（例えば、図３のバーチャルボリューム１０２内のスナップショットチャンク２０２−２の重複排除チャンク１）が、ホストの書き込みにより変化したかを判断する。ブロック６０２の次にブロック６０４に進む。
【００２２】
ブロック６０４において、ストレージシステム１００（より具体的にはレイヤ１１２）は、各変化した重複排除チャンクを、異なるディスクチャンク、または新しいディスクチャンクにマッピングする。変化した重複排除チャンクは、そのデータパターンが重複排除ＤＢ１１４内の既存のパターンに一致する場合、異なるディスクチャンクにマッピングされる。変化した重複排除チャンクは、そのデータパターンが新しく、それゆえ重複排除ＤＢ１１４内のいずれの既存パターンにも一致しない場合、新しいディスクチャンクにマッピングされる。ブロック６０４の次にブロック６０６に進む。
【００２３】
ブロック６０６において、ストレージシステム１００（より具体的には、重複排除レイヤ１１２は、ホストライト（host write）により書き込まれる、各データパターンの参照カウントをインクリメントする。ブロック６０６の次にブロック６０８に進む。ブロック６０８において、ストレージシステム１００（より具体的には、重複排除レイヤ１１２）は、ホストライトにより上書きされる、各データパターンの参照カウントをデクリメントする。開示した実施形態の特徴の種々の他の適応および組み合わせは、この発明の範囲内である。様々な実施形態が以下の請求項により包含される。
【図１】
2020536342.tif 000003
【図２】
2020536342.tif 000004
【図３】
2020536342.tif 000005
【図４】
2020536342.tif 000006
【図５】
2020536342.tif 000007
【図６】
2020536342.tif 000008
【国際調査報告】
2020536342.tif 000009