当前的 RAID 技术还能坚持多久?RAID 级别在 20 世纪 80 年代后期被编纂成典;双奇偶校验 RAID,即 RAID-6,是当前高可用性、空间高效存储的标准。然而,硬盘容量的惊人增长可能会对 RAID-6 系统的可靠性施加严重的限制。硬盘的最新趋势表明,三奇偶校验 RAID 必须很快普及。2005 年,《科学美国人》报道了克莱德定律11,该定律预测硬盘密度将每年翻一番。虽然翻倍的速度并没有完全保持那个步调,但也相差不远。
对于 RAID 而言,问题在于硬盘吞吐量未能跟上指数级的增长速度。如今,在 RAID 组中修复高密度磁盘驱动器可能很容易花费超过四个小时,并且随着硬盘容量持续超过其吞吐量,这个问题变得越来越严重。随着重建磁盘所需时间的增加,数据丢失的可能性也随之增加。硬盘供应商在努力提高容量的同时保持可靠性的能力已经在本杂志中受到了质疑。5 也许更不祥的是,几年后,重建将花费如此长的时间,以至于实际上剥夺了一层冗余。接下来是对 RAID、硬盘行业容量增长速度以及作为对可靠性下降的回应而需要三奇偶校验 RAID 的必要性进行的考察。
最早的后来被称为 RAID 的系统是在 20 世纪 80 年代中期开发的。加州大学伯克利分校的 David Patterson、Garth Gibson 和 Randy Katz 将这些系统分为五个不同的类别,统称为 RAID(廉价磁盘冗余阵列)。9 在他们 1988 年的论文中,RAID 代表大卫对抗 SLED(单个大型昂贵磁盘)歌利亚。两者代表了如何应对计算机存储未来的根本不同的策略。虽然 SLED 以高昂的价格提供了专业的性能和可靠性,但 RAID 试图用廉价的部件组装可靠、高性能的存储,这反映了计算行业更广泛的趋势。商品组件的经济性是不可阻挡的。
Patterson 等人在他们的结论中似乎具有先见之明:“凭借在成本效益、可靠性、功耗和模块化增长方面的优势,我们预计 RAID 将在未来的 I/O 系统中取代 SLED。”9 然而,他们将 RAID 描述为“由个人计算机磁盘组成的磁盘阵列”有点过于具体和过于乐观。虽然 RAID 肯定与那些廉价、大容量的磁盘一起使用,但今天 RAID 在其事实上的化身中,将其算法可靠性和性能改进与磁盘本身结合起来,这些磁盘本身通常是为性能和可靠性而设计的,因此仍然很昂贵。这种演变反映在 20 世纪 90 年代中期发生的 RAID 中 I 的含义从廉价到独立的微妙但重要的转变中(事实上,正是那些 SLED 制造商煽动了这种转变,将新的研究应用于他们现有的产品)。
1993 年,Gibson、Katz 和 Patterson,以及 Peter Chen、Edward Lee,完成了 RAID 级别的分类,至今仍未修订。3 在描述的七个 RAID 级别中,只有四个常用
为了完整起见,值得注意的是其他不太常见的 RAID 级别
RAID-6,即双奇偶校验 RAID,并未在 Patterson、Gibson 和 Katz 最初的 1988 年论文中描述,而是在 1993 年添加的,以响应磁盘阵列增长时,双重故障的机会也随之增加的观察结果。此外,在任何冗余方案下发生故障时,必须成功读取该冗余组内所有驱动器上的数据,才能重建故障驱动器上的数据。重建期间的读取故障将导致数据丢失。正如 Chen 等人所述
“不可纠正的位错误的主要后果是在磁盘发生故障时感受到的,并且必须通过从非故障磁盘读取数据来重建故障磁盘的内容。例如,重建 100GB 磁盘阵列中的故障磁盘需要成功读取大约 2 亿个扇区的信息。百万亿分之一的误码率意味着每 240 亿个扇区中有一个 512 字节的扇区无法正确读取。因此,如果我们假设读取扇区的概率彼此独立,则成功读取所有 2 亿个扇区的概率约为
(1 — 1/(2.4 x 1010)) ^ (2.0 x 108) = 99.2%.
这意味着平均而言,0.8% 的磁盘故障将因不可纠正的位错误而导致数据丢失。”3
自从该观察以来,误码率提高了大约两个数量级,而磁盘容量增加了略多于两个数量级,大约每两年翻一番,几乎遵循了克莱德定律。如今,具有 10 TB(近 200 亿个扇区)的 RAID 组很常见,典型的误码率为百万兆分之一
(1 — 1/(2.4 x 1012)) ^ (2.0 x 1010) = 99.2%
虽然误码率几乎与磁盘容量的增长保持同步,但在确定 RAID 可靠性时,吞吐量并未得到应有的重视。
作为其 RAID-6 解决方案的动机,NetApp 发布了一个 RAID-5 和 -6 的小型比较,具有相同的容量(RAID-5 为 7+1,RAID-6 为 14+2)和不同质量和容量的硬盘。1 请注意,尽管具有额外的奇偶校验磁盘,RAID-6 也不必降低系统的总容量。7 通常,RAID-6 的 RAID 条带宽度(单个 RAID 组内的磁盘数量)是 RAID-5 等效项的两倍;因此,数据磁盘的数量保持不变。NetApp 比较没有具体说明测试设备的误码率、驱动器本身的可靠性或计算数据丢失概率的期间长度;因此,我们没有尝试重现这些特定结果。在图 1 中观察到的重要一点是 RAID-5 和 RAID-6 之间数据丢失概率的明显测量差异。
在检查 RAID 解决方案的可靠性时,通常考虑的因素包括组件驱动器的可靠性到人工管理员更换故障驱动器的时间。尽管吞吐量对于 RAID 重建至关重要,但吞吐量一直没有成为中心焦点,因为吞吐量一直绰绰有余。虽然误码率等因素与容量保持同步,但吞吐量已经落后,迫使人们重新审视 RAID 的可靠性。
容量稳步且显着地增加,误码率以几乎相同的速度提高。然而,硬盘吞吐量显着滞后。使用供应商提供的硬盘数据表,我们能够检查过去 10 年硬盘容量和吞吐量之间的关系。图 2-4 显示了各种硬盘协议和转速的样本。
这些数据提出了关于所有类型的硬盘的容量和吞吐量增长相对速度的有力结论——显然没有指数定律支配硬盘吞吐量。通过将容量除以吞吐量,我们可以计算出完全扫描或填充驱动器所需的时间。正是这个持续时间决定了 RAID 组在没有完全奇偶校验保护的情况下运行的时间。图 5 显示了多年来各种驱动器类型执行此类操作所需的时间。
当 RAID 系统在 20 世纪 80 年代和 90 年代开发出来时,重建时间以分钟为单位来衡量。过去 10 年的趋势非常明显,无论驱动器速度或其市场细分如何:执行 RAID 重建的时间呈指数级增长,因为容量远远超过吞吐量。在极端情况下,在故障后重建完全填充的 2TB 7200-RPM SATA 磁盘(今天的容量冠军)将花费四个小时,以理论上的最佳吞吐量运行。在实践中很少能实现这些数据速率;在重度使用的系统中,如果不损害性能,就无法将全部带宽专门用于 RAID 修复。如果假设只有 10-50% 的系统总吞吐量可用于重建,那么 20 世纪 90 年代以分钟为单位的 RAID 重建时间在实践中会膨胀到数小时或数天。RAID 系统在这种降级状态下运行的时间比以前长得多,因此数据丢失的风险更高。
硬盘上的潜在数据会随着时间的推移而产生缺陷——这个过程轻描淡写地被称为位衰减。为了缓解这种情况,RAID 系统通常执行后台擦洗,其中读取、验证和纠正数据,以便在可纠正的故障变成不可纠正的故障之前将其消除。5 擦洗数据的过程必然会影响系统性能,但完全擦洗所需的时间是整个系统可靠性的重要组成部分。在如何分配擦洗与其他系统活动的优先级之间,自然会产生紧张关系。随着吞吐量被容量所掩盖,要么必须增加专用于擦洗的资源百分比,要么必须增加完全擦洗的时间。根据先前指出的趋势,无论擦洗的优先级有多高,存储池都将很容易花费数周或数月的时间进行完全擦洗,从而进一步降低整个系统的可靠性,因为它变得更有可能 RAID 重建会遇到潜在的数据损坏。
鉴于硬盘容量增长与其性能改进之间日益扩大的差距,必须重新考虑 RAID-6 的长期前景。修复故障驱动器的时间正在增加,同时擦洗时间的延长意味着在修复期间更有可能遇到错误。在图 6 中,我们为误码率和年故障率选择了合理的值,并选择了相对适度的容量增长率(每三年翻一番)。这旨在近似低成本、高密度、7200-RPM 驱动器的行为。不同的值会改变曲线的精确位置,但不会改变其相对形状。
十五年前,RAID-5 达到了一个阈值,在该阈值之后,它不再提供足够的保护。当时的答案是 RAID-6。今天,RAID-6 正在迅速接近相同的阈值。大约 10 年后,RAID-6 将仅提供我们今天从 RAID-5 获得的保护级别。现在再次是时候创建新的 RAID 级别,以适应磁盘可靠性、容量和吞吐量的现实情况,仅仅是为了维持相同级别的数据保护。
随着 RAID-6 越来越无法满足可靠性要求,迫切但尚未紧急需要三奇偶校验 RAID。增加另一层奇偶校验可以缓解 RAID 重建时间和潜在数据错误发生次数的增加。如图 7 所示,三奇偶校验 RAID 将在未来几年解决 RAID-6 的缺点。可靠性在很大程度上独立于三奇偶校验 RAID 的具体实现;一般的 Reed-Solomon 方法足以用于我们的分析。
计算机科学中反复出现的主题是,算法可以针对小的固定值进行专门化,但随后被推广以扩展到任意值。计算机行业的一个普遍信念是,双奇偶校验 RAID 实际上就是这种推广,它提供了可能需要的所有数据可靠性。RAID-6 不足,导致需要三奇偶校验 RAID,但如果当前趋势持续下去,这也不够。不仅需要三奇偶校验 RAID,而且还需要高效的算法,真正解决具有任意数量奇偶校验设备的 RAID 的一般情况。
除了 RAID-5 和 -6 之外,RAID-1(简单的双向镜像)的含义是什么?RAID-1 可以被视为 RAID-5 的退化形式,因此即使误码率以与硬盘容量相同的速度提高,RAID-1 的修复时间也可能变得令人衰弱。管理员在没有冗余的情况下运行一周的擦洗会安全吗?出于与使三奇偶校验 RAID 在 RAID-6 足以胜任的地方变得必要相同的原因,三向镜像将取代双向镜像,用于需要高性能和强大数据可靠性的应用程序。事实上,四向镜像可能也不远了,因为即使是三向镜像实际上也是 RAID-6 的退化但更可靠的形式,并且容易受到相同的失败影响。
现有的 RAID 分类都不适用于三奇偶校验 RAID。一种选择是扩展现有的 RAID-6 定义,但这可能会造成混淆,因为今天存在许多 RAID-6 系统。下一个明显的选择是 RAID-7,但 RAID-7 不应仅仅应用于具有三奇偶校验保护的 RAID,而应成为任何可以扩展到任意数量奇偶校验磁盘的 RAID 技术的统称。将奇偶校验磁盘数量固定为 N 的特定技术或部署应使用 RAID-7.N 命名法,其中 RAID-7.3 指的是三奇偶校验 RAID,RAID-5 和 RAID-6 分别有效地作为退化形式 RAID-7.1 和 RAID-7.2。
虽然三奇偶校验 RAID 将是必要的,但闪存固态存储的稳步渗透可能会对磁盘驱动器的命运产生重大影响。在一个极端情况下,有些人预测磁盘将被降级为类似磁带的备份角色,因为闪存变得足够便宜和可靠,可以替代磁盘。6 在这种情况下,RAID 仍然是必要的,因为即使固态设备也会遭受灾难性和部分故障,但此类设备的特定容量、误码率和吞吐量可能意味着不需要三奇偶校验 RAID。不幸的是,对于可能蓬勃发展的设备的特性知之甚少,而且这种情况在未来还很遥远,无法避免对三奇偶校验 RAID 的需求。
在另一个极端情况下,将闪存集成到存储层次结构8 中可以通过固态缓存和缓冲来满足高性能需求,从而将系统性能与组件硬盘的性能脱钩。这可能会加速当前的趋势,因为硬盘制造商将能够更快地提高容量,而不会受到性能要求的阻碍,同时可能会减缓吞吐量增长的速度。此外,与性能脱钩后,RAID 条带可能会变得非常宽,以优化绝对容量;这将以相同的奇偶校验保护更多数据来进一步降低可靠性。在这种情况下,加速当前趋势将使对三奇偶校验 RAID 的需求变得更加迫切。
如果克莱德定律继续成立,则正确性的负担将越来越多地从硬盘制造商转移到集成它们的 RAID 系统。如今,RAID 重建时间比以往任何时候都更重要地影响着可靠性计算,并且它们的贡献将越来越占主导地位。即使面对指数级增长,三奇偶校验 RAID 也将很快变得至关重要,以提供足够的可靠性。
问
非常感谢 Dominic Kay 收集历史硬盘数据,以及 Matt Ahrens、Daniel Leventhal 和 Beverly Hodgson 的有益评论。
喜欢还是讨厌?请告诉我们
ADAM LEVENTHAL 是 Sun 公司 Fishworks 高级产品开发团队的高级职员工程师和闪存架构师,负责 Sun Storage 7000 系列。他是 DTrace 的三位作者之一,他和他的同事因此被《InfoWorld》评为 2005 年的创新者之一,并荣获 2006 年《华尔街日报》创新奖的最高荣誉。Leventhal 于 2001 年毕业于布朗大学,并以优异的成绩获得数学和计算机科学学位后加入 Sun 公司。
© 2009 1542-7730/09/1200 $10.00
最初发表于 Queue vol. 7, no. 11—
在 数字图书馆 中评论本文
Pat Helland - 关注您的状态以了解您的心态
应用程序在进入分布式和可扩展的世界后,经历了有趣的演变。同样,存储及其表亲数据库也与应用程序并肩发展。很多时候,存储和应用程序的语义、性能和故障模型都在微妙地协调,以支持不断变化的业务需求和环境挑战。在组合中添加规模确实引起了轰动。本文着眼于其中的一些问题及其对系统的影响。
Alex Petrov - 现代存储系统背后的算法
本文仔细研究了现代数据库中大多数使用的两种存储系统设计方法(读取优化的 B 树和写入优化的 LSM(日志结构合并)树),并描述了它们的使用案例和权衡。
Mihir Nanavati, Malte Schwarzkopf, Jake Wires, Andrew Warfield - 非易失性存储
对于大多数执业计算机科学家的整个职业生涯,一个基本的观察结果一直成立:CPU 的性能显着高于 I/O 设备,价格也更昂贵。CPU 可以以极高的速率处理数据,同时为多个 I/O 设备提供服务,这一事实对各种规模系统的硬件和软件设计产生了广泛的影响,几乎从我们开始构建它们以来就是如此。
Thanumalayan Sankaranarayana Pillai, Vijay Chidambaram, Ramnatthan Alagappan, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau - 崩溃一致性
数据的读取和写入是任何冯·诺依曼计算机最基本的方面之一,但它却出乎意料地微妙且充满细微差别。例如,考虑访问具有多个处理器的系统中的共享内存。虽然程序员最容易理解的简单直观的方法(称为强一致性)是,但许多较弱的模型也在广泛使用(例如,x86 总存储排序);这些方法提高了系统性能,但代价是使对系统行为的推理更加复杂且容易出错。