(57)【特許請求の範囲】
【請求項１】
サーバクラスタ上の共有ファイルシステムにアクセスするクライアントに一貫した可用性を提供するコンピュータ実施方法であって、
共有ファイルシステム中のファイル情報にアクセスするために、ファイルサーバに接続する要求を、前記ファイルサーバにおいて受け取るステップであって、接続する前記要求はファイルアクセスプロトコルに従ってフォーマットされており、前記ファイルサーバはサーバクラスタ中の複数のサーバのうちの１つである、ステップと、
前記ファイルサーバから第１の応答を送るステップであって、前記第１の応答は、前記共有ファイルシステム中のファイル情報へのアクセスを可能にするためにクライアントとのセッションを確立し、前記第１の応答は前記ファイルアクセスプロトコルに従ってフォーマットされた、ステップと、
前記クライアントによって前記共有ファイルシステム中のファイルにアクセスするために前記ファイルサーバ上で永続的ハンドルを開く要求を、前記ファイルサーバにおいて受け取るステップであって、永続的ハンドルを開く前記要求が、前記クライアントによって提供されたハンドル識別子を含む、ステップと、
永続的ハンドルを開く前記要求を受け取るのに応答して、前記ファイルサーバが、
前記セッションに関する第１の状態情報を前記ハンドル識別子と関連付けて記憶し、
前記ファイルへのアクセスを許可する第２の応答を前記クライアントに送る
ステップと、
前記ファイルサーバにおいてファイルアクセス要求を受け取るステップと、
クライアント切断後に、前記永続的ハンドルを使用して前記セッションを再確立する要求を受け取るステップと、
前記第１の状態情報を使用して前記セッションを再確立するステップと、
前記セッションの再確立の後で、前記ハンドル識別子を含む新しいファイルアクセス要求を前記クライアントから受け取るステップと、
前記ハンドル識別子を使用して、前記新しいファイルアクセス要求が以前に前記ファイルサーバに送られた前記ファイルアクセス要求の再実行であると判定するステップと
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記第１の状態情報が、前記クライアントによって再送されれば前記ファイルサーバが一貫性のない状態になるような操作の状態を含む、方法。
【請求項３】
請求項２に記載の方法であって、前記ファイルアクセスプロトコルは、サーバメッセージブロック（ＳＭＢ）プロトコルのあるバージョンである、方法。
【請求項４】
請求項３に記載の方法であって、前記第１の状態情報は、前記クライアントによってなされるバイト範囲ロックと、前記クライアントによって送られる作成の操作とのうちの１以上の状態を含む、方法。
【請求項５】
請求項３に記載の方法であって、前記クライアントの切断の前に、前記セッションに関する第２の状態情報を記憶するために再開フィルタを登録するステップを更に含む方法。
【請求項６】
請求項５に記載の方法であって、前記第２の状態情報は、前記クライアントによってなされるリースと、前記クライアントによってなされるオープンとのうちの１以上の状態を含む、方法。
【請求項７】
請求項５に記載の方法であって、前記セッションを再確立する前記ステップは、前記第２の状態情報を使用するステップを更に含む、方法。
【請求項８】
請求項１に記載の方法であって、前記クライアントの切断は前記ファイルサーバの障害のせいで発生し、前記セッションの前記再確立は前記サーバクラスタ中の第２のファイルサーバによって実施される、方法。
【請求項９】
コンピュータ実行可能命令を含むコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、コンピュータに、一貫した状態を維持する方法を実施させ、前記方法は、
ファイル情報にアクセスするためにサーバに接続する要求をクライアントによって送るステップであって、接続する前記要求がファイルアクセスプロトコルに従ってフォーマットされた、ステップと、
前記サーバから第１の応答を受け取るステップであって、前記第１の応答が、前記サーバ上のファイル情報へのアクセスを可能にするために前記クライアントとのセッションを確立するステップであって、前記第１の応答は前記ファイルアクセスプロトコルに従ってフォーマットされた、ステップと、
前記クライアントによって前記サーバ上のファイルにアクセスするために前記サーバ上で永続的ハンドルを開く要求を送るステップであって、永続的ハンドルを開く前記要求が、前記クライアントによって提供されたハンドル識別子を含む、ステップと、
前記ファイルへのアクセスを許可する第２の応答を前記クライアントにおいて受け取るステップと、
ファイルアクセス要求を送るステップと、
前記クライアントが前記サーバから切断されたことを検出するステップと、
前記永続的ハンドルを使用して前記セッションを再確立する要求を送るステップであって、前記セッションを再確立する前記要求は前記ハンドル識別子を含む、ステップと、
前記セッションが再確立されたと判定するステップと、
以前に送った前記ファイルアクセス要求の再実行である新しいファイルアクセス要求を送るステップと
を含む、コンピュータ可読記憶媒体。
【請求項１０】
請求項９に記載のコンピュータ可読記憶媒体であって、前記サーバはサーバクラスタ中の複数のサーバのうちの１つであり、前記切断は前記サーバの障害のせいで発生し、前記セッションの前記再確立は前記サーバクラスタ中の前記複数のサーバのうちの第２のサーバによって実施される、コンピュータ可読記憶媒体。
【請求項１１】
請求項１０に記載のコンピュータ可読記憶媒体であって、前記ファイルアクセスプロトコルは、サーバメッセージブロック（ＳＭＢ）プロトコルのあるバージョンである、コンピュータ可読記憶媒体。
【請求項１２】
請求項９に記載のコンピュータ可読記憶媒体であって、前記新しい要求は、前記ハンドル識別子を含み、前記切断の前の前記クライアントによってなされるバイト範囲ロックと、前記切断の前の前記クライアントによって送られる作成の要求とのうちの１以上の要求の再実行である、コンピュータ可読記憶媒体。
【請求項１３】
サーバクラスタ上の共有ファイルシステムにアクセスするクライアントに一貫した可用性を提供するためのシステムであって、該システムは、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに動作上結合され、前記少なくとも１つのプロセッサにより実行されると前記少なくとも１つのプロセッサにある方法を実施させる命令を含むメモリと
を備え、前記方法は、
共有ファイルシステム中のファイル情報にアクセスするために、ファイルサーバに接続する要求を、前記ファイルサーバにおいて受け取るステップであって、接続する前記要求はファイルアクセスプロトコルに従ってフォーマットされており、前記ファイルサーバはサーバクラスタ中の複数のサーバのうちの１つである、ステップと、
前記ファイルサーバから第１の応答を送るステップであって、前記第１の応答は、前記共有ファイルシステム中のファイル情報へのアクセスを可能にするためにクライアントとのセッションを確立し、前記第１の応答は前記ファイルアクセスプロトコルに従ってフォーマットされた、ステップと、
前記クライアントによって前記共有ファイルシステム中のファイルにアクセスするために前記ファイルサーバ上で永続的ハンドルを開く要求を、前記ファイルサーバにおいて受け取るステップであって、永続的ハンドルを開く前記要求が、前記クライアントによって提供されたハンドル識別子を含む、ステップと、
永続的ハンドルを開く前記要求を受け取るのに応答して、前記ファイルサーバが、
前記セッションに関する第１の状態情報を前記ハンドル識別子と関連付けて記憶し、
前記ファイルへのアクセスを許可する第２の応答を前記クライアントに送る
ステップと、
前記ファイルサーバにおいてファイルアクセス要求を受け取るステップと、
クライアント切断後に、前記永続的ハンドルを使用して前記セッションを再確立する要求を受け取るステップと、
前記第１の状態情報を使用して前記セッションを再確立するステップと、
前記セッションの再確立の後で、前記ハンドル識別子を含む新しいファイルアクセス要求を前記クライアントから受け取るステップと、
前記ハンドル識別子を使用して、前記新しいファイルアクセス要求が以前に前記ファイルサーバに送られた前記ファイルアクセス要求の再実行であると判定するステップと
を含む、システム。
【請求項１４】
請求項１３に記載のシステムであって、前記第１の状態情報が、前記クライアントによって再送されれば前記ファイルサーバが一貫性のない状態になるような操作の状態を含む、システム。
【請求項１５】
請求項１４に記載のシステムであって、前記ファイルアクセスプロトコルは、サーバメッセージブロック（ＳＭＢ）プロトコルのあるバージョンである、システム。
【請求項１６】
請求項１５に記載のシステムであって、前記第１の状態情報は、前記クライアントによってなされるバイト範囲ロックと、前記クライアントによって送られる作成の操作とのうちの１以上の状態を含む、システム。
【請求項１７】
請求項１５に記載のシステムであって、前記クライアントの切断の前に、前記セッションに関する第２の状態情報を記憶するために再開フィルタを登録するステップを更に含むシステム。
【請求項１８】
請求項１７に記載のシステムであって、前記第２の状態情報は、前記クライアントによってなされるリースと、前記クライアントによってなされるオープンとのうちの１以上の状態を含む、システム。
【請求項１９】
請求項１７に記載のシステムであって、前記セッションを再確立する前記ステップは、前記第２の状態情報を使用するステップを更に含む、システム。
【請求項２０】
請求項１３に記載のシステムであって、前記クライアントの切断は前記ファイルサーバの障害のせいで発生し、前記セッションの前記再確立は前記サーバクラスタ中の第２のファイルサーバによって実施される、システム。
【請求項２１】
請求項９から１２のうちの何れか一項に記載のコンピュータ実行可能命令を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]サーバクラスタは、フェールオーバーおよび高い情報可用性をクライアントに提供するために一般に使用される。
【背景技術】
【０００２】
サーバクラスタの使用により、クライアント上でサーバ動作を要求するアプリケーションに対してどんなサーバ障害もトランスペアレントであるように、トランスペアレントなフェールオーバーがクライアントにもたらされる。サーバクラスタは、ネットワーク中の複数のクライアントにファイル情報へのアクセスを提供するための共有ファイルシステムにおいて、有用である可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、共有ファイルシステムがサーバメッセージブロック（ＳＭＢ）プロトコルなどのステートフルなプロトコルを利用するとき、問題が生じることがある。サーバクラスタ中のサーバに障害が発生したとき、いくつかのステートフルなプロトコルは、クライアント状態を障害サーバから代替サーバに移行させる方法を提供しない。また、いくらかの状態情報を記憶することを可能にするファイルアクセスプロトコルであっても、異なるコンポーネントが異なる状態情報を記憶することは可能にしない。
【０００４】
[0002]実施形態は、これらおよび他の考慮事項に鑑みてなされたものである。また、比較的特定の問題を論じたが、この背景において識別された特定の問題の解決に実施形態が限定されるべきでないことを理解されたい。
【課題を解決するための手段】
【０００５】
[0003]この概要は、詳細な説明のセクションでさらに後述する概念の精選を単純な形で紹介するために提供する。この概要は、特許請求される主題の重要な特徴または本質的な特徴を識別するものとはせず、また、特許請求される主題の範囲を決定する際の補助として使用されるものともしない。
【０００６】
[0004]共有ファイルシステム中で永続的ハンドルを利用する実施形態について述べる。永続的ハンドルを使用して、ネットワーク障害およびサーバフェールオーバーをまたいで状態が維持される。永続的ハンドルは、ファイルサーバとのセッションが確立された後でクライアントによって要求される。永続的ハンドルを求める要求は、クライアントによって生成されたハンドル識別子を含む。サーバは、ハンドル識別子を使用して状態情報と関連付ける。ネットワーク障害またはサーバフェールオーバーがありクライアントへの再接続があったとき、ハンドル識別子を使用して、もし再実行されればサーバ上で一貫性のない状態を生み出すことになるような再実行された要求が識別される。次いで、再実行された要求は適切に処理される。
【０００７】
[0005]実施形態は、コンピュータプロセス、コンピューティングシステム、または、コンピュータプログラム製品やコンピュータ可読媒体などの製造品として、実現することができる。コンピュータプログラム製品は、コンピュータシステムによって読取可能な、かつコンピュータプロセスを実行するための命令のコンピュータプログラムをエンコードする、コンピュータ記憶媒体とすることができる。コンピュータプログラム製品はまた、コンピューティングシステムによって読取可能な、かつコンピュータプロセスを実行するための命令のコンピュータプログラムをエンコードする、搬送波上の伝搬信号とすることもできる。
【０００８】
[0006]以下の図に関して、非制限的かつ非網羅的な実施形態について述べる。
【図面の簡単な説明】
【０００９】
【図１】[0007]実施形態を実現するのに使用できるシステムを示す図である。
【図２】[0008]いくつかの実施形態による、ファイルアクセスプロトコルを使用して通信するクライアントおよびファイルサーバクラスタのブロック図である。
【図３】[0009]いくつかの実施形態による、サーバフェールオーバー時に再実行防御を提供するための動作フローを示す図である。
【図４】[0010]いくつかの実施形態による、ファイルの一貫した可用性を維持するための動作フローを示す図である。
【図５】[0011]実施形態を実現するのに適したコンピューティング環境のブロック図である。
【発明を実施するための形態】
【００１０】
[0012]以下、本明細書の一部をなし特定の例示的な実施形態を示す添付の図面を参照しながら、様々な実施形態についてより完全に述べる。しかし、実施形態は多くの異なる形で実現することができ、本明細書に示す実施形態に限定されるものと解釈すべきではない。そうではなく、これらの実施形態は、本開示が十分で完全なものとなるように、かつ実施形態の範囲を当業者に完全に伝えることになるように提供する。実施形態は、方法、システム、またはデバイスとして実践することができる。したがって、実施形態は、ハードウェア実装形態の形、完全にソフトウェア実装形態の形、またはソフトウェア面とハードウェア面を組み合わせた実装形態の形をとることができる。よって、以下の詳細な説明は、限定的な意味にとるべきではない。
【００１１】
[0013]図１に、いくつかの実施形態を実現するのに使用できるシステム１００を示す。システム１００は、クライアント１０２および１０４、ならびにサーバクラスタ１０６を含む。クライアント１０２および１０４は、ネットワーク１０８を介してサーバクラスタ１０６と通信する。サーバクラスタ１０６は、クライアント１０２および１０４上のアプリケーションからアクセスされる情報を記憶する。クライアント１０２および１０４は、クラスタ１０６とのセッションを確立して、クラスタ１０６上の情報にアクセスする。図１ではクライアント１０２および１０４のみがクラスタ１０６と通信するのが示されているが、他の実施形態では、サーバクラスタ１０６からの情報にアクセスするクライアントが３つ以上あってもよい。
【００１２】
[0014]図１に示すように、サーバクラスタ１０６は、サーバ１０６Ａ、１０６Ｂ、および１０６Ｃを含み、これらのサーバは、クラスタ１０６に記憶された情報について、高い可用性と冗長性の両方を提供する。実施形態では、クラスタ１０６は、クライアント１０２および１０４からアクセスされるファイルシステムを有する。図１には３つのサーバが示されているが、他の実施形態では、クラスタ１０６は４つ以上のサーバまたは２つ以下のサーバを含んでもよい。実施形態では、クライアント１０２および１０４上のアプリケーションがファイルシステムにファイル情報を要求し、アプリケーションに対してトランスペアレントに、サーバクラスタ１０６上の共有ファイルシステムからファイル情報が取り出される。
【００１３】
[0015]一実施形態によれば、サーバ１０６Ａ、１０６Ｂ、および１０６Ｃを利用して、クラスタ１０６に記憶されたファイルシステムの一貫した可用性が提供される。これは、クライアント１０２および１０４上ならびにサーバ１０６Ａ、１０６Ｂ、および１０６Ｃ上のコンポーネントを利用して状態情報を記憶することによって行われ、この状態情報を使用して、ネットワーク１０８の障害またはサーバ１０６Ａ、１０６Ｂ、１０６Ｃのうちの１つの障害があった場合にクライアント１０２および１０４とクラスタ１０６との間でセッションを再確立することができる。後でより詳細に述べるように、状態情報を記憶することで、クライアント１０２および１０４は、クライアント１０２および１０４上で実行されるアプリケーションに対してトランスペアレントな、一貫したファイルアクセスおよびフェールオーバーを有することができる。
【００１４】
[0016]クラスタ１０６のサーバ、例えば１０６Ａ、１０６Ｂ、および１０６Ｃは、実施形態では、それぞれファイル情報へのアクセスをクライアントに提供するものであり、ファイル情報の一貫した可用性をクライアントに提供するように構成される。一実施形態を例示すると、クライアント１０２は、クラスタ１０６のサーバとのセッションを確立する要求を送ることができる。例えば、クライアント１０２は、サーバ１０６Ａとのセッションを確立して、サーバクラスタ１０６に記憶された共有ファイルシステムにアクセスすることができる。セッションを確立するプロセスの一部として、クライアント１０２は、ファイルアクセスプロトコルを利用することができる。実施形態では、ファイルアクセスプロトコルは、ネットワークファイルシステム（ＮＦＳ）またはサーバメッセージブロック（ＳＭＢ）プロトコルのバージョンである。
【００１５】
[0017]セッションの確立は、クライアント１０２とサーバ１０６Ａとの間で伝送されるいくつかの交渉要求および応答の交換を含んでよい。ＳＭＢプロトコルのバージョンでは、セッション中に使用されることになるプロトコルの正確なバージョンを交渉するのに使用される、かつクライアント（例えば１０２）とサーバ（例えば１０６Ａ）の両方の能力を相互に対して公開するのに使用される、特に定義された交渉パケットがある。一実施形態では、交渉パケットは、サーバ１０６Ａがクラスタ（例えばクラスタ１０６）の一部であることを示す指示を含んでよい。これによりクライアントは、一貫した可用性、言い換えればトランスペアレントなフェールオーバー能力を、サーバ１０６Ａが提供できることを知ることができる。
【００１６】
[0018]上の例を続けるが、セッションが確立された後、クライアント１０２は、ファイルシステム中のファイルにアクセスするための永続的ハンドルを求めて、ファイルアクセスプロトコルに従ってフォーマットされたメッセージをサーバ１０６Ａに送ることができる。永続的ハンドルを要求することは、実施形態では、サーバ１０６Ａがクラスタ１０６の一部であることの結果として利用可能であるトランスペアレントなフェールオーバー能力を、クライアントが利用したいことを示す。実施形態では、要求は、グローバル一意識別子であるハンドル識別子を含む。
【００１７】
[0019]サーバ１０６Ａは、永続的ハンドルを求める要求を受け取り、クライアント１０２とのセッションに関する状態情報と共にハンドル識別子を記憶することになる。状態情報を記憶することは単に、ファイルサーバが記憶域へのハンドル識別子を保持すること、および状態情報をハンドル識別子と関連付けて記憶することを含めばよい。後でより詳細に述べるように、いくつかの実施形態では、フィルタなどの別々のコンポーネントを使用して、種々のタイプの状態情報を記憶することができる。さらに他の実施形態では、永続的ハンドルに関係する情報は、ノード間で複製され、ファイルシステム上の永続記憶域には記憶されない。さらに他の実施形態では、永続的ハンドルに関する情報は、ノード間で複製され、かつ、ファイルシステム上の永続記憶域に記憶される。
【００１８】
[0020]サーバ１０６Ａは、応答をクライアント１０２に送り、永続的ハンドルとファイル情報へのアクセスとを許可する。次いでクライアント１０２は、ファイルに対して様々な操作を実施するための他の要求を送ることに進むことができる。例えば、クライアント１０２は、ファイル情報を読み取ること、ファイルに書き込むこと、ファイルの属性を列挙すること、ファイルを閉じること、およびファイルに対する様々なロックを求めることの要求を送ることができる。クライアントによって要求された各操作の結果、状態情報が更新されてよく、それにより、クライアントが切断された場合にクライアントの状態を確実に元通りにできるようになる。この更新は、追加の状態情報をハンドル識別子と関連付けて保存することを含んでよい。
【００１９】
[0021]何らかの時点で、クライアント１０２はサーバから切断される場合がある。切断は、例えばネットワーク障害または混乱のせいであることがある。あるいは、切断は、サーバ１０６Ａの障害のせいであることがある。ネットワーク障害を伴う実施形態では、クライアント１０２は、切断が生じたことを検出し、ネットワークが利用可能になるのを待機して、サーバ１０６Ａに再接続することができる。他の実施形態では、クライアント１０２は、障害を検出すると、再接続する要求をクラスタ１０６に送り、クラスタ１０６は、フェールオーバーサーバを提供して再接続要求を処理することになる。
【００２０】
[0022]いずれの場合でも、クライアント１０２は、再接続する要求を送る。要求は、ハンドル識別子を含むことになる。サーバ１０６Ａまたは代替サーバ（１０６Ｂもしくは１０６Ｃ）は、ハンドル識別子に基づいて状態情報を取り出し、状態情報を使用して前の状態を再確立し、再接続が成功であることを示す応答をクライアントに送ることになる。いくつかの実施形態では、前の状態情報が失われたかさもなければ利用不可能である場合は、再接続が可能でないことがある。これらの状況では、サーバは、再接続要求をセッション確立要求として扱い、相応に応答することができる。
【００２１】
[0023]セッションが再確立された後、クライアント１０２は、新しいファイルアクセス要求を送る。いくつかの実施形態では、新しいファイルアクセス要求のうちの１つは、前の要求の再実行である場合がある。再実行された要求は、もしサーバによってそれが再実行であると認識されずに処理されればサーバ上で一貫性のない状態を生み出すことになるようなタイプの要求である場合がある。正確な要求タイプは、使用されているファイルアクセスプロトコルによってどのように要求が処理されるかに依存する。例えば、ＳＭＢプロトコルのバージョンでは、バイト範囲ロックがファイルの各部分に対して要求され許可される場合がある。したがって、ファイルの各部分をロックする要求をクライアントが送り、要求が完了したが、切断前にクライアントに通知されない場合、クライアントは、前の要求を再実行する可能性がある。サーバは、要求が再実行であることを識別できることが必要となる。したがって、実施形態では、永続的ハンドルを求める元の要求と共に送られたハンドル識別子を使用して、再実行された要求が識別される。識別されると、再実行された要求を、サーバ上の一貫性のない状態を回避するために処理することができる。
【００２２】
[0024]いくつかの実施形態では、トランスペアレントなフェールオーバーをクライアント１０２上のアプリケーションに提供するために、クライアント１０２に記憶される状態情報があってよい。すなわち、サーバ１０６Ａ（またはフェールオーバーサーバ）は、再接続後に状態を復元するのに必要な情報の全てを記憶することは担わなくてよい。いくつかの実施形態では、クライアントが、いくらかの状態を再確立することを担うことができる。例えば、ファイル情報を読み取る要求が切断前に送られた場合、サーバは、読取要求に関する状態情報を保存することを担わなくてよい。再接続が行われたとき、クライアントは、読取要求を再送することを担うことができる。異なるコンポーネントによって状態情報が復元される実施形態に関する追加の説明については、図２に関してより詳細に後述する。
【００２３】
[0025]以上の記述は、図１に示す実施形態がどのように動作できるかに関する一例に過ぎない。より詳細に後述するように、実施形態は、種々のステップまたは動作を含み得る。これらは、任意の適切なソフトウェアまたはハードウェアコンポーネントまたはモジュールを使用して実施することができる。
【００２４】
[0026]次に図２に移るが、図２には、クライアント２０２と、クライアント２０４と、３つのサーバ（サーバ１、サーバ２、およびサーバ３）を有するサーバクラスタ２０６とを含むソフトウェア環境２００のブロック図を示す。また、ファイルシステムがファイル情報を記憶するファイル記憶装置２１０、および、サーバ１、サーバ２、サーバ３のうちの１つまたは複数によって状態情報を記憶できる記憶装置２１２も示す。
【００２５】
[0027]図２に示すように、クライアント２０２およびクライアント２０４はそれぞれ、ファイル情報を要求することのできるアプリケーションを備える。アプリケーションは、例えば、ワードプロセッシングアプリケーション、表計算アプリケーション、ブラウザアプリケーション、または、ファイルへのアクセスを要求する他の任意のアプリケーションとすることができる。図２に示す実施形態では、ファイルは、ファイル記憶装置２１０に記憶された共有ファイルシステム中に位置する。クライアント２０２およびクライアント２０４はそれぞれ、ファイルを求める要求をアプリケーションからファイルサーバにリダイレクトするリダイレクタをさらに備え、ファイルサーバは、共有ファイルシステムへのアクセスを提供する。リダイレクタは、ファイルアクセスプロトコルを使用してファイルサーバと通信する。いくつかの実施形態では、ファイルアクセスプロトコルは、ＮＦＳのまたはＳＭＢプロトコルのバージョンとすることができる。例示の目的で、図２については、クライアント２０２およびクライアント２０４中のリダイレクタがＳＭＢ２．０などのＳＭＢプロトコルのバージョンを使用してファイルサーバと通信すると仮定して述べる。しかし、実施形態は、ＳＭＢプロトコルの使用に限定されない。
【００２６】
[0028]図２では、サーバ１、サーバ２、およびサーバ３がそれぞれファイルサーバを備えるのが示されている。上に言及したように、ファイルサーバは、ＳＭＢプロトコルのバージョンを使用して、クライアント２０２およびクライアント２０４上のリダイレクタと通信することができる。サーバ１、サーバ２、およびサーバ３のそれぞれは再開フィルタも備え、再開フィルタは、いくつかの実施形態では、クライアントリダイレクタとファイルサーバとの間で確立されたセッションの状態情報を記憶するのに使用される。
【００２７】
[0029]ＳＭＢプロトコルを使用してクライアントとサーバとの間におけるセッションを確立することは、リダイレクタ（クライアント２０２上のリダイレクタなど）がファイルサーバ（サーバクラスタ２０６中のサーバ１など）に交渉要求を送ることで開始する。リダイレクタとファイルサーバは、交渉バケットを交換して、セッションに使用されることになるＳＭＢのバージョンを交渉する。加えて、交渉中に能力を交換することもできる。一実施形態では、ファイルサーバは、ファイルサーバからクライアントに送られる交渉応答パケットの中に能力フラグを含めて、ファイルサーバが永続的ハンドルの使用をサポートすることをクライアントに示すことができる。いくつかの実施形態では、これは、ファイルサーバが、クラスタ中の別のサーバへのフェールオーバーによって一貫した可用性をクライアントに提供できるクラスタの一部であるような状況で行われる。他の実施形態では、スタンドアロンサーバもまた、ネットワーク障害がある場合にクライアントに再接続できるように、この能力を有することができる。
【００２８】
[0030]交渉が完了すると、クライアント上のリダイレクタとファイルサーバとは、セッションを確立する。次いで、クライアントリダイレクタは、ファイルアクセス要求をファイルサーバに送ることができる。一実施形態では、リダイレクタは、永続的ハンドルを要求する。ＳＭＢプロトコルのバージョンは、切断されたクライアントに再接続するのに使用できる持続的ハンドルを可能にする。しかし、持続的ハンドルは、クライアントが再接続した後で状態を記憶および再確立することを必ずしも可能にするとは限らない。したがって、実施形態では、リダイレクタは、クライアントリダイレクタが永続的ハンドルを要求していることを示すための何らかの追加フラグおよび／またはインジケーターと共に、持続的ハンドルの要求を送ることができる。加えて、クライアントは、再実行された要求を再接続後に識別するのに使用できるハンドル識別子を含んでよい。以下は、永続的ハンドルを要求するためにＳＭＢプロトコルのバージョンにおいて使用できる持続的ハンドル要求構造の一実施形態である。
ｓｔｒｕｃｔＳＭＢ２＿ＤＵＲＡＢＬＥ＿ＨＡＮＤＬＥ＿ＲＥＱＵＥＳＴ＿Ｖ２｛
ＵＬＯＮＧ  Ｆｌａｇｓ；
ＧＵＩＤ  ＨａｎｄｌｅＩｄ；  ／／クライアントがこのハンドルに対する固有ＩＤを提供した
／／（再実行を検出するのに使用される）
ＵＬＯＮＧ  Ｔｉｍｅｏｕｔ；  ／／タイムアウト（秒）
ＵＬＯＮＧ  Ｒｅｓｅｒｖｅｄ；  ／／ＺＥＲＯに設定されなければならない｝
[0031]要求に応答して、サーバ１上のファイルサーバは、実施形態では、永続的ハンドルを許可しファイル識別子をクライアント２０２上のクライアントリダイレクタに提供することによって応じる。次いで、クライアントリダイレクタは、永続的ハンドルとファイル識別子とに関連するファイルからの情報にアクセスすることができる。いくつかの実施形態では、クライアントリダイレクタは、ディレクトリに対する永続的ハンドルを要求することができる。すなわち、永続的ハンドルは個別ファイルに関連するのではなく、ハンドルはディレクトリに関連してよい。
【００２９】
[0032]サーバ１上のファイルサーバが永続的ハンドルを許可するのに加えて、ファイルサーバはまた、状態情報を記憶装置２１２に記憶することになる。状態情報は、クライアントリダイレクタによって生成されたハンドル識別子と関連付けて記憶することができ、また、クライアント２０２上のクライアントリダイレクタに提供されたファイル識別子と関連付けて記憶することができる。後でより詳細に述べるように、ファイルサーバは、状態情報をファイルサーバ状態情報２１６として直接に記憶することができる。他の実施形態では、ファイルサーバは、再開フィルタを利用して状態情報を記憶することができる。さらに他の実施形態では、ファイルサーバは、状態情報を直接に記憶し、かつ、他の状態情報を記憶するために再開フィルタを使用することができる。
【００３０】
[0033]交渉が完了した後、クライアントリダイレクタは、例えばＳＭＢプロトコルのバージョンを使用して、ファイルアクセス要求を送る。いくつかの実施形態では、ファイルサーバは、クライアントリダイレクタから受け取った各要求につき、状態情報を記憶することになる。何らかの時点で、例えばネットワーク障害またはサーバ１の障害の結果として、クライアント２０２とサーバ１との間で切断がある場合がある。クライアント２０２は、障害がネットワーク障害に基づくものであった場合にはサーバ１と、またはフェールオーバーサーバ（サーバ２とサーバ３のうちの一方）と、接続を再確立することができる。再接続の一部として、クライアント２０２は、前に提供したハンドル識別子と、元のセッションの交渉時にファイルサーバによって提供されたファイル識別子とを含む再接続要求を送ることができる。状態情報は、サーバクラスタ２０６中の全てのサーバからアクセス可能な記憶装置２１２中で利用可能なので、フェールオーバーサーバは、再接続要求の中でクライアントによって提供されたハンドル識別子および／またはファイル識別子に基づいて、前の状態情報を識別することができる。クライアントがサーバ１との接続を再確立しようと試みている実施形態では、サーバ１上のファイルサーバもまた、記憶装置２１２上の状態情報にアクセスして、クライアントとのセッションの前の状態を再確立することができる。
【００３１】
[0034]上に言及したように、いくつかの実施形態では、切断されたクライアントに状態の再確立を提供するために、環境２００中の異なるコンポーネントが、異なるタイプの状態情報を記憶することを担う。図２に示すように、各ファイルサーバは、再開フィルタを備える。実施形態では、再開フィルタを使用して、クライアントが再接続されたときに状態を再確立するための状態情報が記憶される。再開フィルタは、ファイルサーバによって使用される特定のファイルアクセスプロトコルに依存しない。実施形態では、ファイルサーバは最初に、特定の状態情報を記憶するために再開フィルタに登録することになる。登録されると、ファイルサーバは、状態情報を再開フィルタに渡すことができ、再開フィルタは、状態情報を再開フィルタ状態情報２１４として記憶装置２１２に記憶する。再開フィルタ状態情報２１４に加えて、サーバは、ファイルサーバ状態情報２１６として示される別個の状態情報を、記憶装置に２１２に記憶することができる。実施形態では、この異なる状態情報は、再開フィルタ状態情報２１４とは別の記憶位置に記憶することができる。ファイルサーバ状態情報２１６および再開フィルタ状態情報２１４は、ログファイルなど任意の適切な方式で記憶することができる。後でより詳細に述べるように、再開フィルタによって記憶される状態情報のタイプは、実施形態では、一般情報であり、サーバ情報は、より特定の状態情報である。
【００３２】
[0035]いくつかの実施形態では、クライアントもまた、いくらかの状態情報を記憶することを担う。図２に示すように、クライアント２０２および２０４は、切断後にクライアントが再接続されたときに状態を再確立するのに使用される状態情報を記憶する。これらの実施形態では、切断後にクライアントが再接続されたときにクライアントの状態を再確立するためにファイルサーバが全ての状態情報を記憶することを必要とする代わりにクライアントが状態を再確立するようにすることには、いくらかのコスト節約があるであろう。例えば、ファイルサーバが全ての状態情報を記憶する必要がある場合は、ファイルサーバは、ファイルに対して実施すべき何らかの操作を伴う何らかの要求をクライアントリダイレクタから受け取る度に、この要求または操作に関する何らかの情報を記憶することが必要とされる。クライアントリダイレクタが状態情報のうちのいくらかを記憶する必要があるようにすることにより、クライアントから受け取った要求または操作ごとにファイルサーバが状態情報を記憶しなければならないことのコストが削減される。
【００３３】
[0036]理解できるように、環境２００中の異なるコンポーネントに記憶される状態情報は、異なる設計上の考慮事項に依存する。例えば、状態情報が整合性を有し一貫して利用可能であることをファイルサーバが保証する必要のある、十分に重要な何らかの情報がある場合がある。この場合、この情報は、ファイルサーバおよび／または再開フィルタによって記憶されるべきである。例えば、サーバが共有モードを施行し、アクセスを要求する新しいクライアントが既存のクライアントのアクセスと干渉しないように保証するために、実施形態によれば、状態情報はサーバに記憶されなければならない。他の状態情報は、それほどクリティカルでない場合があり、情報中でいくらかの不整合は許容され得る。例として、クライアントが、ローカルにキャッシュされたファイルプロパティを有する場合がある。クライアントが切断に続いてファイルサーバに再接続した後、キャッシュされたファイルプロパティを新たに要求することができる。
【００３４】
[0037]一実施形態では、クライアントリダイレクタとファイルサーバとの間の通信にＳＭＢプロトコルのバージョンが使用される場合、ＳＭＢプロトコルは、環境２００中に示す様々なコンポーネントによって記憶されることになる特定の状態を可能にすることができる。一実施形態では、ＳＭＢプロトコルを使用して利用可能な操作は、３つのグループに分けられる。各グループに関連する状態情報は、異なるコンポーネントによって記憶される。
【００３５】
[0038]第１のグループは、非べき等（ｎｏｎ−ｉｄｅｍｐｏｔｅｎｔ）操作と一般に呼ぶことができ、これは、これらの操作が再実行された場合、例えばクライアント切断の前にすでに一度ファイルに適用された後で再適用された場合に、ファイルサーバ上で一貫性のない状態を生み出すであろうことを意味する。ＳＭＢプロトコルのバージョンでは、バイト範囲ロックが、再実行検出を必要とする操作の一例である。というのは、これらのロックはスタックされてアンスタックされるからである。他の例は、付加としての書込みおよびオープン／作成を含み、これらは、例えば新しいファイルの作成または既存のファイルの上書きによって、ディスク状態を修正する可能性がある。実施形態では、ファイルサーバはこれらの操作が再実行されていることを認識しなければならないので、これらのタイプの操作に関連する状態はファイルサーバによって記憶される。図２に示す実施形態では、これらの操作に関連する状態は、サーバ１、サーバ２、およびサーバ３のそれぞれの上のファイルサーバによって、ファイルサーバ状態情報２１６の一部として記憶装置２１２に記憶されることになる。いくつかの実施形態では、前述のような、セッションの交渉中にクライアントによって提供されたハンドル識別子を使用して、要求が前の要求の再実行であることが識別される。
【００３６】
[0039]操作の第２のグループは、データオープン操作に関係する。これらの操作は、ファイル中の情報の読取り、書込み、実行、または削除を要求する場合がある。共有モードを施行し、他のクライアントが既存のクライアントに影響を及ぼさないようにすることができるために、実施形態によれば、これらのオープン操作に関する状態は、サーバ側で記憶されなければならない。オープン操作に関する状態はまた、ローカル操作が永続的ハンドルと干渉するのを阻止するために、サーバ側で記憶される。例えば、クラスタノード上で実行されるプログラムが、クライアントのために予約されているハンドルを修正するかさもなければそれに影響を及ぼすことが防止される。実施形態では、これらのタイプの操作に関する情報は、再開フィルタによって記憶される。上に言及したように、再開フィルタは、実施形態では、ＳＭＢプロトコルに特有ではなく、ＮＦＳなどの異なるファイルアクセスプロトコルをファイルサーバが使用しているときでも使用することができる。図２に示す実施形態では、サーバ１、サーバ２、およびサーバ３のそれぞれの上の再開フィルタは、オープン操作の状態情報を、再開フィルタ状態情報２１４の一部として記憶装置２１２に記憶する。
【００３７】
[0040]操作の第３のグループは、サーバにおいて再適用されてもサーバの最終状態を変更しないような操作を含む。これらは、べき等（ｉｄｅｍｐｏｔｅｎｔ）操作と呼ぶことができる。このグループ中のいくつかの操作は、読取り、付加でない書込み、削除、名前変更、メタデータ設定操作、およびメタデータ照会操作を含むが、これらに限定されない。リース状態もまた、クライアントによって記憶することができ、サーバによって保持される必要はない。実施形態では、リースは、性能を増大させネットワーク使用を低減させるためにクライアントが一貫した方式でそのバッファリング戦略を動的に改変するのを可能にするように設計されたメカニズムである。リモートファイル操作に関するネットワーク性能は、クライアントがファイルデータをローカルにバッファリングできる場合に増大させることができ、ローカルにバッファリングすることで、ネットワークパケットを送受信する必要性が低減するかまたはなくなる。クライアントは、他のどんなクライアントもデータにアクセスしていないことを確認した場合、リモートサーバ上のファイルに情報を書き込まなくてよいものとすることができる。同様に、クライアントは、他のどんなクライアントもリモートファイルにデータを書き込んでいないことを確認した場合、リモートファイルからの事前に読み取ったデータをバッファリングすることができる。
【００３８】
[0041]実施形態によれば、リース状態は、サーバ上で保持される必要はない。というのは、クライアントがフェールオーバー後にそれらのハンドルを再開している間、再開フィルタは所与のファイルに対する全ての作成をブロックするからである。このことは暗黙的に、クライアントが猶予期間中に再接続する／それらのハンドルを再開する場合は、フェールオーバープロセス中にハンドルリースが失われることは決してないという保証をもたらす。言い換えれば、クライアントは、再開段階中はそれらのハンドルリースを常に取り戻すことになる。さらに、読取り／書込み、読取り／書込み／ハンドルリースなどの、排他的リースは、どんな所与の時点でも、単一のクライアントのみに許可される。このことは、他のどんなクライアントからの、ファイルに対する他のどんなデータオープンもないことを含意する。したがって、フェールオーバー中は、再開フィルタは、排他的リースを保持するクライアントがその全てのハンドルを再開し終えるまで、ファイルに対する新しい作成を可能にしないことになるので、クライアントがその排他的リースを取り戻すことになるという保証がある。読取りリースなど、肯定応答を必要としない共有リースは、サーバと再開フィルタとのいずれにも知られることなく、いつでも失われる可能性がある。というのは、基礎をなすファイルシステムが、中断を引き起こした操作の続行を可能にするからである。このようなリースの場合、クライアントは、実施形態では、リースがフェールオーバー全体にわたって中断されていると見なし、そのキャッシュを消去して古い読取りを防止する。したがって、第３のグループ中の操作の状態は、サーバからのどんな追加サポートもなしにクライアントによって再現することができる。図２に示す実施形態では、クライアント２０２および２０４上のリダイレクタが、第３の操作グループの状態情報を記憶する。
【００３９】
[0042]動作において、環境２００は、クライアント２０２および２０４上のアプリケーションが、共有ファイルシステム中のファイル記憶装置２１０に記憶されたファイルへのアクセスを要求するのを可能にする。アプリケーションは、ファイル情報をトランスペアレントに要求することができる。クライアント上のリダイレクタは、前述のようにクラスタ２０６中のサーバのうちの１つとのセッションを確立し、切断があった場合にリダイレクタが再接続してセッションを再確立できるように永続的ハンドルを要求することになる。ファイルサーバは、状態情報を、ファイルサーバ状態情報２１６として直接に、または再開フィルタを使用して再開フィルタ状態情報２１４として、記憶装置２１２に記憶することになる。いくつかの実施形態では、クライアントもまた、いくらかの状態情報を記憶することになる。切断が発生した場合、リダイレクタは、ファイルサーバまたはフェールオーバーサーバに再接続するのを要求することができる。次いで、サーバ側（例えば記憶装置２１２中）およびクライアント側で記憶された状態情報を使用して、クライアントの前の状態を再確立することができる。これは全て、クライアント２０２および２０４上のアプリケーションに対してトランスペアレントに行われる。
【００４０】
[0043]理解できるように、環境２００に関する上の記述は、本明細書に述べる実施形態を限定する意図はない。図２およびその記述は、単に、いくつかの実施形態の実装形態を例示するものとする。他の実施形態では、環境２００中の異なるコンポーネントに、異なるタイプの状態情報を記憶することができる。また、上に示したように、記憶される状態情報のタイプ、ならびにどんなコンポーネントが状態情報を記憶するかを決定し得る、種々のファイルアクセスプロトコルを使用することができる。したがって、実施形態は、図２に示し記述するものに限定されない。
【００４１】
[0044]以下の図３および４に関する記述は、サーバメッセージブロック（ＳＭＢ）プロトコルをファイルアクセスプロトコルとして使用して行う。しかし、実施形態はこれに限定されない。実施形態では、ＳＭＢまたはネットワークファイルシステム（ＮＦＳ）の種々のバージョンを含めた、任意のファイルアクセスプロトコルを、ファイルアクセスプロトコルとして使用することができる。ＳＭＢは、単に例示を簡便かつ容易にするために記述の中で使用されているに過ぎない。
【００４２】
[0045]図３および４に、実施形態による動作フロー３００および４００を示す。動作フロー３００および４００は、任意の適切なコンピューティング環境で実施することができる。例えば、動作フローは、図１および２に示すようなシステムおよび環境によって実行することができる。したがって、動作フロー３００および４００に関する記述は、図１および２のコンポーネントのうちの少なくとも１つに言及することがある。しかし、図１および２のコンポーネントへのそのような言及はどれも説明の目的に過ぎず、図１および２の実装形態は、動作フロー３００および４００のための非限定的な環境であることを理解されたい。
【００４３】
[0046]さらに、動作フロー３００および４００を特定の順序で連続的に図示および記述するが、他の実施形態では、異なる順序で、複数回にわたって、および／または平行して動作が実施されてもよい。さらに、いくつかの実施形態では、１つまたは複数の動作が省略または結合されてもよい。
【００４４】
[0047]動作フロー３００に、サーバフェールオーバー時に再実行防御を提供するためのステップを示す。実施形態では、図３に示すフロー３００は、サーバクラスタの一部であるサーバ（例えばクラスタ２０６のサーバ１、サーバ２、およびサーバ３（図２））上で実行されているファイルサーバによって実施することができる。フロー３００は動作３０２で開始し、ファイルサーバに接続する要求が受け取られる。動作３０２で受け取られる要求は、ファイルサーバを介してアクセス可能な共有ファイルシステムに記憶されたファイル情報にアクセスするために、ファイルサーバとのセッションを確立する要求である。要求は、クライアント、例えばクライアント２０２および２０４（図２）によって送ることができる。動作３０２の後、フロー３００は動作３０４に進み、セッションが確立されたことを示す応答が送られる。いくつかの実施形態では、動作３０２および３０４で送られる要求および応答は、セッションを交渉するためにクライアントとサーバとの間で交換されるいくつかのメッセージの一部とすることができる。メッセージの交換は、ファイルサーバの永続的ハンドル提供能力を含めた能力の交換を含んでよい。
【００４５】
[0048]動作フローは動作３０４から動作３０６に進み、永続的ハンドルを求める第２の要求が受け取られる。要求はクライアントによって送られ、要求はまた、クライアントによって生成されたハンドル識別子を含む。ハンドル識別子は、実施形態では、クライアントとファイルサーバとの間で確立されたセッションに関する状態情報を記憶するために、サーバによって使用される。状態情報を記憶することの一部として、フロー３００は、実施形態では、ファイルサーバがいくらかの状態情報を記憶するために再開フィルタに登録する動作３０８を含んでよい。実施形態では、再開フィルタは、プロトコル層と、基礎をなすストレージシステムとの間に位置し、実施形態では、ファイルサーバとクライアントとの間で確立されたセッションに関する状態情報を記憶するのに使用することができる。
【００４６】
[0049]動作３１０で、状態情報は、ハンドル識別子と関連付けて記憶される。状態情報は、テーブル、データベース、またはログファイルなど、任意の適切な形で記憶することができる。記憶域は、永続的であり、必要時に状態を再確立するためにファイルサーバによって利用可能である。状態情報は、ファイルサーバによって直接に記憶することができる。他の実施形態では、フロー３００は動作３１２を含み、再開フィルタを使用して状態情報が記憶される。上に示したように、ファイルサーバは、いくつかの実施形態では、再開フィルタに登録して状態情報を記憶することができる。
【００４７】
[0050]フロー３００は動作３１２から動作３１４に進み、永続的ハンドルを使用したファイルへのアクセスを許可する応答がクライアントに送られる。応答は、ファイルサーバによって応答の中で提供される、また動作３１０（および任意選択で動作３１２）で記憶された状態情報と関連付けて記憶された、ファイル識別子を含む。
【００４８】
[0051]次いで、フロー３００は動作３１６に進み、動作３１６では、任意選択でいくつかのファイルアクセス要求が受信される。ファイルアクセス要求は、永続的ハンドルに関連するファイルに対して実施するいくつかのファイル操作を含んでよい。操作は、例えば、データ読取り／書込みのためのオープン、属性の列挙、データをローカルにキャッシュするのを可能にするためのリース要求、または他のファイルアクセス操作とすることができる。動作３１６におけるファイアクセス要求の受信に関連する様々な状態を、動作３１８で更新することができる。すなわち、これらの要求がクライアントに許可されると、前の動作（３１０および３１２）で記憶された状態情報は、追加の状態情報を反映するように更新される。
【００４９】
[0052]動作３１８の後に、枠３１９内で識別されるいくつかの追加動作がある。これらの動作は、クライアントがファイルサーバから切断された結果として実施されてよい。理解できるように、動作３０２〜３１８を元々実施したファイルサーバが障害のせいで利用不可能である状況では、枠３１９内の追加動作は、フェールオーバーサーバによって実施される。障害がネットワーク問題の結果であるような他の実施形態では、枠３１９内の動作は、同じファイルサーバによって実施される。
【００５０】
[0053]動作３２０で、再接続する要求が受け取られる。要求は、ファイルサーバによって前に提供されたファイルハンドル、ならびに、クライアントが永続的ハンドルの要求時に使用したハンドル識別子を含む。動作３２０で要求を受け取ったファイルサーバは、ハンドル識別子およびファイル識別子を使用して、状態情報を検索することができる。上に示したように、この動作は、前に再開フィルタを使用して保存された状態情報を取り出すために、再開フィルタを使用することを含んでよい。
【００５１】
[0054]フロー３００は動作３２０から動作３２２に進み、状態情報を使用して、クライアントとの接続および前の状態が再確立される。動作３２２の後、フローは動作３２４に進み、新しいファイルアクセス要求が受け取られる。したがって、動作３２４はいくつかの操作を含む可能性があり、各操作は、ファイルアクセス要求をクライアントから受け取ることを含む。
【００５２】
[0055]動作３２４で受け取られる要求のいくつかは、ファイルサーバとクライアントとの間の切断の前に送られた前の要求の再実行である場合がある。この結果、これらの操作のいくつかは、ファイルサーバにおいて再適用されれば、一貫性のない状態を生み出す可能性がある。動作３２６で、再実行である新しいファイルアクセス要求が検出される。実施形態では、この動作は、前にクライアントによって提供されたハンドル識別子を使用してファイルアクセス要求を識別することを含んでよい。動作３２６で再実行が検出されると、動作３２８で、要求は適切に処理される。すなわち、再実行された操作がファイルサーバ上で一貫性のない状態を生み出すことになる場合は、前の操作がうまく実施されたならばこれらの操作を無視することができる。あるいは、前の操作がうまく実施されなかったならば、再実行された操作を適用することができる。次いで、フロー３００は３３０で終了する。
【００５３】
[0056]動作フロー４００に、一貫した可用性を維持するためのステップを示す。実施形態では、フロー４００は、共有ファイルシステム中のファイルにアクセスするためにファイルサーバと通信しているクライアント（クライアント２０２および２０４（図２）など）上のリダイレクタによって実施することができる。クライアントは、実施形態では、ＳＭＢプロトコルのバージョンまたはＮＦＳのバージョンなどのファイルアクセスプロトコルを使用してファイルサーバと通信する。
【００５４】
[0057]フロー４００は動作４０２で開始し、ファイルサーバに接続する要求が送られる。動作４０２で送られる要求は、ファイルサーバを介してアクセス可能な共有ファイルシステムに記憶されたファイル情報にアクセスするために、ファイルサーバとのセッションを確立する要求である。要求は、サーバクラスタの一部であるサーバ（例えばサーバ１、サーバ２、およびサーバ３）上のファイルサーバに送ることができる（図２）。要求は、ＳＭＢまたはＦＮＳのバージョンなどのファイルアクセスプロトコルに従ってフォーマットされる。
【００５５】
[0058]動作４０２の後、フロー４００は動作４０４に進み、セッションが確立されたことを示す応答が受け取られる。いくつかの実施形態では、動作４０２および４０４は、セッションを交渉するためにクライアントとサーバとの間で交換されるいくつかのメッセージの一部とすることができる。メッセージの交換は、ファイルサーバの永続的ハンドル提供能力を含めた能力の交換を含んでよい。
【００５６】
[0059]動作フローは動作４０４から動作４０６に進み、永続的ハンドルを求める要求が受け取られる。交渉プロセス（動作４０２および４０４）の結果として、クライアントには、ファイルサーバが永続的ハンドルを提供できることが通知されたものとすることができる。クライアント上のアプリケーションが切断および再接続の後にそれらの状態を確実に再確立させることができるようにするために、動作４０６で、クライアントは永続的ハンドルを要求することができる。要求は、クライアントによって生成されたハンドル識別子を含む。
【００５７】
[0060]フロー４００は動作４０６から動作４０８に進み、永続的ハンドルを使用したファイルへのアクセスを許可する応答が受け取られる。応答は、ファイルサーバによって応答の中で提供されるファイル識別子を含む。
【００５８】
[0061]動作４１０で、いくつかの実施形態では、状態情報をクライアントによって記憶することができる。状態情報は、ハンドル識別子と関連付けて、かつ、永続的ハンドルを許可する受信済み応答の中で提供されたファイル識別子と関連付けて記憶される。状態情報は、テーブル、データベース、またはログファイルなど、任意の適切な形で記憶することができる。記憶域は、永続的であり、必要時に状態を再確立するためにクライアントによって利用可能である。理解できるように、クライアントによって記憶される状態情報は、実施形態では、ファイルサーバ上で一貫性のない状態を生み出すことなく安全にファイルサーバに対して再実行して返すことのできる操作の状態情報である。再実行される操作は、例えば、データをローカルにキャッシュするためのリース、読取り、書込み、削除、およびメタデータ列挙とすることができる。
【００５９】
[0062]フロー４００は動作４１０から動作４１２に進み、クライアントは、いくつかのファイルアクセス要求を送る。したがって、動作４１２は、実施形態によれば、ファイル操作を実施する複数の要求を送ることを含んでよい。動作４１２の後に動作４１４が続き、クライアント上の状態情報が更新される。理解できるように、動作４１４は、何度も、すなわち動作４１２でファイルアクセス要求がクライアントによって送られる度に、行われてよい。
【００６０】
[0063]動作４１４から、フローは動作４１６に進み、切断が検出される。検出は、タイムアウト、イベント通知、または他の何らかの手段によって行われてよい。動作４１６に続き、動作４１８で、接続して前にファイルサーバと確立されたセッションを再確立する要求が送られる。要求は、前にファイルサーバによって提供されたファイルハンドル、ならびに、クライアントが永続的ハンドルの要求時に使用したハンドル識別子を含む。
【００６１】
[0064]フロー４００は動作４１８から動作４２０に進み、再接続が成功であることが判定される。動作４２０の後、フローは動作４２２に進み、クライアントに記憶された状態情報を使用して前の状態が再確立される。動作４２２は、読取り、書込み、列挙、ロックの要求、または、前の状態を再確立するための他の操作を含めた、いくつかの異なる要求を送ることを含んでよい。フローは動作４２２から動作４２４に進み、クライアントは、新しいファイルアクセス要求を送る。フローは４２６で終了する。
【００６２】
[0065]図５に、本明細書に述べる実施形態を実現するのに使用できる一般的なコンピュータシステムシステム５００を示す。コンピュータシステム５００は、コンピューティング環境の一例に過ぎず、コンピュータおよびネットワークアーキテクチャーの使用または機能の範囲に関するどんな限定を示唆するものともしない。また、コンピュータシステム５００は、この例示的なコンピュータシステム５００中に示されるコンポーネントの任意の１つまたは組合せに関係するどんな依存または要件を有するとも解釈されるべきではない。実施形態では、システム５００は、図１に関して上述したクライアントおよび／またはサーバとして使用することができる。
【００６３】
[0066]システム５００は、その最も基本的な構成では通常、少なくとも１つの処理ユニット５０２と、メモリ５０４とを備える。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ５０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリ、その他など）、またはこの２つの何らかの組合せとすることができる。この最も基本的な構成を、図５では破線５０６によって示す。実施形態では、システムメモリ５０４は、ファイル情報へのアクセスを要求するアプリケーション５２３などのアプリケーションを記憶する。システムメモリ５０４はまた、実施形態により要求をインターセプトしてこれらの要求をファイルサーバに通信するリダイレクタ５２２も備える。
【００６４】
[0067]本明細書においてコンピュータ可読媒体という用語は、コンピュータ記憶媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性および不揮発性、リムーバブルおよびノンリムーバブル媒体を含み得る。システムメモリ５０４、リムーバブル記憶装置、およびノンリムーバブル記憶装置５０８は全て、コンピュータ記憶媒体の例（すなわちメモリ記憶装置）である。実施形態では、データ、例えば状態情報５２０などが記憶される。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、電気的に消去可能な読取可能メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または、情報を記憶するのに使用できコンピューティングデバイス５００からアクセスできる他の任意の媒体を含み得るが、これらに限定されない。このようなコンピュータ記憶媒体はどれも、デバイス５００の一部となり得る。コンピューティングデバイス５００はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの、入力デバイス（複数可）５１４を有することができる。表示装置、スピーカー、プリンターなどの、出力デバイス（複数可）５１６も備わってよい。前述のデバイスは例であり、他のデバイスが使用されてもよい。
【００６５】
[0068]本明細書においてコンピュータ可読媒体という用語はまた、通信媒体を含み得る。通信媒体は、搬送波や他のトランスポート機構などの被変調データ信号中の、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって具体化することができ、任意の情報送達媒体を含む。用語「被変調データ信号」は、信号中の情報を符号化するようにして１つまたは複数の特性が設定または変更される信号を記述することができる。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数（ＲＦ）、赤外線および他のワイヤレス媒体などのワイヤレス媒体とを含み得る。
【００６６】
[0069]本明細書の全体を通して、「一実施形態」または「実施形態」に言及したが、これらは、述べた特定の特徴、構造、または特性が、少なくとも１つの実施形態に含まれることを意味する。したがって、このような句の使用は、１つだけでなく複数の実施形態に言及することができる。さらに、述べた特徴、構造、または特性は、１つまたは複数の実施形態で、任意の適切な方式で組み合わせることができる。
【００６７】
[0070]しかし、具体的詳細の１つもしくは複数がなくても、または、他の方法、リソース、材料などと共に、実施形態を実践できることを、当業者なら認識するであろう。他の場合では、周知の構造、リソース、または動作については詳細に図示または記述していないが、これは単に、実施形態の態様を曖昧にするのを避けるためである。
【００６８】
[0071]例示的な実施形態および適用例を図示および記述したが、実施形態は前述の正確な構成およびリソースに限定されないことを理解されたい。特許請求される実施形態の範囲を逸脱することなく、当業者に明らかな様々な修正、変更、および変形を、本明細書に開示する方法およびシステムの構成、動作、および詳細に加えることができる。
【図１】
0005974086.tif 000002
【図２】
0005974086.tif 000003
【図３】
0005974086.tif 000004
【図４】
0005974086.tif 000005
【図５】
0005974086.tif 000006