Linux mdadm 命令实战示例

LinuxBeginner
立即练习

介绍

在本实验中,你将学习如何使用 Linux 的 mdadm 命令来创建、管理和监控软件 RAID 阵列。软件 RAID 是硬件 RAID 的一种经济高效且灵活的替代方案,它允许你在不需要专用硬件的情况下配置各种 RAID 级别。你将首先了解软件 RAID 的概念及其与硬件 RAID 的区别。然后,你将使用 mdadm 命令和虚拟块设备创建一个 RAID 5 阵列。最后,你将学习如何管理和监控软件 RAID 阵列。

Linux 命令速查表

理解软件 RAID 的概念

在这一步中,你将学习软件 RAID(独立磁盘冗余阵列,Redundant Array of Independent Disks)的概念,以及它与硬件 RAID 的区别。软件 RAID 是操作系统提供的一项功能,允许你使用软件而非专用的 RAID 控制器硬件来创建和管理 RAID 阵列。

软件 RAID 的主要优势在于它比硬件 RAID 更具成本效益和灵活性。它可以在任何具有多个存储设备的系统上实现,而无需专门的 RAID 硬件。然而,软件 RAID 的性能可能略低于硬件 RAID,因为 CPU 需要负责管理 RAID 操作。

你可以使用软件 RAID 配置多种 RAID 级别,例如 RAID 0(条带化)、RAID 1(镜像)、RAID 5(带分布式奇偶校验的条带化)和 RAID 6(带双分布式奇偶校验的条带化)。每种 RAID 级别在存储容量、性能和数据冗余之间提供了不同的权衡。

在下一步中,你将学习如何在 Linux 中使用 mdadm 命令创建软件 RAID 阵列。

使用 mdadm 创建软件 RAID 阵列

在这一步中,你将学习如何在 Linux 中使用 mdadm 命令创建软件 RAID 阵列。

首先,让我们创建四个虚拟块设备,它们将作为 RAID 阵列的底层存储:

sudo dd if=/dev/zero of=~/project/disk1.img bs=1M count=100
sudo dd if=/dev/zero of=~/project/disk2.img bs=1M count=100
sudo dd if=/dev/zero of=~/project/disk3.img bs=1M count=100
sudo dd if=/dev/zero of=~/project/disk4.img bs=1M count=100

示例输出:

100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0730474 s, 1.4 GB/s

接下来,让我们使用这四个虚拟磁盘创建一个 RAID 5 阵列:

sudo mdadm --create /dev/md0 --level=5 --raid-devices=4 ~/project/disk1.img ~/project/disk2.img ~/project/disk3.img ~/project/disk4.img

示例输出:

mdadm: chunk size defaults to 512K
mdadm: array /dev/md0 started.

mdadm 命令创建了一个名为 /dev/md0 的新 RAID 阵列,其 RAID 级别为 5,并使用了 4 个底层设备。

现在,让我们检查 RAID 阵列的状态:

sudo mdadm --detail /dev/md0

示例输出:

/dev/md0:
           Version : 1.2
     Creation Time : Tue Apr 25 15:25:35 2023
        Raid Level : raid5
        Array Size : 307200 (300.00 MiB 314.43 MB)
     Used Dev Size : 100000 (97.66 MiB 102.40 MB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Apr 25 15:25:35 2023
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 6d2d9c1c:b4d2f9c4:8d6f0e8f:e0b0d4d5
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       0        0        0      active sync   /home/labex/project/disk1.img
       1       0        1        1      active sync   /home/labex/project/disk2.img
       2       0        2        2      active sync   /home/labex/project/disk3.img
       3       0        3        3      active sync   /home/labex/project/disk4.img

输出显示 RAID 5 阵列已成功创建,并且处于干净、活跃状态。

在下一步中,你将学习如何管理和监控软件 RAID 阵列。

管理和监控软件 RAID 阵列

在这最后一步中,你将学习如何管理和监控你在上一步中创建的软件 RAID 阵列。

首先,让我们向 RAID 5 阵列添加一个新磁盘:

sudo dd if=/dev/zero of=~/project/disk5.img bs=1M count=100
sudo mdadm /dev/md0 --add ~/project/disk5.img

示例输出:

mdadm: added /home/labex/project/disk5.img

现在,让我们再次检查 RAID 阵列的状态:

sudo mdadm --detail /dev/md0

示例输出:

/dev/md0:
           Version : 1.2
     Creation Time : Tue Apr 25 15:25:35 2023
        Raid Level : raid5
        Array Size : 407200 (397.66 MiB 417.23 MB)
     Used Dev Size : 100000 (97.66 MiB 102.40 MB)
      Raid Devices : 5
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Tue Apr 25 15:26:16 2023
             State : clean, degraded, recovering
    Active Devices : 4
   Working Devices : 5
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 6d2d9c1c:b4d2f9c4:8d6f0e8f:e0b0d4d5
            Events : 6

    Number   Major   Minor   RaidDevice State
       0       0        0        0      active sync   /home/labex/project/disk1.img
       1       0        1        1      active sync   /home/labex/project/disk2.img
       2       0        2        2      active sync   /home/labex/project/disk3.img
       3       0        3        3      active sync   /home/labex/project/disk4.img
       4       0        4        -      spare   /home/labex/project/disk5.img

输出显示新磁盘 /home/labex/project/disk5.img 已作为备用设备添加到 RAID 5 阵列中。

接下来,让我们通过从 RAID 阵列中移除一个设备来模拟磁盘故障:

sudo mdadm /dev/md0 --fail /home/labex/project/disk1.img
sudo mdadm /dev/md0 --remove /home/labex/project/disk1.img

示例输出:

mdadm: set /home/labex/project/disk1.img faulty in /dev/md0
mdadm: hot removed /home/labex/project/disk1.img from /dev/md0

现在,让我们再次检查 RAID 阵列的状态:

sudo mdadm --detail /dev/md0

示例输出:

/dev/md0:
           Version : 1.2
     Creation Time : Tue Apr 25 15:25:35 2023
        Raid Level : raid5
        Array Size : 407200 (397.66 MiB 417.23 MB)
     Used Dev Size : 100000 (97.66 MiB 102.40 MB)
      Raid Devices : 5
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Apr 25 15:26:56 2023
             State : clean, degraded
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 6d2d9c1c:b4d2f9c4:8d6f0e8f:e0b0d4d5
            Events : 8

    Number   Major   Minor   RaidDevice State
       1       0        1        1      active sync   /home/labex/project/disk2.img
       2       0        2        2      active sync   /home/labex/project/disk3.img
       3       0        3        3      active sync   /home/labex/project/disk4.img
       4       0        4        4      spare   /home/labex/project/disk5.img
       0       0        0        -      removed

输出显示 RAID 5 阵列现在处于降级状态,其中一个设备故障,一个备用设备可用。

在这一步中,你已经学习了如何使用 mdadm 命令管理和监控软件 RAID 阵列,包括添加新磁盘、模拟磁盘故障以及观察 RAID 阵列的状态。

总结

在本实验中,你首先学习了软件 RAID 的概念,它允许你使用软件而非专用硬件来创建和管理 RAID 阵列。你探索了软件 RAID 的优势,例如成本效益和灵活性,以及可用的不同 RAID 级别。接着,你学习了如何在 Linux 中使用 mdadm 命令创建软件 RAID 阵列。你创建了四个虚拟块设备,并使用它们设置了一个 RAID 5 阵列,该阵列提供了数据冗余和性能提升。

Linux 命令速查表