説明

分散データを再構築するためのシステム

他のファイル共有の一部または全てと組み合わせた場合以外では、各ファイル共有のデータが、それ自体では利用可能性がより低い、または認識可能性が低い、または完全に利用不可能である、または完全に認識不可能であるように、格納されるオリジナルデータファイルが、ある形式の情報分散アルゴリズムを使用して、多数のファイル「スライス」またはサブセットに分散される、デジタルデータファイルのストレージシステムを開示する。これらのファイル共有は、分散されたストレージグリッド内において分散されたファイル共有[ボリューム]として、別々のデジタルデータストレージデバイスに格納される。転送される際に分散されたファイル共有が破損した場合、分散されたストレージグリッド内のプロセスは、再構築リスト[66]で再生成する必要のある分散されたデータ共有を指定する。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の参照)
本願は、2005年9月30日出願の共願の同時係属出願米国出願第11/241,555号の一部継続出願である。
【0002】
(発明の背景)
(1.発明の分野)
本発明は、情報分散アルゴリズムを使用してデータを格納するための分散データファイルストレージシステムおよび方法に関し、より詳細には、分散データを再構築するためのシステムおよび方法に関する。情報分散グリッドにおいて、分散データ(オリジナルの組のデータおよび/または符号化されたデータの複数のサブセット)を、1つ以上の位置の、複数のデータストレージデバイス上に格納することにより、その他のデジタルデータストレージデバイスからの分散データと組み合わされる場合以外では、各ストレージデバイス上の分散データは、認識不可能かつ利用不可能である。分散データが、常に完全に動作可能ではない情報分散グリッド上に転送または格納される状況に対処するために、本発明は、リソースの利用停止(outage)による分散データの再構築だけでなく、情報分散グリッドにおける一時的または永続的なリソースの利用停止のいずれかに対処するための能力を提供する。
【背景技術】
【0003】
(2.先行技術の記載)
データの格納のために、様々なデータストレージシステムが公知である。通常、こうしたデータストレージシステムは、例えば、単一のデータ領域(すなわち、単一のデジタルデータストレージデバイス)上に、特定のデータセットに関連付けられた全てのデータ(特定のユーザの全データ、特定のソフトウェアアプリケーションに関連付けられた全データ、または特定のファイル内の全データ等)を格納する。クリティカルなデータは、まず、冗長デジタルデータストレージデバイスに格納される。従って、あるデジタルデータストレージデバイスに障害が存在する場合、他のデジタルデータストレージデバイス上でデータの完全なコピーが利用可能である。冗長デジタルデータストレージデバイスを有するこうしたシステムの例は、本明細書に参照として援用される、特許文献1、特許文献2、および特許文献3に開示されている。こうした冗長デジタルデータストレージシステムは比較的信頼性が高いが、こうしたシステムには他の問題が存在する。第1に、こうしたシステムは、デジタルデータストレージのコストを、実質的に2倍以上に増加させてしまう。第2に、こうした冗長デジタルデータストレージシステムの全データを1つの場所に保管することにより、データを、不正(unauthorized)アクセスに対して脆弱にしてしまう。
【0004】
セキュリティおよび結果としてデータストレージシステムの信頼性を向上させるために、性能の向上または容量制限に関する理由のためだけではなく、本明細書に参照として援用される特許文献4に記載されているように、2つ以上のストレージデバイス(ハードドライブ、または磁気テープあるいはいわゆる「メモリスティック」等のリムーバル媒体等)に、データが格納され得る。例えば、使用頻度の少ない過去のデータは磁気テープに格納され得る一方で、データベースの最近のデータはハードドライブに格納され得る。別の例は、単一のハードドライブ上に格納するにはサイズが大きすぎる単一のファイルからのデータを、2つのハードドライブへの格納することである。これらの場合の各々において、各データストレージデバイスに格納されるデータサブセットがオリジナルデータ全てを含むわけではないが、一部の利用可能な情報を提供するために使用され得るデータの概して連続的な部分は含んでいる。例えば、格納されるオリジナルデータが、以下の文の文字列であるとする。
The quick brown fox jumped over the lazy dog.
そのデータは2つの異なるデータストレージデバイスに格納され、これらのデバイスの一方または両方が利用可能な情報を含むことになる。例えば、その45文字の文字列のうちの最初の20文字が1つのデータストレージデバイスに格納された場合、残りの25文字は第2のデータストレージデバイスに格納され、センテンスは以下:
The quick fox jumped(第1のストレージデバイスに格納)
over the lazy brown dog.(第2のストレージデバイスに格納)
のように格納される。
【0005】
それぞれの場合において、各デバイスに格納されるデータはオリジナルデータの完全なコピーではないが、各デバイスに格納されるデータサブセットの各々はいくつかの利用可能な情報を提供する。
【0006】
典型的には、ハードドライブ等のデバイス上のデータストレージの実際のビットパターンは、ハードドライブセクタまたはメモリセグメント等の、ファイルタイプ、ファイルシステムおよびストレージ構造を表すための追加の値で構築される。特定のファイルシステムおよび特定のストレージ構造を使用する、特定のファイルタイプのデータを構築するために使用される技術がよく知られており、これらの技術に精通した個人が物理的媒体におけるビットパターンからソースデータを識別することが可能である。
【0007】
格納されたデータを認証ユーザのみに利用可能にすることを確実に行うために、多くの場合、DES、AESまたはその他のいくつかの公知の暗号化技術の1つを使用して、暗号化形式でデータが格納される。これらの暗号化技術は、理想的には認証ユーザまたは認証プロセスにのみ知られている数学キーを必要とするある符号化形式で、データを格納する。こうした暗号化技術を「解読」するのは困難であるが、解読されている暗号化技術の場合は、こうしたデータストレージシステム上のデータを不正アクセスに対して脆弱にすることがわかっている。
【0008】
暗号化を使用してデータを安全にするだけでなく、情報分散アルゴリズムを使用してデータストレージのセキュリティを向上させるいくつかの方法が開発されており、例えば、本明細書に参照として援用される、特許文献5および特許文献6に開示されている。こうした情報分散アルゴリズムは、オリジナルデータを複数のデータサブセットに「スライス(slice)」し、異なるストレージノード(すなわち、異なるデジタルデータストレージデバイス)へこれらのサブセットに分散させるために使用される。オリジナルデータセットを、そのオリジナルデータが全く含まれていない複数のデータセットに分散させるために、情報分散アルゴリズムも使用できる。個別には、各データサブセットまたはスライスはオリジナルデータを再生成するための十分な情報を含んでいないが、閾値数の(すなわち、オリジナルサブセットの数より少ない)サブセットが利用可能である場合、全てのオリジナルデータを正確に生成することができる。
【0009】
データストレージシステムにおけるこうした情報分散アルゴリズムの利用は、様々な業界紙にも記載されている。例えば、非特許文献1による、「How to Share a Secret」は、多項式補間に基づいて、暗号鍵等の秘密を共有するスキームについて記載している。別の業界紙、すなわち、非特許文献2の「Efficient Dispersal of Information for Security,Load Balancing,and Fault Tolerance」も、情報分散アルゴリズムを使用した情報分散の方法について記載している。
【特許文献1】米国特許第5,890,156号明細書
【特許文献2】米国特許第6,058,454号明細書
【特許文献3】米国特許第6,418,539号明細書
【特許文献4】米国特許第6,128,277号明細書
【特許文献5】米国特許第6,826,711号明細書
【特許文献6】米国特許出願公開第2005/0144382号明細書
【非特許文献1】A.Shamir,Communications of the ACM,Vol.22,No.11,November,1979
【非特許文献2】M. Rabin、Journal of the Association for Computing Machinery,Vol.36,No.2,April 1989,335―348ページ
【発明の開示】
【発明が解決しようとする課題】
【0010】
残念ながら、こうした方法および他の公知の情報分散方法は、計算処理能力的に負担が大きいため、企業、消費者および他の組織で今日広く使用されているタイプのコンピュータで使用している一般的な大容量データストレージにとって、実用的でない。このため、計算処理能力的に負担の大きいアルゴリズムを使用する必要のないデータを、確実かつ安全に保護できるデータストレージシステムが求められている。
【課題を解決するための手段】
【0011】
(発明の概要)
つまり、本発明は、その他のファイル共有のいくつかまたは全てと組み合わせた場合を除き、各ファイル共有のデータが、それ自体では利用可能性がより低い、または認識可能性が低い、または完全に利用不可能である、または完全に認識不可能であるように、格納されるオリジナルデータファイルが、ある形式の情報分散アルゴリズムを使用して、多数のファイル「スライス」またはサブセットに分散される、デジタルデータファイルのストレージシステムに関する。こうしたファイル共有は、プライバシーおよびセキュリティを向上させるために、個別のデジタルデータストレージデバイスに格納される。分散されたファイル共有は、分散されたストレージ位置のグリッド上に転送または格納されるため、様々なグリッドリソースは、動作不可能になり得るか、または最適基準未満で動作し得る。分散したファイル共有が利用不可能な分散ストレージグリッドリソースに書き込まれるように指定される場合、グリッドクライアントは再構築リスト(Rebuild List)上にその時点で書き込まれ得ない分散データ共有を指定する。さらに、既に分散データを格納しているグリッドリソースが利用不可能になると、分散ストレージグリッド内のプロセスは、再構築リストで再生成する必要があるその分散データ共有を指定する。他の時点において、個別プロセスは再構築リストのセットを読み込み、対応する分散データを生成し、利用可能なグリッドリソース上にそのデータを格納する。
【発明を実施するための最良の形態】
【0012】
本発明のこれらの利点および他の利点は、添付の図面および明細書を参照すると、容易に明らかとなる。
【0013】
(詳細な説明)
本発明は、データストレージシステムに関する。オリジナルデータのセキュリティを保護するために、オリジナルデータは、多数のデータ「スライス」またはサブセットに分かれている。本発明は、データファイルをファイルスライスまたはファイル「共有(share)」に分けるまたは分散するために使用することもできる。各スライスのデータ容量は、他のデータサブセットのいくつかまたは全てと結合させない限り、それ自体では、利用可能性がより低い、または認識可能性がより低い、または、完全に利用不可能である、または完全に認識不可能である。特に、本発明によるシステムは、オリジナルデータをデータサブセットに「スライス」し、符号化されたデータサブセットを生成するために、データサブセット上で符号化アルゴリズムを使用する。各データサブセットおよびその対応する符号化されたサブセットを、通信ネットワーク上で別々に転送し、ストレージノードのアレイの別々のストレージノードに格納してもよい。オリジナルデータを再生成するために、データサブセットおよび符号化されたサブセットは、各ストレージノードおよび各通信チャンネルの利用可能性および性能によって、いくつかのまたは全てのストレージノードまたは通信チャンネルから取得される。一連の復号アルゴリズムを取得されたデータおよび符号化されたデータに適用することによって、オリジナルデータが再生成される。
【0014】
情報分散方法に基づく他の公知のデータストレージシステムによる場合と同様に、1つ以上のデータサブセットへの不正アクセスは、ソースデータについての分量の不十分な、または利用不可能な情報しか提供しない。
【0015】
本発明を理解するため、ファイルまたはファイルのシステムを構成可能なN個の文字d0,1,...,dの文字列を想定する。典型的なコンピュータファイルシステムはギガバイトのデータを含むことがあり、このことは、Nが数兆個の文字を含むことを意味する。以下の例では、データ文字列の長さNがストレージノードの数nと等しい、かなり短い文字列を想定する。より大きなデータ文字列を格納するためには、こうした方法を何度も適用可能である。これらの方法はまた、コンピュータファイルまたは全ファイルシステムを格納するために、繰り返し適用され得る。
【0016】
この例では、文字列がO L I V E Rという文字を含み、文字列には以下のようなASCII文字コードを含むことを仮定する。
=O=79
=L=76
=I=73
=V=86
=E=69
=R=82
文字列は、それぞれn個の文字であるセグメントに分割され、ここで、nは所望の計算効率のレベルを維持しながら所望の信頼性およびセキュリティ特性を提供するように選択される(典型的には、nは100未満となるように選択される)。一実施形態において、その結果データの各サブセットが、例えば、オリジナルデータの4分の1未満を含み、結果として、各データサブセットの認識可能性が低下するように、nは4よりも大きくなるように選択され得る。
【0017】
別の実施形態において、以下のように、第1のオリジナルデータセットが6個の異なるデータサブセットに分けられるように、nを6になるように選択する。
A=d、B=d、C=d、D=d、E=d、F=d
例えば、オリジナルデータが、O L I V E Rというテキストの文字のASCII値の開始文字列である場合、データサブセットの値は以下のリストのようになる。
A=79
B=76
C=73
D=86
E=69
F=82
この実施形態において、符号化されたデータの値は、オリジナルデータセット内の他のデータ値のサブセットからのデータ値を加算することで生成される。例えば、符号化された値は、以下のデータ値を加算することで生成できる。
c[x]=d[n_mod(x+l)]+d[n_mod(x+2)]+d[n_mod(x+4)]
この式において、
c[x]は、符号化されたデータ値のセグメントアレイにおけるx番目の符号化されたデータ値である
d[x+l]は、データ値のアレイにおけるxよりも大きい位置1における値である
d[x+2]は、データ値のアレイにおけるxよりも大きい位置2における値である
d[x+4]は、データ値のアレイにおけるxよりも大きい位置4における値である
n_mod()は、数空間0からn―1においてモジュロ演算を実行する関数である
この式を使用して、以下の符号化された値を生成する。
cA、cB、cC、cD、cE、cF
ここで、cAは、例えば、B+C+Eと等しく、データ値Aと共に通信および/または格納される符号化された値を表す。
【0018】
例えば、オリジナルデータがO L I V E Rというテキストの文字のASCII値の開始文字列である場合、符号化されたデータサブセットの値は、以下のようになる。
cA=218
cB=241
cC=234
cD=227
cE=234
cF=241
本発明に従って、例示的なデータABCDEFから成るオリジナルデータセット20は、例えば、6個のデータサブセットA、B、C、D、EおよびFにスライスされる。データサブセットA、B、C、D、EおよびFも、以下で説明するように符号化されており、符号化されたデータサブセットcA、cB、cC、cD、cEおよびcFを形成する。データサブセットA、B、C、D、EおよびFならびに符号化されたデータサブセットcA、cB、cC、cD、cEおよびcFは、例えば、図1に示されているように、複数のスライス22、24、26、28、30および32に形成される。各スライス22、24、26、28、30および32は、異なるデータ値A、B、C、D、EおよびFならびに異なる符号化されたサブセットcA、cB、cC、cD、cEおよびcFを含む。スライス22、24、26、28、30および32は、インターネット等の通信ネットワークを介し、一連のデータ転送の形でシリーズに転送し、異なるデジタルデータストレージデバイスまたはストレージノード34、36、38、40、42および44に、それぞれ格納されてもよい。
【0019】
オリジナルデータを取得するために(またはデータが転送されたばかりで格納されていない場合にはこれを受信するために)、データを、図2に示すように再構成可能である。各ストレージノード34、36、38、40、42および44からのデータ値は、インターネット等の通信ネットワークを通じて、受信先のコンピュータ(図示せず)に転送される。図2に示すように、受信先のコンピュータは、そのそれぞれが異なるデータ値A、B、C、D、EおよびFならびに異なる符号化された値cA、cB、cC、cD、cEおよびcFを含む、スライス22、24、26、28、30および32を受信する。
【0020】
ストレージノード34、36、38、40、42および44または通信接続の利用停止または性能遅延等の様々な理由のために、時間データを再生成するたびに、必ずしも全てのデータスライス22、24、26、28、30および32が利用可能となるわけではない。図3は、データスライス22、24、26、28、30および32の1つ、例えば、データ値Aを含むデータスライス22および符号化された値cAが利用不可能である場合に、本発明がオリジナルデータセットを再生成する条件を示す。この場合、オリジナルデータ値Aは、以下のようにして求められる。
A=cC−D−E
ここで、cCは符号化された値であり、DおよびEは、スライス26、28および30から利用可能なオリジナルデータ値であり、これらはそれぞれ、ノード38、40および42から利用可能であると仮定する。この場合、不明なデータ値は、既知の符号化された値から既知のデータ値を減算することにより、符号化された値を生成するためにデータ値の一部を加算する符号化の式を逆にすることで、求められる。
【0021】
例えば、オリジナルデータがO L I V E Rというテキストの文字のASCII値の開始文字列である場合、Aのデータ値は、以下のようにして求められる。
A=234−86−69
従って、A=79となり、これは、文字OのASCII値である。
【0022】
他の場合において、オリジナルデータ値を求めるにはより詳細な復号式が必要となる。例えば、図4は、オリジナルデータ値A、BおよびEを含む6個のノードのうちの3個、34、36および42、およびその対応する符号化された値cA、cBおよびcEが利用不可能である、条件を示す。図4のこうした不明なデータ値A、BおよびEおよび対応物は、以下の式シーケンスを使用して再構築できる。
1.B=(cD−F+cF−cC)/2
2.E=cD−F−B
3.A=cF−B−D
こうした式は、特定の式を実行する場合に、各式で必要とされるデータ値が利用可能になるよう、リストされた順で実行する。
【0023】
例えば、オリジナルデータが、O L I V E Rというテキストの文字のASCII値の開始文字列である場合、B、EおよびAのデータ値は、以下のようにして求められる。
1.B=(227−82+241−234)/2
B=76
2.E=227−82−76
E=69
3.A=241−76−86
A=79
n=6であり、およびスライス22、24、26、28、30および32のうちの3つまでが、再生成の際に利用不可能である場合に、オリジナル全データABCDEFの再生成のための方法を一般化するために、図5は、不明なデータを再生成する方法を決定するために利用可能なテーブルを含む。
【0024】
このテーブルは、6個のストレージノードのうち1、2または3が利用不可能である、または利用不可能であると考えられるのに十分なほど遅く行われる、40の異なる利用停止シナリオを示す。図5の表において、行の「X」は、そのノードからのデータおよび符号化された値が利用不可能であることを示す。「タイプ」の列は、ノードの空間パターンタイプが利用不可能であることを示す。「オフセット」の値は各利用停止シナリオを示す。オフセットは特定の利用停止シナリオおよびそのタイプの第1の利用停止シナリオの空間位置の差であるということを示す。
【0025】
データ値は、アレイd[x]によって示すことが可能であり、ここで、xは、データ値が格納されたノード番号である。符号化された値は、アレイc[x]で表すことができる。
【0026】
n=6である場合に1つのノードがストレージアレイにおいて利用不可能である、利用停止シナリオにおける不明なデータを再構成するには、以下の式を利用可能である。
d[0+offset]=c3d(2,3,4,offset)
ここで、c3d()は、以下のような擬似コンピュータソフトウェアコードの関数である。
【0027】
【化1】

ここで、n_mod()は、以前に定義された関数である。
【0028】
n=6である場合に2つのノードがストレージアレイにおいて利用不可能である、利用停止シナリオにおける不明なデータを再構成するために、図6の表の以下の式を利用可能である。図6において、「利用停止タイプ番号」は、図5の対応する利用停止「タイプ」を示す。図6の「復号演算」は、復号演算が実行される順序を示す。図6の「復号化されたデータ」の列は、各不明なデータ値を生成する特定の復号演算を示す。
【0029】
n=6である場合に3つのノードがストレージアレイにおいて利用不可能である、利用停止シナリオにおける不明なデータを再構成するために、図7の表の式を利用可能である。図7において、利用停止タイプ=3の場合の第1の復号のための復号式の構造は、n=6である場合の他の復号式とは異なる構造であることに留意されたい。
【0030】
グリッドからのデータを読み込む場合に全てのストレージノード57が利用可能な訳ではないという状況に加えて、図8に示すように、全てのストレージノード57が、分散ストレージグリッド49へ書き込む際に利用可能であるわけではない場合がある。図8に示す例において、それぞれ参照番号36および40で識別される、ストレージノード1および3は、グリッドクライアント64がグリッドへ書き込み中は利用不可能であると仮定される。こうした状況において、グリッドクライアント64は、ストレージノード1および3にデータを格納するために他のストレージノード57を選択してもよく、または、クライアント64は、図9のステップ1に示すように、ストレージグリッド上の他のノードに格納される、リビルダリスト66または重複するリビルダリストのセットに書き込んでもよい。概して、リビルダリスト66は、不明なデータスライスを上記のように再生成できるように、不明なデータスライスをリスト表示する。ストレージノード1および3が動作していないこの例において、グリッドクライアント64はグリッド上の他のストレージノード57上にノード1および3に直接指定されたスライスを格納しないが、その代わりに、グリッドクライアント64は、図10に示すように、データスライスをリビルダリスト66に追加する。
【0031】
非動作のストレージノード1および3が後で再び動作可能になると、再構築エージェント67と呼ばれるストレージグリッド上のプロセスを使用して、図9のステップ2、3および4に示されているように、不明なデータスライスを再構築することができる。上記の例を用いて、再構築エージェント67はまず、ステップ2において、図10の情報を読み込む。こうして、再構築エージェント67は、まずは不明なスライスのデータ値を生成し、次に不明なスライスのそれぞれにおいて符号化された値を生成することによって、データスライスを再生成する。
【0032】
この例で不明なデータ値を作成するために、再構築エージェント67は、図5のテーブルを使用して、ノード1および3を有する6個のノードグリッドの利用停止タイプは、オフセット1を有する利用停止タイプ2であると決定する。この例において、再構築エージェント67は、以下のような、図6の6個のノードグリッドのタイプ2利用停止の式を使用する。
【0033】
【表1】

OLIVERという単語のオリジナルデータのASCII値と共に例のデータを使用すると、以下の式によって、不明な第1のデータ値が求められる。
=C−d−d(第1の復号式)
図8のステップ3に示されるように、再構築エージェントはグリッド上のストレージノード57から必要なデータスライスを取得し、次に、以下に示すように、第1の不明なスライスデータを再生成する。
B=cA−C−E
B=218−73−69
B=76
76というASCII値は、ストレージノート1のオリジナルデータである文字「L」に相当する。第2の不明なオリジナルデータ値は、次のように求められる。
=c−d−d(第2の復号式)
ステップ3に示すように、図8において、再構築エージェントはグリッド上のストレージノード57から必要なデータスライスを取得し、次に、以下に示すように、第2の不明なスライスデータを再生成する。
D=C−E−A
D=234−69−79
D=86
86というASCII値は、ストレージノード3のオリジナルデータである文字「V」に相当する。
【0034】
ストレージノード1および3の符号化されたデータ値の再生成は、オリジナルの符号化式を再び適用することで実行可能である。
c[x]=d[n_mod(x+l)]+d[n_mod(x+2)]+d[n_mod(x+4)]
次に例の符号化されたデータ値を再生成すると、以下のようになる。
cB=C+D+F
cB=73+86+82
cB=241
cD=E+F+B
cD=69+82+76
cD=227
すると、図9のステップ4に示されているように、BおよびcBで成るデータスライスをストレージノード1に書き込むことが可能になり、DおよびcDで成るデータスライスをストレージノード3に書き込むことが可能になる。スライスを再構築するこの方法は、グリッドクライアントがグリッドに新規データを書き込んでいるためにストレージリソースが一時的に利用不可能である場合に、分散データを再構築するために利用可能である。
【0035】
図11は、ストレージリソースが永久に破損しているおよび新規リソースによって置換される場合に、スライスをどのように再構築できるかを示す。このシナリオにおいて、永久に失われたストレージリソースによって以前に保持されたデータスライスは、新規の、置換ストレージリソース上で再生成される。ステップ1において、グリッド管理者68(自動プロセスまたは判断を下す人員にしてもよい)は、図11のストレージノード57によって示されるストレージリソースは永久に利用不可能であると決定する。グリッド管理者68は、次に、以下の例示的な情報によって、ストレージノード57内の置換データ領域を指定する:Volume_Identification_Number、Volume_Location。この例において、Volume_Identification_Numberは、データスライスが以前に格納され、今は利用不可能であるデータ領域番号である。Volume_Locationは、新規ストレージノード57のネットワーク位置である。この例において、Volume_Identification_Numberは、番号7654によって示され、ネットワーク位置は123.123.123.123の形式のインターネットIPアドレスによって示すことができる。グリッド管理者68は、再構築リストメーカ70という分散ストレージグリッド上で実行されているプロセスへ、この情報を提供する。
【0036】
図11のステップ2に示されているように、再構築リストメーカ70は、次に、以下に述べる、グリッドディレクタ58という分散ストレージグリッド上のプロセスからボリューム、ユーザおよびファイル情報を得る。ボリュームは、ハードドライブ、サーバまたは複数の位置におけるサーバのグループで構成することのできるグリッド上のデータストレージプロセスである。ユーザは、特定のグリッドクライアント64の名称である。この例において、ファイルは、グリッド上に分散しているオリジナルデータファイルの識別子である。以下でより詳細に説明するように、グリッドディレクタ58は、グリッド上のボリューム、ユーザおよびファイル情報を追跡するプロセスである。再構築リストメーカ70は、再構築予定のボリューム7654に関連付けられたユーザについての情報を提供するようグリッドディレクタ58にリクエストし、図12に示すようにグリッドディレクタ58が返る。
【0037】
図12は、3人のユーザが、再構築予定のボリューム7654上にデータを有することを示す。こうしたユーザは、識別番号1234567、1234568および1234569を有する。再構築リストメーカ70はさらに、グリッドディレクタ58から、3人の影響を受けるユーザへとファイルを関連付けるテーブルをリクエストする。グリッドディレクタ58は、図13に示されるもののようにテーブルを返す。図13は、再構築されるボリューム上にデータを格納するユーザに、6個のファイルが関連付けられていることを示す。
【0038】
再構築リストメーカ70は次に、再構築予定のデータ領域またはボリュームの喪失による影響を受けるこうしたファイルに関連付けられる、全スライスのリストを生成する。そのファイルから生成されるスライスセットに対応するダッシュおよび数を追加することにより、File_Identification_Numberを、対応するSlice_Identification_Numberに変換することができる。この例において、6個のノード分散ストレージグリッド上の各ファイルについて、再構築予定のボリュームの損失によって影響を受ける可能性があるファイルの全てのスライスを示すために、Slice_Identification_Numbersの図14に示すようなリストが生成される。
【0039】
まず、図14に示されるSlice_Identification_Numberの最初の6桁は、そのスライスを生成するのに使用されるFile_Identification_Numberに相当する。Slice_Identification_Numberの最後の桁は、そのストライプまたはファイルスライスのセット内で識別される特定のスライスに相当する。
【0040】
次に、図11のステップ3に示されているように、再構築リストメーカ70は、これらのユーザに関連付けられたグリッド上に現在格納されている全てのスライスのリストを生成するために、再構築予定のボリュームに関連付けられたユーザに関連付けられたグリッド上の全ストレージノード57にクエリを実行する。
【0041】
図11のステップ3に示すように、再構築リストメーカ70は、次に、再構築予定のボリュームによって影響を受けるユーザに関連付けられたグリッド上に格納される全スライスを決定するために、グリッド上の各ストレージノード57にクエリを実行する。各ストレージノード57は、図15に示される形式のテーブルを、再構築リストメーカに返す。
【0042】
再構築リストメーカ70は、再構築予定のボリュームによって影響を受けるユーザに関連付けられたグリッド上に現在格納される全てのSlice_Identiflcation_Numbersを収集する。こうして、図13に示される再構築予定のボリュームによって影響を受ける各ファイルに関連付けられた図14に示される各スライスについて、再構築リストメーカ70は、図15に示すグリッド上に現在格納されているスライスのテーブルの1つにそのSlice_Identification_Numberが表示されるかどうかを決定することによって、そのスライスがグリッド上に現在格納されているかどうかを決定する。
【0043】
グリッド上に現在格納されていない各スライスについて、再構築リストメーカ70は、図11のステップ5に図示されているように、リビルダリスト66へのエントリまたはリビルダリストのセットを追加する。図11のステップ5、6、7および8を完了するためのプロセスは、次に、図9のステップ1、2、3、および4に以前に記載されているプロセスと同様に実行される。
【0044】
こうしたタイプのデータ再構築方法は、全てのオリジナルデータを完全に復元している間に、ストレージグリッドが受容可能な様々な回数のストレージノード利用停止を有する様々な数のストレージノードを有する、信頼性のあるストレージグリッドを生成するために、ソフトウェア開発分野の当業者によって利用可能である
(情報分散ストレージシステムのメタデータ管理システム)
本発明の重要な態様に従って、例えば、図1〜図8に関して上述されているように、グリッドを形成する共通の通信ネットワークに結合されるいくつかのストレージノードに分散および格納される情報の分散およびストレージを管理するために、メタデータ管理システムを使用する。情報分散システムの信頼性を向上させるために、グリッド上のトランザクションのメタデータ属性は、分散データの個別のデータ領域に格納される。
【0045】
上述のように、情報分散システムは、オリジナルデータをデータサブセットに「スライス」し、符号化されたデータサブセットを生成するために、データサブセット上で符号化アルゴリズムを使用する。オリジナルデータを再生成するために、データサブセットおよび符号化されたサブセットを、各ストレージノードおよび各通信チャンネルの利用可能性および性能に応じて、ストレージノードまたは通信チャンネルのいくつかのまたは全てから取得する。情報分散方法に基づく他の公知のデータストレージシステムと同様に、1つ以上のデータサブセットへの不正アクセスは、ソースデータについての量の不十分なまたは利用不可能な情報しか提供しない。例えば、図1に図示されているように、各スライス22、24、26、28、30および32は、異なるデータ値A、B、C、D、EおよびFならびに異なる「符号化されたサブセット」(符号化されたサブセットはアルゴリズムによって生成され、オリジナルサブセットの一部を使用して復元が完了すると、復元できるようデータスライスと共に格納される)cA、cB、cC、cD、cEおよびcFを含む。スライス22、24、26、28、30および32は、インターネット等の通信ネットワーク上を、異なるデジタルデータストレージデバイスまたはストレージノード34、36、38、40、42および44に、連続しておよびそれぞれ格納された一連のデータ転送で、転送してもよい。各データサブセットおよびその対応する符号化されたサブセットを、通信ネットワーク上を個別に転送し、ストレージノードのアレイにおける個別のストレージノードに格納してもよい。
【0046】
「ファイルストライプ」とは、特定のファイルに対応する一組のデータおよび/または符号化されたサブセットである。各ファイルストライプは、利用可能なストレージリソースまたはストレージノードとして、全体のグリッド内において、データストレージデバイスまたはストレージノード57の異なるセット上に格納してもよく、または、ストレージノードは、異なるファイルとして経時的に変化し、グリッド上に格納してもよい。
【0047】
「データ領域」は、特定のクライアント64のデータを含むストレージグリッド49の一部である。グリッドクライアントは、2つ以上のデータも利用してもよい。図11のデータ領域テーブル106は、特定のクライアントに関連付けられた全データ領域を示す。典型的には、特定のグリッドクライアントは、データセキュリティおよびプライバシーを提供するために、他のグリッドクライアントのデータ領域を表示することはできない。
【0048】
図16は、概して参照番号49で識別される、ストレージグリッドの異なるコンポーネントを示す。グリッド49は、インターネット等の通信ネットワークに接続された他のグリッドクライアント(グループまたは個別の「ストレージノード57」)に関連付けられた他のストレージノード56と同様に、特定のグリッドクライアント64に関連付けられたストレージノード54を含む。グリッド49はさらに、クライアントバックアップを管理するためのアプリケーションおよびデータ領域およびその関連付けられた収集に関する復元を含む。
【0049】
概して、「ディレクタ」とは、グリッド49上で実行するアプリケーションをいう。ディレクタは、以下のような様々な目的を果たす。
1.ユーザクライアントログインの中央化されているがコピー可能なポイントを提供する。ディレクタは、ユーザログイン情報を格納するグリッドアプリケーションにすぎない。
2.自律的に格納されたファイルのユーザごとのリストを提供する。全てのユーザクライアントは、1つおよび1つのみのディレクタと対話することによって、各ユーザの、グリッド上に格納されたファイルの全リストを獲得することができる。このファイルリストメタデータは、1つのプライマリディレクタにおいて、いくつかのバックアップディレクタへとコピーされる。
3.どのサイトがユーザスライスを含むかを追跡する。
4.他のノード特性についてのマネージャ認証証明書。
【0050】
グリッド上のアプリケーションはメタデータ管理システムを形成し、プライマリディレクタ58、セカンダリディレクタ60および他のディレクタ62を含む。各データ領域は必ず、任意の時点において、1つのおよび1つのみのプライマリディレクタ58に関連付けられる。グリッドクライアント64が任意のデータ領域演算(保存/取得)を試行する度に、グリッドクライアント64は、そのデータ領域に関連付けられたプライマリディレクタ58と共にその演算を調整する必要がある。他の事柄のうち、プライマリディレクタ58は、各データ領域への限定されたロックを管理する。各プライマリディレクタ58は、少なくとも1つ以上のセカンダリディレクタ60を有する。システムの信頼性を高めるために、任意のデータ領域メタデータ更新(特に、ロックの更新)は、データ領域のプライマリディレクタ58によって同期的にコピーされ、リクエストしているグリッドクライアント64に認知状態を返す前に、そのセカンダリまたはバックアップディレクタ60の全てへとコピーされる。さらに、信頼性の向上のために、グリッド上の他の全てのディレクタ62も、メタデータ更新のコピーを同期的に受信してもよい。こうした構成において、全てのデータ領域メタデータが、グリッド49全体にわたって、効率的にコピーされる。
【0051】
本明細書において使用されている場合、プライマリディレクタ58およびその関連付けられたセカンダリディレクタ60は、さらに、関連付けられたディレクタ60と呼ばれることもある。セカンダリディレクタ60は、グリッドクライアント64データ領域更新の動作中にプライマリディレクタ58が障害を発生した場合に任意の認識されたメタデータ管理更新が失われないようにしている。セカンダリディレクタ60の数およびグリッド49のメタデータアクセス性能の間にはトレードオフが存在する。概して、セカンダリディレクタ60の数が増えると、メタデータ更新の信頼性は高くなるが、メタデータ更新の応答時間は遅くなる。
【0052】
関連付けられたディレクタ66および他のディレクタ62は、どのスライスが各ストレージノード57に格納されているかを追跡しないが、各グリッドクライアント64に関連付けられたストレージノード57を追跡する。特定のノードが各クライアントで認識されると、各グリッドクライアント64に関連付けられたスライスを決定するために、様々なストレージノード57にコンタクトを取ることが必要である。
【0053】
プライマリディレクタ58が大部分のグリッドメタデータを制御しており、ストレージノード57は以下の役割を果たしている。
1.ユーザのスライスを格納する。ストレージノード57は、クライアントのマシンのユーザのファイルシステム構造を反映したファイルシステムのユーザスライスを格納する。
2.データベースにおけるストレージノード57上のユーザごとのファイルのリストを格納する。ストレージノード57は、スライスハッシュ化したシグナチャ(例:MD5s)等の最小メタデータ属性を、データベースにおける各スライスの「行」に関連付ける。
【0054】
グリッドは、一意のストレージボリュームシリアルナンバー(ボリュームID)によって各ストレージノード57を識別し、このため、複数のサーバに分散している場合でも、ストレージボリュームを識別できる。オリジナルデータを再生成するために、データサブセットおよび符号化されたサブセットを、各ストレージノード57および各通信チャンネルの利用可能性および性能に応じて、ストレージノード57または通信チャンネルのいくつかのまたは全てから取得する。各プライマリディレクタ58は、グリッド49上の全てのストレージノード57、つまり、各サイトにおいて利用可能な全ノードのリストを保持する。
【0055】
以下は、バックアップ/復元プロセス中に使用される主なメタデータ属性のリストである。
【0056】
【表2】

【0057】
【表3】

図17は、クライアントがストレージシステムと対話する場合の出来事のデータの流れおよび最上層の図を示す。図18は、プロセスのユーザ情報を追跡するために使用される主なメタデータテーブルについて説明する。
【0058】
図17を参照すると、まずステップ70において、グリッドクライアント64は、グリッドにおいてサーバで実行されているディレクタアプリケーションへのログインで開始される。ログインが成功すると、ディレクタアプリケーションは、ステップ72において、グリッドクライアント64へ、DataspaceDirectorMap92(図18)を返す。ディレクタアプリケーションは、DataspaceIDを決定するために、グリッドクライアントのAccountIDを参照するルックアップテーブル、AccountDataspaceMap93を含む。次に、DataspaceDirectorMap92からグリッドクライアントのプライマリディレクタ(つまり、DirectorAppID)を決定するためにDataspaceIDを使用する。
【0059】
グリッドクライアント64がそのプライマリディレクタ58を認識すると、グリッドクライアント64はDataspaceVolumeMap94(図18)をリクエストし、グリッドクライアント64に関連付けられたストレージノード(つまり、VolumelD)を決定するためにデータ領域IDを使用できる。プライマリディレクタ58は、トランザクションテーブル104(図18)のグリッドクライアント64のために、TransactionContextIDを設定する。TransactionContextIDは、各トランザクション(つまり、グリッドクライアント64の各実行インスタンスまたはセッション)に一意である。特に、TransactionContextテーブル96の一意のトランザクションIDを生成するために、DataspaceDirectorMap92からのデータ領域IDを使用する。グリッド49を有するグリッドクライアントの各セッションにおいて、それぞれのグリッドクライアント別に、全てのトランザクションを追跡するために、トランザクションIDはTransactionContextIDと共にトランザクションテーブル104に格納される。
【0060】
「TransactionContextld」のメタデータ属性は、クライアントが2つ以上のアクティブなトランザクション(関連されていない)と関連を持つことができるTransactionIDとは異なる属性であるが、常に、1つのみの「トランザクションコンテクストId」が、クライアントの1つの実行インスタンスに関連付けられる。こうしたメタデータ属性によって、異なるグリッドクライアントによる同時トランザクションの管理が可能になる。
【0061】
上述のように、プライマリディレクタ58は、各グリッドクライアント64に関連付けられているストレージノード57のリストを維持する。このリストは、ストレージノード(つまり、DataspaceID)のIDおよびグリッドクライアント64のID(つまり、ID)を維持するTransactionContextテーブル96として維持される。プライマリディレクタ58は、プライマリディレクタ58と通信するために、グリッドクライアント64によって使用される「アプリケーション」メタデータ(つまり、Applicationsテーブル104)を含む。トランザクションのタイプ(AppTypeID)を記録するためにApplicationsテーブル64を使用し、例えば、トランザクション(つまり、SiteID)に関連付けられたデータスライスおよびストレージノード57を追加または削除する。
【0062】
任意のデータ転送が開始される前に、グリッドクライアント64は、例えば、その生成日および修正日と共に、ファイルの名前およびサイズ等の、意図したトランザクションに関してプライマリディレクタ58を有するメタデータを保管する。メタデータは、さらに、Transaction Datasoucesテーブル98に示される様々なフィールド等の他のメタデータ属性も含む。(図18)トランザクションが完了するまでトランザクションを追跡するために、トランザクションデータソースメタデータテーブル98を使用する。
【0063】
上記の情報をグリッドクライアント64およびプライマリディレクタ58間で交換後、グリッドクライアント64は、ファイルスライスの転送準備のために、ステップ74において、ストレージノードに接続する。任意の情報を交換する前に、グリッドクライアント64は、トランザクションデータソーステーブル98においてデータフィールドを埋めるために、ステップ76において、そのデータソーステーブル100にメタデータを登録する。
【0064】
次にステップ78において、グリッドクライアント64上で実行されるアプリケーションによって上述されるように、データスライスおよび符号化されたサブセットが生成される。データの任意のデータスクランブル、圧縮および/または暗号化は、データがスライスに分散される前または後に実行されるようにしてもよい。次に、データスライスは、ステップ80においてストレージノード57にアップロードされる。
【0065】
アップロードが開始されると、グリッドクライアント64は、ファイルメタデータ(つまり、DataSourcesテーブル100)を更新するために、トランザクションメタデータ(つまり、トランザクションデータソーステーブル98からのデータ)を使用する。アップロードが完了すると、トランザクションデータソーステーブル98からのデータソース情報がデータソーステーブル100に移動し、ステップ84、86および88において、トランザクションデータソーステーブル98から削除される。このプロセスは本質的に「微小」なものであり、つまり、任意のインスタンスにおいてトランザクションに障害が起こった場合、変更は記録されない。データソーステーブル100は、ユーザのファイルセットの完全性を保持するために改訂番号を含む。
【0066】
図19Aおよび図19Bに図示されている簡単な例は、メタデータ管理システム50の動作を示す。この例は、クライアントはグリッド49の「Myfile.txt」という名前のファイルを保存したいと仮定する。
【0067】
ステップ1:グリッドクライアントは、グリッド49で実行されているディレクタアプリケーションに接続する。ディレクタアプリケーションはこのグリッドクライアント64のプライマリディレクタ58でないため、ディレクタアプリケーションは、グリッドクライアントを認証して、DataspaceDirectorMap92を返す。基本的に、ディレクタは、そのDataspaceIDを検索して対応するDirectorAppID(このクライアントのプライマリディレクタ)を返すために、AccountIDを使用する。
【0068】
ステップ2:グリッドクライアント64がDataspaceDirectorMap92を得ると、ディレクタがそのプライマリディレクタであることが認識される。すると、グリッドクライアント64はこのディレクタアプリケーションに接続し、プライマリディレクタは、グリッドクライアントセッションに一意の、上記で説明したTransactionContextIDを生成する。プライマリディレクタ58はさらに、グリッドクライアント64を、そのDataspaceVolumeMap94(つまり、グリッドクライアント64が接続する必要のあるストレージノード57の数)に送る。グリッドクライアント64は、ファイルメタデータをディレクタ(つまり、トランザクションデータソーステーブルにおいて必要なフィールド)に送信する。
【0069】
ステップ3:クライアントで実行中のアプリケーションによって、「Myfile.txt」のデータスライスおよび符号化されたサブセットは、上記のストレージアルゴリズムを用いて生成される。次に、グリッドクライアント64は、DataspaceVolumeMap94について、グリッド49上の様々なストレージノード57に接続する。次に、グリッドクライアントがそのデータおよび符号化されたサブセットを、グリッド49上の様々なストレージノード57に送信する。
【0070】
ステップ4:グリッドクライアント64が、様々なストレージノード57上のそのファイルスライスを保存して終了すると、グリッドクライアント64は、TransactionDatasourcesテーブル98からのこのトランザクションを削除し、これをデータソーステーブル100に追加するよう、プライマリディレクタアプリケーション58に通知する。システムは、グリッドクライアント64がデータソーステーブル100上にない任意のファイルを取得することができないように構成される。このため、データソーステーブル100上にファイルメタデータを追加することで、ファイル保存/バックアップの動作が完了する。
【0071】
上述の内容から明らかであるように、プライマリディレクタ58は、トランザクションが開始または終了する時間を決定するアプリケーションである。トランザクションはプライマリディレクタ58がストレージノード57のメタデータをグリッドクライアント64に送信する前に開始され、データソーステーブル100上のデータソースについての情報の書き込み後に終了する。この構成により、完全性が保証される。このように、プライマリディレクタ58がトランザクションに完了したと報告する場合、そのトランザクションを表示する任意のアプリケーションは、全ての他のストレージノードがトランザクションのために適正に更新されていることを認識する。この「アトミックトランザクション(Atomic Transaction)」の概念は、ストレージシステムの完全性を維持するために重要である。例えば、更新トランザクション全体が完了していない場合、および異なるストレージノードの全てが適切に「同期されている」訳ではない場合、少なくとも、動作中のグリッドクライアント64のデータ領域テーブル100についてストレージシステムは混乱状態になっている。そうでない場合、トランザクションが任意の理由で中断された(例:バックアッププロセス中にクライアントのPCの電源をオフにした)ために不完全な状態となっている場合、システムの全体的なデータ保全性はかなり迅速に悪化する。
【0072】
本発明の多くの修正例および変形例が、上記の教示に照らして可能であることが明らかである。このように、添付の特許請求の範囲内において上記の詳細な説明以外にも、本発明を実行可能であることが理解されよう。
【0073】
特許請求の内容および米国の特許証によって保証されることが望ましい内容は、特許請求の範囲のとおりである。
【図面の簡単な説明】
【0074】
【図1】図1は、本発明に従う、6個のストレージノードを有する例示的なデータストレージシステムのブロック図であり、オリジナルデータファイルがどのようにファイル共有に分散され、符号化され、個別のデジタルデータストレージデバイスまたはノードに転送されるかを示す。
【図2】図2は、図1と類似しているが、オリジナルデータセットを生成するために例示的な6個の全ノードからのデータサブセットがどのように取得および復号されるかを示している。
【図3】図3は、図2と類似しているが、6個のデジタルデータストレージデバイスのうちの1つの障害の状態を示している。
【図4】図4は、図3と類似しているが、6個のデジタルデータストレージデバイスのうちの3個の障害の状態を示している。
【図5】図5は、例示的な6個のデジタルデータストレージデバイスに格納されているデータを再生成するために利用可能な、本発明に従う例示的なテーブルである。
【図6】図6は、2個のノードの利用停止の状態のために、例示的な6個のノードのストレージデータストレージシステムの復号式をリスト表示する例示的なテーブルである。
【図7】図7は、図6と類似しているが、3個のノードの利用停止の状態について示している。
【図8】図8は、図2と類似しているが、データをストレージグリッドに書き込み中の、6個のデジタルデータストレージデバイスのうちの1個の障害の状態について示している。
【図9】図9は、新しいデータのストレージグリッドへの書き込み中にストレージリソースが利用不可能である場合にデータを再構築する、例示的なデータ再構築システムのブロック図である。
【図10】図10は、再構築リストテーブルのエントリをリスト表示する、例示的なテーブルである。
【図11】図11は、ストレージリソースが置換された場合にデータを再構築する、例示的なデータ再構築システムのブロック図である。
【図12】図12は、ボリューム識別番号およびユーザ識別番号のマッピングテーブルにおけるエントリをリスト表示する例示的なテーブルである。
【図13】図13は、ユーザ識別番号およびファイル識別番号マッピングテーブルのエントリをリスト表示する例示的なテーブルである。
【図14】図14は、特定のファイルに関連付けられたスライス識別番号のテーブルのエントリをリスト表示する例示的なテーブルである。
【図15】図15は、ユーザ識別番号およびスライス識別番号マッピングテーブルのエントリをリスト表示する例示的なテーブルである。
【図16】図16は、本発明に従う、情報分散ストレージシステムと共に使用するメタデータ管理システムの様々な機能要素を示す、本発明に従う例示的な図である。
【図17】図17は、分散データストレージグリッド上に格納されているデータのメタデータを保守するためのプロセスを示す例示的なフローチャートである。
【図18】図18は、ユーザトランザクションおよびユーザファイルセットルックアップ時に使用される必須のメタデータコンポーネントを示す。
【図19A】図19Aおよび図19Bは、システムの動作を示す。
【図19B】図19Aおよび図19Bは、システムの動作を示す。

【特許請求の範囲】
【請求項1】
N個の文字の文字列を格納する方法であって、該方法は、
(a)n個のデータスライスにN個の文字の文字列をセグメント化するステップと、
(b)該n個のデータスライスのそれぞれを、該データスライスの符号化された値と共に、異なるストレージノードへ格納するステップと、
(c)1つ以上のストレージノードが利用不可能である場合には、該データスライスを再生成するステップと
を包含する、方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19A】
image rotate

【図19B】
image rotate


【公表番号】特表2009−533759(P2009−533759A)
【公表日】平成21年9月17日(2009.9.17)
【国際特許分類】
【出願番号】特願2009−505374(P2009−505374)
【出願日】平成19年3月22日(2007.3.22)
【国際出願番号】PCT/US2007/007120
【国際公開番号】WO2007/120429
【国際公開日】平成19年10月25日(2007.10.25)
【出願人】(508263040)クレーバーセーフ, インコーポレイテッド (1)
【Fターム(参考)】