本文作者Howard Marks是Networks Are Our Lives公司的首席科学家。这家公司总部位于新泽西州霍博肯,从事顾问工作。1987年以来,他一直专注于系统的分析和写作。
就像我在前几篇博文中提到过的那样,基于校验码的RAID解决方案(廉价磁盘冗余阵列)背后的基本算法开始遇到瓶颈。我认为我们应该对这个问题提高警惕,不过更重要的是寻找可以代替校验码RAID的技术。一个主要的替代方案就是Reed-Solomon(里德-所罗门)删除码。一些厂商已经开始使用这种删除码来作为替代校验码或镜像的有效的解决方案。
如同我们前面所讨论过的那样,校验码RAID的主要问题是磁盘驱动器容量膨胀的速度远远超过这些驱动器处理速度和可靠性的提升速度。几年后,我们将使用10TB(10的13次方比特)驱动器。这种驱动器将需要10个小时才能从头读到尾,因此RAID的重建过程可能需要好几天时间,很有可能因为其他驱动器的读取错误而陷入故障。
Reed-Solomon删除码(之所以叫这个名称是因为这个技术最初是作为前向纠错方式,目的是在不可靠的有可能传输错误或删除某些数据的通道上传送数据)可以将RAID-5简单的N+1数据保护模式扩展到更高水平的保护模式。校验码和CRC(循环冗余校验)是将数据分离出错误纠正或校验数据,而删除码则是扩展数据并增加冗余度,因此即使数据的一部分遭到破坏或丢失,系统还是可以从剩余部分中恢复原始数据。
删除码的出现已经有好几十年了。删除码技术早就已经应用在深空探测的数据传输应用中。这种应用往往有好几分钟的延迟,因此TCP类型的时间过时和重新传输在这种应用中不可行。此外,删除码技术也应用在CD和DVD中以应对灰尘、刮伤以及脆弱的光盘表面所遭受的其他损伤。甚至企业存储领域也在悄悄地应用删除码。在N+2 RAID-6实施中,一些厂商使用Reed-Solomon算法来计算ECC(错误纠正代码)。
当厂商们开始扩展到N+2以上的保护模式的时候,删除码确实变得更加有吸引力。NEC的HydraStor重复数据删除网格系统使用删除码将每个数据块分布在网格内的12个磁盘驱动器内。在9比12的保护水平下,原始数据可以从12个数据块中的任意9个数据块中恢复回来。Hydrastore的用户可以将保护水平设置到6比12。6:12的保护模式和镜像一样有50%的开销,但可以在6个驱动器故障的情况下恢复数据。
Cleversafe已经将删除码编码扩展到包含地址信息,创建了它们所谓的分散编码。这样的方式让他们可以确保块不仅可以存储在不同的磁盘驱动器或不同的RAIN(独立节点冗余阵列)集群节点上,甚至可以存储在不同的数据中心上。通过他们的缺省编码,也就是要求为每个数据条带在16个块中创建10个块以便恢复原始数据。你可以让系统将数据分布到三个数据中心上,如果一个数据中心离线,你仍然可以继续读取数据,而系统开销则不超过40%。与此形成对比的是,一个典型的三数据中心复制方案会带来200%的开销。
Cleversafe同时还指出分散编码不像通常的RAID那样将数据存储在某些块而将ECC信息存储在另外的一些块,分散编码是将所有数据予以改造,让每个块都包含编码后的数据以及前向错误纠正信息。因此,从恢复数据上来说,它所需要的块集最少。
现在,NEC和Cleversafe准备将它们的解决方案应用在二级存储应用上。在这种应用上,延迟性并不是用户关心的主要问题。也许删除码可以进入到更加主流的应用中。