Thoughts on going ZFS with 6.12 RCs - eviltoast

So just to get some content going on Lemmy, and get contributing here, thought I’d write a bit about going to 6.12 RC with a ZFS pool and what I’ve done on my server to try and make use of that newfound ability…

Original configuration (pre 6.12):

  • 17 unRAID array drives in XFS format
  • dual parity
  • 2 NVMEs (cache and appdata are separate) in XFS format
  • XFS formatted
  • Backed-up daily with rsync to a second unRAID server on my LAN.

New configuration 6.12 (currently RC8)

  • 13 unRAID array drives in XFS format
  • dual parity
  • 4 x 8TB drives in a ZFS raidz1 pool
  • 2 NVMEs (cache and appdata are separate) in ZFS format with compression enabled.
  • Backed-up hourly with ZFS snapshots

Why the change?

  • Going to ZFS for my “important data”, which is to say, personal documents, family photos (yay babies!)
  • Enables snapshots to help aid in the event of a “soft” data error (file being accidentally deleted, overwritten, or maliciously damaged by software, etc, bitrot, etc). Also enables extremely quick replications to my backup server.
  • Faster access to those personal documents with data striped across 4 drives.
  • Keeping main array as unRAID array drives for “easily replaceable data” (mostly media files, linux ISOs, etc.) so I can expand it easily by chucking another drive in my server or up-sizing an older drive easily.

Enhanced backups through ZFS:

  • ZFS has some rather remarkable options for data backups that are enabled by the snapshot capability of the filesystem. Rather than sending individual files across the network and having to laboriously calculate the differences between each file on the dataset (part of the ZFS volume), you can essentially just send the “difference” between snapshots which can stream between servers in a very short time (usually only a couple of seconds in my case).

This means I have my system continually backed-up on an hourly basis, with saved snapshots every hour, and every day/month for half a year.

Plugins in use

The current unraid RC8 supports ZFS pools, however GUI support for managing ZFS pools is lacking. I’m using the following plugins and tools to accomplish everything (available through App installs):

  • ZFS Master for Unraid, makes most ZFS operations a GUI interaction rather than terminal. I’ve heard rumblings that unRAID may acquire/in-house this plugin to add the functionality to the GUI. It would be worthwhile.
  • Sanoid, automatically handles ZFS snapshots, as well as rotating snapshots based on the number of required snapshots per month and/or day. Enables sending ZFS snapshots to a backup server and rotating those snapshots as well to ensure continuity of data. Requires a bit of config file editing by hand to make it work, and setting-up a cron script but nothing difficult (it’s well-documented) and was about 5 min to set up successfully.

Backup thoughts

RAID (of any type) is not backup. That said, I have part of the “3-2-1” backup strategy automatically enabled here, with my main server backing up the “important stuff” to a separate backup server also running unRAID. That covers having 2 copies of my data on separate devices, however it does not cover keeping one copy off-site as well.

I do have a removable drive in my backup system (currently in XFS format) that’s mounted through unassigned devices that I will insert and sync my ZFS pools to twice a year, then go and put in a safe deposit box off-site to ensure it’s reliably protected. I currently use XFS for this as it’s easy to just plug into any system and get at my files. ZFS is still not as well supported on Windows and Mac systems, but I may go there in the future.