トランザクションNTFS
トランザクションNTFS (Transactional NTFS, TxF) とは、Windows Vista以降のオペレーティングシステムに搭載された機能の一つである。 トランザクションNTFSによって原子性がNTFSに提供されることで、Windowsアプリケーション開発者はファイル書き込みが完全にファイルを更新するか、まったく更新しないかのいずれかのみの状態をとることを保証することができる。 Windows 8にて非推奨の機能となりグループポリシーで無効にできるようになった[1][2]。
概要
[編集]トランザクションNTFSでは、ファイルとディレクトリに対する変更、削除、作成、名前変更動作をアトミックに行うことができる(不可分操作)。トランザクションの利用とは、処理の正当性を保証することである。つまり、ひとつのトランザクションとして処理される一連のファイル操作については、その全てのファイル操作が成功したときのみ実際のファイルに反映される。もしそのファイル操作の一部が失敗した場合は、そのトランザクションを構成する全てのファイル操作による変更を元に戻し(ロールバック)、失敗したことにすることを保証する。
トランザクションNTFSはWindowsカーネルコンポーネントのひとつであるカーネルトランザクションマネージャー (KTM) 上に実装されている。KTMは、カーネル内のオブジェクトに対するトランザクション操作を実現したWindows Vistaで初めて導入された。KTMがローカルトランザクションを管理し、Microsoft分散トランザクションコーディネーター (MS DTC) が分散トランザクションを管理する。
ただし、現 Vista のバージョンでは KTM と MS DTC がファイルシステムの同じ領域を同時に管理できないため、ローカルトランザクションと分散トランザクションを統合できない。同じファイルをローカルトランザクションと分散トランザクションで同時に利用することはできない。
以前のWindowsにおいても、NTFSはディスクブロック書き込みとファイルインデックスのアトミック実行等を実現し、低レベル操作に対してジャーナリングをサポートしていた。 トランザクションNTFSでは、さらに次のことを可能にした:
- 単一ファイルに対するアトミック操作
- 一般的な例としては、単一アプリケーションによるファイル保存が挙げられる。もしアプリケーションかあるいは計算機が、ファイル書き込み中にクラッシュした場合、そのファイルは一部分だけが書き込まれ、結果として破損したファイルが出来上がる。これが上書き操作であった場合はさらに深刻で、元のデータが一部だけ上書きされ失われてしまう。アトミックなファイル操作によってこういった問題が回避される。
- 複数ファイルにまたがったアトミック操作
- もしあるアプリケーションが複数のファイルを一度に更新したい場合、必要な全てのファイル操作は単一トランザクションとして扱う必要がある。そうすることにより、たとえ途中で障害が発生したとしても更新を一貫していない状態としてしまうことを防ぐことができる。
- 複数コンピュータにまたがったアトミック操作
- 同じファイル操作を複数のコンピュータで行うことは、企業ネットワークではよくみられることである。トランザクションNTFSはMS DTCを利用し、ファイル更新が全てのコンピュータ上で同様に適用されることを保証する。
トランザクションNTFSを暗号化ファイルシステム (EFS) 上のファイルに対する更新に適用することは、Windows Vista Service Pack 1 (SP1) およびWindows Server 2008ではまだサポートされていない[3]。
参考文献
[編集]- ^ Alternatives to using Transactional NTFS - Win32 apps | Microsoft Docs
- ^ Enable / disable TXF deprecated features | Windows security encyclopedia
- ^ “When to Use Transactional NTFS (Windows)”. KTM Reference. Microsoft. 2008年6月4日閲覧。