(57)【特許請求の範囲】
【請求項１】
ファイルへのアクセス要求に応じて、当該ファイルを外部記憶装置から読み出して提供するファイルシステムにおいて、
前記外部記憶装置から読み出したファイルをファイル単位で記憶するためのメモリと、
前記メモリに記憶されているファイルのアクセス回数と最新アクセス時刻とを記憶するためのテーブルと、
前記メモリに記憶されているファイルへのアクセス要求を受けたとき、この要求されたファイルのアクセス回数と最新アクセス時刻を前記テーブルに記録するテーブル管理手段と、
前記要求されたファイルを前記要求されたファイルが前記メモリに記憶されている場合には前記メモリから、前記メモリに記憶されていない場合には前記外部記憶装置から読み出し、前記要求されたファイルを前記外部記憶装置から読み出したときには、前記テーブルに記録された前記最新アクセス時刻が予め周期的に定められた時刻以前であるファイルを検出し、この検出したファイルに対応する前記テーブルに記録されているアクセス回数をリセットした後、前記外部記憶装置から読み出したファイルを、前記メモリに空き領域がある場合には前記メモリに記憶し、前記メモリに空き領域が無い場合には既に前記メモリに記憶されているファイルのうち前記アクセス回数が最も少ないファイルを前記メモリから追い出した後に前記メモリに記憶するファイル管理手段と
を具備することを特徴とするファイルシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ユーザからの要求に応じて外部記憶装置に記憶されたファイルの中から指定されたファイルを読み出して提供するファイルシステムに係り、特にファイルの使用頻度を踏まえたキャッシングによりファイルアクセスの高速化を実現するファイルシステムに関する。
【０００２】
【従来の技術】
従来の計算機におけるファイルシステムでは、磁気ディスク装置等の外部記憶装置に格納されているファイルへのアクセス（主に読み出し処理）の高速化のために、外部記憶装置からデータブロック単位で読み出したファイルを一時的に計算機内部のメモリ（キャッシュメモリ）上にもデータブロック単位で保持（キャッシュ）している。
【０００３】
アクセス対象となるデータブロックを読み出し易いメモリ上にキャッシュしておくことで、同一データブロックへのアクセスが発生した場合には計算機内部で処理が可能となる。これにより、外部記憶装置への再アクセスに要するオーバーヘッドを削減することができる。尚、キャッシングは、ユーザによる外部記憶装置へのファイルアクセスに偏りが見られる場合に、特に有効に機能する。
【０００４】
ところが、キャッシュメモリの容量には限りがあるので、いつまでも同じデータブロックを保持しておくことはできない。このため、キャッシュメモリに保持されていないファイルへの新規のアクセスが発生したときに、キャッシュメモリにそのファイルの全データブロックを取り込むための空き領域が無ければ、ファイルシステムは、キャッシュメモリ上の最も古いデータブロックから順次、外部記憶装置に追い出すことによりキャッシュ領域に空きを作る。これが、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）と呼ばれるキャッシュの更新方法である。
【０００５】
ここで、ユーザによって書き込みされたデータブロックは、その時点ではキャッシュメモリ上にしか存在しないため、特定のタイミングで外部記憶装置に書き込まれることによりデータの一貫性が保たれている。
【０００６】
【発明が解決しようとする課題】
しかしながら、ＬＲＵ方式に従ってキャッシュ管理を行うファイルシステムにおいては、アクセス頻度の高いデータブロックであるにも拘らずキャッシュメモリから追い出されてしまうことが起こり得る。
【０００７】
このような状況は、キャッシュメモリの容量が小さい場合、或いは、外部記憶装置に格納されているファイルへのアクセスの偏りが少ない場合等に発生し易い。後者の例としてＷＥＢサーバにおける場合が挙げられる。即ち、ＷＥＢサーバは、ネットワークを介して接続された複数のクライアントからのＨＴＴＰリクエストを受け取り、指定されたファイルを読み出してクライアントに送信するのだが、この際に複数のクライアントから同一のファイルへのアクセスが同時に行われたり、繰り返し行われたりすることが頻発する。
【０００８】
図８は、ＬＲＵ方式によるキャッシュ管理方法を説明するための図である。ここでは、キャッシュメモリが、１ブロックのデータを格納するスロットを３個有し、アクセス対象となるファイルＡ、Ｂ、Ｃ、Ｄが各々１ブロックから構成されるものとする。また、外部記憶装置に格納されたファイルへのユーザによるアクセスパターンを、
Ａ→Ｂ→Ｃ→Ａ→Ａ→Ｂ→Ｄ→Ａ→Ｂ→Ｃ→Ｄ→Ａ
とする。
【０００９】
ファイルシステムは、アクセスパターンに従って外部記憶装置からファイルＡ、Ｂ、Ｃを順に読み出してユーザに提供するとともに、キャッシュメモリ内の３個の空きスロットにファイルＡ、Ｂ、Ｃを順にキャッシュしていく（ステップＳ８００、Ｓ８０１、Ｓ８０２）。続いてファイルＡへのアクセス要求があり、このときファイルＡはキャッシュされている（＝ヒットしている：図８では下線部で表現）ので、ファイルシステムはファイルＡをキャッシュメモリから読み出してユーザに提供する（ステップＳ８０３、Ｓ８０４）。
【００１０】
更にファイルＤへのアクセス要求があり、ファイルシステムは、外部記憶装置からファイルＤを読み出してユーザに提供するとともに、最も古くからキャッシュされているファイルＡを追い出してファイルＤをキャッシュする（ステップＳ８０５）。以降同様に、ファイルアクセス要求があると、ファイルシステムは、外部記憶装置から当該ファイルを読み出してユーザに提供し、最も古くからキャッシュされているファイルと置換してキャッシュしていく（ステップＳ８０６〜Ｓ８１０）。
【００１１】
この場合、例えばＳ８０９における各ファイルへのアクセス回数は、Ａ４回、Ｂ３回、Ｃ２回、Ｄ２回であるにも拘らず、キャッシュされているのはファイルＢ、Ｃ、Ｄであり、アクセス回数が最も多いファイルＡがキャッシュメモリから追い出されてしまっている。またＳ８１０においては、ファイルＣ、Ｄ（２回）よりもファイルＢ（３回）の方がアクセス回数が多いにも拘らずキャッシュメモリから追い出されてしまっている。
【００１２】
このように、ＬＲＵ方式による従来のキャッシュ方法においては、キャッシュメモリの更新に関してファイルへのアクセス回数が考慮されない。このため、前述のＨＴＴＰリクエストのようにファイルへのアクセス要求が頻発する場合、キャッシュメモリの更新が頻繁に行われ、キャッシュメモリへのデータ読み込みのためのディスクアクセスが頻発して大きなオーバヘッドとなってしまう。
【００１３】
本発明は上述の事情に鑑みてなされたものであり、ファイルへのアクセス回数を踏まえたキャッシュ管理を行ってキャッシュヒット率を向上させ、延いてはファイルアクセスの高速化を実現するファイルシステムを提供することを目的とする。
【００１４】
【課題を解決するための手段】
本発明のファイルシステムは、ファイルへのアクセス要求に応じて、当該ファイルを外部記憶装置から読み出して提供するファイルシステムにおいて、外部記憶装置から読み出したファイルをファイル単位で記憶するためのメモリと、メモリに記憶されているファイルのアクセス回数と最新アクセス時刻とを記憶するためのテーブルと、メモリに記憶されているファイルへのアクセス要求を受けたとき、この要求されたファイルのアクセス回数と最新アクセス時刻をテーブルに記録するテーブル管理手段と、要求されたファイルを要求されたファイルがメモリに記憶されている場合にはメモリから、メモリに記憶されていない場合には外部記憶装置から読み出し、要求されたファイルを外部記憶装置から読み出したときには、テーブルに記録された最新アクセス時刻が予め周期的に定められた時刻以前であるファイルを検出し、この検出したファイルに対応するテーブルに記録されているアクセス回数をリセットした後、外部記憶装置から読み出したファイルを、メモリに空き領域がある場合にはメモリに記憶し、メモリに空き領域が無い場合には既にメモリに記憶されているファイルのうちアクセス回数が最も少ないファイルをメモリから追い出した後にメモリに記憶するファイル管理手段とを具備することを特徴とする。
【００１５】
これによれば、ファイルへのアクセス回数を踏まえてキャッシュの管理を行うために、ユーザからのアクセス要求が多いファイルが常にキャッシュ上に置かれることとなり、キャッシュヒット率が向上し、その結果、ファイルアクセスの高速化を実現できる。また、最新アクセス時刻が所定の時刻以前のファイルについては、アクセス回数をリセットすることでキャッシュから追い出され易くし、アクセス回数が多くても長時間アクセスされなくなったファイルが長時間キャッシュ上に居座ることを防げる。
【００２２】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施の形態について説明する。図１は、本発明の一実施形態に係るファイルシステムの構成を示すブロック図である。ファイルシステム１００は、オペレーティングシステム（ＯＳ）１０１に内包される形態でコンピュータ１０２の内部に存在する。
【００２３】
コンピュータ１０２は、広域ネットワーク（ＷＡＮ）１０３や構内ネットワーク（ＬＡＮ）１０４等を介してクライアントコンピュータ１０５によって接続され、例えばＷＥＢサーバとして機能する。コンピュータ１０２には磁気ディスク装置等の外部記憶装置１０６が接続されており、各種データファイルとそれらの管理情報、例えばファイル名、ファイル容量等を格納している。
【００２４】
ユーザは、クライアントコンピュータ１０５を操作してコンピュータ１０２にアクセスし、例えばファイル名を指定して所望するファイルの読み出しを要求する。この際、コンピュータ１０２の内部にはファイル読み出しに関するユーザプロセス１０７が起動され、このユーザプロセス１０７がファイルシステム１００に対し、外部記憶装置１０６に格納された所望ファイルへのアクセスリクエストを発行する。
【００２５】
ここで、ユーザプロセス１０７はコンピュータ１０２に搭載されたアプリケーションソフト（図示せず）に従って起動されるものであり、コンピュータ１０２は複数の異なるアプリケーションソフトを搭載しても良い。
【００２６】
ファイルシステム１００は、ファイルシステムインターフェイス１０８、ファイルアクセス手段１０９、ファイルキャッシュ手段１１０、キャッシュ管理テーブル１１１、ディスクアクセス手段１１２、キャッシュ１１３、及びキャッシュ管理テーブル更新手段１１４とを有する。
【００２７】
ファイルシステムインターフェイス１０８は、ファイルシステム１００とＯＳ１０１の間のインターフェイスである。ファイルアクセス手段１０９はファイルシステムインターフェイス１０８を介してユーザプロセス１０７からのリクエストを受け付け、ファイルキャッシュ手段１１０を呼び出して動作させる。
【００２８】
ファイルキャッシュ手段１１０は、ユーザが所望するファイルがキャッシュされているか否かキャッシュ管理テーブル１１１を参照して判断し、またキャッシュ１１３からファイルを読み出し、或いは書き込み、更にキャッシュ管理テーブル更新手段１１４に対しキャッシュ管理テーブル１１１の更新を指示する。
【００２９】
キャッシュ管理テーブル１１１は、図２に示す一例のように、キャッシュ１１３に置かれているファイルのファイル名と各ファイルに関する属性情報、例えば、キャッシュ１１３内でのファイル実体の格納位置（ポインタ）、ファイルの容量、ユーザからのアクセス回数、最新のアクセス時刻等を記憶している。
【００３０】
ディスクアクセス手段１１２は実際に外部記憶装置１０６からファイルを読み出し、或いはファイルを書き込む。キャッシュ１１３は、外部記憶装置から読み出されたファイルを保持するメモリである。キャッシュ管理テーブル更新手段１１４は、キャッシュ管理テーブル１１１内のアクセス回数、最新アクセス時刻等の属性情報を適宜更新する。
【００３１】
次に、図３を用いて、ファイルシステム１００内部の動作について説明する。図３は本実施形態に係るファイルシステムの動作を示すフローチャートである。
【００３２】
ユーザプロセス１０７が、ユーザが所望するファイル名を指定してファイルシステム１００にアクセスする（ステップＳ２００）。ファイルアクセスインターフェイス１０８を介してこれを受けたファイルアクセス手段１０９が、ファイルキャッシュ手段１１０を呼び出す（ステップＳ２０１）。
【００３３】
呼び出されたファイルキャッシュ手段１１０はファイル名をキーにキャッシュ管理テーブル１１１を参照して、所望ファイルがキャッシュ１１３に保存されているかどうかを調べる（ステップＳ２０２）。
【００３４】
所望ファイルがキャッシュされていない場合（ステップＳ２０３）、ファイルキャッシュ手段１１０はディスクアクセス手段１１２を呼び出し当該所望ファイルの読み出しを要求する（ステップＳ２０４）。ディスアクセス手段１１２は、ファイル名をキーに外部記憶装置１０６から当該所望ファイル及び付属の管理情報を読み出し、ファイルキャッシュ手段１１０に転送する（ステップＳ２０５）。
【００３５】
ファイルキャッシュ手段１１０は、当該所望ファイルのファイル容量を踏まえてキャッシュ管理テーブル１１１を参照し、キャッシュ１１３の空き状況を確認する（ステップＳ２０７）。
【００３６】
キャッシュ１１３に空き領域が存在した場合（ステップＳ２０７）、ファイルキャッシュ手段１１０は、外部記憶装置１０６から読み出した当該所望ファイルをキャッシュ１１３に書き込み（ステップ２０８）、キャッシュ管理テーブル更新手段１１４を呼び出してキャッシュテーブル１１１を更新するよう指示し、これを受けてキャッシュ管理テーブル更新手段１１４が当該所望ファイルに関する最終アクセス時刻を更新し、かつアクセス回数をインクリメントする（ステップＳ２０９）。
【００３７】
この後、当該所望ファイルはファイルキャッシュ手段１１３、ファイルアクセス手段１０９、ファイルシステムインターフェイス１０８を経由してユーザプロセスに供給される（ステップＳ２１０）。尚、ここでは一例として、キャッシュ１１３への所望ファイルの記憶処理をユーザプロセス１０７への所望ファイル供給よりも先に行っているが、順序は逆でも構わない。
【００３８】
一方、ステップ２０３においてユーザの所望ファイルがキャッシュされている場合はステップＳ２０９以降と同様の処理がなされる。
【００３９】
また、ステップＳ２０７においてキャッシュ領域に空きが無い場合、ファイルキャシュ手段１１０が、キャッシュされているファイルの内、アクセス回数が最も少ないファイル、更にアクセス回数が同じ場合はその中で一番古いファイルをキャッシュ１１３から追い出し（ステップＳ２１１）、ステップＳ２０８以降と同様の処理がなされる。
【００４０】
尚、当該所望ファイルが大きなファイル容量を有する場合は、同条件に基づき適宜複数のファイルが追い出されることとなる。また、ファイルがキャッシュ１１３から追い出された場合、そのファイルに関する属性情報も、キャッシュ管理テーブル更新手段１１４によってキャシュ管理テーブルから削除されるか、後に別のファイルに関する属性情報によって上書きされる。
【００４１】
図４は、本実施形態に係るファイルシステム１００によるキャッシュ管理方法を説明するための図である。キャッシュ管理方法が異なる以外は、全て図８における条件と同一である。尚、図４において、キャッシュメモリの各スロットの下には、キャッシュされているファイルへのアクセス回数が示してある。
【００４２】
この場合、ステップＳ４０５においてファイルＤを読み出してキャッシュする際、ファイルＡが最先にキャッシュされているにも拘らず、そのアクセス回数（３回）を考慮するためこれを追い出さず、これに代わってアクセス回数が各１回のファイルＢ、Ｃの内、先にキャッシュされたファイルＢを追い出している。
【００４３】
これにより、同一のアクセスパターンにおいて、ファイルＢ、Ｃ、Ｄの外部記憶装置１０６からのファイル読み出し処理は各２回ずつで変わらないものの、ファイルＡに関しては、従来のＬＲＵ方式では３回必要だったものが、本発明により１回に削減されることとなる。
【００４４】
このように、本実施形態によれば、ファイルへのアクセス回数に基づいてキャッシュの管理を行うことにより、アクセス回数の多いファイルが常にキャッシュ上に置かれるようになり、ＨＴＴＰリクエストのような同一ファイルへのアクセスが頻発するような状況におけるファイルアクセスパフォーマンスの改善を図ることが可能である。
【００４５】
さて、キャッシュ管理テーブル更新手段１１４は、単にキャッシュ管理テーブル１１１の内容を更新するだけでなく、最新アクセス時間等を踏まえて、キャッシュされたファイルを監視する機能を有することがより望ましい。即ち、アクセス回数は非常に多いが長時間アクセスされない状態のファイルがキャッシュ１１３上に居座り続けてしまう可能性があるからである。
【００４６】
このような状況を防ぐために本実施形態に係るキャッシュ管理テーブル更新手段が実行する処理フローを図５乃至図７を参照して説明する。尚、図５乃至図７の処理フローはキャッシュからのファイルの追い出し方法に関するものである。
【００４７】
各処理フローは、基本的に図３のフローチャートとは必ずしも連携を要さずに動作可能であるが、例えば、実施例１はステップＳ２０７とＳ２１１の間、実施例２と実施例３はステップＳ２０５とＳ２０６の間にそれぞれ位置させることができる。
【００４８】
＜実施例１＞  本実施例は、最新アクセス時刻が所定の時刻以前のファイルについては、アクセス回数をリセットすることでキャッシュから追い出され易くするものである。このため、例えば毎日一定の時刻を、キャッシュされている全ファイルのアクセス回数のリセット時刻と定める。
【００４９】
先ず、ファイルキャッシュ手段１１０がキャッシュ管理テーブル更新手段１１４を呼び出す（ステップＳ５００）。呼び出されたキャッシュ管理テーブル更新手段１１４が現時刻についてリセット時刻を過ぎているかどうか確認する（ステップＳ５０１）。ここで、リセット時刻を過ぎている場合、キャッシュ管理テーブル更新手段１１４は、キャッシュされている全てのファイルについて最新アクセス時刻を確認し（ステップＳ５０２）、最新アクセス時刻が当該リセット時刻以前のファイルについては（ステップＳ５０３）、アクセス回数を１／２とする（ステップＳ５０４）。ここでは、アクセス回数を１／２としているが、クリアしてしまうことも考えられる。
【００５０】
ステップＳ５０１において現時刻がリセット時刻以前である場合、或いは、ステップＳ５０３において最新アクセス時刻が指定リセット時刻以降である場合、各ファイルのアクセス回数への操作は行わない。
【００５１】
これにより、次回以降のファイルアクセスにおいて、上記ステップＳ５０４でアクセス回数をリセットされたファイルはキャッシュ１１３から追い出され易くなる。
【００５２】
＜実施例２＞  本実施例は、一定時間アクセスされなかったファイルをキャッシュから追い出してしまうものである。
【００５３】
先ず、ファイルキャッシュ手段１１０がキャッシュ管理テーブル更新手段１１４を呼び出す（ステップＳ６００）。呼び出されたキャッシュ管理テーブル更新手段１１４がキャッシュされている全てのファイルの最新アクセス時刻をキャッシュ管理テーブル１１１から読み出し（ステップＳ６０１）、現時刻と比較することで所定の時間より長い間アクセスされていないファイルが無いか確認する（ステップＳ６０２）。
【００５４】
この結果、当該所定時間より長くアクセスされていないファイルがある場合には、ファイルキャシュ手段１１０が当該ファイルをキャッシュ１１３から追い出す（ステップＳ６０３）。これにより、キャッシュ１１３上に新規キャッシュのための空き領域を適切に確保することが可能となる。
【００５５】
＜実施例３＞  本実施例は、最もアクセス間隔の長いファイルをキャッシュから追い出してしまうものである。この場合、キャッシュ管理テーブル１１１はキャッシュされている各ファイルの最新アクセス時刻とその直前のアクセス時刻を保持するものとする。
【００５６】
先ず、ファイルキャッシュ手段１１０がキャッシュ管理テーブル更新手段１１４を呼び出す（ステップＳ７００）。呼び出されたキャッシュ管理テーブル更新手段１１４が、キャッシュされている全てのファイルについて、キャッシュ管理テーブル１１１を参照して最新アクセス時刻とその直前のファイルアクセス時刻からアクセス間隔を求め（ステップＳ７０１）、最もアクセス間隔が長いファイルをキャッシュ１１３から追い出す（ステップＳ７０２）。これにより、キャッシュ１１３上に新規キャッシュのための空き領域を適切に確保することが可能となる。
【００５７】
尚、上記実施例２及び実施例３において追い出し対象のファイルをキャッシュから追い出さずに、アクセス回数を１／２にしたり、クリアすることもそれらのファイルをキャッシュ１１３上に居座り続けさせないためには有効である。また、本実施形態に係るファイルシステムのキャッシュ管理方法の本質は、アクセス回数と最終アクセス時刻を考慮し、ファイル単位でアクセス対象となるファイルをキャッシュするものであり、上記の組合せに限られるものではない。
【００５８】
上記各実施例によれば、アクセス回数が多くても長時間アクセスされなくなったファイルが長時間キャッシュ上に居座ることを防ぐことが可能となる。
【００５９】
尚、以上ではコンピュータ１０２をネットワーク上のＷＥＢサーバとして扱ったがスタンドアロンで使用されるものでも構わない。
【００６０】
また、本実施形態並びに各実施例で説明した処理フローはハードウェア或いはソフトウェアのいずれでも実現可能である。ソフトウェアで実現する場合は、コンピュータ等の上で稼働しているＯＳや、データベース管理ソフト、ネットワークソフト等のミドルウェアが、当該処理フローの一部を実行しても良い。
【００６１】
【発明の効果】
以上で詳述したように、本発明によれば、ファイルへのアクセス回数を踏まえてキャッシュの管理を行うことで、現時点においてユーザからのアクセス要求が多いファイルが常にキャッシュ上に置かれるようになる。これにより、キャッシュヒット率が向上し、その結果、ファイルアクセスの高速化を実現できる。また、最新アクセス時刻が所定の時刻以前のファイルについては、アクセス回数をリセットすることでキャッシュから追い出され易くし、アクセス回数が多くても長時間アクセスされなくなったファイルが長時間キャッシュ上に居座ることを防げる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るファイルシステムの構成を示すブロック図。
【図２】図１のキャッシュ管理テーブルの一例を示した図。
【図３】同実施形態に係るキャッシュ管理方法を示すフローチャート。
【図４】同実施形態に係るキャッシュ管理方法を説明するための図。
【図５】同実施形態に係るキャッシュ管理方法の第１の実施例を示すフローチャート。
【図６】同実施形態に係るキャッシュ管理方法の第２の実施例を示すフローチャート。
【図７】同実施形態に係るキャッシュ管理方法の第３の実施例を示すフローチャート。
【図８】ＬＲＵ方式によるキャッシュ管理方法を説明するための図。
【符号の説明】
１００…ファイルシステム、  １０１…ＯＳ、
１０２…コンピュータ、  １０６…外部記憶装置、
１０７…ユーザプロセス、  １０８…ファイルシステムインターフェイス、
１０９…ファイルアクセス手段、  １１０…ファイルキャッシュ手段、
１１１…キャッシュ管理テーブル、  １１２…ディスクアクセス手段、
１１３…キャッシュ、  １１４…キャッシュ管理テーブル更新手段
【図１】
0003612271.tif 000002
【図２】
0003612271.tif 000003
【図３】
0003612271.tif 000004
【図４】
0003612271.tif 000005
【図５】
0003612271.tif 000006
【図６】
0003612271.tif 000007
【図７】
0003612271.tif 000008
【図８】
0003612271.tif 000009