由于元数据区域 header 校验和不正确,无法删除卷组

Unable to remove Volume Group due to Incorrect metadata area header checksum

我有三个从旧服务器上提取的硬盘驱动器。在我将它插入我的新服务器以用于 RAID5 之前,我不记得上面有什么或它是如何配置的。我 dd 编辑了所有三个硬盘驱动器并尝试 mdadm --create 一个新的 RAID 阵列,但出现以下错误:

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
mdadm: super1.x cannot open /dev/sdc: Device or resource busy
mdadm: /dev/sdc is not suitable for this array.
mdadm: create aborted

调查问题后我发现 /dev/sdc2 仍然包含一个逻辑卷。

# lsblk /dev/sdc
NAME                    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdc                       8:32   0 931.5G  0 disk 
|-sdc1                    8:33   0   102M  0 part 
`-sdc2                    8:34   0 931.4G  0 part 
  |-VolGroup00-LogVol00 253:2    0   926G  0 lvm  
  `-VolGroup00-LogVol01 253:3    0   5.4G  0 lvm  
# lsblk /dev/sdd
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdd      8:48   0 931.5G  0 disk 
|-sdd1   8:49   0     2G  0 part 
`-sdd2   8:50   0 929.5G  0 part 
# lsblk /dev/sdb
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb      8:16   0 931.5G  0 disk 
|-sdb1   8:17   0     2G  0 part 
`-sdb2   8:18   0 929.5G  0 part 

我尝试了 lvremove pvremovevgremove 但所有 return 都出现了同样的错误:Incorrect metadata area header checksum on /dev/sdc2 at offset 4096

我对 LVM 不熟悉,想上网看看该怎么做。进行了恢复但没有成功,这并不令我惊讶,因为我使用的 vg 文件存档是在我的新服务器上生成的。

我的猜测是,因为我 dd 编辑了 HDD,我以某种方式弄乱了 header 元数据。我该怎么做才能擦除所有这些以便创建我的 RAID5?任何帮助将不胜感激。

提前致谢!

编辑

为了阐明我所说的 dd 的意思:

dd if=/dev/zero | pv | dd of=/dev/sdx

编辑 2

只是为了澄清是什么帮助了这两个答案。下面两个关于 dd 工作的答案。就我而言,由于 RAID 是在不同的盒子上构建的,并且我孤立了其中一个驱动器,所以我的新盒子抱怨卷组等。当我最初使用 dd 擦除数据时,我一定没有触摸 RAID/LVM 的 header。

只要你不关心 /dev/sdc 的驱动器上有什么,试试这个:

dd if=/dev/zero of=/dev/sdc bs=1m count=10

这会将磁盘的前 10 MB 归零,包括任何 LVM 或 RAID headers。然后重启;系统应该看到磁盘不再是任何 LVM 组的一部分。

如果您需要更多灵感,请查看这篇 Linux 我写的关于恢复 RAID 和 LVM 卷的期刊文章:

http://www.linuxjournal.com/article/8874

这是一个很棒的 link - 如果您不熟悉,请看一看:

对于你的情况,请试试这个:

https://forums.opensuse.org/showthread.php/489778-How-do-I-delete-a-RAID-volume-that-was-created-with-mdadm

  1. 找到 md 及其组件(sda、sdb 等)

    fdisk -l mdadm --detail /dev/md0 or md1 or mdX

  2. 卸载 md(使用 -l 标志进行延迟卸载可能会很好

    umount -l /dev/md0

  3. 停止阵列

    mdadm --stop /dev/md0

  4. 从 md 数组

    中将 每个 设备的超级块归零

    mdadm --zero-superblock /dev/sda mdadm --zero-superblock /dev/sdX ... etc.

根据需要替换您的实际驱动器名称。

我不确定你所说的 "dd'ed all drives" 是什么意思,但你应该能够使用 "mdadm"(按照上述)或 "dd" 来初始化它们:EXAMPLE: dd if=/dev/zero of=/dev/sdc2 bs=1024K count=100.

另请参阅此 link 以获得更多提示: