将 RAID-1 重塑为 RAID-5 永远挂起

将 RAID-1 重塑为 RAID-5 永远挂起

我在将 RAID 级别 1 重塑为 RAID 级别 5 时遇到了问题:它已经在 41% 处停留了几天了。

一些背景信息(很冗长,因为我不知道最终是否相关;抱歉)。

有问题的设备是运行 Debian 9 的 GNUBee NAS。

$ uname -a
Linux gnubee-n1.gnubee 4.4.87-gnu #0 SMP Wed Nov 22 13:06:13 2017 mips GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.11 (stretch)
Release:    9.11
Codename:   stretch

我有 2 个 2TB 驱动器,处于 RAID 级别 1 中。然后我又得到了 2 个 5TB 驱动器,我想将它们添加到阵列中。在阅读了一些指南后,我发现我可以从 RAID 级别 1 “升级”到 RAID 级别 5,因为具体来说就是从 2 个驱动器升级到 2 个以上。我决定试一试。

我安装了新驱动器,擦除了它们,将它们重新格式化为 ext4,然后挂载它们。我备份了原始驱动器上的所有数据,并且为了确保万无一失,我检查了原始 RAID 阵列的运行状况。

/usr/share/mdadm/checkarray /dev/md0

一切都好。

然后我尝试切换到 RAID 5。

mdadm --grow /dev/md0 --level=5

但是,我收到一个错误,提示块大小不是 4K 的倍数。

经过进一步研究后,我发现我需要将现有的 RAID 阵列大小缩小为 4K 的倍数(与错误建议的非常相似)。

resize2fs /dev/md0 1.5TB
mdadm --grow /dev/md0 --size=1874604032

一切顺利。

我将 RAID 级别切换为 5。

mdadm --grow /dev/md0 --level=5 --backup-file=/root/grow_md0.bak

再次,没有错误,我确认新的 RAID 级别是 5。

然后我将 2 个新驱动器添加到阵列,并将其扩展到 4 个驱动器。

mdadm --add /dev/md0 /dev/sdd /dev/sde
mdadm --grow --raid-devices=4 --backup-file=/root/grow_md0.bak /dev/md0

这又一次没有错误地运行了。我知道这个过程会花很长时间,可能要一两天,所以我回头检查了一下,发现重塑百分比在增加。我很满意,让机器工作了一天。

当我再次检查时,重塑过程已进行到 41%。我并没有多想;也许过程有点慢,但我之前从未将驱动器添加到阵列中,所以我知道什么呢?

第二天我又检查了一下,还是 41%。第三天也是。我开始怀疑有什么不对劲。(福尔摩斯帽子)

$ mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Dec 26 21:54:30 2017
     Raid Level : raid5
     Array Size : 1874604032 (1787.76 GiB 1919.59 GB)
  Used Dev Size : 1874604032 (1787.76 GiB 1919.59 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Apr  4 12:17:09 2020
          State : clean, reshaping
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

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

           Name : libreCMC:0
           UUID : c04d31c3:6579cf28:acb7b965:2d4c5e1d
         Events : 5498

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
       3       8       64        2      active sync   /dev/sde
       2       8       48        3      active sync   /dev/sdd

我不知道什么地方可能出了问题,或者从哪里开始挖掘,因此,任何能提供帮助调试的信息都将不胜感激。

提前致谢!

编辑

重复调用,/proc/mdstat输出以下内容。

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sde[3] sdd[2] sdb1[1] sda1[0]
      1874604032 blocks super 1.2 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      [========>............]  reshape = 41.2% (773695612/1874604032) finish=11211
552.6min speed=1K/sec

unused devices: <none>

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sde[3] sdd[2] sdb1[1] sda1[0]
      1874604032 blocks super 1.2 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      [========>............]  reshape = 41.2% (773695612/1874604032) finish=11211
594.4min speed=1K/sec

unused devices: <none>

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sde[3] sdd[2] sdb1[1] sda1[0]
      1874604032 blocks super 1.2 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      [========>............]  reshape = 41.2% (773695612/1874604032) finish=11212
178.5min speed=1K/sec

unused devices: <none>

# After 2 hours

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sde[3] sdd[2] sdb1[1] sda1[0]
      1874604032 blocks super 1.2 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      [========>............]  reshape = 41.2% (773695612/1874604032) finish=11420355.0min speed=1K/sec

unused devices: <none>

输出sysctl dev.raid.speed_limit_min

dev.raid.speed_limit_min = 10000

相关内容