ZFS Pool Calculator

Estimate the usable capacity and the read and write speed of a ZFS pool from its layout, drives and workload.

Drives and layout

A vdev is one group of drives that shares redundancy. A pool stripes data across all of its vdevs, so adding vdevs adds both space and speed. If any one vdev loses more drives than it can survive, the whole pool is lost. In a mirror, "drives per vdev" is the number of copies.

Drive speed

These are typical figures for each drive type. For a firm number, use the sequential speed and random IOPS from the drive's spec sheet. Editing either number switches the drive type to Custom.

Workload and network

Block size only changes the capacity of RAIDZ layouts. Small blocks waste space on RAIDZ because each block gets its own parity and padding. Use the speed converter to turn MB/s into Gbit/s.

Estimate

Usable capacity
Sequential read
Sequential write
Random read IOPS
Capacity
PoolValue
Speed
MeasureBest caseExpected

Best case uses the usual rules of thumb. Sequential speed scales with the data drives in each vdev and with the number of vdevs. Mirrors can read from every copy but write to all of them. A RAIDZ vdev delivers about the random IOPS of one drive. Expected applies your efficiency setting, an extra write penalty (about 5% for stripes, 10% for mirrors, 20% for RAIDZ, because of copy-on-write and parity work) and the network limit. Adding mirror copies speeds up reads but not writes; writes only grow when you add vdevs. Real results also depend on cache, compression, fragmentation, CPU, and on whether writes are synchronous. Synchronous writes on hard drives without a fast log device are much slower than shown. Capacity assumes 4K sectors, TB means 1,000 GB and TiB means 1,024 GiB.