定义

擦除编码

擦除编码(Erasure coding, EC)是一种数据保护的方法,它将数据分解成碎片,进行扩展和编码冗余数据片段并存储在一组不同的位置或存储媒体上。

如果一个驱动器故障或数据损坏,可以从存储在其他驱动器上的段重建数据。通过这种方式,EC可以帮助增加数据冗余,而没有不同实现带来的开销或限制突袭

擦除编码是如何工作的?

擦除编码的工作原理是将数据单元(如文件或对象)拆分为多个片段(数据块),然后创建可用于数据恢复的附加片段(奇偶校验块)。对于每个奇偶校验片段,EC算法根据原始数据片段计算奇偶校验值。数据和奇偶校验片段存储在多个驱动器上,以防驱动器发生故障或其中一个驱动器上的数据损坏时数据丢失。如果发生此类事件,可以使用奇偶校验片段重建数据单元,而不会丢失数据。

例如,存储系统可能使用5+2编码配置在多个物理驱动器上分发数据。在这种配置中,EC算法将每个数据单元分解为5个数据片段,然后从原始数据中计算出两个奇偶校验片段。每个片段存储在一个不同的物理驱动器上。因此,存储系统必须包含至少7个驱动器。

在5+2配置中,校验数据会消耗40%的裸容量。配置还可以容许最多两个磁盘故障,硬盘是否包含数据分片或校验分片。然而,EC足够灵活,可以支持广泛的配置。例如,17+3编码将每个数据单元分割成17段,然后添加3个奇偶校验段。尽管这种配置需要至少20个物理驱动器,但它可以支持最多3个同时磁盘故障,同时将奇偶校验开销降低到18%以下。

擦除编码可视化
使用擦除编码,数据存储在不同的磁盘上,以防止任何单点故障。

由于数据可以从奇偶校验碎片中重建,擦除编码使得保护数据不需要完全复制它成为可能。例如,在一个简单的2+1配置中,一个数据单元被分割成两个段,其中添加了一个奇偶校验片段以进行保护。如果应用程序试图从其中一个数据段检索数据,而这些数据段是可用的,则操作将照常进行,即使奇偶校验段不可用。

但是,如果第一个数据片段可用而第二个数据片段不可用,或者相反,则从第一个数据片段和奇偶校验片段读取数据。这两个片段一起被用来重建数据这是在第二个片段中,使得在重建磁盘时继续数据操作成为可能。

擦除编码与RAID

擦除码(Erasure code),也被称为前向纠错码(forward error correction code),是50多年前开发出来的,用于帮助检测和纠正数据传输中的错误。该技术已被用于存储,以帮助在驱动器故障或数据损坏的情况下保护数据。最近,EC在用于大型基于对象的数据集(尤其是云中的数据集)方面越来越受欢迎。随着数据集的持续增长和对象存储的更广泛实现,EC正逐渐成为RAID的可行替代方案。

突袭

RAID依赖于两种主要的数据保护机制:镜像和奇偶校验条带。镜像是数据保护的最基本形式之一。当单独使用时,它被称为RAID 1。在这种配置中,数据的多个副本存储在两个或多个驱动器上。如果一个驱动器出现故障,数据可以从其他驱动器中检索,而不会中断服务。镜像很容易实现和维护,但是占用大量存储资源,就像任何形式的复制一样。

RAID 5是指在多个硬盘上对数据进行分条,并添加校验块来保护数据。如果一个驱动器出现故障,可以使用其他磁盘上的数据重新构建丢失的数据。RAID 5一次只能支持一个硬盘故障。由于这个原因,一些供应商提供RAID 6存储系统,它可以处理最多两个同时发生的磁盘故障。不同的RAID配置也可以组合在一起,比如RAID 10,它使用磁盘镜像和无奇偶校验的数据条带来保护数据。

多年来,各种RAID配置一直是数据中心操作的重要组成部分,因为这种技术很容易理解,并且已经被证明是适用于各种工作负载的可靠数据保护形式。然而,RAID带来了巨大的挑战。例如,镜像在资源利用方面效率很低,而带奇偶校验的条带化最多只能防止两个同时发生的磁盘故障。

RAID的另一个问题与容量有关。随着磁盘驱动器变得更大,如果驱动器发生故障,则需要更多的时间来重建驱动器。这不仅会影响应用程序的性能,还会增加丢失数据的风险。例如,如果一个驱动器故障配置为RAID 5,它可能需要几天时间来重建该驱动器,使存储阵列处于脆弱的位置,直到重建完成。磁盘失效也会影响应用程序的性能。

擦除编码

在某些情况下,可以使用擦除编码代替RAID来解决其局限性。Erasure编码可以超过RAID 6的容错驱动器数量,从而提高容错级别。在10+6擦除编码配置中,16个数据和极性段分布在16个驱动器上,从而可以同时处理多达6个驱动器故障。

擦除编码也比RAID灵活得多,RAID的配置相当严格。通过EC,组织可以实现一个存储系统来满足他们特定的需求数据保护的需求. 此外,根据磁盘的配置和数量,EC可以减少重建发生故障的磁盘所需的时间。

尽管有这些好处,电子商务有一个严重的缺点:它对性能的影响。擦除编码是一项需要大量处理的操作。EC算法必须针对写入到存储的所有数据运行,数据和奇偶校验段必须跨所有参与磁盘写入。如果磁盘出现故障,重新构建操作会对CPU资源造成更大的压力,因为必须动态地重新构建数据。RAID配置,无论是镜像还是带奇偶校验的条带配置,对性能的影响要小得多,通常可以提高性能。

为什么擦除编码有用?

专业云存储Amazon Simple Storage Service (S3)、Microsoft Azure和谷歌Cloud等服务广泛使用擦除编码来保护其庞大的数据存储。擦除编码在保护对象存储系统和分布式存储系统方面尤为有效,非常适合云存储服务。也就是说,擦除编码也已经进入了本地对象存储系统,比如Dell EMC弹性云存储(ECS)对象存储平台。

擦除编码可以用于大量数据和任何必须容忍故障的应用程序或系统,如磁盘阵列系统、数据网格、分布式存储应用程序、对象存储和归档存储。今天的大多数用例都围绕着大型数据集,对于这些数据集,RAID并不是一个实用的选择。为了支持EC,基础设施必须能够交付必要的性能,这就是为什么它的主要用例是与主要的云服务。

擦除编码通常被推荐用于备份或归档等存储——这些类型的数据集是相当静态的,不需要写密集。也就是说,为了避免复制的高成本,擦除编码正在各种系统中找到自己的方式。例如,许多Hadoop分布式文件系统(HDFS)实现现在使用EC来减少与跨数据节点存储冗余数据相关的开销。此外,对象存储平台,如日立内容平台现在支持擦除编码保护数据。

擦除编码的好处是什么?

尽管RAID仍然是一种有用的数据保护工具,但EC提供了一些重要的好处,在规划数据存储时应该考虑到:

  • 更好的资源利用率。复制技术,如RAID 1镜像,使用高百分比的存储容量用于数据副本。擦除编码可以显著减少存储消耗,同时仍然保护数据。容量节省的确切数量将取决于编码配置,但无论如何,它仍将转化为更高的存储效率和更低的存储成本。
  • 降低数据丢失的风险。当RAID阵列由高容量磁盘组成时,重建一个故障的磁盘可能需要非常长的时间,如果在第一个磁盘重建之前,另一个磁盘发生故障,这就增加了数据丢失的风险。根据编码配置,Erasure编码可以处理更多同时发生的磁盘故障,这意味着如果驱动器宕机,数据丢失的风险更低。
  • 更大的灵活性。RAID往往局限于相当固定的配置。尽管厂商可以实现专有的RAID配置,但大多数RAID实现都是相当标准的。擦除编码提供了更大的灵活性。组织可以选择最适合其特定工作负载和存储系统的数据与奇偶校验比率。
  • 更耐用。通过Erasure编码,组织可以配置高可用性和高耐久性的存储系统。例如,Amazon S3是为跨对象的99.999999999%对象耐久性而设计的多个可用性区域.与RAID 6不同(RAID 6只能支持两个同时发生的磁盘故障),基于ec的系统可以配置为处理更多的故障。

在规划存储策略时,组织必须考虑几个因素,包括如何防止数据丢失和提供灾难恢复。直接复制是一种方法,RAID是另一种方法。擦除编码是另外一个。

每种策略都有优缺点。然而,随着数据量的不断增长和向对象存储的持续移动,EC注定会获得发展势头。擦除编码使组织能够满足他们的可伸缩性需求并且仍然保护他们的数据,而不产生完全复制的高成本。即便如此,没有一种技术能在不适应行业变化的情况下蓬勃发展,而今天的欧盟在未来五年内可能会有很大的不同。

这是最近更新的2021年1月

继续阅读关于擦除编码

深入挖掘固态存储

搜索灾难复苏
搜索数据备份
搜索聚合基础设施
关闭
Baidu