RAID 6 是什么
RAID 6 在 RAID 5 的基础上再加一套独立校验:除了异或得到的 P 校验,还有一份基于伽罗瓦域乘法的 Q 校验,两份校验分布在不同盘上,因此任意两块盘同时故障仍可重建全部数据。代价是最少要 4 块盘、固定损失两块盘的容量,写入要同步更新 P 与 Q,写惩罚升到 6。它解决的核心问题是:大容量盘重建窗口太长,RAID 5 的一盘容错撑不住这段窗口。
基本信息
| 最少盘数 | 4 块,生产常用 6~12 块一组 |
|---|---|
| 容量公式 | (N - 2) × 单盘容量 |
| 容错 | 2 块盘同时故障;坏一块后仍剩一块容错,可从容安排换盘窗口 |
| 写惩罚 | 6(满条带对齐写为 4);小随机写性能明显低于 RAID 10 |
| 校验构成 | P 为异或校验,Q 为伽罗瓦域乘加校验,两份轮转分布 |
| 典型平台 | Linux mdadm --level=6、MegaRAID/PERC、部分老控制器对 RAID 6 支持有限 |
典型使用场景
- 8TB 以上大容量近线盘组建的阵列:重建动辄一天,必须留两块盘的容错
- 备份落盘、归档与冷数据卷:写入压力小,容量利用率优先
- 盘数多(10 块以上)的阵列:盘越多,任一时刻有盘异常的期望越高
- 无人值守机房或远程站点:现场换盘成本高,先扛住两块盘再等上门
- 反向提醒:OLTP 数据库、虚拟化小随机写场景不选 RAID 6,写惩罚 6 的代价高于多一块盘的容错收益
容量与 IOPS 估算
容量与 IOPS 估算
# 8 块 8TB 7.2K SATA 盘,单盘随机 IOPS 按 75 估
可用容量 = (8 - 2) x 8TB = 48TB # 固定损失两块盘容量
随机读 IOPS = 8 x 75 = 600 # 读不碰校验
随机写 IOPS ≈ 8 x 75 / 6 = 100 # 写惩罚 6:两套校验各自读改写
满条带对齐写 IOPS ≈ 8 x 75 / 4 = 150 # Q 校验仍需计算,惩罚降到 4
重建窗口:按 100MB/s 限速,8TB 盘约 22 小时以上不同盘数的可用容量对比
| 盘数(8TB) | RAID 5 可用 | RAID 6 可用 | RAID 6 少掉的容量 |
|---|---|---|---|
| 6 块 | 40TB | 32TB | 8TB(一块盘) |
| 8 块 | 56TB | 48TB | 8TB(一块盘) |
| 12 块 | 88TB | 80TB | 8TB(一块盘) |
mdadm 与 storcli 创建
mdadm 与 storcli 创建
mdadm --create /dev/md1 --level=6 --raid-devices=6 --spare-devices=1 --chunk=512 /dev/sd[b-h]1
cat /proc/mdstat # 确认级别为 raid6 且成员齐备
storcli /c0 add vd type=raid6 drives=252:0-7 pdcache=off wb direct # 硬件卡上建 RAID 6
storcli /c0/v0 show all | grep -Ei 'RAID|State|Size'RAID 6 的降级运行比 RAID 5 从容:坏掉一块盘后阵列仍处于带校验状态,换盘可以等采购到位、等业务低峰;这也是大容量盘阵列愿意多付一块盘容量的原因。
Q 校验的乘加运算由控制器或 CPU 承担:老款 RAID 卡上 RAID 6 的写性能可能明显低于同盘数的 RAID 5,选型前查卡的规格与固件,别只看级别名。
运维要点
- 定期做校验巡检(scrub、consistency check、patrol read),把静默坏道在健康状态下暴露出来,别留到重建时才撞上
- 坏一块盘后不必慌忙换:仍剩一块容错,但要尽快登记工单、准备同规格新盘
- 重建限速按业务时段调整,夜间拉高重建速率,白天回落到不影响业务的水平
- 热备盘按阵列容量匹配:容量偏小或残留 Foreign 配置的热备在真故障时接不上