Skip to content

RAID (独立磁盘冗余阵列)

一、RAID 概述

RAID = Redundant Array of Independent Disks,独立磁盘冗余阵列。

由加州大学伯克利分校 1988 年提出,核心思想:把多块磁盘组合成一个逻辑磁盘,以实现更高的性能、更大的容量或更好的可靠性。

RAID 的三大目标

目标 含义
大容量 多块盘容量叠加,突破单盘容量限制
高性能 多盘并行读写,I/O 吞吐提升
高可靠 冗余机制(镜像/校验)允许单盘(或多盘)故障而不丢数据

关键术语

  • 条带 (Stripe):把一份数据切成 N 份,分别写入 N 块盘
  • 条带大小 (Stripe Size / Chunk Size):每块盘上单次写入的数据块大小,如 64KB
  • 校验 (Parity):通过异或等算法,从其他盘数据反推丢失数据,用于容错
  • 热备盘 (Hot Spare):空闲盘,自动替换故障盘
  • 重建 (Rebuild):故障盘替换后,把数据恢复到新盘的过程
  • 写入惩罚 (Write Penalty):为保证一致性,一次写入要做的实际操作倍数
  • MTBF:平均故障间隔时间
  • MTTDL:平均数据丢失时间

二、RAID 级别详解

RAID 0 (条带化,Striping)

原理:数据分块,轮流写入多块盘,无冗余。

  盘1    盘2    盘3    盘4
[A1  ] [A2  ] [A3  ] [A4  ]    ← 条带 1
[B1  ] [B2  ] [B3  ] [B4  ]    ← 条带 2
项目 说明
容量 N 块盘容量之和(100%)
读性能 N 倍速
写性能 N 倍速
冗余 无,任何一块盘坏,全部数据丢失
最低盘数 2
适用场景 临时数据、对性能要求高但不重要的场景

⚠️ RAID 0 实际不算 RAID,因为没有冗余。


RAID 1 (镜像,Mirroring)

原理:同一份数据写入两块盘(完全复制),互为镜像。

  盘1    盘2 (镜像)
[A1  ] [A1  ]
[B1  ] [B1  ]
项目 说明
容量 单盘容量(50%)
读性能 2 倍速(可从两块盘同时读)
写性能 略低于单盘(要写两次)
冗余 允许 1 块盘故障
最低盘数 2
适用场景 关键数据、系统盘、对读性能要求高

RAID 2 (汉明码纠错)

原理:以位(bit)为单位条带化,使用汉明码做 ECC 纠错。

项目 说明
容量 损失较大(多盘用于校验)
性能 一般
冗余 可纠正单盘错误
实际应用 已淘汰,ECC 在内存更合适

RAID 3 (专用校验盘的字节级条带)

原理:数据按字节条带化写入多块数据盘,另有一块专门的校验盘存异或值。

项目 说明
容量 (N-1) 块盘容量
读性能 接近 N 倍速
写性能 差(每次写都要更新校验盘,校验盘成为瓶颈)
冗余 允许 1 块盘故障
实际应用 极少用,已被 RAID 5 取代

RAID 4 (块级专用校验)

原理:与 RAID 3 类似,但以块(扇区)为单位条带,有一块专用校验盘。

项目 说明
容量 (N-1) 块盘容量
读性能 N 倍速
写性能 差(校验盘仍是瓶颈)
冗余 允许 1 块盘故障
实际应用 很少用,被 RAID 5 取代

RAID 5 (分布式校验,最常用)

原理:数据分块 + 校验块,校验值轮流分布到所有盘上(没有专用校验盘)。

  盘1   盘2   盘3   盘4
[A1 ] [A2 ] [A3 ] [Ap]    ← 校验在盘 4
[B1 ] [B2 ] [Bp] [B3 ]    ← 校验在盘 3
[C1 ] [Cp] [C2 ] [C3 ]    ← 校验在盘 2
[Dp] [D1 ] [D2 ] [D3 ]    ← 校验在盘 1
项目 说明
容量 (N-1) 块盘容量
读性能 接近 N 倍速
写性能 中等(写入惩罚 = 4)
冗余 允许 1 块盘故障
最低盘数 3
适用场景 最常用,文件服务器、数据库、通用服务器

写入惩罚 = 4:一次逻辑写需 4 次物理 I/O(读旧数据 + 写新数据 + 读旧校验 + 写新校验)。


RAID 6 (双重校验)

原理:在 RAID 5 基础上再加一份校验(不同算法),允许同时坏 2 块盘。

  盘1   盘2   盘3   盘4   盘5
[A1 ] [A2 ] [A3 ] [Ap] [Aq]    ← 两个校验值
[B1 ] [B2 ] [Bp] [Bq] [B3 ]
项目 说明
容量 (N-2) 块盘容量
读性能 接近 N 倍速
写性能 较差(写入惩罚 = 6)
冗余 允许同时 2 块盘故障
最低盘数 4
适用场景 大容量阵列、对可靠性要求高

RAID 10 (1+0,先镜像后条带,推荐)

原理:先做 RAID 1(每组镜像),再把多组镜像做 RAID 0(条带)。

       盘1   盘2       盘3   盘4
      [A1 ] [A1m]     [A2 ] [A2m]    ← 每对镜像
         ↘     ↓         ↙
           ┌─────┐
           │ 条带 │
           └─────┘
项目 说明
容量 N/2 块盘容量(50%)
读性能 N 倍速
写性能 N/2 倍速(每对镜像要写两次)
冗余 每组镜像可坏 1 块,最多坏 N/2 块
最低盘数 4
适用场景 数据库、高 IO 场景

RAID 01 (0+1,先条带后镜像)

原理:先做 RAID 0(条带),再做 RAID 1(镜像)。与 RAID 10 看起来一样,但可靠性差很多。

项目 说明
容量 N/2 块盘容量
性能 与 RAID 10 相当
冗余 任一底层条带整组坏都会导致整个阵列不可用
适用场景 极少使用,RAID 10 完胜

RAID 10 vs RAID 01:RAID 10 可靠性远高于 RAID 01,推荐用 RAID 10。


RAID 50 (5+0)

原理:多个 RAID 5 子组,再做条带。

项目 说明
容量 各 RAID 5 子组容量之和(每组损失 1 块盘)
性能 优于 RAID 5,大型写入更高效
冗余 每个子组允许坏 1 块
适用场景 大容量、高性能需求

RAID 60 (6+0)

原理:多个 RAID 6 子组,再做条带。

项目 说明
容量 各 RAID 6 子组容量之和
冗余 每个子组允许坏 2 块
适用场景 超大容量、超高可靠性

三、RAID 级别对比

级别 最低盘 容量利用率 读性能 写性能 冗余 写入惩罚
0 2 100% 高 高 无 1
1 2 50% 高 中 1 块 2
2 3 低 - - 1 块 -
3 3 (N-1)/N 高 低 1 块 4
4 3 (N-1)/N 高 低 1 块 4
5 3 (N-1)/N 高 中 1 块 4
6 4 (N-2)/N 高 中低 2 块 6
10 4 50% 高 高 每组 1 块 2
01 4 50% 高 高 差 2
50 6 (N-M)/N 高 中高 每组 1 块 -
60 8 (N-2M)/N 高 中 每组 2 块 -

N = 总盘数,M = 子组数


四、软 RAID vs 硬 RAID

项目 软 RAID 硬 RAID (RAID 卡)
实现 CPU 执行,操作系统或驱动 专用 RAID 卡(带处理器 + 缓存)
性能 占用 CPU,慢 不占 CPU,快
成本 几乎零成本 几百到几千元
功能 基础 丰富(热备盘、BBU、远程复制)
兼容性 与 OS 强相关 独立于 OS
适用 个人/家用/测试 企业/生产环境
代表 Linux mdadm、Windows Storage Spaces LSI MegaRAID、HP Smart Array

RAID 卡的电池/电容 (BBU / SuperCap):

  • 防止断电时缓存数据丢失
  • 写回 (Write Back) 模式必须配 BBU 才安全
  • 现代超级电容寿命更长

五、关键概念深入

1. 条带大小 (Chunk Size) 选择

  • 小块(32-64 KB):适合随机小 I/O、数据库
  • 大块(128-1024 KB):适合顺序大文件、视频流

2. 写入惩罚 (Write Penalty)

RAID 写 1 次需要实际 I/O 次数 说明
0 1 无校验
1 2 写镜像
5 4 读旧数据 + 写新数据 + 读旧校验 + 写新校验
6 6 同上但双校验
10 2 镜像写入

3. 热备盘 (Hot Spare)

  • 全局热备:为整个阵列中所有盘组准备
  • 局部热备:只服务某个盘组
  • 故障时自动替换,自动重建,无需人工干预

4. 重建 (Rebuild) 风险

  • 重建期间若再有盘坏,RAID 5 会丢数据
  • 重建时间:容量 / 速度(几小时到几十小时)
  • 大容量盘(>2TB)重建风险更高
  • RAID 6 / RAID 10 更安全

5. 校验计算 (P = D1 ⊕ D2 ⊕ D3)

  • 异或 (XOR) 特性:A ⊕ B ⊕ C ⊕ A ⊕ B = C
  • 所以丢任意一块盘,可用其他盘反推

六、各级 RAID 选择建议

业务场景 推荐 RAID 原因
系统盘 / 数据库 RAID 1 或 RAID 10 读多写多,需要高 IOPS
数据库日志 RAID 10 顺序写,需要高写性能
文件服务器 / 共享存储 RAID 5 或 RAID 6 容量利用率高,读多写少
视频监控 / 大容量备份 RAID 6 容量大、可靠性高
临时数据 / 缓存 RAID 0 极致性能,无可靠性要求
关键业务 / 金融 RAID 10 性能与可靠性兼顾
云存储 / 冷数据 RAID 6 容量大、可靠性高、性价比好

七、现代存储演进

  • JBOD (Just a Bunch Of Disks):无 RAID,把多盘串成一个逻辑盘
  • RAID-on-Chip (ROC):RAID 控制器集成到主板
  • 存储虚拟化:多盘抽象成统一的资源池
  • 软件定义存储 (SDS):Ceph、GlusterFS、MinIO 替代部分 RAID 场景
  • 纠删码 (Erasure Coding):类似 RAID 但更灵活,云存储常用
  • RAID 已不是唯一选择:大厂用分布式存储 + 多副本 + 纠删码

八、核心要点速记

  • RAID 0:只求快,不求稳
  • RAID 1:最稳但浪费,适合系统盘
  • RAID 5:性价比之王,通用首选
  • RAID 6:更稳的 RAID 5,大容量首选
  • RAID 10:又快又稳,数据库首选
  • 条带提升性能,镜像/校验提升可靠性
  • 写入惩罚:RAID 5 = 4, RAID 6 = 6, RAID 10 = 2
  • 大硬盘 + RAID 5 = 重建风险,建议 RAID 6 或 RAID 10