(57)【特許請求の範囲】
【請求項１】
記憶装置を備え、第１のタイプの第１ネットワークおよび第２のタイプの第２ネットワークに接続可能なコンピュータを有するデータ処理システムにおいて、前記第１ネットワークおよび第２ネットワークは、ファイル・システム構造体をそれぞれ格納し、前記コンピュータが前記ネットワークの少なくとも１つから切り離されたときに前記ネットワークの１つから前記ファイル・システム構造体の１つへのアクセスを提供するための方法であって、
前記コンピュータが前記ネットワークの選択された一方に接続され、かつ、プログラムが前記コンピュータ上で実行されているときに、
(i)前記選択されたネットワーク上に格納されたファイル・システム構造体のうちの選択された１つにアクセスするためのリクエストを前記プログラムから受け取り、
(ii)前記リクエストに応答して、前記選択されたファイル・システム構造体の１つに関する完全なネーミング情報を格納し、かつ、前記プログラムに関連した前記選択されたファイル・システム構造体のシャドウ・コピーをトランスペアレントに得て、
(iii)前記選択されたネットワークに接続されたファイル・システム構造体を保持する前記記憶装置のシャドウ・データベースに、前記選択されたファイル・システム構造体のシャドウ・コピーを格納する、
ステップを備えている方法。
【請求項２】
請求項１に記載の方法において、
前記コンピュータが前記選択されたネットワークから切り離されたときに、
(i)前記選択されたネットワークの前記選択されたファイル・システム構造体をアクセスするためのリクエストを受け取り、
(ii)前記リクエストにサービスを提供するために前記シャドウ・データベースに格納されている前記選択されたファイル・システム構造体の前記シャドウ・コピーを使用する、
ステップをさらに備えている方法。
【請求項３】
請求項２に記載の方法において、前記コンピュータが前記選択されたネットワークに再接続されたときに、前記シャドウ・データベースをクリーン・アップして、前記選択されたネットワークの全てのファイル・システム構造体を消去するステップをさらに備えている方法。
【請求項４】
請求項１に記載の方法において、
前記シャドウ・コピーを格納する前に、前記シャドウ・データベースに前記シャドウ・コピーを格納するのに十分なフリー・スペースがないと判断し、
前記シャドウ・データベースのファイル・システム構造体を消去して、前記選択されたファイル・システム構造体の前記シャドウ・コピーを格納するのに十分なフリー・スペースを生成する、
ステップをさらに備えている方法。
【請求項５】
請求項１に記載の方法において、前記シャドウ・データベースが、ファイル・システム構造体の優先順位に従ってファイル・システム構造体を格納する優先順位キューであり、前記選択されたファイル・システム構造体が優先順位を有し、前記選択されたファイル・システム構造体のシャドウ・コピーを前記優先順位キューのある位置に格納する前記ステップが、前記選択されたファイル・システム構造体の優先順位に基づくものである方法。
【請求項６】
請求項１に記載の方法において、前記コンピュータは、複数の異なるタイプのネットワーク群に接続可能で、前記ネットワーク群の少なくとも選択された１つが選択されたファイル・システム構造体を記憶するデータ処理システムにおいて、前記コンピュータが前記選択されたネットワークから切り離されたときに、前記選択されたファイル・システム構造体へのアクセスを提供する方法であって、
前記ネットワーク群から取り出されるファイル・システム構造体のシャドウ・コピーを格納するためのシャドウ・データベースを前記ストレージ内に設け、前記シャドウ・データベースは、前記選択されたネットワークからの前記選択されたファイル・システム構造体のシャドウ・コピーを含み、
前記コンピュータが、前記選択されたネットワークから切り離されると、
(i)前記選択されたファイル・システム構造体をアクセスするためのリクエストを受け取り、
(ii)前記リクエストにサービスを提供するために前記シャドウ・データベースに格納されている前記選択されたファイル・システム構造体の前記シャドウ・コピーを使用する、
ステップを備えている方法。
【請求項７】
請求項６に記載の方法において、シャドウ・データベースを設ける前記ステップが、前記シャドウ・データベースを優先順位キューとして設けるステップを含み、ファイル・システム構造体の各シャドウ・コピーが優先順位を有し、各シャドウ・コピーの前記キュー内の位置がその優先順位によって決定されるものである方法。
【請求項８】
請求項６に記載の方法において、前記コンピュータ・システムがアプリケーション・プログラムを実行し、前記アプリケーション・プログラムが、前記選択されたファイル・システム構造体をアクセスするためのリクエストを生成し、前記リクエストにサービスを提供するために前記選択されたファイル・システム構造体のシャドウ・コピーを使用する前記ステップが、前記アプリケーション・プログラムに関してトランスペアレントに実行される方法。
【請求項９】
請求項６に記載の方法において、
前記コンピュータが、前記ネットワーク群の第２のものから切り離されたときに、
(i)前記第２のネットワークのファイル・システム構造体をアクセスするためのリクエストを受け取り、
(ii)前記リクエストにサービスを提供するために前記第２のネットワークからアクセスされる、前記シャドウ・データベースに格納されている前記ファイル・システム構造体の所与のシャドウ・コピーを使用する方法。
【請求項１０】
ストレージを備え、複数の異なるタイプのネットワーク群に接続可能なコンピュータを有し、各ネットワークが少なくとも１つのファイル・システム構造体を含んでいるデータ処理システムにおいて、
前記コンピュータが前記ネットワーク群に接続されたときに、
(i)前記ネットワーク群のファイル・システム構造体をアクセスするリクエストを受け取り、
(ii)アクセスするためのリクエストが受け取られた前記ファイル・システム構造体に関する完全なネーミング情報をトランスペアレントに格納し、リクエストが完了した後に前記ファイル・システム構造体のシャドウ・コピーをトランスペアレントに取得し、受け取られた前記ファイル・システム構造体のシャドウ・コピーを、前記ストレージのシャドウ・データベースに格納し、
前記コンピュータが、前記ネットワーク群の少なくとも１つから切り離され、前記切り離されたネットワーク群の１つの選択されたファイル・システム構造体をアクセスするためのリクエストが受け取られると、前記シャドウ・データベースをアクセスして、そこに格納されている前記選択されたファイル・システム構造体のシャドウ・コピーを使用して、前記リクエストにサービスを提供する、
ステップを備えている方法。
【請求項１１】
請求項10に記載の方法において、前記シャドウ・データベースに格納されているファイル・システム構造体の各シャドウ・コピーが優先順位を有し、アクセスのためのリクエストが受け取られたファイル・システム構造体のシャドウ・コピーを、前記ストレージの前記シャドウ・データベースに格納する前記ステップが、前記シャドウ・コピーを優先順位キューとして格納するステップを含み、前記優先順位キューの各シャドウ・コピーの位置がその優先順位によって決定されるものである方法。
【請求項１２】
請求項10に記載の方法において、シャドウ・コピーを格納する前記ステップが、
シャドウ・コピーの所与の一つを格納するのに、前記シャドウ・データベースに利用可能なフリー・スペースが十分にないと判断し、
前記シャドウ・データベースからシャドウ・コピーを消去して、前記所与のシャドウ・コピーを格納するための十分なフリー・スペースを設ける、
ステップを備えている方法。
【請求項１３】
請求項10に記載の方法において、
前記ストレージに各シャドウ・コピーのタイムスタンプを格納し、各タイムスタンプは、前記シャドウ・コピーが前記シャドウ・データベースに格納されたときを示すものであり、
前記タイムスタンプが、現在格納されているシャドウ・コピーがあまりにも古いことを示している場合にシャドウ・コピーの更新版を格納する、
ステップをさらに備えている方法。
【請求項１４】
異なるタイプのネットワーク群に接続可能なコンピュータ・システムであって、
異なるタイプのネットワーク群から選択されたファイル・システム構造体のシャドウ・コピーを保持するシャドウ・データベース、および
前記ファイル・システム構造体が前記コンピュータによってアクセスされるためにリクエストされるとき前記選択されたファイル・システム構造体に関して完全なネーミング情報をトランスペアレントに格納し、リクエストが完了した後に前記選択されたファイル・システム構造体のシャドウ・コピーをトランスペアレントに得て、かつ前記選択されたファイル・システム構造体のシャドウ・コピーを格納することによって前記シャドウ・データベースを構築するためのシャドウ・データベース・ビルダ、
前記シャドウ・データベースにアクセスすることにより、前記選択されたファイル・システム構造体の１つをアクセスするためのリクエストに応答して、前記リクエストにサービスを提供するために前記１つのファイル・システム構造体のシャドウ・コピーを得るシャドウ・モジュール、
を備えているコンピュータ・システム。
【請求項１５】
請求項14に記載のコンピュータ・システムにおいて、前記シャドウ・データベース・ビルダが、前記ファイル・システム構造体が前記コンピュータによってアクセスされるときに、前記選択されたファイル・システム構造体のシャドウ・コピーを格納することによって、前記シャドウ・データベースを構築するように構成されたコンピュータ・システム。
【請求項１６】
請求項14に記載のコンピュータ・システムにおいて、前記シャドウ・データベースを維持するためのエージェントをさらに備えているコンピュータ・システム。
【請求項１７】
請求項14に記載のコンピュータ・システムにおいて、前記ネットワークのファイル・システムとインタフェースするファイル・システム・ドライバをさらに備えているコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、データ処理システムに関し、具体的には、ネットワーク独立型ファイル・シャドウイングに関する。
【０００２】
【発明の背景】
携帯用コンピュータに伴う一つの問題は、ネットワークに接続されていないときのファイルへのアクセスに関するものである。ほとんどの携帯用コンピュータは、その携帯用コンピュータをネットワークに接続するための設備を備えている。携帯用コンピュータがネットワークに接続されているときに、携帯用コンピュータは、ネットワーク内に格納されているリモート・ファイルにアクセスすることができる。不幸にも、携帯用コンピュータがネットワークから切り離されると、携帯用コンピュータは、ネットワークに格納されたリモート・ファイルへのアクセスをもはや有しない。
【０００３】
【発明の概要】
本発明の第１の特徴によると、コンピュータが前記ネットワークから切り離されたときに、ネットワークからのファイル・システム構造体にアクセスするための方法が提供される。この方法は、記憶装置を備えたコンピュータを有するデータ処理システムにおいて実行される。コンピュータは、第１のタイプの第１ネットワークおよび第２のタイプの第２ネットワークに接続可能である。この方法において、前記コンピュータが前記ネットワークの選択された一方に接続され、かつ、プログラムが前記コンピュータ上で実行されているときに、いくつかのステップが実行される。まず、前記選択されたネットワーク上に格納されたファイル・システム構造体のうちの選択された１つにアクセスするためのリクエストが、前記プログラムから受け取られる。このリクエストに応答して、前記選択されたファイル・システム構造体のシャドウ・コピーが、前記プログラムに関連して透明に得られるように、シャドウ・コピーが透明に得られる。選択されたファイル・システム構造体のシャドウ・コピーは、記憶装置のシャドウ・データベースに格納される。シャドウ・データベースは、コンピュータが前記選択されたネットワークにもはや接続されなくなったときの使用のためにファイル・システム構造体を保持する。
【０００４】
本発明の第２の特徴によると、ストレージを備えたコンピュータを有するデータ処理システムにおいて一方法が実行される。コンピュータは、異なるタイプの複数のネットワーク群に接続可能である。このネットワーク群の少なくとも１つは、選択されたファイル・システム構造体を格納する。この方法において、シャドウ・データベースが、前記ストレージ内に設けられ、前記ネットワーク群のために取り出されたファイル・システム構造体のシャドウ・コピーを格納する。シャドウ・データベースは、前記選択されたネットワークからの前記選択されたファイル・システム構造体のシャドウ・コピーを含んでいる。コンピュータが、前記選択されたネットワークから切り離されているときに、前記選択されたファイル・システム構造体をアクセスするためのリクエストが受け取られ、シャドウ・データベースに格納されている前記選択されたファイル・システム構造体のシャドウ・コピーが、このリクエストにサービスを提供するために使用される。
【０００５】
本発明の第３の特徴によると、ストレージを備えたコンピュータを有するデータ処理システムにおいて一方法が実行される。コンピュータは、異なるタイプの複数のコンピュータ群に接続することができる。各ネットワークは、少なくとも１つのファイル・システム構造体を備えている。この方法において、コンピュータがネットワークに接続されているとき、ネットワーク群のファイル構造体にアクセスするためのリクエストが受け取られ、アクセスするためのリクエストが受け取られたファイル・システム構造体のシャドウ・コピーが、ストレージ内のシャドウ・データベースに格納される。コンピュータが、ネットワーク群の少なくとも１つから切り離され、切り離されたネットワーク群の一つのネットワークの選択されたファイル・システム構造体にアクセスするためのリクエストが受け取られると、シャドウ・データベースがアクセスされ、このリクエストにサービスを提供するために、選択されたファイル・システム構造体のシャドウ・コピーが使用される。
【０００６】
本発明の第４の特徴によると、コンピュータ・システムが、異なるタイプのネットワーク群に接続可能である。このコンピュータ・システムは、異なるタイプのネットワーク群から選択されたファイル・システム構造体のシャドウ・コピーを保持するシャドウ・データベースを備えている。また、コンピュータ・システムは、前記シャドウ・データベースにアクセスすることにより、前記選択されたファイル・システム構造体の１つをアクセスするためのリクエストに応答して、前記リクエストにサービスを提供するために前記リクエストされたファイル・システム構造体のシャドウ・コピーを得るシャドウ・モジュールも備えている。コンピュータ・システムは、シャドウ・データベースを構築するシャドウ・データベース・ビルダを備えていてもよい。シャドウ・データベース・ビルダは、ファイル・システム構造体がコンピュータによってアクセスされるときに、選択されたファイル・システム構造体のシャドウ・コピーを格納する。また、コンピュータ・システムは、シャドウ・データベースを構築および維持するエージェントを備えていてもよい。
【０００７】
【実施例または発明の実施の形態】
本発明の好ましい実施形態は、ネットワーク独立ファイル・シャドウイングを提供する。それぞれ異なるタイプのネットワークからのファイルが、本発明の好ましい実施形態のメカニズムを使用してシャドウイングされるという点において、好ましい実施形態によって提供されるファイル・シャドウイングは、ネットワーク独立である。本発明の好ましい実施形態によって実行されるファイル・シャドウイングは、リモート・ネットワーク・ファイル・システムにおいてユーザによりアクセスされるファイルのコピーを自動的かつ透明（トランスペアレント）に保持する。好ましい実施形態によって提供される透明性により、コンピュータがリモート・ネットワークから切り離されたときに、アクセス用にローカルに格納するためにどのファイルを選択するかというユーザの負担が軽減される。
【０００８】
図１は、本発明の好ましい実施形態を実現するのに適した分散システム10の一例を示すブロック図である。この技術分野の専門家（当業者）には明らかであるが、図１に示す分散システムは例示のためのものにすぎず、本発明が他のデータ処理システムの構成においても実現することができる。図１に示す分散システム10は、ネットワーク12、14および16を含んでいる。これらの各ネットワークは、ファイル・サーバ18、20および22をそれぞれ備えている。ファイル・サーバ18、20および22は、それぞれのネットワーク12、14および16に格納されたファイルおよび他のデータへのアクセスを管理する。ネットワーク12、14および16のそれぞれは、ワークステーション、記憶装置および他の周辺装置のような追加コンポーネントを備えていてもよい。ネットワーク12は、メモリ26を有するワークステーション24を備えている。メモリ26は、少なくとも一つのアプリケーション・プログラム30とオペレーティング・システム28のコピーを保持する。本発明の好ましい実施形態を実行するコードは、オペレーティング・システム28の内部に組み込まれている。しかしながら、当業者には明らかであるが、変形例として、このコードは、オペレーティング・システムに直接組み込まれていない別のモジュールに組み込まれることもある。
【０００９】
以下の説明のために、ワークステーション24がネットワーク14および16から切り離されているものと仮定する。さらに、ワークステーション24は、分離された環境における使用にも容易に適応可能な携帯用コンピュータであると仮定する。本発明が携帯用コンピュータにおける実現に限られるものではなく、むしろ他のタイプのコンピュータ・システムにおいても実現できることが、当業者には理解されよう。
【００１０】
本発明の好ましい実施形態は、リモート・ネットワーク（例えば、ネットワーク14および16）からのワークステーション24によってアクセスされるファイルのシャドウ・コピーを自動的かつ透明に格納することによって、発明の背景の項で説明した従来技術の問題点を解決する。後に詳述するように、本発明の好ましい実施形態は、ファイル・シャドウ・メカニズムおよび永続キャッシュ(persistent cache)として働くリモート・アクセス・ファイルのデータベースを備える。ファイル・シャドウ・メカニズムは、リモート・ネットワークからのファイル入出力（Ｉ／Ｏ）のためのリクエストをフック(hook)する。続いて、このようなリクエストに関係したファイルが、永続キャッシュに運ばれる。したがって、永続キャシュは、ワークステーション24がネットワーク14および16に接続されている間に構築され、後にワークステーションがネットワーク14および16に接続されなくなった場合に永続キャシュ内のファイルがアクセスされるようにする。
【００１１】
図２は、本発明の好ましい実施形態における役割を担うソフトウェアの構成要素を示すブロック図である。ボーダ37は、ユーザ特権レベルにあるソフトウェア構成要素をカーネル特権レベルにあるソフトウェア構成要素から分離するものである。ファイルＩ／Ｏリクエストは、アプリケーション・プログラム30によって生成される。アプリケーション・プログラム30は、ワード・プロセシング・プログラムやスプレッドシート・プログラムを含む、いずれのタイプのアプリケーションであってもよい。ファイルＩ／Ｏリクエストがアプリケーション・プログラム30内からではなくオペレーティング・システム28内から発行される場合についても、本発明が適用可能であることは、当業者には理解されよう。以下の説明のために、アプリケーション・プログラムは、ファイルＩ／Ｏリクエストを生成できる任意のプログラムを含むようにされている。
【００１２】
アプリケーション・プログラム30から発行されるリクエストは、マルチ・プロバイダ・ルータ31に渡される。マルチ・プロバイダ・ルータ31は、このリクエストをネットワーク・プロバイダ33および35にルーティング（経路選択）する。ネットワーク・プロバイダ33および35は、クライアント・コードとしてオペレーティング・システム28に設けられる。ネットワーク・プロバイダ33および35は、アプリケーション・プログラム30とリモート・ネットワークとの間に接続（コネクション）を生成する機能を有する。マルチ・プロバイダ・ルータ31は、ネットワーク・プロバイダのそれぞれにリクエストを渡し、いずれのネットワーク・プロバイダが適切なネットワークとの接続に成功するかを判断する。分散システム10における異なるタイプのネットワークのそれぞれに対して、個別のネットワーク・プロバイダ33および35が設けられる。本発明の好ましい実施形態は、シャドウ・ネットワーク・プロバイダを提供する。このシャドウ・ネットワーク・プロバイダは、他のネットワーク・プロバイダ33のいずれも接続の確立に成功しない場合に使用される。シャドウ・ネットワーク・プロバイダ35は、シャドウ・データベース42へのシャドウ・ネットワーク接続を確立するために使用され、シャドウ・データベース42に含まれるデータがアクセスされるようにする。シャドウ・ネットワーク・プロバイダ35の使用は、後に詳述される。ネットワーク・プロバイダ33および35は、ファイル・システム・ドライバ（ＦＳＤ：File System Driver）38および40と直接インタラクションを行って、リモート・ネットワークへの接続を確立してもよい。これらのドライバについては後に詳述する。選択的に、ネットワーク・プロバイダ33は、インストール可能ファイル・システム・マネージャ（ＩＦＳＭＧＲ：Installable File System Manager ）32を介してリモート・ネットワークへの接続を確立することもできる。
【００１３】
ＩＦＳＭＧＲ32は、オペレーティング・システム28の一部として含まれ、ファイルＩ／Ｏリクエストをその適切な目的地（すなわち、リクエストを処理する適切なファイル・サーバ）へ向かわせる役割を有する。ＩＦＳＭＧＲ32は、ユーザが、異なるタイプのファイル・システムのファイルにアクセスできるように、マルチ・ファイル・システムを扱うように設計される。
【００１４】
ＩＦＳＭＧＲ32は、図２に示すファイル・システム・ドライバ（ＦＳＤ）36、38および40のようなＦＳＤ群とインタラクションを行う。ＦＳＤ36、38および40は、ＩＦＳＭＧＲ32とファイル・システムとの間のインタフェースとして機能する。ＦＳＤは、システムにはデバイス・ドライバとして見える。特に、ＦＳＤ36、38および40は、ファイル・システムを担当するデバイス・ドライバとして見える。
【００１５】
ＦＳＤ36、38および40は、オペレーティング・システム28の一部である。ＦＳＤ36、38および40は、ローカル・ファイル・システム（ＦＳＤ36）またはリモート・ファイル・システム（ＦＳＤ38および40）との間のインタフェース（整合）を行う。ＦＳＤ36、38および40のそれぞれは、所与のファイル・システムとのインタフェースを行うように設計される。
【００１６】
シャドウＶｘＤ34は、ファイルＩ／Ｏリクエストを監視する仮想デバイス・ドライバであり、どのファイルを永続キャシュ（シャドウ・データベース42として知られている）内に置く必要があるかを決定する。シャドウＶｘＤ34は、デバイスをシミュレーションする仮想デバイス・ドライバである（すなわち、これはデバイスの仮想化を表す）。シャドウＶｘＤ34は、オペレーティング・システム28のカーネルの一部として実現される。シャドウＶｘＤ34の役割は、後に詳述される。
【００１７】
ユーザ・ヒント・データベース(user hints database) が、どのファイル・タイプがシャドウ・データベース42に含まれるべきかまたは除外されるべきかを決定するために設けられることがある。このヒント・データベースは、あるファイル・リファレンスを含め、または、除外するためのフィルタのように動作する。また、ファイルが他の任意のアプリケーション・プログラムによって参照されたかどうかにかかわらず、リクエストされたファイル・リファレンスをエージェントが、ヒント・データベースに周期的に満たすことがあるという点において、ヒント・データベースは、エージェント用のワーク・キューのようにも動作する。ユーザのコンピュータがネットワークから切り離されたときに、ヒント・データベースは、ユーザの利用可能なスペースを最適化するために、ローカル・ディスクのスペースの利用を最大にしようとする。
【００１８】
シャドウ・データベース42は、ワークステーション28（図１）にアクセスされ、かつ、リモート・ファイル・システム内に存在するファイルの完全なネーミング情報を保持している。また、シャドウ・データベース42は、アクセスされるファイルの記述（すなわち、そのファイルの疎な記述(sparse representation) または完全な記述のいずれか）も保持している。さらに、シャドウ・データベース42は、優先順位の高いファイルをキューの先頭に、優先順位の低いファイルをキューの末尾にそれぞれ配置する優先順位キューも有する。優先順位の高いファイルは、優先順位の低いファイルよりも、シャドウ・データベース42に留まる優先順位が高いファイルである。
【００１９】
エージェント44として知られているアプリケーションは、シャドウ・データベース42を維持するために設けられている。後に詳述するように、エージェント44は、定期的に起動され、ファイルをシャドウ・データベース42に運び、シャドウ・データベースの必要な更新を行う。
【００２０】
図３は、本発明の好ましい実施形態によって実行される処理の概要を示すフローチャートである。まず、ワークステーション24は、ネットワーク14および16に接続される（図３のステップ46）。続いて、シャドウ・データベース42が、後に詳述するように構築される（図３のステップ48）。その後、ワークステーション24は、ネットワーク14および16の一方または双方から切り離される（図３のステップ50）。ワークステーション24がネットワークから切り離された状態において、シャドウ・データベース42は、リモート・ファイル・システムから生じたファイルを発見するためにアクセスされる永続キャッシュとして使用される（図３のステップ52）。続いて、ワークステーション24は、ネットワークに再接続され（図３のステップ54）、さまざまなクリーン・アップ処理が実行される（ステップ56）。
【００２１】
シャドウＶｘＤ34は、リモート・ファイル・システムへファイルＩ／Ｏリクエストをフックする役割を有する。図４は、シャドウＶｘＤ34がこのようなフック処理を実行できるようにするために実行される処理を示すフローチャートである。先ず、システム・ブート中に、ＩＦＳＭＧＲ32が、ワークステーション24のメモリ26にロードされる（図４のステップ58）。ＩＦＳＭＧＲ32が十分にロードされると、シャドウＶｘＤ34がロードされる（図４のステップ60）。シャドウＶｘＤ34は、RegisterNet サービスへの呼出しをフックし（図４のステップ62）、RegisterNet サービスは、ＩＦＳＭＧＲ32を有するリモート・ファイル・システム・ドライバを登録する。続いて、リモート・ファイル・システム・ドライバ38および40は、連続してロードされる（図４のステップ64）。RegisterNet サービスは、ＩＦＳＭＧＲ32を有するリモート・ネットワークを登録する。このRegisterNet サービスへの呼出しをフックすることによって、シャドウＶｘＤ34は、ＩＦＳＭＧＲ32からリモート・ファイル・システム・ドライバ38および40の１つへ送られる各ファイルＩ／Ｏリクエストをフックすることができる。
【００２２】
ファイル・システム・ドライバ38および40のそれぞれがロードされると、それらは、ＦＳＤを登録するために、ＩＦＳＭＧＲ32によって提供されるRegisterNet サービスを呼び出す。ＦＳＤ38および40は、RegisterNet サービスへの呼出しの一部として、ファイル・システム・ドライバへの接続を形成するために関数ポインタを転送する。続いて、ＩＦＳＭＧＲ32が接続形成を必要とすると、ＩＦＳＭＧＲ32は、ＦＳＤ38または40から渡されるポインタによって識別される関数を呼び出す。この関数呼出しが成功すると、ＦＳＤは、ＩＦＳＭＧＲ32に関数ポインタの配列を返す。この関数ポインタ配列は、ＦＳＤ38または40と関連したファイル・システム上で実行可能な関数を指すものである。シャドウＶｘＤ34は、ＦＳＤ38および40からのRegisterNet 呼出しをフックし、関数ポインタ配列を受け取る。シャドウＶｘＤ34は、それ自身の関数ポインタ配列をＩＦＳＭＧＲ32に渡す。シャドウＶｘＤ34からＩＦＳＭＧＲへ渡された関数ポインタ配列は、シャドウＶｘＤ34の関数へのフックを提供する。その結果、オペレーションがリモート・ファイル・システムの一つの上で実行されるごとに、シャドウＶｘＤ34は、これらの呼出しをフックし、したがって、シャドウ・データベース42を満たす。
【００２３】
図５は、Ｉ／Ｏリクエストがアプリケーション・プログラム30から発生したときに本発明の好ましい実施形態によって実行される処理を示すフローチャートである。この処理は、リモート・ネットワークの１つに存在するファイルへのファイルＩ／Ｏリクエストを作成するアプリケーション・プログラム30によって開始される（図５のステップ66）。上述したように、このリモート・ファイルＩ／Ｏリクエストは、ローカル・ワークステーション24で実行されている任意のプログラムから生じることがある。このリクエストは、ＩＦＳＭＧＲ32に渡される（図５のステップ68）。シャドウＶｘＤ34は、このリクエストをフックし（図５のステップ70）、そのファイルがシャドウ・データベース42内にまだ存在していないならば、シャドウ・データベース42にそのファイルを追加する（図５のステップ70）。特に、リクエストされたファイルの完全なネーミング情報は、シャドウ・データベース42に格納される。この完全なネーミング情報は、統一ネーミング規約（ＵＮＣ：Unified Naming Convention ）に従って指定されるように、サーバ共有ペアのパスネームを含んでいる。ファイルは、疎なフォーマット（すなわち、ファイルの内容が即座にはデータベースに格納されない）でデータベース42に格納される。続いて、シャドウＶｘＤ32は、適切なファイルが取り出されるように、適切なＦＳＤへファイルＩ／Ｏリクエストを渡す（ステップ74）。
【００２４】
上述したように、エージェント44（図２）に役割は、シャドウ・データベース42を維持することである。エージェント44の主な役割の一つは、シャドウ・データベース42に疎に格納されているファイルの内容を取り出すことである。エージェント44は、このタスクをバックグラウンド・スレッド(background thread) として実行する。図６は、この点に関するエージェント44によって実行される処理を示すフローチャートである。まず、エージェント44は定期的に起動される（図６のステップ76）。例えば、エージェント44は、30秒毎に起動される。続いて、エージェント44は、アクティブになり、その後スリープ状態に戻る。エージェントが起動されると、エージェントは、シャドウ・データベース42内のエントリを見て、疎な形式で格納されているエントリを識別する（図６のステップ78）。エージェント44は、優先順位キューの先頭にあるエントリから優先順位の低いエントリに向かって、疎なエントリの検索を行う。エージェント44が疎な形式で格納されたエントリを発見すると、エージェントは、そのファイルのシャドウ・コピーを捕らえることによりファイルの内容を完成させようとする（ステップ80）。続いて、エージェント44は、一定の時間が経過するか、または、エージェントの行うべき処理がなくなった後に、スリープ状態に戻る（ステップ82）。
【００２５】
エージェント44は、シャドウ・データベース42を維持する役割をも有する。一つの問題は、シャドウ・データベース42に格納されたファイルのコピーが新鮮でないか、または、余りにも古くなることがあるということである。ファイルが取り出され、シャドウ・データベース42に格納されるごとに、タイムスタンプがデータベースに入力される。このタイムスタンプは、図７に示すように使用され、新鮮でないエントリをシャドウ・データベース42から除去する。特に、エージェント44は、シャドウ・データベース42に格納されたファイルのタイムスタンプを検査する（図７のステップ84）。シャドウＶｘＤが、シャドウ・データベースのファイルをオープンする際または他の適当な時に、この検査を実行してもよい。このタイムスタンプは、予め定められたタイムスタンプ値と比較され、そのファイルが新鮮であるかどうかが判断される（ステップ86）。タイムスタンプの遮断値以前の値を有するタイムスタンプは、除去の対象となる。ファイルが、新鮮でないと判断されると、そのファイルの新しいコピーが取り出され、シャドウ・データベース42に格納される（図７のステップ88）。
【００２６】
エージェント44がシャドウ・データベース42を維持する際に検討しなければならないもう一つの問題は、シャドウ・データベース42のサイズが固定されており、このために満杯になることがあるということである。例えば、シャドウ・データベース42は、ワークステーション24のハードディスク・ドライブにおける固定サイズの一部分を構成していることがある。シャドウ・データベースに運ばれるファイルが多くなるほど、シャドウ・データベース42が満杯になる可能性が増加する。このような場合に、あるファイルをシャドウ・データベースから消去しなければならない。図８に示すように、エージェント44は、利用可能なスペースが十分にないと判断する（図８のステップ90）。この決定は、シャドウ・データベース42のファイルをオープンするごとに、または、他の選択可能な回数で、シャドウ・データベース42に書き込む際になされる。エージェント44は、シャドウ・データベース42に十分なスペースが利用可能になるまで、優先順位の最も低いファイルを一つずつ消去し始める（図８のステップ92）。
【００２７】
上述したように、シャドウ・データベース42は、ワークステーション24がネットワーク16および18に接続されている間に構築される。しかしながら、シャドウ・データベース42は、ワークステーション24がネットワーク16および18の一方または双方から切り離されているときに主に使用される。図９は、ワークステーション24がネットワーク16および18の一方または双方から切り離されているときに、シャドウ・データベース42を使用するために実行される処理を示すフローチャートである。アプリケーション・プログラム30は、ワークステーション24上で実行され、リモート・ファイル・システム上のファイルに対するファイルＩ／Ｏリクエストを開始する（図９のステップ94）。マルチ・プロバイダ・ルータ31は、リモート・ファイル・システムにファイルを保持するネットワークへの接続を確立するのに通常のネットワーク・プロバイダ33を使用できないと判断して、シャドウ・ネットワーク・プロバイダ35にリクエストをルーティング（経路選択）する。シャドウ・ネットワーク・プロバイダ35は、シャドウ・データベース42にアクセスするために、シャドウＶｘＤ34を呼び出す（図９のステップ96）。続いて、シャドウＶｘＤ34はアクティブになり、シャドウ・データベース42内を検索する（図９のステップ98）。シャドウＶｘＤ34は、ファイルがシャドウ・データベース42にあるかどうか、およびその内容（すなわち、疎な形態ではなく）が存在するかどうかをチェックする（図９のステップ100 ）。ファイルがシャドウ・データベース42内に格納されているならば、ファイルは取り出され、使用される（図９のステップ102 ）。一方、ファイルがデータベース内にないか、または、疎な形態でしか格納されていないならば、ファイルが利用可能でないことを示すエラーが返される（ステップ104 ）。
【００２８】
ワークステーション24がネットワーク14および16の一方または双方から切り離されると、ネットワークのファイル・サーバ18および20は、ワークステーション24に保持されているファイルのローカル・コピーを検査して、これらのコピーをネットワークに保持されているものと一致させなければならない。一致を行うための標準的な技術を利用することができる。エージェント44は、所与のファイル・サーバがオンライン状態であるかどうかをチェックするためのコードを備えている。サーバがオンラインであり、かつ、ローカル・ファイルが変更されているときは、統合および一致がトリガされる。
【００２９】
好ましい実施形態を参照しながら本発明を説明してきたが、特許請求の範囲に定められるような本発明の意図する範囲から逸脱することなく、さまざまな形式の変更および具体化を行うことができるのは、当業者には理解できよう。
【図面の簡単な説明】
【図１】本発明の好ましい実施形態を実行するのに適した分散システムのブロック図である。
【図２】本発明の好ましい実施形態を実行する役割を有するソフトウェア構成要素を示すブロック図である。
【図３】本発明の好ましい実施形態において実行される処理の概要を示すフローチャートである。
【図４】本発明の好ましい実施形態に従って、シャドウＶｘＤにファイル入出力リクエストをフックさせるように実行される処理を示すフローチャートである。
【図５】本発明の好ましい実施形態に従って、ファイルＩ／Ｏリクエストがリモート・ファイルになされたときに実行される処理を示すフローチャートである。
【図６】本発明の好ましい実施形態に従って、シャドウ・データベースによって実行される処理を示すフローチャートである。
【図７】本発明の好ましい実施形態において、シャドウ・データベースに新鮮でないエントリを消去するためにエージェントによって実行される処理を示すフローチャートである。
【図８】本発明の好ましい実施形態に従って、シャドウ・データベースに十分なフリー・スペースを生成するためにエージェントによって実行される処理を示すフローチャートである。
【図９】本発明の好ましい実施形態に従って、コンピュータがネットワークから切り離されたときにシャドウ・データベースを使用するために実行される処理を示すフローチャートである。
【符号の説明】
10  分散システム
12、14、16  ネットワーク
18、20、22  ファイル・サーバ
24  ワークステーション
26  メモリ
28  オペレーティング・システム
30  アプリケーション・プログラム
31  マルチ・プロバイダ・ルータ
32  インストール可能ファイル・システム・マネージャ（ＩＦＳＭＧＲ）
33  ネットワーク・プロバイダ
34  シャドウＶｘＤ
35  シャドウ・ネットワーク・プロバイダ
38、40  ネットワーク・ファイル・システム・ドライバ
42  シャドウ・データベース
44  エージェント
【図１】
0003980675.tif 000002
【図２】
0003980675.tif 000003
【図３】
0003980675.tif 000004
【図４】
0003980675.tif 000005
【図５】
0003980675.tif 000006
【図６】
0003980675.tif 000007
【図７】
0003980675.tif 000008
【図８】
0003980675.tif 000009
【図９】
0003980675.tif 000010