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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1453—Management of the data involved in backup or backup restore using de-duplication of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; 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
[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
[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
[0031]
Optionally, one or more of the
[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
[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
[0034]
The internet-based
[0035]
Similarly, the
[0036]
Each
[0037]
In certain typical implementations, the
[0038]
Each
[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]
[0041]
With respect to FIG. 4, a further logic flowchart is provided to represent the steps in
[0042]
The
[0043]
Each of the
[0044]
With further reference to FIG. 5, another logic flow diagram is shown to represent a
[0045]
Further, FIG. 6 shows another logic flow diagram illustrating a
[0046]
Still referring to FIG. 7, a
[0047]
Still referring to FIG. 8, the composite data (eg,
[0048]
Still referring to FIG. 9, how the hash file system and method of the present invention organizes
[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
[0050]
Further with reference to FIG. 10, a simplified diagram 900 illustrating an exemplary 160-
[0051]
The diagram 900 shows how the
[0052]
With further reference to FIG. 11, a simplified schematic diagram of the index
[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
[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
[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
[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,
[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
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
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.
前記コンピュータシステムが前記複数のより短いデジタルシーケンスの各々に対応する同様の複数の確率的に固有の識別子を生成するステップと、を更に備える、請求項1記載の方法。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.
前記コンピュータシステムが前記より短いデジタルシーケンスに対して個々にハッシュ関数を実行して、前記同様の複数の確率的に固有の識別子を生成するステップを備える、請求項1記載の方法。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.
データに含まれるデジタルシーケンスの一部と、前記デジタルシーケンスの前記一部の各々に対して対応する確率的に固有の識別子を維持する、少なくとも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:
コンピュータに関数を用いてデジタルシーケンスの確率的に固有の識別子の生成を行わせるよう構成されたコンピュータ可読プログラムコードと、
前記コンピュータに、前記確率的に固有の識別子と他のデジタルシーケンスに対応する他の識別子のリストの比較を行わせるよう構成されたコンピュータ可読プログラムコードと、
前記確率的に固有の識別子が前記リストに予め無い場合、前記コンピュータに、前記デジタルシーケンスを複数のより短いデジタルシーケンスに分割させるように構成されたコンピュータ可読プログラムコードと、
前記コンピュータに、関数を用いて前記より短いデジタルシーケンスの各々に対して確率的に固有の識別子を生成させて、各より短いデジタルシーケンスが各確率的に固有の識別子と関連付けされるように構成されたコンピュータ可読プログラムコードと、
前記コンピュータに、前記確率的に固有の識別子を前記リストと比較させるよう構成されたコンピュータ可読プログラムコードと、
前記確率的に固有の識別子が前記リストに予め無かった場合、前記コンピュータに前記確率的に固有の識別子と、該確率的に固有の識別子と対応するより短いデジタルシーケンスとの前記リストへの追加を行わせるよう構成されたコンピュータ可読プログラムコードと
を備える、コンピュータープログラム。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 .
コンピュータに前記デジタルシーケンスのチェックサムの生成を行わせて前記確率的に固有の識別子を生成させるよう構成されたコンピュータ可読プログラムコードを含む、請求項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記載のコンピュータープログラム。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.
前記より短いデジタルシーケンスのハッシュ関数を実行して前記確率的に固有の識別子を生成するステップによって実行される、請求項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.
コンピュータに、前記より短いデジタルシーケンスに対してハッシュ関数を実行させて前記確率的に固有の識別子を生成させるよう構成されたコンピュータ可読プログラムコードによって実行される、請求項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.
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)
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)
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)
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 |
-
2001
- 2001-02-14 KR KR1020027010804A patent/KR100860821B1/en active IP Right Grant
- 2001-02-14 JP JP2001560878A patent/JP4846156B2/en not_active Expired - Lifetime
- 2001-02-14 EP EP01910686A patent/EP1269350A4/en not_active Ceased
- 2001-02-14 CA CA002399555A patent/CA2399555A1/en not_active Abandoned
- 2001-02-14 WO PCT/US2001/004763 patent/WO2001061563A1/en active Application Filing
- 2001-02-14 AU AU3826901A patent/AU3826901A/en active Pending
- 2001-02-14 AU AU2001238269A patent/AU2001238269B2/en not_active Ceased
Patent Citations (2)
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 |