(57)【要約】【課題】複数の実ファイルシステムのディレクトリ構造を重ね合わせることにより構成した仮想的な投影ファイルシステムにおいて、特定の実ファイルシステムに負荷が集中しないようにする。【解決手段】優先度テーブル4には、実ファイルシステム5-1〜5-N上の各ファイルの優先度を示す優先度情報が登録されている。投影ファイルシステム制御手段3は、各実ファイルシステム5-1〜5-Nのディレクトリ構図を重ね合わせた仮想的な投影ファイルシステムを管理している。ユーザプロセス2は、投影ファイルシステム上のファイルを指定した処理要求を発行する。投影ファイルシステム制御手段3は、上記指定されたファイルに対応する実ファイルシステム上のファイルの内で最も優先度の高いファイルを優先度テーブル4を参照して求め、そのファイルに対して上記処理要求によって要求された操作を行う。【選択図】図１
2010237939.tif 000002
【特許請求の範囲】
【請求項１】
複数の実ファイルシステムと、
該複数の実ファイルシステムで管理されているファイルそれぞれの優先度を示す優先度情報が登録された優先度テーブルと、
前記複数の実ファイルシステムを、それらのディレクトリ構造が重ね合わされた仮想的な一つの投影ファイルシステムとして管理すると共に、ユーザプロセスから入力された前記投影ファイルシステム上のファイルを指定した処理要求に応答して、前記指定されたファイルに対応する前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルに対して前記処理要求によって要求された操作を行う投影ファイルシステム制御手段とを備えたことを特徴とする投影ファイルシステム管理装置。
【請求項２】
請求項１に記載の投影ファイルシステム管理装置において、
前記処理要求として、データの読み込み先にする前記投影ファイルシステム上のファイルを指定したデータ読み込み要求と、データの書き込み先にする前記投影ファイルシステム上のファイルを指定した第１のデータ書き込み要求とが存在することを特徴とする投影ファイルシステム管理装置。
【請求項３】
請求項１または２に記載の投影ファイルシステム管理装置において、
前記ファイルの優先度情報は、ファイルの作成時期に関する情報であり、作成時期が新しいファイルほど、優先度が高いことを特徴とする投影ファイルシステム管理装置。
【請求項４】
請求項３に記載の投影ファイルシステム管理装置において、
前記処理要求として、更に、コピー元とする前記投影ファイルシステム上のファイルを指定した第２のデータ書き込み要求が存在し、
前記投影ファイルシステム制御手段は、ユーザプロセスから入力された第２のデータ書き込み要求に応答して、該第２のデータ書き込み要求によって指定されたファイルに対応する前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルを、前記第２のデータ書き込み要求によって指定されたファイルと対応するファイルが存在しない実ファイルシステムの内の一つにコピーすることにより次世代のファイルを作成し、該作成した次世代のファイルに対して前記第２のデータ書き込み要求によって要求された操作を行うと共に、前記優先度テーブルに前記次世代のファイルの優先度情報を登録することを特徴とする投影ファイルシステム管理装置。
【請求項５】
請求項４記載の投影ファイルシステム管理装置において、
前記投影ファイルシステム制御手段は、前記複数の実ファイルシステムの中に、前記第２の書き込み要求によって指定されたファイルと対応するファイルが存在しない実ファイルシステムが複数存在する場合は、該複数の実ファイルシステム中から、最も空き容量が大きい実ファイルシステムあるいは最も負荷が低い実ファイルシステムを選択することを特徴とする投影ファイルシステム管理装置。
【請求項６】
請求項５に記載の投影ファイルシステム管理装置において、
前記投影ファイルシステム制御手段は、前記複数の実ファイルシステムの全てに前記第２のデータ書き込み要求によって指定されたファイルと対応するファイルが存在する場合は、該対応するファイルの内、最古世代のファイルが存在する実ファイルシステムを選択することを特徴とする投影ファイルシステム管理装置。
【請求項７】
複数の実ファイルシステムと、該複数の実ファイルシステムで管理されているファイルそれぞれの優先度を示す優先度情報が登録された優先度テーブルとを備えたコンピュータが、
前記複数の実ファイルシステムを、それらのディレクトリ構造が重ね合わされた仮想的な一つの投影ファイルシステムとして管理する第１のステップと、
前記コンピュータが、ユーザプロセスから入力された前記投影ファイルシステム上のファイルを指定した処理要求に応答して、前記指定されたファイルに対応する前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルに対して前記処理要求によって要求された操作を行う第２のステップとを含むことを特徴とする投影ファイルシステム管理方法。
【請求項８】
請求項７に記載の投影ファイルシステム管理方法において、
前記処理要求として、データの読み込み先にする前記投影ファイルシステム上のファイルを指定したデータ読み込み要求と、データの書き込み先にする前記投影ファイルシステム上のファイルを指定した第１のデータ書き込み要求とが存在することを特徴とする投影ファイルシステム管理方法。
【請求項９】
請求項７または８に記載の投影ファイルシステム管理方法において、
前記ファイルの優先度情報は、ファイルの作成時期に関する情報であり、作成時期が新しいファイルほど、優先度が高いことを特徴とする投影ファイルシステム管理方法。
【請求項１０】
請求項９に記載の投影ファイルシステム管理方法において、
前記処理要求として、更に、コピー元とする前記投影ファイルシステム上のファイルを指定した第２のデータ書き込み要求が存在し、且つ、
前記コンピュータが、ユーザプロセスから入力された第２のデータ書き込み要求に応答して、該第２のデータ書き込み要求によって指定されたファイルに対応する、前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルを、前記第２のデータ書き込み要求によって指定されたファイルと対応するファイルが存在しない実ファイルシステムの内の一つにコピーすることにより次世代のファイルを作成し、該作成した次世代のファイルに対して前記第２のデータ書き込み要求によって要求された操作を行うと共に、前記優先度テーブルに前記次世代のファイルの優先度情報を登録する第３のステップを含むことを特徴とする投影ファイルシステム管理方法。
【請求項１１】
複数の実ファイルシステムと、該複数の実ファイルシステムで管理されているファイルそれぞれの優先度を示す優先度情報が登録された優先度テーブルとを備えたコンピュータを、投影ファイルシステム管理装置として機能させるためのプログラムであって、
前記コンピュータを、前記複数の実ファイルシステムによりそれらのディレクトリ構造が重ね合わされた仮想的な一つの投影ファイルシステムを構成すると共に、ユーザプロセスから入力された前記投影ファイルシステム上のファイルを指定した処理要求に応答して、前記指定されたファイルに対応する前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルに対して前記処理要求によって要求された操作を行う投影ファイルシステム制御手段として機能させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムにおいて、
前記処理要求として、データの読み込み先にする前記投影ファイルシステム上のファイルを指定したデータ読み込み要求と、データの書き込み先にする前記投影ファイルシステム上のファイルを指定した第１のデータ書き込み要求とが存在することを特徴とするプログラム。
【請求項１３】
請求項１１または１２に記載のプログラムにおいて、
前記ファイルの優先度情報は、ファイルの作成時期に関する情報であり、作成時期が新しいファイルほど、優先度が高いことを特徴とするプログラム。
【請求項１４】
請求項１３に記載のプログラムにおいて、
前記処理要求として、更に、コピー元とする前記投影ファイルシステム上のファイルを指定した第２のデータ書き込み要求が存在し、
前記投影ファイルシステム制御手段は、ユーザプロセスから入力された第２のデータ書き込み要求に応答して、該第２のデータ書き込み要求によって指定されたファイルに対応する前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルを、前記第２のデータ書き込み要求によって指定されたファイルと対応するファイルが存在しない実ファイルシステムの内の一つにコピーすることにより次世代のファイルを作成し、該作成した次世代のファイルに対して前記第２のデータ書き込み要求によって要求された操作を行うと共に、前記優先度テーブルに前記次世代のファイルの優先度情報を登録することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の実ファイルシステムを一つの仮想的なファイルシステムとして管理する技術に関する。
【背景技術】
【０００２】
複数の実ファイルシステムを一つの仮想的なファイルシステムとして管理する技術としては、次のような技術が知られている（例えば、特許文献１参照）。特許文献１では、複数の実ファイルシステムを用いて、そのディレクトリ構造が上記複数の実ファイルシステムのディレクトリ構造を重ね合わせたものとなる、透過型の仮想的なファイルシステム（透過型ファイルシステム）を構成している。なお、ディレクトリ構造の重ね合わせ方は、名前が一致するパス同士を一つに合成し、名前が不一致のパスは元のまま残すというものである。この一つに合成された部分に存在するファイルは、複数の実ファイルシステム上に存在することになる。また、各実ファイルシステムには、優先度が付与されており、透過型ファイルシステム上のファイルに対する読み込み要求や書き込み要求があった場合、優先度を利用して次のような処理を行う。
【０００３】
読み込み要求時には、優先度が最も高い実ファイルシステムから順番に、要求されたファイルを検索し、最初に該当ファイルを検索できた実ファイルシステムに存在する該当ファイルからデータを読み出す。また、書き込み要求時には、優先度が最も高い実ファイルシステムから順番に、要求されたファイルを検索する。そして、最初に該当ファイルを検索できた実ファイルシステムが優先度の最も高い実ファイルシステムである場合には、その実ファイルシステムに存在する該当ファイルにデータを書き込む。また、最初に該当ファイルを検索できた実ファイルシステムが、最も優先度が高い実ファイルシステム以外である場合には、検索した該当ファイルを優先度が最も高い実ファイルシステムにコピーし、コピーしたファイルにデータを書き込む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２６８４５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されている技術によれば、複数の実ファイルシステムを一つの仮想的なファイルシステムとして管理することが可能になる。しかし、特許文献１に記載されている技術は、実ファイルシステム単位で優先度を制御しているため、ユーザが透過型ファイルシステム上のファイルをアクセスした際、実際にアクセスされる実ファイルシステム上のファイルが、優先度が高い実ファイルシステム上のファイルに限られてしまい、融通性に欠けるという問題がある。例えば、第１、第２の実ファイルシステムから構成され、第１の実ファイルシステムの方が優先度が高い透過型ファイルシステムの場合、第１、第２の実ファイルシステムの両方に、透過型ファイルシステム上のファイルF1、F2と対応するファイルf1、f2が存在していても、ユーザがアクセスできるファイルは常に第１の実ファイルシステム上のファイルf1、f2に限られてしまい、ファイルf1は第１の実ファイルシステム上のものをアクセスし、ファイルf2は第２の実ファイルシステム上のものアクセスするといったことができない。
【０００６】
［発明の目的］
そこで、本発明の目的は、複数の実ファイルシステムから構成される仮想的なファイルシステムにおいて、どの実ファイルシステム上に存在するファイルをユーザにアクセスさせるのかをファイル単位で制御できるようにすることにある。
【課題を解決するための手段】
【０００７】
本発明にかかる第１の投影ファイルシステム管理装置は、
複数の実ファイルシステムと、
該複数の実ファイルシステムで管理されているファイルそれぞれの優先度を示す優先度情報が登録された優先度テーブルと、
前記複数の実ファイルシステムを、それらのディレクトリ構造が重ね合わされた仮想的な一つの投影ファイルシステムとして管理すると共に、ユーザプロセスから入力された前記投影ファイルシステム上のファイルを指定した処理要求に応答して、前記指定されたファイルに対応する前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルに対して前記処理要求によって要求された操作を行う投影ファイルシステム制御手段とを備えている。
【０００８】
本発明にかかる第１の投影ファイルシステム管理方法は、
複数の実ファイルシステムと、該複数の実ファイルシステムで管理されているファイルそれぞれの優先度を示す優先度情報が登録された優先度テーブルとを備えたコンピュータが、
前記複数の実ファイルシステムを、それらのディレクトリ構造が重ね合わされた仮想的な一つの投影ファイルシステムとして管理する第１のステップと、
前記コンピュータが、ユーザプロセスから入力された前記投影ファイルシステム上のファイルを指定した処理要求に応答して、前記指定されたファイルに対応する前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルに対して前記処理要求によって要求された操作を行う第２のステップとを含む。
【０００９】
本発明にかかる第１のプログラムは、
複数の実ファイルシステムと、該複数の実ファイルシステムで管理されているファイルそれぞれの優先度を示す優先度情報が登録された優先度テーブルとを備えたコンピュータを、投影ファイルシステム管理装置として機能させるためのプログラムであって、
前記コンピュータを、前記複数の実ファイルシステムによりそれらのディレクトリ構造が重ね合わされた仮想的な一つの投影ファイルシステムを構成すると共に、ユーザプロセスから入力された前記投影ファイルシステム上のファイルを指定した処理要求に応答して、前記指定されたファイルに対応する前記実ファイルシステム上のファイルの内で最も優先度の高いファイルを前記優先度テーブルを参照して求め、該求めたファイルに対して前記処理要求によって要求された操作を行う投影ファイルシステム制御手段として機能させる。
【発明の効果】
【００１０】
本発明によれば、複数の実ファイルシステムから構成される仮想的なファイルシステムにおいて、どの実ファイルシステム上に存在するファイルをユーザにアクセスさせるのかをファイル単位で制御することが可能になるという効果を得ることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は本発明の第１の実施の形態の構成例を示すブロック図である。
【図２】図２は投影ファイルシステムのイメージを示した図である。
【図３】図３は本発明の第２の実施の形態の構成例を示すブロック図である。
【図４】図４はPFS制御情報ファイル53の一例を示す図である。
【図５】図５はPFSリンク情報テーブル52の一例を示す図である。
【図６】図６はopen時の動作を示す図である。
【図７】図７はrelease時の動作を示す図である。
【図８】図８はread時の動作を示す図である。
【図９】図９はwrite時の動作を示す図である。
【図１０】図１０はファイル削除時の動作を示す図である。
【図１１】図１１はrename時の動作を示す図である。
【図１２】図１２はファイルサイズ変更時の動作を示す図である。
【図１３】図１３はgetattr()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図１４】図１４はopen()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図１５】図１５はtruncate()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図１６】図１６はread()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図１７】図１７はwrite()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図１８】図１８はrelease()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図１９】図１９はunlink()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図２０】図２０はmkdir()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図２１】図２１はrmdir()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図２２】図２２はmknod()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図２３】図２３はrename()が発行された際のPFS制御手段51の処理例を示すフローチャートである。
【図２４】図２４は最新世代のファイルを検索する際の処理例を示すフローチャートである。
【図２５】図２５は次世代ファイルの出力先（作成先）を決定する際の処理例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
次に、本発明の実施の形態について詳細に説明する。
【００１３】
［本発明の第１の実施の形態］
図１を参照すると、本発明の第１の実施の形態にかかる投影ファイルシステム管理装置１は、ユーザプロセス２と、投影ファイルシステム制御手段３と、優先度テーブル４と、実ファイルシステム群５とを含んでいる。なお、投影ファイルシステム管理装置１は、コンピュータによって実現される。
【００１４】
実ファイルシステム群５は、複数の実ファイルシステム5-1〜5-Nを含んでいる。なお、以下の説明では、Ｎ＝２とする。図２に示すように、実ファイルシステム5-1は、ディレクトリDIR1配下のファイルFILE1、FILE2と、ディレクトリDIR3配下のファイルFILE3、FILE4とを含んでいる。また、実ファイルシステム5-2は、ディレクトリDIR1配下のファイルFILE2と、ディレクトリDIR2配下のファイルFILE2と、ファイルシステムFS2配下のファイルFILE3とを含んでいる。なお、実ファイルシステム5-1、5-2にはそれぞれ名前FS1、FS2が付与されているとする。
【００１５】
優先度テーブル４には、各実ファイルシステム5-1、5-2上に存在する各ファイルの優先度を示す優先度情報が登録されている。なお、本実施の形態では、優先度情報としてファイルの作成日時（登録日時）を示す情報が登録されているとする。
【００１６】
ユーザプロセス２は、データ読み込み要求、第１のデータ書き込み要求、および、第２のデータ書き込み要求を投影ファイルシステム制御手段３に対して発行する。データ読み込み要求は、読み込み先にする投影ファイルシステム（投影ファイルシステムについては後述する）上のファイルを指定して、データの読み込みを要求するものである。第１のデータ書き込み要求は、書き込み先にする投影ファイルシステム上のファイルを指定して、データの書き込みを要求するものである。第２のデータ書き込み要求は、コピー元にする投影ファイルシステム上のファイルを指定して、そのコピー先のファイル（次世代のファイル）へのデータの書き込みを要求するものである。なお、第１のデータ書き込み要求は、ファイルの世代管理を行うことが不必要な場合に発行され、第２のデータ書き込み要求は、ファイルの世代管理を行うことが必要な場合に発行される。
【００１７】
投影ファイルシステム制御手段３は、複数の実ファイルシステム5-1、5-2を、それらのディレクトリ構造が重ね合わされた透過型の仮想的な一つのファイルシステムとして管理する。なお、ディレクトリ構造の重ね合わせ方は、名前が一致するパス同士を一つに合成し、名前が不一致のパスは元のまま残すというものである。図２に示す実ファイルシステム5-1、5-2のディレクトリ構造を重ね合わせる場合、例えば、パス/DIR1/FILE2は、両ディレクトリ構造で名前が一致するので（両ディレクトリ構造に存在するので）、一つに合成される。これに対して、例えば、パス/DIR1/FILE1は名前が一致しない（一つのディレクトリ構造にしか存在しない）ので、元のまま残される。この結果、投影ファイルシステムのディレクトリ構造は、図２の下方に示すものとなる。なお、投影ファイルシステムにおいてパス/DIR1/FILE2で特定されるファイルと対応する実ファイルシステム上のファイルとしては、実ファイルシステム5-1上のパス/DIR1/FILE2で特定されるファイルと、実ファイルシステム5-2上のパス/DIR1/FILE2で特定されるファイルとの２つが存在する。
【００１８】
また、投影ファイルシステム制御手段３は、ユーザプロセス２からの処理要求に応じた処理を行うものであり、要求受け付け手段3-1と、処理対象ファイル決定手段3-2と、要求処理手段3-3と、次世代ファイル作成手段3-4とを備えている。
【００１９】
要求受け付け手段3-1は、ユーザプロセス２からのデータ読み込み要求、第１のデータ書き込み要求、第２のデータ書き込み要求を受け付ける機能を有する。
【００２０】
処理対象ファイル決定手段3-2は、要求受け付け手段3-1が受け付けたデータ読み込み要求、第１のデータ書き込み要求、あるいは、第２のデータ書き込み要求によって指定された投影ファイルシステム上のファイルと対応する実ファイルシステム5-1、5-2上のファイルの内、最も優先度の高いファイルを優先度テーブル４を参照して求める機能を有する。なお、本実施の形態では、登録日時が新しいファイルほど、優先度が高いとする。
【００２１】
要求処理手段3-3は、処理対象ファイル決定手段3-2が求めたファイルを利用して要求受け付け手段3-1が受け付けた処理要求に応じた処理を行う機能を有する。より具体的には、要求受け付け手段3-1が受け付けた処理要求がデータ読み込み要求である場合には、処理対象ファイル決定手段3-2が求めたファイルからデータを読み込み、ユーザプロセス２に返却する。また、要求受け付け手段3-1が受け付けた処理要求が第１のデータ書き込み要求である場合には、処理対象ファイル決定手段3-2が求めたファイルに、上記処理要求によって要求されているデータを書き込む。また、要求受け付け手段3-1が受け付けた処理要求が第２のデータ書き込み要求である場合には、処理対象ファイル決定手段3-2が求めたファイルを示す情報を含んだ次世代ファイル作成要求を次世代ファイル作成手段3-4に渡して次世代のファイルを作成させ、次世代ファイル作成手段3-4によって作成された次世代のファイルに要求されたデータを書き込む。
【００２２】
次世代ファイル作成手段3-4は、要求処理手段3-3から渡された次世代ファイル作成要求中の情報によって特定されるファイルを、第２のデータ書き込み要求によって指定されたファイルと対応するファイルが存在しない実ファイルシステムの内の一つにコピーすることにより、次世代のファイルを作成する。また、作成した次世代のファイルの優先度（登録日時）に関する情報を優先度テーブル４に追加登録する。
【００２３】
なお、投影ファイルシステム制御手段３は、コンピュータによって実現可能であり、コンピュータによって実現する場合は、例えば次のようにする。コンピュータを投影ファイルシステム制御手段３として機能させるためのプログラムを記録したディスク、半導体メモリ、その他の記録媒体を用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上に投影ファイルシステム制御手段３を実現する。
【００２４】
次に、本実施の形態の動作について説明する。
【００２５】
先ず、ユーザプロセス２からデータ読み込み要求が発行されたときの動作について説明する。
【００２６】
ユーザプロセス２からのデータ読み込み要求は、要求受け付け手段3-1によって受け付けられる。今、例えば、データ読み込み要求によって、投影ファイルシステム上のファイル(/mount-point/DIR1/FILE2)が指定されているとする。
【００２７】
処理対象ファイル決定手段3-2は、優先度テーブル４を参照し、上記ファイルと対応する実ファイルシステム5-1、5-2上のファイル(/mnt/pfs/FS1/DIR1/FILE2と、/mnt/pfs/FS2/DIR1/FILE2)の中から優先度の最も高いファイルを選択する。今、例えば、実ファイルシステム5-1、5-2上の該当するファイルの登録日時が、2008/10/xx、2008/09/yyであるとすると、処理対象ファイル決定手段3-2は、実ファイルシステム5-1上のファイル(/mnt/pfs/FS1/DIR1/FILE2)を選択することになる。なお、投影ファイルシステム上のファイルと対応する実ファイルシステム5-1、5-2を表す情報は、投影ファイルシステム上のファイルを表す情報(/mount-point/DIR1/FILE2など)の内、/mount-point/を/mnt/pfs/FS1/、/mnt/pfs/FS2/に置き換えることにより機械的に求めることができる。
【００２８】
要求処理手段3-3は、処理対象ファイル決定手段3-2によって実ファイルシステム5-1上のファイル(/mnt/pfs/FS1/DIR1/FILE2)が選択されると、そこからデータを読み込み、ユーザプロセス２へ返却する。
【００２９】
次に、ユーザプロセス２から第１のデータ書き込み要求が入力された場合の動作について説明する。ユーザプロセス２からの第１のデータ書き込み要求は、要求受け付け手段3-1によって受け付けられる。今、例えば、第１のデータ書き込み要求によって、投影ファイルシステム上のファイル(/mount-point/DIR1/FILE2)が指定されているとする。
【００３０】
処理対象ファイル決定手段3-2は、データ読み込み要求が入力された際と同様の動作を行い、優先度が最も高いファイルとして実ファイルシステム5-1上のファイル(/mnt/pfs/FS1/DIR1/FILE2)を選択する。
【００３１】
要求処理手段3-3は、処理対象ファイル決定手段3-2によって選択された実ファイルシステム5-1上のファイル(/mnt/pfs/FS1/DIR1/FILE2)に対して、ユーザプロセス２によって要求されたデータを書き込む。また、優先度テーブル４に登録されている、上記ファイルの優先度に関する情報を現在日時に更新する。
【００３２】
次に、ユーザプロセス２から第２のデータ書き込み要求が発行された場合の動作について説明する。ユーザプロセス２からの第２のデータ書き込み要求は、要求受け付け手段3-1によって受け付けられる。今、例えば、第２のデータ書き込み要求によって、投影ファイルシステム上のファイル(/mount-point/DIR1/FILE2)が指定されているとする。処理対象ファイル決定手段3-2は、データ読み込み要求が入力された際と同様の動作を行い、優先度が最も高いファイルとして実ファイルシステム5-1上のファイル(/mnt/pfs/FS1/DIR1/FILE2)を選択する。
【００３３】
要求処理手段3-3は、処理対象ファイル決定手段3-2によって選択されたファイル(/mnt/pfs/FS1/DIR1/FILE2)を示す情報を含んだ次世代ファイル作成要求を次世代ファイル作成手段3-4に渡す。
【００３４】
次世代ファイル作成手段3-4は、要求処理手段3-3から渡された次世代ファイル作成要求中の情報によって特定されるファイル(/mnt/pfs/FS1/DIR1/FILE2)を、第２のデータ書き込み要求によって指定された投影ファイルシステム上のファイル(/mount-point/DIR1/FILE2)と対応するファイルが存在しない実ファイルシステムの内の一つにコピーすることにより、次世代のファイルを作成する。また、作成した次世代のファイルの優先度（登録日時）に関する情報を優先度テーブル４に追加登録する。なお、コピー先にする実ファイルシステムは、例えば、最も空き容量の多い実ファイルシステム、あるいは、負荷の最も低い実ファイルシステムとすることができる。また、全ての実ファイルシステム5-1、5-2上にファイル(/mount-point/DIR1/FILE2)と対応するファイルが存在する場合には、例えば、次のような処理を行う。即ち、ファイル(/mount-point/DIR1/FILE2)と対応する実ファイルシステム5-1、5-2上のファイルの内、優先度が最も低いファイルを削除し、該削除したファイルの代わりに要求処理手段3-3によって指定されているファイルをコピーする。また、削除したファイルの優先度の代わりに、次世代のファイルの優先度を優先度テーブル４に登録する。
【００３５】
要求処理手段3-3は、次世代ファイル作成手段3-4によって次世代のファイルが作成されると、そのファイルにデータを書き込む。また、優先度テーブル４に登録されている、上記ファイルの優先度に関する情報を現在日時に更新する。
【００３６】
本実施の形態によれば、複数の実ファイルシステムから構成される仮想的な投影ファイルシステムにおいて、どの実ファイルシステム上に存在するファイルをユーザにアクセスさせるのかをファイル単位で制御することが可能になるという効果を得ることができる。その理由は、実ファイルシステム上のファイルに優先度を付与しておき、この優先度に基づいてアクセス先にするファイルを決定するようにしているからである。
【００３７】
更に、本実ファイルシステムによれば、ファイルの世代管理を行うことが可能になる効果がある。その理由は、ユーザプロセス２から入力された第２のデータ書き込み要求に応答して、第２の書き込み要求によって指定されたファイルに対応する実ファイルシステム上のファイルの内で最も優先度の高いファイルを優先度テーブル４を参照して求め、この求めたファイルを、第２のデータ書き込み要求によって指定されたファイルと対応するファイルが存在しない実ファイルシステムの内の一つにコピーすることにより、次世代のファイルを作成し、更に、上記次世代のファイルに関する登録日時を優先度テーブル４に登録するようにしているからである。
【００３８】
更に、本実施の形態では、第２の書き込み要求によって指定されたファイルと対応するファイルが存在しない実ファイルシステムが複数存在する場合は、その内の最も空き容量が大きい実ファイルシステムあるいは最も負荷が低い実ファイルシステムに次世代のファイルを作成するようにしているので、特定の実ファイルシステムに負荷が集中しないようにすることができる。
【００３９】
［本発明の第２の実施の形態］
次に、本発明の第２の実施の形態について説明する。
【００４０】
図３を参照すると、本発明の第２の実施の形態にかかるオペレーティングシステム100は、ユーザプロセス10と、仮想ファイルシステム20と、ユーザ空間ファイルシステム30と、実ファイルシステム群40と、投影ファイルシステム機構50とを含む。なお、本実施の形態では、オペレーティングシステム100はUNIX（登録商標）であるとする。また、以降PFSを投影ファイルシステム（Projection File System）を指す略語とする。
【００４１】
実ファイルシステム群40は、実ファイルシステム41と、実ファイルシステム42を含む。なお、各実ファイルシステム41、42中の全てのディレクトリには、PFS制御情報ファイル53が格納されており、該ディレクトリ中の各ファイルについてファイル名、PFS登録日時が含まれる。PFS登録日時によって世代が管理される。PFS制御情報ファイル53の一例を図４に示す。
【００４２】
図３の投影ファイルシステム機構50は、PFS制御手段51と、PFSリンク情報テーブル52とを含む。PFSリンク情報テーブル52は、openされたファイル毎のリンク情報を保持するテーブルである。リンク情報には、ファイル名、世代保護フラグ、書き込みフラグ、実ファイルパス、オープンカウンタが含まれる。PFSリンク情報テーブル52の一例を図５に示す。また、投影ファイルシステム機構50は、複数の実ファイルシステム41、42を、それらのディレクトリ構造が重ね合わされた透過型の仮想的な一つの投影ファイルシステムとして管理する。
【００４３】
ユーザプロセス10は、全てのファイルアクセス処理を仮想ファイルシステム(VFS;Virtual File System)20に対して依頼する。
【００４４】
仮想ファイルシステム20は、一つのオペレーティングシステム上で複数のファイルシステムを統一的に扱うために、個々のファイルシステムが提供するインタフェース間の相違を隠蔽し、共通のインタフェースを提供する仮想的なファイルシステムであり、実ファイルシステム41と、実ファイルシステム42と、ユーザ空間ファイルシステム(FUSE;Filesystem in Userspace)30に対し、ユーザからのファイルアクセス処理の依頼を行う。仮想ファイルシステムはLinux等におけるVFSで既に実現・普及しており、本実施の形態においても投影ファイルシステムの実現にあたり、この仮想ファイルシステムによって統一されたインタフェースが提供されるものとする。
【００４５】
ユーザ空間ファイルシステム30は、PFS制御手段51を呼び出し、実ファイルシステム41と、実ファイルシステム42に対してファイルアクセス処理を行う。この場合、PFS制御手段51は、仮想ファイルシステム20を通して実際のファイルアクセス処理を行う。一般にファイルシステムは、オペレーティングシステムが提供するread/write等のシステムコールの先でカーネル空間で動作しており、カーネル空間でファイルシステムを構築するには多大な手間と制約が発生する。ユーザ空間ファイルシステムは、ユーザ空間でファイルシステムを構築するための一連の機構であり、Linux等におけるFUSEで既に実現・普及しており、本実施の形態においても投影ファイルシステム機構50をユーザ空間で実現するために、このユーザ空間ファイルシステム30を備えているものとする。従って、投影ファイルシステム機構50をカーネル空間に設ける場合には、ユーザ空間ファイルシステム30は不要となる。
【００４６】
PFS制御手段51は、PFSリンク情報テーブル52の当該ファイルエントリ、ならびに、PFS制御情報ファイル53に対し、情報の参照、及び、更新を行う。
【００４７】
次に、本実施の形態の動作について説明する。
【００４８】
まず、ユーザによるファイルアクセス要求がVFS20を通してどのようにPFS制御手段51に通知され、処理が実行されるかを説明する。次に、ユーザによるファイルアクセスの延長で、どのようにVFSオペレーションがコールされ、PFS制御手段51がどのように処理を行うかを、図６〜図２５を用いて説明する。特に、各VFSオペレーションの処理の詳細については、図１３〜図２５にフローチャートを記載する。なお、以降の実施例ではファイルシステムを構成するすべての動作について網羅しておらず、本発明において実現される世代管理について重要となる８つの一般的なファイルアクセス処理（新規write/上書きwrite/追記write/read/rename/mkdir/rmdir/unlink）について述べる。
【００４９】
●ユーザ要求によるVFSオペレーションのPFS制御手段51への通知と実行結果返却
【００５０】
１．ユーザによるファイルアクセスの延長でVFSオペレーションがユーザプロセス10からVFS20に発行される。
２．VFS20は、発行されたオペレーションをFUSE30に対して転送する。
３．FUSE30は、発行されたオペレーションをPFS制御手段51に対して転送する。
４．PFS制御手段51は、発行されたオペレーションの処理を行い、結果をFUSE30に通知する。
５．FUSE30、VFS20を通してユーザプロセス10に処理結果が通知される。
【００５１】
●新規ファイルへの書き込み
【００５２】
１．ユーザプロセス10は、open関数を実行する。
【００５３】
1-1．ユーザプロセス10は、open関数内で、書き込み対象ファイルの属性取得を要求(getattr)する。PFS制御手段51は、最新世代ファイル検索ロジックに従って最新世代ファイルを検索し（図１３のステップS1301）、その情報をユーザプロセス10に返却する（ステップS1302がno、S1304）。最新世代ファイル検索ロジックについては、図２４を参照して後で説明する。
【００５４】
1-2．ユーザプロセス10は、open関数内で、ファイルが存在しないことを確認し、ファイルの作成を要求(mknod)する。PFS制御手段51は、次世代ファイルの作成先決定ロジック（後述；図２５）に従ってファイルの作成先となる実ファイルシステムを決定し（図２２のステップS2201）、ファイルを作成し（ステップS2202）、PFS制御情報ファイル53を作成し、ファイル名とPFS登録日付を登録する（ステップS2203）。
【００５５】
1-3．ユーザプロセス10は、open関数内で、書き込み対象ファイルの属性取得を要求(getattr)し、新規作成したファイルの情報を取得する。PFS制御手段51は、最新世代のファイルを検索し、その情報をユーザプロセス10に返却する(図１３のステップS1301〜S1303)。
【００５６】
1-4．ユーザプロセス10は、open関数内で、新規作成したファイルのオープンを要求(open）する（図６）。PFS制御手段51は、PFSリンク情報テーブル52にエントリを作成する。当該エントリには、PFS上のファイル名と世代保護フラグと書き込みフラグと実ファイル名とオープンカウントとを登録する（図１４のステップS1401〜S1406）。他プロセスによってすでにオープン済なら、エントリを取得し、書き込みフラグをONにし、オープンカウントをインクリメントする（ステップS1401がyes、S1407〜S1409、S1406）。他プロセスによって書き込みオープン済の場合（ステップS1408がyes）は、異常を通知する。
【００５７】
２．ユーザプロセス10は、write関数を実行する。
【００５８】
2-1．ユーザプロセス10は、write関数内で、オープンしたファイルについて、オフセットとバッファを指定して書き込みを要求(write)する(図９)。PFS制御手段51は、PFSリンク情報テーブル52上の対応するエントリから実ファイル名を取得し、指定されたバッファからデータを取得して、指定されたオフセットから書き込む（図１７のステップS1701、S1702、S1708)。
【００５９】
３．ユーザプロセス10はすべてのデータを書き込むまで2.を繰り返し、完了後、close関数を実行する。
【００６０】
3-1．ユーザプロセス10は、close関数内で、ファイルのreleaseを要求(release)する(図７)。PFS制御手段51は、PFSリンク情報テーブル52上の当該ファイルに対応するエントリのオープンカウントをデクリメントし、0であればエントリを削除する（図１８のステップS1801〜S1804）。まだオープンしているプロセスが残っていれば、書き込みフラグをOFFにし、世代保護フラグをONにする（ステップS1803がno、Ｓ1805がyes、S1806）。
【００６１】
●既存ファイルの切り詰めと書き込み
【００６２】
１．ユーザプロセス10は、open関数を実行する。
【００６３】
1-1．ユーザプロセス10は、open関数内で、書き込み対象ファイルの属性取得を要求(getattr)する。PFS制御手段51は、最新世代ファイルを検索し、その情報をユーザプロセス10に返却する（図１３、ステップS1301、S1302がyes、S1303）。
【００６４】
1-2．ユーザプロセス10は、ファイルの有無やアクセス権のチェック等を行い、ファイルサイズの変更(サイズを0にする)を要求(truncate）する(図１２)。PFS制御手段51は、最新世代のファイルを検索し（図１５のステップS1501）、ファイルサイズが0でなく、指定されたサイズと現在のサイズが異なるならば（ステップS1502、S1503が共にno）、次世代ファイルの作成先決定ロジック（後述）に従ってファイルの作成先となる実ファイルシステムを決定し、ファイルを指定されたサイズ分コピーし、PFS制御情報ファイル53を作成し、ファイル名とPFS登録日付を登録する（ステップS1505〜1507）。ファイルサイズが0かつ、指定されたサイズも0ならば（ステップS1502、S1504が共にyes）、なにもしない。
【００６５】
1-3．ユーザプロセス10は、open関数内で、書き込み対象ファイルの属性取得を要求(getattr)し、新規作成したファイルの情報を取得する。PFS制御手段51は、最新世代のファイルを検索し、その情報をユーザプロセス10に返却する（図１３のステップS1301〜S1303）。
【００６６】
1-4．ユーザプロセス10は、open関数内で、ファイルのオープンを要求(open）する（図６）。PFS制御手段51は、PFSリンク情報テーブル52にエントリを作成する。当該エントリには、PFS上のファイル名と世代保護フラグと書き込みフラグと実ファイル名とオープンカウントとを登録する（図１４のステップS1401〜S1406）。他プロセスによってすでにオープン済なら、エントリを取得し、書き込みフラグをONにし、オープンカウントをインクリメントする（ステップS1401がyes、S1407〜S1409、S1406）。他プロセスによって書き込みオープン済の場合（ステップS1408がyes）は、異常を通知する。
【００６７】
２．ユーザプロセス10は、write関数を実行する。
【００６８】
2-1．ユーザプロセス10は、write関数内で、オープンしたファイルについて、オフセットとバッファを指定して書き込みを要求(write)する(図９)。PFS制御手段51は、PFSリンク情報テーブル52上の対応するエントリから実ファイル名を取得し、指定されたバッファからデータを取得して、指定されたオフセットから書き込む（図１７のステップS1701、S1702、Ｓ1708）。
【００６９】
３．ユーザプロセス10はすべてのデータを書き込むまで2.を繰り返し、完了後、close関数を実行する。
【００７０】
3-1．ユーザプロセス10は、close関数内で、ファイルのreleaseを要求(release)する(図７)。PFS制御手段51は、PFSリンク情報テーブル52上の当該ファイルに対応するエントリのオープンカウントをデクリメントし（図１８のステップS1801、S1802）、0であればエントリを削除する（ステップS1803がyes、S1804）。まだオープンしているプロセスが残っていれば（ステップS1803がno、S1805がyes）、書き込みフラグをOFFにし、世代保護フラグをONにする（ステップS1806）。
【００７１】
●既存ファイルの更新・追記
【００７２】
１．ユーザプロセス10は、open関数を実行する。
【００７３】
1-1．ユーザプロセス10は、open関数内で、書き込み対象ファイルの属性取得を要求(getattr)する。PFS制御手段51は、最新世代ファイルを検索し、その情報をユーザプロセス10に返却する（図１３のステップS1301〜S1303）。
【００７４】
1-2．ユーザプロセス10は、open関数内で、ファイルのオープンを要求(open）する（図６）。PFS制御手段51は、PFSリンク情報テーブル52にエントリを作成する。当該エントリには、PFS上のファイル名と世代保護フラグと書き込みフラグと実ファイル名とオープンカウントとを登録する（図１４のステップS1401〜S1406）。他プロセスによってすでにオープン済なら、エントリを取得し、書き込みフラグをONにし、オープンカウントをインクリメントする（ステップS1401がyes、S1407〜S1409、S1406）。他プロセスによって書き込みオープン済の場合（ステップS1408がyes）は、異常を通知する。
【００７５】
２．ユーザプロセス10は、write関数を実行する。
【００７６】
2-1．ユーザプロセス10は、write関数内で、オープンしたファイルについて、オフセットとバッファを指定して書き込みを要求(write)する(図９)。PFS制御手段51は、PFSリンク情報テーブル52上の対応するエントリから実ファイル名を取得し、指定されたバッファからデータを取得して、指定されたオフセットから書き込む（図１７のステップS1701、S1702がno、S1708）。
【００７７】
３．ユーザプロセス10はすべてのデータを書き込むまで2.を繰り返し、完了後、close関数を実行する。
【００７８】
3-1．ユーザプロセス10は、close関数内で、ファイルのreleaseを要求(release)する(図７)。PFS制御手段51は、PFSリンク情報テーブル52上の当該ファイルに対応するエントリのオープンカウントをデクリメントし（図１８のステップS1801、S1802）、0であればエントリを削除する（ステップS1803がyes、S1804）。まだオープンしているプロセスが残っていれば（ステップS1803がno）、書き込みフラグをOFFにし、世代保護フラグをONにする（ステップS1805がyes、S1806）。
【００７９】
●ファイルの読み込み
【００８０】
１．ユーザプロセス10は、open関数を実行する。
【００８１】
1-1．ユーザプロセス10は、open関数内で、読み込み対象ファイルの属性取得を要求(getattr)する。PFS制御手段51は、最新世代ファイルを検索し（図１３のステップS1301）、その情報をユーザプロセス10に返却する（ステップS1302がyes、S1303）。
【００８２】
1-2．ユーザプロセス10は、open関数内で、ファイルのオープンを要求(open）する（図６）。PFS制御手段51は、PFSリンク情報テーブル52にエントリを作成する。当該エントリには、PFS上のファイル名と世代保護フラグと書き込みフラグと実ファイル名とオープンカウントを登録する（図１４のステップS1401〜S1406）。他プロセスによってすでにオープン済なら（ステップS1401がyes、S1407がno）、エントリの取得と、オープンカウントのインクリメントのみを行う（ステップS1406）。他プロセスによって書き込みオープン済の場合（ステップS1408がyes）は、異常を通知する。
【００８３】
２．ユーザプロセス10は、read関数を実行する。
【００８４】
2-1．ユーザプロセス10は、read関数内で、オープンしたファイルについて、オフセットとバッファを指定して読み込み込みを要求(read)する(図８)。PFS制御手段51は、PFSリンク情報テーブル52上の対応するエントリから実ファイル名を取得し、指定されたオフセットから指定されたサイズ分データを読み込んで返却する（図１６のステップS1601、S1602）。
【００８５】
３．ユーザプロセス10はすべてのデータを読み込むまで2.を繰り返し、完了後、close関数を実行する。
【００８６】
3-1．ユーザプロセス10は、close関数内で、ファイルのreleaseを要求(release)する(図７)。PFS制御手段51は、PFSリンク情報テーブル52上の当該ファイルに対応するエントリのオープンカウントをデクリメントし（図１８のステップS1801、S1802）。0であればエントリを削除する（ステップS1803がyes、S1804）。
【００８７】
●リネーム
【００８８】
１．ユーザプロセス10は、rename関数を実行する。
【００８９】
1-1．ユーザプロセス10は、rename関数の中で、新規ファイル名の属性取得を要求(getattr)する。PFS制御手段51は、最新世代のファイルを検索し、その情報をユーザプロセス10に返却する（図１３のステップS1301〜S1303）。
【００９０】
1-2．ユーザプロセス10は、rename関数の中で、旧ファイル名の属性取得を要求(getattr)する。PFS制御手段51は、最新世代のファイルを検索し、その情報をユーザプロセス10に返却する（図１３のステップS1301〜1303）。
【００９１】
1-3．ユーザプロセス10は、rename関数の中で、新・旧ファイル名を指定してファイル名の変更を要求(rename)する(図１１)。PFS制御手段51は、すべての旧世代ファイルを一時的なファイル名にリネームし（図２３のステップS2301〜S2304）、最新世代ファイルを新ファイル名にリネームし（ステップS2305）、すべての旧世代ファイルを新ファイル名にリネームし、PFS制御情報ファイル53のエントリを更新する（ステップS2306〜S2308）。
【００９２】
●ディレクトリ作成
【００９３】
１．ユーザプロセス10は、mkdir関数を実行する。
【００９４】
1-1．ユーザプロセス10は、mkdir関数の中で、新規ディレクトリ名の属性取得を要求(getattr)する。PFS制御手段51は、最新世代のファイルを検索し、その情報をユーザプロセス10に返却する（図１３のステップS1301、S1302がno、S1304）。
【００９５】
1-2．ユーザプロセス10は、mkdir関数の中で、ディレクトリ名が存在しないことを確認し、ディレクトリの作成を要求(mkdir)する。PFS制御手段51は、実ファイルシステム群40の全ての実ファイルシステム41、42について、対応するパス名でディレクトリ作成を繰り返す（図２０のステップS2001〜Ｓ2004）。このとき、指定されたパス名がファイルとして存在した場合（ステップS2002、S2005がそれぞれyes、no）、それまでに作成したディレクトリを全て削除して（ステップS2006）、異常を返却する。
【００９６】
●ディレクトリ削除
【００９７】
１．ユーザプロセス10は、rmdir関数を実行する。
【００９８】
1-1．ユーザプロセス10は、rmdir関数の中で、ディレクトリ名の属性取得を要求(getattr)する。PFS制御手段51は、最新世代のファイルを検索し、その情報をユーザプロセス10に返却する（図１３のステップS1301〜S1303）。
【００９９】
1-2．ユーザプロセス10は、rmdir関数の中で、ディレクトリ名が存在することを確認し、ディレクトリの削除を要求(rmdir)する。PFS制御手段51は、実ファイルシステム群40の全ての実ファイルシステム41、42について（図２１のステップS2101）、対応するパス名でディレクトリ削除を繰り返す（ステップS2102〜S2105）。このとき、指定されたパスが空のディレクトリ以外だった場合（ステップS2103がno）、異常を返却する。
【０１００】
●ファイル削除
【０１０１】
１．ユーザプロセス10は、unlink関数を実行する。
【０１０２】
1-1．ユーザプロセス10は、unlink関数の中で、削除対象ファイルの属性取得を要求(getattr)する。
【０１０３】
1-2．ユーザプロセス10は、unlink関数の中で、削除できるファイルならば、ファイルの削除を要求(unlink)する(図１０)。PFS制御手段51は、すべての旧世代ファイルを削除し（図１９のステップS1901〜S1905）、最後に最新世代ファイルを削除する（ステップS1906）。PFS制御情報ファイル53のエントリの削除（ステップS1907）は、ファイル削除の都度行う。
【０１０４】
●最新世代検索ロジック（図２４）
【０１０５】
投影ファイルシステム上のパスによって指定されたファイルと対応する実ファイルシステム41、42上のファイルの中から最新世代のファイルを検索する場合、先ず、ファイルを示すパスをエントリに分解する(図２４のステップS2401)。例えば、パスが/pfs/DIR1/FILE2である場合には、pfs、DIR1、FILE2に分解する。その後、先頭のエントリから検索を開始する(ステップS2402)。例えば、/pfsが投影ファイルシステムのマウントポイントの場合、/pfs/DIR1から検索を開始する。
【０１０６】
次に、全ての実ファイルシステム41、42について対応するパスを調べる（ステップS2403）。例えば、実ファイルシステム41、42の名前がそれぞれFS1、FS2であり、そのマウントポイントが/mntの場合、/mnt/FS1/DIR1と/mnt/FS2/DIR1とから検索を開始する。
【０１０７】
そして、対応するエントリが見つからなかった場合（ステップS2404がyes）は、指定されたパスがどの実ファイルシステム41、42にも存在しないことになるので、異常終了とする。また、例えば、/mnt/*/DIR1が実ファイルシステム41ではファイル、実ファイルシステム42ではディレクトリである場合のように、同名でディレクトリとファイルが混在する場合（ステップS2405がyes）も、異常終了とする。また、/mnt/FS1/DIR1がファイルとして存在するのに、/mnt/FS1/DIR1/FILE2が指定されている場合のように、前のループでファイルを発見した場合（ステップS2406がyes）も、異常終了とする。
【０１０８】
ステップS2404〜S2406の判断結果が全てnoである場合は、全てのエントリを調べたか否かを判定する（ステップS2407）。そして、調べていない場合（ステップS2407がno）は、次のエントリを調べる(ステップS2403)。なお、/mnt/*/DIR1の次は、/mnt/＊/DIR1/FILE2を調べる。これに対して、全てのエントリを調べ終わった場合（ステップS2407がyes）は、PFS制御情報ファイル53を参照して、最後に発見したエントリ毎に、そのエントリに対応するファイルの登録日時（なければ、ファイル自身の作成日時）を求め、登録日時が最も新しいファイルを選択する（ステップS2408）。例えば、実ファイルシステム41における該当するファイルFILE2の登録日時が2008/10/xxであり、実ファイルシステム42における該当するファイルFILE2の登録日時が2008/09/yyであれば、実ファイルシステム41上のファイルFILE2を選択することになる。
【０１０９】
●次世代ファイルの作成先決定ロジック(図２５)
【０１１０】
全実ファイルシステム41、42について（図２５のステップS2501）、対象ファイルの有無と存在する場合は登録日付をPFS制御情報ファイル53から取得する（ステップS2502、S2503）。存在する世代数がユーザ定義の数未満の場合（ステップS2504がno）は、対象ファイルが存在しない実ファイルシステムから、ユーザ定義のポリシーに基づいて次世代ファイルの作成先の実ファイルシステムを決定する（ステップS2506）。存在する世代数がユーザ定義の数以上の場合（ステップS2504がyes）は、対象ファイルが存在しない実ファイルシステムと、最も古い世代が存在する実ファイルシステムを加えた中から、ユーザ定義のポリシーに基づいて次世代ファイルの作成先の実ファイルシステムを決定する（ステップS2505）。ユーザ定義のポリシーとしては、負荷が低いファイルシステム優先、空き容量が大きいファイルシステム優先、などが考えられる。
【０１１１】
本実施の形態によれば、特定の実ファイルシステムに負荷が集中しないようにすることが可能になるという効果を得ることができる。その理由は、実ファイルシステム上の各ファイルの登録日時（作成日時）が登録されたPFS制御情報ファイル53を備え、ここに登録されている登録日時に基づいて処理対象にするファイルを決定するようにしているかれである。また、本実施の形態によれば、ファイルの世代管理を行うことが可能になるという効果を得ることができる。その理由は、ファイルに対してデータを書き込む際、新世代のファイルを作成し、この新世代のファイルにデータを書き込むようにしているからである。
【符号の説明】
【０１１２】
１…投影ファイルシステム管理装置
２…ユーザプロセス
３…投影ファイルシステム制御手段
3-1…要求受け付け手段
3-2…処理対象ファイル決定手段
3-3…要求処理手段
3-4…次世代ファイル作成手段
４…優先度テーブル
５…実ファイルシステム群
5-1〜5-N…実ファイルシステム
10…ユーザプロセス
20…仮想ファイルシステム(VFS)
30…ユーザ空間ファイルシステム(FUSE)
40…実ファイルシステム群
41、42…実ファイルシステム
50…投影ファイルシステム機構
51…PFS制御手段
52…PFSリンク情報テーブル
53…PFS制御情報ファイル
100…オペレーティングシステム
【図１】
2010237939.tif 000003
【図２】
2010237939.tif 000004
【図３】
2010237939.tif 000005
【図４】
2010237939.tif 000006
【図５】
2010237939.tif 000007
【図６】
2010237939.tif 000008
【図７】
2010237939.tif 000009
【図８】
2010237939.tif 000010
【図９】
2010237939.tif 000011
【図１０】
2010237939.tif 000012
【図１１】
2010237939.tif 000013
【図１２】
2010237939.tif 000014
【図１３】
2010237939.tif 000015
【図１４】
2010237939.tif 000016
【図１５】
2010237939.tif 000017
【図１６】
2010237939.tif 000018
【図１７】
2010237939.tif 000019
【図１８】
2010237939.tif 000020
【図１９】
2010237939.tif 000021
【図２０】
2010237939.tif 000022
【図２１】
2010237939.tif 000023
【図２２】
2010237939.tif 000024
【図２３】
2010237939.tif 000025
【図２４】
2010237939.tif 000026
【図２５】
2010237939.tif 000027