As far as I understood, to get good system snapshots between updates on traditional Fedora, BTRFS is really helpful.
This is basically what OpenSUSE Tumbleweed does and it works well.
But rpm-ostree is way better, in that it allows to reset and keep the versioning across updates etc.
So with this quite old benchmark between the filesystems it seemed that BTRFS was pretty slow.
Meanwhile, this article reported better performance on BTRFS.
To my understanding, with rpm-ostree I am not really concerned about many fancy features for snapshotting. But maybe copy-on-write performance, are rpm-ostree updates faster on BTRFS? Or compression, used for example in Flatpaks?
Also note that many BTRFS tools like balance
or defragment
dont even work on the immutable partitions.
I wonder how this affects long time (like 10+ years) usage.
I may experiment with 2 VMs, one with F2FS and one with BTRFS, and test performance.
Also worth keeping an eye on optimizing SSD performance parameters
Update
Using an NVME SSD, zstd compression on BTRFS improves the lifespan by reducing the writes to it.
Anyways, I just started to experiment with this in a VM.
I never did manual partitioning and always used Fedoras default BTRFS. But the LVM setup is also quite guided.
- under disk setup, chose second “custom” option (not Blivet GUI)
- created an LVM, default name “fedora”
- first partition
/boot
1GBext4
(usingf2fs
is not allowed here) - second partition
/boot/efi
600MB, defaultefi
format - third partition
swap
6GB inswap
format (I just assume this is wanted, even though a swapfile is also supposed to be possible?) - 4th partition
/
without size (max) inf2fs
I didnt use encryption yet, but with this setup the Fedora IOT install (using Anaconca, cough coreOS is to complicated for me) went well and works.
My first rpm-ostree update
finished well, after a reboot I can boot into the next version and now have 2 versions.
So it seems this is a very fine solution.
Questions
BTRFS creates tons of subvolumes, I didnt do anything manually.
/usr/libexec/ksysguard/ksgrd_network_helper
/var/home
/var
/sysroot/ostree/deploy/fedora/var
/usr
/etc
/
/sysroot
The LVM created these subgroups:
/var
/sysroot/ostree/deploy/fedora-iot/var
/usr
/etc
/
/sysroot
/boot
so /boot
automatically got integrated in the LVM (on BTRFS this is on a separate partition), /boot/efi
is separate, and [SWAP]
is automatically set to zram
. Very interesting…