Moving from btrfs to zfs, any 'challenges'?

I have four drives in a btrfs raid1 setup, and they are nearly full.
Due to this (and my inability to leave well enough alone), I’m thinking about converting them to zfs raidz1 (effectively raid5) to regain some space lost to what is effectively raid10 on btrfs.
My first step will be converting the filesystem to raid0 to eliminate duplication, then i will remove 1, then a second drive. Create a zfs stripe on those drives, copy everything over, then convert all the drives to raidz1. That should give me another ~16TB.
I have backups of the important stuff.

  • Any gotchas to be aware of?
  • Is installing from endeavouros/zfs-dkms the suggested way to install zfs?
  • Do I need to worry about kernel updates (or lack thereof) breaking zfs?

The drives in question:

NAME        MODEL                   SIZE
sda         WDC WD161KRYZ-01AGBB0  14.6T
sdb         WDC WD161KRYZ-01AGBB0  14.6T
sdc         WDC WD161KRYZ-01AGBB0  14.6T
sdd         WDC WD161KRYZ-01AGBB0  14.6T

My system:

OS: EndeavourOS Linux x86_64 
Kernel: 6.6.28-1-lts 
Uptime: 2 days, 5 hours, 29 mins 
Packages: 1427 (pacman), 59 (flatpak) 
Shell: bash 5.2.26 
Resolution: 3840x2160, 2560x2880, 3840x2160 
DE: GNOME 46.1 
WM: Mutter 
WM Theme: Adwaita 
Theme: Adwaita [GTK2/3] 
Icons: Qogir [GTK2/3] 
Terminal: kitty 
CPU: 13th Gen Intel i9-13900K (32) @ 5.500GHz 
GPU: NVIDIA RTX A4500 
GPU: Intel DG2 [Arc A380] 
Memory: 22220MiB / 128507MiB 

Is it currently possible to convert a stripe to raidz1?

There is no right answer, but I would recommend using the archzfs repo along with the associated repo for the kernels.

This will automatically hold back kernel updates until the zfs modules are ready and make upgrading much more seamless.

If you zfs-dkms, yes.

Lastly, keep in mind that several settings on zfs can’t be changed after pool creation so make sure that you look into the best way to set those for your use case before starting.

*) When you create the zfs pool make sure that you set ashift=12. You can not change that value after pool creation. Search for “ashift” on these webpages :
https://wiki.debian.org/ZFS
https://wiki.archlinux.org/title/ZFS

*) If you use zfs-dkms you need to take care about the kernel version. e.g. currently zfs does not support kernel series 6.8. If you use the archzfs repo, like @dalto suggested, the repo is doing that for you if you install their kernel and zfs modules. I personally use zfs-dkms along with the lts kernel series. That always works.

Thanks for the advice @dalto and @mbod .

I don’t think I’ll be able to pull this off in place and wind up with a raidz1.

And because I have 4 NVMe drives, I’m maxed out at 4x SATA drives. :roll_eyes:

In hindsight, I should have gone with a Xeon or Threadripper. Live and learn.

Thanks again!