从 raid1 磁盘读取数据,超级块被擦除

从 raid1 磁盘读取数据,超级块被擦除

我有一个磁盘,以前放在我的 qnap NAS 中(它和另一个磁盘一起在 raid1 中,我现在还有这个磁盘)。NAS 坏了,我把这个磁盘挂载到我的 ubuntu 机器上,用来mdadm创建 raid 阵列,然后成功挂载并读取它。

然后我关闭了笔记本电脑,当我重新打开它时,我无法安装任何东西(mdadm 返回错误,说设备正忙)。我尝试了很多方法(也重新启动了),但无法重新安装它。

出于沮丧,我想到了一个糟糕的想法,mdadm --zero-superblock在磁盘的每个分区上运行,并增加了更多的麻烦,因为我现在无法做任何事情(除了侮辱自己)。

lsblk返回此:

sdc        8:32   0   2,7T  0 disk  
├─sdc1     8:33   0 517,7M  0 part  
│ └─md11   9:11   0 516,7M  0 raid1 
├─sdc2     8:34   0 517,7M  0 part  
│ └─md12   9:12   0 516,7M  0 raid1 
├─sdc3     8:35   0   2,7T  0 part  
├─sdc4     8:36   0 517,7M  0 part  /media/myuser/2ed9e1b2-2659-4202-9066-bd3246353f1d
└─sdc5     8:37   0     8G  0 part  
  └─md15   9:15   0     8G  0 raid1 
md13       9:13   0     0B  0 md    

该磁盘确实有 5 个分区,我需要访问。令我惊讶的是,Ubuntu无需询问/dev/sdc3就能挂载。/dev/sdc4

当我跑步时lvm fullreport我得到:

lvm fullreport
  WARNING: wrong checksum 0 in mda header on /dev/sdc3 at 4096
  WARNING: wrong magic number in mda header on /dev/sdc3 at 4096
  WARNING: wrong version 0 in mda header on /dev/sdc3 at 4096
  WARNING: wrong start sector 0 in mda header on /dev/sdc3 at 4096
  WARNING: bad metadata header on /dev/sdc3 at 4096.
  WARNING: scanning /dev/sdc3 mda1 failed to read metadata summary.
  WARNING: repair VG metadata on /dev/sdc3 with vgck --updatemetadata.
  WARNING: scan failed to get metadata summary from /dev/sdc3 PVID A0oBICVnS2UPgax0Y8H2F5lgP2L3Xa3D
  Fmt  PV UUID                                DevSize PV         Maj Min PMdaFree  PMdaSize  PExtVsn 1st PE  PSize  PFree  Used Attr Allocatable Exported   Missing    PE  Alloc PV Tags #PMda #PMdaUse BA Start BA Size PInUse Duplicate
  lvm2 A0oBIC-VnS2-UPga-x0Y8-H2F5-lgP2-L3Xa3D  <2,72t /dev/sdc3  8   35         0         0        1   1,00m <2,72t <2,72t   0  ---                                      0     0             0        0       0       0                  
  Start SSize PV UUID                                LV UUID                               
      0     0 A0oBIC-VnS2-UPga-x0Y8-H2F5-lgP2-L3Xa3D   

我有一些东西/etc/lvm看起来像是备份,但我已经搞砸了,我不想造成更多的损害。

在这个论坛和其他论坛中搜索我尝试了很多方法,最值得注意的是

mdadm --create --assume-clean /dev/md0 --level=1 --raid-devices=2 /dev/sdc3 missing

但如果我尝试安装/dev/md0我得到

mount: /mnt/1: wrong fs type, bad option, bad superblock on /dev/md0, missing codepage or helper program, or other error.

并且lvm fullreport不提供任何输出。

如能得到任何帮助我将非常感谢,我有另一个 raid 磁盘,它应该包含相同的信息,但在我把它弄乱之前,我想看看我是否可以恢复这个。

编辑1

输出blkid

/dev/sdc: PTUUID="170dad0b-6e63-4bbc-835e-9c7e901e3d4d" PTTYPE="gpt"
/dev/sdc2: UUID="2d0918c5-2ae2-6736-cb3a-9dfb2f014dc0" UUID_SUB="7b071e98-21b9-2459-7b3d-232247796426" LABEL="home-x1-carbon:12" TYPE="linux_raid_member" PARTLABEL="primary" PARTUUID="61b68a0d-0ebc-4379-9d8e-9694a0edc09d"
/dev/sdc5: UUID="2d279112-312e-1a89-d597-da4cc01c2a92" UUID_SUB="72243364-539b-6614-53c2-374e28a6a4e7" LABEL="home-x1-carbon:15" TYPE="linux_raid_member" PARTLABEL="primary" PARTUUID="29af1fc5-57ab-4da4-ac38-d3d9955072b5"
/dev/sdc3: UUID="01f77d36-7ed1-f4be-6948-820e41b0956a" UUID_SUB="c78c6ff9-63bb-002f-93a4-c901bdb14307" LABEL="home-x1-carbon:0" TYPE="linux_raid_member" PARTLABEL="primary" PARTUUID="4feebb7b-0a90-490c-a516-3fdca113592f"
/dev/sdc1: UUID="4a443aca-7fbe-197c-0bcb-72ec6c0c3ce0" UUID_SUB="55bf9203-a7ca-a8a3-4cdb-5cef7f12e54f" LABEL="home-x1-carbon:11" TYPE="linux_raid_member" PARTLABEL="primary" PARTUUID="22efde15-2e64-4cf5-b220-21ee5c57aed2"
/dev/sdc4: UUID="2ed9e1b2-2659-4202-9066-bd3246353f1d" BLOCK_SIZE="4096" TYPE="ext3" PARTLABEL="primary" PARTUUID="d5ae2202-0f7b-4c30-b7c3-f9d84de4b14e"

blkid /dev/md0是空的。

编辑2

尝试此操作后:

# mdadm --create --assume-clean /dev/md0 --level=1 --raid-devices=2 /dev/sdc3 missing
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

lsblk现在显示/dev/md0

sdc        8:32   0   2,7T  0 disk  
├─sdc1     8:33   0 517,7M  0 part  
│ └─md11   9:11   0 516,7M  0 raid1 
├─sdc2     8:34   0 517,7M  0 part  
│ └─md12   9:12   0 516,7M  0 raid1 
├─sdc3     8:35   0   2,7T  0 part  
│ └─md0    9:0    0   2,7T  0 raid1 
├─sdc4     8:36   0 517,7M  0 part  /media/dani/2ed9e1b2-2659-4202-9066-bd3246353f1d
└─sdc5     8:37   0     8G  0 part  
  └─md15   9:15   0     8G  0 raid1 
md13       9:13   0     0B  0 md    

但我仍然无法安装它:

# mount /dev/md0 /mnt/1
mount: /mnt/1: wrong fs type, bad option, bad superblock on /dev/md0, missing codepage or helper program, or other error.

答案1

您应该能够RAID使用第二个驱动器恢复阵列。通过mdadm --zero-superblock对所有分区执行操作,您销毁了所有md superblock带有零的分区。在您的下面,/dev/sdc3您有一个带有/ 的LVM树,无法使用该驱动器进行恢复。VGsLVs

如果您连接了第二个驱动器,则应该能够将mount其连接LV到 RAID 设备下方。您的架构如下所示(根据我们的讨论):

└─sdc3                      8:51   0  2.7T  0 part   
  └─md1                     9:1    0  2.7T  0 raid1 
      ├─vg_lv0 252:1    0 27,9G  0 lvm
      └─vg_lv1 252:2    0  2.7T  0 lvm

根据上述模式(lsblk输出),blkid输出为:

/dev/mapper/vg_lv1: LABEL="nas-qnap" UUID="75debd37-77c6-4f98-a6b6-8acc2a9f141f" BLOCK_SIZE="4096" TYPE="ext4"

如您所见,这是一个ext4分区。您应该能够使用以下命令挂载它:

mount /dev/vg_lv1 /mnt
mount /dev/mapper/vg_lv1 /mnt

但是,这还不够。您有一个degraded阵列 ( mdadm --detail /dev/md1)。要恢复clean状态,您需要连接损坏的驱动器并在不同的 上添加相应的分区md devices。一旦两个驱动器连接起来,您应该会得到损坏的驱动器,如下所示:

sdc        8:32   0   2,7T  0 disk  
├─sdc1     8:33   0 517,7M  0 part  
│ └─md11   9:11   0 516,7M  0 raid1 
├─sdc2     8:34   0 517,7M  0 part  
│ └─md12   9:12   0 516,7M  0 raid1 
├─sdc3     8:35   0   2,7T  0 part  
│ └─md0    9:0    0   2,7T  0 raid1 
├─sdc4     8:36   0 517,7M  0 part  /media/dani/2ed9e1b2-2659-4202-9066-bd3246353f1d
└─sdc5     8:37   0     8G  0 part  
  └─md15   9:15   0     8G  0 raid1 

正如你在上面看到的,你有4 md devices。以下是根据上述模式列出的列表:

  • /dev/md11
  • /dev/md12
  • /dev/md15
  • /dev/md0

/dev/sdc4只是一个ext3文件系统分区。在添加这些阵列之前,您需要像这样停止它们:

mdadm --stop /dev/md11
mdadm --stop /dev/md12
mdadm --stop /dev/md15
mdadm --stop /dev/md0

然后您应该能够使用以下命令将它们添加到正确的数组中:

mdadm /dev/mdX --add /dev/sdY1
mdadm /dev/mdX --add /dev/sdY2
mdadm /dev/mdX --add /dev/sdY3
mdadm /dev/mdX --add /dev/sdY5

对应Xmd device清洁驱动器Y对应于驱动器损坏。有了RAID 1,匹配分区应该“很容易”,因为它是镜像

假设,您的干净驱动器如下所示:

sdb 8:16 0 2,7T 0 disk
  ├─sdb1 8:17 0 517,7M 0 part
  │ └─md9 9:9 0 517,6M 0 raid1
  ├─sdb2 8:18 0 517,7M 0 part
  │ └─md256 9:256 0 0B 0 md
  ├─sdb3 8:19 0 2,7T 0 part
  │ └─md1 9:1 0 2,7T 0 raid1
  │   ├─vg_lv0
  │   │ 253:0 0 27,9G 0 lvm
  │   └─vg_lv1
  │      253:1 0 2,7T 0 lvm
  ├─sdb4 8:20 0 517,7M 0 part
  └─sdb5 8:21 0 8G 0 part
    └─md322 9:322 0 0B 0 md

要添加的命令应该是:

mdadm /dev/md9 --add /dev/sdc1
mdadm /dev/md256 --add /dev/sdc2
mdadm /dev/md1 --add /dev/sdc3
mdadm /dev/md322 --add /dev/sdc5

您可以resync使用以下命令查看阵列的速度和剩余时间:

watch -n0.5 cat /proc/mdstat

相关内容