Skip to content

Technology card

Shipping

RAID

Redundant Array of Independent Disks

Compare RAID 0, 1, 5, 6 and 10 by capacity, copy placement and the failures each layout can survive.

Glossary entry on hesela.dev · JSON record · RAID 0 · RAID 1 · Stripe unit · MD mismatch count · Rebuilds and mirror failure patterns · Write costs and workload · Write-hole recovery

On this page6 sections

In one minute

RAID combines storage members through defined data-placement layouts, with redundancy and failure tolerance determined by the chosen level.

Start with the layout, not the number of drives. RAID 0 stripes data without protecting it; RAID 1 keeps multiple complete copies; RAID 5 and RAID 6 use parity; conventional RAID 10 stripes over mirror groups. These choices trade capacity for different recovery paths. [1] [2] [3] [4] [5]

For N equal-sized active members, each contributing capacity S, the table gives ideal data capacity. Spares, array metadata and filesystem overhead are excluded. RAID 1 means one N-way mirror here; RAID 10 means fixed two-member mirror pairs with an even N of at least four. [6] [5]

Four 8 TB members illustrate the distinction: RAID 0 provides 32 TB, a four-way RAID 1 mirror 8 TB, RAID 5 24 TB, RAID 6 16 TB and paired RAID 10 16 TB before overhead. These follow from the table's formulas; the RAID 1 row is not two separate mirrors.

Equal member sizes are an assumption, not a universal RAID 0 capacity rule. Linux MD can continue into narrower stripe zones after smaller members run out of space, using remaining capacity on larger members. A full RAID 1 mirror instead needs room for the complete logical data on every participating member. Verify the implementation and usable member sizes before applying a formula. [10]

Failure position matters in paired RAID 10. With pairs A/B and C/D, losing A and C leaves one copy in each pair; losing A and B removes both copies of that pair's data. Counting failed drives alone cannot distinguish these cases. Linux also supports near, far and offset RAID10 layouts, including odd member counts, so the fixed-pair example must not be applied to every RAID10 implementation. [5] [7]

Parity capacity is an overhead equivalent, not necessarily a dedicated drive. RAID 5 rotates parity across members; RAID 6 layout details vary. Do not infer where parity lives merely from subtracting one or two members in a capacity formula. [3] [7]

A stripe unit, also called a strip or stripe element, is the contiguous portion on one member. It is not the full stripe. For four active members with 512 KiB units, full-stripe user data is 2 MiB in RAID 0, 1.5 MiB in RAID 5 and 1 MiB in conventional RAID 6. The parity layouts still occupy 2 MiB across the members; their user-data totals exclude parity. [9] [10] [7]

Request length alone does not establish stripe coverage. A stripe-aligned 1540 KiB RAID 0 request touches all four members: three 512 KiB chunks plus 4 KiB of the fourth. It does not fill the 2 MiB stripe. In the four-member RAID 5 example, a 1.5 MiB request starting 4 KiB past a data-stripe boundary spans two partial stripes. These are address-mapping calculations; the parity layer may aggregate separate writes before issuing a full-stripe write. [8] [14]

Mirroring does not promise a fixed read-speed multiplier. Linux MD documents read balancing across members but distinguishes a single sequential stream from concurrent streams or random reads. Writes must update the active copies; workload, layout and implementation determine the performance result. [10]

A configured mirror is not necessarily a synchronized mirror. By default, mdadm starts an initial resync when creating a RAID 1 array. With optional write-behind enabled, Linux MD can report write completion before designated write-mostly members have caught up. A surviving device must contain the needed current data; counting installed members alone does not establish that condition. [11] [10]

Consistency is not integrity. Krioukov and colleagues showed how recomputing parity from unvalidated data can make corrupted data and parity agree. Their FAST 2008 model explores one stripe with one injected error and collision-free protection primitives; it is not a present-day fleet failure-rate measurement or a reason to disable scrubbing. Validation must cover maintenance reads as well as application reads. [12]

Interpret scrub counters at their actual granularity. Linux MD mismatch_cnt counts sectors rewritten, or that would be rewritten during check, in units that can exceed the damaged region. The mdadm manual gives an example where one failed 64 KiB comparison adds 128 sectors. This is not a count of damaged files or independent failures, and check is not guaranteed to be read-only for every RAID level. [13] [10]

Redundancy and backup address different failures. A healthy mirror can faithfully preserve an unwanted overwrite. Recovery needs suitable retained copies, isolation and a tested restoration path; RAID alone does not provide those properties. [15]

The naming has a history: the December 1987 Berkeley report and the 1988 SIGMOD paper are titled A Case for Redundant Arrays of Inexpensive Disks (RAID). Their publication dates identify distinct records, not the first invention of every mechanism now grouped under RAID. [16] [17]

Compared to neighbors

The level identifies data placement. Controller availability, write-cache persistence, latent read errors, repair policy and shared power failures need separate evidence.

Ideal capacity for N equal-sized active members of capacity S, before overhead. Surviving data and parity must be readable and consistent; this is not a reliability probability.
LayoutCapacitySurvival
RAID 0 [1]N x SNo member loss
RAID 1 (N-way) [2]SOne current readable full copy must remain
RAID 5 [3](N - 1) x SAny one member may fail
RAID 6 [4](N - 2) x SAny two members may fail
RAID 10 (two-way pairs) [5]N x S / 2Every pair must keep a usable member

Uncertainty notes

  • This is a primary-source overview with worked capacity arithmetic, not a new array benchmark.
  • The comparison covers common layouts, not every historical RAID level or implementation variant.
  • The linked write-cost and rebuild analyses examine mechanisms that a level label alone cannot predict.

Sources

  1. 01SNIA dictionary: RAID 0 · accessed 2026-10-20
  2. 02SNIA dictionary: RAID 1 · accessed 2026-10-20
  3. 03SNIA dictionary: RAID 5 · accessed 2026-10-20
  4. 04SNIA dictionary: RAID 6 · accessed 2026-10-20
  5. 05SNIA dictionary: RAID 10 · accessed 2026-10-20
  6. 06Red Hat Enterprise Linux 10: Managing RAID, section 16.3 · accessed 2026-10-20
  7. 07Linux kernel documentation: dm-raid layouts and copy counts · accessed 2026-10-20
  8. 08Linux kernel documentation: dm-striped · accessed 2026-10-20
  9. 09SNIA dictionary: strip (stripe element) · accessed 2026-10-20
  10. 10mdadm 4.2 md(4): RAID layouts and read balancing · accessed 2026-10-20
  11. 11mdadm 4.2: initial resync and write-behind · accessed 2026-10-22
  12. 12Krioukov et al.: Parity Lost and Parity Regained, FAST 2008, sections 3, 4.2 and 5 · accessed 2026-10-22
  13. 13Linux 6.18: RAID arrays, sync_action and mismatch_cnt · accessed 2026-10-22
  14. 14Linux 6.12: RAID 4/5/6 cache and write aggregation · accessed 2026-10-20
  15. 15SNIA Data Protection Best Practices (2025), sections 7.1 and 7.2.3 · accessed 2026-10-20
  16. 16Patterson, Gibson and Katz: A Case for Redundant Arrays of Inexpensive Disks (RAID), UCB/CSD-87-391 (1987) · accessed 2026-10-20
  17. 17Patterson, Gibson and Katz: A Case for Redundant Arrays of Inexpensive Disks (RAID), SIGMOD (1988) · accessed 2026-10-20

Published by Hesela team

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. RAID. Hesela. https://hesela.com/tech/raid/