网站搜索

如何使用“Mdadm”工具在 Linux 中管理软件 RAID - 第 9 部分


无论您以前使用 RAID 阵列的经验如何,也无论您是否遵循了本 RAID 系列中的所有教程,一旦您熟悉了 mdadm --manage命令。

在本教程中,我们将回顾该工具提供的功能,以便您在需要时可以方便地使用它。

RAID测试场景

与本系列的最后一篇文章一样,为简单起见,我们将使用由两个 8 GB 磁盘 (/dev/sdb) 组成的 RAID 1(镜像)阵列/dev/sdc)和初始备用设备(/dev/sdd)来说明,但此处列出的命令和概念适用于其他类型的设置也是如此。也就是说,请随意将此页面添加到浏览器的书签中,然后让我们开始吧。

了解 mdadm 选项和用法

幸运的是,mdadm 提供了一个内置 --help 标志,为每个主要选项提供解释和文档。

因此,让我们开始输入:


mdadm --manage --help

查看 mdadm --manage 允许我们执行哪些任务以及如何执行:

正如我们在上图中看到的,管理 RAID 阵列需要同时执行以下任务:

  1. (重新)将设备添加到阵列中。
  2. 将设备标记为有故障。
  3. 从阵列中删除故障设备。
  4. 用备用设备更换有故障的设备。
  5. 启动一个部分构建的数组。
  6. 停止一个数组。
  7. 将数组标记为 ro(只读)或 rw(读写)。

使用 mdadm 工具管理 RAID 设备

请注意,如果省略 --manage 选项,mdadm 无论如何都会采用管理模式。牢记这一事实,以避免日后遇到麻烦。

上图中突出显示的文本显示了管理 RAID 的基本语法:


mdadm --manage RAID options devices

让我们用几个例子来说明。

示例1:添加设备到RAID阵列

在更换有故障的设备时,或者当您有一个备件希望在出现故障时可以随时使用时,您通常会添加一台新设备:


mdadm --manage /dev/md0 --add /dev/sdd1

示例 2:将 RAID 设备标记为故障并将其从阵列中删除

这是从逻辑上从阵列中删除设备,然后以物理方式将其从机器中拉出之前的强制性步骤 - 按此顺序(如果您错过了其中一个步骤,您最终可能会对设备造成实际损坏):


mdadm --manage /dev/md0 --fail /dev/sdb1

请注意上一示例中添加的备用设备如何用于自动替换故障磁盘。不仅如此,raid 数据的恢复和重建也立即开始:

一旦设备被手动指示为故障,就可以将其安全地从阵列中删除:


mdadm --manage /dev/md0 --remove /dev/sdb1
示例 3:重新添加先前已删除的阵列中的设备

到目前为止,我们已经有一个工作的 RAID 1 阵列,它由 2 个活动设备组成:/dev/sdc1/dev/sdd1。如果我们现在尝试将 /dev/sdb1 重新添加到 /dev/md0


mdadm --manage /dev/md0 --re-add /dev/sdb1

我们会遇到一个错误:


mdadm: --re-add for /dev/sdb1 to /dev/md0 is not possible

因为阵列已经由最大可能数量的驱动器组成。因此,我们有 2 个选择:a) 添加 /dev/sdb1 作为备用,如示例 #1 所示,或者 b) 从阵列中删除 /dev/sdd1 并然后重新添加/dev/sdb1

我们选择选项b),并首先停止阵列以便稍后重新组装:


mdadm --stop /dev/md0
mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1

如果上述命令未成功将 /dev/sdb1 添加回阵列,请使用示例 #1 中的命令来执行此操作。

尽管 mdadm 最初会将新添加的设备检测为备用设备,但它会开始重建数据,完成后,它应该会识别该设备是 RAID 的活动部分:

示例 4:将 Raid 设备替换为特定磁盘

将阵列中的磁盘更换为备用磁盘非常简单:


mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/sdd1

这会导致 --with 开关后面的设备被添加到 RAID,而通过 --replace 指示的磁盘被标记为有故障:

示例 5:将 Raid 数组标记为 ro 或 rw

创建阵列后,您必须在其之上创建一个文件系统并将其安装到目录中才能使用它。当时您可能不知道的是,您可以将 RAID 标记为 ro,从而只允许对其执行读取操作,或 rw,以便写入也到设备。

要将设备标记为ro,需要先卸载它:


umount /mnt/raid1
mdadm --manage /dev/md0 --readonly
mount /mnt/raid1
touch /mnt/raid1/test1

要将阵列配置为允许写入操作,请使用 --readwrite 选项。请注意,在设置 rw 标志之前,您需要卸载设备并停止它:


umount /mnt/raid1
mdadm --manage /dev/md0 --stop
mdadm --assemble /dev/md0 /dev/sdc1 /dev/sdd1
mdadm --manage /dev/md0 --readwrite
touch /mnt/raid1/test2

概括

在本系列中,我们解释了如何设置企业环境中使用的各种软件 RAID 阵列。如果您阅读了这些文章以及这些文章中提供的示例,您就可以充分利用 Linux 中软件 RAID 的强大功能。

如果您有任何疑问或建议,请随时使用下面的表格与我们联系。