Home · Volume 1 · Chapter 03

📖 Chapter 03 — Drives, VDEVs, Pools

The physical layer. Why six 12TB drives give you ~44TB usable and not 72TB, and why you can't just add a 7th drive later.

v0.1 · draft Vol 1 · Ch 03
~15 min

Learning Objectives

Introduction

This is the chapter that demystifies ZFS storage math. If you've ever wondered "why does the filesystem say 44TB free when I bought 72TB of drives?" — this is the chapter that answers it. And if you've ever heard someone say "ZFS is different from RAID" and wondered what they meant — this is also that chapter.

By the end, you'll be able to look at anyone's NAS specification and immediately know: how much space is actually usable, how many drives can fail before data is lost, and what the upgrade path looks like five years from now.

The hierarchy, one more time

From Chapter 02, the stack. We're now going to dig into Layers 2, 3, and 4 in detail.

┌──────────────────┐ │ 4. Pool │ ← the storage container ├──────────────────┤ │ 3. VDEVs │ ← groups of drives ├──────────────────┤ │ 2. Hard drives │ ← the actual bytes └──────────────────┘

The pool is the abstraction you create datasets inside. The vdevs are the building blocks the pool is made of. The drives are the physical hardware at the bottom.

The reason this layer exists separately from "just use RAID" is that ZFS's vdevs are more powerful than traditional RAID — and the rules are stricter. The next three sections cover each layer in order.

Hard drives

Drives do exactly two things: store bytes, and report when they're about to die (via SMART — Self-Monitoring, Analysis, and Reporting Technology).

For TK: 6 × 12TB hard drives. They sit in the case, connected to the motherboard's SATA ports (or to an HBA — Host Bus Adapter — card, if there aren't enough SATA ports on the motherboard).

That's the entire job of Layer 2. Anything more — any abstraction, any grouping, any redundancy — happens above this layer.

What a drive does NOT do

A drive does not:

Common mistake

Treating drives as the only thing that matters. Drives are the most failure-prone component, yes — but they're not the only thing that can fail. Power supplies, cables, controllers, and the motherboard itself all fail too. That's why the layer above the drive exists.

VDEVs (Virtual Devices)

A vdev is a group of drives that ZFS treats as one logical device. ZFS never sees individual drives — it only sees vdevs.

The most important fact about vdevs: redundancy happens at the vdev level, not the pool level. A vdev with RAIDZ2 redundancy can survive the loss of 2 of its drives. A pool made of multiple vdevs does NOT gain additional redundancy from being a pool — it just has more storage.

RAIDZ2, explained

RAIDZ2 is the vdev type for TK's build. The "Z" comes from ZFS (it was the first to add this variation), and the "2" means: any 2 drives in the vdev can fail without losing data.

For 6 × 12TB drives in a single RAIDZ2 vdev:

6 drives × 12 TB each = 72 TB raw ── 2 drives worth = parity = 24 TB reserved for redundancy ── 4 drives worth = storage = 48 TB ── After ZFS formatting overhead ≈ 44 TB usable

That ~44TB is what you'll see in the web UI as the pool's capacity. The 28TB difference between 72TB and 44TB is not "lost" — it's the price of being able to lose any 2 drives and not lose your family's photos.

RAIDZ1 vs RAIDZ2 vs RAIDZ3

TypeDrives that can failUsable space (6×12TB)Recommendation
RAIDZ1 1 ~58 TB Not for irreplaceable data. Single parity means long rebuilds = high second-failure risk.
RAIDZ2 2 ~44 TB The right answer for a home NAS with irreplaceable data. The rebuild window is forgiving.
RAIDZ3 3 ~30 TB For very large vdevs (12+ drives) or extremely paranoid use cases. Overkill for 6 drives.
TK Tip

Why RAIDZ2 over RAIDZ1 for 6 drives? Because when a drive fails in a 6-drive RAIDZ1, the rebuild puts enormous stress on the remaining 5 drives. If you're unlucky, a second drive fails during the rebuild (this is the most common way RAIDZ1 pools actually die). With 6-drive RAIDZ2, you can lose one drive, breathe for weeks, and replace it on your own schedule.

Mirrors

A mirror vdev is a different beast: every drive is a complete copy. With 6 drives, you could do 3 mirrors of 2 drives each, giving you ~12TB of usable space (6TB usable per mirror, 3 mirrors).

Mirrors have great read performance (data can be read from any drive in parallel) and the fastest rebuild of any RAID type. They're commonly used in enterprise environments. For a 6-drive home NAS, you give up too much usable space to make them worthwhile. Stick with RAIDZ2.

The rule that matters: you can't add a single drive to a vdev

This is the gotcha that catches every first-time ZFS builder.

You have a 6-drive RAIDZ2 vdev. Next year, you buy a 7th drive and ask: "Can I just add it to the pool?" No.

You cannot add a single drive to an existing RAIDZ vdev to expand it. The parity math doesn't work — the new drive wouldn't have a parity partner. To expand a vdev, you have to:

There is one exception: ZFS RAIDZ expansion (added in OpenZFS 2.2) does allow you to add drives to an existing RAIDZ vdev in some cases. As of 2026 it's supported on some platforms but not all, and the TrueNAS team treats it as advanced territory. The conservative, time-tested path is: add a new vdev when you need more space.

Common mistake

Planning a "build it small now, expand later" strategy that assumes you can grow a vdev one drive at a time. It doesn't work that way. If you think you'll need more than ~44TB usable in 3 years, plan for it now: either bigger drives, or a second vdev, or both.

The pool

The pool is the layer that ties everything together. It collects one or more vdevs and presents them as a single filesystem. From the dataset's perspective (Layer 5), the pool is just one big bucket of storage. It doesn't care how many vdevs make up that bucket.

One vdev or many?

For TK's build, one pool, one vdev, six drives. This is the simplest setup and the right one for a home NAS.

Why not multiple vdevs? Three reasons:

  1. Simplicity. One vdev means one set of decisions to make, one redundancy policy, one upgrade path.
  2. No performance benefit at this scale. Multiple vdevs improve IOPS, but a 6-drive home NAS doesn't need the IOPS.
  3. Failure isolation is illusory at home scale. Losing one vdev out of two still means losing half the pool. In a home context, that's a catastrophic event either way.

When you do want multiple vdevs:

Pool naming

Name the pool something short, lowercase, and meaningful. You'll be typing it a lot. The ZFS community has converged on `tank` for the main pool — short, distinctive, alliterative with TrueNAS. Alternatives: `main`, `storage`, `nas`, `vault`.

You cannot rename a pool after creation without destroying and re-creating it. Pick once, live with it forever.

Special vdev types

Beyond RAIDZ and mirrors, ZFS has three more vdev types you should know about:

For a home NAS, all three are advanced topics. Don't worry about them in Volume 1. We'll come back to L2ARC and SLOG in Volume 4 (Home Lab) if your workload demands them.

The math, in one place

For TK's 6 × 12TB RAIDZ2 vdev:

Raw capacity = 6 × 12 TB = 72 TB Parity (2 drives worth) = 2 × 12 TB = 24 TB (reserved) Data (4 drives worth) = 4 × 12 TB = 48 TB ZFS overhead ≈ 8–10% = ~4 TB ───────────────────────────────────────────────────────── Usable capacity ≈ = ~44 TB Number of drives that can fail simultaneously = 2 (any 2 of 6) Rebuild time after a single drive failure = 8–24 hours (depends on drive size, CPU, and pool usage)

Engineering Note

The vdev is the unit of both performance and loss. A pool is as fast as its slowest vdev, and a pool is as safe as its most vulnerable vdev. When you read about ZFS, every performance and reliability number is actually a per-vdev number. This is the most important sentence in this chapter.

It means: if you have a fast SSD vdev and a slow HDD vdev in the same pool, the slow one drags the fast one down on writes (because ZFS writes across all vdevs to spread the load). It also means: a failed vdev takes its data with it; the other vdevs can't save it.

Summary

A vdev is a group of drives ZFS treats as one device. A pool is one or more vdevs presented as a single filesystem. RAIDZ2 is the right vdev type for a 6-drive home NAS with irreplaceable data. Usable space is roughly (N − 2) × drive size for RAIDZ2. You can't add a single drive to an existing vdev, but you can add a new vdev to the pool. Pick your pool layout once and live with it.

Checklist

Looking Ahead

Chapter 04 covers the layer above the pool: datasets. Datasets are where ZFS becomes interesting. They're the smart folders that get their own permissions, their own compression, their own snapshots, their own encryption. Most of what makes a ZFS system feel modern happens at the dataset layer.

Ch 03 · v0.1 · drafted from the original ChatGPT conversation, July 2026