ZFS RAIDZ expansion tools

The oldest rule in ZFS was “you cannot add a drive to a RAIDZ vdev.” For fifteen years that meant expanding a home NAS was either a full backup-and-restore or buying a whole second vdev’s worth of disks at once. OpenZFS 2.3 shipped RAIDZ expansion, and the rule is gone. Add one drive to an existing RAIDZ1, wait for the reflow, and the vdev is wider without a rebuild.

The seven best apps for ZFS RAIDZ expansion below cover the expansion itself, the monitoring you want during a 30-hour reflow on a home 8-bay NAS, and the snapshot and replication tools that keep a running pool safe while you grow it. Everything runs on Linux (TrueNAS SCALE, Debian, Ubuntu Server, Proxmox); most also work on FreeBSD.

What to look for in a RAIDZ expansion toolkit

Quick comparison table

App Best for Platforms Free plan Starting price/mo Rating
OpenZFS 2.3 The runtime doing the expansion Linux, FreeBSD, illumos Fully free (CDDL) Free Essential
TrueNAS SCALE 24.10+ Web UI-driven expansion Bare-metal, VM Fully free Free (Enterprise support extra) Recommended
Cockpit ZFS Manager Pool management inside Cockpit Linux Fully free (OSS) Free Lightweight
Sanoid Automated snapshot policies Linux Fully free (OSS) Free Community favourite
zrepl Snapshot replication with encryption Linux, FreeBSD Fully free (OSS) Free Solid
Houston UI Rocky Linux web console for ZFS Rocky Linux Fully free (OSS) Free New but promising
zfs-auto-snapshot Simple hourly/daily snapshots Linux Fully free (OSS) Free Battle-tested

The apps

1. OpenZFS 2.3 – the runtime that makes expansion possible

OpenZFS 2.3 is where zpool attach for RAIDZ vdevs lives. Command is one line: zpool attach tank raidz1-0 /dev/sdX. The pool stays online during the reflow, reads and writes continue, and when it finishes the vdev has one more disk of capacity. Every other tool below assumes this runtime.

Where it falls short: New writes after the expansion use the wider stripe. Data written before the expansion keeps the old stripe width until you rewrite the files. Also, RAIDZ expansion is one attach at a time; a second attach cannot start until the first finishes.

Pricing:

Platforms: Linux, FreeBSD, illumos.

Download: OpenZFS releases on GitHub

Bottom line: Install OpenZFS 2.3 first. Everything else is scaffolding.

2. TrueNAS SCALE 24.10 – best for web UI-driven expansion

TrueNAS SCALE 24.10 and newer ship OpenZFS 2.3 with RAIDZ expansion exposed in the Storage tab. Add the drive, click Expand VDEV, confirm, and watch the reflow progress bar tick over hours or days depending on pool size. Alerts fire when the reflow finishes, plus scrubs, SMART errors, and pool health.

Where it falls short: Cannot expand a mirror-of-mirror vdev the same way (mirrors have always been simple to grow, so no loss). Cannot combine expansion with vdev removal in one operation.

Pricing:

Platforms: Bare-metal x86, VM.

Download: TrueNAS.com

Bottom line: If ZFS is your storage layer, TrueNAS SCALE 24.10+ is the shortest path from “extra disk in a shelf” to “expanded RAIDZ1.”

3. Cockpit ZFS Manager – best for pool management inside Cockpit

Cockpit ZFS Manager adds a ZFS panel to the Cockpit web console shipped with Fedora Server, Rocky Linux, and Debian. Create datasets, browse snapshots, take manual snapshots, and check pool status without a terminal. Expansion runs at the shell for now, but visibility is Cockpit-native.

Where it falls short: Expansion UI is minimal compared to TrueNAS. Some features expect Cockpit already installed on the box.

Pricing:

Platforms: Linux (Cockpit).

Download: optiplex-networks GitHub

Bottom line: Cockpit ZFS Manager is the right add-on for a Cockpit-managed Linux server that runs ZFS on the side.

4. Sanoid – best for automated snapshot policies

Sanoid applies a policy file to your datasets and takes hourly, daily, monthly, and yearly snapshots on schedule. Companion tool syncoid handles replication. When you are about to run a RAIDZ expansion, Sanoid’s pre-expansion daily snapshot is the rollback point you will thank yourself for.

Where it falls short: Configuration is a text file; no web UI. Debugging replication over slow links requires reading syncoid logs.

Pricing:

Platforms: Linux, FreeBSD.

Download: jimsalterjrs GitHub

Bottom line: Sanoid is the “automatic snapshots that just work” pick every ZFS user should have installed by day three.

5. zrepl – best for encrypted replication

zrepl handles snapshot replication across hosts with native encryption keys, pull or push mode, and holdback rules so a failing target does not prune your source pool. It scales past a home lab if you ever offsite the pool to a colocated box.

Where it falls short: Config file (hcl) has a learning curve. Sanoid does simpler cases with less setup.

Pricing:

Platforms: Linux, FreeBSD.

Download: zrepl.github.io

Bottom line: Pick zrepl when replication is going somewhere you do not fully trust and encryption at rest is not optional.

6. Houston UI – best for Rocky Linux web console

Houston UI from 45Drives is a Cockpit-based console for ZFS on Rocky Linux. It exposes pool creation, dataset management, sharing, and now RAIDZ expansion in a UI similar to TrueNAS SCALE. Preferred by users who want a rolling-release Linux base under a familiar ZFS interface.

Where it falls short: Community edition support is best-effort. Enterprise support requires 45Drives hardware.

Pricing:

Platforms: Rocky Linux, AlmaLinux.

Download: 45Drives Houston

Bottom line: Houston UI is a strong TrueNAS-alternative for Rocky Linux fans who still want a friendly ZFS panel.

7. zfs-auto-snapshot – best for simple hourly snapshots

zfs-auto-snapshot is the original set-and-forget snapshot cron. It installs a handful of cron jobs and starts taking frequent, hourly, daily, weekly, and monthly snapshots with retention. Ideal when Sanoid feels like overkill.

Where it falls short: No replication built in. Retention is per-schedule, not per-dataset without extra config.

Pricing:

Platforms: Linux (Debian and Ubuntu package it), FreeBSD (via ports).

Download: zfsonlinux GitHub

Bottom line: zfs-auto-snapshot is the “one apt install and forget it” snapshot layer for pools that do not need Sanoid’s flexibility.

How to pick the right one

Do not stack Sanoid and zfs-auto-snapshot on the same dataset. They both take snapshots on the same names and fight over retention.

FAQ

How long does a RAIDZ expansion take on a home NAS?

For an 8 TB drive added to a healthy 4-wide RAIDZ1, expect 12 to 30 hours depending on how full the pool is. Reads and writes continue during the reflow; performance drops but the pool stays online.

Do I still need to rewrite existing files after RAIDZ expansion?

Kind of. Files written before the expansion keep the old stripe width, so the added disk contributes less to reads on those files until you rewrite them. A zfs send | zfs recv on the dataset (or a Sanoid syncoid pass) rebalances neatly. On a big pool a scheduled overnight rewrite is a good idea.

Is RAIDZ expansion safe with a scrub running?

The expansion will not start while a scrub is in flight; ZFS refuses cleanly. Wait for the scrub, then start the expansion. Take a snapshot first.

What is the difference between RAIDZ expansion and adding a vdev?

Expansion widens an existing vdev by one disk at a time. Adding a vdev creates a separate RAIDZ group inside the same pool. Both grow capacity; expansion keeps the parity ratio you already had, while adding a vdev multiplies fault tolerance.

Can I expand a RAIDZ2 or RAIDZ3?

Yes. zpool attach for RAIDZ works for RAIDZ1, RAIDZ2, and RAIDZ3 in OpenZFS 2.3 and newer. The command is the same; the reflow just moves parity blocks appropriate to the RAIDZ level.