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

Vil*_*lx- 5 ext4 data-recovery

现在在我监督下的服务器的前任管理员犯了一个错误。他不小心在一个磁盘上创建了一个 LVM 卷(我认为不超过 pvcreate,但不确定),该磁盘实际上包含一个带有数据的 Ext4 分区。如何从这样的错误中恢复数据?我已准备好阅读 ext4 文档并推出我自己的文档,但也许我不需要?我尝试过的一些工具无法在其上找到 Ext4 文件系统,所以我想我需要一些更严肃的东西。

Mat*_*Ife 6

如果您运行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
Run Code Online (Sandbox Code Playgroud)

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

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

mkdir /tmp/mntpnt
mount -o ro,sb=163840 /dev/dm-3 /tmp/mntpnt
Run Code Online (Sandbox Code Playgroud)

如果仅破坏了分区的标头,这可能会起作用。

但是,如果这不起作用,您可以尝试fsck.ext4通过指定超级块地址来修复文件系统。在执行此操作之前,请使用 dd 或其他方法备份数据

fsck.ext4 -b 163840 /dev/dm-3
Run Code Online (Sandbox Code Playgroud)

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

  • 不要在实际磁盘上执行任何这些操作,而是在它的副本上执行任何操作。 (4认同)

eww*_*ite 4

我会尝试一下UFS Explorer 演示,看看它能检测到什么...这是我用于文件系统恢复的首选实用程序。我曾经有一个 XFS 分区,其中有 400 万个文件被意外删除,我使用这个实用程序来恢复数据。

但除此之外,这也是一次学习经历和测试备份例程的机会。对于损失感到抱歉。

  • @Vilx-如果没有文件系统,文件本身就是孤儿,不知道它们属于哪里。它们没有文件名或位置,因为这些内容存储在文件系统标头中。但他们*确实*拥有数据,这是最重要的部分。 (2认同)