网络编码已经能用于修复存储故障
2026-05-26
16

做分布式存储的人都知道,网络编码这套思路在论文里很漂亮,用更少的修复流量把坏掉的存储节点补回来。问题是,理论上“省带宽”和工程上“跑起来”中间隔着很大一段路。很多现实的问题需要回答:用户怎么正常读写?故障时谁来协调修复?存储节点要不要变聪明?把这套东西塞进一个文件系统里,和大家熟悉的 RAID-5、RAID-6 一起比,到底是赢是输?
这项研究做成了一个真正能挂载、能读写、能修复的分布式文件系统原型,名字叫 NCFS。作者想解决的不是某一个编码公式,而是更接地气的问题:网络编码类修复方案,到底能不能以一个正常文件系统的样子落地,落地之后值不值得用。
NCFS 的思路很适合用大白话理解。不要求每个存储节点自己会协调、编码、互相商量着修数据,而是在存储节点前面放一个“中间层”做代理。用户看到的还是一个普通挂载点,论文里给的例子是 /mnt/ncfs。你正常上传、下载文件时,NCFS 帮你把数据切成块、编码、分发到后面的多个存储节点。节点坏了以后,NCFS 把幸存节点里的数据读出来,在中间完成重建,再把该补的数据写到新节点上。这样一来,后端存储节点不必变成“会网络编码的智能节点”,很多现成设备也能接进来。
图 2回答的问题是:NCFS 到底是一个什么位置上的东西。其实它夹在“用户应用”和“底层存储节点”之间这层。作者不是把网络编码直接焊死在每个存储节点里,而是做了一个分层架构,把文件系统逻辑、编码逻辑和存储访问逻辑拆开。这个设计不仅使“代码更整齐”,更让同一个文件系统框架里可以更换不同存储方案。今天可以接 RAID-5、RAID-6 和 E-MBR,明天也可以继续塞别的编码方案进去,不必把整个系统推倒重来。

这篇论文的主发现是:把它放进真实网络环境里,优势和代价都变得十分具体。作者拿 NCFS 做了三类操作对比,分别是正常上传下载、节点故障下的降级下载,以及节点故障后的修复。对比对象既有传统的 RAID-5、RAID-6,也有一类追求最小修复带宽的再生码实现,叫 E-MBR。有意思的地方是研究不是只拿一个指标喊胜利,同时还看了“读写怎么样”和“坏了以后修得快不快”。
图 6展示真发生节点故障时,网络编码类方案在修复速度上到底能带来多大现实收益。图 6 (a) 里,单节点故障修复时,E-MBR(k=n-1)的有效修复吞吐分别能达到 RAID-5 的 1.91 倍和 2.61 倍。原因是 E-MBR 修复时要从幸存节点拿回来的块更少,所以整个修复过程更省流量,不易被编码计算拖住。

图 5 则说明这种优势不仅体现在“后台修复”上,也回答了“节点坏了,系统继续提供读服务时,谁更扛得住”。可以看到图 5 (a) 和5 (b) 里 E-MBR 相对 RAID 的降级下载表现。单节点故障时,E-MBR 的下载吞吐高于 RAID,原因是每个丢失的原始块都有一份副本可直接拿来读,不必像 RAID 那样额外碰对应的校验块。两节点故障时,E-MBR(k=n-2)在千兆交换机场景下也优于 RAID-6,作者特别说明,这和 RAID-6 需要做 Reed-Solomon 计算、计算负担更重有关。这篇论文不只在修复完之后看结果,在故障还没处理完时,也看系统能不能维持较好的读性能。

这篇论文没有把网络编码写成“全场景无脑碾压”。图 4 告诉我们,正常下载时,各方案其实差不多;正常上传时,谁占优取决于要不要额外碰校验块、要不要做更重的计算。比如在 n=4 的例子里,论文给出实际存储量分别是:RAID-5 约 341 MB,RAID-6 是 512 MB,E-MBR(k=n-1)也是 512 MB,而 E-MBR(k=n-2)要到 614 MB。说明E-MBR 想省修复流量需要拿更多存储开销来换。再看图 6,到了部门网络这种带宽更受限的环境里,E-MBR 相对 RAID 的修复优势会变小,因为瓶颈不再只是“从幸存节点拿多少块”,“NCFS 把重建好的块再写回新节点”这一段也会卡住。也就是说,理论里最小化修复带宽,并不等于所有真实网络里都最优。

作者简介:胡燏翀,华中科技大学计算机科学与技术学院教授、博士生导师。主要研究分布式存储系统与容错编码技术,聚焦数据中心环境下的高效数据修复与系统可靠性优化。
DOI:10.1109/ISNETCOD.2011.5978919