JP5198294B2 - 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置 - Google Patents

時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置 Download PDF

Info

Publication number
JP5198294B2
JP5198294B2 JP2009000128A JP2009000128A JP5198294B2 JP 5198294 B2 JP5198294 B2 JP 5198294B2 JP 2009000128 A JP2009000128 A JP 2009000128A JP 2009000128 A JP2009000128 A JP 2009000128A JP 5198294 B2 JP5198294 B2 JP 5198294B2
Authority
JP
Japan
Prior art keywords
storage
data unit
storage system
host
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.)
Active
Application number
JP2009000128A
Other languages
English (en)
Other versions
JP2009134733A (ja
Inventor
キリアン マイケル
トッド スティーブン
トゥーゲルス トム
バン リール ヤン
カール、ダルイン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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
Application filed by EMC Corp filed Critical EMC Corp
Publication of JP2009134733A publication Critical patent/JP2009134733A/ja
Application granted granted Critical
Publication of JP5198294B2 publication Critical patent/JP5198294B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/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)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、記憶システムのコンテンツにアクセスする方法および装置に関する。
連想記憶装置(Content Addressed Storage, CAS)は、記憶システムに記憶されて
いるデータユニットがそのデータユニットのコンテンツから得られたアドレスを使用してアクセスされる技術である。一例として、データユニットを、そのデータユニットのコンテンツアドレスとして使用されるハッシュ値を生成するハッシュ関数への入力として与えることができる。コンテンツアドレスの生成に適したハッシュ関数の一例として、メッセージダイジェスト5(MD5)ハッシュアルゴリズムがある。ホストコンピュータが連想記憶装置に要求を送ってデータユニットを取り出す場合、そのホストは、データユニットのコンテンツアドレス(例えばハッシュ値)を与える。次に、記憶システムは、その記憶システムのデータユニットの物理的位置をコンテンツアドレスに基づいて算出し、その(物理的な)位置からデータユニットを取り出し、(取り出した)データユニットをホストコンピュータに返す。
データユニットの物理的位置を算出するタスクは、特にその記憶システムが分散型記憶システムの場合には、いくつかの態様を含むことができる。分散型記憶システムは、各ノードが個別のリソース(例えば、プロセッサ、メモリ、ディスク)を備えた個別のマシンでもよい、多くの個別のノードから構成されたシステムである。ノードは、互いに(例えば、ネットワークによって)通信し、1つまたは2つ以上のホストコンピュータからのデータアクセス要求を処理する。記憶システムのデータユニットの物理的位置をデータユニットのコンテンツアドレスに基づいて決定するために、記憶システムは先ず、そのデータユニットがどのノードに記憶されているかを算出する。次に、記憶システムは、データユニットが記憶されているディスクの物理的位置(例えばシリンダ、ヘッド、セクタ)のみならず、(ノードが複数のディスクを有している場合)データユニットがそのノードのどのディスクに記憶されているかを算出する。
図1に、分散型記憶システムの一実施例を示す。分散型記憶システムは、複数のアクセスノード(AN)101a、101b、…、101nと、複数のストレージノード(SN)105a、105b、105c、…、105nと、それらを相互に接続するネットワーク103とを含んでいる。アクセスノード101は、ホストコンピュータ(図示されない)からのアクセス要求(例えばリード/ライト要求)の処理に使用され、一方ストレージノード105はデータの記憶に使用できる。アクセスノードがホストから要求を受け取ってデータユニットを読み出す場合、そのアクセスノードは、データユニットがどのストレージノードに記憶されているかを算出し、データユニットを適切な1つまたは2つ以上のストレージノードから取り出すことを要求する。
どのストレージノードが特定のデータユニットを記憶しているかを算出する周知の方法の1つを、ここではマルチキャスト位置クエリ(MLQ)と呼ぶことにする。マルチキャスト位置クエリでは、アクセスノード101が、データユニットにアクセスする要求をホストから受け取る。次に、アクセスノードは、ネットワークメッセージを各ストレージノード105にブロードキャストし、ストレージノードが特定のデータユニットを記憶しているかどうかを問い合わせる。次に、各ストレージノード105は、要求されたデータユニットがそこに記憶されているかどうかを算出する。各ストレージノード105は、データユニットが記憶されているストレージノードのディスクと共に、そのストレージノード
に記憶されているデータユニットのコンテンツアドレスを記録しているデータセット(例えば、データベースまたは表)を含むことができる。すなわち、ストレージノードが4枚のディスクを有している場合、その表は、各データユニットが4枚のディスクのどれに記憶されているかを示すことができる。このように、ストレージノード105がMLQネットワークメッセージをアクセスノード101から受け取った場合、ストレージノードは、そのデータセットを細かく調べて、要求されたデータユニットがディスクに記憶されているかどうかを判断することができる。
一旦、ストレージノード105が、要求されたデータユニットをディスクが記憶していると判断すると、ストレージノードは、同じデータセットを使用してデータユニットが記憶されている物理ディスクを算出する。次に、ストレージノードは、データユニットが記憶されている適切なディスクの物理的位置を算出してもよい。データユニットは、ストレージノードのファイルシステムにファイルとして記憶されていてもよい。このように、データユニットの物理的なディスク位置を算出するために、ストレージノードは、データユニットを含んだファイルシステムの対応するファイルの位置を特定し、ファイルシステムの位置を物理的なディスク位置に、ストレージノードのオペレーティングシステムに基づいてマッピングできる。例えば、データユニットを記憶する場合、ストレージノードは、そのファイル名としてデータユニットのコンテンツアドレスを有するファイルを生成し、そのファイルにデータユニットを記憶することができる。
図2は、データユニットを分散型連想記憶装置に記憶するファイルシステムの説明図である。図2のファイルシステムは多くの階層ディレクトリを含んでいる。階層構造の最上位のディレクトリがルートディレクトリと呼ばれている。階層構造の第2のレベルには、多くのサブディレクトリがある。これらのサブディレクトリの各々は、データユニットのコンテンツアドレス中の第1番目の文字に相当する。すなわち、文字「A」で始まるコンテンツアドレスを有するデータユニットは、ディレクトリ「A」のサブディレクトリの1つに記憶される。データユニットが記憶されるサブディレクトリは、コンテンツアドレスの第2番目の文字に左右される。記憶システムが後でデータユニット(例えば、リード要求に応答して)へのアクセスを試みる場合に、記憶システムは、ファイルシステム階層構造をくまなく調査してデータユニットの位置を特定し、データユニットのコンテンツアドレスの最初の2文字と名前が一致するサブディレクトリの位置を特定することができる。記憶システムがそのファイルシステムのデータユニットの位置を特定すると、記憶システムはデータユニットを含んでいるファイルを開き、ストレージノードがそこに記憶されたデータユニットを実際に有していることを確認してもよい。次に、ストレージノードは、マルチキャスト要求を発行したアクセスノードに、データユニットを返すことができる。次に、アクセスノードは、データユニットをそのデータユニットを要求したホストに返すことができる。
MLQは、要求された各データユニットの完全なデータベース検索の実行を各ストレージノードに要求するので、計算に要する費用が高くつく処理である。さらに、データユニットは、通常1つまたは少数のストレージノード(データユニットが1つまたは2つ以上のストレージノードに複写されると仮定すると)にのみ存在するので、これらの全数検索の大半はヒットしない。
記憶システムのデータユニットの位置を特定するMLQの使用の計算に要する費用を低減するために、データユニットの位置を特定するインデックスを用いる他の技術が開発された。インデックスを、ここではデータユニットを意味する用語「ブロブ(blob)」によりブロブ位置検索(BLI)と呼ぶことにする。BLIは、データユニット(「ブロブ」)のコンテンツアドレスをコンテンツが記憶されている1つまたは2つ以上のストレージノードにマッピングするデータベースである。MLQスキームとほぼ同一手法で、デ
ータユニットは、選択されたファイルシステムの位置にデータユニットのコンテンツアドレスに基づいて記憶される。ただし、BLIの管理はストレージノード間で分割されるので、結果的に各ストレージノードはBLIの一部分の処理を行うことになる。したがって、データユニットを求めるアクセス要求は、すべてのストレージノードにブロードキャストされる必要がなく、要求されたデータユニットを含んだBLI部を管理している1つのストレージノードだけにブロードキャストされるだけでよい。
図3にBLIの構成を示す。BLIを管理する履行任務は、ストレージノード301、303、305、および307のすべてに平等に分割されている。ストレージノード301は、文字「A」−「F」で始まるコンテンツアドレスを含んだBLIの一部分を処理し、ストレージノード303は、文字「G」−「L」で始まるコンテンツアドレスを含んだBLIの一部分を処理し、ストレージノード305は、文字「M」−「R」で始まるコンテンツアドレスを含んだBLIの一部分を処理し、ストレージノード307は、文字「S」−「Z」で始まるコンテンツアドレスを含んだBLIの一部分を処理する。BLIの各部分は、記憶システムに記憶されている、指定された範囲内のあらゆるコンテンツアドレスのエントリを含み、対応するデータユニットがどのストレージノードに記憶されているかを示す。ストレージノードは、それぞれのストレージノードに記憶されているデータユニットのコンテンツアドレスを記憶しているローカルデータベース309、311、313、および315も有し、これらのコンテンツアドレスがストレージノードのどの物理ディスクに記憶されているかを示す。
アクセスノードは、BLIのどの部分が各ストレージノードによって管理されているかについての記録を保持している。したがって、アクセスノードがホストから要求を受け取り特定のデータユニットを検索する場合には、そのアクセスノードは、要求されたデータユニットのコンテンツアドレスを含んでいるBLI部をどのストレージノードが管理しているかを算出する。例えば、ホストが、「5」で始まるコンテンツアドレスを有するデータユニットを求めてアクセスノードに要求を送る場合、アクセスノードは、ストレージノード307に問い合わせて、どのストレージノードが要求されたデータユニットを記憶しているかを算出する。ストレージノード307はBLIを検索し、1つまたは2つ以上のどのストレージノードが要求されたデータユニットを記憶しているかを算出して、この情報を要求しているアクセスノードに返す。アクセスノードは、適切なストレージノードからデータユニットを直接要求することもできる。このように、データユニットを記憶していない他のストレージノードは問い合わせをされない。したがって、MLQとは異なり、各ストレージノードは、BLIを使用することでデータベースの全数検索を実行する必要がない。その代わりに、1つのストレージノードだけがBLIに問い合わせ、1つのストレージノードだけがそのローカルデータベースに問い合わせるので、記憶システム全体の計算に要する費用が低減される。
BLIが要求されたデータユニットをストレージノードに返せなかった場合、(すなわち、ホストから要求されたコンテンツアドレスがBLIに見つからなかった場合)、記憶システムはMLQスキームに戻り、MLQを発行して要求されたコンテンツアドレスに対応したデータユニットがどのストレージノードに存在するかを算出する。
BLI管理履行任務をストレージノード間に等しく分散することによって、特定のデータユニットを記憶システムに配置するための計算に必要な負担は、ストレージノード間で等しく共有される。コンテンツアドレスを生成するのに使用されるハッシュ関数のランダム性は、ほぼ等しい数のコンテンツアドレスを各ストレージノードに分散することに基づいている。新しいストレージノードが記憶システムに追加、またはストレージノードが記
憶システムから取り除かれる場合には、BLIの管理履行任務はストレージノード間で再配分され、その結果、管理履行任務は、すべてのストレージノード間で等しく共有される。さらに、新しいデータユニットが記憶システムに記憶された場合には、ストレージノードはBLIを更新し、データユニットが記憶されているストレージノードのローカルデータベースを更新して、記憶システムにコンテンツそのものを書き込む。この3段階の書き込みが、書き込み処理における記憶システムの性能に影響を与える。
1つの例証的実施形態は、少なくとも1つのホストと、少なくとも1つのホストのデータを記憶する少なくとも1つの記憶システムとを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)記憶システムで、少なくとも1つの記憶システムに記憶されているデータユニットにアクセスする少なくとも1つのホストからの要求を受け取る行為と、(b)その要求に応答して、少なくとも1つのホストにデータユニットが少なくとも1つの記憶システムのどこに物理的に記憶されているかについての情報を返す行為とを含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、少なくとも1つのホストを含むコンピュータシステムで使用され、少なくとも1つのホストのデータを記憶する記憶システムを対象とする。この記憶システムは、少なくとも1つのホストから受け取ったデータを記憶する少なくとも1つの記憶装置と、コンテンツアドレスを使用してデータユニットを特定する要求を連想記憶装置に記憶されたデータユニットにアクセスする少なくとも1つのホストから受け取り、その要求に応答して、少なくとも1つのホストにデータユニットが連想記憶装置のどこに物理的に記憶されているかについての情報を返す少なくとも1つのコントローラと、を有する。
本発明の他の例証的実施形態は、少なくとも1つのホストと、少なくとも1つのホストのデータを記憶する少なくとも1つの記憶システムとを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)少なくとも1つの記憶システムに、記憶システムに記憶されたデータユニットにアクセスする要求を送る行為と、(b)少なくとも1つの記憶システムから、データユニットが少なくとも1つの記憶システムのどこに物理的に記憶されているかについての情報を受け取る行為とを含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、少なくとも1つの記憶システムに記憶されたデータにアクセスするホストコンピュータと、少なくとも1つの記憶システムとを含むコンピュータシステムで使用されるホストコンピュータを対象とする。このホストコンピュータは、少なくとも1つの記憶装置と、少なくとも1つの記憶システムに、少なくとも1つの記憶システムに記憶されたデータユニットにアクセスする要求を送り、その要求に応答して、少なくとも1つの記憶システムからデータユニットが少なくとも1つの記憶システムのどこに物理的に記憶されているかについての情報を受け取り、その情報を少なくとも1つの記憶装置に記憶する少なくとも1つのコントローラと、を有する。
他の例証的実施形態は、少なくとも1つのホストと、少なくとも1つの記憶システムとを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)少なくとも1つの記憶システムで、データユニットへのアクセスに使用可能な識別子を有する要求をデータユニットにアクセスする少なくとも1つのホストから受け取る行為と、(b)その要求に応答して、少なくとも1つのホストに、データユニットへのアクセス
に使用可能な識別子、および、データユニットが少なくとも1つの記憶システムのどこに物理的に記憶されているかについての、識別子とは別の付加情報、を返す行為とを含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、記憶システムと、少なくとも1つのホストとを含むコンピュータシステムで使用される記憶システムを対象とする。この記憶システムは、少なくとも1つのホストから受け取ったデータを記憶する少なくとも1つの記憶装置と、少なくとも1つの記憶システムで、データユニットへのアクセスに使用可能な識別子を有する要求をデータユニットにアクセスする少なくとも1つのホストから受け取り、その要求に応答して、少なくとも1つのホストにデータユニットへのアクセスに使用可能な識別子、および、データユニットが少なくとも1つの記憶システムのどこに物理的に記憶されているかについての、識別子とは別の付加情報、を返す少なくとも1つのコントローラとを有する。
他の例証的実施形態は、少なくとも1つのホストと、少なくとも1つの記憶システムとを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)少なくとも1つの記憶システムに、データユニットへのアクセスに使用可能な識別子を有する要求を、データユニットにアクセスする少なくとも1つのホストから送る行為と、(b)少なくとも1つの記憶システムから、データユニットへのアクセスに使用可能な識別子、および、データユニットが少なくとも1つの記憶システムのどこに物理的に記憶されているかについての、識別子とは別の付加情報、を受け取る行為とを含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、ホストコンピュータと、少なくとも1つの記憶システムとを含むコンピュータシステムで使用されるホストコンピュータを対象とする。このホストコンピュータは、少なくとも1つの記憶装置と、少なくとも1つの記憶システムに、データユニットへのアクセスに使用可能な識別子を有する要求を、データユニットにアクセスする少なくとも1つのホストから送り、その要求に応答して、少なくとも1つの記憶システムから、データユニットへのアクセスに使用可能な識別子、および、データユニットが少なくとも1つの記憶システムのどこに物理的に記憶されているかについての、識別子とは別の付加情報、を受け取り、この付加情報を少なくとも1つの記憶装置に記憶する少なくとも1つのコントローラとを有する。他の例証的実施形態は、少なくとも1つのホストと、データユニットのコンテンツに基づいて生成されたコンテンツアドレスを用いて、少なくとも1つの記憶システムに記憶されたデータユニットにアクセスする少なくとも1つのホストのデータを記憶する少なくとも1つの連想記憶装置とを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)データユニットが記憶されている少なくとも1つの記憶システム内の記憶位置に、少なくとも1つのデータユニットのコンテンツアドレスをマッピングする少なくとも1つのインデックスを保持すること、(b)位置インデックスのキャッシュを保持することを含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、連想記憶装置と、データユニットのコンテンツに基づいて生成されたコンテンツアドレスを用いて、連想記憶装置に記憶されたデータユニットにアクセスする少なくとも1つのホストとを含むコンピュータシステムで使用される連想記憶装置を対象とする。連想記憶装置は、少なくとも1つのホストから受け取ったデータを記憶する少なくとも1つ記憶装置と、データユニットが記憶されている連想記憶装置内の記憶位置に、少なくとも1つのデータユニットのコンテンツアドレスをマッピングする少な
くとも1つのインデックスを保持するとともに、位置インデックスのキャッシュを保持する少なくとも1つのコントローラとを有する。
他の例証的実施形態は、少なくとも1つのホストと、データユニットのコンテンツに基づいて生成されたコンテンツアドレスを用いて、少なくとも1つの記憶システムに記憶されたデータユニットにアクセスする少なくとも1つのホストのデータを記憶する少なくとも1つの連想記憶装置とを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)コンテンツアドレスによって特定されたデータユニットを求める少なくとも1つのホストコンピュータからのアクセス要求に応答して、少なくとも1つの記憶システムのデータユニットの物理的な記憶位置の少なくとも1つの側面を算出するために、コンテンツアドレスをパーズする行為を含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、連想記憶装置と、データユニットのコンテンツに基づいて生成されたコンテンツアドレスを用いて、連想記憶装置に記憶されたデータユニットにアクセスする少なくとも1つのホストとを含むコンピュータシステムで使用される連想記憶装置を対象とする。連想記憶装置は、少なくとも1つのホストから受け取ったデータを記憶する少なくとも1つの記憶装置と、コンテンツアドレスによって特定されたデータユニットを求める少なくとも1つのホストコンピュータからのアクセス要求に応答して、少なくとも1つの記憶システムのデータユニットの物理的な記憶位置の少なくとも1つの側面を算出するために、コンテンツアドレスをパーズする少なくとも1つのコントローラとを有する。
他の例証的実施形態は、少なくとも1つのホストと、データユニットのコンテンツに基づいて生成されたコンテンツアドレスを用いて、少なくとも1つの記憶システムに記憶されたデータユニットにアクセスする少なくとも1つのホストのデータを記憶する少なくとも1つの連想記憶装置とを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)ホストから、データユニットのコンテンツに基づいたコンテンツアドレスを有するデータユニットを記憶システムに記憶する要求を受け取る行為と、(b)コンテンツアドレスに基づいて、コンテンツアドレスがマッピングする記憶システムの第1の記憶位置を算出する行為と、(c)第2の記憶位置を指し示す第1のデータユニットのポインタを第1の記憶位置に記憶する行為と、(d)データユニットを記憶システムの第2の記憶位置に記憶する行為とを含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、データユニットのコンテンツに基づいて生成されたコンテンツアドレスを用いて、連想記憶装置に記憶されたデータユニットにアクセスする少なくとも1つのホストを含むコンピュータシステムで使用される連想記憶装置を対象とする。連想記憶装置は、少なくとも1つのホストから受け取ったデータを記憶する少なくとも1つの記憶装置と、ホストから、データユニットのコンテンツに基づいたコンテンツアドレスを有するデータユニットを記憶システムに記憶する要求を受け取り、コンテンツアドレスがマッピングする記憶システムの第1の記憶位置をコンテンツアドレスに基づいて算出し、第2の記憶位置を指し示す第1のデータユニットのポインタを第1の記憶位置に記憶し、データユニットを記憶システムの第2の記憶位置に記憶する少なくとも1つのコントローラとを有する。
他の例証的実施形態は、少なくとも1つのホストと、データユニットのコンテンツに少なくとも一部分基づいたコンテンツアドレスを使用してデータユニットにアクセスする少
なくとも1つのホストのデータユニットを記憶している少なくとも1つの連想記憶装置とを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)どのデータユニットが時間的に近接して記憶システムに書き込まれたかについての指標を与える第1の情報を有するデータユニットのコンテンツアドレスを生成する行為を含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、データユニットのコンテンツに基づいて生成されたコンテンツアドレスを用いて、連想記憶装置のデータにアクセスするホストコンピュータと、連想記憶装置とを有するコンピュータシステムで使用されるホストコンピュータを対象とする。このホストコンピュータは、データユニットを生成する少なくとも1つのプロセッサと、どのデータユニットが時間的に近接して記憶システムに書き込まれたかについての指標を与える第1の情報を有するデータユニットのコンテンツアドレスを生成する少なくとも1つのコントローラとを有する。
他の例証的実施形態は、少なくとも1つのホストと、少なくとも1つのホストのデータユニットを記憶する少なくとも1つの連想記憶装置とを有するとともに、この少なくとも1つのホストが、データユニットのコンテンツに少なくとも一部分基づいたコンテンツアドレスを使用してデータユニットにアクセスし、この少なくとも1つの記憶システムが、データユニットが記憶されている少なくとも1つの記憶システム内の記憶位置にデータユニットのコンテンツアドレスをマッピングするインデックスを有するコンピュータシステムにおけるデータ処理方法を対象とする。この方法は、(a)少なくとも1つのホストから、データユニットの1つを記憶するという要求であって、データユニットに関連付けられたコンテンツアドレスでデータユニットの1つを特定する要求を受け取る行為と、(b)記憶位置のインデックスへのエントリが、データユニットの1つと時間的に近接して少なくとも1つの記憶システムに書き込まれた他のデータユニットのインデックスへのエントリに近接するように、データユニットの1つを選択された記憶位置に記憶する行為とを含む。他の例証的実施形態は、コンピュータシステムで実行される時に、上記方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体を対象とする。
さらなる例証的実施形態は、連想記憶装置と、データユニットのコンテンツに基づいて生成されたコンテンツアドレスを用いて、連想記憶装置に記憶されたデータユニットにアクセスする少なくとも1つのホストとを有するコンピュータシステムで使用される連想記憶装置を対象とする。連想記憶装置は、少なくとも1つのホストから受け取ったデータを記憶する少なくとも1つの記憶装置と、少なくとも1つの記憶システムに時間的に近接して書き込まれたデータユニットがインデックスへの近接したエントリを有するように、データユニットが記憶されている少なくとも1つの記憶システム内の記憶位置にデータユニットのコンテンツアドレスをマッピングするインデックスを保持した少なくとも1つのコントローラとを有する。
例証的な従来技術の分散型記憶システムのブロック図。 データユニットが従来技術の連想記憶装置に記憶されるファイルシステム階層構造の説明図。 従来技術の連想記憶装置において、複数のストレージノード間で共有されるブロブ位置インデックスを示すブロック図。 本発明の態様が実施可能な記憶システムおよびホスト構成を示すブロック図。 本発明の一実施形態による複数のストレージノードに割り当てられた固有の位置を示すブロック図。 本発明の一実施形態によるストレージノード内の複数の記憶装置に割り当てられた固有の位置を示すブロック図。 本発明の一実施形態によるデータユニットのコンテンツアドレスに追加される位置情報。
本発明の側面は、記憶システムのコンテンツにアクセスする改善された技術に関する。
本発明の一実施形態によれば、記憶システムは、記憶システム内に記憶されているデータユニットの記憶位置に関する手がかりをホストに提供できる。データユニットへの次のアクセス要求で、ホストは、位置の手がかりを記憶システムに返し、記憶システムがデータユニットの位置を容易に特定できるようにし、その結果、データユニットの位置を特定する際の記憶システムの効率を向上できる。
本発明の別の実施形態では、連想記憶装置が、データユニットが記憶される記憶位置に少なくとも1つのデータユニットのコンテンツアドレスをマッピングするインデックスを備えている。記憶システムは、位置インデックスのキャッシュを保持して、インデックス内に含まれる情報へのアクセス性能の向上を図る。
本発明のさらなる実施形態では、連想記憶装置のデータユニットにアクセスするホストからの要求の処理を容易にする技術が用いられる。この技術は、データユニットが記憶される物理的な記憶位置の少なくとも1つの側面を算出するために、コンテンツアドレスをパーズすることを含んでいる。データユニットを記憶可能な物理的な記憶位置の少なくとも1つの側面の決定要因であるコンテンツアドレスの少なくとも1つの側面を使用することによって、以下に説明するように、アクセス要求に応答してデータユニットの位置の特定を効率的に行うことができる。
本発明の他の実施形態では、コンテンツアドレスが、どのデータユニットが時間的に近接して記憶システムに書き込まれたかについての指標を与える情報を含むように、データユニットのコンテンツアドレスを生成する技術が用いられる。以下の説明から理解できると思われるが、時間的に近接して書き込まれた複数のデータユニットのコンテンツアドレスの少なくとも一部に類似性を有するコンテンツアドレスを与えることによって、ホストからのアクセス要求に応答してデータユニットの位置を特定する記憶システムの効率を向上させることができる。
上記の説明から当然理解されるように、本発明のいくつかの態様は、特に連想記憶装置に向けられている。しかし、これは、より広範な応用例を有する本発明の他の態様に対して正確とはいえない。したがって、以下に説明する特定の実施例は、特に連想記憶装置に関するものであるが、以下に説明する実施例を他の形態の記憶システムで使用することができるので、本発明のすべての態様がこの点だけに限定されているものではないことを理解されたい。
記憶システム407に接続されたホストコンピュータ401を示している図4に、本発明の態様が使用可能な例証的コンピュータシステムの構成を示す。
ホストコンピュータ401は、データユニットを読み出し/書き込みするアプリケーションプログラム403、および記憶システム407とのインタフェースに適応されるアプリケーションプログラミングインターフェース(API)405を実行する。ホスト401は、例えばリソース(例えばデータ記憶、電子メール、および他のサービス)を提供するサーバ、クライアント(例えばユーザによって操作される汎用コンピュータシステム)、ネットワーク構成要素(例えばスイッチ)、または他の形態のコンピュータであってもよい。ホスト401は、通信リンク404によって記憶システム407に接続されている
ので、ホスト401は記憶システム407をデータの記憶、検索に使用することができる。リンク404は、任意の形態のネットワークや直接接続を含むあらゆる形態の通信リンクであってもよい。アプリケーションプログラム403は、ホスト401のユーザまたは管理者が使用して、データを記憶システム407に、および/または記憶システムから取り出す任意のコンピュータアプリケーションプログラムであってもよい。アプリケーションプログラム403はAPI405とリンクされているので、アプリケーションプログラム403は、API405を使用して記憶システム407と通信することができる。
API405は、例えば、アプリケーションプログラム403のプログラマに提供されるコンピュータオブジェクトコードを含んでいてもよい。コンピュータオブジェクトコードは、記憶システムとの通信に使用可能なルーチンを含んでいる。アプリケーションプログラムは、API405とリンクされると、これらのルーチンを呼び出して記憶システム407と通信することができる。API405はアプリケーションの任意の数とリンク可能なので、記憶システム407が通信する(のに使用する)内部プロトコルからアプリケーションプログラム403のプログラマを保護している。多くの方法のいずれにおいても、ホストと記憶システム間のインタフェースの性質は実現可能であり、かつ本発明はいかなる特定の実施例の技術にも限定されていないので、ここに説明した本発明の態様は、ホスト401と記憶システム407間の通信を容易にすることに特に供するホストでAPIを使用するシステムにおいて限定的に使用されるものではないことは理解されたい。1つの別の実施例として、アプリケーションプログラム403は、記憶システム407と直接通信するようにカスタマイズすることができる。
本発明の一実施形態において、記憶システム407は、共通して同時係属中の出願に付された、1999年1月21日に出願の「連想情報のカプセル化、表現、および転送」と題する、出願番号第09/236,366号(applications serials no. 09/236,366, entitled ”Content Addressable Information Encapsulation, Representation, and Transfer”, filed January 21, 1999)、1999年1月21日に出願の「ネットワーク上の連想データへのアクセス」と題する、出願番号第09/235,146号(applications serials no. 09/235,146 entitled ”Access to Content Addressable Data Over A Network”, filed January 21, 1999)、1999年9月7日に出願の「連想情報を安全に記憶、転送、および取り出すシステムとその方法」と題する、出願番号第09/391,360号(applications serials no.
09/391,360, entitled System and Method for Secure Storage, Transfer and Retrieval of Content Addressable Information, filed September 7,1999)、1999年9月7日に出願の出願番号がまだ付与されていない「記憶システムにおいてデータを保持する方法およびその装置」(application entitled ”Method And Apparatus For Data Retention In A Storage System”, filed on even date herewith)、そしてそのそれぞれが参照によってここに組み込まれている出願において説明されている形態の連想記憶装置(CAS)であってもよい。
これらのアプリケーションは連想記憶装置(CAS)に関するものであり、「CASアプリケーション」と総称されている。上記のごとく、連想(記憶)装置では、データは、データのコンテンツそれ自身に基づいて生成されたコンテンツアドレスを使用して記憶される。コンテンツアドレスは、記憶されるデータにハッシュ関数を適用することによって生成することができる。ハッシュ関数の出力をホストと記憶システム間の通信に使用される
コンテンツアドレスの少なくとも一部として使用してデータを参照することができる。コンテンツアドレスは、記憶システム内の1つまたは2つ以上の物理的な記憶位置にマッピングすることができる(例えば記憶システム407内に)。
コンテンツアドレスを生成するために使用できるハッシュ関数の1つの例は、メッセージダイジェスト(MID)である。コンテンツアドレスは、コンテンツのハッシュの結果に直接対応させることができ、または付加情報をハッシュの結果に追加してアドレスを生成することもできる。ここに説明した本発明の態様は、ハッシュ関数のいずれかの特定の形態を使用するようには限定されておらず、またいくつかの態様は連想(記憶)装置に使用することすら限定されていないので、任意の形態のハッシュ関数が使用されてもよいことは理解されたい。
本発明の一実施形態において、保証された一意な識別子(GUID)を1つまたは2つ以上のハッシュの結果に追加して、データユニットのコンテンツアドレスの一意性を確保してもよい。GUIDは、コンテンツアドレス、タイムスタンプ、および乱数を生成する、例えばホストコンピュータのMACアドレスに基づいて、または他の適切な方法で生成することができる。本発明の実施形態に使用可能なGUIDを生成する1つの実施例は、国際標準化機構(ISO)仕様書ISO/JEC 11578:1996(International Standards Organization (ISO) specification ISO/JEC 11578:1996)に記載されている。
ホストが記憶されるべきデータを記憶システムに送った時、ホストと記憶システムの両方は、独立してデータのコンテンツアドレスを算出することができる。ホストは、記憶システムからデータを取り出すために今後使用するコンテンツアドレスを保持してもよい。別の選択肢として、記憶システムのみがコンテンツアドレスを算出し、後でデータへのアクセスの際に使用できるように算出されたコンテンツアドレスをホストに返してもよい。また別の選択肢として、記憶システムとホストの両方が、コンテンツアドレスを算出して、記憶システムがその生成されたコンテンツアドレスをホストに返すこともできる。ホストは、その独立して算出されたコンテンツアドレスを、記憶システムから受け取った1つと比較して、それらが一致していることを確認してもよい。
図4の例証的構成において、記憶システム407は、複数のアクセスノード409a、409b、409c、および409dと、複数のストレージノード411a、411b、411c、および411dとを含む分散型記憶システムである。アクセスノード409とストレージノード407は、TCP/IPネットワークプロトコールを使用している通信ネットワーク(図示されない)のような、任意の適切な方法で接続することができる。本発明の態様はこの点で限定されるものではないが、各アクセスノード409およびストレージノード411は、独立したハードウェアおよびソフトウェアリソース(すなわち1つまたは2つ以上のプロセッサ、メモリ、ディスクリソース、オペレーティングシステム、記憶システムソフトウェア)を有する、例えば個別のコンピュータであってもよい。
上記のごとく、ホストコンピュータ401は、アクセスノード409の1つにアクセス要求(例えばリード、ライト、または他の要求)を発行する。ライト要求の場合には、アクセスノード409は、ホストコンピュータからライト要求(およびライトされるデータ)を受け取り、ストレージノード411を選択してデータを記憶し、データを記憶用のストレージノードに送る。いくつかの実施形態では、アクセスノード409は、任意の適切な方法でストレージノード411を選択することができる。例えば、アクセスノード409は、負荷平衡スキームを使用してデータをストレージノード間で等しく分散することができ、またはアクセスノード409は異なった選択技術を使用することもできる。図2に関して上に説明したように、データユニットを記憶する場合、ストレージノードは、その
ファイル名として、データユニットのコンテンツアドレスを有するファイルを生成し、そのファイルにデータユニットを記憶することもできる。
リード要求の場合には、アクセスノード409は、ホストコンピュータから要求を受け取り、要求データがどのストレージノード411に記憶されているかを算出し、適切なストレージノード411から要求データを取り出し、(取り出した)要求データをホストコンピュータに返すことができる。記憶システムの任意の適切な構成を使用することができるので、ここに説明した本発明の態様は、この構成または他の特定の構成に限定されるものではない。例えば、アクセスノードにストレージノードから要求データを取り出させて、ホスト401に(その要求)データを転送させるよりもむしろ、アクセスノードがデータをホスト401に直接返すようにストレージノードに単に示すような記憶システムを代わりに構成することもできるであろう。
ストレージノード411は、アクセスノード409からリード/ライト要求を受け取り、これに応答してデータを取り出し、記憶することができる。それゆえ、ストレージノード411は、データユニットが記憶される1つまたは2つ以上の記憶装置(例えばディスクドライブまたは他の形態の記憶装置)を含んでいてもよい。アクセスノード409は、アクセスノード409とストレージノード411が同一の(またはほぼ同一の)、または異なったハードウェア構成を有するように1つまたは2つ以上の記憶装置を含むこともできることは理解されたい。
図4に4つのアクセスノードと4つのストレージノードを有する記憶システムを示す。ただし、記憶システムは、任意の適切な数のアクセスノードおよび任意の適切な数のストレージノード(アクセスノードの数と異なってもよい)を含むことができ、この点で本発明は任意の特定の方法で構成された記憶システムに使用するように限定されているものではないので、この構成は単に実例にすぎないことを理解されたい。
さらに、図4の実施例は、ホストコンピュータが記憶システムにアクセスするために通信するアクセスノードと、データユニットを記憶するストレージノードとを含んでいるが、本発明はこの点で限定されるものではないことを理解されたい。例えば、記憶システムは、双方がホストコンピュータと通信し、データユニットを記憶するノードを含むことができる。すなわち、1つまたは2つ以上のノードは、ストレージノードとアクセスノード両方の役目をすることもできる(少なくとも一部分)。
位置の手がかり
本発明の一実施形態において、記憶システムは、記憶システムへのアクセスの効率を向上させるために、ホストに位置の手がかりを与えることができる。位置の手がかりは、記憶システムからホストに提供され、特定のデータユニットが記憶システムのどこに記憶されているかに関する情報である。次に、位置の手がかりの中で提供された情報を、データユニットを求める今後のアクセス要求と共にホストから記憶システムに戻し、記憶システムはその情報を使用して、データユニットへの効率的なアクセスを可能にする。特定のデータユニットを求める位置の手がかりは、データユニットが記憶されているストレージノードに関する情報、(例えばデータユニットを記憶しているそのストレージノードの物理的な記憶装置、その物理的な記憶装置にそのデータユニットを含むファイルのファイルシステムの位置、データユニットが記憶されている物理的な(記憶)装置の位置、またはその任意の組み合わせ)を含んでいてもよい。さらに、データユニットの物理的な記憶位置の1つまたは2つ以上の側面を直接特定する情報とは全く異なり、位置の手がかりの中で提供される情報は、データユニットが他の方法で物理的にどこに記憶されているかに関するものであってもよい。例えば、記憶システムは、データユニットの物理的な記憶位置のインデックスを含むことができ、またホストに提供される位置の手がかりは、このインデックスに鍵を与えることもできるであろう。したがって、位置の手がかりの中で提供され
る情報は、データユニットが任意の適切な方法で物理的にどこに記憶されているかに関するものであってもよい。
本発明はこの点で限定されるものではないので、記憶システムは、種々方法の任意の1つによってホストに位置の手がかりを与えることができる。例えば、データユニットを書き込むホストコンピュータからのライト要求に応答して、記憶システムは、データユニットの位置の手がかり情報を返すことができる(例えばトークンとして、または任意の形態で)。位置の手がかりは、ライト要求に応答してホストに返される唯一の情報であってもよく、または、それは、ライト要求に応答してホストに返される他の情報と共にホストに返されてもよい。例えば、一実施形態において、記憶システムは、データユニットに対応するコンテンツアドレス(例えばMD5ハッシュ値)を返すことによってライト要求に応答し、その結果、ホストは、記憶システムがコンテンツアドレスを正しく算出したことを確認することができる。一実施形態において、ライト要求に応答してホストにコンテンツアドレスを返す場合、図4の406に概念的に示すように、記憶システムは、位置の手がかりを送ることもできる。
記憶システムは、リード要求に応答して、ホストに位置の手がかり情報を提供することもできる。例えば、記憶システムが要求されたデータユニットをホストに返す場合、記憶システムは、要求されたデータユニットの位置の手がかり情報を送ることもできる。
記憶システムは、問い合わせ要求または他の形態の要求に応答して、ホストに位置の手がかり情報を提供することもできる。問い合わせ要求は、ホストがデータユニットをそのデータユニットに関する情報に基づいて要求できる記憶システムへの要求である。このような情報は、例えばデータユニットが記憶システムに記憶される時間、CDFに記憶されているメタデータの一部、部分的なコンテンツアドレス、または他の適切な情報であってもよい。
例えば、記憶システムにコンテンツアドレスを与える代わりに(通常のリード要求でのように)、ホストは、記憶システムに時間範囲(例えば開始時刻と終了時間)を与えてもよい。これに応答して、記憶システムは、時間範囲で示された期間中、記憶システムに記憶されていたデータユニットに対応するコンテンツアドレスのリストをホストに返す。記憶システムは、問い合わせ要求に応答して特定された各(データ)ユニットの位置の手がかり情報をホストに送ってもよい。ホストは、問い合わせ要求に応答して記憶システムによって返された少なくともいくつかのコンテンツアドレスのリード要求を発行することが想定されるので、問い合わせ要求に応答して位置の手がかりを与えることは有用かもしれない。ホストが、これらのコンテンツアドレスに対応するデータユニットの位置について記憶システムに知らせることができる場合(すなわち位置の手がかりから)、記憶システムのデータユニットの位置を特定するのに費やされる記憶システムの計算上のリソース(および時間)を低減することができる。
上記のごとく、問い合わせ要求で記憶システムに提供できる情報は、時間範囲に限定されるものではない。情報は、CDFに記憶されているメタデータの一部、部分的なコンテンツアドレス、または他の適切な情報を付加的にまたは代替的に含んでいてもよい。例えば、問い合わせ要求が、CDFに記憶されているメタデータまたは部分的なコンテンツアドレスを含んでいる場合、記憶システムは、指定されたメタデータまたは部分的なコンテンツアドレスを含んだいかなるCDFのコンテンツアドレスをも返すことができる。
本発明はこの点で限定されるものではないので、ホストは、種々方法のいずれでも記憶システムから受け取った位置の手がかり情報を使用することができる。上記のごとく、ホストで実行するアプリケーションプログラム403(図4)は、API405によって記
憶システムと通信することができる。APIが記憶システムから位置の手がかりを受け取ると(例えばリード、ライト、問い合わせ要求、または他のアクセス要求に応答して)、APIは、アプリケーションプログラムに位置の手がかりを与えることができる。次に、アプリケーションプログラムは、位置の手がかり情報を対応するコンテンツアドレスにそれを関連づける方法で記憶してもよい。したがって、次にアプリケーションプログラムがそのコンテンツアドレスに対応するデータユニットにアクセスを要求する時(すなわちAPIを通して)、アプリケーションプログラムは、コンテンツアドレスと共に位置の手がかり情報を提供することができる。一方、アプリケーションプログラムに位置の手がかり情報を渡す代わりに、APIは、位置の手がかり情報を自分自身で記憶してもよい。したがって、APIは、所望のデータユニットのコンテンツアドレスを含む要求と共に、アプリケーションプログラムから記憶システムのデータユニットにアクセスする要求を受け取ることができる。APIは、それがそのコンテンツアドレスに対応する位置の手がかりを記憶しているかどうかを判断することができる。記憶している場合には、APIはアクセス要求と共に位置の手がかりを記憶システムに提供してもよい。
ホスト(例えばAPIまたはアプリケーションプログラム)は、任意の適切な方法で位置の手がかり情報を記憶してもよい。一実施形態において、ホスト(例えばAPI)は、性能的理由により、記憶されている位置の手がかりおよびそれに対応するコンテンツアドレスのキャッシュを保持している。キャッシュが一杯の場合、APIまたはアプリケーションプログラムは、最低使用頻度の交換スキーム、最後に使用された交換スキーム、または他の適切なキャッシュ交換スキームを使用して、キャッシュの項目を交換することができる。
ホストコンピュータが位置情報の記録を保持しアクセスするので、位置の手がかりの使用により記憶システムのデータ位置を特定する計算上の負担のいくらかが、記憶システムからホストに移ることは理解されたい。記憶システムにアクセス要求を発行すると、ホストコンピュータはこれらの記録を検索し、可能ならば記憶システムに位置情報を提供する。これによって、記憶システムは、記憶システムの記録の少なくともいくらかの検索を回避し、記憶されているデータユニットの物理的な(記憶)位置を算出することができる。他の実施形態では、ホストは、それが記憶システムから受け取るどんな位置の手がかりについても全く無視することができる。すなわち、ホストは、データの位置を特定する計算上の負担を少しも負わないことを選択し、記憶システムに頼ってコンテンツの位置を特定してもよい。
他の実施形態では、位置の手がかりの使用は、機能をオン/オフできるようなオプション機能としてホストに提供される。
本発明は、いかなる特定の実施例の技術にも限定されていないので、位置の手がかり情報は、多数の方法のいずれかで記憶システムによって算出することができることは理解されたい。図4に示す構成を有する記憶システムを使用する本発明の一実施形態によれば、提供される位置情報のグラニュラリティ次第で、アクセスノード409、および恐らくストレージノード411も位置情報を生成することができる。この点でおよび上記のごとく、本発明はこの点で限定されるものではないので、位置情報は、多数のレベルのグラニュラリティのいずれでも提供できる。例えば、位置情報は、どのアクセスノードが物理的な記憶位置へのアクセスを制御するかに関するだけの手がかりを与えることができ、または、データユニットを記憶する特定のストレージノードに関する付加情報を提供することができる。同様に、この情報が、単にストレージノードを特定することができ、または代わりにより記述的になって、ファイルシステムの位置およびデータユニットが記憶されている随意の特定の記憶装置(例えばディスクドライブ)も特定することができるので、データユニットを記憶している特定のストレージノードに関する情報も、多数のレベルのグラニュラリティで与えることができる。データユニットへのアクセスの結果の時点で、記憶
システムは物理的な記憶位置を算出する処理を終え、ホストへの手がかりの中で提供できるこの情報を有するので、アクセス要求に応答して、記憶システムが位置情報を生成することはかなり簡単な処理であることは理解されたい。例えば、本発明の一実施形態において、データユニットがアクセスされると、データが記憶されているストレージノードは、適切なアクセスノードにデータが記憶されているファイルシステムおよびディスクドライブを特定し、次に、アクセスノードは、この情報を上記の位置の手がかりの形式でホストに渡す。本発明のこの態様は、アクセスノードおよびストレージノード構造を用いない構成を含む多数の他の形態の記憶システムの構成と共に使用できるので、グラニュラリティのレベルおよび位置情報が生成される方法は、ここに説明している実施例に限定されるものでも、図4に示す構成の形態を有する記憶システムに限定されるものでもないことは理解されたい。
位置の手がかりが使用されない(すなわち、機能がオフに設定されている)場合、またはホストが特定のデータユニットの位置情報を持っていない場合、記憶システムは、マルチキャスト位置クエリ、BLIルックアップまたは他の適切な技術を使用してデータの位置を特定することができる。さらに、いくつかの状況では、位置の手がかりは、記憶システムのコンテンツの位置を正確に特定しないかもしれない。例えば、ホストが位置の手がかりを受け取った後、記憶システムが新しい位置にコンテンツを移した場合に、このような状況が発生するかもしれない。位置の手がかりが記憶システムのコンテンツの正確な位置を特定しない場合、記憶システムは、MLQ、BLIルックアップ、または他の適切な技術のようなコンテンツの位置を特定する他の方法を使用することができる。
BLIキャッシング
本発明の一実施形態において、記憶システムは、周知のシステムに関連して上記のBLIの方法で動作するブロブ位置インデックス(BLI)と呼ばれるデータセット(例えばデータベース)を保持している。一実施形態において、BLIを管理する履行任務は、各々が責任を負うべき指定された範囲のアドレス(例えばコンテンツアドレス)と対応するデータユニットがどこに記憶されているかを特定するその範囲のアドレスのインデックスを有するストレージノード411(図4)間で分散される。BLIそれ自体も(管理履行任務に加えて)記憶システムの複数のノード間で分散されてもよい。BLIへのアクセスの効率を向上させるために、BLIの一部は、本発明の一実施形態によるキャッシュ(メモリ)に入れられる。ブロブ位置インデックスは、記憶システムに記憶されたデータユニットのために、データユニットに対応するコンテンツアドレスをデータユニットが記憶されているストレージノードにマッピングするデータベース(または他のデータセット)であってもよい。BLIは、1つのストレージノードにそれ全体が記憶されてもよいし(1つまたは2つ以上の他のストレージノードに随意に映されて)、または上記のごとく2つまたは3つ以上のストレージノード間で分散されてもよい。特定のアドレスへのアクセス要求に応答して、要求を受け取ったアクセスノード409は、そのアドレスを含んでいるBLIの一部を管理するストレージノード411にその要求を導くと、そのBLIが適切なストレージノードによって読み出され、記憶システムの要求されたデータのユニットの位置が算出される。
BLIの単一の部分の管理は、2つ以上のストレージノードで共有されてもよく、その場合、アクセスノード409は、このような要求をBLIのその部分を管理している1つまたはすべてのストレージノードに導くことができるということは理解されたい。
本発明はこの点で限定されるものではないので、本発明のいくつかの実施形態において、BLIの記憶またはBLIの管理は、アクセスノードとストレージノードの両方、またはアクセスノード単独で実行されることも理解されたい。BLIの一部をキャッシュに入れるために以下に説明する技術は、アクセスノードとストレージノードの両方に同じように適用できることをさらに理解されたい。
従来技術のシステムにおいて、BLIは、主記憶システムよりもアクセスが遅い補助記憶システム(例えば磁気ディスク)に記憶される。アクセス要求がBLIにエントリのない新しいデータユニットのライト要求の場合、BLIは、新しく記憶されるデータのコンテンツアドレスとストレージノード位置とを含むように更新される。記憶システムは、書き込みが成功裡に完成したことをホストに示す前に、BLIが更新されるのを待つ。更新されるBLIの一部が、まだストレージノードの主記憶システムにない場合、BLIを更新するストレージノードは、ディスクリードを実行してBLIを主記憶システム(すなわちRAM)に読み込み、主記憶システムのBLIを更新し、次に、ディスクライトを実行してディスクに最新のBLIを書き込む。したがってアプリケーションプログラムの観点から、ライト要求が発行された時間から、記憶システムが書き込みの成功を確認して書き込まれたデータのコンテンツアドレスを返す時間までにある待ち時間があり、BLIが更新されるまで確認が返されない場合にはこの待ち時間は増加する。
本発明の一実施形態によれば、記憶システムは、主記憶システム(例えばRAM)にBLIキャッシュを保持しアクセス性能の向上をもたらす。例えば、ライト要求に応答して、記憶システムは、主記憶システムのBLIキャッシュに新しいエントリを書き込み、書き込みが成功裡に終わったことを要求ホストに応答する。BLIキャッシュのコンテンツは、ディスクのBLIに後でデステージすることができる。その結果、BLIの更新によって生じた待ち時間は短くなる。
BLIキャッシュは、記憶システム対するリードアクセスの効率も向上させる。リード要求が受け取られると、記憶システムは、BLIキャッシュを検索して、要求されたデータのユニットの位置がBLIキャッシュに記憶されているかどうかを判断する。記憶されている場合には、BLIのディスクリードの必要性はなくなる。
本発明は、いかなる特定の実施例の技術にも限定されていないので、BLIキャッシュは、任意の適切な方法で配置、記憶することができる。例えば、BLIが単一のストレージノードに完全に記憶される場合、BLIキャッシュは、同一のストレージノードに完全に保持されても、または複数のストレージノード間で分散されてもよい。同様に、BLIが複数のストレージノード間で分散される場合には、1つのストレージノードがBLIキャッシュを記憶するために使用されてもよく、または各ストレージノードが、そのストレージノードによって記憶されたBLIの一部に対応するBLIキャッシュ(図4の412a−d)の一部を記憶することができるであろう。
BLIキャッシュは、記憶システムのどこであってもその位置を特定できおよび/または任意の方法で記憶システム間に分散できるので、上記のBLIキャッシュの位置は、BLIの対応するエントリと同一のマシンにあることに必ずしも限定されていない分散型BLIキャッシュのエントリを持つ実施例としてだけ与えられていることは理解されたい。本発明はこの点で限定されるものではないので、BLIキャッシュは、任意の適切な方法でBLIにデステージできることをさらに理解されたい。例えば、BLIキャッシュが一杯の場合は常に、BLIキャッシュのエントリは、任意の適切な交換アルゴリズムに応じてBLIにデステージすることができる。別の選択肢として、BLIキャッシュエントリは、記憶システム内の軽いプロセッサ使用の期間中BLIにデステージすることもできる。また別の選択肢として、時間の指定期間が経過した後、BLIキャッシュエントリをBLIにデステージすることもできる。
一実施形態において、アクセスノードは、ストレージノードにBLIキャッシュエントリを記憶する代わりにまたはその記憶に加えて、BLIエントリをキャッシュに入れることもできる。アクセスノードがホストからのライト要求を処理する場合、アクセスノード
は、データが書き込まれるストレージノードを選択し、それで、アクセスノードは、新しく書き込むデータのコンテンツアドレスと共にこの情報を有し、そのBLIキャッシュにその情報を追加することができる。一実施形態において、ストレージノードは、新しく書き込まれたデータを記憶した後、データが記憶されているストレージノードのファイルシステムおよびディスクに関する情報をアクセスノードに返して、この情報をアクセスノードのキャッシュエントリに追加することもできる。BLIキャッシュエントリは、代わりに、データユニットが記憶されているストレージノードのみを特定することができるので、本発明がこの点で限定されるものではないことは理解されたい。
アクセスノードは、リード要求を受け取ると、そのBLIキャッシュの要求されたコンテンツアドレスを検索することができる。キャッシュヒット(すなわち、コンテンツアドレスがキャッシュで見つかる)がある場合には、アクセスノードがそれ自身のBLIキャッシュから要求されたデータユニットの記憶位置を算出するので、アクセスノードは記憶システムのBLIに問い合わせる必要はない。したがって、要求されたデータユニットを返す応答時間をさらに短縮することができる。
アクセスノードのBLIキャッシュは、ストレージノードのBLIキャッシングに他のレイヤがあっても、なくても使用できることは理解されたい。上記のごとく、BLIは、コンテンツアドレスを、それらのコンテンツアドレスに対応するデータユニットを記憶するストレージノードにマッピングすることも理解されたい。ただし、本発明はこの点で限定されるものではないので、BLIは、特定の物理ディスク装置および/またはデータユニットのファイルシステムの位置に関する情報も含んでいてもよい。
一実施形態において、BLIキャッシングは、機能をオン/オフできるようなオプション機能として記憶システムのユーザに提供される。
上記のごとく、新しいデータユニットが記憶システムに書き込まれると、ストレージノードにデータを書き込み、データユニットがどこに記憶されているかに関係する記憶システムのメタデータを更新することに加えてBLIキャッシュを使用する実施形態では、BLIキャッシュも同様に更新することができる。さらに上記のごとく、記憶システムの多数の領域を更新することは、ライト要求が処理されたという確認が記憶システムからホストに送られる時間の点から、ある待ち時間を提供するかもしれない。本発明の一実施形態によれば、データユニットのBLIキャッシュへのエントリを有しないことは、データユニットへの今後のアクセスの遂行にのみ影響を与えるが、データユニットが記憶システムによってアクセスされることは排除しないので、その確認がホストに提供された後、BLIキャッシュへの書き込みを行うことができる。本発明のさらなる実施形態では、任意の適切なエントリがBLIに書き込まれる以前でさえ、書き込み性能をさらに改善するための確認も与えることができる。この点において、本発明の一実施形態によれば、アクセス要求が受け取られてデータが読み出されたが、対応するエントリがBLIに提供されていない場合、記憶システムは、データユニットを求めるマルチキャスト位置クエリを発行して、データユニットがストレージノードのいずれかに記憶されているかどうかを確かめてもよいことは理解されたい。したがって、本発明のこの実施形態によれば、それらがBLIに対応するエントリを含んでいなくても、記憶システムはデータユニットの位置を特定することができる。図4に示す構成を有する連想記憶装置の位置インデックスをキャッシュに入れることを実現する上記の説明は、単に例証的目的に提供されるだけであり、しかも、本発明はこの点で限定されるものではないことは理解されたい。連想記憶装置の位置インデックスのキャッシュの使用に関する本発明の態様は、図4に示すアクセスノード/ストレージノード構成とは別の構成を有する記憶システムで使用することができる。
さらに、位置インデックスをキャッシュに入れることと、ホストコンピュータに渡すことができる位置の手がかりを使用することに関する本発明の態様は相互排他的ではなく、
しかも、これらの2つの機能は、ともに単独で使用することができることを理解されたい。
固有の位置
代替の実施形態は、コンテンツアドレスの少なくとも一部を使用して、記憶システムのデータユニットの記憶位置の少なくとも1つの側面の算出する技術を用いる(ここでは固有の位置と呼ぶ)。図5に固有の位置を使用した例証的記憶システム507を示す。記憶システム507は、複数のアクセスノード503a、503b、503c、複数のストレージノード505a、505b、505c、505d、505e、505fを含んでいる。ストレージノードは、ストレージノードの各グループがコンテンツアドレスの一範囲に割り当てられるようにグループに分割されてもよい。図5の実施例において、ストレージノード505aおよび505bは、文字「A」−「I」で始まるコンテンツアドレスを割り当てられ、ストレージノード505cおよび505dは、文字「J」−「R」で始まるコンテンツアドレスを割り当てられ、ストレージノード505eおよび50Sfは、文字「S」−「Z」で始まるコンテンツアドレスを割り当てられている。図5では、ストレージノードの各グループは、2つのストレージノードを含んでいる。ただし、1つのストレージノードグループは、単に1つのストレージノードを含んでいても、または3つ以上のストレージノードを含んでいてもよいことは理解されたい。さらに、ストレージノードの各グループは、等しい数のストレージノードを含んでいる必要はない。一実施形態において、ストレージノードの各グループは、コンテンツアドレスのその割り当てられた範囲に対応するデータユニットを記憶する。アクセスノード503は、コンテンツアドレスのどの範囲がストレージノードの各グループに割り当てられるかについての情報を保持し、そのため、アクセス要求に応答して、データユニットにアクセスする適切なストレージノードを選択することができる。
例えば、アクセスノード503aが、ホスト501aからコンテンツアドレスが文字「J」で始まるデータユニットを書き込む要求を受け取ると、そのアクセスノードは、ストレージノード505cまたは505dのいずれかを選択してデータを記憶する。一実施形態において、アクセスノード503aは、これらの2つのストレージノードの1つを、コンテンツアドレスの他の部分に基づいて選択する。例えば、アクセスノード503aは、コンテンツアドレスの第2番目の文字を調べて、選択されたグループ内の適切なストレージノードを選択する。例えば、ストレージノード505eは、コンテンツアドレスが「A」−「M」の第2番目の文字を有するデータユニットを記憶し、ストレージノード505dは、コンテンツアドレスが「N」−「Z」の第2番目の文字を有するデータユニットを記憶してもよい。本発明はこの点で限定されるものではないので、コンテンツアドレスの任意の1つまたは2つ以上の文字が、複数のストレージノードのグループ内の適切なストレージノードを選択するために使用されてもよいことは理解されたい。
一旦、アクセスノード503aが、ストレージノードを選択してデータユニットを記憶すると、選択されたストレージノードは、データユニットを記憶する物理的な記憶装置(例えばディスク)を選択することができる。図6に、4つの物理的な記憶装置、603a、603b、603c、および603dを有するストレージノード601を概念的に示す。ストレージノード601は、これらの記憶装置の1つを選択し、データユニットをコンテンツアドレスの1つまたは2つ以上の文字に基づいて記憶することができる。例えば、ストレージノード601は、コンテンツアドレスの第3番目の文字に基づいて、記憶装置603の1つを選択することができる。コンテンツアドレスの第3番目の文字が「A」−「F」の場合、記憶装置603aがデータを記憶することができる。第3番目の文字が「G」−「L」の場合、記憶装置603bがデータを記憶することができる。第3番目の文字が「M」−「R」の場合、記憶装置603cがデータを記憶する。第3番目の文字が「S」−「Z」の場合、記憶装置603dがデータを記憶する。
データユニットの物理的な記憶位置(例えばストレージノードおよび記憶装置)を、データユニットのコンテンツアドレスに基づいて選択することによって、アクセスノードは、データベースルックアップまたはマルチキャスト位置クエリを行わずに、後で物理的な記憶位置を算出することができる。すなわち、アクセスノードは、コンテンツアドレスを簡単に調べるだけで、データユニットの位置をコンテンツアドレスに基づいて算出することができる。
上記の例証的実施例は、固有の位置技術を用いて、そのコンテンツアドレスに基づいて、データユニットが記憶されているストレージノードだけでなく、そのノード内のファイルシステムおよび記憶装置も算出するが一方、他にではなくデータユニットの物理的な記憶位置のいくつかの態様のみを算出するのに固有の位置技術を使用することができるので、固有の位置の使用に関する本発明の態様は、この点で限定されるものではないことを理解されたい。例えば、この固有の位置技術は、データユニットが記憶されているストレージノードのみを選択するのに、その代替として使用できるので、ストレージノードを算出するルックアップまたはブロードキャストクエリを実行する必要性をそれによってなくすことができるが、しかしデータユニットが記憶されているファイルシステムおよび/または物理的な記憶装置の算出は、上記のインデクシング技術の使用によることを含む他の方法で実行することができる。
出願人らは、そのコンテンツアドレスに基づいた固有の位置技術を用いて、データユニットをそのデータユニットを求めるために指定された特定の物理的な記憶位置に記憶しないことが望ましいかもしれないことをいくつかのデータユニットで理解したので、出願人らは、このようなデータユニットを扱う技術を発展させた。これは、多くの理由のいずれか、特に大きなデータユニットがある例で発生する場合がある。大きなデータユニットでは、固有の位置技術によって実行されたマッピングによって、データを指定された物理的な記憶位置に記憶する余地がないかもしれないし、または負荷平衡のためにそのデータをどこか他のところに記憶することが望ましいかもしれない。さらに、記憶システムに特に大きなデータユニットを書き込むいくつかのアプリケーションプログラムは、書込み操作がコンテンツアドレスの算出前にデータユニットに対して始まるように、コンテンツアドレスを全体のデータユニットに基づいて生成する前に書き込み操作の開始を望んでもよい。したがって、固有の位置技術が使用されると、データユニットが記憶システムに渡される時に、データユニットをどこに記憶したらよいかを算出するコンテンツアドレスはないかもしれない。本発明の一実施形態によれば、上記状況は、固有の位置技術およびポインタの使用によって対処できる。例えば、上記の固有の位置マッピング技術によって指定された以外の位置に、データユニット(例えば比較的大きいなデータユニット)を記憶することが望ましい場合、ポインタは、データユニットを記憶することがより望ましい他の物理的な記憶位置を指し示すポインタで、データユニットのコンテンツアドレスによって指定された記憶位置に記憶することができる。したがって、今後のアクセス要求がデータユニットを求めて受け取られる場合、固有の位置マッピング技術は、次に読み出されてデータを取り出すために使用できるデータユニットのポインタにマッピングする。
コンテンツアドレスがまだ生成されていないデータユニットのライト要求を処理する場合に、ポインタ技術を使用することもできる。この点で、データユニットが受け取られると、記憶位置は、任意の適切な記憶位置にデータユニットを配置することができ、次に、一旦、データユニットのコンテンツアドレスが算出、および/または提供されると、ポインタは、データユニットの選択された記憶位置を指し示すポインタで、新しく提供されたコンテンツアドレスの固有の位置マッピング技術によって算出された適切な位置に配置することができる。当然、一旦、コンテンツアドレスが提供されると、データは、固有の位置マッピング技術によって指定された記憶位置に、代わりに移動させることができることを理解されたい。さらに、ポインタ技術がデータを記憶するために使用される一実施形態
において、記憶システムは、データユニットが記憶されている他の記憶位置を指し示すポインタを求めて記憶システムを周期的に検索するバックグラウンドプロセスを実行することができる。このようなポインタのいずれかが見つかると、その処理は、ポインタによって指し示された記憶位置から、固有の位置マッピングによって指定された記憶位置(すなわちポインタの位置)にデータユニットを移動させ、それによって、ポインタを対応するデータユニットと取り替えることができる。したがって、記憶システムがポインタの記憶位置およびデータユニットの記憶位置の両方にアクセスする必要がないので、データユニットにアクセスする(例えばホストコンピュータからのリード要求に応答して)記憶システムの効率を向上させることができる。
ポインタをそれらの対応するデータユニットで取り替えるバックグラウンドプロセスは、任意の記憶システムにおいて任意の適切な方法で実行することができることは理解されたい。例えば、その処理は、アイドル状態であるストレージノードにおいてのみ実行されてもよい。別の選択肢として、その処理は、所定の期間が経過した後あらゆるストレージノードで実行されてもよい。多くの他の選択肢が利用可能であるが、本発明はこの点で限定されるものではない。本発明の一実施形態によれば、固有の位置技術を使用してデータユニットを見つけることができない場合、マルチキャスト位置クエリを実行するような別のルックアップ技術を使用することができる。
時間的局所参照
上記のごとく、一実施形態では、データユニットは、対応するストレージノードのファイルシステムのファイルに記憶される。このようなファイルは、そこに記憶されているデータユニットのコンテンツアドレスに、少なくとも一部分対応しているファイル名を有していて、そのファイルシステムは、ディレクトリと、特定のデータユニットがデータユニットのファイル名の少なくとも一部に少なくとも一部分対応して記憶されているサブディレクトリの名前を持つサブディレクトリとで構成することができる。上記のごとく、ファイルシステムは、ファイルシステムに記憶されているデータユニットのコンテンツアドレスの第1番目の文字に基づいて構成することができる。ただし、ファイルシステムは、最初の文字またはビット、中間部分、または最終部分を含むがそれに限定されることなくコンテンツアドレスの任意一部を使用して構成できるので、本発明はこの点で限定されるものではないことを理解されたい。コンテンツアドレスを生成するのに使用されるハッシュアルゴリズムは、かなりランダムな値(MD5ハッシュアルゴリズムの場合のように)を発生することができる。その結果、出願人らは、ほぼ同時に書き込まれたデータユニットがファイルシステム階層構造の異なった位置に記憶されることを理解した。すなわち、データユニットが時間的に近接して書き込まれたという事実にもかかわらず、これらのデータユニットはファイルシステムに広範に分散できる。したがって、ハッシュアルゴリズムのランダム性は、ファイルシステムの任意の局所参照もできなくする。
オペレーティングシステムは、通常物理的なディスク位置にファイルシステムの位置をマッピングするファイルシステムマップを保持している。ファイルシステムが大きく(すなわちディレクトリおよびサブディレクトリの大きい階層構造)、ファイルシステムに記憶されている多くのファイルがある場合、オペレーティングシステムによって保持されているファイルシステムマップも非常に大きい可能性がある。その結果、オペレーティングシステムは、ストレージノードの主記憶システム(例えばRAM)に、ファイルシステムマップの小さな部分を一時維持できるだけである。ファイルシステムマップの残りは、補助記憶システム(例えばディスク)に残されたままかもしれない。ファイルシステムマップの種々の部分が必要なので(すなわちファイルがアクセスされる場合)、それらはディスクにスワップされている他の部分と共に主記憶システムに引き渡されてもよい。ディスクではなくメモリのファイルシステム部にアクセスする場合には、アクセスの性能はより良好であることは理解されたい。
2つのデータユニットが時間的に近接してストレージノードに書き込まれたがファイルシステムマップの異なった部分に記憶される場合、オペレーティングシステムは、先ず、第1のデータユニットのファイルシステムの位置を有するファイルシステムマップの一部をディスクからロードして(すなわちそのデータユニットの物理的なディスク位置を算出するために)、次に、第2のデータユニットのファイルシステムの位置を有するファイルシステムマップの一部をロードするためにディスクに返却しなければならない。これらの反復するディスクアクセスは、記憶システムの書き込み応答時間を遅くする。さらに、時間的に近接して書き込まれた複数のデータユニットも時間的に近接して読み出されるので、データユニットを読み出す時に同様のアクセス遅延に遭遇するであろう。
出願人らは、ファイルシステム構造を使用する記憶システムにおいて、ほぼ同時に記憶される複数のデータユニットをほぼ同一のファイルシステムの位置に記憶し、順次アクセスされるデータユニットを求めてファイルシステムの異なった部分をロードしにディスクに行かなくてはならないオペレーティングシステムの可能性を最小限にすることが望ましいことを理解した。上記のごとく、本発明の一実施形態において、ファイルのファイルシステムの位置は、ファイルのファイル名に基づいて算出される。したがって、本発明の一実施形態によれば、これは、ほぼ同時に書き込まれたファイルの時間的局所参照を提供し、これらのファイルは、隣接したファイルシステムの位置に記憶されるという結果になる傾向がある。
連想記憶装置を使用した本発明の実施形態において、ファイルのファイル名に追加される情報は、そのファイルに記憶されているデータのコンテンツアドレスに追加することもできることは理解されたい。例えば、情報は、ファイルのコンテンツのハッシュに追加され、そのハッシュおよび付加情報に基づいてコンテンツアドレスを生成することもできる。情報はハッシュの任意の適切な位置に追加されてもよい。例えば、情報は、ハッシュの最初、終わり、または他の任意の位置に追加することができる。ホストコンピュータは、コンテンツアドレスを使用して上記方法のファイルにアクセスすることができる。
本発明の一実施形態において、時間的局所参照を設定するために追加された情報は、記憶システムでコンテンツアドレスに追加することができる。すなわち、例えば、データユニットが記憶システムに記憶される場合、記憶システムは、ハッシュに情報を含む時間的局所参照情報を生成し、その結果生じたコンテンツアドレスを記憶要求を提出したホストコンピュータに返してもよい。代替の実施形態において、ホストコンピュータが時間的局所参照情報を生成し、ハッシュに情報を追加してコンテンツアドレスを生成してもよい。ホストコンピュータは、コンテンツアドレスを記憶システムに送り、または時間的局所参照情報を記憶システムに単に送り、記憶システムがハッシュに情報を追加することを許可してコンテンツアドレスを算出することもできる。ホストコンピュータで時間的局所参照情報を計算することによって、ホストコンピュータが、データユニットを複数の記憶システムに同時(またはほぼ時間)に、例えばバックアップまたは反復用に記憶する場合、データユニットのコンテンツアドレスは各記憶システムで同一になる。
他の実施形態では、時間的局所参照情報は、記憶システムおよびホストコンピュータによって生成され、その両方の情報セットは、ハッシュの任意の適切な位置でハッシュに追加され、データユニットのコンテンツアドレスを生成することができる。
ファイルシステムに記憶されたファイルに関する時間的局所参照を与えるものとして、上記実施例を説明した。しかし、このような技術は、他の論理データ記憶構成体にも適用できることを理解されたい。例えば、コンテンツアドレス(またはデータベースに記憶されている他の情報)に時間的局所参照情報を追加することによって、キーとしてコンテンツアドレス(または他の情報)を使用してアクセスされるとともに、他の論理的な構成体
と共に使用することもできるデータベーステーブルのアクセス効率を向上させることができる。
ファイル名に追加された情報は、ほぼ同時に書き込まれたデータユニットに類似したどんな情報であってもよい。例えば、タイムスタンプがファイル名に追加されてもよく、ファイルシステムは、データユニットをどこに記憶するかを算出する時にそのタイムスタンプを調べることができる。一方、カウンター値が、新しいデータユニットが記憶システムに書き込まれるごとにインクリメントされるカウンター値をと共にファイル名に追加されてもよい。繰り返し述べるが、本発明がこの点で限定されるものではないので、任意の適切な情報が使用されてもよい。本発明のこの態様は、多数の異なった構成を備えた記憶システムと共に使用できるので、どのデータユニットが時間的に近接して記憶システムに書き込まれるかについての指標を与えるコンテンツアドレスに情報を追加することに関する本発明の態様は、説明した特定のアクセスノードおよびストレージノードの構成を備えた記憶システム、またはストレージノードのファイルシステムを上記のごとく使用することに限定されるものではないことは理解されたい。
図7がコンテンツアドレス701に追加されている位置情報703を示しているので、そこに本発明の時間的局所参照の態様を概念的に例示する。コンテンツアドレスの最後、またはコンテンツアドレスの範囲内に位置情報を与えることを含む、および位置情報を図7に示すような連続ブロックとして、またはコンテンツアドレス情報701の全体にわたって分散して与えることを含む任意の適切な方法で位置情報をコンテンツアドレスに追加することができるので、本発明のこの態様は、位置情報を図7に示すようなコンテンツアドレスの最初に与えることに限定されるものではないことは理解されたい。
本発明の上記の実施形態は、任意の多数の方法で実現することができる。例えば、実施形態はハードウェア、ソフトウェア、またはその組み合わせを使用して実現することができる。ソフトウェアで実現する場合、単一のコンピュータで提供されたか、複数のコンピュータ間で分散されたかにかかわらず、ソフトウェアコードは、任意の適切なプロセッサまたはプロセッサの集合で実行することができる。任意の構成装置または上記の機能を実行する構成装置の集合は、総称的に、上記の機能を制御する1つまたは2つ以上のコントローラとして見なすことができることは理解されたい。その1つまたは2つ以上のコントローラは、専用ハードウェア、または上記の機能を実行するマイクロコードまたはソフトウェアを使用してプログラムされた汎用ハードウェア(例えば1つまたは2つ以上のプロセッサ)ような、多数の方法で実現することができる。
この点で、本発明の実施形態の1つの実施は、プロセッサで実行される場合に、本発明の実施形態の上記機能を実行するコンピュータプログラム(すなわち複数の命令)で符号化された、少なくとも1つのコンピュータ可読媒体(例えばコンピュータメモリ、フロッピーディスク、コンパクトディスク、テープ、等)を有していることを理解されたい。その媒体に記憶されたプログラムが任意のコンピュータシステムリソースにロードされてここに説明した本発明の態様を実現できるように、コンピュータ可読媒体は持ち運び可能である。さらに、実行時に上記機能を実行するコンピュータプログラムという言及は、ホストコンピュータで動作するアプリケーションプログラムに限定されるものではないことを理解されたい。もっと正確に言えば、コンピュータプログラムという用語は、本発明の上記態様を実現するプロセッサをプログラムするのに使用できる任意の形態のコンピュータコード(例えばソフトウェアまたはマイクロコード)を意味する総称的な意味でここに使用している。
処理がコンピュータ可読媒体で実行される本発明のいくつかの実施形態によれば、コンピュータによって実行される処理は、処理の実行中、入力を手動で受け取る(例えばユー
ザから)ことができることは理解されたい。
上記種々の実施例において、コンテンツアドレスが英字「A」−「Z」を含むように説明した。本発明はこの点で限定されるものではないので、これらのコンテンツアドレスは、実施例としてのみ示しているものであり、コンテンツアドレスは、任意の英数字、一連のビット、または他の適切な文字を含むことができることは理解されたい。
ここに使用している語法および用語は説明を目的とするものであり、(本発明を)制限するものとして見なされるべきではない。ここで使用している「含む(including)」、「有する(comprising)」、または、「有する、備える(having)」「含む(containing)」、「含む(involving)」、およびその変形は、その後にリストされた項目および追加の項目を包含することを意味している。本発明のいくつかの実施形態を詳細に説明したが、当業者にとっては、種々の修正および改善が容易に思い浮かぶであろう。このような修正および改善は、本発明の精神および範囲内にあるように意図されている。したがって、今までの説明は例示を目的にするにすぎず、本発明を制限することを意図しない。本発明は、添付の請求項およびその等価物によって定義されたものによってのみ制限される。

Claims (5)

  1. コンピュータシステムで実行される時に、データを処理する方法を実行する命令で符号化された少なくとも1つのコンピュータ可読媒体であって、前記コンピュータシステムが、
    少なくとも1つのホストと、
    前記少なくとも1つのホストについての複数のデータユニットを記憶する複数の連想記憶装置とを有し、前記方法が、
    (a)ータユニットのコンテンツ少なくとも一部分基づいてコンテンツアドレスを生成するとともに、どのデータユニットが時間的に近接して連想記憶装置に書き込まれたかについての指標を与える第1の情報を前記コンテンツアドレスに含めること、
    時間的に近接して書き込まれたデータユニット同士を同一の連想記憶装置又は隣接する複数の連想記憶装置に記録すること、および
    (x)前記少なくとも1つのホストが、前記コンテンツアドレスを使用して前記データユニットにアクセスすること、
    を含む、コンピュータ可読媒体。
  2. 前記工程(x)が、
    (b)前記少なくとも1つのホストが、データユニットの1つの前記コンテンツアドレスを前記連想記憶装置に与えることによって、前記データユニットの1つにアクセスすることからなり、
    前記方法が、
    (c)前記連想記憶装置内のどこに前記データユニットの1つを記憶すべきかを算出する時に、前記与えられたデータユニットの1つの前記コンテンツアドレスの前記第1の情報を使用すること、をさらに含む請求項1記載の少なくとも1つのコンピュータ可読媒体。
  3. データユニットの1つに対して、前記工程(a)が、
    データユニットの少なくとも一部分に基づいてハッシュを生成すること、および
    前記ハッシュに前記第1の情報を挿入して該データユニットの1つのコンテンツアドレスを生成すること、
    を有する請求項1記載の少なくとも1つのコンピュータ可読媒体。
  4. 前記第1の情報が、前記データユニットの1つが前記少なくとも1つの連想記憶装置にいつ書き込まれたかに関するタイムスタンプの少なくとも一部を含んでいる、請求項3記載の少なくとも1つのコンピュータ可読媒体。
  5. 前記工程(b)が、前記少なくとも1つのホストによるアクセス後に、少なくとも1つの連想記憶装置がデータユニットの1つを記憶する前記少なくとも1つの連想記憶装置内の記憶位置を選択するのに前記第1の情報の少なくとも一部を使用することを有し、
    前記方法が、前記工程(b)の後で、前記選択された記憶位置に前記データユニットの1つを記憶することをさらに含む、請求項2記載の少なくとも1つのコンピュータ可読媒体。
JP2009000128A 2003-12-09 2009-01-05 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置 Active JP5198294B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/731,845 2003-12-09
US10/731,845 US7444389B2 (en) 2003-12-09 2003-12-09 Methods and apparatus for generating a content address to indicate data units written to a storage system proximate in time

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004355472A Division JP4372671B2 (ja) 2003-12-09 2004-12-08 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置

Publications (2)

Publication Number Publication Date
JP2009134733A JP2009134733A (ja) 2009-06-18
JP5198294B2 true JP5198294B2 (ja) 2013-05-15

Family

ID=34063596

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004355472A Active JP4372671B2 (ja) 2003-12-09 2004-12-08 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置
JP2009000128A Active JP5198294B2 (ja) 2003-12-09 2009-01-05 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2004355472A Active JP4372671B2 (ja) 2003-12-09 2004-12-08 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置

Country Status (5)

Country Link
US (1) US7444389B2 (ja)
JP (2) JP4372671B2 (ja)
CN (1) CN1311363C (ja)
DE (1) DE102004056701A1 (ja)
GB (1) GB2409071A (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046061A1 (en) 2000-02-11 2002-04-18 Wright Kenneth L. Personal information system
US7904488B2 (en) * 2004-07-21 2011-03-08 Rockwell Automation Technologies, Inc. Time stamp methods for unified plant model
JP2006195702A (ja) * 2005-01-13 2006-07-27 Hitachi Ltd データ処理システム及び方法
US8554758B1 (en) 2005-12-29 2013-10-08 Amazon Technologies, Inc. Method and apparatus for monitoring and maintaining health in a searchable data service
DE102006017076B4 (de) * 2006-04-10 2020-04-23 Lufthansa Systems Gmbh & Co. Kg Automatische Optimierung der Anfragebearbeitung in Datenbanksystemen
CN101122888A (zh) * 2006-08-09 2008-02-13 国际商业机器公司 写入和读取应用数据的方法和系统
JP5020673B2 (ja) * 2007-03-27 2012-09-05 株式会社日立製作所 重複したファイルの記憶を防ぐコンピュータシステム
US8612643B2 (en) 2007-06-30 2013-12-17 Microsoft Corporation Interfaces for digital media processing
US7921268B2 (en) * 2007-07-12 2011-04-05 Jakob Holger Method and system for function-specific time-configurable replication of data
US20090063587A1 (en) * 2007-07-12 2009-03-05 Jakob Holger Method and system for function-specific time-configurable replication of data manipulating functions
JP2009129164A (ja) * 2007-11-22 2009-06-11 Nec Corp 分散ストレージでのファイル配置およびアクセス方法、その装置及びそのプログラム
US7921179B1 (en) * 2008-01-15 2011-04-05 Net App, Inc. Reducing latency of access requests in distributed storage systems having a shared data set
US8756437B2 (en) * 2008-08-22 2014-06-17 Datcard Systems, Inc. System and method of encryption for DICOM volumes
US8788519B2 (en) * 2008-10-24 2014-07-22 John C. Canessa System and methods for metadata management in content addressable storage
JP5413948B2 (ja) 2009-01-27 2014-02-12 日本電気株式会社 ストレージシステム
JP5391705B2 (ja) 2009-01-27 2014-01-15 日本電気株式会社 ストレージシステム
JP5365236B2 (ja) 2009-02-16 2013-12-11 日本電気株式会社 ストレージシステム
JP5637552B2 (ja) 2009-02-17 2014-12-10 日本電気株式会社 ストレージシステム
JP5339432B2 (ja) 2009-02-25 2013-11-13 日本電気株式会社 ストレージシステム
JP5556025B2 (ja) * 2009-02-27 2014-07-23 日本電気株式会社 ストレージシステム
JP5407430B2 (ja) 2009-03-04 2014-02-05 日本電気株式会社 ストレージシステム
JP5298982B2 (ja) * 2009-03-17 2013-09-25 日本電気株式会社 ストレージシステム
JP5369807B2 (ja) * 2009-03-24 2013-12-18 日本電気株式会社 ストレージ装置
US8713068B2 (en) * 2009-06-11 2014-04-29 Yahoo! Inc. Media identification system with fingerprint database balanced according to search loads
US8438342B1 (en) 2009-12-09 2013-05-07 Emc Corporation Automated application-based storage provisioning
CN102104526A (zh) * 2009-12-16 2011-06-22 华为技术有限公司 一种内容发布与获取的方法、装置和系统
JP5556192B2 (ja) 2010-01-26 2014-07-23 日本電気株式会社 ストレージシステム
US20120311113A1 (en) * 2010-02-10 2012-12-06 Nec Corporation Storage device
JP5533888B2 (ja) 2010-02-10 2014-06-25 日本電気株式会社 ストレージ装置
US9832104B2 (en) * 2010-02-11 2017-11-28 Microsoft Technology Licensing, Llc Reliable broadcast in a federation of nodes
WO2011108041A1 (ja) 2010-03-04 2011-09-09 日本電気株式会社 ストレージ装置
JP5517224B2 (ja) * 2010-03-04 2014-06-11 日本電気株式会社 ストレージ装置
US8799221B2 (en) 2010-04-23 2014-08-05 John Canessa Shared archives in interconnected content-addressable storage systems
US9158808B2 (en) 2010-08-19 2015-10-13 Nec Corporation Object arrangement apparatus for determining object destination, object arranging method, and computer program thereof
WO2012078898A2 (en) 2010-12-10 2012-06-14 Datcard Systems, Inc. Secure portable medical information access systems and methods related thereto
CA2825885C (en) * 2011-01-28 2019-07-02 Kenji Noda Storage system and information processing method
JP5673232B2 (ja) * 2011-03-09 2015-02-18 日本電気株式会社 ストレージシステム
WO2012124178A1 (ja) * 2011-03-16 2012-09-20 日本電気株式会社 分散記憶システムおよび分散記憶方法
JP5725546B2 (ja) * 2011-03-23 2015-05-27 日本電気株式会社 ストレージシステム
CN102254013A (zh) * 2011-07-21 2011-11-23 深圳市华力特电气股份有限公司 一种数据处理方法及数据处理装置
WO2013035295A1 (en) 2011-09-07 2013-03-14 Nec Corporation Storage system
WO2013038632A1 (en) 2011-09-16 2013-03-21 Nec Corporation Storage system
US9390055B2 (en) 2012-07-17 2016-07-12 Coho Data, Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory
KR102003739B1 (ko) * 2012-11-08 2019-07-25 삼성전자주식회사 액세스 노드에 의한 애플리케이션 호스팅 방법 및 장치
JP6094267B2 (ja) 2013-03-01 2017-03-15 日本電気株式会社 ストレージシステム
JP6171413B2 (ja) 2013-03-06 2017-08-02 日本電気株式会社 ストレージシステム
US9405643B2 (en) 2013-11-26 2016-08-02 Dropbox, Inc. Multi-level lookup architecture to facilitate failure recovery
US9547706B2 (en) * 2014-03-10 2017-01-17 Dropbox, Inc. Using colocation hints to facilitate accessing a distributed data storage system
US10417181B2 (en) * 2014-05-23 2019-09-17 Hewlett Packard Enterprise Development Lp Using location addressed storage as content addressed storage
JP6341307B1 (ja) 2017-03-03 2018-06-13 日本電気株式会社 情報処理装置
US10534708B1 (en) 2018-06-25 2020-01-14 Microsoft Technology Licensing, Llc Shallow cache for content replication
KR20200050169A (ko) * 2018-11-01 2020-05-11 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US554875A (en) * 1896-02-18 hinman
US5347579A (en) 1989-07-05 1994-09-13 Blandford Robert R Personal computer diary
US5202982A (en) * 1990-03-27 1993-04-13 Sun Microsystems, Inc. Method and apparatus for the naming of database component files to avoid duplication of files
DE69131789T2 (de) 1990-08-02 2000-07-06 Telcordia Technologies, Inc. Verfahren zur sicheren zeitstempelung von digitalen dokumenten
JPH04340156A (ja) * 1991-03-08 1992-11-26 Fuji Xerox Co Ltd 連想記憶方式
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
JPH0830497A (ja) 1994-07-15 1996-02-02 Matsushita Electric Ind Co Ltd デジタルデータ記録再生装置
JPH0887432A (ja) * 1994-09-16 1996-04-02 Toshiba Corp 情報記録再生装置のデータ配置方法
US5907856A (en) * 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
JP3044005B2 (ja) 1997-05-29 2000-05-22 公一 柴山 データ格納制御方式
US6557102B1 (en) 1997-09-05 2003-04-29 Koninklijke Philips Electronics N.V. Digital trust center for medical image authentication
JPH11143605A (ja) 1997-11-05 1999-05-28 Hitachi Ltd 携帯端末
US6807632B1 (en) 1999-01-21 2004-10-19 Emc Corporation Content addressable information encapsulation, representation, and transfer
EP0940945A3 (en) 1998-03-06 2002-04-17 AT&T Corp. A method and apparatus for certification and safe storage of electronic documents
JPH11341442A (ja) * 1998-05-29 1999-12-10 Nikon Corp 動画像再生装置
US6601090B1 (en) * 1999-06-25 2003-07-29 Nortel Networks Limited System and method for servicing internet object accessess from a coupled intranet
JP2001067881A (ja) * 1999-08-30 2001-03-16 Toshiba Corp 連想記憶装置及び記憶媒体
US6976165B1 (en) * 1999-09-07 2005-12-13 Emc Corporation System and method for secure storage, transfer and retrieval of content addressable information
CA2415888C (en) * 2000-08-04 2008-10-21 Avaya Technology Corporation Intelligent demand driven recognition of url objects in connection oriented transactions
GB2376323B (en) 2001-06-09 2006-03-15 Hewlett Packard Co Trusted and verifiable data storage system
US6807611B2 (en) * 2002-04-05 2004-10-19 International Business Machine Corporation High speed selective mirroring of cached data
US20040010612A1 (en) 2002-06-11 2004-01-15 Pandya Ashish A. High performance IP processor using RDMA
US7096342B2 (en) * 2003-10-28 2006-08-22 International Business Machines Corporation Flexible LUN/LBA interface for content addressable reference storage

Also Published As

Publication number Publication date
JP2005235171A (ja) 2005-09-02
GB2409071A (en) 2005-06-15
US7444389B2 (en) 2008-10-28
GB0426365D0 (en) 2005-01-05
CN1311363C (zh) 2007-04-18
JP2009134733A (ja) 2009-06-18
CN1629823A (zh) 2005-06-22
DE102004056701A1 (de) 2005-07-28
JP4372671B2 (ja) 2009-11-25
US20050144172A1 (en) 2005-06-30

Similar Documents

Publication Publication Date Title
JP5198294B2 (ja) 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置
US7162571B2 (en) Methods and apparatus for parsing a content address to facilitate selection of a physical storage location in a data storage system
US7263576B2 (en) Methods and apparatus for facilitating access to content in a data storage system
US7159070B2 (en) Methods and apparatus for caching a location index in a data storage system
US7293131B2 (en) Access to disk storage using file attribute information
EP1569085B1 (en) Method and apparatus for increasing data storage capacity
US8095726B1 (en) Associating an identifier with a content unit
US6807615B1 (en) Apparatus and method for providing a cyclic buffer using logical blocks
JP2004171547A (ja) メモリシステムを管理する方法および装置
US7428621B1 (en) Methods and apparatus for storing a reflection on a storage system
US6782444B1 (en) Digital data storage subsystem including directory for efficiently providing formatting information for stored records
US6629199B1 (en) Digital data storage system including directory for efficiently providing formatting information for stored records and utilization of a check value for verifying that a record is from a particular storage location
US6029229A (en) Digital data storage subsystem including directory for efficiently providing formatting information for stored records
US10642745B2 (en) Key invalidation in cache systems
US5900009A (en) System and method for accessing records in a cache slot which are associated with a current owner storage element or at least one previous owner storage element
US6330655B1 (en) Digital data storage subsystem including directory for efficiently providing formatting information for stored records
US6842843B1 (en) Digital data storage subsystem including arrangement for increasing cache memory addressability
EP0665499A2 (en) Hierarchic data storage system
JP2008544397A (ja) ファイルシステム内へのコンテンツの格納を管理する方法および装置
JP2000010838A (ja) リモートディスク装置アクセスシステム
JPH02210561A (ja) ディスクキャッシュの管理方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110705

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111005

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111011

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111102

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111108

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111205

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121010

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130206

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

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5198294

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250