创建示例 RAID 10 阵列

创建示例 RAID 10 阵列

目前我有 8 个磁盘,每个磁盘大小为 32G,组成一个 RAID 10。现在,我想通过添加额外的磁盘来增加此 RAID 的大小。这是一个生产设备,因此 RAID 中已经有关键数据。文件系统是 XFS。有没有办法增加此 RAID 的大小而不影响该 RAID 上正在运行的读/写操作。如果没有,如何以最短的离线时间做到这一点?

答案1

mdadm现有的答案已经过时了。现在是 2020 年,现在只需添加 2 个或更多相同大小的磁盘即可扩展软件 RAID 10。

创建示例 RAID 10 阵列

为了测试目的,我没有创建物理驱动器,而是创建了 6x 10GB LVM 卷/dev/vg0/rtest1- rtest6mdadm 对此没有任何抱怨。

# Using the thinpool lvthin on VG vg0 - I created 6x 10G volumes
lvcreate -T vg0/lvthin -V 10G -n rtest1 
lvcreate -T vg0/lvthin -V 10G -n rtest2
...

接下来,我使用前 4 个rtestX卷创建了一个 RAID 10 mdadm 阵列

mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/vg0/rtest[1-4]

使用mdadm -D(等于--detail),我们可以看到该阵列有 4x“驱动器”,容量为 40GB 卷中的 20GB,正如 RAID 10 所预期的那样。

root@host ~ # mdadm -D /dev/md0

/dev/md0:
           Version : 1.2
     Creation Time : Fri Nov 20 09:02:39 2020
        Raid Level : raid10
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Nov 20 09:04:24 2020
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : someguy123:0  (local to host someguy123)
              UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
            Events : 23

    Number   Major   Minor   RaidDevice State
       0     253        9        0      active sync set-A   /dev/dm-9
       1     253       10        1      active sync set-B   /dev/dm-10
       2     253       11        2      active sync set-A   /dev/dm-11
       3     253       12        3      active sync set-B   /dev/dm-12

使用 2 个新的大小相同的卷/磁盘扩展 RAID10

要扩大阵列,首先需要将--add磁盘对添加到阵列中,然后使用--grow --raid-devices=X(其中 X 是 RAID 中的新磁盘总数)请求 mdadm 重塑 RAID10 以使用 2 个备用磁盘作为阵列的一部分。

mdadm --add /dev/md0 /dev/vg0/rtest5 /dev/vg0/rtest6
mdadm --grow /dev/md0 --raid-devices=6

监控重新同步过程

这是无聊的部分 - 等待几分钟,几小时,几天甚至几周的时间,具体取决于您的 RAID 有多大,直到 mdadm 完成围绕新驱动器的重塑。

如果我们检查的话mdadm -D,我们可以看到 RAID 当前正在重塑。

mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Nov 20 09:02:39 2020
        Raid Level : raid10
        Array Size : 20953088 (19.98 GiB 21.46 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 6
     Total Devices : 6
       Persistence : Superblock is persistent

       Update Time : Fri Nov 20 09:15:05 2020
             State : clean, reshaping
    Active Devices : 6
   Working Devices : 6
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

    Reshape Status : 0% complete
     Delta Devices : 2, (4->6)

              Name : someguy123:0  (local to host someguy123)
              UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
            Events : 31

    Number   Major   Minor   RaidDevice State
       0     253        9        0      active sync set-A   /dev/dm-9
       1     253       10        1      active sync set-B   /dev/dm-10
       2     253       11        2      active sync set-A   /dev/dm-11
       3     253       12        3      active sync set-B   /dev/dm-12
       5     253       14        4      active sync set-A   /dev/dm-14
       4     253       13        5      active sync set-B   /dev/dm-13

享受更大的 RAID10 阵列!

最终,一旦mdadm完成重塑,我们现在可以看到数组大小约为 30G,而不是约 20G,这意味着重塑成功并且相对轻松 :)

mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Nov 20 09:02:39 2020
        Raid Level : raid10
        Array Size : 31429632 (29.97 GiB 32.18 GB)
     Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
      Raid Devices : 6
     Total Devices : 6
       Persistence : Superblock is persistent

       Update Time : Fri Nov 20 09:25:01 2020
             State : clean
    Active Devices : 6
   Working Devices : 6
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : someguy123:0  (local to host someguy123)
              UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
            Events : 93

    Number   Major   Minor   RaidDevice State
       0     253        9        0      active sync set-A   /dev/dm-9
       1     253       10        1      active sync set-B   /dev/dm-10
       2     253       11        2      active sync set-A   /dev/dm-11
       3     253       12        3      active sync set-B   /dev/dm-12
       5     253       14        4      active sync set-A   /dev/dm-14
       4     253       13        5      active sync set-B   /dev/dm-13

答案2

有两种情况:

  1. 添加新驱动器最简单、最安全的方法是在新驱动器上创建新阵列,在新阵列上创建物理卷,一切就绪。这里不会损失性能。作为奖励,您可以创建一个新的卷组,以便将数据放在一个阵列或另一个阵列中。
  2. 您用更大的驱动器替换现有驱动器 逐个替换它们,每次在磁盘上创建 2 个分区。您将第一个(例如 sdX1)添加到现有阵列(它应该会自动恢复),然后您可以在所有第二个分区(sdX2)上创建一个新阵列。根据您的使用情况,某些操作可能会影响性能(基本上如果您在两个阵列之间复制数据)。

在这两种情况下,您都不会丢失数据,而且如果您的硬件允许热插拔,那么您就不会出现停机。

顺便说一句,即使 mdadm 允许动态调整数组大小,我也不会冒险使用生产数据。

答案3

假设这是在 Linux 上mdadm- 你不能。

mdadm不支持增大 RAID10

相关内容