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

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

Info

Publication number
JP2006031686A
JP2006031686A JP2005173488A JP2005173488A JP2006031686A JP 2006031686 A JP2006031686 A JP 2006031686A JP 2005173488 A JP2005173488 A JP 2005173488A JP 2005173488 A JP2005173488 A JP 2005173488A JP 2006031686 A JP2006031686 A JP 2006031686A
Authority
JP
Japan
Prior art keywords
value
breakpoint
sequence
matched
fingerprint
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.)
Granted
Application number
JP2005173488A
Other languages
English (en)
Other versions
JP4238233B2 (ja
Inventor
Kave Eshghi
ケイヴ・エシュギー
Hsiu-Khuern Tang
シウ−カーン・タング
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
    • 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
    • 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

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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 類似の性質を有する複数のファイルが関係する場合の記憶資源および通信資源の使用の共有およびその他の最適化を行うシステムおよび方法を提供する。
【解決手段】 値シーケンスにおける位置のフィンガープリント値を取得することおよびフィンガープリント値がD1整合であるかどうかを判断し、少なくとも、フィンガープリント値がD1整合でない場合に、フィンガープリント値がD2整合であるかどうかを判断することを含み、関数D1Matchが値に適用されると「真」を返す場合にその値はD1整合であり、関数D2Matchが値に適用されると「真」を返す場合にその値はD2整合であり、D1MatchおよびD2Matchは整数をブール値にマッピングするブール関数であり、ランダムな整数に適用された場合に、D1Matchが「真」を返す確率は、D2Matchが「真」を返す確率よりも小さい、プロセッサベースの方法とする。
【選択図】 図1

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 (10)

  1. 値シーケンスを、1つ以上のチャンクに分割するプロセッサベースの方法は、
    前記シーケンスにおける位置のフィンガープリント値を取得すること、および
    前記フィンガープリント値がD1整合であるかどうかを判断し、少なくとも、前記フィンガープリント値がD1整合でない場合に、前記フィンガープリント値がD2整合であるかどうかを判断すること、
    を含み、
    関数D1Matchが値に適用されると「真」を返す場合に、その値はD1整合であり、
    関数D2Matchが値に適用されると「真」を返す場合に、その値はD2整合であり、
    D1MatchおよびD2Matchは、整数をブール値にマッピングするブール関数であり、
    ランダムな整数に適用された場合に、D1Matchが「真」を返す確率は、D2Matchが「真」を返す確率よりも小さい、
    プロセッサベースの方法。
  2. 前記シーケンスにおける位置のフィンガープリント値を取得することは、該フィンガープリント値が取得される前記位置を含んだウィンドウに含まれるデータ値シーケンスのハッシュ値を取得することを含む、請求項1に記載のプロセッサベースの方法。
  3. 前記値シーケンスを、該シーケンス内の位置をブレークポイントとして指定することによって分割することをさらに含み、各ブレークポイントはチャンクの始点または終点であり、以下のブレークポイント条件、すなわち、
    その位置のフィンガープリント値がD1整合であること、
    その位置のフィンガープリント値がD2整合であり、かつ、前のブレークポイントがもしあれば、該前のブレークポイントと、あらゆる後続のD1整合のブレークポイントとの間の距離が所定の最大値M1よりも大きいこと、および
    前のブレークポイントがもしあれば、該前のブレークポイントと現在位置との間の距離が前記最大値M1に等しいこと、
    の少なくとも1つが真である場合に、該その位置がブレークポイントとして指定される、
    請求項2に記載のプロセッサベースの方法。
  4. ブレークポイント条件がたとえ真であっても、位置とあらゆる前のブレークポイントとの間の距離が所定の最小値M2よりも小さい場合には、その位置はブレークポイントとして指定されない、請求項3に記載のプロセッサベースの方法。
  5. 前記関数D1Matchは、前記値を第1の除数D1によって除算した結果、剰余が値R1を有する場合に「真」を返し、
    前記関数D2Matchは、前記値を第2の除数D2によって除算した結果、剰余が値R2を有する場合に「真」を返し、
    D1はD2に等しくなく、
    D1、D2、R1、およびR2は所定の値を有する、
    請求項1に記載のプロセッサベースの方法。
  6. マシンによって実行されると、値シーケンスを、各チャンクがより小さな値シーケンスとなる複数のチャンクに分割するオペレーションを該マシンに実行させる命令を含んだマシン可読媒体を備える装置であって、該オペレーションは、
    前記シーケンスにおける位置のフィンガープリント値を取得すること、および
    前記フィンガープリント値がD1整合であるかどうかを判断し、少なくとも、前記フィンガープリント値がD1整合でない場合に、前記フィンガープリント値がD2整合であるかどうかを判断すること、
    を含み、
    関数D1Matchが値に適用されると「真」を返す場合に、その値はD1整合であり、
    関数D2Matchが値に適用されると「真」を返す場合に、その値はD2整合であり、
    D1MatchおよびD2Matchは、整数をブール値にマッピングする所定のブール関数であり、
    ランダムな整数に適用された場合に、D1Matchが「真」を返す確率は、D2Matchが「真」を返す確率よりも小さい、
    装置。
  7. 前記オペレーションは、前記シーケンスを、複数の隣接した重なり合わないチャンクに分割し、各チャンクは、以下のブレークポイント条件、すなわち、
    その位置のフィンガープリント値がD1整合であること、
    その位置のフィンガープリント値がD2整合であり、かつ、前のブレークポイントがもしあれば、該前のブレークポイントと、あらゆる後続のD1整合のブレークポイントとの間の距離が所定の最大値M1よりも大きいこと、および
    前のブレークポイントがもしあれば、該前のブレークポイントと現在位置との間の距離が前記最大値M1に等しいこと、
    の少なくとも1つを満たす該その位置で開始または終了する、請求項6に記載の装置。
  8. 複数のチャンクに分割された値シーケンスを備える装置であって、各チャンクは、以下のブレークポイント条件、すなわち、
    その位置のフィンガープリント値がD1整合であること、
    その位置のフィンガープリント値がD2整合であり、かつ、前のブレークポイントがもしあれば、該前のブレークポイントと、あらゆる後続のD1整合のブレークポイントとの間の距離が所定の最大値M1よりも大きいこと、および
    前のブレークポイントがもしあれば、該前のブレークポイントと現在位置との間の距離が前記最大値M1に等しいこと、
    の少なくとも1つを満たす該その位置で開始または終了し、
    値を第1の除数D1によって除算した結果、剰余が値R1を有する場合に、その値はD1整合であり、
    値を第2の除数D2によって除算した結果、剰余が値R2を有する場合に、その値はD2整合であり、
    D1はD2に等しくなく、
    D1、D2、R1、およびR2は特定の値を有する、
    装置。
  9. 前記装置は、各チャンクのハッシュ値を取得しなければならないか、または、取得するように適合され、該ハッシュ値を、先に記憶されたチャンクのハッシュ値と比較して、記憶すべきチャンクがもしあれば、いずれのチャンクを記憶すべきかを判断するように適合される、請求項8に記載の装置。
  10. 前記装置は、前記チャンクのハッシュ値を受信装置に最初に送信し、該受信装置にまだ記憶されていないチャンクのみを送信することによって、前記分割されたシーケンスを送信するように適合される、請求項8に記載の装置。
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 true JP2006031686A (ja) 2006-02-02
JP4238233B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010512565A (ja) * 2006-12-01 2010-04-22 エヌイーシー ラボラトリーズ アメリカ インク 多数の選択基準を用いるデータ管理方法およびシステム
JP2011065268A (ja) * 2009-09-15 2011-03-31 Toshiba Corp 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置
JP2011076421A (ja) * 2009-09-30 2011-04-14 Toshiba Corp データ分割方法及び装置
JP2014508990A (ja) * 2011-01-14 2014-04-10 アップル インコーポレイテッド コンテンツベースのファイルチャンキング

Families Citing this family (41)

* 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
US7844652B2 (en) 2006-04-11 2010-11-30 Emc Corporation Efficient computation of sketches
US7949824B2 (en) * 2006-04-11 2011-05-24 Emc Corporation Efficient data storage using two level delta resemblance
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
EP2021926A4 (en) 2006-05-05 2009-07-15 Hybir Inc SYSTEM FOR SAVING INCREMENTAL AND COMPLETE COMPUTER-BASED FILE FILES BASED ON THE GROUP, PROCESS AND APPARATUS
US8214517B2 (en) * 2006-12-01 2012-07-03 Nec Laboratories America, Inc. Methods and systems for quick and efficient data management and/or processing
US7733910B2 (en) * 2006-12-29 2010-06-08 Riverbed Technology, Inc. Data segmentation using shift-varying predicate function fingerprinting
CN101855619B (zh) * 2007-10-25 2017-04-26 慧与发展有限责任合伙企业 数据处理设备和数据处理方法
US8150851B2 (en) * 2007-10-25 2012-04-03 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
WO2009054828A1 (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
US9372941B2 (en) * 2007-10-25 2016-06-21 Hewlett Packard Enterprise Development Lp 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
US8332404B2 (en) * 2007-10-25 2012-12-11 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8099573B2 (en) * 2007-10-25 2012-01-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
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
US8174412B2 (en) * 2008-03-05 2012-05-08 Ca, Inc. Combined hash for variable data chunks
GB2472520B (en) * 2008-04-25 2012-11-21 Hewlett Packard Development Co Data processing apparatus and method of deduplicating data for data backup
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
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
US20100281077A1 (en) * 2009-04-30 2010-11-04 Mark David Lillibridge Batching requests for accessing differential data stores
US8412848B2 (en) 2009-05-29 2013-04-02 Exagrid Systems, Inc. Method and apparatus for content-aware and adaptive deduplication
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
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
WO2013115822A1 (en) 2012-02-02 2013-08-08 Hewlett-Packard Development Company, L.P. Systems and methods for data chunk deduplication
US20150088840A1 (en) * 2012-05-01 2015-03-26 Kave Eshghi Determining segment boundaries for deduplication
WO2014185918A1 (en) 2013-05-16 2014-11-20 Hewlett-Packard Development Company, L.P. Selecting a store for deduplicated data
WO2014185916A1 (en) 2013-05-16 2014-11-20 Hewlett-Packard Development Company, L.P. Selecting a store for deduplicated data
CA2898667C (en) 2013-08-19 2019-01-15 Huawei Technologies Co., Ltd. Data object processing method and apparatus
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
ES2900999T3 (es) 2015-07-16 2022-03-21 Quantum Metric Inc Captura de documentos utilizando codificación delta basada en el cliente con un servidor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5990810A (en) * 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating 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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010512565A (ja) * 2006-12-01 2010-04-22 エヌイーシー ラボラトリーズ アメリカ インク 多数の選択基準を用いるデータ管理方法およびシステム
JP2011065268A (ja) * 2009-09-15 2011-03-31 Toshiba Corp 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置
JP2011076421A (ja) * 2009-09-30 2011-04-14 Toshiba Corp データ分割方法及び装置
JP2014508990A (ja) * 2011-01-14 2014-04-10 アップル インコーポレイテッド コンテンツベースのファイルチャンキング
US8909657B2 (en) 2011-01-14 2014-12-09 Apple Inc. Content based file chunking
US9305008B2 (en) 2011-01-14 2016-04-05 Apple Inc. Content based file chunking

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4238233B2 (ja) 複数のファイル間で記憶資源を共有するシステムおよび方法
US10223544B1 (en) Content aware hierarchical encryption for secure storage systems
US9613043B2 (en) Object deduplication and application aware snapshots
US9424185B1 (en) Method and system for garbage collection of data storage systems
US9396073B2 (en) Optimizing restores of deduplicated data
US8386521B2 (en) System for backing up and restoring data
US9367448B1 (en) Method and system for determining data integrity for garbage collection of data storage systems
US7478113B1 (en) Boundaries
EP2256934B1 (en) Method and apparatus for content-aware and adaptive deduplication
US8836548B1 (en) Method and system for data compression at a storage system
US20090228484A1 (en) System and method of searching for duplicate data
US9183218B1 (en) Method and system to improve deduplication of structured datasets using hybrid chunking and block header removal
CN110741637B (zh) 简化视频数据的方法、计算机可读存储介质和电子装置
KR20090085157A (ko) 고속의 효율적 데이터 관리 및/또는 처리를 위한 방법 및 시스템
US20180165345A1 (en) Data processing device, computer-readable recording medium having recorded therein data processing program and data processing method
US9098513B1 (en) Methods and systems for differencing orderly dependent files
US7949630B1 (en) Storage of data addresses with hashes in backup systems
Nakamura et al. Content-defined merkle trees for efficient container delivery
GB2450025A (en) Algorithm for dividing a sequence of values into chunks using breakpoints
JP2022518194A (ja) コンテンツ不可知ファイルインデキシングの方法及びシステム
Hutchinson A New Approach To Data Backup
CN112912867A (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