Estimate usable capacity of a dRAID pool based on the number of disk drives, required parity level, redundancy group width, and the number of distributed spares.
| RAID type: | dRAID2 (Double parity) | ||
| Number of top-level vdevs: | 1 | ||
| Data devices per redundancy group: | 8 | ||
| Parity level: | 2 | ||
| Number of drives | Per vdev | Total | |
| Children: | 24 | 24 | |
| Data + Parity: | 23 | 23 | |
| Spares: | 1 | 1 | |
| Capacity | (TiB) | (TB) | (%) |
| Single drive capacity: | 0.455 | 0.500 | |
| Total raw storage (w/o spares): | 10.459 | 11.500 | 100 |
| Zpool storage capacity: | 10.453 | 11.493 | 99.94 |
| Reservation for parity: | 2.103 | 2.312 | 20.11 |
| Slop space allocation: | 0.125 | 0.137 | 1.20 |
| ZFS usable storage capacity: | 8.225 | 9.044 | 78.64 |
The dRAID Capacity Calculator estimates the usable storage capacity of a distributed RAID (dRAID) storage pool. It calculates raw, zpool, and usable file system capacity based on the selected dRAID parity level, the number of vdevs, redundancy group configuration, and the number of distributed spares.
To estimate the usable capacity of a dRAID pool provide the following values:
ashift values:
ashift=9);ashift=12).Click Calculate to estimate the resulting raw, zpool and usable ZFS capacity.
The tool models the capacity calculations performed by OpenZFS, including capacity adjustments and allocations for partitioning, ZFS labels, dRAID layout, parity, and slop space. It provides the following results:
ALLOC
value reported by the zpool list command.USED
and AVAIL values reported by the zfs list command.Notes:
OpenZFS typically represents a dRAID configuration using the format
dRAIDP:Dd:Cc:Ss, where:
P (Parity) - The distributed parity level of a dRAID redundancy group.
This ranges from 1 to 3 and is similar to the RAIDZ parity level:
D (Data) - The number of data devices per redundancy group.C (Children) - The total number of devices in the dRAID vdev.S (Distributed Spares) - The number of distributed hot spares.A dRAID vdev is comprised of multiple redundancy groups, each organized into a set of data (D) and parity (P) columns, similar to RAIDZ. However, unlike RAIDZ, the data and parity columns are not fixed to a specific set of physical devices. Instead, they are distributed across all of the child devices (C) in the dRAID vdev. The distributed parity and spare capacity (S) are allocated across all drives in the vdev. To ensure an even distribution and avoid hot spots, a predetermined permutation mapping is applied to the order of the dRAID columns. As a result, every drive in the dRAID vdev participates in storing data, parity, and a portion of the distributed spare space.
For example, the configuration dRAID2:8d:24c:2s means:
| Parameter | Description |
|---|---|
dRAID2 |
Each redundancy group uses double parity (P = 2), allowing any two drives in the vdev to fail
without data loss. |
8d |
Each redundancy group is organized similarly to a RAIDZ2 stripe with D = 8 data columns and P = 2 parity columns, for a total of 10 columns per redundancy group. |
24c |
The dRAID vdev consists of 24 physical devices. |
2s |
Capacity equivalent to S = 2 spare devices is distributed across all 24 devices instead of being reserved on dedicated idle devices. |
Unlike traditional RAIDZ, dRAID distributes both parity and spare capacity across all drives in a vdev, allowing a failed drive to be rebuilt using all remaining disks simultaneously. This significantly reduces rebuild times for large storage systems while maintaining the data integrity and redundancy features of OpenZFS.
Although dRAID and RAIDZ both provide parity-based data protection in OpenZFS, they are designed for different deployment scenarios.
| Feature | RAIDZ | dRAID |
|---|---|---|
| Primary use | General-purpose storage pools | Large storage systems with many drives |
| Parity | Parity within each RAIDZ stripe | Distributed parity allocated per redundancy groups |
| Spare drives | Dedicated hot spares | Distributed spare capacity across all drives |
| Rebuild (resilver) | Reads only allocated data blocks | Sequential rebuild using distributed spare space |
| Rebuild performance | Slower for large vdevs | Much faster for large drive counts |
| Typical vdev size | 4-12 drives | 20-100+ drives |
| Recommended workloads | Home, SMB, virtualization, NAS | Large enterprise and archival storage systems |
When to use RAIDZ:
For small and medium-sized storage systems, RAIDZ is usually simpler to design, requires fewer configuration parameters, and provides excellent capacity, performance, and reliability. Most home NAS systems, virtualization servers, and small business storage arrays continue to use RAIDZ1, RAIDZ2, or RAIDZ3.
When to use dRAID:
dRAID was introduced to address one of the biggest challenges of very large storage systems: rebuilding failed drives. As drive capacities continue to increase, rebuilding a conventional RAIDZ vdev can take many hours or even days. During this period the pool operates with reduced redundancy.
Instead of dedicating one or more idle hot spare drives, dRAID distributes spare capacity across every drive in the vdev. When a drive fails, OpenZFS immediately begins rebuilding data into this distributed spare space using all remaining drives simultaneously. The rebuild proceeds sequentially, greatly reducing resilver time compared to conventional RAIDZ.
In short, dRAID is primarily intended for large pools containing dozens or hundreds of drives, where minimizing rebuild time after a drive failure is more important than maximizing storage efficiency or configuration simplicity.
See also:
RAIDZ Capacity Calculator
ZFS Storage Overhead
File / Disk Size Converter
RAID Types Overview
ZFS RAIDZ stripe width, or: How I Learned to
Stop Worrying and Love RAIDZ