mdadm RAID - 在增长(收缩)重塑期间重新启动 - 不起作用(卡住)

mdadm RAID - 在增长(收缩)重塑期间重新启动 - 不起作用(卡住)

我有一个Linux软件Raid6阵列(mdadm)。我将其从 6x4TB 磁盘(16TB 可用)增加到 7x4TB(20TB 可用)。重塑过程顺利,但当我执行 resize2fs 时,我遇到了众所周知的 EXT4 16TB 文件系统限制问题。我检查过,文件系统没有 64 位标志。因此,为了回收我刚刚添加到阵列中的额外驱动器,我这样做了:

johnny@debian:~$ sudo resize2fs /dev/md0 16000G
johnny@debian:~$ sudo mdadm --grow /dev/md0 --array-size=16000G
johnny@debian:~$ sudo mdadm --grow /dev/md0 --raid-devices=6 --backup-file=/tmp/backup

注意备份文件位置。这很快就会变得很重要,因为我使用的是 Debian。

所以事情进展顺利,缓慢但有效。进度达到了 3.7%,并且速度慢得像爬行一样。我以为这是因为我在同一时间重塑了其他一些数组。当其他工作完成而这项工作没有加快时,我真的很担心。因为它说需要几年时间才能完成,所以我决定重新启动,看看它是否会加快速度,所以我重新启动了系统。

这是不好的事情开始发生的时候......

我使用的是 Debian,据我所知,当系统启动时 /tmp 文件夹会被清除,因此我的重塑备份文件丢失了。另外,因为我的 /etc/fstab 文件正在尝试挂载 md0,但它现在没有组装,所以系统几次无法启动。我从 live CD 开始修复 fstab 文件并使系统恢复正常。

当我解决这个问题后,系统就启动了,这是我第一次看到 md0 不是简单地自行组装并继续重塑。恐慌袭来……

我没有以下命令的输出,但我设法找到了我输入的命令。简要解释接下来发生的事情......

johnny@debian:~$ sudo mdadm --assemble /dev/md0
johnny@debian:~$ sudo mdadm --assemble --force /dev/md0
johnny@debian:~$ sudo mdadm --assemble --force /dev/md0 --backup-file=/tmp/backup

第一个命令失败了,所以我尝试了 --force 选项,它也失败了,但错误消息告诉我失败是因为它需要 --backup-file 选项,所以我运行了第三个命令。我预计备份文件仍然存在,但事实并非如此,因为它位于 /tmp 文件夹中并且已被删除。但这似乎并没有造成任何问题,因为阵列已组装完毕。

md0 现在的样子如下。请注意标记为“已移除”的磁盘。我怀疑这是被移除的磁盘 sdj1。

johnny@debian:~$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Jan 11 09:59:42 2013
     Raid Level : raid6
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 3906887168 (3725.90 GiB 4000.65 GB)
   Raid Devices : 6
  Total Devices : 6
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sat Mar  5 20:45:56 2016
          State : clean, degraded, reshaping 
 Active Devices : 6
Working Devices : 6
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

 Reshape Status : 3% complete
  Delta Devices : -1, (7->6)

           Name : BigRaid6
           UUID : 45747bdc:ba5a85fe:ead35e14:24c2c7b2
         Events : 4339739

    Number   Major   Minor   RaidDevice State
      11       8      224        0      active sync   /dev/sdo
       2       0        0        2      removed
       6       8       80        2      active sync   /dev/sdf
       7       8      176        3      active sync   /dev/sdl
      12       8       16        4      active sync   /dev/sdb
       8       8       32        5      active sync   /dev/sdc

       9       8      128        6      active sync   /dev/sdi

这是目前重塑的进度。请注意,它完全停留在 0K/秒。

johnny@debian:~$ cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4] 
md0 : active raid6 sdo[11] sdi[9] sdc[8] sdb[12] sdl[7] sdf[6]
      15627548672 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/5] [U_UUUU]
      [>....................]  reshape =  3.7% (145572864/3906887168) finish=284022328345.0min speed=0K/sec
      bitmap: 5/30 pages [20KB], 65536KB chunk

unused devices: <none>

以下是仍在阵列中的各个光盘。

johnny@debian:~$ sudo mdadm --examine /dev/sd[oflbci]
/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x5
     Array UUID : 45747bdc:ba5a85fe:ead35e14:24c2c7b2
           Name : BigRaid6
  Creation Time : Fri Jan 11 09:59:42 2013
     Raid Level : raid6
   Raid Devices : 6

 Avail Dev Size : 7813775024 (3725.90 GiB 4000.65 GB)
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 7813774336 (3725.90 GiB 4000.65 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262064 sectors, after=688 sectors
          State : clean
    Device UUID : 99b0fbcc:46d619bb:9ae96eaf:840e21a4

Internal Bitmap : 8 sectors from superblock
  Reshape pos'n : 15045257216 (14348.28 GiB 15406.34 GB)
  Delta Devices : -1 (7->6)

    Update Time : Sat Mar  5 20:45:56 2016
       Checksum : fca445bd - correct
         Events : 4339739

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 4
   Array State : A.AAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x5
     Array UUID : 45747bdc:ba5a85fe:ead35e14:24c2c7b2
           Name : BigRaid6
  Creation Time : Fri Jan 11 09:59:42 2013
     Raid Level : raid6
   Raid Devices : 6

 Avail Dev Size : 7813775024 (3725.90 GiB 4000.65 GB)
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 7813774336 (3725.90 GiB 4000.65 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262064 sectors, after=688 sectors
          State : clean
    Device UUID : b8d49170:06614f82:ad9a38a4:e9e06da5

Internal Bitmap : 8 sectors from superblock
  Reshape pos'n : 15045257216 (14348.28 GiB 15406.34 GB)
  Delta Devices : -1 (7->6)

    Update Time : Sat Mar  5 20:45:56 2016
       Checksum : 5d867810 - correct
         Events : 4339739

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 5
   Array State : A.AAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdf:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x5
     Array UUID : 45747bdc:ba5a85fe:ead35e14:24c2c7b2
           Name : BigRaid6
  Creation Time : Fri Jan 11 09:59:42 2013
     Raid Level : raid6
   Raid Devices : 6

 Avail Dev Size : 7813775024 (3725.90 GiB 4000.65 GB)
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 7813774336 (3725.90 GiB 4000.65 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262064 sectors, after=688 sectors
          State : clean
    Device UUID : dd56062c:4b55bf16:6a468024:3ca6bfd0

Internal Bitmap : 8 sectors from superblock
  Reshape pos'n : 15045257216 (14348.28 GiB 15406.34 GB)
  Delta Devices : -1 (7->6)

    Update Time : Sat Mar  5 20:45:56 2016
       Checksum : 59045f87 - correct
         Events : 4339739

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : A.AAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdi:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x5
     Array UUID : 45747bdc:ba5a85fe:ead35e14:24c2c7b2
           Name : BigRaid6
  Creation Time : Fri Jan 11 09:59:42 2013
     Raid Level : raid6
   Raid Devices : 6

 Avail Dev Size : 7813775024 (3725.90 GiB 4000.65 GB)
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 7813774336 (3725.90 GiB 4000.65 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262064 sectors, after=688 sectors
          State : clean
    Device UUID : 92831abe:86de117c:710c368e:8badcef3

Internal Bitmap : 8 sectors from superblock
  Reshape pos'n : 15045257216 (14348.28 GiB 15406.34 GB)
  Delta Devices : -1 (7->6)

    Update Time : Sat Mar  5 20:45:56 2016
       Checksum : dd2fe2d1 - correct
         Events : 4339739

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 6
   Array State : A.AAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdl:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x5
     Array UUID : 45747bdc:ba5a85fe:ead35e14:24c2c7b2
           Name : BigRaid6
  Creation Time : Fri Jan 11 09:59:42 2013
     Raid Level : raid6
   Raid Devices : 6

 Avail Dev Size : 7813775024 (3725.90 GiB 4000.65 GB)
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 7813774336 (3725.90 GiB 4000.65 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262064 sectors, after=688 sectors
          State : clean
    Device UUID : 8404647a:b1922fed:acf71f64:18dfd448

Internal Bitmap : 8 sectors from superblock
  Reshape pos'n : 15045257216 (14348.28 GiB 15406.34 GB)
  Delta Devices : -1 (7->6)

    Update Time : Sat Mar  5 20:45:56 2016
       Checksum : 358734b4 - correct
         Events : 4339739

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 3
   Array State : A.AAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdo:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x5
     Array UUID : 45747bdc:ba5a85fe:ead35e14:24c2c7b2
           Name : BigRaid6
  Creation Time : Fri Jan 11 09:59:42 2013
     Raid Level : raid6
   Raid Devices : 6

 Avail Dev Size : 7813775024 (3725.90 GiB 4000.65 GB)
     Array Size : 15627548672 (14903.59 GiB 16002.61 GB)
  Used Dev Size : 7813774336 (3725.90 GiB 4000.65 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262064 sectors, after=688 sectors
          State : clean
    Device UUID : d7e84765:86fb751a:466ab0de:c26afc43

Internal Bitmap : 8 sectors from superblock
  Reshape pos'n : 15045257216 (14348.28 GiB 15406.34 GB)
  Delta Devices : -1 (7->6)

    Update Time : Sat Mar  5 20:45:56 2016
       Checksum : c3698023 - correct
         Events : 4339739

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 0
   Array State : A.AAAAA ('A' == active, '.' == missing, 'R' == replacing

这里是 /dev/sdj1,它曾经是阵列中唯一不是“整个磁盘”成员的成员。这是在重塑过程中从阵列中删除的一个。我怀疑仍然需要完成重塑,尽管它当前不是数组的成员,因为它具有重塑之前的数据。

johnny@debian:~$ sudo mdadm --examine /dev/sdj1
mdadm: No md superblock detected on /dev/sdj1.

所以这是我的问题...
1.我无法完成重塑。
2. 无法挂载阵列。当我尝试时,我明白了。

johnny@debian:~$ sudo mount /dev/md0 /media/BigRaid6
mount: wrong fs type, bad option, bad superblock on /dev/md0,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
johnny@debian:~$ sudo dmesg | tail
[42446.268089] sd 15:0:0:0: [sdk]  
[42446.268091] Add. Sense: Unrecovered read error - auto reallocate failed
[42446.268092] sd 15:0:0:0: [sdk] CDB: 
[42446.268093] Read(10): 28 00 89 10 bb 00 00 04 00 00
[42446.268099] end_request: I/O error, dev sdk, sector 2299575040
[42446.268131] ata16: EH complete
[61123.788170] md: md1: data-check done.
[77423.597923] EXT4-fs (md0): bad geometry: block count 4194304000 exceeds size of device (3906887168 blocks)
[77839.250590] EXT4-fs (md0): bad geometry: block count 4194304000 exceeds size of device (3906887168 blocks)
[78525.085343] EXT4-fs (md0): bad geometry: block count 4194304000 exceeds size of device (3906887168 blocks)

我确信如果重塑完成,安装就会成功,所以这可能是最重要的。仅供参考,这个阵列上的数据太大,无法备份,所以如果我丢失了它,数据就消失了。请帮忙!

编辑1:

我可以花 1000 美元(或更多)并获得足够的磁盘来复制所有内容,但我需要能够安装阵列才能正常工作。

另外,我刚刚注意到,在尝试安装阵列时收到的“错误几何形状”错误消息中包含一些感兴趣的信息。

[146181.331566] EXT4-fs (md0): bad geometry: block count 4194304000 exceeds size of device (3906887168 blocks)

设备的大小 3906887168 恰好是 md0 数组大小 15627548672 的 1/4。来自“mdadm --detail /dev/md0”

Array Size : 15627548672 (14903.59 GiB 16002.61 GB)

我不知道 4194304000 数字从何而来...但这是否意味着阵列的大小适合这些磁盘?或者这些大小不考虑 mdadm 元数据? 4194304000 是否包含元数据?

我可以发誓,在重塑开始之前,我尝试了几次以获得正确的尺寸,所以我认为一切都很好。也许我错了。

答案1

您的错误已经出现在第一个命令中,16000GiB这根本不是 6x4TB 磁盘上的错误,甚至16000GB可能是一个延伸,因为您丢失了一些mdadm元数据等空间。最后的错误消息与这种情况非常相似(bad geometry,文件系统认为设备提供的更大,并且文件系统绝对那)。

所以你现在面临着很多问题:

  • 你的文件系统太大
  • 你的心理医生被卡在了一半
  • 您的至少一个磁盘出现故障 ( /dev/sdk)
  • 你的备份文件丢失了
  • 可能的文件系统不一致(显然)

解决你的问题的方法不是让收缩以某种方式完成,而是在不损坏的情况下恢复到之前的状态......这可能仍然是有可能实现的,因为幸运的是收缩还没有进展到很大程度。

在这种情况下我会

  • 停止 RAID 并确保没有其他任何东西启动它(禁用udev自动组装规则等)
  • 使用覆盖文件使硬盘只读 (需要额外的备用磁盘用于临时存储)
  • 尝试使用所述覆盖重新创建 RAID

一般来说,重新创建 RAID 是一个非常非常糟糕的主意,因为它几乎总是会出错。不过,我认为在你的情况下,它可能比尝试以任何其他方式逆转收缩过程造成的损害更小。在 7 磁盘 RAID 6 中,该16GiB区域可能仍然未受影响...假设文件系统在 RAID 收缩时处于空闲状态。否则您会看到更多的文件系统不一致问题。

重新创建 RAID 时,您必须获得全部正确的变量:元数据版本、数据偏移、raid 级别、raid 布局、块大小、磁盘顺序……并且您必须通过将冗余磁盘保留为丢失来防止重新同步。

可能是这样的:

mdadm --create /dev/md0 --assume-clean \
    --metadata=1.2 --data-offset=128M --level=6 --layout=ls --chunk=512 \
    --raid-devices=7 missing missing /dev/mapper/overlay-{sdf,sdl,sdb,sdc,sdi}

没有保证,我自己显然没有尝试过。


验证其有效后,您可以将更改提交到磁盘(应用经验证可在不覆盖的情况下工作的步骤)。然后这一次,resize2fs文件系统正确(14G应该可以工作),然后缩小 RAID 并希望它不会再次卡住。可能不需要备份文件mdadm --grow,如果您确实使用备份文件,请确保不要丢失它。

相关内容