JP2003524243A - 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法 - Google Patents

共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法

Info

Publication number
JP2003524243A
JP2003524243A JP2001560878A JP2001560878A JP2003524243A JP 2003524243 A JP2003524243 A JP 2003524243A JP 2001560878 A JP2001560878 A JP 2001560878A JP 2001560878 A JP2001560878 A JP 2001560878A JP 2003524243 A JP2003524243 A JP 2003524243A
Authority
JP
Japan
Prior art keywords
computer
list
digital
digital sequence
data
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
JP2001560878A
Other languages
English (en)
Other versions
JP4846156B2 (ja
Inventor
グレゴリー, ハーガン モールトン,
ステフェン, ビー. ホワイトヒル,
Original Assignee
アヴァマー テクノロジーズ インコーポレイテッド
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
Priority claimed from US09/777,150 external-priority patent/US6704730B2/en
Application filed by アヴァマー テクノロジーズ インコーポレイテッド filed Critical アヴァマー テクノロジーズ インコーポレイテッド
Publication of JP2003524243A publication Critical patent/JP2003524243A/ja
Application granted granted Critical
Publication of JP4846156B2 publication Critical patent/JP4846156B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • 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/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables

Landscapes

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

Abstract

(57)【要約】 特定の、異なっている、或いは変化する長さ(304)の桁のハッシュおよび/または文字列に基づいて編成され、システムから集合体データブロック(またはデータブロックの一部)の冗長コピーを削除するかまたはスクリーニングすることができる、コンピュータファイルシステムのシステム。本発明のハッシュファイルシステムは、チェックサム生成プログラム、エンジンまたはアルゴリズム(例えば業界標準MD4、MD5、SHAまたはSHA-1アルゴリズム)によって生成できるコンピュータファイルまたはファイルピース(306)のハッシュ値(310)を利用する。あるいは、ハッシュ値はチェックサムプログラム、エンジン、アルゴリズム、または数値計算用アルゴリズムに基づいた不定元サイズのデータブロックの効果的に固有なハッシュ値を生成する他の手段によって生成されてよい(308)。

Description

【発明の詳細な説明】
【0001】
【著作権に関する通知/許可】
この特許文献の開示の一部は、著作権保護の対象となる材料を含んでよい。著
作権所有者は、米国登録商標特許庁の特許ファイルまたはレコードに記載されて
いるような特許の開示の特許文献が誰によってファクシミリ再生されても異論は
ないが、それ以外においては、いかなるものに対しても全ての著作権の権利を確
保する。以下の通知はソフトウェア、データおよび該当する場合には図面を含む
以下の説明に適用される。Copyright(著作権あり)2000, Undoo Technologies
【0002】
【発明の背景】
本発明は、一般に、ハッシュファイルシステムおよび共通性ファクタリングシ
ステムの分野に関する。より詳細には、本発明は、分散形コンピュータデータ環
境およびそれに対する特定のアプリケーションにおいて電子ファイル間の対応を
判断するシステムおよび方法に関する。
【0003】 経済的、政治的および社会的なパワーは、データによってますます管理されて
いる。トランザクションおよび豊かさは、データによって表される。政治的なパ
ワーは、データに基づいて分析され修正される。人間の相互作用および関係は、
データ交換によって定義される。したがって、データの効率的な配布、記憶およ
び管理が、人間社会においてますます不可欠な役割を演ずることが予想される。
【0004】 コンピュータプログラム、データベース、ファイルなどの形式の、管理が不可
欠なデータの量は、急激に増加している。コンピュータ処理力が増加するにつれ
て、オペレーティングシステムおよびアプリケーションソフトウェアはより大き
くなっていく。さらに、マルチメディアファイルおよび大容量データベースとい
ったより大きなデータセットにアクセスしたいという要望は、管理されるデータ
量を増大させる。このますます大きくなるデータロードを、コンピューティング
装置間で移動させ、アクセス可能なやり方で格納することは不可欠である。デー
タの指数増加レートは通信帯域および記憶容量の改良を追い越すことが予想され
、従来の方法を用いたデータ管理をより切迫したものにしている。
【0005】 多くのファクタは釣り合いをとられる必要があり、また、従来のデータ記憶シ
ステムにおいてはしばしば譲歩される必要がある。データ量が極めて大きいこと
から、記憶されるビットあたりのコストを減らすことに対するプレッシャは絶え
ることがない。また、データ管理システムは、現在のニーズだけでなく将来のニ
ーズを予想してもスケーラブルである必要がある。
【0006】 記憶システムは、ユーザーが任意の特定の時間に必要とする容量だけを購入す
ることができるように、インクリメンタルにスケーラブルであることが望ましい
。データユーザーが、データの脱落、損傷および入手不可に対してますます許容
しなくなるのにつれて、高い信頼性および高い可用性も考慮される。
【0007】 残念ながら、従来のデータ管理アーキテクチャはこれらのファクタに譲歩しな
ければならず、そのため、どのアーキテクチャも費用効率の高さ、信頼性、高可
用性、スケーラブルな解決を提供できない。
【0008】 従来のRAID(独立した複数のディスクからなる冗長配列)システムは、ハード
ディスクといった多重記憶装置の異なる位置に同一データを(したがって冗長に
)格納する方法である。データを多重ディスクに入れることによって、入/出力
(「I/O」)操作はバランスの取れた状態でオーバーラップでき、性能を改善
する。多重ディスクの使用が平均故障間隔(「MTBF」)を増大させることから、
冗長なデータ格納もまた故障の許容範囲を増加させる。RAIDシステムは実際のデ
ータ管理の複雑さを隠すようハードウェアまたはソフトウェアコントローラに依
存しており、そのためRAIDシステムはオペレーティングシステムに一つの論理的
ハードディスクとして現れる。しかしながら、RAIDシステムは、ケーブル接続お
よびコントローラの物理的な限界のために基準化するのが難しい。また、RAIDシ
ステムの可用性はコントローラ自体の機能性にかなり左右されており、そのため
、コントローラが故障すると、コントローラの背後に格納されるデータが利用で
きなくなる。さらに、RAIDシステムは一般的なハードウェアよりむしろ専門的な
ハードウェアを必要とし、したがって高価な解決策である傾向がある。
【0009】 NAS(ネットワーク接続ストレージ)は、アプリケーションサーバに接続され
るのではなく、それ自身のネットワークアドレスによって設定されるハードディ
スクストレージを指す。ファイルリクエストは、NASファイルサーバにマップさ
れる。NASは、RAIDに基づいたハードウェアかソフトウェアを用いたトランスペ
アレントな入出力動作を提供してよい。NASはまた、故障の許容範囲をさらに改
善するために、一つ以上の他のNASデバイスに対してデータのミラーリングを自
動化してもよい。NASデバイスをネットワークに加えることができるので、それ
らのデバイスはネットワークが利用できる記憶領域の全容量の基準化を可能にす
る。しかしながら、NASデバイスは、RAIDアプリケーションにおいて従来のRAID
コントローラの能力に制約される。また、NASシステムはミラーリングおよびノ
ードにわたるパリティーを不可能にし、よって限定された解決策である。
【0010】 データストレージ問題に加えて、データトランスポートは、広域ネットワーク
(「WAN」)およびインターネットワーキング技術の改良によって、急速に発展
している。インターネットは、例えば、ほとんどいたる所にあるアクセスによっ
てグローバルにネットワーク化された環境を作りあげた。迅速なネットワークイ
ンフラの改善にもかかわらず、トランスポートを必要とするデータ量の増加割合
は、有効帯域の改良を追い越すであろうと予想される。
【0011】 理念的に、従来のデータ管理方法はハードウェアデバイスおよびデータの操作
および移動のために発展したインフラと一致していない。たとえば、コンピュー
タは特徴として容易にプログラムされ、仮想的に無制限な様々な機能を実行する
汎用機である。しかしながら、コンピュータには、大きな割合で、マシンの特殊
目的にあわせるために汎用的性質を限定されている、固定され且つゆっくり変更
されるデータセットがロードされている。演算速度、周辺装置性能およびデータ
記憶容量の進歩は、商品のコンピュータで最も劇的である。しかしながら、多く
のデータストレージの解決策は、基本となる記憶領域コントローラによって広げ
られるのではなく、むしろ制限されるのでこれらの進歩を利用することができな
い。同様に、インターネットはフォールト・トレラントの複数パス相互接続ネッ
トワークとして発展してきた。しかしながら、ネットワークリソースは、ノード
が接続しているネットワークのフォールト・トレラントにもかかわらずノード障
害がリソースを利用不可にするといった特定のネットワークノードで従来実現さ
れる。ニーズは、高可用性、高信頼性、非常にスケーラブルなデータストレージ
の解決に対して継続して存在している。
【0012】
【発明の概要】
特定であるか、異なっているかまたは変化する長さの桁のハッシュおよび/ま
たは文字列に基づいて編成されたコンピュータファイルシステムのシステムおよ
び方法が本願に開示されており、システムからデータブロック(またはデータブ
ロックの一部)の冗長コピーを除去するかまたはスクリーニングすることが可能
である。また、業界標準メッセージダイジェスト4(「MD4」)、MD5、安全なハ
ッシュアルゴリズム(「SHA」)またはSHA-1アルゴリズムといったチェックサム
生成プログラム、エンジンまたはアルゴリズムによって生成されてよいコンピュ
ータファイルシステムのシステムおよび方法も本願に開示されている。さらに、
ハッシュが、チェックサムプログラム、エンジン、アルゴリズム、或いは非線形
の確率的な数値計算用アルゴリズムまたは他のデータ/数字シーケンスの入力テ
キストから疑似ランダム値を生成するあらゆる業界標準技術に基づく不定元サイ
ズのデータブロックの確率的に固有のハッシュ値を生成する他の手段によって生
成されてよい、コンピュータファイルシステムのシステムおよび方法も本願に開
示されている。
【0013】 本発明のシステムおよび方法は、本願で開示される特定のアプリケーションに
おいて、データの冗長を自動的に考慮から除外するのに利用されてよく、潜在的
に非常に多量の考慮されていない記憶領域のサイズをいくつかのオーダーで頻繁
に減らすことを可能にする。この事については、本発明のシステムおよび方法は
、特定のハードウェアまたはソフトウェアの特徴に関係なく、全てのコンピュー
タが、単純、効率的かつ安全にデータを共有し、データの読み込み、書き込み、
または参照を達成するユニークで有利な手段を提供するのを可能にする。本発明
のシステムおよび方法は、ネットワーク化されたコンピュータまたはコンピュー
タシステムに関して特に効果的であるが、相当する結果を有する絶縁データスト
レージに適用されてもよい。
【0014】 本発明のハッシュファイルシステムは、従来のストレージアーキテクチャを悩
ませている多くの問題を有利に解決する。例えば、本発明のシステムおよび方法
は、複製およびわずかに異なるコピーによって必然的に発生する無駄なシステム
リソースすべてと共に莫大なディレクトリおよびファイルの集合を管理する必要
性を除外する。複製ファイルのメンテナンスおよびストレージは、従来の会社お
よび個人のコンピュータシステムを悩ませ、一般に、人にとって骨の折れる「デ
ィスクスペースのクリーンアップ」への関与を必要とする。本発明のハッシュフ
ァイルシステムは、コピーに使われるディスクスペースを除去し、部分コピーに
使われるディスクスペースをほとんど完全に除去することによって、効果的にこ
の問題を取り除く。たとえば、従来のコンピュータシステムでは、ギガバイトの
ディレクトリ構造の新しいロケーションへのコピーには、更なるギガバイトのス
トレージが要求される。特定のアプリケーションにおいて、本発明のハッシュフ
ァイルシステムは、このオペレーションで使われるディスクスペースを最高10万
倍以上減らす。
【0015】 現在、幾つかのファイルシステムはコピーを削除するメカニズムを有するが、
どれも、短い時間でこのオペレーションを達成する(専門用語では、システムが
基準化されている場合であっても、 O(l)(「一定時間のオーダーの」)時間で
システムがコピーをファクタリングすることを意味する)ことができない。これ
は、O(N**2)、O(N)またはO(log(N))時間を必要とする他のシステムとは対照的に
一定の時間の単位を意味しており、この時間はファクタリングされるストレージ
の量と関連がある。変化する時間においてストレージをファクタリングすること
は、ストレージの量が少ない場合には、かろうじてシステムにとって満足のいく
ようなものであるが、システムが大きなサイズに増大するにつれて、最も効率的
な可変ファクタリングシステムでさえ維持しきれなくなる。本発明のハッシュフ
ァイルシステムは、ストレージを今までに決して試みられなかったスケールでフ
ァクタリングするように設計されていて、第1のインプリメンテーションにおい
て、かなり大きなサイズに拡大する能力を用いて、200万ペタビットのストレー
ジをファクタリングすることができる。既存のファイルシステムは、このような
スケールでデータを管理することはできない。
【0016】 さらに、本発明のハッシュファイルシステムは、安価な、グロ―バルコンピュ
ータシステムデータ保護およびバックアップを提供するのに利用されてよい。コ
ンピュータファイルシステムは各バックアップ処理の間に全ストレージの2,3
パーセント以上を変更することがほとんどないので、そのファクタリング機能は
非常に効率的に典型的なバックアップデータセット上で作用する。さらに、本発
明のハッシュファイルシステムは、効率的なメッセージ通信(電子メール)シス
テムに基準として使用できる。電子メールシステムは、基本的には、著作者がメ
ッセージを書き、それを受け側のリストに送信するデータコピーメカニズムであ
る。電子メールシステムは、データを1つの位置から別の位置にコピーすること
によって、この「送信」オペレーションを効果的に実現する。著作者は一般に本
人が送信するメッセージのコピーを保持し、受け側は彼ら自身のコピーをそれぞ
れ保持する。これらのコピーは、これもまた保持される応答にしばしば添付され
る(すなわちコピーのコピー)。本発明の共通性ファクタリングの特徴はこの総
非効率性を取り除くことができ、その一方で、電子メールユーザーがこのよく知
られているコピー指向パラダイムを維持するのを明らかに可能にする。
【0017】 上述したように、コンピュータシステムの大部分のデータはまず変更されない
ので、本発明のハッシュファイルシステムはシステム全体の完全なスナップショ
ットの再生を可能にし、例えばスナップショットが存在するあらゆる時間あらゆ
る日の間保持することができ、または、システムニーズによるが分単位(または
それ以下)のインターバルでとられたスナップショットによって連続的に保持す
ることもできる。さらに、従来のコンピュータシステムはファイル(すなわちデ
ジタルエキップメントコーポレーションのVAX(登録商標) VMS(登録商標)フ
ァイルシステム)の限定されたバージョニングをしばしば提供することから、本
発明のハッシュファイルシステムはまたこの事に関して重要な利点を提供する。
従来のシステムでのバージョニングは、良い面および悪い面の両方を提示してい
る。前者においては、それはアクシデントを防ぐ手助けをしているが、後者にお
いては、それは消費するディスクスペースを減らすために正規のパージを要求す
る。本発明のハッシュファイルシステムは、特別なスペースをほとんど用いずに
同一のコピーまたは編集コピーをファクタリングすることによって、オーバーヘ
ッドがほとんどない状態でファイルのバージョニングを提供する。たとえば、典
型的なドキュメントの100リビジョンを保存することは、通常、オリジナルファ
イルのスペースの約100倍のスペースを必要とする。本願で開示されているハッ
シュファイルシステムを用いることによって、それらのリビジョンは、オリジナ
ルのスペースの3倍のみのスペースを必要とするであろう(ドキュメントのサイ
ズ、編集の程度およびタイプ、および外的要素に依存する)。
【0018】 本発明のハッシュファイルシステムの更なる他の潜在的アプリケーションは、
ウェブサービングを含む。この事に関しては、共通性ファクタリング(ハッシュ
)方法はまた全てのハッシュファイルシステムサーバ上に均一分散を生じること
から、ハッシュファイルシステムは、効率的にウェブコンテンツを分散するのに
使用できる。この均一な分散は、大きなアレーのサーバが、均一に分散されたロ
ードを有する巨大なウェブサーバファームとして機能するのを可能にする。他の
アプリケーションでは、本発明のハッシュファイルシステムは、データ自体の代
わりにデータのプロキシ(ハッシュ)を送信することによってネットワークトラ
フィックを減らすのに使用できることから、ネットワークアクセラレータとして
使用できる。現在のネットワークトラフィックの大きな割合は、ロケーション間
で動いている重複データである。データのプロキシ送信は、効果的なローカルキ
ャッシュメカニズムが機能するのを可能にし、おそらくはインターネット上のト
ラフィックをいくつかのオーダーで減らすのを可能にする。
【0019】 特に本願で開示されるように、本発明のハッシュファイルシステムおよび方法
は、一般的なポインタとして160ビットのハッシュサムを用いて実現されてよい
。これは、中央権限から割り当てられるポインタを用いる従来のファイルシステ
ムとは異なっている(すなわち、Unixでは、32ビットの「iノード」がロックス
テップオペレーションでのカーネルのファイルシステムによって割り当てられ、
固有性を確保する)。本発明のハッシュファイルシステムでは、これらの160ビ
ットのハッシュサムは、ハッシュアルゴリズムによって中央権限なしで(すなわ
ちロッキングなし、 同期なしで)割り当てられる。
【0020】 既知のハッシュアルゴリズムは、均一に値域にまたがる確率的に固有の数を生
成する。ハッシュ関数SHA-1の場合、その範囲は 0〜10e48である。このハッシュ
演算は、格納されるデータのコンテンツだけを調べることによって行なわれ、し
たがって、完全なアイソレーション、非同期、およびインタロックなしで実行で
きる。
【0021】 ハッシュは、システムのあらゆるコンポーネントによって確認可能なオペレー
ションであり、それらのコンポーネントの全域にわたって信頼されるオペレーシ
ョンの必要性を取り除く。したがって、本願で開示された本発明のハッシュファ
イルシステムおよび方法は、従来の大規模な分散ファイルシステム(すなわち信
頼される包含中央権限)の重要なボトルネックを取り除くよう機能する。それは
同時読取り書込みオペレーションに対して無制限である大規模な分散ファイルシ
ステムの構造を可能にし、非コヒーレンスの危険および特定の従来のボトルネッ
クの制限なしで機能できる。
【0022】 本発明の前記および他の特徴と目的およびそれを達成する方法は以下の説明で
より明らかになり、本発明は添付の図と以下の好適な実施例の説明を参照するこ
とによって最も理解されるであろう。
【0023】
【代表的な実施例の説明】
本願に開示されているように本発明のハッシュファイルシステムおよび方法の
特定のインプリメンテーションにおいて、そのアプリケーションは、商品のコン
ピューティング装置およびインターネットといったインターネットワーク技術の
強力な性質の急速な進歩に影響を及ぼす高可用性かつ高信頼性のデータ記憶シス
テムを目的とする。本願に特に開示されているのは、一つ以上のデータブロック
(ファイル、ディレクトリ、ドライブ画像、ソフトウェアアプリケーション、デ
ジタル音声およびリッチ媒体コンテンツを含むがこれに限定されるものではない
)と、そのデータブロックに対する一つ以上の記号の対応を管理するハッシュフ
ァイルシステムであって、記号は、数、ハッシュ、チェックサム、2進シーケン
ス、又はデータブロック自体から導き出され、統計学的に、確率的に、さもなけ
れば効果的にそのデータブロックに特有である他の識別子であってよい。システ
ムは、限定されることなく、以下を含むあらゆるコンピュータシステムに機能す
る:パーソナルコンピュータ;スーパーコンピュータ;分散型または非分散型ネ
ットワーク;IDE、SCSIまたは他のディスクバスを用いた記憶領域ネットワーク
(「SAN」);ネットワーク接続ストレージ(「NAS」)またはデータを格納して
および/または処理することができる他のシステム。
【0024】 本願で開示されるハッシュファイルシステムの特定のインプリメンテーション
において、記号は、エンジン、プログラム、又はMD4、MD5、SHA、SHA-1またはそ
れらの導出物を含むが、それに限定されないアルゴリズムを生成する一つ以上の
ハッシュまたはチェックサムを用いて導き出されてよい。さらに、記号は、エン
ジン、プログラム、又はMD4、MD5、SHA、SHA-1を含むが、それに限定されないア
ルゴリズムを生成するハッシュまたはチェックサム、或いはデータコンテンツに
基づいた確率的に固有の識別子を生成する他の方法、を用いて導き出された可変
長または不変長の記号の一部を備えてよい。本願で開示される特定のインプリメ
ンテーションにおいて、ファイルシーク或いはデータを検索するか又はデータの
存在/可用性をチェックするルックアップは、記号の全部分または記号の少量の
部分を見ることによって加速可能であり、記号の一部は、データの存在/可用性
を見つけるか、検索するか、或いはチェックするためのルーティング情報を示し
ているか、そうでなければ提供している。
【0025】 さらに、ハッシュファイルシステムのシステムおよび方法が本願で開示されて
おり、記号は、システム内での冗長コピーの識別を可能にし、および/またはフ
ァイリングおよびストレージシステムに提示されるデータのために冗長なシステ
ム内でのコピーの識別を可能にする。記号は、データの完全性の損失なしで、シ
ステム内のデータおよび/またはデータの一部の冗長コピー或いはシステムに提
示されるデータおよび/またはデータの一部の冗長コピーの除去またはスクリー
ニングを可能にし、システムの有効ストレージ上にデータが均等に分散されるよ
う備えることができる。本願に開示されているように本発明のシステムおよび方
法は、中心操作点、処理バランス、および/または全てのコンピュータ、スーパ
ーコンピュータ、またはシステムに接続されたデータを格納および/または処理
することができる他のデバイスにわたっている入出力(「I/O」)ロードを必
要としない。本願で提供されるデータおよび/またはデータの一部の冗長コピー
のスクリーニングは、システム内の他のデータ、システムに提示されるその後の
データまたはシステムによって格納されるその後のデータをスクリーニングする
インテリジェント境界の作成、反復作成または保存を可能にする。
【0026】 本発明は、インターネットのような公衆通信回線を使っている企業コンピュー
ティングシステムのような分散コンピューティング環境に関して、図示され説明
される。しかしながら、本発明の重要な特徴は、特定のアプリケーションのニー
ズに合うよう上方および下方に容易に基準化されるということである。したがっ
て、相反するものに対して指示がない限り、本発明は従来のLANシステムのよう
な小さなネットワーク環境と同様に相当に大きくかつ複雑なネットワーク環境に
も適用できる。
【0027】 図1に関して、本発明はネットワーク10上の新規のデータ記憶システムととも
に利用できる。この図において、典型的なインターネットワーク環境10は、多重
広域ネットワーク(「WAN」)14とローカルエリアネットワーク(「LAN」)16間
の論理および物理接続によって形成されるグロ―バルインターネットワークを備
えるインターネットを含んでよい。インターネットバックボーン12は、データト
ラフィックのバルクを運ぶメインラインおよびルーターを表す。バックボーン12
は、例えばGTE、MCI、Sprint、UUNetおよびAmerica Onlineといった主要なイン
ターネットサービスプロバイダ(「ISP」)によって管理されるシステムの最大
ネットワークによって形成される。単独接続ラインはインターネットバックボー
ン12へのWAN 14およびLAN 16の接続を好都合に図示するのに用いられているが、
現実には、複数パスでルート可能な物理接続が多重WAN 14とLAN 16間に存在する
ことは理解されるべきである。これは、単一または多重故障ポイントに直面した
際にインターネットワーク10を強力にする。
【0028】 コンピュータ内の周辺デバイス間に実現される内部データ経路からネットワー
クコネクションを区別することは重要である。「ネットワーク」は汎用のシステ
ムを備え、通常、ノード18で作動するプロセス間の論理接続を可能にする物理接
続を切り替える。ネットワークによって実現される物理接続は、一般的に、ネッ
トワークを使っているプロセス間で確立される論理接続から独立している。この
ように、ファイル転送、メール転送などに及ぶ異種のプロセスセットが、同じ物
理的なネットワークを使うことができる。逆に言えば、ネットワークは、ネット
ワークを用いて論理的に接続されているプロセスには見えない異質の物理的なネ
ットワーク技術のセットから形成可能である。ネットワークによって実現される
プロセス間の論理接続が物理接続から独立しているので、インターネットワーク
は長距離にわたる仮想的に無制限のノード数に容易に基準化される。
【0029】 対照的に、システムバス、周辺コンポーネント相互接続(「PCI」)バス、イ
ンテリジェントドライブエレクトロニクス(「IDE」)バス、小型コンピュータ
ーシステムインターフェース(「SCSI」)バスなどといった内部データ経路は、
コンピュータシステム内で特殊目的接続を実現する物理接続を画成する。これら
の接続は、プロセス間の論理接続に対してフィジカルデバイス間の物理接続を実
現する。これらの物理接続は、コンポーネント、該接続に結合できる限定された
数のデバイス、および該接続を介して接続できる条件付きフォーマットのデバイ
ス間の限られた距離によって特徴づけられている。
【0030】 本発明の特定のインプリメンテーションで、記憶装置はノード18に配置されて
よい。あらゆるノード18のストレージが、一つのハードディスクを備えてよく、
或いは一つの論理ボリュームとして構成される多重ハードディスクを有する従来
のRAIDデバイスのような管理された記憶システムを備えてもよい。重要なことと
して、本発明は、ノード内で行なうのとは対照的に、ノードの全域にわたって冗
長オペレーションを管理するので、任意のノード内のストレージの特定の構成は
あまり重要ではない。
【0031】 オプションとして、ノード18のうちの1つ以上が、分散型かつ共同的なやり方
でノード18にわたってデータストレージを管理するストレージ割付け管理(「SA
M」)プロセスを実現してもよい。SAMプロセスは、全体として、システムを集中
制御しないか或いはほとんどしないように機能するのが望ましい。SAMプロセス
は、ノード18全域にわたってデータ分布を提供し、RAID記憶サブシステムで見つ
けられるパラダイムと同様の方法で、ネットワークノード18全域にわたって故障
を許容するやり方でリカバリを実現する。
【0032】 しかしながら、SAMプロセスは、一つのノード内または一つのコンピュータ内
ではなくノードの全域にわたって機能するので、該プロセスは従来のRAIDシステ
ムよりも大きな故障許容とストレージ効率レベルを可能にする。たとえば、SAM
プロセスは、ネットワークノード18、LAN 16またはWAN 14が利用できなくなった
場合でさえも回復可能である。さらに、一部のインターネットバックボーン12が
故障または輻輳によって利用できなくなった場合でさえも、SAMプロセスはアク
セス可能なままであるノード18で分配されるデータを用いて回復可能である。こ
のように、本発明はインターネットワークの強力な性質に影響を及ぼし、先例の
ない可用性、信頼性、障害の許容範囲および堅固性を提供する。
【0033】 図2に関して、本発明が実現される典型的なネットワークコンピューティング
環境のより詳細な概念図が表される。先行図のインターネットワーク10(または
この図でのインターネット118)は、スーパーコンピュータ即ちデータセンター1
04からハンドヘルド即ちペンベースのデバイス114の範囲に及ぶ、異質のコンピ
ューティング装置およびメカニズム102のセットの相互接続ネットワーク100を可
能にする。このようなデバイスは異なるデータストレージのニーズを有している
が、それらはネットワーク100を介してデータを検索する能力を共有しており、
それら自身のリソース内のデータに作用する。IBM互換機デバイス108、マッキン
トッシュデバイス110およびラップトップコンピューター112といったパーソナル
コンピュータまたはワークステーションクラスデバイスと同様にメインフレーム
コンピュータ(例えばVAXステーション106およびIBM AS/400ステーション116)
を含む異種のコンピューティング装置102は、インターネットワーク10およびネ
ットワーク100を介して容易に相互接続する。図示されてはいないが、移動式お
よび他のワイヤレスデバイスをインターネットワーク10に結合してもよい。
【0034】 インターネットベースのネットワーク120は一組の論理接続を備えており、そ
の幾つかはインターネット118を介して複数の内部ネットワーク122間に作られる
。概念的に、インターネットベースのネットワーク120はWAN 14(図1)と同種で
あり、それは地理的に遠いノード間での論理接続を可能にしている。インターネ
ットベースのネットワーク120は、インターネット118、または専用回線、Fibre
Channelなどを含む他の公共および私用のWAN技術を用いて実現されてもよい。
【0035】 同様に、内部ネットワーク122は概念的にLAN 16(図1)と同種であり、 それ
はWAN 14よりも限られた距離にわたっての論理接続を可能にしている。内部ネッ
トワーク122は、 Ethernet、Fiber Distributed Data Interface(「FDDI」)、
Token Ring、AppleTalk、Fibre Channel、などを含むさまざまなLAN技術を用い
て実現されてもよい。
【0036】 各内部ネットワーク122は、独立したノード(RAIN)エレメント124の一つ以上
の冗長配列を接続し、RAINノード18(図1)を実現する。各RAINエレメント124は
、プロセッサ、メモリおよび一つ以上の大容量記憶装置(例えばハードディスク
)を備える。RAINエレメント124はまた、従来のIDE またはSCSIコントローラで
あってよく、RAIDコントローラのような管理コントローラであってもよいハード
ディスクコントローラを含む。RAINエレメント124は、物理的に分散してよく、
冷却および電力といったリソースを共有している一つ以上のラックで同じ位置に
配置されてもよい。各ノード18(図1)は他のノード18から独立しており、1つの
ノード18の故障または不稼働が他のノード18の可用性に影響を及ぼさず、1つの
ノード18に格納されているデータは他のノード18に格納されているデータから復
元可能である。
【0037】 特定の典型的なインプリメンテーションにおいて、RAINエレメント124は、PCI
バスを支持するマザーボードおよび従来のATまたはATXケースに収容される256メ
ガバイトのランダムアクセスメモリー(「RAM」)上に取り付けられるインテル
ベースのマイクロプロセッサーのような商品コンポーネントを用いたコンピュー
タを備えてもよい。SCSIまたはIDEコントローラは、マザーボード上でおよび/
またはPCIバスに接続された拡張カードによって実現されてよい。コントローラ
がマザーボード上のみで実現される場合、PCI拡張バスがオプションとして使わ
れてもよい。特定のインプリメンテーションにおいて、マザーボードは、各RAIN
エレメント124が最高4つ以上のEIDEハードディスクを含むよう、2つのマスタリ
ングEIDEチャネルおよび2つの付加マスタリングEIDEチャネルを実現するのに用
いられるPCI拡張カードを実現できる。特定のインプリメンテーションにおいて
、各ハードディスクは、RAINエレメントにつき320ギガバイト以上の総記憶容量
の80ギガバイトハードディスクを備えてよい。RAINエレメント124内のハードデ
ィスク容量および構成は、特定のアプリケーションのニーズを満たすよう容易に
増大または低減できる。外被もまた、電源および冷却デバイス(図示せず)とい
った支持メカニズムを収容する。
【0038】 各RAINエレメント124は、オペレーティングシステムを実行する。特定
のインプリメンテーションにおいて、UNIX(登録商標)またはLinuxの
ようなUnixバリアントオペレーティングシステムが、使われてよい。しかし
ながら、 DOS、マイクロソフトウインドウズ、アップルマッキントッシュO
S、OS/2、マイクロソフトウインドウズNTなどを含む他のオペレーティン
グシステムを、パフォーマンスにおける予測可能な変更を行なうことで同等に置
換え可能であることが企図される。選択されたオペレーティングシステムは、ア
プリケーションソフトウェアおよびプロセスを実行するプラットホームを形成し
、ハードディスクコントローラを介して大容量記憶域にアクセスするファイルシ
ステムを実現する。様々なアプリケーションソフトウェアおよびプロセスが各R
AINエレメント124上で実現され、適切なネットワークプロトコル(例えば
ユーザーデータグラムプロトコル(「UDP」)、伝送制御プロトコル(TCP
)、インターネットプロトコル(IP)など)を用いたネットワークインターフ
ェースを介して、ネットワークの接続性を提供できる。
【0039】 図3に関しては、ロジックフローチャートが、本発明のハッシュファイルシス
テムにコンピュータファイルをエントリするステップを表すために示されており
、ファイルのハッシュ値が、セットまたはデータベースに予め維持されるファイ
ルのハッシュ値と照合される。
【0040】 プロセス200は、コンピューターファイルデータ202(例えば「ファイルA」)
を本発明のハッシュファイルシステム(「HF」)に入力することから始まり、ハ
ッシュ関数がステップ204で実行される。次いで、ファイルAのハッシュを表すデ
ータ206が判断ステップ208でハッシュファイル値を含むセットのコンテンツと比
較される。データ206が既にセットにある場合、ファイルのハッシュ値はステッ
プ210でディレクトリリストに加えられる。ハッシュ値を含み、データに対応し
ているセット212のコンテンツは、判断ステップ208の比較演算のために既存のハ
ッシュ値214の形で提供される。一方、ファイルAのハッシュ値がその時点でセッ
トに存在しない場合、ファイルは、ステップ216で(以下でより完全に説明され
るように)ハッシュピースに分割される。
【0041】 図4に関しては、更なるロジックフローチャートが、デジタルシーケンス(例
えばファイルまたは他のデータシーケンス)をブレークアップしてハッシュピー
スにするプロセス300でのステップを表すために提供される。このプロセス300は
、多数のデータピースと同様にそれに対応している確率的に固有のハッシュ値を
各ピースに対して最終的に生成することになる。
【0042】 ファイルデータ302は、システムの他のピースとの共通性あるいは後にステッ
プ304で共通していることが明らかになるピースの可能性に基づいたピースに分
割される。ファイルデータ302に関するステップ304のオペレーションの結果は、
代表的な例において、A1〜A5と名づけられた4つのファイルピース306を生成する
【0043】 ファイルピース306の各々は、次いで、A1〜A5のピース306の各々に確率的に固
有の数が割り当てられるよう、個々のハッシュ関数オペレーションを通して各々
を配置することによってステップ308で操作される。ステップ308のオペレーショ
ンの結果、ピース306(A1〜A5)の各々は、関連づけられた、確率的に固有のハ
ッシュ値310(それぞれA1ハッシュ〜A5ハッシュとして示される)を有すること
になる。ステップ304のファイル分割プロセスは、ここで開示されている固有の
「スティッキービット」オペレーションとともに、更に詳細に以下で説明される
【0044】 更に図5に関しては、別のロジックフローチャートが、ファイルの各ピース306
のハッシュ値310を、セット212で維持されている既存のハッシュ値214と比較す
るプロセス400を表すために示される。特に、ステップ402で、ファイルの各ピー
ス306のハッシュ値310は既存のハッシュ値214および新しいハッシュ値408と比較
され、対応する新しいデータピース406がセット212に加えられる。このように、
データベースセット212に予め存在していないハッシュ値408が、それらに関連づ
けられたデータピース406と共に加えられる。プロセス400はまた、全てのファイ
ルピースに対する一つのハッシュ値が様々なピース306のハッシュ値310と同値で
あることを示しているレコード404を生成することになる。
【0045】 更に図6は、ファイルハッシュまたはディレクトリリストハッシュ値を既存の
ディレクトリリストハッシュ値と比較し、新しいファイルまたはディレクトリリ
ストハッシュ値をデータベースディレクトリリストに加えるプロセス500を図示
している別のロジックフローチャートを示す。プロセス500は、ファイル名、フ
ァイルメタデータ(例えば日付、時間、ファイルの長さ、ファイルタイプ等)お
よびディレクトリの各項目のファイルのハッシュ値の累積リストを備える記憶デ
ータ502上で機能する。ステップ504で、ハッシュ関数はディレクトリリストのコ
ンテンツに実行される。判断ステップ506は、ディレクトリリストのハッシュ値
が既存のハッシュ値214のセット212であるかどうかを判断するよう機能する。判
断が肯定である場合、プロセス500は、別のファイルハッシュまたはディレクト
リリストハッシュをディレクトリリストに加えるために戻る。これに対して、デ
ィレクトリリストのハッシュ値がデータベースセット212にすでにない場合、デ
ィレクトリリストのハッシュ値およびデータはステップ508でデータベースセッ
ト212に加えられる。
【0046】 更に図7に関しては、代表的なコンピュータファイル(すなわち「ファイルA」
)のピース306とそれらに対応するハッシュ値310の比較600が、典型的なファイ
ルの特定ピースの編集の前後双方で示される。この例では、レコード404はファ
イルA1〜A5のピースの各々のハッシュ値310と同様にファイルAのハッシュ値を含
む。ファイルAの代表的な編集は、306AのファイルピースのピースA2(A2-bによ
って表される)のデータの変化と共にハッシュ値310Aのハッシュ値A2-bの対応す
る変化を生成可能である。編集されたファイルピースは、ファイルAの修正ハッ
シュ値およびピースA2-bの修正ハッシュ値を含む更新済みレコード404Aを生成す
る。
【0047】 更に図8に関しては、本発明のシステムおよび方法によって導き出される複合
データ(例えば複合データ702および704)は明示的に表されるデータ706と実質
的に同じものであるが、「レシピ」すなわち式によって作成されるという事実を
図示している概念図700が示される。図示される例において、このレシピは、対
応するハッシュ708によって表されるデータの連結またはハッシュによって表さ
れるデータを用いた関数の結果を含む。データブロック706は示されるように可
変長数量であってよく、ハッシュ値708はそれに関連づけられたデータブロック
から導き出される。既に述べたように、ハッシュ値708は対応するデータピース
の確率的に固有のIDであるが、全く固有のIDがその代わりに使われるか、或
いは確率的に固有のIDと混在させることもできる。複合データ702、704はまた
、多くのレベルが深い他の複合データを参照でき、一方、複合データのハッシュ
値708はレシピが生成するデータの値またはレシピ自体のハッシュ値から導き出
されることが可能であることもまた注目されるべきである。
【0048】 更に図9に関しては、本発明のハッシュファイルシステムおよび方法がデータ8
02を編成し、それらが表すデータへのポインタとしてハッシュ値806を使用する
ことによって冗長シーケンスの再利用を最適化するのにどのように利用できるか
を別の概念図800で示していて、データ802は、明確なバイトシーケンス808(原
子データ)か或いはシーケンスのグループ(コンポジット)804として表されて
よい。
【0049】 図800は、レシピおよびあらゆるレベルで再利用されるデータの強大な共通性
を図示する。本発明のハッシュファイルシステムの基本構成は、本質的に、ハッ
シュ値806が従来のポインターの代わりに使われる「ツリー」または「ブッシュ
」である。ハッシュ値806はレシピで使われて、データまたはそれ自体がレシピ
でありえる別のハッシュ値を示している。したがって、本質において、レシピは
他のレシピを示し、他のレシピはさらに他のレシピを示し、最終的に幾つかの特
定データを示し、その特定データ自体は更に多くのデータを示す他のレシピを示
してよく、最後にはデータだけにかかる。
【0050】 更に図10に関しては、典型的な160ビットのハッシュ値902のハッシュファイル
システムアドレス変換機能の実例となる簡略図900が示される。ハッシュ値902は
図示されるように前部904および後部906を備えるデータ構造を含み、図900は対
応するデータを含むシステムにおいて特定のノードのロケーションに行くために
ハッシュ値902の使用を可能にするよう用いられる特定の「1のうちの0」オペレ
ーションを図示する。
【0051】 図900は、ハッシュ値902のデータ構造の前部904がストライプ識別(「ID」)9
08へのハッシュ・プレフィックスを示すのにどのように用いられることができる
か、また、次に、ストライプIDをIPアドレスにマップし、IDクラスをIPアドレス
910にマップするのにどのように利用されるかを図示する。この例では、「S2」
はインデックスノード37 912のストライプ2を示す。ノード37のインデックスス
トライプ912は、次いで、リファレンス番号914によって示されるデータノード73
のストライプ88を示す。次いで、オペレーションにおいて、ハッシュ値902自体
がシステムのどのノードが関連したデータを含むのかを示すのに使用でき、ハッ
シュ値902の別の部分はどのデータストライプがその特定のノードにあるのかを
示すのに使用でき、ハッシュ値902の更に別の部分はそのストライプ内のどこに
データが存在するのかを示すのに使用できる。この3ステッププロセスを通して
、ハッシュ値902によって表されるデータがシステムに既に存在するかどうかを
迅速に判断することができる。
【0052】 更に図11に関しては、本発明のシステムおよび方法で使用されるインデックス
ストライプ分割機能1000の簡略的な典型図が示される。この図において、典型的
な機能1000は、ストライプ1002(S2)を1つのストライプが充分にいっぱいにな
るように2つのストライプ1004(S2)と1006(S7)に効果的に分割するのに使用
可能であることが示されている。この例では、奇数のエントリはストライプ1006
(S7)に動かされ、一方偶数のエントリはストライプ1004に残る。この機能1000
は、システム全体のサイズが大きくなり複雑さが増すにつれて、ストライプエン
トリをどう処理することができるかを示す1つの例である。
【0053】 更に図12に関しては、本発明のシステムおよび方法の全体機能の簡略図1100は
、例えば、第1日に多数のプログラムおよびドキュメントファイル1102Aおよび1
104Aを有する代表的な家庭用コンピュータのデータのバックアップに用いられて
いるのを示しており、プログラムファイル1102Bは第2日に同じものを残し、一
方、ドキュメントファイル1104Bのうちの1つは第2日で編集され(Y.doc)、第
3のドキュメントファイル(Z.doc)が加えられる。
【0054】 図1100は、コンピュータファイルシステムがピースに分けられ、次いでピース
からオリジナルデータを復元するためにグロ―バルデータ保護回路(「gDPN」)
上に一連のレシピとしてリストされることができる方法の詳細を示す。この非常
に小さいコンピュータシステムは、「スナップショット」の形で「第1日」で、
次いでその後「第2日」で示される。「第1日」上で「プログラムファイルH5」
および「マイドキュメントH6」が数字1106で図示され、前者はレシピ1108によっ
て表されており、第1の実行可能ファイルはハッシュ値H1 1114で表され、第2
の実行可能ファイルはハッシュ値H2 1112で表されている。ドキュメントファイ
ルはハッシュ値H6 1110によって表され、第1のドキュメントはハッシュ値H3 11
18で表され、第2のドキュメントファイルはハッシュ値H4 1116によって表され
ている。その後、「第2日」で数字1120によって示される「プログラムファイル
H5」および「マイドキュメントH10」は、「プログラムファイルH5」は変更され
ていないが、「マイドキュメントH10」は変更されたことを示している。数字112
2によって示されるH10は、「X.doc」が依然としてハッシュ値H3 1118で表されて
いることを示し、一方「Y.doc」は今では数字1124においてハッシュ値H8で表さ
れていることを示している。新しいドキュメントファイル「Z.doc」は、数字112
6においてハッシュ値H9で表される。
【0055】 この例では、第2日で幾つかのファイルが変更され、他は変更されていないこ
とがわかる。変更されたファイルにおいて、それらのうちの幾つかのピースは変
更されておらず、他のピースは変更されている。本発明のハッシュファイルシス
テムの使用を通して、コンピュータシステムの「スナップショット」が第1日で
作成可能であり(次に存在できるようコンピュータファイルの再生に必要なレシ
ピを生成する)、次いで第2日で以前の日のレシピの幾つかの再使用、他のレシ
ピの再定式化、ならびに新規のレシピの追加によって、その時点でのシステムが
記述される。このように、コンピュータシステムは第1日または第2日双方のい
かなる時ならびにいかなる後続日でもその全体において再現可能である。
【0056】 更に図13に関しては、多数の「スティッキーバイト」1204によってマークされ
る特定のドキュメントファイルの様々なピースの比較1200が、編集前(第1日 1
202A)および編集後(第2日 1202B)の双方で示されており、それによってピー
スのうちの一つが変更され、他のピースは同じままである。
【0057】 たとえば、第1日に、ファイル1202Aは、可変長ピース1206(1.1)、1208(1.
2)、1210(2.1)、1212(2.)、1214(2.3)および1216(3.1)を備える。第2
日では、ピース1206、1208、1210、1214および1216は同じままであり(したがっ
て同じハッシュ値を有する)、一方、ピース1212は編集されてピース1212Aを生
成する(したがって異なるハッシュ値を有する)。
【0058】 データ・スティッキーバイト(または「スティッキーポイント」)は、共通ブ
ロック要素がコンピュータ間で通信する必要なく複数の関連したおよび無関連の
コンピュータで見つかるようコンピュータファイルをサブ分割するユニークな完
全自動化の方法である。スティッキーポイントを見つける手段は、本質的に完全
に数学的であり、ファイルのデータコンテンツに関係なく均等かつ適切に実行さ
れる。本発明のハッシュファイルシステムでは、全てのデータオブジェクトはイ
ンデックスを付けられ、格納され、例えば(限定されるものではないが)MD4、M
D5、SHAまたはSHA-1といった業界標準チェックサムを用いて検索されてよい。オ
ペレーションにおいて、2つのファイルが同じチェックサムを有する場合、それ
らが同一ファイルであることは非常に可能性が高いと考えられ得る。本願で開示
されているシステムおよび方法を用いると、データスティッキーポイントは、標
準的な数理分布およびターゲットサイズが僅かな割合である標準偏差で生成でき
る。
【0059】 データスティッキーポイントは、統計学的には稀なnバイトの配列である。こ
の場合、現在のマイクロプロセッサー技術でのインプリメンテーションにおいて
容易であるという理由から、例においては32バイトが使われている。
【0060】 32ビットのローリングハッシュは、ファイル「f」に対して生成可能である:
//f[i]はファイル「f」のi番目のバイトである。 //scrambleは各々が32ビット長の整数の256エントリアレーである。 //これらの整数は均一に範囲にまたがるよう一般的に選択される。 int t=8//後置0のターゲットナンバである。 int hash = 0; int sticky bits; for(int i=O; i<filesize; i++) hash = hash >> 1 |scramble[f[i]]; //ファイルの各バイトで、ハッシュはファイルのローリングハッシュを表す。 sticky bits = (hash - 1)^hash; //sticks bitsは変数であり、「ハッシュ」の後置0の数に対応するハッシュの
数のうちの一つを有する。 number of bits = count ones(stick-bits); if(number of bits > t) output sticky point(i); }
【0061】 スティッキーポイントは、バイナリーで表されるハッシュを有するターゲット
ナンバとして後置ゼロの数を少なくとも有するローリングハッシュになるよう画
成される。統計学的にいうと、このアルゴリズムは、2^tで間隔をあけられるポ
イントを見つけ、ここでtは後置ゼロのターゲットナンバである。この例におい
て、t=8の場合、アルゴリズムは平均で2^8=256バイト離れているスティッキーポ
イントを見つける。
【0062】 32ビットのローリングハッシュは、fファイルに対して生成でき、ここで: f[i] はファイルfのi番目のバイトであり、 scramble は、各々がnビット長のランダムエレメントの256エントリアレーであ
る: int t=8//後置ゼロのターゲットナンバ int target distance = 256; //2の8乗 int hash = 0; int sticky bits; int distance = 0; int last point = 0; for(int i=O; i<filesize; i++) [ hash = hash >> 1| scramble[f[i]]; //ファイルの各バイトでハッシュはファイルのローリングハッシュを表
す。 sticky bits = (hash - 1)^hash; //sticks bitsは変数であり、「ハッシュ」の後置0の数に対応する数の
うちの一つを有する。 number of bits = count ones(stick bits); distance = i-last point; if(number of bits * distance/target distance >t) last point =i; output sticky point(i); } }
【0063】 本発明のハッシュファイルシステムを実現するのに利用されるハッシュ関数は
適度に複雑な計算を必要とするが、それは現在のコンピュータシステムの能力の
範囲内で充分である。ハッシュ関数は本質的に確率に基づいているので、2つの
異なるデータオブジェクトが偶然同一のハッシュ値を有した場合、どんなハッシ
ュ関数でもあるいは誤った結果を生じるかもしれない。しかしながら、本願で開
示されているシステムおよび方法は、衝突の確率を信頼のおける使用のために許
容できるレベル(すなわち10の24乗に1回の機会)であり、従来のコンピュータ
ハードウェアオペレーションで容認されているエラー率よりはるかに少ないレベ
ルまで低減する、よく知られかつ調査されたハッシュ関数を用いてこの問題を軽
減する。
【0064】 本願で用いられるように、用語「インターネットインフラ」は様々なハードウ
ェアおよびソフトウェアメカニズムを含んでいるが、該用語は、主に、一つのネ
ットワークノードから別のネットワークノードにデータパケットを移動させる機
能を有するルーター、ルーターソフトウェアおよびこれらのルーター間の物理リ
ンクを指す。また、本願で用いられるように、「デジタルシーケンス」はコンピ
ュータプログラムファイル、コンピュータアプリケーション、データファイル、
ネットワークパケット、マルチメディア(オーディオおよびビデオを含む)とい
ったストリーミングデータ、テレメトリーデータ、およびデジタルまたは数字シ
ーケンスによって表されることができる他のあらゆるデータフォームを含むこと
ができるが、これに限定されるものではない。本発明のハッシュファイルシステ
ムおよび方法によって生成される確率的に固有の識別子はまた、URLとしてネッ
トワークアプリケーションで使われてもよい。
【0065】 本発明のシステムおよび方法の特定のインプリメンテーションおよびアプリケ
ーションに関連して本発明の原理を以上で説明してきたが、前述の説明は例とし
てのみ成されており、本発明の範囲を限定するものではないことは明白に理解さ
れたであろう。特に、前述の開示内容の教示が他の変形実施例を当業者に示唆し
ていることは理解されたであろう。このような変形実施例は、それ自体が既に知
られており、本願で既に説明された特徴の代わりにまたはそれに加えて使用可能
な他の特徴を含んでもよい。特許請求の範囲は本出願において特定の特徴の組合
せに対して明確に述べているが、本願における開示の範囲はまた、特許請求の範
囲と同一の発明に関連があるにせよ、また本発明が直面したものと同じ技術的な
問題の全てを軽減するにせよ、当業者には明らかな明示的または暗示的に開示さ
れている特徴のあらゆる新規な特徴または組合わせ、またはそれを一般化した例
または変形実施例を含むことを理解されたい。出願人は、これによって本出願の
またはそこから導き出される更なる出願の全ての手続き中に、前記の特徴および
/または前記の特徴の組合せを新しい特許請求の範囲に発展させる権利を確保す
る。
【図面の簡単な説明】
【図1】 本発明のシステムおよび方法が実現可能な代表的なネットワーク化されたコン
ピュータ環境のハイレベル図である。
【図2】 本発明のシステムおよび方法を利用するのに可能な操作環境のより詳細な概念
図であり、あらゆる数のコンピュータまたはデータセンターで維持されるファイ
ルが、例えば地理的に多様なロケーションに位置する多数の独立ノードの冗長配
列(「RAIN」)ラックへのインターネット接続を通して分散型コンピュータシス
テムに格納されてよい。
【図3】 本発明のハッシュファイルシステムにコンピュータファイルを入力するステッ
プを表すロジックフローチャートであり、ファイルのハッシュ値は、セットまた
はデータベースに予め維持されているファイルのハッシュ値と照合される。
【図4】 ファイルまたは他のデータシーケンスをハッシュピースにブレークアップする
ステップを表す更なるロジックフローチャートであり、多数のデータピースとそ
れに対応している確率的に固有のハッシュ値を各ピースに対して生成することに
なる。
【図5】 ファイルの各ピースのハッシュ値と、セット(またはデータベース)の既存の
ハッシュ値との比較を表す別のロジックフローチャートであり、レコードの生成
物は、全てのファイルに対する一つのハッシュ値と様々なピースのハッシュ値が
同等であることを示しており、新しいデータピースおよびそれに対応する新しい
ハッシュ値がセットに加えられる。
【図6】 ファイルハッシュまたはディレクトリリストハッシュ値と既存のディレクトリ
リストハッシュ値とを比較し、新しいファイルまたはディレクトリリストハッシ
ュ値をセットディレクトリリストに加えるステップを図示する別のロジックフロ
ーチャートである。
【図7】 典型的なファイルの特定ピースの編集の前後双方における、代表的なコンピュ
ータファイルのピースとそれらに対応しているハッシュ値との比較である。
【図8】 本発明のシステムおよび方法によって導出可能な複合データは、明示的に表示
されるデータと効果的に同一であるが、代わりに、「レシピ」(例えばその対応
するハッシュによって表されるデータの連結、またはハッシュによって表される
データを用いた関数の結果)によって生成されてもよいという事実の概念図であ
る。
【図9】 本発明のハッシュファイルシステムおよび方法がデータを編成し、それらが表
すデータへのポインタとしてハッシュ値を使用することによって冗長シーケンス
の再利用を最適化するのにどのように利用できるかを表す別の概念図であり、デ
ータは、明確なバイトシーケンス(原子データ)か或いはシーケンスのグループ
(コンポジット)として表されてよい。
【図10】 典型的な160ビットのハッシュ値のハッシュファイルシステムアドレス変換機
能の実例となる簡略図である。
【図11】 本発明のシステムおよび方法で使用されるインデックスストライプ分割機能の
簡略的な典型図である。
【図12】 本発明のシステムおよび方法の全体機能の簡略図であり、第1日に多数のプロ
グラムおよびドキュメントファイルを有する代表的な家庭用コンピュータのデー
タのバックアップに用いられているのを示しており、ドキュメントファイルのう
ちの1つが第2日で編集され、第3のドキュメントファイルが加えられる。
【図13】 編集前および編集後の双方における、多数の「スティッキーバイト」によって
マークされる特定のドキュメントファイルの様々なピースの比較であって、それ
によってピースのうちの一つが変更され、他のピースは同じままである、図を示
す。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 09/777,150 (32)優先日 平成13年2月5日(2001.2.5) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CR,CU,CZ,DE,DK ,DM,DZ,EE,ES,FI,GB,GD,GE, GH,GM,HR,HU,ID,IL,IN,IS,J P,KE,KG,KP,KR,KZ,LC,LK,LR ,LS,LT,LU,LV,MA,MD,MG,MK, MN,MW,MX,MZ,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,SL,TJ ,TM,TR,TT,TZ,UA,UG,US,UZ, VN,YU,ZA,ZW Fターム(参考) 5B082 EA01 FA04

Claims (85)

    【特許請求の範囲】
  1. 【請求項1】 データを管理する方法であって、前記方法は: デジタルシーケンスに対して確率的に固有の識別子を生成するステップと; 前記確率的に固有の識別子を対応しているデジタルシーケンスを伴う他の識
    別子のリストと比較するステップと、 を備える方法。
  2. 【請求項2】 前記確率的に固有の識別子が前記リストに予め無い場合、前
    記確率的に固有の識別子を前記リストに加えるステップを更に備える、請求項1
    記載の方法。
  3. 【請求項3】 前記確率的に固有の識別子が前記リストに予めある場合、前
    記リストから前記確率的に固有の識別子を取るステップを更に備える、請求項1
    記載の方法。
  4. 【請求項4】 前記確率的に固有の識別子に対応する前記デジタルシーケン
    スを前記リストに加えるステップを更に備える、請求項2記載の方法。
  5. 【請求項5】 前記確率的に固有の識別子に対応する前記デジタルシーケン
    スを前記リストから取るステップを更に備える、請求項3記載の方法。
  6. 【請求項6】 前記デジタルシーケンスと、そのシーケンスに対する前記確
    率的に固有の識別子間に対応を加えるステップを更に備える、請求項4記載の方
    法。
  7. 【請求項7】 前記生成ステップが、前記デジタルシーケンスをハッシュし
    て、前記確率的に固有の識別子を生成するステップを備える、請求項1記載の方
    法。
  8. 【請求項8】 前記ハッシュステップが業界標準ダイジェストアルゴリズム
    によって実行される、請求項7記載の方法。
  9. 【請求項9】 前記ハッシュステップは、MD4、MD5、SHAまたはSHA-1アルゴ
    リズムのうちの1つによって実行される、請求項8記載の方法。
  10. 【請求項10】 前記生成ステップが、前記デジタルシーケンスのチェック
    サムを生成して、前記確率的に固有の識別子を生成するステップを備える、請求
    項1記載の方法。
  11. 【請求項11】 前記デジタルシーケンスが、少なくとも1つの他のデジタ
    ルシーケンスの記述メタデータ(descriptive meta data)である、請求項1記載
    の方法。
  12. 【請求項12】 前記デジタルシーケンスが、少なくとも1つの確率的に固
    有の識別子の記述メタデータである、請求項1記載の方法。
  13. 【請求項13】 前記デジタルシーケンスが、少なくとも1つのデジタルシ
    ーケンスを表す方法を記述する、請求項1記載の方法。
  14. 【請求項14】 データを管理する方法であって、前記方法は: デジタルシーケンスを複数のより短いデジタルシーケンスに分割するステッ
    プと; 前記複数のより短いデジタルシーケンスの各々に対して確率的に固有の識別
    子を生成するステップと; 前記確率的に固有の識別子を他の識別子のリストと比較するステップと、 を備える方法。
  15. 【請求項15】 前記デジタルシーケンスを複数のより短いデジタルシーケ
    ンスに分割するステップと; 前記複数のより短いデジタルシーケンスの各々に対応する同様の複数の確率
    的に固有の識別子を生成するステップと、 を更に備える、請求項14記載の方法。
  16. 【請求項16】 複数の識別子の各々を前記リストと比較するステップを更
    に備える、請求項14記載の方法。
  17. 【請求項17】 前記分割ステップが、個々に可変長を有する前記より短い
    デジタルシーケンスを生成する、請求項14記載の方法。
  18. 【請求項18】 前記分割ステップが、前記デジタルシーケンスのコンテン
    ツに基づいている、請求項14記載の方法。
  19. 【請求項19】 前記分割ステップが、前記デジタルシーケンスを記述して
    いるメタデータに基づいている、請求項14記載の方法。
  20. 【請求項20】 前記分割ステップが、実質的に不変長を有する前記より短
    いデジタルシーケンスを生成する、請求項14記載の方法。
  21. 【請求項21】 前記同様の複数の確率的に固有の識別子を生成する前記ス
    テップが: 前記より短いデジタルシーケンスを個々にハッシュして、前記同様の複数の
    確率的に固有の識別子を生成するステップ を備える、請求項14記載の方法。
  22. 【請求項22】 前記複数のより短いデジタルシーケンスおよび前記対応す
    る同様の複数の確率的に固有の識別子を前記リストに加えるステップ を更に備える、請求項14記載の方法。
  23. 【請求項23】 前記複数のより短いデジタルシーケンスおよび前記対応す
    る同様の複数の確率的に固有の識別子を前記リストから取るステップ を更に備える、請求項14記載の方法。
  24. 【請求項24】 少なくとも前記確率的に固有の識別子の一部を前記比較ス
    テップ用の前記リストのロケーションへのインジケータとして利用するステップ
    を更に備える、請求項9記載の方法。
  25. 【請求項25】 コンピューティング環境であって、前記コンピューティン
    グ環境は: デジタルシーケンスの一部と、前記デジタルシーケンスの前記一部の各々
    に対して対応する確率的に固有の識別子を維持する、少なくとも1つのリストと
    ; 少なくとも1つの新しいデジタルシーケンスと; 前記新しいデジタルシーケンスを複数のより短いデジタルシーケンスに分割
    し、前記より短いデジタルシーケンスの各々に対して確率的に固有の識別子を生
    成する、少なくとも1つの分割メカニズムと; 前記複数のより短いデジタルシーケンスの各々に対する前記確率的に固有の
    識別子のうちの任意の1つが前記リストで現在維持されているかどうかを判断す
    る、比較メカニズムと、 を備える、コンピューティング環境。
  26. 【請求項26】 前記少なくとも1つのリストが複数のリストを備える、請
    求項25記載のコンピューティング環境。
  27. 【請求項27】 前記複数のリストが、それぞれ前記確率的に固有の識別子
    の一部を含む、請求項26記載のコンピューティング環境。
  28. 【請求項28】 前記複数のリストのうちの少なくとも1つが、前記少なく
    とも1つのリストの他から物理的に移される、請求項26記載のコンピューティ
    ング環境。
  29. 【請求項29】 前記複数のリストが、前記確率的に固有の識別子に基づい
    て分割される、請求項26記載のコンピューティング環境。
  30. 【請求項30】 前記複数のリストはネットワークによって結合する、請求
    項28記載のコンピューティング環境。
  31. 【請求項31】 前記少なくとも1つのリストが、前記少なくとも1つの分割
    メカニズムから物理的に移される、請求項25記載のコンピューティング環境。
  32. 【請求項32】 前記リストが物理的分散データベースを備える、請求項2
    5記載のコンピューティング環境。
  33. 【請求項33】 前記少なくとも1つの分割メカニズムおよび前記少なくと
    も1つのリストが、ネットワークによって結合する、請求項25記載のコンピュ
    ーティング環境。
  34. 【請求項34】 前記ネットワークがインターネットのような公衆網を備え
    る、請求項33記載のコンピューティング環境。
  35. 【請求項35】 前記少なくとも1つの分割メカニズムおよび前記少なくと
    も1つのリストが、物理的に分散される、請求項34記載のコンピューティング
    環境。
  36. 【請求項36】 前記確率的に固有の識別子がハッシュ関数によって生成さ
    れる、請求項25記載のコンピューティング環境。
  37. 【請求項37】 前記ハッシュ関数が、業界標準ダイジェストアルゴリズム
    を備える、請求項36記載のコンピューティング環境。
  38. 【請求項38】 前記ハッシュ関数が、MD4、MD5 SHAまたはSHA-1アルゴリ
    ズムのうちの1つを備える、請求項37記載のコンピューティング環境。
  39. 【請求項39】 前記確率的に固有の識別子がチェックサムによって生成さ
    れる、請求項36記載のコンピューティング環境。
  40. 【請求項40】 前記デジタルシーケンスは可変長である、請求項25記載
    のコンピューティング環境。
  41. 【請求項41】 前記デジタルシーケンスは不変長である、請求項25記載
    のコンピューティング環境。
  42. 【請求項42】 前記比較メカニズムが、前記複数の前記より短いデジタル
    シーケンスに対する前記確率的に固有の識別子の少なくとも一部を、前記リスト
    分割に関連があるロケーターとして利用するのに有効である、請求項31記載の
    コンピューティング環境。
  43. 【請求項43】 前記デジタルシーケンスがデータファイルを備える、請求
    項25記載のコンピューティング環境。
  44. 【請求項44】 前記デジタルシーケンスがデータストリームを備える、請
    求項25記載のコンピューティング環境。
  45. 【請求項45】 前記デジタルシーケンスが実行可能ファイルを備える、請
    求項25記載のコンピューティング環境。
  46. 【請求項46】 前記デジタルシーケンスがデータベースレコードを備える
    、請求項25記載のコンピューティング環境。
  47. 【請求項47】 前記デジタルシーケンスがデータベースインデックスを備
    える、請求項25記載のコンピューティング環境。
  48. 【請求項48】 前記デジタルシーケンスがディジタル装置画像を備える、
    請求項25記載のコンピューティング環境。
  49. 【請求項49】 前記デジタルシーケンスがネットワークパケットを備える
    、請求項25記載のコンピューティング環境。
  50. 【請求項50】 前記デジタルシーケンスがデジタル化されたアナログ信号
    を備える、請求項25記載のコンピューティング環境。
  51. 【請求項51】 前記少なくとも1つのリストに維持されていると判断され
    なかった前記確率的に固有の識別子のどれかと、それに対応する前記複数のより
    短いデジタルシーケンスが、前記少なくとも1つのリストに加えられる、請求項
    25記載のコンピューティング環境。
  52. 【請求項52】 コンピュータープログラム製品であって、前記コンピュー
    タープログラム製品は: データが管理されるよう中に含まれるコンピュータ可読コードを有するコン
    ピュータ可使用メディアを備え、前記コンピュータープログラム製品は: コンピュータにデジタルシーケンスの確率的に固有の識別子の生成を行わせ
    るよう構成されたコンピュータ可読プログラムコード・デバイスと; コンピュータに、前記確率的に固有の識別子と他のデジタルシーケンスに対
    応する他の識別子のリストの比較を行わせるよう構成されたコンピュータ可読プ
    ログラムコード・デバイスと、 を備える、コンピュータープログラム製品。
  53. 【請求項53】 前記確率的に固有の識別子が前記リストに予め無かった場
    合、コンピュータに前記確率的に固有の識別子の前記リストへの追加を行わせる
    よう構成されたコンピュータ可読プログラムコード・デバイスを更に備える、請
    求項52記載のコンピュータープログラム製品。
  54. 【請求項54】 コンピュータに前記対応するデジタルシーケンスの前記リ
    ストへの追加を行わせるよう構成されたコンピュータ可読プログラムコード・デ
    バイスを更に備える、請求項53記載のコンピュータープログラム製品。
  55. 【請求項55】 前記コンピュータに生成を行わせるよう構成された前記コ
    ンピュータ可読プログラムコード・デバイスは: コンピュータに前記デジタルシーケンスのハッシュを行わせて前記確率的に
    固有の識別子を生成させるよう構成されたコンピュータ可読プログラムコード・
    デバイスを備える、 請求項52記載のコンピュータープログラム製品。
  56. 【請求項56】 コンピュータにハッシュを行わせるよう構成された前記コ
    ンピュータ可読プログラムコード・デバイスは、業界標準ダイジェストアルゴリ
    ズムによって実行される、請求項55記載のコンピュータープログラム製品。
  57. 【請求項57】 コンピュータにハッシュを行わせるよう構成された前記コ
    ンピュータ可読プログラムコード・デバイスは、MD4、MD5、SHAまたはSHA-1アル
    ゴリズムのうちの1つによって実行される、請求項56記載のコンピュータープ
    ログラム製品。
  58. 【請求項58】 コンピュータに生成を行わせるよう構成された前記コンピ
    ュータ可読プログラムコード・デバイスは: コンピュータに前記デジタルシーケンスのチェックサムの生成を行わせて前
    記確率的に固有の識別子を生成させるよう構成されたコンピュータ可読プログラ
    ムコード・デバイスを備える、 請求項52記載のコンピュータープログラム製品。
  59. 【請求項59】 コンピュータに前記デジタルシーケンスの前記確率的に固
    有の識別子を含むディレクトリリストの作成を行わせるよう構成されたコンピュ
    ータ可読プログラムコード・デバイスを更に備える、請求項52記載のコンピュ
    ータープログラム製品。
  60. 【請求項60】 コンピュータに前記デジタルシーケンスの複数のより短い
    デジタルシーケンスへの分割を行わせるよう構成されたコンピュータ可読プログ
    ラムコード・デバイスと; コンピュータに前記より短いデジタルシーケンスの各々に対応する同様の複
    数の確率的に固有の識別子の生成を行わせるよう構成されたコンピュータ可読プ
    ログラムコード・デバイスと、 を更に備える、請求項52記載のコンピュータープログラム製品。
  61. 【請求項61】 コンピュータに分割を行わせるよう構成された前記コンピ
    ュータ可読プログラムコード・デバイスが、個々に可変長を有する前記より短い
    デジタルシーケンスを生成する、請求項60記載のコンピュータープログラム製
    品。
  62. 【請求項62】 コンピュータに分割を行わせるよう構成された前記コンピ
    ュータ可読プログラムコード・デバイスが、実質的に不変長を有する前記より短
    いデジタルシーケンスを生成する、請求項60記載のコンピュータープログラム
    製品。
  63. 【請求項63】 コンピュータに前記同様の複数の確率的に固有の識別子の
    生成を行わせるよう構成された前記コンピュータ可読プログラムコード・デバイ
    スが: コンピュータに前記より短いデジタルシーケンスのハッシュを個々に行わせ
    て前記同様の複数の確率的に固有の識別子を生成させるよう構成されたコンピュ
    ータ可読プログラムコード・デバイスを備える、 請求項60記載のコンピュータープログラム製品。
  64. 【請求項64】 コンピュータに前記複数のより短いデジタルシーケンスお
    よび前記対応する同様の複数の確率的に固有の識別子の前記リストへの追加を行
    わせるよう構成されたコンピュータ可読プログラムコード・デバイスを更に備え
    る、請求項60記載のコンピュータープログラム製品。
  65. 【請求項65】 コンピュータに、少なくとも前記確率的に固有の識別子の
    一部を前記比較ステップ用の前記リストのロケーションテーブルへのインデック
    スとして利用させるよう構成されたコンピュータ可読プログラムコード・デバイ
    スを更に備える、請求項52記載のコンピュータープログラム製品。
  66. 【請求項66】 デジタルシーケンスの少なくとも一部の識別子を確立する
    方法であって、前記方法は: 前記少なくとも一部の識別子に関数を実行して確率的に固有の記号を生成す
    るステップと; その結果、前記少なくとも一部の前記デジタルシーケンスと前記確率的に固
    有の記号間に対応を確立するステップと; 前記確率的に固有の記号を前記識別子として利用するステップと、 を備える方法。
  67. 【請求項67】 前記識別子および前記対応する少なくとも一部の前記デジ
    タルシーケンスが少なくとも一つのデータリストで維持される、請求項66記載
    の方法。
  68. 【請求項68】 少なくとも一部の前記識別子が、前記少なくとも一つのデ
    ータリスト内の前記対応する少なくとも一部の前記デジタルシーケンスのロケー
    ションへのポインタとして利用できる、請求項67記載の方法。
  69. 【請求項69】 前記少なくとも一部の前記デジタルシーケンスが少なくと
    も一部のデータファイルを備え、前記識別子が前記少なくとも一部の前記データ
    ファイルのコンテンツに固有に関連している、請求項66記載の方法。
  70. 【請求項70】 前記少なくとも一部の前記デジタルシーケンスが少なくと
    も一部のデータストリームを備え、前記識別子が前記少なくとも一部の前記デー
    タストリームのコンテンツに固有に関連している、請求項66記載の方法。
  71. 【請求項71】 前記少なくとも一部の前記デジタルシーケンスが少なくと
    も一部の実行可能ファイルを備え、前記識別子が前記少なくとも一部の前記実行
    可能ファイルのコンテンツに固有に関連している、請求項66記載の方法。
  72. 【請求項72】 前記関数実行ステップが: 前記少なくとも一部の前記デジタルシーケンスをハッシュして前記確率的に
    固有の記号を生成するステップによって実行される、 請求項66記載の方法。
  73. 【請求項73】 前記ハッシュステップが、業界標準ダイジェストアルゴリ
    ズムによって実行される、請求項72記載の方法。
  74. 【請求項74】 前記ハッシュステップが、MD4、MD5、SHAまたはSHA-1アル
    ゴリズムのうちの1つによって実行される、請求項73記載の方法。
  75. 【請求項75】 コンピュータープログラム製品であって、前記コンピュー
    タープログラム製品は: 少なくとも一部のデジタルシーケンスの識別子が確立されるよう中に含まれ
    るコンピュータ可読コードを有するコンピュータ可使用メディアを備え、前記コ
    ンピュータ可使用メディアが: コンピュータに、前記少なくとも一部の前記デジタルシーケンスに関数を実
    行させて確率的に固有の記号を生成させるよう構成されたコンピュータ可読プロ
    グラムコード・デバイスと; コンピュータに、前記少なくとも一部の前記デジタルシーケンスと前記確率
    的に固有の記号間での対応の確立を行わせるよう構成されたコンピュータ可読プ
    ログラムコード・デバイスと; コンピュータに前記確率的に固有の記号を前記識別子として利用させるよう
    構成されたコンピュータ可読プログラムコード・デバイスと、 を備える、コンピュータープログラム製品。
  76. 【請求項76】 前記識別子および前記対応する少なくとも一部の前記デジ
    タルシーケンスが少なくとも一つのデータリストで維持される、請求項75記載
    のコンピュータープログラム製品。
  77. 【請求項77】 少なくとも一部の前記識別子が、前記少なくとも一つのデ
    ータリスト内の前記対応する少なくとも一部の前記デジタルシーケンスのロケー
    ションへのポインタとして利用できる、請求項76記載のコンピュータープログ
    ラム製品。
  78. 【請求項78】 前記少なくとも一部の前記デジタルシーケンスが少なくと
    も一部のデータファイルを備え、前記識別子が前記少なくとも一部の前記データ
    ファイルのコンテンツに固有に関連している、請求項75記載のコンピューター
    プログラム製品。
  79. 【請求項79】 前記少なくとも一部の前記デジタルシーケンスが少なくと
    も一部のデータストリームを備え、前記識別子が前記少なくとも一部の前記デー
    タストリームのコンテンツに固有に関連している、請求項75記載のコンピュー
    タープログラム製品。
  80. 【請求項80】 前記少なくとも一部の前記デジタルシーケンスが少なくと
    も一部の実行可能ファイルを備え、前記識別子が前記少なくとも一部の前記実行
    可能ファイルのコンテンツに固有に関連している、請求項75記載のコンピュー
    タープログラム製品。
  81. 【請求項81】 コンピュータに関数を実行させるよう構成された前記コン
    ピュータ可読プログラムコード・デバイスが: コンピュータに、前記少なくとも一部の前記デジタルシーケンスに対してハ
    ッシュを行わせて前記確率的に固有の記号を生成させるよう構成されたコンピュ
    ータ可読プログラムコード・デバイスによって実行される、 請求項75記載のコンピュータープログラム製品。
  82. 【請求項82】 コンピュータにハッシュを行わせるよう構成されたコンピ
    ュータ可読プログラムコード・デバイスが、業界標準ダイジェストアルゴリズム
    によって実行される、請求項81記載のコンピュータープログラム製品。
  83. 【請求項83】 コンピュータにハッシュを行わせるよう構成されたコンピ
    ュータ可読プログラムコード・デバイスが、MD4、MD5、SHAまたはSHA-1アルゴリ
    ズムのうちの1つによって実行される、請求項82記載のコンピュータープログ
    ラム製品。
  84. 【請求項84】 データを管理する方法であって、前記方法は: デジタルシーケンスに対して確率的に固有の識別子を生成するステップと; 前記確率的に固有の識別子を他のデジタルシーケンスに対応する他の識別子
    のリストと比較するステップと、 を備える方法。
  85. 【請求項85】 前記確率的に固有の識別子が前記リストに予め無かった場
    合、前記確率的に固有の識別子を前記リストに加えるステップを更に備える、請
    求項84記載の方法。
JP2001560878A 2000-02-18 2001-02-14 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法 Expired - Lifetime JP4846156B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US18376200P 2000-02-18 2000-02-18
US60/183,762 2000-02-18
US24592000P 2000-11-06 2000-11-06
US60/245,920 2000-11-06
US09/777,150 2001-02-05
US09/777,150 US6704730B2 (en) 2000-02-18 2001-02-05 Hash file system and method for use in a commonality factoring system
PCT/US2001/004763 WO2001061563A1 (en) 2000-02-18 2001-02-14 Hash file system and method for use in a commonality factoring system

Publications (2)

Publication Number Publication Date
JP2003524243A true JP2003524243A (ja) 2003-08-12
JP4846156B2 JP4846156B2 (ja) 2011-12-28

Family

ID=27391739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001560878A Expired - Lifetime JP4846156B2 (ja) 2000-02-18 2001-02-14 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法

Country Status (6)

Country Link
EP (1) EP1269350A4 (ja)
JP (1) JP4846156B2 (ja)
KR (1) KR100860821B1 (ja)
AU (2) AU2001238269B2 (ja)
CA (1) CA2399555A1 (ja)
WO (1) WO2001061563A1 (ja)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004514968A (ja) * 2000-11-06 2004-05-20 アヴァマー テクノロジーズ インコーポレイテッド 共通デジタルシーケンスを識別するシステム
JP2005327032A (ja) * 2004-05-13 2005-11-24 Japan Radio Co Ltd データ書き換え方法およびデータ書き換えシステムおよび無線装置遠隔制御システム
JP2007234026A (ja) * 2006-03-01 2007-09-13 Quantum Corp ユニークブロックプールマネージャを含むデータ記憶システムおよび階層記憶装置における応用
JP2008513891A (ja) * 2004-09-15 2008-05-01 ディリジェント テクノロジーズ コーポレイション データを検索し記憶するシステム及び方法
JP2008533571A (ja) * 2005-03-11 2008-08-21 ロックソフト リミテッド 低冗長記憶システム内のサブブロックの存在を検出する方法
JP2008242788A (ja) * 2007-03-27 2008-10-09 Hitachi Ltd 重複したファイルの記憶を防ぐコンピュータシステム
JP2009205201A (ja) * 2008-02-26 2009-09-10 Kddi Corp 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
JP2009533731A (ja) * 2006-04-07 2009-09-17 データ ストレージ グループ データ圧縮技術およびデータ格納技術
JP2009276859A (ja) * 2008-05-12 2009-11-26 Hitachi Ltd サーバ計算機、計算機システムおよびファイル管理方法
JP2009543199A (ja) * 2006-06-29 2009-12-03 ネットアップ,インコーポレイテッド 永久的コンシステンシ・ポイント・イメージを使用するストレージシステムのデータ重複解消を管理するシステム、及び方法
JP2009543198A (ja) * 2006-06-29 2009-12-03 ネットアップ,インコーポレイテッド ブロック指紋を読み出し、ブロック指紋を使用してデータ重複を解消するシステム、及び方法
JP2010072746A (ja) * 2008-09-16 2010-04-02 Hitachi Ltd ストレージシステム、及びストレージシステムの運用方法
JP2010079886A (ja) * 2008-09-11 2010-04-08 Nec Lab America Inc 拡張可能な2次ストレージシステムと方法
JP2010170475A (ja) * 2009-01-26 2010-08-05 Nec Corp ストレージシステム、ストレージシステムにおけるデータ書込方法及びデータ書込プログラム
JP2010541061A (ja) * 2007-09-25 2010-12-24 バークレイズ・キャピタル・インコーポレーテッド アプリケーション管理システム及び方法
JP2010287167A (ja) * 2009-06-15 2010-12-24 Nec Corp アーカイブストレージ装置、ストレージシステム、データ格納方法、およびデータ格納プログラム
JP2011022721A (ja) * 2009-07-14 2011-02-03 Fujitsu Ltd アーカイブ装置、データ格納プログラムおよびデータ格納方法
JP2011028331A (ja) * 2009-07-21 2011-02-10 Fujitsu Ltd データ格納プログラム、データ格納方法およびデータ格納システム
JP2011509459A (ja) * 2008-01-04 2011-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システムの重複除外コンピュータ・ファイル・システムのバックアップのための方法、システム、およびコンピュータ・プログラム
WO2011108048A1 (ja) * 2010-03-04 2011-09-09 日本電気株式会社 ストレージ装置
JP2012093827A (ja) * 2010-10-25 2012-05-17 Internatl Business Mach Corp <Ibm> ファイルの重複を排除する装置及び方法
US8275756B2 (en) 2004-09-15 2012-09-25 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
JP2013534007A (ja) * 2010-06-18 2013-08-29 マイクロソフト コーポレーション データ記憶とデータ送信の最適化
JP2014120160A (ja) * 2012-12-12 2014-06-30 Kofukin Seimitsu Kogyo (Shenzhen) Yugenkoshi データブロックバックアップシステム及びその方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412462B2 (en) 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
US7509356B2 (en) * 2001-09-06 2009-03-24 Iron Mountain Incorporated Data backup
US6795903B2 (en) * 2002-01-17 2004-09-21 Thomas Licensing S.A. System and method for searching for duplicate data
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
US7478096B2 (en) 2003-02-26 2009-01-13 Burnside Acquisition, Llc History preservation in a computer storage system
JP4233564B2 (ja) * 2003-03-10 2009-03-04 シャープ株式会社 データ処理装置、データ処理用のプログラムおよび記録媒体
US7092976B2 (en) * 2003-06-24 2006-08-15 International Business Machines Corporation Parallel high speed backup for a storage area network (SAN) file system
US7428557B2 (en) * 2004-03-22 2008-09-23 Microsoft Corporation Efficient data transfer to/from storage medium of computing device
EP1866774A4 (en) * 2005-03-11 2010-04-14 Rocksoft Ltd METHOD FOR STORING DATA WITH LESS REDUNDANCY USING DATA GROUPS
US8832045B2 (en) 2006-04-07 2014-09-09 Data Storage Group, Inc. Data compression and storage techniques
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
GB2444344A (en) * 2006-12-01 2008-06-04 David Irvine File storage and recovery in a Peer to Peer network
GB2446200A (en) * 2006-12-01 2008-08-06 David Irvine Encryption system for peer-to-peer networks which relies on hash based self-encryption and mapping
CA2675915C (en) * 2008-09-11 2015-04-28 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
KR101046025B1 (ko) * 2008-10-07 2011-07-01 이경수 임베디드 시스템 데이터 추출 장치 및 그 방법
US9195666B2 (en) * 2012-01-17 2015-11-24 Apple Inc. Location independent files
US10102218B2 (en) * 2014-09-30 2018-10-16 Microsoft Technology Licensing, Llc File system with per-extent checksums
KR101613146B1 (ko) * 2015-03-24 2016-04-18 주식회사 티맥스데이터 데이터베이스 암호화 방법
CN109639807A (zh) * 2018-12-19 2019-04-16 中国四维测绘技术有限公司 一种基于slice切片的大数据量遥感影像文件网络传输方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05135108A (ja) * 1990-03-27 1993-06-01 Sun Microsyst Inc データベースの編成方法及び装置
JPH06103127A (ja) * 1992-09-22 1994-04-15 Kanebo Ltd ハッシュファイルデータ管理装置およびハッシュファイルデータ管理方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5126739A (en) 1989-01-13 1992-06-30 Stac Electronics Data compression apparatus and method
US5140321A (en) * 1991-09-04 1992-08-18 Prime Computer, Inc. Data compression/decompression method and apparatus
US5406279A (en) 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
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
EP0826181A4 (en) * 1995-04-11 2005-02-09 Kinetech Inc IDENTIFYING DATA IN A DATA PROCESSING SYSTEM
US5754844A (en) 1995-12-14 1998-05-19 Sun Microsystems, Inc. Method and system for accessing chunks of data using matching of an access tab and hashing code to generate a suggested storage location
US5831558A (en) 1996-06-17 1998-11-03 Digital Equipment Corporation Method of compressing and decompressing data in a computer system by encoding data using a data dictionary
US5850565A (en) 1996-08-26 1998-12-15 Novell, Inc. Data compression method and apparatus
US6021491A (en) * 1996-11-27 2000-02-01 Sun Microsystems, Inc. Digital signatures for data streams and data archives
US6098079A (en) * 1998-04-02 2000-08-01 Mitsubishi Electric Information Technology Center America, Inc. (Ita) File version reconciliation using hash codes
US7062648B2 (en) * 2000-02-18 2006-06-13 Avamar Technologies, Inc. System and method for redundant array network storage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05135108A (ja) * 1990-03-27 1993-06-01 Sun Microsyst Inc データベースの編成方法及び装置
JPH06103127A (ja) * 1992-09-22 1994-04-15 Kanebo Ltd ハッシュファイルデータ管理装置およびハッシュファイルデータ管理方法

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004514968A (ja) * 2000-11-06 2004-05-20 アヴァマー テクノロジーズ インコーポレイテッド 共通デジタルシーケンスを識別するシステム
JP2005327032A (ja) * 2004-05-13 2005-11-24 Japan Radio Co Ltd データ書き換え方法およびデータ書き換えシステムおよび無線装置遠隔制御システム
JP4568532B2 (ja) * 2004-05-13 2010-10-27 日本無線株式会社 無線装置制御システム、無線装置および制御装置
JP2008513891A (ja) * 2004-09-15 2008-05-01 ディリジェント テクノロジーズ コーポレイション データを検索し記憶するシステム及び方法
US8275782B2 (en) 2004-09-15 2012-09-25 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
JP4939421B2 (ja) * 2004-09-15 2012-05-23 インターナショナル・ビジネス・マシーンズ・コーポレーション データを検索し記憶するシステム及び方法
US8725705B2 (en) 2004-09-15 2014-05-13 International Business Machines Corporation Systems and methods for searching of storage data with reduced bandwidth requirements
US10282257B2 (en) 2004-09-15 2019-05-07 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US9378211B2 (en) 2004-09-15 2016-06-28 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US9400796B2 (en) 2004-09-15 2016-07-26 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US10649854B2 (en) 2004-09-15 2020-05-12 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US9430486B2 (en) 2004-09-15 2016-08-30 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US8275756B2 (en) 2004-09-15 2012-09-25 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US8275755B2 (en) 2004-09-15 2012-09-25 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
JP2008533571A (ja) * 2005-03-11 2008-08-21 ロックソフト リミテッド 低冗長記憶システム内のサブブロックの存在を検出する方法
JP2007234026A (ja) * 2006-03-01 2007-09-13 Quantum Corp ユニークブロックプールマネージャを含むデータ記憶システムおよび階層記憶装置における応用
JP2009533731A (ja) * 2006-04-07 2009-09-17 データ ストレージ グループ データ圧縮技術およびデータ格納技術
JP2009543199A (ja) * 2006-06-29 2009-12-03 ネットアップ,インコーポレイテッド 永久的コンシステンシ・ポイント・イメージを使用するストレージシステムのデータ重複解消を管理するシステム、及び方法
JP2009543198A (ja) * 2006-06-29 2009-12-03 ネットアップ,インコーポレイテッド ブロック指紋を読み出し、ブロック指紋を使用してデータ重複を解消するシステム、及び方法
US8407431B2 (en) 2007-03-27 2013-03-26 Hitachi, Ltd. Computer system preventing storage of duplicate files
US8151066B2 (en) 2007-03-27 2012-04-03 Hitachi, Ltd. Computer system preventing storage of duplicate files
JP2008242788A (ja) * 2007-03-27 2008-10-09 Hitachi Ltd 重複したファイルの記憶を防ぐコンピュータシステム
JP2010541061A (ja) * 2007-09-25 2010-12-24 バークレイズ・キャピタル・インコーポレーテッド アプリケーション管理システム及び方法
JP2011509459A (ja) * 2008-01-04 2011-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システムの重複除外コンピュータ・ファイル・システムのバックアップのための方法、システム、およびコンピュータ・プログラム
JP2009205201A (ja) * 2008-02-26 2009-09-10 Kddi Corp 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
US8327097B2 (en) 2008-02-26 2012-12-04 Kddi Corporation Data backing up for networked storage devices using de-duplication technique
JP2009276859A (ja) * 2008-05-12 2009-11-26 Hitachi Ltd サーバ計算機、計算機システムおよびファイル管理方法
JP2010079886A (ja) * 2008-09-11 2010-04-08 Nec Lab America Inc 拡張可能な2次ストレージシステムと方法
JP2010072746A (ja) * 2008-09-16 2010-04-02 Hitachi Ltd ストレージシステム、及びストレージシステムの運用方法
JP2010170475A (ja) * 2009-01-26 2010-08-05 Nec Corp ストレージシステム、ストレージシステムにおけるデータ書込方法及びデータ書込プログラム
JP2010287167A (ja) * 2009-06-15 2010-12-24 Nec Corp アーカイブストレージ装置、ストレージシステム、データ格納方法、およびデータ格納プログラム
JP2011022721A (ja) * 2009-07-14 2011-02-03 Fujitsu Ltd アーカイブ装置、データ格納プログラムおよびデータ格納方法
US8423556B2 (en) 2009-07-14 2013-04-16 Fujitsu Limited Archive device
JP2011028331A (ja) * 2009-07-21 2011-02-10 Fujitsu Ltd データ格納プログラム、データ格納方法およびデータ格納システム
US8650370B2 (en) 2009-07-21 2014-02-11 Fujitsu Limited Data storing method and data storing system
WO2011108048A1 (ja) * 2010-03-04 2011-09-09 日本電気株式会社 ストレージ装置
JP5517224B2 (ja) * 2010-03-04 2014-06-11 日本電気株式会社 ストレージ装置
JP2013534007A (ja) * 2010-06-18 2013-08-29 マイクロソフト コーポレーション データ記憶とデータ送信の最適化
US9256610B2 (en) 2010-10-25 2016-02-09 International Business Machines Corporation File deduplication in a file system
US8812460B2 (en) 2010-10-25 2014-08-19 International Business Machines Corporation File deduplication in a file system
US9710336B2 (en) 2010-10-25 2017-07-18 International Business Machines Corporation File deduplication in a file system
JP2012093827A (ja) * 2010-10-25 2012-05-17 Internatl Business Mach Corp <Ibm> ファイルの重複を排除する装置及び方法
JP2014120160A (ja) * 2012-12-12 2014-06-30 Kofukin Seimitsu Kogyo (Shenzhen) Yugenkoshi データブロックバックアップシステム及びその方法

Also Published As

Publication number Publication date
KR20020082851A (ko) 2002-10-31
AU2001238269B2 (en) 2006-06-22
CA2399555A1 (en) 2001-08-23
JP4846156B2 (ja) 2011-12-28
AU3826901A (en) 2001-08-27
KR100860821B1 (ko) 2008-09-30
EP1269350A1 (en) 2003-01-02
EP1269350A4 (en) 2006-08-16
WO2001061563A1 (en) 2001-08-23

Similar Documents

Publication Publication Date Title
JP4846156B2 (ja) 共通性ファクタリングシステムに用いられるハッシュファイルシステムおよび方法
US6704730B2 (en) Hash file system and method for use in a commonality factoring system
AU2001296665B2 (en) System for identifying common digital sequences
US9967298B2 (en) Appending to files via server-side chunking and manifest manipulation
AU2001238269A1 (en) Hash file system and method for use in a commonality factoring system
US9454318B2 (en) Efficient data storage system
US9183213B2 (en) Indirection objects in a cloud storage system
US8694564B2 (en) Method and system for providing on-demand services through a virtual file system at a computing device
AU2001296665A1 (en) System for identifying common digital sequences
Kumar et al. Differential Evolution based bucket indexed data deduplication for big data storage
US11436108B1 (en) File system agnostic content retrieval from backups using disk extents
Bhagwat DOCTOR OF PHILOSOPHY in COMPUTER SCIENCE

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20070530

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100914

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101210

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110314

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110729

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110808

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

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

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

Free format text: PAYMENT UNTIL: 20141021

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4846156

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term