Transaction-Safe FAT File System
Transaction-Safe FAT File System (TFAT) and Transaction-Safe Extended FAT File System (TexFAT) refer to two file systems used in Microsoft products to provide transaction-safety for data stored on a disk. The goal is to reduce the risk of data loss in cases of power loss or unexpected removal of the drive. The latter problem has become more common with the spread of USB drives.
The Transaction-Safe FAT File System (TFAT) of the TFAT12, TFAT16 and TFAT32 file systems is a driver layer modification to the original FAT file systems FAT12, FAT16 and FAT32 maintaining two copies (FAT 0 and FAT 1) of the file allocation table instead of two identical ones. While performing a drive operation, changes would be made to FAT 1. When the operation is complete, the FAT 1 table would be copied to FAT 0, updating the stable view of the file system.
The Transaction-Safe Extended FAT File System (TexFAT), TexFAT provides similar functionality to TFAT using the exFAT file system as the base file system instead of FAT. Introduced with Windows Embedded CE 6.0, it is sometimes referred to as TFAT as well, which can lead to confusion with the original TFAT described above.
The use of exFAT as the underlying file system allows for larger files and larger partitions. TexFAT requires a hardware-specific driver designed for the type of media on which the TexFAT volume resides.
Due to the lack of support in desktop operating systems, neither TFAT nor TexFAT are recommended for removable media. While the desktop OS could still read the drive, it could not use the transaction-safe features, so unexpected removal or a power outage could lead to data loss. In addition, directories created under the desktop OS may not be transaction-safe even if the drive is later attached to a TFAT/TexFAT aware operating system.
- Munegowda, Keshava; Raju, G.T.; Raju, Veera Manikandan; Manjunath, T.N. (December 2014). Design Methodologies of Transaction-Safe Cluster Allocations in TFAT File System for Embedded Storage Devices. 2014 International Conference on Information Technology. IEEE. doi:10.1109/ICIT.2014.22.