Which file system do you recommend for Linux?

foremanguy@lemmy.ml to Linux@lemmy.ml – 122 points –

Just a simple question : Which file system do you recommend for Linux? Ext4...?

EDIT : Thanks to everyone who commented, I think I will try btrfs on my root partition and keep ext4 for my home directory ๐Ÿ˜ƒ

152

If youโ€™re just doing a vanilla Linux install, ext4 is the way to go.

Upvoted. Not everyone wants to rely on backups and restore broken system every month like on BTRFS

We're not in 2014 anymore.

File system is a core component of any electronic system. Even if it's just 1% less stable than other ones, it's still less stable. Maybe it's faster in some cases and supports better backups but ehh idk if it's worth it. Losing documents is something you probably want to avoid at all costs

Yeah, but it isn't noticeably "less stable" if at all anymore* unless you mean stable as in "essentially in maintenance mode", and clearly good enough for SLES to make it the default. Stop spreading outdated FUD and make backups regularly if you care about your documents (ext4 won't save you from disk failure either which is probably the more likely scenario).

* not talking about the RAID 5/6 modes, but those are explicitly marked unstable

My short BTRFS history

  1. Installed on a 1TB NVME
  2. used for 2 years
  3. Rebased my system a ton, used rpm-ostree a ton (which uses BTRFS for the snapshots I think?)
  4. Physically broke the SSD by bending (lol used a silicon cooler pad but it bent it) which resulted in hardware crashes
  5. With dd barely managed to get all the data onto a 1TB SATA SSD
  6. dd-ed the SATA SSD onto a 2TB NVME
  7. deleted and restored the MBR, resized the BTRFS partition to max, resized the BTRFS filesystem to max, balanced it

Still works, never had a single failure

Well gtk if it's really as stable as ext4. I will still stick to ext4 though because why change what already works well and tested on almost any machine you can possibly imagine?

I suppose by being more efficient, "using modern technology" (everything saving Google, Meta, Amazon etc. money and is thus extremely well funded, all server related stuff), is good for the environment.

If something runs faster on the same hardware, it may use less energy. It may also just be restricted in hardware usage, like not using multithreading.

Linux Distros shipping x86_64-v2 packages is a whole other problem...

I have an x86_64-v2 CPU so I highly disagree with your statements.

Like, all of them... or would you be a bit more specific?

Old CPUs are an okay use case, but targeting will literally remove all benefits in efficiency that were made in the last 14 or so years.

My Thinkpad T430 has v3, and it is a 3rd gen intel. People honestly running hardware older than that are rare.

For sure the hardware should be supported, but it is not the target audience and pulls the others down.

So what solution do you recommend? Only making v3 packages and leaving older hardware support for AUR geeks?

No, and this is for sure an issue. Having different repos would increase fragmentation a lot.

I disagree. My partition is ext4, but Timeshift saved my ass when an upgrade went wrong. I just had to restore the system from a previous snapshot taken before the upgrade.

Of course updates can break stuff. What I don't understand is why would you intentionally go for a less stable FS that can break and corrupt all files? It's especially bad on old machines with limited space where full backups are not possible

Are you talking about ext4 or BTRFS?

Updates can break stuff on any file system but BTRFS is known for worse stability, at least in the past

I'm running it for over 3 years as complete linux moron with no issues whatsoever. It was default in openSUSE and its automatic snapshot feature saved my ass multiple times. I've heard everyone saying ext4 is super stable and I should use it, but I went with default and can't complain.

I never tested BTRFS on SSDs under 128GB or even HDDs, but never had a corrupted one.

Those anecdotes are worth little so it would be best to have current data.

One of the above points was that the claims are outdated, which would be really interesting to verify.

Like, making a study with many different parameters

  • hdd, sata ssd, nvme ssd, emmc, etc.
  • size: 50-200MB, 1GB, 16GB, 128GB, 500GB, 4TB (from small embedded, to IOT, to usb flash drive, to smartphone, to laptop, to Server/Backup)
  • amount of usage: percentage filled, read/write per minute
  • BTRFS actions: snapshots, balance, defragment

If full backups aren't possible that's an administrator failure.

Reliance on a file system to never fail rather than have proper backups, is an administrator failure.

ANY system can, and will, fail. Thinking and behaving otherwise is an administrator failure.

"Everything gets gone, sooner or later" - being prepared for it is good administrator behaviour.

Yes but why intentionally choose a worse option? Sorry but it's not very smart imo.

And not having enough space is not an administrator failure. It's usually budget issue. And are you saying that making apps bloated (like severely bloated) is ok and the user should always be blamed for having lower hardware?

1 more...
1 more...

And LVM is more than good enough for occasional snapshots before a major upgrade.

What's lvm like compared to btrfs?

Well lvm makes a shit filesystem and btrfs is useless at volume management.

LVM creates "block devices" and is FS agnostic. You can install btrfs on an LVM volume if you wanted. Or any other FS for that matter.

But since it doesn't know anything about the FS it can be a bit more cumbersome to modify volumes (especially when shrinking).

Good that you mentioned that. Reminded me that I have an Arch Linux install here where I forgot that I did choose BTRFS during installation. Within maybe a month I noticed FS errors. Looked scary. Nervously searching for documentation was even more scary :

https://wiki.archlinux.org/title/btrfs#btrfs_check -> This article or section is out of date. (Discuss in Talk:Btrfs) Warning: Since Btrfs is under heavy development, especially the btrfs check command, it is highly recommended to create a backup and consult btrfs-check(8) before executing btrfs check with the --repair switch.

What is this? My beloved Arch Wiki is not 100% perfect!

Then found this :

WARNING: Using '--repair' can further damage a filesystem instead of helping if it can't fix your particular issue.

Warning

Do not use --repair unless you are advised to do so by a developer or an experienced user, and then only after having accepted that no fsck successfully repair all types of filesystem corruption. E.g. some other software or hardware bugs can fatally damage a volume.

I figure this explains the popularity of BTRFS snapshot configurations. Luckily I had some backups :)

Filesystem snapshots won't help, if the filesystem itself corrupts. But I've been using BTRFS for 6 years now and haven't had a file system corruption, so mileage may obviously vary.

1 more...
1 more...

In my opinion, it depends. If a distro has BTRFS configured to automatically take a snapshot when upgrading (like OpenSuse Tumbleweed), then BTRFS.

If not, for a beginner, ext4 + timeshift to take snapshots of your system in case an upgrade goes wrong will be fine.

But you can also just use BTRFS without any fancy setup and not use its features, it will still be faster.

Btrfs has many advantages over ext4, but being faster isn't one of them.

Btrfs is slower than ext4, xfs, and f2fs in pretty much every metric. Noticeably slower app opening times is the reason I switched to F2FS for good.

Very interesting. I heard F2FS has no journalling, but afaik Fedora Atomic doesnt rely on it?

It might be worth looking into, as it beat many tests.

Edit: BTRFS has advantages that likely make it better for me.

It has compression and allows flexible partition sizes. The compression may explain the speed decreases.

Compression might be useful in some cases, but the bulk of my data is already compressed or not much compressible (think videos, images, compressed archives, game assets). So the trade off doesn't make much sense to me.

That is true, not for Flatpaks but for sure.

I wonder how much of a pain it would be not having BTRFS subvolumes on atomic Fedora. Will try F2FS in a VM.

Mint doesnโ€™t default to btrfs, but will use it if you so choose during install. And it integrates fantastically with Timeshift. Iโ€™ve set up daily and weekly snapshots and have peace of mind.

Honestly, unless there's some specific thing you're looking for just use your distro's default. If your distro doesn't have a default I'd probably default to ext4. The way most people use their computers there's really no noticeable advantage to any of the others, so there's no reason not to stick with old reliable. If you like to fiddle with things just to see what they can do or have unusual requirements then btrfs or zfs could be worth looking into, but if you have to ask it probably doesn't matter.

ext4 has been battle-tested for many years and is very stable. Doesn't have the same fragmentation and data loss issues certain other filesystems like NTFS have.

And it has repair tools that actually work and can make the filesystem usable again.

Until you pull the power at the wrong time. Its better to use Btrfs as others have said.

But pulling the power on a btrfs drive at the wrong time results in you not even being able to mount it as read only. No snapshotting can help you there.

Btrfs. Just format as one big partition (besides that little EFI partition of course) and don't worry about splitting up your disk into root and home. Put home on its own subvolume so that root can be rolled back separately from it. You can have automatic snapshots, low-overhead compression, deduplication, incremental backups. Any filesystem can fsck its own metadata, but btrfs is one of the few that also cares if your data is also intact.

It cares so much that when it goes wrong you can't even mount the partitions as readonly to try get your data back. It will stubbornly hold on to it and refuse any access at all. Boy I am so glad it didn't let me access a potentially corrupted byte somewhere!

I'm going to go against the flow here and say BTRFS. It's stable enough to the point of being a non consideration. You get full backups using a negligible amount of storage. Even using it on Windows is easier than using ext4 with the winbtrfs driver.

Be really careful with winbtrfs. It will corrupt your data and cause crashes. Also I feel bad for the dev as Windows users are very demanding

ext4 unless you need features offered by another FS.

Especially just getting into linux. Ext4 works well enough, when you learn enough to care about what it doesn't do well try something then

As someone who ran BTRFS for years, I'm personally switching back to EXT4. Yes, the compression and other features are nice, but when things go wrong and you have to do a recovery, it's not worth the complexity

I've found it much easier and way more reliable. If I pull out the power on ext4 it is likely to cause corruption and sometimes you can't fix it.

Btrfs is pretty much impossible to completely corrupt. I've had drives fail and I didn't lose anything

Lemme say this - While complex, I can vouch for recovering files on BTRFS. I can't vouch for recovering files on ext4, because I never had to.

Care to explain?

When booting into a live CD, mounting the various subpartitions is super annoying.

When your disk space hits full, things break uncontrollably because different programs don't have a consistent measurement of how much space is left.

When shrinking partitions, you can lose data if you shrink it too much. I'm not talking about forced overrides of any configs, I'm talking about things like KDE Partition Manager.

All of these things can be excused one way or another, but at the end of the day I just want a stable filesystem that doesn't lose my docs.

Ah yes, the free space calculation stuff is still a mess.

Overall, I've been daily-driving btrfs on some system and it's been treating me well. But yeah, they still got a long way to go.

btrfs every day of the week. The only scenario where I'd even consider something else is for databases that would suffer from CoW.

I've been running it on my home server since 2010. The same array has grown from 6x2TB to 6x4TB, one disk at a time as they've failed. Currently sitting at 2x18TB+1x4TB. No data loss even though many drives have failed.

If you don't actually have an opinion, just go with the default, ext4 really is a very good file system, but if you want to have an opinion and not go with the default, zfs is truly a fantastic file system.

Btrfs is cool because it supports snapshots, if you don't plan on using these, just go with ext4

I personally use ext4 everywhere but it is recommend to have BTRFS for your OS partition if you take snapshots often.

I would recommend using btrfs on SSDs and ext4 on hard drives.

Ok but please explain subvolumes, the information has failed to latch onto my brain

Subvolumes are somewhat like a partition, but they don't have fixed size. What they allow you to do is take snapshots. Snapshots are used to backup and restore the subvolume. They can be created instantly and don't take up any space until something is changed.

If I'm trying to install Linux with BTRFS, and it doesn't work, what are some of the most likely mistakes I've made?

What distro? Some installers will set everything up for you and others you have to setup subvolumes manually.

How about bcachefs. I'm waiting for it to support swapfiles, which seems to be in the TODO list, but so far doesn't work. If you use swap partition[s], or prefer not to have swap at all (I never fell for this, and besides swap is required for hibernation if that's a thing for you), then bcachefs is ready for you. It's already part of linux since 6.7, and on Artix, current linux is 6.8.9...

To me is the FS to use. I'm still on luks + ext4 (no LVM) and do entire home backups with plain rsync to an external device. I'd have to learn new stuff, since ext4 is really basic and easy to configure if in need, but I think bcachefs is worth it, and as mentioned, just waiting for it to support swapfiles, :)

Thank you for sharing this. I didn't know this FS yet. It seems new and have some nice goals. I always have a grudge against zfs/btrfs because of the resource usage/performance.

I'll keep an eye on this. I'd love to find some benchmarks.

Not yet, but bcachefs will be the future as the goals replicate most of OpenZFS while not having that licencing issue.

Ext4 for most home users, because it's simple and intuitive. Btrfs for anyone who has important data or wants to geek out about file systems. It's got some really cool features, but to actually use most of them you'll have to do some learning.

Btrfs. It was the default filesystem already when I used Fedora on both my personal and work laptops. Not a single problem. It is true I don't really make much use of most of its advanced features like snapshotting, CoW, etc., but I also didn't notice any difference whatsoever in stability compared to ext4 so I'm pretty happy with it as my new default.

Just go with whatever is the default of your distribution.

That said I've come to love the automatic snapshots OpenSUSE gives me with BTRFS. I think they use snapper to automate that. It does a snapshot before and after every packet install, update or removal. And it has some system to delete snapshots that aren't needed anymore but it always keeps enough to give you peace of mind, especially when you're experimenting.

I should look into keeping some snapshots of my ~ as well. And I should implement that especially for my family.

Snapper is life saver. I don't get it why nobody else use it by default, it's so great. It saved me many times. My coworker, who happens to be kind of non-linux user forced there by MS bullshit, uses Ubuntu and she's got to problems so many times, and all those would be couple clicks repair with Snapper...

For standard use, ext4. If you want to tinker and use fancy features, btrfs (or maybe zfs?).

I prefer using ext4 for stability. But if stability doesn't matter to you, you should use BTRFS.

Do what OpenSUSE Tumbleweed suggests, make a brtfs partition for your system and xfs/ext4 for home parition

Iโ€™ve been very happy with btrfs. Ext4 is basically rock solid, so you canโ€™t really go wrong with it, but btrfs has some nice features that ext4 doesnโ€™t have, like snapshots. And itโ€™s fast. I have an extremely cheap SSD thatโ€™s too slow to run anything with ext4, but actually usable with btrfs.

1 more...

Btrfs or XFS.

No idea why people are into EXT4. XFS is more performant by far.

XFS is good but dated

I agree thatโ€™s why most of my systems run btrfs. (Maybe soon bcachefs).

But XFS is in the same tier of โ€œdatednessโ€ as EXT4, just with more performance. Some apps like ScyllaDB actually require XFS performance crazily enough.

I have 3 drives in my pc. I have btrfs for root so I can do my snapshots, and the rest are on ext4. I've heard very good things about xfs, too, but I'm more familiar with btrfs and ext4

I've got a similar setup, but my non-root SSDs are F2FS.

How's F2FS been treating you? I've been wanting to get into that. Also, why not for your rootfs?

I haven't had any issues with it so far, but I like having snapshots incase I need to rollback an update or something so that's why BTRFS.

I absolutely love my set up. The non root drives are strictly read only since they're mostly to save my games and personal data. Data doesn't really move around much there, so ext4 is working perfectly for me.

I love zfs. Started using it for my data storage pool and now I have it on root as well. It has some rough edges but overall it is very stable and has amazing features.

ZFS is amazing but i wish it's support for flash was better. I'm not sure if ZFS will ever be able to fully utilize flash since ZFS was designed around spinning disks and the pitfalls they provide. Maybe at some point F2FS will catch on...

If you don't care any will do. ext4 is fine but check the "use LVM" button during install if you do go with ext4 since it will give you better partitioning options later.

I don't know what's the brand neW meta pick, but at least BTRFS over Ext4. BTRFS is just more stable and less corruptable than Ext4. Heck, fedora changed to it as default

To be fair, Fedora switching to something as default isn't a good sign that you should start using it. I do agree, though, btrfs has come far enough to be a default choice for most people.

Ext4 is, afaik, the fastest as it's the most understood

Btrfs has compression and you can make snapshots to roll back to if something goes wrong (not necessary on immutable distros or NixOS tho)

There are many other options, but I've only ever had a need for those two

btrfs snapshots are still useful on immutable distros to recover accidentally deleted data.

Ext4: It's the most common used and most mature filesystem we have. You can use any rescue system without pitfalls, in case your system fails. Some other filesystems have edge cases or a special setup is required. I am not saying they are bad or so, just saying if you have to ask this question to a public forum, then it's probably more safe to just use the default Ext4 system. It's battle tested for ages.

No love for bcachefs?

Uff, somehow missed your post. See mine. That's the FS I'm hoping to use next. I'm waiting for it to support swapfile, or alternatively read from official sources they won't ever support it, :). But yes, that's the one I'm looking forward to use.

XFS. It fills the same role as ext4 but it's less likely to lose your data and that's probably the most important part of a file system. Not that ext4 is bad or anything, but XFS is good. The only downside to XFS is you can't shrink the filesystem size.

agreed. EXT4 for system, XFS for everything else (mostly large VM image files). when XFS is properly configured for the underlying drive array geometry, its a nearly perfect streamlined FS.

I use f2fs on ssd's and ext4 on hdd's

I don't see the need for snapshots, I backup externally

SSDs* HDDs*

f2fs does one of the weirdest things with compression by default: the files are compressed but they still take up the same amount of blocks as the uncompressed files. This can get you the slight performance boost of compressed files, but doesnโ€™t actually save you space which is an odd choice. You can enable a flag in the kernel but it has other effects as well.

f2fs doesn't track file creation times. I thought I was ok with this, but, the longer I used it the more places it started to become an issue. Now I have all these notes that were created in 1970 and it just really takes away a powerful way of searching and organizing my notes.

I always go LVM + BTRFS these days. I simply love the versatility.

EDIT: DO NOT DO THIS LMAO, JUST USE BTRFS, I AM SO STUPID

I'm curious, why do you use LVM with BTRFS and not just use BTRFS built in subvolumes?

Because I'm stupid and like to run my partitions across multiple drives. ๐Ÿ˜…

Well since so many people recommend btrfs because "it have never lost any data for me". I want to suggest OP to never use btrfs ever. Because it has lost my data, at least three separate times, the most recent time a week ago. And it's not because of a power loss or anything, it just corrupted my files for absolutely no reason at all.

Stay away from btrfs at all costs.

"It's never lost data for me. Yet" is what they mean.

I totally agree, the only file system I've lost data with as a result of a file system corruption not caused by hardware errors or power problems in 35 years has been btrfs. FAT even served me better.

I've always used XFS on spinning drives and F2FS on SSDs. No issues, they're very solid

1000002341

Just a heads up if your SSD has issues or you lose power your data is gone

I like btrfs but only cause it got transparent compression. I don't need the extra disk space and it only helps a bit but I just think it's neat

If you're on spinning rust with a modern CPU, compression actually helps your read/write speeds quite a bit. It's faster for the CPU to compress/decompress then read/write less data because hard drives are so slow in comparison.

I used ext4 for yeeeeaaaarrssss but now I'm using LUKS+btrfs, stable, encrypted.

BTRFS for the OS partitions, ext4 for /home, tmpfs for /tmp. I rarely need to use snapshots, but I do use a rolling release. It's one of those things you don't need until you really fucking NEED it. Tumbleweed support is great - I can roll back a bad update in about as long as it takes to reboot.

This is exactly how and what Im using.

Home and other ext4 are backed up one form or another on by NAS.

Seeing that user Flatpaks are installed in the home folder, I see this as an interesting strategy. EXT4 still beats BTRFS in certain read/write benchmarks. My only problem being that you lose provisioning.

I don't see a lot of people talking about this here, but BTRFS subvolume provisioning is probably the best reason to use BTRFS - and BCacheFS - not just CoW or snapshotting.

The old way, of having a set beginning and end of a partition, is like caveman technology to me now. Subvolumes are here to stay and I am happy about that.

If I need to do a little distrohop now, even though I wouldn't (rpm-ostree rebase go brrrr), all I'd do is delete an recreate the "@" subvolume (or the root subvolume) without touching another partition or subvolume. All storage space is shared between subvolumes, basically, removing that boundary distinction between them, so I get to keep the files, permissions and meta data in my "@home" and my "@var" subvolumes, even though I get rid of the old "@" to replace it with a new one.

Therefore the idea of having storage that is reliant upon partitioning, ordering sectors one after another, having to defragment and keep strict separations between them is absolutely archaic to me. I'll gladly take a slight performance hit just for the convenience of avoiding all that.

FS is for nubz, do these instead:

Read

dd if=/dev/sda of=/dev/stdout

Write

dd if=/dev/stdin of=/dev/sda

I prefer ext4 on HDD and f2fs on flash devices.

Also taking f2fs for a spin.

As far as I have experienced (I didn't measure this): don't use that partition for container layers. It might just be my system, but f2fs has slowed my container engine down a bit.

I excactly doing this. I run coreOS with f2fs and it runs really fast. No issues so far.

Totally accepting it is my system being slow. It is a openwrt router after all.

3 more...

BTRFS is not more performant than EXT4.

I personally dont use any features of BTRFS manually though, as Fedora Kinoite does that for me.

Note that ext4 is damn old and thus also not as performant as more modern ones like btrfs or bcachefs

This is not true. BTRFS has more features but ext4 is very performant. They're both similar enough that I promise you that you wouldn't notice unless you had some very specific use-case that needed to be performance tuned.

What do you think "being old" has to do with performance?

What do you think "being old" has to do with performance?

Being tailored to NVMEs or SATA SSDs instead of to HDDs and similar. But I am not sure about which one would be better here.

Phoronix Benchmark so we have something to look at

BTRFS seems to be better at multithreading, being outperformed by F2FS (which I forgot to mention, it is used on Android and I would call that damn stable).

Actually, F2FS seems to be a really good replacement for EXT4, being top in most tests, while having no journaling, while BTRFS in fact worked pretty badly!

Right, your claim that ext4 "isn't performant because it's old" is crap.

2008 is not "damn old" in terms of filesystems.

It is 16 years ago, that's pretty old in terms of technology.

It's also an evolution of ex3 and ext2, and ext if you want to consider it's very short lifetime. In fact, the lead developer stated in 2008 that it was meant as a stop gap, as it's based on old technology with some new features, and that BTRFS was the future.

And yet here we are 16 years later with btrfs only just in a position to be usable (perhaps. My experience is that I'll never use it again)

And EXT had been developed for 16 years at that point (and XFS for 15). They didn't mature overnight, either.

Hopefully bcachefs matures more quickly, because we need a mainline replacement for ZFS.

Exactly especially when the default file system on windows is 30 years old.

Note that ext4 is damn old

Hmm ? Linux kernel is way older than ext4. And before ext4 there was ext3 and ext2. Linux users also have the choice of using XFS file system and for IT persons working for corporations XFS can have some advantages. Let's see, XFS was born in 1993.

more modern ones like btrfs or bcachefs

Years ago I thought that bcachecfs looked interesting but last thing I read about it this year was not very promising regarding reliability. Not sure whether it was in comments on Lemmy but here I found something from Linus himself : https://en.wikipedia.org/wiki/Bcachefs#Stability

Yeah, bcachefs is still very very young, and not ready for much of anything beyond tinkering. But I'm definitely excited to have a native filesystem that's designed with tiers in mind.

So i normally go with ext4, however windows can't really access ext4 drives so you'd need to find a file system that both support if you want to access the drive/partition from windows. My drive with all the games is ntfs for example which works in Windows and Linux. (At least for normal storage, idk if you can boot linux from it although i wouldn't see why not)

NTFS can't handle Linux file permissions. It is not suited as a system drive.

And supposedly it can give you problems if you use it to store your Steam games. I never cared to test that, though.

It works well enough for my game drive. At least i have yet to encounter any problem

I was always wondering if there could be a small Linux partition for additional information of NTFS partitions, like meta data stored as a separate file (or database). And off course it would need some virtualization layer like WINE does for the file path mapping. Then it would be possible to use NTFS as system drive and for games.

Obviously this would be problematic and performance wouldn't be great either (assuming), and it would complicate things for end user and developers too. But I was always thinking if this would be possible.

1 more...
1 more...