7 软件 RAID 配置 #
RAID(独立磁盘冗余阵列)的用途是将多个硬盘分区合并成一个大的虚拟硬盘,以便优化性能和/或数据安全性。大多数 RAID 控制器使用 SCSI 协议,因为与 IDE 协议相比,它可使用更高效的方式处理更大量的硬盘,并且更适合命令的并行处理。还有一些支持 IDE 或 SATA 硬盘的 RAID 控制器。软件 RAID 具有 RAID 系统的优势,同时没有硬件 RAID 控制器的额外成本。但是这需要一些 CPU 时间以及内存,所以不适用于真正高性能的计算机。
需要使用群集多设备(群集 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 时间和内存,用于写入操作。
功能 |
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 配置搭配使用的分区。请勿将它们格式化,并将分区类型设置为 第 10.1 节 “使用。 ”
。使用现有分区时,不需要更改它们的分区类型 — 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
。如果不确定,请接受默认值。选择卷的
。您在此处所做选择只会影响将要打开的对话框的默认值。这些值可在下一个步骤中更改。如果不确定,请选择 。在
下,选择 ,然后选择 。 菜单的内容取决于文件系统。通常不需要更改默认值。在
下,选择 ,然后选择挂载点。单击 ,为卷添加特殊挂载选项。单击
。单击
,校验是否列出了更改,然后单击 。
虽然使用分区程序可以在磁盘(而不是分区)的顶层创建 RAID,但出于多种原因,我们不建议使用此方法。不支持在此类 RAID 上安装引导加载程序,因此您需要使用单独的设备进行引导。诸如 fdisk 和 parted 之类的工具在此类 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 #
您可以在 monitor
模式下作为守护程序运行 mdadm
来监视软件 RAID。在 monitor
模式下,mdadm
会定期检查阵列中的磁盘故障。如果发生故障,mdadm
会向管理员发送一封电子邮件。要定义检查的时间间隔,请运行以下命令:
mdadm --monitor --mail=root@localhost --delay=1800 /dev/md2
上面的命令会每隔 1800 秒开启一次 /dev/md2
阵列监视。如果发生故障,将向 root@localhost
发送一封电子邮件。
默认情况下,RAID 检查处于启用状态。如果每次检查之间的间隔时间不够长,您可能会遇到警告。因此,您可以使用 delay
选项设置更大的值来增加时间间隔。
7.4 更多信息 #
位于下列位置的 HOWTO 文档提供了软 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)。