File Systems

Different operating systems use different file systems. Some are designed specifically to work with more than one, for compatibility reasons; others work only with their own file system. This section takes brief look at the most common operating systems in use on the PC and the file systems that they use. This enables you to know what parts of the rest of the discussion on file systems is most relevant to your situation.

The most common name of the file system, “FAT”, is problematic, even though it is still often used. The first FAT file system used 12-bit file allocation tables; this was later expanded to 16 bits, and became the most common file system implementation for hard disks from the late 1980s to the late 1990s. To distinguish these versions of FAT from the 32-bit successor called FAT32, the older FAT variants are now sometimes called FAT12 or FAT16. However, you will still hear just “FAT” used a lot; if so, you need to find out what specifically is being referred to, if it matters in that particular context. For more elaboration on the differences between FAT12, FAT16 and FAT32.

Throughout my discussion of file systems, I have referred to the FAT family of file systems. This includes several different FAT-related file systems, as described here. The file allocation table or FAT stores information about the clusters on the disk in a table. There are three different varieties of this file allocation table, which vary based on the maximize size of the table. The system utility that you use to partition the disk will normally choose the correct type of FAT for the volume you are using, but sometimes you will be given a choice of which you want to use.

Since each cluster has one entry in the FAT, and these entries are used to hold the cluster number of the next cluster used by the file, the size of the FAT is the limiting factor on how many clusters any disk volume can contain. The following are the three different FAT versions now in use:

  • FAT12: The oldest type of FAT uses a 12-bit binary number to hold the cluster number. A volume formatted using FAT12 can hold a maximum of 4,086 clusters, which is 2^12 minus a few values (to allow for reserved values to be used in the FAT). FAT12 is therefore most suitable for very small volumes, and is used on floppy disks and hard disk partitions smaller than about 16 MB (the latter being rare today.)
  • FAT16: The FAT used for most older systems, and for small partitions on modern systems, uses a 16-bit binary number to hold cluster numbers. When you see someone refer to a “FAT” volume generically, they are usually referring to FAT16, because it is the de facto standard for hard disks, even with FAT32 now more popular than FAT16. A volume using FAT16 can hold a maximum of 65,526 clusters, which is 2^16 less a few values (again for reserved values in the FAT). FAT16 is used for hard disk volumes ranging in size from 16 MB to 2,048 MB. VFAT is a variant of FAT16.
  • FAT32: The newest FAT type, FAT32 is supported by newer versions of Windows, including Windows 95’s OEM SR2 release, as well as Windows 98, Windows ME and Windows 2000. FAT32 uses a 28-bit binary cluster number–not 32, because 4 of the 32 bits are “reserved”. 28 bits is still enough to permit ridiculously huge volumes–FAT32 can theoretically handle volumes with over 268 million clusters, and will support (theoretically) drives up to 2 TB in size. However to do this the size of the FAT grows very large; see here for details on FAT32’s limitations.

Here’s a summary table showing how the three types of FAT compare:


Virtual FAT (VFAT)
Microsoft incorporated several enhancements into the disk management capabilities of Windows 95. Access to the file system can be done using high-speed, protected-mode, 32-bit drivers, or for compatibility, the older DOS 16-bit routines. Support was added for long file names and also for better control over such matters as disk locking, so utilities could access the disk in “exclusive mode” without fear of other programs using it in the meantime.

Despite the new name and new capabilities, VFAT as a file system is basically the same as FAT is. Most of the new capabilities relate to how the file system is used, and not the actual structures on the disk. VFAT handles standard FAT16 partitions, and under Windows 95 OSR2 or later, FAT32 partitions as well. The only significant change in terms of actual structures is the addition of long file names. Even here, VFAT supports these using what is basically a hack, as opposed to anything really revolutionary.

With the exception of the long file names, Windows 95, using VFAT, shares the same logical disk structures as DOS or Windows 3.x using FAT.

The NTFS file system used by Windows NT is completely different from, and incompatible with, the FAT file system that is used by DOS and the other Windows varieties. NTFS can only be used by Windows NT–other operating systems do not have the ability to use a disk formatted with NTFS.
NTFS is in virtually every way, far superior to FAT. It is a robust, full-featured system that includes file-by-file compression, full permissions control and attribute settings, transaction-based operation, and many more features. It also does not have the problems with cluster sizes and hard disk size limitations that FAT does, and has other performance-enhancing features such as RAID support.

The only way that NTFS is not superior to FAT is in compatibility with older software. NTFS is not nearly as widely-used as FAT, for this reason. For now I am not including a full examination of NTFS on the site, but I may add this at a later time if it seems warranted.