RAID Toolkit

What is RAID?

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.

Hardware RAID vs. software RAID
 HardwareSoftware
Cost Needs a controller card, often battery-backed Free — built into the OS
Availability Array is visible before the OS boots Cannot boot from a software RAID 0 or 5
Features Caching, write-back cache, hot-swap, battery protection, nested levels Basic striping and mirroring only
Rebuild priority 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
Level Min disks Usable capacity Capacity overhead Fault tolerance Read gain Write penalty Cost to scale
RAID 0 2 N × S none 0 disks N× ×1 Cheapest
RAID 1 2 N/2 × S 50% 1 disk ×1 ×2 High (2 disks per copy)
RAID 1E 3 (odd) N/2 × S 50% 1 disk ×1 ×2 High
RAID 5 3 (N−1) × S 1 disk 1 disk (N−1)× ×4 Modest, flat
RAID 50 6 K × (G−1) × S K disks 1 disk K × (G−1) ×4 Very high
RAID 5E 4 (N−2) × S 2 disks 1 disk (N−2)× ×4 Modest, flat
RAID 5EE 4 (N−2) × S 2 disks 1 disk (N−2)× ×4 Modest, flat
RAID 10 4 (even) N/2 × S 50% 1 disk N× ×2 Very high
RAID 6 4 (N−2) × S 2 disks 2 disks (N−2)× ×6 Modest, flat
RAID 60 8 K × (G−2) × S 2K disks 2 disks K × (G−2) ×6 Very high

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 disks 0 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 disks 1 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 disks odd 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
  • Smoother reads than RAID 1 as the array degrades
  • Rarely supported outside HP/NetApp-era controllers
  • Still pays 50% capacity for the redundancy

RAID 5 — Single distributed parity

min 3 disks 1 fault tolerance
Usable capacity
(N−1) × S
Capacity overhead
1 disk
Read gain
(N−1)×
Write penalty
×4
Can lose
1 disk

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 disks controller-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 disks HP 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 disks 1 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 for

  • Databases, virtualisation hosts, transactional workloads
  • 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 disks 2 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 disks controller-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.

Common scenarios and the level that usually fits
If you are building… Use Why
A boot or system disk RAID 1 Two disks, trivial to build, instant recovery, supported everywhere
A database or VM host RAID 10 Full N× reads, ×2 write penalty, fast rebuilds
Large storage, mixed workload RAID 10 The best balance of speed, rebuild time and recovery safety
Big read-heavy capacity storage RAID 6 Flat 2-disk overhead, survives two failures during rebuild
Media library or backup target RAID 5 or RAID 6 Sequential reads; capacity efficiency beats RAID 10 at scale
Something expendable or re-creatable RAID 0 Fastest and cheapest; accept that a failure means starting over
An enterprise shelf, 20+ disks RAID 50 / RAID 60 Multiplies read parallelism across groups

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 TB20 TB100% 10××1nothing
10 × 2 TB RAID 1 20 TB10 TB50% ×1×21 per pair
10 × 2 TB RAID 5 20 TB18 TB90% 9××41 disk
10 × 2 TB RAID 5EE 20 TB16 TB80% 8××41 disk
10 × 2 TB RAID 10 20 TB10 TB50% 10××21 per pair
10 × 2 TB RAID 6 20 TB16 TB80% 8××62 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.