(57)【要約】【課題】ファイルシステムの組み合わせでキャッシュ化を実現することにより、効率的にキャッシュ管理を行い得るハイブリッドファイルシステム等を提供すること。【解決手段】高速デバイス用のキャッシュファイルシステム２３および低速デバイス用のターゲットファイルシステム２２へのデータ入出力を制御するハイブリッドファイルシステム２１であって、ファイル、ディレクトリまたはフォルダ単位でキャッシュ対象を指定しておき、ユーザアプリケーション１１からアクセス要求された要求ファイルがキャッシュ対象であるか否かを判別して、当該要求ファイルがキャッシュ対象であると判別した場合、キャッシュファイルシステム２３およびターゲットファイルシステム２２間で要求ファイルの入出力制御を行うと共に、キャッシュ対象でないと判別した場合、ターゲットファイルシステム２２のみと要求ファイルの入出力制御を行う。【選択図】図１
2008090378.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリとして用いられる高速デバイス用のキャッシュファイルシステム、および主記憶装置として用いられる低速デバイス用のターゲットファイルシステムへのデータ入出力を制御するハイブリッドファイルシステムであって、
ファイル、ディレクトリまたはフォルダ単位で、キャッシュ対象を指定するキャッシュ対象指定手段と、
前記キャッシュ対象指定手段による指定結果を記憶するキャッシュ対象記憶手段と、
前記キャッシュ対象記憶手段を参照し、ユーザアプリケーションからアクセス要求された要求ファイルがキャッシュ対象であるか否かを判別するキャッシュ判別手段と、
前記要求ファイルがキャッシュ対象であると判別した場合、前記キャッシュファイルシステムおよび前記ターゲットファイルシステム間で前記要求ファイルの入出力制御を行うと共に、キャッシュ対象でないと判別した場合、前記ターゲットファイルシステムのみと前記要求ファイルの入出力制御を行うキャッシュ制御手段と、を備えたことを特徴とするハイブリッドファイルシステム。
【請求項２】
前記キャッシュ制御手段がキャッシュ制御を行うための情報であって、前記ターゲットファイルシステムから前記キャッシュファイルシステムへのファイル複製に関する複製要求情報を含む管理情報を記憶する管理情報記憶手段と、
前記キャッシュファイルシステムと前記ターゲットファイルシステムとの同期をとるための同期処理を定期的に実行する同期制御手段と、をさらに備え、
前記キャッシュ制御手段は、
前記ユーザアプリケーションからオープン処理が要求され、前記要求ファイルがキャッシュ対象であり、且つ前記キャッシュファイルシステムに未キャッシュの場合、
前記キャッシュファイルシステムに対してオープン処理を要求すると共に、前記管理情報記憶手段における前記要求ファイルの前記複製要求情報を「複製要求あり」に更新し、
前記同期制御手段は、
前記管理情報記憶手段を参照して前記複製要求情報が「複製要求あり」のファイルが存在する場合、前記ターゲットファイルシステムから該当するファイルを読み出して、前記キャッシュファイルシステムに書き込み、その後前記複製要求情報を「複製済み」に更新することを特徴とする請求項１に記載のハイブリッドファイルシステム。
【請求項３】
前記管理情報記憶手段は、
前記管理情報として、キャッシュ済みファイルのライトバック状況に関するライトバック情報をさらに記憶し、
前記キャッシュ制御手段は、
前記ユーザアプリケーションからクローズ処理が要求され、前記要求ファイルがキャッシュ対象であり、且つ前記キャッシュファイルシステムにキャッシュ済みの場合、
前記キャッシュファイルシステムに対してクローズ処理を要求すると共に、前記管理情報記憶手段における前記要求ファイルの前記ライトバック情報を「ライトバック要求あり」に更新し、
前記同期制御手段は、
前記管理情報記憶手段を参照して前記ライトバック情報が「ライトバック要求あり」のファイルが存在する場合、前記キャッシュファイルシステムから該当するファイルを読み出して、前記ターゲットファイルシステムに書き込み、その後前記ライトバック情報を「ライトバック済み」に更新することを特徴とする請求項２に記載のハイブリッドファイルシステム。
【請求項４】
前記キャッシュファイルシステムに未キャッシュのファイルを一時的に記憶する一時記憶手段と、
前記キャッシュファイルシステムに対する書き込みを非同期に行う非同期書き込み手段と、をさらに備え、
前記管理情報記憶手段は、
前記管理情報として、前記一時記憶手段から前記キャッシュファイルシステムへのキャッシュ要求に関するキャッシュ要求情報をさらに記憶し、
前記キャッシュ制御手段は、
前記要求ファイルがキャッシュ対象であり、且つ前記未キャッシュの場合、
前記ターゲットファイルシステムから前記要求ファイルを読み出して前記一時記憶手段に書き込むと共に前記管理情報記憶手段における当該要求ファイルの前記キャッシュ要求情報を「要求あり」に更新し、
前記非同期書き込み手段は、
前記管理情報記憶手段を参照して前記キャッシュ要求情報が「要求あり」のファイルが存在する場合、前記一時記憶手段から該当するファイルを読み出して、前記キャッシュファイルシステムに書き込み、その後前記キャッシュ要求情報を「キャッシュ済み」に更新することを特徴とする請求項１ないし３のいずれか１項に記載のハイブリッドファイルシステム。
【請求項５】
前記ターゲットファイルシステムのディレクトリ構成またはフォルダ構成を前記キャッシュファイルシステムに複製する構成複製手段をさらに備えていることを特徴とする請求項１ないし４のいずれか１項に記載のハイブリッドファイルシステム。
【請求項６】
請求項１ないし５のいずれか１項に記載のハイブリッドファイルシステムと、
前記ハイブリッドファイルシステムの上位層として機能するバーチャルファイルシステムと、
前記キャッシュファイルシステムと、
前記ターゲットファイルシステムと、を有することを特徴とするオペレーティングシステム。
【請求項７】
キャッシュメモリとして用いられる高速デバイス用のキャッシュファイルシステム、および主記憶装置として用いられる低速デバイス用のターゲットファイルシステムへのデータ入出力を制御するハイブリッドファイルシステムのキャッシュ制御方法であって、
前記ハイブリッドファイルシステムが、
ファイル、ディレクトリまたはフォルダ単位で、キャッシュ対象を指定するステップと、
ユーザアプリケーションからアクセス要求された要求ファイルがキャッシュ対象として指定されているか否かを判別するステップと、
前記要求ファイルがキャッシュ対象であると判別した場合、前記キャッシュファイルシステムおよび前記ターゲットファイルシステム間で前記要求ファイルの入出力制御を行うと共に、キャッシュ対象でないと判別した場合、前記ターゲットファイルシステムのみと前記要求ファイルの入出力制御を行うステップと、を実行することを特徴とするキャッシュ制御方法。
【請求項８】
コンピュータに、請求項７に記載のキャッシュ制御方法における各ステップを実行させるためのプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
２つのファイルシステムを組み合わせてキャッシュ管理を行うハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体
【背景技術】
【０００２】
従来、使用頻度の高いデータを高速デバイスに格納しておくことで、低速デバイスへのアクセス回数を軽減し処理速度を向上させる、いわゆる「キャッシュ」が知られている。このキャッシュに用いられる高速デバイス（以下、「キャッシュメモリ」と称する）は、ファイルシステムにより管理され、通常データまたはブロック単位で読み書きを行う（例えば、特許文献１）。
【特許文献１】特開平７−８４８８６号公報
【０００３】
図１０は、従来のファイルシステムによるキャッシュ管理を示す図である。同図に示すように、通常、ファイルシステム１０３は、バーチャルファイルシステム１０２（ファイルシステム１０３を統一的に扱うための層）と共にオペレーティングシステム１１０の一機能として提供されるものである。例えば、ユーザアプリケーション１０１からアクセス要求（読み出し要求／書き込み要求）があると、バーチャルファイルシステム１０２は、部分的に要求を処理し、残りの処理の要求を適当なファイルシステム１０３（ｅｘｔ３、ＦＡＴ、ｎｆｓなど）に出力する。アクセス要求を取得したファイルシステム１０３は、キャッシュメモリ１０４を利用して所定のキャッシュ処理を行い、デバイスドライバ１０５（ＨＤＤ、ＣＦ、Ｎｅｔｗｏｒｋなど）に対してデータの入出力を行う。デバイスドライバ１０５は、デバイス１０６へのインターフェースとして機能し、対応するデバイス１０６と、データの読み出し処理および書き込み処理を行う。
【０００４】
このように、従来は、１台のコンピュータ１００に、キャッシュ管理を行うファイルシステム１０３を複数搭載することはあるものの、各ファイルシステム１０３でキャッシュ管理を行うことが一般的であり、キャッシュ管理を行わないファイルシステムを搭載するといった発想はなかった。つまり、ファイルシステムを組み合わせた形でキャッシュ管理を行うといったことは為されていなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、キャッシュに用いられるキャッシュメモリ１０４は、通常少容量であるため、これを管理するファイルシステム１０３は、新しいデータを書き込む際に、キャッシュメモリ１０４の空き領域を確認し、空き領域がない場合には古いデータを消去して新しいデータを書き込むといった処理を必要とする。特に、データの書き換えをブロック単位で行うフラッシュメモリをキャッシュメモリ１０４として用いた場合は、データの書き換えが頻繁に発生すると、処理速度向上を目的とするはずのキャッシュに時間がかかってしまうといった問題がある。
【０００６】
本発明は、このような問題点に鑑み、ファイルシステムの組み合わせでキャッシュ化を実現することにより、効率的にキャッシュ管理を行い得るハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のハイブリッドファイルシステムは、キャッシュメモリとして用いられる高速デバイス用のキャッシュファイルシステム、および主記憶装置として用いられる低速デバイス用のターゲットファイルシステムへのデータ入出力を制御するハイブリッドファイルシステムであって、ファイル、ディレクトリまたはフォルダ単位で、キャッシュ対象を指定するキャッシュ対象指定手段と、キャッシュ対象指定手段による指定結果を記憶するキャッシュ対象記憶手段と、キャッシュ対象記憶手段を参照し、ユーザアプリケーションからアクセス要求された要求ファイルがキャッシュ対象であるか否かを判別するキャッシュ判別手段と、要求ファイルがキャッシュ対象であると判別した場合、キャッシュファイルシステムおよびターゲットファイルシステム間で要求ファイルの入出力制御を行うと共に、キャッシュ対象でないと判別した場合、ターゲットファイルシステムのみと要求ファイルの入出力制御を行うキャッシュ制御手段と、を備えたことを特徴とする。
【０００８】
本発明のキャッシュ制御方法は、キャッシュメモリとして用いられる高速デバイス用のキャッシュファイルシステム、および主記憶装置として用いられる低速デバイス用のターゲットファイルシステムへのデータ入出力を制御するハイブリッドファイルシステムのキャッシュ制御方法であって、ハイブリッドファイルシステムが、ファイル、ディレクトリまたはフォルダ単位で、キャッシュ対象を指定するステップと、ユーザアプリケーションからアクセス要求された要求ファイルがキャッシュ対象として指定されているか否かを判別するステップと、要求ファイルがキャッシュ対象であると判別した場合、キャッシュファイルシステムおよびターゲットファイルシステム間で要求ファイルの入出力制御を行うと共に、キャッシュ対象でないと判別した場合、ターゲットファイルシステムのみと要求ファイルの入出力制御を行うステップと、を実行することを特徴とする。
【０００９】
これらの構成によれば、高速デバイス用のキャッシュファイルシステムと低速デバイス用のターゲットファイルシステムとの２つのファイルシステムを組み合わせて用いるため、ファイルアクセスの高速化を図ることができる。また、ファイル、ディレクトリまたはフォルダ単位で、キャッシュ対象を指定することにより、キャッシュ対象を絞ることができる。つまり、無駄なキャッシュ処理を省くことで、効率的なキャッシュ化を実現でき、さらにファイルアクセスを高速化できる。
なお、キャッシュ対象がディレクトリまたはフォルダ単位で指定された場合、それらに含まれるファイル全てをキャッシュ対象として指定されたものとして扱う。
また、キャッシュファイルシステムとしては、従来のファイルシステム（１つのファイルシステムでキャッシュ管理を行うもの）を用いることが好ましい。この構成によれば、本発明の汎用性を高めることができる。
【００１０】
上記のハイブリッドファイルシステムにおいて、キャッシュ制御手段がキャッシュ制御を行うための情報であって、ターゲットファイルシステムからキャッシュファイルシステムへのファイル複製に関する複製要求情報を含む管理情報を記憶する管理情報記憶手段と、キャッシュファイルシステムとターゲットファイルシステムとの同期をとるための同期処理を定期的に実行する同期制御手段と、をさらに備え、キャッシュ制御手段は、ユーザアプリケーションからオープン処理が要求され、要求ファイルがキャッシュ対象であり、且つキャッシュファイルシステムに未キャッシュの場合、キャッシュファイルシステムに対してオープン処理を要求すると共に、管理情報記憶手段における要求ファイルの複製要求情報を「複製要求あり」に更新し、同期制御手段は、管理情報記憶手段を参照して複製要求情報が「複製要求あり」のファイルが存在する場合、ターゲットファイルシステムから該当するファイルを読み出して、キャッシュファイルシステムに書き込み、その後複製要求情報を「複製済み」に更新することが好ましい。
【００１１】
この構成によれば、ユーザアプリケーションからオープン処理が要求されたときに同期処理を行う（該当するファイルを、ターゲットファイルシステムからキャッシュファイルシステムに書き込む）のではなく、定期的に同期処理を行うことで、効率的にキャッシュ処理を行うことができる。すなわち、一般的にファイルの書き込みには時間がかかるが、同期制御手段によってバックグランドで処理させることで、見かけのファイルアクセスを高速化することができる。
【００１２】
上記のハイブリッドファイルシステムにおいて、管理情報記憶手段は、管理情報として、キャッシュ済みファイルのライトバック状況に関するライトバック情報をさらに記憶し、キャッシュ制御手段は、ユーザアプリケーションからクローズ処理が要求され、要求ファイルがキャッシュ対象であり、且つキャッシュファイルシステムにキャッシュ済みの場合、キャッシュファイルシステムに対してクローズ処理を要求すると共に、管理情報記憶手段における要求ファイルのライトバック情報を「ライトバック要求あり」に更新し、同期制御手段は、管理情報記憶手段を参照してライトバック情報が「ライトバック要求あり」のファイルが存在する場合、キャッシュファイルシステムから該当するファイルを読み出して、ターゲットファイルシステムに書き込み、その後ライトバック情報を「ライトバック済み」に更新することが好ましい。
【００１３】
この構成によれば、ユーザアプリケーションからクローズ処理が要求されたときに同期処理を行う（該当するファイルを、キャッシュファイルシステムからターゲットファイルシステムに書き込む）のではなく、定期的に同期処理を行うことで、見かけのファイルアクセスを高速化することができる。また、ターゲットファイルシステムに書き込む同期処理を、定期的に行うことで、ターゲットファイルシステムへの書き込み回数を減らすことができる。これにより、書き換え回数に制限のあるデバイス（コンパクトフラッシュ（登録商標）など）を用いる場合、デバイス寿命の延命を図ることができる。
【００１４】
上記のハイブリッドファイルシステムにおいて、キャッシュファイルシステムに未キャッシュのファイルを一時的に記憶する一時記憶手段と、キャッシュファイルシステムに対する書き込みを非同期に行う非同期書き込み手段と、をさらに備え、管理情報記憶手段は、管理情報として、一時記憶手段からキャッシュファイルシステムへのキャッシュ要求に関するキャッシュ要求情報をさらに記憶し、キャッシュ制御手段は、要求ファイルがキャッシュ対象であり、且つ未キャッシュの場合、ターゲットファイルシステムから要求ファイルを読み出して一時記憶手段に書き込むと共に管理情報記憶手段における当該要求ファイルのキャッシュ要求情報を「要求あり」に更新し、非同期書き込み手段は、管理情報記憶手段を参照してキャッシュ要求情報が「要求あり」のファイルが存在する場合、一時記憶手段から該当するファイルを読み出して、キャッシュファイルシステムに書き込み、その後キャッシュ要求情報を「キャッシュ済み」に更新することが好ましい。
【００１５】
この構成によれば、キャッシュファイルシステムへの書き込みを、一時記憶手段を介して非同期に行うため、ターゲットファイルシステムから読み出したものをその都度キャッシュファイルシステムに書き込む場合と比較して、効率的にキャッシュ処理を行うことができる。つまり、一時記憶手段を利用することで、ファイルの書き込みを待たずに、ユーザアプリケーションに処理を戻すことができ、書き込みに要する時間を短縮できる。また、ファイルサイズが大きなファイルの場合、部分的にキャッシュを行うことが考えられるが、そのような場合であっても一時記憶手段を利用することで容易に管理できるといった利点もある。
【００１６】
上記のハイブリッドファイルシステムにおいて、ターゲットファイルシステムのディレクトリ構成またはフォルダ構成をキャッシュファイルシステムに複製する構成複製手段をさらに備えていることが好ましい。
【００１７】
この構成によれば、ターゲットファイルシステムとキャッシュファイルシステムで、共通のディレクトリ構成またはフォルダ構成を用いるため、効率的にファイルアクセスを行うことができる。
【００１８】
本発明のオペレーティングシステムは、上記のハイブリッドファイルシステムと、ハイブリッドファイルシステムの上位層として機能するバーチャルファイルシステムと、キャッシュファイルシステムと、ターゲットファイルシステムと、を有することを特徴とする。
【００１９】
本発明の記録媒体は、コンピュータに、上記のキャッシュ制御方法における各ステップを実行させるためのプログラムを記録したものであることを特徴とする。
【００２０】
これらを用いることにより、効率的にキャッシュ管理を行い得るハイブリッドファイルシステムを提供することができ、ファイルアクセスの高速化を図ることができる。
【発明を実施するための最良の形態】
【００２１】
以下、添付の図面を参照して、本発明の一実施形態に係るハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体について説明する。図１は、本発明のハイブリッドファイルシステム２１を適用した情報処理システム１の簡易ブロック図である。同図に示すように、情報処理システム１は、情報処理装置であるコンピュータ１０と、記憶装置として機能するデバイス１６と、から成る。デバイス１６は、主記憶装置として用いられる低速デバイス（例えば、ＵＳＢ接続のコンパクトフラッシュ（登録商標）やハードディスクなど）を適用可能である。
【００２２】
コンピュータ１０は、デバイス１６からのデータ読み出し要求やデバイス１６へのデータ書き込み要求を発信するユーザアプリケーション１１と、基本ソフトウェアであるオペレーティングシステム（以下、「ＯＳ」と称する）１２と、デバイス１６へのインターフェースを司るデバイスドライバ１３と、を有している。
【００２３】
また、ＯＳ１２は、バーチャルファイルシステム（仮想ファイルシステム）２０、ハイブリッドファイルシステム２１、ターゲットファイルシステム２２、キャッシュファイルシステム２３、キャッシュメモリ２４および従来型のファイルシステム構成３０を有している。
【００２４】
バーチャルファイルシステム２０は、ファイルシステムを抽象化するための層であり、従来型のものを適用可能である。ハイブリッドファイルシステム２１は、本発明の主要部を成すものであり、ターゲットファイルシステム２２およびキャッシュファイルシステム２３を組み合わせたキャッシュ管理方式を提供する。
【００２５】
ターゲットファイルシステム２２は、低速デバイス用のファイルシステムであり、本実施形態ではデバイス１６のデータ様式をサポートする。キャッシュファイルシステム２３は、高速デバイス用のファイルシステムであり、本実施形態ではキャッシュメモリ２４のデータ様式をサポートする。なお、キャッシュメモリ２４としては、不揮発性メモリやバックアップ電池を備えた揮発性メモリを適用可能である。
【００２６】
従来型のファイルシステム構成３０は、ファイルシステム３３およびキャッシュメモリ３４から成る。ファイルシステム３３は、従来型のファイルシステム、すなわち１つのファイルシステムでキャッシュ管理を行うものを指す。
【００２７】
なお、キャッシュファイルシステム２３としては、上記の従来型のファイルシステム３３と同様の構成のものを用いることが好ましい。この構成によれば、本発明の汎用性を高めることができる。
【００２８】
上記の構成により、例えば、ユーザアプリケーション１１が書き込み要求を発信すると、バーチャルファイルシステム２０は、部分的に要求を処理し、残りの処理の要求をハイブリッドファイルシステム２１または従来型のファイルシステム３３に出力する。バーチャルファイルシステム２０がいずれのファイルシステムを選択するかは、予め指定されている情報（Linuxの場合、「/etc/fstab」ファイル）に基づいて決定する。この情報は、テキストファイルであり、変更・追加・削除が可能となっている。なお、いずれのファイルシステムを選択するかの情報は、起動用ファイルではなく、ユーザが途中でＧＵＩを利用して設定するようにしても良い。
【００２９】
ハイブリッドファイルシステム２１が書き込み要求を取得すると、ターゲットファイルシステム２２およびキャッシュファイルシステム２３を組み合わせたキャッシュ処理を行い（詳細については後述する）、最終的にターゲットファイルシステム２２が、デバイスドライバ１３を介して、ファイルデータをデバイス１６に書き込む。
【００３０】
次に、図２を参照し、ハイブリッドファイルシステム２１の制御構成について説明する。同図に示すように、ハイブリッドファイルシステム２１は、キャッシュ対象指定手段４１０、キャッシュ対象記憶手段４２０、管理情報記憶手段４３０、一時記憶手段４４０、キャッシュ判別手段４５０、キャッシュ制御手段４６０、同期制御手段４７０、非同期書き込み手段４８０および構成複製手段４９０を有している。なお、各手段の括弧書きは、後述する各種動作の説明図（図６ないし図９）との対応関係を示すものである。
【００３１】
キャッシュ対象指定手段４１０は、ファイル、ディレクトリまたはフォルダ単位で、キャッシュ対象を指定するものである。具体的には、図３に示す後述のフィルタデータテーブル４２の内容を指定する。なお、ディレクトリまたはフォルダ単位でキャッシュ対象が指定された場合、それらに所属するファイル全てがキャッシュ対象として指定されたものとして扱う。
【００３２】
キャッシュ対象記憶手段４２０は、キャッシュ対象指定手段４１０による指定結果を記憶するものであり、フィルタデータテーブル４２によって実現される。図３は、フィルタデータテーブル４２に記録されるフィルタデータの構成を示す図である。同図に示すように、フィルタデータは、フィルタデータテーブル４２内で採番・管理される通番と、複数の指定があった場合の優先度を指定するための優先順位と、フィルタリングをするファイル名、ディレクトリ名またはフォルダ名である対象名称と、キャッシュタイプの属性と、に関する情報から成る。
【００３３】
キャッシュタイプの属性は、「０：キャッシュをする（デフォルト）」、「１：キャッシュを全くしない」、「２：強制的にキャッシュする（キャッシュメモリ２４に空きがない場合は、ライトバックをして空きを作る）」、「３：キャッシュするがライトバックしない」、のいずれかを指定可能となっている。なお、「０：キャッシュをする」が指定された場合は、大容量ファイルや空きエリアが十分にない場合、キャッシュを行わない。また、「１：キャッシュを全くしない」に指定されているファイルは、キャッシュファイルシステム２３によってキャッシュされることなく、ターゲットファイルシステム２２とのみデータの入出力が行われる。
【００３４】
なお、キャッシュ対象指定手段４１０は、上記の内容以外にも、大容量ファイルをどのように扱うかについて指定しても良い。例えば、キャッシュファイルシステム２３のサイズのｎｎ％を閾値とした場合、ファイルサイズがそのｎｎ％を超えた場合に大容量ファイルと判定し、大容量ファイルと判定した場合はディレクトリ構成またはフォルダ構成のみを更新するようにしても良い。
【００３５】
また、「２：強制的にキャッシュする」に指定された場合のライトバックの方式として、例えば、rsync方式による一定間隔同期、更新頻度、および非同期エリア（キャッシュファイルシステム２３上でターゲットファイルシステム２２に対して同期をとっていない領域）の状況（全体のｎｎ％）等を指定しても良い。この非同期エリアの状況を指定することで、（本実施形態では、定期的にファイル同期を行う構成となっているが）連続して大量の書き込みがあった場合などアクセス性能が劣化しないように空きエリアを確保でき、他のファイル書き込み動作時に、一旦同期をとって空きエリアを確保するといった処理の回数を少なくすることができる。
【００３６】
図２の説明に戻る。管理情報記憶手段４３０は、ハイブリッドファイルシステム２１がキャッシュ処理を行うための各種情報を記憶するものであり、後述のコントロールデータテーブル４３によって実現される。図４は、コントロールデータテーブル４３に記録されるコントロールデータの構成を示す図である。同図に示すように、コントロールデータは、コントロールデータテーブル４３内で採番・管理される通番と、キャッシュしているファイル名、ディレクトリ名またはフォルダ名である対象名称と、キャッシュタイプの属性と、に関する情報を有する。キャッシュタイプの属性は、フィルタデータテーブル４２と同内容である。
【００３７】
また、コントロールデータは、キャッシュの状態（「０：全キャッシュ」、「１：部分キャッシュ」、「−１：フラッシュ」のいずれか）と、ターゲットファイルシステム２２からキャッシュファイルシステム２３への複製要求と、キャッシュファイルシステム２３からターゲットファイルシステム２２への復元要求と、キャッシュファイルシステム２３からターゲットファイルシステム２２およびフラッシュデータへのフラッシュ要求と、キャッシュファイルシステム２３からターゲットファイルシステム２２へのライトバック要求と、後述のバッファデータテーブル４４からキャッシュファイルシステム２３へのキャッシュ要求と、に関する情報を有する。複製要求、復元要求、フラッシュ要求、ライトバック要求およびキャッシュ要求については、「０：不要／完了（要求済み）」、「１：要求（要求あり）」、「２：実行中」、「−１：エラー」のいずれかを記憶する。
【００３８】
なお、ライトバック要求（ライトバック情報）は、復元要求およびフラッシュ要求とリンクしている。すなわち、キャッシュされているファイルで復元要求が発生し、一定時間以上更新がないファイルデータは、後述のキャッシュ制御手段４６０によりライトバック要求が設定される（「１：要求」となる）。また、キャッシュされているファイルでフラッシュ要求が発生しているファイルデータも、ライトバック要求が設定される。
【００３９】
さらに、コントロールデータは、キャッシュデータの優先順位と、アクセス要求が発生する毎にカウントアップされるアクセス回数と、アクセスが発生したアクセス時刻と、ターゲットファイルシステム２２のファイルディスクリプタ（ファイルサイズ、登録日など）であるターゲット情報と、キャッシュファイルシステム２３のファイルディスクリプタであるキャッシュ情報と、バッファデータテーブル４４へのポインタであるバッファポインタと、に関する情報を有する。
【００４０】
なお、キャッシュデータの優先順位については、最新アクセス状況、アクセス回数、ファイルサイズ等によって、後述のキャッシュ制御手段４６０が動的に優先順位を決定する。また、バッファポインタは、キャッシュ状態がフラッシュ済みとなった場合、次回アクセス時に該当するファイルのデータが削除されることとなる。
【００４１】
再び図２の説明に戻る。一時記憶手段４４０は、未キャッシュのファイルを一時的に記憶するものであり、バッファデータテーブル４４によって実現される。図５は、バッファデータの構成を示す図である。同図に示すように、バッファデータは、バッファデータテーブル４４内で採番・管理される通番と、キャッシュファイルシステム２３にデータを書き込むためのファイルディスクリプタであるデータ情報と、キャッシュファイルシステム２３に書き込むデータと、に関する情報を有する。
【００４２】
キャッシュ判別手段４５０は、キャッシュ対象記憶手段４２０を参照し、ユーザアプリケーション１１からアクセス要求（オープン処理要求）されたファイルがキャッシュ対象であるか否かを判別するものであり、後述のキャッシュフィルタ４５によって実現される。
【００４３】
キャッシュ制御手段４６０は、キャッシュ判別手段４５０によりアクセス要求されたファイルがキャッシュ対象であると判別した場合、キャッシュファイルシステム２３およびターゲットファイルシステム２２間でファイルデータの入出力制御を行う。また、キャッシュ対象でないと判別した場合は、ターゲットファイルシステム２２のみとファイルデータの入出力制御を行う。なお、キャッシュ制御手段４６０の詳細については、これを実現するキャッシュコントローラ４６の動作にて後述する。
【００４４】
同期制御手段４７０は、キャッシュファイルシステム２３とターゲットファイルシステム２２との同期をとるための同期処理を定期的に実行するものであり、後述のキャッシュシンクロナイザ４７によって実現される。同期制御手段４７０は、ユーザアプリケーション１１からのオープン処理の要求、またはクローズ処理の要求をトリガにして、管理情報記憶手段４３０に記憶されている複製要求情報や、ライトバック要求情報を参照し、その参照結果に基づいて同期処理を実行する。
【００４５】
非同期書き込み手段４８０は、キャッシュファイルシステム２３またはターゲットファイルシステム２２に対する書き込みを非同期に行うものであり、後述のキャッシュライタ４８によって実現される。例えば、管理情報記憶手段４３０（キャッシュデータテーブル４３）を参照して、キャッシュ要求情報が「１：要求」のファイルが存在する場合、一時記憶手段４４０から該当するファイルを読み出して、キャッシュファイルシステム２３に書き込む。このように、一時記憶手段４４０を利用することで、ファイルの書き込みを待たずに、ユーザアプリケーション１１に処理を戻すことができ、ファイルアクセスを高速化できる。
【００４６】
構成複製手段４９０は、キャッシュファイルシステム２３を組み込んだ段階で、ターゲットファイルシステム２２のディレクトリ構成またはフォルダ構成をキャッシュファイルシステム２３に複製するものである。これにより、ターゲットファイルシステム２２とキャッシュファイルシステム２３のディレクトリ構成またはフォルダ構成を共通化できるため、効率的にファイルアクセスを行うことができる。
【００４７】
次に、図６ないし図９を参照し、ハイブリッドファイルシステム２１における各種動作について説明する。図６は、オープン動作を説明する図である。同図に示すように、ユーザアプリケーション１１からオープン処理が要求されると（Ｓ１１）、キャッシュフィルタ４５は、フィルタデータテーブル４２を参照して、要求されたファイルがキャッシュ対象であるか否かを判別する。ここで、キャッシュ対象でないと判定した場合は、ターゲットファイルシステム２２にオープン処理要求を出力する（Ｓ１２）。ターゲットファイルシステム２２は、当該要求に対してキャッシュフィルタ４５に返り値（Ｉｎｆｏ）を出力する（Ｓ１３）。キャッシュフィルタ４５は、取得した返り値をユーザアプリケーション１１に出力する（Ｓ１４）。
【００４８】
一方、キャッシュフィルタ４５は、ユーザアプリケーション１１からオープン処理要求されたファイルがキャッシュ対象であると判定した場合、キャッシュコントローラ４６にオープン要求を渡す。キャッシュコントローラ４６は、コントロールデータテーブル４３を参照して、オープン処理要求されたファイルがキャッシュ済みであるか否かを判別する。キャッシュコントローラ４６は、ここでキャッシュ済みであると判定した場合、キャッシュファイルシステム２３に対してオープン処理を要求する（Ｓ１５）と共に、状態を更新する（コントロールデータテーブル４３のアクセス回数を更新し、キャッシュ情報を記録する）。キャッシュファイルシステム２３は、当該オープン処理の要求に対してキャッシュコントローラ４６に返り値を出力する（Ｓ１６）。また、キャッシュコントローラ４６は、オープン処理要求されたファイルが未キャッシュであると判定した場合、ターゲットファイルシステム２２にオープン処理要求を出力する（Ｓ１２）。
【００４９】
続いて、キャッシュコントローラ４６による新規ファイルデータのキャッシュ化について説明する。キャッシュコントローラ４６は、キャッシュファイルシステム２３に対してオープン処理（新規作成）を要求すると（Ｓ１５）、コントロールデータテーブル４３のアクセス回数を更新し、ターゲット情報およびキャッシュ情報を記録する。さらに、キャッシュコントローラ４６は、コントロールデータテーブル４３に、複製要求を設定する（「１：要求」にする）。
【００５０】
続いて、キャッシュシンクロナイザ４７によるオープン処理時の同期処理について説明する。キャッシュシンクロナイザ４７は、定期的に（例えば１０秒毎に）コントロールデータテーブル４３を参照し、複製要求を確認する。ここで、複製要求されたファイルが存在する場合は、該当ファイルの複製要求情報を「２：実行中」にする。さらに、キャッシュシンクロナイザ４７は、該当するファイルデータをターゲットファイルシステム２２から読み出し（Ｓ１７）、キャッシュファイルシステム２３に対して読み出したファイルデータを書き込む（Ｓ１８）。これらの処理が完了すると、キャッシュシンクロナイザ４７は、該当ファイルの複製要求情報を「０：不要／完了」にする。
【００５１】
これ以降、該当ファイルに対してのアクセスは、キャッシュファイルシステム２３上で可能となる。すなわち、従来型のファイルシステムを利用したキャッシュファイルシステム２３で、高速なファイルアクセスを行うことができる。
【００５２】
なお、Ｃｒｅａｔｅ処理（ファイルを新規に作成する動作）については、上記のオープン処理と類似しているため、説明を省略する。また、キャッシュファイルシステム２３の容量が不足している場合は、優先度の低いキャッシュデータをフラッシュし、空きを作るといった処理を行う。
【００５３】
次に、図７を参照し、読み出し動作について説明する。同図に示すように、ユーザアプリケーション１１から読み出し処理が要求されると（Ｓ２１）、キャッシュコントローラ４６は、コントロールデータテーブル４３を参照して、要求されたファイルがキャッシュ対象であるか否かを判別し、キャッシュ対象でないと判定した場合、ターゲットファイルシステム２２に読み出し要求を出力する（Ｓ２２）。当該読み出し要求に対して出力されたファイルデータは（Ｓ２３）、キャッシュコントローラ４６によりユーザアプリケーション１１に出力される（Ｓ２４）。
【００５４】
また、キャッシュコントローラ４６は、キャッシュ対象であると判定した場合、さらにコントロールデータテーブル４３を参照して、要求されたファイルがキャッシュ済みであるか否かを判別する。通常、オープン処理で同期が行われている場合は、キャッシュ済みであるので、キャッシュコントローラ４６は、キャッシュファイルシステム２３に読み出し要求を出力し（Ｓ２５）、状態を更新する（コントロールデータテーブル４３のアクセス回数を更新する）。また、キャッシュコントローラ４６は、当該要求に対して読み出されたファイルデータを取得し（Ｓ２６）、ユーザアプリケーション１１に出力する（Ｓ２４）。
【００５５】
ここで、オープン処理で同期が行われていない場合に、非同期でキャッシュ読み出しを行う処理について説明する（点線部２００参照）。まず、キャッシュコントローラ４６は、要求されたファイルがキャッシュ済みでないと判定した場合、ターゲットファイルシステム２２からファイルデータを読み出し（Ｓ２２）、当該ファイルデータをバッファデータテーブル４４に格納する（Ｓ２７）と共に、状態を更新する（コントロールデータテーブル４３に、キャッシュ要求を記録し、キャッシュ情報を追加する）。
【００５６】
続いて、キャッシュライタ４８は、定期的に（なるべく短い間隔で）コントロールデータテーブル４３を参照し、キャッシュ要求を確認する。ここでキャッシュ要求があった場合、キャッシュライタ４８は、該当ファイルのキャッシュ要求情報を「２：実行中」にすると共に、該当するファイルデータをバッファデータテーブル４４から読み出し（Ｓ２８）、キャッシュファイルシステム２３に対して読み出したファイルデータを書き込む（Ｓ２９）。これらの処理が完了すると、キャッシュライタ４８は、該当ファイルのキャッシュ要求情報を「０：不要／完了」にし、バッファデータテーブル４４から該当ファイルを削除する。
【００５７】
なお、ターゲットファイルシステム２２から読み出したファイルデータを、その都度キャッシュするといった方法（Ｓ２３とＳ２７間の点線矢印参照）も可能である。
【００５８】
次に、図８を参照し、書き込み動作について説明する。同図に示すように、ユーザアプリケーション１１から書き込み処理が要求されると（Ｓ３１）、キャッシュコントローラ４６は、コントロールデータテーブル４３を参照して、要求されたファイルがキャッシュ対象であるか否かを判別し、キャッシュ対象でないと判定した場合、ターゲットファイルシステム２２にファイルデータを書き込む（Ｓ３２）。また、キャッシュ対象であると判定した場合は、キャッシュファイルシステム２３にファイルデータを書き込み（Ｓ３３）、状態を更新する（コントロールデータテーブル４３のアクセス回数を更新する）。
【００５９】
ここで、非同期でキャッシュ書き込みを行う処理について説明する（点線部３００参照）。まず、キャッシュコントローラ４６は、書き込み要求されたファイルデータをバッファデータテーブル４４に格納する（Ｓ３４）と共に、情報を更新する（コントロールデータテーブル４３に、キャッシュ要求を記録し、キャッシュ情報を追加または更新する）。
【００６０】
続いて、キャッシュライタ４８は、定期的に（なるべく短い間隔で）コントロールデータテーブル４３を参照し、キャッシュ要求を確認する。ここでキャッシュ要求があった場合、キャッシュライタ４８は、該当ファイルのキャッシュ要求情報を「２：実行中」にすると共に、該当するファイルデータをバッファデータテーブル４４から読み出し（Ｓ３５）、読み出した当該ファイルデータをキャッシュファイルシステム２３に対して書き込む（Ｓ３６）。これらの処理が完了すると、キャッシュライタ４８は、該当ファイルのキャッシュ要求情報を「０：不要／完了」にし、バッファデータテーブル４４から該当ファイルを削除する。
【００６１】
なお、キャッシュファイルシステム２３の容量が不足している場合は、オープン処理時と同様に、優先度の低いキャッシュデータをフラッシュし、空きを作るといった処理を行う。また、ターゲットファイルシステム２２またはキャッシュファイルシステム２３がバッファ機能を有している場合、上記点線部３００の処理は省略可能である。
【００６２】
次に、図９を参照し、ファイル同期動作（クローズ動作）について説明する。同図に示すように、ユーザアプリケーション１１からクローズ処理が要求されると（Ｓ４１）、キャッシュコントローラ４６は、コントロールデータテーブル４３を参照して、要求されたファイルがキャッシュ対象であるか否かを判別し、キャッシュ対象でないと判定した場合、ターゲットファイルシステム２２に対してクローズ処理を要求する（Ｓ４２）。また、キャッシュ対象であると判定した場合、キャッシュファイルシステム２３に対してクローズ処理を要求し（Ｓ４３）、状態を更新する（コントロールデータテーブル４３の復元要求を「１：要求」にする）。
【００６３】
続いて、キャッシュシンクロナイザ４７によるクローズ処理時の同期処理について説明する。キャッシュシンクロナイザ４７は、定期的に（例えば１０秒毎に）コントロールデータテーブル４３を参照し、ライトバック要求を確認する。上記のとおり、キャッシュ済みのファイルで復元要求が発生し、一定時間以上更新がないものは、ライトバック要求情報が「１：要求あり」となる。また、キャッシュ済みのファイルでフラッシュ要求が発生しているものも、ライトバック要求情報が「１：要求あり」となる。したがって、これらの要因によってライトバック要求が発生している場合、キャッシュシンクロナイザ４７は、コントロールデータテーブル４３の優先順位情報にしたがって、以下の手順でライトバック処理を実行する。
【００６４】
まず、キャッシュシンクロナイザ４７は、該当ファイルのライトバック要求情報を（復元要求情報またはフラッシュ要求情報と共に）、「２：実行中」にする。さらに、キャッシュシンクロナイザ４７は、該当するファイルデータをキャッシュファイルシステム２３から読み出し（Ｓ４４）、読み出したファイルデータをターゲットファイルシステム２２に書き込む（Ｓ４５）。これらの処理が完了すると、キャッシュシンクロナイザ４７は、該当ファイルのライトバック要求情報を（復元要求情報またはフラッシュ要求情報と共に）、「０：不要／完了」にする。
【００６５】
なお、ターゲットファイルシステム２２への書き込み時（Ｓ４５）には、書き込み容量を削減するために、rsync方式などの差分法を用いることが好ましい。また、フラッシュ要求に基づいてライトバック処理を行った場合、キャッシュシンクロナイザ４７は、書き込み処理後に、キャッシュファイルシステム２３に対して該当ファイルの削除を行う。
【００６６】
以上、説明したとおり、本実施形態によれば、キャッシュファイルシステム２３およびターゲットファイルシステム２２の２つのファイルシステムを組み合わせてキャッシュ管理を行うため、ファイルアクセスの高速化を図ることができる。また、ファイル、ディレクトリまたはフォルダ単位で、キャッシュ対象を指定することにより、キャッシュ対象を絞ることができる。つまり、無駄なキャッシュ処理を省くことができ、さらにファイルアクセスを高速化できる。
【００６７】
また、ユーザアプリケーション１１からのオープン処理またはクローズ処理の要求をトリガにして、定期的に同期処理を行うことで、効率的にキャッシュ処理を行うことができる。すなわち、一般的にファイルの書き込みには時間がかかるが、キャッシュシンクロナイザ４７によってバックグランドで処理させることで、見かけのアクセス時間を高速化することができる。また、コントロールデータテーブル４３により作成・更新・削除などのファイル状態を管理しながら、定期的にターゲットファイルシステム２２に書き込む同期処理を行うことで、連続的に書き込み処理が行われた場合（例えば、動作ログを毎秒記録しているような場合）でも、一定間隔（例えば１０秒毎）でしか実際に書き込みが行われないため、ターゲットファイルシステム２２への書き込み回数を減らすことがでるといった利点もある。特に書き換えに対して回数制約のあるデバイス１６を用いる場合、有効である。
【００６８】
また、キャッシュライタ４８は、バッファデータテーブル４４を介してキャッシュファイルシステム２３への書き込みを行うため、ターゲットファイルシステム２２から読み出したものをその都度キャッシュファイルシステム２３に書き込む場合と比較して、効率的にキャッシュ処理を行うことができる。つまり、バッファデータテーブル４４を利用することで、ファイルの書き込みを待たずに、ユーザアプリケーション１１に処理を戻すことができる。また、ファイルサイズが大きなファイルの場合、キャッシュの状態を「１：部分キャッシュ」とすることが考えられるが、そのような場合であってもバッファデータテーブル４４を利用することで容易に管理できる。
【００６９】
なお、上記の実施形態では、キャッシュシンクロナイザ４７による読み書き処理には、バッファを利用しない構成で説明したが、バッファを利用することで、よりファイルアクセスを高速化させることも可能である。
【００７０】
また、上記の例に示した、情報処理システム１、ハイブリッドファイルシステム２１またはＯＳ１２の各構成要素（各機能）をプログラムとして提供することも可能である。また、そのプログラムを各種記録媒体（ＣＤ−ＲＯＭ、フラッシュＲＯＭ、メモリカード等）に格納して提供することも可能である。すなわち、これらのプログラムおよび記録媒体も、本発明の権利範囲に含まれる。
【００７１】
また、上記の実施形態によらず、ハイブリッドファイルシステム２１のシステム構成や処理工程など、本発明を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【００７２】
【図１】本発明の一実施形態に係るハイブリッドファイルシステムを適用した情報処理システムの簡易ブロック図である。
【図２】ハイブリッドファイルシステムの制御構成を示すブロック図である。
【図３】フィルタデータの構成を示す図である。
【図４】コントロールデータの構成を示す図である。
【図５】バッファデータの構成を示す図である。
【図６】ハイブリッドファイルシステムのオープン動作を説明する図である。
【図７】ハイブリッドファイルシステムの読み出し動作を説明する図である。
【図８】ハイブリッドファイルシステムの書き込み動作を説明する図である。
【図９】ハイブリッドファイルシステムのクローズ動作を説明する図である。
【図１０】従来のファイルシステムによるキャッシュ管理を示す図である。
【符号の説明】
【００７３】
１…情報処理システム  １０…コンピュータ  １１…ユーザアプリケーション  １２…ＯＳ  １３…デバイスドライバ  １６…デバイス  ２０…バーチャルファイルシステム  ２１…ハイブリッドファイルシステム  ２２…ターゲットファイルシステム  ２３…キャッシュファイルシステム  ２４…キャッシュメモリ  ４２…フィルタデータテーブル  ４３…コントロールデータテーブル  ４４…バッファデータテーブル  ４５…キャッシュフィルタ  ４６…キャッシュコントローラ  ４７…キャッシュシンクロナイザ  ４８…キャッシュライタ
【図１】
2008090378.tif 000003
【図２】
2008090378.tif 000004
【図３】
2008090378.tif 000005
【図４】
2008090378.tif 000006
【図５】
2008090378.tif 000007
【図６】
2008090378.tif 000008
【図７】
2008090378.tif 000009
【図８】
2008090378.tif 000010
【図９】
2008090378.tif 000011
【図１０】
2008090378.tif 000012