I want to learn more about file systems from the practical point of view so I know what to expect, how to approach them and what experience positive or negative you had / have.
I found this wikipedia's comparison but I want your hands-on views.
For now my mental list is
NTFS - for some reason TVs on USB love these and also Windows + Linux can read and write this
Ext4 - solid fs with journaling but Linux specific
Btrfs - some modern fs with snapshot capability, Linux specific
xfs - servers really like these as they are performant, Linux specific
FAT32 - limited but recognizable everywhere
exFAT - like FAT32 but less recognizable and less limited
Ext4 for system disks because it's default in OS installers and it works well. I typically use it on top of LVMRAID (LVM-managed mdraid) for redundancy and expansion flexibility.
ZFS for storage because it's got data integrity verification, trivial setup, flexible redundancy topologies, free snapshots, blazing fast replication, easy expansion, incredible flexibility in separating data and performance tuning within the same filesystem. I'd be looking into setting up ZFS on root for my next machine. Among other things that would enable trivial and blazing fast backup of the system while it's running - as simple as syncoid -r rpool backup-server:machine4-rpool.
Every year I buy a couple ~$5 USB drives and plug them into my jbod machine in a software raid1. At this point there's about a hundred in long array of daisy chained USB hubs.
Each drive is formatted with fat32 and added to an LVM. Don't judge my ghetto NAS.
It also has self healing, no "partitions", high performance, compression, smart drive redundancy without RAID holes, encryption, deduplication and an extremery intelligent cache called ARC
Been running BTRFS since 2010. Ext2/3/4 before that.
Using it for CoW, de-duplication, compression. My home file server has had a long-lived array of mis-matched devices. Started at 4x2TB, through 6x4TB and now 2x18+4TB. I just move up a size whenever a disk fails.
Edit: reasons added in because I can't read the post title
OpenBSD laptop: ffs2, vfat for efi system partition
Why: Contrary to popular belief, OpenBSD does not support zfs. The only other filesystem options are msdos (fat family), and ext2fs (mostly for Linux compatibility as far as I can tell, filesystem is experimental and lacks a bunch of features according to the manpage). Makes ffs2 the only sane option.
Why: I prefer not having journaling on flash memory. This hasn't bitten me in the ass too hard yet, and even when it does I can usually get around system files being lost with integrity tools. Maybe I'll dabble with f2fs some day, but I'll need to read about its features and shortcomings compared to ext2.
Alpine Linux VM: ext4
Why: Would have installed as ext2 as well, but I forgot
ZFS all the things. On my workstations, I wipe / on every boot except for the files that I specify, and I backup /home to my NAS on ZFS and I backup my NAS snapshots to Backblaze.
Ext4 for everything when possible, because its reliable and proven. I'm looking towards Btrfs for my next system drive, as it is mature now and has good features. But I would use Ext4 for everything else still. For interoperability that doesn't understand Ext4 it would be NTFS when supported, otherwise fallback to FAT32.
That's the entirety of my knowledge and what I use when I have to format it myself. :D
I like BTRFS and it's features but sadly Debian doesn't have a preset for it in it's installer so the only way to use it is to manually partition and I absolutely suck at that.
BTRFS in FS-managed RAID configuration for automatic self-healing and snapshots for instant automated backups (though I keep a traditional backup too for protection against bugs and user error).
Storage is cheap compared to how much I value my data. BTRFS has very good support on Linux, integration with some backup tools, and I really want to use a FS that has full data checksums to make sure the data stays correct at rest. I like that I don’t have to use equal sized drives and can use whatever I have available, though I would appreciate a better read distribution model rather than the current where it just chooses a random drive to read from when multiple copies are available.
Disadvantages include difficulty accessing from Windows in my experience, less than stellar performance on HDDs, not very space efficient for small files systems because of the bulky metadata, and some uncommon RAID types don’t work correctly and will eat your data. I also don’t recommend it for use over USB because many such devices don’t correctly implement sync, and this is very important to stay on the correct transaction number and prevent file system inconsistencies. If I had to boot from USB, I wouldn’t pick BTRFS.
I don’t think exFAT or FAT32 offer POSIX permissions. I’m not sure if you could have a root file system there.
Btrfs, for the compression and CoW. I've been using it since a couple years. It seems stable for my use. I need to fully wrap my head around how snapshots work, though.
Honestly I saw btrfs in the arch install guide and read about it because I thought the name sounded funny. I used it until I distro hopped to NixOS couldn't figure out how to install it with btrfs, so I'm back on ext4.
Maybe I'll give it another try next hop, which is likely soon since Qt theming seems impossible on Nix. :/
I am now all-in on bcachefs. I don't like btrfs, cause you still sometimes read about people loosing their data. I know that might happen with bcachefs too since it's early days still but fuck it. I like the risk.
Filesystem level compression and encryption are so nice to have.
I use BTRFS on my Artix system, Ext4 on my Librem 5, Ext4 on my Devuan laptop and Ext4 on my Pinebook Pro. Basically when given the choice in the installer I choose BTRFS but if the installer doesn't let me pick I don't care enough to manually partition. I have had no negative experiences with any file system luckily so I just roll with whatever.
NTFS support is pretty solid on Linux these days, but just so you know, never use it as a root partition.
I have generally used ext4. There's ways to massage it to mount on Windows, as with btrfs. Ext4 is very likely what you should do if you're installing Linux for the first time, as it has had decades of testing and is rather battle-tested
I recently did my first btrfs install. For now, I've had no issues. Of course, some could happen, but I've generally heard btrfs is fine these days. One of its cool things is native compression support, although I forgot to enable it when I did that install.
I've never used XFS.
FAT32 should be rarely used these days due to file size limits and file name limits. The only place where it should still be used is for your EFI partition.
Now exFAT really isn't that unrecognizable. It's supported by pretty much every operating system these days. It's definitely not for root partitions, but should be your default for flash drives and portable hard drives.
On another note, I recently tried Bcachefs on Debian Testing on a random old Chromebook. It is still in development, and not all distros support it yet, but I liked what I saw from my limited experience. It also supports snapshots, and unlike btrfs, has native encryption. For now, just ignore it, but like many in this post have said, keep an eye out for it.
As for ZFS, I've never tried it. The main caveat is due to licensing incompatibility, it is not in the standard Linux kernel and you have to do some special stuff.
ExFAT is the LCD filesystem for flash sticks. FAT32 is the filesystem that you have to use for devices designed back when Microsoft was awful about Exfat licensing.
Everywhere else, Btrfs. If Oracle didn't poison-pill ZFS licensing and it was common on Linux, I would be using that instead. Basically, taking it on faith that a drive didn't fuck up your data is crazy. The most basic responsibility for a filesystem should be ensuring that "the files come out exactly the same as when they went in".
Btrfs on my laptop with openSUSE, mainly because it's default, but also for its snapshot capabilities.
Whatever file system my default Raspberry Pi installation uses (probably Ext4).
NTFS on my main computer With Windows 10, because... well... I don't really have any other choice, although I know there's some kind of 3rd party Btrfs driver for Windows as well and you can ever have boot partition formatted as Btrfs, but I think it's still experimental.
ZFS for nearly everything plus ZFSBootMenu EFI on root data pools. Get a bad upgrade? No problem, boot a previous snapshot (auto created with a pacman hook), which I had to do recently when 6.6.39 LTS kernel had a bug. Snapshots are also great when doing things such as upgrading postgres, hass, Plex, etc.
I use ext4 for all boot drives and root filesystems. Anything really important goes on a ZFS array. And for my Linux isos, I use a drive with ext4 + snapraid. The parity drive has xfs because ext4 has a 16tb file size limit.
Got rid of anything NTFS as it was unreliable and slow on Linux.
@Psyhackological
Work stations all run Ext4.
Main server: Ext4 on main partition, ZFS RAIDZ2 on the data.
Secondary server: BTRFS on main, BTRFS RAID1 on data.
If BTRFS could natively encrypt and had stable RAID6, I'd be using it probably on everything.
ZFS on my file server. I'd use it on my laptops and desktops too (and have done when I was using Xubuntu) but I've switched toFedora which doesn't come with a way to easily install with ZFS and I don't feel like jumping through hoops to get it done. And I can't stand btrfs. I don't know what it is about it, but I just don't like it.
ext4 on all hard disks, but my installs are all several years old at this point, and I might choose differently if I were starting over from scratch. The boot partition on the ancient laptop might actually be ext2; I don't remember and it's certainly old enough that that might still have been preferred Gentoo procedure when I first set it up. Removable media might be ext3, ext4, or vfat, depending on compatibility needs and how long ago I formatted it. If I buy an SD card or USB stick that turns out to be preformatted in exFAT, I reformat it before use to ensure everything can read it.
They're all solidly reliable filesystems (well, except for the vfat), but perhaps not the most featureful.
A combination of XFS and ZFS. I work in high performance computing (academic). While I love the reliability of ZFS for data archival and peace of mind that results provably haven’t suffered bitrot, sometimes I just need a 10 TB temp file(s) with fast mostly-sequential R/W. Appropriate selection of file systems lets me have both.
It's all Ext4, but I run SnapRAID on top of that on my data drives. I'm sure lots of people would tell me I should use ZFS/BTRFS instead, but I'm used to SnapRAID, and I like the idea if something goes wrong, I won't lose all my data.
I use bcachefs for my games, I like that it lets me have multiple disks with redundant data copies, plus ssd caching of frequently accessed files, this fs is linux specific for now as far as I know, and is still experimental. I use ext4 for everything else, and FAT32 for flash drives.
Btrfs, ZFS and ext4. My servers use ZFS, my client machines mostly use btrfs and I have a sprinkling of ext4 partitions for specific workloads. I'm all in on CoW filesystems for snapshots, send receive, transparent compression and reflinks. I like btrfs on client machines and SBCs because it's easily available (baked into the kernel) and doesn't require maintaining dkms or holding kernel versions until ZFS supports them and because snapshot handling and other filesystem admin tasks are simple and straightforward. I run ZFS wherever data integrity is important, eg: storage servers and backup targets, but largely prefer working with btrfs.
exFAT external "archive" drive (easy to connect to Windows machines if ever I need my backup in someone else's windows machine in an emergency and such)
We use btrfs for the / partition and xfs for any data partitions. Has served us well, the snapshot feature saves us some valuable time when an update goes awry.
Depends. Slower desktop machines XFS.
Standard desktop XFS, if it has a smaller SSD, Btrfs.
Home server ext4/XFS + ZFS. Generic servers at work ext4/XFS, backup/storage servers ZFS.
Database server, experiment with ZFS with compression enabled - ratio 2:1, but encountered problems (probably a bad HBA model), standard ext4/XFS.
Hosts with virtualization, small server - XFS, big server - ZFS (technically a ZVOL).
ext4, but the btrfs activity visible in the kernel changelog has slowed down recently after a long period of many bug fixes, so maybe I'll give it a try next time.
ZFS for my server’s root pool and main storage pool. Ext4 with snapraid for my media pool. Currently btrfs on my desktop and ext4 under vanillaos on my laptop (not sure if I could partition it manually to use btrfs but I’m considering that for snapshots)
I use Btrfs for my root partition to be able to rollback if something goes wrong after update.
XFS: in all other cases, since I hate the lost+found directory on ext4. Although I don't think there's any significant difference between ext4 and xfs in performance and reliability.
I've been basically using btrfs on a lot of my disks because of the features it has.
Before I switched to a borg based system, my backups partition used btrfs for compression.
My main OS disk is btrfs so I can use timeshift snapshots, which are really worth checking out if you tinker with your system a lot.
I have two more btrfs partitions software raid0'd together for my steam library, nix store and other big but loosable things.
And my main home folder uses btrfs because I think the checksumming thing it does is more reliable for error detection, and cow is more fault tollerant on power failure?
... And I now fell like I'm one of those people with an over engineered storage solution. I just never get rid of old ssds or hard disks!
ext4 because I value my data and don't want to lose it. I used to mess about with ZFS for mass storage but it's a university course to learn how to use and have decent performance.
I used to use XFS, but ext4 caught up.
And I used to use XFS... on something other than Linux.
Every photocopy machine I've come across that accept USB sticks do not support exFAT, so what I would do with my USB stick is to split it into two partitions, one FAT32 and the rest exFAT.
Most of my drives are EXT4, but I started using BTRFS a couple years ago and will be using it on all new installs from now on. I really like being able to make snapshots and compression reduces the install size quite a bit.
NTFS for the drive I had before jumping to Mint. Currently reporting several hundred gigabytes free, but refusing to make any new files, because... I don't know. I'll deal with it after an upcoming move.
The OS / home SSD is ext4, and so is the fat loud hard disk I recently purchased through an entire month of fighting Amazon over gift cards.
I wish I'd actually chosen a file system instead of just letting window's at the time default to NTFS for external drives.
Moving from Windows to Debian; NTFS has been nothing but a headache. I've actually had to setup a windows machine to serve that drive pool via SAMBA as Linux just won't play nicely with it.
I think btrfs was the default the last time I installed Bazzite, but I don't really know anything about it so I switched it to ext4. I understand the snapshot ability is nice with rolling release distros, though.
It'd been ages since I'd used FAT32 for anything until I made a Debian live USB when I was setting up my pi-hole on an old Core2Duo recently. It would only boot on FAT32 for reasons I probably once knew. 😆
NTFS was an improvement over the FATs what with the journaling, security, file streams, etc. I use it wherever I still use Windows (work).
Most of my general purpose USB flash drives use exFAT. I like not having to worry about eject/unmount.
I've got Btrfs on my desktop for the OS drive cuz that was what Fedora recommended when I was installing it. It took a bit of effort to get snapshots working properly, but other than that, I've had no issues with it at all over the past year. I've got an exFAT drive and an NTFS drive in there that are kind of leftovers from using Windows. I've been thinking about reformatting the exFAT drive to ext4 or something, since all it really does is store games, and having the ability to symlink to it would be nice.
I've got a TrueNAS machine as well and that uses ZFS for pretty much everything.