从 Linux RAID 1 阵列恢复分区

从 Linux RAID 1 阵列恢复分区

我有一台旧服务器(Fedora 4——是的,旧!)最近死掉了。它在软件 RAID 1 阵列中配置了两个 IDE 磁盘,我正在尝试恢复数据。不幸的是,我已经有一段时间没有搞乱 mdadm 了,我担心我可能搞砸了一些事情。另外,虽然阵列中有两个磁盘,但其中一个似乎完全死了。当我将其连接到另一台计算机时,该计算机挂在 BIOS 屏幕上并且无法启动。所以我决定使用另一个镜像磁盘。

我把磁盘放在另一台机器上,我尝试的第一件事就是运行:

mdadm --create /dev/md0 -v --force --raid-devices=1 --level=raid1 /dev/sdb2

然而,这不会让我挂载文件系统:

# mount -t ext3 /dev/md0 /mnt 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

不过,它显然确实将一些内容写回磁盘,这就是为什么我担心我可能把它搞砸了:

# mdadm --examine /dev/sdb2
/dev/sdb2:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b6babdfb:e99e3bd3:398fcebe:dd38faab
           Name : bluto:0  (local to host bluto)
  Creation Time : Thu Dec 29 15:36:10 2016
     Raid Level : raid1
   Raid Devices : 1

 Avail Dev Size : 310277362 (147.95 GiB 158.86 GB)
     Array Size : 310277218 (147.95 GiB 158.86 GB)
  Used Dev Size : 310277218 (147.95 GiB 158.86 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : 0f3d948b:398095cc:9621f72f:fcd11310

    Update Time : Thu Dec 29 15:36:10 2016
       Checksum : c58ea2b6 - correct
         Events : 0


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

此处的创建时间是当前的,主机名“bluto”是我用于恢复的机器,而不是原始服务器。因此,这肯定是在我进行恢复工作时写入的,这让我担心一些重要的东西可能已被抹去。

然后我想起了一个更简单的 mdadm 技巧,这实际上适用于同一磁盘的不同分区。不幸的是,该分区只是 /boot,因此数据并不有趣,但它证明该技术应该有效:

# mdadm --assemble --run /dev/md0 /dev/sdb1
mdadm: /dev/md0 has been started with 1 drive (out of 2).
# mount -t ext3 /dev/md0 /mnt
# ls /mnt
config-2.6.11-1.1369_FC4  grub                          initrd-2.6.17-1.2142_FC4.img  System.map-2.6.11-1.1369_FC4  vmlinuz-2.6.11-1.1369_FC4
config-2.6.17-1.2142_FC4  initrd-2.6.11-1.1369_FC4.img  lost+found                    System.map-2.6.17-1.2142_FC4  vmlinuz-2.6.17-1.2142_FC4

但是当我卸载它并停止 md 设备,然后对我的实际数据分区(sdb2)尝试同样的操作时,我得到了与以前相同的错误:

# umount /mnt
# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
# mdadm --assemble --run /dev/md0 /dev/sdb2
mdadm: /dev/md0 has been started with 1 drive.
# mount -t ext3 /dev/md0 /mnt
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

我不知道接下来要尝试什么。我想过在其上运行 e2fsck,但是我应该直接针对 /dev/sdb2 运行它,还是在运行时针对 /dev/md0 运行它?我还担心如果 fs 已经很糟糕,这可能会使事情变得更糟。

相关内容