纠删码:确保RAID失效后的存储耐用性
IT168 发表于:11年08月19日 09:15 [转载] IT168
纠删码是一种前向纠错技术,几十年来一直以多种方式被使用,现在这项技术正逐渐兴起于一种新的高容量存储系统中,用以解决RAID的局限性。
RAID在保护大容量驱动中的数据时有一些后继无力,因为RAID技术是在1GB驱动器出现前发明的。其基本理念是将数据分散在这些小的驱动器上,因此单个硬盘故障不会导致数据丢失。
当今的高密度磁盘驱动器让数据保护变得更加复杂了过去的20年间,驱动器的密度增加了两万多倍。企业级存储系统装有的单个驱动器容量就达2TB或3TB。此外,存储容量成本也很大程度地降低了:一个2TB的SATA驱动成本约为0。
分析:用更大的磁盘改变RAID的施展空间
这些新的高密度驱动的成本/容量使以比过去更具吸引力的价格将大量数据存储到旋转存储介质中提供了可能。那么,将大规模的数据保存到高密度驱动上,比如说P级别甚至更大量的数据会出现什么问题呢?
目前的1TB 和 2TB磁盘驱动器中,RAID很容易导致数据丢失,因为RAID的重建过程很长,需要一天或者更长的时间来完成某些安装启用。.如果任务的优先级较低,保证正常I/O性能时,重建过程甚至会更长。
如果磁盘驱动器密度继续增加,重建时间会长达数周也是不足为奇的。随着驱动器数量在可控范围内不断的增加,根据磁盘驱动标准年故障率不高于3%的行业标准,一些用户将必须不断地进行RAID重建。
在RAID-5上增加第二层保护,也就是现在的RAID-6,这个方法保护数据不受两个同时发生的磁盘驱动故障而不是单个故障的影响。这是为了应对驱动密度增加到几万兆字节出现的技术。
处理大量磁盘驱动器尤其是长时间重建的时候,第二个驱动器故障(RAID-5组中),或第三个驱动器故障(RAID-6组中)出现的可能性会大大增加。此外,重建RAID组的时候,如果系统碰到一个不可恢复的读错误(URE)将导致数据丢失。丢失6个或以上的磁盘驱动器,并且每个上面存有1T容量或更多的数据的话,将对一些企业造成灾难性打击。
纠删码工作原理解析与实现效果
纠删码能站在接受者的角度,将数据变成多个数据包,编入额外的信息,发送给接受者,然后解码并重新组成原始数据。关键是接受者能重组数据,即使是在某些数据包在传送过程中丢失的情况下(也就是说,接受者有原始数据包的子集)。
纠删码是伴随这CD,DVD和蓝光光碟的出现而兴起的一种数据保护方式,这些光碟即使出现了划痕或者光盘表面出现严重损坏,仍然可从中读取数据。应用程序中最常见的纠删码算法就是大家所熟知的里德所罗门码,它是上世纪60年代在麻省理工学院的林肯实验室开发出来的。
纯纠删码算法的使用可以实现RAID-6中双驱动器故障下的数据保护。某些安装程序实现了针对故障的多重数据保护,还有一小部分甚至能够允许用户(或存储管理者)将保护水平细化成具体策略。
比如,管理者可以选择数据可用度是在16个磁盘中出现4次故障的时候仍继续可用呢,还是16张磁盘出现6次故障的时候,或是30张磁盘出现10次故障的时候仍可用。这就解决了传统的RAID不能两个硬盘同时出现故障的关键性问题。
存储数据可用性可通过数据编码和分布来实现。写入的数据(例如文件、视频或图像数据)先分解成一系列的数据块。然后通过适用于这些数据块的纠删码机制进行改造,并生产较大的纠删码验证块。