首页/系统/服务器硬件与 RAID 速查/RAID 5 分布式校验:容量与代价
RAID 级别与计算68 条

RAID 5 分布式校验:容量与代价

RAID 5 把校验信息分散写到所有盘上,N 块盘损失一块容量换 1 块盘的容错。读性能好,随机写因读改写放大而变慢,是传统数据盘的主力级别。

RAID 5 是什么

RAID 5 把校验信息分散写在所有成员盘上,用一块盘的容量换一块盘的容错:N 块盘可得到 (N-1) 块盘的容量,任意一块盘故障后靠其余盘的 XOR 运算恢复数据。读操作不碰校验,读性能接近全盘并发;写操作要同时更新数据块与校验块,小随机写会触发「读旧数据 + 读旧校验 + 写新数据 + 写新校验」,即写惩罚 4,因此写性能只有盘数 IOPS 的四分之一左右。

基本信息

名称分布式奇偶校验条带,distributed parity
最少盘数3 块,生产常用 4~8 块一组
容量公式(N - 1) × 单盘容量
容错1 块盘;重建期间再坏一块即整阵列失效
写惩罚4(整条带对齐写可降到 2)
校验算法XOR 异或,校验块在各盘间轮转分布
典型平台Linux mdadm --level=5、MegaRAID/PERC/Smart Array、各类存储阵列

典型使用场景

  • 文件服务器、图片与视频素材库:读多写少,顺序大 IO 为主,写惩罚影响小
  • 容量敏感且预算受限的中间层存储:同样盘数比 RAID 10 多拿近一倍可用空间
  • 4~8 块盘的中等规模业务:单盘故障可在业务不中断的情况下恢复
  • 备份落盘前的暂存卷:写入可容忍,容量优先
  • 反向提醒:数据库数据盘、虚拟化小随机写场景不选 RAID 5,写惩罚 4 会把 IOPS 压到四分之一

容量与 IOPS 估算

容量与 IOPS 估算
# 5 块 4TB 7.2K SATA 盘,单盘随机 IOPS 按 75 估
可用容量 = (5 - 1) x 4TB = 16TB      # 损失一块盘的容量做校验
随机读 IOPS = 5 x 75 = 375           # 读不涉及校验,可全盘并发
随机写 IOPS ≈ 5 x 75 / 4 ≈ 94        # 写惩罚 4
顺序带宽 ≈ (N - 1) x 单盘带宽         # 校验盘不贡献数据带宽
整条带对齐写 IOPS ≈ 5 x 75 / 2       # 满条带写无需读旧值,惩罚降到 2

重建时长量级估算

单盘容量重建耗时(限速 100MB/s)期间剩余容错
1TB约 3 小时0 块盘
4TB约 11 小时0 块盘
8TB约 22 小时0 块盘
16TB约 44 小时0 块盘

mdadm 创建与验证

mdadm 创建与验证
mdadm --create /dev/md0 --level=5 --raid-devices=5 --spare-devices=1 --chunk=256 /dev/sd[b-g]1
cat /proc/mdstat                        # 确认 [5/5] [UUUUU] 与 resync 进度
mdadm --detail /dev/md0 | grep -E 'Raid Level|Array Size|State'
sudo mdadm --readwrite /dev/md0         # 若创建后停在 read-auto,按需切读写
写惩罚不是固定值:一次写入若正好覆盖整个条带(full-stripe write),控制器可只写数据与校验、不读旧值,写惩罚降到 2;这也是数据库与虚拟化场景建议按条带边界对齐的原因。
大容量 SATA 盘组 RAID 5 的主要风险不是坏盘本身,而是重建窗口:重建要读遍所有存活盘,期间任何一块盘出现不可纠正读错误(URE)就可能重建失败、整阵列不可用。定期做数据校验巡检(scrub / patrol read)能把隐患提前暴露。

运维要点

  • 定期做数据校验巡检(scrub 或卡上的 patrol read),在盘还健康时把静默坏道暴露出来
  • 重建限速按业务时段调整:夜间调高、高峰调低,既缩短风险窗口又守住延迟 SLA
  • 预留热备盘:坏盘后阵列自动进入重建,不必等采购与现场支持
  • 记录条带大小与文件系统的对齐方式,扩容与数据迁移时沿用同一口径

易错点

  • 把 RAID 5 用在数据库或虚拟化小随机写场景:写惩罚 4 让可用 IOPS 只剩盘数的四分之一,性能与预期差距很大
  • 只看「能坏一块盘」就认为安全:降级运行期间整个阵列没有任何冗余余量,重建期间再坏一块即全盘不可用
  • 从不做校验巡检:静默坏道积攒到重建时才暴露,容易在恢复过程中翻车,应定期 scrub 或 patrol read
  • 用不同容量或不同转速的盘混搭:容量按最小盘计,性能按最慢盘计,扩容时还会卡住
  • Write Back 写策略却没有电池或超级电容保护:掉电可能导致校验块与数据块不一致,重建时才发现数据不可用
  • 把 RAID 5 当容量方案却不做校验巡检:静默坏道一直攒着,直到重建那一刻才集体爆发
  • 盘数越多越安全的错觉:RAID 5 的容错始终是一块盘,盘数增加只提高了重建失败的概率与窗口长度

数据来源与参考

  • Broadcom MegaRAID 用户指南(RAID 5)
  • man 8 mdadm(--level=5)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌