在很多公司里,RAID 故障的剧情往往是这样的:
“有一块盘坏了,没事,RAID 顶得住。”
“盘已经换上,开始 Rebuild 了。”
“怎么又坏了一块?!”
如果你觉得这是运气不好,那说明你低估了 RAID 重建阶段的风险。
RAID 重建期,是整个生命周期里最危险的阶段无论是 RAID 5、RAID 6,还是 RAID 10,只要进入 Rebuild 状态,都会出现三个明显变化:
磁盘 IO 模型彻底改变所有“健康盘”被迫进入满负荷扫描任何潜在的硬件缺陷都会被无限放大所以有一句在数据中心里流传很广的话:
“RAID 不是死在坏盘那一刻,而是死在重建那几天。”
RAID 重建到底在干什么?很多人对 RAID Rebuild 的理解停留在一句话:
“把数据重新算一遍。”
这句话不算错,但远远不够具体。
重建意味着什么?当一块盘损坏后,RAID 5 会进入降级状态,此时:
数据 = 剩余数据块 + 校验块每一次读,都要动态计算缺失数据当你插入新盘并开始重建,控制器要做的是:
从头到尾,扫描每一个 Stripe,用剩余磁盘 + 校验,重新生成新盘上的全部数据
注意几个关键词:
从头到尾每一个 Stripe全盘顺序读这意味着什么?
所有存活磁盘都会被完整读一遍,而且是一块不落。
为什么第一块盘已经“证明不行”,第二块反而更危险?直觉上很多人会觉得:
“最容易坏的不是已经坏过的那块吗?”
但现实恰恰相反。
同一批磁盘,寿命曲线高度一致在企业环境里,RAID 阵列中的磁盘通常具备以下特征:
同一品牌同一型号同一批次同一上线时间同一工作负载换句话说:
它们是“一起服役、一起变老”的。
第一块盘坏掉,并不是个例,而是一个信号:
这一批磁盘,已经整体进入高风险区间。
第一块盘坏,往往不是“突发事故”大多数磁盘并不是瞬间死亡的,而是经历过:
坏扇区逐渐增加SMART 指标慢慢恶化读错误次数上升只不过平时业务 IO:
是随机的是局部的很多坏块根本“没被读到”而 RAID 重建,正好会精准踩中这些地雷。
重建期间,磁盘遭遇了哪些“非人道待遇”?这是今天最核心的一部分。
在正常业务中:
某些冷数据可能几年不被访问某些扇区一直处于“沉睡状态”但重建期间:
每一块盘每一个扇区都必须被完整读取结果就是:
所有潜伏的物理缺陷,都会在这一次被强制暴露。
这也是为什么你经常看到:
重建到 30% 报错重建到 70% 阵列直接掉线URE这里必须讲一个关键概念:不可恢复读错误(URE)。
简单说就是:
磁盘在读取某个扇区时即便反复重试也无法返回正确数据对单盘系统来说,URE 可能只是:
“一个文件读不了”
但对 RAID 5 来说,后果是:
致命的。
因为在重建过程中:
某一 Stripe 已经缺一块盘再遇到 URE就等于该 Stripe 数据永远无法还原阵列当场宣告失败。
大容量磁盘,把概率问题变成必然事件早期 500GB、1TB 磁盘时代,URE 还算“低概率事件”。
但现在呢?
8TB12TB18TB20TB+理论上:
你重建一次 RAID 5,本质上就是在赌:在这十几 TB 的连续读取中,不会遇到一次 URE。
这不是技术问题,是数学问题。
重建 IO + 业务 IO重建不是后台“悄悄干活”很多人以为:
“重建是后台任务,不影响业务。”
现实是:
重建 IO 极其密集还无法完全被限速控制器优先级往往高于业务于是磁盘同时承受:
顺序读(重建)随机读写(业务)这是机械硬盘最不擅长的混合负载模式。
温度、震动、电压,一起上压力在这种负载下,磁盘会出现:
温度显著上升寻道频率暴涨马达与磁头长期满载对一块“本就接近寿命终点”的磁盘来说,这基本等同于:
加速送走。
RAID 6、RAID 10 就安全吗?很多人会问:
“那我用 RAID 6 / RAID 10,是不是就没这问题了?”
RAID 6能容忍 2 块盘同时损坏对抗 URE 的能力更强但重建时间更长磁盘压力持续时间更久风险不是消失,而是被推迟。
RAID 10重建只涉及镜像对不需要全阵列扫描重建速度快风险显著低于 RAID 5/6这也是为什么:
核心业务系统,更偏向 RAID 10。
真正重要的一句老话
RAID 不是备份。

RAID 解决的是:
可用性问题备份解决的是:
生存问题