(57)【要約】【課題】ＮＡＳサーバを用いたコンピュータシステムにおける効果的なキャッシュシステムを提供する。【解決手段】ネットワーク上でＮＡＳサーバ２０とクライアント３０との間に所定のクライアント３０から送られたＮＡＳサーバ２０に対する操作要求を一時的に保持するフロントエンドサーバ１０を介在させる。このフロントエンドサーバ１０は、ＮＡＳサーバ２０に格納されているデータファイルの相互関係に関する情報を保持し、この情報に基づきクライアント３０から受け付けた操作要求を最適化して、ＮＡＳサーバ２０に送信する。【選択図】        図１
2004326162.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に設けられ当該ネットワーク上の装置から利用可能なＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）サーバと、
前記ネットワーク上に設けられて所定の装置から送られた前記ＮＡＳサーバに対する操作要求を一時的に保持するフロントエンドサーバとを備え、
前記フロントエンドサーバは、前記ＮＡＳサーバに格納されているデータファイルの相互関係に関する情報を保持し、当該情報に基づき前記装置から受け付けた操作要求を変換して、前記ＮＡＳサーバに送信することを特徴とするネットワークシステム。
【請求項２】
前記フロントエンドサーバは、前記装置から受け付けた複数の操作要求を合成して前記ＮＡＳサーバに送信することを特徴とする請求項１に記載のネットワークシステム。
【請求項３】
前記フロントエンドサーバは、前記ＮＡＳサーバに格納されているデータファイルの相互関係に基づいて、前記装置から受け付けた操作要求の実行順を制御することを特徴とする請求項１に記載のネットワークシステム。
【請求項４】
前記フロントエンドサーバは、前記操作要求に基づいて前記ＮＡＳサーバから読み出されたデータを保持し、前記装置から受け付けた操作要求に対して、保持している当該データを用いて応答することを特徴とする請求項１に記載のネットワークシステム。
【請求項５】
前記フロントエンドサーバを複数備え、各フロントエンドサーバと前記ＮＡＳサーバとの間の通信プロトコルとして、所定のフロントエンドサーバによる操作を他のフロントエンドサーバに通知する機能を持つ通信プロトコルを用いたことを特徴とする請求項１に記載のネットワークシステム。
【請求項６】
ネットワーク上に設けられたＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）サーバに対する操作要求および当該操作要求に基づいて当該ＮＡＳサーバから読み出されたデータを保持するキャッシュメモリと、
前記ネットワーク上の所定の装置からの前記操作要求を受け付け、前記キャッシュメモリに格納されているキャッシュデータに対して当該操作要求に基づく操作を行うクライアント操作処理部と、
前記クライアント操作処理部により前記キャッシュデータに対して行われた操作を前記ＮＡＳサーバに格納されているデータファイルに反映させるための操作列を生成して当該ＮＡＳサーバに送信するデータ変更反映処理部と
を備えることを特徴とするサーバ。
【請求項７】
前記クライアント操作処理部は、前記装置から受け付けた複数の操作要求を１つの操作要求に合成して前記キャッシュデータに対する操作を行うことを特徴とする請求項６に記載のサーバ。
【請求項８】
前記データ変更反映処理部は、前記クライアント操作処理部により前記キャッシュデータに対して行われた複数の操作を１つの操作にまとめて前記操作列を生成することを特徴とする請求項６に記載のサーバ。
【請求項９】
前記データ変更反映処理部は、前記キャッシュデータに対する所定の操作が前記キャッシュメモリに保持されている他の操作に影響を与える場合に、当該所定の操作と当該他の操作との間の依存関係を調べ、この操作間の依存関係に関する情報に基づいて、各操作に対する前記操作列を生成することを特徴とする請求項６に記載のサーバ。
【請求項１０】
前記データ変更反映処理部は、前記ＮＡＳサーバのファイルシステムにおけるデータファイルの構造に基づいて、前記所定の操作と前記他の操作との間の依存関係を判断することを特徴とする請求項９に記載のサーバ。
【請求項１１】
前記キャッシュメモリは、不揮発性記録媒体であることを特徴とする請求項６記載のサーバ。
【請求項１２】
ネットワークに接続されたコンピュータを用いたデータ処理方法であって、
前記ネットワーク上の所定の端末装置から、当該ネットワーク上に設けられたＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）サーバに対する操作要求を受け付け、所定のメモリに格納するステップと、
前記所定のメモリに格納された前記操作要求を、前記ＮＡＳサーバにおける操作の内容に基づいて変換するステップと、
変換された前記操作要求を、前記ＮＡＳサーバの負荷状況に応じて当該ＮＡＳサーバへ転送するステップと
を含むことを特徴とするデータ処理方法。
【請求項１３】
前記操作要求を変換するステップでは、前記操作要求による操作の対象である、前記ＮＡＳサーバのデータファイルの相互関係に基づいて、複数の前記操作要求を１つの操作要求に合成することを特徴とする請求項１２に記載のデータ処理方法。
【請求項１４】
ネットワークに接続されたコンピュータを、当該ネットワーク上に設けられたＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）サーバに対する操作要求および当該操作要求に基づいて当該ＮＡＳサーバから読み出されたデータを一時的に保持するサーバとして機能させるプログラムであって、
前記ネットワーク上の所定の装置からの前記操作要求を受け付け、所定のメモリに格納されているキャッシュデータに対して当該操作要求に基づく操作を行う手段と、
前記キャッシュデータに対して行われた操作を前記ＮＡＳサーバに格納されているデータファイルに反映させるための操作列を生成して当該ＮＡＳサーバに送信する手段として
前記コンピュータを機能させることを特徴とするプログラム。
【請求項１５】
前記キャッシュデータに対して操作を行う場合に、前記装置から受け付けた複数の操作要求を１つの操作要求に合成して当該操作要求に基づく操作を行うことを特徴とする請求項１４に記載のプログラム。
【請求項１６】
前記操作列を生成する場合に、前記キャッシュデータに対して行われた複数の操作を１つの操作にまとめて前記操作列を生成することを特徴とする請求項１４に記載のプログラム。
【請求項１７】
前記操作列を生成する場合に、前記キャッシュデータに対する所定の操作が前記キャッシュメモリに保持されている他の操作に影響を与えるかどうかを判断し、当該所定の操作と当該他の操作との間の依存関係に基づいて、各操作に対する前記操作列を生成することを特徴とする請求項１４に記載のプログラム。
【請求項１８】
ネットワークに接続されたコンピュータを制御して、所定のデータ処理を実行させるプログラムであって、
前記ネットワーク上の所定の端末装置から、当該ネットワーク上に設けられたＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）サーバに対する操作要求を受け付け、所定のメモリに格納する処理と、
前記所定のメモリに格納された前記操作要求を、前記ＮＡＳサーバにおける操作の内容に基づいて変換する処理と、
変換された前記操作要求を、前記ＮＡＳサーバの負荷状況に応じて当該ＮＡＳサーバへ転送する処理とを前記コンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムのメモリ管理に関し、特にＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）システムに好適な、効率の良いメモリ割当てを実現するメモリ管理に関する。
【０００２】
【従来の技術】
従来、ネットワークを介して接続された各種のハードウェア（端末）にて構成された種々のコンピュータシステムが利用されている。そのようなコンピュータシステムに、ネットワークに直接接続して使用される記憶装置（ＮＡＳ：Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）を用いたシステムがある。このシステムでは、ネットワークを介してデータファイル（以下、単にファイルと称す）を共用できる独立したファイルサーバとしてＮＡＳを機能させ、ネットワーク上のクライアントからアクセスして利用できるようにしている。
【０００３】
図７は、ＮＡＳサーバの一般的な構成を模式的に示す図である。
図７に示すように、ＮＡＳサーバ７００は、記憶手段であるハードディスク装置（ＨＤＤ）７０１と、プログラム制御されたＣＰＵ等の機能として実現されファイルの管理手段であるファイルシステム７０２と、ネットワーク通信機能を実現するネットワークインターフェイス７０３とを備える。ファイルシステム７０２としては、例えば米国ＩＢＭ社のＪＦＳ（Ｊａｒｎａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）を用いることができる。
クライアントからネットワークインターフェイス７０３を介してリード要求を受信したＮＡＳサーバ７００は、ファイルシステム７０２の管理下でハードディスク装置７０１からデータの読み出しを行う。そして、読み出したデータを、ネットワークインターフェイス７０３を介して、当該クライアントへの応答として返送する。また、クライアントからライト要求を受信したＮＡＳサーバ７００は、ファイルシステム７０２の管理下でハードディスク装置７０１におけるデータの書込みを行い、書込みが済んだ後に当該クライアントへの応答として書込み完了通知を行う。
【０００４】
このＮＡＳサーバ７００における性能向上を図る工夫として、ＮＡＳサーバ７００にライト（書込み）キャッシュを設けることが従来から行われている。一連のデータ書込み動作では、機械的な動作の含まれるハードディスク装置７０１への書込みに最も時間を要する。そこで、高速な半導体メモリ（以下、キャッシュメモリ）を用意してファイルシステム７０２のライトキャッシュとして用いることが行われている（例えば、特許文献１参照）。クライアントから送られたライトデータを一時的にキャッシュメモリに格納し、この時点でクライアントへ書込み完了通知を行う。これにより、クライアントは書込み完了を認識するので、ハードディスク装置７０１への実際の書込み処理の完了を待たずに他の処理へ移行することができる。
【０００５】
またＮＡＳサーバ７００は、このようにしてキャッシュメモリに蓄積されたデータを、ハードディスク装置７０１の負荷の状況に合わせてハードディスクへ書込む。このような制御を行うことにより、ＮＡＳサーバ７００自身の処理効率を高め、性能向上を図ることができる。
さらに、予期せぬ事故などを原因としてＮＡＳサーバ７００がダウンした場合に、キャッシュメモリに蓄積されたデータが失われることを避けるため、このキャッシュメモリとしてフラッシュメモリ等の不揮発性メモリを用いることが一般的に行われている。ファイルシステム７０２としてＮＦＳを用いている場合は、プロトコル上の規定から、ライト要求に対し、不揮発性記録媒体（Ｓｔａｂｌｅ  Ｓｔｏｒａｇｅ）にデータを記録した後にクライアントへ応答を返すことが定められているので、キャッシュメモリには必然的に不揮発性メモリを用いることとなる。
【０００６】
上記のようなＮＡＳサーバの一形態として、複数台のハードディスク装置を組合せて用い、アクセスを分散させることにより、処理速度や信頼性の向上を図ったＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ（Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓ）システムがある。このＲＡＩＤシステムにおいても、キャッシュメモリを設けることによって性能の向上を図ることが行われており、このキャッシュメモリとして不揮発性メモリが使用されている（例えば、特許文献２参照）。
【０００７】
【特許文献１】
特開平８−３２８９３５号公報
【特許文献２】
特開２００２−１８９６３７号公報（第４頁）
【０００８】
【発明が解決しようとする課題】
上述したように、ＮＡＳサーバには不揮発性メモリを用いたキャッシュメモリを設けることが一般に行われており、その導入手法として従来は、ファイルシステムのライトキャッシュとして導入する手法と、ＲＡＩＤシステムのキャッシュとして導入する手法とが採られていた。
【０００９】
しかし、ファイルシステムのライトキャッシュとしてキャッシュメモリを導入した場合、次のような問題があった。すなわち、ファイルシステムが不揮発性メモリをライトキャッシュとして利用するには、ファイルシステム自身を、ライトキャッシュを使用可能に設計する必要がある。しかし、クラスタ化、フェイルオーバ、スナップショット等多様な機能が要求されるファイルシステムは、今日既に非常に複雑な構造になっている。そのため、既存のファイルシステムを変更してライトキャッシュを導入するには多大なコストがかかる。ＮＡＳサーバを実現するソフトウェア製品の場合、特定のハードウェアに対応してライトキャッシュを導入するための大幅な変更を行うことは開発コスト上の負担が大きく、好ましくない。また、かかるソフトウェアを購入して自社のハードウェアと組合せて販売するベンダーにとっては、ファイルシステムに変更を加えることは、技術上および契約上の理由から困難である。
【００１０】
さらにまた、ファイルシステムが動作するハードウェアが故障した場合、このキャッシュメモリも同時に使用不可能になる。そのため、保守等の目的で他の装置からこのキャッシュにアクセスし、蓄積されているデータを取得することは難しい。
【００１１】
一方、ＲＡＩＤシステムのようにディスクシステムの一部として不揮発性メモリを利用する場合、ファイルシステムからは完全に透明に不揮発性メモリを利用可能なので、上記のファイルシステムのライトキャッシュとして導入する場合のような問題は発生しない。しかしこの場合も、次のような問題があった。すなわち、不揮発性メモリをＲＡＩＤシステムのキャッシュメモリとして導入した場合、クライアントからの操作要求（リード（読み出し）要求及びライト要求）が、ファイルシステム、バッファシステム及びディスクドライバでの処理が終了した後にＲＡＩＤ上のキャッシュメモリに記録されることになる。そのため、クライアントへの応答時間やＮＡＳサーバ自身のスループットにおける大幅な性能向上は期待できなかった。
【００１２】
また、クライアントからのライト要求は、多くの処理が行われるほど、ファイルの広い範囲に影響を及ぼす。したがって、キャッシュメモリへ記録されるまでに多くの処理が行われていると、１つのライト処理に対して必要なメモリの容量が増加するため、キャッシュメモリの利用効率が低下する。
【００１３】
そこで本発明は、上記の問題に鑑み、ネットワークで利用されるコンピュータシステムにおける効果的なキャッシュシステムを提供することを目的とする。
また本発明は、かかるキャッシュシステムを用いてＮＡＳサーバにおける効率の良いメモリ管理を実現することを他の目的とする。
【００１４】
【課題を解決するための手段】
上記の目的を達成する本発明は、ＮＡＳサーバと、ネットワーク上に設けられて所定のクライアント（コンピュータその他の端末装置）から送られたＮＡＳサーバに対する操作要求を一時的に保持するフロントエンドサーバとを備えるネットワークシステムとして実現される。ここで、このフロントエンドサーバは、ＮＡＳサーバに格納されているデータファイルの相互関係に関する情報を保持し、この情報に基づきクライアントから受け付けた操作要求を変換して、ＮＡＳサーバに送信することを特徴とする。
このフロントエンドサーバは、ＮＡＳサーバとクライアントとの間に介在し、操作要求に基づいてＮＡＳサーバから読み出されたデータを保持し、クライアントから受け付けた操作要求に対して、保持しているデータを用いて応答する、ＮＡＳサーバに対するキャッシュシステムとして機能する。
【００１５】
より詳細には、このフロントエンドサーバは、ネットワーク上に設けられたＮＡＳサーバに対する操作要求および操作要求に基づいてＮＡＳサーバから読み出されたデータを保持するキャッシュメモリと、ネットワーク上の所定のクライアントからの操作要求を受け付け、キャッシュメモリに格納されているキャッシュデータに対して操作要求に基づく操作を行うクライアント操作処理部と、クライアント操作処理部によりキャッシュデータに対して行われた操作をＮＡＳサーバに格納されているデータファイルに反映させるための操作列を生成してＮＡＳサーバに送信するデータ変更反映処理部とを備える。
【００１６】
さらに詳細には、このクライアント操作処理部は、クライアントから受け付けた複数の操作要求を１つの操作要求に合成してキャッシュデータに対する操作を行う。また、データ変更反映処理部は、クライアント操作処理部によりキャッシュデータに対して行われた複数の操作を１つの操作にまとめて操作列を生成する。さらに、このデータ変更反映処理部は、キャッシュデータに対する所定の操作がキャッシュメモリに保持されている他の操作に影響を与える場合に、この所定の操作と他の操作との間の依存関係を調べ、この操作間の依存関係に関する情報に基づいて、各操作に対する操作列を生成する。この際、データ変更反映処理部は、ＮＡＳサーバのファイルシステムにおけるデータファイルの構造に基づいて、所定の操作と他の操作との間の依存関係を判断する。
【００１７】
本発明において、ＮＡＳサーバとフロントエンドサーバとの間の通信プロトコルとして、例えばＮＦＳを用いることができるが、このうちＮＦＳｖ４（ＮＦＳバージョン４）は、ＮＦＳクライアント（本発明の構成ではフロントエンドサーバに該当する）に管理委譲したキャッシュデータに対して他のＮＦＳクライアントからアクセスがあった場合に、管理委譲したＮＦＳクライアントにコールバックする機能を持っている。この機能を利用することにより、ＮＡＳサーバに対して複数のフロントエンドサーバを設定することが可能である。ＮＦＳ４のコールバック機能を用いて、所定のフロントエンドサーバによる操作を他のフロントエンドサーバに通知することにより、各フロントエンドサーバの動作の一貫性を保つことができるためである。なお、この場合の通信プロトコルはＮＦＳｖ４に限定するものではなく、所定のフロントエンドサーバによる操作を他のフロントエンドサーバに通知する機能を持つ通信プロトコルを用いることができる。
【００１８】
さらに、上記の目的を達成する本発明は、ネットワークに接続されたコンピュータを用いた、次のようなデータ処理方法としても実現される。このデータ処理方法は、ネットワーク上の所定の端末装置からＮＡＳサーバに対する操作要求を受け付け、所定のメモリに格納するステップと、このメモリに格納された操作要求を、ＮＡＳサーバにおける操作の内容に基づいて変換するステップと、変換された操作要求を、ＮＡＳサーバの負荷状況に応じて、当該ＮＡＳサーバへ転送するステップとを含むことを特徴とする。ここで、より具体的には、操作要求の変換として、操作要求による操作の対象である、ＮＡＳサーバのデータファイルの相互関係に基づいて、複数の操作要求を１つの操作要求に合成する。
【００１９】
また本発明は、コンピュータを制御して上述したフロントエンドサーバとして機能させるプログラム、または上記のデータ処理方法における各ステップに対応する処理をコンピュータに実行させるプログラムとしても実現することができる。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。
【００２０】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
図１は、本実施の形態のキャッシュシステムを導入したネットワークシステムの全体構成を示した図である。
図１に示すネットワークシステムでは、本実施の形態によるフロントエンドサーバ１０と、ＮＡＳサーバ２０と、クライアント３０とがネットワークを介して接続されている。このネットワークシステムにおいてクライアント３０は、フロントエンドサーバ１０を介してＮＡＳサーバ２０にアクセスする。
【００２１】
フロントエンドサーバ１０は、パーソナルコンピュータやワークステーション、その他のコンピュータ装置にて実現される。また、ＮＡＳサーバ２０は、従来から使用されている既存のＮＡＳサーバ（図７参照）であり、パーソナルコンピュータやワークステーション等の一般的なコンピュータ装置でも実現できる。クライアント３０は、パーソナルコンピュータやワークステーション等のコンピュータ装置、ネットワーク機能を備えたＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、携帯電話といった種々の情報端末にて実現される。
【００２２】
図２は、フロントエンドサーバ１０を実現可能なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図２に示すコンピュータ装置は、演算手段であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２及びＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３及びキャッシュメモリとして用いられる不揮発性メモリ１１０と、同じくＭ／Ｂチップセット１０２及びＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを介してＭ／Ｂチップセット１０２に接続されたハードディスク１０５、ネットワークインターフェイス１０６と、さらにこのＰＣＩバスからブリッジ回路１０７及びＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピーディスクドライブ１０８及びキーボード／マウス１０９とを備える。
なお、図２は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、外部記憶装置として、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）やＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）などのインターフェイスを介してＣＤ−Ｒ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌ）やＤＶＤ−ＲＡＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のドライブを設けても良い。また、ビデオカード、もしくは、キーボード／マウスといった、ユーザインターフェイスを持たず、制御は全てネットワークインターフェイスを経由して行う構成も考えられる。また、ハードディスク、フロッピーディスクを持たない構成も考えられる。
【００２３】
図３は、本実施の形態によるフロントエンドサーバ１０の機能構成を示す図である。
図３に示すように、本実施の形態のフロントエンドサーバ１０は、クライアント３０からの操作要求を受け付けるクライアント操作処理部１１と、ＮＡＳサーバ２０に対する操作を行うデータ変更反映処理部１２と、図２に示した不揮発性メモリ１１０にて実現されるキャッシュメモリ１３とを備える。
上記フロントエンドサーバ１０の構成のうち、クライアント操作処理部１１及びデータ変更反映処理部１２は、例えば図２におけるプログラム制御されたＣＰＵ１０１にて実現される仮想的なソフトウェアブロックである。ＣＰＵ１０１を制御するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。クライアント操作処理部１１による処理（プロセス）と、データ変更反映処理部１２による処理（プロセス）とは独立しており、並列に実行可能である。
【００２４】
クライアント操作処理部１１は、クライアント３０からの操作要求を、図２に示したネットワークインターフェイス１０６を介して受け付け、キャッシュメモリ１３にアクセスして処理する。すなわち、操作要求がリード要求である場合は、当該リード要求による読み出し対象のデータがキャッシュメモリ１３にキャッシュされていれば、当該データを読み出し結果としてクライアント３０へ返送する。読み出し対象のデータがキャッシュメモリ１３にキャッシュされていない場合は、ＮＡＳサーバ２０にアクセスして当該リード要求を送信し、読み出しデータを取得してクライアント３０へ返送する。このリード要求に応じてＮＡＳサーバ２０から読み出されたデータは、適宜キャッシュメモリ１３にキャッシュされる。
【００２５】
クライアント３０からの操作要求がライト要求である場合は、当該ライト要求による書込み対象のデータがキャッシュメモリ１３にキャッシュされていれば、キャッシュされている当該データに対して当該ライト要求によるデータ変更を反映させて、クライアント３０へ書込み完了通知を行う。書込み対象のデータがキャッシュメモリ１３にキャッシュされていない場合及びキャッシュされていても排他制御等によりデータ変更を行うことができない場合は、当該ライト要求をキャッシュメモリ１３に保存して、クライアント３０へ書込み完了通知を行う。
【００２６】
また、クライアント操作処理部１１は、クライアント３０から受け付けた複数の操作要求がマージ（合成）可能な場合は、１つの操作要求にマージしてキャッシュメモリ１３に保存することができる。例えば、１つのファイルにおける連続した領域に対する複数の書込み要求や、同一ファイルに対する複数のアクセス権変更の要求（ただし他の操作に影響を与えない場合）等は、１つの操作要求にマージすることができる。これに対し、他の操作要求への影響の仕方が変化する場合はマージを行わない。例えば、同一のファイルに対して書込み許可操作、書込み操作、書込み禁止操作という順序で操作が実行される場合、最後の書込み禁止操作によって直前の書込み操作が実行できなくなるため、書込み許可操作と書込み禁止操作を１つの操作とすることはできない。したがって、かかる操作に対する操作要求はマージされない。一方、書込み許可操作、書込み操作、読込み許可操作という順序で操作が実行される場合、最後の読み込み許可操作は、直前の書込み操作に影響を与えないので、これらの操作に対する操作要求を１つの操作にマージすることができる。
なお、クライアント操作処理部１１によるこれらの処理（プロセス）は、複数並列に実行することができる。
【００２７】
データ変更反映処理部１２は、図２に示したネットワークインターフェイス１０６を介してＮＡＳサーバ２０にアクセスし、クライアント３０からのライト要求にしたがってキャッシュメモリ１３上のデータに対してなされたデータ変更及びキャッシュメモリ１３に保存されたライト要求を、ＮＡＳサーバ２０に格納されているファイルに反映させる。かかるデータ変更のＮＡＳサーバ２０への反映は、キャッシュメモリ１３上のデータに対してなされたデータ変更またはキャッシュメモリ１３に保存されたライト要求に基づいて、ＮＡＳサーバ２０に対するデータ変更操作列を生成してＮＡＳサーバ２０に送信し、このデータ変更操作列は、ＮＡＳサーバ２０において実行することにより行われる。
なお、データ変更反映処理部１２による処理（プロセス）は、複数並列に実行することができる。
【００２８】
また、データ変更反映処理部１２は、ＮＡＳサーバ２０上での操作がフロントエンドのキャッシュ上で行われた処理と同一の結果が得られる方法で実行されることを前提として、他の操作に影響を与える操作、他の操作から影響を受ける操作の依存関係を検査し、かかる依存関係を持つ操作に関しては当該依存関係に応じた順序関係で実行されるようにデータ変更操作列を生成する。例えば、ディレクトリ名の変更やディレクトリに対するアクセス権の設定の変更は、そのディレクトリ以下の全てのディレクトリ及びファイルへのアクセスに対して影響を与える。したがって、下位のディレクトリ及びファイルに対する変更操作を行った後でなければ上位のディレクトリに対するアクセス権の設定変更を行うことはできない。この依存関係に応じた処理の具体的な手法は、フロントエンドサーバ１０とＮＡＳサーバ２０との間で使われている通信プロトコルの仕様による。
【００２９】
一方、このデータ変更操作列の生成処理においては、上述した操作間の依存関係を考慮した上で、同期操作から非同期操作への変換、操作の順序変換による局所性の向上といった最適化処理を伴い、システム全体としての性能の向上に寄与することができる。
同期操作から非同期操作への変換とは、データ変更操作列を生成しＮＡＳサーバ２０へ送信する処理を、ＮＡＳサーバ２０の負荷の状況に応じて（すなわち、クライアント３０からの操作要求に対して非同期に）実行することである。
操作の順序変換による局所性の向上とは、異なるファイルへの操作などにおいて、操作順を変更しても他のファイルに対して影響がない場合に、操作順を変更することで、ＮＡＳサーバ２０におけるハードディスクのシーク時間を短縮することである。
なお、これらの最適化処理は例示に過ぎず、キャッシュメモリ１３を介在させることにより実現可能な種々の最適化（操作変換）を実行可能であることは言うまでもない。
【００３０】
上述したように、クライアント操作処理部１１及びデータ変更反映処理部１２による処理（プロセス）は、並列実行が可能である。また、それぞれ複数の処理を並列に実行することもできる。クライアント操作処理部１１による並列実行可能な処理の数は、ＮＡＳサーバ２０に対して同時に送ることができるデータ読み出しの操作要求の数を意味する。また、データ変更反映処理部１２による並列実行可能な処理の数は、ＮＡＳサーバ２０に対して同時に送ることができるデータ書込みの操作要求の最大数を意味する。これらの並行実行可能な処理の数は、フロントエンドサーバ１０を実現するコンピュータ装置のＣＰＵ１０１の性能（処理速度）や不揮発性メモリ１１０の記憶容量に応じて設定される。また、クライアント３０から送られる操作要求の到着頻度、ＮＡＳサーバ２０の性能等に応じて動的に調整することもできる。
【００３１】
また本実施の形態では、クライアント操作処理部１１及びデータ変更反映処理部１２による処理においてキャッシュメモリ１３のキャッシュ内容を管理するため、キャッシュ管理表を用いる。上記の並列動作により（少なくともクライアント操作処理部１１及びデータ変更反映処理部１２の処理により）、キャッシュ管理表１３１へのアクセスは、２つ以上の処理によるアクセスが同時になされ得る。そのため、キャッシュ管理表１３１へのアクセスに際しては適切な排他制御が必要である。
【００３２】
図４は、キャッシュ管理表の構成例を示す図である。
このキャッシュ管理表１３１の１つのエントリが、ディレクトリまたはファイルの属性及びデータのキャッシュの状況を示す。このキャッシュ管理表１３１は、基本的には、例えば図２に示した不揮発性メモリ１１０にて保持される。ただし、ＮＡＳサーバ２０への反映が済んだエントリ、及びリード要求に対する処理として読み出されたデータに対するエントリに関しては、メインメモリ１０３等の揮発性メモリ上にキャッシュ管理表１３１を設けて管理しても良い。
【００３３】
図４に示す例では、キャッシュ管理表１３１には、ハンドル、受理時刻、反映状況、パス名、属性、オフセット、長さ、ファイル内容、参照順序情報、依存情報といったフィールドが用意されている。
ハンドルは、ファイルまたはディレクトリを識別するための情報であり、システムが使用する通信プロトコルに依存する。この情報は、リード要求に基づく操作である参照操作では、クライアント３０からの操作要求に含まれている。また、ライト要求に基づく操作及びキャッシュ内容をＮＡＳサーバ２０に反映させる操作である変更操作では、クライアント３０からの操作要求およびＮＡＳサーバ２０からの応答に含まれている。
受理時刻は、クライアント３０からのライト要求の受理時刻を示す。
反映状況は、ライト要求に基づくデータ変更のＮＡＳサーバ２０に対する反映状況を示す。値としては、例えば「依存解消待ち」、「未処理」、「処理中」、「処理終了」の４つを設定することができる。
パス名は、ＮＡＳサーバ２０のファイルシステムの木構造（ここでの木構造はディレクトリ、ファイルの親子関係に基づく構造を意味する）中の位置を示す情報（文字列）である。
属性は、ファイルもしくはディレクトリの属性を示す情報であり、システムが使用する通信プロトコルで定義される。
オフセットは、操作要求に応じてアクセスされるデータの、ＮＡＳサーバ２０に格納されたファイル中での先頭からの位置を示す情報であり、同様に長さは、当該ファイル中でのデータの長さを示す情報である。
ファイル内容は、キャッシュ管理表１３１の当該エントリで管理されるデータの内容である。
参照順序管理情報は、エントリ中の相対的な参照の順序を示す。この情報の管理方法は任意であるが、例えば、双方向のリンクで参照順序を示す方法が考えられる。
依存情報は、操作要求に基づく各処理の間の依存関係を示す。この情報の管理方法は任意であるが、例えば、依存されるエントリの依存情報フィールドに依存するエントリへのリンクを置く方法が考えられる。
【００３４】
なお、図４に示したキャッシュ管理表１３１の構成は例示に過ぎず、上記の他、キャッシュの管理に利用できる種々の情報を適宜登録することが可能である。例えば、検索の高速化のためにファイル名のハッシュ表や、ファイル及びディレクトリの親子関係のリンクを登録するようにしても良い。また、参照順序情報の代わりに、今後のアクセス可能性を予測するための情報を登録し、この情報を、キャッシュメモリ１３から削除する対象や、ＮＡＳサーバ２０へ反映する対象を選択する際に用いることも考えられる。
【００３５】
次に、このキャッシュ管理表１３１を用いて実行されるクライアント操作処理部１１およびデータ変更反映処理部１２の動作を詳細に説明する。
図５は、クライアント操作処理部１１による動作を説明するフローチャートである。
図５に示すように、クライアント操作処理部１１は、クライアント３０から操作要求を受け取ると（ステップ５０１）、当該操作要求がリード要求かライト要求かを調べる。
【００３６】
受け取った操作要求がリード要求であった場合、クライアント操作処理部１１は参照操作を実行する。すなわち、キャッシュ管理表１３１に登録されている各エントリを検索し、リード要求に含まれるハンドルに対応するキャッシュデータが存在し、かつ、そのキャッシュデータを使ってクライアント３０への応答が作成可能かどうかを判定する（ステップ５０２、５０３）。クライアント３０への応答が作成可能ならば、応答を作成して当該エントリの参照順序管理情報を更新し、作成された応答をクライアント３０へ返送する（ステップ５０４）。
【００３７】
一方、クライアント３０への応答が作成不可能な場合、応答作成のために必要な情報を得るためにＮＡＳサーバ２０へ情報取得要求（データのリード要求等）を送信する（ステップ５０５）。そして、ＮＡＳサーバ２０からの応答を得た後に、クライアント３０への応答を作成し返送する（ステップ５０６）。これに伴い、登録するエントリの反映状況フィールドは「処理終了」とする。この時に得た情報はキャッシュし、キャッシュ管理表１３１にキャッシュデータのエントリを登録して、これ以後の同情報への操作要求に対する処理に利用できるようにする（ステップ５０７）。キャッシュ管理表１３１のために用意されたメモリの記憶領域に空きが無い場合は、反映状況が処理終了であるエントリのうち、参照順序管理情報を参照してＬＲＵ（Ｌｅａｓｔ  Ｒｅｓｅｎｔｌｙ  Ｕｓｅｄ）順、すなわち、最も長い間アクセスが行われ無かったエントリを１つ選択して削除することにより空き容量を確保し、エントリの登録を行う。削除後も空き容量が不足する場合は、空き容量が確保できるまで上記選択及び削除を繰り返す。なお、ＬＲＵ順でエントリを１つ選択する代わりに、以後アクセスが最も少ないと予測されるエントリを、他の手法、例えば直近の参照頻度等に基づいて選択してもよい。同様に、以後の説明中のＬＲＵ順によるエントリの選択の部分は、他の手法により代替可能である。また、空き容量を確保するためのエントリの選択および削除の際、その実行オーバヘッドを削減するために、複数のエントリをまとめて選択、削除することも考えられる。同様に、以後の説明中のエントリの選択および削除の際、複数のエントリをまとめて選択、削除しても良い。
【００３８】
クライアント３０から受け取った操作要求がライト要求であった場合、クライアント操作処理部１１は変更処理を実行する。すなわち、キャッシュ管理表１３１に登録されている各エントリを検索し、クライアント３０からのライト要求に含まれるハンドルに対応するキャッシュデータが存在し、かつ、受け取ったライト要求に基づくデータの変更をそのキャッシュデータに対して適用可能かどうかを判定する（ステップ５０２、５０８）。データの変更をキャッシュデータに適用可能ならば、当該データの変更を実行して当該エントリの参照順序管理情報を更新し、クライアント３０へ完了通知を送信する（ステップ５０９）。
【００３９】
一方、ライト要求に基づくデータの変更をキャッシュデータに適用できない場合、当該ライト要求に対応するエントリをキャッシュ管理表１３１に登録し、クライアント３０へ完了通知を送信する（ステップ５１０）。当該エントリの反映状況フィールドは「未処理」とする。キャッシュ管理表１３１のために用意されたメモリの記憶領域に空きが無い場合は、反映状況が処理終了であるエントリのうち、参照順序管理情報を参照してＬＲＵ（Ｌｅａｓｔ  Ｒｅｓｅｎｔｌｙ  Ｕｓｅｄ）順でエントリを１つ選択して削除することにより空き容量を確保し、エントリの登録を行う。
【００４０】
なお、クライアント操作処理部１１は、ステップ５０９でデータの変更をキャッシュデータに適用する際、またはステップ５１０でライト要求に対応するエントリをキャッシュ管理表１３１に登録する際、または図５に示した一連の動作とは非同期に、マージ可能な複数の操作要求を探索して１つの操作要求にマージすることができる。
【００４１】
図６は、データ変更反映処理部１２による動作を説明するフローチャートである。
データ変更反映処理部１２は、ＮＡＳサーバ２０の稼動負荷状況に合わせて、同時に実行する処理の数が、ＮＡＳサーバ２０が最も効率よく稼動できる値になるように図６に示す処理を実行する。一般に、同時に実行する処理の数が大きい程、ＮＡＳサーバ２０は、その処理の並列度を有効に活用して効率よく動作することができるが、同時に実行する処理の数が所定の限度を超えると並列処理を管理するオーバヘッドのために逆に実行効率が下がってしまう。同時に実行する処理の適切な数は、事前に測定によって求めても良いし、実行時にＮＡＳサーバ２０の性能を測定しながら動的に調整しても良い。
データ変更反映処理部１２は、まず、キャッシュ管理表１３１の各エントリにおける参照順序管理情報と反映状況とを参照し、反映状況が未反映であるエントリをＬＲＵ順で１つ選択する（ステップ６０１）。
【００４２】
選択されたエントリがディレクトリに関するエントリであった場合、次にデータ変更反映処理部１２は、当該エントリに対する変更操作に影響を受ける他のエントリが存在するか確認する（ステップ６０２）。具体的には、キャッシュ管理表１３１を参照し、パス名が当該ディレクトリの直下であるようなディレクトリやファイルに関するエントリを検索する。そして、そのようなエントリに対して、当該変更操作による影響を受けるかどうかを調べる。ここで、変更操作による影響を受けるとは、ステップ６０１で選択されたエントリに対する変更操作に伴って、その下位のディレクトリやファイルに対する変更が必要となることを言う。例えば、所定のディレクトリのディレクトリ名を変更した場合、これに伴って当該ディレクトリの下位のディレクトリ及びファイルのパス名も変更する必要が生じる。言い換えれば、そのようなディレクトリやファイルに関するエントリは、ステップ６０１で選択されたエントリに依存している。そこで、ステップ６０１で選択されたエントリに対してこのような依存関係を持つエントリが存在すれば、検出される。ディレクトリ及びファイルの依存関係の解析方法については後述する。
【００４３】
ステップ６０１で選択されたエントリに対する変更操作により影響を受ける下位ディレクトリのエントリ（以下、依存エントリと称す）が存在しない場合、ステップ６０１で選択されたエントリの反映状況を処理中に変更する。そして、当該エントリの変更内容に対応するデータ変更操作列を生成してＮＡＳサーバ２０に送信する（ステップ６０３）。ＮＡＳサーバ２０は、このデータ変更操作列に基づいて、データの書込み操作を実行した後、書込み完了を通知する応答をフロントエンドサーバ１０に返す。このデータ変更操作列に対する応答がＮＡＳサーバ２０から返送されたならば、フロントエンドサーバ１０は、当該エントリの反映状況を処理終了に変更する（ステップ６０４）。
【００４４】
ステップ６０１で選択されたエントリに対する変更操作に影響を受ける依存エントリが存在した場合、次にデータ変更反映処理部１２は、当該依存エントリの変更内容を、対応するＮＡＳサーバ２０のファイルに反映する必要があるかどうかを調べる（ステップ６０５）。ここで、依存エントリの変更内容を、対応するＮＡＳサーバ２０のファイルに反映する必要がない場合とは、当該依存エントリに対する変更が後続する他の操作により無効となった場合である。
【００４５】
依存エントリの変更内容を対応するＮＡＳサーバ２０のファイルに反映する必要がある場合は、当該依存エントリの依存情報フィールドに、ステップ６０１で選択されたエントリを登録する（ステップ６０６）。既に他のエントリが依存情報フィールドに登録されていた場合、この依存エントリは当該他のエントリとも依存関係にあることを意味する。そこで、このような場合は、依存情報フィールドに登録されているエントリを順に辿っていき、依存情報フィールドに登録がないエントリに達したならば、当該依存情報フィールドにステップ６０１で選択されたエントリを登録する。そして、ステップ６０１で選択された当該エントリに関しては、反映状況の状態を「依存解消待ち」とする。
【００４６】
一方、依存エントリの変更内容を対応するＮＡＳサーバ２０のファイルに反映する必要がない場合は、当該依存エントリをキャッシュ管理表１３１から削除する（ステップ６０７）。この依存エントリの依存情報フィールドに他のエントリが登録されている場合、当該他のエントリの反映状況の状態を「依存解消待ち」から「未反映」に変更する。
【００４７】
ここで、ディレクトリ及びファイルの依存関係の解析方法について説明する。
この依存関係の解析は、フロントエンドサーバ１０とＮＡＳサーバ２０との間の通信プロトコルの仕様に応じて実行される。
フロントエンドサーバ１０とＮＡＳサーバ２０との間の通信にＮＦＳｖ２（ＮＦＳバージョン２）やＮＦＳｖ３（ＮＦＳバージョン３）のようなステートレスな（すなわちステート（ディレクトリやファイルの状態の情報）を持たない）通信プロトコルが使用されている場合、フロントエンドサーバ１０においてＮＡＳサーバ２０のファイルシステムの木構造を構築して管理し、この木構造におけるディレクトリやファイルの位置関係に基づいて依存関係を解析する。木構造を構築するのに必要な情報はフロントエンドがＮＡＳサーバに必要に応じてアクセスすることによって得る。構築された木構造は、キャッシュメモリ１３１を構成する図２の不揮発性メモリ１１０や、メインメモリ１０３等に保持される。
【００４８】
ステートレスな通信プロトコルでは、一旦サーバに受け付けられた操作要求は、クライアントで保持する必要はなく、たとえサーバに障害が生じても、必ずサーバ側で保持されているということが保障される。フロントエンドサーバ１０には、クライアント３０から受け付けたもののＮＡＳサーバ２０に未だ反映されていない（すなわち保留中の）ライト要求が置かれている。この保留中のライト要求は、上位のディレクトリに対する変更操作（例えばライト要求の対象ファイルに対する書込み禁止操作）があっても、ＮＡＳサーバ２０に反映される必要がある。そのため、対象ファイルに対する変更操作とその上位ディレクトリに対する変更操作とをＮＡＳサーバ２０に反映する順序を、適切に制御する必要がある。かかる必要から、クライアント３０からの各操作がＮＡＳサーバ２０のファイルシステムの木構造においてどのような関係にあるかを把握する必要があるため、上記のようにフロントエンドサーバ１０において当該木構造を保持して管理する。
【００４９】
一方、フロントエンドサーバ１０とＮＡＳサーバ２０との間の通信にＮＦＳｖ４（ＮＦＳバージョン４）のようなステートを持つ通信プロトコルが使用されている場合、保留中の操作要求にかかる全てのディレクトリ及びファイルをオープン状態（もしくは、キャッシュ委譲状態）として持つことにより、上位のディレクトリの状態の変更に関わらず保留中の変更がＮＡＳサーバ２０に反映できるようにする。
【００５０】
ステートを持つ通信プロトコルでは、上述したステートレスな通信プロトコルと異なり、サーバの障害からの回復時にクライアントの側で明示的な回復処理を必要とする。具体的には、クライアントとサーバはファイル及びディレクトリ毎に明示的なコネクションを保持する。このコネクションが何らかの障害によって切断された場合は、クライアント及びサーバで明示的な回復処理を行う。一方、クライアント上でこのコネクションを保持する限りは、上位ディレクトリの状態の変更に関わらず、ファイル毎に保留した変更操作をサーバに反映させることが可能である。このため、ＮＦＳｖ４のようなステートを持つ通信プロトコルを使用する場合、フロントエンドサーバ１０においてＮＡＳサーバ２０のファイルシステムの木構造を把握することは不要となる。ファイルハンドルのキャッシュの整合性を維持するためには、ディレクトリに対して変更操作が行われた時に影響を受けるファイルハンドルが存在しないかをチェックする必要があるが、これは木構造を保持していなくても、ディレクトリに対する変更操作時にＮＡＳサーバ２０に問い合わせることにより実現できる。
【００５１】
ステートレスな通信プロトコル及びステートを持つ通信プロトコルのいずれの場合も、データの変更をＮＡＳサーバ２０に反映する処理においては、ＮＡＳサーバ２０における該当データの状態とフロントエンドサーバ１０のキャッシュ上での該当データの状態とをそれぞれ独立に管理する。すなわち、データの状態の変更がＮＡＳサーバ２０に対して未反映であっても、フロントエンド上のキャッシュに対する操作では、その状態変更の影響を考慮して処理を実行する。
【００５２】
さて、上述したように本実施の形態では、データ変更反映処理部１２によりＮＡＳサーバ２０への操作要求を生成する際、操作間の依存関係に基づいて最適化を行うことができる。次に、この最適化について具体例を挙げて説明する。
（Ａ）ＮＡＳサーバ２０へのデータ書込み操作のマージによる最適化
複数のデータ書込みの操作要求が、ファイルの連続する領域に対するものである場合、これらの操作要求をまとめて１つのデータ変更操作列を生成し、ＮＡＳサーバ２０に実行させることができる。この場合、操作要求ごとにデータ変更操作列を生成してＮＡＳサーバ２０に実行させる場合と比べて、ＮＡＳサーバ２０のハードディスク装置におけるシークが減少するため、また、ＮＡＳサーバ２０のプロセッサが処理すべき変更操作の数が削減されるため、処理に要する時間を短縮できる。
【００５３】
ただしこの場合、まとめた変更操作をＮＡＳサーバ２０に反映することを遅らせて、他の操作、例えば該当ファイルの書込み禁止の操作を先にＮＡＳサーバ２０に反映させてしまうと、その後に変更操作をＮＡＳサーバ２０に反映させようとしてもエラーとなってしまう。クライアント３０から受け付けたライト要求は必ずＮＡＳサーバ２０に反映する必要があるので、このようなエラーは防止しなくてはならない。そのため、データ書込みの操作とデータ書込み禁止の操作とは、順序が入れ替わることがないように明示的に制御する必要がある。
ＮＦＳプロトコルでは、データ書込みの操作とデータ書込み禁止の操作とは同一のハンドルに対する操作である。したがって、サーバ間の通信プロトコルがＮＦＳプロトコルである場合、ハンドル単位でキャッシュ管理が行われていれば、同一のハンドルに対する操作であることが分かり、この制御を行うことが可能になる。
【００５４】
（Ｂ）変更操作を行ったファイルが削除された場合のファイルへのデータ書込み操作の省略による最適化
クライアント３０で動作するアプリケーションプログラムの動作において、所定のデータを作成し、その中間結果を一時的に記憶装置（ＮＡＳサーバ２０）にファイルとして書込み、後の処理で当該ファイルの内容を読み込んだ後に、当該ファイルを削除するといった動作が行われる場合がある。
ＮＦＳプロトコルでは、ファイルの削除操作は、ファイルシステムの木構造における当該ファイルの上位のディレクトリに対する操作として定義されている。一方、単純なハンドルの比較のみでは、２つのハンドルにおける木構造上の上下関係は判別できない。本実施の形態では、キャッシュ管理表１３１に木構造上の親子関係（パス名）が管理されている。そのため、データ書込みの操作とファイルの削除操作との間の依存関係が判別でき、その結果としてファイルの削除操作によって効果が相殺されるようなデータ書込みの操作をＮＡＳサーバ２０へ反映することを省略することが可能になる。これにより、ファイルの削除完了までに要する処理時間が短縮される。
【００５５】
本実施の形態において、フロントエンドサーバ１０とＮＡＳサーバ２０との間の通信プロトコルを、ＮＦＳｖ４のようなクライアント３０へのキャッシュ管理委譲機構を持つプロトコルとすることにより、ＮＡＳサーバ２０の機能構成に変更を加えることなく、キャッシュ管理機能の一部をフロントエンドサーバ１０に委譲することができる。
ＮＦＳｖ４のキャッシュ管理委譲機構では、ファイルのオープン時にそのファイルのデータにアクセスする権限及びそのファイル上の特定の領域をロックする権限をＮＦＳクライアント側に委譲することが可能である。フロントエンドサーバ１０が、この機能により所定のファイルに関するアクセス権限を得られれば、そのファイルに対する操作、具体的には参照操作、変更操作及びロック操作を、ＮＡＳサーバ２０に代わってフロントエンドサーバ１０が実行することが可能となる。
これにより、クライアント３０からの操作要求に対する処理の一部をＮＡＳサーバ２０に依存せずフロントエンドサーバ１０のみの動作で実行することが可能になるため、ＮＡＳサーバ２０の負荷を軽減しスループットを向上させることができる。
【００５６】
さらに本実施の形態では、フロントエンドサーバ１０におけるクライアントキャッシュの機能により、複数のクライアント３０からの処理要求が集められてＮＡＳサーバ２０に送られる。すなわち、上述したようにクライアント３０から受け付けた操作要求をマージしたり、データの変更をＮＡＳサーバ２０に反映させる場合にまとめて実行できる変更操作を１つの操作にまとめてＮＡＳサーバ２０に反映させたりする。この他、フロントエンドサーバ１０とＮＡＳサーバ２０との間の通信プロトコルとしてＮＦＳｖ４を用いる場合、フロントエンドサーバ１０で実行可能な参照操作、変更操作及びロック操作を、ＮＡＳサーバ２０に代わってフロントエンドサーバ１０で処理することができる。そのため、ＮＡＳサーバ２０の動作効率を向上させることができる。
【００５７】
また、ＮＦＳｖ４は、ＮＦＳクライアントに管理委譲したキャッシュデータに対して他のＮＦＳクライアントからアクセスがあった場合に、管理委譲したＮＦＳクライアントにコールバックする機能を持っている。このため、ＮＡＳサーバ２０に対して複数のフロントエンドサーバ１０をネットワーク上に設定した場合でも、ＮＡＳサーバ２０からフロントエンドサーバ１０へのコールバックにより、各フロントエンドサーバ１０の間で操作に関する情報が共有される、すなわち所定のフロントエンドサーバ１０による操作が他のフロントエンドサーバ１０に通知されるので、各フロントエンドサーバ１０における動作の一貫性を保つことができる。したがって、クライアント３０からのアクセスやＮＡＳサーバ２０の負荷の状態に対応して、１つのＮＡＳサーバ２０に複数のフロントエンドサーバ１０、複数のＮＡＳサーバ２０に複数のフロントエンドサーバ等多様な構成を実現することが可能である。
【００５８】
【発明の効果】
以上説明したように、本発明によれば、ネットワーク上でＮＡＳサーバとクライアントとの間にフロントエンドサーバを介在させることにより、ネットワークで利用されるコンピュータシステムにおける効果的なキャッシュシステムを提供することができる。
また本発明によれば、かかるキャッシュシステムを用いてＮＡＳサーバにおける効率の良いメモリ管理を実現することができる。
【図面の簡単な説明】
【図１】本実施の形態のキャッシュシステムを導入したネットワークシステムの全体構成を示した図である。
【図２】本実施の形態のフロントエンドサーバを実現可能なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図３】本実施の形態によるフロントエンドサーバの機能構成を示す図である。
【図４】本実施の形態によるキャッシュ管理表の構成例を示す図である。
【図５】本実施の形態におけるクライアント操作処理部による動作を説明するフローチャートである。
【図６】本実施の形態におけるデータ変更反映処理部による動作を説明するフローチャートである。
【図７】ＮＡＳサーバの一般的な構成を模式的に示す図である。
【符号の説明】
１０…フロントエンドサーバ、１１…クライアント操作処理部、１２…データ変更反映処理部、１３…キャッシュメモリ、２０…ＮＡＳサーバ、３０…クライアント、１０１…ＣＰＵ、１０３…メインメモリ、１０５…ハードディスク、１０６…ネットワークインターフェイス、１１０…不揮発性メモリ、１３１…キャッシュ管理表
【図１】
2004326162.tif 000003
【図２】
2004326162.tif 000004
【図３】
2004326162.tif 000005
【図４】
2004326162.tif 000006
【図５】
2004326162.tif 000007
【図６】
2004326162.tif 000008
【図７】
2004326162.tif 000009