微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 从已删除的LVM逻辑卷恢复ext4文件系统的任何方法?

前几天,当我在Vmware下的 Linux客户端上扩展磁盘时,我有一个适当的大脑放屁时刻.我将Vmware磁盘文件扩展到所需的大小然后我做了我通常在没有LVM的Linux客户端上做的事情:我删除了LVM分区并重新创建它,从与旧版本相同的位置开始,但扩展到新的大小磁盘. (其后是fsck和resize2fs.)

然后我意识到LVM在原始分区上的行为与ext2 / 3/4的行为不同……从最近的备份中恢复Linux客户机(仅提前五个小时,幸运的是)我现在很好奇我如何从以下场景中恢复过来.毕竟几乎可以肯定我将来也会变得愚蠢.

具有一个磁盘的虚拟Linux guest虚拟机,分区为256MB的一个/ boot(主)分区(/ dev / sda1),其余分区位于逻辑扩展分区(/ dev / sda5)中.

然后将/ dev / sda5设置为具有pvcreate的物理卷,并使用通常的vgcreate命令在其上创建一个卷组(vgroup00).然后将vgroup00分成两个逻辑卷root和swap,逻辑上用于/和交换. /是一个ext4文件系统.

由于我对已损坏的guest虚拟机进行了备份,因此我可以使用/ etc / lvm / backup下的备份LVM设置从vgcfgrestore重新创建卷组,并为物理卷提供相同的UUID.运行后我有两个逻辑卷,大小与之前相同,有4GB的可用空间,我已经拉伸了磁盘.

但是,当我试图运行“fsck / dev / mapper / vgroup00-root”时,它抱怨了一个破碎的超级块.我试图通过运行“mke2fs -n / dev / mapper / vgroup00-root”找到备份超级块,但这些都没有.然后我尝试运行TestDisk但是当我要求它找到超级块时,它只是由于文件系统损坏而导致无法打开文件系统的错误.

因此,对于Ubuntu Server 10.04 64位中LVM2的认分配策略,是否可能从卷组的末尾分配逻辑卷?这肯定会解释为什么恢复的逻辑卷不包含预期的数据.我可以通过重新创建/ dev / sda5来恢复与之前完全相同的大小和磁盘位置吗?是否还有其他工具可用于查找和恢复文件系统? (显然,问题不在于我是否应该从一开始就以不同的方式做到这一点,我知道.这是一个关于当狗屎已经击中粉丝时该怎么做的问题.)

解决方法

每次使用LVM执行操作时,认情况下,先前的元数据都存档在/ etc / lvm / archive中.您可以使用vgcfgrestore来恢复它,或者手动抓取扩展(更难,但是lvcreate(8)应该覆盖它).

编辑:

为了使它尽可能简单,我应该补充一点,你可以通过查看描述在破坏性操作之前找到最后一个备份:

# grep description /etc/lvm/archive/vg01_*
/etc/lvm/archive/vg01_00001.vg:description = "Created before executing 'lvremove -f /dev/vg01/foo'"
/etc/lvm/archive/vg01_00002.vg:description = "Created before executing 'lvremove -f /dev/vg01/bar'"
/etc/lvm/archive/vg01_00003.vg:description = "Created before executing 'lvremove -f /dev/vg01/baz'"

编辑:

正常分配策略(认值为1)将在有足够空间时从第一个空闲PE分配条带.如果要确认LV的分配位置,可以查看存档文件,这些文件完全可以被人类阅读.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐