(57)【特許請求の範囲】
【請求項１】
互いに協調して動作する複数のファイルサーバを有し、前記複数のファイルサーバそれぞれのローカルファイルシステムを１つの仮想ファイルシステムとしてクライアントに提供するファイルサーバシステムにおいて、
前記各ファイルサーバは、
ディレクトリ名から当該ディレクトリに対応する管理情報を参照するためのルックアップ操作要求をクライアントから受けた際、自ファイルサーバ上に構築されている、前記複数のファイルサーバそれぞれのローカルファイルシステムの要素と前記仮想ファイルシステムのディレクトリツリーの要素との対応関係を示す対応付け情報を参照し、前記ルックアップ操作要求で指定されたディレクトリが前記対応付け情報で管理されている場合、前記対応付け情報に基づいて前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を前記クライアントに提供する手段と、
前記ルックアップ操作要求で指定されたディレクトリが前記対応付け情報で管理されていない場合、前記自ファイルサーバのローカルファイルシステムから前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を取得するためのルックアップ操作を実行すると共に、前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を他の各ファイルサーバに問い合わせるルックアップ操作手段と、
前記ルックアップ操作手段によって得られた管理情報を前記クライアントに提供する手段と、
前記ルックアップ操作手段によって得られた管理情報を前記対応付け情報に反映することによって前記対応付け情報を構築する手段と、
前記ルックアップ操作手段による前記問い合わせ結果に基づき、前記自ファイルサーバのローカルファイルシステムに存在するディレクトリツリーを補完する補完手段であって、前記ルックアップ操作要求で指定されたディレクトリに関する管理情報が前記自ファイルサーバのローカルファイルシステムから取得されず、且つ前記問い合わせによって他のファイルサーバから取得された場合、当該ディレクトリを前記自ファイルサーバのローカルファイルシステムに新規作成する手段を含む補完手段とを具備することを特徴とするファイルサーバシステム。
【請求項２】
前記補完手段は、
前記ルックアップ操作要求で指定されたディレクトリの管理情報が前記自ファイルサーバのローカルファイルシステムおよび前記他のファイルサーバからそれぞれ取得されたとき、それらディレクトリの更新日時を比較することによって最新のディレクトリを決定する手段と、
前記他のファイルサーバから取得されたディレクトリが最新である場合、前記自ファイルサーバのローカルファイルシステム上に存在する当該ディレクトリの属性値を、前記他のファイルサーバから取得されたディレクトリの属性値に更新する手段とを含み、
前記対応付け情報を構築する手段は、
前記属性値が変更されたディレクトリに関する情報を前記対応付け情報に反映させる手段を含むことを特徴とする請求項１記載のファイルサーバシステム。
【請求項３】
前記クライアントからのルックアップ操作要求の受付は、前記複数のファイルサーバの中で現在マスタとして機能しているファイルサーバによって行われ、
前記ファイルサーバシステムは、前記複数のファイルサーバ間の協調動作によって前記マスタとして機能するファイルサーバが前記複数のファイルサーバ間で動的に変更されるように構成されていることを特徴とする請求項１記載のファイルサーバシステム。
【請求項４】
複数のファイルサーバそれぞれのローカルファイルシステムを１つの仮想ファイルシステムとしてクライアントに提供するファイルサーバシステムを制御するための制御方法であって、
前記各ファイルサーバは、
ディレクトリ名から当該ディレクトリに対応する管理情報を参照するためのルックアップ操作要求をクライアントから受けた際、自ファイルサーバ上に構築されている、前記複数のファイルサーバそれぞれのローカルファイルシステムの要素と前記仮想ファイルシステムのディレクトリツリーの要素との対応関係を示す対応付け情報を参照し、前記ルックアップ操作要求で指定されたディレクトリが前記対応付け情報で管理されている場合、前記対応付け情報に基づいて前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を前記クライアントに提供するステップと、
前記ルックアップ操作要求で指定されたディレクトリが前記対応付け情報で管理されていない場合、前記自ファイルサーバのローカルファイルシステムから前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を取得するためのルックアップ操作を実行すると共に、前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を他の各ファイルサーバに問い合わせるルックアップ操作ステップと、
前記ルックアップ操作ステップによって得られた管理情報を前記クライアントに提供するステップと、
前記ルックアップ操作ステップによって得られた管理情報を前記対応付け情報に反映することによって前記対応付け情報を構築するステップと、
前記ルックアップ操作手段による前記問い合わせ結果に基づき、前記自ファイルサーバのローカルファイルシステムに存在するディレクトリツリーを補完する補完ステップであって、前記ルックアップ操作要求で指定されたディレクトリに関する管理情報が前記自ファイルサーバのローカルファイルシステムから取得されず、且つ前記問い合わせによって他のファイルサーバから取得された場合、当該ディレクトリを前記自ファイルサーバのローカルファイルシステムに新規作成する手段を含む補完ステップとを具備することを特徴とする制御方法。
【請求項５】
前記補完ステップは、
前記ルックアップ操作要求で指定されたディレクトリの管理情報が前記自ファイルサーバのローカルファイルシステムおよび前記他のファイルサーバからそれぞれ取得されたとき、それらディレクトリの更新日時を比較することによって最新のディレクトリを決定するステップと、
前記他のファイルサーバから取得されたディレクトリが最新である場合、前記自ファイルサーバのローカルファイルシステム上に存在する当該ディレクトリの属性値を、前記他のファイルサーバから取得されたディレクトリの属性値に更新するステップとを含み、
前記対応付け情報を構築するステップは、
前記属性値が変更されたディレクトリに関する情報を前記対応付け情報に反映させるステップを含むことを特徴とする請求項４記載の制御方法。
【請求項６】
前記クライアントからのルックアップ操作要求の受付は、前記複数のファイルサーバの中で現在マスタとして機能しているファイルサーバによって行われ、
前記ファイルサーバシステムは、前記複数のファイルサーバ間の協調動作によって前記マスタとして機能するファイルサーバが前記複数のファイルサーバ間で動的に変更されるように構成されていることを特徴とする請求項４記載の制御方法。
【請求項７】
複数のファイルサーバそれぞれのローカルファイルシステムを１つの仮想ファイルシステムとしてクライアントに提供するファイルサーバシステムを構成する前記各ファイルサーバによって実行されるコンピュータプログラムであって、
ディレクトリ名から当該ディレクトリに対応する管理情報を参照するためのルックアップ操作要求をクライアントから受けた際、自ファイルサーバ上に構築されている、前記複数のファイルサーバそれぞれのローカルファイルシステムの要素と前記仮想ファイルシステムのディレクトリツリーの要素との対応関係を示す対応付け情報を参照し、前記ルックアップ操作要求で指定されたディレクトリが前記対応付け情報で管理されている場合、前記対応付け情報に基づいて前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を前記クライアントに提供する手順と、
前記ルックアップ操作要求で指定されたディレクトリが前記対応付け情報で管理されていない場合、前記自ファイルサーバのローカルファイルシステムから前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を取得するためのルックアップ操作を実行すると共に、前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を他の各ファイルサーバに問い合わせるルックアップ操作手順と、
前記ルックアップ操作手段によって得られた管理情報を前記クライアントに提供する手順と、
前記ルックアップ操作手順によって得られた管理情報を前記対応付け情報に反映することによって前記対応付け情報を構築する手順と、
前記ルックアップ操作手段による前記問い合わせ結果に基づき、前記自ファイルサーバのローカルファイルシステムに存在するディレクトリツリーを補完する補完手順であって、前記ルックアップ操作要求で指定されたディレクトリに関する管理情報が前記自ファイルサーバのローカルファイルシステムから取得されず、且つ前記問い合わせによって他のファイルサーバから取得された場合、当該ディレクトリを前記自ファイルサーバのローカルファイルシステムに新規作成する手段を含む補完手順とを前記各ファイルサーバに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は仮想ファイルシステムを提供するためのファイルサーバシステムおよびその制御方法に関する。
【０００２】
【従来の技術】
近年、分散ファイルシステムに代表されるように、複数のサーバにデータを分散して記憶するシステムが開発されている。このような分散ファイルシステムにはいくつかの実現方法あり、それは集中管理方式と分散管理方式とに大別される。
【０００３】
集中管理方式は、例えば特開平１０−３４２１号公報にも記載されているように、分散ファイルシステムのすべてのデータの所在を一つの管理サーバにて一元管理する方法である。一方、分散管理方式は複数のサーバそれぞれに管理情報を持たせる方式である。
【０００４】
前者は制御が簡単である反面、管理サーバにクライアントからのアクセスが集中することになるため、その管理サーバがボトルネックとなって十分なシステム性能を期待することができない。また、もしも管理サーバに障害が発生すると、全ての管理情報が失われてしまい、これによってシステムのサービスが停止されてしまうことになる。
【０００５】
これに対し、後者の方法は、複数のサーバそれぞれに管理情報が配置されているので、アクセスの集中が無くなり、また同一データのコピーを複数のサーバで持ち合うことで耐障害性を向上させることができる。しかし、管理情報およびデータに関する一貫性保持のための特別な仕組みを実装することが必要となり、特に、あるファイルサーバが故障したときや、新たに追加されたファイルサーバへのデータや管理情報の設定などを考慮すると、大規模な分散データベースシステムで使用されているような、チェックポイント、トランザクションのログ管理、ロールフォーワード等といった複雑な障害回復制御が必要とされることになる。
【０００６】
【発明が解決しようとする課題】
ところで、最近ではオフィス等においてもネットワーク化が進められているので、低コストで且つ十分な性能を持つ分散ファイルシステムの開発が必要とされている。もちろん、この場合でもシステムの可用性を犠牲にすることはできず、システムを停止することなく、サーバの故障やサーバの動的な追加等に柔軟に対応できるようにすることが要求される。
【０００７】
本発明は上述の事情を考慮してなされたものであり、一貫性保持のための複雑な制御を用いることなく、しかもサーバの故障やサーバの動的な追加等にも柔軟に対応することが可能な高可用性のファイルサーバシステムおよびその制御方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、互いに協調して動作する複数のファイルサーバを有し、前記複数のファイルサーバそれぞれのローカルファイルシステムを１つの仮想ファイルシステムとしてクライアントに提供するファイルサーバシステムにおいて、前記各ファイルサーバは、ディレクトリ名から当該ディレクトリに対応する管理情報を参照するためのルックアップ操作要求をクライアントから受けた際、自ファイルサーバ上に構築されている、前記複数のファイルサーバそれぞれのローカルファイルシステムの要素と前記仮想ファイルシステムのディレクトリツリーの要素との対応関係を示す対応付け情報を参照し、前記ルックアップ操作要求で指定されたディレクトリが前記対応付け情報で管理されている場合、前記対応付け情報に基づいて前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を前記クライアントに提供する手段と、前記ルックアップ操作要求で指定されたディレクトリが前記対応付け情報で管理されていない場合、前記自ファイルサーバのローカルファイルシステムから前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を取得するためのルックアップ操作を実行すると共に、前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を他の各ファイルサーバに問い合わせるルックアップ操作手段と、前記ルックアップ操作手段によって得られた管理情報を前記クライアントに提供する手段と、前記ルックアップ操作手段によって得られた管理情報を前記対応付け情報に反映することによって前記対応付け情報を構築する手段と、前記ルックアップ操作手段による前記問い合わせ結果に基づき、前記自ファイルサーバのローカルファイルシステムに存在するディレクトリツリーを補完する補完手段であって、前記ルックアップ操作要求で指定されたディレクトリに関する管理情報が前記自ファイルサーバのローカルファイルシステムから取得されず、且つ前記問い合わせによって他のファイルサーバから取得された場合、当該ディレクトリを前記自ファイルサーバのローカルファイルシステムに新規作成する手段を含む補完手段とを具備することを特徴とする。
【０００９】
このファイルサーバシステムにおいては、あるファイルサーバがクライアントからのルックアップ操作要求を受け付けると、そのファイルサーバは、自ファイルサーバ上に構築されている対応付け情報でルックアップ操作要求で指定されたディレクトリが管理されている場合は、対応付け情報に基づいて前記ルックアップ操作要求で指定されたディレクトリに関する管理情報を前記クライアントに提供し、また管理されていない場合には、ルックアップ操作要求で指定されたディレクトリに関する管理情報を取得するためのルックアップ操作を自身のローカルファイルシステムに対して実行するのみならず、そのルックアップ操作要求で指定されたディレクトリに関する管理情報を他の各ファイルサーバに問い合わせる。これにより、自身のローカルファイルシステムの内容が障害等によって不十分な状態であっても、ルックアップ操作という通常のファイルシステムに設けられた一般的な操作のみで、必要な情報を他のファイルサーバから取得することが出来る。また、クライアントからのルックアップ操作要求を受け付けたファイルサーバについては、オンデマンドでそのローカルファイルシステムのディレクトリツリーが自動的に補完（ディレクトリの追加、変更等）されていく。よって、ディレクトリツリーを変更中にあるファイルサーバが故障した場合や、空のローカルファイルシステムを持つファイルサーバが、互いに協調しているファイルサーバのグループに新たに追加されたときなどのように、いずれかのファイルサーバのローカルファイルシステムのディレクトリツリーが不完全な状態となっても、そのファイルサーバがクライアントからのルックアップ操作要求を受け付けるたびにオンデマンドで必要な環境がそのローカルファイルシステムに構築されるので、分散データベース等で用いられるロールフォワード等の複雑な方法を用いず、クライアントからファイルサーバへディレクトリのルックアップ操作が行われたときに、オンデマンドで補完するという単純な方法で、仮想ファイルシステムのディレクトリツリーをローカルファイルシステムに保持することができ、またシステムを停止することなしにサービスを継続して行うことが可能となる。また、ルックアップ操作手段によって得られた管理情報を対応付け情報に反映することで、対応付け情報も自動的に構築される。これにより、ルックアップ操作要求に対して即座に応答することが可能となると共に、障害によって対応付け情報が消失された場合でもその後のシステム運用に伴って徐々に対応付け情報を回復することが出来る。また、新たなファイルサーバを追加した場合でも、そのファイルサーバに予め対応付け情報をコピーするなどの処理は不要となる。
【００１２】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図１には、本発明の一実施形態に係るファイルサーバシステムの構成が示されている。このファイルサーバシステムは複数のファイルサーバ２１，２２，…から構成される分散システムであり、複数のファイルサーバ２１，２２，…それぞれのローカルファイルシステムの内容を一つの仮想ファイルシステムとして各クライアント端末１１（ただし、図１には１台のみ記載）に提供する。
【００１３】
複数のファイルサーバ２１，２２，…の各々は、ファイルサーバシステムを構成する他のファイルサーバの存在を互いに認識しており、例えばＬＡＮ，ＷＡＮなどのネットワーク１０を介してメッセージ交換などを行うことにより、互いに他のフィルサーバと協調して動作する。
【００１４】
ファイルサーバ２１，２２，…の各々には同一の機能が搭載されており、どのファイルサーバもクライアント端末１１からの要求の受付けおよび処理をすることが出来るが、本例では、ファイルサーバ２１，２２，…の内の予め決められた１台を、クライアント端末１１からの要求の受け付けおよび処理を行うマスタとして使用する場合を想定する。この場合、マスタは固定ではなく、例えばマスタに障害が発生した場合やマスタの負荷状況、あるいは他の条件によって、マスタの機能を別のファイルサーバに動的に変更することができる。現在マスタとして動作しているファイルサーバの障害発生や負荷状況などは、例えばメッセージの受け渡し等によって複数のファイルサーバ２１，２２，…が互いに相手の動作状態を監視することによって、他のファイルサーバが検知することが出来る。もちろん、障害発生等に関係なく、予め決められた順番でファイルサーバ２１，２２，…間でサイクリックにマスタを変更してもよい。また、全てのファイルサーバ２１，２２，…がネットワーク１上のパケットを監視し、クライアント端末１１からのパケットに最初に応答したファイルサーバがマスタとして機能するといった制御を用いることもできる。
【００１５】
さらに、複数のサイトにファイルサーバ２１，２２，…が分散配置されている場合等には、複数のファイルサーバ２１，２２，…それぞれが、そのサイトにおけるマスタとして動作し、当該サイトに対して要求を発行したクライアントからの要求を受付け・処理するようにしてもよい。
【００１６】
いずれの場合も、複数のファイルサーバ２１，２２，…の各々に仮想ファイルシステムの全ての情報を持たせる必要はなく、ファイルサーバ２１，２２，…それぞれのローカルファイルシステム全体で１つの仮想ファイルシステムを構成すればよい。
【００１７】
この場合、仮想ファイルシステムで管理されるデータの実体であるファイルについてはファイルサーバ２１，２２，…に分散配置されており、同一ファイルを複数のファイルサーバで持ち合うことはない。これにより、ファイルサーバ２１，２２，…それぞれのローカルファイルシステムの記憶資源を効率よく利用することが出来る。
【００１８】
また、ファイルサーバ２１，２２，…それぞれのローカルファイルシステムには、そこに分散配置されているファイルを格納するためのディレクトリが少なくとも存在する。この場合、マスタについては、クライアント端末１１からディレクトリ情報に関するルックアップ操作要求があったときに最新のディレクトリ情報を他のファイルサーバから取得するので、マスタのローカルファイルシステムには、自身のローカルファイルシステムに存在するファイルに関係するディレクトリのみならず、仮想ファイルシステム内の全てのディレクトリツリーが徐々に構築されていくことになる。よって、例えばマスタ以外の他のファイルサーバのローカルファイルシステムのディレクトリが障害によって不完全な状態となった場合でも、マスタが管理している情報によってそれを復元したり、また新たに追加されたファイルサーバ等に対して、マスタ機能を容易に引き継がせることなどが可能となる。さらに、マスタ以外の他の各ファイルサーバも少なくも自身のローカルファイルシステムの情報については管理しているので、マスタに障害が発生しても全ての管理情報が失われる危険はない。
【００１９】
このように、本実施形態のファイルサーバシステムでは、いずれかのファイルサーバのローカルファイルシステムのディレクトリツリーが障害等によって不完全な状態となった場合には、そのディレクトリツリーの情報を他のファイルサーバのローカルファイルシステムの内容から補完（ディレクトリの追加、変更等）するという制御が用いられる。この補完は、クライアント端末１１から当該ディレクトリに関する要求が発行されたときに自動的に実行される。また、このようなオンデマンド方式の補完制御の信頼性をより高めるため、本実施形態では、あるファイルサーバのローカルファイルシステムに対してディレクトリの作成・変更等を行った場合には、そのディレクトリの作成・変更を他の各ファイルサーバのローカルファイルシステムにも自動的に反映する処理が行われる。
【００２０】
（ファイルサーバの構成）
次に、ファイルサーバ２１，２２，…それぞれの機能構成について説明する。
【００２１】
ファイルサーバ２１（ファイルサーバ＃１）には、図示のように、リクエスト受信部２１１、リクエスト解析・実行手順部２１２、ファイルシステム２１３、ローカルファイルシステム２１４、およびディスクシステム２１５が設けられている。
【００２２】
クライアント端末１１からのルックアップ操作要求などはリクエスト受信部２１を介してリクエスト解析・実行手順部２１２に送られ、そこで受付および処理される。ここでルックアップ操作要求とは、ディレクトリ名またはファイル名からファイルシステムが管理するそのディレクトリまたはファイルに対応する管理情報を求める要求である。このルックアップ操作要求によって実行される操作がルックアップ操作と呼ばれるものであり、これは通常のファイルシステムに一般的に備わっている操作手順である。
【００２３】
リクエスト解析・実行手順部２１２は、例えばＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等のネットワークファイルシステムにおけるサーバ機能部に相当する。このリクエスト解析・実行手順部２１２は、クライアント端末１１からのファイルアクセス要求（ルックアップ操作要求）をリクエスト受信部２１１から受け、それを解析することにより実行すべきルックアップ操作を決定して、ファイルシステム２１３に指示する。ファイルシステム２１３は仮想ファイルシステムを提供するための主機能部であり、ローカルファイルシステム２１４を通じてディスクシステム２１５をアクセスしたり、他の各ファイルサーバに対する問い合わせなどを行う。ディスクシステム２１５には、ローカルファイルシステム２１４によって管理されているディレクトリツリー（ディレクトリ、ファイル、およびそれらの管理情報等）が保存されている。
【００２４】
ファイルシステム２１３には、図示のように、仮想ファイルシステム操作部３０１、対応付け情報３０２、操作実行手順部３０３、および操作要求手順部３０４が設けられている。仮想ファイルシステム操作部３０１は、対応付け情報３０２の構築操作を初め、他のファイルサーバに存在するファイルシステムに対して操作を要求したり、他のファイルサーバに存在するファイルシステムからの要求を処理する等の手順を体系化したものであり、図示のように、第１および第２のルックアップ操作手順部（＃１，＃２）３１１，３１２、第１および第２のディレクトリ作成手順部（＃１，＃２）３１３，３１４等から構成されている。
【００２５】
第１のルックアップ操作手順部（＃１）３１１はクライアント端末１１からのルックアップ操作要求を処理するための操作手順であり、また第２のルックアップ操作手順部（＃１）３１１は他のファイルサーバからのルックアップ操作の問い合わせを処理するための操作手順である。第１のディレクトリ作成手順部（＃１）３１３はクライアント端末１１からのディレクトリ作成要求を処理するための操作手順であり、また第２のディレクトリ作成手順部（＃２）３１４は他のファイルサーバからのディレクトリ作成要求を処理するための操作手順である。
【００２６】
対応付け情報３０２は、仮想ファイルシステムのディレクトリツリーの各要素（ディレクトリ、ファイル）と各ファイルサーバ２１，２１，…それぞれのローカルファイルシステムのディレクトリツリーの各要素（ディレクトリ、ファイル）との対応関係を示す。この対応付け情報３０２により、仮想ファイルシステム上のどのディレクトリおよびファイルがどのファイルサーバに存在するかが管理され、ファイルサーバ２１，２２，…それぞれのローカルファイルシステムの内容が仮想ファイルシステムのディレクトリツリーに対応付けられることになる。対応付け情報３０２は、ファイルサーバ２１のメモリ上に保持されている。
【００２７】
操作実行手順部３０３は仮想ファイルシステム操作部３０１の機能を用いて他のファイルサーバからの要求を実行する。また操作要求手順部３０４は仮想ファイルシステム操作部３０１から他のファイルサーバへの要求を受付け、それを他のファイルサーバへ送る。
【００２８】
ファイルサーバ２１以外の他のファイルサーバ２２，…についても上述のファイルサーバ２１と同様の機能を有しており、例えばファイルサーバ２２には、図示のように、リクエスト受信部４１１、リクエスト解析・実行手順部４１２、ファイルシステム４１３、ローカルファイルシステム４１４、およびディスクシステム４１５が設けられている。これらリクエスト受信部４１１、リクエスト解析・実行手順部４１２、ファイルシステム４１３、ローカルファイルシステム４１４、およびディスクシステム４１５は、それぞれ上述したリクエスト受信部２１１、リクエスト解析・実行手順部２１２、ファイルシステム２１３、ローカルファイルシステム２１４、およびディスクシステム２１５にそれぞれ相当する。また、ファイルシステム４１３に設けられた仮想ファイルシステム操作部５０１、対応付け情報５０２、操作実行手順部５０３、操作要求手順部５０４は、ファイルサーバ２１における仮想ファイルシステム操作部３０１、対応付け情報３０２、操作実行手順部３０３、操作要求手順部３０４にそれぞれ相当する。
【００２９】
さらに、仮想ファイルシステム操作部５０１に設けられている第１および第２のルックアップ操作手順部（＃１，＃２）５１１，５１２、第１および第２のディレクトリ作成手順部（＃１，＃２）５１３，５１４も、上述したファイルサーバ２１における第１および第２のルックアップ操作手順部（＃１，＃２）３１１，３１２、第１および第２のディレクトリ作成手順部（＃１，＃２）３１３，３１４にそれぞれ相当する。
【００３０】
（仮想ファイルシステム）
次に、本実施形態で実現される仮想ファイルシステムについて説明する。
【００３１】
図２には、ファイルサーバ（＃１，＃２）２１，２２それぞれのローカルファイルシステム２１４，４１４で管理されるディレクトリツリーの各要素と仮想ファイルシステムのディレクトリツリーの各要素との関係の一例が示されている。
【００３２】
ここでは、ファイルサーバ（＃１）２１のローカルファイルシステム２１４には、ルートディレクトリ“／”の直下にディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＸ”とが存在しており、またファイルサーバ（＃２）２２のローカルファイルシステム４１４には、ルートディレクトリ“／”の直下にディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＹ”が存在している場合を想定している。
【００３３】
この場合、各クライアント端末１１に提供される仮想ファイルシステムのディレクトリツリーは、図示のように、ファイルサーバ（＃１）２１およびファイルサーバ（＃２）２２それぞれのローカルファイルシステム２１４，４１５をマージしたものとなり、これは、図示のように、ルートディレクトリ“／”と、その直下に存在するディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＸ”，“ｆｉｌｅＹ”とから構成される。
【００３４】
マスタとして機能しているファイルサーバの対応付け情報には、このようなファイルサーバ（＃１，＃２）２１，２２それぞれのローカルファイルシステム２１４，４１４のディレクトリツリーの各要素と仮想ファイルシステムのディレクトリツリーの各要素との対応関係が管理されることになる。
【００３５】
今、ファイルサーバ（＃１）２１がマスタであると想定すると、そのファイルサーバ（＃１）２１で管理される対応付け情報３０２の内容は図３のようになる。
【００３６】
図示のように、対応付け情報３０２には、仮想ファイルシステムを構成するディレクトリツリーの各要素について、その種類（ディレクトリ／ファイル）、アクセス権限を示すパーミッション情報、名前（ディレクトリ名／ファイル名）、その要素が存在しているサーバ名、変更日時、および下位階層のディレクトリ名やファイル名を示す下位エントリが管理される。ルートディレクトリ“／”、ディレクトリ“ｄｉｒＡ”、ファイル“ｆｉｌｅＸ”についてはファイルサーバ（＃１）２１のローカルファイルシステム２１４に存在しているので、それらの位置は自サーバ（ファイルサーバ２１）となっている。また、ファイル“ｆｉｌｅＹ”についてはファイルサーバ（＃２）２２にのみ存在しているので、その位置はファイルサーバ＃２（ファイルサーバ２２）となっている。
【００３７】
また、ファイルサーバ（＃２）２２についても、少なくともそのローカルファイルシステム４１４に存在するディレクトリやファイルについては対応付け情報５０２で管理されている。ファイルサーバ（＃２）２２のローカルファイルシステム４１４には、ルートディレクトリ“／”、ディレクトリ“ｄｉｒＡ”、ファイル“ｆｉｌｅＹ”が存在するので、それらの位置は自サーバ（ファイルサーバ２２）となる。また、もしファイルサーバ（＃２）２２がマスタとして機能する場合には、ファイルサーバ（＃１）２１のみに存在するファイル“ｆｉｌｅＸ”についても対応付け情報５０２で管理され、その位置はファイルサーバ＃１（ファイルサーバ２１）となる。
【００３８】
（ルックアップ操作）
次に、図４を参照して、クライアント端末１１からディレクトリまたはファイルのルックアップ操作要求を受け付けたファイルサーバ（マスタ）によって実行されるルックアップ操作の原理について説明する。
【００３９】
図４には、本ファイルサーバシステムが３台のファイルサーバ２１，２２，２３によって実現されており、第１のファイルサーバ（＃１）２１がマスタとして動作する場合を示している。今、図示のように、ファイルサーバ（＃１）２１のローカルファイルシステムのディレクトリツリーがルートディレクトリ“／”とその直下のディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＸ”とから構成されており、また、ファイルサーバ（＃２）２２のローカルファイルシステムのディレクトリツリーがルートディレクトリ“／”とその直下のディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＹ”とから構成され、ファイルサーバ（＃３）２３のローカルファイルシステムのディレクトリツリーがルートディレクトリ“／”とその直下のディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＺ”とから構成されているとする。
【００４０】
ファイルサーバ（＃１）２１は、通常は、クライアント端末１１からのルックアップ操作要求で要求されたディレクトリやファイルの管理情報の提供や、要求されたファイルが存在するファイルサーバから当該ファイルを取得して提供するといったファイルアクセスに関するサービスを、前述の対応付け情報３０２を用いて行うが、対応付け情報３０２に該当するディレクトリやファイルが存在しない場合には、以下のようなルックアップ操作を実行する。
【００４１】
例えば、ルートディレクトリ“／”の直下の管理情報を要求するルックアップ操作要求をクライアント端末１１から受けると、ファイルサーバ（＃１）２１は、ルックアップ操作要求で指定されたディレクトリ／ファイルに関する管理情報を自ファイルサーバ２１のローカルファイルシステム２１４から取得するためのルックアップ操作を実行すると共に、他の各ファイルサーバ２２，２３に対してルックアップ操作要求で指定されたディレクトリに関する管理情報を問い合わる。これにより、ファイルサーバ（＃１）２１は、各ファイルサーバ２１，２２，２３それぞれの現在のローカルファイルシステムの内容を認識し、その認識結果に基づいて、自身のローカルファイルシステムにおけるディレクトリツリーの補完、および対応付け情報３０２の形成を行う。そして、ルートディレクトリ“／”の直下にディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＸ”，“ｆｉｌｅＹ”，“ｆｉｌｅＺ”が存在すること、さらには各要素のパーミッション情報や更新日時などを、ルックアップ操作要求に対する応答としてクライアント端末１１に返す。
【００４２】
このように、マスタとして機能するファイルサーバ（＃１）２１においては、ルックアップ操作要求を処理するたびに、自身のローカルファイルシステムに存在するディレクトリやファイルのみならず、他のファイルサーバ２２，２３にのみ存在するディレクトリやファイルに関する情報についても対応付け情報３０２として形成されていく。
【００４３】
（対応付け情報の形成処理）
ここで、通常動作時に対応付け情報がどのように構築されていくかについて具体的に説明する。
【００４４】
ここでは、簡単のために本ファイルサーバシステムがファイルサーバ（＃１）２１とファイルサーバ（＃２）２２の２台によって構成されている場合を想定する。また例として、上述の場合と同様に、ファイルサーバ（＃１）２１のローカルファイルシステム２１４にはルートディレクトリ“／”とディレクトリ“ｄｉｒＡ”、ファイル“ｆｉｌｅＸ”とが存在するとし、ファイルサーバ（＃２）２２のローカルファイルシステムにはルートディレクトリ“／”とディレクトリ“ｄｉｒＡ”、ファイル“ｆｉｌｅＹ”とが存在するとする。また、ファイルサーバ２１，２２それぞれの対応付け情報３０２，５０２には、ルートディレクトリ“／”に関する情報だけが存在しているものとする。
【００４５】
クライアント端末１１のユーザが仮想ファイルシステムのルートディレクトリ“／”下の各エントリの情報を得ようとして、例えば“ｄｉｒ”等のコマンド操作を実行すると、それを示すルックアップ操作要求がクライアント端末１１から発行される。このルックアップ操作要求は、現在マスタとして機能しているファイルサーバ（ここではファイルサーバ（＃１）２１）のリクエスト解析・実行手順部２１２にて受け付けられる。そして、ファイルシステム２１３の制御の下、そのローカルファイルシステム２１４を通じてディスクシステム２１５の内容を参照するルックアップ操作が実行されると共に、ファイルサーバ（＃２）２２のファイルシステム４１３に対してルックアップ操作を実行させるための問い合わせが発行される。
【００４６】
これにより、自ファイルサーバ（＃１）２１のローカルファイルシステム２１４からはルートディレクトリ“／”の直下に存在するディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＸ”に関する情報が得られ、またファイルサーバ（＃２）２２のファイルシステム４１３からは、そのルートディレクトリ“／”直下に存在するディレクトリ“ｄｉｒＡ”とファイル“ｆｉｌｅＹ”に関する情報が得られる。これら情報を基にファイルシステム２１３では対応付け情報３０２の形成が行われ、図３で説明した様な構成の対応付け情報３０２が構築される。そして、ファイルシステム２１３は、対応付け情報３０２に基づいて仮想ファイルシステムのルートディレクトリ“／”直下の各エントリの情報を認識し、それをリクエスト解析・実行手順部２１２を通じて要求元のクライアント端末１１に返す。
【００４７】
なお、このような他のファイルサーバへの問い合わせ等の処理は、前述したように、クライアント端末１１からのルックアップ操作要求で要求されたディレクトリの情報が対応付け情報３０２に存在しない場合にのみ行えばよい。つまり、クライアント端末１１からのルックアップ操作要求で要求されたエントリの情報が対応付け情報３０２に存在する場合には、マスタは、その対応付け情報３０２からルックアップ操作要求で要求されたエントリのディレクトリ／ファイルに関する情報を認識して、それを即座にクライアント端末１１に返却することが出来る。
【００４８】
また、他のファイルサーバへの問い合わせによってファイルサーバ（＃１）２１のローカルファイルシステム２１４には存在しない新たなディレクトリに関する情報が得られた場合には、ファイルサーバ（＃１）２１のローカルファイルシステム２１４に当該ディレクトリを作成するといったローカルファイルの補完処理も自動的に行われる。
【００４９】
（障害対策）
以上のように、本ファイルサーバシステムにおいては、クライアント端末１１からのルックアップ操作要求を受け付けたファイルサーバ（マスタ）は、自身のローカルファイルシステムを参照するのみならず、他のファイルサーバに対しても問い合わせを発行し、その問い合わせ結果をもとに、自身のローカルファイルシステムにおけるディレクトリツリーの補完を行い、同時にその部分に対応するディレクトリの対応付け情報を構築していくという仕組みが用いられている。よって、一貫性保持のための特別な制御無しで、十分な可用性を実現することが出来る。
【００５０】
以下、図５を参照して、障害回復に関わる処理について具体例を挙げて説明する。
【００５１】
＜ケース１＞
ケース１は、例えばファイルサーバ（＃１，＃２）２１，２２それぞれのローカルファイルシステム２１４，４１４にディレクトリ“ｄｉｒＢ”を作成する操作処理の実行中に、ファイルサーバ（＃１）２１に何らかの障害が発生し、これによりディレクトリ“ｄｉｒＢ”がファイルサーバ（＃１）２１には作成されず、ファイルサーバ（＃２）２２にのみ作成された場合を示している。このような状況は例えば次のような場合に発生する。
【００５２】
ファイルサーバ（＃１，＃２）２１，２２それぞれのローカルファイルシステム２１４，４１４に、既にルートディレクトリ“／”と、ディレクトリ“ｄｉｒＡ”が存在していたとする。例えばファイルサーバ（＃２）２２がマスタとして動作し、クライアント端末１１からのディレクトリ“ｄｉｒＢ”の作成要求を受け付ける。この場合、ファイルサーバ（＃２）２２は自身のローカルファイルシステム４１４にディレクトリ“ｄｉｒＢ”を作成した後、ファイルサーバ（＃１）２１にディレクトリ“ｄｉｒＢ”の作成を要求する。このとき、もしファイルサーバ（＃１）２１に何らかの障害が発生すると、ファイルサーバ（＃１）２１のローカルファイルシステム２１４にはディレクトリ“ｄｉｒＢ”は作成されない。
【００５３】
ファイルサーバ（＃１）２１に故障が起きた後、ファイルサーバ（＃１）２１が再起動により無事に起動したとする。ファイルサーバ（＃１）２１の対応付け情報３０２はそのメモリ上にあるので、既に失われている。これがケース１の状況である。
【００５４】
ここで、ファイルサーバ（＃２）２２においても、例えばディレクトリ“ｄｉｒＢ”の作成要求に対する応答がファイルサーバ（＃１）２１から得られなかった等の要因により、対応付け情報５０２が不完全なものであると認識し、その解放を行う。対応付け情報５０２を解放するのは誤った管理情報等がクライアント端末１１に提供されるのを未然に防止するためである。これによって、ファイルサーバ（＃１，＃２）２１，２２は共に対応付け情報を持たない状態となる。
【００５５】
ファイルサーバ（＃２）２２のローカルファイルシステム４１４のディレクトリツリーは完全であるが、ファイルサーバ（＃１）２１のローカルファイルシステム２１４は不完全な状態となっている。これを本実施形態ではルックアップ操作時に回復する。
【００５６】
クライアント端末１１からのルックアップ操作要求によってルートディレクトリ“／”の直下のディレクトリ情報、またはディレクトリ“ｄｉｒＢ”に関するディレクトリ情報が要求され、その要求がファイルサーバ（＃１）２１によって受け付けられたとする。この場合、ファイルサーバ（＃１）２１が新たなマスタとして動作していることが前提となるが、これは、例えば、再起動されたファイルサーバが常に自身をマスタとして機能させるといった簡単な制御等で容易に実現できる。なお、ファイルサーバ（＃１）２１が再起動された直後のルックアップ操作要求でディレクトリツリーを回復する必要はなく、ファイルサーバ（＃１）２１が後にマスタとなってルックアップ操作要求を受け付けた時点で、回復処理が実行されればよい。
【００５７】
ルートディレクトリ“／”の直下のディレクトリ情報、またはディレクトリ“ｄｉｒＢ”に関するディレクトリ情報を要求するルックアップ操作要求を受け付ると、ファイルサーバ（＃１）２１は、自ファイルサーバのローカルファイルシステム２１４に対してルックアップ操作を行うと共に、ファイルサーバ（＃２）２２に問い合わせを行う。これにより、ファイルサーバ（＃１）２１は、自ファイルサーバのローカルファイルシステム２１４のディレクトリツリーと、ファイルサーバ（＃２）２２のローカルファイルシステム４１４のディレクトリツリーとから、ルートディレクトリ“／”直下のディレクトリ情報や、ディレクトリ“ｄｉｒＢ”に関するディレクトリ情報を認識する。そして、ファイルサーバ（＃１）２１は、自ファイルサーバのローカルファイルシステム２１４にディレクトリ“ｄｉｒＢ”を新規作成すると共に、それに合わせて対応付け情報３０２を生成する。これにより、ファイルサーバ（＃１）２１のローカルファイルシステム２１４の内容が正常な状態に補完されると共に、失われた対応付け情報３０２も回復される。
【００５８】
＜ケース２＞
ケース２は、ファイルサーバ（＃１）２１が新たに追加されたり、あるいは障害等によってローカルファイルシステムの全ての情報が失われた後の動作を示している。
【００５９】
クライアント端末１１からのルックアップ操作要求によってルートディレクトリ“／”直下のディレクトリ情報、またはディレクトリ“ｄｉｒＡ”あるいは“ｄｉｒＢ”に関するディレクトリ情報が要求され、その要求がファイルサーバ（＃１）２１によって受け付けられたとする。
【００６０】
ファイルサーバ（＃１）２１は、ファイルサーバ（＃２）２２のローカルファイルシステムのディレクトリツリーから、ルートディレクトリ“／”直下のディレクトリ情報や、ディレクトリ“ｄｉｒＡ”，ディレクトリ“ｄｉｒＢ”に関するディレクトリ情報を認識する。そして、ファイルサーバ（＃１）２１は、自ファイルサーバのローカルファイルシステムに該当するディレクトリを作成する。これにより、ルートディレクトリ“／”直下のディレクトリ情報が要求された場合にはディレクトリ“ｄｉｒＡ”およびディレクトリ“ｄｉｒＢ”がそれぞれ作成され、またディレクトリ“ｄｉｒＡ”あるいはディレクトリ“ｄｉｒＢ”に関するディレクトリ情報が要求された場合には、その都度、該当するディレクトリ“ｄｉｒＡ”あるいは“ｄｉｒＢ”が回復されることになる。同様にして、対応付け情報３０２の内容も回復されていく。
【００６１】
＜ケース３＞
ケース３は、ファイルサーバ（＃１，＃２）２１，２２それぞれのローカルファイルシステムに存在しているディレクトリ“ｄｉｒＡ”のパーミッション等に関する属性の更新操作処理の実行中などにおいてファイルサーバ（＃１）２１に何らかの障害が発生し、これによりディレクトリ“ｄｉｒＡ”の属性の更新がファイルサーバ（＃２）２２についてのみ行われ、ファイルサーバ（＃１）２１についてはディレクトリ“ｄｉｒＡ”の属性の更新が行われなかった場合を示している。
【００６２】
クライアント端末１１からのルックアップ操作要求によってルートディレクトリ“／”直下のディレクトリ情報、またはディレクトリ“ｄｉｒＢ”に関するディレクトリ情報が要求され、その要求がファイルサーバ（＃１）２１によって受け付けられたとする。
【００６３】
ファイルサーバ（＃１）２１は、自ファイルサーバのローカルファイルシステムのディレクトリツリーと、ファイルサーバ（＃２）２２のローカルファイルシステムのディレクトリツリーとから、ディレクトリ“ｄｉｒＡ”に関するディレクトリ情報を自ファイルサーバおよびファイルサーバ（＃２）２２それぞれのローカルファイルシステムから取得する。そして、ファイルサーバ（＃１）２１は、２つの情報から更新日時が新しいものを選ぶ。本例ではファイルサーバ（＃２）２２の情報が新しい（大きい値を新しいとする）ので、この情報をローカルファイルシステム上の“ｄｉｒＡ”に設定する。それと同時にこの情報をもとに対応付け情報３０２を更新する。以上で、ローカルファイルシステム内の“ｄｉｒＡ”の属性が最新の内容に更新され、同時に対応付け情報３０２も更新される。
【００６４】
（ディレクトリに関するルックアップ操作手順）
次に、図６および図７のフローチャートを参照して、クライアント端末１１からのディレクトリに関するルックアップ操作要求に応答して実行されるルックアップ操作手順の具体例について説明する。
【００６５】
図６はクライアント端末１１からのルックアップ操作要求を受け付けたファイルサーバ（＃１）２１（マスタ）によって実行されるルックアップ操作の手順を示している。
例えば、ディレクトリ“ｄｉｒＡ”に関するルックアップ操作要求がクライアント端末１１から発行されると、それがファイルサーバ（＃１）２１のリクエスト受信部２１１によって受け付けられ、そしてリクエスト解析・実行手順部２１２を介してファイルシステム２１３にルックアップ操作要求の内容が伝えられる（ステップＳ１０１）。ファイルシステム２１３のルックアップ操作手順部３１１は、まず、操作実行手順部３０３を通じて自ファイルサーバ２１のローカルファイルシステム２１４にアクセスし、要求されたディレクトリ“ｄｉｒＡ”がローカルファイルシステム２１４に存在するか否かを判断する（ステップＳ１０２）。
【００６６】
要求されたディレクトリ“ｄｉｒＡ”がローカルファイルシステム２１４に存在する場合（ステップＳ１０２のＹＥＳ）、ルックアップ操作手順部３１１は、操作実行手順部３０３を通じてローカルファイルシステム２１４からディレクトリ“ｄｉｒＡ”に関するディレクトリ情報を取得する。この後、ルックアップ操作手順部３１１は、操作要求手順部３０４を通じてディレクトリ“ｄｉｒＡ”に関するディレクトリ情報の問い合わせを他の各ファイルサーバそれぞれに発行し、その問い合わせに対する応答に基づいて、他の各ファイルサーバに該当するディレクトリ“ｄｉｒＡ”が存在するか否かを判断する（ステップＳ１０４）。
【００６７】
存在する場合には（ステップＳ１０４のＹＥＳ）、ルックアップ操作手順部３１１は、ディレクトリ“ｄｉｒＡ”がローカルファイルシステムに存在している他の各ファイルサーバからそのディレクトリ“ｄｉｒＡ”に関する情報を取得する（ステップＳ１０５）。そして、ルックアップ操作手順部３１１は、ステップＳ１０３で自ファイルサーバのローカルファイルシステム２１４から取得したディレクトリ情報の更新日時と、ステップＳ１０５で他の各ファイルサーバから取得したディレクトリ情報それぞれの更新日時とを比較することにより、本ファイルサーバで管理されているディレクトリ“ｄｉｒＡ”に関するディレクトリ情報の内で最新のディレクトリ情報を選択する（ステップＳ１０６）。もし、自ファイルサーバのローカルファイルシステム２１４から取得したディレクトリ“ｄｉｒＡ”のディレクトリ情報が最新であれば、自ファイルサーバのローカルファイルシステム２１４の補完処理は行われないが、ディレクトリ“ｄｉｒＡ”の最新のディレクトリ情報が他のファイルサーバから取得された場合には、自ファイルサーバのローカルファイルシステム２１４におけるディレクトリ“ｄｉｒＡ”のディレクトリ情報にその内容を反映する処理が行われ、これによりローカルファイルシステム２１４の補完処理が実行される（ステップＳ１０７）。
【００６８】
この後、ルックアップ操作手順部３１１は、ステップＳ１０６で選択したディレクトリ“ｄｉｒＡ”に関する最新のディレクトリ情報の内容を対応付け情報３０２に反映する（ステップＳ１０８）。
【００６９】
一方、ディレクトリ“ｄｉｒＡ”が自ファイルサーバのローカルファイルシステム２１４にのみ存在し、他のファイルサーバには存在しない場合には（ステップＳ１０４のＮＯ）、ステップＳ１０３で自ファイルサーバのローカルファイルシステム２１４から取得したディレクトリ“ｄｉｒＡ”に関するディレクトリ情報の内容を、対応付け情報３０２に反映する処理が実行される（ステップＳ１０８）。
【００７０】
また、クライアント端末１１から要求されたディレクトリ“ｄｉｒＡ”が自ファイルサーバのローカルファイルシステム２１４に存在しない場合（ステップＳ１０２のＮＯ）、ルックアップ操作手順部３１１は、操作要求手順部３０４を通じてディレクトリ“ｄｉｒＡ”に関するディレクトリ情報の問い合わせを他の各ファイルサーバそれぞれに発行し、その問い合わせに対する応答に基づいて、他の各ファイルサーバに該当するディレクトリ“ｄｉｒＡ”が存在するか否かを判断する（ステップＳ１０９）。
【００７１】
存在する場合には（ステップＳ１０９のＹＥＳ）、ルックアップ操作手順部３１１は、ディレクトリ“ｄｉｒＡ”がローカルファイルシステムに存在している他の各ファイルサーバからそのディレクトリ“ｄｉｒＡ”に関する情報を取得する（ステップＳ１１０）。そして、ルックアップ操作手順部３１１は、他のファイルサーバそれぞれから取得したディレクトリ情報の更新日時同士を比較することにより、最新のディレクトリ情報を選択する（ステップＳ１１１）。そして、選択した最新のディレクトリ情報に基づき、自ファイルサーバのローカルファイルシステム２１４にディレクトリ“ｄｉｒＡ”を作成した後（ステップＳ１１２）、ルックアップ操作手順部３１１は、ディレクトリ“ｄｉｒＡ”に関するディレクトリ情報の内容を対応付け情報３０２に反映する（ステップＳ１０８）。
【００７２】
このように、ディレクトリ“ｄｉｒＡ”に関するディレクトリ情報を対応付け情報３０２に反映することにより、要求された最新のディレクトリ情報を要求元のクライアント端末１１に返すことが可能となる。
【００７３】
図７はマスタからの問い合わせを受けた他の各ファイルサーバによって実行されるルックアップ操作を示している。
【００７４】
例えばファイルサーバ（＃２）２２を例示して説明すると、マスタからのディレクトリ情報の問い合わせ要求がファイルサーバ（＃２）２２のリクエスト受信部４１１によって受け付けられ、そしてリクエスト解析・実行手順部４１２を介してファイルシステム４１３にルックアップ操作要求の内容が伝えられる（ステップＳ１２１）。ファイルシステム４１３のルックアップ操作手順部５１２は、まず、操作実行手順部５０３を通じて自ファイルサーバ（＃２）２２のローカルファイルシステム４１４にアクセスし、要求されたディレクトリ“ｄｉｒＡ”がローカルファイルシステム４１４に存在するか否かを判断する（ステップＳ１２２）。ディレクトリ“ｄｉｒＡ”がローカルファイルシステム４１４に存在しない場合には（ステップＳ１２２のＮＯ）、ルックアップ操作手順部５１２は処理を終了する。一方、存在する場合には（ステップＳ１２２のＹＥＳ）、ルックアップ操作手順部５１２は操作実行手順部５０３を通じてローカルファイルシステム４１４からディレクトリ“ｄｉｒＡ”に関するディレクトリ情報を取得し（ステップＳ１２３）、それを要求元のマスタに送信する（ステップＳ１２４）。
【００７５】
以上の手順は、マスタ以外の全てのファイルサーバそれぞれによって実行される。
【００７６】
（ファイルに関するルックアップ操作手順）
次に、図８および図９のフローチャートを参照して、ファイルに関するルックアップ操作要求に応答して実行されるルックアップ操作の具体例について説明する。
【００７７】
図８はクライアント端末１１からのルックアップ操作要求を受け付けたファイルサーバ（＃１）２１（マスタ）によって実行されるルックアップ操作を示している。
所定のファイルに関するルックアップ操作要求がクライアント端末１１から発行されると、それがファイルサーバ（＃１）２１のリクエスト受信部２１１によって受け付けられ、そしてリクエスト解析・実行手順部２１２を介してファイルシステム２１３にルックアップ操作要求の内容が伝えられる（ステップＳ２０１）。ファイルシステム２１３のルックアップ操作手順部３１１は、まず、操作実行手順部３０３を通じて自ファイルサーバ２１のローカルファイルシステム２１４にアクセスし、要求されたファイルがローカルファイルシステム２１４に存在するか否かを判断する（ステップＳ２０２）。
【００７８】
要求されたファイルがローカルファイルシステム２１４に存在する場合（ステップＳ２０２のＹＥＳ）、ルックアップ操作手順部３１１は、操作実行手順部３０３を通じてローカルファイルシステム２１４から当該ファイルに関する情報を取得し（ステップＳ２０３）、その取得したファイル情報に基づいて対応付け情報３０２の更新を実行する（ステップＳ２０４）。
【００７９】
一方、要求されたファイルがローカルファイルシステム２１４に存在しない場合には（ステップＳ２０２のＮＯ）、ルックアップ操作手順部３１１は、操作要求手順部３０４を通じて当該要求されたファイルに関する問い合わせを他の各ファイルサーバそれぞれに発行し、その問い合わせに対する応答に基づいて、他のファイルサーバに当該ファイルを存在するか否かを判断する（ステップＳ２０５）。
【００８０】
存在する場合には（ステップＳ２０５のＹＥＳ）、ルックアップ操作手順部３１１は、そのファィルに関する情報を当該他のファイルサーバから取得し（ステップＳ２０５）、その取得したファイル情報に基づいて対応付け情報３０２の更新を実行する（ステップＳ２０４）。
【００８１】
このように、要求されたファイルに関する情報を対応付け情報３０２に反映することにより、要求されたファイルの情報を要求元のクライアント端末１１に返すことが可能となる。なお、そのファイルの取得が要求された場合には、対応付け情報３０２によって当該ファイルの所在が分かるので、マスタは、そのファイルを有するファイルサーバのローカルファイルシステムから当該ファイルを取得し、それをクライアント端末１１に返すことができる。
【００８２】
図９はマスタからの問い合わせを受けた他の各ファイルサーバによって実行されるファイルに関するルックアップ操作を示している。
【００８３】
例えば、ファイルサーバ（＃２）２２を例示して説明すると、マスタ（ファイルサーバ（＃１）２１）からのディレクトリ情報の問い合わせ要求がファイルサーバ（＃２）２２のリクエスト受信部４１１によって受け付けられ、そしてリクエスト解析・実行手順部４１２を介してファイルシステム４１３にルックアップ操作要求の内容が伝えられる（ステップＳ２１１）。ファイルシステム４１３のルックアップ操作手順部５１２は、まず、操作実行手順部５０３を通じて自ファイルサーバ２２のローカルファイルシステム４１４にアクセスし、要求されたファイルがローカルファイルシステム４１４に存在するか否かを判断する（ステップＳ１２２）。要求されたファイルがローカルファイルシステム４１４に存在しない場合には（ステップＳ２１２のＮＯ）、ルックアップ操作手順部５１２は処理を終了する。一方、存在する場合には（ステップＳ２１２のＹＥＳ）、ルックアップ操作手順部５１２は操作実行手順部５０３を通じてローカルファイルシステム４１４から当該ファイルに関する情報を取得し（ステップＳ２１３）、それを要求元のマスタに送信する（ステップＳ２１４）。
【００８４】
以上の手順は、マスタ以外の全てのファイルサーバそれぞれによって実行される。
【００８５】
（ディレクトリ作成時の手順）
次に、図１０および図１１のフローチャートを参照して、ディレクトリ作成時に実行される処理について説明する。
【００８６】
図１０はクライアント端末１１からのディレクトリ作成要求を受け付けたファイルサーバ（＃１）２１（マスタ）によって実行されるディレクトリ作成手順を示している。
例えばディレクトリ“ｄｉｒＢ”の作成要求がクライアント端末１１から発行されると、それがファイルサーバ（＃１）２１のリクエスト受信部２１１によって受け付けられ、そしてリクエスト解析・実行手順部２１２を介してファイルシステム２１３に対してその要求の内容が伝えられる（ステップＳ３０１）。ファイルシステム２１３のディレクトリ作成手順部３１３は、まず、操作実行手順部３０３を通じて自ファイルサーバ２１のローカルファイルシステム２１４に対してディレクトリ“ｄｉｒＢ”の作成を要求して、ディレクトリ“ｄｉｒＢ”をディスクシステム２１５上に作成する（ステップＳ３０２）。次いで、ディレクトリ作成手順部３１３は、ローカルファイルシステム２１４に新たに作成したディレクトリ“ｄｉｒＢ”に関する情報を対応付け情報３０２に反映した後（ステップＳ３０３）、操作要求手順部３０４を通じてディレクトリ“ｄｉｒＢ”の作成要求を他の各ファイルサーバそれぞれに発行する（ステップＳ３０４）。
【００８７】
図１１はマスタからの要求を受けた他の各ファイルサーバによって実行されるディレクトリ作成手順を示している。
【００８８】
例えば、ファイルサーバ（＃２）２２を例示して説明すると、マスタからのディレクトリ“ｄｉｒＢ”の作成要求がファイルサーバ（＃２）２２のリクエスト受信部４１１によって受け付けられ、そしてリクエスト解析・実行手順部４１２を介してファイルシステム４１３に要求の内容が伝えられる（ステップＳ３１１）。ファイルシステム４１３のディレクトリ作成手順部５１４は、まず、操作実行手順部５０３を通じて自ファイルサーバ（＃２）２２のローカルファイルシステム４１４に対してディレクトリ“ｄｉｒＢ”の作成を要求して、ディレクトリ“ｄｉｒＢ”をディスクシステム４１５上に作成する（ステップＳ３１２）。次いで、ディレクトリ作成手順部５１４は、ローカルファイルシステム４１４に新たに作成したディレクトリ“ｄｉｒＢ”に関する情報を対応付け情報５０２に反映した後（ステップＳ３０４）、処理を終了する。
【００８９】
以上の手順は、マスタ以外の全てのファイルサーバそれぞれによって実行される。
【００９０】
なお、ディレクトリの作成のみならず、ディレクトリの属性変更やディレクトリの削除等がクライアント端末１１から要求された場合も、その要求を受け付けたファイルサーバから他のファイルサーバそれぞれに対して同様の要求が発行され、すべてのファイルサーバのローカルファイルシステムに反映されると共に、それらの対応付け情報の更新が行われる。
【００９１】
以上のように、本実施形態のファイルサーバシステムによれば、クライアント端末１１からディレクトリツリーのルックアップ操作要求を受け付けたファイルサーバが、自身のローカルファイルシステムを参照するのみならず、他の全てのファイルサーバから当該ディレクトリツリーに関する情報を取得して、自身のローカルファイルシステムの補完、さらには対応付け情報の形成を行うので、オンデマンドでローカルファイルシステムおよび対応付け情報の構築を行うことが可能となる。
【００９２】
なお、各ファイルサーバ２１，２２，…に設けた機能は全てコンピュータプログラムによって実現されているので、そのコンピュータプログラムをコンピュータ読み取り可能な記憶媒体に記憶しておき、その記憶媒体をファイルサーバシステムを構成する各サーバコンピュータに導入して実行させるだけで、本実施形態と同様の機能を容易に実現することが可能となる。
【００９３】
また、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。例えば、上記実施形態においては、複数のファイルサーバ２１，２２，…の内でマスタとして機能しているファイルサーバのローカルファイルシステムのみを補完する場合について説明したが、マスタは、他の各ファイルサーバのローカルファイルシステムの内容を問い合わせによって認識できるので、そのときにマスタからの明示的な指示で他のファイルサーバそれぞれのローカルファイルシステムの補完を実行させるようにしても良い。
【００９４】
更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００９５】
【発明の効果】
以上説明したように、本発明によれば、簡単な制御で、しかもファイルサーバの故障やファイルサーバの動的な追加等に柔軟に対応することが可能なファイルサーバシステムを実現することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るファイルサーバシステムの構成を示すブロック図。
【図２】同実施形態のファイルサーバシステムによって提供される仮想ファイルシステムを説明するための図。
【図３】同実施形態のファイルサーバシステムで用いられる対応付け情報の例を説明するための図。
【図４】同実施形態のファイルサーバシステムの動作原理を説明するための図。
【図５】同実施形態のファイルサーバシステムにおける障害回復処理を説明するための図。
【図６】同実施形態のクライアントからディレクトリのルックアップ操作要求を受け付けたファイルサーバによって実行されるルックアップ操作手順を示すフローチャート。
【図７】同実施形態のマスタからディレクトリに関する問い合わせを受けた他の各ファイルサーバによって実行されるルックアップ操作手順を示すフローチャート。
【図８】同実施形態のクライアントからファイルのルックアップ操作要求を受け付けたファイルサーバによって実行されるルックアップ操作手順を示すフローチャート。
【図９】同実施形態のマスタからファイルに関する問い合わせを受けた他の各ファイルサーバによって実行されるルックアップ操作手順を示すフローチャート。
【図１０】同実施形態のクライアントからディレクトリ作成要求を受け付けたファイルサーバによって実行されるディレクトリ作成手順を示すフローチャート。
【図１１】同実施形態のマスタからディレクトリ作成要求を受け付けた他の各ファイルサーバによって実行されるディレクトリ作成手順を示すフローチャート。
【符号の説明】
１１…クライアント端末
２１，２２…ファイルサーバ
２１１，４１１…リクエスト受信部
２１２，４１２…リクエスト解析・実行手順部
２１３，４１３…ファイルシステム
２１４，４１４…ローカルファイルシステム
２１５，４１５…ディスクシステム
３０２，５０２…対応付け情報
３０３，５０３…操作実行手順部
３０４，５０４…操作要求手順部
３１１，５１１…第１のルックアップ操作手順部
３１２，５１２…第２のルックアップ操作手順部
３１３，５１３…第１のディレクトリ作成手順部
３１４，５１４…第２のディレクトリ作成手順部
【図１】
0003776769.tif 000002
【図２】
0003776769.tif 000003
【図３】
0003776769.tif 000004
【図４】
0003776769.tif 000005
【図５】
0003776769.tif 000006
【図６】
0003776769.tif 000007
【図７】
0003776769.tif 000008
【図８】
0003776769.tif 000009
【図９】
0003776769.tif 000010
【図１０】
0003776769.tif 000011
【図１１】
0003776769.tif 000012