Red Hat Training

A Red Hat training course is available for RHEL 8

第 17 章 管理 RAID

本章论述了独立磁盘冗余阵列(RAID)。用户可以使用 RAID 在多个驱动器间存储数据。它还有助于避免驱动器失败时数据丢失。

17.1. 独立磁盘冗余阵列(RAID)

RAID 的基本概念是将多个设备(如 HDDSSDNVMe )组合成一个阵列来完成性能或冗余目标,而不是在一个大而昂贵的驱动器中。这组设备以单一逻辑存储单元或驱动器在计算机中出现。

RAID 允许在多个设备间分布信息。RAID 使用磁盘分条(RAID 级别 0)、磁盘镜像(RAID 级别 1)和带有奇偶校验(RAID 级别 4、5 和 6)的磁盘条带来实现冗余 、更低延迟、增大带宽并最大化从硬盘崩溃中恢复的功能

RAID 通过将数据拆分为统一大小的区块(通常为 256K 或 512k,但接受其他值),从而跨阵列中的每个设备分布数据。然后,每个块根据所使用的 RAID 级别写入 RAID 阵列中的硬盘驱动器。当读取数据时,进程会被撤销,从而假象阵列中的多个设备实际上是一个大驱动器。

系统管理员以及管理大量数据的其他人将受益于使用 RAID 技术。部署 RAID 的主要原因包括:

  • 加强速度
  • 使用单一虚拟磁盘增加存储容量
  • 尽可能减少磁盘失败的数据丢失
  • RAID 布局和级别在线转换

17.2. RAID 类型

RAID 方法有三种:固件 RAID、硬件 RAID 和软件 RAID。

固件 RAID

固件 RAID (也称为 ATARAID)是一种软件 RAID,可在其中使用基于固件的菜单配置 RAID 集。此 RAID 使用的固件也会钩在 BIOS 中,允许您从 RAID 集启动。不同的供应商使用不同的磁盘元数据格式来标记 RAID 设置成员。Intel Matrix RAID 是固件 RAID 系统的一个很好的例子。

硬件 RAID

基于硬件的阵列独立于主机管理 RAID 子系统。它可能会在每个 RAID 阵列中存在多个设备。

硬件 RAID 设备可能是系统内部或者外部的。内部设备通常由在操作系统中透明地处理 RAID 任务的特殊控制器卡组成。外部设备通常通过 SCSI、光纤、iSCSI、InfiniBand 或者其它高速网络互联连接的系统,并显示卷如逻辑单元到系统。

RAID 控制器卡的功能与操作系统的 SCSI 控制器相同,用于处理所有实际驱动器间的通信。用户将驱动器插入 RAID 控制器(就像普通 SCSI 控制器),然后将它们添加到 RAID 控制器的配置中。操作系统将无法辨别它们的不同。

软件 RAID

软件 RAID 在内核块设备代码中实现各种 RAID 级别。它提供最便宜的解决方案,如昂贵的磁盘控制器卡或热交换机箱 [1] 不需要。软件 RAID 还可用于 Linux 内核支持的任何块存储,如 SATA、SCSINVMe。由于 CPU 速度更快,软件 RAID 通常会优于硬件 RAID,除非您使用高端存储设备。

Linux 内核包含一个多个设备 (MD)驱动程序,允许 RAID 解决方案完全独立于硬件。基于软件的阵列的性能取决于服务器 CPU 性能和负载。

Linux 软件 RAID 堆栈的主要特性:

  • 多线程设计
  • 在不同的 Linux 机器间移动磁盘阵列不需要重新构建数据
  • 使用空闲系统资源构建后台阵列
  • 对热插拔驱动器的支持
  • 自动 CPU 检测,以利用某些 CPU 功能,如流传输单指令多数据(SIMD)支持
  • 自动更正阵列磁盘上坏扇区
  • 定期检查 RAID 数据,以确保阵列健康
  • 使用发送至重要事件上的指定电子邮件地址的电子邮件警报主动监控阵列
  • write-intent 位映射可让内核准确知道需要重新同步磁盘的部分,而不是在系统崩溃后重新同步整个阵列,从而显著提高重新同步事件的速度

    请注意: resync 是一个通过现有 RAID 设备同步数据以达到冗余的过程

  • 重新同步检查点以便如果您在重新同步期间重新引导计算机,则在启动时重新同步会选择它离开的位置,而不是全部重新启动
  • 能够在安装后更改阵列的参数,这称为 reshaping。例如,当有要添加新设备时,您可以将 4 磁盘 RAID5 阵列增加到 5 磁盘 RAID5 阵列。这个增长的操作是实时的,不需要您在新阵列中重新安装
  • 重新定义支持更改设备数量、RAID 算法或 RAID 阵列类型的大小,如 RAID4、RAID5、RAID6 或 RAID10
  • 接管支持 RAID 级别转换,如 RAID0 到 RAID6

17.3. RAID 级别和线性支持

RAID 支持各种配置,包括 0、1、4、5、6、10 和 linear。这些 RAID 类型定义如下:

0 级

RAID 级别 0,通常被称为条带化数据映射技术。这意味着,要写入阵列的数据被分成条块,并在阵列的成员磁盘中写入,这样可以在成本低的情况下提供高的 I/O 性能,但不提供冗余。

许多 RAID 级别 0 的实现只在成员设备间条状分布到阵列中最小设备的大小。就是说,如果您有多个设备,它们的大小稍有不同,那么每个设备的大小都被视为与最小设备的大小相同。因此,级别 0 阵列的一般存储容量等于,硬件 RAID 中容量最小的成员磁盘的容量,或软件 RAID 中的最小成员分区的容量,在乘以阵列中的磁盘或分区的数量。

1 级

RAID 级别 1 或称为镜像,通过将相同数据写入阵列的每个磁盘来提供冗余,在每个磁盘上保留"镜像"副本。因为其简单且数据高度可用,RAID 1 仍然被广泛使用。级别 1 需要两个或者多个磁盘,它提供了很好的数据可靠性,提高了需要读取的应用程序的性能,但是成本相对高。

为了实现数据可靠性,需要向阵列中的所有磁盘写入相同的信息,所以 RAID 1 的成本会很高。与基于奇偶校验的其他级别(如级别 5)相比,空间的利用效率较低。然而,对空间利用率的牺牲提供了高性能:基于奇偶校验的 RAID 级别会消耗大量 CPU 资源以便获得奇偶校验,而 RAID 级别 1 只是一次向多个 RAID 成员中写入同样数据,其对 CPU 的消耗较小。因此,在使用软件 RAID 的系统中,或系统中有其他操作需要大量使用 CPU 资源时,RAID 1 可能会比使用基于奇偶校验的 RAID 级别的性能更好。

级别 1 阵列的存储容量等于硬件 RAID 中最小镜像硬盘或者软件 RAID 中最小镜像分区的容量相同。级别 1 所提供的冗余性是所有 RAID 级别中最高的,因为阵列只需要在有一个成员可以正常工作的情况下就可以提供数据。

级别 4

级别 4 使用单一磁盘驱动器中的奇偶校验来保护数据。奇偶校验信息根据阵列中其余成员磁盘的内容计算。然后当阵列中的一个磁盘失败时,这个信息就可以被用来重建数据。然后,在出现问题的磁盘被替换前,使用被重建的数据就可以满足 I/O 的请求。在磁盘被替换后,可以在上面重新生成数据。

因为 RAID 4 使用一个专门的偶校验磁盘,因此这个磁盘就会成为对 RAID 阵列的写入操作的一个固有的瓶颈。所以, RAID 4 较少被使用。因此,Anaconda 中并没有提供 RAID 4 这个选项。但是,如果真正需要,用户可以手动创建它。

硬件 RAID 4 的存储容量等于分区数量减一乘以最小成员分区的容量。RAID 4 阵列的性能是非对称的,即读的性能会好于写的性能。这是因为,写入会在生成奇偶校验时消耗额外的 CPU 和主内存带宽,然后在将实际数据写入磁盘时也消耗额外的总线带宽,因为您不仅是写入数据,而且是奇偶校验。读取只需要读取数据而不是奇偶校验,除非该阵列处于降级状态。因此,在正常操作条件下,读取会在计算机的驱动器和总线间产生较少的流量,以实现相同数量的数据传输。

5 级

这是最常见的 RAID 类型。通过在一个阵列的所有成员磁盘中分布奇偶校验,RAID 5 解除了级别 4 中原有的写入瓶颈。唯一性能瓶颈是奇偶校验计算过程本身。在使用现代 CPU 和软件 RAID 时,这通常不会成为瓶颈,因为现代 CPU 可能会非常快速地生成奇偶校验。然而,如果您的软件 RAID5 阵列中有大量成员设备,且在所有设备间有大量的数据进行传输时,就可能出现瓶颈。

和级别 4 一样,级别 5 的性能也是非对称的,读性能会高于写的性能。RAID 5 的存储容量的计算方法与级别 4 的计算方法是一样的。

级别 6

如果数据的冗余性和保护性比性能更重要,且无法接受 RAID 1 的空间利用率低的问题,则通常会选择使用级别 6。级别 6 使用一个复杂的奇偶校验方式,可以在阵列中出现任意两个磁盘失败的情况下进行恢复。因为使用的奇偶校验方式比较复杂,软件 RAID 设备会对 CPU 造成较大负担,同时对写操作造成更大的负担。因此,与级别 4 和 5 相比,级别 6 的性能不对称性更严重。

RAID 6 阵列的总容量与 RAID 5 和 4 类似,但您必须从设备数量中减小两个(而不是 1 个)额外奇偶校验存储空间的设备数。

级别 10

这个 RAID 级别将级别 0 的性能优势与级别 1 的冗余合并。它还有助于减少在有多于 2 个设备时,级别 1 阵列中的利用率低的问题。在级别 10 中,可以创建一个 3 个驱动器阵列来只存储每个数据的 2 个副本,然后允许整个阵列的大小达到最小设备的 1.5 倍,而不是只等于最小设备(与有 3 个设备的级别 1 阵列相同)。与 RAID 级别 6 相比,计算奇偶校验对 CPU 的消耗较少,但空间效率较低。

在安装过程中,不支持创建 RAID 10。您可在安装后手动创建。

线性 RAID

线性 RAID 是创建更大的虚拟驱动器的一组驱动器。

在线性 RAID 中,块会被从一个成员驱动器中按顺序分配,只有在第一个完全填充时才会进入下一个驱动器。这个分组方法不会提供性能优势,因为 I/O 操作不太可能在不同成员间同时进行。线性 RAID 也不提供冗余性,并会降低可靠性。如果有任何一个成员驱动器失败,则无法使用整个阵列。该容量是所有成员磁盘的总量。

17.4. Linux RAID 子系统

以下子系统组成了 Linux 中的 RAID 系统:

17.4.1. Linux 硬件 RAID 控制器驱动程序

硬件 RAID 控制器在 Linux 中没有特定的 RAID 子系统。由于它们使用特殊的 RAID 芯片组,硬件 RAID 控制器随自己的驱动程序一起提供;这些驱动程序允许系统将 RAID 集作为常规磁盘检测。

17.4.2. mdraid

mdraid 子系统被设计为 Linux 的软件 RAID 解决方案,也是 Linux 下软件 RAID 的首选解决方案。此子系统使用自己的元数据格式,通常称为原生 MD 元数据。

mdraid 也支持其他元数据格式,称为外部元数据。Red Hat Enterprise Linux 8 使用 mdraid 和外部元数据来访问 ISW/ IMSM(Intel 固件 RAID)集和 SNIA DDF。mdraid 集合通过 mdadm 工具配置和控制。

17.5. 创建软件 RAID

按照以下步骤创建独立磁盘冗余阵列(RAID)设备。RAID 设备由多个存储设备组成的,它可以提高性能,并可以配置为增加容错功能。

创建 RAID 设备只需要一步,并可根据需要添加或者删除磁盘。您可以为系统中的每个物理磁盘配置一个 RAID 分区,因此安装程序可使用的磁盘数决定可用 RAID 设备的级别。例如: 如果系统只有两个硬盘,就无法创建 RAID 10 设备,因为它至少需要 3 个独立的磁盘。

注意

在 IBM Z 中,存储子系统会透明地使用 RAID。您不必手动配置软件 RAID。

先决条件

  • 您已经选择了两个或者多个磁盘,然后才能看到 RAID 配置选项。创建 RAID 设备至少需要两个磁盘。
  • 您创建了挂载点。通过配置挂载点,就可以配置 RAID 设备。
  • 您已在 Installation Destination 窗口中选择了 Custom 单选按钮。

流程

  1. Manual Partitioning 窗口左面地框中,选所需的分区。
  2. Device(s) 部分点 修改。此时会打开 Configure Mount Point 对话框。
  3. 选择您要包含在 RAID 设备中的磁盘并点击 选择
  4. 点击设备类型下拉菜单并选择 RAID
  5. 点击文件系统下拉菜单并选择您首选的文件系统类型。
  6. 点击RAID 级别下拉菜单并选择您需要的 RAID 级别。
  7. 点击 更新设置 保存您的更改。
  8. 点击 完成 按钮应用该设置并返回 安装概述 窗口。

如果指定的 RAID 级别需要更多磁盘,则会在窗口底部显示一 条信息。

要使用存储系统角色创建并配置 RAID 卷,请参阅 第 2.12 节 “使用存储系统角色配置 RAID 卷”

要了解更多有关软崩溃以及在配置 RAID LV 时如何保护数据的信息,请参阅使用带有 RAID LV 的 DM 完整性

17.6. 安装后创建软件 RAID

这个步骤描述了如何使用 mdadm 实用程序在现有系统中创建软件冗余磁盘阵列(RAID)。

先决条件

流程

  1. 要创建两个块设备的 RAID,如 /dev/sda1/dev/sdc1,请使用以下命令:

    # mdadm --create /dev/md0 --level=<level_value> --raid-devices=2 /dev/sda1 /dev/sdc1

    <level_value> 替换为 RAID 级别。详情请查看 mdadm(8) man page。

  2. 另外,要检查 RAID 的状态,使用以下命令:

    # mdadm --detail /dev/md0
  3. 另外,要查看每个 RAID 设备的详细信息,请使用以下命令:

    # mdadm --examine /dev/sda1 /dev/sdc1
  4. 要在 RAID 驱动器中创建文件系统,请使用以下命令:

    # mkfs -t <file-system-name> /dev/md0

    其中 <file-system-name> 是一个您选择格式化驱动器的具体文件系统。详情请查看 mkfs man page。

  5. 要为 RAID 驱动器生成挂载点并挂载它,请使用以下命令:

    # mkdir /mnt/raid1
    # mount /dev/md0 /mnt/raid1

完成上述步骤后,RAID 就可以使用。

17.7. 使用存储系统角色配置 RAID 卷

使用 storage 系统角色,您可以使用 Red Hat Ansible Automation Platform 在 RHEL 上配置 RAID 卷。在本小节中,您将了解如何使用可用参数设置 Ansible playbook,以配置 RAID 卷以满足您的要求。

先决条件

  • 您已在要运行 playbook 的系统中安装了 Red Hat Ansible Engine。

    注意

    您不必在要部署 storage 解决方案的系统中安装 Red Hat Ansible Automation Platform。

  • 已安装该系统中要运行 playbook 的 rhel-system-roles 软件包。
  • 您有一个清单文件详细描述了您要使用 storage 系统角色部署 RAID 卷的系统。

流程

  1. 使用以下内容 playbook.yml 创建新文件:

    - hosts: all
      vars:
        storage_safe_mode: false
        storage_volumes:
          - name: data
            type: raid
            disks: [sdd, sde, sdf, sdg]
            raid_level: raid0
            raid_chunk_size: 32 KiB
            mount_point: /mnt/data
            state: present
      roles:
        - name: rhel-system-roles.storage
    警告

    设备名称在某些情况下可能会改变,例如:当您在系统中添加新磁盘时。因此,为了避免数据丢失,我们不建议在 playbook 中使用特定的磁盘名称。

  2. 可选。验证 playbook 语法。

    # ansible-playbook --syntax-check playbook.yml
  3. 在清单文件上运行 playbook:

    # ansible-playbook -i inventory.file /path/to/file/playbook.yml

其它资源

  • 有关存储系统角色中使用的参数的详情,请查看 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

17.8. 配置 RAID

下面的部分论述了如何修改现有 RAID。要做到这一点,请选择以下方法之一:

  • 更改 RAID 属性(也称为 RAID reshape)。
  • 转换 RAID 级别(也称为 RAID 接管)。

17.8.1. 重新设定 RAID

本章论述了如何重新定义 RAID。您可以选择调整 RAID 大小的方法之一:

  • 放大(扩展)RAID。
  • 缩小 RAID。

17.8.1.1. 重新定义 RAID 大小(扩展)

这个步骤描述了如何增大 RAID。假设 /dev/md0 是您要增大的 RAID。

先决条件

  • 有足够的磁盘空间。
  • 已安装软件包 parted

流程

  1. 扩展 RAID 分区。要做到这一点,请按照重新定义分区文档大小的说明进行操作。
  2. 要将 RAID 扩展到最大分区容量,使用以下命令:

    # mdadm --grow --size=max /dev/md0

    请注意,要确定具体大小,您必须使用 kB 编写 --size 参数(例如 --size=524228)。

  3. 增加文件系统的大小。如需更多信息,请查看 管理文件系统文档

17.8.1.2. 重新定义 RAID 大小(缩小)

这个步骤描述了如何缩小 RAID。假设 /dev/md0 是您要缩小到 512MB 的 RAID。

先决条件

  • 已安装软件包 parted

流程

  1. 缩小文件系统。为此,请查看管理文件系统文档

    重要

    XFS 文件系统不支持缩小。

  2. 要将 RAID 减小到 512 MB,使用以下命令:

    # mdadm --grow --size=524228 /dev/md0

    请注意,您必须以 kB 为单位写入 --size 参数。

  3. 将分区缩小到您需要的大小。为此,请按照重新定义分区文档大小的说明进行操作

17.8.2. RAID 接管

本章论述了 RAID 中支持的转换,并包含完成这些转换的步骤。

17.8.2.1. 支持的 RAID 转换

可以从一个 RAID 级别转换到另一个 RAID 级别。这部分提供了列出支持的 RAID 转换列表。

 RAID0RAID1RAID4RAID5RAID6RAID10

RAID0

RAID1

RAID4

RAID5

RAID6

RAID10

例如:您可以将 RAID 0 转换为 RAID 4、RAID 级别 5 和 RAID 10

其它资源

  • 有关 RAID 级别转换的详情请参考 mdadm man page。

17.8.2.2. 转换 RAID 级别

这个步骤描述了如何将 RAID 转换为不同的 RAID 级别。假设您要将 RAID /dev/md0 级别 0 转换为 RAID 5,并在阵列中添加一个新的磁盘 /dev/sdd

先决条件

流程

  1. 要将 RAID /dev/md0 转换为 RAID 级别 5,请使用以下命令:

    # mdadm --grow --level=5 -n 3 /dev/md0 --force
  2. 要给阵列添加新磁盘,请使用以下命令:

    # mdadm --manage /dev/md0 --add /dev/sdd
  3. 要查看转换阵列的新详情,请使用以下命令:

    # mdadm --detail /dev/md0

其它资源

  • 有关 RAID 级别转换的详情请参考 mdadm man page。

17.9. 安装后将根磁盘转换为 RAID1

这部分论述了如何在安装 Red Hat Enterprise Linux 8 后将非 RAID root 磁盘转换为 RAID1 镜像。

在 PowerPC(PPC)构架中,执行以下步骤:

流程

  1. 将 PowerPC Reference Platform(PReP)引导分区的内容从 /dev/sda1 复制到 /dev/sdb1:

    # dd if=/dev/sda1 of=/dev/sdb1
  2. 更新两个磁盘上的第一个分区中的 Prep 和 boot 标记:

    $ parted /dev/sda set 1 prep on
    $ parted /dev/sda set 1 boot on
    
    $ parted /dev/sdb set 1 prep on
    $ parted /dev/sdb set 1 boot on
注意

运行 grub2-install /dev/sda 命令无法在 PowerPC 机器上工作,并返回错误,但系统会按预期引导。

17.10. 创建高级 RAID 设备

在某些情况下,您可能想要在安装完成后无法创建的阵列上安装操作系统。通常,这意味着在复杂的 RAID 设备中设置 /boot 或者 root 文件系统阵列。在这种情况下,您可能需要使用Anaconda 安装程序不支持的阵列选项。要临时解决这个问题,请执行以下步骤:

流程

  1. 插入安装磁盘。
  2. 在初始引导过程中,选择 Rescue Mode 而不是 InstallUpgrade当系统完全引导进入救援模式时,用户会看到一个命令行终端。
  3. 在这个终端中,使用 parted 在目标硬盘中创建 RAID 分区。然后,使用 mdadm 使用任何和所有可用的设置和选项从这些分区中手动创建 raid 阵列。有关如何进行这些操作的更多信息,请参阅 man partedman mdadm
  4. 创建阵列后,您可以选择在阵列中创建文件系统。
  5. 重启计算机并选择 InstallUpgrade 进行正常安装。Anaconda 安装程序搜索系统中的磁盘时,它将找到预先存在的 RAID 设备。
  6. 当系统询问如何使用磁盘时,请选择 Custom Layout 并点 Next。在设备列表中,会列出预先存在的 MD RAID 设备。
  7. 选择 RAID 设备,点 Edit 并配置其挂载点和(可选)应使用的文件系统类型(如果您之前未创建),然后单击 DoneAnaconda 将在这个预先存在的 RAID 设备中执行安装,在在 Rescue Mode 中创建自定义选项时保留您选择的自定义选项。
注意

安装程序的有限 Rescue 模式不包括 man 页面。man mdadmman md 都包含用于创建自定义 RAID 阵列的有用信息,在整个临时解决方案中可能会需要它。因此,您可以需要可以访问有这些 man 页面的机器,或者在引导到救援模式 并创建自定义阵列前打印这些信息。

17.11. 监控 RAID

这个模块描述了如何使用 mdadm 工具设置 RAID 监控选项。

先决条件

  • 已安装软件包 mdadm
  • 设定邮件服务。

流程

  1. 要为监控阵列创建配置文件,您必须扫描详情并将结果转发到 /etc/mdadm.conf 文件。要做到这一点,请使用以下命令:

    # mdadm --detail --scan >> /etc/mdadm.conf

    请注意,ARRAYMAILADDR 是必需的变量。

  2. 使用您选择的文本编辑器打开配置文件 /etc/mdadm.conf
  3. 使用通知的电子邮件地址添加 MAILADDR 变量。例如,添加新行:

    MAILADDR <example@example.com>

    其中 是您要从阵列监控接收警报的电子邮件地址。

  4. /etc/mdadm.conf 文件中保存更改并关闭它。

完成上述步骤后,监控系统会将警报发送到电子邮件地址。

其它资源

  • 有关详情请参考 mdadm.conf 5 man page。

17.12. 维护 RAID

这部分提供各种 RAID 维护过程。

17.12.1. 替换 RAID 中出现故障的磁盘

这个步骤描述了如何替换独立磁盘冗余阵列(RAID)中的故障磁盘。假设您拥有 /dev/md0 RAID 10。在这种情况下,/dev/sdg 磁盘有故障,您需要将其替换为新磁盘 /dev/sdh

先决条件

  • 额外的备用磁盘。
  • 已安装 mdadm 软件包。
  • 有关阵列中出现故障磁盘的通知。要设置数组监控,请参阅 第 17.11 节 “监控 RAID”

流程

  1. 确定哪个磁盘失败。要做到这一点,请输入以下命令:

    # journalctl -k -f

    您会看到一条信息,显示哪个磁盘失败:

    md/raid:md0: Disk failure on sdg, disabling device.
    md/raid:md0: Operation continuing on 5 devices.
  2. Ctrl+C 键退出 journalctl 程序。
  3. 为阵列添加新磁盘。要做到这一点,请输入以下命令:

    # mdadm --manage /dev/md0 --add /dev/sdh
  4. 将失败的磁盘标记为故障。要做到这一点,请输入以下命令:

    # mdadm --manage /dev/md0 --fail /dev/sdg
  5. 使用以下命令检查有问题的磁盘是否已被正确屏蔽:

    # mdadm --detail /dev/md0

    在最后一个命令输出的末尾,您会看到类似此示例的 RAID 磁盘信息,其中磁盘 /dev/sdgfaulty 状态:

        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
           2       8       48        2      active sync   /dev/sdd
           3       8       64        3      active sync   /dev/sde
           4       8       80        4      active sync   /dev/sdf
           6       8      112        5      active sync   /dev/sdh
    
           5       8       96        -      faulty   /dev/sdg
  6. 最后,从阵列中删除有问题的磁盘。要做到这一点,请输入以下命令:

    # mdadm --manage /dev/md0 --remove /dev/sdg
  7. 使用以下命令检查 RAID 详情:

    # mdadm --detail /dev/md0

    在最后一个命令输出的末尾,您将看到类似如下的 RAID 磁盘信息:

        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
           2       8       48        2      active sync   /dev/sdd
           3       8       64        3      active sync   /dev/sde
           4       8       80        4      active sync   /dev/sdf
           6       8      112        5      active sync   /dev/sdh

完成了以上步骤后,您将获得一个 RAID /dev/md0,它带有一个新磁盘 /dev/sdh

17.12.2. 替换阵列中有问题的磁盘

这个步骤描述了如何替换独立磁盘冗余阵列(RAID)中的损坏磁盘。假设您有 /dev/md0 RAID 6。在这种情况下,/dev/sdb 磁盘具有硬件问题,且无法再使用。您需要将其替换为新磁盘 /dev/sdi

先决条件

  • 需要被替换的新磁盘。
  • 已安装 mdadm 软件包。

流程

  1. 使用以下命令检查日志消息:

    # journalctl -k -f

    您会看到一条信息,显示哪个磁盘失败:

    md/raid:md0: Disk failure on sdb, disabling device.
    md/raid:md0: Operation continuing on 5 devices.
  2. Ctrl+C 键退出 journalctl 程序。
  3. 将新磁盘作为备用磁盘添加到阵列。要做到这一点,请输入以下命令:

    # mdadm --manage /dev/md0 --add /dev/sdi
  4. 将损坏的磁盘标记为 faulty。要做到这一点,请输入以下命令:

    # mdadm --manage /dev/md0 --fail /dev/sdb
  5. 从阵列中删除失败的磁盘。要做到这一点,请输入以下命令:

    # mdadm --manage /dev/md0 --remove /dev/sdb
  6. 使用以下命令检查阵列的状态:

    # mdadm --detail /dev/md0

    在最后一个命令输出的末尾,您将看到类似如下的 RAID 磁盘信息:

        Number   Major   Minor   RaidDevice State
           7       8      128        0      active sync   /dev/sdi
           1       8       32        1      active sync   /dev/sdc
           2       8       48        2      active sync   /dev/sdd
           3       8       64        3      active sync   /dev/sde
           4       8       80        4      active sync   /dev/sdf
           6       8      112        5      active sync   /dev/sdh

完成了以上步骤后,您将获得一个 RAID /dev/md0,它带有一个新磁盘 /dev/sdi

17.12.3. 重新同步 RAID 磁盘

这个步骤描述了如何重新同步 RAID 阵列中的磁盘。假设您有 /dev/md0 RAID。

先决条件

  • 软件包 mdadm 已安装。

流程

  1. 要检查阵列是否有失败的磁盘行为,请输入以下命令:

    # echo check > /sys/block/md0/md/sync_action

    此操作将检查阵列并将结果写入 /sys/block/md0/md/sync_action 文件中。

  2. 使用您选择的文本编辑器打开文件 /sys/block/md0/md/sync_action,并查看是否有有关磁盘同步失败的消息。
  3. 要重新同步阵列中的磁盘,请输入以下命令:

    # echo repair > /sys/block/md0/md/sync_action

    此操作将重新同步阵列中的磁盘,并将结果写入 /sys/block/md0/md/sync_action 文件中。

  4. 要查看同步进度,请输入以下命令:

    # cat /proc/mdstat


[1] 热交换机箱允许您删除硬盘驱动器,而无需关闭系统。