JP2006268456A - ファイル管理装置、ファイル管理方法、及びファイル管理プログラム - Google Patents

ファイル管理装置、ファイル管理方法、及びファイル管理プログラム Download PDF

Info

Publication number
JP2006268456A
JP2006268456A JP2005085930A JP2005085930A JP2006268456A JP 2006268456 A JP2006268456 A JP 2006268456A JP 2005085930 A JP2005085930 A JP 2005085930A JP 2005085930 A JP2005085930 A JP 2005085930A JP 2006268456 A JP2006268456 A JP 2006268456A
Authority
JP
Japan
Prior art keywords
directory
file
application process
virtual
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005085930A
Other languages
English (en)
Inventor
Toru Watanabe
亨 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2005085930A priority Critical patent/JP2006268456A/ja
Publication of JP2006268456A publication Critical patent/JP2006268456A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 オリジナルファイルを保持したままのファイルの論理的な上書き、及び複数ファイルの論理的且つアトミックな更新を可能とする。
【解決手段】 複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とするファイル管理装置であり、複数のディレクトリツリーを重ね合わせ、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリ12を構築する仮想ディレクトリ構築手段11と、仮想ディレクトリにおけるファイルのパスを指定し、ファイルの各種取り扱い要求を仮想ディレクトリIOサブシステムへ行うアプリケーションプロセス13と、アプリケーションプロセスからの要求にもとづき複数のディレクトリツリーを検索することで、ファイルの実際のパスを取得し、要求内容に対応する処理を実行する仮想ディレクトリIOサブシステム14とを備えたファイル管理装置。
【選択図】 図1

Description

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

Claims (15)

  1. 複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とするファイル管理装置であって、
    複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築する仮想ディレクトリ構築手段と、
    前記仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求を仮想ディレクトリIOサブシステムへ行うアプリケーションプロセスと、
    前記アプリケーションプロセスからの要求にもとづいて、前記複数のディレクトリツリーを検索することで、前記ファイルの実際のパスを取得し、要求内容に対応する処理を実行する前記仮想ディレクトリIOサブシステムと、を備えた
    ことを特徴とするファイル管理装置。
  2. 前記仮想ディレクトリIOサブシステムは、前記アプリケーションプロセスからの要求が読み込み要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項1記載のファイル管理装置。
  3. 前記仮想ディレクトリIOサブシステムは、前記アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーに前記ファイルを作成し、そのファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項1又は2記載のファイル管理装置。
  4. 前記仮想ディレクトリIOサブシステムは、前記アプリケーションプロセスからの要求が読み書き要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのコピーを前記最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項1〜3のいずれかに記載のファイル管理装置。
  5. 前記仮想ディレクトリIOサブシステムは、前記アプリケーションプロセスからの要求が削除であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルに削除マークを付ける
    ことを特徴とする請求項1〜4のいずれかに記載のファイル管理装置。
  6. 複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とするファイル管理装置によるファイル管理方法であって、
    前記ファイル管理装置における仮想ディレクトリ構築手段が、前記複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築し、
    前記ファイル管理装置におけるアプリケーションプロセスが、前記仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求を前記ファイル管理装置における仮想ディレクトリIOサブシステムへ行い、
    前記仮想ディレクトリIOサブシステムが、前記アプリケーションプロセスからの要求にもとづいて、前記複数のディレクトリツリーを検索することで、前記ファイルの実際のパスを取得し、要求内容に対応する処理を実行する
    ことを特徴とするファイル管理方法。
  7. 前記仮想ディレクトリIOサブシステムが、前記アプリケーションプロセスからの要求が読み込み要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項6記載のファイル管理方法。
  8. 前記仮想ディレクトリIOサブシステムが、前記アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーに前記ファイルを作成し、そのファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項6又は7記載のファイル管理方法。
  9. 前記仮想ディレクトリIOサブシステムが、前記アプリケーションプロセスからの要求が読み書き要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのコピーを前記最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項6〜8のいずれかに記載のファイル管理方法。
  10. 前記仮想ディレクトリIOサブシステムが、前記アプリケーションプロセスからの要求が削除であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルに削除マークを付ける
    ことを特徴とする請求項6〜9のいずれかに記載のファイル管理方法。
  11. ファイル管理装置に、複数のディレクトリツリーのうち最新のディレクトリツリーにおけるファイルのみを更新対象とさせるファイル管理プログラムであって、
    前記ファイル管理装置を、
    複数のディレクトリツリーを重ね合わせて、これらのディレクトリツリーを単一のディレクトリとしてアクセス可能な仮想ディレクトリを構築する仮想ディレクトリ構築手段、
    前記仮想ディレクトリにおけるファイルのパスを指定して、ファイルの各種取り扱い要求を仮想ディレクトリIOサブシステムへ行うアプリケーションプロセス、
    前記アプリケーションプロセスからの要求にもとづいて、前記複数のディレクトリツリーを検索することで、前記ファイルの実際のパスを取得し、要求内容に対応する処理を実行する前記仮想ディレクトリIOサブシステム
    として機能させるファイル管理プログラム。
  12. 前記仮想ディレクトリIOサブシステムは、前記アプリケーションプロセスからの要求が読み込み要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項11記載のファイル管理プログラム。
  13. 前記仮想ディレクトリIOサブシステムは、前記アプリケーションプロセスからの要求が書き込み要求であれば、最新のディレクトリツリーに前記ファイルを作成し、そのファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項11又は12記載のファイル管理プログラム。
  14. 前記仮想ディレクトリIOサブシステムは、前記アプリケーションプロセスからの要求が読み書き要求であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルのコピーを前記最新のディレクトリツリーに作成し、このコピーされたファイルのデスクリプタを前記アプリケーションプロセスに返却する
    ことを特徴とする請求項11〜13のいずれかに記載のファイル管理プログラム。
  15. 前記仮想ディレクトリIOサブシステムは、前記アプリケーションプロセスからの要求が削除であれば、前記複数のディレクトリツリーについて、最新のディレクトリツリーからより古いディレクトリツリーへ順に前記ファイルを検索し、見つかった時点でそのファイルに削除マークを付ける
    ことを特徴とする請求項11〜14のいずれかに記載のファイル管理プログラム。
JP2005085930A 2005-03-24 2005-03-24 ファイル管理装置、ファイル管理方法、及びファイル管理プログラム Pending JP2006268456A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005085930A JP2006268456A (ja) 2005-03-24 2005-03-24 ファイル管理装置、ファイル管理方法、及びファイル管理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005085930A JP2006268456A (ja) 2005-03-24 2005-03-24 ファイル管理装置、ファイル管理方法、及びファイル管理プログラム

Publications (1)

Publication Number Publication Date
JP2006268456A true JP2006268456A (ja) 2006-10-05

Family

ID=37204359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005085930A Pending JP2006268456A (ja) 2005-03-24 2005-03-24 ファイル管理装置、ファイル管理方法、及びファイル管理プログラム

Country Status (1)

Country Link
JP (1) JP2006268456A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269198A (ja) * 2007-04-19 2008-11-06 Ize:Kk シンクライアント用オペレーティングシステム、シンクライアント装置、サーバ・シンクライアントシステム、及びシンクライアント用オペレーティングシステムの実行方法
JP2010237939A (ja) * 2009-03-31 2010-10-21 Nec Corp 投影ファイルシステム管理装置及び投影ファイルシステム管理方法並びにプログラム
EP2626796A1 (en) 2012-02-07 2013-08-14 Hitachi Solutions, Ltd. File list generation method, system, and program, and file list generation device
EP2629215A1 (en) 2012-02-15 2013-08-21 Hitachi Solutions, Ltd. File list generation method, system, and program, and file list generation device
CN104391905A (zh) * 2014-11-17 2015-03-04 浪潮通用软件有限公司 一种基于模块划分的附件路径设置方法
US9015214B2 (en) 2012-01-31 2015-04-21 Hitachi Solutions, Ltd. Process of generating a list of files added, changed, or deleted of a file server
WO2016120884A1 (en) * 2015-01-30 2016-08-04 Hewlett-Packard Development Company, L.P. Failure atomic update of a single application data file
CN112015349A (zh) * 2020-08-28 2020-12-01 北京浪潮数据技术有限公司 一种全闪系统卷删除方法、装置及电子设备和存储介质

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269198A (ja) * 2007-04-19 2008-11-06 Ize:Kk シンクライアント用オペレーティングシステム、シンクライアント装置、サーバ・シンクライアントシステム、及びシンクライアント用オペレーティングシステムの実行方法
JP2010237939A (ja) * 2009-03-31 2010-10-21 Nec Corp 投影ファイルシステム管理装置及び投影ファイルシステム管理方法並びにプログラム
US9015214B2 (en) 2012-01-31 2015-04-21 Hitachi Solutions, Ltd. Process of generating a list of files added, changed, or deleted of a file server
EP2626796A1 (en) 2012-02-07 2013-08-14 Hitachi Solutions, Ltd. File list generation method, system, and program, and file list generation device
EP2629215A1 (en) 2012-02-15 2013-08-21 Hitachi Solutions, Ltd. File list generation method, system, and program, and file list generation device
US8965941B2 (en) 2012-02-15 2015-02-24 Hitachi Solutions, Ltd. File list generation method, system, and program, and file list generation device
CN104391905A (zh) * 2014-11-17 2015-03-04 浪潮通用软件有限公司 一种基于模块划分的附件路径设置方法
WO2016120884A1 (en) * 2015-01-30 2016-08-04 Hewlett-Packard Development Company, L.P. Failure atomic update of a single application data file
CN112015349A (zh) * 2020-08-28 2020-12-01 北京浪潮数据技术有限公司 一种全闪系统卷删除方法、装置及电子设备和存储介质
CN112015349B (zh) * 2020-08-28 2022-07-05 北京浪潮数据技术有限公司 一种全闪系统卷删除方法、装置及电子设备和存储介质

Similar Documents

Publication Publication Date Title
US8447733B2 (en) Techniques for versioning file systems
CN110447021B (zh) 用于在数据中心之间维持元数据和数据的一致性的方法、装置和系统
US7539704B2 (en) Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
KR101573965B1 (ko) 분산형 저장 시스템 내의 데이터의 원자 다중 변경
CN104981802B (zh) 针对对象存储器索引系统的内容类别
US10936547B2 (en) Filesystem replication using a minimal filesystem metadata changelog
US8126854B1 (en) Using versioning to back up multiple versions of a stored object
CA2734675C (en) Shared namespace for storage clusters
EP2756434B1 (en) Efficient data recovery
US5778389A (en) Method and system for synchronizing computer file directories
US7395389B2 (en) Extending non-volatile storage at a computer system
JP6430499B2 (ja) Posix互換なファイル・システム、ファイル・リストを生成する方法および記憶デバイス
CN110062925A (zh) 用于云集成的快照元数据布置
US20100030825A1 (en) File Management System and Method
JP2006268456A (ja) ファイル管理装置、ファイル管理方法、及びファイル管理プログラム
CN105637487A (zh) 用于数据智能存储系统的实况还原
JP2014510314A (ja) ファイル共有システム及びファイル共有方法
US20090254585A1 (en) Method for Associating Administrative Policies with User-Definable Groups of Files
JP2009522677A (ja) ノードの番号付けによるファイル・システムのダンプ/復元のための方法、システム、およびデバイス
CN114048185B (zh) 一种分布式文件系统中海量小文件透明打包存储与访问的方法
JP4755244B2 (ja) 情報生成方法、情報生成プログラム及び情報生成装置
Janée et al. A data model and architecture for long-term preservation
WO2008021528A2 (en) Systems and methods for a snapshot of data
JP2006031608A (ja) 計算機、ストレージシステム、計算機が行うファイル管理方法、およびプログラム
AU2051901A (en) Method and apparatus for deploying data among data destinations for website development and maintenance

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090323

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090414