JP6320432B2 - データ重複排除における、類似性探索に基づくダイジェスト検索 - Google Patents

データ重複排除における、類似性探索に基づくダイジェスト検索 Download PDF

Info

Publication number
JP6320432B2
JP6320432B2 JP2015562432A JP2015562432A JP6320432B2 JP 6320432 B2 JP6320432 B2 JP 6320432B2 JP 2015562432 A JP2015562432 A JP 2015562432A JP 2015562432 A JP2015562432 A JP 2015562432A JP 6320432 B2 JP6320432 B2 JP 6320432B2
Authority
JP
Japan
Prior art keywords
data
digest
repository
similarity
value
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.)
Expired - Fee Related
Application number
JP2015562432A
Other languages
English (en)
Other versions
JP2016511478A (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 JP2016511478A publication Critical patent/JP2016511478A/ja
Application granted granted Critical
Publication of JP6320432B2 publication Critical patent/JP6320432B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、一般にコンピュータに関し、さらに具体的には、コンピューティング環境で、データ重複排除システムによって重複排除処理を行う際のダイジェストの効率的な検索のための類似性探索の活用に関する。
現今の社会では、コンピュータ・システムは当たり前のものとなっている。コンピュータ・システムは、職場、家庭、または学校で見ることができる。コンピュータ・システムには、データを処理し格納するためのデータ・ストレージ・システムまたはディスク・ストレージ・システムを含めることができる。日ごとに大量のデータを処理する必要があり、現今の傾向を見ると、このようなデータの量は、予見可能な近い将来において益々増え続けると思われる。この問題を軽減する効率的な方法の一つは、重複排除を用いることである。重複排除システムに基礎となる考え方は、使われているデータの大部分は何度も繰り返してコピーされているという事実を利用し、繰り返されているデータを探し出し、その最初の出現だけを格納することである。後続するコピーは、格納済みの出現へのポインタで置き換えられ、データが実際に反復的なものであれば、これによりストレージの必要量は大幅に削減される。
コンピューティング環境で、プロセッサ・デバイスを用いるデータ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のための様々なソリューションを提供する。
一実施形態において、コンピューティング環境で、プロセッサ・デバイスを用いるデータ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のための方法が提供される。一実施形態において、単なる例示であるが、入力データは固定サイズのデータ・チャンクに区分化される。この固定サイズのデータ・チャンクの各々に対し、類似性要素、ダイジェスト・ブロック境界、およびダイジェスト値が計算される。リポジトリ中の固定サイズのデータ・チャンクの各々に対し、類似性要素を包含する探索構造体(すなわちインデックス)の中で整合する類似性要素が探索される。見出された整合する類似性要素に基づいて、リポジトリ中の類似するデータの位置が探し出される。この類似するデータの位置を用いて、リポジトリ中の類似するデータの格納されたダイジェスト値および対応する格納されたダイジェスト・ブロック境界が探し出され、メモリ中にロードされる。データの整合を調べるために、入力データのダイジェスト値および対応するダイジェスト・ブロック境界と、格納されたダイジェスト値および対応する格納されたダイジェスト・ブロック境界とが照合される。
別の実施形態において、コンピューティング環境で、プロセッサ・デバイスを用いるデータ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のためのコンピュータ・システムが提供される。本コンピュータ・システムは、コンピュータ可読媒体、およびコンピュータ可読媒体と動作可能に通信しているプロセッサを含む。一実施形態において、単なる例示であるが、プロセッサが入力データを固定サイズのデータ・チャンクに区分化する。この固定サイズのデータ・チャンクの各々に対し、類似性要素、ダイジェスト・ブロック境界、およびダイジェスト値が計算される。リポジトリ中の固定サイズのデータ・チャンクの各々に対し、類似性要素を包含する探索構造体(すなわちインデックス)の中で整合する類似性要素が探索される。リポジトリ中の類似するデータの位置が探し出される。この類似するデータの位置を用いて、リポジトリ中の類似するデータの格納されたダイジェスト値および対応する格納されたダイジェスト・ブロックの境界が探し出され、メモリ中にロードされる。データの整合を調べるために、入力データのダイジェスト値および対応するダイジェスト・ブロック境界と、格納されたダイジェスト値および対応する格納されたダイジェスト・ブロック境界とが照合される。
さらなる実施形態において、コンピューティング環境内で、プロセッサ・デバイスを用いるデータ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のためのコンピュータ・プログラム製品が提供される。コンピュータ可読ストレージ媒体は、該媒体上に格納されたコンピュータ可読プログラム・コード部分を有する。コンピュータ可読プログラム・コード部分は、入力データを固定サイズのデータ・チャンクに区分化する第一実行可能部分を含む。この固定サイズのデータ・チャンクの各々に対し、類似性要素、ダイジェスト・ブロック境界、およびダイジェスト値が計算される。リポジトリ中の固定サイズのデータ・チャンクの各々に対し、類似性要素を包含する探索構造体(すなわちインデックス)の中で整合する類似性要素が探索される。リポジトリ中の類似するデータの位置が探し出される。この類似するデータの位置を用いて、リポジトリ中の類似するデータの格納されたダイジェスト値および対応する格納されたダイジェスト・ブロックの境界が探し出され、メモリ中にロードされる。データの整合を調べるために、入力データのダイジェスト値および対応するダイジェスト・ブロック境界と、格納されたダイジェスト値および対応する格納されたダイジェスト・ブロック境界とが照合される。
前述の例示的な方法実施形態に加え、他の例示的なシステムおよびコンピュータ製品の実施形態が提供され、関連する利点を提供する。前述の概要は、単純化された形で選択された概念を紹介するために提示されたものであって、後記の発明を実施するための形態でこれらをさらに詳しく説明する。この発明の概要は、請求対象の主題となる主要特徴または本質的特徴を明確化することを意図するものではなく、請求対象の主題の範囲を定めるための助力として用いることを意図するものでもない。請求対象の主題は、背景技術で述べた不利点の一部または全てを解決するための実装には限定されない。
本発明の利点が容易に理解できるようにするため、添付の図面に示される特定の実施形態を参照しながら、上記で簡単に説明した本発明のさらに具体的な説明を提供する。これらの図面は、本発明の諸実施形態を表すものであり、したがって本発明の範囲を限定するものと見なすべきでないことを理解した上で、添付の図面を用い、さらなる具体性および詳細をもって本発明を表し説明することとする。
本発明の態様が実現可能な、例示的なストレージ・デバイスを有するコンピューティング・システム環境を示すブロック図である。 本発明の態様が実現可能な、コンピュータ・システム中のデータ・ストレージ・システムのハードウェア構造体を示すブロック図である。 本発明の態様が実現可能な、データ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のための例示的な方法を示すフローチャートである。 本発明の態様が実現可能な、データ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のための例示的な別の方法を示すフローチャートである。 本発明の態様が実現可能な、データ重複排除システムにおける、ローリング・ハッシュ値の単一線形計算を用いる、類似性探索値とダイジェスト・ブロックの境界との両方の効率的な計算のための例示的な方法を示すフローチャートである。
データ重複排除は、コンピューティング・ストレージ・システムにおいて非常に重要で躍動する分野である。データ重複排除とは、冗長なデータの低減もしくは排除またはその両方を言う。データ重複排除において、データ・オブジェクトは、ファイル、データ・ストリーム、または他の形のデータであってよく、このオブジェクトは、チャンクまたはブロックと呼ばれる一つ以上の部分に分割される。データ重複排除処理において、データの重複コピーは低減、または排除され、それぞれ、データの最小数の冗長コピー、または単一のコピーを残す。データ重複排除システムの目的は、重複したデータに対し単一のコピーを格納することであり、この目的を達成する上での課題は、通常大きなリポジトリの中の重複したデータ・パターンを効率的に見出し、それらのデータ・パターンをストレージに効率的な重複排除された形で格納することである。重複排除ストレージ・システムにおいて重要な課題は、データの巨大容量のリポジトリに対応するためのスケーリングである。かかる大容量リポジトリは、ペタバイト(1ペタバイト=250バイト)以上のサイズに達することがある。かかるリポジトリのサイズに対応する重複排除ストレージ・システムは、リポジトリ内の重複データ・パターンを見出すための効率的な処理を備えなければならず、その効率は、重複排除を達成するためのリソース消費量で測定される(リソースは、CPUサイクル、RAMストレージ量、固定ストレージ量、ネットワーク利用などとすればよい)。一実施形態において、重複排除ストレージ・システムは、フィンガープリントまたはダイジェストとして知られる、探索に最適化された値のインデックスを維持することに基づくことができ、このシステムでは、(小さな)フィンガープリントがリポジトリ中の(より大きな)データのブロックを代表する。このフィンガープリント値は、当該ブロックのデータに基づいて計算された暗号ハッシュ値とすることが可能できる。一実施形態において、例えば、SHA−1またはSHA−256など、暗号ハッシュ関数のファミリであるセキュア・ハッシュ・アルゴリズム(SHA:secure hash algorithm)を用いることが可能である。インデックス・ルックアップを用い、フィンガープリントの整合を識別することで、リポジトリ中に既存のデータへの参照を格納することが可能になる。
このアプローチにおいて合理的な重複排除を提供するために、フィンガープリントが生成される基となるデータ・ブロックの平均サイズは、より小さなサイズに制限しなければならず大き過ぎてはいけない。その理由は、データ・ブロック中の一つのビットの変化が、当該データ・ブロックの対応するフィンガープリントを確率的に変化させることになるからであり、しかして、大きなデータ・ブロックを持つことは、小さなブロックを持つことに比べて、データの更新に対するスキームの感受性をより大きくすることによる。典型的なデータ・ブロック・サイズは、アプリケーションの種類と作業負荷の如何により、4KB〜64KBの範囲とすることができよう。しかして、単なる例示であるが、小型データ・ブロックは、最大64KBまでの範囲のサイズとし、64KBより大きなサイズを有するデータ・ブロックは大型データ・ブロックとすることができよう。
ペタバイトのスケールに及ぶ巨大なリポジトリ(例えば、少なくとも1ペタバイトのスケールに及ぶリポジトリ)に対応するためには、フィンガープリントのサイズ(16バイトから64バイトの間に亘る)と相まって格納されるフィンガープリントの数は法外なものとなる。例えば、4KBの平均ブロック・サイズ、および(例えば、SHA−256の)32バイトのフィンガープリント・サイズを有する1ペタバイトの重複排除データに対して、これらのフィンガープリントを格納するのに必要なストレージ量は8テラバイトとなる。かかる量のフィンガープリントに対する探索に最適化されたデータ構造体を維持するのは困難であり、最適化の技法が必要となる。しかしながら、既存の最適化技法では、パフォーマンスを維持しながら、このようなサイズにはスケール設定されない。この理由により、合理的なパフォーマンスを提供するためには、サポートされているリポジトリを比較的に(数十TBのオーダーに)小さくしなければならない。かかるより小さなサイズにあってさえも、フィンガープリント・インデックスのスケールの大きさに起因して、相当な問題およびランタイム・コストが発生し、重複排除処理にボトル・ネックを生じさせる。
この問題を解決するために、一実施形態において、重複排除システムは、重複排除の過程におけるデータ・パターン探索に対する2ステップのアプローチに基づくものとすることができる。第一ステップでは、入来データの大きなチャンク(例えば、数メガバイト)が、リポジトリ内で、既存データの(一致よりはむしろ)類似のデータ・チャンクについて探索され、入来データ・チャンクは、適宜に区間に区分化され、対応する(類似の)リポジトリの区間とペアにされる。第二ステップでは、バイト単位の照合アルゴリズムが類似の区間のペアに適用され、データのリポジトリ中に既に格納されていた方の一致するサブ区間が識別される。第二ステップの照合アルゴリズムは、バイト単位で入力データと比較するために、リポジトリ中の全ての関連する類似するデータを読み取ることに頼る。
さらに、第二ステップの照合アルゴリズムの基礎となる、バイト単位のデータの比較から生じる問題は、入来データとおおむね同じサイズおよびレートのデータを、比較のためにリポジトリから読み取る必要があることである。例えば、秒あたり1GBの入来データを処理するシステムは、バイト単位での比較のため、リポジトリから秒あたり約1GBのデータを読み取る必要がある。これは、リポジトリ・データを格納するストレージ・デバイスの相当に高い秒あたりのI/O容量を必要とし、このためこれらデバイスのコストが増大する。
上記の問題に重なる情報技術のさらなる傾向は次の通りである。すなわち、(1)CPU速度およびCPUコアの数の増大によるコンピューティング能力の向上。(2)ディスク密度が増大する一方、ディスクのスループットは比較的一定なままか、またはわずかに向上。これは、データ容量に対してより少ないスピンドル、しかして全体的なスループットの実際上の低減を意味する。上記で指摘した問題によって、前述した2ステップの重複排除システム実施形態中に組み込むための、リポジトリからの高速/高容量の読み取りを必要としない別のソリューションを設計することが必要となる。
上記のため、単なる例示であるが、さらなる実施形態によりこれらの問題に対処し、同時に前述の傾向による利点を受けて、リソース消費をディスクからCPUにシフトする。本明細書で説明する諸実施形態は、前述の2ステップでスケーラブルな、重複排除過程でダイジェストのルックアップを絞るために類似性探索を用いる、重複排除の実施形態に集約される。一実施形態において、入力データに整合する可能性が最も高いリポジトリ・データのダイジェストに対して、類似性探索を絞るためのベースとして、全域的な類似性探索が用いられる。
本明細書で説明する諸実施形態は、コンピューティング能力およびディスク密度の増大の益を得て、根柢のディスクに要求される秒あたりのI/Oの容量を大きく低減し、処理のコスト、並びに保全コストおよび環境オーバーヘッド(例えば、電力消費)を大幅に低減する。
一実施形態において、入力データは、小さなセグメント(例えば4KB)に区分けされ、かかる各セグメントに対しダイジェスト(例えばSHA1などの暗号ハッシュ値)が計算される。最初に、前述のように、類似性探索アルゴリズムが、データの入力チャンク(例えば16MB)に適用され、リポジトリ中の最も類似した参照データの位置が探し出され見出される。次いで、これらの位置を使って、該類似参照データのダイジェストがルックアップされる。リポジトリに包含される全てのデータのダイジェストは、データ中でのそれらの出現に対応する形で格納され読み出される。リポジトリ中に包含されたデータの或るセクションの位置が所与であれば、データのそのセクションに関連付けられたダイジェストはリポジトリ中で効率的に探し出され読み出される。次に、これらの参照ダイジェストは、メモリにロードされ、整合を見出すためデータを比較する代わりに、入力ダイジェストとロードされた参照ダイジェストとが照合される。
前述の実施形態は、データ重複排除システムを設計するための新しい基本的アプローチを提供し、このシステムは、(バイト単位のデータ比較の代わりに)効率的且つコスト効果的なダイジェスト/フィンガープリント・ベースの照合アルゴリズムを用いる、類似性探索とそれに続く同一に整合するセグメントの探索とのスケーラブルな2ステップのアプローチを組み込む。ダイジェスト/フィンガープリント・ベースの照合アルゴリズムは、バイト単位データ比較が必要とするデータの量のわずかな一部(1%)だけの読み取りを可能にする。本明細書で提案される本発明の重複排除システムは、高い効率およびパフォーマンスと処理およびハードウェアの低減されたコストに加え、巨大なデータ・リポジトリに対する高いスケーラビリティを提供することができる。
一実施形態において、単なる例示であるが、用語「類似するデータ」は、次のように表現できる:任意の所与の入力データに対し、入力データに類似するデータとは、入力データとほとんど同じ(すなわち、全くではないが少なくとも50%が同様)データとして定義されるものである。バイナリの観点(見方)からデータを見れば、これは、類似するデータとは、そのバイトのほとんど(すなわち、全くではないが少なくとも50%が同様)が入力データと同じである、データであることを意味する。
一実施形態において、単なる例示であるが、用語「類似性探索」は、データのリポジトリ中の、入力データに類似したデータに対する探索のプロセスということができる。一実施形態において、このプロセスは類似性要素の探索構造体を用いて実施することができ、該構造体は維持されその中を探索される。
一実施形態において、単なる例示であるが、用語「類似性要素」は、データに基づいて計算することが可能で、データのリポジトリ中の、入力データに類似するデータに対する全域的な探索を容易にする。一般に、一つ以上の類似性要素が計算され、データの大きな(例えば、少なくとも16MB)のチャンクを代表する。
しかして、本明細書で説明する様々な実施形態は、コンピューティング環境で、プロセッサ・デバイスを用いるデータ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のための様々なソリューションを提供する。一実施形態において、単なる例示であるが、入力データは、固定サイズのデータ・チャンクに区分化される。この固定サイズのデータ・チャンクの各々に対し、類似性要素、ダイジェスト・ブロック境界、およびダイジェスト値が計算される。データのリポジトリ中の固定サイズのデータ・チャンクの各々に対し、類似性要素を包含する探索構造体(すなわちインデックス)の中で整合する類似性要素が探索される。リポジトリ中の類似するデータの位置が探し出される。この類似するデータの位置を用いて、リポジトリ中の類似するデータの格納されたダイジェスト値および対応する格納されたダイジェスト・ブロック境界が探し出され、メモリ中にロードされる。なお、一実施形態において、これらの位置は、物理的または論理的(すなわち、仮想的)位置のいずれであってもよい。これらの位置は、データのリポジトリの内部のデータの位置である。「位置」の重要な特性は、リポジトリのデータ中の位置(物理的または論理的)が所与であれば、その位置におけるデータは効率的に探し出すことができ、アクセスできるということである。データの整合を調べるために、入力データのダイジェスト値および対応するダイジェスト・ブロック境界と、格納されたダイジェスト値および対応する格納されたダイジェスト・ブロック境界とが照合される。
一実施形態において、本発明は、効率的な重複排除処理のため、関連するダイジェストをリポジトリからメモリ中にロードする類似性探索を利用するソリューションを提供する。或るデータ重複排除システムにおいて、重複排除は、データを大きな固定サイズのチャンクに区分化し、各チャンクに対し、類似性探索およびダイジェスト値に対する(2つの事項−類似性要素およびダイジェスト・ブロック/ダイジェスト値の)ハッシュ値(ダイジェスト・ブロック/ダイジェスト値)を計算することによって実施される。このデータ重複排除システムは、類似性値の探索構造体中でチャンクに整合する類似性値を探索し、リポジトリ中の類似するデータの位置を見出す。データ重複排除システムは、類似するデータのこれらの位置を用いて、類似のリポジトリ・データの格納されたダイジェストを探し出し、メモリにロードして、データの整合を調べるために、入力ダイジェスト値とリポジトリのダイジェスト値とを照合する。
一実施形態において、本発明は、ローリング・ハッシュ値の単一線形計算を用いる、類似性探索値およびダイジェスト・ブロックの区分け(すなわち境界)両方の効率的な計算を提供する。或るデータ重複排除システムにおいて、入力データは、チャンクに区分化され、各チャンクに対し、一組のローリング・ハッシュ値が計算される。ローリング・ハッシュ値の単一線形スキャンは、チャンクの類似性探索値およびダイジェスト・ブロックの境界の両方を生成する。各ローリング・ハッシュ値は、バイト・オフセット中のバイト群の連続ウィンドウに対応する。類似性探索値を用いて、リポジトリ中の類似するデータが探索される。ダイジェストの照合のため、ダイジェスト・ブロック区分けを使って、チャンクのダイジェスト・ブロック境界、および対応するダイジェスト値が計算される。各ローリング・ハッシュ値は、類似性値の計算およびダイジェスト・ブロック区分けの計算に寄与する。各ローリング・ハッシュ値は、これらの計算に寄与した後廃棄すればよい。前述の実施形態は、大きな処理効率の向上およびCPU消費の低減と、大幅なパフォーマンス改善とを提供する。
しかして、前述のように、本発明の重複排除アプローチは、重複排除の過程でデータ・パターンを探索するため2ステップのプロセスを用いる。第一ステップでは、入来データの大きなチャンク(例えば、2メガバイト(MB))が、リポジトリ内で、既存データの(一致よりはむしろ)類似するチャンクについて探索され、入来チャンクは、区間に適宜に区分化され、対応する(類似の)リポジトリの区間とペアにされる。第一ステップで用いられる類似性インデックスは、類似性探索に使われる要素がそれらの代表するデータに対して非常にコンパクトなので(例えば、16バイトで4メガバイトを代表する)、コンパクトで維持および内部探索するのが簡単である。類似性要素の計算に加えて、第一ステップにさらに含まれるのは、データの入力チャンクに対するダイジェスト・セグメントとそれぞれのダイジェスト値との計算である。これら全ての計算は、ローリング・ハッシュ値の単一計算に基づく。第二ステップにおいて、類似のリポジトリ区間の参照ダイジェストが読み取られ、次いで、データの整合を識別するため、入力ダイジェストとその参照ダイジェストとが照合される。
一実施形態において、本明細書で説明する類似性ベースの重複排除アプローチでは、入力データのストリームは、(例えば、少なくとも16MBの)チャンクに区分化され、各チャンクは2つの主要ステップで処理される。第一ステップでは、類似性探索プロセスが適用され、リポジトリ中で最も類似する参照データの位置が見出される。このステップの中で、入力チャンクに対し、ローリング・ハッシュ値の単一線形計算に基づいて、類似性探索要素およびダイジェスト・セグメント境界の両方が計算される。生成された区分けに基づいて入力チャンクに対しダイジェスト値が計算され、それらの入力データでの出現の順番にメモリ中に格納される。次いで、類似するデータの位置を使って、これら類似参照データのダイジェストがルックアップされ、これらのダイジェストが、これも順次の形でメモリ中にロードされる。次に、入力ダイジェストと参照ダイジェストとが照合され、データの整合が形成される。
データの入力チャンクの重複排除が完了すると、そのデータの入力チャンクの関連ダイジェストは、後の入力データのための参照ダイジェストとしての役割を果たすため、リポジトリ中に格納される。これらのダイジェストは線形形式で格納され、この形式は、これらのダイジェストが表現するデータが格納される重複排除された形式とは無関係であり、これらがデータ中に出現する順番になっている。このストレージの方法は、重複排除されたストレージ形式を特徴づけるフラグメンテーションの如何を問わず、ダイジェストのセクションの効率的な検索を可能にし、しかして、低廉なIOおよび計算リソースの消費を可能にする。
ここで図1を見ると、コンピューティング・システム環境の例示的なアーキテクチャ10が示されている。コンピュータ・システム10は、中央処理ユニット(CPU:central processing unit)12を含み、該ユニットは通信ポート18およびメモリ・デバイス16に接続されている。通信ポート18は、通信ネットワーク20と通信している。通信ネットワーク20およびストレージ・ネットワークは、サーバ(ホスト)24およびストレージ・システムと通信するように構成することができ、該ストレージ・システムにはストレージ・デバイス14を含めることができる。ストレージ・システムは、ハード・ディスク・ドライブ(HDD:hard disk drive)デバイス、ソリッドステート・デバイス(SSD:solid−state device)などを含むことができ、これらデバイスは、独立ディスクの冗長アレイ(RAID:redundant array of independent disks)に構成することが可能である。後記で説明するオペレーションは、システム10または別の場所に配置され、独立してもしくは他のCPUデバイス12と連動してまたはその双方で作動する、複数のメモリ・デバイス16を有することが可能な、ストレージ・デバイス(群)14上で実行することができる。メモリ・デバイス16は、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM:electrically erasable programmable read only memory)などのメモリ、または関連するデバイスのホストを含んでもよい。メモリ・デバイス16およびストレージ・デバイス14は、信号担持媒体を介してCPU12に接続される。さらに、CPU12は、通信ポート18を介して、付属された複数のさらなるコンピュータ・ホスト・システム24を有する、通信ネットワーク20に接続される。加えて、メモリ・デバイス16とCPU12とを、コンピューティング・システム10の各コンポーネントに内蔵させて含めてもよい。また、各ストレージ・システムには、連携して作動する、または独立したメモリ・デバイス16もしくはCPU12またはその両方として作動する、別々のもしくは分離されたまたはその両方のメモリ・デバイス16およびCPU12を含めることができる。
図2は、本発明による、コンピュータ・システム中のデータ・ストレージ・システムのハードウェア構造を示す、例示的なブロック図200である。各々が、データ・ストレージ・システム200の一部として、データ処理を遂行するための中央処理ユニットとしての役割を果たす、ホスト・コンピュータ210、220、225が示されている。クラスタ・ホスト/ノード(物理または仮想デバイス)210、220、および225は、データ・ストレージ・システム200において、本発明の目的を達成するための一つ以上の新規物理デバイスまたは論理デバイスとすることができる。一実施形態において、単なる例示であるが、データ・ストレージ・システム200は、IBM(IBM社の登録商標)ProtecTIER(IBM社の登録商標)重複排除システムTS7650G(IBM社の商標)として実装することが可能である。ネットワーク接続260は、ファイバ・チャネル・ファブリック、ファイバ・チャネル・ポイント・ツー・ポイント・リンク、ファイバ・チャネル・オーバー・イーサネット(R)ファブリックもしくはポイント・ツー・ポイント・リンク、FICON(IBM社の登録商標)もしくはESCON(IBM社の登録商標)I/Oインターフェース、任意の他のI/Oインターフェース型、無線ネットワーク、有線ネットワーク、LAN、WAN、異機種、同種、公衆(すなわちインターネット)、プライベート、またはこれらの任意の組み合わせであってよい。ホスト210、220、および225は、ローカルにしても一つ以上の場所に分散してもよく、これらホストに対して、ファイバ・チャネル、FICON(IBM社の登録商標)、ESCON(IBM社の登録商標)、イーサネット(R)、光ファイバ、無線、または同軸アダプタなど、ストレージ・コントローラ240への任意の種類のファブリック(またはファブリック・チャネル)(図2には示さず)またはネットワーク・アダプタ260を備えることが可能である。データ・ストレージ・システム200には、通信のため、適切なファブリック(図2には示さず)またはネットワーク・アダプタ260が適宜に備えられる。図2中では、データ・ストレージ・システム200は、ストレージ・コントローラ240およびクラスタ・ホスト210、220、および225を含んで示されている。クラスタ・ホスト210、220、および225は、クラスタ・ノードを含むことができる。
本明細書で説明する方法の明瞭な理解を容易にするために、図2では、ストレージ・コントローラ240は、マイクロプロセッサ242、システム・メモリ243、および不揮発性ストレージ(「NVS」:nonvolatile storage)216を含む、単一の処理ユニットとして示されている。なお、いくつかの実施形態では、ストレージ・コントローラ240は、各々が専用のプロセッサ・コンプレックスおよびシステム・メモリを有し、データ・ストレージ・システム200内の専用ネットワークによって相互接続された、複数の処理ユニットから成っている。ストレージ230(図2では230a、230b、および230nと標識されている)は、ストレージ・アレイなど一つ以上のストレージ・デバイスで構成することができ、これらは、各ストレージ・コントローラ240に接続された一つ以上のクラスタ・ホスト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の中またはこれと併せて格納することができる。いくつかの実施形態において、データ・ストレージ・システム200が停電した場合、バッテリなどのバックアップ電源(図2には示さず)が、NVS216に格納されたデータを保持するために十分な電力を供給する。特定の実施形態において、NVS216の容量は、キャッシュ245の合計容量以下である。
ストレージ230は、ストレージ・アレイなど一つ以上のストレージ・デバイスで物理的に構成することができる。ストレージ・アレイは、ハード・ディスクなど個別ストレージ・デバイスの論理的なグルーピングである。特定の実施形態において、ストレージ230は、JBOD(Just a Bunch of Disks(単純ディスク束))アレイまたはRAID(独立ディスクの冗長アレイ)アレイから成る。物理ストレージ・アレイの集合はさらに組み合わせてランクを形成することが可能であり、これにより、物理ストレージは論理的構成から外される。ランク中のストレージ空間は、論理ボリューム群中に割り当てることが可能で、この論理ボリュームは、書き込み/読み取り要求の中で指定するストレージ場所を定義する。
一実施形態において、単なる例示であるが、図2に示されたストレージ・システムは、論理ボリューム、または単に「ボリューム」を含むことができ、これらには異なった種類の割り当てを持たせることが可能である。ストレージ230a、230b、および230nは、データ・ストレージ・システム200中のランクとして示されており、本明細書では、ランク230a、230b、および230nと呼ぶ。ランクは、データ・ストレージ・システム200にローカルなものとすることもでき、物理的に遠隔の場所に亘って配置することも可能である。言い換えれば、ローカルのストレージ・コントローラは遠隔のストレージ・コントローラに接続し、その遠隔の場所のストレージを管理することができる。ランク230aは、2つの全体ボリューム234および236と、一つの部分ボリューム232aとで構成されて示されている。ランク230bは、別の部分ボリューム232bを備えて示されている。しかして、ボリューム232は、ランク230aとランク230bとにまたがって割り当てられている。ランク230nは、その全体がボリューム238に割り当てられているものとして示されており、すなわち、ランク230nは、ボリューム238に対する全体的物理ストレージを受け持っている。上記の例から、当然のことながら、或るランクが一つ以上の部分ボリュームもしくは全体ボリュームまたはその両方を含むよう構成することができる。ボリュームおよびランクは、いわゆる「トラック」にさらに分割することが可能で、このトラックはストレージの固定ブロックを表す。したがって、トラックは、所与のボリュームと関連付けられ、これに所与のランクを与えることが可能である。
ストレージ・コントローラ240は、データ重複排除モジュール255、類似性インデックス・モジュール257(例えば、類似性探索構造体)、および類似性探索モジュール259を含むことができる。データ重複排除モジュール255、類似性インデックス・モジュール257、および類似性探索モジュール259は、ストレージ・コントローラ240、ホスト210、220、225、およびストレージ・デバイス230のあらゆるコンポーネントと連携して作動することが可能である。データ重複排除モジュール255、類似性インデックス・モジュール257、および類似性探索モジュール259は、構造的に一つの合体したモジュールとしてもよく、あるいは他の別個のモジュールに関連付け、もしくは含め、またはその両方を行ってもよい。また、データ重複排除モジュール255、類似性インデックス・モジュール257、および類似性探索モジュール259を、キャッシュ245または他のコンポーネントの中に配置してもよい。
ストレージ・コントローラ240は、ホスト・コンピュータ210、220、225へのファイバ・チャネル・プロトコルを制御するための制御スイッチ241と、ストレージ・コントローラ240全体を制御するためのマイクロプロセッサ242と、ストレージ・コントローラ240のオペレーションを制御するマイクロプログラム(オペレーション・ソフトウェア)250、制御のためのデータ、データを一時的に格納する(バッファする)キャッシュ245、およびキャッシュ245がデータを読み取り書き込むのを助力するバッファ244を格納するための不揮発性制御メモリ243と、ストレージ・デバイス230へのデータの搬出入を管理するプロトコルを制御するための制御スイッチ241と、データ重複排除モジュール255と、類似性インデックス・モジュール257と、中に情報をセットすることが可能な類似性探索モジュール259と、を含む。本発明では、本明細書に記載のオペレーションを助力するため、複数のバッファ244を実装することが可能である。一実施形態において、クラスタ・ホスト/ノード、210、220、225およびストレージ・コントローラ240は、インターフェースとしてネットワーク・アダプタ(これはファイバ・チャネルでもよい)260を介して、すなわち、少なくとも一つの「ファブリック」と呼ばれるスイッチを介して接続される。
一実施形態において、ホスト・コンピュータまたは一つ以上の物理または仮想デバイス、210、220、225、およびストレージ・コントローラ240は、インターフェースとしてネットワーク(これはファイバ・チャネルでもよい)260を介して、すなわち、少なくとも一つの「ファブリック」と呼ばれるスイッチを介して接続される。一つの実施形態で、図2に示されたシステムのオペレーションを説明することとする。マイクロプロセッサ242は、メモリ243を制御して、ホスト・デバイス(物理または仮想)210からのコマンド情報、およびホスト・デバイス(物理または仮想)210を識別するための情報を格納させることができる。制御スイッチ241と、バッファ244と、キャッシュ245と、オペレーティング・ソフトウェア250と、マイクロプロセッサ242と、メモリ243と、NVS216と、データ重複排除モジュール255と、類似性インデックス・モジュール257と、類似性探索モジュール259と、は相互に通信していて、これらは別々のまたは一つの個別コンポーネント(群)とすることが可能である。また、コンポーネントの全てではないにせよ、オペレーション・ソフトウェア250などそれらのいくつかはメモリ243に含めてもよい。図示されたデバイス内のコンポーネントの各々は、一緒にリンクすることができ、本発明に適した目的のため相互に通信させることができる。前述のように、データ重複排除モジュール255、類似性インデックス・モジュール257、および類似性探索モジュール259も、同様にキャッシュ245または他のコンポーネントの中に配置することが可能である。しかして、データ重複排除モジュール255、類似性インデックス・モジュール257、および類似性探索モジュール259は、ストレージ・アーキテクチャおよびユーザの好みに基づき、必要に応じて用いればよい。
一実施形態において、前述のように、入力データは、大きな固定サイズのチャンク(例えば16MB)に区分化され、各入力チャンクに対して、類似性探索手順が適用される。類似性探索手順は、データの入力チャンクに基づいて、識別特徴(DC:distinguishing characteristics)と呼ばれることもある、コンパクト類似性要素を計算し、リポジトリ中のコンパクト探索構造体(すなわちインデックス)中に格納された、整合する類似性要素を探索する。データの各チャンクあたりに格納される類似性要素のサイズは、通常、32バイト(チャンクのサイズは数メガバイト)であり、しかして、類似性要素を格納する探索構造体を、非常にコンパクトで、維持および内部探索しやすいものとする。
類似性要素は、チャンクのデータに対するローリング・ハッシュ値を計算することによって、すなわち、バイト・オフセット中のバイト群の各連続ウィンドウに対するローリング・ハッシュ値を生成し、次いで、当該チャンクの類似性要素の対象となる特定のハッシュ値群と関連する位置群(必ずしもこれらのハッシュ値のありのままの位置ではない)とを選択することによって、計算される。
本発明によって提供される一つの重要な特徴および新規性は、ローリング・ハッシュ値の単一線形計算(これは計算的に費用の掛かるオペレーションである)が、(類似性探索のための)チャンクの類似性要素、および(正確な整合を見出すための)チャンクのデータのダイジェスト・ブロックへの区分けの両方を計算するためのベースの役割を果たすことである。各ローリング・ハッシュ値は、類似性要素の計算、およびダイジェスト・ブロック区分けの計算に加算される。この2つの計算に加えられた後、ローリング・ハッシュ値を格納しておく必要性は極めて低いかまたはなくなるので、ローリング・ハッシュ値は廃棄すればよい。このアルゴリズム上の要素は、大幅なパフォーマンスの向上はもとより、高い効率性およびCPU消費の大きな低減を提供する。
一実施形態において、本発明の類似性探索手順は2つの種類のアウトプットを生成する。第一の種類のアウトプットは、リポジトリ中の最も類似する参照データの位置のセットである。第二の種類のアウトプットは、ダイジェスト・ブロックの区分けおよびそれらダイジェスト・ブロックに対応するダイジェスト値から成る、入力チャンクのダイジェストであり、これらダイジェスト値は、ダイジェスト・ブロックのデータに基づいて計算される。
一実施形態において、これらダイジェストは、データ中のダイジェストの出現に対応する形でリポジトリに格納される。データのセクションのリポジトリ中の位置とサイズが所与とすれば、データの当該区間に対応するダイジェストのリポジトリ中の場所が効率よく特定される。類似性探索手順によって生成された位置は、次いで、類似する参照データの格納されたダイジェストをルックアップして、これらの参照ダイジェストをメモリ中にロードするために用いられる。次いで、データを比較するよりむしろ、入力ダイジェストとロードされた参照ダイジェストとが照合される。この照合プロセスは、参照ダイジェストをメモリ中のダイジェストのコンパクト探索構造体の中にロードし、次いで、各入力ダイジェストに対し、そのダイジェスト値の存在について、該ダイジェストの探索構造体にクエリを行うことによって実施される。ダイジェストの探索構造体の中での探索は、ダイジェスト値に基づいて行われる。整合が見出されると、当該ダイジェストに関連付けられた入力データが、リポジトリ中で見出されたと判定され、リポジトリ中の参照ダイジェストの位置に基づいて、リポジトリ中の入力データの位置が定められる。この場合、入力ダイジェストによってカバーされた入力データと、整合した参照ダイジェストによってカバーされたリポジトリ・データとの間の同一性が記録される。整合が見出されない場合、当該ダイジェストに関連付けられた入力データは、リポジトリ中に見出されなかったと判定され、新規のデータとして記録される。一実施形態において、類似性探索構造体は、類似性要素の全域的な探索構造体であり、ダイジェストのメモリ探索構造体は、メモリ中のローカルなダイジェストの探索構造体である。ダイジェストのメモリ探索構造体中の探索は、ダイジェスト値によって行われる。
図3は、本発明の態様が実現可能な、データ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のための例示的な方法300を示すフローチャートである。方法300が開始される(ステップ302)。方法300は、入力データをデータ・チャンクに区分化する(ステップ304)。入力データは、固定サイズのデータ・チャンクに区分化することができる。方法300は、データ・チャンクの各々に対し、類似性要素、ダイジェスト・ブロック境界、および対応するダイジェスト値を計算する(ステップ306)。方法300は、データ・チャンク(これらは固定サイズのデータ・チャンクとすることができる)の各々に対し、探索構造体(すなわちインデックス)の中で整合する類似性要素を探索する(ステップ308)。リポジトリ(例えばデータのリポジトリ)中の類似するデータの位置が探し出される(ステップ310)。方法300は、これら類似するデータの位置を用いて、リポジトリ中の類似するデータの格納されたダイジェスト値および対応する格納されたダイジェスト・ブロック境界を探し出し、メモリ中にロードする(ステップ312)。方法300は、データの整合を調べるために、入力データのダイジェスト値および対応するダイジェスト・ブロック境界と、格納されたダイジェスト値および対応する格納されたダイジェスト・ブロック境界とを照合する(ステップ314)。方法300が終了する(ステップ316)。
図4は、本発明の態様が実現可能な、データ重複排除システムによって重複排除処理を行う際の類似性探索に基づくダイジェスト検索のための例示的な別の方法400を示すフローチャートである。方法400が開始される(ステップ402)。方法400は、入力データをチャンクに区分化し(例えば、入力データを大きな固定サイズのチャンクに区分化し)(ステップ404)、入力データ・チャンクに対し、該入力データ・チャンクのデータに基づいて、ローリング・ハッシュ値、類似性要素、ダイジェスト・ブロック境界、およびダイジェスト値を計算する(ステップ406)。方法400は、類似性探索構造体(すなわちインデックス)中で入力データ・チャンクの類似性要素を探索する(ステップ408および410)。方法400は、十分なまたは不足のない量の整合する類似性要素があるかどうかを判定する(ステップ412)。十分な量の整合する類似性要素が見つからない場合、方法400は、入力データ・チャンクに対してリポジトリ中に類似するデータは見出せないと判定し、その入力チャンクのデータはリポジトリ中に格納され(ステップ414)、その後方法400は終了する(ステップ438)。十分な量の類似性要素が見つかった場合、方法400は、リポジトリ中で見出された各類似するデータ区間に対し、該リポジトリ中の各類似するデータ区間の位置およびサイズを判定する(ステップ416)。方法400は、リポジトリ中の該類似するデータ区間を代表するダイジェストを探し出す(ステップ418)。方法400は、これらのダイジェストを、メモリ中のダイジェストの探索データ構造体の中にロードする(ステップ420)。方法400は、まだ、さらなる類似するデータ区間があるかどうかを判定する(ステップ422)。「はい」の場合、方法400はステップ416に戻る。「いいえ」ならば、方法400は、入力データ・チャンクの各ダイジェストを検討する(ステップ424)。方法400は、ダイジェストの該メモリ探索構造体中に当該ダイジェスト値が存在するかどうかを判定する(ステップ426)。「はい」の場合、方法400は、該ダイジェストによってカバーされた入力データと、整合するダイジェスト値を有するリポジトリ・データとの間の同一性を記録する(ステップ428)。「いいえ」ならば、方法400は、該ダイジェストによってカバーされた入力データはリポジトリ中に見出せないことを記録する(ステップ430)。ステップ428および430の両方に続いて、方法400は、入力データ・チャンクのまださらなるダイジェストがあるかどうかを判定する(ステップ432)。「はい」の場合、方法400はステップ424に戻る。「いいえ」ならば、方法400は、リポジトリ中の整合したデータの類似性要素を、類似性探索構造体から除去する(ステップ434およびステップ410)。方法400は、入力データ・チャンクの類似性要素を類似性探索構造体に追加する(ステップ436)。方法400が終了する(ステップ438)。
図5は、本発明の態様が実現可能な、データ重複排除システムにおける、ローリング・ハッシュ値の単一線形計算を用いる、類似性探索値とダイジェスト・ブロックの境界との両方の効率的な計算のための例示的な方法500を示すフローチャートである。方法500が開始される(ステップ502)。方法500は、入力データをデータ・チャンクに区分化する(ステップ504)。データ・チャンクは固定サイズのデータ・チャンクとすればよい。方法500は、入力データ中のバイト・オフセットの中のバイト群の各連続ウィンドウを検討する(ステップ506)。方法500は、処理対象となるさらなるバイト群の連続ウィンドウがあるかどうかを判定する(ステップ508)。「はい」の場合、方法500は、バイト群の連続ウィンドウのデータに基づいて、ローリング・ハッシュ値を計算する(ステップ510)。方法500は、類似性値の計算およびダイジェスト・ブロック区分け(すなわち、ダイジェスト・ブロック境界)の計算にローリング・ハッシュ値を提供する(ステップ512)。方法500は、ローリング・ハッシュ値を廃棄し(ステップ514)、ステップ506に戻る。「いいえ」ならば、方法500は、類似性要素およびダイジェスト・ブロック区分けの計算を完了し、入力データの最終的類似性要素およびダイジェスト・ブロック区分けを生成する(ステップ516)。方法500は、ダイジェスト・ブロック区分けに基づいてダイジェスト値を計算し、各ダイジェスト・ブロックには対応するダイジェスト値が割り当てられる(ステップ518)。これらの類似性要素を用いて、リポジトリ中の類似するデータが探索される(ステップ520)。該ダイジェスト・ブロックおよび対応するダイジェスト値は、入力データと一致するリポジトリ中のデータを見つけ出すため、リポジトリ中に格納されたダイジェスト・ブロックおよび対応するダイジェスト値と照合するのに用いられる(ステップ522)。方法500が終了する(ステップ524)。
当業者には当然のことながら、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている一つ以上のコンピュータ可読媒体(群)中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることが可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体であっても、コンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいは前述の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去およびプログラム可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であってよい。
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことも可能である。
本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を上記で説明してきた。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装が可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。
また、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能/動作を実装する命令群を包含する製造品を作り出せるようにすることができる。さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
上記の図面中のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得ることに留意すべきである。例えば、連続して示された2つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。

Claims (22)

  1. コンピューティング環境で、プロセッサ・デバイスを用いるデータ重複排除システムにおける効率的な重複排除処理のため、類似性探索に基づいてダイジェストを検索する方法であって、
    データ重複排除システムが、
    入力データをデータ・チャンクに区分化するステップと、
    前記データ・チャンクの各々に対し、類似性要素およびダイジェスト値を計算するステップと、
    類似性要素を包含する探索構造体中で、整合する類似性要素を探索するステップと、
    データのリポジトリ中の類似するデータの位置を見出すステップと、
    前記類似するデータの前記位置を用いて、前記リポジトリ中の前記類似するデータの格納されたダイジェスト値を探し出し、メモリ中にロードするステップと、
    データの整合を調べるために、前記入力データの前記ダイジェスト値と、前記メモリ中にロードされた前記格納されたダイジェスト値とを照合するステップと、
    実行することを含む方法。
  2. 前記入力データを固定サイズのデータ・チャンクに区分化するステップをさらに含む、請求項1に記載の方法。
  3. 前記データ・チャンクの各々に対し、ローリング・ハッシュ値を計算するステップをさらに含み、ローリング・ハッシュ値はバイト・オフセット中のバイト群の各連続ウィンドウに対して生成される、請求項1に記載の方法。
  4. 前記類似性要素として、特定のローリング・ハッシュ値と前記特定のローリング・ハッシュ値の関連位置とを選択するステップをさらに含む、請求項3に記載の方法。
  5. 前記ローリング・ハッシュ値に基づいてダイジェスト・ブロック境界を計算するステップ、および前記ダイジェスト・ブロックに対応するダイジェスト値を計算するステップをさらに含む、請求項3に記載の方法。
  6. データの前記リポジトリ中に格納されたデータ・チャンクの前記類似性要素を包含するための前記探索構造体を決めるステップをさらに含む、請求項1に記載の方法。
  7. 前記ダイジェストを、前記データ中のそれらの出現に対応する形で前記リポジトリ中に格納するステップをさらに含む、請求項1に記載の方法。
  8. データの特定区間の前記リポジトリ中の位置およびサイズに基づいて、前記リポジトリ中で、データの前記特定区間に対応するダイジェストを探し出すステップをさらに含む、請求項7に記載の方法。
  9. 入力ダイジェスト値と、前記メモリ中にロードされた格納されたダイジェスト値とが一致する場合に、データの同一性を記録するステップをさらに含み、前記データの同一性は、前記整合する入力ダイジェストと格納されたダイジェストとによってそれぞれカバーされた、前記入力データおよびリポジトリ・データの中の前記データを含む、請求項1に記載の方法。
  10. コンピューティング環境のデータ重複排除システムにおける効率的な重複排除処理のため、類似性探索に基づいてダイジェストを検索するためのシステムであって、前記システムは、
    前記データ重複排除システムと、
    前記データ重複排除システム中で作動するリポジトリと、
    前記データ重複排除システム中のメモリと、
    前記データ重複排除システム中の前記メモリに関連付けられた探索構造体と、
    前記データ重複排除システムを制御するための、前記コンピューティング・ストレージ環境中で動作可能な少なくとも一つのプロセッサ・デバイスと、
    を含み、前記少なくとも一つのプロセッサ・デバイスは、
    入力データをデータ・チャンクに区分化し、
    前記データ・チャンクの各々に対し、類似性要素およびダイジェスト値を計算し、
    類似性要素を包含する前記探索構造体中で、整合する類似性要素を探索し、
    データのリポジトリ中の類似するデータの位置を見出し、
    前記類似するデータの前記位置を用いて、前記リポジトリ中の前記類似するデータの格納されたダイジェスト値を探し出し、前記メモリ中にロードし、
    データの整合を調べるために、前記入力データの前記ダイジェスト値と、前記メモリ中にロードされた前記格納されたダイジェスト値とを照合する、
    システム。
  11. 前記少なくとも一つのプロセッサ・デバイスが、前記入力データを固定サイズのデータ・チャンクに区分化する、請求項10に記載のシステム。
  12. 前記少なくとも一つのプロセッサ・デバイスが、前記データ・チャンクの各々に対し、ローリング・ハッシュ値を計算し、ローリング・ハッシュ値はバイト・オフセット中のバイト群の各連続ウィンドウに対して生成される、請求項10に記載のシステム。
  13. 前記少なくとも一つのプロセッサ・デバイスが、前記類似性要素として、特定のローリング・ハッシュ値と前記特定のローリング・ハッシュ値の関連位置とを選択する、請求項12に記載のシステム。
  14. 前記少なくとも一つのプロセッサ・デバイスが、前記ローリング・ハッシュ値に基づいてダイジェスト・ブロック境界を計算し、前記ダイジェスト・ブロックに対応するダイジェスト値を計算する、請求項12に記載のシステム。
  15. 前記探索構造体が、データの前記リポジトリ中に格納されたデータ・チャンクの前記類似性要素を包含する、請求項10に記載のシステム。
  16. 前記少なくとも一つのプロセッサ・デバイスが、前記ダイジェストを、前記データ中のそれらの出現に対応する形で前記リポジトリ中に格納する、請求項10に記載のシステム。
  17. 前記少なくとも一つのプロセッサ・デバイスが、データの特定区間の前記リポジトリ中の位置およびサイズに基づいて、前記リポジトリ中で、データの前記特定区間に対応するダイジェストを探し出す、請求項16に記載のシステム。
  18. 入力ダイジェスト値と、前記メモリ中にロードされた格納されたダイジェスト値とが一致する場合に、前記少なくとも一つのプロセッサ・デバイスがデータの同一性を記録し、前記データの同一性は、前記整合する入力ダイジェストと格納されたダイジェストとによってそれぞれカバーされた、前記入力データおよびリポジトリ・データの中の前記データを含む、請求項10に記載のシステム。
  19. コンピューティング環境で、プロセッサ・デバイスを用いるデータ重複排除システムにおける効率的な重複排除処理のため、類似性探索に基づいてダイジェストを検索するためのコンピュータ・プログラムであって、
    入力データをデータ・チャンクに区分化する第一実行可能部分と、
    前記データ・チャンクの各々に対し、類似性要素およびダイジェスト値を計算する第二実行可能部分と、
    類似性要素を包含する探索構造体中で、整合する類似性要素を探索する第三実行可能部分と、
    データのリポジトリ中の類似するデータの位置を見出す第四実行可能部分と、
    前記類似するデータの前記位置を用いて、前記リポジトリ中の前記類似するデータの格納されたダイジェスト値を探し出し、前記メモリ中にロードする第五実行可能部分と、
    データの整合を調べるために、前記入力データの前記ダイジェスト値と、前記メモリ中にロードされた前記格[されたダイジェスト値とを照合する第六実行可能部分と、
    を含む、コンピュータ・プログラム。
  20. 前記入力データを固定サイズのデータ・チャンクに区分化する第七実行可能部分をさらに含む、請求項19に記載のコンピュータ・プログラム。
  21. 前記データ・チャンクの各々に対し、ローリング・ハッシュ値を計算する第七実行可能部分をさらに含み、ローリング・ハッシュ値はバイト・オフセット中のバイト群の各連続ウィンドウに対して生成される、請求項19に記載のコンピュータ・プログラム。
  22. 前記類似性要素として、特定のローリング・ハッシュ値と前記特定のローリング・ハッシュ値の関連位置とを選択する第八実行可能部分をさらに含む、請求項21に記載のコンピュータ・プログラム。
JP2015562432A 2013-03-15 2014-02-12 データ重複排除における、類似性探索に基づくダイジェスト検索 Expired - Fee Related JP6320432B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/839,581 US9547662B2 (en) 2013-03-15 2013-03-15 Digest retrieval based on similarity search in data deduplication
US13/839,581 2013-03-15
PCT/IB2014/058936 WO2014140958A1 (en) 2013-03-15 2014-02-12 Digest retrieval based on similarity search in data deduplication

Publications (2)

Publication Number Publication Date
JP2016511478A JP2016511478A (ja) 2016-04-14
JP6320432B2 true JP6320432B2 (ja) 2018-05-09

Family

ID=51533010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015562432A Expired - Fee Related JP6320432B2 (ja) 2013-03-15 2014-02-12 データ重複排除における、類似性探索に基づくダイジェスト検索

Country Status (4)

Country Link
US (1) US9547662B2 (ja)
JP (1) JP6320432B2 (ja)
DE (1) DE112014000448T5 (ja)
WO (1) WO2014140958A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678975B2 (en) 2013-03-15 2017-06-13 International Business Machines Corporation Reducing digest storage consumption in a data deduplication system
US9244937B2 (en) 2013-03-15 2016-01-26 International Business Machines Corporation Efficient calculation of similarity search values and digest block boundaries for data deduplication
US9116941B2 (en) 2013-03-15 2015-08-25 International Business Machines Corporation Reducing digest storage consumption by tracking similarity elements in a data deduplication system
US10296597B2 (en) * 2013-07-15 2019-05-21 International Business Machines Corporation Read ahead of digests in similarity based data deduplicaton
US9678977B1 (en) * 2015-11-25 2017-06-13 International Business Machines Corporation Similarity based deduplication of snapshots data
US10031937B2 (en) * 2015-11-25 2018-07-24 International Business Machines Corporation Similarity based data deduplication of initial snapshots of data sets
US10255288B2 (en) * 2016-01-12 2019-04-09 International Business Machines Corporation Distributed data deduplication in a grid of processors
US10545832B2 (en) * 2016-03-01 2020-01-28 International Business Machines Corporation Similarity based deduplication for secondary storage
US10437684B2 (en) 2016-03-29 2019-10-08 International Business Machines Corporation Similarity based deduplication for secondary storage
US11327948B1 (en) * 2016-06-30 2022-05-10 EMC IP Holding Company LLC Managing deduplication of data in storage systems
CN111222774B (zh) * 2019-12-30 2020-08-18 广州博士信息技术研究院有限公司 企业数据分析方法、装置及服务器

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8725705B2 (en) 2004-09-15 2014-05-13 International Business Machines Corporation Systems and methods for searching of storage data with reduced bandwidth requirements
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US7870409B2 (en) 2007-09-26 2011-01-11 Hitachi, Ltd. Power efficient data storage with data de-duplication
JP5237661B2 (ja) * 2008-03-24 2013-07-17 日本放送協会 ファイル同期装置、ファイル同期方法及びファイル同期プログラム
US8527482B2 (en) * 2008-06-06 2013-09-03 Chrysalis Storage, Llc Method for reducing redundancy between two or more datasets
US8452731B2 (en) 2008-09-25 2013-05-28 Quest Software, Inc. Remote backup and restore
WO2010045262A1 (en) 2008-10-14 2010-04-22 Wanova Technologies, Ltd. Storage-network de-duplication
US8375182B2 (en) 2009-02-10 2013-02-12 Hewlett-Packard Development Company, L.P. System and method for segmenting a data stream
US8489612B2 (en) 2009-03-24 2013-07-16 Hewlett-Packard Development Company, L.P. Identifying similar files in an environment having multiple client computers
US20100318759A1 (en) 2009-06-15 2010-12-16 Microsoft Corporation Distributed rdc chunk store
US9280609B2 (en) * 2009-09-08 2016-03-08 Brocade Communications Systems, Inc. Exact match lookup scheme
US20120143715A1 (en) 2009-10-26 2012-06-07 Kave Eshghi Sparse index bidding and auction based storage
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
GB2471056B (en) 2010-03-09 2011-02-16 Quantum Corp Controlling configurable variable data reduction
US8250325B2 (en) 2010-04-01 2012-08-21 Oracle International Corporation Data deduplication dictionary system
US8694703B2 (en) 2010-06-09 2014-04-08 Brocade Communications Systems, Inc. Hardware-accelerated lossless data compression
US8463797B2 (en) * 2010-07-20 2013-06-11 Barracuda Networks Inc. Method for measuring similarity of diverse binary objects comprising bit patterns
CN103080910B (zh) 2010-09-09 2016-06-01 日本电气株式会社 存储系统
US8682873B2 (en) * 2010-12-01 2014-03-25 International Business Machines Corporation Efficient construction of synthetic backups within deduplication storage system
JP5485866B2 (ja) * 2010-12-28 2014-05-07 株式会社日立ソリューションズ 情報管理方法、及び情報提供用計算機
US9639543B2 (en) 2010-12-28 2017-05-02 Microsoft Technology Licensing, Llc Adaptive index for data deduplication
US9110936B2 (en) 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
GB2477607B (en) 2011-01-17 2011-12-28 Quantum Corp Sampling based data de-duplication
US20120185612A1 (en) * 2011-01-19 2012-07-19 Exar Corporation Apparatus and method of delta compression
US8612392B2 (en) 2011-05-09 2013-12-17 International Business Machines Corporation Identifying modified chunks in a data set for storage
US8805796B1 (en) 2011-06-27 2014-08-12 Emc Corporation Deduplicating sets of data blocks
US8825626B1 (en) 2011-08-23 2014-09-02 Emc Corporation Method and system for detecting unwanted content of files
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
US8484170B2 (en) 2011-09-19 2013-07-09 International Business Machines Corporation Scalable deduplication system with small blocks
CN103034659B (zh) 2011-09-29 2015-08-19 国际商业机器公司 一种重复数据删除的方法和系统
US9047304B2 (en) 2011-11-28 2015-06-02 International Business Machines Corporation Optimization of fingerprint-based deduplication
US8914338B1 (en) 2011-12-22 2014-12-16 Emc Corporation Out-of-core similarity matching
US20140115182A1 (en) 2012-10-24 2014-04-24 Brocade Communications Systems, Inc. Fibre Channel Storage Area Network to Cloud Storage Gateway
US9069478B2 (en) 2013-01-02 2015-06-30 International Business Machines Corporation Controlling segment size distribution in hash-based deduplication
US9244937B2 (en) 2013-03-15 2016-01-26 International Business Machines Corporation Efficient calculation of similarity search values and digest block boundaries for data deduplication
US9116941B2 (en) 2013-03-15 2015-08-25 International Business Machines Corporation Reducing digest storage consumption by tracking similarity elements in a data deduplication system
US9678975B2 (en) 2013-03-15 2017-06-13 International Business Machines Corporation Reducing digest storage consumption in a data deduplication system
US10366072B2 (en) 2013-04-05 2019-07-30 Catalogic Software, Inc. De-duplication data bank

Also Published As

Publication number Publication date
DE112014000448T5 (de) 2015-10-15
WO2014140958A1 (en) 2014-09-18
US20140279951A1 (en) 2014-09-18
US9547662B2 (en) 2017-01-17
JP2016511478A (ja) 2016-04-14

Similar Documents

Publication Publication Date Title
JP6320432B2 (ja) データ重複排除における、類似性探索に基づくダイジェスト検索
US9600515B2 (en) Efficient calculation of similarity search values and digest block boundaries for data deduplication
US10013202B2 (en) Utilizing global digests caching in similarity based data deduplication
US10007672B2 (en) Global digests caching in a data deduplication system
US10339109B2 (en) Optimizing hash table structure for digest matching in a data deduplication system
US9116941B2 (en) Reducing digest storage consumption by tracking similarity elements in a data deduplication system
US9678975B2 (en) Reducing digest storage consumption in a data deduplication system
US10007610B2 (en) Tuning global digests caching in a data deduplication system
US20150019815A1 (en) Utilizing global digests caching in data deduplication of workloads
US10657104B2 (en) Data structures for digests matching in a data deduplication system
US10255288B2 (en) Distributed data deduplication in a grid of processors
US10229132B2 (en) Optimizing digest based data matching in similarity based deduplication
US10296598B2 (en) Digest based data matching in similarity based deduplication
US10671569B2 (en) Reducing activation of similarity search in a data deduplication system
US10229131B2 (en) Digest block segmentation based on reference segmentation in a data deduplication system
US10789213B2 (en) Calculation of digest segmentations for input data using similar data in a data deduplication system
US9922042B2 (en) Producing alternative segmentations of data into blocks in a data deduplication system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180226

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: 20180313

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180403

R150 Certificate of patent or registration of utility model

Ref document number: 6320432

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees