One for those running #ZFS on #Linux systems. I realise that you can't have hibernate aka suspend to disk on a swap in the encrypted zpool but if you don't use hibernation then is it OK to use swap using the likes of the command example below to set it up in the encrypted pool?
I should point out that I'm thinking of switching from my current Void Linux luks lvm setup to Void with fully encrypted zpool and zfsbootmenu on my ThinkPad P14s AMD Gen 1which has 16Gb ram that I may upgrade to 40Gb. It also has a 1Tb nvme.
You might try adding a cache drive instead. It can help lessen the memory usage zfs needs to maintain speed. My server is spinning rust with an ssd drive attached to the pool as cache.
Command would be “zpool add pool_name cache /dev/sdX” where pool_name is the pool you want the cache on, and /dev/sdX is the empty drive you want to use with it (or partition). Make sure to encrypt this drive before setting this up, my knowledge is zfs doesn’t do that for you.
If hibernate isn't a concern, I'd go with zram. Instead of swapping to a partition/file, zram compresses pages and stores them in RAM. This makes swapping quite fast.
I've not found out how to enable it on Void, but the following app was mentioned on a Void forum.
Both the laptop and the stock NVMe drive supports Opal2. Not sure about your second drive but if it also supports Opal2, then you should just use that instead of ZFS encryption, since Opal encryption is transparent to the OS, so you won't have any issues with hibernation.
I don't have the source right now, but I had the same idea not long ago, and the tl;dr is swap on a zvol is a very bad idea. If your system ever runs low on memory and actually needs to do heavy swapping, you're setting yourself up for a catastrophe.