The File Allocation Table (or FAT) file system has been around for 45 years, and is still used in many embedded devices today. We provide an overview of the FAT and exFAT formats.

File systems have been used for organizing data in devices since data first began to be stored in them. File systems must store files on the media – those files are collections of data blocks, also referred to as clusters or inodes. The FAT (File Allocation Table) file system creates a structured table of those clusters, reducing the time it takes for the device to search specific clusters. As an early file system entrant, FAT has attained a certain ubiquity and almost all operating systems offer it in some form. This is due to its simplicity, which makes it easy to understand and implement. In addition, its omnipresence makes it a common denominator that is presumed to provide interoperability among systems.

How FAT works

The FAT file system stores user data in a series of clusters on the media. Each file on the media resides in a directory or folder, either in the root directory or one of many subdirectories. Each of these directories also allocates one or more clusters to contain the directory entries, which contain much of the metadata associated with each file – items such as the file name, extension, creation date and time, and the file size.

When the initial directory entry allocation is filled up, a new cluster is allocated, and it is often not contiguous with previous entries. This is why directories take progressively longer to read as more files are added.

The directory entry of each file or subdirectory contains a number that indicates the first cluster for that file or directory. A series of these pointers to clusters is stored towards the front of the media in what is known as a File Allocation Table. A zero entry in this table indicates the cluster is available, while a non-zero entry either points to the next cluster for the file (a forward pointing chain of entries) or contains a flag indicating that this is the last cluster in a file. By default, there are two copies of this File Allocation Table, which in the original implementation of FAT allowed a backup to handle media corruption and failed sectors – a common problem on floppy diskettes and early hard drives. Some recent implementations have replaced this mirroring with alternate uses, such as a transaction area. Microsoft for Windows CE created a FAT implementation (called TFAT) that stores allocations in the first FAT region, then commits the data to the media, and then updates the second FAT region.

FAT12, FAT16, FAT32 – what’s the difference?

You may have heard of FAT12, FAT16 and FAT32. The number refers to the size (in bits) of the entry, and therefore the maximum addressable cluster. The table below shows both the maximum cluster and the maximum volume size for these popular formats.

FAT type maximum clusters and volume sizes

Type

  • FAT12
  • FAT16
  • FAT32

Maximum cluster

  • 4,078
  • 65,524
  • 268,435,456

Maximum volume sizes

  • 256 MB
  • 2 GB
  • 2 TB

Figure 1. Comparison of maximum cluster count and maximum volume size between different FAT variants.

These limits reflect a sector size of 512 bytes. Modern media with larger sector sizes (e.g. 4,096 bytes) will result in larger maximum volumes as well. The maximum volume size for a FAT32 volume with 4 KB sector size is 16 TB.

In Linux, the VFAT module enables access to FAT formatted volumes. There are some slight differences in long file name handling, but that’s a topic for another time.

For FAT12 and FAT16, the maximum file size is limited to the maximum volume size. The first implementation of FAT32 had a maximum file size of 2 GB. In 1996, multiple vendors met at a Large File Summit and agreed to a standard addressing scheme for 64 bit numbers, and this raised the FAT32 maximum file size to 4 GB.

Enter exFAT

Surpassing that limit was one of the main reasons for the design of Extensible FAT (exFAT) file system. This was introduced as part of Windows CE in 2006. In addition to options for larger media and file sizes, exFAT also introduced international character sets, improved time granularity, and other modern features.

The exFAT format was adopted by the SD Association for SDXC media in 2009, and is widely used today in cameras, cars, and other digital devices. This allows the removable media to be used in desktop systems and other devices with no confusion.

Related content:

Learn more about the SD Association and SDXC cards in our quick guide to SD card speed and capacity for video recording.

Media format utilities must decide whether to format a volume as FAT or exFAT, and most do not provide options for the user to decide. The SD Format utility from the SD Association allows users to choose between FAT32 and exFAT for large volumes.

FAT type minimum and maximum sizes in SD cards

Type

  • FAT12
  • FAT16
  • FAT32
  • exFAT

Minimum size

  • 4 MB
  • 64 MB
  • 2,088.5 MB
  • 32,896 MB

Maximum size

  • 64 MB
  • 2,048 MB
  • 32,768 MB
  • 2,048 GB

Figure 2. Comparison of minimum and maximum sizes between FAT variants in SD cards.

Final thoughts

The FAT file system is widely used today in many embedded devices. We have provided an overview of where FAT is applied, how it functions within a system, and how industry innovations like exFAT have boosted its usability.

FAT has come a long way, and it’s still being improved for the needs of modern embedded systems. A premium implementation of exFAT – like Microsoft exFAT by Tuxera – can help ensure fail-safe interoperability on your devices.


Get the most out of FAT and exFAT with GravityCS by Tuxera – our fail-safe suite of industry-standard embedded file systems.

GRAVITYCS BY TUXERA