现在由我监督的服务器的前任管理员犯了一个错误。他意外地在实际上包含带有数据的 Ext4 分区的磁盘上创建了一个 LVM 卷(我想不超过 pvcreate,虽然不确定)。我该如何从这样的错误中恢复数据?我准备阅读 ext4 文档并推出自己的文档,但也许我不需要这样做?我尝试过的一些工具都无法在其上找到 Ext4 文件系统,所以我想我需要更严肃的东西。
答案1
如果你运行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)。结果可能有所不同。
答案2
我会给UFS Explorer 演示试试看它能检测到什么...这是我的文件系统恢复工具。我曾经意外删除了一个包含 400 万个文件的 XFS 分区,然后使用这个工具恢复了数据。
但除此之外,这也是一次学习经历和测试备份程序的机会。很抱歉造成损失。
答案3
任何恢复操作的第一步都是复制数据,然后对副本执行恢复。完成此操作后,您可以尝试恢复数据。
根据管理员的具体操作,最可能的损坏是分区表已损坏、卷的主超级块已损坏或两者兼而有之。您可以使用 重建分区表fdisk
:只需创建一个具有与原始设置相同的设置的新分区表即可。确保您正确输入类型(MBR 或 GPT)。 e2fsck -b
将允许您使用超级块的辅助副本之一执行文件系统修复,或者在不太可能发生它们全部损坏的情况下,mke2fs -S
将重新创建元数据结构而不触及数据。