UK’s trusted IT infrastructure partner since 2003
Servnet
ConfiguratorGet in Touch
RAIDZ1 vs RAIDZ2 vs RAIDZ3: choosing ZFS parity — analysisRAIDZ1 vs RAIDZ2 vs RAIDZ3: choosing ZFS parity — analysis — reach
Storage · RAID

RAIDZ1 vs RAIDZ2 vs RAIDZ3: choosing ZFS parity

Servnet Storage Team · Storage & Data Protection9 min read

ZFS offers single, double and triple parity per vdev — RAIDZ1, RAIDZ2 and RAIDZ3. The right one depends on vdev width and drive size. Size any of them, with real ZFS slop and padding modelled, in the ZFS calculator.

RAIDZ1 vs RAIDZ2 vs RAIDZ3 per vdev
RAIDZ1RAIDZ2RAIDZ3Parity per vdev123Failures survived123Usable per vdev(w−1)×c(w−2)×c(w−3)×cResilver safetyNone left1 in reserve2 in reserveUse forNarrow vdevsWide (default)Very wide / huge

How they differ

RAIDZ1 keeps one parity per vdev (survives one failure), RAIDZ2 keeps two (survives two), and RAIDZ3 keeps three (survives three). Usable capacity per vdev is (drives − parity) × drive size, before ZFS overheads. More parity means more resilience and less usable space.

Crucially, fault tolerance is per vdev: a pool of several vdevs loses everything if any one vdev exceeds its parity. Adding vdevs adds IOPS and capacity, not extra protection for an individual vdev.

The resilver factor

Like hardware RAID, single-parity RAIDZ1 has no redundancy left while a failed drive resilvers — a second fault or a bad block on another disk during that window loses the vdev. On large drives, resilvers take many hours or days, so RAIDZ2 (which keeps a parity in reserve) is the recommended default for wide vdevs.

RAIDZ3 keeps two parities in reserve during a single-drive resilver, which matters on very wide vdevs of huge drives where the resilver window stretches into days.

Which RAIDZ level?
Vdev width & drive size?
narrow / small
RAIDZ1
wide / large
RAIDZ2
very wide / huge
RAIDZ3

ZFS-specific overheads

ZFS reserves about 3.2% slop and rounds every allocation up to a multiple of (parity+1) sectors. At the default 128 KiB recordsize that padding is usually negligible; at small volblocksize (e.g. 8 KiB zvols for VMs) it can waste a large fraction of capacity — the calculator shows this when you change recordsize.

Performance note that trips many people up: a RAIDZ vdev delivers roughly the random IOPS of a single drive, regardless of width. Pool IOPS scale with the number of vdevs, so for IOPS-heavy work use more (narrower) vdevs or mirrors.

Key takeaways
  • RAIDZ1/2/3 survive one/two/three failures per vdev — fault tolerance is per vdev, not per pool.
  • RAIDZ2 is the default for wide vdevs of large drives; RAIDZ1 only for small, narrow vdevs.
  • A RAIDZ vdev has the random IOPS of one drive — scale IOPS with more vdevs, not wider ones.
  • Small recordsize/volblocksize on RAIDZ wastes capacity to (parity+1) padding.
Frequently asked

FAQs — RAIDZ1 vs RAIDZ2 vs RAIDZ3

RAIDZ levels

Which RAIDZ level should I use?

RAIDZ2 for most pools, especially wide vdevs of large drives — it keeps a parity in reserve during a resilver. RAIDZ1 only for small narrow vdevs of modest drives. RAIDZ3 for very wide vdevs of huge drives with long resilver windows.

Does a wider RAIDZ vdev give more IOPS?

No. A RAIDZ vdev delivers about one drive's random IOPS no matter how wide it is. To increase IOPS, add more vdevs (narrower) or use mirror vdevs. Sequential throughput does scale with data disks.

Why is my RAIDZ pool smaller than expected?

ZFS reserves ~3.2% slop and adds (parity+1)-sector padding, which is significant at small recordsize/volblocksize. Our ZFS calculator models both so the figure matches what the pool actually reports.

Related

Continue reading

More in Storage

Got a question this article didn't answer?

One conversation with an engineer who's done this before. No sales script.

Talk to Servnet →