如何从一个混乱的驱动器(LVM写在Ext4的顶部)恢复数据?

现在在我监督下的服务器的前一个pipe理员犯了一个错误。 他在一个实际包含Ext4分区数据的磁盘上意外地创build了一个LVM卷(不超过pvcreate,我想,虽然不确定)。 如何从这样的错误中恢复数据? 我准备阅读ext4文档并推出我自己的,但也许我不需要? 我试过的一些工具无法find它的Ext4文件系统,所以我想我需要更严肃的东西。

如果你运行mkfs.ext4 -n /the/partition它会打印出EXT4格式的驱动器在系统上的样子。

 # mkfs.ext4 -n /dev/dm-3 mke2fs 1.42.8 (20-Jun-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 3276800 inodes, 13107200 blocks 655360 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 400 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 

值得注意的是,它会告诉你超级块的位置在哪里。

使用此信息,尝试使用备用超级块安装驱动器。

 mkdir /tmp/mntpnt mount -o ro,sb=163840 /dev/dm-3 /tmp/mntpnt 

只提供分区的标题被破坏,这可能工作。

如果这样做不起作用,你可以尝试通过指定超级块地址来使用fsck.ext4修复文件系统。 用dd或者其他东西来备份数据,然后才能做到这一点

 fsck.ext4 -b 163840 /dev/dm-3 

可能会最终用一个已知好的超级块覆盖坏的超级块,这可能足以使整个磁盘重新安装。 然后再次,你可能会丢失关键的inode(如你的根文件系统inode)。 里程可能有所不同。

我会给UFS资源pipe​​理器演示尝试看看它能检测到什么…这是我的文件系统恢复的实用工具。 我曾经有一个XFS分区有400万个文件意外删除,并使用此实用程序来恢复数据。

但除此之外,这是一个学习经验,也是一个testing备份例程的机会。 对不起,遗失。

任何恢复操作的第一步是复制数据,并对副本执行恢复。 完成之后,您可以尝试恢复数据。

根据pipe理员的具体情况,最可能的破坏是分区表已损坏,卷的主超级块已被损坏,或两者兼而有之。 您可以使用fdisk重新构build分区表:只需使用与原始设置相同的设置创build新的分区表即可。 确保你得到正确的types(MBR或GPT)。 e2fsck -b将允许您使用超级块的辅助副本之一来执行文件系统修复,或者在不太可能的情况下,它们已经全部损坏, mke2fs -S将重新创build元数据结构而不触及数据。