Imagine a hard drive as a giant library with empty shelves. The file system is the librarian and the index: it decides how the books (files) are stored, where they are annotated, and what their names are. Without it, the disk would only see trillions of ones and zeros

most common file systems: FAT32, exFAT, NTFS, ext4, APFS, HFS+

  • FAT32
    • File Allocation Table 32
    • windows, macos, linux
      • (4 GB – 1 byte ) files (You cannot save a single file larger than 4 GB)
      • Maximum partition size: * Theoretical: Up to 2 TB (using 512-byte sectors) or 8 TB (with 4 KB sectors)
      • Windows limitation: The native Windows formatter typically limits FAT32 partition creation to 32 GB. For larger partitions, you need third-party tools
      • Maximum number of files: Approximately 4 million per volume
  • exFAT
    • Extended File Allocation Table
    • Designed for flash memory and external hard drives, it eliminates almost all the barriers of FAT32
    • windows, macos, linux
      • No practical limits (you can upload 50GB files if you want)
      • Designed for flash memory and external hard drives, it eliminates almost all the barriers of FAT32
      • Theoretical: 128 PB (Petabytes). This is an astronomical figure that we’re unlikely to reach anytime soon
        • Recommended: Up to 512 TB for optimal performance
      • File limit: Virtually unlimited (same as the partition)
        • Maximum number of files: Up to 2.7 million files per folder
      • On MBR disks: Up to 4 primary partitions (or 3 primary and one extended partition with multiple logical drives)
        • On GPT disks: Up to 128 partitions
    • NTFS
      • is from own:windows (Linux: Reads/Writes fine. macOS: Only reads (doesn’t save anything))
    • ext4
      • own: linux
      • Windows/macOS: They don’t recognize it. They need special drivers
    • APFS
      • own: macOs (new)
      • Optimized for SSDs
      • Windows/Linux: They don’t see it without expensive software
    • HFS+
      • own: macOs (old)
      • For older Mac mechanical hard drives

These systems have “Journaling” (if the power goes out, the entire disk is not damaged):

  • On Windows: Use NTFS
  • On Linux (Ubuntu): Use ext4
  • On Mac: Use APFS

For boot: FAT32. It’s the only one that the hardware (UEFI) fully understands, regardless of the motherboard brand


  • Do you want everyone to read it? -> exFAT
  • Is it for the EFI boot partition? -> FAT32
  • Is it your main Linux disk? -> ext4
  • Is it your main Windows disk? -> NTFS

So, if I have Linux/Ubuntu and I want it to be compatible with macOS and Windows, is exFAT the best option?

If your goal is maximum compatibility for sharing large files between the three systems without going crazy with drivers, exFAT is the undisputed winner

No read/write “wall”:

  • macOS: Reads and writes exFAT natively
  • Windows: Reads and writes exFAT natively
  • Linux/Ubuntu: Reads and writes exFAT perfectly (in modern versions it’s already included in the kernel; in older versions you only need to install exfatprogs)

Goodbye to the 4GB limit: Unlike FAT32, in exFAT you can save Linux ISOs, your server databases, or heavy Java installers without the system rejecting the file

Less system “junk”: Because it is not as complex a file system as NTFS or ext4, it does not fill the disk with as much permission metadata that sometimes causes “Access denied” errors when switching from one operating system to another

Not everything is rosy. exFAT has two weaknesses that, as a system administrator, you should be aware of:

  • Lack of Journaling: If you’re writing a file to the disk and the power goes out or you suddenly disconnect the USB drive, there’s a greater risk of file corruption compared to ext4 or NTFS. These latter file systems have a journal that records what they’re doing to recover from failures
  • Not for the Operating System: Never install Ubuntu or Windows on an exFAT partition. Operating systems need file permissions (who can read, write, or execute), and exFAT doesn’t understand that. It’s only for data storage

  • For your kernel/bootloader: Continue using that small FAT32 (ESP) partition because the hardware needs it to boot
  • For the rest of the disk (the 100 GB): Use exFAT so you can easily transfer files from and to your Mac, Windows, or Ubuntu server

And can I use Docker with a mini operating system?

In fact, that’s how almost everyone in the industry works these days. Nobody puts an entire 2GB operating system inside a container; they use so-called “Mini OS” or minimal base images.

The “secret” lies in the difference between installing an operating system and saving a file that contains an operating system

You can’t format a partition of your disk as exFAT and try to install Ubuntu or Windows there to run directly from the hardware