Ext4 vs btrfs: Any Real-World Advice?

Hi all,

I’m setting up a new IPFire system and I’d like to ask for your input on a small but important detail: the filesystem.

The default is ext4, which is proven and stable, but I’m wondering: is there any benefit in switching to btrfs?
I know the IPFire wiki still marks it as experimental, but maybe some of you have tried it in production.

Thanks for reading and for any feedback!

Hi @amconsul ,
I had never installed IpFire with btrfs yet, but I wish to share my opinion on your interesting question.

You are not sharing the intended usecase of your “new IpFire system”: if it’s an experimental install to evaluate options, modules, settings, or if it’s going to be a production unit, your or another person.

For the second case, my personal “real-world advice” is install on ext4.

While not sharing anything more (ish) with the past, IpFire still is a IpCop fork, and has decades of “built on ext* filesystem”; plus, dev team not even define “beta” btrfs at current date.
Also, due to the necessity to wipe storage out to “step back” from btrfs to ext4, this necessitate to create a downtime schedule to resolve any possible issue that the filesystem could deliver.

This do not mean that btrfs is too green to be used, far from it; still several server distros do not switched default, some workstation did.
However, as production system without any “production ready” statement from the development team, I’d avoid the use, also because some cogs and wheels to take advantage of the more advanced features of btrfs are not in place in IpFire.

If this system is a toy one (no disrespect intende) for testing, even long term, any setting, then go for it, but remember to be diligent in backup routines and export, for a quicker restore if you decide to rollback to default filesystem.

I hope that my opinion would be considered as trying to help, not to derail your ideas :slight_smile:

2 Likes

Hello Antony,

I am installing all of my IPFire systems on btrfs these days. It is currently marked as experimental in IPFire because we have not been able to ship all the features that we wanted around it.

From a performance point of view, it actually does not matter whether you are using ext4 or btrfs (or even XFS as this is supported, too). The reason why we have introduced btrfs is to take advantage of advanced features.

For example, we have changes currently in testing to be able to take a snapshot of a live IPFire system in order to return to it whenever needed. In development this is sometimes very helpful if we want to investigate if something actually is a regression and that way, we can simply jump back to an earlier version, test, and then return back to the latest version. I find this very cool.

If you have a compromised system, having some earlier snapshots that are hopefully not compromised, will allow some further investigation.

Therefore I strongly recommend to use btrfs and you will soon be able to take advantage of the new snapshot features as soon as they become available.

It has been the default filesystem for SuSE Linux Enterprise server for a decade now and also has become the default filesystem for most modern Linux distributions. There is no reason to not use btrfs.

We all know that IPFire was based on IPCop but this is pretty much the same argument now as saying that Windows 11 is based on MS-DOS. IPFire and IPCop are decades apart from each other and I would not draw any comparisons regarding the actual code any more. We share some history, but barely any code.

10 Likes

You meant Windows NT, not really MS-DOS… I suppose.

I haven’t tried btrfs on IPFire but I do use it on my daily driver and it’s been solid. I also use rsync to backup to a NAS with nfs that is on FreeBSD with OpenZFS so, in the process of evaluating Borg, there’s that.

So, since I like experimenting, I’ll re-do my IPFire deployment with btrfs (is it really a bEtterfs?) and see what happens… 8 )

1 Like

I have had a number of instances on openSUSE Tumbleweed where 3 x86_64 systems with BTRFS have ended up read-only. Last one was 2 days ago. I tried booting from snapshots with the same result.. I booted from a Tumbleweed USB stick and ran “btrfsk /dev/sda4” – Also “grub2-mkconfig -o /boot/grub2/grub.cfg” as it would only boot selecting “Boot from Hard Drive” menu of the USB stick.
Previously I did a fresh install.