I’ve been thinking of switching from btrfs to zfs but it seems like it’s quite a bit of work. Does anyone have any experience with this?
I used ZFS with Arch for a while, the volume manager was what I’d call the largest benefit; in my opinion nothing else comes close to being as useful and well integrated.
I stopped because ZFS incompatibility with recent kernels (which I needed for GPU reasons) made me have to rescue my system more often than was ideal.
Some other minor downsides:
- boot can take ages due to ZFS using udev-settle.
- deduplication status is… Complicated.
- you’re kind-of stuck with the performance of your slowest vdev; L2ARC & a metadata device don’t really compensate well for a zpool that is predominantly a raid-z2 of spinning rust.
I use it everywhere, raidz2 on HDDs for a NAS also with mirrored NVMe root pool, and on a couple of laptops. zfsbootmenu is awesome, so I can boot into any snapshot, and a pacman hook that creates a snapshot whenever I upgrade packages. Even if it’s overkill for some of my use, I use it anyway and trust it much more than anything else - it has a proven track record. Backups to rsync.net are a breeze with borg/borgmatic.
I am using ZFS on root on Arch using 2x 2TB SSDs striped . I mainly did it because my server runs on ZFS as well and thought snapshotting and backup would be easy, but instead went with Borg backup anyway.
Installation wasn’t very difficult, but the ZFS kernel modules can’t keep up with kernel updates (even with LTS kernel) on Arch, so I constantly need to do partial upgrades and it’s been annoying. As much as I love ZFS I’m not sure I’d do it again on Arch. If your distro is not using bleeding edge kernels then I don’t foresee any issues really.
Is there an easy way to install distros on a ZFS root that are not supported by debootstrap?
LTS is supported!
It is, but with kernel-specific packages you have the kernel linux(-lts) and the kernel module zfs-linux(-lts) and they aren’t in sync. Even with the LTS kernel I run into the issue that I can’t update the kernel since there’s a dependency issue between ZFS and Linux.
I have both LTS and zen and I’m currently on 6.6.36 and 6.9.7 respectively.
I did for a long time until it was pulled from Ubuntu and Mint’s respective installers. Loved it when I had it.
why do you want to make the switch?
I like the idea of deduplication and checksumming to prevent bit rot. It also sounds like backups via snapshots is extremely powerful, but maybe that’s something btrfs can do too.
Ultimately though it would be about learning. That’s what’s drawn me to Linux in the first place.
i used to use zfs for backups via snapshots. but I find using rsync and hard links is much more convenient. i can use standard tools to look through backups and track which files changed if needed.
Just a note, unless you have a very specific use-case you don’t want to do deduplication.
See:
afaik btrfs is can do all the things you listed.
im using open suse with btrfs and can only recommend it.
the setup was easy ( asside from non btrfs related issues with the finicky installation media)
and open suse automaticly sets up subvolumes and snapshots before and after each update
to take advantage of btrfsHowever, please don’t use btrfs for anything else than mirrors. RAID setups are unstable.
Opensuse Tunbleweed has some great btrfs defaults. And snapper makes rollbacks a breeze.
Yes, it can.
Yes, and it saved my ass a few times. Every computer I own now and in the future will have at least mirrored or raidz disks with zfs. On all desktops, laptops, servers and nas.
Even upgrading from spinning rust to ssd was easy replacing the disks one by one and resilvering.
The (k)ubuntu installation made it very easy to have an encrypted zfs rootfs but they may have removed it on newer installation iso’s, I’m not sure…
The Kubuntu installer offers btrfs instead now (not sure about Ubuntu).
I don’t even remember i use it, on Gentoo, RAIDZ1.
I guess I meant it’s a lot of work to set up initially. Especially if you don’t have experience.
I think Ubuntu offers ZFS in the installer now, so not really, just go to the advanced options.
I’m using ZFS in RAID1 for my /home directory on Gentoo, but not for the root filesystem. Setting it up actually isn’t too bad. It should be straightforward to install and only a couple commands to create and mount the zpool.
When I upgrade the system, sometimes it does not autoimport the zpool on next boot, and I need to do a
# zpool import -f pool_name && reboot
, but otherwise there have been no issues.General ZFS config info:
https://wiki.gentoo.org/wiki/ZFS#Zpools
https://wiki.archlinux.org/title/ZFS#Configuration
Root filesystem info:
https://wiki.gentoo.org/wiki/ZFS#ZFS_root
https://wiki.archlinux.org/title/Install_Arch_Linux_on_ZFS#Installation
I try to avoid zfs because I don’t wanna use a external kernel module, I already have 1 external kernel module (nvidia) already.