APFS or HFS or NTFS or exFAT on my external drive
FAT32 no more
When working with multiple devices with multiple OS, there is always the constant of file management. From large video files, software images and cold storage like backups or archives, to large groups of small files like the infamous node_modules
, file fragments and PDFs scattered around.
Moving these files from one device to another has been always a problem. When you don’t have the luxury of a fast network like fiber or 4Gbps ethernet, you have to deal with moving and working on external drives. This means, marrying the drive with a specific filesystem format, and praying the gods you never have a problem with it.
That was one of my problems this year. Some important files had to be moved physically to other computers not connected to the company network. I investigated which format was the most appealing for a large drive when the devices where it would go where so different. The accountant uses Windows, the manager uses macOS, and the server runs on Debian. You get the idea.
The all-around exFAT
Nowadays FAT32 has been left in the dust and exFAT support is pretty wide among all operative systems. This is the only choice for a cross-compatible roaming storage, since it can be read natively by Windows, Linux (Kernel 5.4 onwards) and macOS (since 10.12), meaning, it doesn’t require special drivers or software. It just works.
In other words, the most important factor to use exFAT over anything is cross-device compatibility.
The other, second reason to use exFAT over the most widespread and old FAT32 is device and file sizes. Today is normal to find cheap flash drives over 4GB, and files over that size too, which is the limit of FAT32. exFAT it’s the de-facto format on external drives, like SD Cards. This was not a problem around 2010, but now it is.
The less-important third reason for choosing exFAT is because it’s lightweight. It doesn’t demand too many resources from the host to operate — one of the main reasons why 32GB SD Cards and above use this format, as you also need to deal with low-power devices like cameras.
There is one big caveat for exFAT, and is the lack of journaling. When a change on the exFAT partition is done, like a file write, there is no registry of it. Any interruption, like an accidental cable trip, power loss or a system hang, will lead data corruption. Just imagine copying a 2GB file just half, and wondering why the rest of the file is a bunch of zeros.
Another one is the lack of TRIM, and probably similar. This command sent by the OS improves performance on Flash NAND based storage (SSDs) on write and delete operations and makes their life last a little longer.
These are both big reasons to not use exFAT drive for continuous work. Luckily, most OS support checking and repairing errors when an incomplete operation is detected, but sometimes it doesn’t fix files magically.
On critical work, my recommendation is to use exFAT to copy the files locally, work on them, and then copy back the changes once. It’s not speedy as it sounds, but you can ensure there is no spontaneous data loss or performance degradation. The rsync
command may be your friend.
The old trusty NTFS
The NTFS format, at version 3.1, is file system that today is supported by all major OS, but not in a complete manner. Most OS can read and write, and some like macOS require third-party software to write.
The main reason to use NTFS over anything else is the features for Windows users. It has an overhead over file operations, like happens on Ext4, APFS, HFS and so forth, but that is a small tax to pay when you get journaling, TRIM, ACL for file permissions, encryption, compression, deduplication, shadow copies, and sometimes better performance on tens of thousands of files.
But NTFS is a problem on itself. Windows users shouldn’t bat an eye on formatting the drive, especially a large one, to NTFS. Since the main problem is cross-compatibility for write operations, you shouldn’t have any problem if you only need to read from it on other operative systems.
If Windows is not your favorite cup of tea, then exFAT may be an only option.
HFS+ and APFS
Mac users know very well that Apple uses the HFS format for its drives. We can say the same about NTFS and extrapolate most of the features here, like journaling, and TRIM on the internal SSD (but can be used on external ones).
This format was created when mechanical drives where the norm. It was replaced recently by APFS, with a lot of features and optimizations under the hood. The caveat here is that APFS is optimized for SSD and is the default for modern macOS internal drives.
As HowToGeek says, if you plan to use an external drive exclusively on the Apple ecosystem, HFS+ or APFS are your most reliable options. HFS+ will work very well with mechanical drives, and APFS will do the same for Flash NAND storage, like an SSD or an NVMe drive.
If you’re curious, is mostly because of file metadata positioning. In HFS+, the metadata is kept in the beginning (outer rims) of the spinning disk, while APFS puts it right along the file. Mechanical drives suffer on not-sequential reads, compared to Flash NAND, so here is where HFS+ performance is better, and APFS worsens as more files are added due to the sparcity of this metadata.
APFS is very flexible in terms of features too, probably because of this manner of dealing with files. As LifeWire enumerates, there things to look like space sharing, snapshots and clones, probably only possible thanks to Flash NAND speedy random-reads.
If cross-compatibility is a must, APFS or HFS+ are your enemies, as they limit operations only to macOS natively, and third-party software elsewhere.
What about ext4?
The ext4 format is much like NTFS for Windows and APFS for macOS, at least on Debian and Ubuntu. There is a nice thread on StackOverflow that deals with both.
Same thing we could say about XFS, BTRFS, F2FS and ZFS. If you’re under Linux, you probably know which file system to pick already. For small roaming devices (SD Cards, eMMC, similar), you will stick with F2FS or exFAT.
In any case, Linux is a whole different world. Depending on your workload, you may prefer ZFS on the NAS, XFS at NASA, F2FS on the eMMC drive, BTRFS for your workstation, and ext4 on your mom laptop with Ubuntu.
So, what I pick?
Let’s assume you have a flash drive of 64GB with a bunch of small photos in JPEG, and some big 4K files of footage.
- Cross-device compatibility? exFAT
- Cross-device compatibility on old devices? FAT32 and lot of zip files.
- Apple ecosystem on Flash NAND? APFS
- Apple ecosystem on mechanical drive? HFS+
- Windows ecosystem? NTFS
- Linux ecosystem? Ext4
- Linux for low powered devices? F2FS may be an option, exFAT
- Servers? ZFS, BTRFS, XFS, review your options…