JP2021527291A - チャンクベースデータ重複排除 - Google Patents

チャンクベースデータ重複排除 Download PDF

Info

Publication number
JP2021527291A
JP2021527291A JP2021518424A JP2021518424A JP2021527291A JP 2021527291 A JP2021527291 A JP 2021527291A JP 2021518424 A JP2021518424 A JP 2021518424A JP 2021518424 A JP2021518424 A JP 2021518424A JP 2021527291 A JP2021527291 A JP 2021527291A
Authority
JP
Japan
Prior art keywords
data chunk
fingerprint
received data
sha
chunk
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.)
Pending
Application number
JP2021518424A
Other languages
English (en)
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of JP2021527291A publication Critical patent/JP2021527291A/ja
Pending legal-status Critical Current

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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

チャンクベースデータ重複排除のシステム及び方法。受信データチャンクは、フィンガープリンティング、及びそれぞれの先頭SHA(セキュアハッシュアルゴリズム)テーブル及び末尾SHAテーブルへのマッピングのために先頭部分及び末尾部分に分割される。先頭フィンガープリントまたは末尾フィンガープリントは、受信データチャンクとほぼ同一の先行操作データチャンクの場所を突き止め、データバーストを決定して受信データチャンクを重複排除するために使用される。
【選択図】図2

Description

デジタルデータストレージシステムは、データを格納するために必要とされるストレージの量を最小限に抑えるために多様な技術を利用できる。そのようなストレージ最小化技術は、より高速なデータ処理という点で時間を節約するだけではなく、冗長性を低減し、ストレージのコストを最小限に抑えることもできる。
1つのそのようなストレージ最適化技術がデータ重複排除である。データ重複排除は、データの同じブロック(または単一のセグメント)を、メタデータの異なるセットの中の複数のポインタによって同時に参照する方式を用いる。このようにして、全データセットに共通であるデータのブロックは、一度だけ格納され、反復するデータの二重のコピーは排除される。
チャンクレベルデータ重複排除システムは、受信データセットまたは入力データストリームを複数のデータチャンクにセグメント化するシステムである。受信データセットは、例えばバックアップ環境におけるバックアップファイルである可能性がある。別の例として、受信データセットは、データベーススナップショット、バーチャルマシン画像などである可能性もある。データ重複排除は、二重データを排除することによって記憶領域を削減するだけではなく、ネットワーク環境における冗長なデータの伝送も最小限に抑える。
各受信データチャンクは、そのようなデータチャンクごとに、例えばSHA−1、SHA−2などの暗号論的に安全なハッシュシグネチャまたはフィンガープリントを作成することによって識別できる。また、それぞれのフィンガープリントが対応するデータチャンクを指すフィンガープリントのすべてのインデックスも作成される。このインデックスは、次いでどのデータチャンクが以前に格納されたのかを決定するための参照リストを提供する。
固定長ブロック重複排除では、複数のデータチャンクのサイズは固定である。つまり、データチャンクは固定ブロックにセグメント化される。ブロックの長さは、例えば4Kバイトである場合がある。別の例として、長さは16Kバイトである場合がある。可変長重複排除では、複数のデータチャンクは、可変サイズのブロック単位にセグメント化される。ここでは、各可変サイズ単位の長さは、コンテンツ自体に依存している。
一般的な方法では、受信データチャンク及び先行データチャンクは、単一バースト分、変わる場合がある。バックアップシステムでは、例えば、単一ファイルは、多数の構成要素ファイルから作られるバックアップ画像である。これらのファイルは、それらが同じファイルシステムの連続したバックアップであるときにもめったに全く同一であることはない。任意の構成要素ファイルをただ1回追加、削除、または変更するだけで、残りの画像コンテントは容易にシフトしてしまう場合がある。たとえ他のファイルは変化していないとしても、このシフトによって、それぞれの固定サイズセグメントは、ある近傍からのいくつかのバイトを含み、その他の近傍にいくつかのバイトを渡し、前回のセグメントとは異なってしまうであろう。
一般に、既存のデータ重複排除のシステム及び方法は、計算コストが高く非効率である場合があり、多くの場合、特に上述の状況では冗長なまたは二重のデータの格納につながる場合がある。従来のシステム及び方法の1つ以上の不利な点に対処する必要が生じるのは、この状況においてである。
チャンクベースデータ重複排除のシステム及び方法の多様な例示的な実施形態が、本開示に記載されている。
一実施形態では、重複排除方法は、格納のために受け取られる複数の受信データのうちの1つを少なくとも1つの先頭部分及び1つの末尾部分に分割する。先頭部分を一意に識別する先頭フィンガープリントは、やはり受信データチャンクの末尾部分を一意に識別する末尾フィンガープリントとともに生成される。
重複排除方法は、先頭SHA(セキュアハッシュアルゴリズム)テーブル及び末尾SHAテーブルを提供することを含む。データチャンクごとに、先頭SHAテーブルは、先頭フィンガープリントのフルフィンガープリントへのマッピングを含む。末尾SHAテーブルは、データチャンクごとに末尾フィンガープリントのフルフィンガープリントへのマッピングを含む。重複排除方法は、受信データチャンクの先頭フィンガープリントが先頭SHAテーブル内にあるかどうか、または受信データチャンクの末尾フィンガープリントが末尾SHAテーブル内にあるかどうかを判断する。
先頭フィンガープリントが先頭SHAテーブル内にある、または末尾フィンガープリントが末尾SHAテーブル内にある場合、重複排除方法は、(受信データチャンクの)先頭フィンガープリントまたは末尾フィンガープリントを使用して、格納されている先行操作(predecessor)データチャンクを識別する。ここで、先行操作データチャンク及び受信データチャンクはほぼ同一である。しかしながら、受信データチャンクは、先行操作データチャンク内のデータに加えてデータのバーストを含む。その後、データのバーストは識別され、利用可能なPBA(物理ブロックアドレス)に書き込まれる。
一態様では、(受信データチャンクの)先頭フィンガープリント及び末尾フィンガープリントが、先頭SHAテーブルまたは末尾SHAテーブル内で場所を確認できない場合、次いで受信データチャンクは、先行操作データチャンクを識別し、上記のデータのバーストを利用可能なPBAに書き込む代わりに、利用可能なPBAに格納のために書き込まれる。
別の実施形態では、基準LBA(論理ブロックアドレス)テーブルは、論理ブロックアドレスを、先行操作データチャンクのフィンガープリントに、及びデータのバーストを記憶するPBAにマッピングするエントリを有する基準LBAを提供される。
別の態様では、重複排除方法は、LBAテーブル内で新規エントリを作成し、新規エントリは論理ブロックアドレスを受信データチャンクのフルフィンガープリントにマッピングする。別の実施形態では、SHAテーブル内のエントリが作成され、SHAテーブル内のエントリは、論理ブロックアドレスを受信データチャンクが格納されるPBAにマッピングする。
別の態様では、重複排除方法は、受信データチャンクのフルフィンガープリントを生成する。ここでフルフィンガープリントは、受信データチャンクの全体を一意に識別する。重複排除方法は、フルフィンガープリントをPBAにマッピングするSHAテーブルを調べて、受信データチャンクのフルフィンガープリントが、格納されている先行操作データチャンクと一致するかを判断する。一致する場合、重複排除方法は、LBAテーブル内で新規エントリを作成し、新規エントリは論理ブロックアドレスを受信データチャンクのフルフィンガープリントにマッピングする。
別の実施形態では、先頭フィンガープリントまたは該末尾フィンガープリントを使用して、格納されているデータチャンクを識別する重複排除方法は、先頭SHAテーブル内で、先行操作データチャンクの先頭フィンガープリント及び受信データチャンクの先頭フィンガープリントが同じであるかどうかを識別することと、先行操作データチャンクのフルフィンガープリントを、先行操作データチャンクが格納されるPBAにマッピングするエントリを有するSHAテーブルを提供することと、先行操作データチャンクのフルフィンガープリントを使用して、PBAストレージから先行操作データチャンクを取り出すことによる。さらに別の態様では、該先頭フィンガープリントまたは該末尾フィンガープリントを使用して格納されているデータチャンクを識別する重複排除方法は、末尾SHAテーブル内で、先行操作データチャンクの末尾フィンガープリントを、末尾フィンガープリントと同じであるとして識別することによる。
別の実施形態では、受信データチャンクの先頭フィンガープリントが先頭SHAテーブル内になく、受信データチャンクの末尾フィンガープリントが末尾SHAテーブル内にない場合に限り、データのバーストではなく、受信データチャンクが格納のためにPBA(物理ブロックアドレス)に書き込まれる。しかしながら、受信データチャンクの先頭フィンガープリントが先頭SHAテーブル内にある、または受信データチャンクの末尾フィンガープリントが末尾SHAテーブル内にある場合、先頭フィンガープリントまたは該末尾フィンガープリントは、格納されている先行操作データチャンクの場所を突き止めるために使用される。先行操作データチャンク及び受信データチャンクは、受信データチャンクが先行操作データチャンクに含まれないデータのバーストを含む場合を除き、ほぼ一致する。受信データチャンクをストレージに書き込む代わりに、バーストは、次いでPBA(物理ブロックアドレス)に格納される。
本明細書での本開示の性質及び優位点のさらなる理解は、明細書の残りの部分及び添付図面を参照することによって理解し得る。本開示のさらなる特徴及び優位点、ならびに本開示の多様な実施形態の構造及び作用は、添付図面に関して以下に詳細に説明される。図面中、同じ参照番号は、同一のまたは機能上類似した要素を示す。
本開示の例示的な実施形態と使用可能なストレージクラスタシステム例を示す。 本開示の例示的な実施形態に係るチャンクベースデータ重複排除システムの簡略な概要を示す。 本開示の例示的な実施形態に係るチャンクベースデータ重複排除方法を示す。 先行データチャンクに比してデータバーストを有する新規データチャンクを示す。 本開示の例示的な実施形態に係るチャンクベースデータ重複排除をバースト符号化するためのコンピューティングデバイス例の一般的な構成要素の論理セットの1つの組み合わせを示す。 本開示の例示的な実施形態に係るチャンクベース重複排除をバースト符号化するための分散システムの1つの組み合わせを示す。
ここで、その例を添付図面に示す本開示の実施形態を詳細に参照する。本開示は、実施形態と併せて説明されるが、それらが本開示をこれらの実施形態に限定することを意図しないことを理解されたい。むしろ、本開示は、添付の特許請求の範囲によって定義される本開示の精神及び範囲に含まれ得る代替物、修正、及び均等物を含めることを意図する。さらに、以下の本開示の詳細な説明では、本開示の完全な理解を提供するために、多数の具体的な詳細が説明される。しかしながら、これらの具体的な詳細がなくても本開示を実施し得ることが当業者に明らかになる。他の例では、本開示の態様を不必要に分かりづらくしないように、周知の方法、手順、構成要素、及び回路は、詳細に説明していない。
図1は、本開示の例示的な実施形態と使用可能なストレージクラスタシステム100の例を示す。
図1では、ストレージクラスタシステム100は、複数のスロット104を有する筐体102を含む。各スロット104は、各ストレージノード106内に内部不揮発性ソリッドステートメモリ108を有するストレージノード106を受け入れるサイズに作られている。このストレージの配置は、本開示の実施形態に従って、局所化されたストレージまたはストレージエリアネットワークを提供する可能性がある。
したがって、そのようなストレージエリアネットワークは、特定のシステムのストレージメモリ要件に依存する柔軟な構成を提供するために、複数のストレージノード106と、複数のストレージクラスタシステム100とを含む可能性がある。特定の筐体の中のスロット104の数に応じて、適切に通信可能に結合された1つ以上のストレージクラスタシステム100で十分である可能性がある。一例として、ここには4つのスロット104しか示していないが、筐体102は、16のそのようなスロット104を含む可能性もある。
当業者は、ストレージメモリ要件を満たすために、16スロットの2つのクラスタが必要に応じて結合され得ることを理解する。さらに、その数未満のスロット104を用いる可能性もある。図1では、4つのスロット104が示される。4つのスロットのうちの2つにはストレージノード106が存在する。一方、他の2つのスロット104A及び104Bは空である。
図1で、ストレージクラスタシステム100の筐体102は、スイッチファブリックモジュール110と、冷却システム112とをさらに含む。スイッチファブリックモジュール110は、1つ以上のネットワークスイッチを介してストレージノード106を相互接続する。複数のノード全体にデータを拡散することによって、より高い総合的なスループットを達成し得る。図示していないが、スイッチファブリックモジュール110は、冗長性を提供するための追加のファブリックモジュール、及びネットワーク全体でデータを送るためのルーティングエンジンも含む可能性がある。冷却システム112は、単一のファントレイ、または各ファントレイが2つ以上のファンを含み、各ファントレイがファントレイコントローラによって制御される複数のファントレイを含む可能性がある。
当業者は、ストレージノードの配置が順番になっている必要はなく、不連続である場合があることを理解する。ストレージノード106はホットプラグできることに留意されたい。したがって、各ストレージノード106は、システムの電源を切らずに、またはシステムの動作に対する重大な中断なしにスロット104の中に差し込む、またはスロット104から取り外すことができる。ストレージノード106の差し込みまたは取り外しが検出されると、システムは自動的に再構成される。
図1に示すように、ストレージノード106は、不揮発性ランダムアクセスメモリ(NVRAM)及びフラッシュメモリ(図示せず)などの比較的に高速の不揮発性ソリッドステートメモリを含む可能性がある内部ソリッドステートメモリ108を含む。また、ストレージノード106は、プロセッサ114と、メモリ116とを含む。ここで、プロセッサ114による実行のための1行以上のコードを含む場合がある命令は、本開示の例示的な実施形態に従ってメモリ116に格納できる。
図1のストレージクラスタシステム100は、例えば一次ストレージに利用される可能性がある。別の例として、ストレージクラスタシステム100は、バックアップシステムであってよい。どちらの場合も、ストレージメモリの容量はスケーラブルであり、システム要件に基づいて増加または削減することができる。例えば、ストレージクラスタシステム100は、1ペタバイト(250バイト)のストレージ容量を有するように構成される可能性がある。以下の図に関して説明するように、そのようなシステムは、本開示の実施形態に従って上昇した重複排除率を有する場合がある。
チャンクベース重複排除システム
従来のチャンクベース重複排除システムは、重複排除のためにコンテンツベースのアドレス指定を活用する。そのようなシステムでは、各データファイルは最初に固定長チャンクまたは可変長チャンクのどちらかにセグメント化される。セグメント化されると、チャンクは一意の論理ブロックアドレス(LBA)を割り当てられる。暗号論的セキュアハッシュアルゴリズム(SHA)は、各データチャンクの一意なフィンガープリントとして使用され得る。SHAアルゴリズムの例は、SHA−1、SHA−2などを含む可能性がある。ここで、f(D)は、データチャンクDのフィンガープリントを示すために使用される可能性がある。簡潔にするために、f(D)は単にfで示される場合がある。
チャンクベース重複排除システムは、2つのマッピングテーブル、LBAテーブル及びSHAテーブルのマップを維持する可能性がある。LBAテーブルは(Iで示す)LBAを(fで示す)対応するフィンガープリントにマッピングする。この関係は、[I:f]で表される。SHAテーブルは、記憶媒体の中に、基準カウントとともにフィンガープリントfから物理ブロックアドレス(PBA)へのマッピングを格納する。この関係は、[f:p,c]で表され、ここではfはフィンガープリントであり、pはPBAであり、cは基準カウントである。
重複排除書き込み
入力:[LBA:I、データチャンク:D]
1.フィンガープリントを計算するf=f(D)。
2.新規エントリ[I:f]をLBAテーブルに加える。
3.fがSHAテーブルに存在する場合、次いでその基準カウントcを1、増加させる。
4.それ以外の場合、Dを圧縮し、利用可能なPBApに書き込み、SHAテーブル内で新規エントリ[f:p,c=1]を作成する。
重複排除読み取り
入力:LBA:I
1.LBAテーブルから[I:f]を取り出す。
2.SHAテーブルから[f:.p,c]を取り出す。
3.PBApでデータチャンクDを読み取る(及び展開する)。Dを返す。
重複排除削除
入力:LBA:I
1.LBAテーブルから[I:f]を取り出す。
2.SHAテーブルから[f:p,c]を取り出し、c←c−1を設定する。
3.c=0の場合、次いで削除のために[f:.p,c]とpの両方にマークを付ける。
4.削除のために[I:f]にマークを付ける。
高性能システムストレージでは、用い得る圧縮アルゴリズムは、LZ77と、LZOなどのその異形と、任意選択でハフマンコーディングとを含む。LBA読み取り問い合わせを受け取ると、オペレーティングシステムは、LBAテーブルからフィンガープリのfを取り出し、次いでSHAテーブルからPBApを取り出し、媒体PBApで(圧縮された)データチャンクを読み出し、データを元の形式に展開する。
LBA削除要求を受け取ると、オペレーティングシステムは、第1にLBAテーブルからフィンガープリントfを検索し、第2にSHAテーブル上で1、対応する基準カウントcを削減し、最後にLBAテーブル内の対応するエントリを削除する。使われなくなったデータチャンクを除去するために、ガベージコレクションが周期的に実施される。特に、基準カウントcがゼロであるとき、対応するデータチャンクは媒体から消去され、そのSHAエントリは削除される。
以下は、各パラメータのバイト長を示すための固定長4Kの重複排除例である。平均重複排除率が3であり、平均圧縮率が2である、容量が1ペタバイト(250バイト)のストレージシステムを考える。一般に、システムは250/(4096/2)=239ブロックの一意の4Kバイトデータ、及び3x239ブロックの未処理の4Kバイトデータを格納できる。その結果、LBAは6バイトで表され、一方PBAは5バイトで十分である。SHA−1フィンガープリントは、20バイトをとる。基準カウントcは(人気のあるブロックが255回を超えて参照され、第2の同一のSHAエントリが1にカウンタがリセットされて作成される、カウンタオーバフローのまれな可能性を回避するために)1バイトをとる。
図2の例では、重複排除システム200は、重複排除208のために、ファイルシステム204に(新規データチャンク203として表される)1つ以上のファイルを作成するように命令するアプリケーション202を含む可能性がある。本開示の実施形態に従って、重複排除208は、冗長なまたは二重のデータを削減または排除し、データ作成及び格納の間にまたはストレージクラスタシステム100(図1)によるデータバックアップの間にインラインで冗長なまたは二重のデータを削減または排除し得る。
一例では、重複排除208は、データチャンクがストレージクラスタシステム100での格納のために作成または送信されるとき、インラインで起こる場合がある。また、重複排除208は、データ場格納またはバックアップされた後に後処理で起こる場合もある。冗長データの排除能力を制限してきた従来の重複排除システムとは異なり、特に受信データチャンク及び先行データチャンクがただ1回のバーストで変わるときに、格納のための冗長なまたは二重のデータの量を認識し、制限することによって、本開示はデータへの迅速なアクセスを容易にし、コンピュータ技術が改善されるようにストレージメモリ能力を高める。
ここで、新規データチャンクDが作成された後、データチャンクDは分割のために分割モジュール206に送信される。ここで使用するように、新規データチャンクDは、先行データチャンクD及びバーストBから成り立ち、つまりD=D+Bであることに留意されたい。具体的には、新規データチャンクDは、先行データチャンクDから、単一のデータのバーストB分、変わる場合がある。これは、データの作成が意図的であるため、ファイルの修正を、ランダムなバイトよりむしろ複数のバーストとして特徴付けることができるためである。さらに、ファイルは通常、4〜8Kバイトの平均長の小さいチャンクにセグメント化される。したがって、チャンク単位の修正は、単一バーストであると仮定される場合がある。特に、バーストBは4つの要素によって定義され、
B={開始位置、終了位置、バースト長、バーストデータ}
ここで、終了位置データバイトはカウントされない。上記の定義を明確にするために、ここでいくつかの例が提供される。B={8、10、0、φ}は、受信チャンクが基準チャンク場所8及び9から2つのバイトを削除することを示し、B={8、8、1、a}は、受信チャンクが、基準チャンク場所8で1つのバイトを挿入することを示し、B={8、10、3、abc}は、位置8及び9の2つのバイトを(基準チャンク場所8の)3つのバイトabcに置換することを示す。このバースト符号化のシステム及び方法の優位点は、それが、2つの類似するチャンクが等しい長さであることを要求しない点である。当業者は、類似度が変わる可能性があることを理解する。
図2の例では、分割モジュール206は新規データチャンクD203を受け取り、それを少なくとも1つの先頭部分及び1つの末尾部分に分割する。図示しないが、複数のデータチャンクが分割モジュール206によって受け取られる場合がある。受け取られると、各データチャンクは、少なくとも1つの先頭部分及び1つの末尾部分に同様に分割される。以下に説明するように、先頭部分はデータチャンクの最も左側の部分を表す。一方、末尾部分はデータチャンクの最も右側の部分を表す。例えば、新規データチャンクD203が11011100である場合、先頭部分は110である場合があり、一方末尾部分は100である可能性がある。
新規データチャンク203が分割された後、重複排除208はハッシュ関数210を使用して、先頭部分のフィンガープリントを生成する。この先頭部分のフィンガープリントは、受信データチャンクの先頭部分を一意に識別する。また、先頭部分と同様に、重複排除208はハッシュ関数210を使用して、末尾部分のフィンガープリントが新規データチャンクD203を一意に識別するように末尾部分のフィンガープリントを生成する。さらに、新規データチャンク203の全体のフルフィンガープリントも生成される。
末尾部分の及び先頭部分のフィンガープリントが生成された後、重複排除208は、先頭SHA(セキュアハッシュアルゴリズム)テーブル214及び末尾SHA(セキュアハッシュアルゴリズム)テーブル216を使用して、新規データチャンクD203の先頭フィンガープリントが先頭SHAテーブル214内にあるかどうか、または新規データチャンクD203の末尾フィンガープリントが末尾SHAテーブル216内にあるかどうかを判断する。先頭SHAテーブル214は、データチャンクの先頭部分のフィンガープリントの同じデータチャンクのフルフィンガープリントへのマッピングを含む。例えば、ストレージクラスタシステム100に以前に格納された先行データチャンクDの場合、先頭SHAテーブル214は、フルフィンガープリントがデータチャンクDの全体のフィンガープリントであるフルフィンガープリントDにマッピングされたデータチャンクDの先頭部分のフィンガープリントを含むであろう。
ここで、末尾SHAテーブル216は、データチャンクの末尾部分のフィンガープリントを、同じデータチャンクのフルフィンガープリントにマッピングすることを含む。例えば、ストレージクラスタシステム100に以前に格納された先行データチャンクDの場合、末尾SHAテーブル216は、フルフィンガープリントDにマッピングされたデータチャンクDの末尾部分のフィンガープリントを含むであろう。
対応するhSHAテーブル214またはtSHAテーブル216の先頭フィンガープリントまたは末尾フィンガープリントの場合、重複排除208は先頭フィンガープリントまたは末尾フィンガープリントを利用して、格納されている先行データチャンクDを識別する。上述のように、新規データチャンク203は、先行データチャンクD内のデータについてデータバーストBを含む。それ以外の場合、新規データチャンク203及び先行データチャンクDは同じである。重複排除208は、次いでこのバーストBがなんであるのかを判断し、PBA(物理ブロックアドレス)に書き込む(または読み取るまたは削除する)。この時点で、重複排除208は次いで基準LBA(rLBA)218を用いて、論理アドレスを先行データチャンクDのフィンガープリント、及びバーストデータBが格納される物理ブロックアドレスにマッピングする。
新規データチャンクD203が以前に格納されたデータチャンクDに類似しているかどうかを判断する従来の及びきわめて実行が困難な方法は、すべての既存のデータチャンクを用いた徹底的な比較による。新規データチャンクは格納されている先行データチャンクのすべてに比較されなければならないので、そのようなシステムは多大な時間を要する。データチャンクに単一のフィンガープリントを作成する従来のシステムとは異なり、本実施形態は、書き込まれるデータチャンクごとに先頭フィンガープリント及び末尾フィンガープリントを作成する。
新規(データバーストによってわずかに修正された)データチャンクが到着すると、わずかに修正された新規データチャンクの先頭フィンガープリントまたは末尾フィンガープリントのどちらかが、先行操作チャンクの先頭フィンガープリントまたは末尾フィンガープリントと照合される。このようにして、先行操作チャンクは識別され、新規データチャンクの全体を格納するよりむしろ、先行操作のチャンク及び新規データチャンクと先行操作との違い(つまり、データバースト)が格納される。これは、2つのデータチャンクがほぼ同一であるのか、それともその一方が他方のわずかに修正されたバージョンであるのかを判断することができず、したがって別のほぼ同一のデータチャンクの格納を生じさせる従来の重複排除システムと異なる。
この種の可変長セグメント化手法に対する1つの従来の手法は、データバイトのスライディングウィンドウごとにラビンフィンガープリントを計算し、関連するラビンフィンガープリントが、例えばいくつかの最下位ビットがすべてゼロであるなどの特定の基準を満たすとチャンク境界を設定することによる。しかしながら、計算されるフィンガープリントの数がデータ長と同程度に大きいため、ラビンフィンガープリントセグメント化は計算コストが高い。実際には、すべての既存可変長セグメント化方法は、各バイトと関連する連続する数のバイトについて特定の指標を計算する。
バースト符号化された重複排除書き込み
図3は、本開示の例示的な実施形態に係るチャンクベースデータ重複排除方法300を示す。
図3では、ブロック301で、重複排除方法300は、格納のために複数のデータチャンクを受け取ることによって開始する。データチャンクは、受信データセット、またはバックアップ環境におけるバックアップファイルなどの入力データストリームからである場合がある。
ブロック302で、受信データチャンクは、1つ以上の実施態様に従って分割モジュール206(図2)によって分割される。1つのそのような実施態様では、第1のステップとして、長さIの新規データチャンクDが、分割モジュール206によって受け取られる。第2のステップで、新規データチャンクDは少なくとも3つの部分[D、D、D]に分割される。Dは、データチャンクDの先頭、つまり最も左側の部分を表す。Dは中央の部分を表し、Dは、データチャンクDの末尾、つまり最も右側の部分を表す。この特定の実施態様では、D及びDの長さが等しくImin/2となるように分割され、ここでIminは、事前に定義された最小チャンク長を示す。
ブロック304で、フィンガープリント212(図2)は、ハッシュ関数210(図2)と協調して、新規データチャンクのフィンガープリントを生成し、末尾部分D及び先頭部分Dが計算される。つまり、フィンガープリントf=f(D)、f=f(D)、及びf=f(D)が決定される。
決定ブロック306で、方法300は、データチャンクのフィンガープリントfがSHAテーブルに存在するかどうかを判断する。
ブロック308で、fがSHAテーブルに存在する場合、次いでそのカウンタは1、増加する。結果として、ブロック310で、新規エントリ[I:f]がLBAテーブル内で作成され、プロセスは終了ブロック312で終了する。
決定ブロック306を参照し直すと、fがSHAテーブル内にない場合、チャンクベースデータ重複排除方法300は決定ブロック314に進む。この決定ブロック314で、先頭フィンガープリントfがヘッドSHAテーブル214内にあり、その対応するカウンタがc=0であるかどうかが判断される。ここで、2つのテーブルしか用いない従来のシステムとは異なり、本開示の一実施形態は、3つの追加のテーブル、先頭SHA(hSHA)テーブル214、末尾SHA(tSHA)、及び基準LBA(rLBA)テーブル218(図2)を用いる。当業者は、2つのテーブル(SHA及びLBA)は、格納されているデータチャンクのフルフィンガープリントにしか関連しないため、レガシーシステムはデータ重複排除を厳しく制限する場合があることを認識する。受信データチャンクをほぼ二重のデータチャンクとして認識できない場合、受信データチャンクの全体が格納されることになる。図4にこの状態を示す。
図4では、以前に格納された先行データチャンク402を示す。また、先行データチャンク402のフィンガープリント404も示す。406に示すように、単一データバーストBが先行データチャンク402に加えられると、先行データチャンク402の全体的なフィンガープリントが変更され、それから新規データチャンクフィンガープリント408になる。したがって、新規データチャンクフィンガープリント408を使用する検索は先行データチャンク402を明らかにせず、新規データチャンク406と先行データチャンク402の両方が、たとえ単一バーストB分しか変化しないとしても、新規データチャンク406全体を格納させる。
レガシーシステムとは異なり、本開示の実施形態は、先行データチャンク402及び新規データチャンク406がほぼ同一であり、単に単一のバーストB分異なるにすぎないことを認識する。次いで、新規データチャンクの全体を格納するのではなく、その単一のバーストが格納される。また、当業者は、3つの追加のテーブル、基準LBA(rLBA)テーブル、先頭SHA(hSHA)テーブル、及び末尾SHA(tSHA)テーブルを使用することによって、レガシーシステムの上述の不利な点が克服されることも認識する。
ここで、基準LBA(rLBA)テーブルは、[I:f’,p~]の形を取り、ここではPBAp~は、フィンガープリントf’を有する基準データD’についてLBAデータDの差を反映するバーストデータBを含む。先頭SHA(hSHA)テーブルは形[f:f,c]をとり、ここではf=f(D)、f=f(D)、であり、cはその基準カウントを示す。末尾SHA(tSHA)テーブルは[f:f,c]の形をとり、ここではf=f(D)、f=f(D)であり、cはその基準カウントを示す。
図3で、決定ブロック314を参照し直すと、fが先頭SHAテーブル内にある場合、次いで方法300はブロック316に進む。
ブロック316で、方法300は、hSHAテーブルから先頭フィンガープリント/先行データチャンクのフィンガープリントエントリ[f:f‘、c]を取り出し、ブロック318で、カウンタc=1を設定し、その後方法300は決定ブロック320に進む。
決定ブロック314を参照し直すと、先頭フィンガープリントfがhSHAテーブル内にない場合、方法300は、末尾フィンガープリントfが末尾SHAテーブル内にあるかどうかが判断される決定ブロック322に進む。末尾SHAテーブル内にある場合、方法300はブロック324に進む。
ブロック324で、方法300は、tSHAテーブルから末尾フィンガープリント/先行データチャンクのフィンガープリントエントリ[f:f‘,c]を取り出し、ブロック326で、カウンタc=1を設定し、その後方法300は決定ブロック320に戻る。
決定ブロック320で、f’がSHAテーブル内にある場合、次いでブロック330で、先行データチャンクのフィンガープリント/物理ブロックアドレスエントリ[f’:p’,c’]がSHAテーブルから取り出され、ブロック322でc’←c’+1を設定する。
ブロック334で、方法300はPBA(物理ブロックアドレス)p’から先行データチャンクD’を読み取る(及び展開する)。
ブロック336で、方法300は、新規データチャンクD203(図2)と先行データチャンクD’との間のバーストBを決定し、そのバーストBを次に利用可能なPBApに書き込む。
ブロック338で、方法300は、rLBAテーブル内で新しい論理ブロックアドレス/以前のデータフィンガープリント/バースト物理ブロックアドレスエントリ[I:f‘,p]を作成する。
決定ブロック320を参照し直すと、先行データチャンクのフィンガープリントf’がSHAテーブル内にない場合、処理はブロック328に進む。同様に、決定ブロック322で、末尾フィンガープリントf2が末尾SHAテーブル内にない場合、処理はブロック328にも進む。
ブロック328で、方法300は、先頭フィンガープリント/新規データチャンクのフルフィンガープリントhSHAエントリ[f:f,c=0]、及び末尾フィンガープリント/新規データチャンクのフルフィンガープリントtSHAエントリ[f:f,c=0]を作成する。
ブロック340で、方法300は、新規データチャンクD203(図2)の論理ブロックアドレス/フルフィンガープリントLBAエントリ[I:f]を作成する。
ブロック342で、方法300は新規データチャンクDを圧縮し、利用可能なPBApに書き込み、ブロック344で、新規データチャンクDの新規SHAエントリ[I:p,c=1]を作成する。
ブロック316及び324、ならびに関連ブロックで、fがcSHAテーブル内にあり、対応するc=1であるとき、新規の受信データチャンクD及び既存のチャンクD*はともに以前のチャンクD’を参照している。D=D*であり、Dのより多くの複製がまもなく到着する可能性が高い。この目的を達成するために、Dの将来の複製が従来のLBAテーブル及びSHAテーブルを通して直接的に重複排除できるように、Dの新規フィンガープリントを作成する方がより効率的である。
また、LBAは2つのテーブル、つまりLBAテーブル及びrLBAテーブルに分割されることにも留意されたい。決定ブロック320で[f‘:p’,c’]が存在しない可能性bは、非同期削除プロセスに起因する。対照される読み取り動作及び削除動作は、以下で一目瞭然である。バースト符号化重複排除書き込みアルゴリズムを説明してきたが、他の適切なバースト符号化重複排除書き込みアルゴリズムも利用し得る。
バースト符号化重複排除読み取り
バースト符号化重複排除読み取りの1つの例示的な実施形態及びアルゴリズムは以下のとおりである。入力:LBA:I
1.IがLBAテーブル内にある場合、次いで
(a)LBAテーブルから[I:f]を取り出す。
(b)SHAテーブルから[f:p,c]を取り出す。
(c)PBApでデータチャンクDを読み取る(及び展開する)。Dを返す。
2.さもなければ、
(a)rLBAテーブルから[I:f’、p]を取り出す。
(b)PBApからBを読み取る。
(c)SHAテーブルから[f‘:p’,c’]を取り出す。
(d)PBAp’で基準データチャンクD’を読み取る(及び展開する)。
(e)D’についてのバーストBを適用し、Dを生じさせる。Dを返す。
バースト符号化重複排除削除
バースト符号化重複排除削除の1つの例示的な実施形態及びアルゴリズムは以下のとおりである入力:LBA:I
1.IがLBAテーブル内にある場合、次いで
(a)LBAテーブルから[I:f]を取り出す。
(b)SHAテーブルから[f:p,c]を取り出し、c←c−1を設定する。
(c)c=0の場合、次いで削除のために[f:p,c]とpの両方にマークを付ける。
(d)削除のために[I:f]にマークを付ける。
2.さもなければ、
(a)rLBAテーブルから[I:f,p]を取り出す。
(b)SHAテーブルから[f:p,c]を取り出し、c←c−1を設定する。
(c)削除のためにpにマークを付ける。
(d)削除のために[I:f’、p]にマークを付ける。
バースト符号化重複排除書き込み、読み取り、及び削除のアルゴリズムを説明してきたが、他の適切なバースト符号化重複排除書き込み、削除、及び読み取りのアルゴリズムを用い得る。上記に開示した実施形態では、上記の削除プロセスは使われなくなったhSHAエントリまたはtSHAエントリの削除を説明していないことに留意されたい。代わりに、hSHAテーブル及びtSHAテーブルは、fがSHAテーブル内で存在しなくなるようにエントリ[fi:f,ci](i=0,2)を削除するために、周期的に走査される場合がある。
この理由から、hSHAエントリ[f0:f,c0]及びtSHAエントリ[f2:f,c2]エントリからSHAエントリ[f,p,c]の削除動作に対する非同期更新のため、ステップ3.bは書き込みプロセス中に失敗する場合がある。そのような場合、基準書き込みは無効と見なされ、新規書き込みがその後実行される。本開示の別の優位点は、本開示のバースト符号化重複排除方式がレガシー重複排除方式と両立し得る点である。つまり、レガシー方式の任意の重複排除チャンクは、新しい方式でも重複排除される。
図5は、本開示の例示的な実施形態に従ってバースト符号化チャンクベースデータ重複排除を実装するために利用し得る例のコンピューティングデバイス500の一般的な構成要素の論理セットの1つの組み合わせを示す。この例示的な実施形態では、デバイスは、メモリデバイス504に格納できる命令を実行するためのプロセッサ502を含む。デバイスは、プロセッサ102による実行のためのプログラム命令用の第1のデータストレージ、画像またはデータ用の別個のストレージ、他の構成要素と情報を共用するための着脱式メモリなど、多様なメモリタイプ、データストレージ、または非一過性のコンピュータ可読記憶媒体を含む可能性がある。ポータブルメディアプレーヤなどのデバイスは、音声スピーカを通してなどの他の手段を介して情報を伝達する可能性はあるが、デバイスは、例えばLCD(液晶ディスプレイ)またはタッチスクリーンなど、ディスプレイ要素(506)を含む場合もある。
多くの実施形態のデバイスは、ユーザーから入力信号を受信する少なくとも1つの入力装置512を含む可能性がある。この入力要素は、プッシュボタン、タッチパッド、タッチスクリーン、ホイール、ジョイスティック、キーボード、マウス、キーパッド、またはユーザーがそれを通して対話するまたはデバイスにコマンドを発行することができる任意の他のそのようなデバイスまたは要素である可能性がある。いくつかの態様では、デバイスはボタンを除外する可能性があり、視覚コマンド及び音声コマンドを通してだけ制御される可能性があり、その結果ユーザーは入力装置と接触することなくデバイスを制御できる。他の実施形態では、コンピューティングデバイスは、WiFi、Bluetooth、RF、有線または無線通信システムを含む多様なネットワークを介して通信するための1つ以上のネットワークインタフェース要素508を含む場合がある。多くの実施形態でのデバイスは、インターネットなどのネットワークと通信することができ、他のそのようなデバイスと通信できる場合がある。例のデバイスは、音声出力を生成するための1つ以上のスピーカ、及び/またはユーザーからの音声コマンドなど、音声入力を受け取るための1つ以上のマイクを含む場合もあるなど、1つ以上の音声要素510を含む場合がある。
図6は、多様な実施形態を実装できる環境600の例を示す。多様な実施形態に従って態様を実装するための本明細書に説明する例の環境は、おもにウェブサービス及びクラウドコンピューティングに関するウェブベースであるが、ウェブベースの環境は説明のために使用されているが、多様な実施形態を実装するためには異なる環境も必要に応じて使用し得ることを理解されたい。多様な実施形態とともに用いるクライアントデバイス602は、少なくとも1つの適切なネットワーク604を介して要求、メッセージ、または情報を送信及び受信し、デバイスのユーザーに情報を伝え直すよう作動する任意の適切なデバイスを含む場合がある。
そのようなクライアントデバイスの例は、パーソナルコンピュータ、スマートフォン、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、パーソナルデータアシスタント、電子ブックリーダー等を含む。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、または任意の他のそのようなネットワーク、またはその組み合わせを含む任意の適切なネットワークを含む場合がある。そのようなシステムに使用する構成要素は、少なくとも部分的に選択されたネットワーク及び/または環境のタイプに依存する場合がある。ネットワークを介した通信は、有線接続または無線接続、及びその組み合わせによって有効にできる。少なくともいくつかの実施形態では、クライアントデバイスからの要求は、要求の宛先アドレスに関連するインタフェース層606で受け取ることができ、インタフェース層は、ルータ、負荷分散装置、アプリケーションプログラミングインタフェースなどの構成要素を含む場合がある。インタフェース層は、要求を受け取り、要求のための直接的情報を、1つ以上のウェブサーバ608及び/または1つ以上のアプリケーションサーバ610などの1つ以上のコンピューティングリソースに向けることができ、コンピューティングリソースは、少なくともいくつかの実施形態で1つ以上のデータストアまたはデータベース612のデータを使用し、要求を処理できる。つなぐまたはそれ以外の場合構成し得、本明細書に説明し、示唆するようなタスクを実行するために対話できる、いくつかのアプリケーションサーバ、層、または他の要素、プロセス、もしくは構成要素がある場合があることを理解されたい。
本明細書で使用するように、データストアは、任意の標準的な分散環境またはクラスタ環境における任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス、及びデータ記憶媒体を含む場合がある、データを格納する、データにアクセスする、及びデータを取り出すことができる任意のデバイスまたはデバイスの組み合わせを指す。データストアは、本開示の実施態様を実装し、したがってそのような実装を非ジェネリックにするように特にプログラムされ得る。サーバは、クライアントデバイスのために1つ以上のアプリケーションの態様を実行し、アプリケーションのためにデータアクセス及びビジネスロジックの大半を処理するために必要に応じてデータストアと統合するための任意の適切なハードウェア及びソフトウェアを含む場合がある。アプリケーションサーバは、データストアと協力してアクセス制御サービスを提供し、例ではHTML、DHTML、XML、または別の適切な構造化言語の形でウェブサーバによってユーザーに提供され得る、ユーザーに転送されるテキスト、グラフィック、音声、及び/またはビデオなどのコンテンツを生成できる。すべての要求及び応答の処理、ならびにクライアントデバイスとリソースとの間でのコンテンツの配信は、ウェブサーバによって処理できる。本明細書に説明する構造化コードは、本明細書の他の箇所に説明するように、任意の適切なデバイスまたはホストマシンで実行できるので、ウェブサーバ及びアプリケーションサーバは必須ではなく、例の構成要素にすぎないことを理解されたい。各サーバは、通常、そのサーバの一般的な管理及び動作のための実行可能なプログラム命令を提供するオペレーティングシステムを含み、サーバのプロセッサによる実行時に、サーバがその意図した機能を実行することを可能にする命令を格納する非一過性のコンピュータ可読媒体を含む。
本開示の実施形態は、それらを非ジェネリックにするように特にプログラム及び実装し得る。実施形態は、ASIC(特定用途向け集積回路)を使用し得る、及び/または複合プログラマブルロジックデバイス(CPLD)及びフィールドプログラマブルゲートアレイ(FPGA)を含むプログラマブルロジックデバイス(PLD)を使用し、特別にプログラムされ得る。一実施形態では、環境は、1つ以上のコンピュータネットワークまたは直接接続を使用し、通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を使用する分散コンピューティング環境である。したがって、本明細書の多様なシステム及びサービスの表現は、限定的ではなく、例示的と解釈されるべきである。
上記は、本開示の例示的な具体的な実施形態の完全な説明であるが、追加の実施形態も考え得る。したがって、上記説明は、添付の特許請求の範囲及び均等物のその完全な範囲によって定義される、本開示の範囲を限定すると解釈されるべきではない。

Claims (25)

  1. 重複排除方法であって、
    格納のために複数の受信データチャンクを受け取ることと、
    前記複数の受信データチャンクのうちの1つを少なくとも1つの先頭部分及び1つの末尾部分に分割することと、
    前記先頭部分のフィンガープリントを生成することであって、前記先頭フィンガープリントは、前記受信データチャンクの前記先頭部分を一意に識別する、前記生成することと、
    前記末尾部分のフィンガープリントを生成することであって、前記末尾フィンガープリントは、前記受信データチャンクの前記末尾部分を一意に識別する、前記生成することと、
    先頭SHA(セキュアハッシュアルゴリズム)テーブル内で、それぞれのデータチャンクごとに先頭フィンガープリントをフルフィンガープリントにマッピングすることと、
    末尾SHA(セキュアハッシュアルゴリズム)テーブル内で、それぞれのデータチャンクごとに末尾フィンガープリントをフルフィンガープリントにマッピングすることと、
    前記受信データチャンクの前記先頭フィンガープリントが前記先頭SHAテーブル内にあるかどうか、または前記受信データチャンクの前記末尾フィンガープリントが前記末尾SHAテーブル内にあるかどうかを判断することと、
    そのような場合、1)前記受信データチャンクの前記先頭フィンガープリントまたは前記受信データチャンクの前記末尾フィンガープリントを使用して、格納されている先行操作データチャンクを識別することであって、前記受信データチャンクが前記先行データチャンク内の前記データに加えてデータのバーストを含む点を除き、前記先行操作データチャンク及び前記受信データチャンクはほぼ同一である、前記識別することと、
    2)前記受信データチャンクと前記先行操作データチャンクとの間の前記データのバーストを決定することと、
    3)PBA(物理ブロックアドレス)pで前記データのバーストをストレージに書き込むことと
    を含む、前記方法。
  2. 前記受信データチャンクの前記先頭フィンガープリントが前記先頭SHAテーブル内になく、前記受信データチャンクの前記末尾フィンガープリントが前記末尾SHAテーブル内にない場合、次いで前記受信データチャンクを利用可能なPBApに格納のために書き込み、上記1)、2)、及び3)を省略する、請求項1に記載の方法。
  3. 論理ブロックアドレスを、前記先行操作データチャンクのフルフィンガープリントに、及び前記データのバーストを格納する前記PBApにマッピングするエントリを有する基準LBA(論理ブロックアドレス)テーブルを提供すること
    をさらに含む、請求項1に記載の方法。
  4. 前記先頭SHAテーブル内でエントリを作成することであって、前記先頭SHAテーブル内の前記エントリは、前記先頭フィンガープリント及び前記受信データチャンクの前記フルフィンガープリントをマッピングする、前記作成することと、
    前記末尾SHAテーブル内でエントリを作成することであって、前記末尾SHAテーブル内の前記エントリは、前記末尾フィンガープリント及び前記受信データチャンクの前記フルフィンガープリントをマッピングする、前記作成することと
    をさらに含む、請求項2に記載の方法。
  5. LBAテーブル内で新規エントリを作成することであって、前記新規LBA
    エントリは、論理ブロックアドレスを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと
    をさらに含む、請求項4に記載の方法。
  6. SHAテーブル内でエントリを作成することであって、前記SHAテーブル内の前記エントリは、前記論理ブロックアドレスを前記受信データチャンクが格納されている前記PBApにマッピングすること
    をさらに含む、請求項5に記載の方法。
  7. 前記受信データチャンクのフルフィンガープリントを生成することであって、前記フルフィンガープリントは、前記受信データチャンクの全体を一意に識別すること
    をさらに含む、請求項1に記載の方法。
  8. フルフィンガープリントをPBAにマッピングするSHAを調べて、前記受信データチャンクの前記フルフィンガープリントが、格納されている先行操作データチャンクに一致するかどうかを判断し、一致する場合、LBAテーブル内で新規エントリを作成することであって、前記LBAテーブル内の前記新規エントリは、論理ブロックアドレスを前記受信データチャンクの前記フルフィンガープリントにマッピングすること
    をさらに含む、請求項7に記載の方法。
  9. 前記先頭フィンガープリントまたは前記末尾フィンガープリントを使用して、格納されているデータチャンクを識別することは、
    前記先頭SHAテーブル内で、前記先行操作データチャンクの前記先頭フィンガープリントを、前記受信データチャンクの前記先頭フィンガープリントと同じであるとして識別することと、
    前記先行操作データチャンクの前記フルフィンガープリントを、前記先行操作データチャンクが格納されているPBAにマッピングするエントリを有するSHAテーブルを提供することと、
    前記先行操作データチャンクの前記フルフィンガープリントを使用して、前記PBAストレージから前記先行操作データチャンクを取り出すこと
    による、請求項1に記載の方法。
  10. 前記先頭フィンガープリントまたは前記末尾フィンガープリントを使用して、格納されているデータチャンクを識別することは、
    前記末尾SHAテーブル内で、前記先行操作データチャンクの前記末尾フィンガープリントを、前記受信データチャンクの前記末尾フィンガープリントと同じであるとして識別することと、
    前記先行操作データチャンクの前記フルフィンガープリントを、前記先行操作データチャンクを格納するPBAにマッピングするエントリを有するSHAテーブルを提供することと、
    前記先行操作データチャンクの前記フルフィンガープリントを使用して、前記PBA格納場所から前記先行操作データチャンクを取り出すことと
    による、請求項1に記載の方法。
  11. 前記先行データチャンクの前記フルフィンガープリントが前記SHAテーブル内にない場合、
    前記先頭SHAテーブル内で新規エントリを作成することであって、前記新規エントリは前記先頭フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、LBAテーブル内で新規エントリを作成することであって、前記新規LBAエントリは、論理ブロックアドレスを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、前記受信データチャンクをPBAに格納することと、前記SHAテーブル内で新規エントリを作成することであって、前記新規SHAテーブルエントリは前記論理ブロックアドレスを前記PBAにマッピングする、前記作成すること
    請求項9に記載の方法。
  12. 前記先行操作データチャンクの前記フルフィンガープリントが前記SHAテーブル内にない場合、次いで
    前記末尾SHAテーブル内で新規エントリを作成することであって、前記新規エントリは前記末尾フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、LBAテーブル内で新規エントリを作成することであって、前記新規LBAエントリは、論理ブロックアドレスを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、前記受信データチャンクをPBAに格納することと、前記SHAテーブル内で新規エントリを作成することであって、前記新規SHAテーブルエントリは前記論理ブロックアドレスを前記PBAにマッピングする、前記作成すること
    請求項10に記載の方法。
  13. 前記PBApから前記データのバーストを読み取ることによってストレージから前記受信データチャンクを読み取ることと、
    ストレージから前記先行操作データチャンクを読み取ることと、
    前記先行操作データチャンクについて前記データのバーストを適用して、前記受信データチャンクを生じさせることと
    をさらに含む、請求項3に記載の方法。
  14. 前記データのバーストを削除し、前記論理ブロックアドレスを前記先行操作データチャンクの前記フルフィンガープリントに、及び前記PBApにマッピングする前記基準LBAテーブル内の前記エントリを削除することによって前記受信データチャンクを削除すること
    をさらに含む、請求項3に記載の方法。
  15. 重複排除方法であって、
    格納のために複数の受信データチャンクを受け取ることと、
    前記複数の受信データチャンクのうちの1つを少なくとも1つの先頭部分及び1つの末尾部分に分割することと、
    前記先頭部分のフィンガープリントを生成することであって、前記先頭フィンガープリントは、前記受信データチャンクの前記先頭部分を一意に識別する、前記生成することと、
    前記末尾部分のフィンガープリントを生成することであって、前記末尾フィンガープリントは、前記受信データチャンクの前記末尾部分を一意に識別する、前記生成することと、
    前記受信データチャンクのフルフィンガープリントを生成することであって、前記フルフィンガープリントは、前記受信データチャンクの全体を一意に識別する、前記生成することと、
    先頭SHA(セキュアハッシュアルゴリズム)テーブル内で、前記先頭フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングすることと、
    末尾SHA(セキュアハッシュアルゴリズム)テーブル内で、前記先行操作データチャンクの前記末尾フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングすることと、
    前記受信データチャンクの前記先頭フィンガープリントが前記先頭SHAテーブル内になく、前記受信データチャンクの前記末尾フィンガープリントが前記末尾SHAテーブル内にない場合に限るが、前記受信データチャンクを格納のためにPBA(物理ブロックアドレス)に書き込むことと
    を含む、前記方法。
  16. 前記受信データチャンクの前記先頭フィンガープリントが前記先頭SHAテーブル内にある、または前記受信データチャンクの前記末尾フィンガープリントが前記末尾SHAテーブル内にある場合、
    前記受信データチャンクの前記先頭フィンガープリントまたは前記末尾フィンガープリントを使用して、格納されている先行操作データチャンクの場所を突き止めることであって、前記受信データチャンクが前記先行操作データチャンクに含まれないデータのバーストを含むことを除き、前記先行操作データチャンク及び前記受信データチャンクはほぼ一致する、前記場所を突き止めることと、
    前記受信データチャンクをストレージに書き込む代わりに、PBA(物理ブロックアドレス)pストレージに前記データのバーストを格納すること、
    請求項15に記載の方法。
  17. 論理ブロックアドレスを前記先行操作データチャンクのフルフィンガープリントに、及び前記データのバーストを格納する前記PBApにマッピングするエントリを有する基準LBA(論理ブロックアドレス)テーブルを提供することをさらに含む、請求項16に記載の方法。
  18. 前記先頭SHAテーブル内でエントリを作成することであって、前記先頭SHAテーブル内の前記エントリは、前記先頭フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、
    前記末尾SHAテーブル内でエントリを作成することであって、前記末尾SHAテーブル内の前記エントリは、前記末尾フィンガープリントを前記受信データチャンクの前記フルフィンガープリントにマッピングする、前記作成することと、
    をさらに含む、請求項16に記載の方法。
  19. 非一過性機械可読記憶媒体であって、コンピューティングデバイスに、
    格納のために複数の受信データチャンクを受け取らせ、
    前記複数の受信データチャンクのうちの1つを少なくとも1つの先頭部分及び1つの末尾部分に分割させ、
    前記先頭部分のフィンガープリントを生成させ、前記先頭フィンガープリントは、前記受信データチャンクの前記先頭部分を一意に識別し、
    前記末尾部分のフィンガープリントを生成させ、前記末尾フィンガープリントは、前記受信データチャンクの前記末尾部分を一意に識別し、
    データチャンクごとに、先頭フィンガープリントを前記それぞれのデータチャンクのフルフィンガープリントにマッピングする先頭SHA(セキュアハッシュアルゴリズム)テーブルを提供させ、
    データチャンクごとに、末尾フィンガープリントを前記それぞれのデータチャンクのフルフィンガープリントにマッピングする先頭SHA(セキュアハッシュアルゴリズム)テーブルを提供させ、
    前記受信データチャンクの前記先頭フィンガープリントが前記先頭SHAテーブル内にあるかどうか、または前記受信データチャンクの前記末尾フィンガープリントが前記末尾SHAテーブル内にあるかどうかを判断させ、
    そのような場合、1)前記受信データチャンクの前記先頭フィンガープリントまたは前記末尾フィンガープリントを使用して、格納されている先行操作データチャンクを識別させ、前記受信データチャンクが前記先行データチャンク内の前記データに加えてデータのバーストを含む点を除き、前記先行操作データチャンク及び前記受信データチャンクはほぼ同一であり、
    2)前記受信データチャンクと前記先行操作データチャンクとの間の前記データのバーストを決定させ、
    3)PBA(物理ブロックアドレス)pで前記データのバーストをストレージに書き込ませる
    方法を実行するための命令を有する、前記非一過性機械可読記憶媒体。
  20. 前記受信データチャンクの前記先頭フィンガープリントが前記先頭SHAテーブル内になく、前記受信データチャンクの前記末尾フィンガープリントが前記末尾SHA内にない場合、次いで
    前記受信データチャンクを利用可能なPBApに格納のために書き込み、上記1)、2)、及び3)を省略する、請求項19に記載の方法。
  21. 論理ブロックアドレスを、前記先行操作データチャンクのフルフィンガープリントに、及び前記データのバーストを格納するPBApにマッピングするエントリを有する基準LBA(論理ブロックアドレス)テーブルをさらに備える、請求項19に記載の非一過性機械可読記憶媒体。
  22. 前記受信データチャンクを格納のために利用可能なPBA(物理ブロックアドレス)pに書き込むことは、前記コンピューティングデバイスに、
    前記先頭SHAテーブル内でエントリを作成させ、前記先頭SHAテーブル内の前記エントリは、前記先頭フィンガープリント及び前記受信データチャンクの前記フルフィンガープリントをマッピングし、
    前記末尾SHAテーブル内でエントリを作成させ、前記末尾SHAテーブル内の前記エントリは、前記末尾フィンガープリント及び前記受信データチャンクの前記フルフィンガープリントをマッピングする
    請求項20に記載の非一過性機械可読記憶媒体。
  23. 前記コンピューティングデバイスに、
    前記受信データチャンクのフルフィンガープリントを生成させ、前記フルフィンガープリントは前記受信データチャンクの全体を一意に識別する
    ことをさらに含む、請求項19に記載の非一過性機械可読記憶媒体。
  24. 方法を実行するための命令を格納している機械可読記憶媒体を含むメモリと、前記メモリに結合されるプロセッサとを備えるコンピューティングデバイスであって、前記プロセッサは、前記プロセッサに、
    格納のために複数の受信データチャンクを受け取らせ、
    前記複数の受信データチャンクのうちの1つを少なくとも1つの先頭部分及び1つの末尾部分に分割させ、
    前記先頭部分のフィンガープリントを生成させ、前記先頭フィンガープリントは、前記受信データチャンクの前記先頭部分を一意に識別し、
    前記末尾部分のフィンガープリントを生成させ、前記末尾フィンガープリントは、前記受信データチャンクの前記末尾部分を一意に識別し、
    データチャンクごとに、先頭フィンガープリントを前記それぞれのデータチャンクのフルフィンガープリントにマッピングする先頭SHA(セキュアハッシュアルゴリズム)テーブルを提供させ、
    データチャンクごとに、末尾フィンガープリントを前記それぞれのデータチャンクのフルフィンガープリントにマッピングする末尾SHA(セキュアハッシュアルゴリズム)テーブルを提供させ、
    前記受信データチャンクの前記先頭フィンガープリントが前記先頭SHAテーブル内にあるかどうか、または前記受信データチャンクの前記末尾フィンガープリントが前記末尾SHAテーブル内にあるかどうかを判断させ、
    そのような場合、1)前記受信データチャンクの前記先頭フィンガープリントまたは前記受信データチャンクの前記末尾フィンガープリントを使用して、格納されている先行操作データチャンクを識別させ、前記受信データチャンクが前記先行データチャンク内の前記データに加えてデータのバーストを含む点を除き、前記先行操作データチャンク及び前記受信データチャンクはほぼ同一であり、
    2)前記受信データチャンクと前記先行操作データチャンクとの間の前記データのバーストを決定させ、
    3)PBA(物理ブロックアドレス)pで前記データのバーストをストレージに書き込ませる
    命令を実行するように構成された、前記コンピューティングデバイス。
  25. 前記受信データチャンクの前記先頭フィンガープリントが前記先頭SHAテーブル内になく、前記受信データチャンクの前記末尾フィンガープリントが前記末尾SHAテーブル内にない場合、次いで前記受信データチャンクを利用可能なPBApに格納のために書き込み、上記1)、2)、及び3)を省略する、請求項24に記載のコンピューティングデバイス。
JP2021518424A 2018-06-06 2019-05-01 チャンクベースデータ重複排除 Pending JP2021527291A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862681615P 2018-06-06 2018-06-06
US62/681,615 2018-06-06
US16/198,582 US10671306B2 (en) 2018-06-06 2018-11-21 Chunk-based data deduplication
US16/198,582 2018-11-21
PCT/US2019/030222 WO2019236216A1 (en) 2018-06-06 2019-05-01 Chunk-based data deduplication

Publications (1)

Publication Number Publication Date
JP2021527291A true JP2021527291A (ja) 2021-10-11

Family

ID=68763825

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021518424A Pending JP2021527291A (ja) 2018-06-06 2019-05-01 チャンクベースデータ重複排除

Country Status (5)

Country Link
US (1) US10671306B2 (ja)
EP (1) EP3803613A4 (ja)
JP (1) JP2021527291A (ja)
CN (1) CN112470140A (ja)
WO (1) WO2019236216A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11119995B2 (en) 2019-12-18 2021-09-14 Ndata, Inc. Systems and methods for sketch computation
US10938961B1 (en) 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11232074B2 (en) * 2020-05-19 2022-01-25 EMC IP Holding Company LLC Systems and methods for searching deduplicated data
CN113495901B (zh) * 2021-04-20 2023-10-13 河海大学 一种面向可变长数据块的快速检索方法
CN113254397B (zh) * 2021-06-15 2021-10-15 成都统信软件技术有限公司 一种数据检查方法及计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9020902B1 (en) * 2012-01-26 2015-04-28 Amazon Technologies, Inc. Reducing head and tail duplication in stored data
WO2016181479A1 (ja) * 2015-05-12 2016-11-17 株式会社日立製作所 ストレージシステムおよび記憶制御方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4122440A (en) 1977-03-04 1978-10-24 International Business Machines Corporation Method and means for arithmetic string coding
US4652856A (en) 1986-02-04 1987-03-24 International Business Machines Corporation Multiplication-free multi-alphabet arithmetic code
US20110179219A1 (en) * 2004-04-05 2011-07-21 Super Talent Electronics, Inc. Hybrid storage device
US20110145489A1 (en) * 2004-04-05 2011-06-16 Super Talent Electronics, Inc. Hybrid storage device
US8768895B2 (en) 2007-04-11 2014-07-01 Emc Corporation Subsegmenting for efficient storage, resemblance determination, and transmission
US7953919B2 (en) * 2007-12-21 2011-05-31 Spansion Llc Physical block addressing of electronic memory devices
CN101882216B (zh) * 2009-05-08 2012-11-21 成都市华为赛门铁克科技有限公司 构建数据指纹的方法、装置及电子设备
US8385192B2 (en) 2009-08-11 2013-02-26 International Business Machines Corporation Deduplicated data processing rate control
US9401967B2 (en) 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
US9122639B2 (en) 2011-01-25 2015-09-01 Sepaton, Inc. Detection and deduplication of backup sets exhibiting poor locality
US9071584B2 (en) 2011-09-26 2015-06-30 Robert Lariviere Multi-tier bandwidth-centric deduplication
US9047304B2 (en) * 2011-11-28 2015-06-02 International Business Machines Corporation Optimization of fingerprint-based deduplication
CN103870514B (zh) * 2012-12-18 2018-03-09 华为技术有限公司 重复数据删除方法和装置
US10142257B2 (en) * 2013-04-08 2018-11-27 Alcatel Lucent Dynamic scaling of redundancy elimination middleboxes
US9632720B2 (en) * 2013-08-29 2017-04-25 International Business Machines Corporation Data de-duplication
US9367557B1 (en) * 2013-09-26 2016-06-14 Emc Corporation System and method for improving data compression
CN103729225B (zh) * 2014-01-22 2016-09-28 中国人民解放军国防科学技术大学 一种基于内容分块的远程文件实时更新方法
JP6319740B2 (ja) 2014-03-25 2018-05-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム
CN103970875B (zh) * 2014-05-15 2017-02-15 华中科技大学 一种并行重复数据删除方法和***
US9628111B2 (en) 2015-05-11 2017-04-18 Via Alliance Semiconductor Co., Ltd. Hardware data compressor with multiple string match search hash tables each based on different hash size
US9851920B2 (en) * 2015-11-30 2017-12-26 Nxp Usa, Inc. System and method for removing hash table entries

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9020902B1 (en) * 2012-01-26 2015-04-28 Amazon Technologies, Inc. Reducing head and tail duplication in stored data
WO2016181479A1 (ja) * 2015-05-12 2016-11-17 株式会社日立製作所 ストレージシステムおよび記憶制御方法

Also Published As

Publication number Publication date
EP3803613A4 (en) 2022-03-16
US10671306B2 (en) 2020-06-02
US20190377509A1 (en) 2019-12-12
WO2019236216A1 (en) 2019-12-12
CN112470140A (zh) 2021-03-09
EP3803613A1 (en) 2021-04-14

Similar Documents

Publication Publication Date Title
US11169972B2 (en) Handling data extent size asymmetry during logical replication in a storage system
US8983952B1 (en) System and method for partitioning backup data streams in a deduplication based storage system
US10353884B2 (en) Two-stage front end for extent map database
JP2021527291A (ja) チャンクベースデータ重複排除
US10303797B1 (en) Clustering files in deduplication systems
US9792306B1 (en) Data transfer between dissimilar deduplication systems
US9880746B1 (en) Method to increase random I/O performance with low memory overheads
US9798728B2 (en) System performing data deduplication using a dense tree data structure
US8694469B2 (en) Cloud synthetic backups
US10437682B1 (en) Efficient resource utilization for cross-site deduplication
JP5886447B2 (ja) ロケーション非依存のファイル
US9396205B1 (en) Detection and handling of namespace changes in a data replication system
US10838923B1 (en) Poor deduplication identification
JP6807395B2 (ja) プロセッサ・グリッド内の分散データ重複排除
US10503697B1 (en) Small file storage system
WO2015145661A1 (ja) ストレージシステム及び重複データ排除方法
US20180107404A1 (en) Garbage collection system and process
US10223377B1 (en) Efficiently seeding small files with certain localities
CN104123102B (zh) 一种ip硬盘及其数据处理方法
US9971797B1 (en) Method and system for providing clustered and parallel data mining of backup data
US10108647B1 (en) Method and system for providing instant access of backup data
US20170124107A1 (en) Data deduplication storage system and process
US11593304B2 (en) Browsability of backup files using data storage partitioning
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
US20230236725A1 (en) Method to opportunistically reduce the number of SSD IOs, and reduce the encryption payload, in an SSD based cache in a deduplication file system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230628

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240206