RAID(独立磁盘冗余阵列)

0
RAID(独立磁盘冗余阵列)是一种将相同数据存储在多个硬盘或固态驱动器 (SSD) 上不同位置的方法,以在驱动器发生故障时保护数据。但是,有不同的 RAID 级别,并且并非所有级别都以提供冗余为目标。

RAID 的工作原理

RAID 的工作原理是将数据放置在多个磁盘上,并允许输入/输出 (I/O) 操作以平衡的方式重叠,从而提高性能。因为使用多个磁盘会增加平均故障间隔时间,所以冗余存储数据也会增加容错能力。

RAID 阵列在操作系统 (OS) 中显示为单个逻辑驱动器。

RAID 采用磁盘镜像或磁盘条带化技术。镜像会将相同的数据复制到多个驱动器上。条带化分区有助于将数据分布在多个磁盘驱动器上。每个驱动器的存储空间被划分为从512 字节到数兆字节的扇区。所有磁盘的条带按顺序交错和寻址。磁盘镜像和磁盘条带化也可以组合在一个 RAID 阵列中。

RAID 阵列
RAID 阵列中的硬盘驱动器图像。

在存储大记录的单用户系统中,通常将条带设置为小(例如 512 字节),以便单个记录跨越所有磁盘,并且可以通过同时读取所有磁盘来快速访问时间。

在多用户系统中,更好的性能需要足够宽的条带来保存典型或最大大小的记录,从而实现跨驱动器的重叠磁盘 I/O。

RAID 控制器

RAID 控制器是用于管理存储阵列中的硬盘驱动器的设备。它可以用作操作系统和物理磁盘之间的抽象级别,将磁盘组表示为逻辑单元。使用 RAID 控制器可以提高性能并在发生崩溃时帮助保护数据。

RAID 控制器可以是基于硬件或软件的。在基于硬件的 RAID产品中,物理控制器管理整个阵列。该控制器还可以设计为支持串行高级技术附件和小型计算机系统接口等驱动器格式。物理 RAID 控制器也可以内置到服务器的主板中。

使用基于软件的 RAID,控制器使用硬件系统的资源,例如中央处理器和内存。虽然它执行与基于硬件的 RAID 控制器相同的功能,但基于软件的 RAID 控制器可能无法实现如此多的性能提升,并且可能会影响服务器上其他应用程序的性能。

如果基于软件的 RAID 实施与系统的启动过程不兼容,并且基于硬件的 RAID 控制器成本太高,那么固件或基于驱动程序的 RAID 是一个潜在的选择。

基于固件的 RAID 控制器芯片位于主板上,所有操作都由中央处理单元 (CPU) 执行,类似于基于软件的 RAID。但是,对于固件,RAID 系统仅在启动过程开始时实施。加载操作系统后,控制器驱动程序将接管 RAID 功能。固件 RAID 控制器不像硬件选项那样昂贵,但它会给计算机的 CPU 带来更大的压力。基于固件的 RAID 也称为硬件辅助软件 RAID、混合模型 RAID 和假 RAID。

标准 RAID 级别

RAID 0此配置具有条带化但没有数据冗余。它提供最佳性能,但不提供容错。

RAID 0 图
RAID 0 的可视化。

RAID 1也称为磁盘镜像,此配置由至少两个复制数据存储的驱动器组成。没有条纹。读取性能得到改善,因为可以同时读取任一磁盘。写入性能与单磁盘存储相同。

RAID 1 图
RAID 1 的可视化。

RAID 2此配置使用跨磁盘条带化,其中一些磁盘存储错误检查和纠正 (ECC) 信息。RAID 2 还使用专用的汉明码奇偶校验,一种 ECC 的线性形式。RAID 2 与 RAID 3 相比没有优势,因此不再使用。

RAID 2 图
RAID 2 的可视化。

RAID 3该技术使用条带化并专门使用一个驱动器来存储奇偶校验信息。嵌入的 ECC 信息用于检测错误。数据恢复是通过计算记录在其他驱动器上的独占信息来完成的。因为 I/O 操作同时寻址所有驱动器,所以 RAID 3 不能重叠 I/O。因此,RAID 3 最适合具有长记录应用程序的单用户系统。

RAID 3 图
RAID 3 的可视化。

RAID 4此级别使用大条纹,这意味着用户可以从任何单个驱动器读取记录。然后可以将重叠的 I/O 用于读取操作。因为更新奇偶校验驱动器需要所有写操作,所以不可能有 I/O 重叠。

RAID 4 图
RAID 4 的可视化。

RAID 5此级别基于奇偶校验块级条带化。奇偶校验信息跨每个驱动器进行条带化,即使一个驱动器发生故障,阵列也能正常工作。该阵列的架构使读写操作能够跨越多个驱动器。这导致性能优于单个驱动器,但不如 RAID 0 阵列高。RAID 5 至少需要三个磁盘,但出于性能原因,通常建议使用至少五个磁盘。

由于与写入奇偶校验数据相关的性能影响,RAID 5 阵列通常被认为是用于写入密集型系统的糟糕选择。当磁盘发生故障时,重建 RAID 5 阵列可能需要很长时间。

RAID 5 图
RAID 5 的可视化。

RAID 6此技术类似于 RAID 5,但它包括分布在阵列中的驱动器上的第二个奇偶校验方案。即使两个磁盘同时发生故障,使用附加奇偶校验也可以使阵列继续运行。然而,这种额外的保护是有代价的。RAID 6 阵列的写入性能通常比 RAID 5 阵列慢。

RAID 6 图
RAID 6 的可视化。

嵌套的 RAID 级别

一些基于 RAID 级别组合的 RAID 级别称为嵌套 RAID。以下是嵌套 RAID 级别的一些示例。

RAID 10 (RAID 1+0)。结合 RAID 1 和 RAID 0,此级别通常称为 RAID 10,它提供比 RAID 1 更高的性能,但成本要高得多。在 RAID 1+0 中,数据被镜像并且镜像被条带化。

RAID 10 图
RAID 10 的可视化。

RAID 01 (RAID 0+1)。RAID 0+1 与 RAID 1+0 类似,只是数据组织方法略有不同。RAID 0+1 不是创建一个镜像然后对其进行条带化,而是创建一个条带集,然后镜像该条带集。

RAID 03(RAID 0+3,也称为 RAID 53 或 RAID 5+3)。此级别对 RAID 3 的虚拟磁盘块使用 RAID 0 样式的条带化。这提供了比 RAID 3 更高的性能,但成本更高。

RAID 50 (RAID 5+0)。此配置将 RAID 5 分布式奇偶校验与 RAID 0 条带化相结合,可在不降低数据保护的情况下提高 RAID 5 性能。

非标准 RAID 级别

非标准 RAID 级别不同于标准 RAID 级别,通常由公司或组织开发,主要用于专有用途。这里有些例子。

RAID 7基于 RAID 3 和 RAID 4 的非标准 RAID 级别,增加了缓存。它包括作为控制器的实时嵌入式操作系统、通过高速总线进行缓存以及独立计算机的其他特性。

自适应 RAID。此级别使 RAID 控制器能够决定如何在磁盘上存储奇偶校验。它将在 RAID 3 和 RAID 5 之间进行选择。选择取决于哪种 RAID 集类型在写入磁盘的数据类型方面表现更好。

Linux MD RAID 10。此级别由Linux内核提供,支持创建嵌套和非标准 RAID 阵列。Linux 软件 RAID 还可以支持创建标准 RAID 0、RAID 1、RAID 4、RAID 5 和 RAID 6 配置。

硬件 RAID 与软件 RAID

与 RAID 控制器一样,RAID 是通过硬件或软件实现的。基于硬件的 RAID 支持不同的 RAID 配置,特别适合 RAID 5 和 6。硬件 RAID 1 的配置有利于支持启动和应用程序驱动过程,而硬件 RAID 5 适合大型存储阵列。硬件 RAID 5 和 6 都非常适合提高性能。

基于硬件的 RAID 需要在服务器中安装专用控制器。硬件中的 RAID 控制器在操作系统启动之前或之后通过卡基本 I/O 系统或 Option ROM(只读存储器)进行配置。RAID 控制器制造商通常还为其支持的操作系统提供专有软件工具。

几个现代操作系统提供了基于软件的 RAID。它以多种方式实现,包括:

  • 作为文件系统的一个组件;
  • 作为将设备抽象为单个虚拟设备的层;和
  • 作为位于任何文件系统之上的层。

这种 RAID 方法使用系统的一些计算能力来管理基于软件的 RAID 配置。例如,Windows 支持软件 RAID 0、1 和 5,而 Apple 的 macOS 支持 RAID 0、1 和 1+0。

RAID 的好处

RAID 的优点包括:

  • 由于大量使用低价磁盘,因此提高了成本效益。
  • 使用多个硬盘驱动器可以使 RAID 提高单个硬盘驱动器的性能。
  • 崩溃后提高计算机速度和可靠性,具体取决于配置。
  • 与使用 RAID 0 的单个驱动器相比,读取和写入的执行速度更快。这是因为文件系统被拆分并分布在在同一文件上协同工作的驱动器上。
  • RAID 5 提高了可用性和弹性。通过镜像,两个驱动器可以包含相同的数据,确保一个驱动器在另一个驱动器出现故障时继续工作。

使用 RAID 的缺点

但是,RAID 确实有其局限性。其中一些包括:

  • 嵌套 RAID 级别的实施比传统 RAID 级别更昂贵,因为它们需要更多磁盘。
  • 嵌套 RAID 的存储设备每 GB 成本较高,因为许多驱动器用于冗余。
  • 当一个驱动器发生故障时,阵列中的另一个驱动器也将很快发生故障的可能性会上升,这可能会导致数据丢失。这是因为 RAID 阵列中的所有驱动器都是同时安装的,因此所有驱动器都会受到相同程度的磨损。
  • 某些 RAID 级别(例如 RAID 1 和 5)只能承受单个驱动器故障。
  • RAID 阵列及其中的数据很容易受到攻击,直到更换故障驱动器并在新磁盘中填充数据。
  • 由于现在驱动器的容量比首次实施 RAID 时大得多,因此重建故障驱动器需要更长的时间。
  • 如果发生磁盘故障,剩余磁盘可能包含坏扇区或不可读数据,这可能导致无法完全重建阵列。

但是,嵌套 RAID 级别通过提供更大程度的冗余来解决这些问题,从而显着降低由于同时磁盘故障而导致阵列级故障的机会。

什么时候应该使用 RAID?

进行 RAID 设置很有用的实例包括:

  • 当需要恢复大量数据时。如果驱动器发生故障并且数据丢失,则可以快速恢复该数据,因为这些数据也存储在其他驱动器中。
  • 当正常运行时间和可用性是重要的业务因素时。如果需要恢复数据,可以快速完成,无需停机。
  • 处理大文件时。RAID 在处理大文件时提供速度和可靠性。
  • 当组织需要减少物理硬件的压力并提高整体性能时。例如,硬件 RAID 卡可以包括用作缓存的附加内存。
  • 出现 I/O 磁盘问题时。RAID 将通过从多个驱动器读取和写入数据来提供额外的吞吐量,而不是需要等待一个驱动器执行任务。
  • 当成本是一个因素时。RAID阵列的成本比过去低,低价磁盘大量使用,成本更低。

RAID 的历史

RAID一词由 David Patterson、Randy Katz 和 Garth A. Gibson 于 1987 年创造。在他们 1988 年的技术报告“廉价磁盘冗余阵列 (RAID) 的案例”中,三人认为廉价驱动器阵列可以击败当时最昂贵的磁盘驱动器的性能。通过使用冗余,RAID 阵列可能比任何一个磁盘驱动器都更可靠。

虽然这份报告是第一个为这个概念命名的报告,但其他人已经在讨论冗余磁盘的使用。Geac Computer Corp. 的 Gus German 和 Ted Grunau 首先将这个想法称为 MF-100。IBM 的 Norman Ken Ouchi 于 1977 年为这项技术申请了专利,该技术后来被命名为 RAID 4。1983 年,Digital Equipment Corp. 推出了后来成为 RAID 1 的驱动器,并在 1986 年为后来的 RAID 申请了另一项 IBM 专利5. Patterson、Katz 和 Gibson 还研究了 Tandem Computers、Thinking Machines 和 Maxstor 等公司在定义其 RAID分类法时所做的工作。

虽然 1988 年报告中列出的 RAID 级别基本上是为已经在使用的技术命名,但为该概念创建通用术语有助于刺激数据存储市场开发更多 RAID 阵列产品。

根据 Katz 的说法,由于低成本的影响,首字母缩略词中的“廉价”一词很快被行业供应商替换为“独立”。

RAID 的未来

RAID 并没有完全消亡,但许多分析人士表示,该技术近年来已经过时。诸如纠删码之类的替代方案可以提供更好的数据保护——尽管价格更高——并且开发的目的是解决 RAID 的弱点。随着驱动器容量的增加,RAID 阵列出错的机会也会增加,并且容量不断增加。

SSD 的兴起也被视为减轻了对 RAID 的需求。SSD 没有移动部件,并且不会像硬盘驱动器那样经常发生故障。SSD 阵列通常使用磨损均衡等技术,而不是依靠 RAID 来保护数据。现代 SSD 足够快,现代服务器可能不需要 RAID 提供的轻微性能提升。但是,它们目前仍可用于防止数据丢失。

超大规模计算还通过使用冗余服务器而不是冗余驱动器来消除对 RAID 的需求。

尽管如此,RAID 仍然是数据存储中根深蒂固的一部分,主要技术供应商继续发布 RAID 产品。例如:

  • IBM 提供 IBM 分布式 RAID 或 DRAID,其 Spectrum Virtualize V8.3 有望提高 RAID 性能。
  • 最新版本的英特尔快速存储技术支持 RAID 0、RAID 1、RAID 5 和 RAID 10。
  • NetApp OnTap 管理软件使用 RAID-DP、双奇偶校验或 RAID 4 来防止多达三个同时发生的驱动器故障。
  • Dell EMC Unity 平台支持 RAID 5、6 和 10。

 

最后修改日期: 2022年8月5日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。