硬盘数据持久性:块级 RAID 与对象存储擦除编码

我们已经广泛地记录了对象存储与擦除编码如何比块存储RAID在数据持久性、容错和恢复时间方面更胜一筹。存储技术世界的其他部分开始意识到我们是正确的,并且RAID,一种本质上是20世纪80年代的技术,已经过时,无法提供始终在线的数据驱动云原生数据中心所需的数据保护。
两项最新的大型研究,一项来自Secure Data Recovery,另一项来自Backblaze,发现平均HDD的故障时间分别在2年10个月和2年6个月之间。Secure Data Recovery对2007个硬盘驱动器进行了故障率研究,而Backblaze则对由72种不同型号组成的17155个硬盘驱动器的故障率进行了研究。这两个结果一致,并且Backblaze的研究具有统计意义。
如下所示,Backblaze按制造商、型号和大小划分了故障情况

Backblaze在其报告中指出,12TB Seagate ST12000NM0007的故障时间远早于平均水平,仅为1年6个月,而且它的故障率高于他们数据中心中的任何其他硬盘驱动器。唯一故障率更高的HDD是4TB Seagate ST400DM000,但这些硬盘的平均使用寿命为3年3个月。查看Backblaze所有HDD的所有数据,而不仅仅是最新的季度数据,总的年度故障率(AFR)为1.4%,而某些型号,例如4TB Seagate ST400DM000的AFR是其两倍。Backblaze的完整数据集在其硬盘驱动器测试数据页面上可用。
存储管理员从经验中知道,持续使用的HDD会发生故障,现在我们可以对此进行量化,并宣布平均HDD的故障时间不到3年——如果您使用的是Seagate,则不到2年。在单个RAID阵列中丢失多个硬盘驱动器的可能性随着数据中心中硬盘驱动器数量的增加而增加(更多HDD等于更多故障)。RAID的另一个问题是,硬盘驱动器必须在发生故障后立即更换。这会增加运营成本。每隔几个月运行数据清理以检测和修复静默数据损坏会进一步增加所需的运营工作量,同时降低性能。
更好的解决方案是依赖于MinIO中提供的具有Bitrot保护的分布式擦除编码。RAID没有足够的奇偶校验来防御我们现在知道的HDD故障的统计速率。EC将掩盖这些故障,并大幅降低运营成本,同时延长基础设施的使用寿命。
尽管块级RAID得到广泛实施,但在大型部署中使用时会导致很多问题。该技术是为单服务器环境设计的,而不是为了支持分布式数据存储。云原生架构需要对象存储,但块级RAID不知道什么是对象。RAID无法修复存储在跨多个节点分布的驱动器上的对象,甚至无法修复对象,它修复的是块,这意味着它必须重建整个驱动器才能修复单个损坏的对象。
使用块级RAID重建驱动器非常耗时。以RAID 6为例。当驱动器发生故障时,它会从物理上被停用,用一个新的驱动器替换,然后RAID控制器从旧驱动器重建现有块级数据到新驱动器。查看上表,目前使用的大量驱动器容量超过10TB。重建驱动器所需的时间可以看作是驱动器容量/RAID吞吐量——对于10TB HDD,大约是14个小时。
现在我们可以评估HDD故障的影响。HDD的平均故障时间约为2.5年,重建它们大约需要一个工作日(如果不是更长的时间,我们现在看到很多20TB的驱动器)。像Backblaze运营的数据中心那样的大型数据中心拥有大约225,000个HDD。他们需要人员每天更换和重建大约10个硬盘驱动器(225,000 x 1.4% / 365)并重建10个RAID阵列。这将导致大量的停机时间。
MinIO以分布式方式在对象级别实现了擦除编码,并且在发生硬件故障的情况下,可以重建对象,而不会产生停机时间或影响性能。擦除编码比RAID更适合对象存储,因为对象在写入后是不可变的,并且它们会被频繁地读取。MinIO的擦除编码和解码速度与底层硬件支持的速度一样快。
MinIO在跨多个驱动器和节点的对象级别进行修复。与在卷级别进行修复的RAID相比,这是一个重大优势。损坏的对象可以在MinIO中几秒钟内恢复——与RAID重建整个卷所需的时间相比,这是一个重大改进。
然后还有BitRot,即静默数据损坏。MinIO使用HighwayHash算法在读取时计算哈希值,并在从应用程序写入时对其进行验证。MinIO以高度高效的方式执行此操作,可以在单个核心Intel CPU上实现10GB/秒以上的哈希速度。上面提到的两项研究都没有区分BitRot和其他类型的故障,但我们知道,随着HDD老化,BitRot的可能性会增加。由于BitRot会损坏块,而RAID是块级技术,因此在单个驱动器发生故障后,有可能丢失整个RAID组,因为损坏的块将用于重建新驱动器。对于对象存储擦除编码来说,这不是问题。
MinIO擦除编码,实现更高的数据持久性
这篇博文解释了RAID没有足够的奇偶校验来防御我们现在知道的HDD故障的统计速率。依赖于HDD RAID阵列的数据中心不可避免地会遇到驱动器故障,以及用替换驱动器重建RAID集所需的几个小时停机时间。这不是在现代始终在线的世界中竞争的方式。
MinIO擦除编码可以保护和修复对象,而不会产生停机时间,并且对性能的影响可以忽略不计。
查看我们的擦除编码计算器,详细了解MinIO擦除编码。