md raid5:“没有有效的超级块”,但 mdadm --examine 说一切都很好

md raid5:“没有有效的超级块”,但 mdadm --examine 说一切都很好

就这样,事情发生了:我的 Linux 机器上的软件 RAID5 不知何故失败了,现在拒绝组装。

设置概述:

  • 无头服务器运行Debian 杰西 8.6(目前稳定)
  • 定制的Linux 内核 v4.8.8(见下文),主要基于官方 Debian 软件包 - 主要是为了更新 BTRFS 代码
  • 截至 2016 年 11 月 18 日,所有软件包均已更新
  • 总共四个硬盘:
    • /dev/sda被分区为/boot/efi、 交换 和/(按此顺序)
    • /dev/sdb是 RAID 成员(无分区表)
    • /dev/sd[cd]每个都有一个跨越整个驱动器的分区,并且sd[cd]1是 RAID 的成员
    • sda是500GB,sd[bcd]是4TB磁盘。sd[cd]1分区的大小完全相同,sdb根本不分区的大小稍大(浪费一些空间,否则这些空间将用于分区表)。
  • 组装成 后/dev/md0,RAID 进一步分区,单个分区/dev/md0p1跨越整个多磁盘,然后保存 BTRFS 文件系统。 (这是由 Debian 安装程序设置的,现在更改已经太晚了。)

我最近买了第五张磁盘,到达时就坏了。在将磁盘添加到服务器后不久,我就不得不离开该站点,所以直到一两天后我才注意到这一事实,但由于这个新磁盘还不是 RAID 的一部分,所以这不会改变任何事情。

当我添加新购买的磁盘时,服务器运行内核 4.8.7,一切看起来都很好。我编译了内核版本 4.8.8 并安装了它,使用 关闭服务器systemctl poweroff,删除死磁盘并尝试重新启动。由于服务器通常是无头的,我只能看到它在大约 5 分钟的宽限时间后没有恢复。简单地按电源按钮它不会做出反应,所以我切断了电源,添加了显卡(它没有内部显卡)+显示器+键盘,随后出现了systemd紧急外壳。

我获得了包含先前内核和当前内核的紧急 shell,因此我认为这不是原因,或者损坏已经造成。我目前正在dd将所有三个 RAID 磁盘插入/dev/null以排除可能的物理磁盘故障,但由于它们已经超过 1TB 插入磁盘且没有任何错误,我假设任何磁盘上的超级块都没有物理损坏。


说得够多了,让我们更具体一些。以下所有命令都是从紧急 root shell 发出的,即基本系统正在运行(不是 initrd)。

/proc/mdstat对 RAID 一无所知:

Personalities : [raid6] [raid5] [raid4]
unused devices: <none>

这就是我得到的mdadm --assemble --verbose /dev/md0:(/dev/sde这是一个外部 USB 硬盘,我用它来提取这些日志)

mdadm: looking for devices for /dev/md0
mdadm: no RAID superblock on /dev/sde1
mdadm: no RAID superblock on /dev/sde
mdadm: no RAID superblock on /dev/sdd
mdadm: no RAID superblock on /dev/sdc
mdadm: no RAID superblock on /dev/sda3
mdadm: no RAID superblock on /dev/sda2
mdadm: no RAID superblock on /dev/sda1
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sdd1 is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdb is identified as a member of /dev/md0, slot 0.
mdadm: failed to add /dev/sdc1 to /dev/md0: Invalid argument
mdadm: failed to add /dev/sdd1 to /dev/md0: Invalid argument
mdadm: added /dev/sdb to /dev/md0 as 0
mdadm: failed to RUN_ARRAY /dev/md0: Input/output error

...这些行journalctl

Nov 18 14:56:34 zoey kernel: md: sdc1 does not have a valid v1.2 superblock, not importing!
Nov 18 14:56:34 zoey kernel: md: md_import_device returned -22
Nov 18 14:56:34 zoey kernel: md: sdd1 does not have a valid v1.2 superblock, not importing!
Nov 18 14:56:34 zoey kernel: md: md_import_device returned -22
Nov 18 14:56:34 zoey kernel: md: bind<sdb>
Nov 18 14:56:34 zoey kernel: md/raid:md0: device sdb operational as raid disk 0
Nov 18 14:56:34 zoey kernel: md/raid:md0: allocated 3316kB
Nov 18 14:56:34 zoey kernel: md/raid:md0: not enough operational devices (2/3 failed)
Nov 18 14:56:34 zoey kernel: RAID conf printout:
Nov 18 14:56:34 zoey kernel:  --- level:5 rd:3 wd:1
Nov 18 14:56:34 zoey kernel:  disk 0, o:1, dev:sdb
Nov 18 14:56:34 zoey kernel: md/raid:md0: failed to run raid set.
Nov 18 14:56:34 zoey kernel: md: pers->run() failed ...
Nov 18 14:56:34 zoey kernel: md: md0 stopped.
Nov 18 14:56:34 zoey kernel: md: unbind<sdb>
Nov 18 14:56:34 zoey kernel: md: export_rdev(sdb)

哦不,超级块坏了,甚至mdadm --assemble --force无法组装!让我们看看有什么mdadm --examine要说的:

/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : cdab20e2:45150011:f10d83fe:f0299188
           Name : zoey:0  (local to host zoey)
  Creation Time : Fri Sep 26 17:23:15 2014
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 7813840560 (3725.93 GiB 4000.69 GB)
     Array Size : 7813770240 (7451.79 GiB 8001.30 GB)
  Used Dev Size : 7813770240 (3725.90 GiB 4000.65 GB)
    Data Offset : 196608 sectors
   Super Offset : 8 sectors
   Unused Space : before=196520 sectors, after=70320 sectors
          State : clean
    Device UUID : 1751c53f:c527c4cd:10e8f426:0217bf5e

    Update Time : Fri Nov 18 04:02:16 2016
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 7fa86509 - correct
         Events : 112125

         Layout : left-symmetric
     Chunk Size : 512K

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

/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : cdab20e2:45150011:f10d83fe:f0299188
           Name : zoey:0  (local to host zoey)
  Creation Time : Fri Sep 26 17:23:15 2014
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 7813902336 (3725.96 GiB 4000.72 GB)
     Array Size : 7813770240 (7451.79 GiB 8001.30 GB)
  Used Dev Size : 7813770240 (3725.90 GiB 4000.65 GB)
    Data Offset : 196608 sectors
   Super Offset : 8 sectors
   Unused Space : before=196528 sectors, after=66560 sectors
          State : clean
    Device UUID : 0c60e19b:daff087f:c1f09dbb:41bb80c3

    Update Time : Fri Nov 18 04:02:16 2016
       Checksum : 866cea0a - correct
         Events : 112125

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)

/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : cdab20e2:45150011:f10d83fe:f0299188
           Name : zoey:0  (local to host zoey)
  Creation Time : Fri Sep 26 17:23:15 2014
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 7813902336 (3725.96 GiB 4000.72 GB)
     Array Size : 7813770240 (7451.79 GiB 8001.30 GB)
  Used Dev Size : 7813770240 (3725.90 GiB 4000.65 GB)
    Data Offset : 196608 sectors
   Super Offset : 8 sectors
   Unused Space : before=196528 sectors, after=66560 sectors
          State : clean
    Device UUID : e80a2296:dfadb7ad:e458e491:bf1d12b0

    Update Time : Fri Nov 18 04:02:16 2016
       Checksum : 72340d8d - correct
         Events : 112125

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)

mdadm --examine --scan --verbose似乎也发现所有磁盘都很好:

ARRAY /dev/md/0  level=raid5 metadata=1.2 num-devices=3 UUID=cdab20e2:45150011:f10d83fe:f0299188 name=zoey:0
   devices=/dev/sdd1,/dev/sdc1,/dev/sdb

mdadm.conf当我第一次安装当前操作系统时,也可以在 Debian 安装程序为我生成的文件中找到这一行(我没有手动更改此文件,因为这么长时间以来一切都工作正常):

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0 metadata=1.2 UUID=cdab20e2:45150011:f10d83fe:f0299188 name=zoey:0

# This file was auto-generated on Fri, 26 Sep 2014 18:10:27 +0200
# by mkconf 3.2.5-5

SMART 还表示,所有磁盘一切正常,除了有时/dev/sdc会出现异常高的气流温度In_The_Past- 但温度问题已得到解决,并且所有其他值(最显着的重新分配/挂起扇区 = 0)均在可接受的范围内驱动器。

device mapper我尝试在物理块设备上的覆盖层上重新创建 RAID 。但是,该设置无法识别 RAID 内的分区表,从而无法挂载文件系统。您可以在这里找到打字稿。


这就是我不知所措的地方。整个 RAID 对我来说看起来很好,那么为什么md驱动程序会拒绝组装呢?有什么我可以尝试的事情可以提高我成功的机会吗?

答案1

最简单的解决方案是:--update=devicesize在组装时添加。

我不知道如何,但显然分区大小和 md 记住的该驱动器的大小不再匹配。为大家干杯德国 ubuntu 用户论坛他们通过手动十六进制编辑煞费苦心地解决了他们的问题,最后找到了正确的切换到mdadm.

相关内容