JP4809663B2 - ファイルシステムと名前空間一貫性を維持するための方法およびシステム - Google Patents

ファイルシステムと名前空間一貫性を維持するための方法およびシステム Download PDF

Info

Publication number
JP4809663B2
JP4809663B2 JP2005326362A JP2005326362A JP4809663B2 JP 4809663 B2 JP4809663 B2 JP 4809663B2 JP 2005326362 A JP2005326362 A JP 2005326362A JP 2005326362 A JP2005326362 A JP 2005326362A JP 4809663 B2 JP4809663 B2 JP 4809663B2
Authority
JP
Japan
Prior art keywords
filter
computer
block
request
namespace
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.)
Expired - Fee Related
Application number
JP2005326362A
Other languages
English (en)
Other versions
JP2006155607A5 (ja
JP2006155607A (ja
Inventor
アール.クリスチャンセン ニール
エス.スィンド ラヴィンデール
サイラス ハヴェワッラ サロシュ
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006155607A publication Critical patent/JP2006155607A/ja
Publication of JP2006155607A5 publication Critical patent/JP2006155607A5/ja
Application granted granted Critical
Publication of JP4809663B2 publication Critical patent/JP4809663B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • G06F16/166File name conversion
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、一般にコンピュータに関し、より詳細には、ファイルシステムに関する。
Windows(登録商標)NTFS(Windows(登録商標)NTファイルシステム)、FAT、CDFS、SMBリダイレクタファイルシステム、またはWebDavファイルシステムなど、基礎となるファイルシステムを用いるMicrosoft CorporationのWindows(登録商標)XPオペレーティングシステムなど現代のオペレーティングシステムの場合、ユーザI/O要求を受け取るI/Oマネージャと、ファイルシステムドライバとの間に、1つまたは複数のファイルシステムフィルタドライバを挿入することができる。一般に、(本明細書では単に「フィルタ」と呼ばれることがある)フィルタドライバは、ファイルシステムI/O(要求およびデータ)を、アンチウィルスソフトウェア、ファイルシステム割当てプロバイダ(file system quota provider)、ファイルレプリケータ(replicator)、暗号化/圧縮製品に通すことなどの諸タスクを含むユーザが望む様々なファイル関連コンピューティングタスクを実行することによって、基礎となるファイルシステムを機能強化するプロセスである。
たとえば、アンチウィルス製品は、ウィルスの特徴(signatures)を探して、あるファイルタイプ(exe、docなど)のI/O往来を注視するフィルタを提供し、一方、ファイル複製製品は、ファイルシステムレベルのミラーリングを実行する。他のタイプのファイルシステムフィルタドライバは、(変更が加えられようとしているときシステムファイルをバックアップし、その結果、ユーザは元の状態に戻ることができる)システム復元、ディスク割当て実施、オープンファイルのバックアップ、削除済みファイルの復旧、ファイルの暗号化などを対象とする。したがって、ファイルシステムフィルタドライバをインストールすることにより、コンピュータユーザは、実際のオペレーティングシステムまたはファイルシステムドライバコードを変更することなしに構成要素のアップグレード、置換え、挿入、除去が可能になる形で、そのユーザが望む、また必要とするファイルシステム機能を選択することができる。
ファイルシステムフィルタは、ボリューム上でファイルおよびディレクトリ用の内部メタデータを維持することができる。フィルタが関連付けられているボリュームに対する変更により、フィルタの内部メタデータがボリュームの状態との同期から外れたものとなる可能性がある。これにより、フィルタが不正確な挙動をする、あるいはその所望の機能を果たせなくなる可能性がある。
ファイルシステムによって維持されている選択されたオブジェクトと、そのオブジェクトに関連付けられたフィルタとの間で名前空間一貫性(namespace consistency)を維持するための方法およびシステムが求められている。
手短に言えば、本発明は、ファイルシステムによって維持されている、選択されたオブジェクトと、そのオブジェクトに関連付けられたフィルタとの間で名前空間一貫性を維持するための方法およびシステムを提供する。あるプロセスが、ファイルシステムの、あるオブジェクトに対するアクセスを要求する。フィルタは、選択されたタイプの要求(または、それに関連付けられた動作(operation))を監視し、そのオブジェクトが、そのフィルタに関連付けられた名前空間内にあるかどうか判定する。そのフィルタに関連付けられた名前空間が、そのオブジェクトに対する変更に基づいて更新される。
本発明の一態様では、要求が名前変更または削除の動作を含む。オブジェクトは、そのオブジェクトに関連付けられたポリシーを有する場合、またはそのオブジェクトが、そのようなオブジェクトの先祖である場合、フィルタに関連付けられた名前空間内にある。
本発明の他の態様では、名前変更動作により、オブジェクトを除去および/または名前変更させることができる。
本発明の他の態様では、オブジェクトは、そのオブジェクトに対するハンドルを開くことによってアクセスされる。ハンドルは、そのオブジェクトにアクセスするために使用される通信チャネルを識別する情報を含む。そのオブジェクトに対するハンドルすべてが閉じられたときそのオブジェクトを削除するべきであることを示すフラグを設定することができる。最後のハンドルが閉じられた後で、フラグが設定されたままである場合、そのオブジェクトは削除される。
本発明の一態様では、名前空間一貫性を維持することにより、フィルタで、オブジェクトが名前変更されたときオブジェクト上のポリシーを適用すること、および、削除されたオブジェクト上のポリシーを適用するのを止めることが可能になる。
他の諸態様は、以下の詳細な説明を図面と共に理解したとき明らかになろう。
例示的動作環境
図1は、本発明を実施することができる好適なコンピューティングシステム環境100の一例を示す。コンピューティングシステム環境100は、好適なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についていかなる限定も示唆することを意図するものではない。また、コンピューティング環境100は、例示的な動作環境100に示されている構成要素のいずれか1つ、またはその組合せに関してどんな依存性も要件も有するものと解釈すべきでない。
本発明は、多数の他の汎用または専用のコンピューティングシステム環境またはコンピューティングシステム構成と共に動作可能である。本発明と共に使用するのに適している可能性のある周知のコンピューティングシステム、環境、および/または構成の諸例には、それだけには限らないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロコントローラベースのシステム、セットトップボックス、プログラム可能な家庭電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
本発明について、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境内で実施することができる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルと遠隔双方のコンピュータ記憶媒体内に位置することができる。
図1を参照すると、本発明を実施するための例示的なシステムが、コンピュータ110の形態で汎用コンピューティングデバイスを含んでいる。コンピュータ110の構成要素には、それだけには限らないが、処理装置120、システムメモリ130、および、システムメモリを含む様々なシステム構成要素を処理装置120に結合するシステムバス121が含まれる。システムバス121は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺機器バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例を挙げると、そのようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、および、メザニンバスとしても知られるPCI(Peripheral Component Interconnect)バスが含まれる。
コンピュータ110は、一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取り外し可能媒体と取り外し不能媒体を共に含む。限定ではなく例を挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含む。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性と不揮発性の、取り外し可能と取り外し不能の媒体が共に含まれる。コンピュータ記憶媒体には、それだけには限らないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気記憶装置、または、所望の情報を記憶するために使用することができ、コンピュータ110によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他のトランスポート機構など変調されたデータ信号中に具現化するものであり、任意の情報送達媒体を含む。「変調されたデータ信号」という用語は、情報を信号に符号化するようにその特性の1つまたは複数が設定された、または変更された信号を意味する。限定ではなく例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続など有線媒体と、音響、RF、赤外線および他の無線媒体など無線媒体とを含む。上記のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含むべきである。
システムメモリ130は、読出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132など揮発性および/または不揮発性メモリの形態でコンピュータ記憶媒体を含む。起動中などにコンピュータ110内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)133は、通常、ROM131内に記憶される。RAM132は、通常、処理装置120によって即座にアクセス可能な、かつ/または現在操作されているデータおよび/またはプログラムモジュールを含む。限定ではなく例を挙げると、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、プログラムデータ137を示す。
コンピュータ110はまた、他の取り外し可能/取り外し不能の、揮発性/不揮発性のコンピュータ記憶媒体を含むことができる。例示にすぎないが、図1は、取り外し不能の不揮発性磁気媒体との間で読出しまたは書込みをするハードディスクドライブ141、取り外し可能な不揮発性磁気ディスク152との間で読出しまたは書込みをする磁気ディスクドライブ151、CD ROMまたは他の光媒体など取り外し可能な不揮発性光ディスク156との間で読出しまたは書込みをする光ディスクドライブ155を示す。例示的な動作環境内で使用することができる他の取り外し可能/取り外し不能の、揮発性/不揮発性のコンピュータ記憶媒体には、それだけには限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれる。ハードディスクドライブ141は、通常、インターフェース140など取り外し不能なメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150など取り外し可能なメモリインターフェースによってシステムバス121に接続される。
上記で論じ、図1に示されているドライブとその関連コンピュータ記憶媒体は、コンピュータ110のために、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶を提供する。たとえば、図1では、ハードディスクドライブ141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、プログラムデータ147を記憶しているように示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、プログラムデータ137と同じとすることも異なるものとすることもできることに留意されたい。本明細書では、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、プログラムデータ147は、これらが最低でも異なるコピーであることを示すために異なる番号が与えられている。ユーザは、キーボード162、および、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161などの入力デバイスを介してコンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、ハンドヘルドPCもしくは他の手書きタブレットのタッチセンサ画面などが挙げられる。これらおよび他の入力デバイスは、しばしば、システムバスに結合されるユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)など、他のインターフェースおよびバス構造によっても接続することができる。モニタ191または他のタイプのディスプレイデバイスもまた、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。コンピュータはまた、モニタに加えて、スピーカ197やプリンタ196など他の周辺出力デバイスをも含むことができ、これらは、出力周辺機器インターフェース195を介して接続することができる。
コンピュータ110は、遠隔コンピュータ180など、1つまたは複数の遠隔コンピュータに対する論理接続を使用してネットワーク環境内で動作することができる。遠隔コンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードとすることができ、図1には、メモリ記憶装置181だけが示されているが、通常、コンピュータ110に関して上述した要素の多数または全部を含む。図1に示されている論理接続は、ローカルエリアネットワーク(LAN)171と広域ネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。そのようなネットワーク環境は、事務所、全社コンピュータネットワーク、イントラネット、インターネットで一般的である。
コンピュータ110は、LANネットワーク環境内で使用されるとき、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。コンピュータ110は一般に、WANネットワーク環境内で使用されるとき、インターネットなどのWAN173を介して通信を確立するためのモデム172または他の手段を含む。モデム172は、内部にあっても外部にあってもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関して示されているプログラムモジュール、またはその一部分を、遠隔メモリ記憶装置に格納することができる。限定ではなく例を挙げると、図1は、メモリデバイス181に常駐する遠隔アプリケーションプログラム185を示す。図のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することができることは理解されよう。
名前空間一貫性の維持
図2は、本発明の様々な態様による、本発明が動作することができるシステムの構成要素の例示的な構成を表すブロック図である。諸構成要素は、1つまたは複数のアプリケーション205、アプリケーションプログラミングインターフェース(API)210、入出力(I/O)マネージャ215、フィルタマネージャ220、ファイルシステム225、1つまたは複数のフィルタ230〜232を含む。
アプリケーション205は、API210を介して、I/Oマネージャ215に(たとえば、関数/メソッド呼出しを介して)ファイルシステム要求を行うことができる。I/Oマネージャ215は、各要求を満たすためにどのI/O要求または複数のI/O要求を発行するべきか判定し、各I/O要求をフィルタマネージャ220に送ることができる。また、I/Oマネージャ210は、ファイルシステム要求に関連付けられた動作が進行した、または完了した、または中断したとき、アプリケーション205にデータを返すこともできる。
一実施例では、インスタンス化されるとき、フィルタマネージャ220において登録機構を用いて(たとえば、それらを初期化する手順の間に)登録するオブジェクトなどを含む。効率のために、各フィルタは、典型的には、処理することに関心をもつことができるファイルシステム要求について登録することになるにすぎない。そのために、各フィルタは、登録の一部として、関心をもつI/O要求のタイプ(たとえば、作成、読取り、書込み、クローズ、名前変更など)についてフィルタマネージャ220に通知する。たとえば、暗号化フィルタは、読取りI/Oおよび書込みI/Oについて登録するが、データを暗号化または解読することが必要とされない他のI/Oについては場合によっては登録しない。同様に、割当てフィルタは、オブジェクト作成およびオブジェクト書込みだけに関心をもちうる。
フィルタは、関心をもつI/O要求のタイプを指定することに加えて、I/Oのタイプのそれぞれについて、プリコールバック(pre−callback)およびポストコールバック(post−callback)のために通知を受けるべきであるかどうかさらに指定することができる。プリコールバックは、I/O要求に関連付けられたデータがI/Oマネージャ215からファイルシステム225に向かって伝播するときに呼び出され、一方、ポストコールバックは、I/O要求の完了中に、I/O要求に関連付けられたデータがファイルシステム225からI/Oマネージャ215に向かって伝播するとき呼び出される。
フィルタマネージャ220は、各I/O要求から、フィルタ230〜232が使用するのに適した均一なフォーマットでデータ構造を作成することができる。以下、このデータ構造は、コールバックデータと呼ばれることがある。次いで、フィルタマネージャ220は、フィルタマネージャ220によって受け取られたI/Oのタイプについてコールバックを受け取るように登録されている各フィルタに対して、コールバックデータを呼び出し、渡すことができる。フィルタマネージャによって受け取られたI/Oのタイプについてコールバックを受け取るように登録されたどのフィルタも、登録済みフィルタと呼ばれることがある。
典型的には、フィルタマネージャ220は、特定のタイプのI/O要求に関連付けられたコールバックデータを、登録済みフィルタが順序付けられている順序で、順次、各登録済みフィルタに渡す。たとえば、フィルタ230および232が、読取りI/O要求すべてについてコールバックを受け取るように登録されており、かつ、そのような要求を処理する際にフィルタ230がフィルタ232の前となるように順序付けられる場合には、読取りI/Oを受け取った後で、フィルタマネージャ220は、フィルタ230に対してコールバックデータを呼び出し、渡すことができ、次いで、フィルタ230がコールバックデータを処理した後で、フィルタマネージャ220は、フィルタ232に対して(あるとすれば修正された)コールバックデータを呼び出し、渡すことができる。
フィルタは、1つまたは複数のボリュームに付随することができる。すなわち、フィルタは、呼び出しを受け取り、1つだけ、または複数のボリュームに関係するI/Oについてコールバックデータを受け取るように登録することができる。
フィルタは、それ自体のI/O要求を生成することができ、ついでそれを他のフィルタに渡すことができる。たとえば、アンチウィルスフィルタは、ファイルが開かれる前にファイルを読み取りたいと望む可能性がある。フィルタは、I/O要求がさらに伝播するのを止めることができ、そのI/O要求についてステータスコード(たとえば、成功または失敗)をレポートするようにフィルタマネージャに指令することができる。フィルタは、データをメモリに格納し、このデータをディスク上で保持することができる。一般に、フィルタは、カーネルモードプロセスまたはユーザモードプロセスによって実行することができる任意の組のアクションを実行するように作成することができ、リアクティブ(たとえば、動作する前にI/O要求を受け取るまで待つ)および/またはプロアクティブ(たとえば、それ自体のI/O要求を開始する、またはI/Oマネージャ215によって処理されるI/O要求と非同期で他のアクションを実行する)とすることができる。
一実施形態では、本発明の様々な態様による、本発明が動作することができるシステムの構成要素の他の例示的な構成を表すブロック図である図3に示されているように、フィルタを、積み重ねられた形で構成することができる。この実施形態では、フィルタ305〜307のそれぞれが、I/O要求を処理し、(修正された、または修正されていない)その要求をスタック内の別のフィルタまたは他の構成要素に渡すことができる。たとえば、読取り要求がアプリケーション205の1つから受け取られたことに応答して、I/Oマネージャ215は、I/O要求を発行し、この要求をフィルタ305に送ることができる。フィルタ305は、そのI/O要求を調べ、フィルタ305がそのI/O要求に関心をもたないことを判定し、次いで、変更されていないそのI/O要求をフィルタ306に渡す。フィルタ306は、そのI/O要求に基づいてフィルタ306が何らかのアクションを実行することを決定することができ、次いで、(変更された、または変更されていない)そのI/O要求をフィルタ307に渡すことができる。フィルタ307は、フィルタ307がそのI/O要求に関心をもたないことを判定し、そのI/O要求をファイルシステム235に渡すことができる。
ファイルシステム235がそのI/O要求に対するサービスを提供した後で、その結果をフィルタ307に渡す。典型的には、結果は、I/O要求が進んできた順序と逆の順序で(たとえば、まずフィルタ307に、次いでフィルタ306に、次いでフィルタ305に)進む。フィルタ305〜307のそれぞれは、その結果を調べることができ、そのフィルタがその結果に関心をもつかどうか判定し、それに基づいて、(変更された、または変更されていない)その結果を別のフィルタまたは構成要素に渡す前に、アクションを実行することができる。
本発明の他の実施形態では、本発明の様々な態様による、本発明が動作することができるシステムの構成要素の他の例示的な構成を表すブロック図である図4に示されているように、フィルタを、積み重ねられた/管理された形で構成することができる。この構成では、フィルタは、フィルタマネージャに関連付けられるものもあれば、関連付けられないものもある。フィルタマネージャ220は、他のフィルタ(たとえば、フィルタ305および307)と共にスタック内に配置される。
フィルタは、本発明の精神または範囲から逸脱することなく、多数の他の構成で実施することができることは、容易に理解されよう。いくつかの実施形態では、フィルタは、アプリケーションとファイルシステムの間でI/Oを調べる、および、そのI/Oを変更、完了、または中断すること、またはそれに基づいて他のアクションを実行することが可能である任意のオブジェクトを含む。
図2に戻ると、ファイルシステム235は、アプリケーション205がその上で実行するマシンまたは複数のマシンにローカルで、または遠隔で位置することができる1つまたは複数のボリュームを含むことができる。
いくつかのフィルタは、あるディレクトリ内でファイルを監視する。たとえば、割当てフィルタは、特定のディレクトリに対して割当てを実施することができる。他の例として、データ画面フィルタは、あるディレクトリ内で、あるタイプのファイル(たとえば、MP3、JPGなど、ある拡張子によって示されて著作権で保護される可能性があるファイル)の作成を拒否することができる。これらのフィルタは、関連するディレクトリを識別する名前空間を含むことができる。
あるファイルシステム要求(たとえば、名前変更および削除)は、フィルタによって監視されるオブジェクトについて、ファイルシステム名前空間を変更することができる。たとえば、割当てフィルタは、C:\DIR\QUOTAと呼ばれるオブジェクトに対して1ギガバイトの割当てを実施するように構成することができる。オブジェクトの名前と、そのオブジェクトに適用可能な割当ては、不揮発性ストレージ上で保持されるメタデータファイルに格納することができる。アプリケーションは、オブジェクトC:\DIRからC:\DIR2に名前変更することも、C:\DIR\QUOTAをC:\QUOTAに移動することもできる。引き続きQUOTAオブジェクトに対して割当てを実施するために、割当てフィルタは、名前変更を監視し、名前変更により、割当てフィルタが割当てを実施しつつあるオブジェクトが影響を受けるたびに、そのメタデータファイルを更新する。
いくつかのオペレーティングシステムでは、名前変更動作により、オブジェクトが名前変更される、かつ/またはそのオブジェクトが移動される可能性がある。したがって、名前変更動作を監視することにより、フィルタは、名前の変更、オブジェクトの移動、またはその両方を捕捉することができる。ファイルの名前変更とファイルの移動が別々の動作であるオペレーティングシステムでは、フィルタは、ファイルシステムの名前空間との名前空間一貫性を維持するために、これらの両動作を監視することを必要とする場合がある。
さらに、アプリケーションは、オブジェクト、たとえばC:\DIRまたはC:\DIR\QUOTAを削除することができる。削除されたオブジェクトを監視することを回避し、既存のオブジェクトが削除され、同じ名前を有する新しいオブジェクトがその位置で再作成されたときポリシーを実施しないために、また、そのようなオブジェクトを監視する際に使用されるメタデータのサイズを削減するために、フィルタは、削除を監視し、それに応じてそのメタデータを更新することができる。
図5は、本発明の様々な態様による、ポリシーが適用されているオブジェクトを監視するために使用することができるデータ構造を表すブロック図である。本明細書で述べるごとく、監視されるオブジェクトは、ディレクトリ、ファイル、ファイルシステム上で記憶することができる任意のものなどを含む。
データ構造は、注目の各オブジェクトについてノードを含み、しばしばプリフィクスツリーと呼ばれることがある。表されている例示的なオブジェクトは、ルートディレクトリ「\」、\DIR1、\DIR1\QUOTA1、\DIR1\QUOTA1\QUOTA2、\DIR2、\DIR2\DIR3、および\DIR2\DIR3\QUOTA3を含む。オブジェクト\DIR1\QUOTA1、\DIR1\QUOTA1\QUOTA2、および\DIR2\DIR3\QUOTA3には、それぞれに適用されるポリシーP1、P2、P3を有している。ポリシーは、オブジェクトとその子孫(たとえば、サブディレクトリ)によって消費されるディスクスペースに対する割当て、オブジェクトとその子孫内で許されるファイル、オブジェクトとその子孫に関連して何が許され、かつ/または許されないか、などを含むことができる。注目のオブジェクトがファイルシステム上で名前変更または削除されたとき、図5に示されているデータ構造を更新することが必要とされる場合がある。そのような更新は、下記でより詳しく述べるように、ノードを削除すること、追加のノードを追加すること、およびノードの内容を変更することを含むことができる。
一般に、オブジェクトを名前変更または削除することにより、そのオブジェクトをデータ構造内で見つけること、またはポリシーの適用が影響を受けることになる場合、そのオブジェクトは注目されるものである。たとえば、\DIR2とそのサブディレクトリが削除されたならば、ポリシーP3を\DIR2\DIR3\QUOTA3に適用することは、もはや必要とされないはずである。さらに、ノードDIR2、DIR3、QUOTA3は、ポリシーP3を割り当てることをもはや必要としないはずであり、スペースを保存し、任意の残りのポリシーについてルックアップ時間を減らすために削除することができるはずである。
他の例として、\DIR1\QUOTA1\QUOTA2がファイルシステム上で\QUOTA5に名前変更された場合、これは、データ構造内でその新しいオブジェクトを見つけることに影響を及ぼす可能性がある。これは、フィルタが、特定の動作にポリシーを適用する前に、ポリシーが確立済みである任意のオブジェクトにその動作が影響を及ぼす可能性があるかどうか知ることを必要とするので、重要である。(たとえば、フィルタが、特定の動作に対してポリシーを実施することを必要とするかどうか判定することができるように)データ構造内で新しいオブジェクトを見つけるために、新しいノードを作成し、その新しいオブジェクトに関連付けることができ、次いで、旧ノードQUOTA2に関連付けられたポリシー(たとえば、P2)をその新しいノードにコピーすることができ、次いで、旧ノードQUOTA2を削除することができる。次いで、ポリシーP2をその新しいオブジェクトについて実施することができる。オブジェクトに対する変更に応答して追加および削除することについては、図8〜10に関連してより詳しく述べる。
アプリケーション(たとえば、サービスまたは他のもの)は、どのオブジェクトが、それらに関連付けられているポリシーを有するかフィルタに伝えることができる。アプリケーションは、そのようなオブジェクトのリストを提供することができ、要求どおりポリシーを追加および/または削除することができる。フィルタは、そのようなリストまたは命令を受け取った後で、新しいデータ構造を作成する、または注目のオブジェクトを捕らえるために既存のデータ構造を修正することができる。
データ構造は、ブート時、またはそのデータ構造を使用するフィルタのインスタンス化の際に再構築することができる。これは、不揮発性ストレージ(たとえば、ディスク)上で保持される上述のメタファイルを使用して行うことができる。
データ構造は、複数のフィルタ間で共用することができる。たとえば、2つ以上のフィルタが、名前変更または削除することができるオブジェクトに対してポリシーを実施することができる。この2つ以上のフィルタは、各フィルタについてデータ構造の別々のコピーを維持するのではなく、データ構造を共有することができる。1つまたは複数のフィルタを指定し、データ構造をファイルシステムに同期したまま保つことができる。
さらに、フィルタは、データ構造を共有することができるが、同じオブジェクトすべてを監視することを望まない場合がある。そのために、どのノードに各フィルタが関心をもつかを示す追加のデータを維持することができる。
図6は、本発明の様々な態様による、注目のオブジェクトについて、フィルタ名前空間とフィルタシステム名前空間の間で一貫性を維持するために行うことができる動作を全体的に表す流れ図である。ブロック605でプロセスが開始する。ブロック610では、フィルタが、注目のI/O動作を受ける。管理されるフィルタの場合には、フィルタは、受けたタイプのI/O動作を受け取るように、先に登録されている可能性がある。積み重ねられたフィルタ(stacked filters)の場合には、フィルタは、そのI/Oがファイルシステム名前空間に影響を及ぼす可能性があるものであることを判定することができる。一実装では、ファイルシステム名前空間に影響を及ぼす可能性があるいくつかのI/O動作には、名前変更および削除が含まれる。
ブロック615では、そのI/O動作が注目のオブジェクトに関係するかどうかについて判定が行われる。関係がある場合、処理はブロック625に分岐し、そうでない場合には、処理がブロック620に分岐し、そこでプロセスが戻る(リターンする)。図5を参照すると、注目のオブジェクトは、データ構造の任意のノードによって表されるオブジェクトである。次いで、フィルタは、注目のI/O動作に関連付けられたデータを受け取った後で、データ構造に対してルックアップを行い、そのI/O動作がその中にいずれかのノードを含むかどうか判定することができる。含まない(たとえば、ルックアップが失敗した)場合、フィルタは戻ることができる。
ブロック625では、そのI/O動作が名前変更動作であるかどうかについて判定が行われる。名前変更動作である場合、処理はブロック630に分岐し、そうでない場合には、処理はブロック635に分岐する。他の実施形態では、ブロック615および610に関連付けられたアクションが逆になる。すなわち、まずI/O動作が注目のオブジェクトを含むかどうかについて判定が行われ、次いで、そのI/O動作が注目されるものであるかどうかについて判定が行われる。この実施形態では、I/Oが注目のオブジェクトを含まない場合、またはそのI/Oが注目のI/Oでない場合、プロセスは戻る。
ブロック630では、図7〜10に関連してより詳しく述べるように、フィルタ名前空間が必要に応じて更新される。ブロック632では、図13に関連してより詳しく述べるように、オブジェクトに関連付けられたストリームコンテキストが存在する場合、そのストリームコンテキストが更新される。ストリームコンテキストは、オブジェクトに関する情報を格納し取り出すことができるデータを含む。ストリームコンテキストは、たとえば、オブジェクトが削除のためにマークされているとき、そのオブジェクトについて作成することができる。オブジェクトは、削除のためにマークすることができるが、削除される前に名前変更することができる。名前変更を通じてオブジェクトの名前を追跡するために、オブジェクトの新しい名前がストリームコンテキストに格納される。オブジェクトが名前変更されるたびに、オブジェクトの新しい名前を含むようにストリームコンテキストが更新される。次いで、オブジェクトが最後に削除されたとき、フィルタは、ストリームコンテキスト内で削除済みオブジェクトの最新の名前をルックアップし、適切な、ノードまたは複数のノードを、フィルタの名前空間から削除する。
ブロック635では、その動作が削除関連動作であるかどうかについて判定が行われる。削除関連動作である場合、処理はブロック640に分岐し、そうでない場合には、処理はブロック645に分岐する。図11に関連してより詳しく述べるように、削除関連動作は、クローズ時に削除する作成(create for delete on close)動作、設定処分(set disposition)動作、またはクリーンナップ動作を含むことができる。ブロック640では、図10に関連してより詳しく述べるように、フィルタ名前空間が必要に応じて更新される。
ブロック645では、任意の他のフィルタアクションを実行することができる。たとえば、割当てフィルタは、I/O要求が続行することを許可しない、または許可することによって、割当てを実施することができる。いくつかの実装では、ブロック645に関連付けられたアクションは、ブロック610の直後に行われる。これにより、フィルタで動作を失敗させ、任意のオブジェクトの変更を停止することを可能にすることができる。ブロック620でプロセスが戻る。図6に関連して述べられているプロセスは、注目のI/O動作を受けるたびに繰り返すことができる。
図7は、本発明の様々な態様による、名前変更動作を受けたとき行うことができる、図6のブロック630に対応するアクションを全体的に表す流れ図である。ブロック705でプロセスが開始する。ブロック710では、名前変更動作がプリコールバック段階(phase)にあるか、それともポストコールバック段階にあるかに関して判定が行われる。動作がプリコールバック段階にある場合(すなわち、I/O要求がファイルシステムに伝播する前)、処理はブロック715に分岐し、そうでない場合には、動作がポストコールバック段階にあるとき、処理はブロック730に分岐する。本質的には、プロセスは、動作が成功するまで待ってから、データ構造を更新する。
ブロック715では、コールバックコンテキストが割り振られ、動作に関連付けられる。コールバックコンテキストは、任意のデータを含むことができ、動作に関するデータをポストコールバック段階に渡すための手段を提供する。ポストコールバック段階が特定の動作について発生したとき、その動作に関連付けられたコールバックコンテキストにアクセスすることができる。
ブロック720では、動作が実行される前のオブジェクトの名前(すなわち、旧名)が、コールバックコンテキストに格納される。ブロック725では、本質的には、動作がファイルシステム上で実行された後、I/O結果がアプリケーションに返る前に呼び出されることを望むことをフィルタが示すことを意味する動作後(post−operation)コールバックが実行される。
ブロック730での動作後段階では、動作が失敗したかどうかについて判定が行われる。失敗した場合、処理はブロック750に分岐し、そうでない場合には、処理はブロック735に分岐する。動作が失敗した場合、データ構造を更新することは必要とされない。
ブロック735では、オブジェクトの旧名が、コールバックコンテキストから取り出される。この旧名は、フィルタ名前空間を維持するデータ構造内でノードを見つけるために使用される。ブロック740では、新しいオブジェクト名および/またはオブジェクトパスを含むことができるオブジェクトの新しい名前について、ファイルシステムが照会される。ブロック745では、図8に関連してより詳しく述べるように、データ構造が更新される。ブロック750では、コールバックコンテキストが解放される。ブロック755でプロセスが戻る。
図8は、本発明の様々な態様による、データ構造を更新する際に行うことができる、図7のブロック745に対応するアクションを全体的に表す流れ図である。ブロック805でプロセスが開始する。ブロック810では、オブジェクトが移動されているかどうかについて判定が行われる。移動されている場合、処理はブロック815に分岐し、そうでない場合には、処理はブロック830に分岐する。オブジェクトが移動されている場合、旧ノードを削除し、新しいノードを作成し、ブロック815、820、825によって示されているように、フィルタ名前空間およびポリシーを更新することができる。オブジェクトの名前だけが変更され、そのパスが変更されていない場合、ノード内に示されているオブジェクトの名前を、ブロック830によって示されているように新しいオブジェクト名に変更することができる。
ブロック835では、移動されたノードの子孫ノードを、必要に応じて更新することができる。一実施例では、完全パスおよびオブジェクト名が、各ノードに格納される。たとえば、図5を参照すると、QUOTA2ノードは、\DIR1\QUOTA1\QUOTA2を格納することができる。これは、実行を速めるために、または他の理由で行うことができる。あるノードのオブジェクト名および/またはパスが変更されるとき、そのノードの子孫であるノードのそれぞれを更新し、その変更されたノードに関連付けられた新しいオブジェクト名および/またはパスを含めることができる。他の実施例(たとえば、完全パスおよびオブジェクト名がノードに格納されず、子孫ノード内で更新することを必要としない場合)では、ブロック835を省くことができる。
ブロック840でプロセスが戻る。
図9は、本発明の様々な態様による、オブジェクトが移動されるときノードを追加する際に行うことができる、図8のブロック815に対応するアクションを全体的に表す流れ図である。ブロック905でプロセスが開始する。ブロック910では、オブジェクトの新しいパスの第1の構成要素が選択される。あるパスで使用されているとき、構成要素は、そのオブジェクトの先祖オブジェクトに対応するパスの一部分を指し、ルートディレクトリを含むことができる。たとえば、\DIR1\QUOTA1\QUOTA2の構成要素は、ルート(すなわち「\」)、DIR1、QUOTA1、QUOTA2である。第1の構成要素は、ルートである。
ブロック915では、選択された構成要素に対応するノードが存在するかどうかについて判定が行われる。存在する場合、新しいノードを作成することが必要とされないので、処理がブロック925に分岐し、そうでない場合には、処理はブロック920に分岐する。ブロック920では、その構成要素に対応する新しいノードが作成される。
ブロック925では、現在選択されている構成要素が新しいパスの最後の構成要素であるかどうかについて判定が行われる。そうである場合、処理はブロック905に分岐し、処理が戻る。そうでない場合には、処理はブロック930に分岐し、次の構成要素が選択され、ブロック915〜925に関連付けられたアクションを、最後の構成要素が処理されるまで繰り返すことができる。図9に関連して述べられている処理は、本質的には、まだデータ構造内に存在しない新しいパス内の任意の構成要素についてノードを含むようにデータ構造を修正することを理解されよう。
図10は、本発明の様々な態様による、旧オブジェクト名に関連付けられたプリフィクスノードを除去するためにデータ構造を更新するとき行うことができる、図8のブロック825に対応するアクションを全体的に表す流れ図である。一般に、ノードがデータ構造内で新しい位置に移動されるとき、もはや必要でないノードすべてがデータ構造から除去される。ノードは、関連付けられたポリシーを有する子孫を持たず、かつノード自体がそれに関連付けられたポリシーを有していない場合、もはや必要ないものとなる。
プロセスはブロック1005で開始する。ブロック1010では、旧オブジェクトに関連付けられたノードが選択される。ブロック1015では、先に新しいノードにすでにコピー済みであるため、旧ノードのポリシーが除去される。ブロック1020では、現在選択されているノードがそれに関連付けられているポリシーを有しているかどうかについて判定が行われる。関連付けられている場合、処理はブロック1045に分岐し、そうでない場合には、処理はブロック1025に分岐する。
ブロック1025では、ノードがいずれかの子を有するかどうかについて判定が行われる。子を有する場合、処理はブロック1045に分岐し、そうでない場合には、処理はブロック1030に分岐する。ノードは、ポリシーおよびその先祖を有するオブジェクトについて維持され、そうでない場合には維持されないため、ノードがいずれかの子を有する場合、これは、ノードの子孫の少なくとも1つがポリシーに関連付けられることを示す。たとえば、ポリシーを有していなかったノードが2つの子を有し、その子の一方が、もはやそのノードの子孫にならないように名前変更されたならば、そのノードは、第2の子もまた削除されるまで削除されないことになる。
ブロック1030では、もはや必要とされないのでノードが削除される。ブロック1035では、そのノードが親を有するかどうかについて判定が行われる。親を有する場合、処理はブロック1040に分岐し、その親が選択される。処理は、ブロック1040からブロック1020に継続し、ブロック1020〜1035に関連付けられたアクションを繰り返すことができる。これらのアクションは、事実上、再帰的にデータ構造を登り、それ自体ポリシーに関連付けられる、またはポリシーに関連付けられた子孫を有するノードを見つけるまで、ノードを削除することは理解されよう。
ブロック1045でプロセスが戻る。
図6〜10の流れ図は、ファイルシステムに名前変更が行われたとき名前空間データ構造を一貫したものとなるように更新することができる1つの方法を表し、また、名前変更中に名前空間データ構造をファイルシステムの名前空間と一貫した状態で保つことを、本発明の精神および範囲から逸脱することなく様々な方法で実施することができることは理解されよう。
図11は、本発明の様々な態様による、削除関連動作中にフィルタ名前空間とファイルシステム名前空間の間で一貫性を維持するために行うことができる、図6のブロック640に対応するアクションを全体的に表す流れ図である。ブロック1105でプロセスが開始する。
ブロック1110では、動作が、クローズ時に削除する作成動作であるかどうかについて判定が行われる。そうである場合、処理はブロック1115に分岐し、そうでない場合には、処理はブロック1130に分岐する。作成動作は、オブジェクトを作成する、または、すでに存在するオブジェクトを開くことができる。オブジェクトは、クローズ時に削除するように作成することができる。オブジェクトが、クローズ時に削除するように作成されたとき、これは、そのオブジェクトが閉じられた後で、そのオブジェクトを削除するべきであることを意味する。すなわち、オブジェクトは、そのオブジェクトに対するハンドルを有するプロセスすべてがそのハンドルを閉じるまで、作成、存在、存続することができる。ハンドルすべてが閉じられた後で、そのオブジェクトは削除される。ブロック1115では、その作成のためのアクションが、図12に関連してより詳しく述べるように実行される。
ブロック1130では、動作が設定処分動作(set disposition operation)であるかどうかについて判定が行われる。そうである場合、処理はブロック1135に分岐し、そうでない場合には、処理はブロック1140に分岐する。一実施例では、オブジェクトは、このオブジェクトに関連付けられる、このオブジェクトに対するハンドルすべてを閉じた後でそのオブジェクトを削除するべきであるかどうかを示すフラグを有することができる。このフラグは、設定する(すなわち、オブジェクトを削除するべきであることを示す)ことも、クリアする(すなわち、オブジェクトを削除するべきでないことを示す)こともできる。さらに、フラグは、オブジェクトに対するオープンハンドルを有する各プロセスによって設定またはクリアすることができる。したがって、あるプロセスがフラグを設定し、結局別のプロセスによってクリアされる可能性がある。オブジェクトは、そのオブジェクトに対するハンドルを有する最後のプロセスがハンドルを閉じた時点で、フラグの処分(たとえば、設定されている、またはクリアされている)に応じて残るか、または削除される。ブロック1135では、オブジェクトの処分を設定することに関係するアクションが、図14に関連してより詳しく述べるように実行される。
ブロック1140では、動作がクリーンナップ動作であるかどうかについて判定が行われる。そうである場合、処理はブロック1145に分岐し、そうでない場合には、処理はブロック1155に分岐する。クリーンナップ動作は、プロセスがオブジェクトに対するハンドルを閉じるたびに発行することができる。しかし、先に述べたように、オブジェクトは、そのオブジェクトに対するハンドルを有する最後のプロセスがハンドルを閉じるまで、実際には削除されない可能性がある。最後のプロセスがオブジェクトを閉じた後ですら、たとえば、最後のクローズの時点で、オブジェクトを削除するためのフラグが、クローズ時にそのオブジェクトを削除するべきでないことを示す場合、オブジェクトは削除されない可能性がある。ブロック1145では、クリーンナップアクションが、図15に関連してより詳しく述べるように実行される。
ブロック1155でプロセスが戻る。図11に関連して述べられているプロセスは、フィルタが注目のオブジェクトについて削除関連I/O動作を受けるたびに繰り返すことができる。
図12は、本発明の様々な態様による、クローズ時に削除する作成動作を受けたとき行うことができる、図11のブロック1115に対応するアクションを全体的に表す流れ図である。ブロック1205でプロセスが開始する。
ブロック1210では、動作が動作前(pre−operation)段階にあるかどうかについて判定が行われる。動作前段階にある場合、処理はブロック1215に分岐し、そうでない場合には、処理はブロック1220に分岐する。
ブロック1215では、動作後コールバックが実行され、その結果、フィルタは、その動作の動作後段階中にコールバックを受け取ることになる。ブロック1220では、動作が失敗したかどうかについて判定が行われる。失敗した場合、処理はブロック1240に分岐し、そうでない場合には、処理はブロック1225に分岐する。
ブロック1225では、ストリームコンテキストが(まだ存在しない場合)割り振られ、オブジェクトに関連付けられる。ブロック1230では、オブジェクト名がストリームコンテキストに格納される。ブロック1235では、削除フラグが、ストリームコンテキスト内で更新される。クローズ時に削除するように作成されたオブジェクトの場合、フラグは、そのオブジェクトに対するハンドルすべてが閉じられたとき、そのオブジェクトが削除されることを示すことができる。このタイプのフラグは、後続のプロセスによって修正されない可能性がある。そのオブジェクトに対するハンドルすべてが閉じられたとき、クローズ時に削除するように開かれた(オープンされた)オブジェクトが削除される。
クローズ時に削除するように開かれていないオブジェクトの場合、そのオブジェクトをクローズ時に削除するべきである、または削除するべきでないことを示すために、(設定処分動作を介して)フラグを設定またはクリアすることができる。次いで、そのフラグは、後続の設定処分動作によって変更される可能性がある。ハンドルすべてが閉じられた後でオブジェクトが削除されるかどうかは、そのオブジェクトに対する最後のハンドルが閉じられたとき、フラグの状態によって決まる。
ブロック1240でプロセスが戻る。
図13は、本発明の様々な態様による、名前変更動作を受けたとき行うことができる、図6のブロック632に対応するアクションを全体的に表す流れ図である。ブロック1305でプロセスが開始する。
ブロック1310では、動作が動作前段階にあるかどうかについて判定が行われる。動作前段階にある場合、処理はブロック1330に分岐し、そうでない場合には、処理はブロック1315に分岐する。
ブロック1330では、動作後コールバックが実行され、その結果、フィルタは、その動作の動作後段階中にコールバックを受け取ることになる。ブロック1315では、動作が失敗したかどうかについて判定が行われる。失敗した場合、処理はブロック1335に分岐し、そうでない場合には、処理はブロック1320に分岐する。
ブロック1320では、オブジェクトに関連付けられるストリームコンテキストが存在するかどうかについて判定が行われる。存在する場合、処理は1325に分岐し、そうでない場合には、処理はブロック1335に分岐する。ストリームコンテキストは、たとえば、そのオブジェクトがクローズ時に削除するように開かれておらず、そのオブジェクトをクローズ時に削除するべきかどうかを示すフラグ上で処分が設定またはクリアされていない場合、存在しない可能性がある。
ブロック1325では、オブジェクトが変更を受けている名前を反映するために、名前がストリームコンテキスト内で更新される。これは、たとえば、名前変更が任意のノードに影響を及ぼすことになるかどうか、後で判定する際に有用である。
ブロック1335でプロセスが戻る。
図14は、本発明の様々な態様による、設定処分動作を受けたとき行うことができる、図11のブロック1135に対応するアクションを全体的に表す流れ図である。ブロック1405でプロセスが開始する。
ブロック1410では、動作が動作前段階にあるかどうかについて判定が行われる。動作前段階にある場合、処理はブロック1415に分岐し、そうでない場合には、処理はブロック1420に分岐する。
ブロック1415では、動作後コールバックが実行され、その結果、フィルタは、その動作の動作後段階中にコールバックを受け取ることになる。ブロック1420では、動作が失敗したかどうかについて判定が行われる。失敗した場合、処理はブロック1440に分岐し、そうでない場合には、処理はブロック1425に分岐する。
ブロック1425では、オブジェクトに関連付けられるストリームコンテキストが存在するかどうかについて判定が行われる。存在する場合、処理は1435に分岐し、そうでない場合には、処理はブロック1430に分岐し、ストリームコンテキストが作成され、そのオブジェクトの名前がそこに格納される。ストリームコンテキストは、そのオブジェクトに関連付けられる。
ブロック1435では、そのオブジェクトの削除処分(delete disposition)を反映するために、削除フラグが更新される。前述のように、プロセスは、フラグを設定し、そのオブジェクトをクローズ時に削除するべきであることを示すことも、フラグをクリアし、そのダイレクタ(director)をクローズ時に削除するべきでないことを示すこともできる。ブロック1440でプロセスが戻る。
図15は、本発明の様々な態様による、クリーンナップ動作を受けたとき行うことができる、図11のブロック1145に対応するアクションを全体的に表す流れ図である。ブロック1505でプロセスが開始する。
ブロック1510では、動作が動作前段階にあるかどうかについて判定が行われる。動作前段階にある場合、処理はブロック1515に分岐し、そうでない場合には、処理はブロック1520に分岐する。
ブロック1515では、動作後コールバックが実行され、その結果、フィルタは、その動作の動作後段階中にコールバックを受け取ることになる。ブロック1520では、動作が失敗したかどうかについて判定が行われる。失敗した場合、処理はブロック1550に分岐し、そうでない場合には、処理はブロック1525に分岐する。
ブロック1525では、オブジェクトに関連付けられるストリームコンテキストが存在するかどうかについて判定が行われる。存在する場合、処理は1530に分岐し、そうでない場合には、処理はブロック1550に分岐する。ブロック1530では、そのオブジェクトがフィルタとって注目のオブジェクトであるかどうかについて判定が行われる。そうである場合、処理はブロック1535に分岐し、そうでない場合には、処理はブロック1550に分岐する。
ブロック1535では、削除フラグが、削除するように設定されているかどうか、または、そのオブジェクトが、クローズ時に削除するように開かれているかどうかについて判定が行われる。これらの条件のどちらかが満たされた場合、処理はブロック1540に分岐し、そうでない場合には、処理はブロック1550に分岐する。一実装では、オブジェクトがクローズ時に削除するように開かれたとき、そのオブジェクトがクローズ時に削除されないことを後で示さないことができる。
ブロック1540では、オブジェクトが削除されるかどうかについて判定が行われる。多数のプロセスがオブジェクトを開くことができ、そのオブジェクトは、プロセスすべてがそのオブジェクトに対するハンドルを閉じた後で削除されるにすぎないため、他の基準すべてが満たされてもオブジェクトが削除されない可能性がある。本発明の一実施形態では、オペレーティングシステムは、(フィルタがそれ自体のためにチェックするのではなく)いつオブジェクトが削除されたかフィルタに通知することができる。そのような実施形態では、図15に関連して述べられている方法は、そのオブジェクトが注目のものであるかどうか判定すること、および、必要に応じてノードを削除することを含むことができる。
ブロック1545では、ノードと任意の関連ノードが、必要に応じて削除される。そのノードが、図5に関連して述べられているデータ構造内の他のノードの先祖である場合、その他のノードもまた削除される。さらに、図10に関連して述べられているものと同様のアクションを実行し、そのノードの先祖ノードである、もはや必要とされないノードを削除することができる。ブロック1550でプロセスが戻る。
図11〜15に関連して述べられているアクションは、本発明の精神または範囲から逸脱することなく、他のアクションと置き換えることができ、オペレーティングシステムが動作する方法に応じて、異なる順序で実行することができる。たとえば、いくつかのオペレーティングシステムは、ファイルに対するハンドルすべてが閉じられた後でファイルを削除するべきかどうか示すためのフラグを有していない可能性がある。逆に、そのようなオペレーティングシステムは、オブジェクトを削除するために別個の削除動作を提供することができる。そのようなオペレーティングシステムでは、削除するために変更を検出するための方法は、いつオブジェクトが削除されるか監視すること、および、そのオブジェクトに関連付けられるノード(があればそれ)を削除することを含むことができる。
図12〜14の動作後コールバックの実行は、動作後コールバックがデフォルトで行われる実装において省くことができる。
前述の詳細な説明からわかるように、ファイルシステムとの名前空間一貫性を維持するための方法およびシステムが提供される。本発明は様々な修正形態および代替の構成が可能であるが、そのいくつかの例示の実施形態が図面に示され、上記で詳しく述べられている。しかし、本発明を開示されている特定の形態に限定することを意図しておらず、それどころか本発明は、本発明の精神および範囲内に入るあらゆる修正形態、代替の構成、均等物を包含するものとすることを理解されたい。
本発明を組み込むことができるコンピュータシステムを表すブロック図である。 本発明の様々な態様による、本発明が動作することができるシステムの構成要素の例示的な構成を表すブロック図である。 本発明の様々な態様による、本発明が動作することができるシステムの構成要素の他の例示的な構成を表すブロック図である。 本発明の様々な態様による、本発明が動作することができるシステムの構成要素の他の例示的な構成を表すブロック図である。 本発明の様々な態様による、ポリシーが適用されているオブジェクトを監視するために使用することができるデータ構造を表すブロック図である。 本発明の様々な態様による、注目のオブジェクトについて、フィルタ名前空間とフィルタシステム名前空間の間で一貫性を維持するために行うことができる動作を全体的に表す流れ図である。 本発明の様々な態様による、名前変更動作を受けたとき行うことができる、図6のブロック630に対応するアクションを全体的に表す流れ図である。 本発明の様々な態様による、データ構造を更新する際に行うことができる、図7のブロック745に対応するアクションを全体的に表す流れ図である。 本発明の様々な態様による、オブジェクトが移動されるときノードを追加する際に行うことができる、図8のブロック815に対応するアクションを全体的に表す流れ図である。 本発明の様々な態様による、旧オブジェクト名に関連付けられたプリフィクスノードを除去するためにデータ構造を更新するとき行うことができる、図8のブロック825に対応するアクションを全体的に表す流れ図である。 本発明の様々な態様による、削除関連動作中にフィルタ名前空間とファイルシステム名前空間の間で一貫性を維持するために行うことができる、図6のブロック640に対応するアクションを全体的に表す流れ図である。 本発明の様々な態様による、クローズ時に削除する作成動作を受けたとき行うことができる、図11のブロック1115に対応するアクションを全体的に表す流れ図である。 本発明の様々な態様による、名前変更動作を受けたとき行うことができる、図6のブロック632に対応するアクションを全体的に表す流れ図である。 本発明の様々な態様による、設定処分動作を受けたとき行うことができる、図11のブロック1135に対応するアクションを全体的に表す流れ図である。 本発明の様々な態様による、クリーンナップ動作を受けたとき行うことができる、図11のブロック1145に対応するアクションを全体的に表す流れ図である。
符号の説明
120 処理装置
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 取り外し不能不揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 取り外し可能不揮発性メモリインターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 広域ネットワーク
180 遠隔コンピュータ
185 遠隔アプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺機器インターフェース
196 プリンタ
197 スピーカ

Claims (21)

  1. フィルタの名前空間とファイルシステムの名前空間との間で一貫性を維持する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、実行されると、
    前記ファイルシステムのオブジェクトについてのI/O要求を受け取るステップと、
    前記受け取ったI/O要求に基づいて、前記オブジェクトが、前記フィルタに関連付けられた名前空間内にあるオブジェクトであるかどうかを判定するステップと、
    前記オブジェクトが前記フィルタに関連付けられた名前空間内にあるオブジェクトである場合に、前記I/O要求が前記オブジェクトの名前変更動作であるかどうかを判定するステップと、
    前記I/O要求が前記オブジェクトの名前変更動作である場合に、前記受け取ったI/O要求に基づいて前記フィルタの名前空間を維持するデータ構造内の前記オブジェクトの名前を変更することによって、前記フィルタに関連付けられた前記名前空間を更新するステップと
    を備える方法を実行することを特徴とするコンピュータ可読記憶媒体。
  2. 前記名前変更動作は、前記オブジェクトを、前記ファイルシステム内の異なる位置に移動させることを特徴とする請求項に記載のコンピュータ可読記憶媒体。
  3. 前記名前変更動作は、前記オブジェクトに関連付けられた名前を変更させることを特徴とする請求項に記載のコンピュータ可読記憶媒体。
  4. 前記I/O要求は、削除動作を含むことを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  5. 前記削除動作は、前記オブジェクトに関連付けられたハンドルすべてが閉じられた後で前記オブジェクトが削除されることを示すためにフラグを設定するステップを含むことを特徴とする請求項に記載のコンピュータ可読記憶媒体。
  6. 前記オブジェクトが削除されるべきでないことを示すために、前記フラグをクリアするステップをさらに含むことを特徴とする請求項に記載のコンピュータ可読記憶媒体。
  7. 前記I/O要求は、クリーンナップ動作を含むことを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  8. プロセスが前記オブジェクトに対するハンドルを閉じるたびに、前記クリーンナップ動作が発行されることを特徴とする請求項に記載のコンピュータ可読記憶媒体。
  9. 前記オブジェクトが、前記フィルタに関連付けられた名前空間内にあるオブジェクトであることを判定するステップは、前記フィルタの名前空間を維持るデータ構造内で前記オブジェクトの名前を探索するステップを含むことを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  10. 前記データ構造が階層で構成されることを特徴とする請求項に記載のコンピュータ可読記憶媒体。
  11. 前記データ構造は、関連付けられたポリシーを有する各オブジェクトについてノードを含むことを特徴とする請求項に記載のコンピュータ可読記憶媒体。
  12. 前記データ構造は、関連付けられたポリシーを有する各オブジェクトの各先祖についてノードを含むことを特徴とする請求項11に記載のコンピュータ可読記憶媒体。
  13. 前記先祖は、前記オブジェクトが常駐するディレクトリを含むことを特徴とする請求項12に記載のコンピュータ可読記憶媒体。
  14. 前記オブジェクトは、前記ファイルシステムのディレクトリを含むことを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  15. 前記オブジェクトは、前記ファイルシステムのファイルを含むことを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  16. 前記I/O要求は、前記オブジェクトの名前に対する変更を含むことを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  17. 前記I/O要求は、前記ファイルシステム内での前記オブジェクトの位置に対する変更を含むことを特徴とする請求項1に記載のコンピュータ可読記憶媒体。
  18. コンピュータが、フィルタの名前空間とファイルシステムの名前空間との間で一貫性を維持する方法であって、
    前記ファイルシステムのオブジェクトについてのI/O要求を受け取るステップと、
    前記受け取ったI/O要求に基づいて、前記オブジェクトが、前記フィルタに関連付けられた名前空間内にあるオブジェクトであるかどうかを判定するステップと、
    前記オブジェクトが前記フィルタに関連付けられた名前空間内にあるオブジェクトである場合に、前記I/O要求が前記オブジェクトの名前変更動作であるかどうかを判定するステップと、
    前記I/O要求が前記オブジェクトの名前変更動作である場合に、前記受け取ったI/O要求に基づいて前記フィルタの名前空間を維持するデータ構造内の前記オブジェクトの名前を変更することによって、前記フィルタに関連付けられた前記名前空間を更新するステップと
    を備えることを特徴とする方法。
  19. 前記フィルタが、コールバックコンテキストを割る振るステップと、
    前記フィルタが、動作後コールバックを実行するステップとをさらに備えることを特徴とする請求項18に記載の方法。
  20. 前記名前空間を更新するステップは、
    新しいオブジェクトの新しいノードを前記データ構造に追加するステップと、
    旧ノードに関連付けられたポリシーを前記新しいノードに移動するステップと、
    前記データ構造から前記旧ノードを削除するステップと
    を含むことを特徴とする請求項18に記載の方法。
  21. 複数のフィルタをフィルタマネージャの登録機構に登録するステップと、
    前記複数のフィルタのうちの少なくとも1つのフィルタが、コールバックデータを前記複数のフィルタのうちの少なくとも1つの他にフィルタに渡すステップと
    をさらに含むことを特徴とする請求項18に記載の方法。
JP2005326362A 2004-11-30 2005-11-10 ファイルシステムと名前空間一貫性を維持するための方法およびシステム Expired - Fee Related JP4809663B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/000,430 2004-11-30
US11/000,430 US7496565B2 (en) 2004-11-30 2004-11-30 Method and system for maintaining namespace consistency with a file system

Publications (3)

Publication Number Publication Date
JP2006155607A JP2006155607A (ja) 2006-06-15
JP2006155607A5 JP2006155607A5 (ja) 2008-12-25
JP4809663B2 true JP4809663B2 (ja) 2011-11-09

Family

ID=35911056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005326362A Expired - Fee Related JP4809663B2 (ja) 2004-11-30 2005-11-10 ファイルシステムと名前空間一貫性を維持するための方法およびシステム

Country Status (10)

Country Link
US (1) US7496565B2 (ja)
EP (1) EP1669894A3 (ja)
JP (1) JP4809663B2 (ja)
KR (1) KR101120686B1 (ja)
CN (1) CN100535899C (ja)
AU (1) AU2005211571B2 (ja)
BR (1) BRPI0504679A (ja)
CA (1) CA2524541A1 (ja)
MX (1) MXPA05011696A (ja)
RU (1) RU2408060C2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1684151A1 (en) * 2005-01-20 2006-07-26 Grant Rothwell William Computer protection against malware affection
WO2007014297A2 (en) * 2005-07-26 2007-02-01 Invensys Systems, Inc. Method and system for hierarchical namespace
US8156507B2 (en) * 2006-12-08 2012-04-10 Microsoft Corporation User mode file system serialization and reliability
US8195704B2 (en) * 2009-01-06 2012-06-05 International Business Machines Corporation Validation and correction in a distributed namespace
US20100293197A1 (en) * 2009-05-14 2010-11-18 Microsoft Corporation Directory Opportunistic Locks Using File System Filters
US8285692B2 (en) * 2010-01-15 2012-10-09 Oracle America, Inc. Method and system for attribute encapsulated data resolution and transcoding
JP5539833B2 (ja) * 2010-09-29 2014-07-02 キヤノン電子株式会社 情報処理装置及びその制御方法、コンピュータプログラムならびにコンピュータ可読記憶媒体
US9824091B2 (en) * 2010-12-03 2017-11-21 Microsoft Technology Licensing, Llc File system backup using change journal
US8620894B2 (en) 2010-12-21 2013-12-31 Microsoft Corporation Searching files
US9652469B2 (en) 2011-06-04 2017-05-16 Microsoft Technology Licensing, Llc Clustered file service
US8627431B2 (en) 2011-06-04 2014-01-07 Microsoft Corporation Distributed network name
US9229818B2 (en) 2011-07-20 2016-01-05 Microsoft Technology Licensing, Llc Adaptive retention for backup data
US8856484B2 (en) * 2012-08-14 2014-10-07 Infinidat Ltd. Mass storage system and methods of controlling resources thereof
CN102929982B (zh) * 2012-10-17 2017-07-28 Tcl通力电子(惠州)有限公司 多媒体扫描文件索引方法及装置
US10592475B1 (en) * 2013-12-27 2020-03-17 Amazon Technologies, Inc. Consistent data storage in distributed computing systems
WO2015122905A1 (en) * 2014-02-14 2015-08-20 Hewlett-Packard Development Company, L.P. Assign placement policy to segment set
US10630772B2 (en) * 2014-09-10 2020-04-21 Panzura, Inc. Maintaining global namespace consistency for a distributed filesystem
US10521405B2 (en) 2014-11-03 2019-12-31 Hewlett Packard Enterprise Development Lp Policy and configuration data for a user directory
US10387405B2 (en) 2014-11-03 2019-08-20 Hewlett Packard Enterprise Development Lp Detecting inconsistencies in hierarchical organization directories
US10599621B1 (en) 2015-02-02 2020-03-24 Amazon Technologies, Inc. Distributed processing framework file system fast on-demand storage listing
US9922201B2 (en) * 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10140461B2 (en) 2015-10-30 2018-11-27 Microsoft Technology Licensing, Llc Reducing resource consumption associated with storage and operation of containers
CN107085501B (zh) * 2016-02-16 2020-04-03 杭州海康威视数字技术股份有限公司 一种数据存储、数据迁移方法及装置
KR20180047402A (ko) * 2016-10-31 2018-05-10 삼성전자주식회사 멀티 네임스페이스를 관리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
JP2018136614A (ja) * 2017-02-20 2018-08-30 株式会社日立製作所 データ分散処理システム、データ分散処理方法、及びデータ分散処理プログラム
US10735369B2 (en) * 2018-06-22 2020-08-04 Microsoft Technology Licensing, Llc Hierarchical namespace service with distributed name resolution caching and synchronization
US11334364B2 (en) 2019-12-16 2022-05-17 Microsoft Technology Licensing, Llc Layered composite boot device and file system for operating system booting in file system virtualization environments
KR20210085674A (ko) 2019-12-31 2021-07-08 삼성전자주식회사 다중-스트림을 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법
US11595493B2 (en) * 2020-09-28 2023-02-28 Oracle International Corporation System and method for namespace masking in an integration flow
US11803511B2 (en) * 2021-11-05 2023-10-31 Microsoft Technology Licensing, Llc Methods and systems for ordering operations on a file system having a hierarchical namespace

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761676A (en) * 1994-09-19 1998-06-02 Bmc Software, Inc. Method of removing unneeded data from DB2 logs and other data sets having displacement-dependent data
US6161147A (en) * 1995-03-31 2000-12-12 Sun Microsystems, Inc. Methods and apparatus for managing objects and processes in a distributed object operating environment
US6119118A (en) 1996-05-10 2000-09-12 Apple Computer, Inc. Method and system for extending file system metadata
US5761678A (en) 1996-06-26 1998-06-02 International Business Machines Corporation Creation of clone storage area with identification of base storage area and deferred cloning of metadata
US5832501A (en) * 1996-12-31 1998-11-03 Apple Computer, Inc. Method and system for filtering file manager attribute values
US5937406A (en) 1997-01-31 1999-08-10 Informix Software, Inc. File system interface to a database
WO1999042934A2 (en) * 1998-02-20 1999-08-26 Storm Systems, Llc File system performance enhancement
US6697846B1 (en) * 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6126211A (en) * 1998-10-01 2000-10-03 Dominquez; Edward Slidable deadbolt security device for sliding doors and windows enabling selective locking thereof in closed or partially open position
US6513051B1 (en) * 1999-07-16 2003-01-28 Microsoft Corporation Method and system for backing up and restoring files stored in a single instance store
US6408298B1 (en) * 1999-12-15 2002-06-18 Microsoft Corporation Methods and systems for copying and moving across virtual namespaces
US6578035B1 (en) * 2000-01-14 2003-06-10 Novell, Inc. Method for dynamic validation of a distributed database segment which yields a suitable successor
US6856993B1 (en) 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US6708186B1 (en) * 2000-08-14 2004-03-16 Oracle International Corporation Aggregating and manipulating dictionary metadata in a database system
EP1346036B1 (en) * 2000-11-29 2010-04-28 University of Rochester Helper virus-free herpes virus amplicon particles and uses thereof
US6976060B2 (en) * 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US6920461B2 (en) * 2001-07-10 2005-07-19 Microsoft Corp. Application program interface for network software platform
US7146524B2 (en) * 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7685126B2 (en) * 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US6687701B2 (en) * 2001-09-25 2004-02-03 Hewlett-Packard Development Company, L.P. Namespace management in a distributed file system
US7120631B1 (en) * 2001-12-21 2006-10-10 Emc Corporation File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator
US7043485B2 (en) * 2002-03-19 2006-05-09 Network Appliance, Inc. System and method for storage of snapshot metadata in a remote file
JP4092947B2 (ja) * 2002-05-09 2008-05-28 日本電気株式会社 名前サービス多重化方法、名前サービス多重化システム及び名前サービス管理用プログラム
US7444317B2 (en) 2002-06-28 2008-10-28 Microsoft Corporation System and method for managing file names for file system filter drivers
WO2004046971A1 (en) * 2002-11-14 2004-06-03 Isilon Systems, Inc. Systems and methods for restriping files in a distributed file system
US6993603B2 (en) * 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
US7610348B2 (en) * 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
US7409494B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US7409511B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Cloning technique for efficiently creating a copy of a volume in a storage system
US7617321B2 (en) * 2004-05-07 2009-11-10 International Business Machines Corporation File system architecture requiring no direct access to user data from a metadata manager
US20060026161A1 (en) * 2004-07-16 2006-02-02 Henseler David A Distributed parallel file system for a distributed processing system
US7284150B2 (en) * 2004-09-22 2007-10-16 International Business Machines Corporation System and method for reliably storing data and providing efficient incremental backup and asynchronous mirroring by preferentially handling new data
US7610307B2 (en) * 2004-11-30 2009-10-27 Microsoft Corporation Method and system of detecting file system namespace changes and restoring consistency

Also Published As

Publication number Publication date
CN1783082A (zh) 2006-06-07
AU2005211571A1 (en) 2006-06-15
US7496565B2 (en) 2009-02-24
RU2005133383A (ru) 2007-05-10
CN100535899C (zh) 2009-09-02
BRPI0504679A (pt) 2006-07-11
KR20060060548A (ko) 2006-06-05
RU2408060C2 (ru) 2010-12-27
US20060116985A1 (en) 2006-06-01
JP2006155607A (ja) 2006-06-15
EP1669894A3 (en) 2007-03-07
AU2005211571B2 (en) 2010-10-21
KR101120686B1 (ko) 2012-03-23
EP1669894A2 (en) 2006-06-14
CA2524541A1 (en) 2006-05-30
MXPA05011696A (es) 2007-11-14

Similar Documents

Publication Publication Date Title
JP4809663B2 (ja) ファイルシステムと名前空間一貫性を維持するための方法およびシステム
US7610307B2 (en) Method and system of detecting file system namespace changes and restoring consistency
US7783677B2 (en) Tracking file system namespace changes during transactions
US6850959B1 (en) Method and system for transparently extending non-volatile storage
US9773017B2 (en) Method of configuring a virtual application
JP4348036B2 (ja) ファイル中にバージョン固有プロパティを作成し保持する方法およびシステム
US9182969B1 (en) Using disassociated images for computer and storage resource management
US6802025B1 (en) Restoration of a computer to a previous working state
US8296264B1 (en) Method and system for file-level continuous data protection
JP4416366B2 (ja) 分散型環境においてバージョン固有プロパティを作成し維持するための方法、および、システム
US20060117018A1 (en) Method and system for caching remote files locally
US20060117048A1 (en) Method and system of synchronizing filter metadata after a restore
US20060101476A1 (en) Method and system for recording and replaying input-output requests issued by a user-mode program
JPH11327981A (ja) 増分ファイルシステム
KR20080097196A (ko) Fat 볼륨 상의 개별적인 파일들은 압축하고, 그 외의 파일들은 비압축 상태로 유지하기 위한 컴퓨터 구현 방법, 시스템 및 컴퓨터 판독 가능 매체
US7546305B2 (en) File archival
US7421560B2 (en) Method and system of computing quota usage
US20090307276A1 (en) Migration using file system links
US7653642B2 (en) Auto quota
WO2008021528A2 (en) Systems and methods for a snapshot of data
US20100293197A1 (en) Directory Opportunistic Locks Using File System Filters

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110725

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110816

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110819

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140826

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees