【文献】
山下香欧,Omneonアクティブコンテンツサーバー MediaGrid,ビデオα,日本,写真工業出版社,2006年 6月26日,第22巻 第7号,pp.123〜128
(58)【調査した分野】(Int.Cl.,DB名)
前記変形は、エクステントに対する1つまたは複数のポインタを、1つまたは複数のエクステントのデータを移動することなく変更することにより、前記1つまたは複数の選択されたストリームに影響を与える、請求項1に記載の方法。
前記複数の変形は、エクステントに対する1つまたは複数のポインタを、1つまたは複数のエクステントのデータを移動することなく変更することにより、前記1つまたは複数の選択されたストリームに影響を与える、請求項7に記載の方法。
前記複数の変形は、エクステントに対する1つまたは複数のポインタを、1つまたは複数のエクステントのデータを移動することなく変更することにより、前記1つまたは複数の選択されたストリームに影響を与える、請求項15に記載の方法。
【発明を実施するための形態】
【0007】
本発明の主題を、本明細書において法的要件を満足させる特異性と共に記載する。しかしながら、記載自体は、本特許の範囲を限定することを意図しているわけではない。むしろ、本発明者は、請求される主題が他の方法で具現化されうることも意図し、それには、他の現在または未来の技術と併せて、異なるステップ、または本文書に記載されるものと同様のステップの組み合わせが含まれる。さらに、用語「ステップ」および/または「ブロック」は、採用される方法の異なる要素を暗示するために本明細書において使用されるが、これらの用語は、個々のステップの順番が明示的に記載される場合を除き、本明細書に記載される種々のステップ間でのいかなる特定の順番も暗示するものとして解釈してはならない。
【0008】
本発明の実施形態は、ストレージノードのネットワーク全体に亘って分散されるように記憶されるデータの複合変形を行うことに向けられる。大規模なネットワーク全体に分散される複数のノードから成るネットワークにおいて、データの各ユニットは、潜在的には同時に複数のクライアントセッションにより、アクセスすることができる。さらに、ネットワーク全体の異なるデータに亘って整合性が保持される。データにアクセスする全てのクライアントセッションに亘ってデータの整合性のある表示を維持するために、データの変形を調整する必要がある。データの変形についての調整をしなければ、2つのクライアントセッションが2つのデータを整合性無く変形することが可能になってしまい、予測不可能な結果を招く。さらに、複数の相互に依存する変形をアトミックに適用することをしなければ、変形を行うクライアントセッションの障害によりデータが整合性の無いままにされ、または、第2のクライアントセッションが、中間的な整合性の無い状態を表すデータを読み込むことになる。
【0009】
これらのタイプの不整合を防ぐために、データの変形を調整することが根本的な操作に要求される。特に、個々の変形を独立させて適用することにより一時的な整合性の無い状態が作り出される場合、複数の相互に依存する変形をアトミックなトランザクションとして1つまたは複数のデータに適用する機能を有することが望ましく、それにより、分散ネットワークにおいて他のクライアントセッションからのデータの表示における不整合を防ぐことができる。さらに、複合変形のうちの1つまたは複数が成功裏に適用できない場合には、複合変形の組全体を取り消すことができることも望ましく、それにより、部分的に成功したトランザクションから得られるデータの表示における不整合を防ぐことができる。加えて、望ましくは、特定の変形が成功裏に適用される前に満足すべき1つまたは複数の予期される前提条件を特定することができ、それにより、分散ロックの使用を必要とせずに、独立した潜在的に矛盾するトランザクションの適用を「楽観的な」方法で、クライアントセッションが調整することができる。
【0010】
一例として、クライアントセッションXおよびクライアントセッションYの両方が、データAの値を読み込むこと、および、データAの前の値と、それぞれのクライアントセッション(クライアントセッションXのデータC
xおよびクライアントセッションYのデータC
y)により判定される他の外部のデータとに基づくデータAとデータBのための新しい値を計算すること、が求められるアルゴリズムを実行しているとする。そして、AとBの新しい値は、アトミックな操作として書き込まれる。しかし、データAの値の読み込みと、データAとデータBの新しい値の書き込みとの間にはロックが保持されないため、クライアントセッションXおよびクライアントセッションYの両方が、データAを同時に読み込み、そして、データAとデータBのための新しい値を独立して計算することが可能になる。最初にクライアントセッションXが、次にクライアントセッションYが、アトミックな変形トランザクションを使用してデータAとデータBのためのそれぞれの新しい値を書き込もうとし、双方とも成功するであろう。しかし、クライアントセッションXにより適用される変形の効果は、クライアントセッションYにより適用される変形により事実上取り消され、結果的に外部のデータに対して潜在的な不整合がもたらされる。このことが起こらないようにするために、従来の多くのネットワークベースのファイルシステムでは、データAとデータBの書き込みの間を通して、データAの読み込み全体にクライアントセッションが分散ロックを求めることを要求し、それにより、クライアントセッションXがデータAとデータBの更新を完了するまで、クライアントセッションYがデータAの値の読み込みを行わないようにする。しかし、分散ロックの使用により、著しいオーバヘッドが取り込まれ、その結果、より脆弱な分散システムとなり、例えば、クライアントセッションXがロックの解除に失敗すると、クライアントセッションYは、無期限に進展が妨げられることになる。本発明では、クライアントセッションXおよびクライアントセッションYが、データAとデータBのための新しい値を書き込もうとする時に満足すべき前提条件を特定することを可能にすることにより、明示的に分散したロックを必要とはしない。本例において、クライアントセッションXおよびクライアントセッションYはそれぞれ、データAとデータBが置き換え可能にされる前は、データAの値は、読み込まれてから変更されていないことが真でなければならない、ということを要求する。データAの読み込みと、データAとデータBの書き込みとの間に変形が生じないため、クライアントセッションYは、その更新に成功するであろう。しかし、データAの値が、データAの読み込みと更新との間に変更したため、クライアントセッションXは、いずれのデータの更新も成功しないであろう。クライアントセッションXは、操作を中止すること、または、データAをもう一度読み込むことにより全体のシーケンスを再スタートすることも自由にできる。いずれの場合においても、全てのデータは、内部的にも、外部の状態とも整合性が保たれる。
【0011】
ネットワークに記憶されている特定のデータは、異なる多くの形式をとることができる。一般的な形式には、ファイル、および類似ファイルのグループがある。本発明のいくつかの実施形態によれば、データはストリームに組織化され、各ストリームは、種々雑多なストリームメタデータのプロパティ(例えば、ストリーム名、アクセス制御ポリシー、満了時間等)から成るデータエンティティであると共に、エクステントに対する順序付けられた一連の参照である。各エクステントは、連続する順序付けられた一連の付加ブロックから成る。各付加ブロックは不変であり、かつ、連続する順序付けられた一連のバイト値から成る。新しいエクステントへの参照は、ストリームの最後に付加してもよいが、一度付加すると、エクステント参照はストリームから消去することができない。複数のストリームが同じエクステントへの参照を含むことができ、あるいは、単一のストリームでさえ、同じエクステントへの複数の参照を含むことができる。新しい付加ブロックは、エクステントが封印されるまで、そのエクステントに付加してもよく、その後、そのエクステントは不変となる。エクステントは、一度封印されると、その封印を解くことはできない。付加ブロックは、エクステントが封印されたかどうかに関わらず、変形しても、エクステントから削除してもならない。従って、ストリームおよびエクステントは大きさが拡大するのみである。
【0012】
本発明の一実施形態によれば、ストリームは、エクステントのデータを大きなグループの独立した、疎結合エクステントサーバ上に記憶すること、および、各ストリームを記述するメタデータを集中型サーバまたは小規模の密結合サーバグループ上に記憶することにより、ファイルシステムにおいて組織化される。データをエクステントに付加するには、クライアントセッションは正しい独立したエクステントサーバと対話をし、その結果として、エクステントへの付加は、高度に拡張可能であるが、個別のエクステントへの付加の調整を容易にすることはない。対照的に、全ての関係するストリームのメタデータは、集中型サーバ上で保持されるため、ストリームメタデータへの更新を効率的に調整することが可能になる。
【0013】
一例として、各ストリームに関連するメタデータには、現在のストリーム名、グローバル一意識別子(GUID)、アクセス制御ポリシー、満了時間、およびストリームを編成するエクステントへの参照の順序付けられたリスト、等の情報を含むことができる。この組織の1つの利点は、ネットワークにおいて任意のデータを移動させる必要なく、1つのストリームから別のストリームにエクステント参照をコピーできることである。その代わり、参照リストのみが、集中型サーバ上に記憶されるメタデータ内で変更される。複製操作は、ストリームメタデータに影響を与えるだけであるため、アトミックな複合変形の一部として効率的に含むことができる。本発明の他の実施形態において、メタデータ自体を、ネットワークにおいて複数のノード間に分散させることができる。当業者には当然のことながら、本発明はストリーム以外のデータ形式にも適用することができる。
【0014】
いくつかの実施形態によれば、本発明は、複数のストリーム前提条件制約および変異的な操作を操作の一覧にバッチし、1つのアトミックな複合変形として実行させる機能を提供する。操作には、ストリームメタデータ前提条件制約、ストリームの作成、ストリームの消去、ストリームのリネーム、他のストリームからの既存のエクステント参照の複製、および、満了時間、読み込み専用フラグ、アクセス制御情報および複写のポリシー、等の種々雑多なストリームプロパティの設定が含まれる。加えて、本発明のいくつかの実施形態は、同じ複合変形における他の変形操作への参照に関して、ストリームをまたがる操作を示す機能を提供する。例えば、複合変形において、複合変形により作成されるストリームに追加の操作を適用してもよい。同様に、複合変形において、複合変形の操作により消去またはリネームされるストリームに追加の操作を適用してもよい。複合変形におけるそれぞれ個々の操作レコードを対象のストリームアイデンティティに関連付けることにより、また、ストリームをまたがる操作において、実行中の複合変形におけるソースストリームのそれぞれのレコード指標によって、ソースストリームを参照することにより、複合変形中にアイデンティティが作成されたストリームまたは名前が変更されたストリームを、複合変形の過程の任意の時に参照することができる。例えば、実行されるべき操作の一覧に5個のレコードがあり、3番目の操作が新しいストリームを作成している場合、他の操作のいずれかが、そのストリームを操作3のストリームとして参照することができる。
【0015】
一実施形態によれば、本発明は、複合変形における操作として非変形前提条件制約を示す機能を提供する。これらの操作自体では、ストリームの状態に何らの変化ももたらさないが、前提条件が満足されない場合に、複合変形全体を機能させないようにすることができる。これにより、複数のクライアントが、外部のロックまたは他の同期機構を使用する必要なく、ストリーム状態の調整された取扱いを実装することが可能になる。特定されうる前提条件の例には、ストリームの存在、ストリーム名、ストリームアイデンティティ(リネームされても保存されるが消去/再作成により変更される一意的ID)、ストリームバージョン番号、ストリーム満了時間、およびエクステント参照カウントがある。
【0016】
さらに別の実施形態によれば、本発明は、アトミックな複合変形の一部として、ストリーム内容の一部を新しいストリームに効果的に複製する機能を提供する。ストレージノードのネットワーク全体に分散される連続データブロック(エクステント)への順序付けられた一連の参照として、ストリームをモデル化することができる。ストリームは、単にその内容を読み込むこと、および、同じデータを用いるが、新しいエクステントに新しいストリームを書き込むことによりコピーすることができる。しかし、大量のデータを1つのエクステントから別のエクステントにコピーすることだけが、複数のネットワークノードに関与する高価なネットワーク/ディスク集約的な活動なのではなく、同じエクステントが複数のストリームにより参照されてもよい。単にエクステントを複製することにより、ストリームの非常に大きな部分を異なるストリーム(場合によっては異なる位置の)に効果的に複製することができる。この動作は軽く、かつ、実際のストリームデータの内容をコピーする必要が無い。さらに、このタイプの複製を実行するために扱われる状態の全てを、中央メタデータサーバにより保持することができる。本モデルにより導かれることは、ストリーム内容の潜在的に大きな部分を、1つのストリームから別のストリームに複製することを、長期間保持されるロックを必要とせずに、アトミックな複合変形の一部として実行することができるということである。クライアントは、ストリームの連結、ガーベジコレクション、ログ/ジャーナルのトランケーション、単一インスタンス化、およびエイリアシングを含む多くの目的でこの機能を使用することができる。加えて、多数の関係のない操作を一緒にアトミックな複合変形内にバッチして、特定の量の作業を完了させるのに必要なトランザクションの数を減少させることができる。メタデータ変形は耐久性トランザクションであるため、完了したと見なすことができる前に永続ストレージに重複してコミットされなければならない。耐久性ストレージ(ディスク)のコミット操作の待ち時間/パフォーマンスは、トランザクションシステムのスケーラビリティ/パフォーマンスにおける最大の制限要因であり、また、多くの操作を単一のコミットに組み合わせる機能は利点とすることができる。また、サーバは、任意の変更を適用する前に全ての操作の検証ができるため、そうでなければ不可能であった最適化を実装することができる。
【0017】
いくつかの実施形態によれば、本発明は、「悉無律型」セマンティクスおよび「同時操作」を表す機能を促進する。悉無律型セマンティクスは、複合変形のいかなる操作も機能しない場合、全体の複合変形が機能しないこと、および、変形に対して選択されるストリームの状態が複合変形の状態より前の状態のままにされることを保証する。これにより、クライアントは、状態の整合性と共に複合変形のアトミック性にも信頼を置くことができる。複合変形システムにおける同時操作では、操作が厳密にシーケンシャルには実行されない場合には難しく、または、非効率的である単一のアトミックな複合変形で、特定の組の変形が生じることになる。一例として、同じ複合変形において、1つの操作でストリーム「A」を「B」にリネームし、もう1つの操作でストリーム「B」を「A」にリネームする(すなわち、2つの操作で2つのストリームをネームスペースにスワップする)ことが可能である。これら2つの操作は、最初の操作がネームスペースの衝突により失敗するためシーケンシャルに実行されない場合は成功しない。スワップをシーケンシャルに実行することは、3つの操作および一時的なストリーム名の導入を必要とする(すなわち、「A」を「C」にリネームし、「B」を「A」にリネームし、「C」を「B」にリネームする)。それは、1つの操作が失敗してその前に他の操作が成功している場合、部分的に完了した複合変形を「巻き戻す」処理をさらに複雑にする(悉無律型セマンティクス)。アトミックな複合変形は、全て同時に適用される順序付けされない1組の操作として扱われ、中途半端に整合した状態をクライアントが示す必要性を取り除き、サーバにアトミックな複合変形の実装を最適化させる。
【0018】
本発明のさらに別の実施形態によれば、本発明は、アトミックな複合変形を使用して、クライアントがアクセス可能な簡素な分散ロックおよび分散リースを実装する機能を提供する。ストリームメタデータには、満了時間が延長されない限り、特定の期間が過ぎるとストリームが自動的に消去されるようにするために使用することができる満了時間プロパティが含まれる。アトミックな複合変形と併せて満了時間を使用することにより、1組のクライアントが、合意された名前を有する新しいストリームを作成しようとすることによりリースまたはロックを獲得するために競合することができ、成功裏に作成済みのストリーム上で満了時間を延長することによりリースを延長することができる。自作成のリースストリームの存在およびその合意された名前の継続所有を複合変形への付加的前提条件として追加することにより、リース/ロックの所有権を、任意の他のストリームメタデータのアトミックな複合変形に対して前提条件として効果的に追加することができる。クライアントが、リース/ロックを保持しながら機能しない場合、リースまたはロックのファイルは、満了時間が来ると自動的に消去され、別のクライアントがリースを請求できるようになる。リースまたはロックが通常のストリームとして表されるので、ストリームに利用可能なツールおよび機構(例えば、ネームスペースの組織、アクセス制御、ブラウジング/閲覧、等)は、本来、リースおよびロックにも同様に利用可能である。
【0019】
従って、本発明の一実施形態は、単一のアトミックな単位として、1つまたは複数のストリームに対する複合変形を実行する方法を実行するためのコンピュータ実行可能命令を具現化するコンピュータ可読記憶媒体に向けられる。1つまたは複数のストリームが、選択されたストリームとして変形のために選択される。選択されたストリームに関連する1つまたは複数のメタデータに対してロックが取得される。選択されたストリームに関連する名前が、選択されたストリームから切り離される。複数の変形が、選択されたストリームに対して実行される。選択されたストリームに関連する名前は、選択されたストリームに再び連結される。1つまたは複数の選択されたストリームに関連するメタデータに関連するロックが解除される。
【0020】
別の実施形態によれば、本発明は、単一のアトミックな単位として、1つまたは複数のストリームに対する複合変形を実行する方法を実行するためのコンピュータ実行可能命令を具現化するコンピュータ可読記憶媒体に向けられる。1つまたは複数のストリームが、選択されたストリームとして変形のために選択される。選択されたストリームに関連するメタデータに対してロックが取得される。選択されたストリームのそれぞれに関連する名前が、選択されたストリームから切り離される。第1の変形が、選択されたストリームに対して実行される。第2の変形は、実行されると不整合を生み出すものと判定される。選択されたストリームに対する第1の変形が反転される。選択されたストリームに関連する名前は、選択されたストリームに再び連結される。選択されたストリームに関連するメタデータに対するロックが解除される。
【0021】
さらに別の実施形態によれば、本発明は、単一のアトミックな単位として、1つまたは複数のストリームに対する複合変形を実行する方法を実行するためのコンピュータ実行可能命令を記憶するコンピュータ可読媒体に向けられる。1つまたは複数の付加専用ストリームが、選択されたストリームとして変形のために選択される。選択されたストリームに関連するメタデータに対してロックが取得され、ロックを取得するステップには、所定の名前を有するストリームをロックストリームとなるように変形するステップが含まれる。各選択されたストリームに関連する名前は、その関連する選択されたストリームから切り離される。第1の変形が選択されたストリームに適用される。第2の変形は、適用されると不整合を生み出すかどうかが判定される。変形が不整合を生み出すと判定される場合、選択されたストリームに対する第1の変形が反転される。第2の変形が不整合を生み出さない場合、第2の変形が選択されたストリームに適用される。選択されたストリームに関連する名前は、選択されたストリームに再び連結される。選択されたストリームに関連するメタデータに関連するロックが解除される。
【0022】
本発明の実施形態の概要を記載したが、本発明の実施形態を実装することができる例示的動作環境について、本発明の種々の態様のための一般的コンテキストを提供するために以下に記載する。最初に特に
図1を参照すると、典型的なネットワークトポロジ100は、多くの相互接続されるネットワークセグメント101、102、103、104から成り、それぞれのセグメントは、広域ネットワーク115に接続される。ネットワークセグメント101は、データストレージに参加するホスト106および2つのノード105、107を有する。ネットワークセグメント102は、データストレージに参加する2つのノード108、109を有する。ネットワークセグメント103は、データストレージに参加するホスト111および2つのノード110、112を有する。最後に、ネットワークセグメント104は、データストレージに参加する2つのノード113、114を有する。
【0023】
一例として、ネットワーク上の任意のノードが、ネットワーク全体に記憶されるストリームを記述するメタデータの記憶場所としての役割を果たすことが可能であり、その各ストリーム内にエクステント参照のリストが含まれ、また、ノードの組は各エクステントを保持する。ホスト111およびホスト106上のクライアントセッションは、ノード112およびノード109上に記憶されているエクステントインスタンスを有するストリームに対するアトミックな複合変形を同時に実行したい。ノード110は、メタデータコントローラとして機能しているものとすることができる。この場合、ホスト111および106の両方は、ノード110に所望のストリームのメタデータへの変更を行わせる要求を同時に送り、競争が起こる。前提条件制約を規定することにより、ノード110により成功裏に処理される最初の要求を発したノードならどちらでも、ストリームに関連するメタデータを変形することができる。2番目のノードの要求は失敗し、2番目のノードは、例えば、操作を中止することまたは整合性のある時点から再スタートすることにより、前提条件が満たされないことに対処するよう要求される。これは楽観的な並行モデルにおいて望まれる挙動である。最初および2番目のノードは、複数の異なるトランザクションを伴うより複雑な動作を調整する必要がある場合、その複合変形要求の専用のロック/リースのストリームへの前提条件およびその取扱いを含む、ロックおよびリースを確立することが可能であり、失敗したノードに対して、ロックが解除されるまで待ち、その変形を実行するように要求する。
【0024】
ここで
図2を参照すると、例示的ノードが示され、コンピュータデバイス200として一般的に指定される。コンピュータデバイス200は、適切なコンピュータ環境の一例にすぎず、本発明の使用または機能性の範囲について任意の制限を示唆するわけではない。また、コンピュータデバイス200は、例示されるコンポーネントの任意の1つまたは組み合わせに関する任意の依存性または要件を有するものとして解釈してはならない。
【0025】
本発明は、携帯情報端末または他のハンドヘルドデバイス等の、コンピュータまたは他のマシンにより実行されるプログラムモジュール等のコンピュータ実行可能命令を含む、コンピュータコードまたはマシン使用可能命令の一般的コンテキストで記載してもよい。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含むプログラムモジュールは、特定のタスクを実行するコード、または特定の抽象データ型を実装するコードを参照する。本発明は、ハンドヘルドデバイス、家庭用電化製品、汎用コンピュータ、より専門的なコンピュータデバイス等を含む様々なシステム構成において実施してもよい。本発明は、また、通信ネットワークを介してリンクされるリモート処理デバイスによりタスクが実行される分散コンピュータ環境において実施してもよい。
【0026】
図2を参照すると、コンピュータデバイス200には、ネットワークデバイス202、CPU203、メモリ204、記憶装置205、および入力/出力(I/O)デバイス206を直接または間接的に連結するバス201が含まれる。バス201は、1つまたは複数のバスであってもよい(アドレスバス、データバス、またはその組み合わせなど)。
図2の種々のブロックが、明確にする目的で線によって示されるが、実際には、それほど明確に種々のコンポーネントを輪郭で描けるものではなく、例えて言うなら、線はより正確には、グレーまたはファジーである。例えば、多くのプロセッサがメモリを有する。我々は、そのようなことは従来技術の特質であることを認識し、また、
図2の図は、本発明の1つまたは複数の実施形態に関連して使用することができる例示的コンピュータデバイスの、単なる図示であることを繰り返す。「ワークステーション」「サーバ」「ラップトップ」「ハンドヘルドデバイス」等のカテゴリ間に区別は無く、全てが
図2の範囲内であり、「コンピュータデバイス」または「ノード」に対する参照内であることが意図される。
【0027】
コンピュータデバイス200には、通常、様々なコンピュータ可読媒体が含まれる。コンピュータ可読媒体は、コンピュータデバイス200がアクセスできる任意の利用可能な媒体でよく、揮発性および不揮発性媒体、着脱可能および着脱不能媒体を含む。限定するわけではないが、一例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含んでもよい。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶するための任意の方法または技術で実装される揮発性および不揮発性媒体、着脱可能および着脱不能媒体の両方が含まれる。コンピュータ記憶媒体には、限定するわけではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、DVD(digital versatile disk)もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用することができ、コンピュータデバイス200がアクセスできる任意の他の媒体が含まれる。
【0028】
メモリ204には、揮発性メモリ形式のコンピュータ記憶媒体が含まれる。例示的ハードウェアデバイスには、RAM等の固体メモリが含まれる。記憶装置205には、不揮発性メモリ形式のコンピュータ記憶媒体が含まれる。メモリは、着脱可能でもよいし、着脱不能でもよいし、またはその組み合わせでもよい。例示的ハードウェアデバイスには、固体メモリ、ハードドライブ、光ディスクドライブ等が含まれる。コンピュータデバイス100には、メモリ204、記憶装置205、またはI/Oデバイス206等の種々のエンティティからデータを読み込む1つまたは複数のプロセッサ(CPU)203が含まれる。I/Oデバイス206は、内蔵できるものもある入力コンポーネントおよび出力コンポーネントを含む他のデバイスに、コンピュータデバイス200を論理的に連結することができる。例示的コンポーネントとしては、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、プリンタ、無線デバイス等がある。コンピュータデバイス200には、ネットワークデバイス202が含まれ、他のネットワークデバイスとの通信を容易にする。ネットワークデバイス202は、追加的I/Oデバイスとしての役割を果たす。
【0029】
当業者には当然のことながら、ノードまたはストレージノードと呼ばれるコンピュータデバイスのネットワーク内に記憶されるデータは、多くの方法でフォーマットすることができる。一例として、一般的には、音楽ファイル、映像ファイル、ワープロ文書等の独立したデータファイルは、分散型手法で記憶される。本発明の一実施形態によれば、データは、ストリームのコレクションとしてモデル化され、これは従来の階層的なネームスペースに組織化してもよい。
図3は、データストレージに使用される例示的データ形式としてのストリーム300を示し、本発明のいくつかの実施形態従って、ストリーム300に対してアトミックな複合変形を行うことができる。ストリーム300は、論理的に関連付けられるデータのコレクションである。本発明のいくつかの実施形態によれば、ストリーム300は、付加専用であり、大きさが非常に大きく、ネットワークノードの個々の記憶装置の何倍もの容量を超すものもある。ストリーム300は、ハンドルネーム、すなわち名前によりアクセスされ、ストリーム300等の各ストリームにはリテンション・アクセスポリシーがある。本発明のいくつかの実施形態によれば、各ストリームは、また、関連するグローバル一意識別子(GUID)を持ち、これはストリームの有効期限の間、変更不可である(すなわち、変更可能な名前とは異なり、GUIDは恒久的にその関連するストリームを識別する)。ストリーム300は、例えば、一連のバイトとして扱うことができる。ストリーム300は、順序付けられた一連のエクステント301、302、303から成る。エクステント301、302、303は、ストリーム300に対する割り当ての単位である。エクステント301、302、303は、付加専用でもあり、各エクステント301、302、303は、グローバル一意識別子(GUID)で識別される。エクステント301、302、303は、ネットワーク内の多くのノード間に分散することができる。エクステント301、302、303は、通常、複製され、エクステント301、302、303のレプリカは、ネットワーク内の多くのノード間に分散することができる。エクステント301、302、303は、大きさに制限があり(例えば2GB)、多くの目的のためのパーティションの単位である。エクステント301、302、303の大きさは、ストリームを、障害復旧、負荷バラシング、複写,検索、および/またはデータマイニングのために並行して処理することができるチャンク(一まとまりのデータ群)に分割するために、制限されることがある。エクステントの大きさはまた、ストレージシステムの障害復旧モードにより制限されることがある。
【0030】
本発明のいくつかの実施形態によれば、ストリーム300は、各エクステント、および/または各エクステントのレプリカの記憶場所(単数または複数)への参照を記憶する。例えば、エクステント301のレプリカがノード304上に記憶され、エクステント302および303のインスタンスが両方ともノード305上に記憶される。エクステントは複製可能であることに留意されたい。それらのシナリオにおいて、エクステントデータには、複数の記憶場所でアクセスしてもよく、そこはレプリカの記憶場所である。エクステントのGUIDは変更されないが、そのレプリカの数と記憶場所は時と共に変更してもよい。明確かつ簡素にする目的で、本例は、エクステントが複製されないシナリオを単に示す。参照を記憶することの1つの利点は、エクステントに関連するデータのいずれもコピーまたは移動させることなく、エクステント参照をストリームに追加できることである。一例として、エクステント301の別のコピーをストリーム300に追加する場合、ノード304上のデータを変更することもコピーすることも必要ではない。その代わり、付加的エクステント参照が、既にストリーム300にあるエクステント参照のリストに追加される。
【0031】
ストリームはメタデータにより表され、それ自体を、本発明の一実施形態に従って、ネットワーク全体に分散、または集中型サーバに記憶させることができる。ここで
図4を参照すると、一例として、メタデータ400はストリームについての情報を含有するデータのコレクションである。本発明のいくつかの実施形態によれば、ストリームに関連するメタデータ400には、現在ストリーム401に関連する名前が含まれる。ストリームの名前は、データにアクセスするクライアントが使用するディレクトリ構造内にストリームをロケートする(位置づける)。ストリームが移動かつ変形されると、名前を変更することができる。本発明のいくつかの実施形態によれば、ホストは名前401でストリームにアクセスする。メタデータ400には、また、GUID402が含まれ、これは、グローバルに一意的であり、また、永久的かつ排他的にストリームに関連付けられる識別子である(すなわち、ストリームに対するGUID402は決して変更されず、2つのストリームが同じGUIDを共有することは無い)。ストリームに関連するメタデータ400は、また、ストリームを編成するエクステント参照403のリストを含有する。各エクステント参照403は、特定のエクステントを識別し、クライアントまたはサーバが、そのエクステントの全てのレプリカをネットワーク内にロケートすることを可能にし、実際のデータへの物理的アクセスを提供する。
【0032】
アトミックな複合変形は、1つまたは複数のストリームに対する複合変形を実行するステップを含む。一例として、変形には、新しいストリームを作成する工程、ストリームを消去する工程、ストリームをリネームする工程、2つまたはそれ以上のストリームを連結させる工程、既存のストリームのコピーを作成する工程、およびストリームのエクステントのサブセットを第2のストリームにコピーする工程が含まれる。当業者には当然のことながら、アトミックな複合変形を形成するために組み合わせて使用することができる多くの他の可能性のある変形がある。ここで
図5に移り、アトミックな複合変形の例について考察する。命令の複合変形の組503は、ストリーム501を「A」から「B」にリネームする工程と、ストリーム502を「B」から「A」にリネームする工程から成る。当業者には当然のことながら、標準データコピー法を使用すると、そのような変形を実行するための一時的記憶領域が必要となり、障害からの復旧を複雑にするが、それは、復旧の論理では、エラーの場合に一時的記憶領域をクリンアップする必要があり、さらにストリーム501およびストリーム502の両方が、障害からの復旧後、グローバルに整合性のある状態に確実に達する必要があるためである。しかし、本発明の一実施形態によれば、アトミックな複合変形は、1つのステップであるかのように実行され、それにより、ストリーム501およびストリーム502両方は障害に直面しても整合性の状態にあり、かつ、クリンアップすべき一時的記憶領域がないという点において、復旧の論理は簡素化される。一例として、ストリーム501およびストリーム502の名前(それぞれ「A」および「B」)が、最初にそのメタデータから削除され、両ストリームは名前無しとなる。これにより、ストリームがストリームのネームスペースから切り離され、複合変形を行うことができる。
【0033】
変形の組503における第1の変形509が実行される。この場合、ストリーム501は「B」とリネームされるはずである。これを達成するため、ストリーム501の名前が「B」と設定され、ストリーム501は、ストリームのネームスペースに再び取り付けられる。これは、ネームスペースの衝突が無ければ成功するが、何故なら、名前「B」は、ストリーム502がストリームのネームスペースから取り去られた時に利用可能になるからである。変形の組503からの第2の変形512も実行される。この場合、ストリーム502は「A」とリネームされるはずである。これを達成するため、ストリーム502の名前は「A」と設定され、ストリーム502は、ストリームのネームスペースに再び取り付けられる。これは、ネームスペースの衝突が無ければ成功するが、何故なら、名前「A」は、ストリーム501がストリームのネームスペースから取り去られた時に利用可能になるからである。
【0034】
ここで
図6を参照すると、フロー図が与えられ、本発明の一実施形態に従う、1つまたは複数の選択されたストリームに対するアトミックな複合変形を実行するための方法600が示される。ブロック601にて示すように、1つまたは複数のストリームが変形のために選択される。当業者には当然のことながら、変形のためにストリームを選択できる方法は多数ある。一例として、ある方法の適用により、現在の名前またはGUIDによりそれぞれが参照されるストリームのリストが提供され、それらは変形のために選択されるストリームとして含まれるべきものである。名前および/またはGUIDの一覧を使用して、ストリームに関連するエクステント参照リストを含む、各ストリームのメタデータを見つける。本発明のいくつかの実施形態によれば、各ストリームの物理的記憶場所も、メタデータ内の情報に基づきロケートされる。
【0035】
ブロック602に示すように、変形のために選択された1つまたは複数のストリームのそれぞれに関連するメタデータに対してロックが取得されると共に、複合変形が対象とするストリームのネームスペースが取得される。ブロック603に示すように、一旦ロックが取得されると、選択されたストリームは、消去またはリネームの対象となり、そのそれぞれの名前から切り離される。本発明のいくつかの実施形態によれば、これにより、変形が同時に起こったかのように、変形をストリームにもたらす方法で、複合変形を適用することが容易となる。一例として、ストリームを関連する名前から切り離すステップは、選択されたストリームのそれぞれの名前にストリームGUIDが連結されている元の連結を記憶する、一時的マッピングを作成することにより達成される。
【0036】
複合変形は、アトミックな複合変形として生じるような方法で行うことができる。
図6には2つの変形が示されるが、当業者には当然のことながら、1つまたは複数の選択されたストリーム上で操作して、任意の数の変形を組み合わせて単一のアトミックな複合変形を形成することができる。ブロック604に示すように、第1の変形が1つまたは複数のストリームに対して実行され、また、ブロック605に示すように、第2の変形が実行される。本発明のいくつかの実施形態によれば、これらの変形は、連続的ではなく、同時に生じるように行う。一例として、変形には、新しいストリームを作成する工程、ストリームを消去する工程、ストリームをリネームする工程、ストリームのメタデータを更新する工程、既存のストリームのコピーを作成する工程、複数のストリームを連結させる工程、およびストリームのエクステントのサブセットを第2のストリームにコピーする工程が含まれる。
【0037】
アトミックな複合変形における全ての変更が完了すると、ブロック606に示すように、ストリームは、名前に再連結される。本発明のいくつかの実施形態によれば、ストリーム名は、対応するストリームに適用される変形のそれぞれにより一時的マッピングに対してなされる変更に基づき、ストリームに連結される。ストリームのGUIDを使用して、これらの変更をトラッキングし、再連結を行う。ブロック607に示すように、1つまたは複数の選択されたストリームのそれぞれに関連するメタデータに対するロック(単数または複数)と共に、複合変形が対象とするストリームのネームスペースが解除される。
【0038】
ここで
図7に移ると、フロー図が与えられ、本発明の一実施形態に従う、複合変形における変形が成功裏に完了できない場合の、1つまたは複数の選択されたストリームに対するアトミックな複合変形を実行するための方法700が示される。アトミックな複合変形を編成する変形を実行する過程において、変形の1つが、一旦実行されて、成功裏に完了できないという可能性がある。一例として、複合変形における2つの変更両方が、結果として、同じ名前を有するストリームを生じさせようとする場合がある(例えば、ストリームの作成またはリネームを介して)。従って、複合変形が成功可能ならば、結果として得られる状態は、変形が実行された順番に依存し、変形が同時になされるかのように変形を実行する方法は無い。そのような場合が発見されると、アトミックな複合変形の一部として実行される限り全ての変形が反転され、ストリームメタデータは、アトミックな複合変形が開始される前の状態にリセットされる。
図6の方法600と同様に、ブロック701に示すように、1つまたは複数のストリームが、アトミックな複合変形を適用するために選択され、ブロック702に示すように、選択されたストリームのそれぞれに関連するメタデータに対してロックが取得される。
【0039】
ブロック703に示すように、各選択されたストリームはその関連する名前から切り離され、ブロック704に示すように、
図6のブロック603および604と同様、第1の変形が1つまたは複数の選択されたストリームに適用される。ブロック705に示すように、選択されたストリームへの第2の変形が成功裏に完了しないことが判定される。当業者には当然のことながら、そのような判定を行うことが可能な多くの方法がある。本発明のいくつかの実施形態によれば、一時的な反転可能変異の履歴を使用して、アトミックな複合変形を実行する処理における任意のステップを巻き戻すための機構を追加的に提供する。
【0040】
アトミックな複合変形の適用において障害が発生すると判定されると、ブロック706に示すように、適用済みの変形が反転される。選択されたストリームに対してなされた任意の変形の反転後、ブロック707に示すように、ストリームはそれぞれの元の名前に再連結され、新しく作成されたストリームが消去される。一旦、変形が反転され、ストリームがその元の名前に再連結され、新しく作成されたストリームが消去されると、ブロック708に示すように、
図6におけるブロック607と同様、ロックが解除される。
【0041】
本発明のいくつかの実施形態による、1つまたは複数の選択されたストリームに対するアトミックな複合変形を実行するための方法を、
図8のフロー図に示す。アトミックな複合変形を編成する変形の1つが失敗したことが検出される場合、このアトミックな複合変形は中断され、ストリームはアトミックな複合変形の開始前の状態に戻される。ブロック801に示すように、1つまたは複数のストリームが変形のために選択され、ブロック802に示すように、
図6のブロック601および602と同様、選択されたストリームに関連するメタデータに対してロックが取得される。
【0042】
ブロック803に示すように、消去またはリネームの対象とされる各ストリームが、その関連する名前から切り離され、ブロック804に示すように、
図6のブロック603および604と同様、第1の変形が実行される。そして、ブロック805に示すように、第2の変形の適用が成功裏に完了できないかどうかが判定される。この判定は、
図7のブロック705の判定と同様の方法で行うことができる。例えば、第2の変形の適用で、第1の変形によりまたは以前のトランザクション内で、別のストリームに既に関連付けられた名前に対して、ストリームが関連付けられる場合、第2の変形は成功裏に完了しない。
【0043】
第2の変形が成功裏に実行可能であると判定される場合、ブロック806に示すように、第2の変形が実行され、ブロック808に示すように、ストリームはその最後に関連付けられた名前に再連結され、ブロック809に示すように、変形のために選択されたストリームに関連するメタデータに対するロック(単数または複数)、およびストリームのネームスペースが解除される。これらのステップのそれぞれは、
図6のステップ605、606、および607と同様に実行してもよい。
【0044】
しかし、第2の変形が失敗すると判定される場合、ブロック807に示すように、第1の変形は反転され、ブロック808に示すように、ストリームは、その元の関連する名前に再連結され、ブロック809に示すように、任意の新しく作成されたストリームが消去され、変形のために選択されたストリームに関連するメタデータに対するロック(単数または複数)、およびストリームのネームスペースが解除される。これらのステップのそれぞれは、
図7のステップ706、707および708と同様に実行してもよい。
【0045】
一例として、
図9に、実行中の複合変形の例を示す。
図9の例には、システムの状態を示す「チェックポイント+ログ」という方式の実装が含まれる。そのようなシステムにおいて、システムの状態は、チェックポイントと呼ばれる完全な状態情報を含有するスナップショットと、最後に分かっているチェックポイントからなされる変更を含有する種々のより小さなデルタ(差分)とにより表される。ログは、これらデルタのリストを含有する。システムの現在の状態に到達するために、クライアントは、最後のスナップショット後に起こるログの全てのデルタを、最後のスナップショットに対して適用する。最新のスナップショットより前に発生したスナップショットおよびデルタは古く、もはや必要ないため、ガーベジコレクション処理により、古いスナップショットおよびデルタを定期的に削除することができる。当業者には当然のことながら、アトミックな複合変形のための他の多くのシステム用途がある。
【0046】
例えば、フォトアルバムを記憶するシステムについて考える。この場合、そのフォトアルバムは、3つのストリームALBUM.CHECKPOINTS901、ALBUM.DELTA902、およびALBUM.DATA903で表されるものとする。ALBUM.CHECKPOINTS901は、全てのフォトの完全なリストと、ある特定の時点におけるアルバム内の注釈とを記憶する。フォトの消去および追加が、ALBUM.DELTA902に記憶される。実際のフォトは、ALBUM.DATA903に記憶される。このフォトアルバムには、何千ものクライアントが同時にアクセスし、それぞれが、新しいフォトを追加し、フォトを編集して置き換え、フォトを消去し、フォトをリネームし、フォトに注釈を付けるなどを行ってもよい。周期的に、ALBUM.DELTA902ファイルが、非常に大きくなり、クライアントが長いロード時間を待つことになる場合がある。また、ALBUM.DATA903におけるエクステントが、任意の最近のチェックポイントまたはデルタからの参照が何も無いこともある(例えば、それらのエクステント内のフォトが既に消去されている)。
【0047】
何千ものクライアントのそれぞれは、これらストリームのそれぞれを開けてもよい。ガーベジコレクション処理は、不必要な項目をストリームから削除することを、いずれは決定する。例えば、ALBUM.CHECKPOINTS901が2つのエクステント、すなわち、古いチェックポイント904を有する第1のエクステント、および、最新のチェックポイント905を有する第2のエクステントから成ると仮定する。新しいチェックポイントが完全なシステムスナップショットを含有するので、古いチェックポイントは削除可能である。ALBUM.DELTA902もまた、複数のエクステントから成る。この例では、現在のチェックポイント905からの関連するデルタが全て、ALBULM.DELTAの最新のエクステント906内にあると仮定する。ALBUM.DATA903は多くのエクステントを含有し、その中には参照のストリームを持たないエクステント、換言すれば、削除可能なエクステントがばらばらに存在する。例えば、R、S、Y、ZのIDを有するエクステント(912、913、914、915)のみが、ALBUM.DATAのストリーム内に保持される。不要なエクステントをクリンアップするために、ガーベジコレクション処理は、以下の変形を実行することができる。すなわち、古いエクステントをALBUM.CHECKPOINTS901から削除し、古いエクステントをALBUM.DELTA902から削除し、ALBUM.CHECKPOINTS901およびALBUM.DELTA902内に残っているエクステントにおいて参照されないALBUM.DATA903内の任意のエクステントを削除する。ガーベジコレクション処理は、アトミックな複合変形を使用してこれらの変形を達成することが可能である。
【0048】
ガレージコレクション処理が使用可能なアトミックな複合変形の例には、以下の変形が含まれる。変形1:ALBUM.CHECKPOINTS907と名付けられる新しいストリームを作成し、STREAM_ID ABCD901を有するストリームを消去し、EXTENT_ID B910を新しいストリームに付加する。これにはIDQRSTが割り当てられる。変形2:ALBUM.DELTA908と名付けられる新しいストリームを作成し、STREAM_ID AFDE902を有するストリームを消去し、EXTENT_ID L911を新しいストリームに付加する。これにはSTREAM_ID VCDEが割り当てられる。変形3:ALBUM.DATA909と名付けられる新しいストリームを作成し、STREAM_ID DEFF903を有するストリームを消去し、EXTENT_ID R912、EXTENT_ID S913、EXTENT_ID Y914およびEXTENT_ID Z915を新しいストリームに付加する。これにはID RSTVが割り当てられる。全ての変形が自動的に実行されるため、クライアントには、アルバムの不整合が表示されることは無い。この特定の例において、これらのストリームのそれぞれを別個の複合変形のトランザクションにおいて変形することも論理的には正しい。これらのストリームは、効率性の理由で、単一の複合変形トランザクションにおいて変形される(トランザクションの数を減らすため)。しかし、当業者には当然のことながら、複数のストリームが1つのアトミックなトランザクションにおいて変形されて、これらのストリーム間の整合性が確実にされなければならないというシナリオが存在し、これらのシナリオにおいて複合変形のサポートを使用することができる。
【0049】
示された種々のコンポーネントだけではなく、図示されないコンポーネントについても、本発明の精神および範囲から逸脱することなく、多くの異なる配置が可能である。本発明の実施形態は、限定するわけではなく、例示を目的として説明した。その範囲から逸脱しない代替の実施形態は、当業者に対して明らかとなろう。当業者は、本発明の範囲から逸脱することなく上述の改善を実現させる代替の手段を開発することができる。
【0050】
当然のことながら、特定の特徴およびサブコンビネーションは、有用であり、他の特徴およびサブコンビネーションを参照することなく採用することができ、かつ、請求項の範囲内に企図される。種々の図面に挙げた全てのステップが、記載される特定の順番で実行される必要はない。