如何在 Linux 中调整软件 raid 分区的大小

在本文中,将介绍从 raid 分区添加/删除分区的步骤。

在配置 RAID 时,始终建议向 RAID 设备添加一个备用分区,以便在出现任何硬盘故障时可以使用该备用分区

为了演示,让我们为服务器添加一个新的虚拟硬盘。

假设我们已经创建了一个新分区并将分区类型从默认更改为“Linux RAID”。

现在只需将新分区添加到我们的raid设备

# mdadm --manage /dev/md0 --add /dev/sdd1
mdadm: added /dev/sdd1

添加后让我们看看raid设备的详细信息

# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Sep 19 23:02:52 2014
     Raid Level : raid1
     Array Size : 5233024 (4.99 GiB 5.36 GB)
  Used Dev Size : 5233024 (4.99 GiB 5.36 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Sat Sep 20 02:06:39 2014
          State : clean
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1
           Name : test2.example:0  (local to host test2.example)
           UUID : 5a463788:9bf2659a:09d1c73a:9adcbbbd
         Events : 76
    Number   Major   Minor   RaidDevice State
       2       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        -      spare   /dev/sdd1

可以看到,总共有 3 个设备,其中 2 个设备用于 RAID,而一个作为备用设备。

增加 raid 数组的大小:

# mdadm --grow --raid-devices=3 /dev/md0
raid_disks for /dev/md0 set to 3

完成后运行以下命令

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdd1[3] sdb1[2] sdc1[1]
      5233024 blocks super 1.2 [3/2] [UU_]
      [======>..............]  recovery = 34.3% (1800064/5233024) finish=0.2min speed=225008K/sec
unused devices: <none>

可以看到将设备添加到组并执行镜像的操作。

我们可以使用以下命令详细查看相同的内容

# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Sep 19 23:02:52 2014
     Raid Level : raid1
     Array Size : 5233024 (4.99 GiB 5.36 GB)
  Used Dev Size : 5233024 (4.99 GiB 5.36 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Sat Sep 20 02:09:22 2014
          State : clean, degraded, recovering
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1
 Rebuild Status : 53% complete
           Name : test2.example:0  (local to host test2.example)
           UUID : 5a463788:9bf2659a:09d1c73a:9adcbbbd
         Events : 88
    Number   Major   Minor   RaidDevice State
       2       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        2      spare rebuilding   /dev/sdd1

恢复过程完成后,我们应该能够在 raid 数组下看到 3 个活动设备

# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Sep 19 23:02:52 2014
     Raid Level : raid1
     Array Size : 5233024 (4.99 GiB 5.36 GB)
  Used Dev Size : 5233024 (4.99 GiB 5.36 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Sat Sep 20 02:09:35 2014
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0
           Name : test2.example:0  (local to host test2.example)
           UUID : 5a463788:9bf2659a:09d1c73a:9adcbbbd
         Events : 99
    Number   Major   Minor   RaidDevice State
       2       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        2      active sync   /dev/sdd1

如果任何一个硬盘崩溃会发生什么?

让我们看一下会输出什么

现在我将手动失败 /dev/sdb1

# mdadm --fail /dev/md0 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0

再次检查详细输出

# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Sep 19 23:02:52 2014
     Raid Level : raid1
     Array Size : 5233024 (4.99 GiB 5.36 GB)
  Used Dev Size : 5233024 (4.99 GiB 5.36 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Sat Sep 20 02:13:31 2014
          State : clean, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0
           Name : test2.example:0  (local to host test2.example)
           UUID : 5a463788:9bf2659a:09d1c73a:9adcbbbd
         Events : 101
    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        2      active sync   /dev/sdd1
 2       8       17        -      faulty   /dev/sdb1

现在因为我们有一个有故障的设备,我们可以将它移除,因为它没有用

# mdadm --remove /dev/md0 /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0

调整raid 数组的大小并将raid 设备更新为可用编号。
活动分区例如:2

# mdadm --grow --raid-devices=2 /dev/md0
raid_disks for /dev/md0 set to 2

验证raid设备输出

# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Sep 19 23:02:52 2014
     Raid Level : raid1
     Array Size : 5233024 (4.99 GiB 5.36 GB)
  Used Dev Size : 5233024 (4.99 GiB 5.36 GB)
Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sat Sep 20 02:14:39 2014
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
           Name : test2.example:0  (local to host test2.example)
           UUID : 5a463788:9bf2659a:09d1c73a:9adcbbbd
         Events : 109
    Number   Major   Minor   RaidDevice State
       1       8       33        0      active sync   /dev/sdc1
       3       8       49        1      active sync   /dev/sdd1

因此,在不丢失任何数据的情况下返回了 2 个活动的 raid 设备。

日期:2020-06-02 22:18:33 来源:oir作者:oir