(57)【特許請求の範囲】
【請求項１】
ファイルとファイル管理情報を記憶する記憶装置と、
前記記憶装置からファイルの読み出しを行う複数の読み出し用計算機と、
前記記憶装置に記憶されているファイルの更新を行う一台の更新用計算機と、
を備え、
各読み出し用計算機は、
前記記憶装置に記憶されているファイルの一部についてのコピーとファイル管理情報のコピーとを、読み出しと書き込みが可能なキャッシュとして使用するメモリに予め保持しており、
前記記憶装置に記憶されているファイルの更新指示を受け付けると、前記更新用計算機に更新要求を転送し、
前記更新用計算機は、
各読み出し用計算機から転送された更新要求を受け付けると、前記記憶装置の未使用の記憶領域のアドレスを取得して、前記未使用の記憶領域に更新情報の書き込みを行い、前記記憶装置のファイル管理情報に前記書き込みを行った記憶領域のアドレスを加えることにより更新を行う、
ことを特徴とするファイル共有システム。
【請求項２】
前記更新用計算機は、ファイルの更新を終了すると、各読み出し用計算機に、更新処理の終了を通知し、
前記読み出し用計算機は、当該更新処理の終了通知を受けとると、前記キャッシュとして使用するメモリに保持していたファイル管理情報を破棄し、改めて、前記記憶装置からファイル管理情報を読み出してキャッシュとして使用するメモリにファイル管理情報として保持する、
ことを特徴とする請求項１に記載のファイル共有システム。
【請求項３】
前記読み出し用計算機は、ファイル管理情報の更新を終えると、前記更新用計算機に更新の終了を通知し、
前記更新用計算機は、全ての前記読み出し用計算機から該更新処理の終了通知を受け取ると、前記記憶装置のファイル管理情報のうち前記更新前ファイルのアドレスを未使用の記憶領域のアドレスとする、
ことを特徴とする請求項２に記載のファイル共有システム。
【請求項４】
前記更新用計算機は、各読み出し用計算機から転送された複数の更新要求を保持する更新要求待ち行列を備え、
更新処理を開始すると、前記更新要求待ち行列に保持される複数の更新要求を連続して処理し、
複数の更新要求の処理を終了した後に、更新処理の終了を、各読み出し用計算機に通知する、
ことを特徴とする請求項３に記載のファイル共有システム。
【請求項５】
ファイルとファイル管理情報とを記憶する記憶装置と、
前記記憶装置からファイルの読み出しを行う複数の読み出し用計算機と、
前記記憶装置に記憶されているファイルの更新を行う一台の更新用計算機と
を備え、
各読み出し用計算機は、
前記記憶装置に記憶されているファイルの一部についてのコピーとファイル管理情報のコピーとを、読み出しと書き込みが可能なキャッシュとして使用するメモリに予め保持しており、前記記憶装置に記憶されているファイルの更新指示を受け付けると前記更新用計算機に更新要求を転送し、
前記更新用計算機は、各読み出し用計算機から転送された複数の更新要求を保持する更新要求待ち行列を備え、
各読み出し用計算機から転送された更新要求を受け付けると、前記更新要求待ち行列に格納し、前記記憶装置の未使用の記憶領域のアドレスを取得して、前記未使用の記憶領域に更新情報の書き込みを行い、前記記憶装置のファイル管理情報に前記書き込みを行った記憶領域のアドレスを加えることにより更新を行い、前記更新要求待ち行列に格納された更新要求に従って前記ファイルと前記ファイル管理情報とを所定数だけ連続して更新を行うと、前記各読み出し用計算機に更新の終了を通知し、
前記各読み出し用計算機は、更新の終了を通知されると、前記キャッシュとして使用するメモリに保持しているファイルのコピーとファイル管理情報のコピーとを破棄し、前記記憶装置から前記ファイルと前記ファイル管理情報とを取得して前記キャッシュとして使用するメモリに保持し、前記更新用計算機に更新の終了を通知し、
前記更新用計算機は、全ての前記読み出し用計算機から前記更新処理の終了通知を受け取ると、前記記憶装置のファイル管理情報のうち前記更新前ファイルのアドレスを未使用の記憶領域のアドレスとする、
ことを特徴とするファイル共有システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークで接続された複数の計算機間でファイルシステムを共有する技術に関し、特に、大規模Ｗｅｂサーバに適したファイル共有技術に関する。
【０００２】
【従来の技術】
インターネットの普及に伴い、Ｗｅｂサーバの中には、非常に沢山のユーザによってアクセスされるＷｅｂサーバが出てきている。このようなＷｅｂサーバでは、膨大な数のアクセス要求（リード要求）を処理する必要があり、負荷集中に対する対策が不可欠となってきている。
【０００３】
このため、大規模なＷｅｂサイトでは、負荷分散装置で複数のＷｅｂサーバを並列接続したシステム構成が一般的となっている。
【０００４】
図１３は、負荷分散装置を利用したＷｅｂサーバシステムの構成を示す図である。同図に示すように、負荷分散装置１２００２は、インターネット１２０００とＷｅｂサーバ１２００３との間に配置され、負荷分散装置１２００２には、複数のＷｅｂサーバ１２００３が並列に接続される。
【０００５】
世界各地のＷｅｂクライアント（ＨＴＭＬブラウザ）１２００１から発信されたアクセス要求は、インターネット１２０００及び負荷分散装置１２００２を経由して、動的にいずれかのＷｅｂサーバ１２００３へ転送される。従って、どのＷｅｂサーバ１２００３も、同じＷｅｂコンテンツ（ＨＴＭＬファイルや画像ファイル等）にアクセスできなければならない。すなわち、各Ｗｅｂサーバ１２００３は、論理的に同一のファイルシステムにアクセスできなければならない。
【０００６】
これを実現する方式としては、大きく分けて、２通りの方式が考えられる。第一は、物理的にひとつのファイルサーバを共有する方式（以下、ボリューム共有方式という）である。これを実現する技術としては、例えば、ＮＦＳ（Network File System）に代表されるファイル共有技術が知られている。
【０００７】
図１４は、ボリューム共有方式を採用したＷｅｂサーバシステムの構成を示す図である。同図に示すように、各Ｗｅｂサーバ１２００３は、ＬＡＮ１３００１を介して、ＮＦＳサーバ１３００２に接続されており、ＮＦＳサーバ１３００２によって、ハードディスク装置１３００３に格納されているＷｅｂコンテンツを共有する。
【０００８】
第二は、それぞれのＷｅｂサーバのローカルディスク内に、同一Ｗｅｂコンテンツのコピーを保持する方式（以下、レプリケーション方式という）である。
【０００９】
図１５は、レプリケーション方式を採用したＷｅｂサーバシステムの構成を示す図である。同図に示すように、各Ｗｅｂサーバ１２００３は、ローカルディスク装置１４００１を備え、各ローカルディスク装置１４００１に、同一のＷｅｂコンテンツを格納する。
【００１０】
【発明が解決しようとする課題】
しかしながら、ボリューム共有方式は、物理的にひとつのファイルサーバを共有するので、一つのファイルサーバに、複数のＷｅｂサーバからのアクセス要求が集中することになり、ファイルサーバが読み出し性能のボトルネックになる可能性がある。
【００１１】
また、レプリケーション方式では、複数のローカルディスクに同一のＷｅｂコンテンツを保持しなければならないので、Ｗｅｂコンテンツの更新を行う場合、すべてのローカルディスクのコピーを更新しなければならず、Ｗｅｂサーバの数が増えると、更新の手間が膨大になる可能性がある。
【００１２】
本発明の目的は、ファイルの読み出し性能が高く、ファイルの更新が容易なファイル共有技術を提供することにある。
【００１３】
【課題を解決するための手段】
本発明に係るファイル共有システムは、ファイルを記憶する記憶装置と、前記記憶装置からファイルの読み出しを行う複数の読み出し用計算機と、前記記憶装置に記憶されているファイルの更新を行う一台の更新用計算機とを備え、各読み出し用計算機は、前記記憶装置に記憶されているファイルの更新を指示されると、前記更新用計算機に、更新要求を転送し、前記更新用計算機は、各読み出し用計算機から転送された更新要求に基づいて、前記記憶装置に記憶されているファイルの更新を行うことを特徴とする。
【００１４】
この場合、前記更新用計算機は、前記記憶装置に記憶されているファイルの更新を行う場合、未使用の記憶領域に、更新データの書き込みを行い、元のファイルの上書きを行わないようにしてもよい。
【００１５】
また、前記読み出し用計算機は、前記記憶装置に記憶されているファイル管理情報を予め読み出して、保持するようにしてもよい。
【００１６】
更に、この場合、前記更新用計算機は、ファイルの更新処理が終了すると、各読み出し用計算機に、更新処理の終了を通知し、前記読み出し用計算機は、当該更新処理の終了通知を受けとると、保持していたファイル管理情報を破棄し、改めて、前記記憶手段からファイル管理情報を読み出すようにしてもよい。
【００１７】
更に、前記更新用計算機は、各読み出し用計算機から転送された複数の更新要求を保持する更新要求待ち行列を備え、更新処理を開始すると、前記更新要求待ち行列に保持された一連の更新要求を連続して処理し、一連の更新要求の処理を終了した後に、更新処理の終了を、各読み出し用計算機に通知するようにしてもよい。
【００１８】
以上の場合において、複数の読み出し用計算機と更新用計算機とを、第１の通信路網を用いて接続し、更に、複数の読み出し用計算機と更新用計算機とを、第２の通信路網を介して記憶装置に接続するようにしてもよい。この場合、前記更新要求や更新処理の終了通知は、例えば、第１の通信路網を介して送られる。また、記憶装置に記憶されたファイルやファイル管理情報は、例えば、第２の通信路網を介して読み書きされる。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しつつ、詳細に説明する。
【００２０】
ここでは、本発明によるファイル共有システムを、ファイルのリード処理が中心のＷｅｂサーバシステムに適用した場合について説明する。
【００２１】
図１は、本発明によるＷｅｂサーバシステムの構成を示す図である。
【００２２】
同図に示すように、本システムは、複数（Ｎ台）の読み出し処理用の計算機１１０１と、１台の更新処理用の計算機１００１と、１台以上の記憶装置１５０１とからなる。
【００２３】
計算機１１０１及び計算機１００１は、それぞれ、ＣＰＵ、メモリ、通信路網インタフェース等を備えた計算機である。
【００２４】
複数の計算機１１０１のそれぞれでは、Ｗｅｂクライアントからのリード要求に対して、記憶装置１５０１からファイルを読み出して、Ｗｅｂクライアントに送るためのＷｅｂサーバ・プログラムが動作している。以下、Ｗｅｂサーバ・プログラムが動作している計算機を、Ｗｅｂサーバ計算機という。
【００２５】
また、計算機１００１では、各Ｗｅｂサーバ計算機１１０１からのライト要求に応じて、記憶装置１５０１に格納されているファイルを更新するための更新サーバ・プログラムが動作している。以下、計算機１００１を、更新サーバ計算機１００１という。
【００２６】
なお、ここでは、Ｗｅｂサーバ・プログラムと更新サーバ・プログラムを別々の計算機で動作させているが、Ｗｅｂサーバ・プログラムと更新サーバ・プログラムを同じ計算機で動作させることも可能である。
【００２７】
記憶装置１５０１は、複数のＷｅｂサーバ計算機１１０１によって共有される記憶装置であって、例えば、ディスクアレイによって構成される。
【００２８】
図１に示すように、複数のＷｅｂサーバ計算機１１０１は、負荷分散装置１６００に並列に接続されている。また、負荷分散装置１６００は、インターネット１７００にも接続されており、インターネット１７００を介して、Ｗｅｂクライアント１８００からのアクセス要求（ＧＥＴリクエスト等）を受信し、各Ｗｅｂサーバ計算機１１０１に、アクセス要求を振り分ける。
【００２９】
また、複数のＷｅｂサーバ計算機１１０１及び更新サーバ計算機１００１は、第１通信路網１３０１により接続されている。第１通信路網１３０１は、例えば、ＬＡＮによって構成される。Ｗｅｂサーバ計算機１１０１と更新サーバ計算機１００１は、第１通信路網１３０１を介して、制御メッセージの交換を行なう。
【００３０】
制御メッセージには、各Ｗｅｂサーバ計算機１１０１から更新サーバ計算機１００１へのライト要求や、更新サーバ計算機１００１から各Ｗｅｂサーバ計算機１１０１へのファイル管理情報変更通知、各Ｗｅｂサーバ計算機１１０１から更新サーバ計算機１００１へのキャッシュ更新完了通知などがある。各制御メッセージの詳細については後述する。
【００３１】
なお、第１通信路網１３０１は、Ｗｅｂサーバ計算機１１０１等の保守を行うためにも使うことができる。
【００３２】
また、複数のＷｅｂサーバ計算機１１０１、更新サーバ計算機１００１及び記憶装置１５０１は、第２通信路網１４０１により接続されている。第２通信路網１４０１は、例えば、ＳＡＮ（Storage Area Network）によって構成される。各Ｗｅｂサーバ計算機１１０１及び更新サーバ計算機１００１は、それぞれ、第２通信路網１４０１を介して、記憶装置１５０１に直接データ・アクセスすることができる。
【００３３】
なお、ファイバ・チャネル・ネットワークにおけるＳＣＳＩプロトコルとＩＰプロトコルの混在技術を利用することにより、第１通信路網１３０１と第２通信路網１４０１を、物理的に１種類のネットワークに統合することも可能である。
【００３４】
次に、各構成要素の詳細について説明する。
【００３５】
まず、記憶装置１５０１の詳細について説明する。
【００３６】
図１に示したように、記憶装置１５０１は、ファイル１５０３と、自分が記憶しているファイル１５０３を管理するためのファイル管理情報１５０２を記憶する。
【００３７】
図２は、ファイル管理情報１５０２の構成例を示す図である。同図に示すように、ファイル管理情報１５０２は、ファイル情報テーブル６００１とi-node情報６３０１とからなる。
【００３８】
ファイル情報テーブル６００１は、ファイル・システムに記憶している全ファイル名６１０１、６１０２、６１０３と、各ファイルのi-node情報６３０１を指し示すポインタ情報（例えば、アドレスや識別子等）６２０１、６２０２、６２０３とを保持する。
【００３９】
i-node情報６３０１は、各ファイルに関する情報が記述されるもので、ファイルの保護情報６４０１、ファイルの所有者情報６４０２、ファイルのサイズ６４０３、ファイルの作成時刻６４０４、ファイルの更新時刻６４０５、ファイルに割り当てたディスク・ブロックのアドレス・リスト６４０６が含まれる。
【００４０】
記憶装置１５０１の記憶領域は、ディスク・ブロックと呼ばれるデータ単位に分割されている。ファイルも同様にディスク・ブロックのサイズで分割し、ディスク・ブロック単位で記憶装置１５０１に記憶する。
【００４１】
i-node情報６３０１のディスク・ブロック・アドレス・リスト６４０６は、ファイルに割り当てたディスク・ブロックの記憶装置１５０１上の物理アドレスのリストを示す。
【００４２】
次に、Ｗｅｂサーバ計算機１１０１の詳細について説明する。
【００４３】
図１に示したように、各Ｗｅｂサーバ計算機１１０１は、ファイルアクセス制御手段１１０２とメモリ１１０３とを備える。そして、メモリ１１０３には、ファイル管理情報１１０４と、ディスク・ブロック（又は、ファイル）１１０５をキャッシングしている。
【００４４】
Ｗｅｂサーバ計算機１１０１は、インターネット１７００及び負荷分散装置１６００を介して、Ｗｅｂクライアント１８００からファイルの読み出し要求を受け取ると、メモリ１１０３にキャッシングしているファイル管理情報１１０４をもとに、第２通信路網１４０１を介して記憶装置１５０１から、直接にファイル１５０３をリードする。
【００４５】
また、Ｗｅｂサーバ計算機１１０１は、ファイルをライトする場合（例えば、Ｗｅｂコンテンツの更新を行う場合）、第１通信路網１３０１を介してライト要求（メッセージ）を更新サーバ計算機１００１に転送する。
【００４６】
図３は、ライト要求の構成例を示す図である。同図に示すように、ライト要求７００１は、ライトするファイル名７１０１、ファイルのどの位置にデータをライトするかを示すオフセット７１０２、ライトするデータのサイズ７１０３及びライトするデータ７１０４を含む。
【００４７】
Ｗｅｂサーバ計算機１１０１のファイルアクセス制御手段１１０２は、ファイル・アクセスがリードであるかライトであるかを判別し、その判別結果によって、ファイルアクセス処理方法を変更する。
【００４８】
図４は、ファイルアクセス制御手段１１０２の処理手順を示す図である。
【００４９】
ファイルアクセス制御手段１１０２は、まず、ファイル・アクセス要求がリードであるか、ライトであるかを判別する（Ｓ１０００２）。
【００５０】
その結果、ファイル・アクセス要求がリードであった場合は（Ｓ１０００２：リード）、ファイルのリード処理を開始する（Ｓ１０００３）。
【００５１】
一方、ファイル・アクセス要求がライトであった場合（Ｓ１０００２：ライト）、ライト要求７００１を、第１通信路網１３０１を介して、更新サーバ計算機１００１に転送する（Ｓ１０００４）。
【００５２】
次に、更新サーバ計算機１００１の詳細について説明する。
【００５３】
更新サーバ計算機１００１は、ファイル管理情報１５０２の変更やファイルのライトなど、記憶装置１５０１にデータを書き込む必要がある処理を集中的に行なう計算機である。
【００５４】
図１に示したように、更新サーバ計算機１００１は、メモリ１００２を備え、メモリ１００２に、ファイル管理情報１００３をキャッシングしている。また、メモリ１００２には、ライト要求待ち行列（ライト要求キュー）８００１が設けられている。
【００５５】
更新サーバ計算機１００１は、Ｗｅｂコンテンツ等の更新を行う場合に、Ｗｅｂサーバ計算機１１０１からライト要求７００１を受け取ると、ライト要求７００１をライト要求待ち行列８００１に挿入する。
【００５６】
図５は、ライト要求待ち行列の構成を示す図である。
【００５７】
同図に示すように、ライト要求待ち行列８００１は、キュー・ヘッダ８０１０及び複数のキュー・エントリ８０２０により、複数のライト要求７００１を保持・管理している。
【００５８】
更新サーバ計算機１００１は、例えば、Ｗｅｂコンテンツの更新を行うユーザから、これからＷｅｂコンテンツの更新を開始することを通知されると、以後、ライト要求待ち行列８００１へのライト要求７００１の挿入を開始し、同ユーザから必要なすべてのファイルの更新を終了したことを通知されると、ライト処理を開始する。すなわち、ライト要求待ち行列８００１から、順次、ライト要求７００１を取り出し、各ライト要求７００１で指示されているファイル（ディスク・ブロック）の更新を行う。
【００５９】
なお、ユーザからの明示的な指示を受けた場合ではなく、システム管理者が事前に指定した条件が成立した場合（例えば、ライト要求待ち行列の長さが一定以上になった場合や、最後にライト処理を行ってから一定時間以上経過した場合）に、更新サーバ計算機１００１がライト処理を開始するようにしてもよい。
【００６０】
この場合、更新サーバ計算機１００１は、指定条件が成立するかを判定するために、ライト処理開始可否チェック用データを管理する。
【００６１】
図６は、ライト処理開始可否チェック用データの構成例を示す図である。同図に示すように、ライト処理開始可否チェック用データ９００１は、待ち行列８００１中の現在のライト要求数９１０１、ライト処理開始要求数９１０２、最終ライト処理時刻９１０３、現在時刻９１０４及びライト処理開始時間間隔９１０５を含む。このうち、ライト処理開始要求数９１０２とライト処理開始時間間隔９１０５は、システム管理者が事前に指定するパラメータである。
【００６２】
また、更新サーバ計算機１００１は、記憶装置１５０１におけるディスク・ブロックの使用状況を示すディスク・ブロック管理情報を管理している。
【００６３】
図７は、ディスク・ブロック管理情報の構成例を示す図である。同図に示すように、ディスク・ブロック管理情報５００１は、未使用ディスク・ブロック・リスト５１０１、使用済みディスク・ブロック・リスト５２０１及び一時的ディスク・ブロック・リスト５３０１からなる。
【００６４】
未使用ディスク・ブロック・リスト５１０１は、どのファイルにも割り当てていないディスク・ブロックのアドレス５１０２、５１０３等を管理するためのものである。使用済みディスク・ブロック・リスト５２０１は、ファイルに割り当て済みのディスク・ブロックのアドレス５２０２、５２０３等を管理するためのものである。一時的ディスク・ブロック・リスト５３０１は、ライト処理の間に、ライト処理対象のファイルに割り当てられているディスク・ブロックのアドレス５３０２、５３０３等を管理するためのものである。一時的ディスク・ブロック・リスト５３０１の詳細については後述する。
【００６５】
更新サーバ計算機１００１は、ユーザからの明示的な指示を受ける等して、ライト処理を開始すると、ライト要求待ち行列８００１から取り出されたライト要求７００１の指示に従って、第２通信路網１４０１を介して記憶装置１５０１にファイルを書き込む。
【００６６】
このとき、ファイルを書き込む記憶装置１５０１のディスク・ブロックは、そのファイルがすでに使用しているディスク・ブロックとは別にする。例えば、図１に示したファイル１５０３の内容を書き換える場合、ファイル１５０３を記憶していた場所（ディスク・ブロック）にデータを上書きするのではなく、まず、未使用のディスク・ブロック１５０４に更新データをライトする。このように、まず、未使用のディスク・ブロックに更新データをライトするので、各Ｗｅｂサーバ計算機１１０１は、更新データの書き込みの最中でも、更新前のデータに引き続きアクセスすることが可能になる。
【００６７】
そして、ライト処理終了後、更新サーバ計算機１００１は、ファイル管理情報１００３を更新し、更新したファイル管理情報１００３を第２通信路網１４０１を介して記憶装置１５０１に書き込む。最後に、更新サーバ計算機１００１は、ファイル管理情報変更通知を第１通信路網１３０１を介して各Ｗｅｂサーバ計算機１１０１に送信することによって、ファイル管理情報１５０２に変更があったことを全Ｗｅｂサーバ計算機１１０１に通知する。
【００６８】
次に、本実施形態におけるファイル・アクセス処理の詳細について説明する。
【００６９】
まず、更新サーバ計算機１００１及び各Ｗｅｂサーバ計算機１１０１が共有ファイル・システムをマウントする処理手順について説明する。
【００７０】
図８は、本マウント処理の流れを示す図である。本マウント処理は、更新サーバ計算機１００１及びＷｅｂサーバ計算機１１０１のそれぞれにおいて、起動時に実行される。
【００７１】
まず、更新サーバ計算機１００１及び各Ｗｅｂサーバ計算機１１０１は、第２通信路網１４０１を介して記憶装置１５０１からファイル管理情報１５０２を直接リードする（Ｓ２００１、Ｓ２１０１、Ｓ２２０１）。
【００７２】
リードしたファイル管理情報は、更新サーバ計算機１００１のメモリ１００２及び各Ｗｅｂサーバ計算機１１０１のメモリ１１０３にそれぞれキャッシングされる（Ｓ２００２、Ｓ２１０２、Ｓ２２０２）。
【００７３】
以上のようにしてマウント処理が完了する。なお、各Ｗｅｂサーバ計算機１１０１は、更新サーバ計算機１００１からファイル管理情報変更通知を受け取るまで、リードしたファイル管理情報１１０４を保持し、更新サーバ計算機１００１からファイル管理情報変更通知を受け取ると、メモリ１１０３にキャッシュされたファイル管理情報１１０４を無効にする。
【００７４】
なお、マウント処理は、各Ｗｅｂサーバ計算機１１０１及び更新サーバ計算機１００１が、それぞれ、ファイル管理情報１５０２を記憶装置１５０１からリードするだけであるので、各計算機間で互いに同期を取る必要はない。
【００７５】
次に、Ｗｅｂサーバ計算機１１０１が、ファイルをリードする処理手順について説明する。
【００７６】
図９は、ファイル・リード処理の流れを示す図である。
【００７７】
ファイルをリードする場合、Ｗｅｂサーバ計算機１１０１は、ファイル管理情報１１０４を参照し、リードするファイルのi-node情報６３０１から、ディスク・ブロック・アドレス・リスト６４０６を得る（Ｓ３００１）。
【００７８】
そして、Ｗｅｂサーバ計算機１１０１は、そのディスク・ブロック・アドレス・リスト６４０６に従って、第２通信路網１４０１を介して記憶装置１５０１からディスク・ブロック単位でデータを直接リードする（Ｓ３００２、図１の矢印▲１▼）。リードしたディスク・ブロックは、Ｗｅｂサーバ計算機１１０１のメモリ１１０３に保持（キャッシング）される（Ｓ３００３）。
【００７９】
なお、ファイルのリード処理でも、各計算機間で互いに同期をとる必要はない。
【００８０】
次に、Ｗｅｂサーバ計算機１１０１が、ファイルをライトする処理手順について説明する。
【００８１】
図１０は、ファイル・ライト処理の流れを示す図である。また、図１１は、ファイル・ライト処理の際の各種データの流れを示す図である。なお、簡単のため、図１１では、負荷分散装置１６００等は省略している。
【００８２】
図１０に示すように、ファイルをライトする場合、Ｗｅｂサーバ計算機１１０１は、第１通信路網１３０１を介して、更新サーバ計算機１００１にライト要求７００１を転送する（Ｓ４１０１、図１１の矢印▲１▼）。
【００８３】
更新サーバ計算機１００１は、ライト要求７００１をＷｅｂサーバ計算機１１０１から受信すると、ライト要求７００１を、順次、ライト要求待ち行列８００１に挿入する。
【００８４】
そして、ライト処理を開始するか否かを判定する（Ｓ４００１）。例えば、ファイルの更新を行っているユーザからの指示があるか否かを判定する。その結果、未だ、ライト処理の開始が指示されていない場合は、指示があるまで、ライト処理の開始を遅延させる。
【００８５】
また、システム管理者が事前に指定した条件、例えば、ライト要求待ち行列８００１の長さによってライト処理を開始するか否かを判断する場合は、更新サーバ計算機１００１は、ライト処理開始可否チェック用データ９００１を参照し、ライト要求数９１０１がライト処理開始要求数９１０２以上であるか否かを判定する。その結果、ライト要求数９１０１がライト処理開始要求数９１０２より少なければ、ライト処理開始要求数９１０２以上のライト要求７００１を受け取るまで、ライト処理の開始を遅延させる。
【００８６】
そして、ユーザからの指示があった場合や、事前に指定した条件が成立した場合、更新サーバ計算機１００１はライト処理を開始する。
【００８７】
以下の処理では、簡単のために、ライト要求数が１個の場合を考える。ライト要求待ち行列８００１に、複数のライト要求が含まれる場合は、以下に示すステップＳ４００２〜Ｓ４００６までの処理を、ライト要求数分繰り返す。
【００８８】
更新サーバ計算機１００１は、ライト処理を開始すると、まず、未使用ディスク・ブロック・リスト５１０１から、ファイルをライトするための未使用ディスク・ブロックのアドレスを取り出す（Ｓ４００２）。取り出すディスク・ブロックの個数は、ライト要求７００１が指示するデータ・サイズ分である。取り出した未使用ディスク・ブロック１５０４のアドレスは、使用済みディスク・ブロック・リスト５２０１に挿入する。
【００８９】
そして、更新サーバ計算機１００１は、第２通信路網１４０１を介して、ライト要求７００１が指示するデータを、記憶装置１５０１上の未使用ディスク・ブロック１５０４に書き込む（Ｓ４００３、図１１の矢印▲２▼）。
【００９０】
次に、更新サーバ計算機１００１は、ファイル管理情報１００３の更新を行なう（Ｓ４００４）。更新を行なうのは、i-node情報６３０１のうち、ファイル・サイズ６４０３、更新時刻６４０５及びディスク・ブロック・アドレス・リスト６４０６の項目である。ディスク・ブロック・アドレス・リスト６４０６の変更手順については、後述する。
【００９１】
ファイル管理情報１００３の更新を終了すると、変更前ディスク・ブロック（更新によって使われなくなるディスク・ブロック）のアドレスを、使用済みディスク・ブロック・リスト５２０１から取り出し、一時的ディスク・ブロック・リスト５３０１に挿入する（Ｓ４００５）。
【００９２】
そして、更新サーバ計算機１００１は、更新したファイル管理情報１００３を、第２通信路網１４０１を介して記憶装置１５０１に書き込む（Ｓ４００６、図１１の矢印▲３▼）。
【００９３】
なお、この時点ではまだ、各Ｗｅｂサーバ計算機１１０１は、キャッシングされている変更前のファイル管理情報１１０４をもとに、ファイルのリードを行なっている。前述したように、更新サーバ計算機１００１は、未使用ディスク・ブロックに更新データを書き込むので、Ｗｅｂサーバ計算機１１０１は、更新前のディスク・ブロックをリードすることができる。
【００９４】
次に、更新サーバ計算機１００１は、第１通信路網１３０１を介して、全てのＷｅｂサーバ計算機１１０１にファイル管理情報変更通知を行う（Ｓ４００７、Ｓ４００８、図１１の矢印▲４▼）。この通知は、各Ｗｅｂサーバ計算機１１０１に、メモリ１１０３にキャッシングしているファイル管理情報１１０４を更新させるために行なう。
【００９５】
更新サーバ計算機１００１は、全てのＷｅｂサーバ計算機１１０１に対するファイル管理情報変更通知を完了すると、全Ｗｅｂサーバ計算機１１０１からキャッシュ更新完了通知を受け取るまで待機する（Ｓ４００９）。
【００９６】
各Ｗｅｂサーバ計算機１１０１は、ファイル管理情報変更通知を受け取ると、メモリ１１０３にキャッシングしているファイル管理情報１１０４とディスク・ブロック（又は、ファイル）１１０５を破棄する（Ｓ４１０２、Ｓ４２０１）。
【００９７】
次に、各Ｗｅｂサーバ計算機１１０１は、第２通信路網１４０１を介して、記憶装置１５０１からファイル管理情報１５０２を読み出す（Ｓ４１０３、Ｓ４２０２、図１１の矢印▲５▼）。読み出したファイル管理情報１５０２は、各Ｗｅｂサーバ計算機１１０１のメモリ１１０３にキャッシングされる。
【００９８】
最後に、各Ｗｅｂサーバ計算機１１０１は、第１通信路網１３０１を介して、更新サーバ計算機１００１にキャッシュ更新完了通知を行なう（Ｓ４１０４、Ｓ４２０３、図１１の矢印▲６▼）。
【００９９】
全Ｗｅｂサーバ計算機１１０１からキャッシュ更新完了通知を受け取ると、更新サーバ計算機１００１は、もう、どのＷｅｂサーバ計算機１１０１も一時的ディスク・ブロック・リスト５１０３内のディスク・ブロックからデータをリードしないことがわかるので、一時的ディスク・ブロック・リスト５１０３から全ディスク・ブロック・アドレス５３０２、５３０３等を取り出し、未使用ディスク・ブロック・リスト５１０１に挿入する（Ｓ４０１０）。
【０１００】
以上のようにして、ファイルのライト処理が行われる。
【０１０１】
前述したように、本実施形態では、更新サーバ計算機１００１のライト要求待ち行列８００１に複数のライト要求をためて、複数のライト要求をまとめて処理した後に、各Ｗｅｂサーバ計算機１１０１にファイル管理情報変更通知を行っているので、各Ｗｅｂサーバ計算機１１０１がキャッシングしているファイル管理情報１１０４やディスク・ブロック１１０５の破棄回数を減らすことができる。結果として、Ｗｅｂサーバ計算機１１０１のキャッシュ・ヒット率が高くなり、応答時間性能やファイルをリードする速度を向上させることができる。
【０１０２】
次に、前述したステップＳ４００４におけるディスク・ブロック・アドレス・リスト６４０６の変更手順について説明する。
【０１０３】
図１２は、ディスク・ブロック・アドレス・リスト６４０６の変更の様子を示す図である。
【０１０４】
ここでは、ディスク・ブロック１１００１〜１１００５によって構成されるファイル１１０００に対してライトを行う場合を考える。
【０１０５】
まず、ライト要求７００１が、ファイル１１０００の既存の内容を変更する場合について説明する。この場合、ファイル１１０００に割り当てたディスク・ブロック１１００１〜１１００５のうち、変更の必要なディスク・ブロックを、ライト要求７００１のオフセットの値をもとに特定する。
【０１０６】
次に、特定した変更前ディスク・ブロック（ＤＢ）１１００３と、前述したステップＳ４００３で書き込んだ変更後ディスク・ブロック１１００６とを入れ替える。このために、ディスク・ブロック・アドレス・リスト６４０６のエントリ６４０７〜６４１１のうち、変更前ディスク・ブロック１１００３のアドレスが書かれていたエントリ６４０９を、変更後ディスク・ブロック１１００６のアドレスに書き換える。
【０１０７】
エントリ６４０９の書き換えが終了すると、変更前ディスク・ブロック１１００３のアドレスは、使用済みディスク・ブロック・リスト５２０１から取り出され、一時的ディスク・ブロック・リスト５３０１に挿入される。
【０１０８】
次に、ライト要求７００１が、ファイル１１０００へのデータ追加である場合について説明する。この場合、まず、ディスク・ブロック・アドレス・リスト６４０６に新しいエントリ６４１２を作成する。そして、作成したエントリ６４１２に、変更後ディスク・ブロック１１００７のアドレスを書き込む。
【０１０９】
以上のようにして、ディスク・ブロック・アドレス・リスト６４０６の変更が行われる。
【０１１０】
なお、前述した実施形態では、各Ｗｅｂサーバ計算機１１０１のファイルアクセス制御手段１１０２が、ファイル・アクセス要求がリードであるかライトであるかを判別し、ライトであった場合は、ライト要求を更新サーバ計算機１００１に転送していたが、例えば、負荷分散装置１６００において、プロトコルの違い（例えば、ｆｔｐとｈｔｔｐ）等によってファイル・アクセス要求の区別ができる場合は、負荷分散装置１６００において、ファイル・アクセス要求がリードであるかライトであるかを判別し、ライト要求については、更新サーバ計算機１００１に転送するようにしてもよい。
【０１１１】
また、各Ｗｅｂサーバ計算機１１０１及び更新サーバ計算機１００１のそれぞれにローカルディスク装置を設け、各ローカルディスク装置に同一のファイルを格納するレプリケーション方式を採用したシステム構成の場合にも、前述したファイル共有技術を適用することができる。この場合、更新サーバ計算機１００１は、各Ｗｅｂサーバ計算機１１０１から転送されたライト要求に基づいて、自己のローカルディスク装置に対するライト処理を行い、ライト処理が終了すると、すべてのＷｅｂサーバ計算機１１０１に、その旨を通知する。ライト処理終了を通知された各Ｗｅｂサーバ計算機１１０１は、更新サーバ計算機１００１のローカルディスク装置から、自己のローカルディスク装置に、共有しているファイルシステムをコピーする。
【０１１２】
【発明の効果】
以上詳細に説明したように、本発明によれば、ファイルの読み出し性能が高く、ファイルの更新が容易なファイル共有技術を提供できる。
【図面の簡単な説明】
【図１】  ファイル共有システムの構成を示す図である。
【図２】  ファイル管理情報の構成を示す図である。
【図３】  ライト要求の構成を示す図である。
【図４】  ファイルアクセス制御手段の処理の流れを示す図である。
【図５】  ライト要求待ち行列の構成を示す図である。
【図６】  ライト処理開始可否チェック用データの構成を示す図である。
【図７】  ディスク・ブロック管理情報の構成を示す図である。
【図８】  共有ファイルシステムのマウント処理のフローチャートである。
【図９】  ファイル・リード処理のフローチャートである。
【図１０】  ファイル・ライト処理のフローチャートである。
【図１１】  ファイル・ライト処理の際の各種データの流れを示す図である。
【図１２】  i-node情報変更処理を説明するための図である。
【図１３】  負荷分散装置を利用したＷｅｂサーバシステムの構成を示す図である。
【図１４】  ボリューム共有方式を採用したＷｅｂサーバシステムの構成を示す図である。
【図１５】  レプリケーション方式を採用したＷｅｂサーバシステムの構成を示す図である。
【符号の説明】
１００１  更新サーバ計算機
１１０１  Ｗｅｂサーバ計算機
１１０２  ファイルアクセス制御手段
１３０１  第１通信路網
１４０１  第２通信路網
１５０１  記憶装置
１５０２  ファイル管理情報
５００１  ディスク・ブロック管理情報
５１０１  未使用ディスク・ブロック・リスト
５２０１  使用済みディスク・ブロック・リスト
５３０１  一時的ディスク・ブロック・リスト
６３０１  i-node情報
９００１  ライト処理開始可否チェック用データ
【図１】
0003954296.tif 000002
【図２】
0003954296.tif 000003
【図３】
0003954296.tif 000004
【図４】
0003954296.tif 000005
【図５】
0003954296.tif 000006
【図６】
0003954296.tif 000007
【図７】
0003954296.tif 000008
【図８】
0003954296.tif 000009
【図９】
0003954296.tif 000010
【図１０】
0003954296.tif 000011
【図１１】
0003954296.tif 000012
【図１２】
0003954296.tif 000013
【図１３】
0003954296.tif 000014
【図１４】
0003954296.tif 000015
【図１５】
0003954296.tif 000016