JP2003530646A - トランザクショナルファイルシステム - Google Patents

トランザクショナルファイルシステム

Info

Publication number
JP2003530646A
JP2003530646A JP2001575287A JP2001575287A JP2003530646A JP 2003530646 A JP2003530646 A JP 2003530646A JP 2001575287 A JP2001575287 A JP 2001575287A JP 2001575287 A JP2001575287 A JP 2001575287A JP 2003530646 A JP2003530646 A JP 2003530646A
Authority
JP
Japan
Prior art keywords
file
transaction
request
version
computer
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.)
Granted
Application number
JP2001575287A
Other languages
English (en)
Other versions
JP4219589B2 (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 JP2003530646A publication Critical patent/JP2003530646A/ja
Application granted granted Critical
Publication of JP4219589B2 publication Critical patent/JP4219589B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/18File system types
    • G06F16/1865Transactional file systems
    • 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/953Organization of data
    • Y10S707/959Network
    • 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
    • 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/99932Access augmentation or optimizing
    • 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/99937Sorting
    • 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/99938Concurrency, e.g. lock management in shared database
    • 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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • 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/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • 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/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

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

Abstract

(57)【要約】 複数のファイルシステム動作をユーザレベルトランザクションの一部として実行することができるトランザクショナルファイルシステム。アプリケーションは、ファイルに対する動作またはスレッドのファイルシステム動作が、トランザクションの一部として処理されなければならないことを指定し、アプリケーションにトランザクションコンテキストに関連するファイルハンドルが与えられる。トランザクションコンテキストに関連するファイルシステム要求に関して、ファイルシステム内のコンポーネントが、トランザクショナル挙動との一貫性を有する動作を管理する。コンポーネントは、分散トランザクションのリソースマネージャとすることができるが、変更されたページのコピーを追跡することによってファイルの複数のバージョンを提供することによってデータ分離を提供し、トランザクショナルリーダーが、トランザクショナルライタがトランザクションをコミットし、リーダーがファイルを再オープンするまで、トランザクショナルライタによって行われるファイルに対する変更を受け取らなくなる。コンポーネントは、ログ記録および回復を容易にする複数レベルログでの名前空間ログ記録動作も処理する。ページデータもまた、メインログと別にログ記録され、システムクラッシュの前にページが完全にディスクにフラッシュされたかどうかをログが判定できるようにする一意の署名を有する。名前空間分離は、トランザクションが分離ディレクトリを介してコミットするまで提供され、これによって、コミットされるまでは、トランザクションが、それ自体の動作の影響を見るが、他のトランザクションの動作の影響は見ない。ネットワーク上のトランザクションも、リダイレクタプロトコルを介して容易にされる。

Description

【発明の詳細な説明】
【0001】 (発明の分野) 本発明は、一般的にコンピュータシステムおよびファイルシステムを対象とす
る。
【0002】 (発明の背景) 通常のファイルシステムは、ファイルまたはディレクトリの新規作成、ファイ
ルまたはディレクトリの削除または名前の変更、およびファイル内容の操作を含
む、ファイル階層を操作する機構を提供する。特定のファイルシステムは、単一
の下位動作すなわちプリミティブの完了に関するある保証を提供する。たとえば
、ファイルを新規作成するプリミティブは、成功裡に完了するか、またはそのフ
ァイル作成動作の何らかの部分的な効果がシステムによって元に戻される(アン
ドゥされる)かのいずれかになる。
【0003】 しかし、ユーザレベルでの複数のファイルシステム動作は、ファイルシステム
内で一緒に結びつけられない可能性がある。たとえば、現在、ファイルシステム
が、4つのファイルを作成し、3つの他のファイルを削除し、もう1つのファイ
ルの名前を変更するが、これらの動作のどれかが失敗した場合に、他の動作のい
ずれかを元に戻す方法はない。その結果、アプリケーションなどの上位(ユーザ
レベル)処理が、そのような複数の動作の管理すなわち、どのアクションをどの
ファイルおよび/またはディレクトリに適用するかをファイルシステムに指定す
るのに使用される。
【0004】 しかし、この解決策にはそれ自体の短所がある。ウェブサイトが、一貫したル
ックアンドフィールをサイトに与える形で互いにリンクされた20個のウェブペ
ージを有する例を検討する。サイトの更新中に、システムに障害が発生し、一貫
性のない状態が引き起こされる可能性がある。たとえば、更新を実行するアプリ
ケーションが、障害の時点で、一部のファイルを削除し終えたが、これらのファ
イルをポイントしていた他のファイルからのリンクを削除していない場合がある
。このサイトを見るユーザは、ウェブページの一部を見るが、削除されたページ
へのリンクをクリックした時にエラーメッセージを受け取る。
【0005】 一貫性のない状態で終わる可能性に対して保護するためには、ウェブページフ
ァイル階層全体を、階層内のファイルを変更する前に普通にコピーする。障害の
場合に、保存された階層をコピーバックする。しかし、このファイルのコピーは
低速であり、コピープログラムが、システムのどの部分が更新されるかを事前に
知る必要があり、ファイルのどれかが偶然にコピーされない場合に回復不能にな
るので、エラーになりやすいという点で比較的ぎこちない。
【0006】 ファイルが定位置で変更される場合、上位処理を使用してファイルを更新する
時に、進行中のどんな変更も、サイトを見るユーザに可視になる。たとえば、上
で説明したウェブサイトでは、どんな変更も、ファイル(および名前階層)がア
プリケーションによって変更されている間に、システムの既存のユーザに可視に
なる。システム状態は、通常、すべての変更が行われるまでは一貫性がないので
、ユーザは、その一貫性のなさを見る可能性がある。たとえば、既存のユーザが
、ウェブページ内のリンク(URL)を見、それをクリックし、削除されたペー
ジで終わる場合があり、これは、アプリケーションがページを削除したが、その
ページをポイントするリンクをまだ除去していない時に発生するイベントである
【0007】 ウェブページ更新のほかに、他のプログラムが、一貫性のある形で情報を保存
する能力を同様に制限される。たとえば、通常のワードプロセッサアプリケーシ
ョンまたはスプレッドシートアプリケーションは、システム障害の後に発生する
可能性がある一貫性のない状態を回避するために、一時ファイルを使用して、名
前の変更動作および削除動作によって完全な保存を実行する。そのようなアプリ
ケーションが、異なるデータソースにまたがって情報を分配しようとする場合も
ある。たとえば、アプリケーションが、表データをSQL Serverに保管
し、ファイルをファイルサーバおよび/またはインターネットサーバに保管しよ
うとする場合があり、たとえば、そのようなファイルに、ワードプロセッサ文書
、プレゼンテーションチャート、および/またはウェブページが含まれる場合が
ある。しかし、調整され統一された形でのそのような情報の保存をサポートする
機構は、現在存在しない。たとえば、そのような情報の保存中にシステムが障害
を発生する場合に、情報の一部が保存されるが、それ以外は保存されず、やはり
一貫性のない状態につながる。
【0008】 (発明の概要) 簡単に言えば、本発明は、それを介して複数のファイルシステム動作を単一の
ユーザレベルトランザクションの一部として実行することができる、システムお
よび方法を提供する。本発明のトランザクショナルファイルシステムは、ユーザ
が、ファイルシステム内のトランザクションのスコープおよび期間を選択的に制
御できるようにする。
【0009】 ファイルのオープン中または作成中に、アプリケーションが、そのファイルオ
ープンのインスタンスに対する動作がトランザクションの一部として扱われなけ
ればならないかどうかを指定する。さらに、このシステムは、トランザクショナ
ルに操作することだけができるファイルを永続的にマークする能力を提供し、ア
プリケーションは、オープン/作成時にグローバル一意id(GUID)を介し
てトランザクションを指定する。新規ファイル作成に関して、親ディレクトリが
、被トランザクションとしてマークされ、アプリケーションは、トランザクショ
ンをスレッド/プロセスに関連付けることができ、これによって、そのようなス
レッド/プロセスによるファイル操作が、指定されたトランザクションのコンテ
キスト内でトランザクション処理される。さらに、アプリケーションは、子スレ
ッド/プロセスがトランザクションコンテキストを継承することをシステムに指
示する(たとえばAPIを介して)ことを選択することができ、アプリケーショ
ンが、アプリケーションソースコードに対する大きい変更なしで、トランザクシ
ョンを利用できるようになる。
【0010】 ファイルがトランザクション的にオープンされた後に、このシステムは、ファ
イルのハンドルに対する読取、書込、削除、または名前の変更などの動作を、ト
ランザクションの一部として自動的に含める。その結果、アプリケーションは、
既存のファイルシステムAPIを呼び出し、既存の動作単位のセマンティクスを
見続け、なおかつトランザクションの一部として動作を含めることができる。ア
プリケーションは、使いたいだけいくつでもトランザクションを使用することが
でき、他のアプリケーションとトランザクションを共有することができ、望みの
数のスレッド/プロセスにトランザクションを共有させることなどができる。ト
ランザクションは、異なるコンピュータに常駐するファイルに関して行われるフ
ァイルオープンの際に指定することができる。
【0011】 本発明の他の態様は、障害が発生したトランザクションからの回復可能性を使
用可能にするためのログ記録を対象とする。トランザクションの下で、システム
によって行われる変更は、システム障害およびアプリケーション障害を含むなん
らかの理由でトランザクションに障害が発生した場合に元に戻され、そのトラン
ザクションに関してシステムによって行われる変更は、システムがアプリケーシ
ョンの代わりにトランザクションを成功裡にコミットする場合に、システム障害
(たとえば停電)に耐えることが保証される。これは、複数レベルログ記録機構
と、より下位のログ記録される動作が成功裡にコミットされたかどうかを判定し
、これによって、より上位のログ記録される動作が実際に発生したかどうかを判
定する機構とを介して達成される。
【0012】 データ変更は、動作イベントを1つのログに、また、トランザクションの実際
のデータ書込の詳細を別のログ、たとえばページストリームに分離することによ
ってもログ記録される。ある機構がログ記録された署名を書き込み、後でログ記
録されたレコードおよびデータの両方と比較して、ログ記録されたレコードがそ
れに対応するデータページと同期化されているかどうかを判定し、ログがデータ
に関して特定の順序でディスクに書き込まれるという要件をなくす。
【0013】 本発明の他の態様には、トランザクションおよび他のファイルシステム動作の
間での名前空間およびファイルデータの分離の提供が含まれる。名前空間分離は
、どの名前がどのトランザクションに属するかを追跡する分離ディレクトリの使
用によって達成される。その結果、変更するトランザクションがまだアクティブ
である間、所与のトランザクションについてシステムによって行われる変更のど
れもが他のトランザクションにとって不可視になり、変更するトランザクション
が成功裡にコミットした後に限って可視になる。トランザクション非対応ファイ
ルハンドルは、変更が起きた時にその変更を見る。したがって、第1トランザク
ション中に削除されるファイルは、もはやその第1トランザクションまたは非ト
ランザクションによって見られなくなるが、第1トランザクションが完了するま
では、他のトランザクションから可視のままになる。
【0014】 そのような名前空間分離を達成するために、元のNTFSディレクトリにリン
クされた分離ディレクトリが作成され、通常のNTFS親ディレクトリではなく
、分離ディレクトリに適当なファイル名が追加される。たとえば、削除動作に関
して、削除されるファイルの名前が、そのファイルがNTFS親ディレクトリか
ら除去されるのと同時に、分離ディレクトリに追加される。コミットの前には、
異なるトランザクションによるこのファイルへの後続アクセスが、分離ディレク
トリを使用してサービスされ、これによって、そのファイルが見つかり、削除さ
れていないとみなされる。同様に、トランザクションがファイルを作成する場合
に、その名前が、NTFSディレクトリならびに親NTFSディレクトリにリン
クされた分離ディレクトリに追加される。そのファイルを作成したトランザクシ
ョンは、そのファイルを見るが、他のトランザクションにとって、その名前は、
ファイルのオープンまたは親NTFSディレクトリのリスティングに関してフィ
ルタアウトされる。分離ディレクトリエントリは、トランザクションがコミット
するか中断する時に、分離ディレクトリから除去される。
【0015】 したがって、本発明は、トランザクション機構をファイルシステムに組み込み
、アプリケーションが1つまたは複数のファイルに対して複数のトランザクショ
ナル動作を簡単に実行できるようにし、外部トランザクション機構に関連する問
題を克服する。このようにして、複数のファイルシステム動作を、ファイルシス
テム内でトランザクション的な形で一緒に結び付け、動作が一緒にコミットされ
るか、部分的なアクションのいずれもが元に戻されるかのどちらかになるように
する。さらに、1つのトランザクションの動作およびデータ変更が、別のトラン
ザクションの動作およびデータから分離される。
【0016】 他の長所は、図面と共に下の詳細な説明を考慮することから明白になる。
【0017】 (発明の詳細な説明) 例示的オペレーティング環境 図1および以下の説明は、本発明を実施することができる適当なコンピューテ
ィング環境の短い一般的な説明を提供することを意図されたものである。必要で
はないが、本発明を、プログラムモジュールなどのパーソナルコンピュータによ
って実行されるコンピュータ実行可能命令の一般的な文脈で説明する。一般に、
プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネ
ント、データ構造体、および、特定のタスクを実行するかまたは特定の抽象デー
タ型を実施する類似物が含まれる。
【0018】 さらに、当業者は、ハンドヘルドデバイス、マルチプロセッサシステム、マイ
クロプロセッサベースまたはプログラマブルな消費者電子製品、ネットワークP
C、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む、他
のコンピュータシステム構成を用いて本発明を実践できることを諒解するであろ
う。本発明は、通信ネットワークを介してリンクされたリモート処理装置によっ
てタスクが実行される分散コンピューティング環境でも実践することができる。
分散コンピューティング環境では、プログラムモジュールを、ローカルとリモー
トの両方のメモリストレージデバイスに配置することができる。
【0019】 図1を参照すると、本発明を実施する例示的システムに、普通のパーソナルコ
ンピュータ20または類似物の形の汎用コンピューティングデバイスが含まれ、
このパーソナルコンピュータ20には、処理ユニット21、システムメモリ22
、および、システムメモリを含むさまざまなシステム構成要素を処理ユニット2
1に結合するシステムバス23が含まれる。システムバス23は、メモリバスま
たはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのい
ずれかを使用するローカルバスを含む、複数のタイプのバス構造のいずれかとす
ることができる。システムメモリには、読取専用メモリ(ROM)24およびラ
ンダムアクセスメモリ(RAM)25が含まれる。起動中などにパーソナルコン
ピュータ20内の要素の間の情報の転送を助ける基本ルーチンを含む基本入出力
システム26(BIOS)が、ROM24に保管される。パーソナルコンピュー
タ20には、さらに、図示されないハードディスクから読み取り、これに書き込
むハードディスクドライブ27、取外し可能磁気ディスク29から読み取り、こ
れに書き込む磁気ディスクドライブ28、およびCD−ROMまたは他の光学媒
体などの取外し可能光ディスク31から読み取り、これに書き込む光ディスクド
ライブ30が含まれる。ハードディスクドライブ27、磁気ディスクドライブ2
8、および光ディスクドライブ30は、それぞれハードディスクドライブインタ
ーフェース32、磁気ディスクドライブインターフェース33、および光学ドラ
イブインターフェース34によってシステムバス23に接続される。ドライブお
よびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構
造体、プログラムモジュール、およびパーソナルコンピュータ20の他のデータ
の不揮発性ストレージを提供する。本明細書で説明する例示的実施形態ではハー
ドディスク、取外し可能磁気ディスク29、および取外し可能光ディスク31が
使用されるが、磁気カセット、フラッシュメモリカード、ディジタルビデオディ
スク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読取専用
メモリ(ROM)、および類似物などの、コンピュータによってアクセス可能な
データを保管することができる他のタイプのコンピュータ可読媒体を、例示的動
作環境で使用できることを、当業者は諒解するであろう。
【0020】 オペレーティングシステム35(好ましくは、Microsoft Corp
oration社のWindows(登録商標)2000、旧称Windows
(登録商標)NT)を含む複数のプログラムモジュールを、ハードディスク、磁
気ディスク29、光ディスク31、ROM24、またはRAM25に保管するこ
とができる。コンピュータ20には、Windows NT(登録商標)ファイ
ルシステム(NTFS)などの、オペレーティングシステム35に関連するか含
まれるファイルシステム36、1つまたは複数のアプリケーションプログラム3
7、他のプログラムモジュール38、およびプログラムデータ39が含まれる。
ユーザは、キーボード40およびポインティングデバイス42などの入力デバイ
スを介してパーソナルコンピュータ20にコマンドおよび情報を入力することが
できる。他の入力デバイス(図示せず)に、マイクロホン、ジョイスティック、
ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、または類似物を含める
ことができる。これらおよび他の入力デバイスは、しばしば、システムバスに結
合されるシリアルポートインターフェース46を介して処理ユニット21に接続
されるが、パラレルポート、ゲームポート、またはuniversal ser
ial bus(USB)などの他のインターフェースによって接続することが
できる。モニタ47または他のタイプのディスプレイデバイスも、ビデオアダプ
タ48などのインターフェースを介してシステムバス23に接続される。モニタ
47のほかに、パーソナルコンピュータには、通常は、スピーカおよびプリンタ
などの他の周辺出力デバイス(図示せず)が含まれる。
【0021】 パーソナルコンピュータ20は、リモートコンピュータ49などの1つまたは
複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環
境で動作することができる。リモートコンピュータ49は、もう1つのパーソナ
ルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他
の一般的なネットワークノードとすることができ、メモリストレージデバイス5
0だけが図1に示されているが、通常は、パーソナルコンピュータ20に関して
上で説明した要素の多数またはすべてが含まれる。図1に示された論理接続には
、ローカルエリアネットワーク(LAN)51および広域ネットワーク(WAN
)52が含まれる。そのようなネットワーキング環境は、オフィス、企業全体の
コンピュータネットワーク、イントラネット、およびインターネットでありふれ
たものである。
【0022】 LANネットワーキング環境で使用される時には、パーソナルコンピュータ2
0は、ネットワークインターフェースまたはネットワークアダプタ53を介して
ローカルネットワーク51に接続される。WANネットワーキング環境で使用さ
れる時には、パーソナルコンピュータ20に、通常はモデム54または、インタ
ーネットなどの広域ネットワーク52を介する通信を確立する他の手段が含まれ
る。モデム54は、内蔵または外付けとすることができるが、シリアルポートイ
ンターフェース46を介してシステムバス23に接続される。ネットワーク化さ
れた環境では、パーソナルコンピュータ20に関して図示されたプログラムモジ
ュール、またはその一部を、リモートメモリストレージデバイスに保管すること
ができる。図示のネットワーク接続が、例示的であり、コンピュータの間で通信
リンクを確立する他の手段を使用することができることを諒解されたい。
【0023】 本発明を、Windows(登録商標)2000オペレーティングシステムお
よびMicrosoft Windows NT(登録商標)ファイルシステム
(NTFS)に関して説明するが、当業者は、他のオペレーティングシステムお
よび/またはファイルシステムを実施でき、本発明から利益を得ることができる
ことを諒解するであろう。
【0024】 トランザクショナルファイルシステムの一般的アーキテクチャ 一般に、本明細書で使用される用語「トランザクション」、「トランザクショ
ナル」などは、本発明で複数のファイルシステム動作に適用される、ある共通の
プロパティを有する動作を指す。トランザクショナルプロパティを、通常は「A
CID」プロパティと称し、これは、atomicity(原子性)、cons
istency(一貫性)、isolation(分離)、およびdurabi
lity(耐久性)を表す。以下で理解されるように、本発明は、ファイルシス
テムと共同してこれらのプロパティを達成し、アプリケーションおよびコンピュ
ーティング一般に多数の利益をもたらす。
【0025】 図2に一般的に示されているように、アプリケーション60または類似物から
Microsoft Windows NT(登録商標)ファイルシステム(N
TFS)36(図1)などのトランザクション対応ファイルシステム62(本発
明に関して本明細書で説明される)に向けられたファイルシステム要求58が、
ディスパッチ機構66を介してNTFSコンポーネント64に達する。従来のフ
ァイルシステムに関して既知のように、たとえばI/O要求パケット(IRP)
がI/Oマネージャによってファイルシステムに送られることをもたらす可能性
があるこれらの要求を生成するために、アプリケーション60が、アプリケーシ
ョンプログラミングインターフェース(API)呼出しを行うことができる。本
発明によれば、以下で説明するように、ファイルシステム要求58のいくつかが
、トランザクションに関連し、それ以外はそうでない可能性がある。
【0026】 トランザクションがない場合に、ファイルシステム要求58は、本質的に本発
明の前と同一の形で、NTFSコンポーネント64によって直接にディスパッチ
され、処理される。同様に、以下で説明するように、トランザクションによって
開始されるか、オープントランザクションによって変更されたファイルまたはデ
ィレクトリに向けられた要求58は、普通にNTFSコンポーネント64に、お
よびNTFSコンポーネント64からディスパッチされ続ける。しかし、そのよ
うなトランザクショナル要求は、それ以外は通常の処理中の戦略的なポイントで
、ファイルシステム62の内部で実装されるものなどのTxFコンポーネント7
0へのコールアウト(コールバック)をもたらす。
【0027】 図2に示され、以下で説明されるように、TxFコンポーネント70には、外
部トランザクションサービス72およびログ記録サービス74へのインターフェ
ースが含まれ、TxFコンポーネント70は、NTFSコンポーネント64と共
に働いて、トランザクショナル要求を処理する。外部トランザクションサービス
72には、クライアント(たとえばアプリケーション60)が、トランザクショ
ンを開始するために呼び出し、後に、動作をコミットまたは中断するために呼び
出す、Microsoft Corporationの分散トランザクションコ
ーディネータ(MS DTC、または単にMTCまたはDTC)を含めることが
できる。DTCは、明確に文書化され、短い要約およびTxF70に関してそれ
が機能する範囲までを除いて、本明細書では詳細に説明しない。
【0028】 一般に、図3に表されているように、MS DTCでは、COM/OLEを介
して、アプリケーション60などのアプリケーションが、トランザクションコー
ディネータ76(図3)のメソッドすなわち、BeginTransactio
nメソッドを呼び出すことによって、トランザクションを開始する。トランザク
ションコーディネータ76は、ネットワーク内のトランザクションサーバまたは
そのローカルプロキシとすることができる。この呼び出しによって、トランザク
ションを表すトランザクションオブジェクト/コンテキスト78が作成される。
その後、アプリケーション60は、1つまたは複数のリソースマネージャを呼び
出して、トランザクションの作業を行う。本発明では、TxFコンポーネント7
0が、トランザクショナルファイルシステム動作に関するリソースマネージャと
して働く。やはり図3に示され、以下で説明されるように、ファイルシステム6
2へのAPI呼出し(たとえば、CreateFileEx 80および他のフ
ァイルシステム動作)によって、TxFコンポーネント70へのコールアウトが
生成される。
【0029】 ファイルシステム62へのアプリケーションの最初の呼出しで、ファイル、デ
ィレクトリ、またはアプリケーションの現在のスレッド/プロセスが識別され、
これにトランザクションコンテキスト78を関連付けることができる。トランザ
クションコンテキストが関連付けられる場合に、ファイルシステム62は、Tx
F70をコールアウトする。TxF70は、トランザクションの代わりの作業を
初めて実行する時に、トランザクションコーディネータ76を呼び出し、これに
よって、TxF70がこのトランザクションに用いられるリソースマネージャで
あることをトランザクションコーディネータ76に知らせることによって、トラ
ンザクションに参加する。他のリソースマネージャ84(たとえばデータベース
コンポーネントの)が、トランザクションに同様に参加することができ、それに
よって、データベースの動作およびファイルシステムの動作を、同一のトランザ
クション内で一緒にコミット(または中断)できることに留意されたい。
【0030】 TxF70が、図3に一般的に示されているように、ITransactio
nオブジェクト78と共に来るトランザクション識別子(ID)を使用して、ト
ランザクションに関する参加を必要とする時を判定するために、TxFコンポー
ネント70のトランザクションマネージャ82レイヤが、トランザクションID
のトランザクションテーブル86内で維持される既知の参加しているトランザク
ションに対してIDを検査する。既にリストされている場合に、トランザクショ
ンIDおよびトランザクション参照が、I/O要求パケット(IRP)で記録さ
れ、IRPが継続する。NTFSでのIRPの使用は、明確に文書化され、説明
を簡単にするために本明細書では詳細に説明しない。しかし、トランザクション
がテーブル86にリストされていない場合には、TxFは、TxF70が、この
トランザクションに関連付けられる必要があるリソースマネージャであることを
トランザクションコーディネータ76に通知し、参加したトランザクションのテ
ーブル86にトランザクション識別子を保管する。
【0031】 具体的に言うと、トランザクションが、テーブル86にリストされていない新
規トランザクションである時に、トランザクションコーディネータ76への参加
が必要である。このために、TxFマネージャ82は、プロキシ88を使用して
、OLEトランザクションまたは別のプロトコルを使用してトランザクションコ
ーディネータ76と通信する。本発明と共に使用するのに適する代替プロトコル
および類似物には、XA(X/Openの)、TIP(Transaction
Internet Protocol)、および/またはオペレーティングシ
ステム内の固有のトランザクションコントロールが含まれる。CreateFi
leEx 80要求は、ITransactionオブジェクト78を(たとえ
ばDTCのItransactionTransmitterメソッドを介して
)バイトのフラットコレクションにマーシャリングする。参加が必要な場合には
、これらのバイトが、プロキシ88に送られ、プロキシ88は、DTCのITr
ansactionReceiverメソッドを呼び出して、参加に必要なIT
ransactionオブジェクト78を取り戻す。プロキシ88は、DTCオ
ブジェクトITransactionResourceAsyncおよびITr
ansactionEnlistmentAsyncを維持する。ITrans
actionResourceAsyncは、トランザクションコーディネータ
76が2フェーズコミットを駆動するために呼び出すTxFコールバックルーチ
ンを実装し、参加呼出しと共に供給される。ItransactionEnli
stmentAsyncは、IResourceManager::enlis
t()によって返され、これには、2フェーズコミットコントロールの確認のた
めにTxF70が呼び出すメソッドが含まれる。プロキシ88は、Itrans
actionResourceAsyncおよびItransactionEn
listmentAsyncのメソッドと、TxFコンポーネント82とプロキ
シ88との間の通信に関するファイルシステムコントロール(FSCTL)ベー
スのリモートプロシージャコール(RPC)との間の仲介物として働く。
【0032】 TxFコーディネータプロキシに、DTCコーディネータプロセスと同一のプ
ロセスで動作させることが実行可能であり、トランザクションマネージャをカー
ネル内に移動し、これによってプロセス切換えのオーバーヘッドを除去すること
も実行可能であることに留意されたい。DTCプロキシスタブをカーネル内に移
動して、ユーザモードプロキシを作成する際のTxF作業の必要をなくし、これ
と同時に、TxFプロキシからトランザクションマネージャへの余分なプロセス
切換えを除去することもできる。TxFプロキシは、TxFプロキシによる作業
を必要とするDTCコーディネータと同一プロセス内で動作することができるが
、これは、前の解決策と同数のプロセス切換えを有することになる。
【0033】 参加の後に、トランザクションが進行する際に、トランザクションコーディネ
ータ76は、トランザクションに参加したTxF70(および、おそらくは、他
のTxFまたはデータベースリソースマネージャなど、他のリソースマネージャ
84)を含むリソースマネージャのそれぞれを記憶する。これによって、ファイ
ルシステム情報もコミットするトランザクションの一部として、他の情報(たと
えばデータベース情報)をコミットできるようになり、また、複数のトランザク
ション対応ファイルシステム(たとえばリモートマシン上の)ファイルを、同一
のトランザクションの一部としてコミットできるようになることに留意されたい
【0034】 通常、アプリケーション60は、トランザクションをコミットするためにトラ
ンザクションコーディネータ76のCommitトランザクションメソッドを(
COMを介して)呼び出すことによって、トランザクションを完了する。トラン
ザクションコーディネータ76は、2フェーズコミットプロトコルをすべて実行
して、参加したリソースマネージャのそれぞれにコミットさせる。2フェーズコ
ミットプロトコルによって、すべてのリソースマネージャがトランザクションを
コミットするか、または中断することが保証される。第1フェーズで、トランザ
クションコーディネータ76が、TxFコンポーネント70を含むリソースマネ
ージャのそれぞれに、コミットの準備ができているかどうかを尋ねる。リソース
マネージャが肯定的に応答する場合に、第2フェーズで、トランザクションコー
ディネータ76が、リソースマネージャにコミットメッセージをブロードキャス
トする。リソースマネージャのどれかが否定的に応答するか、または準備要求に
応答できない場合、および/またはトランザクションの一部で障害が発生する場
合に、トランザクションコーディネータ76は、トランザクションが中断するこ
とをリソースマネージャに通知する。また、アプリケーションが完了できない場
合に、アプリケーション60が、Abortトランザクションメソッドを呼び出
す。アプリケーションに障害が発生した場合には、トランザクションコーディネ
ータ76が、アプリケーションの代わりにトランザクションを中断する。その後
、TxF70を含むさまざまなリソースマネージャが、以下で説明するように、
部分的なアクションを元に戻す。
【0035】 したがって、TxFコンポーネント70は、標準トランザクションサービス(
DTCなど)に関してリソースマネージャとして働き、これによって、真のユー
ザ定義トランザクションサポートが、ファイルシステムに拡張される。NTFS
を用いると、以下で説明するように、TxFが、過渡的なファイルごとおよびス
トリームごとのトランザクション状態を普通のNTFS構造体にリンクできるよ
うになることに留意されたい。
【0036】 本発明の一態様によれば、アプリケーション60は、トランザクションにファ
イルシステム動作を含めることを選択することができる。これは、ファイルが被
トランザクションとしてマークされ、それに対する動作がトランザクショナルに
実行されるようにファイルごとに、または、スレッド/プロセスが被トランザク
ションとしてマークされ、そのスレッド/プロセスによって行われる動作がトラ
ンザクショナルに実行されるスレッド/プロセスごとに、達成することができる
【0037】 トランザクションにファイルを含めるために、CreateFile WIN
32 APIの変形であるCreateFileExアプリケーションプログラ
ミングインターフェース(API)呼出し(以下で説明する)と共に使用するこ
とができる被トランザクションモードフラグ(たとえばビット)を定義する。こ
のフラグがセットされている時に、本発明のシステムは、このファイルを自動的
にトランザクションコンテキストに含める。この目的のために、図3に一般的に
示されているように、作成要求80がI/O要求パケット(IRP)を介してフ
ァイルシステム(NTFS)62に来る時に、既存のトランザクションコンテキ
スト78を、そのコンテキスト78にポインタを渡すことによって要求にアタッ
チすることができ、これによって、ファイルを、既存のトランザクションコンテ
キスト78の一部として作成/オープンできるようになる。その代わりに、Cr
eateFileEx API呼出しのItransactionポインタへの
ポインタがNULLである場合に、Microsoft(登録商標)Trans
action Server(MTS)/コンポーネントオブジェクトモデル(
COM)のように、コンテキストがスレッドから自動的に選択される。成功裡の
作成/オープン要求80に応答して返されるファイルハンドル90に、トランザ
クションコンテキスト78へのポインタが含まれる。その後、そのハンドル90
を用いて行われる呼出しは、ポインタを介して、トランザクションコンテキスト
を関連付けられているものとして認識され、そのトランザクションコンテキスト
から関連するトランザクションが識別され、そのハンドルを使用するファイルシ
ステム動作が、トランザクションが終了されるまでトランザクションの代わりに
実行される。
【0038】 CreateFileEx APIは、既存のCreateFile Win
32 APIの適当なスーパーセットであり、トランザクションモードをセット
するためのフラグ「FILE_FLAG_TRANSACTED」をとる「dw
AdditionalFlags」DWORDパラメータが追加されている。ま
た、トランザクションコンテキストオブジェクトをポイントすることができるパ
ラメータ、LPUNKNOWN punkTransactionも定義され、
これがNULLの場合には、上で説明したように、オブジェクトが現在のMTS
/COMコンテキストから選択される。
【0039】 スレッド/プロセスを被トランザクションとしてマークするために、SetT
ransactedFiles APIが設けられ、このAPIでは、Crea
teFile/CreateFileEx呼出しの組を、効果的にそれらが被ト
ランザクションモードフラグをセットされているかのように扱う。特定のCre
ateFileExが、ヌルでないITransactionオブジェクトポイ
ンタを指定する場合には、そのオブジェクトが、トランザクションコンテキスト
78に使用され、そうでない場合には、MTSトランザクションオブジェクトが
、スレッドから選択される。
【0040】 SetTransactedFiles APIは、スレッド/プロセスを被
トランザクションとしてマークし、これによって、そのスレッド/プロセスを介
するすべてのファイルシステムアクセスをトランザクション処理するのに使用さ
れる。3つの異なるフラグをセットすることができる、すなわち、セットされた
時に、現在のスレッドからのすべてのファイルシステムアクセスをトランザクシ
ョン処理されるようにするフラグと、セットされた時に、現在のプロセス内のス
レッドのそれぞれからのすべてのファイルシステムアクセスをトランザクション
処理されるようにするフラグと、セットされた時に、現在のプロセスから作成さ
れた子プロセスがこれらのフラグのうちの第2および第3をセットされるように
するフラグである。したがって、スレッド/プロセスを、作成されるプロセスが
このモードを継承する形でマークすることが可能であり、これは、既存のアプリ
ケーションがトランザクション処理されるNTFSを利用できるようになるので
、非常に強力な機構である。さらに、これによって、アプリケーションが、被ト
ランザクションモードビットを有しない、deleteFileおよびcopy
Fileなどのファイルシステム動作を行えるようになる。この特徴は、トラン
ザクション処理されるコマンドラインバッチスクリプトを可能にするに使用する
こともできる。以下で、SetTransactedFiles APIを説明
する。
【0041】 SetTransactedFiles( [in] DWORD dwMode, // 列挙型TxFILEMODEからの0または1個以上の値。 // この値には、dwMaskパラメータによって // 示される、セットされるフラグの新しい // 設定が含まれる。 [in] DWORD dwMask, // 列挙型TxFILEMODEからの0または1個以上の値。 // このマスクに存在するフラグの値だけが、 // SetTransactedFiles呼出しによって影響 // を受ける。 [out] DWORD* pdwPrevMode // オプション。与えられた場合に、 // ここを介して、前のモードが呼出し元に // 返される。 );
【0042】 正しいフラグ値は、次の通りである。 Enum TxFILEMODE { TxFILEMODE_THISTHREAD = 0x00000001, // 現在のスレッド TxFILEMODE_ALLTHREADS = 0x00000002, // プロセス内のすべて // のスレッド TxFILEMODE_CHILDPROCESSES = 0x00000004, // このモードがセッ // トされている間に現 // 在のプロセスから作 // 成されるすべての子 // プロセスが、自動的 // に_ALLTHREADSおよ // び_CHILDPROCESSES // をセットされるよう // にする TxFILEMODE_ALL = 0xFFFFFFF };
【0043】 図4に示されているように、作成/オープン以外のファイル動作について、ア
プリケーション60は、たとえばファイル読取動作を要求するAPI呼出し92
を介して、ハンドル90をファイルシステムに供給し、これによって、その中の
トランザクションコンテキストポインタを介して、ファイルシステムが、トラン
ザクションコンテキストを突き止めることができる。上で説明したように、Tx
F70がトランザクションに参加しなければならない場合があることに留意され
たい。ファイルハンドル90内でポイントされるトランザクションコンテキスト
のゆえに、ファイルシステムは、この動作がトランザクションに含まれることな
らびに特定の関連するトランザクションの識別子を知る。トランザクションコン
テキストにファイルを含めることは、読取、書込、ファイル作成、および削除を
含むファイルに対する動作がトランザクション処理されることを意味する。任意
の数のファイルシステム要求を、単一のトランザクション内でグループ化し、原
子的で耐久性がある形でコミットまたは中断することができる。さらに、どの瞬
間でも、任意の数のトランザクションを進行中にすることができ、各トランザク
ションはお互いから分離される。
【0044】 トランザクショナルアクセス−読取および書込の分離 上で説明したように、トランザクション処理されるアクセスに関してファイル
をオープンまたは作成することができる。現在、率直で安全で予測可能な挙動を
もたらすために、このシステムでは、システム内のアップデータ(ライタ)トラ
ンザクションの数を、すべての所与の時刻に1つに制限する、すなわち、複数の
トランザクションが読取/書込(RW)アクセスのためにファイルを同時にオー
プンすることを試みる場合に、ファイルオープンの時にエラーが返される。した
がって、これらの制約は、(ストリームレベルではなく)ファイルレベルに置か
れる。この制約は、ファイルのコミットまたは中断まで、ファイルと共にとどま
る。
【0045】 しかし、より微細な粒度を有するシステムを実施することが、代替案として実
行可能であり、たとえば、ファイルを複数のライタがオープンすることができる
が、どのライタも、ファイル内の別のライタが書き込んだ(ダーティ)ページを
上書きできない、すなわち、ページがダーティになった後に、そのページがロッ
クされる。また、「last−writer−wins(最後のライタが有効)
」タイプのアクセスを、ここで実施することができる。これらのタイプのファイ
ル「書込」アクセスが、所与のシステムで相互排他的でないことに留意されたい
。というのは、あるAPIで、ファイル全体をロックする書込アクセス用にファ
イルをオープンし、もう1つのAPIで、ページ(または他のファイルセクショ
ン)ごとのロックを有する書き込みアクセス用にファイル(その時点でロックさ
れたファイルではない)をオープンし、かつ/またはもう1つのAPIで、la
st−writer−wins書込アクセスを用いることが可能だからである。
しかし、本明細書では、説明を単純にするために、ファイル全体を、トランザク
ションによる読取/書込アクセスのために所与の時に1回だけオープンできる(
すなわち、他のアクセスがシリアライズされる)ものとして本発明を説明する。
ファイルの非トランザクショナルアップデータも、書込用のトランザクショナル
オープンを用いてシリアライズされる。これによって、同一のトランザクション
に属する複数のスレッドが書込のために同時にファイルをオープンできなくなる
のではないことに留意されたい。ファイルをオープンできるリーダーすなわち読
取専用アクセスを用いるリーダーの数に対する重要な制限はない。
【0046】 本発明によれば、読取アクセスのためにあるトランザクションによってオープ
ンされるファイルは、ライタがリーダーの前と後のどちらにファイルをオープン
したかに無関係に、別のトランザクションによってファイルに対して行われる同
時変更から分離される。さらに、ファイルを変更したトランザクションがそのト
ランザクションをコミットするかどうかに無関係に、分離は、読取専用トランザ
クションのアクセスが終了するまで継続される。たとえば、図5に示されている
ように、図5でタイムラインの先頭のX/ROによって表される、読取専用アク
セスのためにページのファイルVをオープンするトランザクショナルリーダー
Xを検討されたい。ファイル内の各ページの大文字の「O」は、オープンの時の
元のデータを表すことに留意されたい。ライタYが、後に、別のトランザクショ
ンで読取/書込アクセスのためにファイルVをオープンし(Y/RW)、それ
に対する変更を行う(Y/書込)場合に、トランザクショナルリーダーXは、ラ
イタYのVでの変更ではなく、ファイルVの元のデータを見続ける。非トラ
ンザクションが、変更の際にファイル変更を見ることに留意されたい。
【0047】 以下で説明するトランザクショナル分離を達成するために、ファイルの「バー
ジョン」Vが、(少なくとも)リーダーXがそのファイルをオープンしている
時間、リーダーXのために保持される。これは、トランザクショナルライタYが
コミットした場合であってもそのままである。ライタYが、ファイル自体に変更
を加え、リーダーXによって見られるバージョンが、以下で詳細に説明するよう
に、変更が書き込まれる前に作られた元のデータのページごとのコピーであるが
、その逆すなわち、リーダーXのために元のファイルを未変更のままに保ち、ラ
イタYのために変更されたページのバージョンを保持することが実現可能である
ことに留意されたい。また、本明細書で使用される用語「バージョン」、「バー
ジョン管理される」、「バージョン管理」および類似物が、タイムスナップショ
ットの1点を指す(ソースコード管理システムなどの永続的バージョン管理と混
同してはならない)ことに留意されたい。さらに、トランザクショナルリーダー
を、非トランザクショナルライタとシリアライズして、実装を容易にすることが
できることに留意されたい。その代わりに、非トランザクショナルライタを、分
離だけの目的で「システム所有」トランザクションに含めることができる。した
がって、予測可能なトランザクショナル読取セマンティクスがもたらされ、これ
によって、被トランザクションリーダーが、所与の時点のファイルの「凍結され
た」イメージに頼ることができる。
【0048】 図5に戻って、トランザクショナルライタYが、ファイルVをコミットした
後に、トランザクショナルライタZが、図9に示されているように、読取−書込
アクセスのためにファイルV(Vから変更されていない)をオープンする(
Z/RW)ことができる。ライタZは、ライタYのコミットした変更を見、さら
にそれを変更することができる(Z 書込)。しかし、この時に、リーダーXが
、このファイルがXによって最初にオープンされた時にXが見た元のファイルペ
ージを見続け、Yがコミットした変更を一切見ないことに留意されたい。リーダ
ーXがファイルをクローズし、再オープンする場合に限って、リーダーXが、お
そらくYの変更を見る。リーダーXは、図5に示されているように、リーダーX
がファイルをクローズし、Zがコミットした後にファイルVを再オープンする
ならば、ライタZのコミットした変更も見ることができる。言い換えると、リー
ダーXは、Zがコミットする前にクローズし、再オープンする場合には、バージ
ョンVを見るが、リーダーXが、Zがコミットした後でクローズし、再オープ
ンする場合には、ファイルバージョンVを見る。以下で説明するように、その
代わりに、オープンの時に最新のコミットされたバージョンより古いバージョン
を維持し、そのオープンを可能にすることが実現可能である。
【0049】 これらのセマンティクスが、既存のファイル共有モードを使用して表現可能で
はないことに留意されたい。本明細書に記載のトランザクション分離セマンティ
クスでは、ハンドルをお互いに分離するファイル共有モードと異なって、トラン
ザクションの効果をお互いに分離する。既存のファイル共有モードは、変更され
ず、追加のシリアライゼーションに使用することができる。たとえば、「書込拒
否」ファイル共有モードを指定する、同一のトランザクションの2つの異なるス
レッドによるトランザクショナル更新のためのオープンの場合に、第2のオープ
ンが、共有違反によって拒否される。これによって、分散アプリケーションが、
複数のスレッド、プロセス、またはコンピュータにトランザクション作業負荷を
割り当てられるようになると同時に、トランザクションによって行われる変更が
、他のトランザクションまたは非トランザクションワーカーから保護される。さ
らに、これらのセマンティクスでは、各リーダーが、オープンされながら安定し
た状態を保つためにファイルの内容に頼ることができる予測可能なバージョン管
理された読取が保証される。
【0050】 下に示す互換性マトリックスで、「はい」は、モードが追加のトランザクショ
ナル制約に関する互換性を有することを意味する。
【0051】
【表1】
【0052】 したがって、更新するトランザクションは、その変更を含むファイルの最新の
バージョンを見るが、被トランザクション読取では、ファイルのコミットされた
バージョンが得られる。1つの代替案(上で一般的に説明したもの)が、オープ
ンの時点でファイルの最新のコミットされたバージョンを提供し、トランザクシ
ョナル読取のためにオープンされている間は、さらに変更が行われ、コミットさ
れる際に、バージョンの変更を許可しないことである。これの長所は、リーダー
が、オープンの期間中に、データのトランザクショナルに一貫性のあるビューを
見るようになることである。
【0053】 第2の代替案では、リーダーが見るバージョンを、最初のファイルシステムア
クセス時または他のより早い時(すなわち、TxFログでのより早い点)でのバ
ージョンとすることができる。これによって、このリーダーが開始された時の最
も最近にコミットされたバージョンを提供することができる。この開始の時は、
トランザクションが最初にシステム内のNTFSオブジェクトにアクセスした時
とすることができ、あるいは、その代わりに、この時を、統合されたシナリオで
他のAPIを使用して定義することができる(たとえば、ログシーケンス番号ま
たはLSNを使用する)。この特徴の長所は、トランザクションが、複数のファ
イルにまたがってある時点のスナップショットを得ることであり、これは、複数
のファイル依存性およびリンクがある時(たとえばHTMLファイルまたはXM
Lファイル)に有用になる可能性がある。この代替案では、同一トランザクショ
ン内の1つのファイルの複数のオープンが、そのトランザクション内の最初のオ
ープン時に選択されたバージョンを得ることができることに留意されたい。しか
し、諒解できるように、システムによって維持される必要があるバージョンヒス
トリの量は、この第2の代替案で増加する。
【0054】 用語「バージョンウィンドウ」は、その間に、選択されたバージョン管理法式
をサポートするために、前にコミットされたバージョンの組が維持される時間隔
を指す。上で説明した第1の代替案では、バージョンウィンドウが、各ファイル
によって変化し、まだアクティブであるファイルの最も古いオープンから現在の
時刻までの間の時間である。第2の方式では、ウィンドウは、システム内の最も
古いトランザクションの開始LSNから現在の時刻までの時間として定義される
。これらの方式の一方または両方をサポートすることができ、バージョンを維持
するためにTxF70によって行われる作業は、本質的に同一である。説明を単
純にするために、本発明を、本明細書では主に第1の方式に関して説明するが、
この場合、リーダーが見るバージョンは、トランザクションでの最初のオープン
の時点でのファイルの最も最近にコミットされたバージョンである。したがって
、この第1の方式では、ストリームバージョンがオープン時に決定されるので、
アプリケーションは、最新のコミットされたデータを望む場合に、ハンドルをク
ローズし、再オープンする必要がある。これは、ウェブサーバのシナリオに特に
関係する可能性が高く、この場合には、ウェブサイトを、トランザクショナルに
オンラインで更新することができ、したがって、リーダーは、新たにコミットさ
れた状態を見るために、ハンドルをクローズし、再オープンする必要がある。
【0055】 一実施形態では、変更が最終的にライタによってコミットされると仮定される
ので、ファイルへの書込が、実際のファイルに対する書込である。コミットされ
ない場合には、すべての変更が、以下で説明するように、ログに取り込まれたア
ンドゥ情報を介してロールバックされる。したがって、バージョン分離をもたら
すために、ページに向けられた各書込は、まず、古いページがトランザクショナ
ルリーダーのために保存されることをもたらす。しかし、これを逆に行うこと、
すなわち、変更がコミットされるまで元のファイルを手付かずで残し、これによ
って、リーダーではなくライタが、それのために新しいページを作成されるよう
にすることが可能である。
【0056】 Microsoft Windows(登録商標)2000(またはNT(登
録商標))オペレーティングシステムを使用する好ましい実施形態では、古いバ
ージョンのためにディスクに別のファイルを作成するのではなく、キャッシュマ
ネージャおよび仮想メモリマネージャまたはVMMの観点から、別のインメモリ
ストリームを提示する。キャッシュマネージャ、VMM、および非トランザクシ
ョナルNTFSに対するこれらの関係は、参照によって本明細書に組み込まれる
参考文献、「Inside Windows NT(登録商標)」、by He
len Custer、Microsoft Press(1993)、「In
side the Windows NT(登録商標)File System
」、Helen Custer Microsoft Press(1994)
、および「Inside Windows NT(登録商標)、Second
Edition」、by David A.Solomon、Microsof
t Press(1998)に記載されている。
【0057】 トランザクショナルリーダーのためのバージョン維持に関する仮想メモリマネ
ージャおよびキャッシュマネージャの展望からは、ファイルのより古いバージョ
ンの読取が、異なるファイルの読取のように管理される。これによって、アプリ
ケーションが、より古いバージョンを自分のアドレス空間に単純にマッピングで
きるようになり、メモリ記述子リストを使用してデータにアクセスするクライア
ント(たとえばリダイレクタ)が、透過的に動作できるようにもなる。これが可
能であるのは、Windows(登録商標)2000オペレーティングシステム
で、VMMおよびキャッシュマネージャが、ファイルシステム入出力(I/O)
に参加するからである。ファイルシステム(キャッシングされないアクセスのた
めにオープンされたファイルを除く)では、キャッシュマネージャを使用して、
データをシステムメモリにマッピングし、キャッシュマネージャは、VMMを使
用してI/Oを開始する。ダーティページ書込は、通常は、バックグラウンドス
レッドで、遅延モードで発生する。このアーキテクチャの結果として、アプリケ
ーションアドレス空間に直接にマッピングされるファイルは、キャッシュマネー
ジャとページを共有し、キャッシュマネージャは、それを得るのにどのシステム
サービスが使用されるかに無関係に、データの一貫性のあるビューを提供する。
その結果、ネットワークリダイレクタ(以下で説明する)が、データをローカル
にキャッシングすると同時に、他のクライアントとの一貫性がある形でサーバの
データを得ることに留意されたい。
【0058】 分離を達成するために、まだ読取中の最も古いコミットされたバージョンから
始めて最後に更新されたバージョンまで、複数のバージョンが維持される。各バ
ージョンは、最新バージョンに対する変更を追跡する、バージョンに関連するデ
ータ構造体を有する。未変更のページが読み取られる場合に、そのページは、フ
ァイル(キャッシュ内にあるかディスクに書き込まれた可能性がある)から読み
取られ、変更されたページが読み取られる場合には、そのページは、変更された
ページデータ(やはりキャッシュ内にある可能性がある)から読み取られる。い
くつかのバージョンが、それを読み取るトランザクションを有しない場合がある
が、それらがバージョンウィンドウ内にあり、将来にオープン要求を受ける可能
性があるので、それらバージョンのインメモリ構造体を維持することができるこ
とに留意されたい。一度もオープンされたことがないバージョンは、データペー
ジを保管するためにメモリを占有しない。最新バージョンは、ベースファイルス
トリームに対応し、更新される可能性がある。
【0059】 図6に示されているように、各バージョンは、TxF「バージョンストリーム
制御ブロック」(TxFVSCB)によって記述される。ファイルのバージョン
ストリーム制御ブロックは、時間の順でリスト内でリンクされ、最新以外の各バ
ージョンが、コミット/中断され、読取専用である。最新のバージョンは、コミ
ットされる場合とされない場合がある。
【0060】 各TxFVSCB(たとえば94)に、TxFログに記録される、トランザク
ションのコミットLSNが保管されるバージョンログシーケンス番号96(バー
ジョンLSN)が含まれる。(最も最近の)コミットされていないバージョンに
ついて、一実施形態で、このLSNが、たとえば現在の時点未満の最高のLSN
を見つけるのを容易にする、TxF定義の「MAX_LSN」である。このバー
ジョンより早いコミットされたデータの読取を望むリーダーは、変更テーブル(
たとえば98)内のエントリを使用することによって、それにアクセスするこ
とができ、変更テーブルは、TxFVSCBによってポイントされるバージョン
によって変更されたページ番号を記録するインメモリテーブル98である。Tx
FVSCB94などの各TxFVSCBには、このバージョンに対応するセクシ
ョンオブジェクトポインタ(SOP)構造体100も含まれ、これは、キャッシ
ュマネージャおよび仮想メモリマネージャによって使用され、インメモリストリ
ームを表す。状態フラグ102も設けられ、そのうちの1つが、バージョンがコ
ミットされたか否かを示す。最も新しいバージョンだけが、未コミットになりえ
ることに留意されたい。やはり含まれるのが、VersionLength10
4データフィールドと変更テーブルポインタフィールド106であり、後者には
、このバージョンによって変更されたページ番号を記録する変更テーブル98へ
のポインタが含まれる。
【0061】 図6に示されているように、変更テーブル(たとえば98)内に、ディスク
アドレスをページ番号に関連して保管して、ディスク上のページの前のバージョ
ンを見つけることができる(このバージョンでページが少なくとも1回書き込ま
れているものとして)。図6からわかるように、主にメモリを節約するために、
ページがディスク上で連続的に保管される場合に、ページ範囲を1エントリに保
管することができる。図7に、ファイルの複数のバージョンに関する変更テーブ
ル94〜94を示す。木構造などの効率的な検索構造を使用して、変更テー
ブルを編成することができる。
【0062】 ファイルが、トランザクション内で読取専用アクセスのためにオープンされる
場合に、適当なコミットされたバージョンが選択される。バージョン番号は、「
readLSN」によって識別される。readLSNは、上で説明したように
、どのタイプのバージョン管理が使用されるかに応じて、現在のLSNまたは古
いLSNのいずれかになる。選択されたバージョンは、readLSNの前の最
後にコミットされたバージョンである。たとえばバージョンが古すぎるなど、そ
のようなバージョンが存在しない場合には、オープンが失敗する。ファイルが、
TxFVSCBを関連付けられていない場合には、新しいTxFVSCBが、空
の変更テーブルと共に作成され、未コミットとマークされる。デフォルトのイン
メモリストリームが使用され、その結果、既存のキャッシュデータを読取に使用
することができるようになる。書込アクセスの場合、最新のバージョンがコミッ
トされていない場合には、それがそのまま使用されるが、そうではなく、未コミ
ットとマークされていない場合には、新しいVSCBが作成され、未コミットと
してマークされる。
【0063】 ファイルに書き込む時の分離を容易にするために、データのページ(たとえば
、ユーザレベルバッファ108)がトランザクションによって変更されるたびに
、そのページが、本質的にその場で、すなわちキャッシュ110(図8)内で編
集される。その後、キャッシュ110が、キャッシュマネージャおよび/または
VMM112によって、適当な時にディスク(または他の適当な不揮発性ストレ
ージメディア)114に書き込まれる。上で一般的に説明したように、データは
、ファイルをメモリ内でマッピングすることまたは書込APIを使用することの
いずれかによって、変更することができる。書込APIを使用する時には、通常
は、キャッシュマネージャ112が、変更をメモリ常駐ページ116にコピーす
るのに使用される。キャッシュマネージャ112が、ファイルをシステムメモリ
内にマッピングするのに使用されることに留意されたい。メモリマッピングが使
用される時には、変更は、アプリケーションによってシステムメモリページ(た
とえばページ116)に対して直接に行われ、このページは、キャッシュマネー
ジャ112がマッピングしたページと同一である。変更は、「ダーティ」ビット
を介して記録され、このビットは、メモリマッピングされたI/Oの場合にプロ
セスプライベートなページテーブルエントリ(PTE)118に変更が存在する
ことを示す。通常、これらのビットは、メモリマネージャがプロセスのワーキン
グセットからページをトリミングする時に、共有(ページフレーム番号)PFN
構造体120に伝搬される。これらのビットは、アプリケーション60によって
、システムAPIを使用してマッピングされたセクションをフラッシュすること
によって、明示的に伝搬することもできる。ダーティページが、バックグラウン
ドで周期的に書き出される可能性もあることに留意されたい。
【0064】 メモリマッピングされた変更がトランザクションに含まれることを保証するた
めに、システムは、各アプリケーションがマッピングしたセクションの仮想アド
レス範囲をコミット時にフラッシュする。このフラッシュは、それをマッピング
したアプリケーションのコンテキスト内から開始される。アプリケーションによ
って明示的にフラッシュされたページだけがトランザクションに含まれるように
するトランザクショナルセマンティクスを定義することができる(たとえば、ユ
ーザセクション内のバイトへの個々の修正ではなく、フラッシュをトランザクシ
ョナルにする)。その代わりに、セクションをマッピングし、フラッシュを行う
プロセスにアタッチ(KeAttachProcess)されるシステムスレッ
ドを介してこれを達成することができる。セクションのリストは、対応するトラ
ンザクションテーブルエントリ内で維持される。ファイルAPIによって行われ
た変更も、コミット時にディスクにフラッシュされる必要があることに留意され
たい。これは、ページング書込の時に、前のトランザクションから残っているダ
ーティページ書込と、現在のトランザクションでメモリマッピングによって行わ
れた変更とを区別することが不可能だからである。
【0065】 したがって、TxFは、トランザクションによる読取専用および読取/書込の
両方のファイルオープンをサポートする。トランザクションが、現在他のトラン
ザクションによってオープンされていないファイルを、読取専用アクセスを用い
てオープンする時に、そのファイルに関するセマンティクスは、非トランザクシ
ョナルオープンと同一である。トランザクションが、読取/書込のためにファイ
ルをオープンする場合には、TxFが、図9に示されているように、トランザク
ションごとのコンテキストを保管するために、ファイルに関して1つ、ストリー
ムごとに1つ、ストリームバージョンごとに1つの構造体を必要とする。このオ
ープンに関するデータ構造体を、図9に示すが、図9では、「ファイルオブジェ
クト」が、ユーザのファイルハンドルによってマッピングされたオブジェクトで
あり、「FCB」が、NTFSファイル制御ブロックであり、「SCB」が、オ
ープンされた指定されたストリームのNTFSストリーム制御ブロックであり、
「NP SCB」が、主にファイルマッピング用のセクションオブジェクトポイ
ンタを保持するのに使用される非ページングストリーム制御ブロックであり、「
CCB」が、FileObjectごとのコンテキスト構造体である。TxFF
O内のフラグが、ファイルがトランザクションによって読取についてオープンさ
れた時を示すことに留意されたい。
【0066】 図9では、TxFCB構造体が、TxFによって維持されるファイルごとの変
更のアンドゥデータのアンカであり、TxFCB構造体に、トランザクションへ
の参照も含まれる。TxFSCBは、ストリームバージョンのアンカであり、T
xFVSCBは、ストリームの特定のバージョンのアンドゥデータのアンカであ
る。TxFO構造体は、ストリームのバージョンへの特定のトランザクションの
アクセスを記述し、そのバージョンの関係する共有TxF構造体へのポインタを
取り込む。
【0067】 図10に示されているように、第2のトランザクションt3が、前の読取専用
トランザクションが終了する前に読取/書込のためにファイルをオープンする場
合に、ファイルの古いバージョンが、本質的にシフト(図10では右に)されて
、新しいバージョンを表す構造体の余地が作られる。したがって、図10は、フ
ァイルの現在のバージョンを変更するトランザクションt3による1つの読取/
書込オープンと、ファイルの最も最近にコミットされたバージョンにアクセスす
るトランザクションt2による読取専用オープンと、前にコミットされたバージ
ョンにアクセスするトランザクションt1によるもう1つの読取専用オープンを
表す。単純にするために、各FileObjectが同一のSCBをポイントし
、これによって、NTFSがファイルバージョンを意識しないことに留意された
い。また、各FileObjectが、一意のページングされないSCB内にセ
クションオブジェクトポインタのそれ自体の組を有する。普通は、ユーザが実際
にストリームをマッピングしない限り、読取専用トランザクションのセクション
オブジェクトポインタが使用されないことに留意されたい。キャッシングされる
アクセスは、未変更のページの現在のストリームと、変更されたページのログフ
ァイルからサービスされる。各ファイルオブジェクトのTxFOは、効果的に、
トランザクションがアクセスしているファイルのバージョンを取り込む。
【0068】 一般に、TxFトランザクションが、NTFSハンドルと独立の寿命を有する
ので、TxF構造体は、NTFS構造体と独立の寿命を有する。両方が存在する
時には、これらが、図9〜10に示されているように一緒にリンクされ、ここで
は、単一方向のリンクが、両側での明確に定義されたインターフェースを使用し
てセットアップされる。たとえば、ファイルへの被トランザクションアクセスが
発生する時に、TxFCBへのFCBリンクが検査される。NULLの場合には
、TxFルーチンを使用してTxFCBがセットアップされる。しかし、TxF
CBが既に存在する場合には、TxFファイルテーブルからTxFによってファ
イルIdを使用してルックアップされ、そうでない場合には新しいTxFCBが
割り振られる。同様に、FCBが割振り解除され、TxFCBリンクがNULL
でない時には、単一方向(NTFSからTxFへの)リンク削除のためにTxF
ルーチンが呼び出される。
【0069】 ファイルに関するTxF構造体は、被トランザクションリーダーがファイルを
オープンしていない時、または将来にそのファイルのそのバージョンをオープン
できない時に、割振り解除される。ディレクトリは、NTFSディレクトリがデ
ィレクトリ自体の削除に起因してなくなる(再帰的削除で発生する)場合であっ
ても、TxFSCB構造体に名前空間分離情報がある限り、維持される。TxF
構造体の寿命は、参照カウントを介して管理される。
【0070】 ログ記録サービス 本発明のもう1つの態様によれば、一般的に以下で説明するように、永続的状
態のログ記録および回復のために、TxF70は、ログ記録サービス74(図2
)を使用し、ログ記録サービス74は、長時間動作するトランザクションをサポ
ートするために、普通のNTFSログだけに頼るのではなく、複数レベルのログ
記録を可能にする。以下で明白になるように、これによって、多数の利益がもた
らされる。たとえば、通常のNTFSログは、サイズにおいて4メガバイト程度
であり、これは、現在は短期間のメタデータログ記録に適当であるが、通常のユ
ーザ定義トランザクションは、そのようなログを素早く使い果たす。また、ログ
記録されるTxFトランザクショナル動作の数に対して相対的に多数のログ記録
されるNTFS動作がある可能性が高い。さらに、NTFSメタデータコミット
動作は、ディレクトリをロックアップし、これによって、長時間を要するTxF
トランザクションが、ファイルシステムの性能に悪影響を及ぼす(単一レベルロ
グ記録方式を仮定した場合)。
【0071】 従来ののNTFSログは、明確に文書化されており、したがって、短い要約と
本発明のトランザクショナルファイルシステムと共に使用される範囲を除いて、
本明細書では詳細に説明しない。NTFSは、NTFSが変更を行う前に、NT
FSに対するファイルシステム動作のアンドゥレコードおよび/またはやり直す
レコードを書き込むことによって、ファイルシステム動作の中断/クラッシュ回
復を提供する。NTFSログは、ファイル作成コマンド、名前の変更など、NT
FSデータ構造を変更する動作を含む、NTFSボリュームに影響する動作を記
録する、ボリュームごとのファイルである。たとえば書き込まれたバイトなどの
ユーザファイルデータではなく、メタデータがログ記録されることに留意された
い。ログは、ファイルとして維持され、システム障害からの回復のためにアクセ
スされる、すなわち、システムがクラッシュした場合に、部分的に完了した動作
を、周知の技法を使用して元に戻すかやり直すことができる。NTFSは、耐久
性を提供しない、すなわち、NTFSは、コミット時にそのログを強制しない。
【0072】 本発明の一態様によれば、TxFトランザクションおよび回復管理は、複数レ
ベル回復機構内で、NTFSの上に階層化される。上で説明したように、TxF
は、NTFS動作を下位コンポーネントとして扱って、ユーザレベルトランザク
ションを構築する。回復に関して、TxFは、より上位のログを維持し、ログ記
録されたNTFS動作を、TxFが「データ」の前のそれ自体のTxFログを強
制するという意味で、より上位のログに関する「データ」として扱う。この場合
の「データ」は、NTFSログであり、回復可能ストア自体である。
【0073】 複数レベルログ記録を達成するために、図11に一般的に示されているように
、より下位のNTFSログ126の前へのより上位のTxFログ124の強制は
、既に使用可能なNTFS64の回復可能性を利用する形での各ログのLSN(
本明細書ではTxF LSNおよびNTFS LSNと称する)の調整を介して
達成される。NTFSトランザクションによって管理されないデータ(すなわち
、ストリームバイト自体)について、TxF70は、本質的に、以下で説明する
ように、回復可能性を完全に管理する。
【0074】 より上位のTxFログ124が、その「データ」すなわちNTFSログ126
のレコードの前に強制される(TxFログをすべてのNTFS動作の前に非効率
的に強制せずに)ことを保証するために、NTFS64がそのログ126にデー
タを強制しようとするたびにNTFS64が呼び出すTxFコールバックが提供
される。この呼出しでは、NTFS64が、フラッシュされようとしている最高
のNTFS LSNを示す。それと同時に、TxF70は、NTFSコミットL
SNを各々のTxF LSNにマッピングするために、TxFが使用した最近の
NTFSトランザクションのマップ128を維持する。TxFがNTFSコミッ
トLSNの知識を有するように、名前空間変更動作が設計されることに留意され
たい。NTFSログは、比較的低い頻度でディスクにフラッシュされるという点
で、耐久性がない。その結果、適度な数のTxFレコードが、ログバッファ内に
存在し、単一のI/O動作で一緒にディスクにフラッシュされる可能性が高い。
【0075】 コールバックに応答して、TxF70は、NTFSログで強制されている最高
のNTFSコミット−LSNに対応するTxFレコードまで、TxFログ124
を強制する。しかし、この最高のレコードまでのTxFログ124のフラッシュ
が、より最適であるに過ぎないことに留意されたい。というのは、より上位のロ
グが先にフラッシュされることを保証する他の方法(たとえば、NTFSがその
ログをフラッシュしようとしている時に、いつでも新しいTxFレコードのすべ
てをフラッシュする)で十分であるからである。回復中に、TxFがその回復を
開始できるようになる前に、NTFSが、その回復を完了する。
【0076】 これによって、TxFログ124がNTFSログ126の前にフラッシュされ
るようになるが、TxFログの末尾付近の一部のログレコードが、NTFSによ
ってコミットされないNTFS動作を実行した場合があり、そのようなレコード
が、コミットされたレコードに混ざっている可能性がある。対応するNTFS動
作がコミットされたTxFログレコードを、コミットされていないものと区別す
ることが重要である。というのは、これによって、TxFログレコードが回復中
に適用されるか否かが決定されるからである。
【0077】 理解されるように、これが重要であるのは、やり直し中に動作を繰り返すこと
も、実際には行われなかった動作を元に戻すことも正しくないからである。例と
して、TxFログにログ記録される可能性がある下記の情況を検討されたい。
【0078】
【表2】
【0079】 上の情況では、名前変更動作を逆転(元に戻す)ことが正しいかどうかを知る
ことができない。毎回逆転を単純に実行することは正しくない。というのは、名
前の変更が、NTFS内で実際に発生していない場合に、YがXに名前を変更さ
れ、Xを置き換えるからである。その後、システムリンクをオープンしようとす
る試みの際に、NTFS動作が行われなかったのでリンクが存在しないので、そ
のオープンが失敗する。ファイルXが失われ、YがXに名前を変更された。しか
し、TxF70が、名前変更が行われたか否かを確認できる場合には、アンドゥ
動作を適用するか否かを正確に判定することができる。
【0080】 動作が実際に起こった、すなわち、NTFS64によってコミットされたかど
うかを判定するために、動作を要求する前に、TxFが、対応するレコードをそ
のログ124に書き込む。その後、TxFは、TxF LSNを受け取り、これ
を、所与のファイルについて要求された動作と共にNTFS66に供給する。N
TFS66に、コミットに続いて対応する(1つまたは複数の)NTFSログレ
コードにTxF LSNを置かせることが可能ではあるが、これは非効率的であ
る。その代わりに、NTFSが動作をコミットする時に、コミットの一部として
、NTFSが、TxF LSNを、そのファイルのNTFSボリューム上で維持
されるレコードに書き込む。NTFSでは、マスタファイルテーブル130とし
て知られる構造体内で、ボリューム上の各ファイル(およびディレクトリ)に関
するレコードが、既に維持されている。したがって、TxF LSNは、図11
に一般的に示されているように、このファイル(たとえばファイル3)のレコー
ドのフィールド(たとえば132)に書き込まれる。その代わりに別のデータ
構造体を使用することができるが、ファイルごとのレコードが、各NTFSボリ
ューム上で既に使用可能であることに留意されたい。
【0081】 その後、クラッシュに続いて、回復中に、TxFがNTFSにその回復を完全
に実行させた後に、TxFは、まず、TxFログにログ記録された動作がクラッ
シュの前にディスクに対して行われたか否かを判定するために検査する(Ntf
sTxFGetTxFLSN(file−id、*TxFLsn)呼出しを介し
てNTFSを呼び出すことによって)。ファイルに関するNTFS動作が、クラ
ッシュの前にコミットされ、ディスクに存在した場合には、TxFログ124の
レコードのTxF LSNが、ファイルレコードフィールド内のTxF LSN
以下である。というのは、NTFS回復によって、ファイルレコードが復元され
ることが保証されるからである。ファイルレコード内のTxF LSNが、Tx
Fログレコード内のLSN未満である(またはそのファイルのファイルレコード
内にない)場合には、NTFS動作がコミットされなかったこと、対応するTx
Fログレコードを元に戻すために適用してはならないことがわかる。
【0082】 しかし、正しい回復を保証するために、回復ウィンドウ中にオブジェクトが削
除される場合に、TxFは、削除ログレコードがログ内で忘れられるまで、ファ
イルレコードの削除を遅延する(したがって、file−idを保存する)。こ
れは、ファイルへのシステムリンクを作成することによって行われる。さらに、
新しいファイルが作成される場合に、TxFログレコードは、NTFSが、作成
に使用しようとしているfile−idを決定する後まで、書き込まれない。こ
れによって、TxFログ内にfile−idが正確に記録される。非トランザク
ショナル作成についても、NTFSは、ファイルレコード内に現在のTxF L
SNを書き込み、これによって、file−id(シーケンス番号を含む)が回
復ウィンドウ中に再利用される場合を処理し、TxFに、この作成の前のログレ
コードをスキップさせることが期待されることに留意されたい。
【0083】 次に、NtfsTxFGetTxFLSN呼出しから、file−idが回復
時に存在しないことがわかった場合には、トランザクションがコミットされた後
だがクラッシュの前に非トランザクショナルにファイルが削除されたか、作成動
作のすぐ後にクラッシュが起きたかのいずれかである。第1の場合に、TxFが
、かかわっておらず、ファイルレコードが、回復ウィンドウ中に削除されたこと
に留意されたい。第2の場合には、TxF作成ログレコードが、TxFログディ
スクに送られたが、それに関するNTFSコミットが、持続しなかった。この第
2の場合は、作成ログレコードを処理する時に限って検出される。
【0084】 アンドゥレコードが、不完全なトランザクションの中断に使用されるので、f
ile−idが存在しないことがNtfsTxFGetTxFLSNによって見
られるレコードを、単純に無視することができる。
【0085】 中断中、クラッシュ回復中およびロールフォワード回復中に、ログによって駆
動されるやり直しアクションおよびアンドゥアクションが、NTFSフィルタド
ライバモデルのフィルタドライバスタックの最上部で開始され、中間のフィルタ
ドライバがそのアクションを見ることができるようになることに留意されたい。
やり直しアクションおよびアンドゥアクションに対応するIRPは、特別にマー
クされ、その結果、フィルタドライバが、それらを無視することを選択できるよ
うになる。これらのIRPには、通常のトランザクション状態が含まれ、ファイ
ルオブジェクトは、普通にトランザクションオブジェクトをポイントする。しか
し、トランザクションが、特別な状態であるから、TxFは、それらを特別に扱
う必要があることを知る。たとえば、TxFは、これらのアクションをトランザ
クションに含めることを試みず、また、それらを非トランザクショナルとして扱
わない。
【0086】 名前空間動作をログ記録するほかに、TxFコンポーネント70は、他の動作
の中でも、ページ変更を記録するためにログ記録サービス74と共に働く。上で
述べたように、バージョンを保存し、中断の場合のアンドゥ動作もサポートする
ために、変更がAPIを介してメモリ内のページに対して実際に行われる前に、
対応するアンドゥレコードが、TxFログ126に書き込まれる(強制されない
)。図12に示されているように、その後、ページ全体が書き込まれ(通常は、
以下で説明するTOPSストリーム134と称する、ページのインメモリおよび
オンディスクのストリームに)、これによって、バージョン管理されるリーダー
が、単一のI/O動作でページを読み取ることが可能になる。ログ書込の後に、
このファイルの変更テーブル98が、ログシーケンス番号(TxF LSNおよ
びTOPSストリーム134内のオフセット)を用いてマークされ、その後、変
更がページに適用される。
【0087】 ページングI/Oを介して変更されたページ、たとえば、ユーザがマッピング
したセクションによって変更されたページおよび/または現在書き込まれつつあ
るAPIの前の呼出しによって変更されたページから生じるものなどについて、
ページング書込が実行される。このページング書込は、バックグラウンドスレッ
ド内とすることができ、あるいは、コミット時のフラッシュの一部とすることが
できる。どの場合でも、TxF70は、まず、変更テーブル98(図6)を検査
して、アンドゥがTxFログ126に取り込まれているかどうかを調べる。そう
である場合には、システムは、テーブル98内でマークされたTxF LSNま
でTxFログ126を強制し、これは、ほとんどの場合に、I/Oなしでリター
ンする。変更テーブル98がマークされていない場合には、ページのアンドゥバ
ージョンが、獲得され、TOPSストリーム134およびTxFログ126に書
き込まれる。複数ページI/Oが、一般的である。というのは、バックグラウン
ドスレッドが、ファイル−オフセットの順でページを一緒にグループ化すること
を試みるからである。これらの場合には、複数のアンドゥが、単一の大きいI/
Oで書き込まれる。そのような場合のアンドゥは、単一の大きいI/Oで読み取
られる。
【0088】 準備レコードをTxFログ126に強制した後に、アンドゥイメージが、ディ
スク上でTxFログ126およびTOPSストリーム134にあり、変更された
ファイルページが、ファイル内のそれぞれの位置にある。その結果、コミットが
、コミットレコードをログ126に書き込むという単純なことになる。中断は、
アンドゥレコードを逆の順序で進み、それをベースファイルに適用し、その後に
ファイルをフラッシュし、その後に中断レコードを強制的に書き込むことによっ
て達成される。これらのアンドゥレコードは、中断レコードがログ126に存在
する場合には回復時に無視される。頻繁でない動作(中断)中にファイルをフラ
ッシュすることによって、大きい(ページサイズの)補正ログレコード(CLR
)をやり直しレコードとして書き込む必要がなくなり、スペースが大幅に節約さ
れることに留意されたい。
【0089】 アンドゥイメージの取得は、ページの前にコミットされたバージョンを得るの
と同一すなわち、ファイルのアンドゥイメージは、まず、ファイルの前のバージ
ョン内で検索される。イメージがメモリ内に常駐する場合には、アンドゥイメー
ジが、メモリから検索される。そうでない場合には、イメージは、キャッシング
されないI/O動作によってディスクから読み取られる。というのは、ダーティ
ビットが、プロセスプライベートであり、必ずしも既知ではないので、現在常駐
しているメモリイメージがダーティであるかどうかを判定する方法がないからで
ある。
【0090】 上で説明したように、書込用にファイルをオープンしたトランザクションによ
ってページが変更されるたびに、そのページが、その場ですなわちキャッシュ内
で編集される。キャッシュは、その後、さまざまな時にディスクに書き込まれる
(図8)。しかし、ページデータを変更する前に、古いページデータを保存する
必要があり、その結果、トランザクションが中断されるかシステムが障害を発生
した場合に、古いページデータを復元できるようにする。この目的のために、古
いページが、TOPSストリーム134にコピーされ、その変更が、TxFログ
126にログ記録される。図12に示されているように、ログレコード(たとえ
ばX)に、このページ内のオフセットが含まれ、これによって、ログ126が
データを維持する必要がなくなり、それに対応するレコードだけが維持される。
したがって、ページの復元をイネーブルするために、TxFは、経時的な変更を
シーケンシャルに記録する変更ログを使用する。バージョン管理のために、Tx
Fログ126にアクセスするのではなく、効率のために、変更テーブル98内の
TOPSストリーム134へのオフセットが使用されることに留意されたい。し
かし、システム障害の場合には、インメモリ構造体であるバージョンストリーム
制御ブロックが、回復時に存在しない。さらに、インメモリだけのファイルのす
べてのバージョンが、回復不能である。したがって、回復のために、ログ内のレ
コードを、障害中のトランザクションを中断し、障害の前にコミットされたトラ
ンザクションを耐久性のある形で完了するのに使用することができる。ログエン
トリ(またはログレコード)のシーケンシャルな性質によって、変更の順序が保
存される。
【0091】 本発明では、ページ書込に関するログレコードが、性能および他の理由から2
つの部分に分割される。メインログとインラインの部分では、他のログに関する
順序が保存され、他方の部分には、動作の詳細を提供する(かなり多数の)バイ
トすなわち変更されたページデータが含まれる。したがって、本発明の一態様に
よれば、図12に示されているように、ページがトランザクションを介して変更
されるたびに、古いページデータが、(隣接する)TOPSストリーム134に
コピーされ、変更がTxFログ126にログ記録される。上で説明したように、
トランザクショナルリーダーをコピーされたページにマッピングするためにテー
ブルを調整した後に、そのページを変更することができる。図12に示されてい
るように、ログレコード(たとえばX)に、コピーされたページのストリーム
内のこのページへのオフセットが含まれ、これによって、メインログでデータを
維持する必要がなくなり、それに対応するオフセットを有するレコードを維持す
るだけでよい。
【0092】 しかし、性能の理由から、これらのログは、異なる形でディスクにフラッシュ
される。その結果、ページもログ126も、所与の時点で持続していない場合が
あり、たとえば、ログ126がディスクにフラッシュされ、かつ/またはページ
がディスクにフラッシュされる前にシステムに障害が発生する場合がある。ペー
ジデータが失われないことを保証する単純な方法が、この2つの間の順序付けを
強制する、すなわち、ログレコードをディスクにフラッシュする前に必ずページ
をディスクにフラッシュすることである。その後、回復時にログを使用する時に
、ログレコードが存在する場合に、そのレコードに対応する正しいページバージ
ョンが、持続していることも既知になる。しかし、この順序依存性は、ログフラ
ッシュ動作が、多数の関連しない要因に依存して異なるログに対してより効率的
に動作するという点で、システム性能を大きく低下させることがわかった。たと
えば、性能を改善するために、ページは、通常は、遅延書込を使用して、たとえ
ば1時に16ページなど、複数のセットでフラッシュされるが、ログは、満杯の
時またはバックグラウンドプロセスで異なる時にフラッシュされる可能性がある
【0093】 本発明のもう1つの態様によれば、ページおよびログを、互いに関して任意の
順序で、なおかつ障害の場合に正しいページが復元されることを保証する形で、
永続ストレージにフラッシュできるようにするシステムおよび方法が提供される
。これは、ログ126およびページデータに、事実上、この2つの情報を互いに
一貫性のある状態で、たとえば時間的にリンクする情報を追加することによって
達成される。具体的に言うと、ページの現在の状態を表すサイクルカウント13
6(たとえば、1バイトだが、任意選択として1ワードまたはさらに長い単位を
使用することができる)が維持され、たとえば、サイクルカウントは、TOPS
ストリーム134へのポインタが先頭にラップアラウンドするたびに増分され、
そのサイクルカウントが、ログレコードと同期化される。
【0094】 本発明の一態様によれば、図12に示されているように、TOPSストリーム
134にコピーされたページに関連するログレコード内でサイクルカウント値を
維持することによって、同期化が達成される。これは、図12では、一般的に、
レコードのデータフィールドの一部の展開された表現を提供する、符号138の
箱によって表される。やはり図示されているように、各セクタの最後の部分(た
とえばバイト)が、それを保存するためにログレコードにコピーされる。ページ
が、本明細書に記載のようにそれぞれ512バイトの8つのセクタを含むが、諒
解されるように、他のページサイズおよび/またはセクタサイズが可能であるこ
とに留意されたい。また、ストリームデータ内の各セクタの最後の部分は、図1
2で、各セクタの最後の部分で置換されたサイクルカウントを有するページデー
タの展開された表現を提供する符号140の箱によって一般的に示されるように
、サイクルカウントに置換される。図12で表されているように、ページとログ
レコードの両方がフラッシュされる場合に、各セクタの末尾のサイクルカウント
値が、レコード内のサイクルカウント値と一致する、すなわち、両方が、一致す
る署名を有する。
【0095】 ページデータ(インラインでない部分)だけがディスクに書き込まれた場合に
は、システムは、インライン(ログ)レコードを見つけず、したがって、そのペ
ージは、見つからず、復元されるものはない。この状態は、一貫性があることが
わかっている。
【0096】 しかし、レコードがログに存在する場合には、ページは、システムクラッシュ
の前にフラッシュされた場合とそうでない場合がある。図13は、一般的に、ロ
ールバック中にレコードに達した時に、ページおよびそのログレコードの両方が
ディスクにフラッシュされたかどうかを判定する論理を表す。まず、ステップ1
300で、レコードにアクセスして、ストリーム134への保管されたオフセッ
トを介してページを見つける。次に、ステップ1302で、ページを読み取り、
それから抽出された各セクタの最後の部分を読み取り、ステップ1304で、ロ
グレコードに保管されたサイクルカウントと比較する。インライン(ログ)レコ
ードだけがディスクに書き込まれた場合には、クラッシュの後に、インラインで
ない部分(ページデータ)の各セクタに保管された一意の署名(各サイクルカウ
ント)が、インラインレコードデータに保管されたサイクルカウントと一致しな
い。この場合には、ステップ1306に示されているように、システムは、古い
ページがディスクに書き込まれなかったので、新しいページも書き込まれなかっ
た(これは、2つのログがフラッシュされる場合に限ってフラッシュされる)と
結論する。したがって、このページは、すでに、その前の、古い状態であること
がわかる。
【0097】 逆に、ステップ1304で、ログのサイクルカウントが、対応するページの各
セクタの最後の部分のサイクルカウントと一致する場合には、ログとページの両
方が、成功裡にフラッシュされたことがわかる。したがって、コピーされたペー
ジは、持続したことがわかり、これによって、ステップ1308で、ログレコー
ドに保管された各セクタの最後の部分が、コピーされたページに復元される。
【0098】 この時に、コピーされるページに、リーダーがアクセスすることができ、適当
なバージョンを提供することができる。現在のページに対して行われたログ記録
された変更のすべてを、新しいリーダーおよび/またはライタが見るのに使用す
ることができる(ステップ1310)。この場合に、古いデータが正しく取り込
まれ、中断の一部としてファイルページに復元されなければならないことがわか
る。中断にもかかわらず、既存のトランザクショナルリーダーが、TOPSスト
リーム134から古いデータを読み取り続けることに留意されたい。
【0099】 各セクタの末尾の一意の署名の使用によって、さらに、ページのすべてではな
く一部がコピーされた、引き裂かれた(部分的な)書込が検出されることに留意
されたい。ディスクハードウェアは、セクタが完全に書き込まれることを保証す
るが、データのページ(たとえば8セクタ)が一単位として書き込まれることは
保証しないことに留意されたい。その場合には、サイクルカウントが、「n」と
(おそらくは)「n−1」の値の何らかの混合物になり、署名が、ログ記録され
た署名情報と一致しなくなる。そのような情況は、ページ全体が持続しなかった
かのように扱われる。
【0100】 サイクルカウント自体がラップアラウンドする時に、既存のページ(たとえば
比較的長い時間にわたってメモリ内にあったページ)の署名を構成するカウント
と一致し、したがって、部分的な書込が検出不能になる可能性があることに留意
されたい。たとえば、ラップしたサイクルカウントが使用され、かつ、それがペ
ージに保管された既存のサイクルカウントと一致する場合に、署名は、ページの
すべてまたはページの一部のどちらがコピーされる場合でも同一になる。理解さ
れるように、この場合の署名検査は、実際にはそうでない時にページデータ全体
が持続したことを示すはずである。
【0101】 この問題は、複数の方法で解決することができる。そのような解決策の1つが
、各サイクルラップアラウンドイベントの後で一度ページを読み取って、一致が
ないことを検証することである。一致がある場合には、2つのサイクルカウント
の一方を調整して、一致を回避することができる。これがサイクルラップアラウ
ンドごとに1回だけ(すなわち、サイクルカウントが0にラップするたびに)発
生することを保証するために、別の検証ビットマップ141を使用して、各ペー
ジの「検証」状態を維持することができる。すなわち、各ビットが、ラップの後
にある状態になり、サイクルカウント一致についてページが初めて検査される時
にトグルされる。フリースペースビットマップを使用して、ページが空いている
か使用中かを追跡し、効率のために、上の解決策で、追加のビットマップを追加
して検証状態を追跡することに留意されたい。
【0102】 代替の解決策(上で説明した読取および比較動作に対する)は、やはり検証状
態を追跡することであるが、「検証」状態がページ使用の時にセットされる時に
、サイクルカウントを、上で説明したようにページに書き込み、書込を強制する
ことである。書込に成功する場合には、その書込は部分的でない。大きいTOP
Sストリームの場合に、この代替案は、サイクルカウントがページと一致するこ
とが比較的まれである可能性が高いので、少数の入出力I/O動作に起因してよ
くスケーリングされる。
【0103】 もう1つの代替案は、最初の2つの解決策を、ページ冗長性の検査と組み合わ
せることである。すなわち、ページが高速メモリに常駐する場合に、実際のディ
スク読取が不要なので第1(読取)代替案を実行し、そうでない場合に第2(書
込)代替案を実行する。
【0104】 遅延やり直しの代替案 上で説明した回復機構は、ファイルのダーティページをコミット時にディスク
に書き込み、これによって、トランザクションにまたがるページ書込のバッチ化
が妨げられる。トランザクションにまたがるページ書込のバッチ化を達成するた
めに、回復に関してその逆を実行する、代替の「遅延やり直し」方式を提供する
ことができる。この方式では、やり直しレコードをログに書き込み、ベースファ
イルを読み取っているリーダーがない時に、古いコミットされたトランザクショ
ンをベースファイルに適用する。古いコミットされたバージョンの読取をサポー
トするために、変更を、インプレース(その場)で行うのではなく、ページの既
存のインプレースバージョンがもはや不要である時に限ってインプレースでファ
イルに適用することができる。
【0105】 遅延やり直し方式は、インプレース更新方式によって使用される原理の多数を
共有し、たとえば、非常に似た形のバージョン管理を、バージョン制御ブロック
および複数のインメモリストリームを用いてサポートする。しかし、変更テーブ
ルは、アンドゥではなく、やり直しページのLSNを保持する。図14に一般的
に示されているように、最も古いディスクバージョンが、必ずベースファイルに
なり、より新しいバージョンは、その上での増分変更を構築する。より古いバー
ジョンは、リーダーがいなくなる時に、ベースファイルにマージされる。この方
式の主な長所を活用するために、複数のバージョンを、同一時にベースファイル
にマージすることができ、したがって、I/O効率が得られる。複数のバージョ
ンを同一時にマージすることのもう1つの利益は、ログを長い読取で効率的に読
み取ることができることである。
【0106】 しかし、ログに、(おそらくは多数の)アクティブファイルについてメモリを
バッキングするページが書き込まれる可能性があり、本質的に、シーケンシャル
ログが、回復ログの二役にもなるランダムページファイルになり、これがシステ
ムのボトルネックになる可能性がある。
【0107】 インプレース更新方式に似て、最新バージョンは、更新可能である。すべての
バージョンに関連するバージョン制御ブロック(TxFVSCB)があり、各T
xFVSCBは、バージョンによって変更されたページ番号を記録するインメモ
リテーブルである変更テーブルをポイントする。各ページ番号と共に、少なくと
も1回書き込まれている(やり直しイメージ)場合に、ディスク上のページを見
つけるためにディスクアドレスを保管することができる。ディスクアドレスがな
いことは、ページが一度もディスクに書き込まれていないことを意味する。メモ
リを節約するために、ページがディスクに連続的に保管されている場合に、ペー
ジ範囲を1エントリに保管することができる。
【0108】 バージョンLSNは、そのバージョンをコミットしたトランザクションのコミ
ットレコードのLSNである。現在更新可能なバージョンについては、そのよう
なLSNはない。SOPポインタは、このバージョンに対応するセクションオブ
ジェクトポインタ構造体へのポインタである。このポインタを使用して、インメ
モリページを見つけることができる。バージョン長も、同様に提供される。
【0109】 バージョン制御ブロックは、リスト内で時間順にリンクされる。最も古いバー
ジョンが、ベースストリームであり、変更テーブルには、このバージョンのエン
トリが一切含まれない。
【0110】 オープンの時に、バージョンの1つが、上で説明した代替方式と同様に、ファ
イルハンドルに与えられる。最新バージョンのインメモリストリームは、ログに
よって部分的にバッキングされる(完全にベースファイルによるのではない)。
したがって、ストリームに対する変更は、ログに書き込まれる。読取は、ページ
がバージョンウィンドウ内のどのバージョンでも変更されていない場合にはベー
スファイルから行われ、そうでない場合には、ログから行われる。
【0111】 読取の時に、そのバージョンに対応する変更テーブルに問い合わせて、ページ
がそのバージョンで変更されているかどうかを判定する。そうである場合には、
I/Oを、ログ内の適当な場所に向けて、ページを取り込んで、フォールトを満
足する。そうでない場合には、ページについて、次に前のバージョンに問い合わ
せる。この処理は、ページの最も最近にコミットされたコピーが見つかるまで継
続される。複数のバージョンに、ページのコピーが含まれる場合には、VMM呼
出しによってそれらのメモリ常駐性(residency)を検査する。メモリ
常駐ページが見つかった場合には、それをコピーし、そうでない場合には、最も
最近のバージョンのLSNを使用してログから読み取る。ページが、常駐性が検
査された時とコピーが行われた時の間にシステムメモリからトリミングされたか
どうかが重要でないことに留意されたい。というのは、再帰的なフォールトが生
成され、その後にページがコピーされるからである。これらのページをコピーす
る先のシステムアドレスを得るために、キャッシュマネージャを使用して、それ
らをシステムアドレス空間にマッピングする。
【0112】 図14では、4つのバージョンV0〜V3が示されており、(他の個数が実現
可能であるが)、「X」を用いてマークされたページが、バージョン内の変更を
表す。変更テーブル142〜142に、書き込まれたページのLSNが示さ
れている。最も最近の(更新可能な)バージョンの一部のページは、まだ書き込
まれていない。このシナリオでは、FileObjectがページ50にアク
セスする例を検討されたい。ファイルバージョンV1の変更テーブル142
、このページがそのバージョンで変更されていないことが示されている。したが
って、フォールトは、そのページのファイルバージョンV0の常駐性を検査し、
常駐する場合に(フォールトをとりあげないで)それをコピーすることによって
処理される。ファイルバージョンV0が、ページ常駐を有しない場合には、ディ
スクから読み取る(この場合には、ベースファイルから)。
【0113】 もう1つの例として、FileObjectが、ページ200にアクセスし
、そのページが、メモリ内にある場合に、アクセスは単純に機能する。しかし、
そうでない場合には、ページフォールトが生成され、読取は、ログのLSN25
00から読み取ることによって満足される。
【0114】 もう1つの例として、ページ100にアクセスするFileObject
検討されたい。 このページは、バージョンV2で変更されていないので、バー
ジョンV1が検査され、読取は、メモリイメージ(常駐する場合)から、または
ログのLSN2000を読み取ることのいずれかによって満足される。
【0115】 ファイル書込について、ページアウトの時に、ページが、ストリームオフセッ
トおよびストリーム名も記述するやり直しレコードの形でログに書き込まれる。
この時に、LSNが、そのバージョンの変更テーブルのページスロット内でマー
クされる。ページ書込は、システムスレッドの1つによってバックグラウンドで
行われ、通常は、シーケンシャルページ順で書き込まれる。コミットの時に、そ
のバージョン内のダーティページが、ログに書き込まれ、それにコミットレコー
ドが続く。ページが、トランザクション中に複数回書き出される場合には、複数
のログ書込が行われる。これらの書込は、ログの末尾に行き、変更テーブルエン
トリが、新しい位置をポイントするように変更される。間に入る読取トランザク
ションなしでコミットの後に新しい書込トランザクションがスタートする場合に
は、メインメモリストリームが、新しいトランザクションによって再利用される
。そうでない場合には、メインメモリストリームが、リーダーによって請求され
、ライタトランザクションは、新しいストリームを作成し、これを処理する。遅
延やり直し方式では、変更されたページが、TOPSストリームに書き込まれて
(まさにインプレース更新方式と同様に)、関連する利益が達成されることに留
意されたい。
【0116】 クラッシュの後に、回復は、比較的簡単である。というのは、コミットされた
トランザクションのやり直し情報が、ログにあり、メインデータストリームに簡
単に適用できるからである。バージョン制御ブロックが、インメモリ構造体であ
り、したがって、回復時に存在しないことに留意されたい。
【0117】 古いリーダーがトランザクションを終了する時に、古いバージョンは、もはや
保存する必要がない。そのような時に、バージョンが、最も古いものから始めて
、1時に1バージョンずつメインストリームにマージされる。バージョンは、マ
ージされる時に、バージョンのリンクリストから除去される。マージは、そのバ
ージョンの変更されたページ(ページ番号は変更テーブル内でルックアップされ
る)をベースストリームにコピーし、ディスクに強制することによって、1時に
1ページずつ行われる。このコピー動作では、現在常駐していないページについ
て、ログを読み取る。可能な場合には、ログからページ範囲を取り込むために、
大量のI/Oが行われる。たとえば、図14では、バージョン管理をサポートす
るためにバージョンV0がこれ以上必要でない場合に、バージョンV1をバージ
ョンV0にマージすることができる。このマージは、バージョンV1をロックせ
ずに行うことができる。というのは、マージが進行中である間は、各ページのコ
ピーが、バージョンV1およびバージョンV0に存在し、バージョンV1の変更
テーブルが、この処理を介して変更されないからである。
【0118】 マージが完了した後に、バージョンV1がバージョンウィンドウ内にない場合
には、V1のバージョン制御ブロックを、単純にバージョンのリストから除去す
る。一般に、マージは、複数のバージョンがリーダーから解放されるまで遅延さ
れる。この例では、V0、V1、およびV2を、これらがバージョンウィンドウ
から出た時に、一緒にベースファイルにマージすることができる。複数バージョ
ンマージについて、変更テーブルが、まず、同一エントリが複数のテーブル内で
変更される時に、最高のバージョン番号からのLSNが選択される形でマージさ
れる。これは、本質的に、トランザクションにまたがる書込をバッチ化し、この
方式の長所の1つである。バージョンをマージした後に、そのログレコードは、
アクティブログからの除去の資格がある。
【0119】 一般に、マージは、できる限り早く行われる。リーダーがいなくなるたびに、
バージョンウィンドウが前方に移動する。その時に、いくつかのバージョンを、
マージの資格があるものとしてマークすることができる。複数のバージョンがマ
ークされた時に、作業アイテムが、マージを行うためにシステムスレッドの1つ
に置かれる。
【0120】 インプレース更新方式と遅延やり直し方式の両方が、ほぼ同一の数のI/Oを
実行する。インプレース更新方式は、アンドゥを同期式に読み取る(並列リーダ
ーが最近読み取った場合など、アンドゥが時々メモリ内で見つかる場合があるの
で)。インプレース更新方式は、ページをベースファイルに書き出し、アンドゥ
をログにシーケンシャルに書き込む。対照的に、遅延やり直し方式は、やり直し
を多数のランダムI/Oで書き込む必要があり、ログをランダムに読み取ってバ
ージョンをマージする必要がある。さらに、遅延やり直し方式は、バージョンに
またがる書き込みを最小にするが、ファイルページをディスクに書き込む必要が
ある。これらのログページがメモリ内で見つかる可能性は、したがって、マージ
が遅延される長さに関して、非常に低い。
【0121】 いつどこでI/Oが行われるかに、定性的な差がある。遅延やり直し方式では
、最も最近のメモリストリームが、ベースファイルではなく、ログによってバッ
キングされる。これは、最も一般的に使用されるストリームになる可能性が非常
に高い。というのは、これが、更新された作業を処理し、比較的にログに重荷を
課すからである。バージョン管理されるリーダーについて、両方の方式が、ログ
をページングデバイスとして使用する。
【0122】 遅延やり直し方式は、大量のトランザクション作業がバックグラウンドで実行
されるので、コミット処理と同期して行う作業がより少ないが、書込APIまた
はメモリ更新がキャッシュに対して実行されるので、書込APIまたはメモリ更
新のそれぞれについて、ライタにとってより高速には見えない。その代わりに、
コミット時のフラッシュに、コミットの応答性の差が現れる。より大きい更新ト
ランザクションについて、バックグラウンドシステムスレッドが、非同期書込を
スケジューリングする可能性が高く、これによって、多少は応答性の差が減る。
同様に、インプレース更新方式は、ファイルAPIに関するアンドゥ作業をバッ
クグラウンドで行うことによって、多少はコミット時の重荷を減らすことができ
るが、ユーザがマッピングしたセクションで行われた変更について実現可能では
ない。
【0123】 インプレース更新方式は、遅延やり直し方式より複雑でない。というのは、イ
ンプレース更新方式が、非同期マージ動作のスケジューリングの問題を扱う必要
がないからである。また、インプレース更新方式は、フォアグラウンドアクティ
ビティとバックグラウンドアクティビティの間の速度不一致の問題を扱う必要が
ない。この速度不一致は、時々、ログスペースをブロックし、リソース獲得問題
を生じる。
【0124】 最後に、アーカイブ作成およびロールフォワードは、遅延やり直し方式を用い
る場合に、やり直しレコードがログ内で使用可能なので、通常のランタイムログ
記録アルゴリズムを変更せずに可能である。しかし、アンドゥレコードがないの
で、トランザクションに関してやり直しを適用する前に、トランザクションのコ
ミット状況を見つけるために、ログの多少の前方スキャンを行う必要がある。
【0125】 ネットワークを介するファイルシステムトランザクション リモートファイルは、図15に一般的に示されているように、内部カーネル対
カーネル「リダイレクタ」プロトコル(たとえば、SMBプロトコル)を介して
アクセスされる。このプロトコルは、クライアントコンピュータ146で実行さ
れるファイルシステム動作を、リモートコンピュータ148、たとえばサーバ上
で反映する。もちろん、他のプロトコルおよび機構(たとえば、Wev DAV
、NFSなど)によって、同等の結果を達成することができる。この目的のため
に、非トランザクショナルファイルシステムアクセスと同様に、リモートファイ
ルが、識別され、IRPが、クライアントコンピュータ146上のリダイレクタ
ファイルシステムドライバ150に向けられる。既知のように、このドライバ1
50は、クライアントコンピュータのキャッシュと対話して、データを読み取り
、書き込む。リモートコンピュータのファイルシステム154に向けられたアプ
リケーション152からのファイルシステム要求などの要求(たとえば、リモー
トディスク156上のファイルG:\Fnameへのアクセス)は、リダイレク
タドライバ150によってインターセプトされ、リモートコンピュータ148に
送信され、ここで、エージェント158(デーモン)スレッドが、それらをドラ
イバスタックの最上のファイルシステム動作に変換する。
【0126】 リモートトランザクショナルファイルシステム動作に関して、ファイルをオー
プンするために、クライアントリダイレクタが、たとえば、COM/OLEを使
用して、DTCトランザクションオブジェクト160を、サーバ148にオー
プン要求と共に供給されるフラットバイトストリームにマーシャリングする。諒
解できるように、他の機構が、同等の機能および/または結果を達成することが
でき、COM/OLE動作を本明細書で説明するが、本発明のこの態様は、CO
M/OLEに制限されない。COM/OLEの例では、トランザクションオブジ
ェクト160が、オープンを要求するクライアントスレッドにアタッチされる
。サーバコンピュータ148は、そのカーネル空間内にDTCトランザクション
オブジェクト160のコピーを保持できる限り、トランザクションがどこから
発するかに関係しないことに留意されたい。同様に、サーバ148は、トランザ
クションの代わりにどのスレッドまたはプロセスが働くかに関心を持たない。そ
うではなく、サーバ148のエージェント158が、フラットバイトストリーム
を使用可能なオブジェクトに変換し、このオブジェクトが、カーネル内で使用可
能になる。この時に、サーバは、要求をローカルトランザクション160と同
様に扱い、それをサーバ上の対応するDTCプロキシ162に参加させ、本質
的に、DTCに、後続のトランザクション作業についてサーバ148(および、
リソースマネージャとしてその中のTxFコンポーネント164)に連絡するよ
うに指示する。サーバが、このトランザクションオブジェクト160を所有す
るので、これが適当であることに留意されたい。トランザクションIDは、分散
名前空間にあるので、トランザクションは、どこからでも発することができるが
、トランザクションidに基づく正しいファイル同期化は、サーバ148で行わ
れる。
【0127】 サーバは、本質的に、ファイルシステム要求を、ローカルの場合に関するもの
であるかのように扱い、これによって、ローカルTxFコンポーネント164が
、トランザクショナルファイルシステム要求を処理する。しかし、サーバ148
は、対応するファイルオブジェクトが、クライアント146によってオープンさ
れたファイルに関するものであることを記憶し、クライアントがページをキャッ
シングしたことを記憶する。したがって、コミット時に、サーバ148は、クラ
イアント146に(リダイレクタプロトコルを介して)そのキャッシュをサーバ
にフラッシュし、クライアント側でオープンされた可能性があるマッピングされ
たセクションのすべてをフラッシュする(クライアントが、マッピングされたセ
クションについて追跡する)ように通知する。データは、普通に、多少遅れた形
で、すなわち、クライアントのキャッシュ/メモリからページアウトされる時に
必ず、サーバ148に到達する。データが到達する時に、そのデータによって、
サーバのキャッシングされたコピーが上書きされる。これが、複数のオープンハ
ンドルまたはマッピングされたセクションがお互いを上書きする、従来のファイ
ルシステムモデルに類似することに留意されたい。
【0128】 リダイレクタベースのファイル作成動作に関して、ユーザモードのCreat
eFileExがITransactionオブジェクトを(たとえばDTCの
ItransactionTransmitterメソッドを介して)バイトの
フラットコレクションにマーシャリングするという、上で説明した概念が、ネッ
トワークを介するITransactionのマーシャリングにも使用される。
ITransactionTransmitter呼出しではトランザクション
マネージャとの通信が不要なので、これは比較的安価であり、したがって、作成
ごとに行うことができる。しかし、Receive呼出し(上で説明した)は、
トランザクションコーディネータ(またはそのプロキシ)との通信を必要とし、
このトランザクションコーディネータは、リダイレクタベースの場合に、リモー
トコンピュータ148上にある。それにもかかわらず、ITransactio
nReceiverが、ネットワーク全体で(サーバ148上で)トランザクシ
ョンごとに1回だけ行われるので、このトランザクションコーディネータ162 との通信のコストは、大きくない。
【0129】 したがって、このようにして、トランザクショナルリモートファイルアクセス
が、透過的にサポートされる。すなわち、アプリケーションが、本質的に、リモ
ートファイルアクセスを使用して、ならびに複数のコンピュータでアプリケーシ
ョンプロキシを作成することによって直接に、ネットワーク上のどこにあるファ
イルでもアクセスすることができる。その結果として、同一のトランザクション
に、1つまたは複数のローカルプロセスとリモートプロセスを同時に含めること
ができる。
【0130】 リダイレクタプロトコルは、一般的に、単一のクライアントがファイルをリモ
ートアクセス用にオープンさせた場合について最適化される。その場合に、ファ
イルのローカルディスクキャッシュを保持することによって、多数のネットワー
クトラフィックが、回避される。変更は、必要な時だけすなわち、ファイルのク
ローズの時だけフラッシュされる。しかし、この配置は、別のクライアントが同
一のファイルを同時にオープンした時に、必ずディスエーブルされる。便宜的ロ
ック(opportunistic lock)(Oplock、本質的に所有
権を示すトークン)によってこれがイネーブルされ、これによって、上の「クロ
ーズ時にフラッシュ」方式に対する変更が最小になる。具体的に言うと、コミッ
ト時に、クライアントが、通常のように、サーバに変更をフラッシュするように
求められる。中断の時には、クライアントが、クライアントハンドルを「運が尽
きた」としてマークするように求められ、ハンドルがクローズされた後に、変更
が単純に捨てられるようになる。リダイレクタプロトコルを強化して、サーバが
、ローカルの場合と同様に、いくつかの情況でクライアントがマッピングしたセ
クションを無効化できるようにすることができることに留意されたい。
【0131】 名前空間分離 トランザクションの変更を他のトランザクションから分離することが、トラン
ザクションの重要なプロパティである。トランザクショナルファイルシステムで
は、分離が、ファイルに保管されるデータ(上で説明した)だけではなく、ファ
イルおよびファイルがその下で編成されるディレクトリの名前階層にも適用され
る。本発明のもう1つの態様によれば、ファイル/ディレクトリ名前階層内で名
前空間分離を実施する技法が提供される。この技法は、トランザクションの期間
にわたる名前またはディレクトリのロックを必要とせず、トランザクションに使
用されているファイルに対して試みられる非トランザクショナル動作と共に動作
する。
【0132】 たとえば、まだコミットしていないトランザクションによって作成されたファ
イルを検討されたい。ファイルの代わりに、ディレクトリを作成することができ
るが、説明を単純にするために、本発明を、主にファイルに関して説明すること
に留意されたい。しかし、ファイルおよびディレクトリが、以下で説明する名前
空間動作に関して一般的に同等に扱われることを理解されたい。トランザクショ
ンによって作成されたファイル(またはディレクトリ)は、それを作成するトラ
ンザクションからは制約なしでアクセス可能でなければならないが、他のトラン
ザクション、たとえばそれをオープンしようとする別のトランザクションまたは
その親ディレクトリをリストしようとする別のトランザクションに可視になって
はならない。作成するトランザクションがコミットする時に限って、そのファイ
ルを他のトランザクションに可視にしなければならず、そのかわりに中断された
場合には、ファイルが他のトランザクションに可視になってはならない。非トラ
ンザクション(たとえば、親ディレクトリの列挙を要求するもの)は、そのよう
なファイルを見るが、しかし、そのようなファイルを、コミットされるまで非ト
ランザクションに不可視にすることが、代替的に可能である。
【0133】 同様に、ファイル(またはディレクトリ)が、まだコミットしていないトラン
ザクションによって削除される場合に、削除されるファイルは、コミットの時ま
で、削除が全く発生しなかったかのように、他のトランザクションからアクセス
可能であり続ける必要がある。しかし、削除するトランザクションは、削除の影
響を見、その場所で同一の名前を持つ異なるファイルを作成することができる。
コミット時に、削除されたファイルが、除去される。非トランザクションは、削
除の影響を見る。すなわち、削除されたファイルを見ないが、非トランザクショ
ンは、そのファイル/ディレクトリを削除したトランザクションが中断し、削除
が元に戻される場合の衝突を避けるために、コミットしていないトランザクショ
ンによって削除されたものと同一の名前の新しいファイルを作成することができ
ない。やはり、その代わりに、非トランザクションを、異なるトランザクション
であるかのように扱い、したがって、トランザクションによって削除されたファ
イルを見続けるようにすることが、実現可能ではあるが、これは好ましくない。
【0134】 さらに、ファイル(またはディレクトリ)が、トランザクションによって名前
を変更される場合に、そのファイルは、他のトランザクションに関して元のディ
レクトリ内で元の名前で使用可能であり続け、新しい名前は、他のトランザクシ
ョンに可視にならない。名前を変更するトランザクションは、名前変更の影響を
見、古い名前を使用して異なるファイルを作成することができる。名前変更が、
本質的に、新しいリンクの作成と古いリンクの削除の組合せであることに留意さ
れたい。
【0135】 上で説明したシナリオを処理するために名前空間分離を達成するために、本発
明は、トランザクションの期間について、他のトランザクションによる使用のた
めに名前空間の状態を保存する。この目的のために、図16〜18に示されてい
るように、分離ディレクトリ170〜170と称する別のディレクトリが、
作成され、名前空間動作を実行するトランザクションによって変更される各々の
NTFSディレクトリにリンクされる。具体的に言うと、各分離ディレクトリ(
たとえば170)には、親ディレクトリ(たとえばディレクトリD3)のTx
FSCB構造体に関連する検索構造体(たとえば、2進検索木)が含まれる。さ
らに、分離ディレクトリ検索構造体および関連する操作ルーチンに、エントリの
追加、名前を用いるエントリの高速ルックアップをサポートし、ディレクトリ列
挙アルゴリズムもサポートする一般インターフェースが含まれる。
【0136】 これらの分離ディレクトリには、名前空間変更を行ったトランザクションによ
って影響される個々の名前が含まれ、これらの分離ディレクトリは、メインメモ
リ構造体だけである。この構造体の各エントリには、名前に関連するトランザク
ションID(Tid)と、トランザクションTidに可視と他者に可視の2つの
フラグを有する可視性ディスポジション(visibility dispos
ition)も含まれる。これらの可視性フラグの一方または両方を、独立にセ
ットすることができる。分離ディレクトリ構造には、ShortName/Lo
ngNameフラグも含まれ、ここで、ペアリングが使用可能である場合に、構
造体に、ペアリングされた名前に対応する構造体へのポインタが含まれる。名前
がTidによって予約され、他者がそれを請求できないことを示すフラグ、Fi
d(削除された名前および変更された名前に関してcreate()をリダイレ
クトするのに使用される)、および他の情報すなわち、ディレクトリ列挙に使用
される、タイムスタンプおよび類似物などのNTFSによって複製される情報も
提供される。スペース効率のために、構造体を、Name、情報へのポインタ、
他の名前へのポインタ、および他の情報に分離することができる。これによって
、2つの名前によって共有される他の情報の単一の組がもたらされる。
【0137】 分離ディレクトリが使用される方法の例として、図16に示されているように
、ファイルF3が、トランザクションT1によって削除される場合に、ファイル
F3の名前およびさまざまな情報が、その名前がNTFSディレクトリD3から
除去されるのと(本質的に)同時に、分離ディレクトリ170に追加される。
NTFSでファイルを削除するためには、オープンファイルが削除についてマー
クされ、ファイルシステムが、オープンハンドルのカウントを維持しながらその
ファイルをクローズし、オープンされたままのハンドルがなくなった時に削除を
実行することに留意されたい。さらに、分離ディレクトリ170は、このトラ
ンザクションT1または別のトランザクション(たとえばT2)による以前の動
作から既に存在する可能性があり、あるいは、この削除動作をサポートするのに
必要な場合に作成される可能性があることに留意されたい。削除動作を、さらに
、以下で図19の流れ図に関して説明する。
【0138】 このファイルF3への、異なるトランザクション(たとえばT2)による後続
のアクセスは、分離ディレクトリ170を使用してサービスされ、これによっ
て、トランザクションT2が、ファイルF3を見続ける。しかし、ファイルF3
を削除したのと同一のトランザクションT1(または非トランザクション)が、
ファイルF3を探す場合には、このファイルが見つからない。この情況を処理す
るために、上で説明したように、ファイルの名前、その可視性ディスポジション
、ファイルを削除したトランザクションのID、リダイレクトファイルID、$
TxFファイル識別子(たとえば、単調増加するシーケンス番号)、および複製
情報(日付スタンプ、サイズ、属性)が、ファイルについて維持される。
【0139】 図19に、オープンされているファイルの削除の要求を処理する一般的な論理
の表現を示す。図19および類似する流れ図が、分離ディレクトリが使用される
方法の理解を提供するために単純化されており、基礎となるコードの正確な表現
とみなされてはならず、たとえば、特殊な場合、エラー処理などが含まれないこ
とに留意されたい。どの場合でも、ステップ1900で開始されて、被トランザ
クション要求元エンティティと非被トランザクション要求元エンティティの間の
区別を行う。というのは、被トランザクションユーザが、非被トランザクション
ユーザの削除動作と異なる動作をもたらすからである。非トランザクションがフ
ァイルの削除を要求している(そのハンドルによって識別される)場合には、削
除が、それ以外は通常の形で実行される。すなわち、ステップ1902で、指定
されたファイルがディスクから削除される。削除は、最後のハンドルがクローズ
された時に始まる。
【0140】 ステップ1900で、トランザクション(たとえばTid1)が削除を要求し
ている場合に、ステップ1904が実行され、ここで、本質的にファイルの名前
が変更される。たとえば、図16に一般的に示されているように、任意の名前(
たとえば「0」)が、隠されたディレクトリ168($TxF)に追加され、こ
の名前が、マスタファイルテーブル130(図11)のファイルのレコードにリ
ンクされる。それと同時に、削除されたファイルF3からのリンクが、親ディレ
クトリD3から除去される。
【0141】 その後、削除情報すなわち、ファイル名F3、元の親に関する参照、および新
しいリンク情報が、ステップ1906で削除レコードにログ記録される。ファイ
ルを削除しつつあるトランザクションがコミットする前にシステムがクラッシュ
する場合には、トランザクションが中断され、ログから、上で説明したようにフ
ァイルの名前を単純に変更することによって、すなわち、前のリンクを復元する
ことによって($TxFディレクトリは、インメモリ構造体なのでなくなる)フ
ァイルが正しく復元される。
【0142】 本発明によれば、ファイル情報が、通常のディレクトリD3にリンクされた分
離ディレクトリ170に追加される。分離ディレクトリ170は、通常のデ
ィレクトリに関連して既に存在する場合があるが、そうでない場合には作成され
る。ステップ1910を実行して、トランザクションTid1がこのファイルの
削除を要求したことを示すように可視性ディスポジションフラグを適用に調整し
、その結果、このファイルが、他のトランザクションにはまだ可視であるが、T
id1には不可視になるようにする。ステップ1912で、任意の名前を付けら
れたリンクを、後に(すなわちトランザクションがコミットした後に)ディスク
から削除されるファイルのリストに追加する。
【0143】 トランザクションに対応する名前エントリは、そのトランザクションが終了す
る時に分離ディレクトリから除去され、分離ディレクトリは、そこに残っている
エントリがなくなった時に、削除することができる。システムがクラッシュする
場合に、インメモリ構造体である分離ディレクトリが、失われることに留意され
たい。しかし、クラッシュによって、コミットされていないトランザクションが
中断されるので、分離ディレクトリは、もはや分離のために必要ではなくなり、
ログファイルのアンローリングによって、ファイルの状態が適当にリセットされ
る。
【0144】 ファイルの作成は、ファイルがトランザクション(たとえばTid2)によっ
てディレクトリ内で作成される時に、名前が、(親)NTFSディレクトリにリ
ンクされた分離ディレクトリに実際に追加されるという点で、削除に多少似てい
る。他のトランザクションに関して、名前は、トランザクションがコミットする
まで、ファイルをオープンする目的に関するまたは親NTFSディレクトリをリ
ストする時の可視性フラグの設定によってフィルタアウトされる。Tid2およ
び非トランザクションに関して、作成されたファイルは、コミットされる前に可
視である。
【0145】 名前を付けられたエントリは、追加された後に、トランザクションによって変
更することができる。たとえば、ファイルが削除され、同一の名前を使用して別
のファイルが作成される場合に、作成によって、エントリの状態が変更され、他
のトランザクションが、削除の前に存在したファイルを見続けるが、このトラン
ザクションが、作成されたばかりの新しいファイルを見るようになる。NTFS
ディレクトリまたは分離ディレクトリに対して、トランザクションレベルのロッ
クが保持されないことに留意されたい。これによって、システムが、ベースファ
イルシステムより並列性が低くならないようにすることができる。
【0146】 図18に示されているように、ファイルF6が、トランザクションTid2に
よって作成される(作成は、普通の親ディレクトリD4内で要求される)場合に
、F6が、ディレクトリD4内に作成され、それのためのエントリが、親ディレ
クトリD4に関連する分離ディレクトリ170に追加される。分離ディレクト
リ170は、必要であれば作成される。フラグが、Tid2の作成状況を反映
するように適当に調整される。すなわち、Tid2に可視であるが、他のトラン
ザクションには不可視になり、名前がTid2用に予約される。トランザクショ
ンTid2が、Tid2がコミットする前に、新たに作成されたファイルF6を
削除することもできるが、この場合に、ファイルF6は、Tid2にも他者にも
可視にならないことに留意されたい。そのような作成−削除動作を処理する方法
の1つが、ディレクトリD4からエントリを除去し、分離ディレクトリ170 からエントリを除去することである。もう1つの方法は、分離ディレクトリ17
にエントリを残し、ディスポジションフラグを、作成するTid2と他者の
両方に対して不可視にセットし、これによって、Tid2がコミットまたは中断
するまでファイル名が他者によって使用されなくすることである。
【0147】 トランザクションTid2によってF6が作成されるが、削除されない、通常
の情況に戻ると、トランザクションTid2がコミットまたは中断する時に(そ
の場合に)、分離エントリが、分離ディレクトリ170から除去され、したが
って、作成されたファイルF6が、コミットの場合にどのトランザクションにも
可視にされる。トランザクションT2が中断する場合には、ファイルが、通常の
NTFSディレクトリD4から削除される。各分離エントリは、それに関連する
トランザクションの終了まで残され、コミットまたは中断の時に除去される。除
去を容易にするために、各トランザクションは、そのトランザクションが少なく
とも1つのエントリを有するTxFSCBポインタのリストを維持する。トラン
ザクションはまた、TxFSCBのそれぞれの参照カウンタを適当に増分または
減分し、その結果、TxFSCBが、それを使用するトランザクションによって
存在を維持されるようにする。
【0148】 図20に、要求がNew_File_Create(たとえば、同一のファイ
ル名を有するファイルが既に存在する場合に作成が許可されないタイプの)であ
る場合の、ファイルの作成に関する要求を処理する一般的な論理の表現を示す。
ステップ2000で開始して、テストを実行して、ファイル名(たとえば図17
のF6)が、普通の親ディレクトリ、たとえば親ディレクトリD4に既に存在す
るかどうかを判定する。そうである場合には、ファイルを作成することができず
、ステップ2000は、ステップ2002に分岐し、ここでエラーを返す。ファ
イルF6が、親ディレクトリD4で見つからない場合に、ファイル名が既にトラ
ンザクションによって使用されている可能性がある。これをテストするために、
ステップ2000は、ステップ2004に分岐し、ここで、D4に関連する分離
ディレクトリ170を、このファイル名について検索する。このファイルF6
(または分離ディレクトリ)のエントリが存在しない場合には、ステップ200
4は、ステップ2006に分岐し、ここで、トランザクションまたは非トランザ
クションのどちらが作成を要求しているのかに関する判定を行う。非トランザク
ションが要求している場合には、ステップ2006は、ステップ2018に分岐
し、ここで、普通のディレクトリD4にファイルを作成する。そうでない場合に
は、トランザクション(たとえばTid2)が作成を要求しており、ステップ2
010が実行されて、そのファイルのエントリが分離ディレクトリ170に追
加される(親ディレクトリD4についてまだ存在していない場合には分離ディレ
クトリ170を作成した後に)。その後のステップ2014は、適当なフラグ
を設定すること、このエントリに関する他の情報を得ることなどを表す。ステッ
プ2014は、ステップ2018に継続し、ここで、ファイルF6が、実際に普
通のディレクトリD4に作成される。NTFSでは、作成時に、ファイルが割り
振られ、ファイルレコードがそのファイルのマスタファイルテーブル内で作成さ
れ、作成レコードがログに追加されることに留意されたい。
【0149】 ステップ2004で、名前が分離ディレクトリ170で見つかった場合には
、指定されたファイルが、現在作成を要求しているものと同一のTid(たとえ
ばTid2)によって削除されない限り、作成は許可されない。このようにして
、トランザクションは、それが削除したファイルを作成することができるが、他
のトランザクションまたは非トランザクションは、ファイルを作成し、かつ/ま
たは削除したトランザクションがコミットするか中断するまで、そのファイル名
を使用することができない。見つかった場合には、ステップ2012を実行して
、フラグ状況をテストして、同一のトランザクションが現在作成を要求している
かどうかを判定する。そうである場合には、ステップ2012は、ステップ20
14に分岐して、このエントリのフラグの状況を変更し、本質的に「Tid2に
よって削除」(Tid2に不可視、おそらく他者に可視)ではなく、「Tid2
によって作成」(Tid2に可視、他者に不可視)を表すようにする。別のトラ
ンザクションまたは非トランザクションが作成を要求している場合には、ステッ
プ2012が、ステップ2016に分岐して、エラーを返し、トランザクション
がこのファイル名を予約していることを示す。
【0150】 図18は、本質的にリンク作成要求とリンク削除要求を組み合わせたものであ
る、トランザクショナルファイル名前変更動作を表す。したがって、トランザク
ションT1が、ファイルの名前「\D2\D3\F2」を「\D2\D3\D4
\F7」に変更する場合に、リンクF2が、ディレクトリD3から削除され、リ
ンクF7が、ディレクトリD4に作成される。しかし、トランザクションが名前
の変更にかかわっているので、この動作は、適当な分離ディレクトリ170
よび170で反映される。ファイルが、同一の親ディレクトリ内で名前を変更
される場合があり、あるいは、ファイルが同一のファイル名を有するが、異なる
ディレクトリにあるように名前を変更される場合があることに留意されたい。
【0151】 本発明によれば、ファイルのトランザクショナル名前変更に関して、名前変更
に用いられる各親ディレクトリの分離ディレクトリ、たとえば、トランザクショ
ンの削除動作を示す分離ディレクトリ、およびトランザクションの作成動作を示
す分離ディレクトリが提供される。同一の親ディレクトリ内での名前変更が、古
いファイルの削除に関する1エントリと、新しいファイルの作成に関する1エン
トリとを有する1つの分離ディレクトリだけを必要とすることに留意されたい。
上で説明した図19(削除)および20(作成)から理解できるように、他のト
ランザクションは、トランザクションがコミットするまで、名前が変更されなか
ったかのようにファイルを見、名前を変更されたファイルを見ない。トランザク
ションが中断する場合には、他のトランザクションは、使用中のファイル名がト
ランザクションの寿命の間に一時的に予約されることを潜在的に見ることを除い
て、名前変更が行われたことを示すものを一切見ない。
【0152】 最後に、図21〜22は、ファイルのオープンまたはそのファイル情報を得る
(たとえば列挙の一部として)ことを試みる時などに、ファイルの状態に応じて
、トランザクションが指定されたファイルを見るか否かを表す。ステップ210
0は、ファイルが普通の親ディレクトリにあるかどうかのテストを表す。そうで
ある場合には、分離ディレクトリが存在する場合に、このファイルのエントリに
ついて分離ディレクトリを検索して、ファイルが要求元に可視であるかどうかを
判定する必要がある(ステップ2102)。普通のディレクトリにない場合には
、ファイルが、進行中のトランザクションによって普通のディレクトリから削除
された可能性があり、これは、下の図22で処理される。
【0153】 ファイルが普通のディレクトリにあり(ステップ2100)、ステップ210
2でファイルのエントリが分離ディレクトリにない場合には、そのファイルは、
普通にアクセス可能なファイルすなわち、まだコミットしていないトランザクシ
ョンによって作成されたものではないファイルである。そうである場合には、フ
ァイルシステムは、トランザクションの前と同様に動作する(ステップ2104
によって表される)。すなわち、ファイルハンドルを返すことができ(たとえば
、ファイルオープン要求の場合に)、あるいは、マスタファイルテーブル内の情
報からファイル情報を返すことができる(たとえば、列挙要求の場合に)。
【0154】 ファイルのエントリが、分離ディレクトリツリーにある場合には、そのファイ
ルは、進行中のトランザクションによって作成されたものである必要があり、ス
テップ2102は、ステップ2106に分岐し、テストを実行して、ファイルを
作成したトランザクションが、現在アクセスまたはその情報を要求しているトラ
ンザクションと同一であるかどうかを判定する。そうである場合には、ステップ
2106は、ステップ2108に分岐し、可視性ディスポジションフラグ(この
Tidに可視であるかどうか)をテストすることができる。可視の場合には、フ
ァイルハンドル(またはファイル情報)を、要求しているトランザクションに返
す(ステップ2110)。本実施形態では、ファイルが普通のディレクトリにあ
り、そのエントリが分離ディレクトリにある(トランザクションによる作成のゆ
えに)が、ファイルを作成したトランザクションにファイルを可視にしてはなら
ないことをフラグが示す情況があってはならないことに留意されたい。したがっ
て、本実施形態では、ステップ2108のテストが、普通のディレクトリおよび
/または分離ディレクトリの破損または類似物を検出するのに使用されるのでな
い限り、本質的に不要である。
【0155】 ファイルのエントリが、普通のディレクトリにあり(ステップ2100)、分
離ディレクトリツリーにある(ステップ2102)が、ステップ2106で、同
一のトランザクションが要求を行っているのではないと判定される場合には、本
実施形態では、ファイルが、ステップ2114で、他者に可視である場合もそう
でない場合もある。可視でない場合には、ステップ2116で、要求の一部とし
て、他のトランザクションがそのファイル名を使用することを要求している場合
に、ファイルが別のトランザクションによって使用中であることを示すエラーが
返されることを除いて、見つからなかったものとしてファイルを扱う。たとえば
、指定されたファイルが見つからない場合に新規ファイルの作成を試みるタイプ
のファイルオープン要求は、名前が使用中なのでエラーになる。ステップ211
4で他者に可視である(ファイルが、削除された後に作成された)場合には、リ
ダイレクトFidを使用して、$TxFディレクトリから削除されたファイルを
オープンする(ステップ2118)。
【0156】 図22では、ファイルが普通のディレクトリにない情況を処理する。まだコミ
ットも中断もしていないトランザクションがファイルを削除した場合には、その
ファイルのエントリが、分離ディレクトリにあり、これによって、そのトランザ
クションはこのファイルを見ることができないが、他者は見ることができる。ス
テップ2200で、ファイルのエントリが分離ディレクトリにない(かつ、図2
1のステップ2100を介して普通のディレクトリにない)かどうかをテストし
、ない場合には、ステップ2202で、ファイルが見つからず、それに応じて扱
われる。
【0157】 そうではなく、ステップ2200で、名前が分離ディレクトリに存在する場合
には、あるトランザクションがそれを削除している。ステップ2204で、ファ
イルを削除したのと同一のトランザクションがそのファイルへのアクセス(また
はそれに関する情報)を要求しているかどうかをテストする。そうである場合に
は、ステップ2206で、ファイルが、それを削除したトランザクションに可視
ではなく、したがって、見つからない状態(ステップ2206)が存在する。な
んらかの理由でファイルがトランザクションに可視である場合には、エラーが存
在することに留意されたい。
【0158】 ステップ2204で、ファイルを削除したものと異なるトランザクションが、
そのファイルへのアクセス(またはそれに関する情報)を要求している場合。ス
テップ2212によるテストで、ファイルが他者に可視である場合には、ステッ
プ2214で、そのファイルのハンドルまたはファイル情報(以下で説明するよ
うに、保存されたファイルIDまたはFidからの、複製された情報を含む)を
返す。
【0159】 1つの他の可能性は、進行中のトランザクションが、ファイルを作成し、その
後、削除し、これによって、そのファイルが普通のディレクトリにないことであ
る。上で説明したように、ファイル名は、他者に使用可能として扱われるか、ト
ランザクションのコミットまたは中断のいずれかが発生するまで進行中のトラン
ザクションに予約されるかのいずれかになることができる。前者は、ファイルを
作成したトランザクションがそのファイルを削除する時に、普通のディレクトリ
および分離ディレクトリの両方からファイルのエントリを単純に除去することに
よって達成することができるが、そのようなファイルエントリが分離ディレクト
リから除去される場合に、ステップ2212に到達しないことに留意されたい。
後者は、削除の際にファイルを普通のディレクトリから除去するが、分離ディレ
クトリ内のファイルのエントリを残し、どのトランザクションにも不可視である
ことを示すようにフラグをセットすることによって、達成することができる。諒
解されるように、これが可能であるのは、可視性ディスポジションフラグが独立
にセットされる(すなわち、相互排他的ではない)からである。しかし、ファイ
ルが分離ディレクトリに残され、他者に(ならびに、それを作成したトランザク
ションに)不可視とマークされる場合に、ステップ2216で、ファイルが見つ
からない状態が存在するが、ファイル名は進行中のトランザクションに予約され
る。
【0160】 このようにして、本発明は、NTFS照合ルールおよびNTFSルーチンを使
用して、たとえば照合された順序で次の名前を見つける、照合検索を容易にする
。本発明は、スペース効率がよく、並列読取/書込アクセスを可能にする。
【0161】 見るものまたは見ないものにおいて、非トランザクションが、単純に、普通の
ディレクトリにあるものを見ることに留意されたい。しかし、既存ファイル名の
使用において、非トランザクションは、トランザクションに予約された名前を使
用することができない。この目的のために、非トランザクションが普通のディレ
クトリに存在しない名前を有するファイルの作成を試みる時に、上で説明したよ
うに、分離ディレクトリが検査される。
【0162】 上の例および説明に鑑みて、以下の説明で、トランザクションが分離ディレク
トリ内のエントリをどのように使用し、変更するかを示す。まず、ディレクトリ
XでYisAVeryLongNameという名前の新しいファイルを作成する
、すなわち、X\YisAVeryLongNameを作成するトランザクショ
ンTid10を検討されたい。分離ディレクトリに、下記の2つのエントリが追
加される。Name: YisAVeryLongName;Tid: 10; (Visible to Tid:TRUE, Visible to others:FALSE);LongName: TRUE;pairedNamePtr: 短い名前のエントリへのポインタ;Reserved : TRUE;Fid: INVALID_ID; 他の複製された情報。Name: YisAVery;LongName: FALSE;pairedNamePtr: 長い名前のエントリへのポインタ.
【0163】 これによって、Xの後続のディレクトリ列挙で、それがTid10以外のトラ
ンザクションによって行われる場合にこれらの名前のどれもが返されないが、非
トランザクションが2つの名前を見ることが保証される。さらに、別のトランザ
クションTid20が、この2つの名前のいずれかの作成またはオープンを試み
る場合に、そのトランザクションが、上の分離構造体から検出される、「ファイ
ルが既に存在するが共有違反」エラーを受け取る。
【0164】 非被トランザクションスレッドがこの名前のどちらかをオープンする場合に、
そのスレッドは、書込、削除、または他の種類の変更のためにオープンする場合
に、共有違反を受け取る。そのような非トランザクションは、読取専用でオープ
ンすることができる。これは、上で説明したように別に実施される、TxFのフ
ァイルロッキングセマンティクスに起因する。
【0165】 第2の例である、親ディレクトリXからの既存ファイルYisAVeryLo
ngNameの被トランザクション削除を検討されたい。この例では、この名前
に関する短い名前のリンクもディレクトリXにある(リンク削除の場合ではなく
、名前対の場合)。やはり、トランザクションは、識別子Tid10を有し、こ
れによって、分離ディレクトリに、下記の2つのエントリが追加される。Name: YisAVeryLongName;Tid: 10; (Visible to Tid:FALSE, Visible to others:TRUE);LongName: TRUE;pairedNamePtr: 短い名前のエントリへのポインタ;Reserved : TRUE;Fid: ファイルId; 他の複製された情報。Name: YisAVery;LongName: FALSE;pairedNamePtr: 長い名前のエントリへのポインタ.
【0166】 2つのリンクは、ディレクトリXのインデックスSCBからも削除されるが、
さしあたり、ファイルが物理的に除去されないことをTxFが保証すると仮定す
る。というのは、TxFが、削除の前にファイルにシステム所有のリンクを追加
するからである。その結果、2つの名前のどちらもが、Tid10以外のものが
新しいファイルの作成またはリンクに使用することができなくなる。これは、T
id10が、中断し、名前を再請求することを決定できるからである。また、こ
れらの名前は、ディレクトリ列挙またはCreateでTid10に可視でない
が、このCreateによって、Tid10が、2つの名前のいずれかを用いて
新しいリンク/ファイルを作成することができるようになる。これらの名前は、
他のトランザクションに可視であり、これは、他のトランザクションが、ファイ
ルID(Fid)を使用してそれらをオープンできることを意味する。非被トラ
ンザクションユーザは、これらのファイルを見ることができないが、これらの名
前を新規作成に使用することもできない。
【0167】 第3の例では、第1の例が前に発生した、すなわち、ファイルが作成されたと
考慮されたい。その後、名前がトランザクションTid10に可視なので、Ti
d10は、自由にこのファイルをオープンでき、Tid10と同様に削除するこ
とができる。したがって、Tid10が、書込のためにファイルをオープンし、
後にこれを削除した場合に、削除の後の分離エントリは、次のようになる。Name: YisAVeryLongName;Tid: 10; (Visible to Tid:FALSE, Visible to others:FALSE);LongName: TRUE;pairedNamePtr: 短い名前のエントリへのポインタ;Reserved : TRUE;Fid: INVALID_ID; 複製された情報なし。Name: YisAVery;LongName: FALSE;pairedNamePtr: 長い名前のエントリへのポインタ。
【0168】 これらのエントリでは、トランザクションのために名前が予約されるが、すべ
てに不可視にされる。予約が、ロールバックを動作可能にするために実行される
ことに留意されたい。
【0169】 浮動化されたメモリマッピングされたセクション 本発明のもう1つの態様は、アプリケーションが、書込アクセスのためにオー
プンされた1つまたは複数のファイルに対するメモリマッピングを実行しており
、アプリケーションがその一部であるトランザクションが中断した(またはコミ
ットした)ことを意識しない場合の問題の解決を対象とする。これは、たとえば
、分散トランザクションが、もう1つのノードネットワークノード上で中断した
時に発生する可能性がある。アプリケーションは、そのような時に、不適当にま
たは不当に振る舞う場合もある。
【0170】 アプリケーションが、書込アクセスのためにオープンされたファイルに対して
メモリマッピングを実行しており、それに関連するトランザクションが中断(ま
たはコミット)したことを意識せず、かつ/または、不適当にまたは不当に振る
舞っている時に、もう1つのライタが、書込アクセスのためにまだメモリマッピ
ングされているファイルをオープンすることができる。その結果、複数の同時ラ
イタ(simultaneous writers)が存在する可能性があるの
で、ファイルデータに関する衝突が発生する可能性がある。具体的に言うと、ア
プリケーションによって実行される時に、メモリマッピングは、セクションオブ
ジェクト(共有メモリのブロック)を使用して、ファイルをプロセスアドレス空
間にマッピングすることを指す。アプリケーションがページを修正する場合に、
メモリマネージャが、通常のページング動作中に変更をディスクのファイルに書
き戻すことができ、あるいは、アプリケーションが直接にフラッシュを引き起こ
すことができる。トランザクショナル環境では望ましくないが、アプリケーショ
ンは、メモリマッピングを実行することを許可され、したがって、別のトランザ
クショナルアプリケーションによって書込アクセスのためにオープンされている
ファイルへの書込を引き起こす可能性を有する。
【0171】 ファイルシステムは、トランザクションがコミットまたは中断する時を知って
おり、たとえば、そのトランザクションによって影響されたデータ構造体をクリ
ーンアップするが、メモリマネージャに照会して、トランザクションのアプリケ
ーションプロセス(の1つまたは複数)がメモリマッピングを行っているか、す
なわち、セクションハンドルを作成したかどうかを判定する。そのようなアプリ
ケーションが存在する場合には、ファイルシステムは、そのアプリケーションの
動作状態を知らず、直接にアプリケーションをシャットダウンすることも、また
はアプリケーションがマッピングされたセクションに書き込み続けないことを保
証することもできない。
【0172】 図23に、ファイルシステム62が、別のアプリケーション182によって書
込アクセスのためにオープンされるマッピングされたファイルにアプリケーショ
ン180(もはやトランザクションの一部ではない)が書き込まないようにする
方法の1つを示す。この目的のために、ファイルシステムは、セクション制御ブ
ロック(SCB)188を調整し、その結果、各々のアプリケーション180お
よび182のファイルオブジェクト184および186が、別個のセクションオ
ブジェクトポインタ190および192をポイントするようにする。無効なトラ
ンザクショナルアプリケーション1(180)のセクションオブジェクトポイン
タ190は、空であるが、有効なトランザクショナルアプリケーション2(18
2)のセクションオブジェクトポインタ192は、そのアプリケーション182
のメモリ196へのポインタを有する。これによって、メモリセクション194
が、浮動化される。
【0173】 無効なトランザクショナルアプリケーション180は、浮動化されたメモリセ
クション194から読み取るか、それに書き込むことを継続することができるが
、このメモリセクションは、もはやファイルに対応しない。それと同時に、ペー
ジが、有効なアプリケーション182の代わりにファイルシステム62を介して
キャッシュ/メモリマネージャ114によってページがフォールトされる時に、
必ず、適当な仮想メモリページ198が(したがって、アプリケーション182
によって使用されるメモリ196も)、トランザクショナルに正しいファイル、
たとえば、TOPSストリームバージョンで維持される正しいページから、また
はディスクのファイルから、適宜データを書き込まれる。ファイルシステム62
は、同様に、有効なアプリケーションによって変更されたページを、メモリマネ
ージャ114による指示に従ってディスク112に書き込む。
【0174】 しかし、無効なアプリケーション180にマッピングされたセクション内のペ
ージについて、メモリセクション194に対応するファイルシステム62に達す
るメモリマネージャ114からのすべての書込要求が、ファイルシステム62に
よって受け入れられるが、実際にはディスクに書き込まれない。その結果、マッ
ピングされたメモリが、浮動化されたセクションになり、メモリ内での書込が許
可されるが、その変更は、絶対にディスクにフラッシュされない。メモリマネー
ジャ114によるディスク112からのページのフォールトインの要求は、0が
そこに返されることをもたらす。その結果、セクション194のこのバージョン
は、もはやディスク上のファイルによってバッキングされない。このようにして
、有効なトランザクショナルアプリケーションのファイルデータが、無効なアプ
リケーションによってマッピングされたファイルに対して行われるデータ変更か
ら分離される。
【0175】 代替案では、メモリのマッピングされたセクションを、無効なアプリケーショ
ンに対してアクセスなしまたは読取専用に変更し、これによって、無効なアプリ
ケーションによるそれへの書込がアクセス違反を引き起こすようにすることが可
能である。読取が許容される場合には、無効なアプリケーションは、有効なアプ
リケーションによって行われた変更がセクション194にフォールトされる時に
、必ず、そのような変更を見ることができる。
【0176】 上の解決策のどれもが、無効なアプリケーション180のクラッシュを引き起
こす可能性があるが、有効なアプリケーション182のデータが、正しく分離さ
れることに留意されたい。無効なアプリケーション180のクラッシュを避ける
ために、それによって行われた変更を、ディスクの別のファイルに書き込むこと
ができるが、現在、そのようなポストトランザクションバージョンのサポートは
、そのようなアプリケーションに関して無用にコストが高いと見なされている。
【0177】 TxFログレコードフォーマット // 回復マネージャに既知のログレコードタイプ typedef enum { TxfLogRecTypeRedo, TxfLogRecTypeUndo, TxfLogRecTypePrepare, TxfLogRecTypeAbort, TxfLogRecTypeCommit, } TXF_LOGREC_TYPE; typedef enum { TxfLogRecActionCreateFile, TxfLogRecActionDeleteFile, TxfLogRecActionWriteFile, TxfLogRecActionOverwriteFile, TxfLogRecActionFcbInfoUpdateFile, TxfLogRecActionTemporaryBitChangeFile, TxfLogRecActionUpdateDupInfo, TxfLogRecActionTruncateFile, TxfLogRecActionRestoreFileSizes, TxfLogRecActionCancelRecord, TxfLogRecActionTestPrint } TXF_LOGREC_ACTION; typedef struct { TXF_LOGREC_TYPE Type; TXF_LOGREC_ACTION Action; TXF_TRANS_ID TransId; } TXF_LOGREC, *PTXF_LOGREC; /* typedef struct { TXF_LOGREC_HDR header; char data[1]; } TXF_LOGREC, *PTXF_LOGREC; */ // // 削除ファイルログレコード。 // // // 長い名前および短い名前は、レコードの直後に配置される。 // typedef struct _TXF_DELETE_FILE_UNDO_LOGREC { TXF_LOGREC Header; // // フラグの値については下を参照 // USHORT Flags; // // 短い名前がない場合にはShortNameLengthは0。 // 短い名前は、FileName.FileNameが終わった // 直後から始まる。これは、 // PWCHAR FileName.FileName + // FileName.FileNameLengthにある。 // ShortNameLengthはユニコード文字内である。 // USHORT ShortNameLength; // // 名前の変更が行われたMungedFileNumber。 // ULONG MungedFileNumber; // // 名前の変更が行われたTxfサブディレクトリ。 // ULONG SubDirNumber; // // 有効な複製された情報、親ディレクトリ、長さなどを伴う // 長い/組み合わされた名前。 // FILE_NAME FileName; // // この後にフィールドを追加してはならない。 // } *PTXF_DELETE_FILE_UNDO_LOGREC, TXF_DELETE_FILE_UNDO_LOGREC; // // ファイルがディレクトリの場合に真。 // #define TXF_DELETE_FILE_UNDO_FLAGS_DIRECTORY 0x01 // // この削除動作でFidフラグが保管された場合に真。 // #define TXF_DELETE_FILE_UNDO_FLAGS_FID_STORED 0x02 // // 削除のために名前をオープンしたCCBのIgnoreCaseフラグ。 // #define TXF_DELETE_FILE_UNDO_FLAGS_IGNORE_CASE 0x04 // // Create-Fileアンドゥログレコード。 // // 長い名前および短い名前は、レコードの直後に配置される。 // typedef struct _TXF_CREATE_FILE_UNDO_LOGREC { TXF_LOGREC Header; FILE_REFERENCE ParentFid; // // LongNameLengthはユニコード文字内。 // USHORT LongNameLength; // // LongNameOffset = sizeof(struct // _TXF_CREATE_FILE_UNDO_LOGREC) // // // フラグの値については下を参照 // USHORT Flags; // // ShortNameLength は、短い名前がない場合に0。 // Lengthはユニコード文字内。 // USHORT ShortNameLength; // // ShortNameOffsetはsizeof(struct // _TXF_CREATE_FILE_UNDO_LOGREC)+ // LongNameLength*sizeof(WCHAR)である。 // USHORT Reserved1; ULONG Reserved2; } *PTXF_CREATE_FILE_UNDO_LOGREC, TXF_CREATE_FILE_UNDO_LOGREC; // // ファイルがディレクトリである場合に真。 // #define TXF_CREATE_FILE_UNDO_FLAGS_DIRECTORY 0x01 // // 名前を作成したCCBのIgnoreCaseフラグ。 // #define TXF_CREATE_FILE_UNDO_FLAGS_IGNORE_CASE 0x02 // // Overwrite-Fileアンドゥログレコード。 // typedef struct _TXF_OVERWRITE_FILE_UNDO_LOGREC { TXF_LOGREC Header; // // 上書きされたファイルのファイル参照 // FILE_REFERENCE Fid; // // TxFディレクトリに作成されたTxFファイルのファイル参照。 // FILE_REFERENCE TxfFileFid; // // TxFディレクトリに作成されたTxFファイルのMungedFileNumber。 // ULONG MungedFileNumber; // // TxFファイルが作成されたTxFサブディレクトリ。 // ULONG SubDirNumber; USHORT Flags; USHORT Reserved1; ULONG Reserved2; } *PTXF_OVERWRITE_FILE_UNDO_LOGREC, TXF_OVERWRITE_FILE_UNDO_LOGREC; // // FcbInfoUpdateアンドゥログレコード。これは、 // 標準情報のTxfLsnを検査せずに無条件に元に戻される。 // typedef struct _TXF_FCB_INFO_UPDATE_UNDO_LOGREC { TXF_LOGREC Header; // // 上書きされたファイルのファイル参照 // FILE_REFERENCE Fid; // // アンドゥ際に復元されるFcb情報。 // DUPLICATED_INFORMATION FcbInfo; } *PTXF_FCB_INFO_UPDATE_UNDO_LOGREC, TXF_FCB_INFO_UPDATE_UNDO_LOGREC; // // FcbInfoUpdateアンドゥログレコード。これは // 標準情報のTxfLsnを検査せずに無条件で元に戻される。 // typedef struct _TXF_TEMPORARY_BIT_CHANGE_UNDO_LOGREC { TXF_LOGREC Header; // // 上書きされたファイルのファイル参照 // FILE_REFERENCE Fid; ULONG PreviousBitValue; // // デフォルトデータストリームの場合に、属性名長さは0。 // Lengthはユニコード文字内。 // 属性名は、存在する場合にログレコードに続く。 // USHORT AttrNameLength; WCHAR AttrName[1]; } *PTXF_TEMPORARY_BIT_CHANGE_UNDO_LOGREC, TXF_TEMPORARY_BIT_CHANGE_UNDO_LOGREC; // // UpdateDupInfoアンドゥログレコード。 // // 長い名前は、レコードの直後に配置される。 // typedef struct _TXF_UPDATE_DUPINFO_UNDO_LOGREC { TXF_LOGREC Header; // // 親ディレクトリのFid。 // FILE_REFERENCE ParentFid; // // LongNameLengthはユニコード文字内。 // USHORT LongNameLength; // // フラグの値については下を参照。 // USHORT Flags; // // 複製された情報。 // DUPLICATED_INFORMATION DupInfo; WCHAR LongName[1]; } *PTXF_UPDATE_DUPINFO_UNDO_LOGREC, TXF_UPDATE_DUPINFO_UNDO_LOGREC; #define TXF_UPDATE_DUPINFO_UNDO_FLAGS_DIRECTORY 0x0001 // // Truncateアンドゥログレコード。 // // 属性名は、レコードの直後に配置される。 // typedef struct _TXF_TRUNCATION_UNDO_LOGREC { TXF_LOGREC Header; // // ファイルのFid。 // FILE_REFERENCE Fid; LONGLONG ValidDataLength; LONGLONG FileSize; // // デフォルトデータストリームの場合に、属性名長さは0。 // Lengthはユニコード文字内。 // 属性名は、存在する場合にログレコードに続く。 // USHORT AttrNameLength; WCHAR AttrName[1]; } *PTXF_TRUNCATION_UNDO_LOGREC, TXF_TRUNCATION_UNDO_LOGREC; // // Restore file sizesアンドゥログレコード。 // // 属性名は、レコードの直後に配置される。 // typedef struct _TXF_RESTORE_FILE_SIZES_UNDO_LOGREC { TXF_LOGREC Header; // // ファイルのFid。 // FILE_REFERENCE Fid; LONGLONG ValidDataLength; LONGLONG FileSize; // // デフォルトデータストリームの場合に、属性名長さは0。 // Lengthはユニコード文字内。 // 属性名は、存在する場合にログレコードに続く。 // USHORT AttrNameLength; WCHAR AttrName[1]; } *PTXF_RESTORE_FILE_SIZES_UNDO_LOGREC, TXF_RESTORE_FILE_SIZES_UNDO_LOGREC; // // 変更テーブルエントリのフォーマットおよび関連する // 定数を定義する。 // #define TOPS_SECTOR_SIZE (512) #define TOPS_PAGE_SIZE (4096) #define TOPS_PAGE_SHIFT (12) #define TOPS_SECTORS_PER_PAGE (TOPS_PAGE_SIZE / TOPS_SECTOR_SIZE) #define TOPS_MAXIMUM_FLUSH_SIZE (0x10000) typedef struct _CHANGE_ENTRY { // // これらの2つのフィールドは、ストリームの置換された範囲の // 仮想アドレスを記述する。 // ULONGLONG VirtualPageNumber; ULONG NumberPages; // // これは、古いページが書き込まれたTopsストリーム内の // 開始ページ番号である。 // ULONG TopsPageNumber; // // これは、この変更を記述したログレコードのLsnである。 // CLFS_LSN Lsn; // // この変更に含まれるアンドゥページのすべてのバイトに // SequenceNumberが書き込まれる。 // UCHAR SequenceNumber; // // サイズが必ず4ワードに丸められるので、位置合せ用の // 予約バイトをここに置いてもよい。 // UCHAR Reserved[7]; // // 最後に、これらは、データの置換されたバイトであり、 // Topsストリーム内の引き裂かれた書込の検出を可能にする。 // 1ページに十分なメモリが割り当てられるが、 // NumberPagesが1以上の場合に追加のバイトが割り当てられる。 // UCHAR DisplacedBytes[TOPS_SECTORS_PER_PAGE]; } CHANGE_ENTRY, *PCHANGE_ENTRY; // // Create-Fileアンドゥログレコード。 // // 長い名前および短い名前は、レコードの直後に配置される。 // typedef struct _TXF_WRITE_FILE_UNDO_LOGREC { TXF_LOGREC Header; // // アンドゥデータがそこから取り込まれたファイルのファイル参照。 // FILE_REFERENCE FileReference; // // アンドゥデータがどこに書き込まれるかを記述し、 // シーケンス番号に置換されたバイトを保管する。 // CHANGE_ENTRY ChangeEntry; } TXF_WRITE_FILE_UNDO_LOGREC, *PTXF_WRITE_FILE_UNDO_LOGREC;
【0178】 前述の詳細な説明からわかるように、アプリケーションが1つまたは複数のフ
ァイルに対して複数のトランザクショナル動作を簡単に実行できるようにするト
ランザクショナルファイルシステムおよび方法が提供される。複数のファイルシ
ステム動作が、ファイルシステム内でトランザクショナルな形で一緒に結び付け
られ、動作が、一緒にコミットされるか、すべての部分的なアクションが元に戻
されるかのいずれかになる。さらに、あるトランザクションの動作およびデータ
変更が、別のトランザクションの動作およびデータから分離される。したがって
、たとえば、本発明は、素早く効率的で安全な形で、ファイルシステムコンポー
ネントによって処理される単一のトランザクションとしてウェブサイトを更新す
ることができる。それと同時に、進行中の変更が、トランザクションがコミット
するまで他者から分離される。
【0179】 本発明は、さまざまな修正構成および代替構成の余地があるが、ある例示の実
施形態が、図面に示され、上で詳細に説明された。しかし、開示された特定の形
態に本発明を制限する意図はなく、逆に、本発明は、本発明の趣旨および範囲に
含まれるすべての修正構成、代替構成、および均等物を含むことを理解されたい
【図面の簡単な説明】
【図1】 本発明を組み込むことができるコンピュータシステムを表すブロック図である
【図2】 本発明の一態様によるトランザクショナルファイルシステムを実施する一般的
なアーキテクチャを表すブロック図である。
【図3】 本発明の一態様による、トランザクション処理されるファイルの作成/オープ
ンに関する要求を表すブロック図である。
【図4】 本発明の一態様による、オープンされたトランザクション処理されるファイル
に対してファイルシステム動作を実行する要求を表すブロック図である。
【図5】 本発明の一態様による、ある時間の期間にわたるトランザクション処理される
ファイルの分離を表すブロック図である。
【図6】 本発明の一態様による、ファイルバージョンを追跡するデータ構造体を表すブ
ロック図である。
【図7】 本発明の一態様による、経時的に維持される複数のファイルバージョンを表す
ブロック図である。
【図8】 トランザクショナルにオープンされたファイルのデータの、書き込まれるペー
ジを表すブロック図である。
【図9】 本発明の一態様による、トランザクションでの読取アクセスおよび書込アクセ
スのためにオープンされたファイルの分離をサポートするデータ構造体の間の関
係を表すブロック図である。
【図10】 本発明の一態様による、トランザクションでの読取アクセスおよび書込アクセ
スのためにオープンされたファイルの分離をサポートするデータ構造体の間の関
係を表すブロック図である。
【図11】 本発明の一態様による、2レベルログ記録機構およびログが同期化されている
かどうかを検証する機構を表すブロック図である。
【図12】 本発明の一態様による、ログ記録されるページデータと、ページデータがログ
と同期化されているかどうかを検証する機構を表すブロック図である。
【図13】 本発明の一態様による、ページデータがログ記録されたレコードと同期化され
ているかどうかに基づいて行われるアクションを表す流れ図である。
【図14】 本発明の一態様による、代替バージョン管理法式で経時的に維持される複数の
ファイルバージョンを表すブロック図である。
【図15】 本発明の一態様による、ネットワークを介するトランザクショナルファイルシ
ステム動作を表すブロック図である。
【図16】 本発明の一態様による、名前空間分離をもたらす階層ファイル構造および分離
ディレクトリの使用を表すブロック図である。
【図17】 本発明の一態様による、名前空間分離をもたらす階層ファイル構造および分離
ディレクトリの使用を表すブロック図である。
【図18】 本発明の一態様による、名前空間分離をもたらす階層ファイル構造および分離
ディレクトリの使用を表すブロック図である。
【図19】 本発明の一態様による、名前空間分離をもたらす分離ディレクトリの使用に関
する一般的なルールを示す流れ図である。
【図20】 本発明の一態様による、名前空間分離をもたらす分離ディレクトリの使用に関
する一般的なルールを示す流れ図である。
【図21】 本発明の一態様による、名前空間分離をもたらす分離ディレクトリの使用に関
する一般的なルールを示す流れ図である。
【図22】 本発明の一態様による、名前空間分離をもたらす分離ディレクトリの使用に関
する一般的なルールを示す流れ図である。
【図23】 本発明の一態様による、メモリマッピングされたセクションの浮動化を表すブ
ロック図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AL,AM,AT, AU,AZ,BA,BB,BG,BR,BY,CA,C H,CN,CU,CZ,DE,DK,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MD ,MG,MK,MN,MW,MX,NO,NZ,PL, PT,RO,RU,SD,SE,SG,SI,SK,S L,TJ,TM,TR,TT,UA,UG,UZ,VN ,YU,ZA,ZW (72)発明者 トーマス ジェイ.ミラー アメリカ合衆国 98004 ワシントン州 ベルビュー ノース イースト 47 スト リート 9015 (72)発明者 ロバート ジー.アトキンソン アメリカ合衆国 98072 ワシントン州 ウッディンビル ノース イースト 196 ストリート 17926 Fターム(参考) 5B082 GB06 【要約の続き】 回復を容易にする複数レベルログでの名前空間ログ記録 動作も処理する。ページデータもまた、メインログと別 にログ記録され、システムクラッシュの前にページが完 全にディスクにフラッシュされたかどうかをログが判定 できるようにする一意の署名を有する。名前空間分離 は、トランザクションが分離ディレクトリを介してコミ ットするまで提供され、これによって、コミットされる までは、トランザクションが、それ自体の動作の影響を 見るが、他のトランザクションの動作の影響は見ない。 ネットワーク上のトランザクションも、リダイレクタプ ロトコルを介して容易にされる。

Claims (40)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータ実行可能命令を有するコンピュータ可読媒体で
    あって、 ファイルが第1トランザクションに関連することを示す情報をファイルシステ
    ムで受け取り、 ファイルに対する名前空間関連動作を実行する第1要求をファイルシステムで
    受け取り、 前記ファイルに関する情報を分離ディレクトリに保管し、 前記ファイルに向けられた第2要求を受け取り、 前記ファイルが前記第2要求に関して存在するかどうかを判定するために前記
    分離ディレクトリにアクセスするコンピュータ実行可能命令を備えることを特徴
    とするコンピュータ可読媒体。
  2. 【請求項2】 前記第1トランザクションが完了したことの情報を受け取り
    、前記分離ディレクトリに保管された前記ファイル情報を除去するコンピュータ
    実行可能命令をさらに含むことを特徴とする請求項1に記載のコンピュータ可読
    媒体。
  3. 【請求項3】 前記第1要求は、前記第1トランザクションからの、前記フ
    ァイルを削除する要求を含み、前記ファイルが親ディレクトリを有し、前記分離
    ディレクトリは、前記親ディレクトリに関連することを特徴とする請求項1に記
    載のコンピュータ可読媒体。
  4. 【請求項4】 前記第1トランザクションがコミットしたことの情報を受け
    取り、前記分離ディレクトリ内に保管された前記ファイル情報を除去するコンピ
    ュータ実行可能命令をさらに含むことを特徴とする請求項3に記載のコンピュー
    タ可読媒体。
  5. 【請求項5】 前記第1トランザクションが中断したことの情報を受け取り
    、前記分離ディレクトリ内に保管された前記ファイル情報を除去し、前記ファイ
    ルの前記親ディレクトリにファイル情報を保管するコンピュータ実行可能命令を
    さらに含むことを特徴とする請求項3に記載のコンピュータ可読媒体。
  6. 【請求項6】 前記第2要求は、前記第1トランザクションからのファイル
    情報に関する要求を備え、前記分離ディレクトリへのアクセスは、前記ファイル
    が前記第1トランザクションに関して存在しないことを判定することを特徴とす
    る請求項1に記載のコンピュータ可読媒体。
  7. 【請求項7】 前記第2要求は、第2トランザクションからの、前記ファイ
    ルへのアクセスの要求を備え、前記分離ディレクトリへのアクセスは、前記ファ
    イルが前記第2トランザクションに関して存在することを判定することを特徴と
    する請求項1に記載のコンピュータ可読媒体。
  8. 【請求項8】 ファイルハンドルを前記第2トランザクションに返すコンピ
    ュータ実行可能命令をさらに有することを特徴とする請求項7に記載のコンピュ
    ータ可読媒体。
  9. 【請求項9】 ファイルメタデータ情報を前記第2トランザクションに返す
    コンピュータ実行可能命令をさらに含むことを特徴とする請求項7に記載のコン
    ピュータ可読媒体。
  10. 【請求項10】 前記ファイルは、親ディレクトリに関連し、前記分離ディ
    レクトリを作成し、前記分離ディレクトリを前記親ディレクトリに関連付けるコ
    ンピュータ実行可能命令をさらに含むことを特徴とする請求項1に記載のコンピ
    ュータ可読媒体。
  11. 【請求項11】 前記第1要求は、前記第1トランザクションからの、親デ
    ィレクトリ内で前記ファイルを作成する要求を備えることを特徴とする請求項1
    に記載のコンピュータ可読媒体。
  12. 【請求項12】 前記第1トランザクションがコミットされたことを示す情
    報を受け取り、前記分離ディレクトリ内に保管された前記ファイル情報を除去し
    、ファイル情報を前記ファイルの前記親ディレクトリに保管するコンピュータ実
    行可能命令をさらに含むことを特徴とする請求項11に記載のコンピュータ可読
    媒体。
  13. 【請求項13】 前記第1トランザクションが中断したことを示す情報を受
    け取り、前記分離ディレクトリに保管された前記ファイル情報を除去するコンピ
    ュータ実行可能命令をさらに含むことを特徴とする請求項11に記載のコンピュ
    ータ可読媒体。
  14. 【請求項14】 前記第2要求は、第2トランザクションからのファイル情
    報に関する要求を備え、前記分離ディレクトリへのアクセスは、前記ファイルが
    前記第2トランザクションに関して存在しないことを判定することを特徴とする
    請求項11に記載のコンピュータ可読媒体。
  15. 【請求項15】 前記第2要求は、前記第1トランザクションからの前記フ
    ァイルにアクセスする要求を備え、前記分離ディレクトリへのアクセスは、前記
    ファイルが前記第1トランザクションに関して存在することを判定することを特
    徴とする請求項11に記載のコンピュータ可読媒体。
  16. 【請求項16】 前記第2要求は、前記第1トランザクションからのファイ
    ル情報に関する要求を備え、前記分離ディレクトリへのアクセスは、前記ファイ
    ルが前記第1トランザクションに関して存在することを判定することを特徴とす
    る請求項11に記載のコンピュータ可読媒体。
  17. 【請求項17】 前記第2要求に応答して、前記第1トランザクションにフ
    ァイルメタデータ情報を返すコンピュータ実行可能命令をさらに含むことを特徴
    とする請求項16に記載のコンピュータ可読媒体。
  18. 【請求項18】 ファイルを維持する方法であって、 ファイルシステム上で第1ファイルシステム動作を実行する第1要求を、前記
    ファイルシステムで受け取り、前記第1要求はトランザクションに関連すること
    、 前記第1ファイルシステム動作を実行すること、 前記第1ファイルシステム動作が前記トランザクションに関連することを示す
    、前記ファイルシステムからアクセス可能な情報を維持すること、および、 前記トランザクションがコミットする場合に、前記第1ファイルシステム動作
    をコミットすること を備えることを特徴とする方法。
  19. 【請求項19】 前記ファイルシステムで、前記トランザクションがコミッ
    トしたことを示す情報を受け取ることをさらに備えることを特徴とする請求項1
    8に記載の方法。
  20. 【請求項20】 前記トランザクションがコミットしない場合に、前記第1
    ファイルシステム動作を元に戻すことを特徴とする請求項18に記載の方法。
  21. 【請求項21】 前記第1ファイルシステム動作は、ファイルを作成するこ
    とを備えることを特徴とする請求項18に記載の方法。
  22. 【請求項22】 前記第1ファイルシステム動作は、ファイルを削除するこ
    とを備えることを特徴とする請求項18に記載の方法。
  23. 【請求項23】 前記第1ファイルシステム動作は、ファイルの名前を変更
    することを備えることを特徴とする請求項18に記載の方法。
  24. 【請求項24】 前記第1ファイルシステム動作に対応する情報を少なくと
    も1つのログにログ記録することをさらに備えることを特徴とする請求項18に
    記載の方法。
  25. 【請求項25】 前記トランザクションがコミットしない場合に、前記少な
    くとも1つのログにアクセスすること、および、前記少なくとも1つのログ内の
    前記情報に基づいて前記第1ファイルシステム動作を元に戻すことを特徴とする
    請求項24に記載の方法。
  26. 【請求項26】 前記トランザクションが中断したことを示す情報を前記フ
    ァイルシステムで受け取ること、および、それに応答して、前記第1ファイルシ
    ステム動作を元に戻すことをさらに備えることを特徴とする請求項18に記載の
    方法。
  27. 【請求項27】 前記第1ファイルシステム動作をコミットすることは、前
    記第1ファイルシステム動作が前記トランザクションに関連することを示す情報
    を変更することを含むことを特徴とする請求項18に記載の方法。
  28. 【請求項28】 前記ファイルシステム上で第2ファイルシステム動作を実
    行する第2要求を前記ファイルシステムで受け取り、前記第2要求は前記トラン
    ザクションに関連すること、前記第2ファイルシステム動作を実行すること、前
    記第2ファイルシステム動作が前記トランザクションに関連することを示す、前
    記ファイルシステムからアクセス可能な情報を維持すること、および、前記トラ
    ンザクションがコミットする場合に、前記第2ファイルシステム動作をコミット
    することをさらに備えることを特徴とする請求項18に記載の方法。
  29. 【請求項29】 前記第1ファイルシステム動作は、ファイルをオープンす
    ることを備えることを特徴とする請求項18に記載の方法。
  30. 【請求項30】 前記トランザクションに関連するファイルのバージョンを
    維持することをさらに含むことを特徴とする請求項29に記載の方法。
  31. 【請求項31】 ファイルへのアクセスを提供する方法であって、 ファイルをオープンする第1要求を受け取り、前記要求が第1トランザクショ
    ンに関連すること、 前記ファイルの第1インスタンスをオープンし、前記ファイルの前記第1イン
    スタンスは前記第1トランザクションに関連することを示す情報を維持すること
    、 前記ファイルをオープンする第2要求を受け取ること、 前記ファイルの第2インスタンスをオープンすること、 前記ファイルの前記第2インスタンスのデータに対する変更を受け取ること、 前記第1インスタンスに対応する前記ファイルの第1バージョンを、前記第2
    インスタンスに関連する前記ファイルの第2バージョンから分離するためにデー
    タを維持すること、 前記ファイルを読み取る読取要求を受け取り、前記読取要求は前記第1トラン
    ザクションに関連すること、 前記ファイルの前記第1バージョンが第1トランザクションに関連することを
    判定すること、および、 前記読取要求に応答して、前記ファイルの前記第1バージョンに対応するデー
    タを読み取ること を備えることを特徴とする方法。
  32. 【請求項32】 前記ファイルの前記第1バージョンを前記ファイルの前記
    第2バージョンから分離するためにデータを維持することは、前記ファイルの前
    記第1バージョンのデータから別個の前記ファイルの前記第2バージョンの前記
    データに対する前記変更を維持することを含むことを特徴とする請求項31に記
    載の方法。
  33. 【請求項33】 データに対する前記変更を受け取ることに応答して前記フ
    ァイルに変更を書き込むことをさらに備え、前記ファイルの前記第1バージョン
    のデータから別個の前記ファイルの前記第2バージョンの前記データに対する前
    記変更を維持することは、前記変更を前記ファイルに書き込む前に、前記ファイ
    ルの前記第1バージョンの部分のコピーを第1データ構造体に保存することを含
    むことを特徴とする請求項32に記載の方法。
  34. 【請求項34】 前記ファイルの第1バージョンを前記ファイルの第2バー
    ジョンから分離するためにデータを維持することは、前記部分の前記コピーの位
    置をマッピングするために第2データ構造体を維持することを含むことを特徴と
    する請求項33に記載の方法。
  35. 【請求項35】 前記部分は、少なくとも1つのページに対応し、前記第2
    データ構造体は、変更に対応する各ページ番号を記録することを特徴とする請求
    項34に記載の方法。
  36. 【請求項36】 前記読取要求に応答して前記ファイルの前記第1バージョ
    ンに対応するデータを読み取ることは、前記読取要求に対応する前記第1データ
    構造体内の前記ファイルデータの少なくとも1つの位置を判定するために前記第
    2データ構造体にアクセスすることを含むことを特徴とする請求項34に記載の
    方法。
  37. 【請求項37】 前記データに対する前記変更に対応する情報をログ内のレ
    コードにログ記録することをさらに備え、前記第2データ構造体は前記レコード
    を識別する情報をさらに含むことを特徴とする請求項34に記載の方法。
  38. 【請求項38】 前記第2要求は、第2トランザクションに関連することを
    特徴とする請求項31に記載の方法。
  39. 【請求項39】 前記ファイルをオープンする前記第1要求は、読取専用要
    求に対応することを特徴とする請求項31に記載の方法。
  40. 【請求項40】 前記ファイルをクローズするクローズ要求を受け取り、前
    記クローズ要求は前記第1トランザクションに関連すること、前記第1トランザ
    クションに関して前記ファイルをクローズすること、前記ファイルをオープンす
    る第3要求を受け取り、前記第3要求は前記第1トランザクションに関連するこ
    と、前記第1トランザクションから、前記ファイル内のデータにアクセスする要
    求を受け取ること、および、データにアクセスする前記要求に応答して、前記第
    2バージョンに対応する前記ファイル内のデータにアクセスすることをさらに備
    えることを特徴とする請求項31に記載の方法。
JP2001575287A 2000-03-30 2001-03-16 トランザクショナルファイルシステム Expired - Fee Related JP4219589B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/539,233 US6856993B1 (en) 2000-03-30 2000-03-30 Transactional file system
US09/539,233 2000-03-30
PCT/US2001/008486 WO2001077908A2 (en) 2000-03-30 2001-03-16 Transactional file system

Publications (2)

Publication Number Publication Date
JP2003530646A true JP2003530646A (ja) 2003-10-14
JP4219589B2 JP4219589B2 (ja) 2009-02-04

Family

ID=24150363

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001575287A Expired - Fee Related JP4219589B2 (ja) 2000-03-30 2001-03-16 トランザクショナルファイルシステム

Country Status (6)

Country Link
US (8) US6856993B1 (ja)
EP (1) EP1269353A2 (ja)
JP (1) JP4219589B2 (ja)
CN (3) CN100445998C (ja)
AU (1) AU2001245806A1 (ja)
WO (1) WO2001077908A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004280826A (ja) * 2003-03-12 2004-10-07 Microsoft Corp プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
JP2005243013A (ja) * 2004-02-12 2005-09-08 Irdeto Access Bv 外部データの記憶方法及びシステム
JP2007509409A (ja) * 2003-10-24 2007-04-12 マイクロソフト コーポレーション ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム
JP2010532530A (ja) * 2007-06-29 2010-10-07 マイクロソフト コーポレーション メモリトランザクションのグループ化
JP2012515393A (ja) * 2009-01-14 2012-07-05 マイクロソフト コーポレーション トランザクションメモリにおけるトランザクション処理

Families Citing this family (297)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856993B1 (en) 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US10235368B2 (en) * 2000-06-08 2019-03-19 International Business Machines Corporation System and method for updating external file referenced by database with transactional consistency using SQL
US7246123B2 (en) * 2000-08-04 2007-07-17 Carr Scott Software Incorporated Automatic transaction management
US6751635B1 (en) * 2000-08-18 2004-06-15 Network Appliance, Inc. File deletion and truncation using a zombie file space
US7222132B2 (en) * 2001-03-20 2007-05-22 Swsoft Holdings, Ltd. Common template file system tree for virtual environments and virtual servers
US7711771B2 (en) * 2001-05-25 2010-05-04 Oracle International Corporation Management and synchronization application for network file system
US7016920B2 (en) * 2001-05-25 2006-03-21 International Business Machines Corporation Method for tracking relationships between specified file name and particular program used for subsequent access in a database
US7257610B2 (en) * 2001-10-17 2007-08-14 Microsoft Corporation Systems and methods for sending coordinated notifications
US6957219B1 (en) * 2001-11-15 2005-10-18 Microsoft Corporation System and method of pipeline data access to remote data
KR100450400B1 (ko) * 2001-12-26 2004-09-30 한국전자통신연구원 안전 기억 장치가 없는 환경을 위한 이중화 구조의 주 메모리 상주 데이터베이스 관리시스템 및 그 데이터 일치성 제어방법
US7823060B2 (en) * 2002-06-07 2010-10-26 Microsoft Corporation Undo/redo architecture across multiple files
US20040003007A1 (en) * 2002-06-28 2004-01-01 Prall John M. Windows management instrument synchronized repository provider
US7076508B2 (en) * 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files
US6976038B2 (en) * 2002-10-17 2005-12-13 International Business Machines Corporation Method and apparatus for real time creation and modification of a change log for multi-server synchronization
US7174420B2 (en) * 2002-10-22 2007-02-06 Microsoft Corporation Transaction-safe FAT file system
US7363540B2 (en) 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
US7181473B1 (en) * 2002-11-12 2007-02-20 Microsoft Corporation Identifying files within a namespace
US7234109B2 (en) * 2002-11-19 2007-06-19 Microsoft Corp. Equality of extensible markup language structures
US7003532B2 (en) * 2002-11-27 2006-02-21 Microsoft Corporation System and method for scaleable multiplexed transactional log recovery
US7739240B2 (en) * 2002-12-09 2010-06-15 Hewlett-Packard Development Company, L.P. Replication and replica management in a wide area file system
JP4077329B2 (ja) * 2003-01-31 2008-04-16 株式会社東芝 トランザクション処理システム、並行制御方法及びプログラム
US7240172B2 (en) * 2003-02-07 2007-07-03 Sun Microsystems, Inc. Snapshot by deferred propagation
US7353495B2 (en) * 2003-02-28 2008-04-01 Bea Systems, Inc. Method for protection against interleaving transactions using a transaction manager
US7849464B2 (en) * 2003-02-28 2010-12-07 Oracle International Corporation Protection against interleaving transactions using a transaction manager
CA2422161C (en) * 2003-03-14 2009-10-06 Ibm Canada Limited - Ibm Canada Limitee Decoupled object identification for object switching in database systems
US7139781B2 (en) * 2003-04-29 2006-11-21 International Business Machines Corporation Managing filesystem versions
DE10323033A1 (de) * 2003-05-20 2004-12-23 Giesecke & Devrient Gmbh Laden eines ausführbaren Programms in einen tragbaren Datenträger
US7243088B2 (en) 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
GB2405228B8 (en) * 2003-08-19 2007-09-13 Ibm A method, apparatus and computer program for verifying the order of a queue of work items
US7269588B1 (en) 2003-09-24 2007-09-11 Oracle International Corporation Neighborhood locking technique for increasing concurrency among transactions
US20050108186A1 (en) * 2003-10-31 2005-05-19 Eric Anderson Textual filesystem interface method and apparatus
US7328217B2 (en) * 2003-11-26 2008-02-05 Symantec Operating Corporation System and method for detecting and storing file identity change information within a file system
US20050144299A1 (en) * 2003-12-04 2005-06-30 Blevins Delmar E. System and method for supporting XA 2-phase commit protocols with a loosely coupled clustered database server
US8171426B2 (en) 2003-12-29 2012-05-01 International Business Machines Corporation Method for secondary selection highlighting
JP4181061B2 (ja) * 2004-01-30 2008-11-12 株式会社東芝 コンテンツ管理装置、コンテンツ管理方法及びコンテンツ管理プログラム
US20050172046A1 (en) * 2004-01-30 2005-08-04 Goodwin Kevin M. Switching I/O states for volume without completely tearing down stack
US20050172094A1 (en) * 2004-01-30 2005-08-04 Goodwin Kevin M. Selectively establishing read-only access to volume
US7346620B2 (en) * 2004-02-12 2008-03-18 International Business Machines Corporation Adjusting log size in a static logical volume
US7486672B2 (en) * 2004-04-20 2009-02-03 Samsung Electronics Co., Ltd. Apparatus and method for searching trie trees using masks with non-symbol boundaries and flooding default routes in a massively parallel router
US7779086B1 (en) * 2004-05-04 2010-08-17 Oracle America, Inc. Methods and apparatus for performing a remote procedure call
US20050256859A1 (en) * 2004-05-13 2005-11-17 Internation Business Machines Corporation System, application and method of providing application programs continued access to frozen file systems
US7567571B2 (en) * 2004-05-26 2009-07-28 Samsung Electronics Co., Ltd. Apparatus and method using vector table indirection to maintain forwarding tables in a router
US7519628B1 (en) * 2004-06-01 2009-04-14 Network Appliance, Inc. Technique for accelerating log replay with partial cache flush
US8949395B2 (en) 2004-06-01 2015-02-03 Inmage Systems, Inc. Systems and methods of event driven recovery management
US7617256B2 (en) * 2004-07-19 2009-11-10 Microsoft Corporation Remote file updates through remote protocol
US7593916B2 (en) * 2004-08-19 2009-09-22 Sap Ag Managing data administration
US7653665B1 (en) * 2004-09-13 2010-01-26 Microsoft Corporation Systems and methods for avoiding database anomalies when maintaining constraints and indexes in presence of snapshot isolation
JP4104586B2 (ja) * 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US20060069662A1 (en) * 2004-09-30 2006-03-30 Citrix Systems, Inc. Method and apparatus for remapping accesses to virtual system resources
US7571164B2 (en) * 2004-10-01 2009-08-04 Sap Ag System and method for deferred database connection configuration
US7330955B2 (en) * 2004-10-18 2008-02-12 Seagate Technology Llc Recovery record for updating a system configuration
GB0424442D0 (en) * 2004-11-05 2004-12-08 Ibm A method, apparatus, computer program and computer program product for managing the durability of a plurality of transactions
US7496565B2 (en) * 2004-11-30 2009-02-24 Microsoft Corporation Method and system for maintaining namespace consistency with a file system
US7610307B2 (en) 2004-11-30 2009-10-27 Microsoft Corporation Method and system of detecting file system namespace changes and restoring consistency
US7912973B2 (en) * 2004-12-03 2011-03-22 Microsoft Corporation Message exchange protocol extension negotiation
US7877543B2 (en) * 2004-12-03 2011-01-25 Hewlett-Packard Development Company, L.P. System and method for writing data and a time value to an addressable unit of a removable storage medium
US7716260B2 (en) * 2004-12-16 2010-05-11 Oracle International Corporation Techniques for transaction semantics for a database server performing file operations
WO2006064498A2 (en) * 2004-12-16 2006-06-22 Ramot At Tel-Aviv University Ltd. Transactional flash file system for microcontrollers and embedded systems
US20060136508A1 (en) * 2004-12-16 2006-06-22 Sam Idicula Techniques for providing locks for file operations in a database management system
US8321439B2 (en) 2004-12-17 2012-11-27 Microsoft Corporation Quick filename lookup using name hash
US9639554B2 (en) 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
US7873596B2 (en) * 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
US8606830B2 (en) 2004-12-17 2013-12-10 Microsoft Corporation Contiguous file allocation in an extensible file system
US20060168098A1 (en) * 2004-12-27 2006-07-27 International Business Machines Corporation Service offering for the delivery of partial information with a restore capability
US20060161601A1 (en) * 2005-01-18 2006-07-20 Barrs John W Heap manager and application programming interface support for managing versions of objects
US20060161602A1 (en) * 2005-01-18 2006-07-20 Barrs John W Object based access application programming interface for data versioning
US20060161576A1 (en) * 2005-01-18 2006-07-20 Barrs John W Method and apparatus for dimensional data versioning and recovery management
US7395386B2 (en) * 2005-01-18 2008-07-01 Lenovo (Singapore) Pte. Ltd. Method and apparatus for data versioning and recovery using delta content save and restore management
US20060161603A1 (en) * 2005-01-18 2006-07-20 Barrs John W Platform infrastructure to provide an operating system based application programming interface undo service
US20060161751A1 (en) * 2005-01-18 2006-07-20 Barrs John W Virtual memory management infrastructure for monitoring deltas and supporting undo versioning in a paged memory system
US20060161912A1 (en) * 2005-01-18 2006-07-20 Barrs John W Infrastructure for device driver to monitor and trigger versioning for resources
US7565645B2 (en) * 2005-01-18 2009-07-21 Lenovo (Singapore) Pte Ltd. Method and apparatus for marking code for data versioning
US20060161911A1 (en) * 2005-01-18 2006-07-20 Barrs John W Method and apparatus for managing versioning data in a network data processing system
US9367579B1 (en) * 2005-02-23 2016-06-14 Veritas Technologies Llc System and method for maintaining a file change log within a distributed file system
US8005795B2 (en) * 2005-03-04 2011-08-23 Emc Corporation Techniques for recording file operations and consistency points for producing a consistent copy
US7949551B2 (en) * 2005-04-06 2011-05-24 International Business Machines Corporation Processing of compensation scopes in workflow management systems
CA2504070C (en) * 2005-04-14 2006-11-14 Computer Training Canada Ltd. Method for preserving access to deleted and overwritten documents
US20060242270A1 (en) * 2005-04-21 2006-10-26 Microsoft Corporation Isolation of user-mode device drivers
US20060253503A1 (en) * 2005-05-05 2006-11-09 International Business Machines Corporation Method and apparatus for aging a versioned heap system
US7660797B2 (en) * 2005-05-27 2010-02-09 Microsoft Corporation Scanning data in an access restricted file for malware
US8521752B2 (en) * 2005-06-03 2013-08-27 Osr Open Systems Resources, Inc. Systems and methods for arbitrary data transformations
US7613743B1 (en) * 2005-06-10 2009-11-03 Apple Inc. Methods and apparatuses for data protection
TW200700982A (en) * 2005-06-21 2007-01-01 Farstone Tech Inc Computer protection system and method thereof
US7809675B2 (en) * 2005-06-29 2010-10-05 Oracle International Corporation Sharing state information among a plurality of file operation servers
US8224837B2 (en) * 2005-06-29 2012-07-17 Oracle International Corporation Method and mechanism for supporting virtual content in performing file operations at a RDBMS
US7707480B2 (en) * 2005-07-01 2010-04-27 Qnx Software Systems Gmbh & Co. Kg System employing data verification operations of differing computational costs
US7809777B2 (en) 2005-07-01 2010-10-05 Qnx Software Systems Gmbh & Co. Kg File system having deferred verification of data integrity
US8959125B2 (en) * 2005-07-01 2015-02-17 226008 Ontario Inc. File system having inverted hierarchical structure
US20070005874A1 (en) * 2005-07-01 2007-01-04 Dan Dodge File system storing transaction records in flash-like media
US7873683B2 (en) * 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
US7698495B2 (en) * 2005-07-01 2010-04-13 QNZ Software Systems GmbH & Co. KG Computer system having logically ordered cache management
US7970803B2 (en) 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
JP4659537B2 (ja) * 2005-07-05 2011-03-30 株式会社日立製作所 ファイル提供方法、ストレージ装置及びファイル提供プログラム
US20070022091A1 (en) * 2005-07-20 2007-01-25 Scriptlogic Corporation Access based file system directory enumeration
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US7536517B2 (en) * 2005-07-29 2009-05-19 Microsoft Corporation Direct-update software transactional memory
US8250030B2 (en) * 2005-09-21 2012-08-21 Infoblox Inc. Provisional authority in a distributed database
US8290910B2 (en) * 2005-09-21 2012-10-16 Infoblox Inc. Semantic replication
US8533169B1 (en) * 2005-09-21 2013-09-10 Infoblox Inc. Transactional replication
US20070073792A1 (en) * 2005-09-28 2007-03-29 Tony Nichols System and method for removing residual data from memory
US7693873B2 (en) * 2005-10-13 2010-04-06 International Business Machines Corporation System, method and program to synchronize files in distributed computer system
US7630991B2 (en) * 2005-10-27 2009-12-08 Microsoft Corporation Compiling join patterns using software transactional memories
US7490096B2 (en) * 2005-11-04 2009-02-10 Sun Microsystems, Inc. Automatic intent log testing
US20070118559A1 (en) * 2005-11-18 2007-05-24 Microsoft Corporation File system filters and transactions
US7610304B2 (en) * 2005-12-05 2009-10-27 Oracle International Corporation Techniques for performing file operations involving a link at a database management system
US7552148B2 (en) 2006-02-28 2009-06-23 Microsoft Corporation Shutdown recovery
US7809778B2 (en) * 2006-03-08 2010-10-05 Omneon Video Networks Idempotent journal mechanism for file system
US8285817B1 (en) * 2006-03-20 2012-10-09 Netapp, Inc. Migration engine for use in a logical namespace of a storage system environment
US7676811B2 (en) 2006-03-23 2010-03-09 Microsoft Corporation Ensuring thread affinity for interprocess communication in a managed code environment
JP5057546B2 (ja) * 2006-03-24 2012-10-24 キヤノン株式会社 文書検索装置および文書検索方法
US7797273B2 (en) * 2006-03-27 2010-09-14 Emoze Ltd. System and a method for reliable symmetric data synchronization
US7801846B2 (en) * 2006-04-04 2010-09-21 Computer Associates Think, Inc. Generating log sequence identifiers to apply a transaction to a storage system
US8146101B2 (en) * 2006-04-28 2012-03-27 Research In Motion Limited Method of processing notifications provided by a routine, and associated handheld electronic device
US7925681B2 (en) * 2006-04-28 2011-04-12 Microsoft Corporation Bypass of the namespace hierarchy to open files
EP1855201A1 (en) * 2006-04-28 2007-11-14 Research In Motion Limited Method of processing notifications provided by a routine, and associated handheld electronic device
US8527721B2 (en) * 2008-12-26 2013-09-03 Rajeev Atluri Generating a recovery snapshot and creating a virtual view of the recovery snapshot
US8280908B2 (en) * 2006-06-30 2012-10-02 Microsoft Corporation Merging file system directories
US8296268B2 (en) * 2006-07-21 2012-10-23 Samsung Electronics Co., Ltd. System and method for change logging in a firmware over the air development environment
US20080033906A1 (en) * 2006-08-03 2008-02-07 Michael Bender Improved performance and availability of a database
US8601456B2 (en) * 2006-08-04 2013-12-03 Microsoft Corporation Software transactional protection of managed pointers
US8190868B2 (en) 2006-08-07 2012-05-29 Webroot Inc. Malware management through kernel detection
US7512748B1 (en) 2006-08-17 2009-03-31 Osr Open Systems Resources, Inc. Managing lock rankings
US8015215B2 (en) * 2006-08-24 2011-09-06 Oracle America, Inc. Delegation in a file system with distributed components
US8539228B1 (en) 2006-08-24 2013-09-17 Osr Open Systems Resources, Inc. Managing access to a resource
US7599972B2 (en) * 2006-08-25 2009-10-06 Qnx Software Systems Gmbh & Co. Kg File system having variable logical storage block size
US20080059510A1 (en) * 2006-08-31 2008-03-06 Daniel Cardamore Multimedia system framework having layer consolidating access to multiple media devices
US7908276B2 (en) 2006-08-25 2011-03-15 Qnx Software Systems Gmbh & Co. Kg Filesystem having a filename cache
US8566503B2 (en) * 2006-08-25 2013-10-22 Qnx Software Systems Limited Multimedia filesystem having unified representation of content on diverse multimedia devices
US7818801B2 (en) 2006-09-26 2010-10-19 ScriptLogic Corportation File system event tracking
US7756831B1 (en) * 2006-09-28 2010-07-13 Emc Corporation Cooperative locking between multiple independent owners of data space
US8533158B1 (en) 2006-09-28 2013-09-10 Emc Corporation Reclaiming data space by rewriting metadata
US9454536B1 (en) 2006-09-28 2016-09-27 Emc Corporation Space compaction and defragmentation mechanisms in data space
US7526623B1 (en) * 2006-09-28 2009-04-28 Emc Corporation Optimizing reclamation of data space
US8862639B1 (en) 2006-09-28 2014-10-14 Emc Corporation Locking allocated data space
US7647466B1 (en) * 2006-09-28 2010-01-12 Emc Corporation Linear space allocation mechanisms in data space
US7542983B1 (en) * 2006-11-16 2009-06-02 Bruso Kelsey L Delaying automated data page merging in a B+tree until after committing the transaction
US8185564B1 (en) 2006-11-21 2012-05-22 Google Inc. Redirection of embedded content
US7886270B2 (en) 2006-11-28 2011-02-08 International Business Machines Corporation Methods, systems, and computer program products for file version control management
US8156507B2 (en) * 2006-12-08 2012-04-10 Microsoft Corporation User mode file system serialization and reliability
US20080147747A1 (en) * 2006-12-14 2008-06-19 Dan Cardamore Media system having synchronization with preemptive prioritization of synchronization order
US7650371B2 (en) * 2006-12-14 2010-01-19 Microsoft Corporation Finalizable object usage in software transactions
US9367553B2 (en) * 2006-12-30 2016-06-14 Sap Se Computer file system traversal
US7660956B1 (en) * 2007-01-08 2010-02-09 Emc Corporation Save set bundling for staging
US7747664B2 (en) * 2007-01-16 2010-06-29 Microsoft Corporation Storage system format for transaction safe file system
US7613738B2 (en) 2007-01-16 2009-11-03 Microsoft Corporation FAT directory structure for use in transaction safe file system
US8352448B2 (en) * 2007-01-23 2013-01-08 International Business Machines Corporation Securely deleting data in a transactionally consistent manner
US7747634B2 (en) * 2007-03-08 2010-06-29 Microsoft Corporation Rich data tunneling
US7783677B2 (en) * 2007-03-30 2010-08-24 Microsoft Corporation Tracking file system namespace changes during transactions
US8024433B2 (en) 2007-04-24 2011-09-20 Osr Open Systems Resources, Inc. Managing application resources
US20080294492A1 (en) * 2007-05-24 2008-11-27 Irina Simpson Proactively determining potential evidence issues for custodial systems in active litigation
US8171003B2 (en) * 2007-06-06 2012-05-01 Kunio Kamimura Method and apparatus for changing reference of database
US8196123B2 (en) * 2007-06-26 2012-06-05 Microsoft Corporation Object model for transactional memory
US20090037386A1 (en) 2007-08-03 2009-02-05 Dietmar Theobald Computer file processing
US8910192B2 (en) * 2007-08-08 2014-12-09 Microsoft Corporation Application programming interfaces for transacted file and registry operations
US7949693B1 (en) 2007-08-23 2011-05-24 Osr Open Systems Resources, Inc. Log-structured host data storage
US9621649B2 (en) 2007-09-28 2017-04-11 Xcerion Aktiebolag Network operating system
US9418154B2 (en) * 2007-10-19 2016-08-16 Oracle International Corporation Push-model based index updating
US9594784B2 (en) 2007-10-19 2017-03-14 Oracle International Corporation Push-model based index deletion
US8682859B2 (en) * 2007-10-19 2014-03-25 Oracle International Corporation Transferring records between tables using a change transaction log
US9594794B2 (en) 2007-10-19 2017-03-14 Oracle International Corporation Restoring records using a change transaction log
CN101187930B (zh) * 2007-12-04 2010-06-09 浙江大学 分布式文件系统虚拟目录及命名空间的实现方法
US8572043B2 (en) 2007-12-20 2013-10-29 International Business Machines Corporation Method and system for storage of unstructured data for electronic discovery in external data stores
US8112406B2 (en) 2007-12-21 2012-02-07 International Business Machines Corporation Method and apparatus for electronic data discovery
US8108356B2 (en) * 2007-12-24 2012-01-31 Korea Advanced Institute Of Science And Technology Method for recovering data in a storage system
US8447938B2 (en) * 2008-01-04 2013-05-21 International Business Machines Corporation Backing up a deduplicated filesystem to disjoint media
US8140494B2 (en) 2008-01-21 2012-03-20 International Business Machines Corporation Providing collection transparency information to an end user to achieve a guaranteed quality document search and production in electronic data discovery
US20130046741A1 (en) * 2008-02-13 2013-02-21 Gregory Bentley Methods and systems for creating and saving multiple versions of a computer file
US7895172B2 (en) * 2008-02-19 2011-02-22 Yahoo! Inc. System and method for writing data dependent upon multiple reads in a distributed database
US7895372B2 (en) * 2008-03-20 2011-02-22 Fluke Corporation Universal serial bus mass storage device asynchronous file and file system update while connected to a PC or other device
US8856088B2 (en) * 2008-04-01 2014-10-07 Microsoft Corporation Application-managed file versioning
FR2930090A1 (fr) * 2008-04-14 2009-10-16 Thomson Licensing Sas Procede de generation d'un signal analogique genere par un signal pwm et systeme generant un tel signal.
US8621154B1 (en) 2008-04-18 2013-12-31 Netapp, Inc. Flow based reply cache
US8161236B1 (en) 2008-04-23 2012-04-17 Netapp, Inc. Persistent reply cache integrated with file system
US8606947B2 (en) 2008-05-27 2013-12-10 International Business Machines Corporation Heuristics processing
US8275720B2 (en) 2008-06-12 2012-09-25 International Business Machines Corporation External scoping sources to determine affected people, systems, and classes of information in legal matters
US9830563B2 (en) 2008-06-27 2017-11-28 International Business Machines Corporation System and method for managing legal obligations for data
US8327384B2 (en) 2008-06-30 2012-12-04 International Business Machines Corporation Event driven disposition
US8484069B2 (en) 2008-06-30 2013-07-09 International Business Machines Corporation Forecasting discovery costs based on complex and incomplete facts
US8489439B2 (en) 2008-06-30 2013-07-16 International Business Machines Corporation Forecasting discovery costs based on complex and incomplete facts
US8515924B2 (en) 2008-06-30 2013-08-20 International Business Machines Corporation Method and apparatus for handling edge-cases of event-driven disposition
US7792945B2 (en) * 2008-06-30 2010-09-07 Pss Systems, Inc. Method and apparatus for managing the disposition of data in systems when data is on legal hold
US8073729B2 (en) 2008-09-30 2011-12-06 International Business Machines Corporation Forecasting discovery costs based on interpolation of historic event patterns
JP5467625B2 (ja) * 2008-07-30 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム
CN101667178B (zh) * 2008-09-01 2012-08-22 北京数码大方科技有限公司 用于c/s架构文件管理系统的事务处理方法
US8762347B1 (en) * 2008-09-22 2014-06-24 Symantec Corporation Method and apparatus for processing transactional file system operations to enable point in time consistent file data recreation
US8037033B2 (en) * 2008-09-22 2011-10-11 Microsoft Corporation Log manager for aggregating data
US8250035B1 (en) * 2008-09-30 2012-08-21 Emc Corporation Methods and apparatus for creating a branch file in a file system
US8204869B2 (en) * 2008-09-30 2012-06-19 International Business Machines Corporation Method and apparatus to define and justify policy requirements using a legal reference library
WO2010045262A1 (en) 2008-10-14 2010-04-22 Wanova Technologies, Ltd. Storage-network de-duplication
US9542431B2 (en) 2008-10-24 2017-01-10 Microsoft Technology Licensing, Llc Cyclic commit transaction protocol
US8612929B2 (en) * 2008-12-10 2013-12-17 Oracle America, Inc. Compiler implementation of lock/unlock using hardware transactional memory
US8171227B1 (en) 2009-03-11 2012-05-01 Netapp, Inc. System and method for managing a flow based reply cache
US11489857B2 (en) 2009-04-21 2022-11-01 Webroot Inc. System and method for developing a risk profile for an internet resource
US8429606B2 (en) * 2009-05-29 2013-04-23 Red Hat, Inc. Transactional object container
US8495103B2 (en) * 2009-05-29 2013-07-23 Red Hat, Inc. Method and apparatus for determining how to transform applications into transactional applications
US10013277B2 (en) * 2009-05-29 2018-07-03 Red Hat, Inc. Rolling back state changes in distributed transactions
US8161247B2 (en) 2009-06-26 2012-04-17 Microsoft Corporation Wait loss synchronization
US8812796B2 (en) * 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US20110040600A1 (en) * 2009-08-17 2011-02-17 Deidre Paknad E-discovery decision support
US8868601B2 (en) * 2009-08-17 2014-10-21 International Business Machines Corporation Distributed file system logging
US8112505B1 (en) 2009-10-20 2012-02-07 Wanova Technologies, Ltd. On-demand block-level file system streaming to remote desktops
KR101043238B1 (ko) * 2009-11-25 2011-06-30 주식회사 바우압텍 고전압용 정전기 방전 보호 소자
JP5471365B2 (ja) * 2009-11-27 2014-04-16 富士通株式会社 情報処理装置及びコンピュータプログラム
US9229970B2 (en) * 2009-12-07 2016-01-05 International Business Machines Corporation Methods to minimize communication in a cluster database system
US9165025B2 (en) * 2009-12-11 2015-10-20 International Business Machines Corporation Transaction recovery in a transaction processing computer system employing multiple transaction managers
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8539465B2 (en) 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US8533440B2 (en) * 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US8655856B2 (en) 2009-12-22 2014-02-18 International Business Machines Corporation Method and apparatus for policy distribution
US8250041B2 (en) 2009-12-22 2012-08-21 International Business Machines Corporation Method and apparatus for propagation of file plans from enterprise retention management applications to records management systems
US8473700B2 (en) * 2010-03-29 2013-06-25 International Business Machines Corporation Providing versioning in a storage device
US9367356B2 (en) * 2010-06-17 2016-06-14 Microsoft Technology Licensing, Llc Resource access control
US8566903B2 (en) 2010-06-29 2013-10-22 International Business Machines Corporation Enterprise evidence repository providing access control to collected artifacts
US8832148B2 (en) 2010-06-29 2014-09-09 International Business Machines Corporation Enterprise evidence repository
US8402359B1 (en) 2010-06-30 2013-03-19 International Business Machines Corporation Method and apparatus for managing recent activity navigation in web applications
US8918550B2 (en) 2010-08-27 2014-12-23 Total Phase, Inc. Real-time USB class level decoding
US8762425B2 (en) * 2010-10-18 2014-06-24 Hewlett-Packard Development Company, L.P. Managing a data structure
US10430298B2 (en) * 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US8819056B2 (en) * 2010-11-19 2014-08-26 International Business Machines Corporation Facilitation of search, list, and retrieval operations on persistent data set using distributed shared memory
US8396832B2 (en) 2010-12-08 2013-03-12 International Business Machines Corporation Independent fileset generations in a clustered redirect-on-write filesystem
US8626713B2 (en) * 2010-12-08 2014-01-07 International Business Machines Corporation Multiple contexts in a redirect on write file system
US8688635B2 (en) * 2011-07-01 2014-04-01 International Business Machines Corporation Data set connection manager having a plurality of data sets to represent one data set
US9009428B2 (en) 2011-07-08 2015-04-14 Hewlett-Packard Development Company, L.P. Data store page recovery
US8433697B2 (en) * 2011-09-10 2013-04-30 Microsoft Corporation Flexible metadata composition
US8484166B2 (en) 2011-11-03 2013-07-09 Oracle International Corporation Oracle rewind: metadata-driven undo
US8903874B2 (en) 2011-11-03 2014-12-02 Osr Open Systems Resources, Inc. File system directory attribute correction
US8812447B1 (en) 2011-11-09 2014-08-19 Access Sciences Corporation Computer implemented system for accelerating electronic file migration from multiple sources to multiple destinations
JP5861445B2 (ja) * 2011-12-21 2016-02-16 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
EP2798486B1 (en) 2011-12-29 2019-11-06 VMware, Inc. N-way synchronization of desktop images
JP5907419B2 (ja) * 2012-03-26 2016-04-26 日本電気株式会社 分散処理システム、分散処理方法および分散処理プログラム
US8768891B2 (en) * 2012-04-27 2014-07-01 Sap Ag Ensuring database log recovery consistency
US9922089B2 (en) 2012-07-18 2018-03-20 Software Ag Usa, Inc. Systems and/or methods for caching XML information sets with delayed node instantiation
US10515141B2 (en) 2012-07-18 2019-12-24 Software Ag Usa, Inc. Systems and/or methods for delayed encoding of XML information sets
US9760549B2 (en) * 2012-07-18 2017-09-12 Software Ag Usa, Inc. Systems and/or methods for performing atomic updates on large XML information sets
JP5971713B2 (ja) * 2012-09-20 2016-08-17 株式会社東芝 Icカード
US8819587B1 (en) 2012-10-30 2014-08-26 Google Inc. Methods of managing items in a shared workspace
US9384229B2 (en) 2012-11-29 2016-07-05 International Business Machines Corporation Data readiness using initiator region last commit selection
US20140258347A1 (en) * 2013-03-11 2014-09-11 Microsoft Corporation Grouping files for optimized file operations
US9483451B2 (en) * 2013-03-14 2016-11-01 Scribestar Ltd. System and method for handling user editing history based on spawning, merging data structures of directed acyclic graph
US9672237B2 (en) * 2013-03-15 2017-06-06 Amazon Technologies, Inc. System-wide checkpoint avoidance for distributed database systems
US9514007B2 (en) 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9477557B2 (en) 2013-03-28 2016-10-25 Microsoft Technology Licensing, Llc Transaction processing using torn write detection
US10303564B1 (en) * 2013-05-23 2019-05-28 Amazon Technologies, Inc. Reduced transaction I/O for log-structured storage systems
US9256629B1 (en) * 2013-06-28 2016-02-09 Emc Corporation File system snapshots over thinly provisioned volume file in mapped mode
US9256614B1 (en) * 2013-06-28 2016-02-09 Emc Corporation File system snapshots over fully provisioned volume file in direct mode
US9519664B1 (en) * 2013-09-20 2016-12-13 Amazon Technologies, Inc. Index structure navigation using page versions for read-only nodes
WO2015047271A1 (en) * 2013-09-26 2015-04-02 Hewlett-Packard Development Company, L.P. Undoing changes made by threads
US9053484B1 (en) 2013-11-18 2015-06-09 Access Sciences Corporation Computer implemented system for forming an accelerated compliance plan with a graphic visualization
US9058606B1 (en) 2013-11-18 2015-06-16 Access Sciences Corporation Computer implemented method for forming an accelerated compliance plan with a graphic visualization
US9830329B2 (en) 2014-01-15 2017-11-28 W. Anthony Mason Methods and systems for data storage
WO2015116078A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Memory data versioning
US20150242282A1 (en) * 2014-02-24 2015-08-27 Red Hat, Inc. Mechanism to update software packages
US11016941B2 (en) 2014-02-28 2021-05-25 Red Hat, Inc. Delayed asynchronous file replication in a distributed file system
US10296371B2 (en) * 2014-03-17 2019-05-21 International Business Machines Corporation Passive two-phase commit system for high-performance distributed transaction execution
US9986029B2 (en) 2014-03-19 2018-05-29 Red Hat, Inc. File replication using file content location identifiers
US9965505B2 (en) * 2014-03-19 2018-05-08 Red Hat, Inc. Identifying files in change logs using file content location identifiers
US10025808B2 (en) 2014-03-19 2018-07-17 Red Hat, Inc. Compacting change logs using file content location identifiers
US9858312B2 (en) * 2014-10-14 2018-01-02 Red Hat, Inc. Transaction compensation for single phase resources
US9558078B2 (en) 2014-10-28 2017-01-31 Microsoft Technology Licensing, Llc Point in time database restore from storage snapshots
US10296259B2 (en) * 2014-12-22 2019-05-21 Hand Held Products, Inc. Delayed trim of managed NAND flash memory in computing devices
US9736628B2 (en) * 2015-01-09 2017-08-15 Twych Innovation, Inc. Object location tracking using mobile communication device
US10706041B1 (en) * 2015-02-11 2020-07-07 Gravic, Inc. Systems and methods to profile transactions for end-state determination and latency reduction
US11144504B1 (en) 2015-03-31 2021-10-12 EMC IP Holding Company LLC Eliminating redundant file system operations
US11294862B1 (en) * 2015-03-31 2022-04-05 EMC IP Holding Company LLC Compounding file system metadata operations via buffering
US11151082B1 (en) 2015-03-31 2021-10-19 EMC IP Holding Company LLC File system operation cancellation
WO2017011219A1 (en) * 2015-07-10 2017-01-19 Ab Initio Technology Llc Method and architecture for providing database access control in a network with a distributed database system
CN105069617B (zh) * 2015-07-27 2018-10-12 飞天诚信科技股份有限公司 一种恢复不完整交易的方法和装置
US10083203B2 (en) * 2015-08-11 2018-09-25 International Business Machines Corporation Reducing the cost of update, delete, and append-only insert operations in a database
RS61196B1 (sr) * 2015-08-28 2021-01-29 Swirlds Inc Postupci i uređaj za distribuiranu bazu podataka unutar mreže
WO2017074451A1 (en) * 2015-10-30 2017-05-04 Hewlett Packard Enterprise Development Lp Resuming execution in response to a failure
US10599672B2 (en) 2015-11-24 2020-03-24 Cisco Technology, Inc. Cursor-based state-collapse scheme for shared databases
US9965538B2 (en) * 2016-01-19 2018-05-08 Microsoft Technology Licensing, Llc Early thread return with secondary event writes
US11379416B1 (en) * 2016-03-17 2022-07-05 Jpmorgan Chase Bank, N.A. Systems and methods for common data ingestion
KR101797482B1 (ko) * 2016-04-22 2017-11-14 주식회사 티맥스데이터 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램
KR102666489B1 (ko) * 2016-09-09 2024-05-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN114677145A (zh) * 2016-12-09 2022-06-28 创新先进技术有限公司 客户系统、信息处理方法和读写方法及装置
US11016932B2 (en) * 2017-09-21 2021-05-25 Alibaba Group Holding Limited Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system
US10114857B1 (en) 2017-11-13 2018-10-30 Lendingclub Corporation Techniques for performing multi-system computer operations
US11354301B2 (en) 2017-11-13 2022-06-07 LendingClub Bank, National Association Multi-system operation audit log
CN108153804B (zh) * 2017-11-17 2021-03-16 极道科技(北京)有限公司 一种对称分布式文件系统的元数据日志更新方法
US10866925B2 (en) 2018-03-20 2020-12-15 Optum, Inc. Apparatus and method for improved network data security enforcement and verification
US11170029B2 (en) 2019-05-31 2021-11-09 Lendingclub Corporation Multi-user cross-device tracking
US11144560B2 (en) * 2019-08-23 2021-10-12 International Business Machines Corporation Utilizing unsumbitted user input data for improved task performance
US11016849B2 (en) 2019-09-04 2021-05-25 Red Hat, Inc. Kernel software raid support for direct-access file systems
US12001408B2 (en) * 2020-04-29 2024-06-04 Oracle International Corporation Techniques for efficient migration of key-value data
US11487703B2 (en) 2020-06-10 2022-11-01 Wandisco Inc. Methods, devices and systems for migrating an active filesystem
KR20220074806A (ko) * 2020-11-27 2022-06-03 한국과학기술원 다중파일 트랜잭션의 파일 관리 기법 및 장치
CN112486924A (zh) * 2020-12-17 2021-03-12 深圳软牛科技有限公司 一种ntfs中查找文件删除时间的方法、装置及电子设备
US11501027B2 (en) * 2021-02-08 2022-11-15 Micron Technology, Inc. Mechanism to support writing files into a file system mounted in a secure memory device
CN114691625B (zh) * 2022-04-21 2023-05-16 成都理工大学 一种面向海量动态文件的数据管理方法

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL7411989A (nl) 1974-09-10 1976-03-12 Philips Nv Computersysteem met busstruktuur.
US5201044A (en) 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
US5369757A (en) * 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US6026452A (en) 1997-02-26 2000-02-15 Pitts; William Michael Network distributed site cache RAM claimed as up/down stream request/reply channel for storing anticipated data and meta data
US5506983A (en) * 1992-07-06 1996-04-09 Microsoft Corporation Method and system for transactioning of modifications to a tree structured file
JP3516362B2 (ja) 1995-03-01 2004-04-05 富士通株式会社 共有データ処理装置及び共有データ処理システム
US6029160A (en) 1995-05-24 2000-02-22 International Business Machines Corporation Method and means for linking a database system with a system for filing data
US6453325B1 (en) 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US6192365B1 (en) 1995-07-20 2001-02-20 Novell, Inc. Transaction log management in a disconnectable computer and network
WO1997004389A1 (en) * 1995-07-20 1997-02-06 Novell, Inc. Transaction synchronization in a disconnectable computer and network
US5870757A (en) 1995-09-11 1999-02-09 Sun Microsystems, Inc. Single transaction technique for a journaling file system of a computer operating system
US5960194A (en) 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US5819020A (en) * 1995-10-16 1998-10-06 Network Specialists, Inc. Real time backup system
EP0770964A1 (en) * 1995-10-26 1997-05-02 Matsushita Electric Industrial Co., Ltd. File system
US5774667A (en) 1996-03-27 1998-06-30 Bay Networks, Inc. Method and apparatus for managing parameter settings for multiple network devices
US5857204A (en) 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US5878434A (en) 1996-07-18 1999-03-02 Novell, Inc Transaction clash management in a disconnectable computer and network
DE69719269T2 (de) * 1996-08-01 2003-10-30 International Business Machines Corp., Armonk Absicherung der Unteilbarkeit für eine Ansammlung von transaktionellen Arbeitsschritten in einem Arbeitsflussverwaltungssystem
US5832508A (en) 1996-09-18 1998-11-03 Sybase, Inc. Method for deallocating a log in database systems
US6321234B1 (en) 1996-09-18 2001-11-20 Sybase, Inc. Database server system with improved methods for logging transactions
US6014674A (en) 1996-11-14 2000-01-11 Sybase, Inc. Method for maintaining log compatibility in database systems
US5909540A (en) * 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US5864849A (en) 1996-12-16 1999-01-26 Lucent Technologies Inc. System and method for restoring a multiple checkpointed database in view of loss of volatile memory
US6035379A (en) * 1997-01-09 2000-03-07 Microsoft Corporation Transaction processing for user data employing both logging and shadow copying
US6710786B1 (en) 1997-02-03 2004-03-23 Oracle International Corporation Method and apparatus for incorporating state information into a URL
US5907848A (en) * 1997-03-14 1999-05-25 Lakeview Technology, Inc. Method and system for defining transactions from a database log
US5956731A (en) 1997-04-23 1999-09-21 Oracle Corporation Sharing snapshots for consistent reads
US5897638A (en) 1997-06-16 1999-04-27 Ab Initio Software Corporation Parallel virtual file system
US6453334B1 (en) * 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US5960436A (en) * 1997-08-29 1999-09-28 International Business Machines Corp. Transaction compaction for replay of transactions from client to server
US6199068B1 (en) 1997-09-11 2001-03-06 Abb Power T&D Company Inc. Mapping interface for a distributed server to translate between dissimilar file formats
US6275953B1 (en) 1997-09-26 2001-08-14 Emc Corporation Recovery from failure of a data processor in a network server
US6192408B1 (en) * 1997-09-26 2001-02-20 Emc Corporation Network file server sharing local caches of file access information in data processors assigned to respective file systems
JPH11119987A (ja) * 1997-10-20 1999-04-30 Fujitsu Ltd 業務オブジェクトの自動生成装置及び方法並びに業務オブジェクト生成プログラムを記録したコンピュータ読み取り可能な記録媒体
US6219693B1 (en) 1997-11-04 2001-04-17 Adaptec, Inc. File array storage architecture having file system distributed across a data processing platform
US6205449B1 (en) 1998-03-20 2001-03-20 Lucent Technologies, Inc. System and method for providing hot spare redundancy and recovery for a very large database management system
US6374268B1 (en) 1998-04-14 2002-04-16 Hewlett-Packard Company Methods and systems for an incremental file system
US6446109B2 (en) * 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6189100B1 (en) 1998-06-30 2001-02-13 Microsoft Corporation Ensuring the integrity of remote boot client data
CA2244626A1 (en) 1998-07-31 2000-01-31 Kom Inc. A hardware and software system
US6178519B1 (en) * 1998-12-10 2001-01-23 Mci Worldcom, Inc. Cluster-wide database system
US6922708B1 (en) * 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US6523027B1 (en) 1999-07-30 2003-02-18 Accenture Llp Interfacing servers in a Java based e-commerce architecture
US6549916B1 (en) 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
JP2001101044A (ja) * 1999-09-29 2001-04-13 Toshiba Corp トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム
EP1119178B1 (en) 1999-12-28 2010-04-14 Sony Corporation Image commercial transactions system and method
US7412462B2 (en) * 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US7020665B2 (en) * 2002-03-07 2006-03-28 Microsoft Corporation File availability in distributed file storage systems
US8145686B2 (en) 2005-05-06 2012-03-27 Microsoft Corporation Maintenance of link level consistency between database and file system
US7730487B2 (en) 2005-08-15 2010-06-01 Microsoft Corporation Synchronizing transaction ambient state among multiple transaction managers

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004280826A (ja) * 2003-03-12 2004-10-07 Microsoft Corp プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
JP4613023B2 (ja) * 2003-03-12 2011-01-12 マイクロソフト コーポレーション プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
JP2007509409A (ja) * 2003-10-24 2007-04-12 マイクロソフト コーポレーション ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム
JP2011134351A (ja) * 2003-10-24 2011-07-07 Microsoft Corp ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム
JP4769191B2 (ja) * 2003-10-24 2011-09-07 マイクロソフト コーポレーション ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム
JP2005243013A (ja) * 2004-02-12 2005-09-08 Irdeto Access Bv 外部データの記憶方法及びシステム
JP2010532530A (ja) * 2007-06-29 2010-10-07 マイクロソフト コーポレーション メモリトランザクションのグループ化
JP2012515393A (ja) * 2009-01-14 2012-07-05 マイクロソフト コーポレーション トランザクションメモリにおけるトランザクション処理

Also Published As

Publication number Publication date
CN100445998C (zh) 2008-12-24
CN1746893B (zh) 2010-10-06
CN1449530A (zh) 2003-10-15
US20130325830A1 (en) 2013-12-05
CN1746892A (zh) 2006-03-15
WO2001077908A2 (en) 2001-10-18
US20100042626A1 (en) 2010-02-18
JP4219589B2 (ja) 2009-02-04
CN1746893A (zh) 2006-03-15
US20050120059A1 (en) 2005-06-02
US8510336B2 (en) 2013-08-13
WO2001077908A3 (en) 2002-07-18
US7613698B2 (en) 2009-11-03
US7418463B2 (en) 2008-08-26
US6856993B1 (en) 2005-02-15
US20050120036A1 (en) 2005-06-02
CN100337233C (zh) 2007-09-12
EP1269353A2 (en) 2003-01-02
US20110276611A1 (en) 2011-11-10
US20050149525A1 (en) 2005-07-07
US7512636B2 (en) 2009-03-31
US20050138085A1 (en) 2005-06-23
US7257595B2 (en) 2007-08-14
US8010559B2 (en) 2011-08-30
AU2001245806A1 (en) 2001-10-23

Similar Documents

Publication Publication Date Title
JP4219589B2 (ja) トランザクショナルファイルシステム
US7865485B2 (en) Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
McKusick et al. Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem.
US7555504B2 (en) Maintenance of a file version set including read-only and read-write snapshot copies of a production file
US5878434A (en) Transaction clash management in a disconnectable computer and network
CA2227431C (en) Transaction log management in a disconnectable computer and network
EP2646923B1 (en) File system backup using change journal
US5991771A (en) Transaction synchronization in a disconnectable computer and network
AU2009307842B2 (en) Atomic multiple modification of data in a distributed storage system
US20090006500A1 (en) Namespace replication program, namespace replication device, and namespace replication method
EP2983094A1 (en) Apparatus and method for a hardware-based file system
US20050289414A1 (en) Lossless recovery for computer systems with remotely dependent data recovery
US20080172423A1 (en) Hsm control program, hsm control apparatus, and hsm control method
US20020174103A1 (en) System and method for updating external file referenced by database with transactional consistency using SQL
JP2004062759A (ja) データベースログの管理方法、その装置およびそのプログラム
CA2227430C (en) Transaction clash management in a disconnectable computer and network
Berkeley Oracle Berkeley DB

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061010

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070110

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070110

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070727

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071029

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071105

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080626

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20080627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080627

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080806

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: 20081017

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: 20081112

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

Free format text: PAYMENT UNTIL: 20111121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4219589

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111121

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121121

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20131121

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees