(57)【要約】      （修正有）【課題】削除して然程時間が経っていないファイルを復元できるようにすること。【解決手段】削除ファイル管理モジュール２４は、アプリケーションから削除が要求されたファイルを、名前空間から削除して、削除日時とともにキューテーブル２４ｅに登録するが、そのファイルのデータが格納されたディスクブロックを保護されたままにする。削除ファイル管理モジュール２４は、保存期間が所定の上限値を超過したファイルがあれば、所定のイベントが発生するたびに、そのファイルのデータが格納されているディスクブロックを解放し、そのファイルのキューテーブル２４ｅへの登録を抹消する。また、そのファイルの当時のファイルパスが指定されてそのファイルの復元が要求されると、削除ファイル管理モジュール２４は、そのファイルがキューテーブル２４ｅに登録されていれば、そのファイルのディレクトリエントリを生成する。【選択図】図５
2009110477.tif 000002
【特許請求の範囲】
【請求項１】
ファイルとその階層的な分類の体系である名前空間の管理、ファイル名とそのデータが格納されているデータ領域内のディスクブロックとの対応付けの管理、及び、アプリケーションからのファイルアクセスの制御を行うためのファイル管理装置であって、
何れかのファイルの削除をアプリケーションから受け付ける第１の受付部、
前記第１の受付部がファイルの削除を受け付けると、そのファイル名を名前空間から削除する第１の削除部、
前記第１の受付部がファイルの削除を受け付けると、そのファイルを特定するためのファイル識別情報とファイルパスと削除日時とを対応付けたレコードをキューテーブルに登録する登録部、
所定のイベントが発生すると、前記キューテーブルから、削除日時からその時点までの保存期間が所定の上限値を超過しているレコードを、抽出する抽出部、
前記保存期間が所定の上限値を超過しているレコードを前記抽出部が抽出すると、そのレコード内のファイル識別情報にて特定されるファイルとデータ領域内のディスクブロックとの対応付けを解除して、そのファイルのデータが格納されているディスクブロックを解放する解放部、
前記抽出部が抽出したレコードを前記キューテーブルから削除する第２の削除部、
削除済のファイルの復元とファイルパスとを操作者から受け付ける第２の受付部、
前記第２の受付部が削除済のファイルの復元とファイルパスとを操作者から受け付けると、そのファイルパス内のディレクトリパスを検索条件として、前記キューテーブルを検索する検索部、及び、
前記検索部がレコードを検出した場合に、そのレコード内のファイル識別情報にて特定されるファイルを、当該ディレクトリパスにて特定されるディレクトリに生成する復元部
を備えることを特徴とするファイル管理装置。
【請求項２】
前記抽出部は、前記データ領域の空き容量が所定の下限値を下回っている場合、更に、前記保存期間が所定の上限値を超えていないレコードの中から、全体のデータ量が前記データ領域の空き容量と前記所定の下限値との差分を超える一つ以上のファイルのレコードを、抽出する
ことを特徴とする請求項１記載のファイル管理装置。
【請求項３】
前記イベントが、アプリケーションからのファイルの書き込みである
ことを特徴とする請求項１又は２記載のファイル管理装置。
【請求項４】
前記イベントが、定期実行のための所定時間の経過である
ことを特徴とする請求項１又は２記載のファイル管理装置。
【請求項５】
ファイルとその階層的な分類の体系である名前空間の管理、ファイル名とそのデータが格納されているデータ領域内のディスクブロックとの対応付けの管理、及び、アプリケーションからのファイルアクセスの制御を行うためのファイル管理プログラムであって、
コンピュータを、
何れかのファイルの削除をアプリケーションから受け付ける第１の受付手段、
前記第１の受付手段がファイルの削除を受け付けると、そのファイル名を名前空間から削除する第１の削除手段、
前記第１の受付手段がファイルの削除を受け付けると、そのファイルを特定するためのファイル識別情報とファイルパスと削除日時とを対応付けたレコードをキューテーブルに登録する登録手段、
所定のイベントが発生すると、前記キューテーブルから、削除日時からその時点までの保存期間が所定の上限値を超過しているレコードを、抽出する抽出手段、
前記保存期間が所定の上限値を超過しているレコードを前記抽出手段が抽出すると、そのレコード内のファイル識別情報にて特定されるファイルとデータ領域内のディスクブロックとの対応付けを解除して、そのファイルのデータが格納されているディスクブロックを解放する解放手段、
前記抽出手段が抽出したレコードを前記キューテーブルから削除する第２の削除手段、
削除済のファイルの復元とファイルパスとを操作者から受け付ける第２の受付手段、
前記第２の受付手段が削除済のファイルの復元とファイルパスとを操作者から受け付けると、そのファイルパス内のディレクトリパスを検索条件として、前記キューテーブルを検索する検索手段、及び、
前記検索手段がレコードを検出した場合に、そのレコード内のファイル識別情報にて特定されるファイルを、当該ディレクトリパスにて特定されるディレクトリに生成する復元手段
として機能させる
ことを特徴とするファイル管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルを管理するための装置及びプログラムに、関する。
【背景技術】
【０００２】
周知のように、デスクトップにゴミ箱アイコンを備えているコンピュータがある。操作者は、不要なファイルのアイコンをゴミ箱アイコンにドラッグアンドドロップするだけで、ファイルを捨てることができる。しかし、そのファイルは、普段使用するディレクトリ群からゴミ箱のディレクトリへ単に移し替えられて見掛け上捨てられたに過ぎない。従って、そのファイルのデータは、最後に更新された状態のままディスクのデータ領域内で保存され、データ領域におけるそのファイルのデータが格納されているディスクブロックは、上書きされない占有状態（使用状態）のまま保護されている。このため、ファイルをゴミ箱に捨てただけでは、ディスクの空き領域が増えることはない。
【０００３】
また、周知のように、ファイルシステムは、アプリケーションから指示された削除［delete］を実行しても、ファイルとその階層的な分類（ディレクトリ）の体系である名前空間からファイル名を削除したり、ファイル名とそのデータが格納されているディスクブロックとの対応付けを解除したりするだけで、ファイルデータのデータ領域からの消去［erase］は行わない（例えば、非特許文献１参照）。削除対象のファイルのデータを格納し
ていたディスクブロックは、ファイルシステムによって、上書き可能な解放状態（未使用状態）に切り替えられるものの、そのファイルのデータは、格納したままとなっている。なお、解放状態のディスクブロックは、ディスクの空き領域に含まれるため、ゴミ箱への廃棄とは異なり、ディスクの空き領域は増えている。
【０００４】
近年では、このようなファイルシステムの特性を利用して削除ファイルを復元させるファイル復元ツールが、開発されている。ファイル復元ツールは、基本的には、消去［erase］がなされずに残されているデータをデータ領域の中から探し出し、互いに同一のファ
イルを構成するものとして纏まるべきデータを特定し、特定したファイルデータのディスクブロックとファイル名とを関連付け、そのファイル名を名前空間に生成する。従って、削除したファイルは、そのデータが上書きされずにデータ領域に残ってさえいれば、復元することができる。
【０００５】
そのファイルの復元は、復元の必要性が生じて初めて行われる。復元の必要性が生じなければ、何れ、削除したファイルの存在すらも忘れ去れることになる。その復元の必要性は、多くの場合、ファイルを削除して然程時間が経ってないうちに生じる。そのため、実用上、ファイルは、削除されてから暫くの間は、ディスク内に保存されている方が望ましい。
【０００６】
しかしながら、ファイルシステムは、データ領域において解放状態にあるディスクブロックに対し、そのディスクブロックに残されているデータの事情を考慮せずに、データを上書きするようになっている。従って、削除してかなりの時間が経過していて復元の必要性が殆どないファイルのデータが依然として残されているにも拘わらず、削除して然程時間が経っていないファイルの復元が、そのファイルのデータの一部又は全てが既に別のファイルのデータの上書きによって消去されていて、復元できないこともある。
【０００７】
なお、特許文献１には、記憶媒体の空き領域を確保するためのツールが、開示されている。このツールは、何れかのファイルの書き込み時において大容量の記憶媒体の空き領域が不足していた場合に、参照された日にちが古いファイルをその大容量の記憶領域から退
避用の記憶媒体に退避して大容量の記憶媒体の空き領域を確保するとともに、何れかのファイル参照時にそのファイルが大容量の記憶媒体に存在しなかった場合に、そのファイルを退避用の記憶媒体から大容量の記憶媒体に戻すというものである。このツールによれば、プログラムを中断せずとも大容量の記憶媒体へのファイルの書き込みが可能となるが、削除して然程時間が経っていないファイルほど復元できるというものではない。
【０００８】
【非特許文献１】“ファイルとは何か（含むディレクトリ）”、［online］、香川大学、［平成１９年５月２４日検索］、インターネット＜ＵＲＬ：http://stwww.eng.kagawa-u.ac.jp/~imai/H17ComputerSystem/file-directory.html＞
【特許文献１】特開平０３−０７８０４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、前述したような従来技術の有する問題点に鑑みてなされたものであり、その課題は、削除して然程時間が経っていないファイルを復元できるようにすることにある。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために案出されたファイル管理装置は、ファイルとその階層的な分類の体系である名前空間の管理、ファイル名とそのデータが格納されているデータ領域内のディスクブロックとの対応付けの管理、及び、アプリケーションからのファイルアクセスの制御を行うため、何れかのファイルの削除をアプリケーションから受け付ける第１の受付部、その第１の受付部がファイルの削除を受け付けると、そのファイル名を名前空間から削除する第１の削除部、第１の受付部がファイルの削除を受け付けると、そのファイルを特定するためのファイル識別情報とファイルパスと削除日時とを対応付けたレコードをキューテーブルに登録する登録部、所定のイベントが発生すると、キューテーブルから、削除日時からその時点までの保存期間が所定の上限値を超過しているレコードを、抽出する抽出部、保存期間が所定の上限値を超過しているレコードを抽出部が抽出すると、そのレコード内のファイル識別情報にて特定されるファイルとデータ領域内のディスクブロックとの対応付けを解除して、そのファイルのデータが格納されているディスクブロックを解放する解放部、抽出部が抽出したレコードをキューテーブルから削除する第２の削除部、削除済のファイルの復元とファイルパスとを操作者から受け付ける第２の受付部、その第２の受付部が削除済のファイルの復元とファイルパスとを操作者から受け付けると、そのファイルパス内のディレクトリパスを検索条件として、キューテーブルを検索する検索部、及び、その検索部がレコードを検出した場合に、そのレコード内のファイル識別情報にて特定されるファイルを、当該ディレクトリパスにて特定されるディレクトリに生成する復元部を備えることを、特徴としている。
【００１１】
このように構成されると、アプリケーションから削除が要求されたファイルは、名前空間からは削除されるが、その代わり、削除日時とともにキューテーブルに登録され、そのファイルのデータが格納されたディスクブロックは、保護されたままとなる。そして、所定のイベントが発生すると、保存期間が所定の上限値を超過したファイルの有無が確認され、保存期間が所定の上限値を超過したファイルがあれば、そのファイルのデータが格納されているディスクブロックが解放され、そのファイルは、キューテーブルから削除される。また、そのファイルの当時のファイルパスが指定されてそのファイルの復元が要求されると、そのファイルパス内のディレクトリパスに基づいてそのファイルがキューテーブルに登録されているか否かが検索され、検出されれば、そのファイルはそのディレクトリパスにて特定されるディレクトリに生成される。
【００１２】
換言すると、削除が要求されたファイルは、名前空間からは削除され、名目上削除された状態になるものの、そのデータは一定期間保護され、その一定期間の経過後に、上書き
され得る状態になる。また、その一定期間内に復元が要求されれば、そのファイルは名前空間に復元される。
【００１３】
なお、以上の動作は、ファイル管理プログラム又はファイル管理方法によっても実現し得る。すなわち、本発明は、前述したファイル管理装置の各部と同等に機能する複数の手段としてコンピュータを動作させるファイル管理プログラムであってもよいし、それら各部と同等の機能を複数の手順としてコンピュータが実行するファイル管理方法であってもよい。
【発明の効果】
【００１４】
従って、本発明によれば、削除して然程時間が経っていないファイルが復元できるようになる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施するための形態について、添付図面を参照しながら、説明する。
【００１６】
＜構成＞
本実施形態のコンピュータ１０は、図１の構成図に示すように、液晶ディスプレイ等の表示ユニット１０ａと、キーボードやマウス等の入力ユニット１０ｂと、これらユニット１０ａ、１０ｂが接続された本体とからなる。その本体は、ストレージユニット１０ｃと、ＣＰＵ［Central Processing Unit］１０ｄと、メモリユニット１０ｅとを、内蔵して
いる。ストレージユニット１０ｃは、各種のプログラムやデータを読書自在にディスクに記憶するユニットである。ＣＰＵ１０ｄは、ストレージユニット１０ｃ内のプログラムに従って処理を行うユニットである。メモリユニット１０ｅは、ＣＰＵ１０ｄがプログラムやデータをキャッシュしたり作業領域を展開したりするユニットである。
【００１７】
また、本実施形態のコンピュータ１０は、ストレージユニット１０ｃに、各種のアプリケーション（ソフトウエア）１１、オペレーティングシステムソフトウエア１２、各種のデバイスドライバ（プログラム）１３を、記憶している。アプリケーション１１は、或る機能を実現するためのプログラム及びデータの集合である。オペレーティングシステムソフトウエア１２は、各種アプリケーションへのＡＰＩ［Application Programming Interface］やＡＢＩ［Application Binary Interface］の提供、ストレージユニット１０ｃや
メモリユニット１０ｅの記憶領域の管理、プロセスやタスクの管理、ファイル管理や各種設定ツールやエディタといったユーティリティの各種アプリケーション１１への提供、及び、画面出力を多重化するための複数タスクへのウインドウの割り当てを行うためのソフトウエアである。デバイスドライバ１３は、オペレーティングシステムソフトウエア１２からの指示に従って周辺機器を動作させるためのプログラムである。
【００１８】
また、オペレーティングシステムソフトウエア１２は、図２のメモリ展開図に示すように、バーチャルファイルシステム１２ａ、複数のローカルファイルシステム１２ｂ、及び、インターフェース（プログラム）１２ｃを、備えている。このうち、ローカルファイルシステム１２ｂは、ストレージユニット１０ｃ内のディスクに記録されるデータをファイル単位で管理するためのプログラムである。ローカルファイルシステム１２ｂは、少なくとも一つのストレージディスクを管轄し、その管轄するストレージディスク内のファイルについて、ファイルシステムの基本三機能である名前空間管理、ディスクブロック管理、アクセス制御を行う。
【００１９】
なお、名前空間管理は、ファイルとその階層的な分類（ディレクトリ）の体系である名前空間の管理を言い、ディスクブロック管理は、ファイルの名称とそのファイルを構成するデータが格納されているストレージディスク内のディスクブロックとの対応付けの管理
を言う。これら名前空間管理とディスクブロック管理のためとに用いられる管理情報は、一般にメタデータと称されており、このメタデータ１２ｄは、ローカルファイルシステム１２ｂによって、ストレージディスク内のファイルデータ領域以外の領域に格納されている。また、アクセス制御は、アプリケーション１１からのファイルアクセス（ファイル操作の要求）に基づくディスクブロックに対するファイルの読出、書き込み、削除の実行制御と、アクセス権の排他制御とを言う。
【００２０】
このローカルファイルシステム１２ｂには、そのメタデータの形態及びファイルのデータの形態、或いは、それらの管理方法の相違に応じて幾つかの種類が存在する。異なる種類のローカルファイルシステム１２ｂ同士は、互いのストレージディスク上のフォーマットが異なるため、同一のストレージディスクを管轄することはできない。本実施形態では、複数のストレージユニット１０ｃをそれぞれ管理するために複数種類のローカルファイルシステム１２ｂがオペレーティングシステムソフトウエア１２に実装されているが、アプリケーション１１がローカルファイルシステム１２ｂの種類に応じてシステムコールを使い分けなくても済むように、オペレーティングシステムソフトウエア１２には、バーチャルファイルシステム１２ａが実装されている。このバーチャルファイルシステム１２ａは、アプリケーション１１からのファイルアクセスの要求を統一的なシステムコールで受け付け、アクセスが要求されたファイルを管理するローカルファイルシステム１２ｂの固有な処理を識別して、そのローカルファイルシステム１２ｂに引き渡すようになっている。また、デバイスドライバ１３は、ストレージユニット１０ｃの製造者や製品型に応じてコマンドやデータの形態が異なる。そのため、オペレーティングシステムソフトウエア１２は、インターフェース１２ｃを実装している。インターフェース１２ｃは、ローカルファイルシステム１２ｂとストレージユニット１０ｃのデバイスドライバ１３との間でＩ／Ｏ［Input/Output］のための情報の橋渡しをする。
【００２１】
本実施形態では、各ローカルファイルシステム１２ｂには、本発明に係る機能が組み込まれている。図３の説明図に示すように、各ローカルファイルシステム１２ｂは、従来機能として、アクセス制御モジュール（プログラム）２１、名前空間管理モジュール２２、及び、ディスクブロック管理モジュール２３を含んでいるとともに、本発明に係る機能として、削除ファイル管理モジュール２４を含んでいる。なお、アクセス制御モジュール２１、名前空間管理モジュール２２、及び、ディスクブロック管理モジュール２３は、前述したアクセス制御、名前空間管理、及び、ディスクブロック管理を各々行うモジュールプログラムである。
【００２２】
これらアクセス制御モジュール２１、名前空間管理モジュール２２、及び、ディスクブロック管理モジュール２３の動作をより具体的に説明するため、ｅｘｔ［Extended File System］系のディスクフォーマットを図３に例示している。図３に例示したディスクフォーマットでは、ストレージユニット１０ｃ内のディスクは、幾つかのパーティションに分けられており、一つのパーティション内は、ブート領域と幾つかのブロックグループとに分けられている。ブート領域は、パーティションテーブルの検査などを行うブートローダが格納された領域であり、ブロックグループは、一つのパーティション内のブロックを所定個ずつのグループに分けたときの一つのブロックグループが占める領域である。さらに、一つのブロックグループは、メタデータ領域２５とファイルデータ領域２６とに分けられている。ファイルデータ領域２６は、通常のファイルとディレクトリ（に関する情報が格納されたファイル）とが記録される領域である。メタデータ領域２５は、メタデータ１２ｄが記録される領域である。なお、このように１つのパーティションを幾つかのブロックグループに分けて、各ブロックグループにメタデータ領域２５とファイルデータ領域２６とを設定することは、図３に例示したｅｘｔ系のファイルシステム、及び、Ｓｏｌａｒｉｓ（米国サンソフト社商標）というオペレーティングシステムの主要なファイルシステムであるＵＦＳ［UNIX File System］（UNIXはジオープングループの商標）で、行われて
いる。本発明は、このような１つのパーティションを複数のブロックグループ（ＵＦＳではシリンダグループ）に分ける（ローカル）ファイルシステムに限らず、１つのパーティション内にブート領域とメタデータ領域とファイルデータ領域とを備える（ローカル）ファイルシステムにも適用できる。なお、その種のファイルシステムとしては、例えば、PRIMECLUSTER GFS（富士通社商標）がある。
【００２３】
図３に例示したｅｘｔ系のディスクフォーマットについて更に説明すると、メタデータ領域２５は、図４のレイアウト図に示すように、スーパーブロック、グループディスクリプタ領域、ブロックビットマップ領域、ｉノードビットマップ領域、及び、ｉノードテーブル領域に分けられる。ｉノードテーブル領域は、ファイルデータ領域２６に格納された複数のファイル（ディレクトリに係るファイルを含む）の属性情報が格納される領域である。このｉノードテーブル領域には、ファイルの属性情報を格納するためのｉノードが、所定個用意されており、各ｉノードは、並べて配置されている。従って、この領域内の各ｉノードは、概念的にｉノードテーブル２５ａを構成している。ファイルデータ領域２６内の各ファイルには、このｉノードテーブル２５ａから一つのｉノードが割り当てられる。なお、ｉノードに格納されるファイルの属性情報としては、ｉノード番号（ＩＤ［Identification］）、パーミッション、オーナー、ファイルサイズ、修正日時、ポインタ（ファイルデータ領域２６内の対応するファイル（又はディレクトリ）が格納されているディスクブロックの番号）などがある。但し、図４に示すｉノードテーブル２５ａでは、ｉノード番号（ＩＤ）とポインタが記録されるフィールドが示され、その他のフィールドは図示を省略している。また、ルートディレクトリには、ｉノード番号（ＩＤ）が２番のｉノードが割り当てられ、サブディレクトリには、３番以降のｉノードが割り当てられている。なお、ディレクトリ（に関する情報が格納されたファイル）には、そのディレクトリに所属するサブディレクトリ又はファイルの名称とそれに割り当てられているｉノードのｉノード番号（ＩＤ）とが、対応付けられた状態で、ディレクトリエントリとして格納されている。ｉノードビットマップ領域は、ｉノードテーブル２５ａ上の各ｉノードに対するファイル割り当ての有無が記録される領域である。ブロックビットマップ領域は、ファイルデータ領域２６内の各ディスクブロックに対するデータ格納の有無が記録される領域である。グループディスクリプタ領域は、０番のブロックグループだけが持つ領域で、ブロックグループ内に関する情報が記録される領域である。スーパーブロックは、ｉノード数、ブロック数、空きブロック数、空きｉノード数など、そのローカルファイルシステム１２ｂの基本的な属性に関する情報が記録される領域である。
【００２４】
図３に示したアクセス制御モジュール２１は、アプリケーション１１からファイル読出又はファイル書き込みが要求されると、名前空間管理モジュール２２とディスクブロック管理モジュール２３とに処理対象のファイルとそのファイルのデータが格納されているディスクブロックの番号とを照会し、特定されたディスクブロックに対し、ファイルデータの読出と書き込みとを行うようになっている。また、アクセス制御モジュール２１は、アプリケーション１１からファイルの削除が要求された場合には、削除ファイル管理モジュール２４にその旨通知するようになっている。
【００２５】
名前空間管理モジュール２２は、アクセス制御モジュール２１からファイルの照会を受けると、メタデータ１２ｄ内のｉノードテーブル２５ａとそれにポインティングされている各ディレクトリ（に関する情報が格納されたファイル）とに基づいてファイルパスから処理対象のファイルを特定するようになっている。また、名前空間管理モジュール２２は、ファイル名やディレクトリ名の変更、又は、ファイルの所属先（ディレクトリ）の変更がアクセス制御モジュール２１から指示されると、それら変更を名前空間に反映する処理を行うようになっている。
【００２６】
ディスクブロック管理モジュール２３は、アクセス制御モジュール２１からディスクブ
ロックの照会を受けると、メタデータ１２ｄ内のｉノードテーブル２５ａにおいて処理対象ファイルのポインタをアクセス制御モジュール２１に通知するようになっている。また、ディスクブロック管理モジュール２３は、ファイルの書き込みがアクセス制御モジュール２１に指示されると、そのファイルの名称とそのファイルを構成するデータが格納されているストレージディスク内のディスクブロックとの対応付けを変更する処理を行うようになっている。
【００２７】
なお、一般的に、メタデータ１２ｄは、ストレージユニット１０ｃ内のディスクのメタデータ領域２５から、メモリユニット１０ｅ上にキャッシュされるようになっている。アプリケーション１１がファイルアクセスを行った場合には、名前空間管理モジュール２２及びディスクブロック管理モジュール２３は、メモリユニット１０ｅ上のメタデータ１２ｄに対して更新を行う。そのメモリユニット１０ｅ上のメタデータ１２ｄは、アプリケーション１１からの要求、又は、定期的に、ストレージユニット１０ｃ内のディスクのメタデータ領域２５に反映されるようになっている。
【００２８】
更に、図３に示した本発明に係る削除ファイル管理モジュール２４は、後ほど詳述するように、ファイルの削除の遅延と実行とを制御するとともに、ファイルの復元の指示を受けて復元可否の判断と実行とを制御するモジュールプログラムである。この削除ファイル管理モジュール２４は、図５の構成図に示すように、削除受付プログラム２４ａ、空きブロック確保プログラム２４ｂ、ブロック解放制御プログラム２４ｃ、復元プログラム２４ｄ、キューテーブル２４ｅ、空きブロック数記憶領域２４ｆを、含んでいる。
【００２９】
削除受付プログラム２４ａは、アプリケーション１１からファイル削除の指示を受け付けたアクセス制御モジュール２１からの通知を受けて、削除ファイルをキューテーブル２４ｅに登録するためのプログラムである。この削除受付プログラム２４ａに従ってＣＰＵ１０ｄが実行する処理の内容については、図７を用いて後述する。
【００３０】
空きブロック確保プログラム２４ｂは、アプリケーション１１からファイル書き込みの指示を受け付けたアクセス制御モジュール２１からの通知を受けて、ファイルデータ領域２６の空きブロックを確保するためのプログラムである。この空きブロック確保プログラム２４ｂに従ってＣＰＵ１０ｄが実行する処理の内容については、図８を用いて後述する。
【００３１】
ブロック解放制御プログラム２４ｃは、キューテーブル２４ｅに登録したファイルのデータが格納されているディスクブロックの解放の可否を判断して実行するためのプログラムである。このブロック解放制御プログラム２４ｃに従ってＣＰＵ１０ｄが実行する処理の内容については、図９及び図１０を用いて後述する。
【００３２】
復元プログラム２４ｄは、アプリケーション１１からファイル復元の指示を受け付けたアクセス制御モジュール２１からの通知を受けて、そのファイルのキューテーブル２４ｅへの登録を抹消するためのプログラムである。この復元プログラム２４ｄに従ってＣＰＵ１０ｄが実行する処理の内容については、図１１を用いて後述する。
【００３３】
キューテーブル２４ｅは、アプリケーション１１から削除が要求されたファイルを登録しておくためのテーブルである。図６のテーブル構造図に示すように、キューテーブル２４ｅ内の各レコードは、「キュー番号」、「ｉノード番号」、「ファイルパス」及び「削除日時」の各フィールドを、有している。「キュー番号」フィールドは、そのファイルの順番を特定するキュー番号が記録されるフィールドである。「ｉノード番号」フィールドは、そのファイルに割り当てられているｉノードのｉノード番号（ＩＤ）が記録されるフィールドである。「ファイルパス」フィールドは、そのファイルの削除直前のファイルパ
スが記録されるフィールドである。「削除日時」フィールドは、そのファイルについてアプリケーション１１が削除を指示した時点の日時が記録されるフィールドである。
【００３４】
空きブロック数記憶領域２４ｆは、空きブロック数が記録される領域であり、メモリユニット１０ｅ上に生成される。なお、この空きブロック数記憶領域２４ｆは、ローカルファイルシステムがストレージユニット１０ｃ内のディスクからメモリユニット１０ｅ上に複製したメタデータ１２ｄの内部にあっても良い。ローカルファイルシステム１２ｄが図３で例示したｅｘｔ系のファイルシステムである場合、空きブロック数記憶領域２４ｆは、メモリユニット１０ｅに複製（キャッシュ）されたメタデータ１２ｄのスーパーブロック内に、生成される。
【００３５】
また、空きブロック数記憶領域２４ｆには、２種類の空きブロック数が記録される。一方の内部向け空きブロック数は、一般的にメタデータ領域２５に記録される空きブロック数であり、ファイルデータ領域２６において未使用状態になっているディスクブロックの数に一致するものである。他方の外部向け空きブロック数は、ファイルデータ領域２６において未使用状態になっているディスクブロックの数と、キューテーブル２４ｅに登録されるファイルが格納されているディスクブロックの数とを合算した数に、一致している。
【００３６】
＜処理＞
オペレーティングシステムソフトウエア１２内のファイルシステムに係るプログラム１２ａ〜１２ｃが起動されると、図５に示した各プログラム２４ａ〜２４ｄのうち、ブロック解放制御プログラム２４ｃの実行が開始されてブロック解放制御プロセスが生成されるとともに、キューテーブル２４ｅと空きブロック数記憶領域２４ｆがメモリユニット１０ｅ上に生成されるようになっている。なお、ブロック解放制御プログラム２４ｃ以外のプログラム２４ａ、２４ｂ、２４ｄは、操作者の指示に基づいて起動されるいわゆるユーザプロセスからの要求に従って実行されるようになっている。
【００３７】
（削除処理）
まず、アクセス制御モジュール２１が、アプリケーション１１から（バーチャルファイルシステム１２ａを介して）削除指示を受け付けると、それを契機として、削除受付プログラム２４ａを起動させる。削除受付プログラム２４ａの開始後、図７の流れ図に示すように、ＣＰＵ１０ｄは、ステップＳ１０１において、アクセス制御モジュール２１から、削除すべきとして指定されたファイルのファイルパスを受け取る。なお、このステップＳ１０１を実行するＣＰＵ１０ｄは、前述した第１の受付部及び第１の受付手段に相当する。
【００３８】
次のステップＳ１０２では、ＣＰＵ１０ｄは、ステップＳ１０１で受け取ったファイルパスからディレクトリパスを読み出し、そのディレクトリパスにて特定されるディレクトリから、削除が指定されたファイルのディレクトリエントリを削除するよう、名前空間管理モジュール２２に指示する。なお、このステップＳ１０２を実行するＣＰＵ１０ｄは、前述した第１の削除部及び第１の削除手段に相当している。
【００３９】
次のステップＳ１０３では、ＣＰＵ１０ｄは、空きブロック数記憶領域２４ｆ内に記録される外部向け空きブロック数を、削除が指定されたファイルが格納されているディスクブロックの数だけ増加させることによって、更新する。
【００４０】
次のステップＳ１０４では、ＣＰＵ１０ｄは、図６のキューテーブル２４ｅの末尾に、削除が指定されたファイルに係るレコードを、登録する。なお、このステップＳ１０４を実行するＣＰＵ１０ｄは、前述した登録部及び登録手段に相当している。
【００４１】
次のステップＳ１０５では、ＣＰＵ１０ｄは、ブロック解放制御（プログラムに基づく）プロセス２４ｃに、実行開始を指示する。その後、ＣＰＵ１０ｄは、図７に係る削除受付処理を終了する。
【００４２】
この削除受付プログラム２４ａにより、ファイルの削除がアプリケーション１１によって要求されると、そのファイルは、名前空間から削除され（ステップＳ１０２）、キューテーブル２４ｅに登録されるとともに（ステップＳ１０４）、空きブロック数記憶領域２４ｆ内の外部向け空きブロック数が、そのファイルの分だけ増加する（ステップＳ１０３）。但し、空きブロック数記憶領域２４ｆ内の内部向け空きブロック数は、増加しない。
【００４３】
（空きブロック確保処理）
また、アクセス制御モジュール２１が、アプリケーション１１から（バーチャルファイルシステム１２ａを介して）書き込み指示を受け付けると、それを契機として、空きブロック確保プログラム２４ｂを起動させる。空きブロック確保プログラム２４ｂの開始後、図８の流れ図に示すように、ＣＰＵ１０ｄは、ステップＳ２０１において、ファイルの書き込みに必要なブロック数を、ディスクブロック管理モジュール２３に問い合わせる。そして、ＣＰＵ１０ｄは、そのディスクブロック管理モジュール２３から、書き込みに必要なブロック数を取得すると、次のステップＳ２０２へ処理を進める。
【００４４】
ステップＳ２０２では、ＣＰＵ１０ｄは、空きブロック数記憶領域２４ｆから内部向け空きブロック数を読み出す。
【００４５】
次のステップＳ２０３では、ＣＰＵ１０ｄは、ステップＳ２０２で読み出した内部向け空きブロック数が、ステップＳ２０１で取得した必要ブロック数以上であるか否かを、判別する。そして、内部向け空きブロック数が、ステップＳ２０１で取得した必要ブロック数未満であった場合、ＣＰＵ１０ｄは、ステップＳ２０３からステップＳ２０４へ処理を分岐させる。
【００４６】
ステップＳ２０４では、ＣＰＵ１０ｄは、ブロック解放制御（プログラムに基づく）プロセス２４ｃに、実行開始を指示する。
【００４７】
次のステップＳ２０５では、ＣＰＵ１０ｄは、ブロック解放制御プロセス２４ｃから実行終了通知があるまで、待機する。そして、実行終了通知があると、ＣＰＵ１０ｄは、ステップＳ２０２へ処理を戻す。
【００４８】
一方、ステップＳ２０３において、ステップＳ２０２で読み出した内部向け空きブロック数が、ステップＳ２０１で取得した必要ブロック数以上であった場合、ＣＰＵ１０ｄは、ステップＳ２０３からステップＳ２０６へ処理を進める。
【００４９】
ステップＳ２０６では、ＣＰＵ１０ｄは、ファイル書き込みの継続（と、その書き込みに必要なディスクブロックの割当と）を、アクセス制御モジュール２１に指示する。その後、ＣＰＵ１０ｄは、図８に係る空きブロック確保処理を終了する。
【００５０】
この空きブロック確保プログラム２４ｂにより、ファイルの書き込みがアプリケーション１１によって要求されると、そのファイルの書き込みが中断され、その間に、空きブロック数記憶領域２４ｆ内の内部向け空きブロック数が、書き込みに必要な量以上であるか否かが、確認される（ステップＳ２０３）。そして、内部向け空きブロック数が、書き込みに必要は量以上であれば、そのままファイルの書き込みが継続され（ステップＳ２０６）、内部向け空きブロック数が、書き込みに必要な量を下回っていれば、ブロック解放制御プロセス２４ｃを実行させて内部向け空きブロック数を確保してから（ステップＳ２０
４、Ｓ２０５）、ファイルの書き込みが継続される（ステップＳ２０６）。
【００５１】
（ブロック解放処理）
また、ブロック解放制御プロセス２４ｃでは、図９及び図１０の流れ図に示すように、ＣＰＵ１０ｄは、まず、ステップＳ３０１において、削除受付プログラム２４ａ又は空きブロック確保プログラム２４ｂから実行開始指示があったか否かを、判別する。そして、その実行開始指示がなかった場合、ＣＰＵ１０ｄは、ステップＳ３０１からステップＳ３０２へ処理を分岐させる。
【００５２】
ステップＳ３０２では、ＣＰＵ１０ｄは、当該プロセス２４ｃの開始後、又は、前回の時間計測終了後から、所定時間が経過したか否かを、判別する。そして、当該プロセス２４ｃの開始後、又は、前回の時間計測終了後から、所定時間が経過していなかった場合、ＣＰＵ１０ｄは、ステップＳ３０２から処理を分岐させ、ステップＳ３０１へ処理を戻す。
【００５３】
これらステップＳ３０１及びＳ３０２の処理ループの実行中、削除受付プロセス２４ａ又は空きブロック確保プロセス２４ｂから実行開始指示があった場合、又は、当該プログラム２４ｃを開始してから所定時間が経過した場合、ＣＰＵ１０ｄは、ステップＳ３０３へ処理を進める。
【００５４】
これらステップＳ３０１及びＳ３０２の処理ループの実行中、当該プロセス２４ｃの開始後、又は、前回の時間計測終了後から、所定時間が経過した場合も、ＣＰＵ１０ｄは、ステップＳ３０３へ処理を進める。
【００５５】
ステップＳ３０３では、ＣＰＵ１０ｄは、検索条件なしで、図６のキューテーブル２４ｅを検索する。
【００５６】
次のステップＳ３０４では、ＣＰＵ１０ｄは、キューテーブル２４ｅからレコードが検出できたか否かを、判別する。そして、キューテーブル２４ｅにレコードが一つも検出できなかった（登録されていなかった）場合、ＣＰＵ１０ｄは、ステップＳ３０４からステップＳ３１３へ処理を分岐させる。一方、キューテーブル２４ｅからレコードが一つ以上検出できた場合、ＣＰＵ１０ｄは、第１の処理ループＬ１を実行する。
【００５７】
第１の処理ループＬ１では、ＣＰＵ１０ｄは、図６のキューテーブル２４ｅから検出したレコードに対し、一つずつ先頭から順に、ステップＳ３０５乃至Ｓ３１２の処理を、実行する。
【００５８】
ステップＳ３０５では、ＣＰＵ１０ｄは、処理対象のレコード内の削除日時と、この時点での日時とから、保存期間を算出する。
【００５９】
次のステップＳ３０６では、ＣＰＵ１０ｄは、ステップＳ３０５で算出した保存期間が所定の上限値を超過しているか否かを、判別する。そして、保存期間が所定の上限値を超過していた場合、ＣＰＵ１０ｄは、ステップＳ３０６からステップＳ３０９へ処理を進める。一方、保存期間が所定の上限値以下であった場合、ＣＰＵ１０ｄは、ステップＳ３０６からステップＳ３０７へ処理を分岐させる。
【００６０】
ステップＳ３０７では、ＣＰＵ１０ｄは、空きブロック数記憶領域２４ｆから内部向け空きブロック数を読み出す。
【００６１】
次のステップＳ３０８では、ＣＰＵ１０ｄは、ステップＳ３０７で読み出した内部向け
空きブロック数が所定の下限値以上であるか否かを、判別する。そして、内部向け空きブロック数が所定の下限値以上であった場合、ＣＰＵ１０ｄは、この処理対象以降の残りのレコードに対する第１の処理ループＬ１を行うことなく第１の処理ループＬ１から離脱し、図９のステップＳ３１３へ処理を進める。一方、内部向け空きブロック数が所定の下限値未満であった場合、ＣＰＵ１０ｄは、ステップＳ３０８からステップＳ３０９へ処理を分岐させる。なお、これらステップＳ３０１乃至Ｓ３０９を実行するＣＰＵ１０ｄは、前述した抽出部及び抽出手段に相当している。
【００６２】
ステップＳ３０９では、ＣＰＵ１０ｄは、処理対象レコードにて特定されるファイルへのｉノードの割り当てを解除するよう、名前空間管理モジュール２２に指示する。なお、この指示を受けた名前空間管理モジュール２２は、メタデータ領域のｉノードテーブル領域から当該ファイルに関する情報を削除することとなる。
【００６３】
次のステップＳ３１０では、ＣＰＵ１０ｄは、処理対象レコードにて特定されるファイルのデータが格納されているディスクブロックを解放するよう、ディスクブロック管理モジュール２３に指示する。なお、この指示を受けたディスクブロック管理モジュール２３は、メタデータ領域のブロックビットマップ領域を更新することとなる。なお、このステップＳ３１０を実行するＣＰＵ１０ｄは、前述した解放部及び解放手段に相当している。
【００６４】
次のステップＳ３１１では、ＣＰＵ１０ｄは、空きブロック数記憶領域２４ｆ内の内部向け空きブロック数を、処理対象レコードにて特定されるファイルが格納されていたディスクブロックの数だけ増加させることによって、更新する。
【００６５】
次のステップＳ３１２では、ＣＰＵ１０ｄは、処理対象レコードを図６のキューテーブル２４ｅから削除し、処理対象レコードより後にあったレコードを繰り上げる。その後、ＣＰＵ１０ｄは、処理対象レコードに対する第１の処理ループＬ１の実行を終了する。なお、このステップＳ３１２を実行するＣＰＵ１０ｄは、前述した第２の削除部に相当している。
【００６６】
ＣＰＵ１０ｄは、以上に説明したステップＳ３０５乃至Ｓ３１２の処理を、図６のキューテーブル２４ｅから検出した全てのレコードに対して実行し終えると、第１の処理ループＬ１から離脱し、図９のステップＳ３１３へ処理を進める。
【００６７】
ステップＳ３１３では、ＣＰＵ１０ｄは、実行終了通知が必要であるか否かを、判別する。そして、実行終了通知が必要でなかった場合、ＣＰＵ１０ｄは、ステップＳ３１３から処理を分岐させ、図９及び図１０に係るブロック解放制御処理を終了する。一方、実行終了通知が必要であった場合、ＣＰＵ１０ｄは、ステップＳ３１３からステップＳ３１４へ処理を進める。
【００６８】
ステップＳ３１４では、ＣＰＵ１０ｄは、実行開始を指示してきたプロセスに対し、実行終了を通知する。その後、ＣＰＵ１０ｄは、図９及び図１０に係るブロック解放制御処理を終了する。
【００６９】
なお、ブロック解放制御プログラム２４ｃは、終了後、直ちに実行が開始され、実行開始指示を受けるか所定時間が経過するまで、待機する状態になる。
【００７０】
このブロック解放制御プログラム２４ｃにより、図６のキューテーブル２４ｅに登録されているレコードについて、先頭から順にその保存期間が確認され、保存期間が所定の上限値を超過している場合、或いは、保存期間が所定の上限値以下であっても空きブロック数記憶領域２４ｆ内の内部向け空きブロック数が所定の下限値を下回っている場合に、先
レコードが特定される（ステップＳ３０５〜Ｓ３０８）。そして、特定されたレコードに係るファイルは、その属性情報がｉノードテーブル２５ａから削除されるとともに（ステップＳ３０９）、そのファイルのデータが格納されていたディスクブロックが解放されることにより（ステップＳ３１０）、完全に削除された状態になる。つまり、削除受付プログラム２４ａにより名前空間からは既に削除されているファイルは、このブロック解放制御プロセス２４ｃによって削除すべきであると判断されると（ステップＳ３０６；はい、又は、ステップＳ３０８；いいえ）、ファイルデータ領域２６からも完全に削除されることとなる。
【００７１】
（復元処理）
また、アクセス制御モジュール２１が、アプリケーション１１から（バーチャルファイルシステム１２ａを介して）復元指示を受け付けると、それを契機として、復元プログラム２４ｄを起動させる。復元プログラム２４ｄの開始後、図１１の流れ図に示すように、ＣＰＵ１０ｄは、ステップＳ４０１において、アクセス制御モジュール２１から、復元すべきとして指定されたファイルのファイルパスを受け取る。
【００７２】
次のステップＳ４０２では、ＣＰＵ１０ｄは、ステップＳ４０１で取得したファイルパスからディレクトリパスを読み出し、そのディレクトリパスを、名前空間管理モジュール２２に照会する。
【００７３】
次のステップＳ４０３では、ＣＰＵ１０ｄは、ステップＳ４０２での照会の結果がディレクトリパス有りであったか否かを、判別する。そして、照会の結果がディレクトリパス無しであった場合、ＣＰＵ１０ｄは、ステップＳ４０３から処理を分岐させ、図１１に係る復元処理を終了する。一方、照会の結果がディレクトリパス有りであった場合、ＣＰＵ１０ｄは、ステップＳ４０３からステップＳ４０４へ処理を進める。
【００７４】
ステップＳ４０４では、ＣＰＵ１０ｄは、ステップＳ４０１で通知とともにアクセス制御モジュール２１から受け取ったファイルパスを検索条件として、図６のキューテーブル２４ｅを検索する。
【００７５】
次のステップＳ４０５では、ＣＰＵ１０ｄは、ステップＳ４０４の検索の結果、レコードが検出できたか否かを、判別する。そして、レコードが検出できなかった場合、ＣＰＵ１０ｄは、ステップＳ４０５から処理を分岐させ、図１１に係る復元処理を終了する。一方、レコードが検出できた場合、ＣＰＵ１０ｄは、ステップＳ４０５からステップＳ４０６へ処理を進める。なお、これらステップＳ４０２乃至Ｓ４０５を実行するＣＰＵ１０ｄは、前述した検索部及び検索手段に相当している。
【００７６】
ステップＳ４０６では、ＣＰＵ１０ｄは、検出レコード内のｉノード番号（ＩＤ）とファイルパス内のファイル名とに基づいて、ステップＳ４０２で照会したディレクトリパスにて特定されるディレクトリ（に関する情報が格納されたファイル）に、当該ファイルのディレクトリエントリを生成するよう、名前空間管理モジュール２２に指示する。なお、このステップＳ４０６を実行するＣＰＵ１０ｄは、前述した復元部及び復元手段に相当している。
【００７７】
次のステップＳ４０７では、ＣＰＵ１０ｄは、空きブロック数記憶領域２４ｆに記録されている外部向け空きブロック数を、復元が指定されたファイルが格納されているディスクブロックの数だけ減少させることによって、更新する。
【００７８】
次のステップＳ４０８では、ＣＰＵ１０ｄは、図６のキューテーブル２４ｅから、検出レコードを削除し、そのレコードより後にあったレコードを繰り上げる。その後、ＣＰＵ
１０ｄは、図１１に係る復元処理を終了する。
【００７９】
この復元プログラム２４ｄにより、ファイルの復元がアプリケーション１１によって要求されると、削除直前のファイルパス内のディレクトリパスが存在するか確認され（ステップＳ４０３）、そのファイルがキューテーブル２４ｅに登録されているか確認され（ステップＳ４０４及びＳ４０５）、その後、そのファイル名が、名前空間に生成され（ステップＳ４０６）、外部向け空きブロック数がそのファイルの分だけ減少され（ステップＳ４０７）、そのファイルのキューテーブル２４ｅへの登録が抹消される（ステップＳ４０８）。
【００８０】
＜作用＞
図１２は、図４に示したディレクトリの内容に基づいたディレクトリツリーを示している。例えば、アプリケーション１１を通じて、ファイルパスが「/A/C/sample1.exe」であるファイルの削除を指示すると、削除受付プログラム２４ａによって、そのファイルが、図６に示すようにキューテーブル２４ｅに登録され、図１３に示すように、そのファイルのディレクトリエントリが削除され、ディレクトリツリーは、図１４のようになる。但し、図１３に示すように、そのファイルには、依然として、ｉノードが割り当てられている。
【００８１】
その後、キューテーブル２４ｅ内のレコードの存続は、削除受付プログラム２４ａ又は空きブロック確保プログラム２４ｂにより、何れかのファイルの削除又は書き込みが合ったとき、又は、一定期間が経過することを契機ととして、見直される。そして、ブロック解放制御プロセス２４ｃにより、削除が指示されてから一定期間が経過しているか、ファイルデータ領域２６の空き容量が少なくなると、キューテーブル２４ｅ内のレコードは、古いものから順に、削除される。例えば、ファイルパスが「/A/C/sample1.exe」であるファイルに係るレコードがキューテーブル２４ｅから削除されると、図１５に示すように、そのファイルへのｉノードの割り当てが解除され、そのファイルのデータが格納されていたディスクブロックは、上書きにより消去［erase］され得る状態になり、当該ファイル
の削除［delete］が完了することとなる。
【００８２】
また、キューテーブル２４ｅ内のレコードが削除される前に、削除指示直前のファイルパスが「/A/C/sample1.exe」であるファイルについて、アプリケーション１１を通じて、復元を指示すると、復元プロセス２４ｄによって、「/A/C/」のディレクトリパスの有無
が確認され、「/A/C/sample1.exe」を含むレコードがキューテーブル２４ｅに存在するかが確認される。その後、図１３の状態から図４の状態になるように、ディレクトリエントリが生成され、ディレクトリツリーは、図１４の状態から図１２の状態に復元されることとなる。
【図面の簡単な説明】
【００８３】
【図１】本実施形態のコンピュータの構成図
【図２】ファイルシステムに係るプログラムのメモリ展開図
【図３】ローカルファイルシステムの構成とデータレイアウトを示す説明図
【図４】詳細なデータレイアウトを示す図
【図５】削除ファイル管理モジュールの構成図
【図６】キューテーブルのテーブル構造の一例を示す図
【図７】削除受付処理の流れを示す図
【図８】空きブロック確保処理の流れを示す図
【図９】ブロック解放制御処理の流れを示す図
【図１０】ブロック解放制御処理の流れを示す図
【図１１】復元処理の流れを示す図
【図１２】ディレクトリツリーの一例を示す図
【図１３】ｉノードテーブルとファイルとの関係を示す図
【図１４】ディレクトリツリーの一例を示す図
【図１５】ｉノードテーブルとファイルとの関係を示す図
【符号の説明】
【００８４】
１０    コンピュータ
１０ｃ  ストレージユニット
１０ｅ  メモリユニット
１１    アプリケーション
１２ａ  バーチャルファイルシステム
１２ｂ  ローカルファイルシステム
１２ｃ  インターフェース
１２ｄ  メタデータ
１３    デバイスドライバ
２１    アクセス制御モジュール
２２    名前空間管理モジュール
２３    ディスクブロック管理モジュール
２４    削除ファイル管理モジュール
２４ａ  削除受付プログラム
２４ｂ  空きブロック確保プログラム
２４ｃ  ブロック解放制御プログラム
２４ｄ  復元プログラム
２４ｅ  キューテーブル
２４ｆ  空きブロック数記憶領域
２５    メタデータ領域
２５ａ  ｉノードテーブル
２６    ファイルデータ領域
【図１】
2009110477.tif 000003
【図２】
2009110477.tif 000004
【図３】
2009110477.tif 000005
【図４】
2009110477.tif 000006
【図５】
2009110477.tif 000007
【図６】
2009110477.tif 000008
【図７】
2009110477.tif 000009
【図８】
2009110477.tif 000010
【図９】
2009110477.tif 000011
【図１０】
2009110477.tif 000012
【図１１】
2009110477.tif 000013
【図１２】
2009110477.tif 000014
【図１３】
2009110477.tif 000015
【図１４】
2009110477.tif 000016
【図１５】
2009110477.tif 000017