acm-header
登录

ACM通信

实践

三重校验RAID及以上


值集

插图:加里·尼尔

回到顶部

当前的RAID技术还能坚持多久?RAID级别是在20世纪80年代后期制定的;双奇偶RAID,也就是RAID-6,是目前高可用性、高效空间存储的标准。然而,硬盘容量的惊人增长可能会对RAID-6系统的可靠性造成严重的限制。硬盘驱动器的最新趋势表明,三奇偶RAID必须很快普及。在2005年,科学美国人报告了克里德定律,11该公司预测硬盘密度每年将翻一番。虽然翻倍的速度没有完全保持这个速度,但已经很接近了。

对于RAID来说,问题在于硬盘吞吐量无法匹配指数级的增长速度。今天,在RAID组中修复一个高密度磁盘驱动器很容易就需要超过4个小时,而且随着硬盘容量持续超过其吞吐量,这个问题变得越来越明显。随着重新构建磁盘所需时间的增加,数据丢失的可能性也会增加。硬盘供应商在提高容量的同时保持可靠性的能力在这些页面中已经受到了质疑。5也许更糟糕的是,在几年内,重建将需要很长时间,以至于有效地去除一定程度的冗余。接下来是对RAID、硬盘驱动器行业的容量增长速度以及三奇偶RAID的需求的检查,以应对可靠性的下降。

第一个被称为RAID的系统是在20世纪80年代中期开发的。加州大学伯克利分校的大卫·帕特森、加斯·吉布森和兰迪·卡茨将这些系统在RAID(廉价磁盘冗余阵列)的保护罩下分为五个不同的类别。9在他们1988年的论文中,RAID扮演了雪橇(单个大型昂贵磁盘)的巨人大卫。这两者代表了计算机存储未来发展的根本不同的策略。尽管SLED以低廉的价格提供了专业的性能和可靠性,但aid寻求用廉价的部件组装可靠的、高性能的存储,这反映了计算机行业的一个更广泛的趋势。大宗商品零部件的经济发展势不可挡。

Patterson等人的结论似乎很有预见性:“由于在性价比、可靠性、功耗和模块化增长方面的优势,我们预计raid将在未来的I/O系统中取代sled。”9然而,他们将RAID描述为“由个人电脑磁盘组成的磁盘阵列”有点太具体了,也有点太乐观了。虽然RAID当然是用在那些便宜的、大容量的磁盘上,但实际上,RAID今天将算法可靠性和性能改进与磁盘结合在一起,磁盘本身通常是为性能和可靠性而设计的,因此仍然昂贵。这种演变反映在RAID from中I的含义的微妙但重要的突变中便宜的独立的(事实上,正是这些sledge制造商促成了这种转变,将新研究应用到他们现有的产品上)。

1993年,Gibson、Katz和Patterson,以及Peter Chen、Edward Lee,完成了RAID级别的分类,至今仍未修改。3.在描述的7种RAID级别中,只有4种是常用的:

  • raid - 0.为了获得最大的写性能,数据在设备之间进行分条。在其他RAID级别中,它是一个异类,因为它不提供实际的数据保护。
  • raid - 1.磁盘被组织成镜像对,数据在镜像的两端进行复制。这通常是性能最高的RAID级别,但以较低的可用容量为代价。(这个词raid 10Raid 1 + 0表示镜像对为条纹的RAID配置,RAID 01Raid 0 + 1参考然后被镜像的条带配置。这些术语的相关性越来越小,因为RAID组上的分条现在或多或少是假设的。)
  • raid - 5.维护N + 1块硬盘,保证任何一块硬盘的丢失都不会导致数据丢失。这是通过为N个磁盘块的每个逻辑行写入校验块P来实现的。这个奇偶校验的位置是分布的,在磁盘之间旋转,以便所有磁盘对交付的系统性能贡献相同。通常,P被简单地计算为行中其他块的位异或。
  • raid - 6.这类似于RAID-5,但对N+2个硬盘块的每个逻辑行使用两个校验块P和Q。有几种RAID-6实现,如IBM的EVENODD,2NetApp的行对角奇偶校验,4或者更通用的里德-所罗门编码。10(Chen等人将RAID-6称为P + Q冗余,有些人认为这意味着P个数据磁盘和任意数量的奇偶磁盘Q。事实上,RAID-6专门指双奇偶RAID;P和Q是两个奇偶校验块。)为了完整起见,值得注意的是其他不太流行的RAID级别:
  • RAID-2.数据采用内存式ECC(纠错码)保护。校验盘个数与数据盘个数的对数成正比;这使得RAID-2相对不灵活,效率低于RAID-5或RAID-6,同时性能和可靠性也较低。
  • RAID-3.与RAID-5一样,对N+1个磁盘组中的任何磁盘故障提供了保护,但块被分割并按位奇偶校验分布在磁盘中,这与RAID-5的块奇偶校验不同。此外,奇偶校验驻留在单个磁盘上,而不是分布在所有磁盘之间。对于较小的读请求,RAID-3系统的效率明显低于RAID-5;要读取一个块,必须访问所有磁盘;因此,读操作的容量更容易耗尽。
  • raid - 4.这仅仅是RAID-5,但是使用专用的奇偶校验磁盘,而不是在所有磁盘中分布奇偶校验。由于参与读取的磁盘更少(除非发生故障,否则不会读取专用校验盘),因此RAID-4的效率严格低于RAID-5。

RAID-6,双奇偶校验RAID,在Patterson, Gibson和Katz 1988年的原始论文中没有描述9但在1993年被添加,以响应观察,随着磁盘阵列的增长,双重故障的机会也会增加。此外,如果在任何冗余方案下发生故障,必须成功读取该冗余组内所有驱动器上的数据,以便重新构建故障驱动器上的数据。重新构建期间的读失败将导致数据丢失。正如Chen等人所言:

当磁盘发生故障,必须通过从未发生故障的磁盘读取数据来重构故障磁盘的内容时,就会感受到不可纠正的比特错误的主要后果。例如,在100GB磁盘阵列中重构一个故障磁盘需要成功读取大约2亿个扇区的信息。比特错误率为十分之一14Bits意味着不能正确读取240亿个扇区中的一个512字节扇区。因此,如果我们假设读取扇区的概率是相互独立的,那么成功读取所有2亿个扇区的概率大约为

ueq01.gif

这意味着,平均而言,0.8%的磁盘故障会由于不可纠正的比特错误而导致数据丢失。”3.

自那次观察以来,误码率提高了大约两个数量级,而磁盘容量增加了略多于两个数量级,大约每两年翻一番,几乎符合Kryder定律。今天,10TB(近200亿个扇区)的RAID组很常见,典型的误码率为十分之一16位:

ueq02.gif

虽然误码率几乎与磁盘容量的增长保持同步,但在确定RAID可靠性时,吞吐量没有得到应有的考虑。

作为推出RAID-6解决方案的动机,NetApp发布了一份容量相等(RAID-5为7+1,RAID-6为14+2)、硬盘质量和容量不同的RAID-5和6的小型比较。1注意,尽管有一个额外的奇偶校验磁盘,RAID-6不需要减少系统的总容量。7典型的RAID条带宽度—单个RAID组中的磁盘数量—RAID-6是RAID-5等效的两倍;因此,数据磁盘的数量保持不变。NetApp的比较不具体涉及被测试设备的误码率、驱动器本身的可靠性或计算数据丢失概率的周期长度;因此,我们没有试图重现这些具体的结果。重要的一点是图1是RAID-5和RAID-6之间数据丢失概率的明显测量差异。

在检查RAID解决方案的可靠性时,典型的考虑因素包括从组件驱动器的可靠性到人工管理员更换故障驱动器的时间。尽管驱动器的吞吐量对于RAID重构非常关键,但它并不是一个重点,因为吞吐量已经足够了。虽然误码率等因素与容量保持同步,但吞吐量已经落后,这迫使对RAID可靠性进行新的检查。

回到顶部

容量与吞吐量

容量稳定而显著地增加,而误码率也以几乎相同的速度提高。然而,硬盘吞吐量明显落后。使用供应商提供的硬盘数据表,我们已经能够检查过去10年硬盘容量和吞吐量之间的关系。图23.,4显示各种硬盘协议和转速的示例。

这个数据给出了一个关于所有类型的硬盘驱动器的容量和吞吐量增长的相对速率的强有力的结论——显然没有指数式的法则支配硬盘驱动器吞吐量。通过将容量除以吞吐量,我们可以计算完全扫描或填充驱动器所需的时间。正是这个持续时间决定了一个RAID组在没有完全奇偶校验保护的情况下可以工作多长时间。图5显示这种操作在多年中为各种驱动器类型所花费的时间。

当RAID系统在20世纪80年代和90年代开发时,重建时间以分钟为单位。过去10年的趋势是非常明显的,无论驱动器的速度或其市场细分:执行RAID重构的时间是指数级增长的,因为容量远远超过吞吐量。在极端情况下,在故障后重建一个完全填充的2TB 7200 rpm SATA磁盘,在理论上的最佳吞吐量下将需要4个小时。在实践中,很少能达到这样的数据速率;在大量使用系统的情况下,不能将全部带宽专门用于RAID修复而不影响性能。如果假设只有10% - 50%的系统总吞吐量可用于重构,那么实际上90年代的几分钟的RAID重构时间会膨胀到数小时或数天。RAID系统在这种降级状态下运行的时间比以前长得多,因此数据丢失的风险更高。

随着时间的推移,硬盘驱动器上的潜在数据可能会产生缺陷——这个过程被轻松地称为bit rot。为了缓解这一问题,RAID系统通常会执行后台清洗,根据需要读取数据、验证和纠正,以在故障变得不可纠正之前消除可纠正的故障。5擦洗数据的现象必然会影响系统性能,但完全擦洗所需的时间是整个系统可靠性的一个重要组成部分。在如何将优先级分配给擦洗与其他系统活动之间产生了自然的紧张关系。当吞吐量与容量相比相形见绌时,要么专门用于擦洗的资源百分比必须增加,要么完成擦洗的时间必须增加。根据前面提到的趋势,存储池很容易需要数周或数月才能完成一次完整的清除,而不管优先级的清除有多高,这进一步降低了整个系统的可靠性,因为RAID重构更有可能遇到潜在的数据损坏。

鉴于硬盘驱动器的容量增长和性能改进之间的差距越来越大,必须重新考虑RAID-6的长期前景。修复故障驱动器的时间正在增加,同时,清除时间的延长意味着在修复过程中更有可能遇到错误。在图6,我们为误码率和年故障率选择了合理的值,并选择了相对适中的容量增长率(每三年翻一番)。这是为了接近低成本,高密度,7200 rpm驱动器的行为。不同的值会改变曲线的精确位置,但不会改变它们的相对形状。

RAID-5在15年前达到了一个临界点,它不再能够提供足够的保护。当时的答案是RAID-6。如今,RAID-6正迅速接近这一门槛。大约10年后,RAID-6将只提供我们今天从RAID-5获得的保护级别。现在是时候创建一个新的RAID级别,以适应磁盘可靠性、容量和吞吐量的现实情况,仅仅是为了维持相同级别的数据保护。

回到顶部

三重奇偶校验突袭

随着RAID-6越来越不能满足可靠性要求,三重校验RAID的需求迫在眉睫,但还不是很迫切。另一个奇偶校验级别的增加减少了不断增加的RAID重建时间和潜在数据错误的发生。如图7,三重校验RAID将解决RAID-6多年的缺点(参见附带的侧栏“A三重校验RAID的分类”)。可靠性在很大程度上与三奇偶RAID的具体实现无关;我们的分析用一般里德-所罗门法就足够了。

计算机科学中一个反复出现的主题是,算法可以专门用于小的固定值,但随后可以推广到任意值。计算机行业的一个普遍信念是,双奇偶校验RAID是有效的推广,它提供了所有需要的数据可靠性。RAID-6是不够的,导致需要三重校验RAID,但如果目前的趋势持续下去,这也将是不够的。不仅需要三奇偶校验RAID,而且还需要高效的算法来真正解决具有任意数量奇偶校验设备的RAID的一般情况。

除了RAID-5和-6,简单的双向镜像RAID-1的含义是什么?RAID-1可以被看作是RAID-5的退化形式,因此即使误码率的提高速度与硬盘容量的提高速度相同,RAID-1的修复时间可能会变得令人衰弱。一个管理员在没有冗余的情况下运行一周的清理工作有多安全?由于同样的原因,在RAID-6已经足够的情况下,必须使用三奇偶校验RAID,对于那些同时要求高性能和高数据可靠性的应用程序,三向镜像将取代双向镜像。事实上,四向镜像可能并不遥远,因为即使是三向镜像也实际上是一种退化的RAID-6形式,但更可靠,并将容易受到同样的故障影响。

回到顶部

对RAID的影响

虽然三奇偶RAID将是必要的,但闪存固态存储的稳定渗透可能会对磁盘驱动器的命运产生重大影响。在一种极端情况下,一些人预测,随着闪存变得足够便宜和可靠,可以替代磁盘,磁盘将被降级为类似磁带的备份角色。6在这种情况下,RAID仍然是必要的,因为即使是固态设备也会遭受灾难性和部分故障,但这种设备的特定容量、错误率和吞吐量可能意味着不需要三重校验RAID。不幸的是,人们对可能蓬勃发展的设备的特性知之甚少,这种情况在遥远的未来还无法消除对三奇偶RAID的需求。

在另一个极端,闪存集成到存储层次结构中8可以通过固态缓存和缓冲来满足高性能需求,从而将系统性能与组件硬盘驱动器的性能分离。这可能加速当前的趋势,因为硬盘驱动器制造商将能够更快地增加容量,而不受性能需求的阻碍,同时可能减缓吞吐量的增长速度。此外,脱离了性能,RAID条带可以变得非常宽,以优化绝对容量;这将进一步降低可靠性,用同样数量的校验保护更多的数据。在这种情况下,随着当前趋势的加速,对三重校验RAID的需求将变得更加迫切。

如果Kryder定律继续成立,正确的负担将越来越多地从硬盘制造商转移到集成它们的RAID系统。今天,RAID重构时间比以往任何时候都更多地考虑到可靠性计算,它们的贡献将越来越占主导地位。即使面对指数级增长,三奇偶RAID也将很快成为提供足够可靠性的关键。

回到顶部

致谢

非常感谢Dominic Kay收集历史硬盘数据,并感谢Matt Ahrens, Daniel Leventhal和Beverly Hodgson提供的有益评论。

ACM队列的q戳相关文章
queue.acm.org

今天的Flash存储
亚当·利文斯
http://queue.acm.org/detail.cfm?id=1413262

硬盘驱动器:好的,坏的和丑陋的
Jon Elerath
http://queue.acm.org/detail.cfm?id=1317403

你对磁盘一无所知
戴夫•安德森
http://queue.acm.org/detail.cfm?id=864058

回到顶部

参考文献

1.Berriman, E., Feresten, P.和Kung, S. NetApp RAID-DP:无妥协的双奇偶Raid-6保护;http://www.mochadata.com/download/Netapp-raid-dp.pdf(2006)。

2.Blaum, Brady, J., Bruck, J.和Menon, J. EVENODD: RAID架构中容忍双盘故障的最优方案。在计算机体系结构国际研讨会论文集(1994), 245254;http://portal.acm.org/citation.cfm?id=191995.192033

3.Chen P., Lee, E., Patterson, D., Gibson, G.和Katz, R. RAID:高性能、可靠的二级存储。技术报告csd93 -778 (1993);http://portal.acm.org/citation.cfm?id=893811

4.Corbett, P., English, B., Goel, A., Grcanac, T., Kleiman, S., Leong, J.,和Sankar, S.用于双磁盘故障校正的行对角奇偶校验。在第三届Usenix文件和存储技术会议论文集(2004), 114;http://portal.acm.org/citation.cfm?id=1096673.1096677

5.硬盘驱动器:好的、坏的和丑陋的。Commun。ACM 52, 6(2009年6月),3845;http://portal.acm.org/citation.cfm?id=1516046.1516059

6.葛雷,菲茨杰拉德,B.服务器应用的闪存盘机会。微软研究院;http://research.microsoft.com/en-us/um/people/gray/papers/FlashdiskPublic.doc(2007)。

7.Hitz, D. 2006。为什么“双保护RAID”(RAID- dp)不会浪费额外的磁盘空间;http://blogs.netapp.com/dave/2006/05/why_double_prot.html(2006)。

8.Leventhal, A.闪存存储器。Commun。Acm 51,7(2008年7月),4751;http://portal.acm.org/citation.cfm?id=1364782

9.Patterson, D., Gibson, G.和Katz, R.廉价磁盘(RAID)冗余阵列的案例。在ACM数据管理国际会议论文集(1988), 109116;http://portal.acm.org/citation.cfm?id=50214

10.关于类raid系统中用于容错的Reed-Solomon编码的教程。技术报告UT-Cs-96-332;http://portal.acm.org/citation.cfm?id=898928(1996)。

11.Walter, C. Kryder定律。科学美国人(2005年8月);http://www.scientificamerican.com/article.cfm?id=kryders-law

回到顶部

作者

亚当·利文斯是Sun's Fishworks高级产品开发团队的高级工程师和flash架构师,负责Sun Storage 7000系列。他是DTrace的三位作者之一,他和他的同事因此被命名为DTrace的三位作者之一信息世界的荣获2005年美国创新者奖,并从2006年开始获得最高荣誉《华尔街日报》美国创新奖。

回到顶部

脚注

DOI: http://doi.acm.org/10.1145/1629175.1629194

回到顶部

数据

F1图1。RAID-5和RAID-6可靠性比较。

F2图2。7200rpm SATA硬盘的历史容量/吞吐量。

F3图3。10K RPM FC hdd的历史容量/吞吐量。

F4图4。历史容量/吞吐量15K RPM FC hdd。

F5图5。填充hdd所需的最短时间。

F6图6。预测的单、双奇偶RAID的相对可靠性。

F7图7。单、双、三奇偶RAID的相对可靠性预测。

回到顶部


©2010 acm 0001-0782/10/0100 $10.00

允许为个人或课堂使用本作品的全部或部分制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。

数字图书馆是由计算机协会出版的。版权所有©2010 ACM, Inc。


没有找到条目

Baidu
map