1. Linux RAID 常见问题解答

1. 概述
1.1.1. 在哪里可以找到 linux-raid 邮件列表的存档?
1.1.2. 在哪里可以找到此 FAQ 的最新版本?
1.1.3. 此列表涵盖哪些类型的内容?
2. 内核
1.2.1. 我正在运行 [在此处插入您的 Linux 发行版]。我是否需要修补我的内核才能使 RAID 工作?
1.2.2. 我如何判断是否需要修补我的内核?
1.2.3. 在哪里可以获得适用于我的内核的最新 RAID 补丁?
1.2.4. 如何将补丁应用到我刚从 ftp.kernel.org 下载的内核?
1.2.5. 我可以使用哪种类型的驱动器进行 RAID?只有 SCSI 或 IDE 驱动器才能工作吗?我是否需要针对不同类型的驱动器使用不同的补丁?
3. RAID 工具
1.3.1. 有哪些工具可用于处理我的 Linux 软件 RAID 阵列?
4. 磁盘故障和恢复
1.4.1. 我如何判断我的 RAID 阵列中的一个磁盘是否发生故障?
1.4.2. 所以我的 RAID 集缺少一个磁盘,我现在该怎么办?
1.4.3. dmesg 显示 "md: serializing resync, md4md5 具有重叠的物理单元"(其中 md4 和 md5 是您的两个软件 RAID 设备)。这是什么意思?
5. 基准测试
1.5.1. 我应该如何对我的 RAID 设备进行基准测试?有没有特别好用的工具?

1. 概述

1.1.1. 在哪里可以找到 linux-raid 邮件列表的存档?

唯一剩下的存档似乎可以在以下网址找到:http://marc.theaimsgroup.com/?l=linux-raid&r=1&w=2

1.1.2. 在哪里可以找到此 FAQ 的最新版本?

此 FAQ 的最新版本将可从 LDP 网站 http://www.tldp.org/FAQ/ 获取。

1.1.3. 此列表涵盖哪些类型的内容?

嗯,显然此列表涵盖与 Linux 相关的 RAID。大多数讨论都与已构建到 Linux 内核中的 raid 代码有关。还有一些关于使用 Linux 作为操作系统来使基于硬件的 RAID 控制器工作的讨论。所有这些讨论对于此列表都是有效的。

2. 内核

1.2.1. 我正在运行[在此处插入您的 Linux 发行版]。我是否需要修补我的内核才能使 RAID 工作?

目前,大多数主要发行版都附带基于 2.4 的内核,其中已包含必要的补丁。如果您的发行版仍在使用 2.2.x 内核,请升级!

如果您从 ftp.kernel.org 下载 2.2.x 内核,则您需要修补您的内核。

1.2.2. 我如何判断是否需要修补我的内核?

这取决于您正在使用的内核系列。如果您正在使用 2.4.x 内核,那么您已经拥有可用的最新 RAID 代码。如果您正在运行 2.2.x,请参阅以下说明以了解如何查找。

最简单的方法是检查 /proc/mdstat 中的内容。/proc/mdstat。这是来自应用了 RAID 补丁的 2.2.x 内核的示例。
 

[gleblanc@grego1 gleblanc]$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [translucent]
read_ahead not set
unused devices: <none>
      
如果 ... 的内容/proc/mdstat看起来像上面那样,那么您不需要修补您的内核。

如果您将 RAID 编译为模块,则您的内核中的“Personalities”行可能看起来与上面不完全相同。大多数发行版会将 RAID 编译为模块,以节省启动软盘上的空间。如果您未使用任何 RAID 集,那么您可能会在“Personalities”行的末尾看到一个空白,请不要担心,这只是意味着 RAID 模块尚未加载。

这是来自未应用 RAID 补丁的 2.2.x 内核的示例。
[root@serek ~]# cat /proc/mdstat 
Personalities : [1 linear] [2 raid0] 
read_ahead not set 
md0 : inactive 
md1 : inactive 
md2 : inactive 
md3 : inactive 

      
如果您的/proc/mdstat看起来像这个,那么您需要修补您的内核。

1.2.3. 在哪里可以获得适用于我的内核的最新 RAID 补丁?

适用于 2.2.x 内核(最高到 2.2.13,包括 2.2.13)的补丁可从 ftp.kernel.org 获取。使用与您的内核版本最匹配的内核补丁。例如,2.2.11 补丁也可以在 2.2.12 和 2.2.13 上使用。

Important

这些补丁不再从此位置可用!我还没有找到它们的新位置,如果您知道它们去了哪里,请给我发电子邮件。

适用于 2.2.14 及更高版本内核的补丁位于 http://people.redhat.com/mingo/raid-patches/。使用适合您内核的正确补丁,这些补丁在其他内核版本上不起作用。请使用 wget/curl/lftp 之类的工具来检索此补丁,因为这比使用 Netscape 之类的客户端对服务器更友好。使用 Lynx 下载补丁对我来说并不成功;wget 可能是最简单的方法。

1.2.4. 如何将补丁应用到我刚从 ftp.kernel.org 下载的内核?

首先,将内核解压缩到某个目录中,通常人们使用/usr/src/linux。更改到此目录,然后键入 patch -p1 < /path/to/raid-version.patch

在我的 RedHat 6.2 系统上,我将 2.2.16 内核解压缩到/usr/src/linux-2.2.16。从/usr/src/linux-2.2.16,我键入 patch -p1 < /home/gleblanc/raid-2.2.16-A0。然后我使用 make menuconfig 和相关构建重建内核。

1.2.5. 我可以使用哪种类型的驱动器进行 RAID?只有 SCSI 或 IDE 驱动器才能工作吗?我是否需要针对不同类型的驱动器使用不同的补丁?

软件 RAID 可以与 Linux 内核中的任何块设备一起工作。这包括 IDE 和 SCSI 驱动器,以及大多数硬件 RAID 控制器。IDE 驱动器和 SCSI 驱动器没有不同的补丁。

3. RAID 工具

1.3.1. 有哪些工具可用于处理我的 Linux 软件 RAID 阵列?

目前有两套工具可用。这两套工具都运行良好,并且具有基本相同的功能。我推荐使用较新的工具集,因为它们更容易使用,但我也会提及在哪里获取旧工具。

新的工具集称为 mdadm。它没有太多的主页,但您可以从 http://www.cse.unsw.edu.au/~neilb/source/mdadm/ 下载 tarball 和 RPM。我建议任何尚不熟悉“raidtools”软件包的人都使用这些(实际上,我建议已经熟悉 raidtools 软件包的人也切换到这些)。

旧的工具集称为 raidtools。它们可从 http://people.redhat.com/mingo/raidtools/ 获取。我相信还有其他位置可用,因为 Red Hat Linux 的发货基于编号为 1.00.3 的 tarball,我在网上找不到它。如果有人知道这些在哪里,请告诉我。

4. 磁盘故障和恢复

1.4.1. 我如何判断我的 RAID 阵列中的一个磁盘是否发生故障?

有几件事应该表明磁盘何时发生故障。在/var/log/messages中应该有很多消息指示访问该设备时出错,这应该是一个很好的迹象,表明出了问题。

您还应该注意到您的/proc/mdstat看起来不同了。这是来自良好的 /proc/mdstat 的片段
 

[gleblanc@grego1 gleblanc]$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [translucent]
read_ahead not set
md0 : active raid1 sdb5[0] sda5[1] 32000 blocks [2/2] [UU]
unused devices: <none>
      

这是来自一个/proc/mdstat其中一个 RAID 集缺少磁盘的情况。
 

[gleblanc@grego1 gleblanc]$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [translucent]
read_ahead not set
md0 : active raid1 sdb5[0] sda5[1] 32000 blocks [2/1] [U_]
unused devices: <none>
      

我不知道是否/proc/mdstat将反映 HOT SPARE 的状态。如果您已设置一个,则应注意/var/log/messages任何磁盘故障。我想获得一些磁盘故障的日志,以及/proc/mdstat来自具有热备系统的日志。

1.4.2. 所以我的 RAID 集缺少一个磁盘,我现在该怎么办?

软件 RAID 通常不会将磁盘标记为坏,除非它确实坏了,因此您可能需要一块新磁盘。大多数质量不错的磁盘都有 3 年保修期,但一些例外(且昂贵)的 SCSI 硬盘驱动器可能有长达 5 年或更长时间的保修期。越来越多的硬盘驱动器供应商在其“消费级”驱动器上提供 1 年保修。我建议尽可能避免使用任何保修期为 1 年的驱动器。如果仍在保修期内,请尝试让制造商更换故障磁盘。

当您获得新磁盘时,请关闭系统电源并安装它,然后对驱动器进行分区,使其具有与您丢失的 RAID 分区大小相同的分区。设置好分区后,只需运行 mdadm --add /dev/md0 /dev/hdc1,其中/dev/md0是您要向其添加分区的 RAID 阵列,以及/dev/hdc1是您尝试添加的分区。重建应立即开始。

如果您更喜欢使用 RAIDtools 套件,则可以使用命令 raidhotadd 将新磁盘放入阵列并开始重建。有关更多信息,请参阅《软件 RAID HOWTO》的第 6 章

1.4.3. dmesg 显示 "md: serializing resync, md4md5 具有重叠的物理单元"(其中 md4 和 md5 是您的两个软件 RAID 设备)。这是什么意思?

在该消息中,“物理单元”指的是磁盘,而不是磁盘上的块。由于在一个用于您的 RAID 阵列的磁盘上需要重新同步多个 RAID 阵列,因此 RAID 代码将首先同步 md4,然后同步 md5,以避免过多的寻道(也称为抖动),这将大大减慢重新同步过程。

5. 基准测试

1.5.1. 我应该如何对我的 RAID 设备进行基准测试?有没有特别好用的工具?

实际上,对您的 RAID 阵列进行基准测试有几种选择,具体取决于您要测试的内容。当有多个线程从同一 RAID 卷读取时,RAID 可提供最大的速度提升。

一种专门设计用于测试和展示这些性能提升的工具是 tiobench。它在磁盘上使用多个读取和写入线程,并具有一些非常好的报告功能。

另一个好用的工具是 bonnie++。它似乎更针对单驱动器的基准测试,而不是 RAID,但仍然提供有用的信息。

不应该使用的一个工具是 hdparm。它没有为我听说过的任何驱动器提供有用的性能数字,并且已知会给出一些令人难以置信的离谱数字。如果您想进行真正的基准测试,请使用上面列出的工具之一。