RAID — Redundant Array of Independent Disks — combines several drives into one
storage unit that is larger, faster, or more reliable than any single drive. This page
explains how each level works, what it costs you, and how to choose.
Foundations
The basics
Individual drives are cheap, slow and unreliable. Group them and you get something bigger,
faster and harder to lose — but the array is only ever as good as its weakest member, and
every byte of capacity you spend on redundancy is a byte you cannot store data in.
A RAID array presents all of its disks as a single volume. Whether the RAID is built by a
dedicated controller (hardware RAID) or by the operating system
(software RAID) makes little difference to the arithmetic below — only to
the features you get.
Controllers usually schedule rebuilds around your workload
Often competes with normal I/O, so rebuilds drag
Good for
Databases, VM hosts, anything latency-sensitive
Desktops, NAS boxes, bulk storage
Mixing drive sizes defeats the point. In any layout, usable capacity is
driven by the smallest disk. Nine 1 TB drives plus one 500 GB drive in RAID 5
gives you 4 TB, not 8.5 TB — every disk is treated as 500 GB. Use identical drives,
ideally from the same production batch.
Vocabulary
Core concepts
Four ideas explain every RAID level ever invented.
1. Striping (RAID 0)
The incoming data stream is chopped into fixed-size blocks and written
round-robin across the disks. Block 1 goes to disk 1, block 2 to disk 2, and so on. Because
every disk is working on a different part of the same request at the same time, throughput
scales roughly with disk count in both directions — the best performance and the best
capacity efficiency available, with zero protection.
Block size (or chunk size) is chosen when you create the array, typically
32 KB to 128 KB. Small blocks favour sequential I/O; large blocks favour random
and large-file I/O. It is fixed for the life of the array and cannot be changed without
reformatting.
2. Mirroring (RAID 1)
Two or more disks hold byte-for-byte identical copies of the same data. Lose one disk and
the array keeps working, carrying on from the surviving copy. It is the simplest form of
redundancy and the easiest to reason about, but you pay half your raw capacity for it and
writes must be issued to every copy at once.
3. Parity (RAID 5 and RAID 6)
Rather than duplicating data, each stripe stores one extra block of parity
— the result of an exclusive-OR across the data blocks in that stripe. Any single missing
block can be recomputed from the others, so one disk per stripe is sacrificed to redundancy
no matter how many disks the array has. This is the key insight: the overhead is one
disk, not 50%, which is why parity scales so well to large arrays.
In RAID 5 the parity block rotates to a different disk on every stripe, so
no single disk is a write bottleneck and no disk holds more parity load than the rest.
RAID 6 adds a second, independent parity block per stripe using a different function, so
two disks can fail at once and the data is still fully recoverable.
4. Hot spares and nested arrays
A hot spare is a disk that sits idle in the array, gets none of your data,
and is automatically swapped in to replace a failed disk. RAID 5E and 5EE do the same thing
without a physical spare by reserving raw capacity inside the array.
Nested levels such as RAID 50 and 60 build several parity groups and then
stripe across them, buying read throughput at the cost of a fixed parity overhead per group.
Write penalty. Redundancy is paid for on every write. Updating one block
means reading the old data and the old parity, XOR-ing them, then writing both back —
a read-modify-write costing 4 I/Os for RAID 5 and 6 for RAID 6. That is the
“write penalty”, and it is why a fast-read, slow-write array is normal.
Reference table
All levels compared
N = total disks. K = number of groups.
G = disks per group. Overhead figures assume identical disks and ignore
filesystem and controller metadata.
Comparison of every RAID level covered by the calculator
S = size of the smallest disk. “Best case” fault tolerance is higher than
the guaranteed figure when failures land in separate mirror pairs or parity groups.
RAID levels 2, 3 and 4 are defined in the original 1987 Berkeley paper
but are never implemented in real storage. Level 3 and 4 used a single dedicated parity
disk, which serialised all writes and became a bottleneck — RAID 5 solved the problem by
rotating the parity. You will not find hardware or software support for them.
Reference
Level by level
Every diagram below is drawn from the same engine that powers the calculator.
RAID 0 — Stripe set
min 2 disks0 fault tolerance
Usable capacity
N × S
Capacity overhead
None
Read gain
N×
Write penalty
×1
Can lose
Nothing
blocks distributed round-robin
usable = N × S
Data is split into blocks and dealt out across every disk in turn, so reads and
writes are spread evenly and the array scales almost linearly with disk count in both
directions. It also uses 100% of the raw capacity, which no fault-tolerant level can
match.
The catch is absolute: a single disk failure takes the whole array down, and the data
cannot be reassembled from anything else. Use it only for data you could lose —
caches, scratch space, a rendering farm, a copy you can re-pull.
Best for
Maximum speed and full capacity
Cheapest per usable TB
Zero protection — one failure means total loss
Largest rebuild exposure, since there is nothing to rebuild from
RAID 1 — Mirror
min 2 disks1 fault tolerance
Usable capacity
N/2 × S
Capacity overhead
50%
Read gain
×1 (up to N/2)
Write penalty
×2
Can lose
1 per pair
disks paired, one copy each
usable = (N ÷ 2) × S
speed = ×1 writes, up to ×(N÷2) reads
Every block is written twice. One disk can fail outright and the array carries on
serving from the other copy with no interruption and no rebuild. No parity maths, no
read-modify-write — just simple, predictable behaviour that is easy to support
everywhere and trivial to recover from.
Writes never scale: both copies must be updated before the write is acknowledged, so
write throughput stays at single-disk level and carries a ×2 penalty. Many
controllers read from the two mirrors in parallel and can deliver up to N/2× reads,
but plenty do not bother.
Best for
Boot volumes and system disks
Small, critical datasets where cost is not the constraint
Fast rebuild — a mirror just re-copies, no parity calculation
50% capacity cost, and it grows with every disk added
RAID 1E — Striped mirroring
min 3 disksodd count only
Usable capacity
N/2 × S
Capacity overhead
50%
Read gain
×1
Write penalty
×2
Can lose
1 disk
each block copied to two
rotating disks (odd N)
usable = (N ÷ 2) × S
Plain RAID 1 wants pairs, which forces an even disk count. RAID 1E instead writes each
block to two of the available disks and rotates which pair from block
to block. Every disk carries data, the copies stay spread across all spindles, and the
cost is still 50% — but the disk count can now be odd.
The practical benefit over RAID 1 is that reads stay balanced across every disk, which
keeps throughput up even while the array is degraded after a failure.
Best for
Reliable storage when the bay has an odd number of slots
per stripe: N−1 data blocks + 1 parity
parity rotates disk to disk
usable = (N − 1) × S
read = (N − 1) × single disk
This is the level that made RAID mainstream. Because the parity block rotates rather
than sitting on one dedicated drive, writes are not serialised — and because the
overhead is a single disk no matter how large the array grows, capacity efficiency
improves as you add disks. Ten 1 TB drives give 9 TB; a hundred 1 TB drives give
99 TB.
While every disk is healthy, reads scale to roughly N−1× and feel like RAID 0. Writes
do not: updating a block means reading and rewriting its parity partner, so the ×4
penalty holds throughput near single-disk levels. During a rebuild the array must
read all remaining disks to reconstruct the failed one, so performance drops sharply
until it finishes — and the array has no redundancy at all while
that is happening.
Best for
Large read-heavy arrays: media libraries, archives, warm storage
Capacity cost stays flat as the array grows
Write-heavy databases are better on RAID 10 or RAID 6
Extended rebuild window with heavy read/write load
Large drives mean multi-day rebuilds at today’s sizes
RAID 50 — RAID 5 groups striped together
min 6 diskscontroller-only
Usable capacity
K × (G−1) × S
Capacity overhead
K disks
Read gain
K × (G−1)
Write penalty
×4
Can lose
1 disk (K if spread)
K groups of G disks, each RAID 5,
then stripe the groups together
usable = K × (G − 1) × S
read = K × (G − 1) × single disk
RAID 5 across a hundred disks gives excellent capacity efficiency but reads capped at
N−1×. RAID 50 splits the disks into several independent RAID 5 groups and stripes
across them, multiplying the read parallelism by the number of groups while capping
the capacity cost at one disk per group. A twelve-disk array as 2 × RAID 5 of 6
yields 10 TB from 1 TB disks.
Trade-offs: fault tolerance is still only one disk overall — a second
failure in the same group loses data, though two failures in different groups
are recoverable. You also lose the flat efficiency of plain RAID 5, because each group
pays its own parity, and you need a controller that supports nested arrays.
Best for
Very large read-oriented arrays on a capable controller
Brute-force read throughput with protection intact
Write performance is still limited by RAID 5 parity
Multiple spares strongly recommended at this scale
RAID 5E and RAID 5EE — Parity with an integrated spare
min 4 disksHP Smart Array
Usable capacity
(N−2) × S
Capacity overhead
2 disks
Read gain
(N−2)×
Write penalty
×4
Can lose
1 disk
RAID 5 + one disk's worth of reserve
usable = (N − 2) × S
read = (N − 2) × single disk
Both levels keep a hot spare inside the array rather than as a separate
physical disk. One disk is reserved to hold the spare, which the array uses as soon
as a member fails — no human needs to swap it in, and you save a bay slot.
The difference is where that spare space sits. RAID 5E parks the free
space at the end of the array, so a rebuild writes to one contiguous region and is
comparatively slow. RAID 5EE interleaves the reserve through the
stripe set, spreading rebuild writes across every drive — measurably faster after a
failure, and the reason 5EE superseded 5E. Usable capacity is identical for both.
RAID 5E: the reserve sits at the tail of the array.
RAID 5EE: the reserve is interleaved through every stripe.
Best for
HP Smart Array arrays with no free physical bay for a spare
Faster automated recovery than plain RAID 5
Two disks of overhead versus RAID 5’s one
Rebuild competes with live I/O on the same drives
RAID 10 (1+0) — Mirror over stripes
min 4 disks1 fault tolerance
Usable capacity
N/2 × S
Capacity overhead
50%
Read gain
N×
Write penalty
×2
Can lose
1 per pair
stripe across pairs, duplicate each stripe
usable = (N ÷ 2) × S
read = N × single disk
Two identical RAID 0 arrays hold two identical copies of the data. Every disk reads
independently, so RAID 10 scales reads to the full N× — the best read
performance of any fault-tolerant level — and unlike RAID 1 it keeps improving as you
add pairs.
Writes go to both copies, so you pay a ×2 penalty, but that is far cheaper than RAID
5’s ×4 or RAID 6’s ×6, and rebuilds are simple re-copies that finish
quickly. It is the default answer for databases, VMs and anything with a mixed
read/write workload. The bill is 50% capacity overhead on every disk, which
makes it the most expensive level per usable terabyte once arrays get large.
Best speed per unit of risk among fault-tolerant levels
Short, fast rebuilds limit the unprotected window
Expensive — half your raw capacity, always
Large arrays cap out on drive bays long before capacity is reached
RAID 6 — Dual distributed parity
min 4 disks2 fault tolerance
Usable capacity
(N−2) × S
Capacity overhead
2 disks
Read gain
(N−2)×
Write penalty
×6
Can lose
2 disks
per stripe: N−2 data + P + Q
usable = (N − 2) × S
read = (N − 2) × single disk
Two independent parity blocks per stripe, using different parity functions. One failed
disk is rebuilt from the surviving parity; if a second disk fails before the first
rebuild completes, the two missing blocks are recovered by combining the remaining
data with both parity sets. That is the entire point: it turns the long,
dangerous rebuild window of RAID 5 into a routine event.
The cost is CPU for parity maths and a ×6 write penalty — the worst of the common
levels — plus two disks of capacity. With modern drives, RAID 6 is the pragmatic
default for large arrays because multi-terabyte disks make a single unrecoverable read
error during a RAID 5 rebuild a realistic rather than theoretical risk.
Best for
Large-capacity arrays where rebuilds take hours or days
Capacity cost stays flat as the array grows
Any workload where a second failure must be survivable
Heavy write workloads — the ×6 penalty hurts most
RAID 60 — RAID 6 groups striped together
min 8 diskscontroller-only
Usable capacity
K × (G−2) × S
Capacity overhead
2K disks
Read gain
K × (G−2)
Write penalty
×6
Can lose
2 disks (2K if spread)
K groups of G disks, each RAID 6,
then stripe the groups together
usable = K × (G − 2) × S
RAID 60 applies the RAID 50 idea to RAID 6 groups. Two RAID 6 sets are the minimum,
which means at least eight disks. Read parallelism is K × (G−2), and the capacity cost
is two disks per group — so an eight-disk array of 1 TB drives gives 4 TB, exactly
50% efficiency, with two-disk fault tolerance per group.
Guaranteed tolerance is two disks overall; if failures land in separate groups, up to
2K disks can be lost. As with RAID 50, this level exists on high-end controllers only,
and at this scale you should hold more hot spares than you think you need.
Best for
Very large enterprise arrays needing both speed and safety
Capacity efficiency better than RAID 10 at high disk counts
×6 write penalty across every group
Expensive controller requirement
In practice
Choosing a level
Start from the workload, then pick the cheapest level that meets it.
Always keep hot spares. Rebuilding into a spare is an automatic, online
operation. Rebuilding into a failed bay slot is not — and once a disk has failed you have
lost your safety margin whether or not you replace it immediately.
The part people forget
Rebuilds and the second failure
The fault tolerance number only describes the array in a healthy state.
When a disk fails, the array immediately starts reconstructing it by reading every other
member. Until that finishes — and at 20 TB per drive this can take more than a day — the
array is running with no redundancy at all. A second hardware failure during
that window loses the data.
Worse, a rebuild reads the entire array. If any sector on any surviving disk is
unreadable — an unrecoverable read error (URE) — that block cannot be
reconstructed, and a RAID 5 array loses the data along with the failed disk. This is why
RAID 6 is now the default recommendation for large-capacity arrays, and why
consumer-grade drives are a poor choice for anything you care about. Enterprise drives carry
error rates two to three orders of magnitude lower, plus features like TLER that stop a
disk dropping out mid-rebuild.
Schedule rebuild windows; expect degraded performance while one runs.
Keep spares equal to at least the largest disk’s rebuild time in days.
Prefer RAID 6 over RAID 5 once drives exceed a few terabytes.
Monitor SMART attributes — a drive about to fail often shows reallocated sectors first.
Test your backups on a schedule. RAID protects disks, not deletions.
RAID does not protect against anything but disk failure. Accidental
deletion, filesystem corruption, ransomware, fire, theft, a controller losing its metadata,
or an administrator running dd in the wrong directory will all destroy your
data just as thoroughly, and redundancy will happily propagate the damage. RAID plus a
tested off-site backup. Always both.
By the numbers
Worked examples
Six configurations, same class of disk. Run any of them through the calculator.
Ten 2 TB drives, one TB-scale disk class. Capacity in TB.
Configuration
Raw
Usable
Efficiency
Read gain
Write penalty
Can lose
10 × 2 TB RAID 0
20 TB
20 TB
100%
10×
×1
nothing
10 × 2 TB RAID 1
20 TB
10 TB
50%
×1
×2
1 per pair
10 × 2 TB RAID 5
20 TB
18 TB
90%
9×
×4
1 disk
10 × 2 TB RAID 5EE
20 TB
16 TB
80%
8×
×4
1 disk
10 × 2 TB RAID 10
20 TB
10 TB
50%
10×
×2
1 per pair
10 × 2 TB RAID 6
20 TB
16 TB
80%
8×
×6
2 disks
Why RAID 5 efficiency climbs
The overhead is always exactly one disk, so the wasted share shrinks as you add
disks. Three disks wastes 33%, five wastes 20%, ten wastes 10%, and twenty wastes 5%.
That flat-cost property is the single biggest reason RAID 5 and 6 remain popular on
large arrays — and why RAID 10’s 50% cost becomes harder to justify past a
certain size.
TB vs TiB
Drive makers advertise decimal TB (1012 bytes). Operating systems report
binary TiB (240 bytes). A “16 TB” disk shows up as about 14.55 TiB, so a
formatted array always looks about 9% smaller than the label. Both figures are shown
in the calculator so there are no surprises.
Reference
Glossary
Block size / chunk size
The amount of data written to one disk per stripe before moving to the next. Fixed at creation, typically 32–128 KB.
Hot spare
An idle disk in the array, holding no data, that automatically takes over for a failed member.
Degraded array
An array running after a disk failure but before its rebuild completes. It has no redundancy until the rebuild ends.
Write penalty
How many disk writes one host write costs. RAID 5 is ×4, RAID 6 is ×6 — the main reason parity arrays write slowly.
Striping
Spreading consecutive blocks across several disks so they operate in parallel.
Mirroring
Keeping identical copies of every block on two or more disks.
Parity
A value derived from a stripe’s data blocks so any missing one can be recomputed. RAID 5 uses one, RAID 6 uses two.
URE
Unrecoverable read error — a sector that can no longer be read at all. During a rebuild, one URE can destroy a parity array.
TLER
Time Limited Error Recovery — an enterprise drive feature that suppresses error recovery so a slow disk is not dropped from an array mid-rebuild.
Raw vs usable capacity
Raw is every byte on every disk. Usable is what remains after parity, mirrors, spares, filesystem metadata and vendor-reserved space.