跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 储存管理指南 / 软件 RAID / 软件 RAID 配置
适用范围 SUSE Linux Enterprise Server 15 SP2

7 软件 RAID 配置

RAID(独立磁盘冗余阵列)的用途是将多个硬盘分区合并成一个大的虚拟硬盘,以便优化性能和/或数据安全性。大多数 RAID 控制器使用 SCSI 协议,因为对大量硬盘,它可用比 IDE 协议更高效的方式寻址,更适于命令的并行处理。还有一些支持 IDE 或 SATA 硬盘的 RAID 控制器。软件 RAID 具有 RAID 系统的优势,同时没有硬件 RAID 控制器的额外成本。但是这需要一些 CPU 时间以及内存,所以不适用于真正高性能的计算机。

重要
重要:群集文件系统上的 RAID

需要使用群集多设备(群集 MD)来设置群集文件系统下的软件 RAID。请参见 《SUSE Linux Enterprise High Availability Extension 管理指南

SUSE Linux Enterprise 提供了将若干硬盘组合为一个软 RAID 系统的选项。RAID 暗示将多块硬盘合成一个 RAID 系统的多种策略,这些策略的目标、优点及特点各不相同。这些变化形式通常称作 RAID 级别

7.1 了解 RAID 级别

本节描述常见的 RAID 级别 0、1、2、3、4、5 和嵌套的 RAID 级别。

7.1.1 RAID 0

此级别通过将每个文件按块分放到多个磁盘上,提高了数据访问性能。此级别实际上并不是 RAID,因为它不提供数据备份,但 RAID 0 已成为这种系统类型的标准名称。使用 RAID 0,可以将两块或多块硬盘组合在一起。这样性能固然很好,但如果有任何一块硬盘出现故障,都将损坏 RAID 系统并丢失数据。

7.1.2 RAID 1

此级别为数据提供了充分的安全性,因为它将数据按 1:1 复制到另一块硬盘上。这种方法称为硬盘镜像。如果一块磁盘损坏,则可以使用另一块镜像磁盘上的内容副本。在所有这些硬盘中,只要有一块硬盘没有损坏,您的数据就不会丢失。但是,如果没有检测到损坏,损坏的数据可能会镜像到正确的磁盘,并以这种方式损坏其数据。与使用单个磁盘访问时相比,写性能在复制过程中稍有损失(慢 10% 到 20%),但读访问的速度要大大快于任何一块普通物理硬盘,原因是对数据进行了复制,从而可以并行扫描它们。RAID 1 通常提供几乎为单个磁盘读事务速率两倍的速率,写事务速率与单个磁盘几乎相同。

7.1.3 RAID 2 和 RAID 3

这些不是典型的 RAID 实现。级别 2 在位一级而不是块一级对数据进行分段。级别 3 则利用专用的校验磁盘在字节一级进行分段,但不能同时处理多个请求。这两种级别都极少使用。

7.1.4 RAID 4

级别 4 与级别 0 一样,也是在块一级进行分段,但结合使用了专用的校验磁盘。如果一块数据磁盘失败,将使用奇偶校验数据创建替换磁盘。不过,这块奇偶校验磁盘可能造成写访问的瓶颈。尽管如此,有时仍使用级别 4。

7.1.5 RAID 5

RAID 5 是级别 0 和级别 1 在性能和冗余方面经优化后的折衷方案。硬盘空间等于使用的磁盘数减 1。数据分布在这些硬盘上,这一点与 RAID  0 相同。但出于安全原因,在其中一个分区上创建了奇偶校验块。这些块通过 XOR 互相链接,并在系统出现故障时,通过启用相应的校验块重构建内容。对于 RAID 5,在同一时间只能有一块硬盘出现故障。如果一块硬盘出现故障,则必须在情况允许时将其更换,以防止丢失数据。

7.1.6 RAID 6

RAID 6 是 RAID 5 的扩展,它通过使用第二种独立分布式奇偶校验模式(双重奇偶校验)来增加容错能力。即使在数据恢复过程中两个硬盘出现故障,系统仍将继续运行,数据不会丢失。

RAID 6 可承受多个并行驱动器故障,从而提供非常高的数据容错性能。它处理任何两个设备的丢失而不会丢失数据。此外,它还需要 N+2 个驱动器来储存相当于 N 个驱动器的数据。它至少需要四个设备。

RAID 6 的性能稍微低一些,但在正常模式和单磁盘故障模式下可以与 RAID 5 媲美。它在双磁盘故障模式下非常慢。RAID 6 配置需要占用相当多的 CPU 时间和内存,用于写入操作。

表 7.1︰ RAID 5 和 RAID 6 的比较

功能

RAID 5

RAID 6

设备数

N+1,至少 3 个

N+2,至少 4 个

奇偶校验

分布式,单

分布式,双

性能

在写和重构建方面有中度影响

比 RAID 5 在串行写方面影响大

容错

一个组件设备的故障

两个组件设备的故障

7.1.7 嵌套和复杂 RAID 级别

现在已开发出了其他 RAID 级别,例如 RAIDn、RAID 10、RAID 0+1、RAID 30 和 RAID 50。有些是硬件供应商创建的专用实施。创建 RAID 10 配置的示例可在第 9 章 “创建软件 RAID 10 设备中找到。

7.2 使用 YaST 配置软 RAID

可以通过 YaST 专家分区程序访问 YaST 软 RAID 配置。此分区工具还用于编辑和删除现有分区,并创建用于软 RAID 的新分区。下列说明在设置 RAID 级别 0、1、5 和 6 时适用。设置 RAID 10 配置的方法如第 9 章 “创建软件 RAID 10 设备所述。

  1. 起动 YaST 并打开分区程序

  2. 如果需要,请创建应该与 RAID 配置搭配使用的分区。请勿将它们格式化,并将分区类型设置为 0xFD Linux RAID。使用现有分区时,不需要更改它们的分区类型 — YaST 会自动更改。有关详细信息,请参见第 10.1 节 “使用专家分区程序”

    强烈建议您使用储存在其他硬盘上的分区,以便降低当其中一个硬盘损坏时(RAID 1 和 5)遗失数据的风险,并优化 RAID 0 的性能。

    对于 RAID 0,至少需要两个分区。RAID 1 只需要两个分区,而 RAID 5 至少需要三个分区。RAID 6 设置至少需要四个分区。建议仅使用大小相同的分区,因为每个段仅可将相同的空间量作为最小大小的分区。

  3. 在左侧面板中,选择 RAID

    右侧面板中即会打开现有 RAID 配置的列表。

  4. 在 RAID 页面的左下方,单击 添加 RAID

  5. 选择RAID 类型并从可用设备对话框中添加适当数目的分区。

    您可以选择性地为 RAID 指派一个 RAID 名称。这样,RAID 的名称将是 /dev/md/NAME。有关详细信息,请参见第 7.2.1 节 “RAID 名称”

    RAID 5 配置示例
    图 7.1︰ RAID 5 配置示例

    单击下一步继续。

  6. 选择大块大小,如果适用,同时选择奇偶校验算法。最佳的大块大小视数据的类型和 RAID 的类型而定。有关详细信息,请参见 https://raid.wiki.kernel.org/index.php/RAID_setup#Chunk_sizes。有关奇偶校验算法的详细信息,请在搜索 --layout 选项时加上 man 8 mdadm。如果不确定,请接受默认值。

  7. 选择卷的角色。您在此处所做选择只会影响将要打开的对话框的默认值。这些值可在下一个步骤中更改。如果不确定,请选择原始卷(未格式化)

  8. 格式化选项下,选择格式化分区,然后选择文件系统选项菜单的内容取决于文件系统。通常不需要更改默认值。

    装入选项下,选择装入分区,然后选择安装点。单击 Fstab 选项,为卷添加特殊装入选项。

  9. 单击完成

  10. 单击下一步,验证是否列出了所做的更改,然后单击完成

重要
重要:磁盘上的 RAID

虽然使用分区程序可以在磁盘(而不是分区)的顶层创建 RAID,但出于多种原因,我们不建议使用此方法。不支持在此类 RAID 上安装引导加载程序,因此您需要使用单独的设备进行引导。诸如 fdiskparted 之类的工具在此类 RAID 上无法正常工作,不清楚 RAID 特定设置的人员在使用这些工具时,可能会做出错误的诊断或执行错误的操作。

7.2.1 RAID 名称

软件 RAID 设备默认带有 mdN 模式的数值名称,其中 N 是数字。因此,以 md127 为例,它可以按 /dev/md127 这样的方式进行访问,并且在 /proc/mdstat/proc/partitions 中会列出为 md127。但这些名称不方便使用,为此,SUSE Linux Enterprise Server 提供了两种解决方法:

提供指向设备的具名链接

当您使用 YaST 或在命令行上使用 mdadm --create '/dev/md/ NAME' 创建 RAID 设备时,可以选择为 RAID 设备指定一个名称。设备名称仍然是 mdN,但系统会创建一个链接 /dev/md/NAME

tux > ls -og /dev/md
total 0
lrwxrwxrwx 1 8 Dec  9 15:11 myRAID -> ../md127

设备在 /proc 下仍显示为 md127

提供具名设备

在设置时,如果指向设备的具名链接仍然不够方便,请运行下列命令将 CREATE names=yes 行添加至 /etc/mdadm.conf

tux > sudo echo "CREATE names=yes" >> /etc/mdadm.conf

它会让系统将 myRAID 之类的名称用做真实的设备名称。设备不但可以在 /dev/myRAID 中访问,而且也会在 /proc 下列为 myRAID。请注意,只有在更改配置文件之后,此项才适用于 RAID。工作中的 RAID 将继续使用 mdN 名称,直到这些 RAID 停止并重新组装为止。

警告
警告:不兼容的工具

不是所有工具都可以支持具名 RAID 设备。如果工具认为一个 RAID 设备是命名为 mdN,它将无法识别该设备。

7.3 软件 RAID 疑难解答

查看 /proc/mdstats 文件以确定 RAID 分区是否受损。如果磁盘出现故障,请关闭 Linux 系统并用以同样方式分区的新硬盘替换出现问题的硬盘。然后重启动您的系统并输入命令 mdadm /dev/mdX --add /dev/sdX。将 X 替换为您的特定设备标识符。这会自动将硬盘整合到 RAID 系统中并完全重新构造(适用于除 RAID 0 以外的所有 RAID 级别)。

尽管可以在重构建期间访问所有数据,但在 RAID 完全重构建之前,仍然可能遇到一些性能问题。

7.3.1 修复故障磁盘之后进行恢复

RAID 阵列中的磁盘可能会出于多种原因而发生故障。下面列出了最常见的原因:

  • 磁盘媒体出现问题。

  • 磁盘驱动器控制器发生故障。

  • 与磁盘的连接断开。

在发生磁盘媒体或控制器故障时,需要更换或修复设备。如果未在 RAID 中配置热备件,则需要手动干预。

对于后一种情况,可以在修复连接(可能会自动修复)之后,使用 mdadm 命令自动重新添加发生故障的设备。

由于 md/mdadm 不能可靠地判断磁盘发生故障的原因,因此会臆测发生了严重的磁盘错误,并一直将任何发生操作失败的设备视为有故障,直到明确被告知该设备可靠为止。

在某些情况下(例如,储存设备包含内部 RAID 阵列),连接问题往往是设备发生故障的原因。在这种情况下,您可以告知 mdadm,在设备出现后,可以放心地使用 --re-add 自动重新添加该设备。为此,您可以将下面一行添加到 /etc/mdadm.conf 中:

POLICY action=re-add

请注意,仅当 udev 规则导致 mdadm -I DISK_DEVICE_NAME 在自发出现的任何设备上运行(默认行为),并且已配置 write-intent 位图(默认会配置)时,才会在设备重新出现之后自动重新添加该设备。

如果您希望此策略仅应用到某些设备而不应用到其余设备,可以将 path= 选项添加到 /etc/mdadm.conf 中的 POLICY 一行,以将非默认操作限制为只对选定的设备执行。可以使用通配符来识别设备组。有关详细信息,请参见 man 5 mdadm.conf

7.4 更多信息

位于下列位置的 HOWTO 文档提供了软 RAID 的配置说明和详细信息:

此外还提供了 Linux RAID 邮件列表,例如 linux-raid (http://marc.info/?l=linux-raid)。