JP6807395B2 - プロセッサ・グリッド内の分散データ重複排除 - Google Patents

プロセッサ・グリッド内の分散データ重複排除 Download PDF

Info

Publication number
JP6807395B2
JP6807395B2 JP2018534948A JP2018534948A JP6807395B2 JP 6807395 B2 JP6807395 B2 JP 6807395B2 JP 2018534948 A JP2018534948 A JP 2018534948A JP 2018534948 A JP2018534948 A JP 2018534948A JP 6807395 B2 JP6807395 B2 JP 6807395B2
Authority
JP
Japan
Prior art keywords
processor
data
ingesting
similarity
deduplication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018534948A
Other languages
English (en)
Other versions
JP2019506667A (ja
Inventor
アルノヴィッチ、リオール
パスクワントーニオ、ビンチェンツォ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019506667A publication Critical patent/JP2019506667A/ja
Application granted granted Critical
Publication of JP6807395B2 publication Critical patent/JP6807395B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、一般にコンピュータに関し、より具体的には、コンピューティング環境におけるプロセッサ・グリッド内の分散データ重複排除(deduplication)に関する。
今日の社会において、コンピュータシステムは、ありふれたものである。コンピュータシステムは、職場、家庭又は学校において見いだすことができる。コンピュータシステムは、データを処理し及び格納するためのデータストレージシステム、又はディスクストレージシステムを含むことができる。大量のデータを日々処理する必要があり、現在の傾向は、これらの量が近い将来にわたって増え続けることを示唆している。この問題を軽減するための効率的な方法は、重複排除を用いることによるものである。重複排除システムの基礎をなす概念は、使用可能データの大部分は何度もコピーされるという事実を利用することであり、反復されるデータを見つけだして、その最初の出現のみを格納することによるものである。後続のコピーは、格納された出現に対するポインタで置き換えられ、このことにより、データが実際に反復的であった場合にストレージ要件が著しく低減される。
本発明の課題は、プロセッサ・グリッド内の分散データ重複排除のための方法を提供することである。
プロセッサ・グリッド内の分散データ重複排除についての実施形態が提供される。一実施形態において、一例として、入力データを、インジェスティング・プロセッサ(第1のプロセッサ)上で受け取る。入力データは、複数の類似性ユニットに分割される。類似性ユニットの1つに対して、対応する重複排除メタデータ・スライス及び所有プロセッサ(第2のプロセッサ)が計算される。類似性ユニットの代表値及び対応するダイジェスト値が所有プロセッサへ送られる。所有プロセッサを用いて、重複排除メタデータ・スライス内で代表値について検索し、計算された同一データセクションの仕様及び所有プロセッサ(第3のプロセッサ)をインジェスティング・プロセッサへ送る。インジェスティング・プロセッサを用いて、計算された同一データセクションの名目情報(nominal information)を、計算された同一データセクションによって参照されたデータの所有プロセッサへ送る。計算された同一データセクションによって参照されるデータの所有プロセッサを用いて、インジェスティング・プロセッサに、同一データセクションによって参照されるデータを格納しているストレージブロックの情報を応答する。
上記の例示的な方法の実施形態に加えて、他の例示的なシステム及びコンピュータ製品の実施形態が提供され、関連の利点をもたらす。
本発明の利点を容易に理解するために、上で簡潔に説明した本発明のより具体的な説明を、添付の図面に示した特定の実施形態を参照して描写する。これらの図面は本発明の実施形態を描いたものであり、したがってその範囲を限定するものと考えるべきものではないことを理解した上で、本発明を、添付の図面の使用を通じて、更なる特異性及び詳細をと共に記述し、説明する。
本発明の態様を実現することができる例示的なストレージデバイスを有するコンピューティングシステム環境を示すブロック図である。 本発明の態様を実現することができるデータストレージシステムのハードウェア構造を示すブロック図である。 本発明の態様を実現することができる、シェアードナッシング型アーキテクチャにおいてプロセッサ・グリッド内にデータ重複排除メタデータを格納するための例示的な実施形態のブロック図である。 同じく本発明の態様を実現することができる、例示的なアーキテクチャ、及びメッセージ・シーケンスを含む、シェアードナッシング型プロセッサ・グリッド内のグローバル分散データ重複排除のための例示的な方法論のブロック図である。 本発明の一実施形態によるシェアードナッシング型プロセッサ・グリッド内のグローバル分散データ重複排除のための例示的な方法のフローチャート図である。 前の図5で最初に提示したフローチャート図の続きである。 本発明の一実施形態による、データ重複排除メタデータ・スライスに対する代表値の例示的なコンシステント・マッピングのブロック図である。 同じく本発明の態様を実現することができる、プロセッサ・グリッドにプロセッサが追加されたときに重複排除メタデータをリバランスするための例示的な実施形態であって、入力代表値がサーチチェインに沿っていることが見いだされた場合のブロック図である。 同じく本発明の態様を実現することができる、プロセッサ・グリッドにプロセッサが追加されたときに重複排除メタデータをリバランスするためのさらなる例示的な実施形態であって、サーチチェインが完全にリバランスされたプロセッサに達し、入力代表値が見いだされない場合のブロック図である。 本発明の一実施形態による、プロセッサ・グリッド内にデータ重複排除メタデータを格納するための例示的な方法のフローチャート図である。 本発明の一実施形態による、プロセッサ間で分散重複排除メタデータをリバランスするための例示的な方法のフローチャート図である。 本発明の一実施形態による、分散型のスケーラブルなデータ重複排除のための例示的な方法のフローチャート図である。
データ重複排除は、コンピューティングストレージシステムにおける非常に重要で活気に満ちた分野である。データ重複排除は、冗長データの削減及び/又は排除のことを意味する。データ重複排除において、ファイル、データストリーム又は他のなんらかのデータ形態であり得るデータオブジェクトは、チャンク又はブロックと呼ばれる1つ又は複数の部分に分割される。データ重複排除プロセスにおいて、データの重複コピーは、データの最小限の量の冗長コピーを残して削減されるか、又は単一のコピーを残して排除される。データ重複排除システムの目標は、重複データの単一コピーを格納することであり、この目標の達成における課題は、典型的には大規模なリポジトリ内で重複データパターンを効率的に見つけだすこと、及び、ストレージに効率的な重複排除された形態でデータパターンを格納することである。
既存の分散重複排除技術は、典型的には、そのサポートされるデータリポジトリのサイズに限界がある。多くの既存の重複排除技術は、フィンガープリント又はダイジェストとして知られる、値のインデックスを維持することに基づくものであり、小さいフィンガープリント(例えば16バイトと64バイトとの間の範囲)がリポジトリ内の大きい重複排除データブロック(例えば4KBと256KBとの間の範囲)を表す。フィンガープリント値は、一般に、セグメントのデータに基づいて、例えばSHA−1又はSHA−256を用いて計算される暗号ハッシュ値である。インデックス・ルックアップを用いてフィンガープリントの一致を識別することで、データの一致を識別すること、及び、その後、リポジトリ内に既に存在するデータに対する参照を格納することが可能になる。
この手法においては、重複排除ブロックが大きいほど、重複排除の分解能及び有効度は低下し、また、重複排除ブロックが小さいほど、格納すべきフィンガープリントが多数発生することになり、これがフィンガープリントのサイズと組み合わされると法外なものとなり得る。例えば、重複排除されるデータが1ペタバイト、ブロックサイズが4KB、及びフィンガプリントサイズが32バイト(例えばSHA−256)の場合、フィンガープリントを格納するのに要するストレージは8テラバイトになる。かかるボリュームのフィンガープリントに対するフィンガープリント・インデックスを維持することは通常は困難であり、既存の技術では、性能を維持しながらこれらサイズにスケール変更することはない。この理由で、ハッシュに基づく重複排除技術は、典型的には比較的小さめのリポジトリ(数十TBのオーダ)をサポートする。
既存の分散重複排除技術は、通常、上記のハッシュ重複排除手法に基づくものであり、したがって典型的にはスケール及び性能に限界がある。この課題に対処するために、類似性に基づくデータ重複排除手法が導入されており、これは、重複排除の際にデータを検索するのに2ステッププロセスを使用することによって、小データブロックによる効率的なデータ重複排除の達成を可能にする。第1のステップにおいて、類似データがリポジトリ内で検索される。このステップについての粒度は、大きいデータブロック(例えば8MB)である。第2のステップにおいて、類似した入力及びリポジトリデータにおいて、同一データの一致が判定される。このステップについての粒度は、より小さいデータブロック(例えば2KB)である。使用されるマッチング・アルゴリズムに依存して、単一バイト粒度もサポートされる。第1ステップにさらに含まれるのは、入力データ・チャンクの類似性特性、並びにダイジェスト・セグメント及びそれぞれのダイジェスト値の計算である。これらの計算は、ローリングハッシュ値の単一計算に基づく。第2のステップにおいて、類似リポジトリ・インターバルの参照ダイジェストが抽出され、次いで入力ダイジェストと参照ダイジェストとをマッチングして、データの一致を識別する。
類似性に基づくデータ重複排除手法は、類似性ステップで用いられるインデックスがコンパクトであって維持及び検索が簡単であることから、スケーラブルであるとともに効率的である。なぜなら、類似性検索のために用いられる代表要素は、それが代表するデータに比べて非常にコンパクトであるからである(例えば16バイトが4メガバイトを表す)。ひとたび類似データが見いだされると、類似データのダイジェスト又は類似データ自体がメモリ内にロードされ、ハッシュ・ルックアップを用いる効率的なデータマッチング・プロセスが行われる。この第2のステッププロセスも、メモリ及び処理時間の両方において効率的である。全体として、類似性に基づくデータ重複排除手法は、非常に大きいデータリポジトリに対してスケーラビリティを提供するとともに高い効率及び性能を提供する。
類似性に基づくデータ重複排除の現在の実装において、類似性インデックスは、共有ストレージに格納される。この現在の実装は、シェアードナッシング型アーキテクチャ、すなわちプロセッサ・グリッド内のプロセッサ間でストレージが共有されないアーキテクチャをサポートせず、さらにまた、効率的であり続けるプロセッサが少数であるという限界があり、したがってスケーラブルではない。
多数のプロセッサ(例えば数千)を有する分散シェアードナッシング型アーキテクチャをサポートするため、及び、この分散環境における大容量のデータのためのグローバルでグリッドワイドな、高分解能かつ効率的なデータ重複排除を提供するために、新規な重複排除機構が有益である。一般に、高度分散型のグローバルなデータ重複排除は、広範な応用範囲を有する新興分野である。加えて、様々な主体が、新規な重複排除機構が有益となり得るその高度分散型ストレージ及びファイルシステムにデータ重複排除能力を付加することを期待している。
上記の観点で、例証的な実施形態は、他の有益な態様の中でも特に以下の課題に対処する。数千プロセッサ規模のプロセッサ・グリッド、並びにプロセッサの動的な追加、除去及び故障復旧のサポートを前提として、以下のような有益な特徴を提供するデータ重複排除技術の実装に対する目的を設定することができる:(1)グローバルなグリッドワイドのデータ重複排除、(2)ペタバイトのデータまでスケール変更される、非常に大容量のデータのサポート、(3)高分解能の重複排除、すなわち数キロバイト以下のスケールの小ブロックが重複排除に使用されること、(4)効率的なインライン重複排除、すなわち、重複排除機構のリソース消費が低いこと、及び重複排除がデータインジェストプロセスに対してインラインで行われること、並びに(5)故障許容型であること。この目的は、シェアードナッシング型アーキテクチャの観点で考慮することができるが、上で論じた有益な特徴を共有ストレージ・アーキテクチャに適用する機構にとっても有益である。
以下の例証的な実施形態の機構は、様々な付随する利益を提供することによって上で提示した目的に対処する。プロセッサ・グリッド・アーキテクチャにおいて、一実施形態において、各プロセッサは、(1)重複排除メタデータのスライス、及び(2)ローカルインジェストを介して格納されるユーザデータ、を格納するように構成される。重複排除メタデータの各スライスは、一実施形態において、類似性インデックスのスライスと、類似性インデックスのスライス内の代表値に対応するダイジェストのグループとを含む。各代表値は、インデックス内で表される、類似性ユニットと称される特定のデータユニットに対応し、類似性ユニットのサイズは、例えば2MBに固定される。類似性インデックス内のエントリは、類似性ユニットの代表値と、類似性ユニットのダイジェストのストレージアドレスとからなる。
これらの態様の観点で、例証的な実施形態の機構における類似性インデックスの使用は、グローバルなグリッドワイドのデータ重複排除を提供する。類似性インデックスは、コンパクトであり、プロセッサが追加又は除去されるにつれて動的にスケール変更する。類似性ユニットに対応するグループ内のダイジェストは、例えばサイズ2KBの重複排除ブロックに基づいて計算され、ダイジェストは、類似性ユニットのデータ内でのそれらの出現の順序でグループ内に出現する。
ここで図面を参照し、最初に図1を参照すると、コンピューティングシステム環境の例示的なアーキテクチャ100が示されている。アーキテクチャ100は、一実施形態において、本発明の機構を遂行するためのシステムの少なくとも一部として実装することができる。アーキテクチャ100において具体化されるコンピュータシステムは、少なくとも1つの中央処理ユニット(CPU)102を含み、これは通信ポート108及びメモリデバイス106に接続される。通信ポート108は、通信ネットワーク110と通信する。通信ネットワーク110は、システム112、114、及びアーキテクチャ100と通信するように構成することができ、それはストレージデバイス104を含むことができる。ストレージシステムは、独立ディスクの冗長アレイ(RAID)として構成することができる、ハードディスクドライブ(HDD)デバイス、固体デバイス(SSD)などを含むことができる。
後述のような動作は、システム100内又はその他の場所に位置する、独立して機能する及び/又は他のCPUデバイス102との組み合わせで機能する多重のメモリデバイス106を有することができる、ストレージデバイス104上で実行することができる。メモリデバイス106は、電気的消去可能プログラム可能読出し専用メモリ(EEPROM)のようなメモリ又は関連デバイスのホストを含むことができる。メモリデバイス106及びストレージデバイス104は、信号担持媒体を介してCPU102に接続する。加えて、メモリデバイス106及びCPU102は、より大きなプロセッサ・グリッドシステムの一部としてコンピュータシステム100の各コンポーネント内に埋設され含まれることができる。各ストレージシステムは、組合せで機能するか又は分離したメモリデバイス106及び/又はCPU102として機能する、分離した及び/又は別個のメモリデバイス106及びCPU102を含むこともできる。当業者には認識されるように、いくつかのシステム100を、例えば物理的に一緒に位置するように又は地理的に遠くで接続されたネットワークにわたるように、接続方式及び/又は分散方式で構成することができる。
ここで次の図2を参照すると、図2は、本発明の種々の態様による機能を実施する全コンテキストにおいて使用することができるデータストレージシステム200のハードウェア構造を示す、例示的なブロック図である。データストレージシステム200は、例えば、一実施形態において、さらに後述するように、プロセッサ・グリッド・アーキテクチャにおいてデータ重複排除システムを実装することができる。
データストレージシステム200の一部として、各々がデータ処理を行うための中央処理ユニットとして動作するホストコンピュータ210、220及び225が示されている。クラスタホスト/ノード(物理又は仮想デバイス)210、220、及び225は、データストレージシステム200において本発明の目的を達成するための1つ又は複数の新たな物理デバイス又は論理とすることできる。データストレージシステム200は、更なる機能を実装することができ、当業者は、例証的な実施形態の態様による機能を実装するために、多様な重複排除、暗号化、データ処理等のハードウェア及びソフトウェアを別個に又は組合せて利用することができることを認識するであろう。
ネットワーク接続260は、ファイバチャネル(FC)ファブリック、ファイバチャネル・ポイントツーポイントリンク、ファイバチャネル・オーバ・イーサネット(FCoE)ファブリック又はポイントツーポイントリンク、FICON又はESCON I/Oインタフェース、他のいずれかのI/Oインタフェース型式、無線ネットワーク、有線ネットワーク、LAN、WAN、異質、均質、公衆(すなわちインターネット)、私設、又はそれらの任意の組合せとすることができる。ホスト210、220及び225は、ローカルとすることもでき、又は1つ若しくは複数の位置間で分散することもでき、ストレージコントローラ240に対するファイバチャネル、FICON、ESCON、イーサネット、光ファイバ、無線、若しくは同軸アダプタなどの任意の型式のファブリック(若しくはファブリックチャネル)(図2には示さず)又はネットワークアダプタ260を装備することができる。データストレージシステム200は、それに応じて、通信のための適切なファブリック(図2には示さず)又はネットワークアダプタ260を装備する。データストレージシステム200は、図2において、ストレージコントローラ240並びにクラスタホスト210、220及び225を含むものとして描かれている。クラスタホスト210、220及び225は、分散型コンピューティング環境において見いだされるクラスタノードを含むことができる。
本明細書で説明する方法のより明確な理解を促進するために、ストレージコントローラ240は、図2において、マイクロプロセッサ242、システムメモリ243、及び不揮発性ストレージ(「NVS」)216を含む単一処理ユニットとして示されている。いくつかの実施形態において、ストレージコントローラ240は、データストレージシステム200内で専用ネットワークによって相互接続された、各々がそれ自体のプロセッサ複合体及びシステムメモリを有する多重の処理ユニットで構成されることに留意されたい。ストレージ230(本明細書では230a、230b及び230nと表示)は、ストレージアレイのように1つ又は複数のストレージデバイスで構成することができ、これらは、ネットワーク260を介して各ストレージコントローラ240に接続された1つ又は複数のクラスタホスト210、220及び225を有するストレージコントローラ240に(ストレージネットワークによって)接続される。
いくつかの実施形態において、ストレージ230に含まれるデバイスは、ループアーキテクチャで接続することができる。ストレージコントローラ240は、ストレージ230を管理し、ストレージ230に対して意図された書込み及び読出し要求の処理を促進する。ストレージコントローラ240のシステムメモリ243は、プログラム命令及びデータを格納し、プロセッサ242は、それにアクセスして、本明細書で説明するようにストレージ230を実行し及び管理するための本発明の機能及び方法ステップを実行することができる。一実施形態において、システムメモリ243は、本明細書で説明する方法及び動作を行うための動作ソフトウェア250を含み、これと関連し又はこれと通信する。図2に示すように、システムメモリ243はまた、それぞれ書込み/読出し要求及びその付随データを指す「書込みデータ」及び「読出しデータ」をバッファするための、本明細書では「キャッシュメモリ」とも呼ばれるストレージ230用のキャッシュ245を含み又はこれと通信することができる。一実施形態において、キャッシュ245は、システムメモリ243の外部のデバイスに割り当てられるが、それでもマイクロプロセッサ242によってアクセス可能であり、本明細書で説明するような動作を実行することに加えて、データ損失に対抗する更なるセキュリティを提供する役割を果たすことができる。
いくつかの実施形態において、キャッシュ245は、揮発性メモリ及び不揮発性メモリによって実装され、データストレージシステム200の性能増強のためにローカルバス(図2では示さず)を介してマイクロプロセッサ242に結合される。データストレージコントローラに含まれるNVS216は、マイクロプロセッサ242によってアクセス可能であり、他の図面で説明するような本発明の動作及び実行の更なるサポートを提供する役割を果たす。NVS216は、「永続的」キャッシュ、又は「キャッシュメモリ」と称されることもあり、不揮発性メモリによって実装され、これは格納されたデータを保持するのに外部電力を利用するものであってもよく、又は利用しないものであってもよい。NVSは、本発明の目的を達成するのに適したいずれかの意図のためにキャッシュ245内にそれと共に格納することができる。いくつかの実施形態において、バッテリなどのバックアップ電源(図2には示さず)は、データストレージシステム200への電力損失の場合にNVS216に格納されたデータを保持するのに十分な電力を供給する。特定の実施形態において、NVS216の容量は、キャッシュ245の総容量より少ないか又はそれと等しい。
ストレージ230は、ストレージアレイのように1つ又は複数のストレージデバイスで物理的に構成することができる。ストレージアレイは、ハードディスクのような個々のストレージデバイスの論理的グループ化である。特定の実施形態において、ストレージ230は、JBOD(Just a Bunch of Disks)アレイ又はRAID(Redundant Array of Independent Disks)アレイで構成される。物理ストレージアレイの集まりをさらに組み合わせてランクを形成することができ、これは物理ストレージを論理構成から切り離す。ランク内のストレージ空間は、書込み/読出し要求において指定されたストレージ位置を定める論理ボリュームに割り当てることができる。
一実施形態において、一例として、図2に示すようなストレージシステムは、論理ボリューム、又は単に「ボリューム」を含むことができ、異なる種類の割り当てを有することができる。ストレージ230a、230b及び230nは、データストレージシステム200内のランクとして示されており、本明細書ではランク230a、230b及び230nと呼ぶ。ランクは、データストレージシステム200に対してローカルであってもよく、又は物理的に遠隔な位置に位置してもよい。換言すれば、ローカルストレージコントローラを遠隔ストレージコントローラに接続して、遠隔位置においてストレージを管理することができる。ランク230aは、2つの全ボリューム234及び236並びに1つの部分ボリューム232aで構成されるものとして示されている。ランク230bは、別の部分ボリューム232bを伴って示されている。ボリューム232は、ランク230a及び230bにわたって割り当てられている。ランク230nは、完全にボリューム238に割り当てられたものとして示されており、すなわち、ランク230nは、ボリューム238に対する全物理ストレージを指す。上記の例から、ランクは、1つ又は複数の部分及び/又は全ボリュームを含むように構成することができることが認識される。ボリューム及びランクは、さらに、固定されたストレージのブロックを表す、いわゆる「トラック」に分割することができる。したがってトラックは、所与のボリュームに関連付けられ、かつ、所与のランクが与えられ得る。
ストレージコントローラ240は、データ重複排除モジュール255、類似性モジュール257、及び類似性検索モジュール259、並びにいくつかのリポジトリ(図示せず)を含むことができる。データ重複排除モジュール255、類似性モジュール257、類似性検索モジュール259、及びリポジトリは、ストレージコントローラ240の各々すべてのコンポーネント、ホスト210、220、225、及びストレージデバイス230と関連して動作することができる。データ重複排除モジュール255、類似性モジュール257、類似性検索モジュール259、及びリポジトリは、構造的に1つの完全なモジュールとすることもでき、又は他の個々のモジュール若しくは他の構造に関連付けること及び/又は含めることもできる。データ重複排除モジュール255、類似性モジュール257、類似性検索モジュール259、及びリポジトリは、当業者に認識されるように、キャッシュ245又は他のコンポーネント内に置くこともできる。
データ重複排除モジュール255、類似性モジュール257、類似性検索モジュール259、及びリポジトリは、さらに後述するように、本発明の種々の態様を個別に及び/又は共同で行うことができる。例えば、データ重複排除モジュール255は、例証的な実施形態の態様による種々のデータ重複排除機能を行うことができる。
類似性モジュール257は、さらに後述するように、類似性インデックス(付随するスライスと共に)の維持といった、さらに後述するような種々の機能を実施することができる。類似性検索モジュール259もまた、同じくさらに後述するように、特定の重複排除メタデータ・スライス内の代表値の検索といった、さらに後述するような種々の機能を行うことができる。当業者に認識されるように、データ重複排除モジュール255、類似性モジュール257、類似性検索モジュール259、及びリポジトリは、データストレージシステム200における種々の機能的及び/又は機能担当エンティティのサブセットのみを構成することができる。
他の補助的ハードウェアを、データストレージシステム200に関連付けることができる。例えば、図示したように、ストレージコントローラ240は、ホストコンピュータ210、220、225に対するファイバチャネルプロトコルを制御するための制御スイッチ241、すべてのストレージコントローラ240を制御するためのマイクロプロセッサ242、ストレージコントローラ240の動作を制御するためのマイクロプログラム(動作ソフトウェア)250を格納するための不揮発性制御メモリ243、制御用データ、データを一時的に格納する(バッファする)ためのキャッシュ245、及びキャッシュ245を補助してデータを読出し及び書込みするためのバッファ244、ストレージデバイス230へ/からのデータ転送を制御するプロトコルを制御するための制御スイッチ241、データ重複排除モジュール255、類似性モジュール257、類似性検索モジュール259、及びリポジトリ、又は、情報を設定することができるその他の機能ブロックを含む。本明細書で説明する動作を補助するために、本発明では多重のバッファ244を実装することができる。
次の図3は、シェアードナッシング型アーキテクチャ300おいてプロセッサ・グリッド内にデータ重複排除メタデータを格納するための例示的な実施形態を示す。先に説明したように、示した実施形態において、各プロセッサは、重複排除メタデータのスライスと、ローカルインジェストを介して格納されるユーザデータとを格納するように構成される。
図示したように、重複排除メタデータの各スライスは、類似性インデックスのスライスと、類似性インデックスのスライス内の代表値に対応するダイジェストのグループとを組み込む。各代表値は、インデックス内で表される、類似性ユニットと称される特定のデータユニットに対応し、類似性ユニットのサイズは例えば2MBに固定される。類似性インデックス内のエントリは、このとき、類似性ユニットの代表値と、類似性ユニットのダイジェストのストレージアドレスとを含む。先に述べたように、類似性ユニットに対応するグループ内のダイジェストは、例えばサイズ2KBの重複排除ブロックに基づいて計算することができ、ダイジェストはこのとき、類似性ユニットのデータ内でのそれらの出現の順序でグループ内に出現する。
一実施形態において、スライスに対する代表値の関連付けは、コンシステント・ハッシュ法(例えば最高ランダム重みハッシュ法(Highest Random Weight hashing method))を用いて計算される。この方法において、rvalで示される所与の代表値について、各スライスiに対してハッシュ関数Hを用いてハッシュ値h[i]=H(rval,slice_id[i])が計算され、この代表値及びそのダイジェストに対して選択されるスライスは、それに対するh[i]値が最高になるスライスである。
スライスが例えばプロセッサを追加又は除去することによって追加又は除去されたとき、平均で[代表値の数/スライスの数(#rvals/#slices)]個の代表値のみが再マッピングされることになる。スライスが追加又は除去されたときでも、代表値及びダイジェストは、本質的に、ハッシュ関数Hを介してスライス間で均衡をとる。すべてのスライスについてh[i]を計算するのではなく、スライスに対して階層構造を適用して、対数計算時間を提供することができる。
次に図4は、本発明の一実施形態による、シェアードナッシング型プロセッサ・グリッド内のグローバル分散データ重複排除のためのアーキテクチャ400、及びコンポーネント間のメッセージ・シーケンスを記載する。図4は、図示したように、アーキテクチャ400及び重複排除プロセスのシーケンシングをブロック図形式で記述し、次の図5及び図6は、メッセージ・シーケンスをフローチャート図形式で記述する。
図4を検討すると、グローバル分散データ重複排除機能を説明するために用いられるコンポーネント/命名法は、図示したようなプロセッサP(第1のプロセッサ)を伴い、これは、図示したように、更なるプロセッサP(第2のプロセッサ)と、一致データを所有するプロセッサ・グリッド内の他のプロセッサ(第3のプロセッサ)との間にあって、これらと通信する。プロセッサP、P、及び他の所有プロセッサの各々は、同じく図示されるように、それぞれが所有するローカルストレージに関連付けられる(例えば、ローカルストレージは、P、P、及び他の所有プロセッサの間で共有されない)。さらに、図示したように、ローカルストレージ内に、HRW分割によるメタデータ・スライス、及び特定のインジェストによるデータなどの種々の情報を格納することができる。
図4はまた、図示したような、かつ以下のような、プロセッサPと、Pと、一致データを所有する他のプロセッサとの間の種々のメッセージのシーケンシングも示す。ステップ1において、プロセッサPは、所与の類似性ユニットに対応する代表値及びダイジェストを、所与の代表値に対応するメタデータ・スライスを所有するプロセッサPに送る。プロセッサPは、ステップ2において、一致データセクションの仕様及び所有プロセッサ情報をプロセッサPに応答し、これはプロセッサPによって所与の類似性ユニットについて計算されたものである。プロセッサPは、ステップ3において、一致したデータセクションの仕様情報を一致データの所有プロセッサに送り、これは、ステップ4において、特定の一致データセクションを格納する所有プロセッサのストレージブロックの仕様情報を応答する。
図4を念頭において、次の図5及び図6の方法500は、シェアードナッシング型アーキテクチャにおけるグローバル分散データ重複排除のための例示的な方法を説明し、先に図4で最初に示したコンポーネント及びメッセージング・シーケンスに対する更なるコンテキストを与える。最初に図5を参照すると、第1のステップ502として、インジェストデータをプロセッサPで受け取り、これがステップ504において(例えばサイズ2MBの)類似性ユニットに分割される。
次のステップ506〜524の各々に関して、次いで、決定ステップ506が処理すべき更なる類似性ユニットがまだ残っているか否かを問い合わせたときに、各類似性ユニットに対して以下のことが行われる。ステップ508において、類似性ユニットに対して、以下の(a)重複排除ブロック境界、(b)重複排除ブロックについてのダイジェスト値、及び(c)類似性ユニットについての代表値、が計算される。重複排除ブロックは、可変サイズとすることができ、それらの境界は、チャンキング・アルゴリズムを定めるデータを用いて決定することができる。重複排除ブロックの平均サイズは、例えば2KBとすることができる。各重複排除ブロックについてダイジェスト値が計算され、ここでダイジェスト値は、重複排除ブロックのデータに基づいて計算される暗号ハッシュ値である。計算されたダイジェスト値に基づいて、その類似性ユニットについての代表値を計算することができる。
その類似性ユニットに対して、類似性ユニットの代表値Rに適用されるコンシステント・ハッシュ法(例えば最高ランダム重みハッシュ法)を用いて、対応する重複排除メタデータ・スライスSが計算される(ステップ510)。スライスSは、類似データの検索のため、及び類似性ユニットの重複排除メタデータのストレージのために使用される。
その類似性ユニットの代表値及びダイジェスト値は、スライスSを所有するプロセッサPに送られる(ステップ512)。いくつかの類似性ユニットが同じプロセッサにマッピングされた場合には、それらのメタデータを一緒に送ることができる。
次のステップ514において、Pを用いて、その類似性インデックス・スライス内で代表値Rについて検索する。同一の類似性値が見いだされた場合、その関連付けられたダイジェストが、プロセッサPのローカル・ダイジェスト・キャッシュ内へロードされる。
プロセッサPは、以下のステップ516において、プロセッサPから受け取ったダイジェスト及びローカル・ダイジェスト・キャッシュのコンテンツを用いてダイジェストマッチング手順を実施して、入力とリポジトリ・ダイジェストとの一致したシーケンスを見いだし、一致したデータセクションを識別する。最適化として、プロセッサPは、類似性検索を行う前に、類似性リポジトリデータの情報、例えば以前のバージョンのファイル又はストレージオブジェクトとの相関に基づいて関連したものであると判定されたダイジェストを、ローカルキャッシュ内へロードすることを試行することができる。次いでプロセッサPは、入力ダイジェストとローカル・ダイジェスト・キャッシュのコンテンツとの重複排除を試行することができ、入力類似性ユニットの重複排除が不十分である場合にのみ類似性検索を行うことができる。
ここで図6を参照すると、次のステップ518において、プロセッサPは、プロセッサPに対して、計算された一致したデータセクションの仕様(名目値)及び所有プロセッサを送り返す。これらのセクションのデータは、グリッド内のいくつかのプロセッサによって所有されているものであり得る。
プロセッサPは、次いで受け取った入力類似性ユニットの代表値及びダイジェストをそのメタデータ・スライス内に格納する。プロセッサPのアイデンティティが入力類似性ユニットのダイジェストと共に記録され、これらのダイジェストに対応するデータがプロセッサPによって所有されていることを示す(ステップ520)。この情報は、後で、これらのダイジェストが他の入力ダイジェストと一致したときに、対応するデータの位置を特定するのに使用される。
次のステップ522において、プロセッサPは、計算された一致したデータセクションの名目情報をそのデータを格納しているプロセッサに送る。このステップにおいて接触するプロセッサは、Pによって提供されたプロセッサの完全リストのサブセットであってもよく、そのサブセットは、種々の基準に従って最高値を提供するようなプロセッサとなるように選択される。一例は、入力データと一致したデータをより多く所有するプロセッサである。別の例は、プロセッサPによって生成されるその後の要求に対して参照データを提供するその能力及び/又は応答時間が、より速く/より効率的に実行されてプロセッサPに送られるようなプロセッサである。
これらの接触されたプロセッサは、以下のことを行う:(a)そのデータを格納しているストレージブロックの情報を応答する、及び(b)それに応じてこれらのストレージブロックの参照カウントを増加する(ステップ524)。
最後に、プロセッサPは、一致しなかったデータをローカル・ストレージブロック内に格納し、他のプロセッサによって提供されるストレージブロックへの参照を追加する(ステップ526)。ここで図5の決定ステップ506に戻ると、処理すべき更なる類似性ユニットが見いだされなかった場合、方法500は終了する(ステップ526)。
次の図7は、ブロック図形式で、データ重複排除メタデータ・スライスに対する代表値のコンシステント・マッピングを図表600で示す。所与の代表値R(示した類似性ユニットに分割された入力データに対応する)について、コンシステント・ハッシュ法(例えば最高ランダム重みハッシュ法)を用いて、プロセッサPによって所有される重複排除メタデータ・スライスSに対するRのコンシステント・マッピングが決定される。図7は、入力類似性ユニットに対応する代表値R[1..6]、並びに、例としてのスライスS[a..f]の組のメタデータ・スライスに対するコンシステント・ハッシュ法を用いたそれらの関連付けを示す。
次の図8及び図9は、グリッドにプロセッサが追加されているときの、プロセッサ・グリッドにわたる重複排除メタデータのための種々の例示的なリバランス機能を示す。図8に描かれた第1の場合において、入力代表値が検索チェーンに沿って見いだされる。図9に描かれた第2の場合において、それぞれ、検索チェーンは完全にリバランスされたプロセッサに達し、入力代表値は見つからない。
図8及び図9の両方において、第1のステップとして、所有することになる新たなプロセッサに対して、新たな重複排除メタデータ・スライスが初期化される。新たなスライスは、他のスライスの各々から均等にメタデータを受け取る。すなわち、他のスライスの各々が、新たなスライスに対して比例した数のエントリで寄与する。
既存のコンシステント・ハッシュ法は、既存のエントリをスキャンして、新たなスライスに移動させるエントリを決定するものであり(各スライスの比例サブセットのみを実際に移動させる必要がある)、これら既存の方法は、すべてのエントリをスキャンする費用を軽視している。特に大規模ストレージシステムにおいては、スキャンはストレージから多くのエントリを読み出すことを伴うので、スキャンのコストは潜在的に著しいものになり得る。スキャンがバックグラウンドで行われたとしても、スキャン動作は、実質的な入力/出力(I/O)負荷を生じさせ得る潜在的にコストがかかるプロセスである。
現在のスキャン動作に付随するリソースコストの軽減を助けるために、ここで本発明の種々の態様によるリバランス機構を導入する。リバランス機構は、他の態様の中でもとりわけ、以下のことを提供する。第1に、クエリが作成されたときにのみ、リバランス用のエントリが識別され、クエリがこれらのエントリにアクセスする必要があるのはそれ自体の処理のためであり、したがって更なるオーバヘッドが回避される。第2に、この機構は、クエリの間に拡大連鎖検索動作(extended chained search operation)を適用して、リバランスすべきエントリを識別し、ここで連鎖検索動作は、統計計算で決定されたいくつかのホップからなる。これは、拡大検索動作のリソース消費の更なる削減を可能にする。
一実施形態において、リバランス機構は、以下のように進行することができる。第1のステップにおいて、先に説明したように、1つ又は複数のプロセッサが既存のプロセッサ・グリッドに追加される。グリッド内の各プロセッサは、特定の属性を維持する。この属性は、例えば「リバランス状態」として表すことができる。この属性は、この特定のプロセッサへのエントリの移動が進行中であるか又は完了したことを示す。この属性は、「進行中(in−process)」の値に初期化することができる。
以下のステップにおいて、グリッドに追加されたプロセッサは、そのプロセッサに移動されることになるエントリの期待比率を計算する。その比率は、そのプロセッサがグリッドに加入した時点でのエントリの総数を、追加されたプロセッサを含むプロセッサの数で除したものである。そのプロセッサに移動されたエントリの実際の数がこの期待比率よりも低い限り、プロセッサのリバランス状態は進行中のままである。そのプロセッサに移動されたエントリの数が期待比率と等しくなるか又はこれを超えたときに、リバランス状態は完了に変化する。
代表値が検索されているとき、インジェスティング・プロセッサPは、代表値の検索のためにスライス及び所有プロセッサPを計算し、プロセッサPに入力代表値及びダイジェストを送る。プロセッサPは、代表値について検索する。代表値が見いだされた場合、プロセッサPは、プロセッサPに返答を送り、機構は、図5で先に説明したような分散データ重複排除のための方法500で指定した通りに進行する。
プロセッサPによって代表値が見いだされず、プロセッサPのリバランス状態が進行中である場合、プロセッサPは、コンシステント・ハッシュ法(例えば最高ランダム重みハッシュ法)を用いて、所与の代表値に対して、第2のランクのスライス及び所有プロセッサP2*を計算し、クエリ(すなわち入力代表値及びダイジェスト)をプロセッサP2*へ転送する。この理由は、この代表値は、グリッドの重複排除メタデータ内に存在し得るが、まだ新たに追加されたPプロセッサに移動されていない可能性があるからである。この転送プロセスは、コンシステント・ハッシュ化ランキングに従って、転送チェーン上のプロセッサによって代表値が見いだされるか又はリバランス状態が完了を示すプロセッサに達するまで、プロセッサ間で続く。
チェーン上のプロセッサPx*によって代表値が見いだされた場合(図8に示す)、プロセッサPx*は、入力ダイジェストとそのローカル・ダイジェスト・キャッシュのコンテンツとのダイジェストマッチング手順を行って、同一データセクションを識別する。プロセッサPx*は、以下のメッセージを送る:(1)プロセッサPx*からプロセッサPへの代表値及びその対応するダイジェストの移動を促進する、プロセッサPへの返答メッセージ、及び(2)類似性ユニットの重複排除プロセスを続けることを可能にする、プロセッサPへの返答メッセージ(それぞれ、図8のステップ(3)及び(4)で示す)。次いで重複排除は、分散データ重複排除について先に図5で指定した通りに、プロセッサP上で続く。
プロセッサPx*によって代表値が見いだされず、このプロセッサのリバランス状態が完了を示した場合(図9に示す)、プロセッサPx*は、代表値が見いだされなかったことを示す返答メッセージをプロセッサPに送る(図9のステップ(3)に示す)。転送チェーン内のホップの数は、重複排除プロセスが本質的に近似なので、上限付きで定めることができる。
最後に、プロセッサPによって代表値が見いだされず、プロセッサPのリバランス状態が完了である場合、プロセッサPは、代表値が見いだされなかったことを示す返答メッセージをプロセッサPに送る。
プロセッサ及び対応するメタデータ・スライスがプロセッサ・グリッドから正常に除去されているときに、分散重複排除メタデータに対してリバランス機能を行うために、更なる機構を実装することができる。一実施形態において、除去されているプロセッサの重複排除メタデータ・スライスのコンテンツは、残った重複排除メタデータのスライスにわたって均等に分散される。他のスライス内の重複排除メタデータは、変更されない。
除去されているメタデータ・スライス内の各代表値に対して、その代表値及び対応するダイジェストを格納することになる、新たなスライスを計算することができる。最高ランダム重みハッシュ法などのコンシステント・ハッシュ法を用いることができる。所与の代表値に対して、次いでグリッド内のメタデータ・スライスに対するコンシステント・ハッシュ化ランク値を計算することができ、この計算は、除去されているメタデータ・スライスを除いて行われる。次いで最高ランク値を有するスライスを選択することができる。次いで代表値及び関連付けられたダイジェストを、前のステップで選択されたメタデータ・スライスに格納するために送ることができる。
プロセッサが故障したときにデータ重複排除メタデータを復旧するために、2つの手法を取ることができる。第1のアプローチは、各類似性ユニットのメタデータ(すなわち代表値及びダイジェスト)を、その類似性ユニットの代表値に対するそのコンシステント・ハッシュ化ランク値がグリッド内のメタデータ・スライスの中で最高であるK個のメタデータ・スライスに格納することである。
プロセッサが故障したとき又は除去されているとき、その代表値及び対応するダイジェストは、影響を受ける代表値の各々に対して、故障した/除去されるプロセッサのスライスを除いたグリッド内のスライスに対してコンシステント・ハッシュ化ランク値を計算し、その所与の代表値のために未だ使われていなかったスライスの中から最高ランク値を有するスライスを選択し、影響を受ける代表値及びその対応するダイジェストの付加的なコピーを格納することによって、それらのバックアップスライスから付加的なスライスへと複製される。
第2のアプローチは、メタデータの復旧を回避することである。これが可能な理由は、類似性インデックスは近似として定めることができるので、それゆえデータのサブセットを代表することができるからである。重複排除に対する影響は、新たなデータがインジェストされているので、典型的には一時的である。
ここで図10を参照すると、本発明の一実施形態により、プロセッサ・グリッド内の重複排除メタデータ・ストレージを促進する例示的な方法900が示されている。方法900は、プロセッサ・グリッド内の対応するプロセッサによって格納されるべきいくつかの重複排除メタデータのスライスの割当て(ステップ904)で開始する(ステップ902)。
各メタデータ・スライスは、類似性インデックスのスライス、及び、類似性インデックスのスライス内に含まれ得る代表値に対応するダイジェストのグループのうち、少なくとも1つを含むように構成される(ステップ906)。次いでハッシュ法を用いて、入力代表値と重複排除メタデータのスライスとの間のマッピングを行う(ステップ908)。次いで方法900は終了する(ステップ910)。
次の図11は、本発明の一実施形態による、分散重複排除メタデータをリバランスするための例示的な方法1000を示す。方法1000は、データの入力類似性ユニット及び対応する入力代表値をプロセッサ上で受け取ること(ステップ1004)で、開始する(ステップ1002)。次いで、入力類似性ユニットに対して、対応する重複排除メタデータ・スライス及び所有プロセッサが計算される(ステップ1006)
次のステップ1008において、入力代表値及び入力ダイジェスト値は、所有プロセッサへ送られる。所有プロセッサを用いて、対応する重複排除メタデータ・スライス内で入力代表値について検索する(ステップ1010)。次いで、所有プロセッサによって代表値が見いだされず、かつ所有プロセッサのリバランス状態が進行中であると判定された場合、所有プロセッサを用いて、入力代表値及び入力ダイジェスト値を更なるプロセッサに転送する(ステップ1012)。
次のステップ1014において、更なるプロセッサによって入力代表値が見いだされた場合、次いで更なるプロセッサを用いて、更なるプロセッサから所有プロセッサへの入力代表値及び対応するダイジェスト値の移動を促進する返答メッセージを、所有プロセッサに送る。次いで方法1000は終了する(ステップ1016)。
次の図12は、同じく本発明の一実施形態による、プロセッサ・グリッド内の分散データ重複排除のための例示的な方法1100を示す。方法1100は、インジェスティング・プロセッサ上での入力データの受け取り、及び、入力データをいくつかの類似性ユニットに分割することによって(ステップ1104)開始する(ステップ1102)。類似性ユニットの1つに対して、対応する重複排除メタデータ・スライス及び所有プロセッサが計算される(ステップ1106)。
次のステップ1108において、次いで類似性ユニットの代表値及び対応するダイジェスト値が所有プロセッサへ送られる。次いで所有プロセッサを用いて、対応する重複排除メタデータ・スライス内で代表値について検索する(ステップ1110)。次いで所有プロセッサを用いて、計算された同一データセクションの仕様及び所有プロセッサを、インジェスティング・プロセッサへ送る(ステップ1112)。次いでインジェスティング・プロセッサを用いて、計算された同一データセクションの名目情報を、計算された同一データセクションの所有プロセッサへ送る(ステップ1114)。
次のステップ1116において、次いで計算された同一データセクションの所有プロセッサを用いて、インジェスティング・プロセッサに、同一データセクションを格納しているストレージブロックの情報を応答する。次いで方法1100は終了する(ステップ1118)。
本発明は、システム、方法、及び/又はコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有する1つ又は複数のコンピュータ可読ストレージ媒体を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のために命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のものの任意の適切な組合せとすることができるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多目的ディスク(DVD)、メモリスティック、フロッピーディスク、記録された命令を有するパンチカード若しくは溝内に隆起した構造等の機械式コード化デバイス、及び上記のものの任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で用いられる場合、無線波若しくは他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体を通って伝搬する電磁波(例えば光ファイバケーブルを通る光パルス)、又は電線を通って伝送される電気信号のような、一時的な信号自体と解釈すべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることも、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク及び/又は無線ネットワークを経由して、外部コンピュータ若しくは外部ストレージデバイスにダウンロードすることもできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カード又はネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体にストレージのために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、若しくはC++などのオブジェクト指向プログラミング言語及び「C」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む1つ若しくは複数のプログラミング言語の任意の組合せで記述されたソースコード若しくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が行われる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えばプログラム可能論理回路、フィールドプログラム可能ゲートアレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装することができることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、その中に格納された命令を有するコンピュータ可読媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を含むようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置又は他のデバイス上で行わせてコンピュータ実装のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するようにすることもできる。
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で行われることがある。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図中のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステムによって実装することもでき、又は専用ハードウェアとコンピュータ命令との組合せを実行することもできることにも留意されたい。
100:アーキテクチャ
200:データストレージシステム
300:シェアードナッシング型アーキテクチャ
400:シェアードナッシング型プロセッサ・グリッド内のグローバル分散データ重複排除のためのアーキテクチャ
500:シェアードナッシング型アーキテクチャにおけるグローバル分散データ重複排除のための例示的な方法
600:データ重複排除メタデータ・スライスに対する代表値のコンシステント・マッピング

Claims (10)

  1. プロセッサ・グリッド内の分散データ重複排除のための方法であって、
    インジェスティング・プロセッサ上で入力データを受け取り、前記入力データを複数の類似性ユニットに分割することと、
    前記類似性ユニットの1つに対して、対応する重複排除メタデータ・スライス及びプロセッサを計算することと、
    前記類似性ユニットの代表値及び対応するダイジェスト値を前記プロセッサへ送ることと、
    前記プロセッサを用いて、前記対応する重複排除メタデータ・スライス内で前記代表値について検索することと、
    前記プロセッサを用いて、計算された同一データセクションの仕様及び所有プロセッサを前記インジェスティング・プロセッサへ送ることと、
    前記インジェスティング・プロセッサを用いて、前記計算された同一データセクションの名目情報を、前記計算された同一データセクションの前記所有プロセッサへ送ることと、
    前記計算された同一データセクションの前記所有プロセッサを用いて、前記インジェスティング・プロセッサに、前記同一データセクションを格納しているストレージブロックの情報を応答することと、
    を含む、方法であって、
    前記類似性ユニットの前記代表値及び前記対応するダイジェスト値を、同じプロセッサにマッピングされた複数の類似性ユニットのいくつかに対する単一のメッセージを用いて前記プロセッサへ送ることをさらに含む、方法。
  2. 前記プロセッサによって、
    複数のダイジェスト値の各々であって、前記複数の類似性ユニットのそれら各々の代表値に対応するダイジェスト値をダイジェスト・キャッシュ内にロードすること、及び
    前記インジェスティング・プロセッサから受け取った及び前記ダイジェスト・キャッシュ内に収容されたダイジェスト値でダイジェストマッチング手順を行って、前記同一データセクションを計算すること、
    のうちの少なくとも1つを行うことをさらに含む、請求項1に記載の方法。
  3. 計算された同一データセクションの複数の所有プロセッサにわたる、前記計算された同一データセクションの仕様及び所有プロセッサを送ることをさらに含む、請求項1に記載の方法。
  4. 前記プロセッサによって、前記類似性ユニットの前記代表値及びダイジェスト値を前記重複排除メタデータ・スライス内に格納することをさらに含む、請求項1に記載の方法。
  5. 前記インジェスティング・プロセッサのアイデンティティを前記類似性ユニットの前記ダイジェスト値と共に記録することをさらに含む、請求項に記載の方法。
  6. 前記インジェスティング・プロセッサによって接触された前記計算された同一データセクションの前記所有プロセッサは、複数の所有プロセッサのサブセットであり、前記方法は、前記サブセットを、前記複数の所有プロセッサのうち最高値を提供するものとして選択することをさらに含む、請求項1に記載の方法。
  7. 前記サブセットを、
    前記複数の所有プロセッサのうち、前記複数の所有プロセッサの中で最高量の計算された同一データセクションを有するものを選択すること、
    前記複数の所有プロセッサのうち、所定の閾値を上回る量の計算された同一データセクションを有するものを選択すること、
    前記複数の所有プロセッサのうち、前記インジェスティング・プロセッサによって生成されるその後の要求を効率的に処理して前記同一データセクションを提供することが可能なものを選択すること、
    のうち少なくとも1つによって選択することをさらに含む、請求項に記載の方法。
  8. 前記計算された同一データセクションの前記所有プロセッサは、前記同一データセクションを格納しているストレージブロックの参照カウントを増加する、請求項1に記載の方法。
  9. 前記インジェスティング・プロセッサによって、
    一致しないデータをローカル・ストレージブロックに格納すること、及び
    前記計算された同一データセクションの前記所有プロセッサによってその情報が提供される前記ストレージブロックに対する参照を追加すること、
    のうちの少なくとも1つを行うことをさらに含む、請求項1に記載の方法。
  10. プロセッサ・グリッド内の分散データ重複排除のためのシステムであって、
    インジェスティング・プロセッサと、
    前記インジェスティング・プロセッサと通信するプロセッサと、
    前記プロセッサ・グリッド内で前記プロセッサ及び前記プロセッサと通信する、計算された同一データセクションの所有プロセッサと、
    を含み、
    前記インジェスティング・プロセッサは、
    入力データを受け取り、前記入力データを複数の類似性ユニットに分割し、
    前記類似性ユニットの1つに対して、対応する重複排除メタデータ・スライス及び前記プロセッサを計算し、
    前記類似性ユニットの代表値及び対応するダイジェスト値を前記プロセッサへ送るように適合され、
    前記プロセッサは、
    前記対応する重複排除メタデータ・スライス内で前記代表値について検索し、
    計算された同一データセクションの仕様及び前記所有プロセッサを前記インジェスティング・プロセッサへ送るように適合され、
    前記所有プロセッサは、
    前記インジェスティング・プロセッサによって送られた前記計算された同一データセクションの名目情報を受け取り、
    前記インジェスティング・プロセッサに、前記同一データセクションを格納しているストレージブロックの情報を応答するように適合された、
    システムであって、
    前記インジェスティング・プロセッサは、前記類似性ユニットの前記代表値及び前記対応するダイジェスト値を、同じプロセッサにマッピングされた複数の類似性ユニットのいくつかに対する単一のメッセージを用いて前記プロセッサへ送ることをさらに含む、システム。
JP2018534948A 2016-01-12 2017-01-04 プロセッサ・グリッド内の分散データ重複排除 Active JP6807395B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/993,225 2016-01-12
US14/993,225 US10255288B2 (en) 2016-01-12 2016-01-12 Distributed data deduplication in a grid of processors
PCT/IB2017/050020 WO2017122101A1 (en) 2016-01-12 2017-01-04 Distributed data deduplication in grid of processors

Publications (2)

Publication Number Publication Date
JP2019506667A JP2019506667A (ja) 2019-03-07
JP6807395B2 true JP6807395B2 (ja) 2021-01-06

Family

ID=59275613

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018534948A Active JP6807395B2 (ja) 2016-01-12 2017-01-04 プロセッサ・グリッド内の分散データ重複排除

Country Status (6)

Country Link
US (1) US10255288B2 (ja)
JP (1) JP6807395B2 (ja)
CN (1) CN108431815B (ja)
DE (1) DE112017000167B4 (ja)
GB (1) GB2562008B (ja)
WO (1) WO2017122101A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11010300B2 (en) 2017-05-04 2021-05-18 Hewlett Packard Enterprise Development Lp Optimized record lookups
US10997153B2 (en) 2018-04-20 2021-05-04 Hewlett Packard Enterprise Development Lp Transaction encoding and transaction persistence according to type of persistent storage
US11243703B2 (en) 2018-04-27 2022-02-08 Hewlett Packard Enterprise Development Lp Expandable index with pages to store object records
US11237743B2 (en) * 2019-04-29 2022-02-01 EMC IP Holding Company LLC Sub-block deduplication using sector hashing
CN111177137B (zh) * 2019-12-30 2023-10-13 广州酷狗计算机科技有限公司 数据去重的方法、装置、设备及存储介质
CN113448491B (zh) * 2020-03-26 2024-05-17 伊姆西Ip控股有限责任公司 存储系统的数据迁移

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004104838A1 (ja) * 2003-05-21 2004-12-02 Fujitsu Limited データアクセス応答システム、ストレージシステム、クライアント装置、キャッシュ装置、およびデータアクセス応答システムへのアクセス方法
CA2433377A1 (en) 2003-06-25 2004-12-25 Ibm Canada Limited - Ibm Canada Limitee Computing frequent value statistics in a partitioned relational database
US7139772B2 (en) 2003-08-01 2006-11-21 Oracle International Corporation Ownership reassignment in a shared-nothing database system
ATE413765T1 (de) 2006-07-07 2008-11-15 Alcatel Lucent Verteilter hashing-mechanismus für selbstorganisierende netzwerke
US8166012B2 (en) 2007-04-11 2012-04-24 Emc Corporation Cluster storage using subsegmenting
US8060614B2 (en) 2008-06-19 2011-11-15 Microsoft Corporation Streaming operator placement for distributed stream processing
US8321648B2 (en) * 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
US8375047B2 (en) 2010-03-31 2013-02-12 Emc Corporation Apparatus and method for query prioritization in a shared nothing distributed database
US8250325B2 (en) * 2010-04-01 2012-08-21 Oracle International Corporation Data deduplication dictionary system
US8402004B2 (en) * 2010-11-16 2013-03-19 Actifio, Inc. System and method for creating deduplicated copies of data by tracking temporal relationships among copies and by ingesting difference data
US8682873B2 (en) 2010-12-01 2014-03-25 International Business Machines Corporation Efficient construction of synthetic backups within deduplication storage system
US8380681B2 (en) 2010-12-16 2013-02-19 Microsoft Corporation Extensible pipeline for data deduplication
US9110936B2 (en) 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
US8825720B1 (en) * 2011-04-12 2014-09-02 Emc Corporation Scaling asynchronous reclamation of free space in de-duplicated multi-controller storage systems
US8484170B2 (en) 2011-09-19 2013-07-09 International Business Machines Corporation Scalable deduplication system with small blocks
CN102323958A (zh) * 2011-10-27 2012-01-18 上海文广互动电视有限公司 重复数据删除方法
KR102031392B1 (ko) * 2011-11-15 2019-11-08 아브 이니티오 테크놀로지 엘엘시 후보 쿼리들에 기반한 데이터 클러스터링
CN102495894A (zh) * 2011-12-12 2012-06-13 成都市华为赛门铁克科技有限公司 重复数据查找方法、装置及系统
US8682869B2 (en) 2012-04-05 2014-03-25 International Business Machines Corporation Increased in-line deduplication efficiency
US9336223B2 (en) 2012-09-24 2016-05-10 International Business Machines Corporation Selective erasure of expired files or extents in deduplicating virtual media for efficient file reclamation
US8799284B2 (en) 2012-11-30 2014-08-05 Futurewei Technologies, Inc. Method for automated scaling of a massive parallel processing (MPP) database
US9471586B2 (en) * 2013-01-10 2016-10-18 International Business Machines Corporation Intelligent selection of replication node for file data blocks in GPFS-SNC
US9479587B2 (en) 2013-01-23 2016-10-25 Nexenta Systems, Inc. Scalable object storage using multicast transport
US8938417B2 (en) 2013-02-22 2015-01-20 International Business Machines Corporation Integrity checking and selective deduplication based on network parameters
US9195673B2 (en) 2013-03-15 2015-11-24 International Business Machines Corporation Scalable graph modeling of metadata for deduplicated storage systems
US9547662B2 (en) * 2013-03-15 2017-01-17 International Business Machines Corporation Digest retrieval based on similarity search in data deduplication
US10180951B2 (en) 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
JP5444506B1 (ja) * 2013-03-29 2014-03-19 株式会社東芝 データの重複をハッシュテーブルに基づいて排除するためのストレージシステム
GB2514555A (en) 2013-05-28 2014-12-03 Ibm Deduplication for a storage system

Also Published As

Publication number Publication date
US10255288B2 (en) 2019-04-09
DE112017000167T5 (de) 2018-06-28
CN108431815B (zh) 2022-10-11
DE112017000167B4 (de) 2020-12-31
CN108431815A (zh) 2018-08-21
WO2017122101A1 (en) 2017-07-20
JP2019506667A (ja) 2019-03-07
GB201812619D0 (en) 2018-09-19
GB2562008A (en) 2018-10-31
GB2562008B (en) 2019-04-03
US20170199891A1 (en) 2017-07-13

Similar Documents

Publication Publication Date Title
US11775392B2 (en) Indirect replication of a dataset
US20230359644A1 (en) Cloud-based replication to cloud-external systems
US10761758B2 (en) Data aware deduplication object storage (DADOS)
JP6807395B2 (ja) プロセッサ・グリッド内の分散データ重複排除
US10261946B2 (en) Rebalancing distributed metadata
US9678977B1 (en) Similarity based deduplication of snapshots data
US9454476B2 (en) Logical sector mapping in a flash storage array
US10242021B2 (en) Storing data deduplication metadata in a grid of processors
US9817865B2 (en) Direct lookup for identifying duplicate data in a data deduplication system
JP6320432B2 (ja) データ重複排除における、類似性探索に基づくダイジェスト検索
US10657103B2 (en) Combining data matches from multiple sources in a deduplication storage system
US10031937B2 (en) Similarity based data deduplication of initial snapshots of data sets
US11030198B2 (en) Reducing resource consumption of a similarity index in data deduplication
US10394481B2 (en) Reducing application input/output operations from a server having data stored on de-duped storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190621

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201207

R150 Certificate of patent or registration of utility model

Ref document number: 6807395

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150