(57)【特許請求の範囲】
【請求項１】
ファイルサーバシステムは、
（a）第１のデータ格納領域を提供する第１の大容量記憶装置を含む第１のサーバシステムと、
（b）第２の大容量記憶装置を含み、第２のデータ格納領域を提供する第２のサーバシステムと、を有し、
前記第１及び第２のサーバシステムは、クライアントシステムと前記第１及び第２のサーバシステムとの間のネットワーク要求の伝送を提供するネットワークにそれぞれ結合され、
前記第１及び第２のサーバシステムは、予め決められたバーチャルネットワーク行先アドレスを有するネットワーク要求を処理するための手段を各々有し、
前記第１及び第２のサーバシステムは、前記第１及び第２のサーバシステムにより前記予め決められたバーチャルネットワーク行先アドレスを備えたネットワーク要求の並行プロセッシングを前記第１及び第２のサーバシステムの間で調整するための手段を各々含み、その結果、記憶データを得るために、記憶され且つ読出されるべきデータを包含した書込み要求が含まれているネットワーク要求が、前記第１及び第２のサーバシステムにデータを同時に伝送し、そして、
（c）各ネットワーク要求が前記第１及び第２のサーバシステムによって処理されたかを示す記憶エントリをもつメモリに対応して、前記第１及び第２のサーバシステムが書込み要求を受信する場合は、そこに含まれるデータが前記第１及び第２のデータ格納領域の両方に記憶され、前記第１及び第２のサーバシステムが読込み要求を受信する場合は、前記第１及び第２のサーバシステムの１つだけが応答して前記クライアントシステムにデータを提供する、前記ファイルサーバシステム。
【請求項２】
前記メモリはデュプリケート（Duplicate）要求（Request）キャッシュ（ＤＲＣ）を含み、前記エントリのそれぞれが前記ネットワーク要求のうちの一つに対応し、且つ前記受信したネットワーク要求が前記ネットワーク要求のうちの別の一つの複製であるかどうかを表す請求項１に記載のファイルシステム。
【請求項３】
通信ネットワークによって複数のファイルサーバコンピュータシステムに接続されたクライアントコンピュータシステムに関して前記複数のファイルサーバコンピュータシステムを協調処理する方法であって、
a）予め決められたファイル要求を前記クライアントコンピュータシステムによって前記通信ネットワーク上のバーチャルネットワークアドレスに転送し、
b）前記ファイル要求を第１のファイルサーバコンピュータシステムによって受信し、
第１のファイルサーバが、前記予め決められたファイル要求を実施するとともに、前記通信ネットワークに応じて予め決められたファイル要求を前記クライアントコンピュータシステムに転送し、
c）第２のファイルサーバが、前記予め決められたファイル要求を受信するとともに、前記予め決められたファイル要求を実施し、前記ファイル要求は前記第１及び第２のファイルサーバにデータを同時に配信し、
d）各ファイル要求が、前記第１及び第２のファイルサーバによって処理されたかどうかを示す記憶エントリをもつメモリに対応して、
i）前記第１のファイルサーバが、関連する第１の格納領域に前記データを記憶する処理と、
ii）前記第２のファイルサーバが、関連する第２の格納領域に前記データを記憶するとともに、前記ファイル要求の実行完了に関する肯定応答（acknowledgement）を送信する処理を実行し、
e）前記第１及び第２のファイルサーバが各ファイル要求を以前に処理したことを保証するために、当該第１及び第２のファイルサーバが前記メモリのエントリを使用し、
f）前記ファイル要求の完了に関する１つの肯定応答（acknowledgement）を前記クライアントコンピュータシステムに送信する、ステップを有する方法。
【請求項４】
クライアントコンピュータシステムに対するファイルサービスを提供するステップに関して、複数のファイルサーバコンピュータシステムの論理的同期処理を維持する方法であって、
a）前記クライアントコンピュータシステムによってファイル要求の転送を論理的ファイルサーバネットワークアドレスに提供し、
b）前記論理的ファイルサーバネットワークアドレスに転送されたファイル要求及び添付データを同時に受信するように複数のファイルサーバコンピュータシステムを提供し、
c）予め決められたファイル要求に応じて、前記クライアントコンピュータシステムに対して他とは異なる応答を提供するように、前記複数のファイルサーバコンピュータシステムでの相互調整を提供する、ステップを有し、
前記相互調整の提供ステップには、
i）１又はそれ以上のファイルサーバコンピュータシステムの故障に応じて、複数のファイルサーバコンピュータシステム間で予め決められたメッセージを転送し、
ii）前記複数のファイルサーバコンピュータシステムが、前記予め決められたメッセージ、及び前記ファイル要求のそれぞれを処理する際のファイル要求データ構造体に応答し、
iii）前記ファイル要求の受領に応じて、前記複数のファイルサーバコンピュータシステムから前記クライアントコンピュータシステムに、予め決められた１つの要求の肯定応答（acknowledgement）を転送することを含むことを特徴とする方法。
【請求項５】
前記第１のファイルサーバは、主ファイルサーバ又は副ファイルサーバとしての前記ネットワーク要求を実行するように適合され、その結果、前記第１のファイルサーバが主サーバとして前記ネットワーク要求を実行するときには、前記第１のファイルサーバは、予め決められたメッセージを前記第２のファイルサーバに転送し、前記クライアントシステムに応答して転送する前に前記第２のファイルサーバから肯定応答（acknowledgement）メッセージの受領を待つように構成され、そして、前記第１のファイルサーバが副サーバとして前記ネットワーク要求を実行するときには、前記第１のファイルサーバは、前記ネットワーク要求を実行する前に前記予め決められたメッセージの受領を待ち、前記ネットワーク要求を実行し、前記第２のファイルサーバに肯定応答（acknowledgement）メッセージを転送するように構成されることを特徴とする請求項１に記載のシステム。
【請求項６】
ネットワークコンピュータシステムであって、
第１のデータ格納領域を提供する第１の大容量記憶装置を含む第１のサーバシステムであって、ネットワークを介してクライアントシステムからのデータ要求をネットワークアドレスによって特定されたバーチャルサーバシステムで受信するように適合された該第１のサーバシステムと、
第２のデータ格納領域を提供する第２の大容量記憶装置を含む第２のサーバシステムであって、ネットワークを介してクライアントシステムからのデータ要求を前記ネットワークアドレスによって特定された前記バーチャルサーバシステムで受信するように適合され、前記データ要求及び添付データが前記第１のサーバシステムと前記第２のサーバシステムに同時に配信されることを特徴とする該第２のサーバシステムと、
前記第１及び第２のサーバシステムによって保持されるデータ構造体であって、前記受信されたデータ要求を識別するとともに、ある要求が別の要求の複製であるかどうかを表すデータエントリを複数記憶した該データ構造体と、を有するネットワークコンピュータ。
【請求項７】
ファイルサービスをクライアントコンピュータシステムに提供することに関して複数のファイルサーバコンピュータシステムの稼働を論理的に同期させる方法であって、
前記クライアントコンピュータシステムが、１以上のファイル要求を、システムネットワークアドレス及びユニークホストアドレスによって識別されるバーチャルサーバに伝送し、
前記複数のファイルサーバコンピュータシステムのうち、第１のファイルサーバコンピュータシステム及び第２のファイルサーバコンピュータシステムが、前記バーチャルサーバに向けられた前記１以上のファイル要求を前記システムネットワークアドレスで同時に受信し、
受信されたファイル要求が前記メモリに記憶された別のファイル要求の複製であるかを識別するためにメモリをサーチし、
複製のファイル要求を識別することに応答して、当該複製のファイル要求を廃棄することを含む方法。
【発明の詳細な説明】
〔発明の背景〕
１．発明の分野
本発明は広くは故障許容コンピュータ・システムに係るものであり、特定すれば故障許容ネットワーク・ファイルシステム（ＮＦＳ）データサービスを提供するコンピュータ・システムに係るものである。
２．関連技術の説明
社会全体にわたってコンピュータに依存する傾向が増大するに従い、常に確実に利用できるコンピュータ・システムの需要がますます強調される。一般にはそのようなシステムは故障許容コンピュータ・システムと称される。主として重要な特徴的な動作をどう認識するかによるのであるが、全く別個の故障許容システムのインプルメンテーションが幾つもある。重要な特徴的な動作を構成しているものは、そのようなコンピュータ・システムを必要とするタスクの種類に依るのである。従って、所与のコンピュータ・システムにおいてインプルメントされている故障許容の特徴を構成しているものはかなり異なるアーキテクチュアーの形をとるのが普通である。
全く異なるアーキテクチュアーの形をとるコンピュータ・システムの総てではなくても、その大部分について幾つも共通の故障許容上の考慮ともいうべきものが存在する。これらの考慮には、故障許容能力の追加により稼働喪失の最小化、コストの低減、そして故障許容システムにおけるハードウエアとソフトウエアの最大利用、故障許容の構成部分の管理の最低減の実現、コンピュータ・システムが提供するサービスの末端ユーザーに対する故障許容の構成部分のインパクトの制限、そして最後に、コンピュータ・システムの費用もしくはモジューラー強化能力のための実際上のアーキテクチュアルな拘束の低減がある。
コンピュータ・システムにおける故障許容の一形態は、内部サーバの故障許容として知られている。この形態の故障許容は、相互に余裕あるレダンダントな仕方で内部で動作している複数の中央処理装置（ＣＰＵ）を使用する統一コンピュータ・システムで可能となる。ＣＰＵベースレベルで一つの専用エラー検出サブ・システムが設けられて、レダンダントなＣＰＵが同時に実行しているプログラムにおける動作上の不一致があればその不一致を検出する。不健全な動作をしているＣＰＵをこうして特定し、そしてコンピュータ・システムのサービスから排除してしまう。この場合その他のＣＰＵはその欠陥ＣＰＵの修理中、すべて要求されたサービスを提供しつづける。
高度の信頼性を与えるけれども、従来の内部サーバの故障許容コンピュータ・システムは固有の２つの欠点を有している。これらの欠点とは、非常に窮屈な、特殊化されたアーキテクチュヤ設計とハードウエアが実質的にダブッテいるためのコスト高である。これらの欠点を相殺しているのは非常に高度の信頼性であって、本質的に動作の機械的なサイクルレベルまで下がって正確な動作を保証することによりその高度な信頼は得られている。
別の既知の故障許容の形態はデータサブ・システムレベルでコンピュータ・システムを緊密に結合することによって得られる。このような内部サーバのアプローチを採用している典型的なアーキテクチュヤは、二双ポート式ディスクサブ・システム（dual ported disk subsystem）により交差結合したコンピュータ・システムのレダンダント対を利用している。各システムはディスクデータの転送要請のマスター・イニシエータとして作動できる。コンピュータ・システムのどれかが故障すると、その該当デイスクサブ・システムの排除までは、それ以外のコンピュータ・システムはその故障システムのデータへアクセスする。
この形態の故障許容の欠点は、故障システムにより書き込まれたデータの変造に対して、そしてディスクサブ・システムのどちらかに故障が生じていてもその故障システムと協働することに対して殆ど保護されないということである。故障許容保護コンピュータ・システムの総てに二双ポート式デイスクサブ・システムを設け、そして管理するにはかなりの追加のコストがかかる。二双ポート式では対のシステムを相互に保護するだけであるという点でアーキテクチュラルな制限がある。又、対のシステムは相互に別の場所にあって、そのため故障許容動作に前もって必要なものとして単一のサイト・サバイバルを要する。最後に、実質的なパフォーマンス・ペナルティが故障フエイル・オーヴァーの点で課せられる。２つのコンピュータ・システムが他方のコンピュータ・システムのディスクサブ・システムへのポート・ベースドアクセスを持つだけであるので、故障したホストのディスクサブ・システムが先ず退かされて、残りのホストが代わる。大きなデイスクサブ・システムを使用しているところでは、このプロセスは数時間かかる。
最後に、故障許容を与える別のアプローチがネットワークになったコンピュータ環境内で生じる。このアプローチはネットワークファイルシステムのシャドウィングの利用により動作し、そしてクライエント・イニシエーテッドもしくはサーバオンリ・コンパチビィリティのどちらかとしてインプルメントされるのが普通である。クライエントコンピュータ・システムが２つ、もしくはそれ以上の既に確立した遠いサーバシステムへ総てのネットワーク・オペレーション要請を送ることをクライエント・イニシエーテッドシャドウィングは必要とする。この故障許容へのアプローチにより各クライエントは独立して、２つもしくはそれ以上の、離れたデータ記憶領域内でのクライエントデータの認識を確実なものとできる。しかしながら、クライエントはすべてのこのような二重の要請の完結を監視し、そして分析する責任を負わされている。クライエントは従来のネットワーク伝送エラーと遠隔ネットワークサーバシステムのいずれかへのアクセスの喪失との両方を解決できなければならない。
クライエントイニシエーテッド・シャドウイングの明確な欠点は、勿論、変更した動作システムのソフトウエアがそれぞれの故障許容保護クライエントの上で実施されなければならないということである。またこのアプローチは、故障許容の領域を決め、そして制御することを各クライエントに要求することにより遠いサーバのクライエント・シャドウデータ記憶領域の首尾一貫しない管理を許容することになる。クライエントイニシエーテッド・シャドウイングは、シャドウィング・エラーに応答する責任と、それらの修正をクライエントのユーザーへ移してしまう。
サーバ・システムレベルにおけるＮＦＳシャドウィングの既知の使用は一次から二次サーバ・システムへのシャドウデータの遅らされた書き込みに依存している。こうしてＮＦＳの幾つかのレベルシャドウィングは一つのサーバに蓄積された総てのデータ変更のリアルタイムのロッギングだけを必要とする。このようなロッグされたデータの内部サーバ転送は優先権の低いバックグラウンド・タスクとして遂行されて一次サーバシステムのノーマルな機能と動作に対するインパクトを最小とする。そうであっても、一次からバックアップ・サーバシステムへのロッグされたデータの遅らされたバックグラウンド転送は一次サーバのネットワーク・リゾースの実質的部分を消費する。ＮＦＳのサーバシャドウイングの別の問題は、フエールオーバの点で、サーヴァイヴィング・システムへロッグされたデータの遅らされた書き込みがデータ喪失に対してエクスポージュアー・ウインドウをつくる。
従って、クライエントのソフトウエア変更の必要性と、クライエントベースのＮＦＳシャドウイングとパフォーマンス・ペナルティにおけるユーザーの管理とサーバベースのＮＦＳシャドウイングにおけるデータ喪失の実際の可能性とを考慮してＮＦＳベースの故障許容システムの使用は、データ故障許容が必須である産業界では一般にはよく受け入れられていないのである。
〔発明の概要〕
したがって、本発明の一般的目的は、ネットワークファイルシステムデータトランザクションのための頑丈な耐故障コンピュータシステムおよびコントロールプロトコルを提供することである。
本発明によれば、この目的は、データ通信ネットワークに接続され該データ通信ネットワークに対してデータの転送または検索のための１次データ転送リクエストをソースすることのありうるクライアントシステムを含むデータファイルの耐故障記憶および検索を行えるようなネットワークコンピュータシステムを使用することによって、達成される。データファイルを記憶するための第１の媒体を含む１次サーバシステムは、１次データ転送リクエストに応答するようにデータ通信ネットワークに接続される。データファイルを記憶するための第２の媒体を含む２次サーバシステムは、１次データ転送リクエストに応答するようにデータ通信ネットワークに接続される。１次サーバシステムおよび２次サーバシステムの間に確立されたコントロールプロトコルは、１次データ転送リクエストに対する１次および２次サーバシステムによる非対称応答を協調させて、１次データ転送リクエストでもってクライアントによって転送されるファイルデータが、自動的に１次および２次記憶媒体へリプリケートされ、１次データ転送に応答してクライアントシステムへ転送されたファイルデータが、１次または２次サーバシステムによってクライアントシステムへ非複製的に与えられる。
このようにして、本発明によれば、２つまたはそれ以上のネットワークファイルサーバの間でのデータの頑丈な耐故障ミラーイングを保証するための特殊化されたＮＦＳトランザクションプロトコルを使用することにより、ネットワークファイルシステム環境内で操作されるデータのための高度の耐故障保護が得られるという効果が達成される。
本発明のもう一つ別の効果は、本発明の相互に耐故障保護されたサーバシステムの間のフェイルオーバが比較的に瞬時に行われるということである。すなわち、本発明のプロトコルの故障検出の特徴によれば、通常のＮＦＳエラー状態からの回復と一貫して故障事象を検出し取り扱うことができる。
本発明のさらに別の効果は、ハードウエアを全く付加する必要なく且つ最小限のソフトウエアを付加するだけで、本発明をインプリメンテーションすることができるということである。そのプロトコルは、２つまたはそれ以上の耐故障サーバネットワークシステムの間に耐故障データ通信路を確立するためにクライアントとの通信のために存在する同じネットワーク接続性を利用する。必要とされる特定のハードウエアコストは、別のサーバシステムのファイルシステム記憶に対するミラーバックアップとして機能するサーバシステムの各々に関する付加的なディスクデータ記憶装置を設けるためのコストだけである。付随する効果としては、本発明を利用するのに、クライアントステーションのシステムソフトウエアまたはハードウエアに対して変更を要しないということである。その上、本発明の運転管理は、サーバシステムに集中化されている。
本発明のさらに別の効果として、本発明の耐故障ネットワークプロトコルは、通常のサーバシステムにも特殊化したサーバシステムにもインプリメンテーションすることができ、且つ決して同一でないサーバシステムの耐故障ペアリングを確立するように作動しうるということがある。
本発明のさらに別の効果としては、任意のファイルシステムまたは他のデータオブジェクトが主またはバックアップの耐故障保護された要素として確立されうるようにするような融通性のある仕方で耐故障オペレーションを確立することができるということがある。したがって、多重ファイルサーバの間のロードシェアリングが、特定の耐故障保護されたファイルシステムまたはデータオブジェクトに関してファイルサーバの間に耐故障動作を確立する実際的なインプリケーションを最少とするようにして、容易に確立されうる。
本発明のさらに別の効果としては、フェイルオーバー事象またはその他のオペレーショナルデータハンドリング不整合を引き継いだ各主ファイルサーバがそのフェイルオーバー事象の時点から発生するすべてのデータ変更のローカルレコードを容易に確立することができ、したがって、ファイルシステムの耐故障ペアリングを再確立する前に、バックアップファイルサーバの急速なデータ再構成が可能となるということがある。
【図面の簡単な説明】
本発明のこれらの効果および特徴、並びにその他の効果および特徴は、本発明の以下の詳細な説明を、添付図面に関連して見るとき、より容易に理解されよう。添付図面においては、各図を通して同様の部分には同様の参照番号を付している。
図１は、本発明の耐故障ネットワークファイルシステムプロトコルを使用するのに適したインターサーバシステムを示すブロック図である。
図２は、本発明の好ましい実施例による耐故障ＮＦＳモードにて通常のＮＦＳ書込み動作を行うのに必要な通常クライアントおよびインターサーバプロトコルトランザクションを例示する図である。
図３は、通常のＮＦＳ書込み動作の実行において本発明の好ましい実施例によるＮＦＳサーバの耐故障ペアリングによって実行される作動状態のシーケンスを例示する図である。
図４は、本発明の好ましい実施例によるクライアント書込みリクエストを完了させるために、バックアップＮＦＳサーバ故障の場合において実行される状態のシーケンスを例示する状態遷移図である。
図５は、本発明の好ましい実施例によるクライアント書込みリクエストを行うために、主ＮＦＳサーバ故障の場合における状態遷移を例示する状態遷移図である。
図６は、本発明の好ましい別の実施例によるクライアント読取りリクエストの実行におけるＮＦＳサーバの耐故障ペアリングによって実行される状態を例示する状態遷移図である。
図７は、本発明の好ましい実施例によるクライアントクリエートリクエストの実行におけるＮＦＳサーバの耐故障ペアリングによって実行される状態を例示する状態遷移図である。
〔発明の詳細な説明〕
一般化されたクライアントサーバアーキテクチャネットワークをベースとするコンピュータシステム１０が図１に示されている。代表的な例では、ネットワークデータファイルサーバ１２、１４は、通常、ローカルエリアネットワーク（ＬＡＮ）１６に接続されている。本発明の目的のために、ファイルサーバ１２、１４の各々は、多数の相互に離散したファイルシステムに少なくとも論理的に区分されたディスクサブシステムを含む。これらのファイルシステムは、個別に管理可能な不揮発性ディスクデータ記憶スペースを表している。個々のクライアントワークステーション１８、２０はまた、ＬＡＮ１６と、図示されるように直接にまたは間接に接続されている。本発明の好ましい実施例によれば、ワークステーション１８、２０の各々、および、ＵＮＩＸTMのオペレーションシステムの多数の変形の何れか１つを使用してもよく、このオペレーションシステムは、Maurice J. Bach著、「THE DESIGN OF THE UNIX OPERATION SYSTEM」、Prentice-Hall, Inc. 発行、著作権１９８６、ベル電話研究所（Bell Telephone Laboratories, Incorporated）、（これは、特に、参考のため、本書に組み込まれている。）、および、サンマイクロシステムズ社（Sun MicroSystems, Inc.）2550 Garcia Avenue, Mountain View, California 94043、により頒布されたＳｕｎＯＳ  バージョン４．１に特に記載されている。ワークステーション１８、２０の好ましいハードウェアインプリメンテーションは、サンマイクロシステムズ社製のワークステーションのいずれか、および、他の製造会社製のＳｕｎ  ＮＦＳネットワークと互換可能なワークステーションである。ファイルサーバ１２、１４の好ましいソフトウェアインプリメンテーションは、ＳｕｎＯＳ、バージョン４．１、オペレーティングシステムの修正バージョンを使用しており、このオペレーティングシステムは、一般的に、「Multiple Facility Operating System Architecture」、１９９４年４月８日に出願されて本件出願の譲受人に譲渡された米国特許出願０８／２２５，３５６号明細書、に記載されており、これは、特に、参考のため、本書に組み込まれている。サーバ１２、１４の好ましいハードウェアインプリメンテーションは、マルチプロセッサファイルサーバであり、このマルチプロセッサファイルサーバは、「Parallel I/O Network File Server Architecture」、１９９２年１１月１０に発行された米国特許５，１６３，１３１号明細書；「Enhanced VMEBUS Protocol Utilizing Synchronous Handshaking and Block Mode Data Transfer」、１９９４年４月１２日に出願された米国特許出願０８／２２６，３９８号明細書；「High Speed, Flexible Source/Destination Data Burst Direct Memory Access Controller」、１９９２年１２月２９日に発行された米国特許５，１７５，８２５号明細書；「Bus Locking Fifo Multi-Processor Communication System」、１９９２年４月２４日に出願された米国特許出願０７／９３３，９６２号明細書；および「High-Performance Non-Volatile RAM Protected Write Cache Accelerator System」、１９９３年１１月２９日に出願された米国特許出願０８／１５２，２４５号明細書に記載されており、また、これらは、すべて本件出願人の譲受人に譲渡されたものであって、特に、参考のため、本書に組み込まれている。
本発明の好ましいオペレーティング環境では、データパケットまたはデータグラムのＬＡＮへの送出および再送出を制御するのに利用される基本的な送信制御プロトコルは従来のイーサネット（ＣＳＭＡ／ＣＤ）プロトコルである。ＬＡＮに与えられる各データグラムは、データグラムの論理ソースと宛先を指定するインターネットアドレス（ＩＰｓ）で符号化される。したがって、ＬＡＮ１６に与えられる各論理エンティティは、データグラムにおいて宛先エンティティの割り当てられたインターネットアドレスを特定することにより、ＬＡＮ１６に与えられる別の論理エンティティとともにネットワークダイアログを潜在的に確立することができる。データグラムのソースインターネットアドレスは、宛先エンティティがデータグラムの特有のソースを応答して識別することを可能にする。ＬＡＮ１６の各論理エンティティはまた、宛先インターネットアドレスを、名目上、論理エンティティについて意図されていないデータグラムをスクリーニングする手段として使用する。本発明により好ましく使用されるネットワークプロトコルの使用およびインプリメンテーションは、「Andrew S. Tanenbaum, COMPUTER NETWORKS」第２版、Prentice Hall発行、１９８８年、に記載されており、これは、特に、参考のため、本書に組み込まれている。
本発明の好ましい実施例によれば、故障許容プロトコルは、１つ以上の一連のデータグラムとしてＬＡＮ１６を介して転送される特定のクラスの遠隔手順コール（ＲＰＣｓ）についてインプリメントされる。特に、故障許容プロトコルにより包含されるＲＰＣｓのクラスは、Network Filesystem（ＮＦＳ）リクエストとして知られているものを含む。一般に、ＮＦＳリクエストは、問合せと更新という、２つのカテゴリーのオペレーションを与える。問合せリクエストは、データ読み出し、属性取得、ルックアップ、ディレクトリ読み出し、リンク読み出し、ステータス、および、ナルを含む。更新リクエストは、データ書き込み、属性セット、リネーム、ディレクトリ除去、ファイル除去、リンク、ファイル生成、ディレクトリ作成、シンボリックリンク作成を含む。これらのＮＦＳリクエストは、本発明の故障許容プロトコルにより、一次ファイルサーバ１２と少なくとも１つの二次ファイルサーバ１４に存在する所定のファイルシステム内にすべてのデータの二重化を生じるようにモニタされて管理される。一次ファイルサーバ１２と二次ファイルサーバ１４の両方へのデータの二重化は、二重化されたファイルシステムについてＮＦＳリクエストを送出するクライアントワークステーション１８、２０に応答して本質的に同時に実行される。
簡単に言えば、本発明の故障許容二重化プロトコルは、すべてのＮＦＳリクエストに対して代理モードで動作する二次サーバを提供する。さもなければ、このＮＦＳリクエストは、特に一次ファイルサーバ１２に送られて、さらに、一次と二次のファイルサーバ１２、１４に物理的に存在するミラーファイルシステムに固有のものとして認識されるであろう。したがって、代理オペレーションによって、二次ファイルサーバ１４は、クライアントワークステーション１８、２０によりリクエストされ、一次ファイルサーバ１２に存在するミラーファイルシステムに送られるすべてのファイル生成型ＮＦＳオペレーションおよびＮＦＳデータ更新オペレーションを同時に実行する。特に、すべてのＮＦＳデータ書き込みが同時に実行されるために、本発明は、二次ファイルサーバのデータの同期を維持するために連続したデータ転送が必要とされる場合に、従来のような実質的な性能上の不利益を招かない。
代理動作可能にする好ましいアプローチは、相互に故障許容保護個別ファイルシステムの特定のセットに対してアクティブグループを構成して、一次及び１つ以上の２次サーバの論理的コンポジットとして形成されたバーチャルサーバを確立することである。
バーチャルサーバはユニークなホストネームとＩＰアドレスによって識別される。一次サーバ及び二次サーバによって共通に証明されかつアクセス可能なＭＡＣレヤーマルチキャストアドレスもバーチャルサーバにアサインされている。顧客ワークステーションはバーチャルサーバのＩＰアドレスを参照して及びＭＡＣマルチキャストアドレスを介して、アクティブグループの故障許容保護個別ファイルシステムにアクセスする。この結果、バーチャルサーバに関するＮＦＳリクエストはアクティブグループの一次及び二次サーバの共通に受信される。
本発明の故障許容プロトコルは一次及び二次サーバのコンフィギュレーションを与え、これによって多数アクティブグループを形成することができるようになっている。各アクティブグループはしたがって、１つあるいはそれ以上のファイルシステムのセットに対応するユニークなバーチャルサーバとして現れる。１つのアクティブグループの一次サーバは他のアクティブグループの一次サーバあるいは二次サーバとして行動する。
本発明のプロトコルは、（1）故障許容動作の一次サーバ及び二次サーバの協調動作を確立し、維持する、（2）顧客ワークステーションと一次サーバ及び二次サーバとの間のデータ伝送をコーディネートし、（3）故障許容保護ファイルシステムのデータリシンクロナイゼーションを管理する、のに使用される一組のプロトコルを有する。
エキスポートされたファイルシステムマップはまずアクティブグループの一次及び二次サーバの協調動作を定義し、確立するのに使用される。エキスポートされたファイルシステムマップが一次及び二次サーバ１２及び１４のそれぞれに与えられる。このマップは、ネットワークアクセスのために使用可能なすなわちエキスポートされたローカルファイルシステムの識別性を確立する。このマップはエキスポートされたファイルシステムに対する他のネットワーク当事者のアクセス特権を定義する。本発明の好ましい態様では、このマップはバーチャルサーバシステム及びバーチャルサーバのホストネームを介して対応されるミラーファイルシステムの識別を与える。エキスポートマップのそれぞれは各アクティブグループのミラーファイルシステムに関して同一でなければならない。エキスポートマップはミラーファイルシステムのそれぞれに対してバーチャルサーバシステムを参加させるアクチュアルサーバシステムの好ましい序列の識別性を与える。エキスポートファイルシステムマップはファイルシステムのマウンティグを顧客がリクエストするときには、かならずサーバシステムから打診を受ける。本発明の整合性を取るために、マウントリクエストはバーチャルサーバからエキスポートされたミラーファイルシステムに対して顧客２６から発行される。リクエストはしたがって、関連のアクティブグループのすべてのサーバに対するマルチキャストである。関連アクティブグループの一次サーバは先のＮＦＳリクエストの使用のために顧客に戻されるべきＮＦＳファイルシステムＩＤを発生させる責任を負っている。一次サーバ１２はマウントされたファイルシステムネームと発生されたＮＦＳファイルシステムＩＤを二次サーバ１４に与えるためにアクティブグループの二次サーバ１４のそれぞれに命令されたネットワークトランザクションを開始する責任を負っている。この結果、アクティブグループのそれぞれのサーバそれぞれのエキスポートされたミラーファイルシステムに対する共通の参照ファイルシステムＩＤを維持する。
本発明の故障許容プロトコルをさらに図に関連して説明する。説明だけの目的として、ネットワークエンティティは端旬な非サブネットクラス“Ｃ”ＩＰアドレスを有するものと仮定する。また、ネットワークエンティティ共通ＭＡＣマルチキャストアドレスを用いてデータグラムを相互に発信し、受信することができるようになっていることを仮定する。
．３３のインターネットアドレスによって識別された顧客ワークステーション２６は指定された．１２１のインターネットアドレス（ＩＰ）及び：３７のＭＡＣユニキャストを有する一次ファイルサーバ１２と物理的に協働する顧客ＮＦＳマウントされたファイルシステムにデータを書き込むためのＮＦＳリクエストを発行する。ＮＦＳ書き込みリクエストはＬＡＮ１６上で有効に放送されるものであるので、．１４５のインターネットアドレス及び：６４のＭＡＣユニキャストアドレスで指定された二次ファイルサーバ１４はＮＦＳ書き込みリクエスト３０を同時に受信する。
一次ファイルサーバ１２及び二次ファイルサーバのいずれにおいても、ＮＦＳ書き込みリクエストを表すデータグラムが実質的に従来のＴＣＰ／ＩＰスタックによって処理される。関連した部分において、このネットワークスタックは、フィジカルレヤー、データリンクレヤー、ネットワークレヤー、セッションレヤー及びアプリケーションレヤーを有する。
それぞれの一次及び二次サーバ１２、１４上のフィジカルレヤーはネットワークハードウエアインターフェースに対応する。データリンクレヤーはデータグラムチェッキング及びフローコントロールの最低レベルを与える。ネットワークレヤーはＩＰ指定フィルタリングを有するＩＰルーティングサービスを与える。本発明の好ましい態様では、ネットワークレヤーは、特に、代理のＩＰ指定データグラムを受け入れることができるが、実質的に従来のＩＰプロトコルレヤーとして実施される。代理動作はたとえば：９９のようなＭＡＣマルチキャストアドレスをネットワークレヤーでレジスターすることによって可能となる。システム管理の便宜上、バーチャルサーバシステムインターネットアドレス．１１６とユニークホストネームは一次及び二次サーバの双方にアドレスレゾリューションプロトコル（ＡＲＰ）テーブルにおいて作成された初期化入力によってバーチャルサーバのＭＡＣマルチキャストアドレスに関連づけられている。この結果、バーチャルサーバのインターネットアドレスを参照して伝送されたデータグラムは自動的にＬＡＮ１６上でマルチキャストされる。そして、一次サーバ及び二次サーバの双方がそれぞれのＴＣＰ／ＩＰスタックのネットワークレヤーを介してそのようなデータグラムを受信し、受け入れる。
トランスポート・レイヤーは、コネクションに基づくトランスポート・サービスと、コネクションのないトランスポート・サービスとを提供する。前者は、Transport Control Protocol（TCP）を使用することによって実行され、後者は、User Datagram Protocol（UDP）を使用することによって実行されることが望ましい。各NFS要求は、本発明の好ましい実施例においては、UDPデータグラムにカプセル化（encapsulate）されたRemote Procedure Call（RPC）として実行される。セッション・レイヤーは、下層のコネクションのないプロトコルに基づいてエンティティ・セッションを確立する。このとき、NFSタイプのRPCを含むUDPパケットを特に有している。好ましい実施例においては、RPCプロトコル自体は、セッション・レイヤーにおいて実行される。
最後に、アプリケーション、レイヤーは、ファイル・トランスファー及びリモート・ファイル・アクセスのような周知であるフャイル・サービスを提供する。NFSサーバ・レイヤーは、本発明が使用するアプリケーション・レイヤーの好ましい実施例である。各読出・書込・又は他のNFS要求は、一般的な各ネットワーク制御プロセス（一般的なnfsdプロセス）を制御することによって、NFSサーバを介して管理される。
ここで、データグラムの処理について考える。１次サーバ１２によって受信されるような．１２１又は．１１６、又は２次サーバ１４によって受信されるような．１４５又は．１１６の目的IPアドレスを持たないデータグラムは、TCP/IPスタックのネットワーク・レイヤーにおいてろ波されるか又は阻止される。本発明の特徴となることとしては、IPアドレス．１１６を目的とするNFS要求に対して、データグラムは、トランスポート・レイヤーのUDP部分及びセッション・レイヤーのRPC部分を介してNFSサーバに送出される。NFS要求が、以下に説明するように、許可された動作である場合、ファイル要求は、通常のUnixオペレーティング・システム・カーネルの仮想のファイルシステム・スイッチを介して処理されるか、又は好ましい実施例において示されるように、オペレーティング・システムのUNIX filesystem（UFS）の部分まで直接的に処理される。UFS ３２はNFSに起因する要求を処理する要因となっており、それによってファイルシステム・データがディスクから読み出されるか、又はディスクに書き込まれる。通常、そのようなディスクへからの読出及びディスクへの書込の動作は、UFS ３２によって待機され、その後如何なる適切なデータも返却し、そして究極的に顧客ワークステーション２６への動作の完了を承認する。
幾つかの決定は、NFS要求がUFS ３２によって処理される前に、NFSサーバによってさなれる。最初の決定はなされなければならないが、その最初の決定は、仮想サーバが取り付けられていて利用可能である場合、その仮想サーバのファイルシステムに要求が向けられているかどうかに関してなされる。別の決定は、この実際のサーバが、特定のNFS基準ミラー・ファイルシステムに対する能動的な１次サーバか、又は２次サーバであるかどうかについてである。これらの決定は、顧客ワークステーションの要求がエクスポートされたファイルシステムに対して適切なアクセス権を有する場合、その要求がそのファイルシステムに向けられているかどうかについての通常の決定と関連して更になされる。
決定は、NFSサーバによってもなされるが、特定のNFS要求が、以前受信され、潜在的に以前処理された要求の複製であるかどうかについてである。このように、各受信されたNFS要求に対して、NFSサーバによってメモリに維持されたDuplicate Request Cache（DRC）構造に入力がなされる。この構造は、本発明と関連して使用するために変更されているが、以下に表Ｉに詳細に示す。
0004005631.tif 000002
DRC構造が使用されるのは、NFSサーバによって実行されるために受け入れられた全てのNFS要求を連続的に記憶するためである。入力は、Least Recently Used（LRU）入力置換アルゴリズムによって無期限に記憶される。このように、NFS要求が受け入れられて、実行されるためにUFS ３０に移行する前に、DRC構造は検索されて、現在のNFS要求の以前の複製を示す如何なる入力も識別する。DRC構造のこの動作は、顧客とサーバとの間のLANコネクションの実際的で不完全な性質を与え、データグラムを消失し、劣化し、複製し、無秩序に送出し、遅延させる。特に重要なことは、NFS要求又はその応答する完了データグラムが消失し、劣化し、又は単にその送出の際に遅れたとき、顧客ワークステーションは元のNFS要求を再発行することである。NFSサーバがその複製要求に出会う場合、新たな要求は、一般的に廃棄する。要求された動作が現在進行中である場合、その動作は継続して、通常終了する。要求動作が既に完了し、完全なデータグラムが顧客ワークステーションに送出された場合、明らかに受信されていなくても、完了データグラムは再度送出される。一般的に、完了データグラムの反復は、最終的にはワークステーション２６により受け取られる。
本発明の好適な実施例に関し、一般にそれぞれの関係するサーバの従来のnfsdsの機能に対応するデーモンプロセス実施コードを含むＮＦＳサーバコードは、故障許容データプロトコルを実行するように改変される。ＮＦＳコード改変の一部として、ＤＲＣ構造もまた個々のＤＲＣ記入のための続く新しいデータ領域を含むように改変される。d_rack領域は、この要求を完了した潜在的な複合２次サーバのキャラクターの大きさのビットマップマスクとして使用される。個々のビットは、後述するように/etc/exportsファイルから静的に初期化されたエクスポートマップ内に設立されたサーバの順番のシーケンス内にマップされた８つ迄の２次サーバの１つに対応する。dr_inode領域は、ファイルを作成し、符号のリンクを作り、ディレクトリのＮＦＳ要求を作るのに特定される。この領域は、ＮＦＳ要求のオペレーションを完了するのに使用されるアイノード数を記憶するのに使用される。この領域は、２次サーバ上でのみ使用される。最後に、dr_generation領域は、ファイルを作成し、符号のリンクを作り、ディレクトリのＮＦＳ要求を作るのに特定される。ジェネレーション数は、要求に関するアイノードが最初に割り当てられた時間のタイムスタンプであるのが好ましい。アイノードは、繰り返されるファイル作成と削除の過程で再使用されるので、ジェネレーション領域は、アイノード数により参照されたファイルが本当にアイノードの現在の例を指しているかどうか確かめるために使用される。
例示のＮＦＳ書き込みオペレーションの故障許容データプロトコルを図２に示す。２次サーバ１４が、１次サーバ１２の代わりに、少なくともサーバ１２、１４の両方に有るミラーファイルシステムに向けられるＮＦＳ要求に関して作動する。本発明の好適な実施例では、２次サーバ１４のミラーファイルシステムで得られるファイル記憶スペースは、少なくとも１次サーバ１２の対応するミラーファイルシステムと同じ大きさである。同様に、２次サーバのミラーファイルシステムで得られるアイノード数は、少なくとも１次サーバのミラーファイルシステムと同じ数だけ割り当てられる。
代理オペレーションを設立するため、ＭＡＣマルチキャストアドレスは、少なくとも代理初期化上でＴＰＣ／ＩＰスタックのネットワーク層内にプログラムされ、仮想サーバのＩＰアドレスに一致するＩＰアドレスを有するデータグラムを渡す。従って、ＮＦＳデータ書き込み要求３０がファイルシステムに出された場合、割り当てられた/usr/homelは、サーバ１２に制御され、２次サーバ１４に設けられる/usr/homelファイルシステムにミラーリングされ、ＮＦＳ書き込み要求とこれに伴う書き込みデータは、マルチキャストにより同時に両サーバ１２、１４に送られる。サーバ１２のＮＦＳサーバは、要求３０を仮想サーバにエキスポートされたファイルシステムに向けられたものと認識し、そのためにサーバ１２（ホストネームSvrAB-1）が１次ミラーサーバとして割り当てられ、２次ミラーファイルシステムが２次サーバ１４（ホストネームSvrAB-2）上にある。
0004005631.tif 000003
この情報は、サーバ１２によりサーバ１２が静的に記憶した/etc/exportsデータファイルから初めに構成したメモリー内エクスポートマップから動的に得られる。これは従来は/etc/exportsデータファイルに記憶されるが、このデータファイルの好適なフォーマットは、一般的に表ＩＩに与えられる。
同様に、２次サーバ１４もまた、仮想サーバによりエキスポートされたファイルシステムに要求が出されることを認識する。/usr/homelファイルシステムの実際に活動中のサーバのホストネームは、２次サーバ自身の/etc/exportsファイルから同様に求められるが、これを指示することにより、サーバ１４は、このファイルシステムについて２次ミラーサーバとなることを自分で決める。
次に通常のオペレーションでは、要求３０は１次、２次サーバ１２、１４の両方のＮＦＳサーバ層を通って行く。両方とも対応するＤＲＣエントリーを作成する。１次サーバ１２のＮＦＳサーバは、最終的にデータ書き込み要求をＵＦＳ３２に送る。データ書き込みオペレーション４０がＵＦＳ３２により実施される。平行して、データ書き込み要求は２次ファイルサーバ１４のＵＦＳ３１に送られ、これにより実施される。書き込みオペレーションの完了により、ＵＦＳ３２の書き込みプロセス４０は、書き込み要求３０に対応するＤＲＣエントリーの更新のペンディングをスリープ状態にする４４。即ち、本発明のミラーファイルシステムにより、データ書き込みプロセス４０は、書き込みオペレーションの完了により、ただちには、データグラムの完了をクライアントに通知しない。むしろ、nfsd制御プロセスは、待機システムコールをスリープ状態にして、対応するＤＲＣエントリーのdr_ack領域の更新をペンディングにする。この領域は、書き込みオペレーション４２の完了の結果出される２次サーバ１４からの認識データグラム４６を受け取るのに応じて、更新される。
二次サーバ１４の既知の組に対する最後の肯定応答フィールド・ビットの更新で、スリープ中の書込みプロセス４０は、目覚めされられ４８かつ実行は、クライアント・ワークステーション２６に次いでリターンされる完了データグラム５２の生成５０で継続する。
一次サーバ１２は、書込みオペレーションの完了でスリープし、それによりクライアント・ワークステーション３６に対して完了データグラムの生成及び転送に遅延を導きうるが、この遅延は、大きなブロックＮＦＳ書込みデータグラムの転送時間及びデータを物理ファイルシステムに書込みために必要な絶対期間に関して小さい。本発明によって課せられた遅延の長さにおける制御ファクタは、主として、書込みデータ・オペレーション４０、４２をそれぞれ完了するためにファイル・サーバ１２、１４によって要求される時間における相対差である。二次サーバ１４が相対的にあまりビジーではなく、書込みオペレーション４２のより高速な実行を結果として生ずるところでは、構造３６における対応ＤＲＣエントリの肯定応答フィールドは、書込みオペレーション４０の完了の前に更新されうる。その結果、追加されたスリープ中の遅延は、ゼロである。一次サーバ１２が相対的にあまり負担にならないところでは、スリープ中の遅延は、書込みオペレーション４２を完了するために二次サーバ１４によって要求された時間における差と実質的に等しい。全ての通常の事象では、本発明のオペレーションによって課せられた更なる遅延は、一般的に、サーバ１２、１４の実際の書込みオペレーション完了時間における差だけである。それゆえに、サーバ１２、１４は、サーバ１２、１４のミラーリングされたファイルシステム（mirrored filesystems）によって記憶されたデータ間の同一性を取得しかつ保守するために最小再同期遅延を示す並列、非同期または緩い同時関係で動作しているように理解することができる。
ここで図３を参照すると、クライアント書込み要求オペレーションを記述しているより詳細な制御及びデータ・フロー６０が示されている。フロー６０は、ＮＦＳ書込み要求の成功裏の完了に含まれた状態を示す。サーバ１２、１４は、それぞれ要求６２、６４を受け取りかつクオリファイ（識別、分類）する。対応エントリは、ＤＲＣ表構造においてなされる。サーバは、次いで、書き込みデータ要求６６、６８を非同期的に実行する。一次サーバ１２は、書込みの完了で、この書込み要求に対応している肯定応答メッセージが二次サーバ１４から受け取られたかどうかを初めに決定する。肯定応答がまだ受け取られていないならば、制御されているｎｆｓｄサーバ・プロセス・スリープス７０は、肯定応答データグラムの予期生起受信（expected eventual receipt）を待つ。
二次サーバ１４が書込み要求の実行を完了した場合、肯定応答データグラムが準備されかつ一次サーバ１２に送られる。肯定応答データグラムは、開始ＮＦＳ書込み要求において特定されかつ一次及び二次サーバ１２、１４の両方のＤＲＣエントリに記録されたようにクライアント特定トランザクションＩＤ及びクライアントＩＰアドレス（ｄｒ＿ｘｉｄ、ｄｒ＿ｈｏｓｔａｄｄｒ）を含む。肯定応答データグラムに含まれた情報を用いることによって、一次サーバ１２は、ＤＲＣ構造３６の適切なｄｒ＿ａｃｋビット・フィールドを更新する。特定のＤＲＣエントリは、同じトランザクションＩＤ及びクライアントＩＰアドレス（ｄｒ＿ｘｉｄ、ｄｒ＿ｈｏｓｔａｄｄｒ）を有するＤＲＣエントリに対するＤＲＣ構造を検索することによって見出される。更新すべき特定のｄｒ＿ａｃｋビットは、肯定応答データグラムのＩＰソース・アドレスから及びエクスポート・マップのイン−メモリ・コピーにおける二次サーバの順序付けリストへの参照によって決定可能である。全ての期待肯定応答が受け取られた場合、特定のスリープ中のｎｆｓｄプロセスは、ＤＲＣ構造におけるＤＲＣエントリの位置への相関によって見出される。ｎｆｓｄプロセスは、次いで、目覚めさせられる。一次サーバ１２のＮＦＳ書込み要求プロセスは、次いで、クライアント７６に送られる通常のＮＦＳ完了データグラムの準備に継続する。
二次サーバ故障シナリオにおける本発明のオペレーションは、一般的に図４に示される。再度、クライアント書込み要求は、クライアント２６によって発行される。要求は、一次サーバ１２によって受け取られかつ実行される６２、６６。以前のように、一次サーバ１２の対応ｎｆｓｄプロセスは、次いで、二次サーバ１４からの肯定応答データグラムを待っている特定の書込み要求に関してスリープする。
一次サーバ１２は、多くの理由により二次サーバ１４からの肯定応答データグラムを受け取ることを失敗しうる。二次サーバ１４は、第１の例では、クライアント書込み要求を適宜に受け取ることを失敗したであろう。代替的に、二次サーバ１４は、要求を実行することにおいて、要求を完了することをある理由で失敗しうる。いずれの場合においても、肯定応答データグラムは、二次サーバ１４によって発行されない。別の可能性は、クライアント書込み要求が二次サーバ１４によって適宜に受け取られかつ実行されたが、発行された肯定応答データグラムが一次サーバ１２によって適宜に受け取られなかったということである。
これらの事象のそれぞれにおいて、一次サーバ１２は、受け取られない肯定応答データグラムに対するＤＲＣエントリでスリープしたままにされる。しかしながら、本発明によれば、スリープ・タイマは、ｎｆｓｄプロセスをＤＲＣエントリでスリープさせることで一次サーバ１２によって設定される。ｎｆｓｄプロセスは、受け取った肯定応答データグラムが無い状態でスリープ・タイマの時間切れで目覚める。代替的に、スリープ・タイマは、ＤＲＣ−ＬＲＵアルゴリズムのオペレーションを通してＤＲＣエントリのエージングにより有効に期限切れになる。いずれの場合においても、一次サーバ１２は、次いでバックアップ故障回復モード８８に遷移する。
アクティブなグループのミラー・ファイルシステムが継続的に適正に利用可能であり且つ仮想サーバの完全性が、応答データグラムの受取の故障以外は、そのまま維持されている環境において、バックアップの故障が生じた場合、ミラー・ファイルシステムの部分的な再同期化が可能である。ミラー・ファイルシステムのアベイラビリティは、ハートビートプロトコルの使用によって確立され、１つのミラー・ファイルシステムをベースとして、ＬＡＮ１６上の全アクティブ・グループ・サーバによって、好ましく成され、ＬＡＮ１６上の対応のエクスポート・ファイルシステムの継続アベイラビリティのエビデンスを継続的に同報通信する。好ましくは、このハートビートプロトコルは、アクティブグループのファイルサーバへ送るカスタムＵＤＰデータグラムのマルチキャストの発行を介して実施される。あるミラー・ファイルシステムの少なくともアクティブグループサーバ１２、１４の間で上記ハートビートデータグラムがまだなお交換されていて、２次サーバ１４のミラー・ファイルシステムが、肯定応答パケットのためのスリープイベント１次サーバ１２上でタイムアウトになったとしても、利用可能であることを指示する場合、１次サーバ１２は、意図的に、クライアントへの完了データグラムの発行を差し控える。ＮＦＳプロトコルの従来の操作を受けて、クライアント２６は、最終的には、完了データグラムの待機をタイムアウトし、ＮＦＳ書き込みリクエストを再発行する。
代替例として、ＮＦＳ書き込みリクエストのための完了データグラムの発行の前に、１次サーバ１２が、それ自身で、クライアントのリクエストしたＮＦＳ書き込み操作の完了を強制するように、２次サーバ１４への従来のＮＦＳ書き込み操作を開始してもよい。この後者の場合、影響を受けた仮想サーバファイルシステムロケーションへのＮＦＳの書き込みは、一般的に、従来のロッキングプロトコルによって一般的に提供される再試行の順序付けされて待ち行列とされた係属中で完了でなければならない。両方の場合に、限定数のクライアント又は１次サーバ１２の再試行が、フェールオーバが宣言される前に、少なくとも１次サーバ１２によって監視される。勿論、再試行が成功したならば、その再試行の数及び性質が、サーバ１２、１４によって好ましくログされ、完了データグラムがクライアント２６に送られる。
もしフェールオーバが１次サーバ１２によって宣言されたならば、仮想サーバのための１枚サーバによって維持されたインメモリエクスポートマップが、影響を受けたファイルシステムのための２次サーバの基準を有効に削除するように、アップデートされる。影響を受けたファイルシステムのために他の２次サーバが存在する場合、１次サーバ１２は、それら他の２次サーバに関して、本発明の耐故障プロトコルの動作を維持する。もし全２次サーバが故障したならば、１次サーバは、一般的に従来のＮＦＳファイルシステムサーバモードで、影響を受けたファイルシステムに関する動作を継続する。
１次サーバ１２は、故障のとき直ちに、ファイルシステム毎のベースで、フェールオーバイベントを宣言して、ユーザがプログラム可能なスレッシュホールドの時間間隔以内に、所与のミラー・ファイルシステムのためのハートビートデータグラムを受取る。これらのデータグラムの不存在は、２次サーバ１４の対応のファイルシステムが利用不能であること、または、１次サーバ１２と２次サーバ１４との間にハードのネットワーク通信故障がおきたこと、を示している。
フェールオーバイベントが宣言されると、１次サーバ１２は、最終的に、係属中のＮＦＳ書き込みリクエストの適正な完了を示すクライアントワークステーション２６に、完了データグラムを発行する。１次サーバ１２は、また、フェールオーバイベントをログして、管理者のコンソールに適当なステータスメッセージを発行する。
図５を参照すると、１次サーバの故障に関連するフェールオーバのシナリオが示されている。クライアント書き込みリクエストは、６４、６８でなされるように、２次サーバ１４によって適正に受取られる。応答データグラムが、７２で、発生されて、１次サーバ１２に発行される。しかしながら、書き込みリクエスト９０の受取りの初期故障により、又は、リクエスト９２の実行の故障によって、クライアント書き込みリクエストはなされなかった。いずれの場合にも、対応のＤＲＣエントリは存在しない；このＤＲＣエントリは、決して存在しないか、又は、書き込み実行エラーに遭遇すると１次サーバ１２によって捨てられる。従って、２次サーバ１４からの応答データグラムは、未知のリクエストに対する応答として、１次サーバ１２によって受取られる。次に、１次サーバ１２は、故障ハンドリングステート９６へ移る。
１次サーバ１２がアラートデータグラムを２枚サーバ１４に送る。このアラートデータグラムは、１次サーバによって受取られた未知の応答データグラムを識別するのに十分な、特に、未知の応答データグラムにおいて提供されるトランザクションＩＤ及びクライアントＩＰアドレスを識別するのに十分な情報を、含んでいる。２次サーバ１４は、１次サーバのフェールオーバのシナリオと対称となるように、ＮＦＳ書き込みリクエストを１次サーバ１２に始めることができ、オリジナルのクライアント書き込みリクエストを成功させる。しかしながら、所与のファイルシステムのアクティブな１次サーバのデータが、書き込みの故障のイベントにおいてでも、常時正しいと考えられる効果を得るように、１つのポリシーが好ましく実施される。次に、２次サーバ１４は、一般的に、かかるアラートデータグラムのカウント及びログだけを行う。１次サーバ１２は、またカウントとログを行うが、それ以外には一般的に、未知の応答データグラムを無視する。１次サーバ１２及び２次サーバ１４は、クライアント２６に依存して、何らかの未応答のＮＦＳ書き込みリクエストを繰り返す。
しかしながら、１次サーバ１２又は２次サーバ１４のいずれかが、未知の応答のユーザ・プログラム可能なスレッシュホールド数又は対応のアラートデータグラムが受取られたと認識したならば、フェールオーバイベントが宣言されて、影響を受けたファイルシステムをミラーリングするアクティブなグラムから１次サーバ１２を排除する。
別の一次サーバ故障シナリオが一次サーバ１２の部分故障で発生する。この場合、二次サーバ１４は、ハートビートプロトコルによって記録された故障によって一次サーバ１２のファイルシステムが利用不可能であることを、認識する。この事象において、二次サーバ１４は、このサーバ１４が第１にリストされた二次サーバであると仮定して、そのメモリ内エクスポートマップを更新して、影響されたファイルシステムに関係する一次サーバ１２による活動可能なグループの参入を排斥し、二次サーバ１４を、影響されたファイルシステムに対する新たな活動可能な一次サーバとする。如何なる他の二次サーバも、そのメモリ内エクスポートマップを同様に更新して二次サーバ１４を新たな一次サーバとして認識する。全ての事象において、肯定応答無しデータグラムが状態７２で二次サーバ１４によって一次サードに送られる。これに対して、通常のＮＦＳ完了データグラムは、二次サーバ１４によってクライアント２６に直接送られる。
二次サーバ１４が活動可能な一次サーバ１２との通信を完全に失う場合、二次サーバ１４は一次サーバ１２が故障したと推定すべきでは無い。むしろ、可能性のある故障ポイントはＬＡＮ１６である。この場合、複数の活動可能な一次サーバ１２が同じファイルシステムを扱う可能性は除去される必要がある。従って、活動可能な一次サーバ１２との通信が完全に失われる場合、二次サーバ１４が活動可能な一次状態に促進されるべきではない。
本発明は、クライアント読出し要求を満足する３つの方法を提供する。各方法は、一次及び二次サーバ１２、１４との間により大きな度合いの同期を提供する。クライアントの読出し要求に応答する初めの２つの方法が、図６に概略的に示されている。クライアント読出し要求を達成する第１の最も簡単な方法は、非同期読出しである。非同期読出しに対して、一次サーバ１２は、クライアント読出し要求を受信し１００、要求を達成し１０２、そしてクライアントワークステーション２６に対する読出し要求の完了に直ちに肯定応答する。
クライアント読出し要求はまた二次サーバ１４によってパラレルに受信される１０６。読出し要求自体は無視されるが、ＤＲＣエントリが二次サーバ１４上のＤＲＣ構造３８内に発生される。読出し要求の参照されたｉ−ノードと関係する最後のアクセス時間フィールドも、対応するファイルシステム上において、読出し要求が二次サーバ１４によって受信され且つ処理された時間に更新される。この更新されたアクセス時間は、一次サーバ１２上の対応するｉ−ノードに対して記録されたアクセス時間とは異なっている。しかしながら、この時間差の重要性は、殆どのプログラムがデータファイルの最後のアクセスタイムスタンプ内の若干の差の様なものには敏感ではないという事実によって、和らげられる。更に、二次サーバによって記録されたアクセス時間は、一次サーバ１２に記録されるアクセス時間に関係する一般的な満足のいく方法でバイアスすることが出来る。
アクセス時間が二次サーバ１４によって正しく記録されることが断言されるか、又は読出し要求を達成する際により高い困難性のレベルが要求される場合、肯定応答された読出し動作を実行することができる。一次サーバ１２上のサーバプロセスが、クライアント２６に対して完了データグラム１０４を直ちに発行するのではなく、クライアント読出し要求に対応する一次ＤＲＣエントリ上で、一次サーバ１２上のサーバプロセスが休眠する１１０という点で、肯定応答読出しは同期読出しとは異なる。二次サーバ１４上のｉ−ノードアクセス時間の更新が成功したのに続いて、肯定応答データグラムが発生され、これが一次サーバ１２に発行される点で、二次サーバ１４の動作は同様に異なる。一次サーバ１２上の対応するサーバプロセスは、次に肯定応答データグラムの受信に応答して起床し１１４、そしてクライアントワークステーション１６の完了データグラムを発生し且つこれを発行し１１４、読出しデータ及び読出し要求の完了信号を与える。
最後に、クライアント読出し要求に応答する完全にシリアル化された方法が図７に示されている。一次及び二次サーバ１２、１４によって実行される状態は、次に議論される様な、クライアント発生要求に応答して使用されるシリアル化された読出しを達成するためのものと本質的に同じである。
完全にシリアル化されたクライアント読出し動作は、要求参照読出しデータファイルに対する一次及び二次サーバ１２、１４の両方で維持されるｉ−ノード情報を本質的に同じにする。これは、一次及び二次サーバ１２、１４間で複数の相互作用を作り出して、最後のアクセス時間ｉ−ノード情報を二次サーバ１４に転送することによって、達成される。
動作において、一次サーバ１２は、クライアント読出し要求を受信し１２０、要求された動作を達成する１２２。並行して且つ今のところ非同期によって、二次サーバ１４は、要求１２４も受信する。読出し要求に応答する従来の方法を用いると、二次サーバ１４は読出し要求を効率的に無視し、ＤＲＣエントリが準備され、且つ二次サーバ１４上のＤＲＣ構造３８内に入る。二次サーバ１４はサーバプロセスを読み出し、次に、ＤＲＣエントリで休眠する１２６。
一次サーバ１２は、読出し要求１２２の完了時に、クライアント読出し要求、トランザクションＩＤ、ｉ−ノード番号及びｉ−ノードの発生に応答して、ｉ−ノード読出しの少なくとも最後アクセスタイムスタンプを含む送出データグラム１２８を準備する。このデータグラムは次に二次サーバ１４に送られ、二次サーバ１４上の休眠サーバ読出しプロセスを起こす１３２。二次サーバ１４は次に最後のアクセスタイムスタンプを有する対応するｉ−ノードを更新する１３４。二次サーバ１４は次に肯定応答データグラムを一次サーバ１２に戻す１３６。
応答して、一次サーバ上の適当な読出しサーバプロセスは、読出し要求に対応するＤＲＣエントリで休眠１３０を有しているが、肯定データグラムの受信に応答して、起床させられる１３８。完了データグラムが次に準備され１４０、クライアントワークステーション２６に送られる。
理解できる様に、一次及び二次サーバ１２、１４の両方のｉ−ノードデータ情報は、シリアル化された読出し方法を使用することによって同じに維持される。この方法におけるｉ−ノードデータ情報が同じであることは、しかしながら、一次及び二次サーバ１２、１４上のｉ−ノードのシリアル化された更新を要求する。原子的に小さい遅延が累積されて大きくなることが、シリアル化された読出し方法を使用することによって生じる場合がある。
本発明によれば、クリエートＮＦＳ要求の取扱いは、一次及び二次のサーバ１２、１４がミラー化されたファイルシステムに作られたファイルのために対応するアイノード（inodes）を直接割り当てることを要求する。これらの動作に対して、逐次の要求応答法が望ましい。
クリエートＮＦＳ動作は、ファイルの開設、ディレクトリーの開設、およびシンボルのリンクの開設を含む。これらのクリエート動作の各々において、本質的な要求は、ミラーファイルシステムの各々における独自に対応するアイノードの設立およびメンテナンスである。これは本発明によれば、一次のサーバ１２から二次のサーバ１４および他の全ての二次のサーバへ、ＮＦＳのクリエート要求１２２を行う場合に、一次のサーバ１２によって先ず発生された、選択されたアイノード関連の情報の送信によって達成される。少なくとも割り当てられたイノード番号、発生番号およびファイルの開設のタイムスタンプは、一次のサーバ１２から二次のサーバ１４および他の全ての二次のサーバへ、送信データグラムの一部として送られる１２８。この情報は、クリエート要求動作１４２を実際に行う場合に、二次サーバ１４のＮＦＳ顧客によって、使用するためのＵＦＳ３４へ唯一送られる。従来、ＵＦＳ３４は、ファイル開設動作を行う場合に、指定されたファイルシステム内に新しいイノードを独立して割り当てる。しかし、一次のミラーファイルシステムにおけるように、同様に割り当てられるべき二次のミラーファイルシステムにおける全てのアイノードを強制することによって、一次のサーバ１２は、二次のサーバ１４によって行われるファイル開設動作において使用されるべき新しいアイノード数を先ず指定する。当然、一次サーバの指定されたアイノード数を用いる前に、二次サーバ１４は、指定されたアイノードが現在使用していないことを確かめるためにチェックするのが好ましい。もし、使用していることが決定されると、エラーが発生し、二次サーバ１４上の影響を受けたファイルシステムに対して、フェールオーバーイベントが宣言される。
結果的に、顧客のクリエート要求が二次サーバ１４によって、首尾よく実行される限り、二次サーバ１４によって維持されるミラーファイルシステム上の各アイノードは、一次サーバ１２に関する同じアイノード数で各対応するミラーファイルシステムに作られる。結果的に、特定のファイルシステムに対する要求を確認する顧客の読み取りおよび書き込み要求に続いて、アイノード数と発生は、その要求がミラー化されたデータに対して行われることを保証して、一次サーバと二次サーバの双方によって一般に行われる。
更に、そして望ましいシーケンスは、フェイルオーバーイベントの発生について、仮想サーバからファイルシステムをマウントした顧客のワークステーションに関して例外的なアクションがとられてはならない。顧客のワークステーションによって保持された全てのＮＦＳファイルの取扱いは、仮想サーバの一次および二次サーバ１２、１４に対して等しく有効である。実際に、顧客のワークステーションは、サーバ１２、１４間であらゆる失敗或いはフェールオーバーの発生に大きく影響されないし、気がつかない。
本発明によって扱われた他の考察は、フェールオーバーの原因の修正に続づいて、一次と二次のサーバ１２、１４についてのミラーファイルシステム間のミラー化された状態の回復である。回復への多くの異なるアプローチは本発明によって熟慮される。最も簡単な回復技術は、フェイルオーバーの残存しているサーバを簡単に黙し、且つ再結合するサーバのミラーファイルシステムへ残存しているミラーファイルシステム内の全てのデータファイルをコピーすることである。このコピーはフェイルオーバーイベントの瞬間に続く最後の変更のタイムスタンプに少なくとも基づいて選択的に行われる。フェイルオーバーイベントの発生の正確な時間は、etc/syslogdサービス或いは等価なイベントのロギングサービスを通して残存するサーバによって発生の時間に記録されるのが好ましい。
回復する好適な部分的な再同期アプローチは、ファイルの開設および削除を含む、ファイルオーバーイベントの点から回復の準備において読み取り／書き込みのアクティビティの静止まで残存するサーバのミラーファイルシステムに成される全てのファイルデータの変更のロギングに対して与えることである。バックアップログはミラーファイルシステムにあるデータファイルに累積された増加した変化を蓄積する。さもないと、ミラーファイルシステムは静止される間に、このログは、残存するサーバから再び加わるサーバへ単純に移行或いはリプレースされ、それによりミラー化されたファイルシステムにあるデータを再同期する。部分的な再同期中に書き込みアクティビティが残存するサーバに静止されない場合、書き込み情報の新しいログが、前のログを再び加わるサーバに書き込む間、残存するサーバによって累積される。書き込みがログの移行中に影響されたファイルシステムに生じないか、現在のログが充分に小さなサイズであると、最後のログが再び加わるサーバに書き込まれるまで、残存するファイルサーバ上のファイルシステムへの書き込みが一次的に中断されるか延期されるの何れかであるまで、次に続くログは小さい。
最後にフェイルオーバーイベントがサーバの大きなフェイルオーバーの結果である場合、再び加わるサーバのミラーファイルシステムは、影響されたファイルシステムの完全な再同期を用いて、完全に再構築される必要がある。この場合、残存するファイルサーバのファイルシステムは静止され、全体のファイルシステムのコピーが残存するファイルシステムのイメージコピーを再び加わるサーバへ移行するするように行われる。重要なことは、このディスクコピーは、ミラーファイルシステム上にある各ファイルと関連するアイノードの数と発生の指示を保存するように、行われなければならない。
データの同一性が一次と二次のサーバ１２、１４のミラーファイルシステム間に再確立されると、一次と二次のサーバ１２、１４および他の二次のサーバによってメモリに蓄積されたファイルシステムのエクスポートマップは、本発明の誤りを許容するミラーリングプロトコールに従う続いて起こる動作を反映するために更新される。ミラーファイルシステムは、顧客の要求に関して、サービスに利用できるアクティブ状態に置かれる。
最後に、本発明は、確立するアクティブグループのファイルサーバ間のネゴシエーション、そして必要に応じて、アクティブグループにおける一次と二次のサーバとして変化の役割を提供する。通常のスタートアップ動作の間、仮想サーバのファイルシステムを形成するために結合するミラーファイルシステムは同時にアクティブグループの各サーバから利用できるようになることを保証されない。
結果的に、ミラーファイルシステムの新しい利用性は、フェイルオーバーに続くアクティブグループを再び加えるファイルサーバのファイルシステムと同様な方法で扱われる。従って、好ましくはマニュアルの確認を伴うアクティブグループは、ファイルサーバがそのファイルシステムに対する二次サーバとしてリストされているのみであるけれども、一般に与えられたミラーファイルシステムのためにアクティブプライマリーになる。部分的な再同期ログは、少なくとも第１の顧客ワークステーションで、ファイルシステムへの書き込みを開始される。しかし、もし、部分的な再同期ログがユーザーがプログラムできるサイズに達した場合、書き込みデータのロギングは停止される。その場合、ミラーファイルシステムの完全な再同期が要求される。
同じミラーファイルシステムをサービスする２次ファイルサーバがそのステートアップを完了したとき、部分的又は完全なレシンクロナイゼーションが行なわれる。次いで、２次ファイルサーバシステムのミラーファイルシステムは、そのファイルシステムのためのバーチャルサーバのオペレーションに含まれる。しかしながら、リジョイニング（rejoining）サーバはリジョイニングファイルシステムのための/etc/exportsリストプライマリサーバであってよい。次いで、好ましくは、アクティブプライマリファイルサーバは、影響を受けたファイルシステムのための、アクティブプライマリサーバのリストされたセカンダリロールに好ましくは切り替えられ、リジョイニングサーバはアクティブプライマリの役割を仮定する。
かくして、故障許容ＮＦＳミラーリングプロトコルが記載された。プロトコルは、ファイルシステムの実質的に非同期のミラーリングを予め存在するネットワークＬＡＮによってのみ必然的に相互接続された物理的に分けられたファイルサーバで可能にする。通常のＮＦＳリクエストオペレーション及び本故障許容プロトコルによってＮＦＳデータのミラーリングを実行するために別のファイルサーバで並行に作動するとき、全てのクライアントはミラーされたファイルシステムプロシードに指令された要求をする。
当然、本発明の多くの修正及び変形は上記開示に照らして可能である。これらの修正は、含まれたファイルシステムミラーリングファイルサーバを有するクライアントに相互接続するために、冗長な、別の及び並行ＬＡＮ、若しくは、他のロジカルデータ接続の使用を含んでもよい。プロトコルはまた、ＵＤＰサービスのＮＦＳクラス以外のトランスポートサービスに適用されてもよい。特に、プロトコルはカバーＴＣＰ／ＩＰプロトコル及び他のＲＰＣトランザクションのセットに拡張されてもよい。最後に、本発明のプロトコルが単一のベンダの製品の間の相互運用性に制限されないが、どんな特別なファイルサーバによっても実行可能な特別なハードウェア及びソフトウェアから独立して実行されることができることを認識すべきである。従って、本発明がここに特別に説明されたものとは異なって実施されても、添付された特許請求の範囲の範囲内であることを理解すべきである。
【図１】
0004005631.tif 000004
【図２】
0004005631.tif 000005
【図３】
0004005631.tif 000006
【図４】
0004005631.tif 000007
【図５】
0004005631.tif 000008
【図６】
0004005631.tif 000009
【図７】
0004005631.tif 000010