(57)【要約】【課題】  プロセッサ・グリッド内の分散データ重複排除のための方法を提供すること。【解決手段】  プロセッサ・グリッド内の分散データ重複排除についての実施形態。入力データをプロセッサ（第１のプロセッサ）上で受け取る。入力データは、複数の類似性ユニットに分割される。類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及び所有プロセッサ（第２のプロセッサ）が計算される。類似性ユニットの代表値及び対応するダイジェスト値が所有プロセッサへ送られる。所有プロセッサを用いて、重複排除メタデータ・スライス内で代表値について検索し、計算された同一データセクションの仕様及び所有プロセッサ（第３のプロセッサ）を第１のプロセッサへ送る。第１のプロセッサを用いて、計算された同一データセクションの名目情報を、計算された同一データセクションによって参照されたデータの所有プロセッサ（第３のプロセッサ）へ送る。【選択図】      図４
2019506667.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ・グリッド内の分散データ重複排除のための方法であって、
インジェスティング・プロセッサ上で入力データを受け取り、前記入力データを複数の類似性ユニットに分割することと、
前記類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及び所有プロセッサを計算することと、
前記類似性ユニットの代表値及び対応するダイジェスト値を前記所有プロセッサへ送ることと、
前記所有プロセッサを用いて、前記対応する重複排除メタデータ・スライス内で前記代表値について検索することと、
前記所有プロセッサを用いて、計算された同一データセクションの仕様及び所有プロセッサを前記インジェスティング・プロセッサへ送ることと、
前記インジェスティング・プロセッサを用いて、前記計算された同一データセクションの名目情報を、前記計算された同一データセクションの前記所有プロセッサへ送ることと、
前記計算された同一データセクションの前記所有プロセッサを用いて、前記インジェスティング・プロセッサに、前記同一データセクションを格納しているストレージブロックの情報を応答することと、
を含む、方法。
【請求項２】
前記類似性ユニットに対して、重複排除ブロック境界、前記対応するダイジェスト値及び前記代表値のうちの少なくとも１つを計算することをさらに含む、請求項１に記載の方法。
【請求項３】
前記対応する重複排除メタデータ・スライス及び所有プロセッサを、前記類似性ユニットの前記代表値に適用されるコンシステント・ハッシュ法を用いて計算することをさらに含む、請求項１に記載の方法。
【請求項４】
前記類似性ユニットの前記代表値及び前記対応するダイジェスト値を、同じ所有プロセッサにマッピングされた複数の類似性ユニットのいくつかに対する単一のメッセージを用いて前記所有プロセッサへ送ることをさらに含む、請求項１に記載の方法。
【請求項５】
前記所有プロセッサによって、
複数のダイジェスト値の各々であって、前記複数の類似性ユニットのそれら各々の代表値に対応するダイジェスト値をダイジェスト・キャッシュ内にロードすること、及び
前記インジェスティング・プロセッサから受け取った及び前記ダイジェスト・キャッシュ内に収容されたダイジェスト値でダイジェストマッチング手順を行って、前記同一データセクションを計算すること、
のうちの少なくとも１つを行うことをさらに含む、請求項１に記載の方法。
【請求項６】
計算された同一データセクションの複数の所有プロセッサにわたる、前記計算された同一データセクションの仕様及び所有プロセッサを送ることをさらに含む、請求項１に記載の方法。
【請求項７】
前記所有プロセッサによって、前記入力類似性ユニットの前記代表値及びダイジェスト値を前記重複排除メタデータ・スライス内に格納することをさらに含む、請求項１に記載の方法。
【請求項８】
前記インジェスティング・プロセッサのアイデンティティを前記入力類似性ユニットの前記ダイジェスト値と共に記録することをさらに含む、請求項７に記載の方法。
【請求項９】
前記インジェスティング・プロセッサによって接触された前記計算された同一データセクションの前記所有プロセッサは、複数の所有プロセッサのサブセットであり、前記方法は、前記サブセットを、前記複数の所有プロセッサのうち最高値を提供するものとして選択することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記サブセットを、
前記複数の所有プロセッサのうち、前記複数の所有プロセッサの中で最高量の計算された同一データセクションを有するものを選択すること、
前記複数の所有プロセッサのうち、所定の閾値を上回る量の計算された同一データセクションを有するものを選択すること、
前記複数の所有プロセッサのうち、前記インジェスティング・プロセッサによって生成されるその後の要求を効率的に処理して前記同一データセクションを提供することが可能なものを選択すること、
のうち少なくとも１つによって選択することをさらに含む、請求項９に記載の方法。
【請求項１１】
前記計算された同一データセクションの前記所有プロセッサは、前記同一データセクションを格納しているストレージブロックの参照カウントを増加する、請求項１に記載の方法。
【請求項１２】
前記インジェスティング・プロセッサによって、
一致しないデータをローカル・ストレージブロックに格納すること、及び
前記計算された同一データセクションの前記所有プロセッサによってその情報が提供される前記ストレージブロックに対する参照を追加すること、
のうちの少なくとも１つを行うことをさらに含む、請求項１に記載の方法。
【請求項１３】
プロセッサ・グリッド内の分散データ重複排除のためのシステムであって、
インジェスティング・プロセッサと、
前記インジェスティング・プロセッサと通信する所有プロセッサと、
前記プロセッサ・グリッド内で前記プロセッサ及び前記所有プロセッサと通信する、計算された同一データセクションの所有プロセッサと、
を含み、
前記インジェスティング・プロセッサは、
入力データを受け取り、前記入力データを複数の類似性ユニットに分割し、
前記類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及び所有プロセッサを計算し、
前記類似性ユニットの代表値及び対応するダイジェスト値を前記所有プロセッサへ送るように適合され、
前記所有プロセッサは、
前記対応する重複排除メタデータ・スライス内で前記代表値について検索し、
計算された同一データセクションの仕様及び所有プロセッサを前記インジェスティング・プロセッサへ送るように適合され、
前記計算された同一データセクションの前記所有プロセッサは、
前記インジェスティング・プロセッサによって送られた前記計算された同一データセクションの名目情報を受け取り、
前記プロセッサに、前記同一データセクションを格納しているストレージブロックの情報を応答するように適合された、
システム。
【請求項１４】
前記プロセッサは、前記類似性ユニットに対して、重複排除ブロック境界、前記対応するダイジェスト値及び前記代表値のうちの少なくとも１つを計算するように適合された、請求項１３に記載のシステム。
【請求項１５】
前記プロセッサは、前記対応する重複排除メタデータ・スライス及び所有プロセッサを計算することに従って、前記類似性ユニットの前記代表値に適用されるコンシステント・ハッシュ法を用いるように適合された、請求項１３に記載のシステム。
【請求項１６】
前記プロセッサは、前記類似性ユニットの前記代表値及び前記対応するダイジェスト値を、同じ所有プロセッサにマッピングされた複数の類似性ユニットのいくつかに対する単一のメッセージを用いて前記所有プロセッサへ送るように適合された、請求項１３に記載のシステム。
【請求項１７】
前記プロセッサは、
複数のダイジェスト値の各々であって、前記複数の類似性ユニットのそれら各々の代表値に対応するダイジェスト値をダイジェスト・キャッシュ内にロードすること、及び
前記インジェスティング・プロセッサから受け取った及び前記ダイジェスト・キャッシュ内に収容されたダイジェスト値でダイジェストマッチング手順を行って、前記同一データセクションを計算すること、
のうちの少なくとも１つを行うように適合された、請求項１３に記載のシステム。
【請求項１８】
前記プロセッサは、計算された同一データセクションの複数の所有プロセッサにわたる、前記計算された同一データセクションの仕様及び所有プロセッサを送るように適合された、請求項１３に記載のシステム。
【請求項１９】
前記プロセッサは、前記入力類似性ユニットの前記代表値及びダイジェスト値を前記重複排除メタデータ・スライス内に格納するように適合された、請求項１３に記載のシステム。
【請求項２０】
前記プロセッサは、前記インジェスティング・プロセッサのアイデンティティを前記入力類似性ユニットの前記ダイジェスト値と共に記録するように適合された、請求項１９に記載のシステム。
【請求項２１】
前記インジェスティング・プロセッサによって接触された前記計算された同一データセクションの前記所有プロセッサは、複数の所有プロセッサのサブセットであり、前記プロセッサは、前記サブセットを、前記複数の所有プロセッサのうち最高値を提供するものとして選択するように適合された、請求項１３に記載のシステム。
【請求項２２】
前記プロセッサは、前記サブセットを、
前記複数の所有プロセッサのうち、前記複数の所有プロセッサの中で最高量の計算された同一データセクションを有するものを選択すること、
前記複数の所有プロセッサのうち、所定の閾値を上回る量の計算された同一データセクションを有するものを選択すること、
前記複数の所有プロセッサのうち、前記インジェスティング・プロセッサによって生成されるその後の要求を効率的に処理して前記同一データセクションを提供することが可能なものを選択すること、
のうち少なくとも１つによって選択するように適合された、請求項２１に記載のシステム。
【請求項２３】
前記計算された同一データセクションの前記所有プロセッサは、前記同一データセクションを格納しているストレージブロックの参照カウントを増加する、請求項１３に記載のシステム。
【請求項２４】
前記インジェスティング・プロセッサは、
一致しないデータをローカル・ストレージブロックに格納し、及び／又は
前記計算された同一データセクションの前記所有プロセッサによってその情報が提供される前記ストレージブロックに対する参照を追加するように適合された、
請求項１３に記載のシステム。
【請求項２５】
プロセッサ・グリッド内の分散データ重複排除のためのコンピュータプログラムであって、前記コンピュータプログラムは、
インジェスティング・プロセッサ上で入力データを受け取り、前記入力データを複数の類似性ユニットに分割する実行部分と、
前記類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及び所有プロセッサを計算する実行部分と、
前記類似性ユニットの代表値及び対応するダイジェスト値を前記所有プロセッサへ送る実行部分と、
前記所有プロセッサを用いて、前記対応する重複排除メタデータ・スライス内で前記代表値について検索する実行部分と、
前記所有プロセッサを用いて、計算された同一データセクションの仕様及び所有プロセッサを前記インジェスティング・プロセッサへ送る実行部分と、
前記インジェスティング・プロセッサを用いて、前記計算された同一データセクションの名目情報を、前記計算された同一データセクションの前記所有プロセッサへ送る実行部分と、
前記計算された同一データセクションの前記所有プロセッサを用いて、前記インジェスティング・プロセッサに、前記同一データセクションを格納しているストレージブロックの情報を応答する実行部分と、
を含む、コンピュータプログラム。
【請求項２６】
前記類似性ユニットに対して、重複排除ブロック境界、前記対応するダイジェスト値及び前記代表値のうちの少なくとも１つを計算する実行部分をさらに含む、請求項２５に記載のコンピュータプログラム。
【請求項２７】
前記対応する重複排除メタデータ・スライス及び所有プロセッサを、前記類似性ユニットの前記代表値に適用されるコンシステント・ハッシュ法を用いて計算する実行部分をさらに含む、請求項２５に記載のコンピュータプログラム。
【請求項２８】
前記類似性ユニットの前記代表値及び前記対応するダイジェスト値を、同じ所有プロセッサにマッピングされた複数の類似性ユニットのいくつかに対する単一のメッセージを用いて前記所有プロセッサへ送る実行部分をさらに含む、請求項２５に記載のコンピュータプログラム。
【請求項２９】
前記所有プロセッサによって、
複数のダイジェスト値の各々であって、前記複数の類似性ユニットのそれら各々の代表値に対応するダイジェスト値をダイジェスト・キャッシュ内にロードすること、及び
前記インジェスティング・プロセッサから受け取った及び前記ダイジェスト・キャッシュ内に収容されたダイジェスト値でダイジェストマッチング手順を行って、前記同一データセクションを計算すること、
のうちの少なくとも１つを行う実行部分をさらに含む、請求項２５に記載のコンピュータプログラム。
【請求項３０】
計算された同一データセクションの複数の所有プロセッサにわたる、前記計算された同一データセクションの仕様及び所有プロセッサを送る実行部分をさらに含む、請求項２５に記載のコンピュータプログラム。
【請求項３１】
前記所有プロセッサによって、前記入力類似性ユニットの前記代表値及びダイジェスト値を前記重複排除メタデータ・スライス内に格納する実行部分をさらに含む、請求項２５に記載のコンピュータプログラム。
【請求項３２】
前記インジェスティング・プロセッサのアイデンティティを前記入力類似性ユニットの前記ダイジェスト値と共に記録する実行部分をさらに含む、請求項３１に記載のコンピュータプログラム。
【請求項３３】
前記インジェスティング・プロセッサによって接触された前記計算された同一データセクションの前記所有プロセッサは、複数の所有プロセッサのサブセットであり、前記コンピュータプログラムは、前記サブセットを、前記複数の所有プロセッサのうち最高値を提供するものとして選択する実行部分をさらに含む、請求項２５に記載のコンピュータプログラム。
【請求項３４】
前記サブセットを、
前記複数の所有プロセッサのうち、前記複数の所有プロセッサの中で最高量の計算された同一データセクションを有するものを選択すること、
前記複数の所有プロセッサのうち、所定の閾値を上回る量の計算された同一データセクションを有するものを選択すること、
前記複数の所有プロセッサのうち、前記インジェスティング・プロセッサによって生成されるその後の要求を効率的に処理して前記同一データセクションを提供することが可能なものを選択すること、
のうち少なくとも１つによって選択する実行部分をさらに含む、請求項３３に記載のコンピュータプログラム。
【請求項３５】
前記計算された同一データセクションの前記所有プロセッサは、前記同一データセクションを格納しているストレージブロックの参照カウントを増加する、請求項２５に記載のコンピュータプログラム。
【請求項３６】
前記インジェスティング・プロセッサによって、
一致しないデータをローカル・ストレージブロックに格納すること、及び
前記計算された同一データセクションの前記所有プロセッサによってその情報が提供される前記ストレージブロックに対する参照を追加すること、
のうちの少なくとも１つを行う実行部分をさらに含む、請求項２５に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータに関し、より具体的には、コンピューティング環境におけるプロセッサ・グリッド内の分散データ重複排除（ｄｅｄｕｐｌｉｃａｔｉｏｎ）に関する。
【背景技術】
【０００２】
今日の社会において、コンピュータシステムは、ありふれたものである。コンピュータシステムは、職場、家庭又は学校において見いだすことができる。コンピュータシステムは、データを処理し及び格納するためのデータストレージシステム、又はディスクストレージシステムを含むことができる。大量のデータを日々処理する必要があり、現在の傾向は、これらの量が近い将来にわたって増え続けることを示唆している。この問題を軽減するための効率的な方法は、重複排除を用いることによるものである。重複排除システムの基礎をなす概念は、使用可能データの大部分は何度もコピーされるという事実を利用することであり、反復されるデータを見つけだして、その最初の出現のみを格納することによるものである。後続のコピーは、格納された出現に対するポインタで置き換えられ、このことにより、データが実際に反復的であった場合にストレージ要件が著しく低減される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の課題は、プロセッサ・グリッド内の分散データ重複排除のための方法を提供することである。
【課題を解決するための手段】
【０００４】
プロセッサ・グリッド内の分散データ重複排除についての実施形態が提供される。一実施形態において、一例として、入力データを、インジェスティング・プロセッサ（第１のプロセッサ）上で受け取る。入力データは、複数の類似性ユニットに分割される。類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及び所有プロセッサ（第２のプロセッサ）が計算される。類似性ユニットの代表値及び対応するダイジェスト値が所有プロセッサへ送られる。所有プロセッサを用いて、重複排除メタデータ・スライス内で代表値について検索し、計算された同一データセクションの仕様及び所有プロセッサ（第３のプロセッサ）をインジェスティング・プロセッサへ送る。インジェスティング・プロセッサを用いて、計算された同一データセクションの名目情報（nominal information）を、計算された同一データセクションによって参照されたデータの所有プロセッサへ送る。計算された同一データセクションによって参照されるデータの所有プロセッサを用いて、インジェスティング・プロセッサに、同一データセクションによって参照されるデータを格納しているストレージブロックの情報を応答する。
【０００５】
上記の例示的な方法の実施形態に加えて、他の例示的なシステム及びコンピュータ製品の実施形態が提供され、関連の利点をもたらす。
【０００６】
本発明の利点を容易に理解するために、上で簡潔に説明した本発明のより具体的な説明を、添付の図面に示した特定の実施形態を参照して描写する。これらの図面は本発明の実施形態を描いたものであり、したがってその範囲を限定するものと考えるべきものではないことを理解した上で、本発明を、添付の図面の使用を通じて、更なる特異性及び詳細をと共に記述し、説明する。
【図面の簡単な説明】
【０００７】
【図１】本発明の態様を実現することができる例示的なストレージデバイスを有するコンピューティングシステム環境を示すブロック図である。
【図２】本発明の態様を実現することができるデータストレージシステムのハードウェア構造を示すブロック図である。
【図３】本発明の態様を実現することができる、シェアードナッシング型アーキテクチャにおいてプロセッサ・グリッド内にデータ重複排除メタデータを格納するための例示的な実施形態のブロック図である。
【図４】同じく本発明の態様を実現することができる、例示的なアーキテクチャ、及びメッセージ・シーケンスを含む、シェアードナッシング型プロセッサ・グリッド内のグローバル分散データ重複排除のための例示的な方法論のブロック図である。
【図５】本発明の一実施形態によるシェアードナッシング型プロセッサ・グリッド内のグローバル分散データ重複排除のための例示的な方法のフローチャート図である。
【図６】前の図５で最初に提示したフローチャート図の続きである。
【図７】本発明の一実施形態による、データ重複排除メタデータ・スライスに対する代表値の例示的なコンシステント・マッピングのブロック図である。
【図８】同じく本発明の態様を実現することができる、プロセッサ・グリッドにプロセッサが追加されたときに重複排除メタデータをリバランスするための例示的な実施形態であって、入力代表値がサーチチェインに沿っていることが見いだされた場合のブロック図である。
【図９】同じく本発明の態様を実現することができる、プロセッサ・グリッドにプロセッサが追加されたときに重複排除メタデータをリバランスするためのさらなる例示的な実施形態であって、サーチチェインが完全にリバランスされたプロセッサに達し、入力代表値が見いだされない場合のブロック図である。
【図１０】本発明の一実施形態による、プロセッサ・グリッド内にデータ重複排除メタデータを格納するための例示的な方法のフローチャート図である。
【図１１】本発明の一実施形態による、プロセッサ間で分散重複排除メタデータをリバランスするための例示的な方法のフローチャート図である。
【図１２】本発明の一実施形態による、分散型のスケーラブルなデータ重複排除のための例示的な方法のフローチャート図である。
【発明を実施するための形態】
【０００８】
データ重複排除は、コンピューティングストレージシステムにおける非常に重要で活気に満ちた分野である。データ重複排除は、冗長データの削減及び／又は排除のことを意味する。データ重複排除において、ファイル、データストリーム又は他のなんらかのデータ形態であり得るデータオブジェクトは、チャンク又はブロックと呼ばれる１つ又は複数の部分に分割される。データ重複排除プロセスにおいて、データの重複コピーは、データの最小限の量の冗長コピーを残して削減されるか、又は単一のコピーを残して排除される。データ重複排除システムの目標は、重複データの単一コピーを格納することであり、この目標の達成における課題は、典型的には大規模なリポジトリ内で重複データパターンを効率的に見つけだすこと、及び、ストレージに効率的な重複排除された形態でデータパターンを格納することである。
【０００９】
既存の分散重複排除技術は、典型的には、そのサポートされるデータリポジトリのサイズに限界がある。多くの既存の重複排除技術は、フィンガープリント又はダイジェストとして知られる、値のインデックスを維持することに基づくものであり、小さいフィンガープリント（例えば１６バイトと６４バイトとの間の範囲）がリポジトリ内の大きい重複排除データブロック（例えば４ＫＢと２５６ＫＢとの間の範囲）を表す。フィンガープリント値は、一般に、セグメントのデータに基づいて、例えばＳＨＡ−１又はＳＨＡ−２５６を用いて計算される暗号ハッシュ値である。インデックス・ルックアップを用いてフィンガープリントの一致を識別することで、データの一致を識別すること、及び、その後、リポジトリ内に既に存在するデータに対する参照を格納することが可能になる。
【００１０】
この手法においては、重複排除ブロックが大きいほど、重複排除の分解能及び有効度は低下し、また、重複排除ブロックが小さいほど、格納すべきフィンガープリントが多数発生することになり、これがフィンガープリントのサイズと組み合わされると法外なものとなり得る。例えば、重複排除されるデータが１ペタバイト、ブロックサイズが４ＫＢ、及びフィンガプリントサイズが３２バイト（例えばＳＨＡ−２５６）の場合、フィンガープリントを格納するのに要するストレージは８テラバイトになる。かかるボリュームのフィンガープリントに対するフィンガープリント・インデックスを維持することは通常は困難であり、既存の技術では、性能を維持しながらこれらサイズにスケール変更することはない。この理由で、ハッシュに基づく重複排除技術は、典型的には比較的小さめのリポジトリ（数十ＴＢのオーダ）をサポートする。
【００１１】
既存の分散重複排除技術は、通常、上記のハッシュ重複排除手法に基づくものであり、したがって典型的にはスケール及び性能に限界がある。この課題に対処するために、類似性に基づくデータ重複排除手法が導入されており、これは、重複排除の際にデータを検索するのに２ステッププロセスを使用することによって、小データブロックによる効率的なデータ重複排除の達成を可能にする。第１のステップにおいて、類似データがリポジトリ内で検索される。このステップについての粒度は、大きいデータブロック（例えば８ＭＢ）である。第２のステップにおいて、類似した入力及びリポジトリデータにおいて、同一データの一致が判定される。このステップについての粒度は、より小さいデータブロック（例えば２ＫＢ）である。使用されるマッチング・アルゴリズムに依存して、単一バイト粒度もサポートされる。第１ステップにさらに含まれるのは、入力データ・チャンクの類似性特性、並びにダイジェスト・セグメント及びそれぞれのダイジェスト値の計算である。これらの計算は、ローリングハッシュ値の単一計算に基づく。第２のステップにおいて、類似リポジトリ・インターバルの参照ダイジェストが抽出され、次いで入力ダイジェストと参照ダイジェストとをマッチングして、データの一致を識別する。
【００１２】
類似性に基づくデータ重複排除手法は、類似性ステップで用いられるインデックスがコンパクトであって維持及び検索が簡単であることから、スケーラブルであるとともに効率的である。なぜなら、類似性検索のために用いられる代表要素は、それが代表するデータに比べて非常にコンパクトであるからである（例えば１６バイトが４メガバイトを表す）。ひとたび類似データが見いだされると、類似データのダイジェスト又は類似データ自体がメモリ内にロードされ、ハッシュ・ルックアップを用いる効率的なデータマッチング・プロセスが行われる。この第２のステッププロセスも、メモリ及び処理時間の両方において効率的である。全体として、類似性に基づくデータ重複排除手法は、非常に大きいデータリポジトリに対してスケーラビリティを提供するとともに高い効率及び性能を提供する。
【００１３】
類似性に基づくデータ重複排除の現在の実装において、類似性インデックスは、共有ストレージに格納される。この現在の実装は、シェアードナッシング型アーキテクチャ、すなわちプロセッサ・グリッド内のプロセッサ間でストレージが共有されないアーキテクチャをサポートせず、さらにまた、効率的であり続けるプロセッサが少数であるという限界があり、したがってスケーラブルではない。
【００１４】
多数のプロセッサ（例えば数千）を有する分散シェアードナッシング型アーキテクチャをサポートするため、及び、この分散環境における大容量のデータのためのグローバルでグリッドワイドな、高分解能かつ効率的なデータ重複排除を提供するために、新規な重複排除機構が有益である。一般に、高度分散型のグローバルなデータ重複排除は、広範な応用範囲を有する新興分野である。加えて、様々な主体が、新規な重複排除機構が有益となり得るその高度分散型ストレージ及びファイルシステムにデータ重複排除能力を付加することを期待している。
【００１５】
上記の観点で、例証的な実施形態は、他の有益な態様の中でも特に以下の課題に対処する。数千プロセッサ規模のプロセッサ・グリッド、並びにプロセッサの動的な追加、除去及び故障復旧のサポートを前提として、以下のような有益な特徴を提供するデータ重複排除技術の実装に対する目的を設定することができる：（１）グローバルなグリッドワイドのデータ重複排除、（２）ペタバイトのデータまでスケール変更される、非常に大容量のデータのサポート、（３）高分解能の重複排除、すなわち数キロバイト以下のスケールの小ブロックが重複排除に使用されること、（４）効率的なインライン重複排除、すなわち、重複排除機構のリソース消費が低いこと、及び重複排除がデータインジェストプロセスに対してインラインで行われること、並びに（５）故障許容型であること。この目的は、シェアードナッシング型アーキテクチャの観点で考慮することができるが、上で論じた有益な特徴を共有ストレージ・アーキテクチャに適用する機構にとっても有益である。
【００１６】
以下の例証的な実施形態の機構は、様々な付随する利益を提供することによって上で提示した目的に対処する。プロセッサ・グリッド・アーキテクチャにおいて、一実施形態において、各プロセッサは、（１）重複排除メタデータのスライス、及び（２）ローカルインジェストを介して格納されるユーザデータ、を格納するように構成される。重複排除メタデータの各スライスは、一実施形態において、類似性インデックスのスライスと、類似性インデックスのスライス内の代表値に対応するダイジェストのグループとを含む。各代表値は、インデックス内で表される、類似性ユニットと称される特定のデータユニットに対応し、類似性ユニットのサイズは、例えば２ＭＢに固定される。類似性インデックス内のエントリは、類似性ユニットの代表値と、類似性ユニットのダイジェストのストレージアドレスとからなる。
【００１７】
これらの態様の観点で、例証的な実施形態の機構における類似性インデックスの使用は、グローバルなグリッドワイドのデータ重複排除を提供する。類似性インデックスは、コンパクトであり、プロセッサが追加又は除去されるにつれて動的にスケール変更する。類似性ユニットに対応するグループ内のダイジェストは、例えばサイズ２ＫＢの重複排除ブロックに基づいて計算され、ダイジェストは、類似性ユニットのデータ内でのそれらの出現の順序でグループ内に出現する。
【００１８】
ここで図面を参照し、最初に図１を参照すると、コンピューティングシステム環境の例示的なアーキテクチャ１００が示されている。アーキテクチャ１００は、一実施形態において、本発明の機構を遂行するためのシステムの少なくとも一部として実装することができる。アーキテクチャ１００において具体化されるコンピュータシステムは、少なくとも１つの中央処理ユニット（ＣＰＵ）１０２を含み、これは通信ポート１０８及びメモリデバイス１０６に接続される。通信ポート１０８は、通信ネットワーク１１０と通信する。通信ネットワーク１１０は、システム１１２、１１４、及びアーキテクチャ１００と通信するように構成することができ、それはストレージデバイス１０４を含むことができる。ストレージシステムは、独立ディスクの冗長アレイ（ＲＡＩＤ）として構成することができる、ハードディスクドライブ（ＨＤＤ）デバイス、固体デバイス（ＳＳＤ）などを含むことができる。
【００１９】
後述のような動作は、システム１００内又はその他の場所に位置する、独立して機能する及び／又は他のＣＰＵデバイス１０２との組み合わせで機能する多重のメモリデバイス１０６を有することができる、ストレージデバイス１０４上で実行することができる。メモリデバイス１０６は、電気的消去可能プログラム可能読出し専用メモリ（ＥＥＰＲＯＭ）のようなメモリ又は関連デバイスのホストを含むことができる。メモリデバイス１０６及びストレージデバイス１０４は、信号担持媒体を介してＣＰＵ１０２に接続する。加えて、メモリデバイス１０６及びＣＰＵ１０２は、より大きなプロセッサ・グリッドシステムの一部としてコンピュータシステム１００の各コンポーネント内に埋設され含まれることができる。各ストレージシステムは、組合せで機能するか又は分離したメモリデバイス１０６及び／又はＣＰＵ１０２として機能する、分離した及び／又は別個のメモリデバイス１０６及びＣＰＵ１０２を含むこともできる。当業者には認識されるように、いくつかのシステム１００を、例えば物理的に一緒に位置するように又は地理的に遠くで接続されたネットワークにわたるように、接続方式及び／又は分散方式で構成することができる。
【００２０】
ここで次の図２を参照すると、図２は、本発明の種々の態様による機能を実施する全コンテキストにおいて使用することができるデータストレージシステム２００のハードウェア構造を示す、例示的なブロック図である。データストレージシステム２００は、例えば、一実施形態において、さらに後述するように、プロセッサ・グリッド・アーキテクチャにおいてデータ重複排除システムを実装することができる。
【００２１】
データストレージシステム２００の一部として、各々がデータ処理を行うための中央処理ユニットとして動作するホストコンピュータ２１０、２２０及び２２５が示されている。クラスタホスト／ノード（物理又は仮想デバイス）２１０、２２０、及び２２５は、データストレージシステム２００において本発明の目的を達成するための１つ又は複数の新たな物理デバイス又は論理とすることできる。データストレージシステム２００は、更なる機能を実装することができ、当業者は、例証的な実施形態の態様による機能を実装するために、多様な重複排除、暗号化、データ処理等のハードウェア及びソフトウェアを別個に又は組合せて利用することができることを認識するであろう。
【００２２】
ネットワーク接続２６０は、ファイバチャネル（ＦＣ）ファブリック、ファイバチャネル・ポイントツーポイントリンク、ファイバチャネル・オーバ・イーサネット（ＦＣｏＥ）ファブリック又はポイントツーポイントリンク、ＦＩＣＯＮ又はＥＳＣＯＮ  Ｉ／Ｏインタフェース、他のいずれかのＩ／Ｏインタフェース型式、無線ネットワーク、有線ネットワーク、ＬＡＮ、ＷＡＮ、異質、均質、公衆（すなわちインターネット）、私設、又はそれらの任意の組合せとすることができる。ホスト２１０、２２０及び２２５は、ローカルとすることもでき、又は１つ若しくは複数の位置間で分散することもでき、ストレージコントローラ２４０に対するファイバチャネル、ＦＩＣＯＮ、ＥＳＣＯＮ、イーサネット、光ファイバ、無線、若しくは同軸アダプタなどの任意の型式のファブリック（若しくはファブリックチャネル）（図２には示さず）又はネットワークアダプタ２６０を装備することができる。データストレージシステム２００は、それに応じて、通信のための適切なファブリック（図２には示さず）又はネットワークアダプタ２６０を装備する。データストレージシステム２００は、図２において、ストレージコントローラ２４０並びにクラスタホスト２１０、２２０及び２２５を含むものとして描かれている。クラスタホスト２１０、２２０及び２２５は、分散型コンピューティング環境において見いだされるクラスタノードを含むことができる。
【００２３】
本明細書で説明する方法のより明確な理解を促進するために、ストレージコントローラ２４０は、図２において、マイクロプロセッサ２４２、システムメモリ２４３、及び不揮発性ストレージ（「ＮＶＳ」）２１６を含む単一処理ユニットとして示されている。いくつかの実施形態において、ストレージコントローラ２４０は、データストレージシステム２００内で専用ネットワークによって相互接続された、各々がそれ自体のプロセッサ複合体及びシステムメモリを有する多重の処理ユニットで構成されることに留意されたい。ストレージ２３０（本明細書では２３０ａ、２３０ｂ及び２３０ｎと表示）は、ストレージアレイのように１つ又は複数のストレージデバイスで構成することができ、これらは、ネットワーク２６０を介して各ストレージコントローラ２４０に接続された１つ又は複数のクラスタホスト２１０、２２０及び２２５を有するストレージコントローラ２４０に（ストレージネットワークによって）接続される。
【００２４】
いくつかの実施形態において、ストレージ２３０に含まれるデバイスは、ループアーキテクチャで接続することができる。ストレージコントローラ２４０は、ストレージ２３０を管理し、ストレージ２３０に対して意図された書込み及び読出し要求の処理を促進する。ストレージコントローラ２４０のシステムメモリ２４３は、プログラム命令及びデータを格納し、プロセッサ２４２は、それにアクセスして、本明細書で説明するようにストレージ２３０を実行し及び管理するための本発明の機能及び方法ステップを実行することができる。一実施形態において、システムメモリ２４３は、本明細書で説明する方法及び動作を行うための動作ソフトウェア２５０を含み、これと関連し又はこれと通信する。図２に示すように、システムメモリ２４３はまた、それぞれ書込み／読出し要求及びその付随データを指す「書込みデータ」及び「読出しデータ」をバッファするための、本明細書では「キャッシュメモリ」とも呼ばれるストレージ２３０用のキャッシュ２４５を含み又はこれと通信することができる。一実施形態において、キャッシュ２４５は、システムメモリ２４３の外部のデバイスに割り当てられるが、それでもマイクロプロセッサ２４２によってアクセス可能であり、本明細書で説明するような動作を実行することに加えて、データ損失に対抗する更なるセキュリティを提供する役割を果たすことができる。
【００２５】
いくつかの実施形態において、キャッシュ２４５は、揮発性メモリ及び不揮発性メモリによって実装され、データストレージシステム２００の性能増強のためにローカルバス（図２では示さず）を介してマイクロプロセッサ２４２に結合される。データストレージコントローラに含まれるＮＶＳ２１６は、マイクロプロセッサ２４２によってアクセス可能であり、他の図面で説明するような本発明の動作及び実行の更なるサポートを提供する役割を果たす。ＮＶＳ２１６は、「永続的」キャッシュ、又は「キャッシュメモリ」と称されることもあり、不揮発性メモリによって実装され、これは格納されたデータを保持するのに外部電力を利用するものであってもよく、又は利用しないものであってもよい。ＮＶＳは、本発明の目的を達成するのに適したいずれかの意図のためにキャッシュ２４５内にそれと共に格納することができる。いくつかの実施形態において、バッテリなどのバックアップ電源（図２には示さず）は、データストレージシステム２００への電力損失の場合にＮＶＳ２１６に格納されたデータを保持するのに十分な電力を供給する。特定の実施形態において、ＮＶＳ２１６の容量は、キャッシュ２４５の総容量より少ないか又はそれと等しい。
【００２６】
ストレージ２３０は、ストレージアレイのように１つ又は複数のストレージデバイスで物理的に構成することができる。ストレージアレイは、ハードディスクのような個々のストレージデバイスの論理的グループ化である。特定の実施形態において、ストレージ２３０は、ＪＢＯＤ（Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  ｏｆ  Ｄｉｓｋｓ）アレイ又はＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）アレイで構成される。物理ストレージアレイの集まりをさらに組み合わせてランクを形成することができ、これは物理ストレージを論理構成から切り離す。ランク内のストレージ空間は、書込み／読出し要求において指定されたストレージ位置を定める論理ボリュームに割り当てることができる。
【００２７】
一実施形態において、一例として、図２に示すようなストレージシステムは、論理ボリューム、又は単に「ボリューム」を含むことができ、異なる種類の割り当てを有することができる。ストレージ２３０ａ、２３０ｂ及び２３０ｎは、データストレージシステム２００内のランクとして示されており、本明細書ではランク２３０ａ、２３０ｂ及び２３０ｎと呼ぶ。ランクは、データストレージシステム２００に対してローカルであってもよく、又は物理的に遠隔な位置に位置してもよい。換言すれば、ローカルストレージコントローラを遠隔ストレージコントローラに接続して、遠隔位置においてストレージを管理することができる。ランク２３０ａは、２つの全ボリューム２３４及び２３６並びに１つの部分ボリューム２３２ａで構成されるものとして示されている。ランク２３０ｂは、別の部分ボリューム２３２ｂを伴って示されている。ボリューム２３２は、ランク２３０ａ及び２３０ｂにわたって割り当てられている。ランク２３０ｎは、完全にボリューム２３８に割り当てられたものとして示されており、すなわち、ランク２３０ｎは、ボリューム２３８に対する全物理ストレージを指す。上記の例から、ランクは、１つ又は複数の部分及び／又は全ボリュームを含むように構成することができることが認識される。ボリューム及びランクは、さらに、固定されたストレージのブロックを表す、いわゆる「トラック」に分割することができる。したがってトラックは、所与のボリュームに関連付けられ、かつ、所与のランクが与えられ得る。
【００２８】
ストレージコントローラ２４０は、データ重複排除モジュール２５５、類似性モジュール２５７、及び類似性検索モジュール２５９、並びにいくつかのリポジトリ（図示せず）を含むことができる。データ重複排除モジュール２５５、類似性モジュール２５７、類似性検索モジュール２５９、及びリポジトリは、ストレージコントローラ２４０の各々すべてのコンポーネント、ホスト２１０、２２０、２２５、及びストレージデバイス２３０と関連して動作することができる。データ重複排除モジュール２５５、類似性モジュール２５７、類似性検索モジュール２５９、及びリポジトリは、構造的に１つの完全なモジュールとすることもでき、又は他の個々のモジュール若しくは他の構造に関連付けること及び／又は含めることもできる。データ重複排除モジュール２５５、類似性モジュール２５７、類似性検索モジュール２５９、及びリポジトリは、当業者に認識されるように、キャッシュ２４５又は他のコンポーネント内に置くこともできる。
【００２９】
データ重複排除モジュール２５５、類似性モジュール２５７、類似性検索モジュール２５９、及びリポジトリは、さらに後述するように、本発明の種々の態様を個別に及び／又は共同で行うことができる。例えば、データ重複排除モジュール２５５は、例証的な実施形態の態様による種々のデータ重複排除機能を行うことができる。
【００３０】
類似性モジュール２５７は、さらに後述するように、類似性インデックス（付随するスライスと共に）の維持といった、さらに後述するような種々の機能を実施することができる。類似性検索モジュール２５９もまた、同じくさらに後述するように、特定の重複排除メタデータ・スライス内の代表値の検索といった、さらに後述するような種々の機能を行うことができる。当業者に認識されるように、データ重複排除モジュール２５５、類似性モジュール２５７、類似性検索モジュール２５９、及びリポジトリは、データストレージシステム２００における種々の機能的及び／又は機能担当エンティティのサブセットのみを構成することができる。
【００３１】
他の補助的ハードウェアを、データストレージシステム２００に関連付けることができる。例えば、図示したように、ストレージコントローラ２４０は、ホストコンピュータ２１０、２２０、２２５に対するファイバチャネルプロトコルを制御するための制御スイッチ２４１、すべてのストレージコントローラ２４０を制御するためのマイクロプロセッサ２４２、ストレージコントローラ２４０の動作を制御するためのマイクロプログラム（動作ソフトウェア）２５０を格納するための不揮発性制御メモリ２４３、制御用データ、データを一時的に格納する（バッファする）ためのキャッシュ２４５、及びキャッシュ２４５を補助してデータを読出し及び書込みするためのバッファ２４４、ストレージデバイス２３０へ／からのデータ転送を制御するプロトコルを制御するための制御スイッチ２４１、データ重複排除モジュール２５５、類似性モジュール２５７、類似性検索モジュール２５９、及びリポジトリ、又は、情報を設定することができるその他の機能ブロックを含む。本明細書で説明する動作を補助するために、本発明では多重のバッファ２４４を実装することができる。
【００３２】
次の図３は、シェアードナッシング型アーキテクチャ３００おいてプロセッサ・グリッド内にデータ重複排除メタデータを格納するための例示的な実施形態を示す。先に説明したように、示した実施形態において、各プロセッサは、重複排除メタデータのスライスと、ローカルインジェストを介して格納されるユーザデータとを格納するように構成される。
【００３３】
図示したように、重複排除メタデータの各スライスは、類似性インデックスのスライスと、類似性インデックスのスライス内の代表値に対応するダイジェストのグループとを組み込む。各代表値は、インデックス内で表される、類似性ユニットと称される特定のデータユニットに対応し、類似性ユニットのサイズは例えば２ＭＢに固定される。類似性インデックス内のエントリは、このとき、類似性ユニットの代表値と、類似性ユニットのダイジェストのストレージアドレスとを含む。先に述べたように、類似性ユニットに対応するグループ内のダイジェストは、例えばサイズ２ＫＢの重複排除ブロックに基づいて計算することができ、ダイジェストはこのとき、類似性ユニットのデータ内でのそれらの出現の順序でグループ内に出現する。
【００３４】
一実施形態において、スライスに対する代表値の関連付けは、コンシステント・ハッシュ法（例えば最高ランダム重みハッシュ法（Highest Random Weight hashing method））を用いて計算される。この方法において、ｒｖａｌで示される所与の代表値について、各スライスｉに対してハッシュ関数Ｈを用いてハッシュ値ｈ［ｉ］＝Ｈ（ｒｖａｌ，ｓｌｉｃｅ＿ｉｄ［ｉ］）が計算され、この代表値及びそのダイジェストに対して選択されるスライスは、それに対するｈ［ｉ］値が最高になるスライスである。
【００３５】
スライスが例えばプロセッサを追加又は除去することによって追加又は除去されたとき、平均で［代表値の数／スライスの数（＃ｒｖａｌｓ／＃ｓｌｉｃｅｓ）］個の代表値のみが再マッピングされることになる。スライスが追加又は除去されたときでも、代表値及びダイジェストは、本質的に、ハッシュ関数Ｈを介してスライス間で均衡をとる。すべてのスライスについてｈ［ｉ］を計算するのではなく、スライスに対して階層構造を適用して、対数計算時間を提供することができる。
【００３６】
次に図４は、本発明の一実施形態による、シェアードナッシング型プロセッサ・グリッド内のグローバル分散データ重複排除のためのアーキテクチャ４００、及びコンポーネント間のメッセージ・シーケンスを記載する。図４は、図示したように、アーキテクチャ４００及び重複排除プロセスのシーケンシングをブロック図形式で記述し、次の図５及び図６は、メッセージ・シーケンスをフローチャート図形式で記述する。
【００３７】
図４を検討すると、グローバル分散データ重複排除機能を説明するために用いられるコンポーネント／命名法は、図示したようなプロセッサＰ(第１のプロセッサ)を伴い、これは、図示したように、更なるプロセッサＰ＊（第２のプロセッサ）と、一致データを所有するプロセッサ・グリッド内の他のプロセッサ（第３のプロセッサ）との間にあって、これらと通信する。プロセッサＰ、Ｐ＊、及び他の所有プロセッサの各々は、同じく図示されるように、それぞれが所有するローカルストレージに関連付けられる（例えば、ローカルストレージは、Ｐ、Ｐ＊、及び他の所有プロセッサの間で共有されない）。さらに、図示したように、ローカルストレージ内に、ＨＲＷ分割によるメタデータ・スライス、及び特定のインジェストによるデータなどの種々の情報を格納することができる。
【００３８】
図４はまた、図示したような、かつ以下のような、プロセッサＰと、Ｐ＊と、一致データを所有する他のプロセッサとの間の種々のメッセージのシーケンシングも示す。ステップ１において、プロセッサＰは、所与の類似性ユニットに対応する代表値及びダイジェストを、所与の代表値に対応するメタデータ・スライスを所有するプロセッサＰ＊に送る。プロセッサＰ＊は、ステップ２において、一致データセクションの仕様及び所有プロセッサ情報をプロセッサＰに応答し、これはプロセッサＰ＊によって所与の類似性ユニットについて計算されたものである。プロセッサＰは、ステップ３において、一致したデータセクションの仕様情報を一致データの所有プロセッサに送り、これは、ステップ４において、特定の一致データセクションを格納する所有プロセッサのストレージブロックの仕様情報を応答する。
【００３９】
図４を念頭において、次の図５及び図６の方法５００は、シェアードナッシング型アーキテクチャにおけるグローバル分散データ重複排除のための例示的な方法を説明し、先に図４で最初に示したコンポーネント及びメッセージング・シーケンスに対する更なるコンテキストを与える。最初に図５を参照すると、第１のステップ５０２として、インジェストデータをプロセッサＰで受け取り、これがステップ５０４において（例えばサイズ２ＭＢの）類似性ユニットに分割される。
【００４０】
次のステップ５０６〜５２４の各々に関して、次いで、決定ステップ５０６が処理すべき更なる類似性ユニットがまだ残っているか否かを問い合わせたときに、各類似性ユニットに対して以下のことが行われる。ステップ５０８において、類似性ユニットに対して、以下の（ａ）重複排除ブロック境界、（ｂ）重複排除ブロックについてのダイジェスト値、及び（ｃ）類似性ユニットについての代表値、が計算される。重複排除ブロックは、可変サイズとすることができ、それらの境界は、チャンキング・アルゴリズムを定めるデータを用いて決定することができる。重複排除ブロックの平均サイズは、例えば２ＫＢとすることができる。各重複排除ブロックについてダイジェスト値が計算され、ここでダイジェスト値は、重複排除ブロックのデータに基づいて計算される暗号ハッシュ値である。計算されたダイジェスト値に基づいて、その類似性ユニットについての代表値を計算することができる。
【００４１】
その類似性ユニットに対して、類似性ユニットの代表値Ｒに適用されるコンシステント・ハッシュ法（例えば最高ランダム重みハッシュ法）を用いて、対応する重複排除メタデータ・スライスＳ＊が計算される（ステップ５１０）。スライスＳ＊は、類似データの検索のため、及び類似性ユニットの重複排除メタデータのストレージのために使用される。
【００４２】
その類似性ユニットの代表値及びダイジェスト値は、スライスＳ＊を所有するプロセッサＰ＊に送られる（ステップ５１２）。いくつかの類似性ユニットが同じプロセッサにマッピングされた場合には、それらのメタデータを一緒に送ることができる。
【００４３】
次のステップ５１４において、Ｐ＊を用いて、その類似性インデックス・スライス内で代表値Ｒについて検索する。同一の類似性値が見いだされた場合、その関連付けられたダイジェストが、プロセッサＰ＊のローカル・ダイジェスト・キャッシュ内へロードされる。
【００４４】
プロセッサＰ＊は、以下のステップ５１６において、プロセッサＰから受け取ったダイジェスト及びローカル・ダイジェスト・キャッシュのコンテンツを用いてダイジェストマッチング手順を実施して、入力とリポジトリ・ダイジェストとの一致したシーケンスを見いだし、一致したデータセクションを識別する。最適化として、プロセッサＰ＊は、類似性検索を行う前に、類似性リポジトリデータの情報、例えば以前のバージョンのファイル又はストレージオブジェクトとの相関に基づいて関連したものであると判定されたダイジェストを、ローカルキャッシュ内へロードすることを試行することができる。次いでプロセッサＰ＊は、入力ダイジェストとローカル・ダイジェスト・キャッシュのコンテンツとの重複排除を試行することができ、入力類似性ユニットの重複排除が不十分である場合にのみ類似性検索を行うことができる。
【００４５】
ここで図６を参照すると、次のステップ５１８において、プロセッサＰ＊は、プロセッサＰに対して、計算された一致したデータセクションの仕様（名目値）及び所有プロセッサを送り返す。これらのセクションのデータは、グリッド内のいくつかのプロセッサによって所有されているものであり得る。
【００４６】
プロセッサＰ＊は、次いで受け取った入力類似性ユニットの代表値及びダイジェストをそのメタデータ・スライス内に格納する。プロセッサＰのアイデンティティが入力類似性ユニットのダイジェストと共に記録され、これらのダイジェストに対応するデータがプロセッサＰによって所有されていることを示す（ステップ５２０）。この情報は、後で、これらのダイジェストが他の入力ダイジェストと一致したときに、対応するデータの位置を特定するのに使用される。
【００４７】
次のステップ５２２において、プロセッサＰは、計算された一致したデータセクションの名目情報をそのデータを格納しているプロセッサに送る。このステップにおいて接触するプロセッサは、Ｐ＊によって提供されたプロセッサの完全リストのサブセットであってもよく、そのサブセットは、種々の基準に従って最高値を提供するようなプロセッサとなるように選択される。一例は、入力データと一致したデータをより多く所有するプロセッサである。別の例は、プロセッサＰによって生成されるその後の要求に対して参照データを提供するその能力及び／又は応答時間が、より速く／より効率的に実行されてプロセッサＰに送られるようなプロセッサである。
【００４８】
これらの接触されたプロセッサは、以下のことを行う：（ａ）そのデータを格納しているストレージブロックの情報を応答する、及び（ｂ）それに応じてこれらのストレージブロックの参照カウントを増加する（ステップ５２４）。
【００４９】
最後に、プロセッサＰは、一致しなかったデータをローカル・ストレージブロック内に格納し、他のプロセッサによって提供されるストレージブロックへの参照を追加する（ステップ５２６）。ここで図５の決定ステップ５０６に戻ると、処理すべき更なる類似性ユニットが見いだされなかった場合、方法５００は終了する（ステップ５２６）。
【００５０】
次の図７は、ブロック図形式で、データ重複排除メタデータ・スライスに対する代表値のコンシステント・マッピングを図表６００で示す。所与の代表値Ｒ（示した類似性ユニットに分割された入力データに対応する）について、コンシステント・ハッシュ法（例えば最高ランダム重みハッシュ法）を用いて、プロセッサＰによって所有される重複排除メタデータ・スライスＳに対するＲのコンシステント・マッピングが決定される。図７は、入力類似性ユニットに対応する代表値Ｒ［１．．６］、並びに、例としてのスライスＳ［ａ．．ｆ］の組のメタデータ・スライスに対するコンシステント・ハッシュ法を用いたそれらの関連付けを示す。
【００５１】
次の図８及び図９は、グリッドにプロセッサが追加されているときの、プロセッサ・グリッドにわたる重複排除メタデータのための種々の例示的なリバランス機能を示す。図８に描かれた第１の場合において、入力代表値が検索チェーンに沿って見いだされる。図９に描かれた第２の場合において、それぞれ、検索チェーンは完全にリバランスされたプロセッサに達し、入力代表値は見つからない。
【００５２】
図８及び図９の両方において、第１のステップとして、所有することになる新たなプロセッサに対して、新たな重複排除メタデータ・スライスが初期化される。新たなスライスは、他のスライスの各々から均等にメタデータを受け取る。すなわち、他のスライスの各々が、新たなスライスに対して比例した数のエントリで寄与する。
【００５３】
既存のコンシステント・ハッシュ法は、既存のエントリをスキャンして、新たなスライスに移動させるエントリを決定するものであり（各スライスの比例サブセットのみを実際に移動させる必要がある）、これら既存の方法は、すべてのエントリをスキャンする費用を軽視している。特に大規模ストレージシステムにおいては、スキャンはストレージから多くのエントリを読み出すことを伴うので、スキャンのコストは潜在的に著しいものになり得る。スキャンがバックグラウンドで行われたとしても、スキャン動作は、実質的な入力／出力（Ｉ／Ｏ）負荷を生じさせ得る潜在的にコストがかかるプロセスである。
【００５４】
現在のスキャン動作に付随するリソースコストの軽減を助けるために、ここで本発明の種々の態様によるリバランス機構を導入する。リバランス機構は、他の態様の中でもとりわけ、以下のことを提供する。第１に、クエリが作成されたときにのみ、リバランス用のエントリが識別され、クエリがこれらのエントリにアクセスする必要があるのはそれ自体の処理のためであり、したがって更なるオーバヘッドが回避される。第２に、この機構は、クエリの間に拡大連鎖検索動作（ｅｘｔｅｎｄｅｄ  ｃｈａｉｎｅｄ  ｓｅａｒｃｈ  ｏｐｅｒａｔｉｏｎ）を適用して、リバランスすべきエントリを識別し、ここで連鎖検索動作は、統計計算で決定されたいくつかのホップからなる。これは、拡大検索動作のリソース消費の更なる削減を可能にする。
【００５５】
一実施形態において、リバランス機構は、以下のように進行することができる。第１のステップにおいて、先に説明したように、１つ又は複数のプロセッサが既存のプロセッサ・グリッドに追加される。グリッド内の各プロセッサは、特定の属性を維持する。この属性は、例えば「リバランス状態」として表すことができる。この属性は、この特定のプロセッサへのエントリの移動が進行中であるか又は完了したことを示す。この属性は、「進行中（ｉｎ−ｐｒｏｃｅｓｓ）」の値に初期化することができる。
【００５６】
以下のステップにおいて、グリッドに追加されたプロセッサは、そのプロセッサに移動されることになるエントリの期待比率を計算する。その比率は、そのプロセッサがグリッドに加入した時点でのエントリの総数を、追加されたプロセッサを含むプロセッサの数で除したものである。そのプロセッサに移動されたエントリの実際の数がこの期待比率よりも低い限り、プロセッサのリバランス状態は進行中のままである。そのプロセッサに移動されたエントリの数が期待比率と等しくなるか又はこれを超えたときに、リバランス状態は完了に変化する。
【００５７】
代表値が検索されているとき、インジェスティング・プロセッサＰは、代表値の検索のためにスライス及び所有プロセッサＰ＊を計算し、プロセッサＰ＊に入力代表値及びダイジェストを送る。プロセッサＰ＊は、代表値について検索する。代表値が見いだされた場合、プロセッサＰ＊は、プロセッサＰに返答を送り、機構は、図５で先に説明したような分散データ重複排除のための方法５００で指定した通りに進行する。
【００５８】
プロセッサＰ＊によって代表値が見いだされず、プロセッサＰ＊のリバランス状態が進行中である場合、プロセッサＰ＊は、コンシステント・ハッシュ法（例えば最高ランダム重みハッシュ法）を用いて、所与の代表値に対して、第２のランクのスライス及び所有プロセッサＰ２＊を計算し、クエリ（すなわち入力代表値及びダイジェスト）をプロセッサＰ２＊へ転送する。この理由は、この代表値は、グリッドの重複排除メタデータ内に存在し得るが、まだ新たに追加されたＰ＊プロセッサに移動されていない可能性があるからである。この転送プロセスは、コンシステント・ハッシュ化ランキングに従って、転送チェーン上のプロセッサによって代表値が見いだされるか又はリバランス状態が完了を示すプロセッサに達するまで、プロセッサ間で続く。
【００５９】
チェーン上のプロセッサＰｘ＊によって代表値が見いだされた場合（図８に示す）、プロセッサＰｘ＊は、入力ダイジェストとそのローカル・ダイジェスト・キャッシュのコンテンツとのダイジェストマッチング手順を行って、同一データセクションを識別する。プロセッサＰｘ＊は、以下のメッセージを送る：（１）プロセッサＰｘ＊からプロセッサＰ＊への代表値及びその対応するダイジェストの移動を促進する、プロセッサＰ＊への返答メッセージ、及び（２）類似性ユニットの重複排除プロセスを続けることを可能にする、プロセッサＰへの返答メッセージ（それぞれ、図８のステップ（３）及び（４）で示す）。次いで重複排除は、分散データ重複排除について先に図５で指定した通りに、プロセッサＰ上で続く。
【００６０】
プロセッサＰｘ＊によって代表値が見いだされず、このプロセッサのリバランス状態が完了を示した場合（図９に示す）、プロセッサＰｘ＊は、代表値が見いだされなかったことを示す返答メッセージをプロセッサＰに送る（図９のステップ（３）に示す）。転送チェーン内のホップの数は、重複排除プロセスが本質的に近似なので、上限付きで定めることができる。
【００６１】
最後に、プロセッサＰ＊によって代表値が見いだされず、プロセッサＰ＊のリバランス状態が完了である場合、プロセッサＰ＊は、代表値が見いだされなかったことを示す返答メッセージをプロセッサＰに送る。
【００６２】
プロセッサ及び対応するメタデータ・スライスがプロセッサ・グリッドから正常に除去されているときに、分散重複排除メタデータに対してリバランス機能を行うために、更なる機構を実装することができる。一実施形態において、除去されているプロセッサの重複排除メタデータ・スライスのコンテンツは、残った重複排除メタデータのスライスにわたって均等に分散される。他のスライス内の重複排除メタデータは、変更されない。
【００６３】
除去されているメタデータ・スライス内の各代表値に対して、その代表値及び対応するダイジェストを格納することになる、新たなスライスを計算することができる。最高ランダム重みハッシュ法などのコンシステント・ハッシュ法を用いることができる。所与の代表値に対して、次いでグリッド内のメタデータ・スライスに対するコンシステント・ハッシュ化ランク値を計算することができ、この計算は、除去されているメタデータ・スライスを除いて行われる。次いで最高ランク値を有するスライスを選択することができる。次いで代表値及び関連付けられたダイジェストを、前のステップで選択されたメタデータ・スライスに格納するために送ることができる。
【００６４】
プロセッサが故障したときにデータ重複排除メタデータを復旧するために、２つの手法を取ることができる。第１のアプローチは、各類似性ユニットのメタデータ（すなわち代表値及びダイジェスト）を、その類似性ユニットの代表値に対するそのコンシステント・ハッシュ化ランク値がグリッド内のメタデータ・スライスの中で最高であるＫ個のメタデータ・スライスに格納することである。
【００６５】
プロセッサが故障したとき又は除去されているとき、その代表値及び対応するダイジェストは、影響を受ける代表値の各々に対して、故障した／除去されるプロセッサのスライスを除いたグリッド内のスライスに対してコンシステント・ハッシュ化ランク値を計算し、その所与の代表値のために未だ使われていなかったスライスの中から最高ランク値を有するスライスを選択し、影響を受ける代表値及びその対応するダイジェストの付加的なコピーを格納することによって、それらのバックアップスライスから付加的なスライスへと複製される。
【００６６】
第２のアプローチは、メタデータの復旧を回避することである。これが可能な理由は、類似性インデックスは近似として定めることができるので、それゆえデータのサブセットを代表することができるからである。重複排除に対する影響は、新たなデータがインジェストされているので、典型的には一時的である。
【００６７】
ここで図１０を参照すると、本発明の一実施形態により、プロセッサ・グリッド内の重複排除メタデータ・ストレージを促進する例示的な方法９００が示されている。方法９００は、プロセッサ・グリッド内の対応するプロセッサによって格納されるべきいくつかの重複排除メタデータのスライスの割当て（ステップ９０４）で開始する（ステップ９０２）。
【００６８】
各メタデータ・スライスは、類似性インデックスのスライス、及び、類似性インデックスのスライス内に含まれ得る代表値に対応するダイジェストのグループのうち、少なくとも１つを含むように構成される（ステップ９０６）。次いでハッシュ法を用いて、入力代表値と重複排除メタデータのスライスとの間のマッピングを行う（ステップ９０８）。次いで方法９００は終了する（ステップ９１０）。
【００６９】
次の図１１は、本発明の一実施形態による、分散重複排除メタデータをリバランスするための例示的な方法１０００を示す。方法１０００は、データの入力類似性ユニット及び対応する入力代表値をプロセッサ上で受け取ること（ステップ１００４）で、開始する（ステップ１００２）。次いで、入力類似性ユニットに対して、対応する重複排除メタデータ・スライス及び所有プロセッサが計算される（ステップ１００６）
【００７０】
次のステップ１００８において、入力代表値及び入力ダイジェスト値は、所有プロセッサへ送られる。所有プロセッサを用いて、対応する重複排除メタデータ・スライス内で入力代表値について検索する（ステップ１０１０）。次いで、所有プロセッサによって代表値が見いだされず、かつ所有プロセッサのリバランス状態が進行中であると判定された場合、所有プロセッサを用いて、入力代表値及び入力ダイジェスト値を更なるプロセッサに転送する（ステップ１０１２）。
【００７１】
次のステップ１０１４において、更なるプロセッサによって入力代表値が見いだされた場合、次いで更なるプロセッサを用いて、更なるプロセッサから所有プロセッサへの入力代表値及び対応するダイジェスト値の移動を促進する返答メッセージを、所有プロセッサに送る。次いで方法１０００は終了する（ステップ１０１６）。
【００７２】
次の図１２は、同じく本発明の一実施形態による、プロセッサ・グリッド内の分散データ重複排除のための例示的な方法１１００を示す。方法１１００は、インジェスティング・プロセッサ上での入力データの受け取り、及び、入力データをいくつかの類似性ユニットに分割することによって（ステップ１１０４）開始する（ステップ１１０２）。類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及び所有プロセッサが計算される（ステップ１１０６）。
【００７３】
次のステップ１１０８において、次いで類似性ユニットの代表値及び対応するダイジェスト値が所有プロセッサへ送られる。次いで所有プロセッサを用いて、対応する重複排除メタデータ・スライス内で代表値について検索する（ステップ１１１０）。次いで所有プロセッサを用いて、計算された同一データセクションの仕様及び所有プロセッサを、インジェスティング・プロセッサへ送る（ステップ１１１２）。次いでインジェスティング・プロセッサを用いて、計算された同一データセクションの名目情報を、計算された同一データセクションの所有プロセッサへ送る（ステップ１１１４）。
【００７４】
次のステップ１１１６において、次いで計算された同一データセクションの所有プロセッサを用いて、インジェスティング・プロセッサに、同一データセクションを格納しているストレージブロックの情報を応答する。次いで方法１１００は終了する（ステップ１１１８）。
【００７５】
本発明は、システム、方法、及び／又はコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有する１つ又は複数のコンピュータ可読ストレージ媒体を含むことができる。
【００７６】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のために命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のものの任意の適切な組合せとすることができるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、静的ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多目的ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、記録された命令を有するパンチカード若しくは溝内に隆起した構造等の機械式コード化デバイス、及び上記のものの任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で用いられる場合、無線波若しくは他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体を通って伝搬する電磁波（例えば光ファイバケーブルを通る光パルス）、又は電線を通って伝送される電気信号のような、一時的な信号自体と解釈すべきではない。
【００７７】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスにダウンロードすることも、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク及び／又は無線ネットワークを経由して、外部コンピュータ若しくは外部ストレージデバイスにダウンロードすることもできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ及び／又はエッジサーバを含むことができる。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カード又はネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体にストレージのために転送する。
【００７８】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Ｓｍａｌｌｔａｌｋ、若しくはＣ＋＋などのオブジェクト指向プログラミング言語及び「Ｃ」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む１つ若しくは複数のプログラミング言語の任意の組合せで記述されたソースコード若しくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が行われる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えばプログラム可能論理回路、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することにより、コンピュータ可読プログラム命令を実行することができる。
【００７９】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置（システム）、及びコンピュータプログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装することができることが理解されるであろう。
【００８０】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、プログラム可能データ処理装置、及び／又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、その中に格納された命令を有するコンピュータ可読媒体が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作の態様を実装する命令を含む製品を含むようにすることもできる。
【００８１】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置又は他のデバイス上で行わせてコンピュータ実装のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置又は他のデバイス上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するようにすることもできる。
【００８２】
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で行われることがある。例えば、連続して示された２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図中のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステムによって実装することもでき、又は専用ハードウェアとコンピュータ命令との組合せを実行することもできることにも留意されたい。
【符号の説明】
【００８３】
１００：アーキテクチャ
２００：データストレージシステム
３００：シェアードナッシング型アーキテクチャ
４００：シェアードナッシング型プロセッサ・グリッド内のグローバル分散データ重複排除のためのアーキテクチャ
５００：シェアードナッシング型アーキテクチャにおけるグローバル分散データ重複排除のための例示的な方法
６００：データ重複排除メタデータ・スライスに対する代表値のコンシステント・マッピング
【図１】
2019506667.tif 000003
【図２】
2019506667.tif 000004
【図３】
2019506667.tif 000005
【図４】
2019506667.tif 000006
【図５】
2019506667.tif 000007
【図６】
2019506667.tif 000008
【図７】
2019506667.tif 000009
【図８】
2019506667.tif 000010
【図９】
2019506667.tif 000011
【図１０】
2019506667.tif 000012
【図１１】
2019506667.tif 000013
【図１２】
2019506667.tif 000014
【手続補正書】
【提出日】平成30年11月27日(2018.11.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサ・グリッド内の分散データ重複排除のための方法であって、
インジェスティング・プロセッサ上で入力データを受け取り、前記入力データを複数の類似性ユニットに分割することと、
前記類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及びプロセッサを計算することと、
前記類似性ユニットの代表値及び対応するダイジェスト値を前記プロセッサへ送ることと、
前記プロセッサを用いて、前記対応する重複排除メタデータ・スライス内で前記代表値について検索することと、
前記プロセッサを用いて、計算された同一データセクションの仕様及び所有プロセッサを前記インジェスティング・プロセッサへ送ることと、
前記インジェスティング・プロセッサを用いて、前記計算された同一データセクションの名目情報を、前記計算された同一データセクションの前記所有プロセッサへ送ることと、
前記計算された同一データセクションの前記所有プロセッサを用いて、前記インジェスティング・プロセッサに、前記同一データセクションを格納しているストレージブロックの情報を応答することと、
を含む、方法。
【請求項２】
前記類似性ユニットに対して、重複排除ブロック境界、前記対応するダイジェスト値及び前記代表値のうちの少なくとも１つを計算することをさらに含む、請求項１に記載の方法。
【請求項３】
前記対応する重複排除メタデータ・スライス及び前記プロセッサを、前記類似性ユニットの前記代表値に適用されるコンシステント・ハッシュ法を用いて計算することをさらに含む、請求項１に記載の方法。
【請求項４】
前記類似性ユニットの前記代表値及び前記対応するダイジェスト値を、同じプロセッサにマッピングされた複数の類似性ユニットのいくつかに対する単一のメッセージを用いて前記プロセッサへ送ることをさらに含む、請求項１に記載の方法。
【請求項５】
前記プロセッサによって、
複数のダイジェスト値の各々であって、前記複数の類似性ユニットのそれら各々の代表値に対応するダイジェスト値をダイジェスト・キャッシュ内にロードすること、及び
前記インジェスティング・プロセッサから受け取った及び前記ダイジェスト・キャッシュ内に収容されたダイジェスト値でダイジェストマッチング手順を行って、前記同一データセクションを計算すること、
のうちの少なくとも１つを行うことをさらに含む、請求項１に記載の方法。
【請求項６】
計算された同一データセクションの複数の所有プロセッサにわたる、前記計算された同一データセクションの仕様及び所有プロセッサを送ることをさらに含む、請求項１に記載の方法。
【請求項７】
前記プロセッサによって、前記類似性ユニットの前記代表値及びダイジェスト値を前記重複排除メタデータ・スライス内に格納することをさらに含む、請求項１に記載の方法。
【請求項８】
前記インジェスティング・プロセッサのアイデンティティを前記類似性ユニットの前記ダイジェスト値と共に記録することをさらに含む、請求項７に記載の方法。
【請求項９】
前記インジェスティング・プロセッサによって接触された前記計算された同一データセクションの前記所有プロセッサは、複数の所有プロセッサのサブセットであり、前記方法は、前記サブセットを、前記複数の所有プロセッサのうち最高値を提供するものとして選択することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記サブセットを、
前記複数の所有プロセッサのうち、前記複数の所有プロセッサの中で最高量の計算された同一データセクションを有するものを選択すること、
前記複数の所有プロセッサのうち、所定の閾値を上回る量の計算された同一データセクションを有するものを選択すること、
前記複数の所有プロセッサのうち、前記インジェスティング・プロセッサによって生成されるその後の要求を効率的に処理して前記同一データセクションを提供することが可能なものを選択すること、
のうち少なくとも１つによって選択することをさらに含む、請求項９に記載の方法。
【請求項１１】
前記計算された同一データセクションの前記所有プロセッサは、前記同一データセクションを格納しているストレージブロックの参照カウントを増加する、請求項１に記載の方法。
【請求項１２】
前記インジェスティング・プロセッサによって、
一致しないデータをローカル・ストレージブロックに格納すること、及び
前記計算された同一データセクションの前記所有プロセッサによってその情報が提供される前記ストレージブロックに対する参照を追加すること、
のうちの少なくとも１つを行うことをさらに含む、請求項１に記載の方法。
【請求項１３】
プロセッサ・グリッド内の分散データ重複排除のためのシステムであって、
インジェスティング・プロセッサと、
前記インジェスティング・プロセッサと通信するプロセッサと、
前記プロセッサ・グリッド内で前記プロセッサ及び前記プロセッサと通信する、計算された同一データセクションの所有プロセッサと、
を含み、
前記インジェスティング・プロセッサは、
入力データを受け取り、前記入力データを複数の類似性ユニットに分割し、
前記類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及び前記プロセッサを計算し、
前記類似性ユニットの代表値及び対応するダイジェスト値を前記プロセッサへ送るように適合され、
前記プロセッサは、
前記対応する重複排除メタデータ・スライス内で前記代表値について検索し、
計算された同一データセクションの仕様及び前記所有プロセッサを前記インジェスティング・プロセッサへ送るように適合され、
前記所有プロセッサは、
前記インジェスティング・プロセッサによって送られた前記計算された同一データセクションの名目情報を受け取り、
前記インジェスティング・プロセッサに、前記同一データセクションを格納しているストレージブロックの情報を応答するように適合された、
システム。
【請求項１４】
プロセッサ・グリッド内の分散データ重複排除のためのコンピュータプログラムであって、
インジェスティング・プロセッサに、
入力データを受け取らせ、前記入力データを複数の類似性ユニットに分割させるステップと、
前記類似性ユニットの１つに対して、対応する重複排除メタデータ・スライス及びプロセッサを計算させるステップと、
前記類似性ユニットの代表値及び対応するダイジェスト値を前記プロセッサへ送らせるステップと、を実行させ、
前記プロセッサに、
前記対応する重複排除メタデータ・スライス内で前記代表値について検索させるステップと、
計算された同一データセクションの仕様及び所有プロセッサを前記インジェスティング・プロセッサへ送らせるステップと、を実行させ、
前記インジェスティング・プロセッサに、
前記計算された同一データセクションの名目情報を、前記計算された同一データセクションの前記所有プロセッサへ送らせるステップを実行させ、
前記所有プロセッサに、
前記同一データセクションを格納しているストレージブロックの情報を前記インジェスティング・プロセッサに応答させるステップを実行させる、コンピュータプログラム。
【国際調査報告】
2019506667.tif 000015
2019506667.tif 000016
2019506667.tif 000017