A file system is a way to store and retrieve data from a computer. Many people think of computer storage as if it’s a dictionary, with information arranged in an orderly fashion. This couldn’t be any farther from the truth: data is generally (although not always) written where is free space, all other considerations be damned. A more apt simile would be to compare storage to a collection of sheets full of notes belonging to a particularly messy person who, rather than sorting through her papers, resorts to sticking bookmarks onto them. Don’t get me wrong: this isn’t a terrible thing per se, for moving around stuff from one section of the hard drive to another would require wasting a lot of time while the computer rearranges everything. Various file systems differ on how they arrange data, but the basic gist is that data is written wherever there’s space.
Windows supports three file systems out of the box: FAT32, exFAT and NTFS. Let’s see the differences between them, where they excel and where they fall short. We’re not going to compare Windows file systems to file systems supported by MacOS or Linux, because such a discussion would take quite a while and I think it’s a rather pointless exercise to begin with. I will, however, highlight cross-OS compatibility.
(Yo mama is so) FAT32
Fat32 is the oldest type of file system supported by Windows. Its origins can be traced to the days of MS-DOS, which used a predecessor to FAT32 called FAT12, back in 1981. Over the course of these last 36 years, the original FAT12 file system underwent an evolution into what it’s now known as FAT32. What changed in these years is beside the point, but suffice it to say that FAT32 isn’t modern by any stretch of the definition and has quite a few limitations.
First off, you can’t store files bigger than 4 gigabytes in size. In general, this isn’t a huge deal, for at least two reasons: first, it’s very rare for files to be that big, and secondly, files that actually are that big can usually be split (for example, compressed archives). As we mentioned in a previous article, FAT32 volumes have a restriction of 11 characters to their labels, which also can’t be in lowercase (all lowercase characters will be converted to their uppercase equivalent). Additionally, you can’t specify ACLs for data stored in FAT32 volumes, which makes them unsuitable in many cases.
On the bright side, FAT32 has a high degree of compatibility: drivers for it are available under Linux and MacOS. This is very important because an external hard drive formatted with FAT32 is automatically compatible with other operating systems.
ExFAT was developed out of the need for a file system that was able to overcome FAT32’s limitations without impacting compatibility with older systems. Most features of ExFAT resemble those of NTFS, particularly regarding volume and file size limits, but ExFAT still does not support ACLs, meaning that you can’t enforce security on it, and does not support volume compression to save hard drive space.
Similarly to FAT32, ExFAT is compatible with Windows, Linux and MacOS.
NTFS was introduced in 1993 with Windows NT 3.1. Back then, its introduction was a big deal because it was the first file system developed by Microsoft for use in workstations and servers. As we explained previously, the NT family of operating system was developed by UNIX veterans who built on their knowledge, providing access control to Windows for the first time.
Of course, it took time for NTFS to catch on: initially, Windows NT and, as an extension, the NTFS file system, were not meant for general consumers and most businesses, but for highly powerful workstations and servers. It was only in 2001, with the release of Windows XP, that consumers first got to use the NTFS file system, which is the default type of file system on Windows operating systems to this day.
Compared to FAT32, NTFS has a much larger volume size (up to 256 TB), file size (limited only by the volume size), has support for ACLs and has built-in compression. Additionally, it supports encryption for enhanced security.
NTFS is supported under Windows as its main file system type and Linux via the ntfs-3g driver package. MacOS supports mounting NTFS volumes as read-only, althought there is a commercial driver available for sale.
ReFS, or Resilient File System, is a new type of file system developed by Microsoft and made available in 2012 in their Windows Server 2012 and later in Windows 8.1. In Microsoft’s intentions, ReFS is supposed to become the next generation file system.
The main idea behind ReFS is that this is meant to be a type of file system “designed not to fail”. I personally don’t buy into all this confidence and some other people seem to agree: if a ReFS volume fails, recovering it may be problematic or simply not possible at all.
However, ReFS brings a few innovations to the table, most notably a higher volume size (although this won’t matter for me or most of my readers), checksums for data integrity protection, and higher virtualization performance.
However, it’s too early to say whether ReFS is a worthy successor to NTFS and booting from a ReFS volume is not supported. Additionally, only Windows supports ReFS so far, although it’s possible that open source drivers aren’t too far off the horizon.
In light of what we’ve discussed so far, FAT32 is a good choice for USB thumb drives up to 32 GB in size, seeing how it offers a high degree of compatibility with other operating systems, which is fundamental for those kinds of storage devices. Thumb drives larger than 32 GB will benefit from using ExFAT. The same can be said for external hard drives you need to share with other operating systems, since MacOS does not support writing to NTFS volumes (only reading). On the other hand, if you do not use a Mac or a Linux box and are only going to use your external hard drive on Windows PCs, NTFS is the way to go for both external and internal hard drive. It’s way too early to judge ReFS, and long-term concerns about this file systems makes me cautious about recommending its usage.