硬盘做到 16TB,RAID 5 反而变成定时炸弹

大约十五年前,给服务器组一套 RAID 5 几乎是存储方案里的“标准答案”:容量大、能坏一块盘、成本还低。可到了今天,当单块硬盘膨胀到 16TB 甚至 20TB,RAID 5 昔日的最大优点,恰恰变成了最致命的软肋。

问题核心在于一个听起来很枯燥的指标:不可恢复读错误率,英文缩写 URE。消费级 SATA 硬盘通常标称每读取 10^14 位(约 12.5TB)数据,就可能遇到一次读不出的坏扇区。企业级硬盘稍好,大约是 10^15 位,也就是 125TB。这个指标在过去二十年里几乎没怎么变,而硬盘容量却从几百 GB 一路涨到了几十 TB。

当年 RAID 5 重建一块 500GB 硬盘,控制器只需要从其他盘里读几百 GB 数据,几个小时就能跑完。重建窗口短,坏第二块盘的概率基本可以忽略。可如今坏了一块 16TB 硬盘,阵列进入降级状态后,控制器必须完整读取每一块幸存盘的全部表面数据——可能是 12 小时到数天不等,期间所有盘都在接近 100% 的负载下狂奔。只要在这期间任意一块幸存盘弹出一个 URE,对应条带就无法重建,严重时整个重建直接失败。

换句话说,RAID 5 的设计逻辑没变,但硬盘容量把它拖进了一个数学陷阱:重建所需读取的数据总量,已经远超消费级硬盘的 URE 规格。

这个观点并非今天才有。2007 年,存储分析师 Robin Harris 在 ZDNet 上发表了一篇后来被视为经典的文章,标题就叫《Why RAID 5 stops working in 2009》,核心论断正是:容量持续增长,URE 不变,RAID 5 迟早会在重建时翻车。

不过现实比最坏的概率模型要温和一些。微软曾经用廉价硬件刷过约 2PB 数据,实际遇到的读错误远低于厂商标称值。所以“RAID 5 已死”的说法有些夸大,但“RAID 5 变得很脆弱”却毫不夸张。

更隐蔽的风险是同批次老化。很多企业或家庭 NAS 里的硬盘是一次性采购、同一型号、同一批次,服役年限和磨损状态高度同步。当第一块盘因老化去世,剩下的盘本来就站在故障边缘,而重建过程的高强度读写,往往会把下一块“亚健康”的盘直接送走。这才是 RAID 5 在现实中屡屡翻车的真正原因。

那应该怎么选?如果数据重要,且用的是 8TB 以上的大容量机械硬盘,RAID 6、RAIDZ2 或 RAID-DP 这类双校验方案才是更稳妥的默认选择。双校验意味着重建时即便再碰到一个 URE,也能从另一个校验中恢复出来。RAID 5 并没有死透,但在大容量硬盘时代,它已经不适合作为关键数据的唯一防线。

来源:How-To Geek / Monica J. White