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
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’ve been using ZFS now for a few years for all my data drives/pools but I haven’t gotten brave enough to boot from it yet. Snapshotting a system drive would be really handy.
deleted by creator
It is fast. It’s the recommended filesystem for MinIO and default for RHEL 7 and above. XFS and ext4 are often recommended for databases if no other filesystem-level features (like snapshots) are needed. XFS has slightly more features than ext4 like CoW and reflink support.
deleted by creator
I see it’s the GOAT as fs
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.
Why xfs let’s say over ext4? Just asking out of curosity.
The main distribution we use has it like that by default and our (admittedly rudimentary) benchmarks haven’t shown much of a performance difference versus ext4 so we kept to the default.
Not only is there btrfs support for Windows, but since windows and linux root structures don’t conflict, someone got both arch and windows booting from the same partition. Is it a good idea? Hell no. But can it be done? Apparently yes.
Servers - btrfs. Fewer layers of abstraction, easier to manipulate.
Laptops - ext4. I don’t do anything weird with the onboard storage, plus it supports fscrypt.
Flash drives - exFAT. I usually need to access them on multiple platforms and exFAT is about as cross-platform as VFAT (but supports bigger files).
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.
Yeah same here, everything is ext4 'cause it’s always worked and has never given me any troubles. But next time I have to reinstall I am tempted to give Btrfs a go.
How well a file system recovers from crashes or corruption.
fall guysBtrfs, but if I’d start from scratch today I’d go for bcachefs.
Even now?
Yes
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.
As an aside, I’ve been watching bcachefs with some interest, as it seems to be getting faster with every kernel release, building on the data integrity guarantees of ZFS while pushing performance boundaries and being GPL compatible (i.e. in tree). Kent Overstreet et al. have done a fantastic job with this FS.
Btrfs because it sounded cool when I first read about it and worked fine so far :3
Yeah it sounds “better” FS. Do you use snapshots?
Yep, got Timeshift hooked up to make a snapshot each time I update my system and I can boot into them via GRUB. Haven’t needed that so far, thankfully, but it’s there just in case.
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.
ZFS on anything storage related. Enterprise level snapshot and replica management.
How’s it better than XFS? I heard same things about it too.
XFS does not do snapshots, replicas, and all the other myriad of things that ZFS does.
ZFS is completely different than XFS. XFS is like a better (different?) ext4. ZFS is an error-checking software raid COW filesystem that does snapshots and can have multiple replicas, both local and remote. It uses zvols and datastores. Think btrfs on steroids and with a working raid subsystem.
It’s got a weird semi-closed license because Oracle is involved but it’s never been enforced and at this point is in such widespread use in large and small enterprises that it would be impossible to enforce.
OpenZFS is under a completely FOSS license but it’s incompatible with the GPL and can’t really ever be merged into the Linux kernel. The workaroundids to provide it as source code which gets compiled as a module every time there’s a new kernel via dkms.
More controversially, Canonical ship OpenZFS pre-compiled in Ubuntu which some lawyers believe to be infringing on ZFS’ codebase.
Honestly the OpenZFS situation on Linux is probably the biggest single reason for the growing interest in btrfs and bcachefs, the former slowly becoming default on more Linux distros over time and lots of investment from SUSE and Facebook AFAIK.
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.
That’s sound fantastic! Interesting that you didn’t mentiona anything about snapshots. Have you had some isshes with BTRFS since then?
Well, snapshots, too. I just consider them to be a special case of de-duplication.
I had an issue when I ran out of space during conversion between RAID profiles a few years back. I didn’t lose any data, but I couldn’t get the array to mount (and stay) read-write.
Btrfs isn’t stable in big configurations. The big issue is that resilvering takes a long time and hurts performance. ZFS is the right answer.
I’m sure it’s great and all, but the hassle of having a filesystem that’s not in the kernel is a no-starter for me. Maybe one of those fancy NAS-distros that are based on some *BSD.
Linux works fine with ZFS. I wouldn’t use it as your boot device but for big storage it is very reliable and stable. It also can take advantage of ram with Arc and has optional special disks. (Metadata disk, slog and cache as an example)
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.
- OpenBSD vps: ffs2
- Why: See above.
- Pinephone running PmOS: ext2 boot partition, ext4 root partition
- Why: Defaults.
- Void Linux VM: ext2
- 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
- Steam Deck: ??? (too lazy to check, 9/10 chance it’s ext4)
Yes the Steam deck FS is ext4.
Why ext2 on Void?
I prefer not using journaling filesystems on flash memory, I haven’t had any major data integrity issues yet because of it. I would have made the Alpine fs ext2 as well, but I guess I missed it during install. I think you can just disable journaling in ext4 anyways, so if I care enough I’ll just do that.
The Steam Deck uses btrfs on its internal storage.
- OpenBSD laptop: ffs2, vfat for efi system partition