(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムにおいてアプリケーション処理を管理するための方法であって、
第１のサーバ・ノードおよび第２のサーバ・ノードを含む分散させたサーバ・ノード・セットのクラスタによって無共有クラスタ化ファイル・システムを構成するステップと、
第１の書き込みアフィニティ領域に前記第１のサーバ・ノードにローカルである第１のアプリケーションの第１のコピーを記憶するステップと、
第２の書き込みアフィニティ領域に前記第２のサーバ・ノードにローカルである前記第１のアプリケーションの第２のコピーを記憶するステップと、
前記クラスタにおいてワイド・ストライピング領域にまたがって前記第１のアプリケーションの第３のコピーを記憶するステップと、
前記第１のサーバ・ノードから前記第１のアプリケーションにローカルにサービス提供するステップと、
前記第１のアプリケーションの故障に応答して、前記第１のアプリケーションのアプリケーション処理を、前記第２のコピーによってサポートされている前記第２のサーバ・ノードに移動させるステップと、
前記第３のコピーによって前記第１のサーバ・ノードにローカルな前記第１のアプリケーションを回復するステップと、
を含む、方法。
【請求項２】
前記第２のコピーを記憶する前記ステップが、前記第１のアプリケーションを構成する完全なファイルおよびデータのセットを記憶することを含む、請求項１に記載の方法。
【請求項３】
前記第１のサーバ・ノードから前記第２のサーバ・ノードにアプリケーション処理を移動させることが、前記第１のアプリケーションのローカルな処理を含む、請求項１または２のいずれかに記載の方法。
【請求項４】
前記第１のサーバ・ノード上で前記第１のアプリケーションを回復することが、前記第１のアプリケーションの前記第３のコピーからアプリケーション・データを再構築することを更に含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
前記第１のサーバ・ノードにローカルな前記第１のアプリケーションの完全な再構築が、前記第１のアプリケーションの完全なファイル・セットによる再構築を含む、請求項４に記載の方法。
【請求項６】
再構築が完了するまで、前記第２のサーバ・ノードから前記第１のアプリケーションの書き込みトランザクションを処理することを更に含む、請求項４または５のいずれかに記載の方法。
【請求項７】
前記第１のサーバ・ノードの再構築が完了した後、前記回復した第１のアプリケーションをホストする前記第１のサーバ・ノードから前記第１のアプリケーションの書き込みトランザクションを処理することを更に含む、請求項１〜６のいずれかに記載の方法。
【請求項８】
前記ワイド・ストライピング領域からの前記第１のアプリケーションの回復が、第２のアプリケーションの性能に対する影響を軽減する、請求項１〜７のいずれかに記載の方法。
【請求項９】
コンピュータ・システムにおいてアプリケーション処理を管理するためのシステムであって、
第１のサーバ・ノードおよび第２のサーバ・ノードを含むサーバ・ノード・セットのクラスタによる無共有クラスタ化ファイル分散セットであって、ファイル・システムが、前記第１のサーバ・ノードの第１の書き込みアフィニティ領域に記憶された前記第１のサーバ・ノードにローカルである第１のアプリケーションの第１のコピーと、前記第２のサーバ・ノードにローカルである第２の書き込みアフィニティ領域に記憶された前記第１のアプリケーションの第２のコピーと、前記クラスタにおいてワイド・ストライピング領域にまたがって記憶された前記第１のアプリケーションの第３のコピーと、を含む、サーバ・ノード・セットと、
前記第１のサーバ・ノードから前記第１のアプリケーションにローカルにサービス提供するためのサービス・マネージャと、
ワイド・ストライピング領域のための前記第１のアプリケーションの複製コピーの数を指定するためのコピー・マネージャと、
前記サービス・マネージャによる前記第１のアプリケーションの故障に応答して、前記第１のアプリケーションの処理を、前記第２の書き込みアフィニティ領域において前記第２のコピーによってサポートされている前記第２のサーバ・ノードに移動させるため、および、前記コピー・マネージャと通信を行って前記第３のコピーによって故障した前記第１のアプリケーションを回復させるための回復マネージャと、
を含む、システム。
【請求項１０】
コンピュータ・システムにおいてアプリケーション処理を管理するためのコンピュータ・プログラムであって、前記コンピュータ・システムにより実行されることで、前記コンピュータ・システムに請求項１〜８のいずれかに記載の方法を実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムにおけるアプリケーション処理の回復に関する。更に具体的には、本発明は、故障したアプリケーションのトランスペアレントなアプリケーション・フェイルオーバーおよび再構築に関する。
【背景技術】
【０００２】
データ・ストレージ・ブロックまたはストレージ・ブロックは、本明細書において以降はブロックとも称するが、ストレージ・デバイス上のアドレス空間の特定領域を指す。例えば、１つのデータ・ブロックは、ディスク空間の領域内のセクタまたはバイトの集合とすることができる。ブロックは単位量として操作される。大きいブロックの割り当てによって、単一の入出力（Ｉ／Ｏ）トランザクションで大量のデータを検索することが可能となる。一実施形態において、ブロックは、共に転送される固定サイズのデータ単位量である。ファイル・システムは、ファイル階層またはディレクトリ階層あるいはその両方にファイル・データを記憶、編成、および維持する実施によって維持されるファイル・データ集合である。ファイル・システムでは、ブロック割り当て技法を用いてデータをストレージ媒体に書き込む技法が用いられる。典型的に、ストレージ・システムは、このストレージ・システムに接続された１つ以上のストレージ・デバイス上に記憶された情報に対するアクセスを提供する。この情報に対するアクセスは、ストレージ・デバイスをボリュームに編成することによって可能となる。これは、ストレージ・デバイス上に記憶された情報を論理的に編成することである。
【０００３】
ストレージ・システムは、更に、情報送出のクライアント／サーバ・モデルに従って動作し、これによって多くのクライアントがシステム上に記憶されたデータ・コンテナにアクセス可能であるように構成することができる。このモデルでは、クライアントは、コンピュータ・ネットワークを介してストレージ・システムに接続するコンピュータ上で実行しているデータベース・アプリケーション等のアプリケーションを用いることができる。各クライアントは、ネットワークを介してシステムにファイル・ベースのプロトコル・メッセージを発行することによってストレージ・システムのサービスを要求することができる。複数のストレージ・システムを相互接続して、多くのクライアントにサービスを提供するように構成したストレージ・システム環境を提供することができる。各ストレージ・システムは、１つ以上のボリュームにサービスを提供するように構成することができ、この場合、各ボリュームは１つ以上のデータ・コンテナを記憶する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、無共有クラスタ（ＳＮＣ：Shared Nothing Cluster）においては、アプリケーション・フェイルオーバーの場合、および故障したアプリケーションが再構築された場合、アプリケーションに対して大きな性能上の影響がある場合がある。
【０００５】
従って、当技術分野において、前述の問題に対処する必要がある。
【課題を解決するための手段】
【０００６】
本発明は、クラスタ・ファイル・システムにおいて、回復およびアプリケーション性能トランスペアレンシのための方法、システム、および物品（article）を含む。
【０００７】
本発明の一態様において、クラスタ内に第１のサーバ・ノードおよび第２のサーバ・ノードの双方を含む分散させたサーバ・ノード・セットによって無共有クラスタ化ファイル・システムを構成するための方法が提供される。第１のアプリケーションの第１のコピーを、第１の書き込みアフィニティ（write affinity）領域において第１のサーバ・ノードに対してローカルに記憶し、第１のアプリケーションの第２のコピーを、第２のサーバ・ノードの書き込みアフィニティにおいて第２のサーバ・ノードに対してローカルに記憶する。更に、第１のアプリケーションの第３のコピーを、クラスタにおいてワイド・ストライピング（wide striping）領域にまたがって記憶する。第１のサーバ・ノードから第１のアプリケーションにサービス提供する。第１のアプリケーションの故障後、第１のアプリケーションの処理は、第１のサーバから、第２のコピーによってサポートされている第２のサーバ・ノードに移動する。更に、第３のコピーを用いて第１のアプリケーションを回復させる。
【０００８】
本発明の別の態様において、第１のサーバ・ノードおよび第２のサーバ・ノードの双方を含む分散させたサーバ・ノード・セットを有する無共有クラスタ化ファイル・システムを用いたコンピュータ・システムが提供される。第１のアプリケーションの第１のコピーは、第１のサーバ・ノードにローカルに提供され、第１のサーバ・ノードにローカルである第１の書き込みアフィニティ領域に記憶される。第１のアプリケーションの第２のコピーは、第２のサーバ・ノードにローカルである第２の書き込みアフィニティ領域に記憶される。第１のアプリケーションの第３のコピーは、クラスタにおいてワイド・ストライピング領域にまたがって記憶される。第１のサーバから第１のアプリケーションのローカルなサービスをサポートするために、クラスタにおいてサービス・マネージャを提供し、ワイド・ストライピングのための第１のアプリケーションの複製コピーの数を指定するために、クラスタにおいてコピー・マネージャを提供する。サービス・マネージャによる第１のアプリケーションの故障後、第１のアプリケーションのアプリケーション処理を、第２のコピーを用いるクラスタ内の第２のサーバ・ノードに移動させるため、および、コピー・マネージャと通信を行って第３のコピーを用いて故障した第１のアプリケーションを回復させるために、回復マネージャを提供する。
【０００９】
本発明の更に別の態様において、具現化されたコンピュータ読み取り可能プログラム・コードを有するコンピュータ読み取り可能ストレージ媒体を用いたコンピュータ・プログラムが提供される。更に具体的には、ファイル・システムにおいてブロック割り当てをサポートする２つ以上の領域タイプを規定するためにコンピュータ読み取り可能プログラム・コードを提供する。領域タイプの１つは書き込みアフィニティ領域であり、他の領域タイプはワイド・ストライピング領域である。第１の書き込みアフィニティ・コピーから第１のアプリケーションにローカルにサービス提供するためにコンピュータ読み取り可能プログラム・コードを提供する。第１のアプリケーションの故障後、第１のアプリケーションのアプリケーション処理を、第１のアプリケーションの複製書き込みアフィニティ・コピーを用いたクラスタ内の別のサーバ・ノードに移動させるために、コンピュータ読み取り可能プログラム・コードを提供する。書き込みアフィニティ・コピーに加えて、クラスタ全体のワイド・ストライプ領域において第１のアプリケーションの第３のコピーを記憶するため第１のアプリケーションのデータ・コピーを選択するために、コンピュータ読み取り可能プログラム・コードを提供する。ワイド・ストライプ領域における第１のアプリケーションのコピーを用いて第１のアプリケーションを回復するために、コンピュータ読み取り可能プログラム・コードを提供する。
【００１０】
更に別の態様において、分散させたサーバ・ノード・セットを用いたクラスタ・ファイル・システムが提供される。第１のアプリケーションは第１のサーバ・ノードからローカルにサービス提供される。第１のアプリケーションの故障後、書き込みアフィニティ領域において第１のアプリケーションの複製コピーをホストしているクラスタ内の別のサーバ・ノードに、処理を移動させる。更に、クラスタ全体のワイド・ストライピング領域からの分散セグメントを用いて、故障した第１のアプリケーションを回復する。
【００１１】
更に別の態様から、本発明は、コンピュータ・システムにおいてアプリケーション処理を管理するためのコンピュータ・プログラムを提供する。このコンピュータ・プログラムは、本発明のステップを実行するための方法を実行するために、処理回路によって読み取り可能であり処理回路によって実行される命令を記憶したコンピュータ読み取り可能ストレージ媒体を含む。
【００１２】
更に別の態様から、本発明は、コンピュータ読み取り可能媒体上に記憶され、デジタル・コンピュータの内部メモリにロードすることができるコンピュータ・プログラムを提供する。このコンピュータ・プログラムは、プログラムがコンピュータ上で実行されると本発明のステップを実行するためのソフトウェア・コード部分を含む。
【００１３】
本発明の他の特性および利点は、本発明の現在好適な実施形態の以下の詳細な説明を添付図面と関連付けて読むことから明らかとなろう。
【００１４】
これより、以下の図面に示すような好適な実施形態を参照して、一例としてのみ本発明について説明する。
【図面の簡単な説明】
【００１５】
【図１】ワイド・ストライピングのためのブロック割り当てマップの論理ビューのブロック図である。
【図２】書き込みアフィニティのためのブロック割り当てマップの論理ビューのブロック図である。
【図３】故障状況においてトランスペアレンシをサポートするための一般的なプロセスを示すフロー・チャートである。
【図４】クラスタ内のサーバ・ノードにまたがったワイド・ストライピング・レプリカからアプリケーションを再構築するためのプロセスを示すフロー・チャートである。
【図５】無共有クラスタ・ファイル・システムにおいてトランザクションの連続処理をサポートするためにコンピュータ・システムに埋め込まれたツールを示すブロック図である。
【図６】本発明の一実施形態を実施するためのシステムを示すブロック図である。
【発明を実施するための形態】
【００１６】
本発明のコンポーネントは、本明細書において一般的に記述し図面に示すように、多種多様な異なる構成に配置し設計することができることは容易に理解されよう。このため、図面に提示したような本発明の装置、システム、および方法の実施形態の以下の詳細な説明は、特許請求するような本発明の範囲を限定することは意図しておらず、本発明の選択した実施形態を単に代表するに過ぎない。
【００１７】
本明細書に記載する機能ユニットは、マネージャ（manager）として標示されている。マネージャは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ論理、プログラマブル論理デバイス等のプログラマブル・ハードウェア・デバイスにおいて実施することができる。また、マネージャは、様々なタイプのプロセッサによる処理のためにソフトウェアにおいて実施することも可能である。実行可能コードの識別されたマネージャは、例えばコンピュータ命令の１つ以上の物理または論理ブロックを含むことができ、これらは例えば、オブジェクト、手順、機能、または他の構成として編成することができる。しかしながら、識別されたマネージャの実行ファイルは物理的に共に位置する必要はなく、異なる位置に記憶した異なる命令を含むことができ、論理的に結び付けられるとマネージャを構成してマネージャの上述の目的を達成する。
【００１８】
実際、実行可能コードのマネージャは、単一の命令または多くの命令である場合があり、いくつかの異なるコード・セグメント上、異なるアプリケーション間、およびいくつかのメモリ・デバイス間に分散させることができる。同様に、本明細書ではオペレーショナル・データをマネージャ内で識別し例示することができ、いずれかの適切な形態で具現化し、いずれかの適切なデータ構造タイプ内で編成することができる。オペレーショナル・データは、単一のデータ・セットとして収集することができ、または異なるストレージ・デバイスを含む異なる位置に分散させることができ、少なくとも部分的に、システムまたはネットワーク上で電子信号として存在することができる。
【００１９】
本明細書全体を通して、「選択した実施形態」、「一実施形態」、または「実施形態」という場合、実施形態に関連付けて記載する特定の特性、構造、または特徴が、本発明の少なくとも１つの実施形態に含まれることを意味する。このため、本明細書全体を通して様々な箇所で「選択実施形態」、「一実施形態において」、または「実施形態において」という語句が出現するが、必ずしも同一の実施形態を指すものではない。
【００２０】
更に、記載した特性、構造、または特徴は、１つ以上の実施形態においていずれかの適切な方法で組み合わせることができる。以下の記載においては、書き込みストリーム・マネージャの例等の多数の具体的な詳細事項を与えて、本発明の実施形態の完全な理解を図る。しかしながら、本発明は、具体的な詳細事項の１つ以上がなくても、または他の方法、コンポーネント、材料等によっても実施可能であることは当業者には認められよう。他の例では、本発明の態様をあいまいにすることを避けるために、周知の構造、材料、または動作については詳細には図示または記述を行わない。
【００２１】
本発明の例示する実施形態は、図面を参照することで最も良く理解されよう。図面全体を通して、同様の部分は同様の番号によって示す。以下の説明は例示のみを意図しており、本明細書で特許請求するような本発明と一致するデバイス、システム、およびプロセスのいくつかの選択した実施形態を示すに過ぎない。
【００２２】
クラスタ・ファイル・システムは、多数のコンピュータによって読み取りおよび書き込みのために同時にアクセスすることができるエンタープライズ・ストレージ・ファイル・システムである。更に具体的には、かかるファイル・システムにおいて、コンピュータはクラスタ・サーバの形態であり、基礎にあるストレージ・デバイスに接続する。共有ディスク・ファイル・システムに対する異なるアーキテクチャ手法があり、それらには、クラスタ内の全サーバ間でファイル情報を分散させてクラスタ・サーバ間で一致したファイル・システム・イメージ与えることが含まれる。ストレージ・ファイル・システム内の各ストレージ・デバイスは複数のブロックを有する。各ブロックはストレージ・デバイス上の固定サイズのデータ単位量である。データはブロックの集まりでストレージに書き込まれ、同様にブロックの集まりでストレージから読み取られる。一実施形態において、ファイル・システムは、ある数のディスク・セクタを含むブロック単位でデータをアドレス指定する。ディスク・セクタは、読み取りおよび書き込みのために割り当てることができる最小量のディスク空間である。
【００２３】
ファイル・システムにおいては、２つのタイプのブロック領域が規定されている。すなわち、書き込みアフィニティ領域およびワイド・ストライピング領域である。書き込みアフィニティ領域は、クラスタ内のサーバにローカルなデータ・ストレージからのブロックを有する。ワイド・ストライピング領域は、クラスタ全体の全てのデータ・ストレージからのブロックを有する。換言すると、書き込みアフィニティ領域はサーバ・ノードにローカルなブロックに限定され、ワイド・ストライピング領域はクラスタのストレージ・デバイス間に分散したブロックを含み、サーバ・ノードにローカルな少なくとも１つのストレージ・デバイスを含む。書き込みアフィニティ領域に対するデータの書き込みが望ましいのは、ネットワーク・トラフィックを低減する必要があり、これによって書き込み性能を改善する必要がある場合である。同時に、ワイド・ストライピングによってクラスタ内の全てのサーバ・ノードおよびディスク・リソースを均一に用いることができる。
【００２４】
図１は、ワイド・ストライピングのためのブロック割り当てマップのブロック図（１００）である。本明細書に示すように、４つの形態のデータ・ストレージ（１１０）、（１２０）、（１３０）、および（１４０）がある。各データ・ストレージは複数のブロックを所有し、線（１１２）、（１２２）、（１３２）、および（１４２）は、書き込みアフィニティ・トランザクションに割り当てられるので利用可能でないブロックを示し、ワイド・ストライピング領域（１５０）、（１５２）、および（１５４）における空のブロック（１１４）、（１２４）、（１３４）、および（１４４）は、ワイド・ストライピング・トランザクションに利用可能である。図２は、書き込みアフィニティのためのブロック割り当てマップのブロック図（２００）である。本明細書に示すように、４つの形態のデータ・ストレージ（２１０）、（２２０）、（２３０）、および（２４０）がある。各データ・ストレージは複数のブロックを所有し、線（２５０）は、ワイド・ストライピング・トランザクションに割り当てられるので利用可能でないブロックを示し、空のブロック（２１２）、（２２２）、（２３２）、および（２４２）は、書き込みアフィニティ・トランザクションに利用可能な領域を示す。割り当てマップ（１００）および（２００）は４つの形態のデータ・ストレージを示すが、本発明は本明細書に示すストレージ要素の数に限定されるものではない。一実施形態では、更に追加したかまたは減少した数のストレージ要素を設けることも可能である。
【００２５】
コモディティ・ハードウェア・アーキテクチャのためのシステムにおいては、サーバ・ノードの故障は通常の動作慣例と見なされる。更に具体的には、コモディティ・ハードウェア・コンポーネントは故障を発生しやすいことが当技術分野では知られている。一実施形態では、機械またはアプリケーションあるいはその両方の故障は、限定ではないが、アクションまたはタスクの実行の省略、機械またはアプリケーションあるいはその両方がオフラインであること、動作していないこと等を含む。コモディティ・コンポーネントを用いたファイル・システムにおいて読み取りおよび書き込みトランザクションの双方に対するサーバ故障の負の影響を軽減するため、更にトランスペアレンシを保証するため、アプリケーション複製が用いられる。図３は、ファイル・システムにおいてトランスペアレンシをサポートするための一般的なプロセスを示すフロー・チャート（３００）である。分散サーバ・ノードのクラスタによってファイル・システムを構成する（３０２）。クラスタ内の各サーバ・ノードは、アプリケーションによるデータ処理をサポートするように構成されている。更に具体的には、第１のサーバ・ノードは、書き込みアフィニティ領域に記憶された第１のアプリケーションのコピーから第１のアプリケーションをホストし処理するように構成することができ、クラスタ内の第２のサーバ・ノードは、書き込みアフィニティ領域に記憶された第２のアプリケーションのコピーから第２のアプリケーションをホストし処理するように構成することができる（３０４）等である。書き込みアフィニティ領域に記憶されたアプリケーションのコピーは、アプリケーションをサポートするブロックを全て含む。従って、第１のアプリケーションは、第１のサーバ・ノードにローカルな書き込みアフィニティ領域内のコピーからローカルにサポートされ、第２のアプリケーションは、第２のサーバ・ノードにローカルな書き込みアフィニティ領域内のコピーからローカルにサポートされる。
【００２６】
クラスタ内のコモディティ製品の故障に対処するため、各アプリケーションの少なくとも１つのレプリカを書き込みアフィニティ深さと共に維持する。更に具体的には、第１のアプリケーションのレプリカを書き込みアフィニティ深さと共にクラスタ内の二次ノードの少なくとも１つに維持し（３０６）、第２のアプリケーションのレプリカを書き込みアフィニティ深さと共にクラスタ内の二次ノードの少なくとも１つに維持する（３０８）。一実施形態においては、第１のアプリケーションのレプリカおよび第２のアプリケーションのレプリカをクラスタ内の異なる二次ノード上に維持する。同様に、一実施形態では、クラスタ内の多数のサーバ・ノードを、クラスタのコンポーネントが垂直方向に相互に積層されているコンピュータ・ラックに配置することができる。ラック環境では、ローカリティを維持するため、アプリケーションの１つのレプリカを書き込み深さと共に、アプリケーションの一次コピーと同一のラックにあるクラスタ内の二次ノード上に維持することが望ましい場合がある。従って、第１および第２のアプリケーションの各々の少なくとも１つのレプリカを、書き込みアフィニティ深さと共に、クラスタ内の別個の二次ノード上に維持する。
【００２７】
第１または第２のアプリケーションの一方をホストするサーバ・ノードに故障が発生した時点で、アプリケーション処理は、そのアプリケーションの書き込みアフィニティ・レプリカを有する二次ノードに移動される。更に具体的には、サポートおよび処理に関するトランスペアレンシを提供するために、書き込みアフィニティ・レプリカを活性化する。本明細書に示すように、第１のサーバ・ノードに故障が発生し得る時点で（３１０）、第１のアプリケーションの処理は、クラスタ内の二次ノードの１つに対してローカルな書き込みアフィニティ・コピーに転送される（３１２）。同様に、第２のサーバ・ノードに故障が発生し得る時点で（３１４）、第２のアプリケーションの処理は、クラスタ内の二次ノードの１つに対してローカルな書き込みアフィニティ・コピーに転送される（３１６）。従って、故障したノードから書き込みアフィニティ・コピーを有する二次ノードの１つへのアプリケーション処理の転送が、アプリケーションのローカルな性能を維持する。
【００２８】
書き込みアフィニティ・アプリケーション・レプリカに加えて、クラスタ内には各アプリケーションのワイド・ストライピング・レプリカも存在する。各アプリケーションは多数のブロック・セグメントに分割され、１つ以上のブロック・セグメントは、アプリケーションの一次コピーのためのトランザクションをホストおよび処理するサーバ・ノードからリモートであるデータ・ストレージのワイド・ストライピング領域に記憶されている。第１のアプリケーションのアプリケーション・データのための多数のブロック・セグメントが指定され、これらのブロック・セグメントはワイド・ストライピング領域の数に関係する。クラスタ全体にアプリケーションを分散させるために、各アプリケーション・ブロック・セグメントのコピーは、クラスタ内の複数のサーバ・ノードの異なるデータ・ストレージ上に記憶されるので、クラスタ内のいずれか１つのサーバ・ノードに影響を及ぼすことはない。例えば、第１のアプリケーションのためのブロック・セグメント数が３に設定された場合、第１のアプリケーションの１つのセグメント・セットは第１の二次ノードにローカルなストレージ上に維持され、第１のアプリケーションの第２のブロック・セグメント・セットは第２の二次ノードにローカルなストレージ上に維持され、第１のアプリケーションの第３のブロック・セグメント・セットは第３の二次ノードにローカルなストレージ上に維持される。従って、ワイド・ストライピングは、アプリケーションのブロック・セグメントのコピーをクラスタ全体に分散させるためのツールとして用いられる。
【００２９】
サーバ・ノードの１つが故障した後、アプリケーション処理を書き込みアフィニティ・コピーに転送してトランスペアレンシを維持し、同時に、クラスタ全体に分散させたワイド・ストライピング領域に記憶されたブロック・セグメントから、故障したアプリケーションを再構築することができる。図４は、クラスタ内のサーバ・ノードにローカルなデータ・ストレージにまたがってワイド・ストライピング領域に記憶されたブロック・セグメントからのアプリケーションの再構築を示すフロー・チャート（４００）である。再構築を開始する前に、異なるサーバ・ノード上に維持されるアプリケーションの指定ブロックを識別するワイド・ストライピング領域に、第１のアプリケーションのブロック・セグメントのコピーをクラスタ全体で分散させる（４０２）。一実施形態においては、データ・ストレージのワイド・ストライピング領域におけるアプリケーションの全ブロック・セグメントの組み合わせがアプリケーションを構成する。アプリケーションの故障（４０４）後、故障したアプリケーションの再構築のためにクラスタ・ノードの１つを選択する（４０６）。一実施形態では、再構築のために選択したノードは、故障が発生したノードである。再構築の実行と同時に、非故障サーバ・ノードすなわちスペア・ノードの書き込みアフィニティ領域における故障アプリケーションのコピーが、故障アプリケーションの代わりに処理トランザクションを続ける（４０８）。故障アプリケーションの再構築は、クラスタ内のワイド・ストライプ領域におけるアプリケーションの分散ブロック・セグメントを用いるので、クラスタ内の各ノードではアプリケーション性能における影響は最小限である。従って、再構築の負担がクラスタ全体に分散されるので、アプリケーションの分散および再構築によって負荷均衡化が得られる。
【００３０】
再構築が完了するまで、第１のアプリケーションの処理は書き込みアフィニティ・コピーすなわちスペア・コピーに転送される。いったんクラスタのワイド・ストライピング領域に記憶されたセグメントからの故障アプリケーションの再構築が完了すると（４１０）、アプリケーション処理は再構築アプリケーションに戻る（４１２）。同時に、第１のアプリケーションのワイド・ストライピング分散コピーの１つを有するサーバ・ノードの各々は、サーバ・ノードがホストする他のアプリケーションのサービス提供トランザクションをサポートし続ける。従って、クラスタにおいてサポートされる各アプリケーションについて、クラスタ内のサーバ・ノードにローカルなデータ・ストレージからの利用可能ブロックが割り当てられた書き込みアフィニティ領域はアプリケーションのレプリカを記憶し、クラスタ内のワイド・ストライピング領域はアプリケーションのブロック・セグメントが割り当てられる。
【００３１】
図１から図４のフロー・チャートにおいて実証したように、ファイル・システムの書き込みアフィニティ領域およびワイド・ストライピング領域を用いることによってアプリケーション処理のトランスペアレンシをサポートするための方法が用いられる。図５は、無共有クラスタ・ファイル・システムにおいてトランザクションの連続処理をサポートするためにコンピュータ・システムに埋め込まれたツールを示すブロック図（５００）である。無共有アーキテクチャは、コモデティ・ハードウェア・コンポーネントで構築されたクラスタを含む。クラスタの上で実行するファイル・システムを含む実行フレームワークによって、データに対するユーザのアプリケーションの実行のためにクラスタ内の全ノードを連携させる。この設計における中心的なアイディアは、データを有するノードに計算タスクを移動させる機能転送（function shipping）のアイディアであり、これは、ストレージ・ノードから計算ノードにデータを移動させる従来のデータ転送（data shipping）手法とは対照的である。データを多用するスーパーコンピューティング・システムにおいて性能を実現する際の重要な課題は、帯域幅リソースが不充分であり故障が一般的であるコモディティ環境においてアプリケーションに高いスループットを達成することである。この目標を達成するため、データを多用するスーパーコンピューティング・アプリケーションの性能を最適化することができるクラスタ化ファイル・システムが開発されている。図５に示すように、クラスタ・ファイル・システムは、多数のサーバ（５１０）、（５３０）、（５５０）、および（５７０）上に搭載されている。クラスタ・ファイル・システムは多数のサーバ上に同時に搭載されたファイル・システムである。本明細書における例では４つのサーバを示すが、本発明はクラスタ化ファイル・システムにおいてこの数のサーバに限定されるものではない。同様に、本明細書では１つのみのクラスタを示すが、一実施形態において、ネットワーク接続を介してサポートされるクラスタ間通信を用いて多数のクラスタを提供することも可能である。
【００３２】
システム内の各サーバは、ローカル・ストレージが備えられ、同時にクラスタ内のリモート・ストレージと通信を行うことができる。更に具体的には、サーバ（５１０）は、処理ユニット（５０４）が備えられ、これはバス（５０８）を介してメモリ（５０６）と通信状態であり、データ・ストレージ（５１２）と通信状態である。サーバ（５３０）は、処理ユニット（５３４）が備えられ、これはバス（５３８）を介してメモリ（５３６）と通信状態であり、データ・ストレージ（５４２）と通信状態である。サーバ（５５０）は、処理ユニット（５５４）が備えられ、これはバス（５５８）を介してメモリ（５５６）と通信状態であり、データ・ストレージ（５６２）と通信状態である。サーバ（５７０）は、処理ユニット（５７４）が備えられ、これはバス（５７８）を介してメモリ（５７６）と通信状態であり、データ・ストレージ（５８２）と通信状態である。同時に、サーバ（５１０）は、ネットワーク接続（５０５）を介してリモートのデータ・ストレージ（５４２）、（５６２）、および（５８２）と通信を行うことができ、サーバ（５３０）は、ネットワーク接続（５０５）を介してリモートのデータ・ストレージ（５１２）、（５６２）、および（５８２）と通信を行うことができ、サーバ（５５０）は、ネットワーク接続（５０５）を介してリモートのデータ・ストレージ（５１２）、（５４２）、および（５８２）と通信を行うことができ、サーバ（５７０）は、ネットワーク接続（５０５）を介してリモートのデータ・ストレージ（５１２）、（５４２）、および（５６２）と通信を行うことができる。
【００３３】
一実施形態において、クラスタ内の各サーバは少なくとも１つのアプリケーションをサポートし、アプリケーションは、クラスタと通信状態にある１つ以上のクライアント機械からの読み取りまたは書き込みあるいはその両方のトランザクションを処理する。この実施形態に基づいて、サーバ（５１０）は第１のアプリケーション（５１４）と共に示され、サーバ（５３０）は第２のアプリケーション（５４４）と共に示され、サーバ（５５０）は第３のアプリケーション（５６４）と共に示され、サーバ（５７０）は第４のアプリケーション（５８４）と共に示されている。クラスタにおけるアプリケーション処理をサポートするため、およびサーバ故障の場合に処理のトランスペアレンシを維持するためのツールが備えられている。更に具体的には、第１、第２、第３、および第４のアプリケーションの各々の少なくとも１つの書き込みアフィニティ・コピーがクラスタにおいて維持されている。本明細書に示すように、一実施形態において、第１のアプリケーションの１つの書き込みアフィニティ・コピー（５１４ａ）はサーバ（５３０）にローカルであり、第２のアプリケーションの１つの書き込みアフィニティ・コピー（５４４ａ）はサーバ（５５０）にローカルであり、第３のアプリケーションの１つの書き込みアフィニティ・コピー（５６４ａ）はサーバ（５７０）にローカルであり、第４のアプリケーションの１つの書き込みアフィニティ・コピー（５８４ａ）はサーバ（５１０）にローカルである。従って、クラスタにおけるアプリケーションの書き込みアフィニティ・コピーの分散によって、各アプリケーションの完全なレプリカがクラスタ内で提供されることが保証される。
【００３４】
クラスタにおける各サーバ・ノードに対してローカルにサービス・マネージャが提供され、各サービス・マネージャはアプリケーションのローカルな書き込みアフィニティ・コピーのローカルな処理をサポートするように構成されている。本明細書において示すように、第１のサーバ・ノード（５１０）には第１のサービス・マネージャ（５１６）が備えられ、第２のサーバ・ノード（５３０）には第２のサービス・マネージャ（５４６）が備えられ、第３のサーバ・ノード（５５０）には第３のサービス・マネージャ（５６６）が備えられ、第４のサーバ・ノード（５７０）には第４のサービス・マネージャ（５８６）が備えられている。故障したアプリケーションがない場合、第１のサービス・マネージャ（５１６）は第１のアプリケーション（５１４）にサービスを提供し、第２のサービス・マネージャ（５４６）は第２のアプリケーション（５４４）にサービスを提供し、第３のサービス・マネージャ（５６６）は第３のアプリケーション（５６４）にサービスを提供し、第４のサービス・マネージャ（５８６）は第４のアプリケーション（５８４）にサービスを提供する。上述のように、クラスタ内のサーバの１つ以上に故障が発生することがある。故障の場合、アプリケーション処理の回復およびトランスペアレンシを管理するために、クラスタ内に回復マネージャが備えられている。更に具体的には、回復マネージャは、故障したアプリケーションのアプリケーション処理を、データ・ストレージ書き込みアフィニティ領域に故障アプリケーションの複製コピーを有するサーバ・ノードに移動させる役割を有する。
【００３５】
本明細書に示すように、回復マネージャは各サーバ・ノードに対してローカルに提供されている。更に具体的には、第１のサーバ・ノード（５１０）に第１の回復マネージャ（５１８）が備えられ、第２のサーバ・ノード（５３０）に第２の回復マネージャ（５４８）が備えられ、第３のサーバ・ノード（５５０）に第３の回復マネージャ（５６８）が備えられ、第４のサーバ・ノード（５７０）に第４の回復マネージャ（５８８）が備えられている。各回復マネージャは、ローカルのサービス・マネージャと通信状態にあって、回復およびアプリケーション処理トランスペアレンシの双方をサポートする。図示のように、第１のサービス・マネージャ（５１６）は第１の回復マネージャ（５１８）と通信状態にあり、第２のサービス・マネージャ（５４６）は第１の回復マネージャ（５４８）と通信状態にあり、第３のサービス・マネージャ（５６６）は第３の回復マネージャ（５６８）と通信状態にあり、第４のサービス・マネージャ（５８６）は第４の回復マネージャ（５８８）と通信状態にある。一実施形態では、回復マネージャをクラスタ全体のマネージャとすることで、回復およびアプリケーション処理をサポートしながら、個々のノードから回復マネージャのローカリティを除去することができる。
【００３６】
クラスタにおけるアプリケーションの書き込みアフィニティ・コピーに加えて、各アプリケーションは、ワイド・ストライピング領域に記憶されたアプリケーション・ブロック・セグメントの分散コピーを有する。更に具体的には、アプリケーションのワイド・ストライピング・コピーは、クラスタ内の２つ以上のサーバ・ノードにローカルであるデータ・ストレージ間に分散されている。クラスタ全体のデータ・ストレージのワイド・ストライピング領域に記憶されたアプリケーション・セグメントの数を管理し指定するために、クラスタにおいてコピー・マネージャが備えられている。ワイド・ストライピングでは、アプリケーションを構成するデータ・ブロックの形態のアプリケーションのセグメントを、異なるサーバ・ノードのデータ・ストレージ上に別個に記憶して、アプリケーションの完全なコピーがアプリケーション・セグメントの全てを含むようにする。一実施形態では、クラスタ全体で１つのコピー・マネージャがサポートされる。同様に、一実施形態では、各サーバ・ノードに対してローカルに別個のコピー・マネージャを備える。図５は、各サーバ・ノードに対してローカルな別個のコピー・マネージャのローカルな展開を示し、これは、第１のサーバ・ノード（５１０）にローカルな第１のコピー・マネージャ（５２０）、第２のサーバ・ノード（５３０）にローカルな第２のコピー・マネージャ（５２２）、第３のサーバ・ノード（５５０）にローカルな第３のコピー・マネージャ（５２４）、第４のサーバ・ノード（５７０）にローカルな第４のコピー・マネージャ（５２６）を含む。従って、コピー・マネージャのローカルまたはグローバルな構成とは無関係に、この機能性は、クラスタのワイド・ストライピング領域全体にわたるアプリケーション・セグメントの分散をサポートする。
【００３７】
クラスタにおいてアプリケーションの１つ以上が故障した場合、コピー・マネージャ（複数のマネージャ）は、回復マネージャ（複数のマネージャ）と共に、故障したアプリケーションの再構築を容易にする。更に具体的には、回復マネージャは、故障したアプリケーションの機能性をクラスタ内の書き込みアフィニティ・コピーに転送し、故障したアプリケーションのワイド・ストライピング・コピーから故障したアプリケーションを再構築するためにクラスタに備えられている。再構築は、クラスタにおけるワイド・ストライピング領域全体に分散させたアプリケーション・セグメントを含む。このため、回復マネージャ（複数のマネージャ）とコピー・マネージャ（複数のマネージャ）との間の通信によって、故障したアプリケーションの分散コピーを結び付ける。一実施形態では、クラスタ全体で回復マネージャをサポートすることができる。同様に、一実施形態では、クラスタにおける各サーバ・ノードに対してローカルに別個の回復マネージャを備える。従って、回復マネージャのローカルまたはグローバルな構成とは無関係に、この機能性は、再構築を容易にするために故障したアプリケーションの分散ブロック・セグメントを結びつけることをサポートする。
【００３８】
図５には、クラスタにおけるアプリケーションのトランスペアレントなレイアウトが実証されており、これは各アプリケーションの少なくとも１つの書き込みアフィニティ・コピーを用いると共に、クラスタ内のワイド・ストライピング領域においてアプリケーションのワイド・ストライピング分散を用いる。アプリケーションの書き込みアフィニティ・コピーは、アプリケーションを構成する単一のサーバ・ノード上の完全なファイルおよびデータのセットを含む。書き込みアフィニティ・コピーはクラスタにおいて二次ノード上での空間可用性を必要とするが、これは関連した負担を著しく増大させることなくトランスペアレンシを提供する。上述のように、サーバ・ノードの故障の後、回復マネージャは故障アプリケーションの再構築を容易にすると共に取りまとめ、ここで、故障アプリケーションの処理を故障アプリケーションの書き込みアフィニティ・コピーに転送する必要がある。いったんワイド・ストライピング領域からの故障アプリケーションの完全なファイル・セットによって故障アプリケーションが再構築されると、サービス・マネージャはアプリケーション処理を回復したアプリケーションに戻す。
【００３９】
単一クラスタ構成について本明細書に図示し実証したコンポーネントは、ネットワーク内の各クラスタ全体に外挿することができる。多クラスタ構成においては、書き込みアフィニティ領域またはワイド・ストライピング領域あるいはその両方においてアプリケーションのコピーをサポートするためにクラスタの１つを選択するツールを用いる。例えば、ネットワーク内のクラスタの１つが故障の可能性を示す特徴を有する場合、このツールは、異なるクラスタを選択して、書き込みアフィニティまたはワイド・ストライピング領域あるいはその両方を含むアプリケーション・データを複製することができる。ワイド・ストライピングおよび書き込みアフィニティ領域の双方においてアプリケーションを複製することにより、アプリケーション・コピーをホストするサーバに対する負担を軽減しながらアプリケーション・サポートのトランスペアレンシを保持する。同時に、より安定したクラスタにおいてアプリケーション複製のためのクラスタ間関係を用いることによって、アプリケーションのアクセス可能性および可用性を保証する。
【００４０】
先に示したように、サービス・マネージャ（５１６）、（５４６）、（５６６）、および（５８６）、回復マネージャ（５１８）、（５４８）、（５６８）、および（５８８）、ならびにコピー・マネージャ（５２０）、（５２２）、（５２４）、および（５２６）は、書き込みアフィニティ領域における少なくとも１つのアプリケーション・コピーおよびクラスタのワイド・ストライピング領域に分散させた第２のアプリケーション・コピーを維持することによって、アプリケーションの可用性、トランスペアレンシ、および再構築を管理するように機能する。マネージャは、各サーバにローカルなメモリに常駐しているものとして示す。更に具体的には、第１のサービス・マネージャ（５１６）、第１の回復マネージャ（５１８）、および第１のコピー・マネージャ（５２０）は各々、第１のサーバ（５１０）のメモリ（５０６）に常駐する。第２のサービス・マネージャ（５４６）、第２の回復マネージャ（５４８）、および第２のコピー・マネージャ（５２２）は各々、第２のサーバ（５３０）のメモリ（５３６）に常駐する。第３のサービス・マネージャ（５６６）、第３の回復マネージャ（５６８）、および第３のコピー・マネージャ（５２４）は各々、第３のサーバ（５５０）のメモリ（５５６）に常駐する。第４のサービス・マネージャ（５６６）、第４の回復マネージャ（５８８）、および第４のコピー・マネージャ（５２６）は各々、第４のサーバ（５７０）のメモリ（５７６）に常駐する。一実施形態では、サービス・マネージャ、回復マネージャ、およびコピー・マネージャは、各サーバのメモリの外部のハードウェア・ツールとして常駐する場合があり、またはそれらはハードウェアおよびソフトウェアの組み合わせとして実施される場合がある。同様に、一実施形態では、複数のマネージャを組み合わせて、別個のアイテムの機能性を組み込んだ単一の機能アイテムとすることができる。本明細書に示すように、マネージャ（複数のマネージャ）の各々は各サーバに対してローカルなものとして示す。しかしながら、一実施形態では、それらはネットワーク全体で集合的にまたは個別に分散させ、アプリケーション・サポートならびに読み取りおよび書き込みトランザクション・トランスペアレンシを管理するためのユニットとして機能することができる。従って、マネージャは、ソフトウェア・ツール、ハードウェア・ツール、またはソフトウェアおよびハードウェアの組み合わせとして実施して、データ・コンテンツを収集し編成することができる。
【００４１】
当業者によって認められるように、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェア・ベースの実施形態、全体的にソフトウェア・ベースの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する１つ以上のコンピュータ読み取り可能媒体（複数の媒体）において具現化されたコンピュータ・プログラムの形態を取ることも可能である。
【００４２】
１つ以上のコンピュータ読み取り可能媒体（複数の媒体）のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。コンピュータ読み取り可能ストレージ媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能ストレージ媒体の更に具体的な例（非網羅的な列挙）は、以下を含む。すなわち、１本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能ストレージ媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかの有形の媒体とすることができる。
【００４３】
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
【００４４】
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
【００４５】
本開示の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java（Ｒ）、Smalltalk、Ｃ＋＋等のオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む１つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で、実行することができる。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、（例えばインターネット・サービス・プロバイダを用いてインターネットを介して）外部コンピュータに対して行うことができる。Javaおよび全てのJavaベースの商標およびロゴは、Oracleまたはその関連会社あるいはその両方の商標または登録商標である。
【００４６】
本発明の実施形態に従った方法、装置（システム）、およびコンピュータ・プログラムのフロー・チャート図またはブロック図あるいはその両方を参照して、本発明の態様について以下に記載する。フロー・チャート図またはブロック図あるいはその両方の各ブロック、およびフロー・チャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。  これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フロー・チャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するための手段を生成するようになっている。
【００４７】
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フロー・チャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施する命令を含む製造品を生成するようになっている。
【００４８】
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フロー・チャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するためのプロセスを提供するようになっている。
【００４９】
これより、本発明の一実施形態を実施するためのシステムを示すブロック図である図６を参照する。コンピュータ・システムは、プロセッサ（６０２）等の１つ以上のプロセッサを含む。プロセッサ（６０２）は、通信インフラストラクチャ（６０４）（例えば通信バス、クロスオーバ・バス、またはネットワーク）に接続されている。
【００５０】
コンピュータ・システムは、表示ユニット（６０８）上に表示するために、通信インフラストラクチャ（６０４）から（または図示しないフレーム・バッファから）図形、テキスト、および他のデータを転送する表示インタフェース（６０６）を含むことができる。また、コンピュータ・システムは、好ましくはランダム・アクセス・メモリ（ＲＡＭ）であるメイン・メモリ（６１０）を含み、更に二次メモリ（６１２）も含むことができる。二次メモリは、例えばハード・ディスク・ドライブ（６１４）または着脱可能ストレージ・デバイス（６１６）あるいはその両方を含むことができ、例えばフレキシブル・ディスク・ドライブ、磁気テープ・ドライブ、または光ディスク・ドライブを表す。着脱可能ストレージ・ドライブ（６１６）は、当業者に周知の方法で着脱可能ストレージ・ユニット（６１８）からの読み取りまたはこれへの書き込みあるいはその両方を行う。着脱可能ストレージ・ユニット（６１８）は、例えばフレキシブル・ディスク、コンパクト・ディスク、磁気テープ、または光ディスク等を表し、着脱可能ストレージ・ドライブ（６１６）によって読み取りおよび書き込みが行われる。認められるように、着脱可能ストレージ・ユニット（６１８）は、コンピュータ・ソフトウェアまたはデータあるいはその両方が記憶されたコンピュータ読み取り可能媒体を含む。
【００５１】
代替的な実施形態において、二次メモリ（６１２）は、コンピュータ・プログラムまたは他の命令をコンピュータ・システムにロードすることを可能とするための他の同様の手段を含むことができる。かかる手段は、例えば着脱可能ストレージ・ユニット（６２０）およびインタフェース（６２２）を含むことができる。かかる手段の例は、プログラム・パッケージおよびパッケージ・インタフェース（ビデオ・ゲーム・デバイスに見られるもの等）、着脱可能メモリ・チップ（ＥＰＲＯＭまたはＰＲＯＭ等）および関連したソケット、ならびに着脱可能ストレージ・ユニット（６２０）からコンピュータ・システムにソフトウェアおよびデータを転送可能とする他の着脱可能ストレージ・ユニット（６２０）およびインタフェース（６２２）を含むことができる。
【００５２】
また、コンピュータ・システムは通信インタフェース（６２４）を含むことができる。通信インタフェース（６２４）によって、コンピュータ・システムと外部デバイスとの間でソフトウェアおよびデータを転送することができる。通信インタフェース（６２４）の例は、モデム、ネットワーク・インタフェース（イーサネット・カード等）、通信ポート、またはＰＣＭＣＩＡスロットおよびカード等を含むことができる。通信インタフェース（６２４）を介して転送されるソフトウェアおよびデータは信号の形態であり、例えば電子、電磁、光、または通信インタフェース（６２４）により受信可能な他の信号であり得る。これらの信号は、通信経路（例えばチャネル）（６２６）を介して通信インタフェース（６２４）に提供される。この通信経路（６２６）は、信号を搬送し、ワイヤまたはケーブル、光ケーブル、電話線、携帯電話リンク、無線周波数（ＲＦ）リンク、または他の通信チャネルあるいはそれら全てを用いて実施することができる。
【００５３】
この文書において、「コンピュータ・プログラム媒体」、「コンピュータ使用可能媒体」、および「コンピュータ読み取り可能媒体」という言葉は、メイン・メモリ（６１０）および二次メモリ（６１２）、着脱可能ストレージ・ドライブ（６１６）、およびハード・ディスク・ドライブ（６１４）にインストールされたハード・ディスク等の媒体を一般的に指すために用いる。
【００５４】
メイン・メモリ（６１０）または二次メモリ（６１２）あるいはその両方に、コンピュータ・プログラム（コンピュータ制御論理とも呼ぶ）が記憶されている。また、コンピュータ・プログラムは通信インタフェース（６２４）を介して受信することも可能である。かかるコンピュータ・プログラムが実行されると、コンピュータ・システムは、本明細書で論じたような本発明の特性を実現することができる。特に、コンピュータ・プログラムが実行されると、プロセッサ（６０２）がコンピュータ・システムの特性を実現することができる。従って、かかるコンピュータ・プログラムはコンピュータ・システムのコントローラを表す。
【００５５】
図面におけるフロー・チャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を例示する。この点で、フロー・チャートまたはブロック図における各ブロックは、規定された論理機能（複数の機能）を実施するための１つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した２つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフロー・チャート図あるいはその両方の各ブロック、およびブロック図またはフロー・チャート図あるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
【００５６】
本明細書において用いた用語は、特定の実施形態を記載する目的のためだけのものであり、本開示を限定することは意図していない。本明細書において用いたように、単数形「１つの（ａ）、（ａｎ）、（ｔｈｅ）」は、文脈によって明らかに他の場合が示されない限り、複数形を含むことが意図されている。また、「含む」または「含んでいる」という言葉あるいはその両方は、本明細書において用いられた場合、述べた特性、整数、ステップ、動作、要素、またはコンポーネントあるいはそれら全ての存在を規定するが、１つ以上の他の特性、整数、ステップ、動作、要素、コンポーネント、またはそれらのグループあるいはそれら全ての存在または追加を除外するものではないことは、理解されよう。
【００５７】
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に特許請求したような他の特許請求した要素と組み合わせて機能を実行するためのいずれかの構造、材料、または行為を含むことが意図されている。本発明の記載は、例示および記述の目的のために提示したが、網羅的であることや、開示した形態に本発明を限定することは、意図していない。本発明の範囲および精神から逸脱することなく、当業者には多くの変更および変形が明らかであろう。実施形態は、本発明の原理および実際的な用途を最良に説明するため、更に、想定される特定の用途に適した様々な変更と共に様々な実施形態に関して当業者が本発明を理解することを可能とするために、選択し記載したものである。
【００５８】
代替的な実施形態
例示の目的のために本明細書において本発明の具体的な実施形態を記載したが、本発明の精神および範囲から逸脱することなく様々な変更を実施可能であることは認められよう。特に、このシステムは、ファイルのｒ個のコピー、ｋ個の書き込みアフィニティ・コピー、およびｌ個のワイド・ストライピング・コピーを用いて構成することができる（ここでｋ＋ｌ＝ｒである）。変数ｋは１とｒとの間とすることができる（１およびｒを含む）。ｋ個の書き込みアフィニティ・コピーの１つから、ローカルな実行を必要とするアプリケーションを供給することができる。変数ｌは１とｒとの間とすることができる（１およびｒを含む）。処理書き込みアフィニティ・コピーの故障後に、ｒ個の書き込みアフィニティ・コピーのいずれか１つまたは１セットからアプリケーション・データを回復することができる。従って、本発明の保護の範囲は以下の特許請求の範囲およびそれらの均等物によってのみ限定される。
【図１】
0005946472.tif 000002
【図２】
0005946472.tif 000003
【図３】
0005946472.tif 000004
【図４】
0005946472.tif 000005
【図５】
0005946472.tif 000006
【図６】
0005946472.tif 000007