三月 22nd, 2019

什么是擦除编码?

擦除编码(Erasure Coding, EC)是一种提高数据冗余性和可靠性的数据存储方法。在一个存储结构的数据完整性和可靠性如此重要的时代,诸如擦除编码等技术对于将健壮性构建到存储结构中有很大的帮助。在擦除编码中,存储在磁盘上的数据被分割成比特,然后对每个片段进行编码,以实现高级别的保护,然后存储在不同的磁盘中,以实现高数据可靠性。

如想了解什么是擦除编码,么这篇文章将带你详细了解它。我们会讲到擦除码的起源,擦除码的目的,擦除码是如何工作的以及擦除码带来的好处。让我们开始解释擦除编码。擦除编码有着40多年的丰富历史,并被引入到通信系统中,使其具有更强的容错性。从一开始,就有各种形状和大小的存储类型。然而,在所有这些存储类型和设备中有一件事是共同的,那就是它们都可能失败。故障的发生有多种原因,包括物理故障、自然灾害、停电等。这会导致很多麻烦且浪费时间和精力。因此,工程师们开始思考如何存储设备和其中的长数据。

擦除编码的第一个版本是在一种称为RAID-1的非常流行的存储系统技术中引入的。这里发生的基本上是存储在驱动器上的每个字节的数据被复制到另一个驱动器上。因此,如果主存储驱动器发生故障,则可以在辅助驱动器上安全地插入数据以恢复操作。但这也伴随着一个明显的巨大缺陷,将所有这些数据复制两次会占用大量存储空间,而且很多资源只用于备份,这不是很有效。随着时间的推移,擦除编码变得越来越高级,但重要的是要了解它的起源,以便非常清楚地了解它。让我们继续。

当然,擦除代码的基本目标是增加数据冗余,并在主数据驱动器或存储系统发生故障时确保故障自动保险。但它不会就此结束。由于仅用于备份的存储空间很大,因此需要在更高的级别上确保数据冗余,同时更好地利用资源。因此,简单地说,擦除编码通过跨多个驱动器进行数据复制,努力为数据创建故障保险,而不会牺牲资源利用率。据观察,擦除编码非常适合高级存储,例如在云主机中使用的Ceph存储,这使其成为更可靠和可伸缩的虚拟主机选项。

擦除编码是如何工作的?

这部分有点棘手,因为数据复制需要在不占用大量存储空间的情况下进行。我试着用最简单的方法来解释一下。擦除编码的作用是生成一个被称为多项式插值的数学方程式。这个方程式将数据分割成相当数量的块,然后添加额外的或冗余的符号,以提供故障保护并帮助准确的数据检索。这些块接着分布在多个磁盘驱动器上。数据块与校验和块的比值决定了系统的容错能力。例如,k是块的数量,m是多余符号的数量。现在,k的个数大于m会导致存储系统的速度和容量更快,另一方面,相反的情况意味着更大的多余。根据需要,可以设置“k”和“m”的比值,以找到容量和多余之间的平衡。

我们从数学的角度来看。假设我们保持k为10,m为6,即我们有10个数据块和6个冗余符号。这16个块将放置在16个不同的驱动器/节点上。这将意味着从16个驱动器,可以使用任何10个恢复原来的10块的数据,这也意味着任何6驱动器可以失败,这比传统的只能处理2 – 3驱动器失败的 RAID处理更多。此外,根据上面的计算,您只需要额外添加的60%的容量就可以达到这种高水平的容错能力。这一结果可以总结将来擦除编码的好处。

擦除编码的好处

首先,擦除能够对系统进行更多的控制,以维护容量级别和数据冗余级别。如果系统需要提高容量以获得更好的性能,那么可以在不牺牲数据冗余的情况下做到这一点。如果有一个更强的故障保险更重要,系统可以变得更容错。这可能会随着时间而变化。使它非常适应云主机等应用程序,在这些应用程序中,您需要在可伸缩性和可靠性之间取得完美的平衡,以及有需要时向某个方向移动的选项。擦除编码的另一个优点是减少了拥有可靠和数据冗余存储系统所需的成本和资源。从上面的例子可以看出,即使16个驱动器中有6个出现故障,仍然能够通过仅增加60%的容量来恢复所有数据。这无疑节省了存储和资源成本。

在我们的一些高级托管选项中采用了这种技术,可以享受到这种尖端技术的好处。擦除编码集成到了我们的云主机服务中,与Ceph存储架构整合在一起。希望这些能帮助你理解什么是擦除编码。更好地了解它是如何工作的以及它的好处是什么。如有任何其他问题,请在下面的评论区畅所欲言。我们希望看到你所有的想法,激发讨论,以发现更多!

发表评论

电子邮件地址不会被公开。 必填项已用*标注