JP4238233B2 - 複数のファイル間で記憶資源を共有するシステムおよび方法 - Google Patents

複数のファイル間で記憶資源を共有するシステムおよび方法 Download PDF

Info

Publication number
JP4238233B2
JP4238233B2 JP2005173488A JP2005173488A JP4238233B2 JP 4238233 B2 JP4238233 B2 JP 4238233B2 JP 2005173488 A JP2005173488 A JP 2005173488A JP 2005173488 A JP2005173488 A JP 2005173488A JP 4238233 B2 JP4238233 B2 JP 4238233B2
Authority
JP
Japan
Prior art keywords
breakpoint
sequence
true
function
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.)
Active
Application number
JP2005173488A
Other languages
English (en)
Other versions
JP2006031686A (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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2006031686A publication Critical patent/JP2006031686A/ja
Application granted granted Critical
Publication of JP4238233B2 publication Critical patent/JP4238233B2/ja
Active 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
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

この開示は、包括的には、記憶資源および通信資源の使用の共有およびその他の最適化に関し、詳細には、類似の性質を有する複数のファイルが関係する場合の記憶資源および通信資源の使用の共有およびその他の最適化を行うシステムおよび方法に関する。
企業および個人が、ますます、自身のコンピュータシステムおよびネットワークを使用し、これらに依拠するにつれて、より効率的なシステムおよびより高速のネットワークの必要性がより重要となってきている。その結果、コンピュータシステムは、今や、情報(例えば、データファイルおよびアプリケーションプログラム)を記憶するのにより大きなメモリを有し、コンピュータネットワークは、情報を伝送するのにより大きな帯域幅を有する。記憶される情報量および伝送される情報量が増加し続けているので、コンピュータシステムおよびネットワークの効率性および速度は、より効率的かつ高速に情報を記憶、検索、および伝送することによってさらに改良される可能性がある。情報の効率的かつ高速な処理を実行するさまざまなシステムおよび方法が開発されてきた。これらのシステムおよび方法は、ステートレスチャンキングアルゴリズム(stateless chunking algorithm)を利用して、効率および速度の改善を達成することができる。
チャンキングアルゴリズムは、長いバイトシーケンスSを一連の小さなサイズのブロックまたはチャンクc1、c2、…、cnに分割するものである。これは、チャンクシーケンスがSの局所的な変更の下で安定するように行われることが好ましい。局所的な変更の下で安定するということは、Sに対して小さな変更を行い、その結果、S’になり、このS’にチャンキングアルゴリズムを適用すると、S’に対して作成されたチャンクのほとんどがSに対するチャンクと同一であることを意味する。このアルゴリズムの名前における用語「ステートレス」は、そのタスクを実行するのに、アルゴリズムが入力としてのバイトシーケンスSのみに依拠し、利用可能となり得る他の一時的な情報または状態に依存した情報を調べることが可能でないことを意味する。不安定なチャンキングアルゴリズムでは、シーケンスの中央の軽微な挿入または削除であっても、その変更点に続くすべてのチャンク境界がシフトされる。チャンク境界をシフトさせる結果、ハッシュ値が異なるおそれがあり、その結果、通常、変更のないデータが挿入または削除の後に続くという理由だけで、それら変更のないデータが大量に記憶および/または伝送されることになる。
チャンキングオーバーヘッドは、変更された部分シーケンスに実際の含まれるデータの他に、通信および記憶する必要のあるデータの量の尺度である。チャンキングオーバーヘッドを削減することによって、チャンキングアルゴリズムを使用している装置の効率性は、当該装置による通信資源および記憶資源の使用に関して増加する。
米国特許第5990810号 Brin, J. DavisおよびH. Garcia-Molina著「Copy detection mechanisms for digital documents」、Department of Computer Science Report、Stanford University、October 1994 Udi Manber著「Finding Similar Files in a Large File System」、DEPARTMENT OF COMPUTER SCIENCE、University of Arizona TR 93-33 October 1993 A. Muthitacharoen、B. ChenおよびD. Mazieres著「A low-bandwidth network file system」、In Proceedings of the 18th ACM Symposium on OperatingSystems Principles (SOSP '01)、pages 174-187、Chateau Lake Louise、Banff、 Canada、 October 2001 M.O. Rabin著「Fingerprinting by Random Polynomials」、 Tech. Rep. TR-15-81、 Center for Research in Computing Technology、Harvard Univ.、Cambridge、Mass.、1981
局所的な変更の下で安定したチャンキングアルゴリズムは、(1)アーカイブファイルシステム、および、(2)低帯域幅ネットワークファイルシステムといった少なくとも2つの状況で必要となってくる。あいにく、既知のチャンキング方法およびそのような方法を含む装置は、安定性および効率性の双方に関して失望せざるを得ない。したがって、本開示は、特にアーカイブファイルシステムおよび低帯域幅ネットワークファイルシステムで実施された場合に、安定性および/または効率性をさらに提供できる方法およびシステムを対象とする。
本発明のプロセッサベースの方法は、値シーケンスを、1つ以上のチャンクに分割するプロセッサベースの方法であって、前記シーケンスにおける位置のフィンガープリント値を取得すること、および前記フィンガープリント値がD1整合であるかどうかを判断し、少なくとも、前記フィンガープリント値がD1整合でない場合に、前記フィンガープリント値がD2整合であるかどうかを判断すること、を含み、関数D1Matchが値に適用されると「真」を返す場合に、その値はD1整合であり、関数D2Matchが値に適用されると「真」を返す場合に、その値はD2整合であり、D1MatchおよびD2Matchは、整数をブール値にマッピングするブール関数であり、ランダムな整数に適用された場合に、D1Matchが「真」を返す確率は、D2Matchが「真」を返す確率よりも小さい。
この発明の正確な本質、ならびに、この発明の目的および利点は、以下の明細書を添付図面と共に考慮することによって容易に明らかになる。添付図面において、同じ参照番号は、添付図面の図全体を通じて同じ部分を指す。
次に、この発明の例示の実施の形態を参照する。例示の実施の形態の例は添付図面に図示されている。この発明は、1つまたは2つ以上の実施の形態と共に説明されるが、これらの実施の形態は、この発明を限定することを意図したものではない。これとは逆に、この発明は、代替的なもの、変更したもの、および均等なものをカバーするように意図され、これらは、添付した特許請求の範囲によって画定されるこの発明の趣旨および範囲内に含めることができる。以下の詳細な説明では、本発明の十分な理解を提供するために、多数の具体的な詳細を説明する。しかしながら、本発明はこれらの具体的な詳細がなくても実施できることが、当業者の1人には理解されよう。それ以外の例では、本発明の重要な態様を不必要に分かりにくくしないように、周知の方法、手順、およびコンポーネントは詳細に説明していない。
ファイルをチャンクにする等、シーケンスのより安定した分割(すなわち、所与の挿入および削除に対してチャンクの変更が少ない分割)を提供するために、チャンクの境界は、ファイルの始点からの距離ではなく、ファイルの局所的な内容に依存して作成することができる。これを行う一方法は、スライディングウィンドウアルゴリズムを使用することである。このスライディングウィンドウアルゴリズムでは、ファイル内の各位置について、その位置で終了するウィンドウ内に含まれるデータシーケンスのフィンガープリントが計算され、このフィンガープリントが特定の判定基準を満たす場合に、その位置がチャンクの終点(すなわち、ブレークポイント)として指定される。一例として、ファイルが1000個の文字位置を含み、50のウィンドウサイズが使用される場合に、位置1000のフィンガープリントは、位置951から開始して1000で終了するシーケンスのフィンガープリントとなり、位置999のフィンガープリントは、位置950から開始して999で終了するシーケンスのフィンガープリントとなり、位置998のフィンガープリントは、位置949から開始して998で終了するシーケンスのフィンガープリントとなる。他の位置のフィンガープリントも、同様にして決定される。各位置のフィンガープリントは、決定されると、所定の整数Dによって除算され、その剰余が所定の値rと比較される。この剰余がrと等しい場合には、その位置がブレークポイントとして使用される。特定の位置について、剰余がrに等しい場合、その位置には「フィンガープリント整合(fingerprint match)」が存在する。
「フィンガープリント整合」のさらに形式的な定義は、シーケンスS=s1,s2,…sn、ハッシュ関数h、およびウィンドウ長lが与えられると、或る所定のr<Dについて、h(W) mod D=rが、Sにおける位置kの前方の長さlの部分シーケンスである場合に、位置kにフィンガープリントが存在するということである。ここで、W=sk−l+1,sk−l+2,…,skである。本明細書で使用されるような「スライディングウィンドウチャンキング方法」は、フィンガープリント整合が存在するシーケンスの各位置にブレークポイントを設定するチャンキング方法である。位置のフィンガープリント値を計算する際に、「ラビンの(Rabin's)」フィンガープリントアルゴリズム等の非常に効率的なアルゴリズムを使用して、チャンキング方法の効率を改善することができる。
明らかなはずであるが、固定サイズのチャンクを使用するのではなく、スライディングウィンドウアルゴリズムを使用してチャンク境界を決定することの利点は、変更が行われるチャンク以外のチャンクはその変更による影響を受けないということである。さらに、チャンクサイズの最大値および最小値を設定し、(a)最小サイズよりも小さなチャンクを規定するために前のブレークポイントに非常に接近したあらゆるブレークポイントを削除し、(b)少なくとも1つの最大サイズのチャンクおよび最大サイズ以下の少なくとも1つのチャンクを規定するために、最大サイズよりも大きなチャンクを規定するあらゆる2つのブレークポイント間に少なくとも1つのブレークポイントを挿入する、ことによって、改良を行うことができる。
上述したような装置および方法のさらなる情報は、以下の参考文献を参照することによって見つけることができる。(1)Brin, J. DavisおよびH. Garcia-Molinaの「Copy detection mechanisms for digital documents」、Department of Computer Science Report、Stanford University、October 1994(非特許文献1)、(2)Udi Manberの 「Finding Similar Files in a Large File System」、DEPARTMENT OF COMPUTER SCIENCE、University of Arizona TR 93-33 October 1993(非特許文献2)、(3)米国特許第5990810号の「Method for partitioning a block of data into subblocks and for storing and communicating such subblocks」(特許文献1)、(4)A. Muthitacharoen、B. ChenおよびD. Mazieresの「A low-bandwidth network file system」、In Proceedings of the 18th ACM Symposium on OperatingSystems Principles (SOSP '01)、pages 174-187、Chateau Lake Louise、Banff、 Canada、 October 2001(非特許文献3)、ならびに(5)M.O. Rabinの「Fingerprinting by Random Polynomials」、 Tech. Rep. TR-15-81、 Center for Research in Computing Technology、Harvard Univ.、Cambridge、Mass.、1981(非特許文献4)。これらの参考文献のそれぞれは、この引用によって、その全内容が参照により本明細書に援用される。
シーケンスをチャンク、すなわち、より小さなシーケンスに分割するよりよい方法は、次のものを含む。事前に定義されたプロシージャD1Match(F)およびD2Match(F)、ならびに、3つの所定の整数W、M1、およびM2で開始することができる。D1Matchは、整数Fに適用されると、「真」または「偽」を返す決定性プロシージャである。D1Matchの1つの可能な実施の形態は、Fを所定の整数D1で除算した剰余を計算し、その剰余が所定の整数R1に等しい場合には真を返し、そうでない場合には偽を返すことである。D2Matchも、整数Fに適用されると、「真」または「偽」を返す決定性プロシージャである。D2Matchの1つの可能な実施の形態は、Fを所定の整数D2で除算した剰余を計算し、その剰余が所定の整数R2に等しい場合には真を返し、そうでない場合には偽を返すことである。Wはウィンドウサイズであり、このウィンドウサイズは、上述したようなスライディングウィンドウチャンキングアルゴリズムについて行われるような各位置のフィンガープリントを取る部分シーケンスのサイズを決定するものである。好ましくは、ランダムに選択したFに対して、D2Match(F)が真を返す確率は、D1Matchが真を返す確率よりも高い。M1およびM2は、それぞれ、最大チャンクサイズおよび最小チャンクサイズである。
をm番目のブレークポイント(または、bm+1がシーケンスの最初のブレークポイントとなる場合には、シーケンスの開始点)とすると、bm+1は、以下のステップを実行することによって決定される。b+M2がシーケンスの終点位置よりも大きいかまたは終点位置と等しい場合には、我々は終了する。そうでない場合には、シーケンスの走査が、位置b+M2で開始され、各位置kにおいて、位置k−Wと位置kとの間の部分シーケンスのフィンガープリント値fが計算される。D1Match(f)が計算されて、このD1Match(f)が真を返すと、我々は、kにおいて「D1整合」が存在すると言う。D2Match(f)も計算されて、このD2Match(f)が真を返すと、我々は、kにおいて「D2整合」が存在すると言う。走査は、いずれが最初に起こるとしても、D1整合が見つかるまで、または、位置b+M1に達するまで続けられる。D1整合が、しきい値M1に達する前に見つかると、その位置が、ブレークポイントbm+1として指定される。D1整合が、しきい値M1に達する前に見つからないが、少なくとも1つのD2整合が見つかっている場合には、最新のD2整合になる位置がブレークポイントbm+1として指定される。D1整合またはD2整合が見つからない場合には、b+M1の位置がブレークポイントbm+1として指定される。
その後、これらのステップは、シーケンスの終点に達するまで、または、現在分割中の区間の終点に達するまで繰り返すことができる。この方法は、整数シーケンスに有利に適用できるが、他のシーケンスにも同様に適用可能な場合があることに留意すべきである。また、この方法は、フィンガープリント値が第1の組の判定基準を満たすかどうか、すなわち、フィンガープリント値がD1整合であるかどうか、および、フィンガープリント値が第2の組の判定基準を満たすかどうか、すなわち、フィンガープリント値がD2整合であるかどうか、を判断することも検討する。この方法は、異なる組の判定基準を利用するように変更することができる。この変更は、異なる除数値および剰余値を有する同じ組の判定基準を使用して、かつ/または、D1整合もD2整合も発生しない場合に使用されるバックアップブレークポイントを追加する付加的な組の判定基準を使用して行われる。
説明した方法では、現在ウィンドウ内にあるシーケンスのメンバのフィンガープリント値を取得することは、ラビンのフィンガープリントアルゴリズムを使用して行われることが好ましい。このアルゴリズムはこの技術分野で周知であるので、本明細書では詳細に説明しない。代替的に、他のハッシュ/フィンガープリントアルゴリズムを使用することもできる。
好ましいチャンキング方法のより詳細な実施の形態を図1の方法1として示す。この方法は、Sをチャンクに分割するブレークポイントの配列Bを生成するのに使用される。図1のブロック3において、さまざまな初期化が実行され、position(位置)変数がフィンガープリントウィンドウWのサイズに設定され、lastBreak(最終ブレーク)変数が、ブレークポイントがまだ見つかっていないことを示す0に等しく設定され、ブレークポイントBの配列が空配列となるように設定され、fが、分割中の整数シーケンスSにおける、ウィンドウの始点(position−windowSize(ウィンドウサイズ))で開始してウィンドウの終点(position)で終了するセグメントのフィンガープリント値に等しく設定される。判定ボックス7において、シーケンスの終点にすでに達しているかどうかを調べるチェックが行われる。シーケンスの終点にすでに達している場合には、シーケンスSのチャンキングは完了する。シーケンスの終点にまだ達していない場合には、シーケンスSのチャンキングは続けられる。このチェックは、「position」の現在値がSの長さよりも小さいかどうかを判断することによって行われる。「position」の現在値がSの長さよりも小さい場合には、Sの終点にはまだ達しておらず、処理は判定ボックス9に続く。
判定ボックス9において、現在位置をブレークポイントとして指定することにより、チャンクが最小チャンクサイズよりも小さくなるかどうかを判断するチェックが行われる。チャンクが最小チャンクサイズよりも小さくなる場合には、ボックス27に示すように、ウィンドウが移動され、フィンガープリント値が更新される。チャンクが最小チャンクサイズよりも小さくない場合には、フィンガープリント値が評価される。このチェックは、positionとlastBreakとの差を値Tmin(前の例ではM2)と比較することによって行われる。
判定ボックス11において、フィンガープリント値fをD2によって除算した結果の剰余をr2と比較することによって、fが評価される。この方法の最初の説明と同様に、D2はバックアップ除数値であり、r2はバックアップ剰余値である。剰余がr2に等しい場合には、ボックス13において、backupBreak(バックアップブレーク)をpositionと等しく設定されることにより、現在位置がバックアップブレークポイント位置として指定される。剰余がr2に等しくない場合には、この方法は、ポイント15にジャンプし、ボックス13を迂回する。
判定ボックス17において、フィンガープリント値fをD1で除算した結果の剰余をr1と比較することによって、fが評価される。この方法の最初の説明と同様に、D1はメイン除数値であり、r1はメイン剰余値である。剰余がr1に等しい場合には、ボックス31において、配列Bの後部に現在位置を追加することにより、現在位置がブレークポイント位置として指定され、lastBreak(最終ブレーク)をpositionに等しく設定することにより、最終ブレークポイントの最終位置が現在位置に更新され、backupBreakを0に設定することにより、あらゆるバックアップブレークポイント位置が廃棄される。その後、ボックス27に示すように、ウィンドウが移動され、フィンガープリント値が更新される。剰余がr1に等しくない場合には、この方法は、判定ボックス19を続ける。
判定ボックス19において、現在位置にブレークポイントを設定することによって、チャンクが最大チャンクサイズに等しくなるかどうかを判断するチェックが行われる。チャンクが最大チャンクサイズに等しくならない場合には、ボックス27に示すように、ウィンドウが移動され、フィンガープリント値が更新される。チャンクが最大チャンクサイズに等しくなる場合には、バックアップブレークポイントまたは現在位置のいずれかがブレークポイントとして指定され、チャンクサイズが最大許容サイズよりも大きくなることが防止され、この方法は判定ボックス21に進む。ボックス19のチェックは、positionとlastBreakとの差を最大チャンクサイズであるTmax(前の例ではM1)と比較することによって行われる。
ウィンドウをスライディングさせることによって、チャンクサイズが最大チャンクサイズを超える可能性がある場合には、ボックス21に達する。ボックス21において、バックアップブレークポイントが見つかったかどうかを判断するチェックが行われる(backupBreakを0と比較することによって)。バックアップブレークポイントが見つかった場合には、そのバックアップブレークポイントを配列Bの後部に追加することによって、当該バックアップブレークポイントがブレークポイントとして指定され(ボックス23に示すように)、lastBreakをbackupBreakに等しく設定することによって、最終ブレークポイント位置がそのバックアップブレークポイント位置に設定され、backupBreakを0に設定することによって、バックアップブレークポイント位置がクリアされる。その後、ボックス27に示すように、ウィンドウが移動され、フィンガープリント値が更新される。
ボックス21において、チェックが、バックアップブレークポイントが見つからなかったと判断すると、ボックス29に示すように、現在位置がブレークポイントとして指定されて、最大サイズのチャンクが作成される。これは、現在位置を配列Bの後部に追加して、lastBreakをpositionに等しく設定することによって行われる。その後、ボックス27に示すように、ウィンドウが移動され、フィンガープリント値が更新される。
ボックス21において、現在位置が、分割中のシーケンスの次の位置になるように変更され、フィンガープリント値fが更新される。
図2では、擬似Cコードスニペットが本発明の別の実施の形態を提供する。図2のコードは、一例としての機能を果たすには十分完成したものであるが、その現在の形でコンパイルするには必ずしも適していないことに留意すべきである。図2では、多数の変数が図1に関して説明した変数と対応する。例外は、「D1」および「D2」の代わりに「D」および「Ddash」が使用され、「r1」の代わりに「D−1」が使用され、「r2」の代わりに「Ddash−1」が使用され、「f」の代わりに「hash」が使用されることである。また、このコードは、ブレークポイントの配列にブレークポイントを追加するステップを示す関数「addBreakpoint」も含む。
本発明のいくつかの実施の形態は、上述した方法に加えて、少なくとも、このような方法を使用してチャンキングされたシーケンス、このような方法を記憶および/または実行する装置、ならびに、このような方法を使用してチャンキングされたシーケンスを記憶および/または伝送する装置も包含する。
したがって、CD、DVD、または他の記憶デバイスを使用して、本明細書で説明した方法の1つまたは2つ以上を実施する命令セットを記憶することができ、かつ/または、本明細書で説明した方法の1つまたは2つ以上を使用してチャンキングされたリストを記憶することができる。検討された記憶装置には、揮発性ソリッドステートメモリ、不揮発性ソリッドステートメモリ、光ディスク、磁気ディスク、光磁気ディスク、RAM、PROM、EPROM、磁気テープ、1つもしくは2つ以上の電子回路、および/またはRAID装置、DAS装置、NAS装置、もしくはSAN装置が含まれるが、必ずしもこれらに限定されるものではない。いくつかの場合において、記憶装置は、より大きなシステムに含めることができる一方、それ以外では、記憶装置はスタンドアロンである。
一例として、図3では、装置31はコンピュータ32であり、このコンピュータ32は、プロセッサ33、メモリ34、およびマシン可読媒体35を備える。マシン可読媒体35は、分割される値シーケンス37および命令セット39を含む。命令セット39は、プロセッサによって実行されると、上述したように、値シーケンス37を複数のチャンクに分割するオペレーションをプロセッサに実行させる。図4は、装置41が、命令セット47を含むDVDディスクであるマシン可読媒体45を備える別の例を提供する。命令セット47は、マシンによって実行されると、上述したように、値シーケンスを複数のチャンクに分割するオペレーションをマシンに実行させる。
この発明を実施する装置が、本明細書で説明した方法の1つまたは2つ以上を実施する命令セットを備える場合に、この命令セットは、任意の適当な形を有することができる。したがって、この命令セットは、少なくとも、図2に示す形と類似したコンピュータプログラミング言語のシンタックスのテキストとして記憶することもできるし、コンパイルされたがリンクされていないフォーマットのオブジェクトコードとして記憶することもできるし、実行可能フォーマットで記憶することもできるし、暗号化することもできるし、かつ/または、圧縮することもできる。この命令セットは、テキストフォーマットで記憶される場合、特に、C、C++、C#、PASCAL、BASIC、COBOL、FORTRAN、RPG、LISP、JAVA(登録商標)、HTML、XML、SQL、Perl、ADA、Beta、Cecil、Eiffel、Elf、Erlang、Forth、Gentle、Haskell、Hope、lambda、Lygon、Mercury、Modula、Napier、Nestl、Obliq、Occam、Oz、Pict、Pilot、Pizza、Promethius、Python、Saser、Scheme、Sisl、Theta、Postscript、またはアセンブリ言語の「プログラム」もしくはプログラムセットとして記憶することができる。さらに、この命令セットは、ライブラリに組み込むこともできるし、1つまたは2つ以上の個別のファイルに記憶することもできる。
この発明を実施する装置が、本明細書で説明した方法の1つまたは2つ以上を使用してチャンキングされたシーケンスを備える場合、このチャンキングされたシーケンスは、任意の適当な形を有することができる。したがって、いくつかの場合において、生成されたブレークポイントは、そのシーケンスの切り離せない部分とすることができ、それ以外では、生成されたブレークポイントは、おそらく配列、リスト、および/またはシーケンスとして別々に記憶することができる。いくつかの場合において、ブレークポイントは、明確に生成されないことがあるが、他の或るメカニズムを使用すると、チャンク自体を配列、リスト、または他の或る形で記憶すること等によってシーケンスを分割することができる。
この装置は、シーケンスを記憶するように適合されると、チャンキングされたシーケンスのハッシュ値を、先に記憶されたチャンクのハッシュ値と比較して、記憶すべきチャンクがもしあれば、どのチャンクを記憶すべきかを決定するように適合することができる。この装置は、分割したシーケンスを送信するように適合されると、チャンクのハッシュ値を受信装置に最初に送信して、受信装置にまだ記憶されていないチャンクのみを送信することにより、分割したシーケンスを送信することができる。特定のチャンクが受信装置に存在するかどうかの判断は、送信システムまたは受信システムのいずれかによって行うことができる。受信システムによって行われる場合、シーケンスの送信は、そのシーケンスのハッシュ値を送信することと、受信システムがまだ有していないチャンクについて、受信システムからの要求に応答することとを含むことができる。
装置の一部であれば、その装置は、命令セットおよび/またはチャンキングされたシーケンスの記憶、実行、および/または送信を行う最小の要素を備えることができる。多くの実施の形態では、この装置は、DOS、CPM、UNIX(登録商標)、WINDOWS(登録商標)、PalmOS、またはMacintoshファミリーのオペレーティングシステムを実行するコンピュータであると考えられる。他の実施の形態では、他のオペレーティングシステムを使用することができ、および/または、メインフレーム、ロボット工学、製造に専用化されたオペレーティングシステム/アプリケーションおよび/または実時間制御システム等の専用オペレーティングシステム/アプリケーションを使用することができる。
いくつかの場合において、この装置は、命令セットのコピーまたはチャンキングされたリストのコピーを購入者に提供するように製造された製品とすることができる。いくつかの場合において、この製品は、受信装置に電子的に転送可能なファイルまたはファイルセットである一方、それ以外では、上述したようなCDまたはDVDとすることができる。
図1および図2の方法は例示の実施の形態にすぎないことに留意することは重要である。したがって、代替的な実施の形態は、追加ステップもしくはこれよりも少ないステップを含むこともでき、および/または、類似した順序もしくは異なる順序でステップを実行することもできる。一例として、いくつかの実施の形態では、フィンガープリント値を評価して、D2整合が生じたかどうかを判断することは、前の評価が、D1整合が生じなかったことを示す場合にのみ行うことができる。別の例として、説明した方法は、シーケンス(または部分シーケンス)の始点から終点に向けて走査するが、代替的な方法は、終点から始点に向けて走査することもできるし、他の形式でブレークポイントを見つけることもできる。同様に、ブレークポイントの実際の割り当ては、ブレークポイントがシーケンスに現れる順序で行うこともできるし、タイプに基づいて行うこともできるし(すなわち、最初にD1整合、次にD2整合等)、他の或る方法で行うこともできる。
本明細書で使用するように、用語「取得する」は、広く使用され、少なくとも、内部または外部のソースから取得されたオブジェクトを受け取ること、オブジェクトを生成するステップを実行すること、ならびに/または、値の場合には、その値を生成する演算を実行することおよび/もしくはその値を計算することを含む。用語「〜するように適合される」も、適合されたオブジェクトが、識別された機能を実行することを容易にする少なくとも1つの特性を有することを示すように広く使用される。いくつかの例の適合は、オブジェクトを適切なサイズおよび寸法にすること、オブジェクトをプログラミングすること、ならびに、適切な回路、センサ、およびアクチュエータをオブジェクトに提供することである。
本明細書で説明した方法および装置は、データブロックを記憶するのに使用されるアーカイブファイルシステムであって、ブロック識別子として各データブロックのハッシュを利用するアーカイブファイルシステムでの使用に適している。ファイルの記憶にハッシュベースの記憶方式を使用するために、各ファイルは、本明細書で説明したチャンキングアルゴリズムを使用して多数のブロックに分割され、これらのブロックは別々に記憶される。
本明細書で説明した方法および装置は、受信機(サーバまたはクライアント)が、送信される情報(例えばファイル)の同様のバージョンをすでに有する場合に、低帯域幅ネットワークファイルシステムの実施に使用されて、サーバとクライアントとの間で転送される情報量を最小にするのに適している。例えば、サーバは、クライアントがサーバに保存したいファイルの旧バージョンを有することがある。その新しいファイルは、既存のファイルの検索および編集を行うことによって作成されている可能性がある。サーバは、既存のファイルを受信すると、本明細書で説明したようなチャンキングアルゴリズムを使用して、既存のファイルをチャンクに分割し、各チャンクのハッシュまたは識別子を作成する。サーバは、自身のメモリに記憶されたすべてのチャンクのハッシュのテーブルまたはリストを、チャンク自体の記憶場所のポインタと共に保持する。次に、クライアントが、ファイルの新しいバージョンをサーバに保存したい場合、クライアントは、同じチャンキングアルゴリズムを使用して、その新しいファイルをチャンクに分割し、各チャンクのハッシュを作成し、ハッシュをサーバに送信する。サーバは、自身のテーブルでハッシュを調べて、ハッシュがテーブルで見つからないチャンクの要求をクライアントに送信する。クライアントは、次に、それら見つからないチャンクをサーバに送信する。チャンキングアルゴリズムの安定特性により、サーバは、クライアントのファイルに属するチャンキングのほとんどを有することがある。サーバは、チャンクを使用して、あいまいさもエラーもなくファイルを再構築する。類似の方法を使用して、サーバからクライアントにファイルを送信することもできる。
本明細書で説明した本発明の実施の形態は、複数の新規な特徴を備え、説明した各実施の形態は、単一のこのような特徴またはこのような特徴の組み合わせのいずれかを含む。他の検討した実施の形態は、1つまたは2つ以上のこのような新規な特徴のすべての組み合わせを含むが、このような組み合わせは、説明した実施の形態から容易に見分けることができるので、本明細書では明示的に説明していない。検討したさまざまな実施の形態に鑑み、本発明は、このようないくつかの特徴付けの例を提供する以下のパラグラフにより、多数の方法で特徴付けることができる。
本発明の1つの有用な実施の形態は、値シーケンスを、各チャンクがより小さな値シーケンスである、複数のチャンクに分割する方法としてのものである。この方法は、シーケンスにおける位置のフィンガープリント値を取得することと、そのフィンガープリント値がD1整合であるかどうかを判断し、少なくともD1整合でない場合には、そのフィンガープリント値がD2整合であるかどうかを判断することとを含む。ここで、値を第1の除数D1によって除算した結果、剰余が値R1を有する場合には、その値はD1整合であり、値を第2の除数D2によって除算した結果、剰余が値R2を有する場合には、その値はD2整合であり、D1はD2に等しくなく、D1、D2、R1、およびR2は所定の値を有する。
いくつかの場合において、有用な実施の形態は、フィンガープリント値を取得する位置を含んだウィンドウに含まれるデータ値シーケンスのハッシュ値を取得することによって、シーケンスにおける位置のフィンガープリント値を取得することを含むことができる。このようないくつかの場合において、実施の形態は、シーケンス内の位置をブレークポイントとして指定することによって、値シーケンスを分割することをさらに含むことができ、ここで、各ブレークポイントは、チャンクの始点または終点であり、位置は、以下のブレークポイント条件の少なくとも1つが真である場合にブレークポイントとして指定される。このブレークポイント条件とは、すなわち、その位置のフィンガープリント値がD1整合であることと、その位置のフィンガープリント値がD2整合であり、かつ、前のブレークポイントがもしあれば、当該前のブレークポイントと、あらゆる後続のD1整合のブレークポイントとの間の距離が所定の最大値M1よりも大きいことと、前のブレークポイントがもしあれば、当該前のブレークポイントと現在位置との間の距離が最大値M1に等しいこととである。このようないくつかの場合において、実施の形態は、ブレークポイント条件がたとえ真であっても、位置とあらゆる前のブレークポイントとの間の距離が所定の最小値M2よりも小さい場合には、その位置をブレークポイントとして指定しないことがある。いくつかの場合において、有用な実施の形態は、値シーケンスを複数のチャンクに分割することを含むことができ、ここで、各チャンクの最後の位置は、ブレークポイントおよび/または分割中のシーケンスの最後の位置である。いくつかの場合において、有用な実施の形態は、値シーケンスを複数のチャンクに分割することを含むことができ、ここで、各チャンクの最初の位置は、ブレークポイントおよび/または分割中のシーケンスの最初の位置である。
いくつかの場合において、有用な実施の形態は、値シーケンスの一方の端部またはその近傍から開始して、値シーケンスの他方の端部に向かって進みながらフィンガープリント値を決定することによってブレークポイントが生じるシーケンスにおいて、ブレークポイントを指定することを含むことができる。いくつかの場合において、値シーケンスは整数値シーケンスであり、D1、D2、R1、およびR2は整数であり、D1が偶数であり、かつ、D2がD1の2分の1であるか、または、D1が奇数であり、かつ、D2がD1を2で除算したものよりも次に大きいかもしくは次に小さい整数である。
いくつかの場合において、方法は、コンピュータによって実行することができ、および/または、少なくとも、フィンガープリント値がD1整合でもD2整合でもない場合に、フィンガープリント値を少なくとも1つの追加除数DNによって除算した結果、剰余が値RNを有するかどうかを判断することも含むことができる。ここで、DNおよびRNは所定の値を有し、DNはD1にもD2にも等しくなく、RNはDNに対応する。
いくつかの場合において、有用な実施の形態は、値シーケンスを、各チャンクがより小さな値シーケンスとなる複数のチャンクに分割する複数の命令を備える装置を含むことができる。複数の命令は、シーケンスにおける位置のフィンガープリント値を取得することと、フィンガープリント値がD1整合であるかどうかを判断し、少なくとも、フィンガープリント値がD1整合でない場合に、フィンガープリント値がD2整合であるかどうかを判断することとを含む。ここで、値を第1の除数D1によって除算した結果、剰余が値R1を有する場合に、その値はD1整合であり、値を第2の除数D2によって除算した結果、剰余が値R2を有する場合に、その値はD2整合であり、D1はD2に等しくなく、D1、D2、R1、およびR2は所定の値を有する。このようないくつかの場合において、実施の形態は、シーケンスを、複数の隣接した重なり合わないチャンクに分割する命令も含むことができる。ここで、各チャンクは、以下のブレークポイント条件の少なくとも1つを満たす位置で開始または終了する。このブレークポイント条件とは、すなわち、その位置のフィンガープリント値がD1整合であることと、その位置のフィンガープリント値がD2整合であり、かつ、前のブレークポイントがもしあれば、当該前のブレークポイントと、あらゆる後続のD1整合のブレークポイントとの間の距離が所定の最大値M1よりも大きいことと、前のブレークポイントがもしあれば、当該前のブレークポイントと現在位置との間の距離が最大値M1に等しいこととである。いくつかの場合において、実施の形態は、この命令セットを別の装置に電子的に転送するように適合することができる。いくつかの場合において、実施の形態は、次のもの、すなわち、揮発性ソリッドステートメモリ、不揮発性ソリッドステートメモリ、光ディスク、磁気ディスク、光磁気ディスク、RAM、PROM、EPROM、磁気テープ、電子回路の少なくとも1つを備えることができ、および/または、RAID装置、DAS装置、NAS装置、もしくはSAN装置である。いくつかの場合において、この装置はコンピュータとすることができる。
いくつかの場合において、有用な実施の形態は、各チャンクが、以下のブレークポイント条件の少なくとも1つを満たす位置で開始または終了する複数のチャンクに分割された値シーケンスを備える装置を含むことができる。ブレークポイント条件とは、その位置のフィンガープリント値がD1整合であることと、その位置のフィンガープリント値がD2整合であり、かつ、前のブレークポイントがもしあれば、当該前のブレークポイントと、あらゆる後続のD1整合のブレークポイントとの間の距離が所定の最大値M1よりも大きいことと、前のブレークポイントがもしあれば、当該前のブレークポイントと現在位置との間の距離が最大値M1に等しいこととである。ここで、値を第1の除数D1によって除算した結果、剰余が値R1を有する場合に、その値はD1整合であり、値を第2の除数D2によって除算した結果、剰余が値R2を有する場合に、その値はD2整合であり、D1はD2に等しくなく、D1、D2、R1、およびR2は所定の値を有する。このようないくつかの場合において、実施の形態は、各チャンクのハッシュ値を取得しなければならないか、または、取得するように適合され、そのハッシュ値を、先に記憶されたチャンクのハッシュ値と比較して、記憶すべきチャンクがもしあれば、いずれのチャンクを記憶すべきかを判断するように適合される。いくつかの場合において、実施の形態は、チャンクのハッシュ値を受信装置に最初に送信し、受信装置にまだ記憶されていないチャンクのみを送信することによって、分割されたシーケンスを送信するように適合することができる。このようないくつかの場合またはそれ以外の場合において、実施の形態は、受信装置がハッシュ値を受信した後、受信装置が要求したチャンクのみを送信することができる。
本発明の実施の形態による方法を示すフローチャートである。 本発明の実施の形態による第2の方法を示すコードスニペットである。 本発明の実施の形態による第1の装置の概略図である。 本発明の実施の形態による第2の装置の概略図である。
符号の説明
31 装置
32 コンピュータ
33 プロセッサ
34 メモリ
35 記憶デバイス
37 値シーケンス
39 命令セット
41 装置
45 マシン可読媒体
47 命令セット

Claims (9)

  1. コンピュータに、複数の整数が所定の順序で並べられたシーケンスを、ブレークポイントで、1つ以上の集合に分割させる方法であって、
    前記ブレークポイントは、前記集合の始まりまたは終わりを示し、
    前記シーケンスの所定の位置におけるフィンガープリント値を、その位置におけるシーケンスのハッシュ値を求めて取得させるステップと、
    前記フィンガープリント値の第1の剰余系に対して、「真」または「偽」を返す第1の関数を実行させるステップと、
    前記フィンガープリント値の第2の剰余系に対して、「真」または「偽」を返す第2の関数を実行させるステップと
    を含む繰り返しステップと、
    前記シーケンスのあらかじめ決められた開始位置または前のブレークポイントの隣の位置から開始して、次のブレークポイントが指定されるまで、または、位置がシーケンスの最後の位置に達するまでのどちらかが先に起こるまで、前記位置を移動させて、前記繰り返しステップを実行させるステップであって、
    前記位置と、前のブレークポイント、または、前のブレークポイントが存在しない場合はシーケンスの最初の位置との距離が、あらかじめ決められた閾値に達するまでに、前記第1の関数が「真」を返した場合、前記第1の関数が最初に「真」を返したフィンガープリント値の位置を、次のブレークポイントとして指定させるステップと、
    前記位置と、前のブレークポイント、または、前のブレークポイントが存在しない場合はシーケンスの最初の位置との距離が、あらかじめ決められた閾値に達するまでに、前記第1の関数が「真」を返さないときには、前記第2の関数が最後に「真」を返したフィンガープリント値の位置を、次のブレークポイントとして指定させるステップと、
    前記位置と、前のブレークポイント、または、前のブレークポイントが存在しない場合はシーケンスの最初の位置との距離が、あらかじめ決められた閾値に達するまでに、前記第1の関数および前記第2の関数が「真」を返さない場合に、前記閾値の位置を次のブレークポイントとして指定させるステップと、
    を含む前記繰り返しステップを実行させるステップと
    を前記コンピュータに実行させる方法であって、
    前記第1の関数は、整数を、第1の除数によって除算した結果、第1の剰余値を有する場合に「真」を返し、
    前記第2の関数は、整数を、第2の除数によって除算した結果、第2の剰余値を有する場合に「真」を返し、
    前記第1の関数が「真」を返す確率は、前記第2の関数が「真」を返す確率よりも小さい
    方法。
  2. 前記シーケンスの所定の位置におけるフィンガープリント値を取得させるステップは、そのシーケンスの位置から他の位置までの前記シーケンスのハッシュ値を取得させることを含む
    請求項1に記載の方法。
  3. 前記繰り返しステップを実行させるステップは、
    前記位置と、前のブレークポイント、または、前のブレークポイントが存在しない場合はシーケンスの最初の位置との距離が、あらかじめ決められた最小値より小さい場合には、その位置において前記繰り返しステップを実行せずに、前記位置を移動させるステップ
    をさらに含む請求項1に記載の方法。
  4. 各集合の最後の位置は、ブレークポイントであるか、または、シーケンスの最後の位置である
    請求項1に記載の方法。
  5. 各集合の最初の位置は、ブレークポイントであるか、または、シーケンスの最初の位置である
    請求項1に記載の方法。
  6. 前記第1の除数、第2の除数、第1の剰余値および第2の剰余値は、整数である
    請求項1に記載の方法。
  7. 前記第1の除数は偶数であり、前記第2の除数は前記第1の除数の1/2の整数である
    請求項6に記載の方法。
  8. 前記第1の除数は奇数であり、前記第2の除数は前記第1の除数を2で除算した数の次に大きい整数または次に小さい整数である
    請求項6に記載の方法。
  9. コンピュータに、複数の整数が所定の順序で並べられたシーケンスを、ブレークポイントで、1つ以上の集合に分割させるプログラムであって、
    前記ブレークポイントは、前記集合の始まりまたは終わりを示し、
    前記シーケンスの所定の位置におけるフィンガープリント値を、その位置におけるシーケンスのハッシュ値を求めて取得させるステップと、
    前記フィンガープリント値の第1の剰余系に対して、「真」または「偽」を返す第1の関数を実行させるステップと、
    前記フィンガープリント値の第2の剰余系に対して、「真」または「偽」を返す第2の関数を実行させるステップと
    を含む繰り返しステップと、
    前記シーケンスのあらかじめ決められた開始位置または前のブレークポイントの隣の位置から開始して、次のブレークポイントが指定されるまで、または、位置がシーケンスの最後の位置に達するまでのどちらかが先に起こるまで、前記位置を移動させて、前記繰り返しステップを実行させるステップであって、
    前記位置と、前のブレークポイント、または、前のブレークポイントが存在しない場合はシーケンスの最初の位置との距離が、あらかじめ決められた閾値に達するまでに、前記第1の関数が「真」を返した場合、前記第1の関数が最初に「真」を返したフィンガープリント値の位置を、次のブレークポイントとして指定させるステップと、
    前記位置と、前のブレークポイント、または、前のブレークポイントが存在しない場合はシーケンスの最初の位置との距離が、あらかじめ決められた閾値に達するまでに、前記第1の関数が「真」を返さないときには、前記第2の関数が最後に「真」を返したフィンガープリント値の位置を、次のブレークポイントとして指定させるステップと、
    前記位置と、前のブレークポイント、または、前のブレークポイントが存在しない場合はシーケンスの最初の位置との距離が、あらかじめ決められた閾値に達するまでに、前記第1の関数および前記第2の関数が「真」を返さない場合に、前記閾値の位置を次のブレークポイントとして指定させるステップと、
    を含む前記繰り返しステップを実行させるステップと
    を前記コンピュータに実行させるプログラムであって、
    前記第1の関数は、整数を、第1の除数によって除算した結果、第1の剰余値を有する場合に「真」を返し、
    前記第2の関数は、整数を、第2の除数によって除算した結果、第2の剰余値を有する場合に「真」を返し、
    前記第1の関数が「真」を返す確率は、前記第2の関数が「真」を返す確率よりも小さい
    プログラム。
JP2005173488A 2004-06-17 2005-06-14 複数のファイル間で記憶資源を共有するシステムおよび方法 Active JP4238233B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/870,783 US7269689B2 (en) 2004-06-17 2004-06-17 System and method for sharing storage resources between multiple files

Publications (2)

Publication Number Publication Date
JP2006031686A JP2006031686A (ja) 2006-02-02
JP4238233B2 true JP4238233B2 (ja) 2009-03-18

Family

ID=34839072

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005173488A Active JP4238233B2 (ja) 2004-06-17 2005-06-14 複数のファイル間で記憶資源を共有するシステムおよび方法

Country Status (4)

Country Link
US (1) US7269689B2 (ja)
JP (1) JP4238233B2 (ja)
DE (1) DE102005023128B4 (ja)
GB (1) GB2415523B (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7126945B2 (en) * 2001-11-07 2006-10-24 Symbol Technologies, Inc. Power saving function for wireless LANS: methods, system and program products
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US8176186B2 (en) 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7949824B2 (en) * 2006-04-11 2011-05-24 Emc Corporation Efficient data storage using two level delta resemblance
US7844652B2 (en) 2006-04-11 2010-11-30 Emc Corporation Efficient computation of sketches
US8190742B2 (en) * 2006-04-25 2012-05-29 Hewlett-Packard Development Company, L.P. Distributed differential store with non-distributed objects and compression-enhancing data-object routing
JP5204099B2 (ja) 2006-05-05 2013-06-05 ハイバー インコーポレイテッド グループ・ベースの完全および増分コンピュータ・ファイル・バックアップ・システム、処理および装置
US8214517B2 (en) * 2006-12-01 2012-07-03 Nec Laboratories America, Inc. Methods and systems for quick and efficient data management and/or processing
US7844581B2 (en) * 2006-12-01 2010-11-30 Nec Laboratories America, Inc. Methods and systems for data management using multiple selection criteria
US7733910B2 (en) * 2006-12-29 2010-06-08 Riverbed Technology, Inc. Data segmentation using shift-varying predicate function fingerprinting
WO2009054828A1 (en) * 2007-10-25 2009-04-30 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8140637B2 (en) 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
US8099573B2 (en) * 2007-10-25 2012-01-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
WO2009054827A1 (en) * 2007-10-25 2009-04-30 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8782368B2 (en) * 2007-10-25 2014-07-15 Hewlett-Packard Development Company, L.P. Storing chunks in containers
US8150851B2 (en) * 2007-10-25 2012-04-03 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8332404B2 (en) * 2007-10-25 2012-12-11 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
DE112007003645B4 (de) * 2007-10-25 2011-06-16 Hewlett-Packard Development Co., L.P., Houston Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
EP2075796A1 (en) * 2007-12-27 2009-07-01 Thomson Licensing Methods and devices for managing reading, writing and truncating a file system
US8200969B2 (en) * 2008-01-31 2012-06-12 Hewlett-Packard Development Company, L.P. Data verification by challenge
US9766983B2 (en) 2008-03-05 2017-09-19 Ca, Inc. Proximity and in-memory map based signature searching for duplicate data
US8959089B2 (en) * 2008-04-25 2015-02-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8117343B2 (en) * 2008-10-28 2012-02-14 Hewlett-Packard Development Company, L.P. Landmark chunking of landmarkless regions
US8375182B2 (en) * 2009-02-10 2013-02-12 Hewlett-Packard Development Company, L.P. System and method for segmenting a data stream
US8001273B2 (en) * 2009-03-16 2011-08-16 Hewlett-Packard Development Company, L.P. Parallel processing of input data to locate landmarks for chunks
US8489612B2 (en) * 2009-03-24 2013-07-16 Hewlett-Packard Development Company, L.P. Identifying similar files in an environment having multiple client computers
US7979491B2 (en) * 2009-03-27 2011-07-12 Hewlett-Packard Development Company, L.P. Producing chunks from input data using a plurality of processing elements
US20100281077A1 (en) * 2009-04-30 2010-11-04 Mark David Lillibridge Batching requests for accessing differential data stores
US9141621B2 (en) * 2009-04-30 2015-09-22 Hewlett-Packard Development Company, L.P. Copying a differential data store into temporary storage media in response to a request
US8412848B2 (en) * 2009-05-29 2013-04-02 Exagrid Systems, Inc. Method and apparatus for content-aware and adaptive deduplication
JP4960417B2 (ja) * 2009-09-15 2012-06-27 株式会社東芝 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置
JP4852135B2 (ja) * 2009-09-30 2012-01-11 株式会社東芝 データ分割方法及び装置
US8660994B2 (en) * 2010-01-28 2014-02-25 Hewlett-Packard Development Company, L.P. Selective data deduplication
US8499131B2 (en) 2010-04-13 2013-07-30 Hewlett-Packard Development Company, L.P. Capping a number of locations referred to by chunk references
US8909657B2 (en) * 2011-01-14 2014-12-09 Apple Inc. Content based file chunking
JP2014514618A (ja) * 2011-04-11 2014-06-19 株式会社日立製作所 データ管理方法及びデータ管理システム
US8904128B2 (en) 2011-06-08 2014-12-02 Hewlett-Packard Development Company, L.P. Processing a request to restore deduplicated data
US8918375B2 (en) * 2011-08-31 2014-12-23 Microsoft Corporation Content aware chunking for achieving an improved chunk size distribution
CN104067239B (zh) 2012-02-02 2017-05-10 慧与发展有限责任合伙企业 用于数据组块去复制的系统和方法
CN104246720B (zh) * 2012-05-01 2016-12-28 惠普发展公司,有限责任合伙企业 确定用于去重复的段边界
WO2014185916A1 (en) 2013-05-16 2014-11-20 Hewlett-Packard Development Company, L.P. Selecting a store for deduplicated data
US10592347B2 (en) 2013-05-16 2020-03-17 Hewlett Packard Enterprise Development Lp Selecting a store for deduplicated data
RU2626334C2 (ru) 2013-08-19 2017-07-26 Хуавей Текнолоджиз Ко., Лтд. Способ и устройство обработки объекта данных
US9367562B2 (en) * 2013-12-05 2016-06-14 Google Inc. Distributing data on distributed storage systems
US10146752B2 (en) 2014-12-31 2018-12-04 Quantum Metric, LLC Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document
WO2017011829A1 (en) 2015-07-16 2017-01-19 Quantum Metric, LLC Document capture using client-based delta encoding with server

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996025801A1 (en) * 1995-02-17 1996-08-22 Trustus Pty. Ltd. Method for partitioning a block of data into subblocks and for storing and communicating such subblocks
GB2341249A (en) * 1998-08-17 2000-03-08 Connected Place Limited A method of generating a difference file defining differences between an updated file and a base file
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7281006B2 (en) 2003-10-23 2007-10-09 International Business Machines Corporation System and method for dividing data into predominantly fixed-sized chunks so that duplicate data chunks may be identified

Also Published As

Publication number Publication date
GB2415523B (en) 2008-10-29
JP2006031686A (ja) 2006-02-02
US7269689B2 (en) 2007-09-11
GB0511574D0 (en) 2005-07-13
GB2415523A (en) 2005-12-28
US20050283500A1 (en) 2005-12-22
DE102005023128B4 (de) 2009-03-05
DE102005023128A1 (de) 2006-01-12

Similar Documents

Publication Publication Date Title
JP4238233B2 (ja) 複数のファイル間で記憶資源を共有するシステムおよび方法
US9223794B2 (en) Method and apparatus for content-aware and adaptive deduplication
US9292584B1 (en) Efficient data communication based on lossless reduction of data by deriving data from prime data elements resident in a content-associative sieve
US7478113B1 (en) Boundaries
US9367448B1 (en) Method and system for determining data integrity for garbage collection of data storage systems
US9396073B2 (en) Optimizing restores of deduplicated data
US7613787B2 (en) Efficient algorithm for finding candidate objects for remote differential compression
US9424185B1 (en) Method and system for garbage collection of data storage systems
US8836548B1 (en) Method and system for data compression at a storage system
US20090228484A1 (en) System and method of searching for duplicate data
CN110741637B (zh) 简化视频数据的方法、计算机可读存储介质和电子装置
KR20090085157A (ko) 고속의 효율적 데이터 관리 및/또는 처리를 위한 방법 및 시스템
US9183218B1 (en) Method and system to improve deduplication of structured datasets using hybrid chunking and block header removal
CN105912268B (zh) 一种基于自匹配特征的分布式重复数据删除方法及其装置
US10339124B2 (en) Data fingerprint strengthening
JP4768009B2 (ja) データ・クラスタを使用する冗長性の少ないデータを格納する方法
Conde-Canencia et al. Deduplication algorithms and models for efficient data storage
GB2450025A (en) Algorithm for dividing a sequence of values into chunks using breakpoints
Nakamura et al. Content-defined merkle trees for efficient container delivery
JP2022518194A (ja) コンテンツ不可知ファイルインデキシングの方法及びシステム
CN111247509B (zh) 用于对网络编码的分布式存储进行重复数据删除的系统及相关技术
Karppanen Lossless differential compression for synchronizing arbitrary single-dimensional strings
Constantinescu Compression for data archiving and backup revisited
CN115809013A (zh) 一种数据重删方法及相关装置
Peel String hashing for collection-based compression.

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081029

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081219

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4238233

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111226

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131226

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250