7 软件 RAID 配置 #
RAID(独立磁盘冗余阵列)的用途是将多个硬盘分区合并成一个大的虚拟硬盘,以便优化性能和/或数据安全性。大多数 RAID 控制器使用 SCSI 协议,因为对大量硬盘,它可用比 IDE 协议更高效的方式寻址,更适于命令的并行处理。还有一些支持 IDE 或 SATA 硬盘的 RAID 控制器。软件 RAID 具有 RAID 系统的优势,同时没有硬件 RAID 控制器的额外成本。但是这需要一些 CPU 时间以及内存,所以不适用于真正高性能的计算机。
需要使用群集多设备(群集 MD)来设置群集文件系统下的软件 RAID。请参考 https://documentation.suse.com/sle-ha-12/html/SLE-HA-all/cha-ha-cluster-md.html 上的 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 时间和内存,用于写入操作。
功能 |
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 设备”所述。
起动 YaST 并打开
。如果需要,请创建应该与 RAID 配置搭配使用的分区。请勿将它们格式化,并将分区类型设置为 第 12.1 节 “使用 YaST 分区程序”。
。使用现有分区时,不需要更改它们的分区类型 — YaST 会自动更改。有关详细信息,请参见强烈建议您使用储存在其他硬盘上的分区,以便降低当其中一个硬盘损坏时(RAID 1 和 5)遗失数据的风险,并优化 RAID 0 的性能。
对于 RAID 0,至少需要两个分区。RAID 1 只需要两个分区,而 RAID 5 至少需要三个分区。RAID 6 设置至少需要四个分区。建议仅使用大小相同的分区,因为每个段仅可将相同的空间量作为最小大小的分区。
在左侧面板中,选择
。右侧面板中即会打开现有 RAID 配置的列表。
在 RAID 页面的左下方,单击
。选择
并从 对话框中 适当数目的分区。您可以选择性地为 RAID 指派一个
。这样,RAID 的名称将是/dev/md/NAME
。有关详细信息,请参见第 7.2.1 节 “RAID 名称”。图 7.1︰ RAID 5 配置示例 #单击
继续。选择https://raid.wiki.kernel.org/index.php/RAID_setup#Chunk_sizes。有关奇偶校验算法的详细信息,请在搜索
,如果适用,同时选择 。最佳的大块大小视数据的类型和 RAID 的类型而定。有关详细信息,请参见--layout
选项时加上man 8 mdadm
。如果不确定,请接受默认值。选择卷的
。您在此处所做选择只会影响将要打开的对话框的默认值。这些值可在下一个步骤中更改。如果不确定,请选择 。在
下,选择 ,然后选择 。 菜单的内容取决于文件系统。通常不需要更改默认值。在
下,选择 ,然后选择安装点。单击 ,为卷添加特殊装入选项。单击
。单击
,验证是否列出了所做的更改,然后单击 。
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
: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 更多信息 #
位于下列位置的操作指南中提供了软 RAID 的配置说明和更多细节:
Linux RAID wiki:https://raid.wiki.kernel.org/
/usr/share/doc/packages/mdadm/Software-RAID.HOWTO.html
文件中的软件 RAID HOWTO
此外还提供了 Linux RAID 邮件列表,例如 linux-raid (http://marc.info/?l=linux-raid)。