(57)【要約】【課題】  オリジナルファイルを保持したままのファイルの論理的な上書き、及び複数ファイルの論理的且つアトミックな更新を可能とする。【解決手段】  複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とするファイル管理装置であり、複数のディレクトリツリーを重ね合わせ、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリ１２を構築する仮想ディレクトリ構築手段１１と、仮想ディレクトリにおけるファイルのパスを指定し、ファイルの各種取り扱い要求を仮想ディレクトリＩＯサブシステムへ行うアプリケーションプロセス１３と、アプリケーションプロセスからの要求にもとづき複数のディレクトリツリーを検索することで、ファイルの実際のパスを取得し、要求内容に対応する処理を実行する仮想ディレクトリＩＯサブシステム１４とを備えたファイル管理装置。【選択図】  図１
2006268456.tif 000002
【特許請求の範囲】
【請求項１】
複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とするファイル管理装置であって、
複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築する仮想ディレクトリ構築手段と、
前記仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求を仮想ディレクトリＩＯサブシステムへ行うアプリケーションプロセスと、
前記アプリケーションプロセスからの要求にもとづいて、前記複数のディレクトリツリーを検索することで、前記ファイルの実際のパスを取得し、要求内容に対応する処理を実行する前記仮想ディレクトリＩＯサブシステムと、を備えた
ことを特徴とするファイル管理装置。
【請求項２】
前記仮想ディレクトリＩＯサブシステムは、前記アプリケーションプロセスからの要求が読み込み要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項１記載のファイル管理装置。
【請求項３】
前記仮想ディレクトリＩＯサブシステムは、前記アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーに前記ファイルを作成し、そのファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項１又は２記載のファイル管理装置。
【請求項４】
前記仮想ディレクトリＩＯサブシステムは、前記アプリケーションプロセスからの要求が読み書き要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのコピーを前記最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項１〜３のいずれかに記載のファイル管理装置。
【請求項５】
前記仮想ディレクトリＩＯサブシステムは、前記アプリケーションプロセスからの要求が削除であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルに削除マークを付ける
ことを特徴とする請求項１〜４のいずれかに記載のファイル管理装置。
【請求項６】
複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とするファイル管理装置によるファイル管理方法であって、
前記ファイル管理装置における仮想ディレクトリ構築手段が、前記複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築し、
前記ファイル管理装置におけるアプリケーションプロセスが、前記仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求を前記ファイル管理装置における仮想ディレクトリＩＯサブシステムへ行い、
前記仮想ディレクトリＩＯサブシステムが、前記アプリケーションプロセスからの要求にもとづいて、前記複数のディレクトリツリーを検索することで、前記ファイルの実際のパスを取得し、要求内容に対応する処理を実行する
ことを特徴とするファイル管理方法。
【請求項７】
前記仮想ディレクトリＩＯサブシステムが、前記アプリケーションプロセスからの要求が読み込み要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項６記載のファイル管理方法。
【請求項８】
前記仮想ディレクトリＩＯサブシステムが、前記アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーに前記ファイルを作成し、そのファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項６又は７記載のファイル管理方法。
【請求項９】
前記仮想ディレクトリＩＯサブシステムが、前記アプリケーションプロセスからの要求が読み書き要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのコピーを前記最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項６〜８のいずれかに記載のファイル管理方法。
【請求項１０】
前記仮想ディレクトリＩＯサブシステムが、前記アプリケーションプロセスからの要求が削除であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルに削除マークを付ける
ことを特徴とする請求項６〜９のいずれかに記載のファイル管理方法。
【請求項１１】
ファイル管理装置に、複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とさせるファイル管理プログラムであって、
前記ファイル管理装置を、
複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築する仮想ディレクトリ構築手段、
前記仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求を仮想ディレクトリＩＯサブシステムへ行うアプリケーションプロセス、
前記アプリケーションプロセスからの要求にもとづいて、前記複数のディレクトリツリーを検索することで、前記ファイルの実際のパスを取得し、要求内容に対応する処理を実行する前記仮想ディレクトリＩＯサブシステム
として機能させるファイル管理プログラム。
【請求項１２】
前記仮想ディレクトリＩＯサブシステムは、前記アプリケーションプロセスからの要求が読み込み要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項１１記載のファイル管理プログラム。
【請求項１３】
前記仮想ディレクトリＩＯサブシステムは、前記アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーに前記ファイルを作成し、そのファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項１１又は１２記載のファイル管理プログラム。
【請求項１４】
前記仮想ディレクトリＩＯサブシステムは、前記アプリケーションプロセスからの要求が読み書き要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのコピーを前記最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタを前記アプリケーションプロセスに返却する
ことを特徴とする請求項１１〜１３のいずれかに記載のファイル管理プログラム。
【請求項１５】
前記仮想ディレクトリＩＯサブシステムは、前記アプリケーションプロセスからの要求が削除であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルに削除マークを付ける
ことを特徴とする請求項１１〜１４のいずれかに記載のファイル管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディレクトリツリーをレイヤとして重ね合わせて仮想ディレクトリを構成し、複数のディレクトリツリーをアプリケーションからは、単一のディレクトリのように見せることで、ファイルの論理的且つアトミックな更新を可能とするファイル管理装置、ファイル管理方法、及びファイル管理プログラムに関する。
【背景技術】
【０００２】
従来、ファイルや設定情報などを更新する場合、同じファイル名を使って、もとのファイルを上書きしたり、アプリケーションごとに用意された、既定値を上書きするためのファイルを別途作成するなどの手段により更新を行っていた。後者の方法としては、例えばUnix（登録商標）の一般的なシェル、例えばBourne  Shellにおいて、起動時に書き込みできないシステム設定ファイル/etc/profileを読み込んだ後に、ユーザ個別の設定ファイルUSER_HOME/.profileを読み込み、このUSER_HOME/.profileにシステム設定を追加変更することで更新を行うようになっていた。
【０００３】
しかし、これらの更新には、次のような問題点があった。
まず、更新後、元のファイルに戻すことができなかった。また、上述した後者の方法では、アプリケーションの開発者が既定値の上書きを意識して複数個所の設定ファイルを読むようにコーディングする必要があった。さらに、複数ファイルにまたがる更新作業をアトミック（不可分）に行うことができなかった。
【０００４】
このようなファイルの更新に関する先行技術文献としては、例えば以下に示す特許文献１及び特許文献２に示すものを挙げることができる。
特許文献１に記載の発明では、サーバ上にリンク先情報管理テーブルを設け、これを更新することにより、ファイルを上書きせずに、別の場所に置くことを可能としている。
特許文献２に記載の発明では、仮想ディレクトリへのアクセスを実ディレクトリへ変換する方法により、複数ファイルを一変に切り替えることを可能としている。
【０００５】
しかし、特許文献１に記載の発明では、設定ファイルの更新時に実際のファイルとリンク先情報の両方を更新しなければならないため、過去の状態に戻すことが困難であるという問題があった。
また、特許文献２に記載の発明では、オリジナルの設定ファイル一式の全コピーを作成する必要があるという問題があった。
【０００６】
これに対して、本発明では、複数のディレクトリツリーをレイヤのように重ね合わせて仮想ディレクトリを構成し、これを用いることで上述した更新に関する問題を解決しようとするものである。
このような仮想ディレクトリに関連する先行技術文献としては、例えば以下に示す特許文献３及び特許文献４に示すものを挙げることができる。
【０００７】
特許文献３に記載の発明によれば、実在の階層ディレクトリはそのままとし、仮想管理ファイルを設けて複数のカテゴリ別にそれぞれ分類・整理を実現することが可能とされている。
この特許文献３に記載の仮想ディレクトリは、本発明における仮想ディレクトリとは異なり、管理テーブル内に存在するエントリであって、その配下に存在するファイルの実体を管理テーブルでマッピングしたものである。これによって、仮想ディレクトリ上のファイルパスと実体（ファイル自体）との関係が従来１対１であったものを、Ｎ対１とすることを可能にしている。
【０００８】
また、特許文献４に記載の発明によれば、複数のボリュームからなる論理的なボリューム上に構築されるファイルシステムを管理するファイルシステムの処理装置に関し、複数のボリュームで論理ボリュームを構成する場合における性能向上とスペースの有効利用が可能とされている。
この特許文献４に記載のディレクトリツリーの重ね合わせは、本発明の仮想ディレクトリにおけるレイヤの重ね合わせとは異なり、ディレクトリツリーの根を他のディレクトリツリーの葉の１つへ接続することを意味しており、いわゆるマウントを行うものである。
【０００９】
【特許文献１】特開２００４−０７８７８９号公報
【特許文献２】特開２００３−１６７７７５号公報
【特許文献３】特開２００２−１４０２２０号公報
【特許文献４】特開平０５−１４３４１９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、仮想ディレクトリに関する従来の技術には、以下のような問題があった。
特許文献３に記載の発明では、管理しているものは個々のファイルをどの仮想ディレクトリ以下に置くかという情報でありファイルの実体そのものは１つしか存在しない。したがって、ファイルの更新に関しては実ファイルの更新以外の手段が無く、ファイルを更新すると、マスターファイルが更新されてしまうという問題があった。
このため、複数のファイルの同時追加や、過去のある時点のスナップショットの取得、マスター（オリジナル）ファイルの保持といったことができないという問題があった。
【００１１】
特許文献４に記載の発明では、論理的に構成されるディレクトリツリーは、必ず複数のボリュームから構成されていなければならない。また、仮想ディレクトリ上のファイルパスと実体とが１対１であるため、特許文献３に記載の発明と同様に、複数のファイルの同時追加や、過去のある時点のスナップショットの取得、マスターファイルの保持といったことができないという問題があった。
【００１２】
本発明は、上記の事情にかんがみなされたものであり、複数のディレクトリツリーをレイヤのように重ね合わせて仮想ディレクトリを構成し、複数のディレクトリツリーをアプリケーションからは、単一のディレクトリのように見せ、ファイルを更新する際は、オリジナルファイルを上書きするのではなく、更新用のレイヤへ書き込むことで論理的な上書きを可能とし、さらにあらかじめ他のディレクトリ以下に上書きしたいファイルを用意しておき、仮想ディレクトリの最上位レイヤへ配備することで、複数ファイルの論理的且つアトミックな更新を可能とするファイル管理装置、ファイル管理方法、及びファイル管理プログラムの提供を目的とする。
【００１３】
すなわち、本発明における仮想ディレクトリは、複数のディレクトリツリーを重ね合わせたディレクトリツリーであり、複数のディレクトリツリーをレイヤのように重ね合わせて構築するものである。このため、本発明においては、仮想ディレクトリ上のファイルパスと実体との関係は、１対Ｎ（Ｎのうち最上位（最新）のもののみが通常見える。）となっている。
これによって、本発明では、過去のある時点のスナップショットの取得やマスターファイルの保持が可能であり、複数のファイルの同時追加についてもアトミックに行うことが可能となっている。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、本発明のファイル管理装置は、複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とするファイル管理装置であって、複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築する仮想ディレクトリ構築手段と、仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求を仮想ディレクトリＩＯサブシステムへ行うアプリケーションプロセスと、アプリケーションプロセスからの要求にもとづいて、複数のディレクトリツリーを検索することで、ファイルの実際のパスを取得し、要求内容に対応する処理を実行する仮想ディレクトリＩＯサブシステムとを備えた構成としてある。
【００１５】
ファイル管理装置をこのような構成にすれば、複数のディレクトリツリーをレイヤのように重ね合わせて仮想ディレクトリを構成することができる。
そして、最上位レイヤ、すなわち最新のディレクトリツリーにおけるファイルに対して更新が行われるように、仮想ディレクトリＩＯサブシステムによる処理を実行させることで、設定ファイル等のマスターを古いレイヤに残したまま、最上位レイヤにおいてその内容の追加更新等を行うことができる。このため、マスターは上書きされることがなく、いつでも既定の状態に戻すことが可能となる。
【００１６】
また、本発明によれば、アプリケーションの設定ファイルの上書き方法を統一することができるため、アプリケーション開発を容易にすることが可能となる。
すなわち、アプリケーションは仮想ディレクトリにより必要な設定ファイル等のパスのみを意識すればよく、上書きを意識して、複数のファイルを読む必要がない。
【００１７】
さらに、本発明によれば、複数ファイルに対する更新をアトミックに行うことができる。すなわち、あらかじめ更新用ディレクトリへ更新後のファイルを用意し、この更新用ディレクトリを最上位レイヤとして、既存レイヤを１度の操作で覆うことができ、複数のファイルを一度に更新することが可能となる。
【００１８】
ここで、アトミックな更新についてより詳細に説明する。
例えば、ディレクトリ/new/以下にA.txt B.txt という２つのファイルがあり、これら２つのファイルを、/target/というディレクトリ以下にコピーする場合を考える。
【００１９】
このとき、通常の更新方法では、
（１）/new/A.txtの内容の一部を読み込む
（２）読み込んだ内容を、/target/A.txt以下に書き込む
（３）/new/A.txtに、まだ読んでいない内容があれば（１）に戻る
（４）/new/B.txtの内容の一部を読み込む
（５）読み込んだ内容を、/target/B.txt以下に書き込む
（６）/new/B.txtに、まだ読んでいない内容があれば（４）に戻る
という処理が行われる。
【００２０】
このような処理は、/target/以下のファイルを読み取るプログラム側からすると、A.txtが中途半端な状態で読んでしまったり（（１）〜（３）の間に読み込んだ場合）、A.txtがあるのに、B.txtがない状態だったりする場合がある。
したがって、上記ファイルのコピーという処理は、アトミック（不可分）ではない。
一方、コピーする処理がアトミックということは、上述のような中途半端な更新状況がありえないことを意味する。
【００２１】
本発明では、最上位ディレクトリツリーとして更新後のファイルを保有するレイヤを既存のレイヤに重ね合わせることで、一度に更新を行うことができる。すなわち、/target/（仮想ディレクトリ）を読み取るプログラム側から見ると、/target/A.txtと/target/B.txtの両方が完全な形で読み込めるか、両方とも存在せず読み込めないかのどちらかの状態しかありえず、アトミックな更新が実現されていることになる。
【００２２】
また、本発明によれば、更新するたびに新規レイヤ（最上位レイヤ）を作成することで、過去の任意時点のディレクトリツリーを取得することができる。すなわち、複数のディレクトリツリーをレイヤのように重ね合わせて仮想ディレクトリを構成することで、古いレイヤもそのまま保持することが可能となる。
【００２３】
これについて、具体例を用いてより詳細に説明する。
（１）最初に、/data1/dataのみが、仮想ディレクトリ/dataの実体であり、これに/data/config1/file1が作成されていると仮定する。
（２）次に、空の/data2/dataを作成し、これを仮想ディレクトリの最上位レイヤとして重ねる。
【００２４】
（３）その後、プログラムが、/data/config1/file2を新規に作成したと仮定する。このファイルは、最上位ディレクトリである、/data2/data以下に作成される。
（４）次に、空の/home/dataを作成し、これを仮想ディレクトリの最上位レイヤとして重ねる。
【００２５】
（５）その後、プログラムが、/data/config1/file1を更新したと仮定する。この更新されたファイルは、/home/data/config1/file1に作成される。
以上のように変遷したとき、上記（２）及び（４）の時点の状態には、いつでも戻すことができる。すなわち、（４）の時点に戻すには、最上位レイヤから/home/dataを外せばよく、（２）の時点に戻すには、最上位レイヤから/home/data,
/data2/dataの２つを外せばよい。
【００２６】
さらに、本発明によれば、書き込みを考慮せずに静止点のバックアップを取ることができる。これは、本発明では、最上位レイヤ以外のレイヤのみを重ねたツリーをバックアップすることが可能なためである。
なお、「ファイルの各種取り扱い要求」としては、具体的には、読み込み、存在確認、削除、書き込み、読み書き等を挙げることができる。
【００２７】
また、本発明のファイル管理装置は、仮想ディレクトリＩＯサブシステムは、アプリケーションプロセスからの要求が読み込み要求であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルのデスクリプタをアプリケーションプロセスに返却する構成としてある。
【００２８】
また、本発明のファイル管理装置は、仮想ディレクトリＩＯサブシステムは、アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーにファイルを作成し、そのファイルのデスクリプタをアプリケーションプロセスに返却する構成としてある。
【００２９】
また、本発明のファイル管理装置は、仮想ディレクトリＩＯサブシステムは、アプリケーションプロセスからの要求が読み書き要求であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルのコピーを最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタをアプリケーションプロセスに返却する構成としてある。
【００３０】
また、本発明のファイル管理装置は、仮想ディレクトリＩＯサブシステムは、アプリケーションプロセスからの要求が削除であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルに削除マークを付ける構成としてある。
【００３１】
ファイル管理装置をこのような構成にすれば、仮想ディレクトリ及び仮想ディレクトリＩＯサブシステムにより、アプリケーションプロセスに対して、複数のディレクトリツリーを単一のディレクトリとして認識させることが可能となる。
【００３２】
また、本発明のファイル管理方法は、複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とするファイル管理装置によるファイル管理方法であって、ファイル管理装置における仮想ディレクトリ構築手段が、複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築し、ファイル管理装置におけるアプリケーションプロセスが、仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求をファイル管理装置における仮想ディレクトリＩＯサブシステムへ行い、仮想ディレクトリＩＯサブシステムが、アプリケーションプロセスからの要求にもとづいて、複数のディレクトリツリーを検索することで、ファイルの実際のパスを取得し、要求内容に対応する処理を実行する方法としてある。
【００３３】
また、本発明のファイル管理方法は、仮想ディレクトリＩＯサブシステムが、アプリケーションプロセスからの要求が読み込み要求であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルのデスクリプタをアプリケーションプロセスに返却する方法としてある。
【００３４】
また、本発明のファイル管理方法は、仮想ディレクトリＩＯサブシステムが、アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーにファイルを作成し、そのファイルのデスクリプタをアプリケーションプロセスに返却する方法としてある。
【００３５】
また、本発明のファイル管理方法は、仮想ディレクトリＩＯサブシステムが、アプリケーションプロセスからの要求が読み書き要求であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルのコピーを最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタをアプリケーションプロセスに返却する方法としてある。
【００３６】
また、本発明のファイル管理方法は、仮想ディレクトリＩＯサブシステムが、アプリケーションプロセスからの要求が削除であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルに削除マークを付ける方法としてある。
【００３７】
ファイル管理方法をこれらのような構成にすれば、オリジナルファイルを保存したまま、ファイルの論理的な上書きを行うことが可能となる。
また、複数ファイルについての論理的且つアトミックな更新を行うことが可能となる。
さらに、アプリケーションプロセスに対して、複数のディレクトリツリーを単一のディレクトリとして認識させることができるため、アプリケーション開発を容易化することが可能となる。
【００３８】
また、本発明のファイル管理プログラムは、ファイル管理装置に、複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とさせるファイル管理プログラムであって、ファイル管理装置を、複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築する仮想ディレクトリ構築手段、仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求を仮想ディレクトリＩＯサブシステムへ行うアプリケーションプロセス、アプリケーションプロセスからの要求にもとづいて、複数のディレクトリツリーを検索することで、ファイルの実際のパスを取得し、要求内容に対応する処理を実行する仮想ディレクトリＩＯサブシステムとして機能させる構成としてある。
【００３９】
また、本発明のファイル管理プログラムは、仮想ディレクトリＩＯサブシステムは、アプリケーションプロセスからの要求が読み込み要求であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルのデスクリプタをアプリケーションプロセスに返却する構成としてある。
【００４０】
また、本発明のファイル管理プログラムは、仮想ディレクトリＩＯサブシステムは、アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーにファイルを作成し、そのファイルのデスクリプタをアプリケーションプロセスに返却する構成としてある。
【００４１】
また、本発明のファイル管理プログラムは、仮想ディレクトリＩＯサブシステムは、アプリケーションプロセスからの要求が読み書き要求であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルのコピーを最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタをアプリケーションプロセスに返却する構成としてある。
【００４２】
また、本発明のファイル管理プログラムは、仮想ディレクトリＩＯサブシステムは、アプリケーションプロセスからの要求が削除であれば、複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順にファイルを検索し、見つかった時点でそのファイルに削除マークを付ける構成としてある。
【００４３】
ファイル管理プログラムをこれらのような構成にすれば、ファイル管理装置に、オリジナルファイルを保存したまま、ファイルの論理的な上書きを行わせることが可能となる。また、複数ファイルについての論理的且つアトミックな更新を行わせることも可能となる。
【発明の効果】
【００４４】
本発明によれば、複数のディレクトリツリーをレイヤのように重ね合わせて仮想ディレクトリを構成することができる。
このため、アプリケーションプロセスから複数のディレクトリツリーにおけるファイルの処理を行うに際して、アプリケーションプロセスは単一の仮想ディレクトリに対してのみのアクセスを意識すれば良いこととなる。
そして、ファイルの更新について、常に最上位レイヤにおけるファイルに対して行われるように仮想ディレクトリＩＯサブシステムにより処理することで、設定ファイル等のマスターを古いレイヤに残したまま、最上位レイヤにおいてその内容の追加更新等を行うことができる。このため、マスターは上書きされることがなく、いつでも既定の状態に戻すことが可能となる。
【００４５】
また、アプリケーションの設定ファイルの上書き方法を統一することができるため、開発を容易にすることが可能となる。すなわち、アプリケーションは仮想ディレクトリにより必要な設定ファイル等のパスのみを意識すればよく、上書きを意識して、複数のファイルを読む必要がない。
さらに、本発明によれば、複数ファイルに対する更新をアトミックに行うことができる。すなわち、あらかじめ更新用ディレクトリへ更新後のファイルを用意し、この更新用ディレクトリを最上位レイヤとして、既存レイヤを１度の操作で覆うことができ、複数のファイルを一度に更新することが可能となる。
【００４６】
また、本発明によれば、更新するたびに新規レイヤを作成するようにすることで、過去の任意時点のディレクトリツリーを取得することができる。すなわち、複数のディレクトリツリーをレイヤのように重ね合わせて仮想ディレクトリを構成することで、古いレイヤもそのまま保持することが可能となる。
さらに、本発明によれば、書き込みを考慮せずに静止点のバックアップを取ることができる。これは、本発明では、最上位レイヤ以外のレイヤのみを重ねたツリーをバックアップすることが可能なためである。
そして、このような仮想的なディレクトリツリーを構築することの可能なファイル管理装置を用いることによって、Ｗｅｂサイトなどの効率的なコンテンツ管理やアプリケーションの効率的な設定管理を行うことが可能となる。
【発明を実施するための最良の形態】
【００４７】
以下、本発明に係るファイル管理装置の好ましい実施形態について、図面を参照しつつ説明する。
なお、以下の実施形態に示す本発明のファイル管理装置は、プログラムに制御されたコンピュータとして動作するようになっている。このコンピュータのＣＰＵは、ファイル管理プログラムにもとづいてコンピュータの各構成要素に指令を送り、ファイル管理装置の動作に必要となる所定の処理、例えば、ファイルの実パスの取得処理、ファイルの削除マークのチェック処理、オープンしたファイルのポインタ返却処理等を行わせる。このように、本発明のファイル管理装置における各処理，動作は、プログラムとコンピュータとが協働した具体的手段により実現できるものである。
【００４８】
プログラムは予めＲＯＭ，ＲＡＭ等の記録媒体に格納され、コンピュータに実装された記録媒体から当該コンピュータにプログラムを読み込ませて実行されるが、例えば通信回線を介してコンピュータに読み込ませることもできる。
また、プログラムを格納する記録媒体は、例えば半導体メモリ，磁気ディスク，光ディスク、その他任意のコンピュータで読取り可能な任意の記録手段により構成できる。
【００４９】
まず、本発明の一実施形態の構成について、図１及び図２を参照して説明する。図１は、本実施形態のファイル管理装置の構成を示すブロック図である。図２は、本実施形態のファイル管理装置における仮想ディレクトリとレイヤディレクトリツリーの関係を示す図である。
図１の計算機１０は、本実施形態のファイル管理装置を示している。この計算機１０は、同図に示すように、仮想ディレクトリ構築手段１１、仮想ディレクトリ１２、アプリケーションプロセス１３、仮想ディレクトリＩＯサブシステム１４を備えている。
【００５０】
仮想ディレクトリ構築手段１１は、プログラム制御により動作する処理手段であり、計算機１０上の複数のディレクトリ以下にあるファイルを１つのパスからアクセスできるような、仮想ディレクトリ１２を構築する。
【００５１】
この仮想ディレクトリ１２は、複数の実ディレクトリにもとづき構成される仮想的なディレクトリであり、例えば図２に示すようなものとすることができる。この仮想ディレクトリ１２は、レイヤディレクトリツリーに対する仮想的なディレクトリであるが、ディレクトリとしては実体を備えたものである。
【００５２】
同図において、仮想ディレクトリ１２は、実ディレクトリであるレイヤ１ディレクトリツリー、レイヤ２ディレクトリツリー、最上位ディレクトリツリーを重ね合わせたディレクトリ構成を有している。すなわち、仮想ディレクトリ１２のディレクトリ構成は、各レイヤディレクトリツリーにおける/dataディレクトリ以下を重ね合わせた構成となっている。
ここで、重ね合わせた場合に同一のパスとなるファイルについては、上位のディレクトリツリーにおけるファイルが仮想ディレクトリにおいて存在するものとされる。
【００５３】
アプリケーションプロセス１３は、プログラム制御により動作する処理手段であり、ファイルを読み書きするために、仮想ディレクトリＩＯサブシステム１４へファイルパスを指定して、読み込み、書き込み、又は読み書き等の要求を行う。
【００５４】
仮想ディレクトリＩＯサブシステム１４は、プログラム制御により動作する処理手段であり、アプリケーションプロセス１３により読み込み要求がなされると、最上位レイヤ（最新レイヤ）から順にレイヤ1（最古のレイヤ）まで指定されたファイルを検索していき、見つかった時点でそのファイルへのポインタ（ファイルデスクリプタ）をアプリケーションへ返却する。
また、仮想ディレクトリＩＯサブシステム１４は、アプリケーションプロセス１３により書き込み要求がなされると、最上位レイヤへ指定されたファイルを作成し、そのファイルポインタをアプリケーションへ返却する。
【００５５】
さらに、仮想ディレクトリＩＯサブシステム１４は、アプリケーションプロセス１３により読み書き要求がなされると、読み込み要求の場合と同じ手順でファイルを探し、最上位レイヤへ見つかったファイルのコピーを作成し、コピーへのファイルポインタをアプリケーションへ返却する。
【００５６】
また、仮想ディレクトリＩＯサブシステム１４は、アプリケーションプロセス１３によりアンリンク（削除）要求がなされると、読み込み要求の場合と同じ手順でファイルを探し、見つかった時点でそのファイルへ削除マークをつける。最上位レイヤにも下位レイヤにも、指定されたファイルが存在しない場合は、アプリケーションへエラーを返却する。
以上のように、アプリケーションプロセス１３は、ファイル読み込み、書き込みなどを、仮想ディレクトリ１２に対してアクセスすることで、実際の格納パスを意識することなく行うことが可能となっている。
【００５７】
次に、本実施形態のファイル管理装置における処理手順について、図２、図３及び図４を参照して説明する。図３は、本実施形態のファイル管理装置における処理手順（読み込み，存在確認，アンリンク要求の場合）を示すフローチャートである。図４は、同装置における処理手順（書き込み，読み書き要求の場合）を示すフローチャートである。
【００５８】
まず、前提として、図２に示すような、実ディレクトリ上に、レイヤとする複数のディレクトリツリーを予め作成しておく。レイヤは、任意のタイミングで、新たなものを追加して作成することができる。この場合、その新たなレイヤは、最上位ディレクトリツリーを構成する。こうして、実ディレクトリには、レイヤ１ディレクトリツリー、レイヤ２ディレクトリツリー、・・・、レイヤＮディレクトリツリーが形成されることとなる。勿論、レイヤが２つのみの場合もあり得る。
【００５９】
そして、これらのレイヤのディレクトリ以下にファイルが存在する状態とする。図２の例では、/data1以下にレイヤ1（最下位レイヤ）に置かれるファイルとして、file1及びfile3が、/data2以下にレイヤ２に置かれるファイルとしてfile2、file4及びfile5が、/homeに最上位レイヤに置かれるファイルとしてfile1がそれぞれ存在している。
【００６０】
次に、仮想ディレクトリ構築手段１１により仮想ディレクトリ１２を構築する。図２の場合、レイヤ１、レイヤ２、最上位レイヤの順に重ねて、仮想ディレクトリ１２を構成する。この仮想ディレクトリ１２がアプリケーションから利用されるディレクトリツリーとなる。勿論、実ディレクトリ上に新たなディレクトリツリーが追加された場合には、仮想ディレクトリ構築手段１１は、追加されたディレクトリツリーを含めた、全てのディレクトリツリーが重ね合わされた仮想ディレクトリ１２を作成することができる。
【００６１】
次に、仮想ディレクトリＩＯサブシステム１４は、アプリケーションプロセス１３からＩＯ要求を受け取ると、要求されたファイルのパスを取得する（ステップ１０）。
そして、要求内容を判別する（ステップ１１）。要求内容は、大きく分けて、読み込み，存在確認，アンリンク（削除）要求と、書き込み，読み書き要求との２つに分けることができる。
【００６２】
要求内容が、読み込み，存在確認，アンリンク要求の場合、仮想ディレクトリＩＯサブシステム１４は、要求ファイルのパスから、実パスを取得する（ステップ１２）。
このとき、仮想ディレクトリＩＯサブシステム１４は、最上位レイヤから最下位レイヤ（レイヤ１）の順番にファイルを検索し、最初に見つかった実パスを取得する（ステップ１２’）。このとき、実パスが取得できたかできないかにより、処理を分離する（ステップ１３）。
【００６３】
実パスが取得できた場合（ステップ１３の「はい」）、仮想ディレクトリＩＯサブシステム１４は、次にファイルの削除マークを調べる（ステップ１４）。
削除マークの付け方は、メタ情報テーブルに持たせる、ファイルを構成するブロックに持たせるなどの方法がある。
【００６４】
メタ情報テーブルに持たせる方法としては、具体的には計算機１０において、項目として「仮想ディレクトリ」，「要求ファイルの実パス」等を備えたテーブルを保有させ、このテーブルに登録されているファイルについては、削除マークが付されていると判断するようにすることができる。
なお、当該テーブルに「仮想ディレクトリ」項目を設けることにより、１つの計算機１０に複数の仮想ディレクトリが存在する場合に対応することができる。また、当該テーブルに「要求ファイルの実パス」項目を設けることにより、下位レイヤで削除されているファイルについて、上位レイヤで同名のファイルを作成することが可能となる。これによって、削除されたという事実をメタ情報テーブルに履歴として残すことが可能となる。このようなメタ情報テーブルを用いる場合、アンリンク要求に対する処理や、「削除済み」かどうかの確認は、このテーブルを参照することで行うこととなる。
【００６５】
ファイルを構成するブロックに持たせる方法としては、例えばUnix（登録商標）のファイルシステムにおいて使用されるi-nodeと呼ばれる特殊なブロックを用いる方法などとすることができる。このi-nodeには、ファイルごとの属性情報を記憶させることができるため、これに削除マークを保有させることが可能である。
【００６６】
また、ファイルに削除マークが付いていない場合（ステップ１４の「なし」）、要求内容により、処理が分かれる（ステップ１５）。
読み込み要求の場合は、実ファイルを読み込み用にオープンし、アプリケーションへポインタを返して（ステップ１６）、処理を終了する。
【００６７】
存在確認の場合は、ファイルが存在するという結果を返して（ステップ１７）、処理を終了する。
アンリンク要求の場合は、ファイルへ削除マークを付けて（ステップ１８）、処理を終了する。
そして、ファイルに削除マークが付いていた場合（ステップ１４の「あり」）、又は実ファイルの取得に失敗した場合は（ステップ１３の「いいえ」）、アプリケーションプロセス１３へエラーを返し（ステップ１９）、処理を終了する。
【００６８】
一方、ステップ１１において、要求内容が書き込み又は読み書き要求であった場合、図３のステップ１２における場合と同様にして、要求ファイルのパスから、実パスを取得する（ステップ２０）。
すなわち、仮想ディレクトリＩＯサブシステム１４は、最上位レイヤから最下位レイヤの順番にファイルを検索し、最初に見つかった実パスを取得する（ステップ２０’）。このとき、実パスが取得できたかできないかにより、処理を分離する（ステップ２１）。
【００６９】
実パスが取得できた場合は（ステップ２１の「はい」）、次にファイルの削除マークを調べる（ステップ２２）。
ファイルに削除マークが付いていない場合（ステップ２２の「なし」）、次にそのファイルが最上位レイヤのものかどうかを判定する（ステップ２３）。
【００７０】
ここで、最上位レイヤのものでない場合は（ステップ２３の「いいえ」）、実ファイルのコピーを最上位レイヤの同じパスへ作成する（ステップ２４）。そして、そのファイルを書き込み又は読み書きでオープンしてアプリケーションプロセス１３にポインタを返して（ステップ２５）、処理を終了する。
例えば、図２において、/data/config1/file2に書き込み要求があり、レイヤ２ディレクトリツリーにおける当該ファイルに削除マークが付いていない場合は、最上位ディレクトリツリーにおいて、/home/data/config1/file2というファイルのコピーを作成することになる。
そのファイルが最上位レイヤのものである場合は（ステップ２３の「はい」）、そのファイルを書き込み又は読み書きでオープンしてアプリケーションプロセス１３にポインタを返して（ステップ２５）、処理を終了する。
【００７１】
ファイルに削除マークがあった場合は（ステップ２２の「あり」）、ファイルが最上位レイヤに存在する場合のみその実ファイルを削除する（ステップ２６）。
そして、最上位レイヤの要求されたパスへ新規にファイルを作成する（ステップ２７）。
例えば、図２において、/data/config1/file1について書き込み要求があり、/home/data/config1/file1に削除マークがついている場合、当該ファイルは削除される。また、/data/config1/file2について書き込み要求があり、レイヤ２ディレクトリツリーにおける当該ファイルに削除マークが付いている場合は、最上位ディレクトリツリーにおいて、/home/data/config1/file2という新規ファイルを作成する。
【００７２】
実パスが取得できない場合（ステップ２１の「いいえ」）、すなわち実ファイルが存在しない場合も同様にして、最上位レイヤの要求されたパスへ新規にファイルを作成する（ステップ２７）。
例えば、図２において、/data/config1/file6について書き込み要求があった場合、同図の例では、実ファイルが存在しないため、最上位ディレクトリツリーにおいて、/home/data/config1/file6という新規ファイルが作成される。
これらの処理によって、最上位レイヤにおいて、要求されたファイルが存在することとなり、そのファイルを書き込み又は読み書きでオープンしてポインタを返すことができる（ステップ２５）。そして、処理を終了する。
【００７３】
以上説明したように、本実施形態のファイル管理装置によれば、アプリケーションは実パスを一切意識することなく読みこみ、書きこみ、削除、存在確認等を仮想ディレクトリＩＯサブシステムにより行うことが可能となる。
また、ファイルを更新する際は、オリジナルファイルを上書きするのではなく、更新用のレイヤへ書き込むことで論理的な上書きを可能とし、さらにあらかじめ他のディレクトリ以下に上書きしたいファイルを用意しておき、仮想ディレクトリの最上位レイヤへ配備することで、複数ファイルの論理的且つアトミックな更新が可能となる。
【００７４】
本発明は、以上の実施形態に限定されるものではなく、本発明の範囲内において、種々の変更実施が可能であることは言うまでもない。
例えば、上記実施形態においては、仮想ディレクトリを一つのみ作成した構成としているが、二以上の仮想ディレクトリを作成し、アプリケーションプロセス１３にこれらの仮想ディレクトリについてのアクセスを行わせるなど適宜変更することが可能である。
【産業上の利用可能性】
【００７５】
本発明は、アプリケーションプロセスにより使用されるファイルについて、アトミックな更新を必要とする情報処理装置などに好適に利用することができる。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施形態のファイル管理装置の構成を示すブロック図である。
【図２】本発明の一実施形態のファイル管理装置における仮想ディレクトリとレイヤディレクトリツリーの関係を示す図である。
【図３】本発明の一実施形態のファイル管理装置における処理手順（読み込み，存在確認，アンリンク要求の場合）を示すフローチャートである。
【図４】本発明の一実施形態のファイル管理装置における処理手順（書き込み，読み書き要求の場合）を示すフローチャートである。
【符号の説明】
【００７７】
１０  計算機
１１  仮想ディレクトリ構築手段
１２  仮想ディレクトリ
１３  アプリケーションプロセス
１４  仮想ディレクトリＩＯサブシステム
【図１】
2006268456.tif 000003
【図２】
2006268456.tif 000004
【図３】
2006268456.tif 000005
【図４】
2006268456.tif 000006