(57)【要約】  分散型システムが、ネットワークを介して接続された複数のノードを含む。各ノードが、分散型システムにおいてノードを特定する一意識別子を有する。タスクが、分散型システム内の任意のノードから開始され、一意識別子を含む。ノードは、そのノードの一意識別子を含むタスクを受信する場合、タスクを実行する。各ノードは、各タスクをログに記憶する。ノードは、障害にあう場合、障害からリカバリした後、受信されなかったタスク、および障害が原因で完了されなかったタスクに関して分散型システムに問い合わせる。タスクは、メタデータに対応するデータを記憶するノードの位置を指定するメタデータへの帯域内アクセスを用いて得られた位置データに基づいてノード上で開始され得る。タスクは、仮想マシンを構成するファイル内にＩＰアドレスが符号化されるように仮想マシンを開始することを含み得る。
2016530598.tif 000002
【特許請求の範囲】
【請求項１】
実行可能な命令を記憶する非一時的コンピュータ可読媒体であって、前記実行可能な命令が複数のノードを有する分散型システムに方法を実行させ、前記方法が、
前記複数のノードのそれぞれに一意識別子を割り振るステップと、
前記ノードのうちの１つから前記分散型システムに前記ノードの１つまたは複数の一意識別子を含むタスクをブロードキャストするステップと、
前記ブロードキャストされたタスクを各ノードにおいて記憶するステップと、
前記ノードのそれぞれに関して、前記タスクの前記１つまたは複数の一意識別子が前記それぞれのノードの前記一意識別子を含む場合に前記タスクを実行するステップと、
前記タスクを実行した各ノードから前記分散型システムに完了メッセージをブロードキャストするステップとを含む、非一時的コンピュータ可読媒体。
【請求項２】
前記一意識別子が、汎用一意識別子（ＵＵＩＤ）である請求項１に記載の非一時的コンピュータ可読媒体。
【請求項３】
前記方法が、
前記分散型システムに接続されたクライアントから前記ノードのうちの１つにおいて前記タスクを受信するステップをさらに含む請求項１に記載の非一時的コンピュータ可読媒体。
【請求項４】
前記方法が、
前記タスクの前記１つまたは複数の一意識別子が前記それぞれのノードの前記一意識別子を含む場合、前記それぞれのノードにおいて前記タスクを実行するステップの前に、前記それぞれのノードのキューに前記タスクを入れるステップをさらに含む請求項１に記載の非一時的コンピュータ可読媒体。
【請求項５】
各ノードが、前記ブロードキャストされたタスクをログにタイムスタンプとともに記憶する請求項１に記載の非一時的コンピュータ可読媒体。
【請求項６】
前記方法が、
前記タスクの前記１つまたは複数の一意識別子が前記それぞれのノードの前記一意識別子を含む場合、前記それぞれのノードが前記タスクを実行し始めるときに開始メッセージをブロードキャストするステップをさらに含む請求項５に記載の非一時的コンピュータ可読媒体。
【請求項７】
各ノードが、前記開始メッセージで示される時間および前記完了メッセージで示される時間に対応して前記ブロードキャストされたタスクを記憶する請求項６に記載の非一時的コンピュータ可読媒体。
【請求項８】
前記ノードのうちの第１のノードが、障害が原因で前記ブロードキャストされたタスクを受信することができない請求項１に記載の非一時的コンピュータ可読媒体。
【請求項９】
前記方法が、
前記第１のノードが前記障害からリカバリした後に、前記第１のノードにおいて前記ノードのうちの１つまたは複数から前記ブロードキャストされたタスクを受信するステップと、
前記第１のノードが前記障害からリカバリした後に、前記第１のノードにおいて前記ブローキャストされたタスクを記憶するステップとをさらに含む請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１０】
実行可能な命令を記憶する非一時的コンピュータ可読媒体であって、前記実行可能な命令が、ＩＰアドレスを割り振る方法をプロセッサに実行させ、前記方法が、
ＭＡＣアドレス内にＩＰアドレスを符号化するステップと、
前記符号化されたＭＡＣアドレスを有するように仮想マシンを構成するステップと、
前記符号化されたＭＡＣアドレスから前記ＩＰアドレスを復号するステップと、
前記復号されたＩＰアドレスを前記仮想マシンに割り振るステップとを含む、非一時的コンピュータ可読媒体。
【請求項１１】
前記ＩＰアドレスが、前記ＭＡＣアドレスの下位部分に含まれる請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１２】
前記方法が、
前記仮想マシンを構成するために使用される構成ファイルに前記符号化されたＭＡＣアドレスを記憶するステップをさらに含む請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１３】
前記ＩＰアドレスが、ＩＰｖ４アドレスである請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１４】
ハイパーバイザが、ホスト上で前記仮想マシンを構成する請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１５】
前記ホストが、前記ハイパーバイザを介して前記仮想マシンと通信することができない請求項１４に記載の非一時的コンピュータ可読媒体。
【請求項１６】
前記方法が、
前記ホストによって複数のＭＡＣアドレスに複数のＩＰアドレスを符号化するステップと、
前記ハイパーバイザによって前記仮想マシンを構成するために使用される前記符号化されたＭＡＣアドレスとして前記符号化されたＭＡＣアドレスのうちの１つを選択するステップとをさらに含む請求項１４に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記方法が、
前記復号されたＩＰアドレスを用いて前記仮想マシンによってネットワークを介して通信するステップをさらに含む請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１８】
実行可能な命令を記憶する非一時的コンピュータ可読媒体であって、前記実行可能な命令が、分散型システム内の複数のノードにわたるファイル・システム内に記憶されたファイルの一部の位置を特定する方法を実行させ、前記方法が、
マッピング・ファイルにアクセスし、前記マッピング・ファイルのオフセットを指定するステップと、
前記マッピング・ファイルの前記オフセットのデータを読み取るステップと、
前記マッピング・ファイルの前記オフセットの前記データによって指定される前記ファイルの前記一部を記憶するノードにおいてタスクを開始するステップとを含み、
前記マッピング・ファイルが、前記ノードにわたる前記ファイル・システム内の前記ファイルの一部を記憶するノードの位置を含み、
前記マッピング・ファイルが、前記ファイルの一部に対応する複数の部分を有し、
前記マッピング・ファイルにアクセスするステップが、前記ファイルの前記一部のデータにアクセスするために使用されるメカニズムを使用し、前記マッピング・ファイルの前記データが、前記ファイルのメタデータである、非一時的コンピュータ可読媒体。
【請求項１９】
前記マッピング・ファイルの前記一部が、位置データを含み、前記位置データが、前記マッピング・ファイル内に間隔を空けて記憶される請求項１８に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記マッピング・ファイルの各位置データが、前記ファイルの前記一部のうちの対応する１つが前記ノードの中で記憶される位置を指定する請求項１９に記載の非一時的コンピュータ可読媒体。
【請求項２１】
複数の追加のメタデータが、前記マッピング・ファイルに前記位置データとともに間隔を空けて記憶され、前記マッピング・ファイルのそれぞれの追加のメタデータが、前記ファイルの前記一部のうちの対応する１つの情報を指定する請求項１９に記載の非一時的コンピュータ可読媒体。
【請求項２２】
前記オフセットが、前記マッピング・ファイル内の前記間隔の倍数である請求項１８に記載の非一時的コンピュータ可読媒体。
【請求項２３】
前記ファイル・システムが、ネットワーク・ファイル・システム（ＮＦＳ）である請求項１８に記載の非一時的コンピュータ可読媒体。
【請求項２４】
前記ファイルの前記一部のデータにアクセスするために使用される前記メカニズムが、ネットワーク・ファイル・システム（ＮＦＳ）アクセスである請求項１８に記載の非一時的コンピュータ可読媒体。
【請求項２５】
前記方法が、
前記マッピング・ファイルの前記オフセットにおいて読み取られた前記データに基づいて前記マッピング・ファイルへの前記アクセスに対する応答を生成するステップをさらに含む請求項１８に記載の非一時的コンピュータ可読媒体。
【請求項２６】
前記応答が、ＸＭＬファイル・フォーマットである請求項２５に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムに関し、より詳細には、ネットワーク化されたデバイスまたはノードの分散型システムを動作させるための技術に関する。
【背景技術】
【０００２】
分散型ファイル・システムのサイズおよび帯域幅のスケーラビリティを提供するために、従来のストレージ・システムは、分散型ストレージ・システム内の複数のストレージ・ノードにわたってファイルの記憶を散在させてきた。従来、ストレージ・ノードでのファイルの記憶は分散されてきたが、ファイル・システム、処理、およびファイルのメタデータの管理は、制御ノードまたはタスク管理ノードに集中化されてきた。
【０００３】
従来の分散型ファイル・システムにおいて、ファイル・システム内でデータの位置を特定するための方法は、「帯域外」であると考えられるか、またはファイル・システムにアクセスするために通常使用されるプロトコルによってサポートされないメカニズムを使用してきた。帯域外メカニズムの１つの例は、ＰａｒａＳｃａｌｅ（商標）分散型ストレージ・プラットフォームで使用される。ＰａｒａＳｃａｌｅ（商標）分散型ストレージ・プラットフォームにおいては、集中化されたタスク・マネージャまたはマスタが、ネットワーク・ファイル・システム（ＮＦＳ）によってエクスポートされたマウント・ポイント上でファイルを開き、「ｓｔａｔ」動作を用いてファイルについてのキー情報を取得し、そして、サーバのアドレスなどのデータの位置の受信された拡張可能マークアップ言語（ＸＭＬ）情報をファイルのキー情報を用いて制御ノードのデータ位置サービスに伝達した。それから、ＰａｒａＳｃａｌｅ（商標）プラットフォームのクライアントが、サーバのアドレスを用いてデータ・タスクに着手する可能性があった。
【０００４】
上述のように、従来の分散型ファイル・システムは、すべてのノードのタスクを調整する役割を担う集中化されたタスク・マネージャを使用する。通常、タスク・マネージャは、タスクを実行するようにその他のノードに指示する。そのような構成は知られている順番でタスクが実行されることを可能にするが、タスク・マネージャが障害にあう場合、分散型ファイル・システムの回復力は、追加のタスクが着手され得るよりも前にタスク・マネージャが障害からリカバリしなければならないので痛手を受ける。さらに、保留中のタスクのログは、従来、共有された永続的なストレージに配置されるか、または複数のノードの間で複製されてきた。したがって、タスク・マネージャは、分散型ファイル・システムに関する単一障害点になるという問題を引き起こす。
【０００５】
分散型システムにおいて、システム内のノードへのＩＰアドレスの割り振りは、従来、動的ホスト構成プロトコル（ＤＨＣＰ）によって扱われてきた。仮想マシンが分散型システム内に存在する場合、ＤＨＣＰは、概してＤＨＣＰがネットワーク内のすべてのシステムにＩＰアドレスを割り振るという点で問題を引き起こす。結果として、分散型システム内にある仮想マシンにのみＩＰアドレスを与えるために容易に分離され得るＤＨＣＰサーバを構成することに関して、ＤＨＣＰには問題がある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Ｌｅｓｌｉｅ  ＬａｍｐｏｒｔによるＰａｘｏｓ  Ｍａｄｅ  Ｓｉｍｐｌｅ  ＳＩＧＡＣＴ  Ｎｅｗｓ、第３２巻、第４号（２００１年１２月）、ｐｐ．５１〜５８
【発明の概要】
【０００７】
本発明の実施形態は、概して、分散型コンピュータ・システムに関し、より詳細には、特定のタスクが開始されるべきである分散型システム内の位置を決定すること、信頼できるＩＰアドレスを用いる仮想マシンの作成のタスク、および分散型ストレージ・システム（本明細書においては「クラスタ」）におけるタスクの障害のリカバリのための技術を含む分散型ストレージ・システム中のタスクの発行を管理するための技術に関する。
【０００８】
従来の分散型システムにおける問題に鑑み、本発明の一部の実施形態においては、クラスタが、タスクがクラスタ内の任意のノードからクラスタ内の任意のその他のまたはすべてのその他のノードに発行される可能性があり、タスクが回復力および耐障害性の特徴を持って記憶され、実行される可能性があるように構成される。たとえば、クラスタは耐障害性のある分散型システムを実装するためにＰａｘｏｓアルゴリズムなどの合意アルゴリズムを使用し、それによって、タスクは、分散され、クラスタ内の各ノード、ノードのサブセット、またはすべてのノードで知られている順番で処理され得る。一部の実施形態においては、障害が原因であるか否かにかかわらずノードがオフラインであり、タスクがオフラインのノードのために定義される場合、タスクは、ノードがオンラインに復帰する（たとえば、障害からリカバリする）ときに実行されなければならない。合意アルゴリズムを用いることによって、保留中のタスクが、クラスタ内の任意のノードからクラスタ内のすべてのノードへの１つまたは複数の順序付けられたメッセージおよびブロードキャストとして開始される。たとえば、参照により本明細書に援用される「Ｌｅｓｌｉｅ  ＬａｍｐｏｒｔによるＰａｘｏｓ  Ｍａｄｅ  Ｓｉｍｐｌｅ  ＳＩＧＡＣＴ  Ｎｅｗｓ、第３２巻、第４号（２００１年１２月）、ｐｐ．５１〜５８」に記載された合意アルゴリズムなどの合意アルゴリズム、またはその変化形が、使用され得る。結果として、上述の実施形態は、有利なことに、耐障害性およびノードの回復力を与える非集中的な分散型システムを提供する。
【０００９】
さらに、本発明のその他の実施形態においては、クラスタ内のノード上で仮想マシン（ＶＭ）を開始するタスクが開始されるとき、仮想マシンによって使用される媒体アクセス制御（ＭＡＣ）アドレスを含む仮想マシンの特定の特徴を含む構成ファイルが参照される。本発明のさまざまな実施形態によれば、仮想マシンによって使用されるＩＰアドレスが、ＭＡＣアドレス内に符号化される。結果として、ＶＭは、クラスタ内で使用されるその他のＩＰアドレスと競合しないＩＰｖ４などのＩＰアドレスを与えられる可能性があり、動的ホスト構成プロトコル（ＤＨＣＰ）サーバは、仮想マシンにＩＰアドレスを割り振ろうと試みるために頼られる必要がない。結果として、上述の実施形態は、有利なことに、ホストするノードからハイパーバイザを通じて仮想マシンにＩＰアドレスを伝達するための経路としてＭＡＣアドレスを使用して、ＩＰアドレスが仮想マシンのために設定されることを可能にする。
【００１０】
またさらに、本発明のさらにその他の実施形態においては、ファイル・システムが、クラスタ内のファイルのデータの位置を指定する特別な拡張子を有する対応するマッピング・ファイルをあらゆるファイルが有する拡張された名前空間を有する。マッピング・ファイルを指定するために特別な拡張子を含むように名前空間を拡張することによって、マッピング・ファイルは、通常はファイル・システム内に記憶されたデータにアクセスするために使用されるネットワーク・ファイル・システム（ＮＦＳ）ｖ３．１などのプロトコルを用いてファイル・システム内でアクセスされ得る。しかし、マッピング・ファイルは、ファイル・システムの通常のディレクトリのリスト内では見えない。結果として、上述の実施形態は、有利なことに、データ自体にアクセスするために使用される同じメカニズムを用いてクラスタ内のデータの位置情報にアクセスすることを可能にする。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係るクラスタ化されたコンピュータ・システムのブロック図である。
【図２】本発明の実施形態に係るクライアントのブロック図である。
【図３】本発明の実施形態に係るノードのブロック図である。
【図４】本発明の実施形態に係るノードのストレージ・デバイスの詳細なブロック図である。
【図５】本発明の実施形態に係るノードのチャネル・ボードのブロック図である。
【図６】本発明の実施形態に係るノードのプロセッサ・ボードのブロック図である。
【図７】本発明の実施形態に係るノードのドライブ・ボードのブロック図である。
【図８Ａ】本発明の実施形態に係るファイル・システムへのクライアントのアクセスのブロック図である。
【図８Ｂ】本発明の実施形態に係るファイル・システムへのクライアントのアクセスのブロック図である。
【図８Ｃ】本発明の実施形態に係るファイル・システムへのクライアントのアクセスのブロック図である。
【図９Ａ】本発明の実施形態に係るノードのストレージ・デバイスのブロック図である。
【図９Ｂ】本発明の実施形態に係るノードのストレージ・デバイスのブロック図である。
【図９Ｃ】本発明の実施形態に係るノードのストレージ・デバイスのブロック図である。
【図１０】本発明の実施形態に係るノードの機能ブロック図である。
【図１１Ａ】本発明の実施形態に係る管理テーブルの図である。
【図１１Ｂ】本発明の実施形態に係るタスクのログの図である。
【図１２】本発明の実施形態に係るノードのネットワーク・レイヤ、タスク・キュー・レイヤ、および実行レイヤの抽象的なブロック図である。
【図１３】本発明の実施形態に係るＵＵＩＤ割り振りプロセスの図である。
【図１４】本発明の実施形態に係るタスク実行プロセスの図である。
【図１５】本発明の実施形態に係るノード再開プロセスの図である。
【図１６】本発明の実施形態に係る符号化されたＭＡＣアドレスの構造を示す図である。
【図１７】本発明の実施形態に係るＩＰアドレスの符号化の図である。
【図１８】本発明の実施形態に係るハイパーバイザ・レイヤ、ＭＡＣ／ＩＰレイヤ、および仮想マシン・レイヤの抽象的なブロック図である。
【図１９】本発明の実施形態に係る構成プロセスの図である。
【図２０】本発明の実施形態に係るファイル・システムのブロック図である。
【図２１】本発明の実施形態に係るファイル、マッピング・ファイル、および位置応答の図である。
【図２２】本発明の実施形態に係るファイルとマッピング・ファイルとの間の関係を示す図である。
【図２３】本発明の実施形態に係るファイル属性およびメタデータを更新するためのプロセス・フローの図である。
【図２４】本発明の実施形態に係るマッピング・システムへのクライアントのアクセスのプロセス・フローの図である。
【図２５】本発明の実施形態に係るマッピング・システムへのクライアントのアクセスのより詳細なプロセス・フローの図である。
【発明を実施するための形態】
【００１２】
本明細書において検討される実施形態は、本発明の１つまたは複数の例を示す。本発明のこれらの実施形態が図面を参照して説明されるとき、本明細書において説明される方法および／または特定の構造のさまざまな修正または適応が、当業者に明らかになる可能性がある。本発明の教示に依拠するすべてのそのような修正、適応、または変形は、本発明の範囲内にあると考えられる。したがって、本発明は本明細書において示される実施形態のみにまったく限定されないことが理解されるので、この説明および図面は限定的な意味にとられるべきでない。
【００１３】
クラスタ化されたコンピュータ・システム
さまざまな実施形態によれば、クラスタ化されたストレージ・システムなどのスケーラブルな分散型コンピュータ・システム（本明細書においては「クラスタ」と呼ばれる）が、ファイル・システム内のファイルの名前空間およびメタデータの属性をファイルの実際のデータ内容と分ける。一実施形態においては、サーバとして実装される可能性がある１つまたは複数のノードが、ファイルの名前空間、メタデータ、および位置情報を扱う役割を担う。さらに、ノードは、ファイル・システム内のファイルにアクセスする役割を担い、物理的な記憶空間を提供する役割を担う可能性もある。各ノードは、通常、シェアード・ナッシング・アーキテクチャを使用し、つまり、各ノードは、ローカルにあるかまたはストレージ・エリア・ネットワーク（ＳＡＮ）などを通じて取り付けられるかに関わりなく、クラスタ内のその他のノードと共有されない少なくとも１つの対応するストレージ・デバイスを有する。
【００１４】
一部の実施形態に係るクラスタにおいては、ファイル・システム自体が、クラスタ中に広がっており、クラスタ内の特定のノードまたはノードのサブセットに物理的に結びつけられない。したがって、クラスタは、いくつかの次元でスケーリングされ得る。ファイル・システムに記憶されるファイルにサービスを提供するための容量および帯域幅をスケーリングするために、ノードが追加される可能性がある。各ノードは、処理能力と記憶能力との両方を提供する可能性がある。さらに、クラスタ中に動作の負荷を再配分するために、ノードが追加される可能性がある。
【００１５】
一部の実施形態においては、ユーザ（たとえば、クライアント・コンピュータ・システム）が、ファイル・システムをマウントするための修正なしに業界標準のプロトコルを使用し、ノードからクラスタ内のファイルにアクセスし、クラスタ上および／またはクラスタ内でその他のタスクを実行し得る。一部の実施形態において、クラスタは、ファイル・システムにアクセスするために使用されるノードに無関係にユーザがファイル・システム全体を見ることを可能にするグローバルな名前空間を提供する。
【００１６】
したがって、本発明の一実施形態の分散型シェアード・ナッシング・ストレージ・システムは、ファイル・システム内の複数のファイルに関連するメタデータ、オブジェクト識別子、および位置情報を記憶するノード、ならびに複数のファイルを記憶する複数のノードを含む。クラスタ内のノードは、クライアントからファイル・システム内のファイルの要求を受信し、クラスタ内のファイルの位置を決定することができる。ノードは、その他のノードと通信して、ファイルに関連するメタデータ、オブジェクト識別子、および位置情報を決定する。そして、ノードは、クラスタから受信されたメタデータ、オブジェクト識別子、および位置情報を用いて、クライアントからの要求を満足させるために、ファイル・システム内のファイルにアクセスする。
【００１７】
図１は、本発明の一実施形態に係る分散型コンピュータ・システム（たとえば、クラスタ）１００の図である。クラスタ１００は、クライアント１１０および１２０、ノード１３０、１４０、１５０、１６０、および１７０を含む。クライアント１１０および１２０、ならびにノード１３０、１４０、１５０、１６０、および１７０は、通信ネットワーク１８０を用いて通信可能なように結合される。代替的に、クライアント１１０および１２０、ならびにノード１３０、１４０、１５０、１６０、および１７０を接続する１つまたは複数のネットワークが存在する可能性がある。
【００１８】
概して、クライアント１１０および１２０は、パーソナル・コンピュータ（ＰＣ）、ワークステーション、ラップトップ、携帯情報端末（ＰＤＡ）、サーバ、メインフレームなどのコンピュータ・システムである。クライアント１１０および１２０は、ＮＦＳ、ＣＩＦＳ、ＨＴＴＰ、ＦＴＰなどのファイル・アクセス・プロトコルを用いて遠隔のファイルおよびファイル・システムにアクセスするように構成される。クライアント１１０および１２０を実装するのに好適なコンピュータ・システムの１つの例が、図２に示される。
【００１９】
ノード１３０、１４０、１５０、１６０、および１７０は、ＰＣ、ワークステーション、サーバ、メインフレームなどである可能性がある。ノードは、ローカル・ファイル・システム、ネットワーク接続ストレージ（ＮＡＳ）、ストレージ・エリア・ネットワーク（ＳＡＮ）、データベースなどの上のファイル・システム内のファイルに関連する情報を記憶する。ノードは、ローカル・ファイル・システムとデータベースとの組合せのファイル・システム内のファイルに関連する情報を記憶する可能性もある。ノード１３０、１４０、１５０、１６０、および１７０を実装するのに好適なコンピュータ・システムの１つの例が、図３に示される。しかし、ノード１３０、１４０、１５０、１６０、および１７０は、ファイル・システムにファイルを記憶するように構成された任意のハードウェアおよび／またはソフトウェア要素である可能性もある。ノード１３０、１４０、１５０、１６０、および１７０は、ＮＴＦＳ、ＥＸＴ、ＸＦＳなどの、ファイルを記憶するための１つまたは複数のファイル・システムを実装する可能性がある。
【００２０】
ファイル・システム内のファイルに関連する情報は、名前空間、メタデータ、オブジェクト識別子、および位置情報を含む。名前空間は、ほとんどのファイル・システムでよく見られる階層的なツリーに基づくファイル・パスおよび命名体系を含む。メタデータは、ファイル名、パーミッション、サイズ、種類などのファイル属性を含む。オブジェクト識別子は、ノードのオブジェクトベース・ストレージ・エリア（ｏｂｊｅｃｔ−ｂａｓｅｄ  ｓｔｏｒａｇｅ  ａｒｅａ）におけるファイルの命名および記憶のために使用されるクラスタ全体でグローバル一意の１２８ビットの識別子である。位置情報は、ファイル・システム内のファイルの論理的なおよび／または物理的な位置に関連する情報を含む。たとえば、位置情報は、所与のノード、ノードに取り付けられたオブジェクト・ストア、パス情報などを指定する可能性がある。
【００２１】
動作の一例においては、クライアント１１０が、ファイルからの読み取り要求などの、ファイル・システム内のファイルの要求をノード１５０に送信する。そして、ノード１５０は、ファイルに関連するメタデータ、オブジェクト識別子、および位置情報を決定し、そのノード１５０のＲＡＭのローカルにこの情報を最適にキャッシュする。この例において、ノード１５０は、ファイルの名前に関連するオブジェクト識別子を決定し、オブジェクト識別子から、ファイルの位置を決定する。ノード１５０は、ファイルのオブジェクト識別子および位置をクライアント１１０またはクラスタ内のその他のノードに送信し得る。本発明のさまざまな実施形態に係るファイル位置特定動作の詳細な動作は、後で説明される。
【００２２】
一実施形態によれば、ノード１５０は、ファイル・システム内のファイルの位置を特定するために、特別なマッピング・ファイルを参照してファイルのオブジェクト識別子および位置を決定し得る。たとえば、位置情報は、ファイルがノード１６０のローカルに記憶されることをノード１５０に特別なマッピング・ファイルによって指定し得る。そして、ノード１５０は、クライアント１１０がノード１６０に直接アクセスし得るようにクライアント１１０にこの情報を提供し得る。一部の実施形態において、ノード１５０は、インターネット・プロトコル（ＩＰ）に基づく転送メカニズムを用いてその他のノードからまたはその他のノードにファイルを読み取り、書き込み可能性があり、それらの転送メカニズムの一部の例は、ＨＴＴＰまたはＮＦＳクロス・マウント（ｃｒｏｓｓ  ｍｏｕｎｔ）である。また、位置情報は、ノード１５０に記憶されたファイル・システムの一部を用いてファイルにアクセスするようにノード１５０に指示する可能性がある。別の例示的な実施形態においては、ファイルのオブジェクト識別子および位置が、あるノードから別のノードのファイル・システム内のファイルにアクセスするために使用され得る。たとえば、位置情報は、ノード１６０上のファイルにアクセスするようにノード１５０に指示する可能性がある。
【００２３】
さまざまな実施形態によれば、クラスタ１００は、ファイル・システム内のファイルに関連する名前空間、メタデータ、および位置情報をノード１３０、１４０、１５０、１６０、および１７０によるファイルの実際の記憶から切り離す。したがって、さまざまな実施形態は、ノード内のファイルの位置に無関係にクラスタ１００を用いてファイル・システム・オブジェクトへの向上したアクセスを提供する。加えて、さまざまな実施形態においては、追加のノードが、ストレージ・システムに追加され、ストレージ・システムの記憶容量を増やし、ファイル・アクセス時間を削減し得る。
【００２４】
一部の実施形態においては、インターネット・プロトコル（ＩＰ）アドレスなどのネットワーク・アドレスのプールが、ノードに割り当てられ、割り振られる可能性がある。ノードに障害が起こると（たとえば、ノード１５０）、ノード１３０および１４０は、障害が起きたノード１５０に関連するネットワーク・アドレス（たとえば、ＩＰアドレス）を機能しているノード（たとえば、ストレージ・ノード１６０）に動的に再割り振りする。したがって、前にノード１５０を用いていたファイルへのクライアント／ユーザのアクセスが、新しいノード（すなわち、ストレージ・ノード１６０）に透過的に移されるおよび／またはリダイレクトされる可能性がある。さらにその他の実施形態においては、障害が起こったノードが、障害が起こったノードがダウンしていた（障害にあっていた）時間の間に何らかのタスクがし損じられた（ｍｉｓｓｅｄ）かどうかを判定するためにクラスタに問い合わせることができる。
【００２５】
図２は、クライアント１１０のブロック図を示し、クライアント１２０は、クライアント１１０と同様の構成を有する可能性がある。図２に示されるように、クライアント装置のハードウェアは、ＣＰＵ２１、揮発性または不揮発性メモリ２２（ＲＡＭまたはＲＯＭ）、ストレージ・デバイス２３（たとえば、ハード・ディスク・ドライブ、半導体メモリ（ＳＳＤ（ソリッド・ステート・ドライブ））、キーボードおよびマウスなどの入力デバイス２４、液晶モニタおよびプリンタなどの出力デバイス２５、ならびにＮＩＣ（ネットワーク・インターフェース・カード）、ＬＡＮアダプタ２６−１などのネットワーク・インターフェース（以降、ネットワークＩ／Ｆ２６）などを含む。
【００２６】
図３は、ノード１３０のブロック図を示し、ノード１４０、１５０、１６０、および１７０は、ノード１３０と同様の構成を有する。図３に示されるように、ノード１３０は、ＣＰＵ３１、揮発性または不揮発性メモリ３２（ＲＡＭまたはＲＯＭ）、ストレージ・デバイス３３（たとえば、ハード・ディスク・ドライブ、半導体メモリ（ＳＳＤ））、キーボードおよびマウスなどの入力デバイス３４、液晶モニタおよびプリンタなどの出力デバイス３５、ＮＩＣ、ＬＡＮアダプタ３６−１、ＨＢＡ（たとえば、ＦＣアダプタ３６−２）などのネットワーク・インターフェース（以降、ネットワークＩ／Ｆ３６）、ならびにタイマー回路、ＲＴＣなどを用いて構成されたタイマー３７を含む。
【００２７】
図４は、図３と同様にノード１３０のローカルに設けられる可能性があり、または図４と同様にネットワーク５を介したネットワーク接続ストレージ（ＮＡＳ）である可能性があるストレージ・デバイス３３のより詳細なブロック図を示す。ノード１３０は、ストレージ・デバイス３３を有する。ノード１４０、１５０、１６０、および１７０は、それぞれ、クラスタによって共有されないストレージ・デバイス３３を備える。ストレージ・デバイス３３は、クライアント１１０および１２０ならびにさらにクライアント内のその他のノードから送信されたＩ／Ｏ要求を受信し、受信されたデータＩ／Ｏ要求に応答して、ストレージ・エリア１７にアクセスし、データまたは応答をクラスタ１００に送信する。
【００２８】
図４に示されるように、ストレージ・デバイス３３は、少なくとも１つのチャネル・ボード１１、少なくとも１つのプロセッサ・ボード１２（マイクロプロセッサ）、少なくとも１つのドライブ・ボード１３、キャッシュ・メモリ１４、共有メモリ１５、内部スイッチ１６、およびストレージ・エリア１７を含む。チャネル・ボード１１、プロセッサ・ボード１２、ドライブ・ボード１３、キャッシュ・メモリ１４、および共有メモリ１５は、内部スイッチ１６を介して互いに通信可能なように結合される。
【００２９】
チャネル・ボード１１は、クラスタ１００から送信されたフレームを受信し、受信されたフレームに含まれる要求に関するタスクの応答（たとえば、読み取りデータ、読み取り完了報告または書き込み完了報告、追加ストレージなど）を含むフレームをクラスタ１００に送信する。
【００３０】
プロセッサ・ボード１２は、チャネル・ボード１１によって受信されたフレームに含まれる上述のデータＩ／Ｏ要求に応答して、チャネル・ボード１１と、ドライブ・ボード１３と、キャッシュ・メモリ１４との間のデータ転送（ダイレクト・メモリ・アクセス（ＤＭＡ）などを用いる高速大容量データ転送）の処理を実行する。プロセッサ・ボード１２は、チャネル・ボード１１とドライブ・ボード１３との間のデータ（ストレージ・エリア１７から読み取られたかまたはストレージ・エリア１７に書き込まれるデータ）の転送（送達）、ならびにキャッシュ・メモリ１４に記憶されるデータのステージング（ｓｔａｇｉｎｇ）（ストレージ・エリア１７からのデータ読み取り）およびデステージング（ｄｅ−ｓｔａｇｉｎｇ）（ストレージ・エリア１７へのデータ書き込み）を実行する。
【００３１】
キャッシュ・メモリ１４は、高速なアクセスが可能なＲＡＭ（ランダム・アクセス・メモリ）を用いて構成される。キャッシュ・メモリ１４は、ストレージ・エリア１７に書き込まれるデータ（以降、書き込みデータと呼ばれる）、ストレージ・エリア１７から読み取られたデータ（以降、読み取りデータと呼ばれる）などを記憶する。共有メモリ１５は、ストレージ・デバイス３３を制御するために使用されるさまざまな種類の情報を記憶する。
【００３２】
ドライブ・ボード１３は、ストレージ・エリア１７からデータを読み取るか、またはストレージ・エリア１７にデータを書き込むときにストレージ・エリア１７との通信を実行する。内部スイッチ１６は、たとえば、高速なクロス・バー・スイッチを用いて構成される。内部スイッチ１６を介した通信は、たとえば、ファイバ・チャネル、ｉＳＣＳＩ、ＴＣＰ／ＩＰなどのプロトコルに従って実行される。
【００３３】
ストレージ・エリア１７は、複数のストレージ・ドライブ１７１を含む。各ストレージ・ドライブ１７１は、たとえば、ＳＡＳ（シリアル・アタッチドＳＣＳＩ）、ＳＡＴＡ（シリアルＡＴＡ）、ＦＣ（ファイバ・チャネル）、ＰＡＴＡ（パラレルＡＴＡ）、およびＳＣＳＩなどの種類のハード・ディスク・ドライブ、半導体ストレージ・デバイス（ＳＳＤ）などである。
【００３４】
ストレージ・エリア１７は、たとえば、ＲＡＩＤ（安価な（または独立した）ディスクからなる冗長なアレイ）などの方法によってストレージ・ドライブ１７１を制御することによって提供される論理ストレージ・エリア単位でストレージ・エリア１７のストレージ・エリアをサーバ・システム３に提供する。論理ストレージ・エリアは、たとえば、ＲＡＩＤグループを含む論理デバイスである。
【００３５】
ストレージ・デバイス３３は、論理デバイス１７２を用いて構成された論理ストレージ・エリアをノード１３０に提供する。ストレージ・デバイス３３は、論理ストレージ・エリアと論理デバイス１７２との間の対応（関係）を管理する。対応に基づいて、ストレージ・デバイス３３は、論理ストレージ・エリアに対応する論理デバイス１７２を特定し、または論理デバイス１７２に対応する物理デバイスを特定する。別の代替的な実施形態において、ストレージ・エリア１７は、オブジェクト・ベース・ストレージ・エリアがノード１３０に提供されるように構成され得る。
【００３６】
図５は、チャネル・ボード１１のそれぞれのハードウェア構成を示す。図５に示されるように、チャネル・ボード１１は、サーバ・システム３と通信するためのポート（通信ポート）を有する外部通信インターフェース（以降、外部ネットワークＩ／Ｆ１１１と呼ばれる）、（フレーム処理チップおよびフレーム転送チップを含む）プロセッサ１１２、メモリ１１３、ならびにプロセッサ・ボード１２と通信するためのポート（通信ポート）を含む内部通信インターフェース（以降、内部ネットワークＩ／Ｆ１１４と呼ばれる）を含む。
【００３７】
外部ネットワークＩ／Ｆ１１１は、ＮＩＣ（ネットワーク・インターフェース・カード）、ＨＢＡ（ホスト・バス・アダプタ）などを用いて構成される。プロセッサ１１２は、ＣＰＵ（中央演算処理装置）、ＭＰＵ（マイクロ処理ユニット）などを用いて構成される。メモリ１１３は、ＲＡＭ（ランダム・アクセス・メモリ）またはＲＯＭ（読み出し専用メモリ）である。メモリ１１３は、マイクロ・プログラム、ソフトウェア、その他の動作データなどのデータを記憶する。チャネル・ボード１１によって提供されるさまざまな機能は、プロセッサ１１２がメモリ１１３に記憶された上述のデータを読み取り、実行するときに実施される。内部ネットワークＩ／Ｆ１１４は、内部スイッチ１６を介してプロセッサ・ボード１２、ドライブ・ボード１３、キャッシュ・メモリ１４、および共有メモリ１５と通信する。
【００３８】
図６は、プロセッサ・ボード１２のハードウェア構成を示す。プロセッサ・ボード１２は、内部ネットワーク・インターフェース（以降、内部ネットワークＩ／Ｆ１２１と呼ばれる）、プロセッサ１２２、およびプロセッサ１２２からのアクセス性能が共有メモリ１５よりも高いメモリ１２３（ローカル・メモリ）（すなわち、メモリ１２３への高速アクセスが可能である）を含む。メモリ１２３は、マイクロ・プログラムを記憶する。プロセッサ・ボード１２によって提供されるさまざまな機能は、プロセッサ１２２がメモリ１２３に記憶されたマイクロ・プログラムを読み取り、実行するときに実施される。
【００３９】
内部ネットワーク１／Ｆ１２１は、内部スイッチ１６を介してチャネル・ボード１１、ドライブ・ボード１３、キャッシュ・メモリ１４、および共有メモリ１５と通信する。プロセッサ１２２は、ＣＰＵ、ＭＰＵ、ＤＭＡ（ダイレクト・メモリ・アクセス）などを用いて構成される。メモリ１２３は、ＲＡＭまたはＲＯＭである。プロセッサ１２２は、メモリ１２３と共有メモリ１５との両方にアクセスすることができる。
【００４０】
図７は、ドライブ・ボード１３のハードウェア構成を示す。ドライブ・ボード１３は、内部ネットワーク・インターフェース（以降、内部ネットワークＩ／Ｆ１３１と呼ばれる）、プロセッサ１３２、メモリ１３３、およびドライブ・インターフェース（以降、ドライブＩ／Ｆ１３４と呼ばれる）を含む。メモリ１３３は、マイクロ・プログラムを記憶する。ドライブ・ボード１３によって提供されるさまざまな機能は、プロセッサ１３２がメモリ１３３に記憶されたマイクロ・プログラムを読み取り、実行するときに実施される。内部ネットワークＩ／Ｆ１３１は、内部スイッチ１６を介してチャネル・ボード１１、プロセッサ・ボード１２、キャッシュ・メモリ１４、および共有メモリ１５と通信する。プロセッサ１３２は、ＣＰＵ、ＭＰＵなどを用いて構成される。メモリ１３３は、たとえば、ＲＡＭまたはＲＯＭである。ドライブＩ／Ｆ１３４は、ストレージ・デバイス１７と通信する。
【００４１】
図４に示されていない保守デバイスが、ストレージ・デバイス３３の構成要素の制御およびステータスの監視を実行する。保守デバイスは、パーソナル・コンピュータ、オフィス・コンピュータなどである。保守デバイス１８は、チャネル・ボード１１、プロセッサ・ボード１２、ドライブ・ボード１３、キャッシュ・メモリ１４、共有メモリ１５、内部スイッチ１６などのストレージ・デバイス３３の構成要素から動作情報などを獲得し、管理装置１９に情報を提供するために、内部スイッチ１６、ＬＡＮなどの通信手段を介して構成要素と必要に応じて通信する。さらに、保守デバイスは、管理装置から送信された制御情報および動作情報に従って（ソフトウェアのインストールおよび更新を含む）構成要素の設定、制御、および保守を実行する。
【００４２】
図４に示されていない管理装置は、ＬＡＮなどを介して保守デバイスに通信可能なように結合されるコンピュータである。管理装置１９は、ストレージ・デバイス３３を制御し、監視するためのＧＵＩ（グラフィカル・ユーザ・インターフェース）およびＣＬＩ（コマンド・ライン・インターフェース）を用いるユーザ・インターフェースを含む。保守デバイスおよび管理デバイス機能は、クライアント１１０および１２０と同様のハードウェアを備える可能性がある。
【００４３】
図８Ａ、８Ｂ、および８Ｃは、本発明のさまざまな実施形態に係るノードおよびネットワーク・ファイル・システムへのクライアントのアクセスを示す。図８Ａを参照すると、クライアント・システム１１０は、ネットワーク・ファイル・システム（ＮＦＳ）のファイル・アクセスを用いてクラスタのノード（たとえば、ノード１３０）と通信する。ノード１３０は、ＮＦＳサーバ８１５を含み、ファイル・システム８２０に結合される。図８Ｂを参照すると、クライアント・システム１１０は、共通インターネット・ファイル・システム（ＣＩＦＳ：Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）のファイル・アクセスを用いてノード１３０と通信する。図８Ｂにおいて、ノード１３０は、ＣＩＦＳサーバ８３５を含み、ファイル・システム８４０に結合される。図８Ｃを参照すると、クライアント・システム１１０は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）のファイル・アクセスを用いてノード１３０と通信する。図８Ｃにおいて、ノード１３０は、ｈｔｔｐサーバ８５５を含み、ファイル・システム８６０に結合される。
【００４４】
図９Ａ、９Ｂ、および９Ｃは、本発明のさまざまな実施形態に係る物理ストレージ・デバイスへのストレージ・デバイス３３の相互接続を示す。図９Ａを参照すると、ストレージ・デバイス３３は、小型コンピュータ・システム・インターフェース（ＳＣＳＩ）ホスト・バス・アダプタ（ＨＢＡ）９１０を含む。ＳＣＳＩ  ＨＢＡ９１０は、３つのＳＣＳＩディスク・ドライブ９１５に結合される。図９Ｂを参照すると、ストレージ・デバイス３３は、ファイバ・チャネル（ＦＣ）ＨＢＡ９２５を含む。ＦＣ  ＨＢＡ９２５は、ストレージ・エリア・ネットワーク（ＳＡＮ）スイッチ９３０に結合される。ＳＡＮスイッチ９３０は、３つのＦＣディスク９３５に結合される。図９Ｃを参照すると、ストレージ・デバイス３３は、イーサネット・インターフェース９４５を含み、サーバ９５０およびサーバ９７０に結合される。サーバ９５０は、ＳＡＴＡディスク９６５に結合されたイーサネット・インターフェース９５５およびシリアル・アドバンスド・テクノロジー・アタッチメント（ＳＡＴＡ：ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）インターフェース９６０を含む。サーバ９７０は、２つのＳＡＴＡディスク９８５に結合されたイーサネット・インターフェース９７５およびＳＡＴＡインターフェース９８０を含む。
【００４５】
図１０は、本発明のさまざまな実施形態に係るノード１３０およびノード１３０で管理される主な情報（データ）の機能ブロック図を示す。図１０に示されるように、ノード１３０内に、仮想環境を提供するハイパーバイザ（たとえば、ハイパーバイザ）３０５およびハイパーバイザ３０５の制御の下で動作する少なくとも１つの仮想マシン３１０が、実装される。
【００４６】
各仮想マシン３１０内に、ファイル共有処理ユニット３１１、ファイル・システム３１２、実行されるタスクのキューを保有するデータ操作要求受信ユニット３１３、データ複製／マイグレーション処理ユニット３１４、ファイル・アクセス・ログ獲得ユニット３１７、およびカーネル／ドライバ３１８の機能が、実装される。
【００４７】
仮想環境は、ノード１３０のハードウェアとハイパーバイザ３０５との間にオペレーティング・システムが介在させられるいわゆるホストＯＳ型の方法、またはノード１３０のハードウェアとハイパーバイザ３０５との間にオペレーティング・システムが介在させられないハイパーバイザ型の方法によって実現される可能性がある。データ操作要求受信ユニット３１３、データ複製／マイグレーション処理ユニット３１４、およびファイル・アクセス・ログ獲得ユニット３１７の機能は、ファイル・システム３１２の機能、またはファイル・システム３１２から独立した機能として実装される可能性がある。
【００４８】
図１０に示されるように、本発明のさまざまな実施形態において、ノード１３０は、仮想マシン構成情報３３１、タスク・ログ３３５などを必要に応じてノード１３０のメモリ３２およびストレージ・デバイス３３に記憶する。
【００４９】
図１０に示された機能のうち、ファイル共有処理ユニット３１１は、ファイルが共有され得る環境をクライアント１１０に提供する。ファイル共有処理ユニット３１１は、たとえば、ＮＦＳ（ネットワーク・ファイル・システム）、ＣＩＦＳ（共通インターネット・ファイル・システム）、ＡＦＳ（Ａｎｄｒｅｗファイル・システム）などのプロトコルで規定された機能を提供する。
【００５０】
ファイル・システム３１２は、ノードによって提供される論理ボリューム（ＬＵ）によって管理されるファイル（またはディレクトリ）へのおよびからのＩ／Ｏに関連する機能をクライアント１１０に提供する。ファイル・システム３１２は、たとえば、ＦＡＴ（ファイル・アロケーション・テーブル）、ＮＴＦＳ、ＨＦＳ（階層型ファイル・システム（Ｈｉｅｒａｒｃｈｉｃａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ））、ｅｘｔ２（第２拡張ファイル・システム（ｓｅｃｏｎｄ  ｅｘｔｅｎｄｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ））、ｅｘｔ３（第３拡張ファイル・システム（ｔｈｉｒｄ  ｅｘｔｅｎｄｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ））、ｅｘｔ４（第４拡張ファイル・システム（ｆｏｕｒｔｈ  ｅｘｔｅｎｄｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ））、ＵＤＦ（ユニバーサル・ディスク・フォーマット）、ＨＰＦＳ（高性能ファイル・システム（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ））、ＪＦＳ（ジャーナリング・ファイル・システム（Ｊｏｕｒｎａｌｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ））、ＵＦＳ（ＵＮＩＸファイル・システム）、ＶＴＯＣ（ボリューム目録（Ｖｏｌｕｍｅ  Ｔａｂｌｅ  Ｏｆ  Ｃｏｎｔｅｎｔｓ））、ＸＦＳなどに基づく。
【００５１】
データ操作要求受信ユニット３１３は、たとえば、クライアント１１０などのクライアントに関するタスクを実行する要求（以降、データ操作要求と呼ばれる）を受信する。タスクは、複製開始要求、複製ファイルへの更新要求、複製ファイルへの参照要求、同期要求、メタデータへのアクセス要求、ファイル・エンティティへの参照要求、リコール要求、スタブド・ファイル・エンティティへの更新要求、ユーザの作成、物理ディスクの追加、物理ディスクの削除、論理ユニットの構成などの動作を含み得る。
【００５２】
スタブドは、ファイル（またはディレクトリ）のデータのメタデータがノードによって保有されるが、ファイル（またはディレクトリ）のデータのエンティティがストレージ・デバイス３３によって記憶または管理されないことを意味する。ノード１３０がスタブド・ファイル（またはスタブド・ディレクトリ）のエンティティを必要とするデータＩ／Ｏ要求を受信するとき、ファイル（またはディレクトリ）のエンティティが、それぞれのストレージ・デバイス３３に送信される（書き戻され、これは、以降、リコールと呼ばれる）。
【００５３】
データ複製／マイグレーション処理ユニット３１４は、（フラグおよびテーブルを含む）制御情報を送信し、受信し、ノード１３０とクラスタ１００内のその他のノードとの間で（メタデータおよびファイルのエンティティを含む）データを転送し、データの複製／マイグレーションに関連するさまざまな情報を管理する。
【００５４】
図１０に示されたカーネル／ドライバ３１８は、オペレーティング・システムのソフトウェアを形成するカーネル・モジュールおよびドライバ・モジュールを実行することによって実施される。カーネル・モジュールは、ノード１３０で実行されるソフトウェアに関して、プロセスの管理、プロセスのスケジューリング、ストレージ・エリアの管理、ハードウェアからの割り込み要求の処理などのオペレーティング・システムの基本的な機能を実施するためのプログラムを含む。ドライバ・モジュールは、ノード１３０を構成するハードウェア、およびノード１３０に結合されている間使用される周辺デバイスとカーネル・モジュールが通信することを可能にするためのプログラムを含む。
【００５５】
ストレージ・デバイス３３の論理ストレージ・エリアに記憶されたファイルがアクセスされる（ファイルが更新される（Ｗｒｉｔｅ、Ｕｐｄａｔｅ）、ファイルが読み取られる（Ｒｅａｄ）、ファイルが開かれる（Ｏｐｅｎ）、ファイルが閉じられる（Ｃｌｏｓｅ）など）とき、図１０に示されたファイル・アクセス・ログ獲得ユニット３１７は、アクセスの詳細（履歴）を示す情報（以降、アクセス・ログと呼ばれる）を、情報にタイム・スタンプを追加した後、タスク・ログ３３５に記憶し、タイム・スタンプは、タイマー３７から獲得された日付／時間情報に基づく。さらに、ストレージの追加、ストレージの削除などの追加のタスクが、タスク・ログ３３５にタイム・スタンプとともに保有される。加えて、タスク・ログ３３５に記憶されるタスクは、タスク・ログ３３５がクラスタで開始されたすべてのタスクのキューを形成するように順番に配列される。
【００５６】
分散型の回復力のある作業キュー
図１に示されたクラスタ１００においては、各ノードが、そのノード自体に割り振られた処理タスクに責任を負う。本発明の一実施形態によれば、ノードは、各ノードがクラスタ内で通信中にクラスタ内のその他のノードに対してそのノード自体を特定することを可能にする汎用一意識別子（ＵＵＩＤ：ｕｎｉｖｅｒｓａｌｌｙ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）を割り振られる。図１１Ａは、ノードおよびノードの対応するＵＵＩＤを記憶する管理テーブルを示す。クラスタ１００内の各ノードは、図１１Ａに示されるような管理テーブルを保有し、したがって、そのノードに保有されるＵＵＩＤのリストが、その他のノードと通信するために参照され得る。
【００５７】
クラスタ内の各ノードは、クラスタ内のノードによって実行されるように要求されたタスクを追跡するために図１１Ｂに示されるようなタスク・ログ３３５を保有する。タスク・ログ３３５内に、各タスクが、１つまたは複数のＵＵＩＤ、その他のノードの識別子、タスクのステータス、タスクの開始時間、およびタスクの終了時間に対応して記憶される。一部の実施形態においては、ノードによってタスクが受信された時間、どのクライアントがタスクを送信したかなどのその他のタスクに関連する情報も、記憶される可能性がある。クラスタ内で送信される各タスクは、それぞれのタスクを実行すべき１つまたは複数のノードを特定するように働く少なくとも１つのＵＵＩＤを含む。どのノードがタスクを実行すべきかを特定するＵＵＩＤに対応して各タスクが記憶されるようにタスク・ログ３３５を保有することによって、ノードが障害にあう場合、障害が起こったノードは、再開される必要があるすべてのタスクまたは障害の間にし損じられたすべてのタスクを決定するために、１つまたは複数のノードのタスク・ログ３３５に関して、障害からのリカバリ後にクラスタに問い合わせることができる。
【００５８】
図１３は、本発明の実施形態に係るＵＵＩＤ割り振りプロセスを示す。ステップ６０１において、ノードが、初期化される。たとえば、ノードは、オペレーティング・ソフトウェアがノードにインストールされるときに初期化される。初期化中または初期化のすぐ後の時間に、好ましくは、ノードがクラスタと通信しようと試みる前に、オペレーティング・ソフトウェアは、クラスタ内のそれぞれのノードを特定するために使用されるＵＵＩＤをステップ６０２においてランダムに生成する。ステップ６０３において、ノードは、クラスタ１００に対してそのノード自体を特定すべきＵＵＩＤを持つと、クラスタ１００に追加される。例えば、ノードは、ノードを通信ネットワーク１８０に接続することによってクラスタ１００に追加される可能性がある。ステップ６０４において、ＵＵＩＤを生成し終わり、クラスタに接続されるノードが、クラスタにそのノードのＵＵＩＤを知らせる。したがって、動作可能であり、オンラインであるクラスタ内のあらゆるノードは、好ましくは、クラスタに追加されたばかりのノードのＵＵＩＤを受信し、クラスタへのノードの追加を反映するためにそのノードのそれぞれのＵＵＩＤリストを更新したはずである。
【００５９】
タスクを実行すべき（１つまたは複数の）ノードの（１つまたは複数の）ＵＵＩＤを含むタスクがノードで受信されるとき、タスク・ログ３３５は、タスクの受信を反映するように更新される。各ノードは、図１４に示されるように、それぞれの受信されたタスクに対してタスク実行プロセスを実行する。図１２は、通信ネットワーク１８０を介してタスクを受信するノードの抽象的なブロック図を示す。（たとえば、チャネル・ボード１１によって提供される）１つまたは複数のネットワーク・レイヤ１２０１が、タスクをノードに渡す。ステップ７０１において、タスクが、クラスタ１００に接続されたクライアントから受信される。一部の実施形態において、クライアントから受信されるタスクは、タスクを実行すべき１つまたは複数のノードを特定する情報を含む。その他の実施形態において、クライアントから受信されるタスクは、どの１つまたは複数のノードがタスクを実行すべきかを指定せず、タスクを受信するノードが、タスクをクラスタに割り振る必要がある。ステップ７０２において、タスクを受信するノードが、タスクを実行すべきノード（たとえば、ターゲット・ノード）のＵＵＩＤを割り振る。クライアントがタスクをどのノードが実行すべきかを指定した場合、フローは、ステップ７０１からステップ７０３に直接進み、ステップ７０２を迂回する可能性がある。ステップ７０３において、タスクを実行すべきノードのＵＵＩＤを含むタスク・メッセージが、クラスタにブロードキャストされる。クラスタのノードは、ステップ７０４において、ブロードキャストされたタスク・メッセージを受信する。ステップ７０５において、各ノードが、受信されたタスクがノードのＵＵＩＤに一致するＵＵＩＤを含むかどうか（たとえば、タスクがノードに割り振られたかどうか）を判定する。タスクがノードに割り振られていない場合、ノードは、次のタスク・メッセージを受信するのを待つ。タスクがノードに割り振られる場合、ステップ７０６において、ノードが、タスクが実行されるタスク・キュー１２０２にタスクを入れ、（たとえば、プロセッサ・ボード１２または仮想マシン３１０によって提供される）タスク実行エンジン・レイヤ１２０３によってタスクが実行された後に、タスクの完了をクラスタにブロードキャストする。たとえば、図１０に示された実施形態において、各仮想マシン３１０は、実行されるタスクを保持するためのタスク・キュー１２０２を含むデータ操作要求受信ユニット３１３を備える。クラスタ内の各ノードは、タスクが完了されたという通知を受信すると、それに応じて、そのノードのそれぞれのタスク・ログ３３５を更新する。加えて、一部の実施形態において、ノードは、タスクの実行が開始されたときをクラスタに知らせ、クラスタ内の各ノードが、それに応じて、タスクの開始時間のそのノードのそれぞれのタスク・ログ３３５を更新する。
【００６０】
上述のように、場合によっては、ノードが、障害が起こったノードがタスク・メッセージ受信することができないようにするか、実行されているタスクを完了できないようにするか、またはその両方である可能性がある障害にあう可能性がある。図１５は、し損じられたタスクをリカバリするか、不完全なタスクを再開するか、またはその両方を行うために使用される本発明の実施形態に係る再開プロセスを示す。ステップ８０１において、ノードが、障害からリカバリし、通常通り動作し始める（たとえば、障害からリカバリする）。次に、ステップ８０２において、リカバリされたノードが、ノードの障害の期間（たとえば、障害が原因でノードがタスク・メッセージを受信することができなかった時間の枠）中にブロードキャストされたタスクに関してクラスタに問い合わせる。たとえば、ノードがそのノードのタスク・キュー１２０２またはタスク・ログ３３５から障害の期間を決定することができる場合、クラスタ内のその他のノードが、障害の期間に対応する時間の間動作するノードのタスク・ログ３３５の一部を提供することができる。代替的に、ノードは、リカバリされたノードのタスク・ログ３３５の最後の受信されたタスクの後のタイムスタンプを有するすべてのタスク・メッセージを要求する可能性がある。しかし、上述の方法が例であるに過ぎず、クラスタ内の障害が起こらなかったノードからタスク・ログ３３５をリカバリするその他の方法が代わりに実施され得ることは、当業者に明らかであるに違いない。
【００６１】
ステップ８０３において、クラスタ内のノードが、リカバリされたノードに応答し、リカバリされたノードの障害の期間に一致するタスクのリストを提供する。そして、ステップ８０４において、リカバリされたノードが、し損じられたタスク・メッセージのリストをまとめ、し損じられたタスク・メッセージを調べて、リカバリされたノードのＵＵＩＤがし損じられたタスク・メッセージに存在するかどうかを判定する。いずれかのし損じられたタスク・メッセージがリカバリされたノードに振り向けられる場合、リカバリされたノードは、し損じられたタスクを実行するためにタスクのリストに追加する。さらに、リカバリされたノードは、好ましくは、そのノード自体のタスク・ログ３３５を調べ、障害が原因であるすべての誤った処理を防止するために、開始されたが完了されていないものとして印を付けられた任意のタスクを再開すべきである。ステップ８０５において、リカバリされたノードが、タスク・キュー１２０２にタスクを入れ、し損じられた任意のタスクおよび／または障害が原因で完了されなかった任意のタスクを実行し始める。ステップ８０５で、タスクが発生順に実行されることが一部の実施形態において好ましい可能性がある。
【００６２】
上述のように各ノードにおいてＵＵＩＤリストおよびタスク・ログを構築し、保有することによって、タスクの管理が、非集中的になり、ノードの障害が、クラスタの残りにおけるタスクの処理に過度に影響を与えない。さらに、障害が起こったノードは、単一の管理ノードも障害の事例を被る可能性があり、そのことが、非集中的なタスク・ログを管理するために管理ノードに頼るすべてのその他のノードのリカバリに悪影響を与えるときに、ノードが動作不可能であった間に定義されたすべてのタスクを、そのような管理ノードに頼る必要なしにそのような情報に関してクラスタ内のその他のノードに問い合わせることによって決定することができる。
【００６３】
仮想マシンのＩＰアドレス管理
図１０に示されるように、本発明の一部の実施形態において、ノード１３０は、仮想マシン構成情報３３１に基づく１つまたは複数の仮想マシン３１０を実行する可能性があり、仮想マシンは、ハイパーバイザ３０５によってホストされる。図１０において、各仮想マシン３１０は、ハイパーバイザによって仮想マシンをホストするノードから分離される。ノードの観点からすると、仮想マシン３１０は、ハイパーバイザによって実行される不透明なプロセスに見える。仮想マシンの観点からすると、ハイパーバイザは、物理的なハードウェアリソースに見える。したがって、仮想マシンによるすべての通信はネットワーク・インターフェースを介して行われるので、ハイパーバイザ３０５以外に、ノード自体によって実行されるプロセスが仮想マシン３１０によって実行されるプロセスと直接インタラクションするためのメカニズムは存在しない。
【００６４】
ハイパーバイザ３０５は、仮想マシン構成情報３３１に依拠して各仮想マシン３１０を構成する。仮想マシン構成情報３３１は、仮想マシン３１０をホストするノード１３０によって設定される。仮想マシン構成情報３３１は、各仮想マシン３１０のインスタンスに固有のＭＡＣアドレスを含む。仮想マシン３１０がネットワーク接続性を確立するためには、知られているＩＰアドレス（たとえば、ＩＰｖ４）が、前もって構成されなければならない。
【００６５】
図１６に示されるように、仮想マシンに関するＭＡＣアドレスは、４８ビットであり、仮想マシンに関するＩＰアドレスは、ＭＡＣアドレスの最も下位の３２ビットに符号化される。したがって、仮想マシン３１０を構成し、仮想マシン３１０のＭＡＣアドレスを決定するときにハイパーバイザが仮想マシン構成情報３３１を参照するときに、仮想マシン３１０のＩＰアドレスも、同時に指定される。たとえば、割り振られたＭＡＣアドレスが「００：００：Ｃ０：Ａ８：０Ａ：０５」である場合、１６進ＩＰｖ４アドレスが、そのＭＡＣアドレス中に「Ｃ０：Ａ８：０Ａ：０５」として符号化され、１０進でそれと等価な値は、「１９２．１６８．１０．５」である。
【００６６】
ノードが１つまたは複数の仮想マシンをホストする前にノードに対してＩＰアドレス・テーブルが指定される場合、（たとえば、ノードのメモリ３３に記憶される）ＩＰアドレス・テーブル内のＩＰアドレスが、上で説明されたようにＭＡＣアドレスに符号化され、仮想マシン構成情報３３１に記憶され得る。したがって、仮想マシン３１０がその後構成されるとき、その仮想マシン３１０のＩＰアドレスは、図１７に示されるように、ハイパーバイザを通じた経路として符号化されたＭＡＣアドレスを用いてノードから仮想マシンに直接渡される。したがって、ＭＡＣアドレスおよびＭＡＣアドレスに符号化されたＩＰアドレスは、図１８に示されるように、ハイパーバイザ・レイヤから仮想マシン３１０に渡され得る。
【００６７】
図１９は、本発明の一実施形態に係る構成プロセスを示す。ステップ１９０１において、仮想マシン３１０への割り振りのためにクラスタ１００内で割り当てられるＩＰアドレスが、ＭＡＣアドレスに符号化され、仮想マシン３１０をホストする１つまたは複数のノードの仮想マシン構成情報３３１に記憶される。ステップ１９０２において、ノードのそれぞれが、仮想マシンを開始するようにノードに命令するタスクを受信する。仮想マシンを開始するタスクを受信した後、ノードは、ステップ１９０３において、仮想マシンによる使用のために割り振られたＩＰアドレスを符号化されたＭＡＣアドレスを含む仮想マシン構成情報３３１に従って仮想マシン３１０を構成する。たとえば、本発明の一実施形態において、仮想マシン構成情報３３１は、それぞれが仮想マシンのインスタンスを定義する複数の．ｘｍｌファイルを含む。各．ｘｍｌファイルにおいては、それぞれの仮想マシンの定義の一部が、（たとえば、ネットワークでのアドレスの競合を避けるように構成された）ネットワークで使用するのに好適なＩＰアドレスを符号化されたＭＡＣアドレスである。ステップ１９０４において、構成された仮想マシンが、ハイパーバイザ３０５によってその仮想マシンに与えられた符号化されたＭＡＣアドレスからＩＰアドレスを復号する。ステップ１９０５において、仮想マシン３１０が、復号されたＩＰアドレスを用いてネットワーク１８０を介した通信を開始する。たとえば、本発明のその他の実施形態によれば、仮想マシン３１０は、クラスタ内のその他のノード上のタスクに着手し始める可能性がある。したがって、図１９に示されるプロセスを繰り返すことによって、複数の仮想マシンが、前もってネットワーク１８０のために予め定義されたＩＰアドレスを用いてノード上で構成される可能性がある。
【００６８】
帯域内のデータの位置特定
図１に示されたクラスタ１００のさまざまな実施形態によれば、クラスタ中に広がっており、クラスタ内の特定のノードまたはノードのサブセットに物理的に結びつけられないファイル・システムが提供される。その他の実施形態において、ファイル・システムは、クラスタ内のノードのサブセット中に広がるように提供される可能性がある。さらにその他の実施形態においては、クラスタ中に広がるかまたはクラスタのノードのサブセット中に広がるかのどちらかの複数のファイル・システムが、クラスタにおいて提供される可能性がある。したがって、そのような構成において、クラスタは、いくつかの次元でスケーリングされ得る。
【００６９】
本発明のそのような実施形態においては、ファイル・システムの名前空間が、ファイル・システム内のあらゆるファイルに対する「．ｍａｐｐｉｎｇ」またはその他のそのような拡張子を含むようにあらゆるファイルに関して拡張される。図２０は、本発明の一実施形態に係るファイル・システムおよびファイル属性を示すブロック図である。クラスタ中に提供されるファイル・システム１２００においては、マウント・ポイント１２１０が、１つまたは複数のディレクトリを含むマウントされたファイル・システム１２２０へのアクセスを提供する。下位ディレクトリ１２３０は、．ｔｘｔ、．ｍｐ３などのファイルのファイル・タイプに対応するファイル拡張子を有する、「ＦＩＬＥ１２３４」と名付けられたファイル１２５０を含む。ファイル・システム１２００内のファイル１２５０は、ファイルの対１２４０を形成する対応する「．ｍａｐｐｉｎｇ」拡張ファイル１２６０も有する。ファイル１２５０は、関連するメタデータ１２７０をやはり有する。この例において、メタデータは、サイズ、所有者の識別子、位置データ、作成時間、修正時間、およびアクセス時間などのファイル属性１２７０を含む。特に、位置データは、以下のように「．ｍａｐｐｉｎｇ」拡張子を有するマッピング・ファイル１２６０において構成される。
【００７０】
図２１は、ファイル１２５０（たとえば、「ＦＩＬＥ１２３４．＊＊＊」）およびマッピング・ファイル１２６０（たとえば、「ＦＩＬＥ１２３４．ｍａｐｐｉｎｇ」）が互いに関連するときのそれらのファイルの構造を示す。ファイル・システム１２００がクラスタ中に提供されるので、下位ディレクトリ１２３０に記憶されるファイル１２５０は、サイズが６４ＭＢである「チャンク」としてのデータのセクションで複数のノードにわたって記憶される。本発明のさまざまな実施形態においては、ファイル１２５０の各チャンクに関して、図２１に見られるように、クラスタ１００内のノードが、チャンク（たとえば、チャンク＃１）を記憶し、一方、別のノードが、異なるチャンク（たとえば、チャンク＃２）を記憶し、以下同様である。各ノードがＵＵＩＤによってクラスタ１００内で知られているので、一部の実施形態において、各チャンクの記憶位置は異なる。ファイル・システムがクラスタ中に広がるので、チャンクの記憶位置は、クラスタ内の異なるノードにある可能性がある。
【００７１】
図２１において、マッピング・ファイル１２６０は、「．ｍａｐｐｉｎｇ」拡張子によってファイル１２５０と区別される。しかし、任意の利用可能なファイル拡張子が、マッピング・ファイルのために使用され得る。たとえば、図２２は、ファイル１２５０がパス名「／ｍｙ／ｄａｔａ／ａｒｃｈｉｖｅ／ｆｉｌｅ１２３４」を有し、マッピング・ファイル１２６０が経路パス名「／ｍｙ／ｄａｔａ／ａｒｃｈｉｖｅ／ｆｉｌｅ１２３４：：ＬＯＣＡＴＩＯＮ」を有する別の代替的な実施形態を示す。図２２に示される実施形態によれば、マッピング・ファイル１２６０は、マッピング・ファイルのパス名を指定する標準的なファイル・プロトコルを用いることでアクセスされ得る。
【００７２】
ファイル・システム１２００のまたは代替的にファイル・システム１２２０の名前空間は、そのファイル・システムに記憶される各ファイルに関するマッピング・ファイル１２６０に対応するように拡張される。図２１に示されるように、ファイル１２５０の各チャンク１２５１は、マッピング・ファイル１２６０内に対応するチャンク１２５２を有する。マッピング・ファイル１２６０内の各チャンク１２５２は、そのチャンク１２５２が関連付けられるチャンク１２５１の位置データを記憶するかなりまばらなチャンクである。したがって、図２１に見られるように、マッピング・ファイル１２６０内のデータの第１のチャンク１２５２が、ファイル１２５０の第１のチャンク１２５１を記憶する１つまたは複数のノードを指定する位置データ１２５３を含み、マッピング・ファイル１２６０内のデータの第２のチャンク１２５２が、ファイル１２５０の第２のチャンク１２５１を記憶する（１つまたは複数の）ノードを指定する位置データ１２５３を含み、以下同様である。各チャンク１２５２は、位置データ１２５３および空のエリア１２５４からなるかなりまばらなデータのエリアである。たとえば、図２１に示される実施形態において、空のエリア１２５４は、「ヌル」として示される。
【００７３】
さらに、図２３は、ファイル属性１２７０がファイル１２５０に関して更新されるプロセス・フローを示す。ステップ２３０１において、クラスタ内に記憶されたファイル１２５０に対してタスクが実行される。タスクが実行されると、ステップ２３０２において、ファイル１２５０のファイル属性１２７０が、ファイル１２５０に対してタスクの実行が有するすべての変更を反映するために更新される。たとえば、タスクは、ファイル１２５０のサイズが変わる結果となる可能性があり、変化が、ファイル属性１２７０の中のサイズ情報を更新することによってファイル属性１２７０に反映されるべきである。ステップ２３０３において、ファイル属性１２７０が更新された後、クラスタが、タスクの完了を知らされる。
【００７４】
各ファイル１２５０が対応するマッピング・ファイル１２６０を有するようにファイル・システムの名前空間を拡張するようにファイル・システムを構築することによって、クライアント１１０が、クラスタのファイル・システムに記憶されたファイル１２５０に通常通りアクセスするために使用されるのと同じプロトコルを用いてマッピング・ファイルにアクセスすることができる。図２１を参照すると、クライアントは、ＮＦＳ（たとえば、ＮＦＳ  ｖ３．１）などのリモート・ファイル・プロトコルを用いてクラスタに記憶されたファイル１２５０にアクセスする場合、やはりリモート・ファイル・プロトコルを用いてマッピング・ファイル１２６０にアクセスすることもできる。言い換えると、クライアントは、ファイル１２５０にアクセスするために使用されるリモート・ファイル・プロトコルとは異なるプロトコルまたは技術（たとえば、「帯域外）を使用する必要なしに「帯域内」通信を用いてファイル・システムのマッピング・ファイル１２６０にアクセスすることができる。したがって、クライアントは、データ自体にアクセスするために使用されるのと同じメカニズムを使用して位置情報にアクセスすることができる。
【００７５】
図２４は、本発明のさまざまな実施形態に係る、クライアントがマッピング・ファイル１２６０にアクセスするプロセス・フローを示す。たとえば、クライアントは、クラスタ１００内のファイル１２５０の第３のチャンク１２５１の（１つまたは複数の）位置を決定したい場合、ステップ２４０１と同様に、マッピング・ファイル１２６０を開き、オフセット１２５６をシークする。図２１の実施形態によれば、各チャンク１２５１は、サイズが６４ＭＢであり、クライアントは、ファイル１２５０の第３のチャンク１２５１に対応する位置データ１２５３を取り出すためにマッピング・ファイル１２６０内の１２８ＭＢのシークを指定する。位置データは、たとえば、データの１Ｋのブロックである可能性がある。そのような場合、ファイル・アクセス要求およびシークを受信するノードは、マッピング・ファイル１２６０にアクセスし、指定されたオフセットまでシークし、指定されたオフセットに対応するチャンクの位置データ１２５３であるサイズが１Ｋのデータのセグメントを読み取る。
【００７６】
本発明のさまざまな実施形態によれば、マッピング・ファイル１２６０へのアクセスおよび指定されたオフセット１２５６をクライアントから受信するノードが、ステップ２４０２と同様に、ファイル１２５０の対応するチャンク１２５１が記憶されるクラスタ内の位置を指定する位置データ１２５３を含む応答を生成する。図２１に示される実施形態において、ノードは、マッピング・ファイル１２６０の位置データ１２５３から応答１２５５を生成する。図２１に示されるように、応答１２５５は、ファイル１２５０のファイル名（たとえば、ファイル・システム内のパス）、ファイル１２５０のチャンク１２５１のオフセット、チャンク１２５１の長さ、および指定されたデータを物理的に記憶する（１つまたは複数の）ノードの（１つまたは複数の）位置を含む．ｘｍｌファイルとして構築される。図２１において、位置は、指定されたチャンクを記憶するサーバのＩＰアドレスによって指定される。
【００７７】
クラスタ１００と通信するクライアントが、ステップ２４０３において応答１２５５を受信し、ステップ２４０５と同様に、そこに記憶されたチャンク１２５１に関連するタスクを応答１２５５で指定されたノードに直接送信することができる。したがって、クライアントは、チャンク１２５１を用いてタスクを実行するように応答１２５５内のノードに命令することができる。クライアントが帯域内通信を用いてデータの位置情報にアクセスすることを可能にすることによって、タスクは、１つまたは複数の中間ノードをクライアントの代わりにタスクを開始するためのプロキシとして働かせるのではなく、データをローカルに記憶するノード上で直接開始され得る。結果として、クラスタに接続するネットワークへの負荷が、削減される可能性があり、各ノードとそのノードのローカル・ストレージ・エリアとの間で利用可能な比較的広い帯域幅が、所与のノードから遠隔にあるデータを操作するためにプロキシを使用するのではなく、ローカルに記憶されたデータに対してタスクが実行されるように利用され得る。
【００７８】
帯域内のデータの位置特定に関連する上記の説明においては、位置データがマッピング・ファイル１２６０に記憶される実施形態が、説明された。本発明のその他の実施形態によれば、ファイル１２５０に関するその他のメタデータが、位置データの代わりにまたは位置データと組み合わせてマッピング・ファイル１２６０に記憶される可能性がある。図２０に示されるように、ファイル１２５０のファイル属性１２７０が保有される。したがって、サイズ、所有者の識別子、作成時間、修正時間、およびアクセス時間などのその他のファイル属性１２７０が、位置データ１２５３とともにまたは位置データ１２５３の代わりにマッピング・ファイル１２６０に記憶される可能性がある。加えて、図２１に示された実施形態は、．ｘｍｌの応答１２５５を生成する。しかし、応答１２５５は、ＪａｖａＳｃｒｉｐｔオブジェクト表記法（ＪＳＯＮ：ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）、カスタムのキー値の符号化などを用いることによるなど、．ｘｍｌの応答以外の方法で構築される可能性がある。
【００７９】
本発明のさまざまな実施形態によれば、図２５に示されるプロセス・フローが、クラスタ内の（１つまたは複数の）特定のデータの位置を決定し、特定のデータの位置で特定のデータに対して開始されるようにタスクに命令するために従われる。ステップ２５０１において、クライアントが、特定のファイル１２５０に対応するマッピング・ファイル１２６０にアクセスするようにクラスタ内のノードに要求し、特定のファイル１２５０にアクセスするために使用されるリモート・ファイル・プロトコルを用いてオフセットを指定する。図２５は、クライアントがマッピング・ファイル１２６０にアクセスするようにノードに要求することを示すが、代替的な実施形態ではノードは、クラスタ内の別のノードでタスクを開始するためにクライアントからの指示なしにマッピング・ファイルを参照する可能性がある。ステップ２５０２において、ノードが、要求を受信し、マッピング・ファイル１２６０内で指定されたオフセットをシークし、マッピング・ファイル１２６０から位置データ１２５３を読み取る。ステップ２５０３において、応答１２５５が、位置データおよび／または位置データに関連するその他のメタデータを含むノードによって生成され、ノードが、クライアントに応答を送信する。ステップ２５０４において、応答１２５５を受信すると、クライアントは、位置データを読み取る。ステップ２５０６において、位置データ１２５３にしたがって、そのとき、クライアントは、応答１２５５に含まれる位置データ１２５３に関連するターゲット・ノードでタスクを開始することができる。たとえば、ステップ２５０６においてターゲット・ノードで開始されたタスクが、図１４に示されるように、受信されたタスクを実行するためのプロセス・フローをトリガする可能性がある。
【００８０】
本明細書において説明された実施形態は、たとえば、１つまたは複数のコンピュータ可読ストレージ・デバイスに記憶され、コンピューティング・デバイスによって実行されるプログラムなどのコンピュータが実行可能な命令またはコードによって実装される可能性があることが、理解されるであろう。そのようなストレージ・デバイスは、信号自体を除外する。概して、プログラムは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、オブジェクト、コンポーネント、データ構造などを含む。本明細書において使用されるとき、用語「プログラム」は、単一のプログラム、または協力して働く複数のプログラムを意味する可能性があり、アプリケーション、サービス、または任意のその他の種類もしくは分類のプログラムを表すために使用される可能性がある。同様に、用語、ストレージ・デバイス、「コンピュータ」、および「コンピューティング・デバイス」は、本明細書において使用されるとき、協力して働く、１つまたは複数のプログラムを電子的に実行する２つ以上のデバイスを含む任意のデバイスを含む。
【００８１】
本明細書において説明された構成および／または手法は本質的に例示的であり、これらの特定の実施形態または例は、数多くの変形があり得るので、限定的な意味に取られてはならないことを理解されたい。本明細書において説明された特定のルーチンまたは方法は、任意の数の処理方針のうちの１つまたは複数を表す可能性がある。したがって、示された様々な行為は、示された順番で実行されるか、その他の順番で実行されるか、並列的に実行されるか、または場合によっては省略される可能性がある。同様に、上述のプロセスの順番は、変更される可能性がある。
【００８２】
本開示の主題は、本明細書において開示されたさまざまなプロセス、システム、および構成、およびその他の特徴、機能、行為、および／または特性、ならびにこれらの任意のおよびすべての均等物のすべての新規性のある明白でない組合せおよび部分的組合せを含む。
【図１】
2016530598.tif 000003
【図２】
2016530598.tif 000004
【図３】
2016530598.tif 000005
【図４】
2016530598.tif 000006
【図５】
2016530598.tif 000007
【図６】
2016530598.tif 000008
【図７】
2016530598.tif 000009
【図８Ａ】
2016530598.tif 000010
【図８Ｂ】
2016530598.tif 000011
【図８Ｃ】
2016530598.tif 000012
【図９Ａ】
2016530598.tif 000013
【図９Ｂ】
2016530598.tif 000014
【図９Ｃ】
2016530598.tif 000015
【図１０】
2016530598.tif 000016
【図１１Ａ】
2016530598.tif 000017
【図１１Ｂ】
2016530598.tif 000018
【図１２】
2016530598.tif 000019
【図１３】
2016530598.tif 000020
【図１４】
2016530598.tif 000021
【図１５】
2016530598.tif 000022
【図１６】
2016530598.tif 000023
【図１７】
2016530598.tif 000024
【図１８】
2016530598.tif 000025
【図１９】
2016530598.tif 000026
【図２０】
2016530598.tif 000027
【図２１】
2016530598.tif 000028
【図２２】
2016530598.tif 000029
【図２３】
2016530598.tif 000030
【図２４】
2016530598.tif 000031
【図２５】
2016530598.tif 000032
【手続補正書】
【提出日】平成28年2月15日(2016.2.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のノードを有する分散型システムに、
前記複数のノードのそれぞれのノードにノード識別子を割り振るステップと、
いずれかのノードによって他のノードに前記ノード識別子のうちの１つまたは複数を含むタスク・メッセージをブロードキャストするステップと、
前記ブロードキャストされたタスク・メッセージを受信する各ノードによって、前記ブロードキャストされたタスク・メッセージを記憶するステップと、
前記タスク・メッセージに含まれるノード識別子に関連付けられるノードによって、前記ブロードキャストされたタスク・メッセージに対応するタスクを実行するステップと、
前記タスクを実行したノードによって他のノードに完了メッセージをブロードキャストするステップと
を含む方法
を実行させるコンピュータプログラム。
【請求項２】
前記方法が、
前記分散型システムに接続されたクライアントから前記タスク・メッセージをいずれかのノードにより受信するステップ
をさらに含む
請求項１に記載のコンピュータプログラム。
【請求項３】
前記方法が、
前記タスク・メッセージの１つまたは複数のノード識別子が、前記ブロードキャストされたタスク・メッセージを受信したノードのノード識別子を含む場合に、そのノードにおいて前記タスクを実行するステップの前に、そのノードのキューに、実行される前記タスクを入れるステップ、
をさらに含む
請求項１又は２に記載のコンピュータプログラム。
【請求項４】
前記ブロードキャストされたタスク・メッセージを受信したノードが、前記タスク・メッセージをタイムスタンプとともにログに記憶する
請求項１乃至３のうちのいずれか１項に記載のコンピュータプログラム。
【請求項５】
前記方法が、
前記タスク・メッセージの１つまたは複数のノード識別子が、前記ブロードキャストされたタスク・メッセージを受信したノードのノード識別子を含む場合、そのノードが前記タスクを実行し始めるときに開始メッセージをブロードキャストするステップ
をさらに含む
請求項４に記載のコンピュータプログラム。
【請求項６】
前記ブロードキャストされたタスク・メッセージを受信したノードが、前記開始メッセージで示される時間および前記完了メッセージで示される時間に対応して前記ブロードキャストされたタスク・メッセージを記憶する
請求項５に記載のコンピュータプログラム。
【請求項７】
前記複数のノードのうちのいずれかである第１のノードが、障害が原因で前記ブロードキャストされたタスク・メッセージを受信することができないときに、前記方法が、
前記第１のノードが前記障害からリカバリした後に、前記第１のノードにおいて前記ノードのうちの１つまたは複数から前記ブロードキャストされたタスク・メッセージを受信するステップと、
前記第１のノードが前記障害からリカバリした後に、前記第１のノードにおいて前記ブローキャストされたタスク・メッセージを記憶するステップと
をさらに含む
請求項１乃至６のうちのいずれか１項に記載のコンピュータプログラム。
【請求項８】
前記タスク・メッセージが、データ操作である前記タスクを実行することを要求するデータ操作要求である
請求項１乃至７のうちのいずれか１項に記載のコンピュータプログラム。
【請求項９】
前記データ操作要求が、複製開始要求、複製ファイルに対する更新要求、前記複製ファイルに対する参照要求、同期要求、メタデータへのアクセス要求、ファイル・エンティティに対する参照要求、リコール要求、スタブド・ファイル・エンティティへの更新要求、ユーザを作成する要求、物理ディスクを追加もしくは削除する要求、または論理ユニットを構成する要求である
請求項８に記載のコンピュータプログラム。
【請求項１０】
複数のノードを有する分散型システムを制御するための方法であって、
前記複数のノードのそれぞれのノードにノード識別子を割り振るステップと、
いずれかのノードによって他のノードに前記ノード識別子のうちの１つまたは複数を含むタスク・メッセージをブロードキャストするステップと、
前記ブロードキャストされたタスク・メッセージを受信する各ノードによって、前記ブロードキャストされたタスク・メッセージを記憶するステップと、
前記タスク・メッセージに含まれるそれぞれのノード識別子に関連付けられる各ノードによって、前記ブロードキャストされたタスク・メッセージに対応するタスクを実行するステップと、
前記タスクを実行した各ノードによって他のノードに完了メッセージをブロードキャストするステップと
を含む方法。
【請求項１１】
前記分散型システム内のコンピュータまたは複数のコンピュータ上で、請求項１乃至９のうちのいずれか１項に記載のコンピュータプログラムに基づいて実行される
請求項１０に記載の方法。
【請求項１２】
複数のノードを有し、
前記複数のノードのそれぞれのノードにノード識別子が割り振られ、
いずれかのノードによって他のノードに前記ノード識別子のうちの１つまたは複数を含むタスク・メッセージをブロードキャストし、
前記ブロードキャストされたタスク・メッセージを受信する各ノードによって、前記ブロードキャストされたタスク・メッセージを記憶し、
前記タスク・メッセージに含まれるそれぞれのノード識別子に関連付けられる各ノードによって、前記ブロードキャストされたタスク・メッセージに対応するタスクを実行し、
前記タスクを実行した各ノードによって、他のノードに完了メッセージをブロードキャストする、
分散型システム。
【請求項１３】
分散型システムが有する複数のノードにおけるいずれかのノードである第１のノードであって、
前記複数のノードのそれぞれに割り振られたノード識別子のうちの１つまたは複数を含みいずれかのノードによってブロードキャストされたタスク・メッセージを受信する手段と、
前記タスク・メッセージを記憶する手段と、
前記ブロードキャストされたタスク・メッセージの１つまたは複数のノード識別子が第１のノードのノード識別子を含む場合に、前記ブロードキャストされたタスク・メッセージに対応するタスクを実行する手段と、
前記タスクを実行したときに、他のノードに完了メッセージをブロードキャストする手段と
を備える第１のノード。
【請求項１４】
分散型システムが有する複数のノードのいずれかのノードである第２のノードであって、
前記分散型システムに接続されたクライアントからタスク・メッセージを受信する手段と、
前記分散型システムの他のノードに、前記複数のノードのそれぞれに割り振られた前記ノード識別子のうちの１つまたは複数を含む前記タスク・メッセージをブロードキャストする手段と、
前記ブロードキャストされたタスク・メッセージの１つまたは複数のノード識別子が第２のノードのノード識別子を含む場合に、前記ブロードキャストされたタスク・メッセージに対応するタスクを実行する手段と、
前記タスクを実行したときに、他のノードに完了メッセージをブロードキャストする手段と
を備える第２のノード。
【国際調査報告】
2016530598.tif 000033
2016530598.tif 000034
2016530598.tif 000035
2016530598.tif 000036
2016530598.tif 000037