JP4846156B2 - Hash file system and method for use in a commonality factoring system - Google Patents

Hash file system and method for use in a commonality factoring system Download PDF

Info

Publication number
JP4846156B2
JP4846156B2 JP2001560878A JP2001560878A JP4846156B2 JP 4846156 B2 JP4846156 B2 JP 4846156B2 JP 2001560878 A JP2001560878 A JP 2001560878A JP 2001560878 A JP2001560878 A JP 2001560878A JP 4846156 B2 JP4846156 B2 JP 4846156B2
Authority
JP
Japan
Prior art keywords
computer
digital sequence
stochastic
unique identifier
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.)
Expired - Lifetime
Application number
JP2001560878A
Other languages
Japanese (ja)
Other versions
JP2003524243A (en
Inventor
グレゴリー, ハーガン モールトン,
ステフェン, ビー. ホワイトヒル,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/777,150 external-priority patent/US6704730B2/en
Application filed by EMC Corp filed Critical EMC Corp
Publication of JP2003524243A publication Critical patent/JP2003524243A/en
Application granted granted Critical
Publication of JP4846156B2 publication Critical patent/JP4846156B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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)

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にわたってデータストレージを管理するストレージ割付け管理(「SAM」)プロセスを実現してもよい。SAMプロセスは、全体として、システムを集中制御しないか或いはほとんどしないように機能するのが望ましい。SAMプロセスは、ノード18全域にわたってデータ分布を提供し、RAID記憶サブシステムで見つけられるパラダイムと同様の方法で、ネットワークノード18全域にわたって故障を許容するやり方でリカバリを実現する。
【0032】
しかしながら、SAMプロセスは、一つのノード内または一つのコンピュータ内ではなくノードの全域にわたって機能するので、該プロセスは従来のRAIDシステムよりも大きな故障許容とストレージ効率レベルを可能にする。たとえば、SAMプロセスは、ネットワークノード18、LAN 16またはWAN 14が利用できなくなった場合でさえも回復可能である。さらに、一部のインターネットバックボーン12が故障または輻輳によって利用できなくなった場合でさえも、SAMプロセスはアクセス可能なままであるノード18で分配されるデータを用いて回復可能である。このように、本発明はインターネットワークの強力な性質に影響を及ぼし、先例のない可用性、信頼性、障害の許容範囲および堅固性を提供する。
【0033】
図2に関して、本発明が実現される典型的なネットワークコンピューティング環境のより詳細な概念図が表される。先行図のインターネットワーク10(またはこの図でのインターネット118)は、スーパーコンピュータ即ちデータセンター104からハンドヘルド即ちペンベースのデバイス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、マイクロソフトウインドウズ、アップルマッキントッシュOS、OS/2、マイクロソフトウインドウズNTなどを含む他のオペレーティングシステムを、パフォーマンスにおける予測可能な変更を行なうことで同等に置換え可能であることが企図される。選択されたオペレーティングシステムは、アプリケーションソフトウェアおよびプロセスを実行するプラットホームを形成し、ハードディスクコントローラを介して大容量記憶域にアクセスするファイルシステムを実現する。様々なアプリケーションソフトウェアおよびプロセスが各RAINエレメント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に関しては、本発明のハッシュファイルシステムおよび方法がデータ802を編成し、それらが表すデータへのポインタとしてハッシュ値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」)908へのハッシュ・プレフィックスを示すのにどのように用いられることができるか、また、次に、ストライプ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および1104Aを有する代表的な家庭用コンピュータのデータのバックアップに用いられているのを示しており、プログラムファイル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 1118で表され、第2のドキュメントファイルはハッシュ値H4 1116によって表されている。その後、「第2日」で数字1120によって示される「プログラムファイルH5」および「マイドキュメントH10」は、「プログラムファイルH5」は変更されていないが、「マイドキュメントH10」は変更されたことを示している。数字1122によって示されるH10は、「X.doc」が依然としてハッシュ値H3 1118で表されていることを示し、一方「Y.doc」は今では数字1124においてハッシュ値H8で表されていることを示している。新しいドキュメントファイル「Z.doc」は、数字1126においてハッシュ値H9で表される。
【0055】
この例では、第2日で幾つかのファイルが変更され、他は変更されていないことがわかる。変更されたファイルにおいて、それらのうちの幾つかのピースは変更されておらず、他のピースは変更されている。本発明のハッシュファイルシステムの使用を通して、コンピュータシステムの「スナップショット」が第1日で作成可能であり(次に存在できるようコンピュータファイルの再生に必要なレシピを生成する)、次いで第2日で以前の日のレシピの幾つかの再使用、他のレシピの再定式化、ならびに新規のレシピの追加によって、その時点でのシステムが記述される。このように、コンピュータシステムは第1日または第2日双方のいかなる時ならびにいかなる後続日でもその全体において再現可能である。
【0056】
更に図13に関しては、多数の「スティッキーバイト」1204によってマークされる特定のドキュメントファイルの様々なピースの比較1200が、編集前(第1日 1202A)および編集後(第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、MD5、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】 編集前および編集後の双方における、多数の「スティッキーバイト」によってマークされる特定のドキュメントファイルの様々なピースの比較であって、それによってピースのうちの一つが変更され、他のピースは同じままである、図を示す。
[0001]
[Copyright notice / permission]
Part of the disclosure of this patent document may include material that is subject to copyright protection. The copyright owner has no objection to anyone who reproduces a patent document with a patent disclosure as described in the US Patent and Trademark Office patent file or record. Also ensure all copyright rights. The following notice applies to the following description, including software, data and, where applicable, drawings. Copyright 2000, Undoo Technologies
[0002]
BACKGROUND OF THE INVENTION
The present invention relates generally to the field of hash file systems and commonality factoring systems. More particularly, the present invention relates to a system and method for determining correspondence between electronic files in a distributed computer data environment and specific applications thereto.
[0003]
Economic, political and social power is increasingly managed by data. Transactions and richness are represented by data. Political power is analyzed and corrected based on data. Human interactions and relationships are defined by data exchange. Therefore, it is expected that efficient distribution, storage and management of data will play an increasingly essential role in human society.
[0004]
The amount of data in the form of computer programs, databases, files, etc. that must be managed is increasing rapidly. As computer processing power increases, operating systems and application software become larger. Furthermore, the desire to access larger data sets such as multimedia files and large databases increases the amount of data managed. It is essential that this growing data load be moved between computing devices and stored in an accessible manner. Data index growth rates are expected to overtake improvements in communication bandwidth and storage capacity, making data management using conventional methods more urgent.
[0005]
Many factors need to be balanced and often need to be compromised in conventional data storage systems. The amount of data is so great that there is no constant pressure on reducing the cost per stored bit. In addition, the data management system needs to be scalable not only for current needs but also foreseeing future needs.
[0006]
The storage system is desirably incrementally scalable so that users can purchase only the capacity they need at any particular time. As data users become increasingly unacceptable for data loss, damage and unavailability, high reliability and high availability are also considered.
[0007]
Unfortunately, traditional data management architectures must compromise on these factors, so no architecture can provide a cost effective, reliable, highly available, scalable solution.
[0008]
A conventional RAID (redundant array consisting of a plurality of independent disks) system is a method of storing the same data (and thus redundantly) in different positions of a multiple storage device such as a hard disk. By putting data on multiple disks, input / output (“I / O”) operations can overlap in a balanced manner, improving performance. Redundant data storage also increases fault tolerance because the use of multiple disks increases the mean time between failures ("MTBF"). RAID systems rely on hardware or software controllers to hide the complexity of actual data management, so the RAID system appears to the operating system as a single logical hard disk. However, RAID systems are difficult to scale due to the physical limitations of cabling and controllers. In addition, the availability of a RAID system is highly dependent on the functionality of the controller itself, so if the controller fails, the data stored behind the controller becomes unavailable. In addition, RAID systems tend to require specialized hardware rather than common hardware, and thus tend to be an expensive solution.
[0009]
NAS (Network Attached Storage) refers to hard disk storage that is not connected to an application server but is set by its own network address. The file request is mapped to the NAS file server. The NAS may provide transparent I / O operations using hardware or software based on RAID. The NAS may also automate data mirroring for one or more other NAS devices to further improve fault tolerance. Since NAS devices can be added to the network, they allow for a standardization of the total capacity of storage available to the network. However, NAS devices are limited by the capabilities of conventional RAID controllers in RAID applications. NAS systems also make mirroring and parity across nodes impossible, and are therefore a limited solution.
[0010]
In addition to data storage issues, data transport is rapidly evolving with improvements in wide area networks (“WANs”) and internetworking technologies. The Internet, for example, has created a globally networked environment with access almost everywhere. Despite rapid network infrastructure improvements, it is expected that the rate of increase in the amount of data that requires transport will overtake improvements in effective bandwidth.
[0011]
Ideally, traditional data management methods are not consistent with hardware devices and infrastructure developed for the manipulation and movement of data. For example, a computer is a general-purpose machine that is easily programmed as a feature and that performs various virtually unlimited functions. However, computers are loaded with a large percentage of fixed and slowly changing data sets that have limited general-purpose properties to meet the special purpose of the machine. Advances in computing speed, peripheral device performance and data storage capacity are most dramatic in commercial computers. However, many data storage solutions are not extended by the underlying storage controller, but rather are limited so that these advances cannot be exploited. Similarly, the Internet has evolved as a fault-tolerant multipath interconnection network. However, network resources are conventionally implemented in certain network nodes where a node failure makes the resource unavailable despite the fault tolerance of the network to which the node is connected. The need continues to exist for high availability, high reliability, and highly scalable data storage solutions.
[0012]
SUMMARY OF THE INVENTION
Disclosed herein is a computer file system system and method organized based on a hash, and / or a string of digits of specific, different, or varying lengths, from which data blocks (or data It is possible to remove or screen redundant copies of (part of the block). Also, a computer file system system and method that may be generated by a checksum generation program, engine or algorithm such as industry standard message digest 4 (“MD4”), MD5, secure hash algorithm (“SHA”) or SHA-1 algorithm Is also disclosed in the present application. In addition, the hash is of indeterminate size based on any industry standard technology that generates pseudo-random values from checksum programs, engines, algorithms, or non-linear stochastic numerical algorithms or other data / numeric sequence input text. Also disclosed herein are computer file system systems and methods that may be generated by other means for generating a stochastic unique hash value of a data block.
[0013]
The system and method of the present invention may be used to automatically exclude data redundancy from consideration in certain applications disclosed herein, potentially potentially very large amounts of unaccounted storage space. Allows the size to be reduced frequently in several orders. In this regard, the system and method of the present invention allows all computers to share, read, write, or reference data simply, efficiently and securely, regardless of specific hardware or software characteristics. Making it possible to provide a unique and advantageous means of achieving this. The systems and methods of the present invention are particularly effective with networked computers or computer systems, but may be applied to isolated data storage with comparable results.
[0014]
The hash file system of the present invention advantageously solves many of the problems that plague conventional storage architectures. For example, the system and method of the present invention eliminates the need to manage a huge collection of directories and files along with all the wasted system resources that are inevitably generated by replication and slightly different copies. The maintenance and storage of replicated files plagues traditional company and personal computer systems and generally requires involvement in laborious “disk space cleanup”. The hash file system of the present invention effectively eliminates this problem by removing the disk space used for copying and removing the disk space used for partial copying almost completely. For example, in a conventional computer system, an additional gigabyte of storage is required to copy a gigabyte directory structure to a new location. In certain applications, the hash file system of the present invention reduces the disk space used in this operation by up to 100,000 times or more.
[0015]
Currently, some file systems have a mechanism to delete a copy, but all achieve this operation in a short time (in technical terms, O (l) ("On order of time") means that the system will factor the copy in time). This is O (N**2) means a unit of time, as opposed to other systems that require O (N) or O (log (N)) time, which is related to the amount of storage being factored There is. Factoring storage at varying times is barely satisfactory for the system when the amount of storage is small, but as the system grows to larger sizes, it is the most efficient variable factoring system. Even it cannot be maintained. The hash file system of the present invention is designed to factor storage at a scale that has never been attempted before, with the ability to scale to a fairly large size in the first implementation, with 2 million. Petabit storage can be factored. Existing file systems cannot manage data at this scale.
[0016]
Furthermore, the hash file system of the present invention may be utilized to provide inexpensive, global computer system data protection and backup. Since the computer file system rarely changes more than a few percent of the total storage during each backup process, its factoring function operates on a typical backup data set very efficiently. Furthermore, the hash file system of the present invention can be used as a standard in an efficient message communication (e-mail) system. An electronic mail system is basically a data copy mechanism in which an author writes a message and sends it to a recipient list. E-mail systems effectively accomplish this “send” operation by copying data from one location to another. Authors generally keep a copy of the message they send, and the recipient keeps a copy of their own. These copies are often attached to responses that are also retained (ie, copies of copies). The commonality factoring feature of the present invention can remove this total inefficiency while clearly allowing email users to maintain this well-known copy-oriented paradigm.
[0017]
As mentioned above, since most data in the computer system is not changed first, the hash file system of the present invention allows the playback of a complete snapshot of the entire system, for example, any time during the day when the snapshot exists. It can be kept, or it can be kept continuously by snapshots taken at intervals of minutes (or less) depending on system needs. In addition, since conventional computer systems often provide limited versioning of files (ie, VAX® VMS® file system from Digital Equipment Corporation), the hash file system of the present invention also provides for this. Provides important advantages with respect to. Versioning in conventional systems presents both good and bad aspects. In the former, it helps prevent accidents, while in the latter, it requires a regular purge to reduce disk space consumption. The hash file system of the present invention provides file versioning with little overhead by factoring the same or edited copy with little extra space. For example, storing 100 revisions of a typical document usually requires about 100 times as much space as the original file. By using the hash file system disclosed herein, those revisions will require only 3 times the original space (document size, editing level and type, and external factors). Depending on).
[0018]
Yet another potential application of the hash file system of the present invention includes web serving. In this regard, the hash file system can be used to distribute web content efficiently, since the commonality factoring (hash) method also produces a uniform distribution on all hash file system servers. This uniform distribution allows a large array of servers to function as a huge web server farm with uniformly distributed loads. In other applications, the hash file system of the present invention can be used as a network accelerator because it can be used to reduce network traffic by sending a proxy (hash) of data instead of the data itself. A large percentage of current network traffic is duplicate data moving between locations. Proxy transmission of data allows an effective local cache mechanism to work, possibly allowing traffic on the Internet to be reduced by several orders.
[0019]
In particular, as disclosed herein, the hash file system and method of the present invention may be implemented using a 160-bit hash sum as a general pointer. This is different from traditional file systems that use pointers allocated from a central authority (ie, on Unix, 32-bit “i-nodes” are allocated by the kernel file system in lockstep operations and are not unique. Secure). In the hash file system of the present invention, these 160-bit hash sums are assigned by the hash algorithm without central authority (ie, no locking, no synchronization).
[0020]
Known hash algorithms generate a stochastic unique number that evenly spans the range. For hash function SHA-1, the range is 0-10e48It is. This hashing operation is performed by examining only the contents of the stored data and can therefore be performed without complete isolation, asynchronousness and interlocking.
[0021]
A hash is an operation that can be verified by any component of the system, eliminating the need for operations that are trusted across those components. Thus, the hash file system and method of the present invention disclosed herein functions to remove an important bottleneck of conventional large distributed file systems (ie, trusted inclusion central authority). It allows large distributed file system structures that are unlimited for simultaneous read-write operations and can function without the risk of non-coherence and the limitations of certain conventional bottlenecks.
[0022]
The foregoing and other features and objects of the invention and the manner in which it will be accomplished will become more apparent from the following description, which is best understood by referring to the accompanying drawings and the following description of the preferred embodiments. Will.
[0023]
[Description of representative examples]
In certain implementations of the hash file system and method of the present invention as disclosed herein, the application affects the rapid advancement of the powerful nature of internetworking technologies such as commodity computing devices and the Internet. Aimed at high availability and high reliability data storage system. Specifically disclosed herein are one or more data blocks (including but not limited to files, directories, drive images, software applications, digital audio and rich media content) and the data blocks A hash file system that manages the correspondence of one or more symbols to a symbol, which can be derived from a number, hash, checksum, binary sequence, or data block itself, statistically, probabilistically, If not, it may be another identifier that is effectively unique to the data block. The system works for any computer system including, but not limited to: personal computers; supercomputers; distributed or non-distributed networks; storage area networks (“SAN” using IDE, SCSI, or other disk buses) "); Network Attached Storage (" NAS ") or other system capable of storing and / or processing data.
[0024]
In a particular implementation of the hash file system disclosed herein, the symbol may be an engine, program, or algorithm that includes, but is not limited to, MD4, MD5, SHA, SHA-1, or their derivatives. It may be derived using more than one hash or checksum. In addition, the symbol generates an engine, program, or a hash or checksum that generates an algorithm including but not limited to MD4, MD5, SHA, SHA-1, or a stochastic unique identifier based on data content. Some of the variable length or invariant length symbols derived using other methods may be provided. In certain implementations disclosed herein, file seeks or lookups that search for data or check for the presence / availability of data can be accelerated by looking at all parts of the symbol or a small portion of the symbol. Yes, some of the symbols indicate or otherwise provide routing information to find, retrieve or check the existence / availability of the data.
[0025]
In addition, hash file system systems and methods are disclosed herein, where the symbols enable identification of redundant copies within the system and / or redundant systems for data presented to filing and storage systems. Allows identification of the copy within. Symbols allow the removal or screening of redundant copies of data and / or portions of data in a system or data and / or portions of data presented to the system without loss of data integrity. The data can be distributed evenly on the effective storage of the system. As disclosed herein, the systems and methods of the present invention can store and / or process central operating points, processing balances, and / or data connected to all computers, supercomputers, or systems. Does not require input / output ("I / O") loads across other devices. Screening of redundant copies of data and / or portions of data provided in this application is based on intelligent boundaries that screen other data in the system, subsequent data presented to the system, or subsequent data stored by the system. Allows creation, iteration creation or saving.
[0026]
The invention is illustrated and described with reference to a distributed computing environment such as an enterprise computing system using a public communications line such as the Internet. However, an important feature of the present invention is that it is easily scaled up and down to meet the needs of a particular application. Therefore, the present invention can be applied to a considerably large and complicated network environment as well as a small network environment such as a conventional LAN system, unless there is an instruction to the contrary.
[0027]
With reference to FIG. 1, the present invention can be used with a novel data storage system on the network 10. In this figure, a typical internetwork environment 10 is an Internet comprising a global internetwork formed by logical and physical connections between a multiple wide area network (“WAN”) 14 and a local area network (“LAN”) 16. May be included. The Internet backbone 12 represents the main line and router that carries the bulk of the data traffic. The backbone 12 is formed by the largest network of systems managed by major Internet service providers (“ISPs”) such as GTE, MCI, Sprint, UUNet and America Online. A single connection line is used to conveniently illustrate the connection of WAN 14 and LAN 16 to the Internet backbone 12, but in reality there are multiple paths that can be routed between multiple WANs 14 and LAN 16. It should be understood that it exists. This makes the internetwork 10 powerful in the face of single or multiple failure points.
[0028]
It is important to distinguish network connections from internal data paths implemented between peripheral devices in the computer. The “network” comprises a general purpose system and typically switches physical connections that allow logical connections between processes running on node 18. The physical connection realized by the network is generally independent of the logical connection established between processes using the network. In this way, different process sets ranging from file transfer and mail transfer can use the same physical network. Conversely, a network can be formed from a heterogeneous set of physical network technologies that are not visible to processes that are logically connected using the network. Because the logical connection between processes implemented by the network is independent of the physical connection, the internetwork is easily scaled to a virtually unlimited number of nodes over long distances.
[0029]
In contrast, internal data paths such as system buses, peripheral component interconnect (“PCI”) buses, intelligent drive electronics (“IDE”) buses, and small computer system interface (“SCSI”) buses are special in the computer system. Define a physical connection to achieve the target connection. These connections realize physical connections between physical devices with respect to logical connections between processes. These physical connections are characterized by a limited distance between components, a limited number of devices that can be coupled to the connection, and devices in a conditional format that can be connected through the connection.
[0030]
In certain implementations of the invention, the storage device may be located at node 18. Every node 18 storage may comprise a single hard disk or may comprise a managed storage system such as a conventional RAID device having multiple hard disks configured as a single logical volume. Importantly, the specific configuration of storage in any node is less important because the present invention manages redundant operations across the node as opposed to doing it in a node.
[0031]
Optionally, one or more of the nodes 18 may implement a storage allocation management (“SAM”) process that manages data storage across the nodes 18 in a distributed and collaborative manner. The SAM process as a whole preferably functions so as to have little or no centralized control over the system. The SAM process provides data distribution across the nodes 18 and achieves recovery in a manner that allows failures across the network nodes 18 in a manner similar to the paradigm found in the RAID storage subsystem.
[0032]
However, because the SAM process works across the entire node rather than within one node or one computer, the process allows greater fault tolerance and storage efficiency levels than conventional RAID systems. For example, the SAM process can be recovered even if the network node 18, LAN 16 or WAN 14 becomes unavailable. Furthermore, even if some Internet backbones 12 become unavailable due to failure or congestion, the SAM process can be recovered using data distributed at nodes 18 that remain accessible. Thus, the present invention affects the powerful nature of internetworks and provides unprecedented availability, reliability, fault tolerance and robustness.
[0033]
With reference to FIG. 2, a more detailed conceptual diagram of a typical network computing environment in which the present invention is implemented is depicted. The internetwork 10 of the preceding figure (or the Internet 118 in this figure) is an interconnected network of heterogeneous computing devices and mechanisms 102 that range from a supercomputer or data center 104 to a handheld or pen-based device 114. Allow 100. Although such devices have different data storage needs, they share the ability to retrieve data over the network 100 and operate on the data in their own resources. Heterogeneous computing devices 102 including mainframe computers (eg VAX station 106 and IBM AS / 400 station 116) as well as personal computer or workstation class devices such as IBM compatible device 108, Macintosh device 110 and laptop computer 112 are Easily interconnect via internetwork 10 and network 100. Although not shown, mobile and other wireless devices may be coupled to internetwork 10.
[0034]
The internet-based network 120 includes a set of logical connections, some of which are created between multiple internal networks 122 via the internet 118. Conceptually, Internet-based network 120 is similar to WAN 14 (Figure 1), which allows logical connections between geographically distant nodes. The Internet-based network 120 may be implemented using the Internet 118 or other public and private WAN technologies including leased lines, Fiber Channel, etc.
[0035]
Similarly, the internal network 122 is conceptually similar to the LAN 16 (FIG. 1), which allows logical connections over a limited distance than the WAN 14. The internal network 122 may be implemented using various LAN technologies including Ethernet, Fiber Distributed Data Interface (“FDDI”), Token Ring, AppleTalk, Fiber Channel, etc.
[0036]
Each internal network 122 connects one or more redundant arrays of independent node (RAIN) elements 124 to implement a RAIN node 18 (FIG. 1). Each RAIN element 124 includes a processor, memory and one or more mass storage devices (eg, hard disks). The RAIN element 124 also includes a hard disk controller that may be a conventional IDE or SCSI controller and may be a management controller such as a RAID controller. The RAIN elements 124 may be physically distributed and may be co-located in one or more racks that share resources such as cooling and power. Each node 18 (Figure 1) is independent of the other nodes 18, and the failure or inactivity of one node 18 does not affect the availability of the other node 18, and the data stored in one node 18 Can be restored from data stored in other nodes 18.
[0037]
In certain typical implementations, the RAIN element 124 is an Intel-based installation mounted on a motherboard that supports the PCI bus and 256 MB of random access memory (“RAM”) housed in a traditional AT or ATX case. A computer using a commodity component such as a microprocessor may be provided. The SCSI or IDE controller may be implemented on the motherboard and / or by an expansion card connected to the PCI bus. If the controller is implemented only on the motherboard, a PCI expansion bus may be used as an option. In certain implementations, the motherboard implements a PCI expansion card that is used to implement two mastering EIDE channels and two additional mastering EIDE channels so that each RAIN element 124 contains up to four or more EIDE hard disks it can. In a particular implementation, each hard disk may comprise an 80 gigabyte hard disk with a total storage capacity of 320 gigabytes or more per RAIN element. The hard disk capacity and configuration within the RAIN element 124 can be easily increased or decreased to meet the needs of a particular application. The jacket also houses support mechanisms such as a power source and a cooling device (not shown).
[0038]
Each RAIN element 124 runs an operating system. In certain implementations, a Unix variant operating system such as UNIX or Linux may be used. However, it is contemplated that other operating systems including DOS, Microsoft Windows, Apple Macintosh OS, OS / 2, Microsoft Windows NT, etc. can be equally replaced by making predictable changes in performance. The selected operating system forms a platform for executing application software and processes and implements a file system that accesses mass storage via a hard disk controller. Various application software and processes are implemented on each RAIN element 124 and use appropriate network protocols (eg, User Datagram Protocol (“UDP”), Transmission Control Protocol (TCP), Internet Protocol (IP), etc.) Network connectivity can be provided through the interface.
[0039]
With respect to FIG. 3, a logic flow chart is shown to represent the steps of entering a computer file into the hash file system of the present invention, wherein the hash value of the file is stored in advance in a set or database Matched.
[0040]
Process 200 begins by inputting computer file data 202 (eg, “File A”) into the hash file system (“HF”) of the present invention, and a hash function is performed at step 204. The data 206 representing the hash of file A is then compared at decision step 208 with the set of contents including the hash file value. If the data 206 is already in the set, the hash value of the file is added to the directory list at step 210. The contents of the set 212, including the hash value and corresponding to the data, are provided in the form of an existing hash value 214 for the comparison operation of decision step 208. On the other hand, if the hash value of file A is not currently in the set, the file is split into hash pieces at step 216 (as described more fully below).
[0041]
With respect to FIG. 4, a further logic flowchart is provided to represent the steps in process 300 for breaking up a digital sequence (eg, a file or other data sequence) into hash pieces. This process 300 will eventually generate a probabilistically unique hash value for each piece as well as a number of data pieces.
[0042]
The file data 302 is divided into pieces based on the commonality with other pieces of the system or the possibility of pieces that will later become apparent in step 304. The result of the operation of step 304 on the file data 302 generates four file pieces 306 named A1-A5 in the representative example.
[0043]
Each of the file pieces 306 is then manipulated at step 308 by placing each through an individual hash function operation such that each of the A1-A5 pieces 306 is assigned a stochastic unique number. As a result of the operation of step 308, each of the pieces 306 (A1-A5) will have an associated, stochastic unique hash value 310 (shown as A1-hash-A5-hash, respectively). The file splitting process of step 304 is described in further detail below, along with the unique “sticky bit” operations disclosed herein.
[0044]
With further reference to FIG. 5, another logic flow diagram is shown to represent a process 400 that compares the hash value 310 of each piece 306 of the file with the existing hash value 214 maintained in the set 212. In particular, at step 402, the hash value 310 of each piece 306 of the file is compared to the existing hash value 214 and the new hash value 408, and the corresponding new data piece 406 is added to the set 212. In this way, hash values 408 that are not pre-existing in the database set 212 are added along with the data pieces 406 associated with them. The process 400 will also generate a record 404 that indicates that one hash value for all file pieces is equivalent to the hash value 310 of the various pieces 306.
[0045]
Further, FIG. 6 shows another logic flow diagram illustrating a process 500 that compares a file hash or directory list hash value with an existing directory list hash value and adds the new file or directory list hash value to the database directory list. Process 500 operates on stored data 502 comprising a cumulative list of file names, file metadata (eg, date, time, file length, file type, etc.) and file hash values for each item in the directory. At step 504, a hash function is performed on the contents of the directory list. Decision step 506 functions to determine whether the hash value of the directory list is a set 212 of existing hash values 214. If the determination is affirmative, process 500 returns to add another file hash or directory list hash to the directory list. In contrast, if the directory list hash value is not already in the database set 212, the directory list hash value and data are added to the database set 212 in step 508.
[0046]
Still referring to FIG. 7, a comparison 600 of a representative computer file (ie, “File A”) piece 306 and their corresponding hash value 310 is shown both before and after editing a particular piece of a typical file. In this example, the record 404 includes the hash value of file A as well as the hash value 310 of each of the pieces of files A1-A5. A representative edit of file A can produce a corresponding change in hash value A2-b of hash value 310A along with a change in data of piece A2 (represented by A2-b) of file piece 306A. The edited file piece generates an updated record 404A that includes the modified hash value of file A and the modified hash value of piece A2-b.
[0047]
Still referring to FIG. 8, the composite data (eg, composite data 702 and 704) derived by the system and method of the present invention is substantially the same as the explicitly represented data 706, but with a “recipe” or formula. A conceptual diagram 700 is shown illustrating the fact that it will be created. In the illustrated example, the recipe includes the result of a function using the concatenation of data represented by the corresponding hash 708 or the data represented by the hash. The data block 706 may be a variable length quantity as shown, and the hash value 708 is derived from the data block associated with it. As already mentioned, the hash value 708 is a stochastic unique ID of the corresponding data piece, but a completely unique ID can be used instead, or can be mixed with a stochastic unique ID. . Composite data 702, 704 can also refer to other complex data at many levels, while the hash value 708 of the composite data can be derived from the value of the data generated by the recipe or the hash value of the recipe itself. It should also be noted that there are.
[0048]
Still referring to FIG. 9, how the hash file system and method of the present invention organizes data 802 and optimizes the reuse of redundant sequences by using hash value 806 as a pointer to the data they represent. In another conceptual diagram 800, the data 802 may be represented as a distinct byte sequence 808 (atomic data) or a group of sequences (composite) 804.
[0049]
The diagram 800 illustrates the immense commonality of recipes and data that is reused at every level. The basic configuration of the hash file system of the present invention is essentially a “tree” or “bush” in which a hash value 806 is used instead of a conventional pointer. A hash value 806 is used in the recipe to indicate another hash value that can be data or the recipe itself. Thus, in essence, the recipe indicates another recipe, the other recipe further indicates another recipe, eventually shows some specific data, and the specific data itself indicates another recipe that shows more data. It can be shown, and finally only data.
[0050]
Further with reference to FIG. 10, a simplified diagram 900 illustrating an exemplary 160-bit hash value 902 hash file system address translation function is shown. Hash value 902 includes a data structure with a front 904 and a back 906 as shown, and diagram 900 allows the use of hash value 902 to go to a particular node location in a system that includes the corresponding data. Fig. 2 illustrates a particular "0 of 1" operation used.
[0051]
The diagram 900 shows how the front 904 of the data structure of the hash value 902 can be used to indicate a hash prefix to the stripe identification (“ID”) 908, and then the stripe ID It illustrates how it is used to map to an IP address and map an ID class to an IP address 910. In this example, “S2” indicates stripe 2 of index node 37 912. The index stripe 912 of node 37 then indicates the stripe 88 of data node 73 indicated by reference number 914. Then, in operation, the hash value 902 itself can be used to indicate which node of the system contains the associated data, and another part of the hash value 902 indicates which data stripe is at that particular node. And another portion of the hash value 902 can be used to indicate where the data is in the stripe. Through this three-step process, it can be quickly determined whether the data represented by the hash value 902 already exists in the system.
[0052]
With further reference to FIG. 11, a simplified schematic diagram of the index stripe splitting function 1000 used in the system and method of the present invention is shown. In this figure, the typical function 1000 can be used to effectively split stripe 1002 (S2) into two stripes 1004 (S2) and 1006 (S7) so that one stripe is sufficiently full. It is shown that. In this example, odd entries are moved to stripe 1006 (S7), while even entries remain in stripe 1004. This function 1000 is an example of how stripe entries can be handled as the overall system size increases and complexity increases.
[0053]
With further reference to FIG. 12, a simplified diagram 1100 of the overall functionality of the system and method of the present invention is used, for example, to back up data for a typical home computer having multiple programs and document files 1102A and 1104A on the first day. The program file 1102B remains the same on the second day, while one of the document files 1104B is edited on the second day (Y.doc) and the third document file (Z.doc) is added.
[0054]
FIG. 1100 details how a computer file system can be divided into pieces and then listed as a series of recipes on a global data protection circuit (“gDPN”) to recover the original data from the pieces. Show. This very small computer system is shown in the form of “snapshot” on “first day” and then on “second day” thereafter. “Program File H5” and “My Document H6” are illustrated by the numeral 1106 on “First Day”, the former is represented by the recipe 1108, the first executable file is represented by the hash value H1 1114, The second executable file is represented by the hash value H2 1112. The document file is represented by a hash value H6 1110, the first document is represented by a hash value H3 1118, and the second document file is represented by a hash value H4 1116. After that, “Program File H5” and “My Document H10” indicated by the number 1120 in “Second Day” indicate that “Program File H5” has not been changed, but “My Document H10” has been changed. ing. H10 indicated by the number 1122 indicates that “X.doc” is still represented by the hash value H3 1118, while “Y.doc” is now represented by the hash value H8 in the number 1124. Show. The new document file “Z.doc” is represented by the hash value H9 at the numeral 1126.
[0055]
In this example, it can be seen that on the second day, some files were changed and others were not changed. In the modified file, some of those pieces have not been modified and others have been modified. Through the use of the hash file system of the present invention, a “snapshot” of the computer system can be created on the first day (creating the recipe needed to play the computer file so that it can exist next), and then on the second day. Several reuses of recipes from previous days, re-formulation of other recipes, and addition of new recipes describe the current system. In this way, the computer system is reproducible in its entirety at any time both on the first or second day and on any subsequent day.
[0056]
Further with reference to FIG. 13, a comparison 1200 of various pieces of a particular document file marked by a number of “sticky bytes” 1204 can be seen both before editing (1st day 1202A) and after editing (2nd day 1202B). It is shown that one of the pieces is changed and the other piece remains the same.
[0057]
For example, on the first day, file 1202A comprises variable length pieces 1206 (1.1), 1208 (1.2), 1210 (2.1), 1212 (2.), 1214 (2.3) and 1216 (3.1). On the second day, pieces 1206, 1208, 1210, 1214 and 1216 remain the same (and thus have the same hash value), while piece 1212 is edited to produce piece 1212A (and thus has a different hash value). .
[0058]
Data sticky bytes (or “sticky points”) are a unique fully automated method of subdividing computer files so that common block elements can be found on multiple related and unrelated computers without having to communicate between computers. . The means of finding sticky points is essentially mathematical in nature and is performed equally and properly regardless of the data content of the file. In the hash file system of the present invention, all data objects are indexed and stored and retrieved using, for example (but not limited to) industry standard checksums such as MD4, MD5, SHA or SHA-1. It's okay. In operation, if two files have the same checksum, it can be considered very likely that they are the same file. Using the systems and methods disclosed herein, data sticky points can be generated with a standard mathematical distribution and standard deviation with a small percentage of the target size.
[0059]
A data sticky point is an array of n bytes that is statistically rare. In this case, 32 bytes are used in the example because it is easy to implement in current microprocessor technology.
[0060]
A 32-bit rolling hash can be generated for file “f”: // f [i] is the i th byte of file “f”.
// scramble is an integer 256 entry array, each 32 bits long.
// These integers are generally chosen to evenly span the range.
int t = 8 // Target number of postfix 0.
int hash = 0;
int sticky bits;
for (int i = O; i <filesize; i ++)
hash = hash >> 1 | scramble [f [i]];
// In each byte of the file, the hash represents the rolling hash of the file.
sticky bits = (hash-1) ^ hash;
// sticks bits is a variable and has one of the hash numbers corresponding to the number of postfix 0s of the “hash”.
number of bits = count ones (stick-bits);
if (number of bits> t)
output sticky point (i);
}
[0061]
The sticky point is defined to be a rolling hash having at least the number of trailing zeros as a target number having a hash represented in binary. Statistically, this algorithm finds points that are 2 ^ t apart, where t is a post zero target number. In this example, if t = 8, the algorithm finds sticky points that are 2 ^ 8 = 256 bytes apart on average.
[0062]
A 32-bit rolling hash can be generated for an f file, where:
f [i] is the i-th byte of file f
A scramble is a 256-entry array of random elements, each n bits long:
int t = 8 // Zero target number
int target distance = 256; // 2 to the 8th power
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]];
// The hash for each byte of the file represents the rolling hash of the file.
sticky bits = (hash-1) ^ hash;
// sticks bits is a variable and has one of the numbers corresponding to the number of trailing 0s of the “hash”.
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]
Although the hash function used to implement the hash file system of the present invention requires reasonably complex calculations, it is sufficient within the capabilities of current computer systems. Hash functions are inherently based on probability, so if two different data objects accidentally have the same hash value, any hash function may produce incorrect results. However, the systems and methods disclosed herein are at a level where the probability of collision is acceptable for reliable use (ie, an opportunity of 10 to the 24th power) and is acceptable with conventional computer hardware operations. This problem is mitigated with a well-known and investigated hash function that reduces to a much lower level than the error rate that is being done.
[0064]
As used herein, the term “Internet infrastructure” includes a variety of hardware and software mechanisms, but the term mainly refers to the ability to move data packets from one network node to another. Refers to routers, router software, and physical links between these routers. Also, as used herein, a “digital sequence” is represented by computer program files, computer applications, data files, network packets, streaming data such as multimedia (including audio and video), telemetry data, and digital or numeric sequences. Any other data form that can be included can be included, but is not limited to such. Probabilistically unique identifiers generated by the hash file system and method of the present invention may also be used in network applications as URLs.
[0065]
Although the principles of the present invention have been described above with reference to specific implementations and applications of the systems and methods of the present invention, the foregoing description is by way of example only and is intended to limit the scope of the invention. It was clearly understood that this is not the case. In particular, it will be appreciated that the teachings of the foregoing disclosure suggest other variations to those skilled in the art. Such alternative embodiments may include other features that are already known per se and that can be used in place of or in addition to features already described herein. Although the claims are expressly set forth in this application for specific feature combinations, the scope of the disclosure herein also relates to the same invention as the claims, and Any novel feature or combination of features disclosed explicitly or implicitly obvious to those skilled in the art, or a generalized example thereof, alleviating all of the same technical problems as encountered It should also be understood that variations are included. Applicant thereby reserves the right to develop the features and / or combinations of the features into new claims during the entire procedure of this application or of further applications derived therefrom.
[Brief description of the drawings]
FIG. 1 is a high-level diagram of a representative networked computer environment in which the system and method of the present invention can be implemented.
FIG. 2 is a more detailed conceptual diagram of a possible operating environment for utilizing the system and method of the present invention, where files maintained in any number of computers or data centers can be located, for example, in geographically diverse locations. It may be stored in a distributed computer system through an internet connection to a redundant array (“RAIN”) rack of multiple independent nodes located.
FIG. 3 is a logic flow chart representing the steps of inputting a computer file into the hash file system of the present invention, where the hash value of the file is checked against the hash value of the file previously maintained in the set or database.
FIG. 4 is a further logic flow diagram representing the steps of breaking up a file or other data sequence into hash pieces, with a number of data pieces and corresponding stochastic unique hash values for each piece. Will be generated.
FIG. 5 is another logic flow chart showing a comparison of the hash value of each piece of a file with an existing hash value of a set (or database), where the product of the record is a hash value for all files and It shows that the hash values of the various pieces are equivalent, and a new data piece and a corresponding new hash value are added to the set.
FIG. 6 is another logic flowchart illustrating the steps of comparing a file hash or directory list hash value with an existing directory list hash value and adding a new file or directory list hash value to the set directory list.
FIG. 7 is a comparison of representative computer file pieces and their corresponding hash values both before and after editing a particular piece of a typical file.
FIG. 8 The composite data derivable by the system and method of the present invention is effectively identical to the explicitly displayed data, but instead is represented by a “recipe” (eg, its corresponding hash) It is a conceptual diagram of the fact that it may be generated by concatenation of data or the result of a function using data represented by a hash.
FIG. 9 illustrates how the hash file system and method of the present invention can be used to organize data and optimize reuse of redundant sequences by using hash values as pointers to the data they represent. The data may be represented as a distinct byte sequence (atomic data) or a group of sequences (composite).
FIG. 10 is an illustrative simplified diagram of a typical 160-bit hash value hash file system address translation function.
FIG. 11 is a simplified exemplary diagram of an index stripe splitting function used in the system and method of the present invention.
FIG. 12 is a simplified diagram of the overall functionality of the system and method of the present invention, showing the day 1 being used to back up data for a typical home computer having a large number of programs and document files. One of the document files is edited on the second day, and a third document file is added.
FIG. 13 is a comparison of various pieces of a particular document file marked by a number of “sticky bytes”, both before and after editing, whereby one of the pieces is changed and the other The pieces remain the same, showing the figure.

Claims (63)

デジタルシーケンスを含むデータを管理する方法であって、
コンピュータシステムが関数を用いて前記デジタルシーケンスに対して確率的に固有の識別子を生成するステップと、
前記コンピュータシステムが前記確率的に固有の識別子を、他のデジタルシーケンスと対応する、記憶装置に記憶された他の識別子のリストと比較するステップと、
前記確率的に固有の識別子が前記リストに予め無い場合、コンピュータシステムが前記デジタルシーケンスを複数のより短いデジタルシーケンスに分割するステップと、
前記コンピュータシステムが関数を用いて前記複数のより短いデジタルシーケンスの各々に対して確率的に固有の識別子を生成するステップと、
前記コンピュータシステムが前記複数のより短いデジタルシーケンスに対応する前記確率的に固有の識別子を前記リストと比較するステップと、
前記より短いデジタルシーケンスに対応する前記確率的に固有の識別子が前記リストに予め無い場合、前記コンピュータシステムが前記より短いデジタルシーケンスおよび前記対応する確率的に固有の識別子を前記リストに加えるステップと、
前記より短いデジタルシーケンスに対応する前記確率的に固有の識別子が前記リストに予めある場合、前記コンピュータシステムが前記より短いデジタルシーケンスおよび前記対応する確率的に固有の識別子を前記リストから取り除くか、またはスクリーニングするステップと
を備える方法。
A method for managing data including digital sequences,
A computer system using a function to generate a stochastic unique identifier for the digital sequence;
The computer system comparing the stochastic unique identifier to a list of other identifiers stored in a storage device corresponding to other digital sequences;
If the stochastically unique identifier is previously not in said list, a step of the computer system to split the digital sequence into a plurality of shorter digital sequence,
The computer system using a function to generate a stochastic unique identifier for each of the plurality of shorter digital sequences;
Comparing the said list a unique identifier the stochastically said computer system corresponding to said plurality of shorter digital sequence,
If the stochastic unique identifier corresponding to the shorter digital sequence is not previously in the list, the computer system adds the shorter digital sequence and the corresponding stochastic unique identifier to the list;
The computer system removes the shorter digital sequence and the corresponding stochastic unique identifier from the list if the stochastic unique identifier corresponding to the shorter digital sequence is pre-existing in the list; or Screening the method.
前記コンピュータシステムが前記デジタルシーケンスを複数のより短いデジタルシーケンスに分割するステップと、
前記コンピュータシステムが前記複数のより短いデジタルシーケンスの各々に対応する同様の複数の確率的に固有の識別子を生成するステップと、を更に備える、請求項記載の方法。
The computer system dividing the digital sequence into a plurality of shorter digital sequences;
Further comprising The method of claim 1, comprising the steps of: the computer system to generate a like plurality of stochastically unique identifier corresponding to each of the plurality of shorter digital sequence.
前記分割ステップが、個々に可変長を有する前記より短いデジタルシーケンスを生成する、請求項記載の方法。The dividing step, to generate a short digital sequence than said having a variable length individually The method of claim 1, wherein. 前記分割ステップが、前記デジタルシーケンスのコンテンツに基づいている、請求項記載の方法。The dividing step is based on the content of the digital sequence, The method of claim 1, wherein. 前記分割ステップが、前記デジタルシーケンスを記述しているメタデータに基づいている、請求項記載の方法。The dividing step, the is based on meta-data describing the digital sequence, The method of claim 1, wherein. 前記分割ステップが、実質的に不変長を有する前記より短いデジタルシーケンスを生成する、請求項記載の方法。The dividing step, to generate a short digital sequence than said having a substantially unchanged length The method of claim 1, wherein. 前記同様の複数の確率的に固有の識別子を生成する前記ステップが、
前記コンピュータシステムが前記より短いデジタルシーケンスに対して個々にハッシュ関数を実行して、前記同様の複数の確率的に固有の識別子を生成するステップを備える、請求項記載の方法。
Generating the same plurality of stochastic unique identifiers;
The running individually hash function computer system for short digital sequence from the said comprising the step of generating a like plurality of stochastically unique identifier, the method of claim 1.
前記コンピュータシステムが少なくとも前記確率的に固有の識別子の一部を前記比較ステップ用の前記リストのロケーションへのインジケータとして利用するステップを更に備える、請求項記載の方法。Further comprising The method of claim 1, wherein the step wherein the computer system is to use at least a portion of the stochastically unique identifier as an indicator to the location of said list for said comparing step. データ記憶システムであって、
データに含まれるデジタルシーケンスの一部と、前記デジタルシーケンスの前記一部の各々に対して対応する確率的に固有の識別子を維持する、少なくとも1つのリストを記憶するための記憶装置と、
前記記憶装置に接続され、少なくとも1つの新しいデジタルシーケンスを受信し、関数を用いて前記デジタルシーケンスに対して確率的に固有の識別子を生成し、前記確率的に固有の識別子を、他のデジタルシーケンスと対応する、記憶装置に記憶された他の識別子のリストと比較し、前記確率的に固有の識別子が前記リストに予め無い場合、前記新しいデジタルシーケンスを複数のより短いデジタルシーケンスに分割し、関数を用いて前記より短いデジタルシーケンスの各々に対して確率的に固有の識別子を生成するコントローラであって、前記複数のより短いデジタルシーケンスの各々に対する前記確率的に固有の識別子のうちの任意の1つが前記リストで現在維持されているかどうかを判断し、前記少なくとも1つのリストに維持されていると判断されなかった前記確率的に固有の識別子のうちの任意の1つと、該任意の一つの確率的に固有の識別子と対応するより短いデジタルシーケンスとを前記少なくとも1つのリストに加える前記コントローラと、
を備える、データ記憶システム。
A data storage system,
A storage device for storing at least one list that maintains a portion of the digital sequence included in the data and a corresponding probabilistically unique identifier for each of the portion of the digital sequence;
Connected to the storage device, receives at least one new digital sequence , generates a stochastic unique identifier for the digital sequence using a function, and converts the stochastic unique identifier to another digital sequence corresponding with, and compared to a list of other identifiers stored in the storage device, if the stochastically unique identifier is previously not in the list, divide the new digital sequence into a plurality of shorter digital sequence, A controller that uses a function to generate a stochastic unique identifier for each of the shorter digital sequences, wherein any of the stochastic unique identifiers for each of the plurality of shorter digital sequences one of determining whether the currently maintained in the list, the maintained at least one list Any one of the stochastically unique identifier is not determined there, the controller adding a short digital sequence than corresponding to said any one of stochastically unique identifier to the at least one list When,
A data storage system comprising:
前記少なくとも1つのリストが複数のリストを備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the at least one list comprises a plurality of lists. 前記複数のリストが、それぞれ前記確率的に固有の識別子の一部を含む、請求項10記載のデータ記憶システム。The data storage system of claim 10 , wherein each of the plurality of lists includes a portion of the stochastic unique identifier. 前記複数のリストのうちの少なくとも1つが、前記少なくとも1つのリストの他から物理的に移される、請求項10記載のデータ記憶システム。The data storage system of claim 10 , wherein at least one of the plurality of lists is physically moved from the other of the at least one list. 前記複数のリストが、前記確率的に固有の識別子に基づいて分割される、請求項10記載のデータ記憶システム。The data storage system of claim 10 , wherein the plurality of lists are partitioned based on the stochastic unique identifier. 前記複数のリストはネットワークによって結合する、請求項12記載のデータ記憶システム。The data storage system of claim 12 , wherein the plurality of lists are coupled by a network. 前記少なくとも1つのリストが、前記少なくとも1つの分割メカニズムから物理的に移される、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the at least one list is physically moved from the at least one partitioning mechanism. 前記リストが物理的分散データベースを備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the list comprises a physically distributed database. 前記コントローラおよび前記記憶装置が、ネットワークによって結合される、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the controller and the storage device are coupled by a network. 前記ネットワークがインターネットのような公衆網を備える、請求項17記載のデータ記憶システム。The data storage system of claim 17 , wherein the network comprises a public network such as the Internet. 前記コントローラおよび前記記憶装置が、物理的に分散される、請求項18記載のデータ記憶システム。The data storage system of claim 18 , wherein the controller and the storage device are physically distributed. 前記確率的に固有の識別子がハッシュ関数によって生成される、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the stochastic unique identifier is generated by a hash function. 前記ハッシュ関数が、業界標準ダイジェストアルゴリズムを備える、請求項20記載のデータ記憶システム。The data storage system of claim 20 , wherein the hash function comprises an industry standard digest algorithm. 前記ハッシュ関数が、MD4、MD5 SHAまたはSHA-1アルゴリズムのうちの1つを備える、請求項21記載のデータ記憶システム。The data storage system of claim 21 , wherein the hash function comprises one of an MD4, MD5 SHA or SHA-1 algorithm. 前記確率的に固有の識別子がチェックサムによって生成される、請求項20記載のデータ記憶システム。21. The data storage system of claim 20 , wherein the stochastic unique identifier is generated by a checksum. 前記デジタルシーケンスは可変長である、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence is variable length. 前記デジタルシーケンスは不変長である、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence is invariant length. 前記コントローラが、前記複数の前記より短いデジタルシーケンスに対する前記確率的に固有の識別子の少なくとも一部を、前記リスト分割に関連があるロケーターとして利用するのに有効である、請求項15記載のデータ記憶システム。 16. The data storage of claim 15 , wherein the controller is effective to utilize at least a portion of the stochastic unique identifier for the plurality of the shorter digital sequences as a locator associated with the list partitioning. system. 前記デジタルシーケンスがデータファイルを備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence comprises a data file. 前記デジタルシーケンスがデータストリームを備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence comprises a data stream. 前記デジタルシーケンスが実行可能ファイルを備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence comprises an executable file. 前記デジタルシーケンスがデータベースレコードを備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence comprises a database record. 前記デジタルシーケンスがデータベースインデックスを備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence comprises a database index. 前記デジタルシーケンスがディジタル装置画像を備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence comprises a digital device image. 前記デジタルシーケンスがネットワークパケットを備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence comprises a network packet. 前記デジタルシーケンスがデジタル化されたアナログ信号を備える、請求項記載のデータ記憶システム。The data storage system of claim 9 , wherein the digital sequence comprises a digitized analog signal. デジタルシーケンスを含むデータを管理するためのコンピュータープログラムであって、
コンピュータに関数を用いてデジタルシーケンスの確率的に固有の識別子の生成を行わせるよう構成されたコンピュータ可読プログラムコードと、
前記コンピュータに、前記確率的に固有の識別子と他のデジタルシーケンスに対応する他の識別子のリストの比較を行わせるよう構成されたコンピュータ可読プログラムコードと、
前記確率的に固有の識別子が前記リストに予め無い場合、前記コンピュータに、前記デジタルシーケンスを複数のより短いデジタルシーケンスに分割させるように構成されたコンピュータ可読プログラムコードと、
前記コンピュータに、関数を用いて前記より短いデジタルシーケンスの各々に対して確率的に固有の識別子を生成させて、各より短いデジタルシーケンスが各確率的に固有の識別子と関連付けされるように構成されたコンピュータ可読プログラムコードと、
前記コンピュータに、前記確率的に固有の識別子を前記リストと比較させるよう構成されたコンピュータ可読プログラムコードと、
前記確率的に固有の識別子が前記リストに予め無かった場合、前記コンピュータに前記確率的に固有の識別子と、該確率的に固有の識別子と対応するより短いデジタルシーケンスとの前記リストへの追加を行わせるよう構成されたコンピュータ可読プログラムコードと
を備える、コンピュータープログラム。
A computer program for managing data including digital sequences,
Computer readable program code configured to cause a computer to generate a stochastic unique identifier of a digital sequence using a function;
Computer readable program code configured to cause the computer to compare the stochastic unique identifier with a list of other identifiers corresponding to other digital sequences;
The stochastically case a unique identifier previously not in the list, the computer, the computer readable program code that is configured to split the digital sequence into a plurality of shorter digital sequence,
The computer is configured to use a function to generate a stochastic unique identifier for each of the shorter digital sequences, and each shorter digital sequence is configured to be associated with each stochastic unique identifier. Computer readable program code,
Computer readable program code configured to cause the computer to compare the stochastic unique identifier with the list;
If the stochastic unique identifier is not previously in the list, the computer is added to the list with the stochastic unique identifier and a shorter digital sequence corresponding to the stochastic unique identifier. A computer program comprising computer readable program code configured to be performed .
前記コンピュータに生成を行わせるよう構成された前記コンピュータ可読プログラムコードは、
コンピュータに前記デジタルシーケンスのハッシュ関数を実行させて前記確率的に固有の識別子を生成させるよう構成されたコンピュータ可読プログラムコードを含む、
請求項35記載のコンピュータープログラム。
The computer readable program code configured to cause the computer to generate is
Including computer readable program code configured to cause a computer to perform a hash function of the digital sequence to generate the stochastic unique identifier;
36. The computer program according to claim 35 .
コンピュータにハッシュ関数を実行させるよう構成された前記コンピュータ可読プログラムコードは、業界標準ダイジェストアルゴリズムによって実行される、請求項36記載のコンピュータープログラム。38. The computer program of claim 36 , wherein the computer readable program code configured to cause a computer to perform a hash function is executed by an industry standard digest algorithm. コンピュータにハッシュ関数を実行させるよう構成された前記コンピュータ可読プログラムコードは、MD4、MD5、SHAまたはSHA-1アルゴリズムのうちの1つによって実行される、請求項37記載のコンピュータープログラム。38. The computer program of claim 37 , wherein the computer readable program code configured to cause a computer to perform a hash function is executed by one of an MD4, MD5, SHA or SHA-1 algorithm. コンピュータに生成を行わせるよう構成された前記コンピュータ可読プログラムコードは、
コンピュータに前記デジタルシーケンスのチェックサムの生成を行わせて前記確率的に固有の識別子を生成させるよう構成されたコンピュータ可読プログラムコードを含む、請求項35記載のコンピュータープログラム。
The computer readable program code configured to cause a computer to generate is
36. The computer program of claim 35 , comprising computer readable program code configured to cause a computer to generate a checksum of the digital sequence to generate the stochastic unique identifier.
コンピュータに前記デジタルシーケンスの前記確率的に固有の識別子を含むディレクトリリストの作成を行わせるよう構成されたコンピュータ可読プログラムコードを更に備える、請求項35記載のコンピュータープログラム。36. The computer program of claim 35 , further comprising computer readable program code configured to cause a computer to create a directory list that includes the stochastic unique identifier of the digital sequence. コンピュータに分割を行わせるよう構成された前記コンピュータ可読プログラムコードが、個々に可変長を有する前記より短いデジタルシーケンスを生成する、請求項35記載のコンピュータープログラム。36. The computer program of claim 35 , wherein the computer readable program code configured to cause a computer to generate the shorter digital sequence having individually variable lengths. コンピュータに分割を行わせるよう構成された前記コンピュータ可読プログラムコードが、実質的に不変長を有する前記より短いデジタルシーケンスを生成する、請求項35記載のコンピュータープログラム。36. The computer program of claim 35 , wherein the computer readable program code configured to cause a computer to generate the shorter digital sequence having a substantially invariant length. コンピュータに前記同様の複数の確率的に固有の識別子の生成を行わせるよう構成された前記コンピュータ可読プログラムコードが、
コンピュータに前記より短いデジタルシーケンスのハッシュ関数を個々に実行させて前記同様の複数の確率的に固有の識別子を生成させるよう構成されたコンピュータ可読プログラムコードを含む、請求項35記載のコンピュータープログラム。
The computer readable program code configured to cause a computer to generate the same plurality of stochastic unique identifiers,
36. The computer program of claim 35 , comprising computer readable program code configured to cause a computer to individually execute the hash function of the shorter digital sequence to generate the plurality of similar stochastic unique identifiers.
コンピュータに前記複数のより短いデジタルシーケンスおよび前記対応する同様の複数の確率的に固有の識別子の前記リストへの追加を行わせるよう構成されたコンピュータ可読プログラムコードを更に備える、請求項35記載のコンピュータープログラム。36. The computer of claim 35 , further comprising computer readable program code configured to cause the computer to add the plurality of shorter digital sequences and the corresponding similar plurality of stochastic unique identifiers to the list. program. コンピュータに、少なくとも前記確率的に固有の識別子の一部を前記比較ステップ用の前記リストのロケーションテーブルへのインデックスとして利用させるよう構成されたコンピュータ可読プログラムコードを更に備える、請求項35記載のコンピュータープログラム。36. The computer program of claim 35 , further comprising computer readable program code configured to cause a computer to utilize at least a portion of the stochastic unique identifier as an index into a location table of the list for the comparing step. . 前記記憶装置が、前記各より短いデジタルシーケンスと各前記確率的に固有の識別子との間の対応を確立して、各より短いデジタルシーケンスが各確率的に固有の識別子と関連付けされるようにするステップを備える請求項に記載の方法。The storage device establishes a correspondence between each shorter digital sequence and each stochastic unique identifier so that each shorter digital sequence is associated with each stochastic unique identifier. the method of claim 1 comprising the step. 前記識別子および前記対応する前記より短いデジタルシーケンスが少なくとも一つのデータリストで維持される、請求項46記載の方法。48. The method of claim 46 , wherein the identifier and the corresponding shorter digital sequence are maintained in at least one data list. 少なくとも一部の前記識別子が、前記少なくとも一つのデータリスト内の前記対応する前記より短いデジタルシーケンスのロケーションへのポインタとして利用できる、請求項46記載の方法。48. The method of claim 46 , wherein at least some of the identifiers can be used as pointers to the location of the corresponding shorter digital sequence in the at least one data list. 前記より短いデジタルシーケンスが少なくとも一部のデータファイルを備え、前記識別子が前記少なくとも一部の前記データファイルのコンテンツに固有に関連している、請求項46記載の方法。47. The method of claim 46 , wherein the shorter digital sequence comprises at least a portion of a data file and the identifier is uniquely associated with content of the at least a portion of the data file. 前記より短いデジタルシーケンスが少なくとも一部のデータストリームを備え、前記識別子が前記少なくとも一部の前記データストリームのコンテンツに固有に関連している、請求項46記載の方法。47. The method of claim 46 , wherein the shorter digital sequence comprises at least a portion of a data stream, and the identifier is uniquely associated with content of the at least a portion of the data stream. 前記少なくとも一部の前記デジタルシーケンスが少なくとも一部の実行可能ファイルを備え、前記識別子が前記少なくとも一部の前記実行可能ファイルのコンテンツに固有に関連している、請求項46記載の方法。47. The method of claim 46 , wherein the at least some of the digital sequences comprise at least some executable files and the identifier is uniquely associated with content of the at least some executable files. 前記関数実行ステップが、
前記より短いデジタルシーケンスのハッシュ関数を実行して前記確率的に固有の識別子を生成するステップによって実行される、請求項46記載の方法。
The function execution step includes:
47. The method of claim 46 , wherein the method is performed by performing a hash function of the shorter digital sequence to generate the stochastic unique identifier.
前記ハッシュ関数を実行するステップが、業界標準ダイジェストアルゴリズムによって実行される、請求項52記載の方法。 53. The method of claim 52 , wherein performing the hash function is performed by an industry standard digest algorithm. 前記ハッシュ関数を実行するステップが、MD4、MD5、SHAまたはSHA-1アルゴリズムのうちの1つによって実行される、請求項53記載の方法。54. The method of claim 53 , wherein performing the hash function is performed by one of an MD4, MD5, SHA or SHA-1 algorithm. コンピュータに、前記複数のより短いデジタルシーケンスの各々と各前記確率的に固有の識別子との間での対応の確立を行わせて、各より短いデジタルシーケンスが各確率的に固有の識別子と関連付けられるよう構成されたコンピュータ可読プログラムコードを備える、請求項35に記載のコンピュータープログラム。Causes the computer to establish a correspondence between each of the plurality of shorter digital sequences and each of the stochastic unique identifiers so that each shorter digital sequence is associated with each stochastic unique identifier. 36. The computer program of claim 35 , comprising computer readable program code configured as follows. 前記識別子および前記対応する前記より短いデジタルシーケンスが少なくとも一つのデータリストで維持される、請求項55記載のコンピュータープログラム。 56. The computer program of claim 55 , wherein the identifier and the corresponding shorter digital sequence are maintained in at least one data list. 少なくとも一部の前記識別子が、前記少なくとも一つのデータリスト内の前記対応する前記より短いデジタルシーケンスのロケーションへのポインタとして利用できる、請求項56記載のコンピュータープログラム。57. The computer program of claim 56 , wherein at least some of the identifiers can be used as pointers to the location of the corresponding shorter digital sequence in the at least one data list. 前記より短いデジタルシーケンスが少なくとも一部のデータファイルを備え、前記識別子が前記少なくとも一部の前記データファイルのコンテンツに固有に関連している、請求項55記載のコンピュータープログラム。 56. The computer program of claim 55 , wherein the shorter digital sequence comprises at least a portion of a data file and the identifier is uniquely associated with content of the at least a portion of the data file. 前記より短いデジタルシーケンスが少なくとも一部のデータストリームを備え、前記識別子が前記少なくとも一部の前記データストリームのコンテンツに固有に関連している、請求項55記載のコンピュータープログラム。 56. The computer program of claim 55 , wherein the shorter digital sequence comprises at least a portion of a data stream and the identifier is uniquely associated with content of the at least a portion of the data stream. 前記より短いデジタルシーケンスが少なくとも一部の実行可能ファイルを備え、前記識別子が前記少なくとも一部の前記実行可能ファイルのコンテンツに固有に関連している、請求項55記載のコンピュータープログラム。 56. The computer program of claim 55 , wherein the shorter digital sequence comprises at least a portion of an executable file and the identifier is uniquely associated with content of the at least a portion of the executable file. コンピュータに関数を実行させるよう構成された前記コンピュータ可読プログラムコードが、
コンピュータに、前記より短いデジタルシーケンスに対してハッシュ関数を実行させて前記確率的に固有の識別子を生成させるよう構成されたコンピュータ可読プログラムコードによって実行される、請求項55記載のコンピュータープログラム。
The computer readable program code configured to cause a computer to execute a function comprises:
56. The computer program of claim 55 , executed by computer readable program code configured to cause a computer to perform a hash function on the shorter digital sequence to generate the stochastic unique identifier.
コンピュータにハッシュ関数を実行させるよう構成されたコンピュータ可読プログラムコードが、業界標準ダイジェストアルゴリズムによって実行される、請求項61記載のコンピュータープログラム。 62. The computer program of claim 61 , wherein the computer readable program code configured to cause a computer to perform a hash function is executed by an industry standard digest algorithm. コンピュータにハッシュ関数を実行させるよう構成されたコンピュータ可読プログラムコードが、MD4、MD5、SHAまたはSHA-1アルゴリズムのうちの1つによって実行される、請求項62記載のコンピュータープログラム。64. The computer program of claim 62 , wherein the computer readable program code configured to cause a computer to perform a hash function is executed by one of the MD4, MD5, SHA or SHA-1 algorithms.
JP2001560878A 2000-02-18 2001-02-14 Hash file system and method for use in a commonality factoring system Expired - Lifetime JP4846156B2 (en)

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 US6704730B2 (en) 2000-02-18 2001-02-05 Hash file system and method for use in a commonality factoring system
US09/777,150 2001-02-05
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 JP2003524243A (en) 2003-08-12
JP4846156B2 true JP4846156B2 (en) 2011-12-28

Family

ID=27391739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001560878A Expired - Lifetime JP4846156B2 (en) 2000-02-18 2001-02-14 Hash file system and method for use in a commonality factoring system

Country Status (6)

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

Families Citing this family (43)

* 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
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
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 (en) * 2003-03-10 2009-03-04 シャープ株式会社 Data processing apparatus, data processing program and recording medium
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
JP4568532B2 (en) * 2004-05-13 2010-10-27 日本無線株式会社 Wireless device control system, wireless device and control device
US8725705B2 (en) * 2004-09-15 2014-05-13 International Business Machines Corporation Systems and methods for searching of storage data with reduced bandwidth requirements
US7523098B2 (en) 2004-09-15 2009-04-21 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
EP1866774A4 (en) * 2005-03-11 2010-04-14 Rocksoft Ltd Method for storing data with reduced redundancy using data clusters
JP4975724B2 (en) * 2005-03-11 2012-07-11 ロックソフト リミテッド Method for detecting the presence of sub-blocks in a low redundancy storage system
US7831793B2 (en) * 2006-03-01 2010-11-09 Quantum Corporation Data storage system including unique block pool manager and applications in tiered storage
CA2648428C (en) * 2006-04-07 2017-11-21 Data Storage Group Data compression and storage techniques
US8832045B2 (en) 2006-04-07 2014-09-09 Data Storage Group, Inc. Data compression and storage techniques
CA2651323C (en) 2006-05-05 2016-02-16 Hybir Inc. Group based complete and incremental computer file backup system, process and apparatus
US8412682B2 (en) * 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US7921077B2 (en) * 2006-06-29 2011-04-05 Netapp, Inc. System and method for managing data deduplication of storage systems utilizing persistent consistency point images
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
JP5020673B2 (en) * 2007-03-27 2012-09-05 株式会社日立製作所 A computer system that prevents the storage of duplicate files
US8490078B2 (en) * 2007-09-25 2013-07-16 Barclays Capital, Inc. System and method for application management
US8447938B2 (en) * 2008-01-04 2013-05-21 International Business Machines Corporation Backing up a deduplicated filesystem to disjoint media
JP5084551B2 (en) 2008-02-26 2012-11-28 Kddi株式会社 Data backup method, storage control communication device and program using deduplication technology
JP5248912B2 (en) * 2008-05-12 2013-07-31 株式会社日立製作所 Server computer, computer system, and file management method
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
CA2675915C (en) * 2008-09-11 2015-04-28 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
JP5313600B2 (en) * 2008-09-16 2013-10-09 株式会社日立製作所 Storage system and storage system operation method
KR101046025B1 (en) * 2008-10-07 2011-07-01 이경수 Embedded system data extraction device and method
JP5444728B2 (en) * 2009-01-26 2014-03-19 日本電気株式会社 Storage system, data writing method in storage system, and data writing program
JP5463746B2 (en) * 2009-06-15 2014-04-09 日本電気株式会社 Archive storage device, storage system, data storage method, and data storage program
JP5254141B2 (en) 2009-07-14 2013-08-07 富士通株式会社 Archive device, data storage program, and data storage method
JP4856217B2 (en) 2009-07-21 2012-01-18 富士通株式会社 Data storage program, data storage method, and data storage system
JP5517224B2 (en) * 2010-03-04 2014-06-11 日本電気株式会社 Storage device
US20110314070A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Optimization of storage and transmission of data
JP5650982B2 (en) 2010-10-25 2015-01-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Apparatus and method for eliminating file duplication
US9195666B2 (en) * 2012-01-17 2015-11-24 Apple Inc. Location independent files
CN103873503A (en) * 2012-12-12 2014-06-18 鸿富锦精密工业(深圳)有限公司 Data block backup system and method
US10102218B2 (en) * 2014-09-30 2018-10-16 Microsoft Technology Licensing, Llc File system with per-extent checksums
KR101613146B1 (en) * 2015-03-24 2016-04-18 주식회사 티맥스데이터 Method for encrypting database
CN109639807A (en) * 2018-12-19 2019-04-16 中国四维测绘技术有限公司 A kind of massive remote sensing image file network transmission method based on slice slice

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05135108A (en) * 1990-03-27 1993-06-01 Sun Microsyst Inc Method and apparatus for organizing database
JPH06103127A (en) * 1992-09-22 1994-04-15 Kanebo Ltd Device for managing hash file data and method thereof

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 (en) * 1990-03-27 1993-06-01 Sun Microsyst Inc Method and apparatus for organizing database
JPH06103127A (en) * 1992-09-22 1994-04-15 Kanebo Ltd Device for managing hash file data and method thereof

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4846156B2 (en) Hash file system and method for use in a commonality factoring system
US6704730B2 (en) Hash file system and method for use in a commonality factoring system
JP4263477B2 (en) System for identifying common digital sequences
AU2001238269A1 (en) Hash file system and method for use in a commonality factoring system
US9454318B2 (en) Efficient data storage system
AU2015221548B2 (en) A computer implemented method for dynamic sharding
AU2001296665A1 (en) System for identifying common digital sequences
US8165221B2 (en) System and method for sampling based elimination of duplicate data
US10387271B2 (en) File system storage in cloud using data and metadata merkle trees
US9002800B1 (en) Archive and backup virtualization
US10339124B2 (en) Data fingerprint strengthening
Kumar et al. Differential Evolution based bucket indexed data deduplication for big data storage
Phyu et al. Efficient data deduplication scheme for scale-out distributed storage
Galizia et al. Improving Efficiency and Performance of Distributed File-Systems

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