FAT is a relatively early file system design, and its designers did not exploit what was known about file system design, and because of that it suffered from several problems. First, its simple file layout allows for fragmentation, which leads to significant slowdowns during file system operations. Secondly, FAT was not designed for redundancy in the case of system failure. Thirdly, the first versions of FAT allowed file name sizes of only up to 11 characters (file name of 8 and a file extension of 3), although a work-around was developed when Microsoft implemented VFAT, that would allow file names of up to 255 characters. Finally, the large cluster size in many versions of FAT meant that a lot of space was being wasted on padding small files to the cluster size.
However, because IBM designated MS-DOS as its primary operating system for its PC, and MS-DOS used FAT, FAT became widely used and is still used in a number of circumstances. Because of its primitive design, it is easy to implement a basic FAT implementation, and because of the ubiquity of MS-DOS and Windows, FAT has become useful in providing a base level of interoperability in some circumstances.
Table of contents |
2 FAT history 3 FAT licensing 4 External link |
FAT file system structure
A FAT file system on a partition consists of the following parts:
FAT history
FAT as it is known today made its debut in 1980 with the first version of
QDOS, the ancestor of Microsoft's PC-DOS and MS-DOS.
Initially it did not even support subdirectories. MS-DOS version 2 added
support for subdirectories. Since FAT was intended for use mainly on floppy disks, in order to save on space, 12-bit cluster numbers were used, resulting in a maximum of 212 = 4,096 clusters. Clusters at that time were usually 512 bytes big, meaning the floppy could hold up to 2 megabytes - which was enough at the time. File names were built according to the 8 + 3 pattern. This initial version of FAT became known as FAT12.
In 1983 (since version 2) DOS also supported FAT with 16-bit cluster numbers, for the naturally larger hard disk drives. That way, there could be up to 216 = 65,536 clusters. Even with 512-byte clusters, this could give up to 32 megabytes - enough for XT hard drives, either 10 or 20 megabytes in size. This version of FAT is known simply as FAT, or FAT16 (in the newer documents).
As hard drives grew in size, however, 512-byte clusters were not enough, and bigger sizes were used. 65,536 8,192-byte clusters (512 megabytes) were sufficient for the 400 megabyte disks which were standard issue when Windows 95 was released. However, one of the user experience goals that the designers of Windows 95 wanted to achieve was the use of long file names in the new operating system. The long file names were implemented using a work-around in the way FAT tables are laid out (see above). The new version of the file system became known as VFAT (Virtual FAT), after the Windows 95 VxD (device driver) that's used by the operating system to work with it. VFAT is supported by Windows 95 and above and Windows NT 4.0 and above.
By 1997, the cluster growth possibility was exhausted. The maximum cluster size in Windows FAT was 32,768 bytes (Windows NT could create partitions with clusters of 65,536 bytes, which could be used by Windows 95, but this was wasteful when keeping small files in mind, and did not solve the broader issue). For the next release of Windows, Microsoft decided to implement a newer generation of FAT, which 32-bit cluster numbers (only 28 bits are currently used, giving a total of 228 = 268,435,456 clusters. In these conditions, cluster sizes could be lowered again to 4,096 bytes, giving the (so far) adequate figure of 1 terabyte for the whole file system. As a further bonus, lower cluster size meant space was utilized more efficiently. In addition, several changes were made to other filesystem structures. The new FAT version became known as FAT32. This version is supported in Windows 95 OSR 2 and above, and Windows 2000 and above.
The alternative IBM PC operating systems, for example OS/2, Linux, FreeBSD, and BeOS, have all supported FAT, and most have gained support for VFAT and FAT32 shortly after the appropriate Windows versions were released. Early Linux distributions also supported a format known as UMSDOS, which was nothing more than FAT with the UNIX file properties (e.g. long file name and access permissions) stored in a separate file called --linux-.---. UMSDOS was mostly dropped after VFAT was released, although it still remains in the Linux kernel sources.
Since Microsoft has announced the discontinuation of the DOS line of succession with Windows ME, it remains unlikely that any new versions of FAT appear. For most purposes, the NTFS file system that was developed for the Windows NT line is superior to FAT from the points of view of efficiency, performance and reliability. However, FAT is likely to stay for a long time, both as the file system for the lower-end versions of Windows (currently, XP Personal), as well as the ideal file system for small drives, like the floppies.
Although technical details of the FAT file system derive from CP/M and have been widely known and widely disseminated in the PC community for many years, and although the file system itself is widely considered to be obsolete, it should be noted that in 2003 Microsoft made a point of asserting intellectual property claims to the system. Citing patents, Microsoft claimed that licensing fees are required for its use in such applications as removable solid state media, and consumer devices using such media.
This claim by Microsoft is controversial, for a number of reasons.
Microsoft itself has admitted that it developed its first FAT file system in 1976, so no patents could apply to an implementation of the original version. Copyright law could not prevent a re-implementation of FAT either.
Microsoft has cited 4 patents, dating from 1995 on, for FAT.
All of these patents relate to storing both long and short filenames in a single file system.
A Slashdot discussion on December 4, 2003, analyzed these patents
and participants (particularly Svartalf) reported the following:
And of course, there is the simple question if this is really an innovative idea at all.
Patents are supposed to be granted for new ideas; the notion of not removing short names,
but adding long name information as well, is an option that is immediately
obvious to any practitioner in the field.
In short, many have concluded that these patents only cover implementations that include
support for long filenames, so it likely that
removable solid state media and consumer devices only using short names would be unaffected.
Also, there is good reason to believe the patents would be found
invalid or unnecessary if challenged. In particular, many or all such patents are
believed by many to be invalid because of previous public release, prior art, or because
the technique would be obvious to a practioner.
None of this may impact operating system or firmware implementations.
In the document "Microsoft Extensible Firmware Initiative FAT 32 File System Specification,
FAT: General Overview of On-Disk Format" by Microsoft (version 1.03, December 6, 2000),
Microsoft specifically grants a number of rights, and many readers of that document
have interpreted it as permitting operating system vendors to implement FAT.
See also: File system, Drive letter assignment, Software patent, as well as entries for competing file systems such as NTFS, EXT2, EXT3, and ReiserFS.
FAT licensing
In addition, there also seems to be prior art for at least the
first, third, and forth patents in the Rock Ridge Interchange Protocol standard for UNIX,
which was an IEEE draft specification on at least July 13th, 1993.
This protocol defined a method to support long and short names on the same media
(as well as additional information) to support Unix systems.External link