损坏的 LVM 恢复

损坏的 LVM 恢复

我有一台 Centos 6.7 主机(注意这里的过去时间),它是使用 Vmware 转换工具从 HyperV 集群迁移而来的。因此,其磁盘的最终配置是:

/ dev / sda1 -> BOOT
/ dev / sdb1 -> Physical Volume
VG on / dev / sdb1
6 LVs on VG, root included

时间到了,逻辑卷已满,VG 没有任何可用的 PE 可供扩展。因此,我采取了忍者式的举动,进行了扩展/dev/sdb,并(错误地)重写了分区表以增大 PV。之后,VM 无法再次启动,因为 LVM 元数据已被覆盖。

我尝试了几种方案,最成功的是,strings / dev / sdb | head -n 1000我找到了 LVM 信息的副本(来自每次修改的自动备份),根据似乎是最新配置创建了一个文件,创建了一个 PV,其 uuid 与原始文件和--restorefile指定文件相同。我继续操作vgcfgrestorevgchange -ay所有逻辑卷都变得可见,但挂载失败,我收到错误bad superblock or wrong fs type。我感觉 LV 的边界不正确,并且与旧结构有重叠,因此挂载期间文件系统出现问题。

你们有人见过这样的事情吗?有人能提出解决方案吗?

答案1

如果您有主机配置和数据的备份,重新安装操作系统和恢复将会更快。

制作 LV 的备份映像,例如将其备份dd为常规文件,或者可能是 LVM 快照。在备份上运行文件系统修复工具,例如 xfs_repair -f /backup/lv。这有助于指示是否存在可恢复的文件系统。

编辑:您指出了 ext4。请尝试 UNIX Stack Exchange 上描述的所有超级块:恢复 ext4 超级块. 链接的来自 Ubuntu wiki 的数据恢复页面如果您确实需要没有备份的文件,则有一些文件提取实用程序。


就我个人而言,我更喜欢在没有分区表的整个磁盘上创建 PV,例如/dev/sdb。可以立即添加调整大小的磁盘。

相关内容