总结:如何从给出“结构需要清理”等错误的 ext4 卷中恢复数据?我尝试了很多方法,如下所述,但仍然没有成功。
编辑:根据评论者的要求,请参阅下面的原始帖子,了解 e2fsck 和 dumpe2fs 的输出。原始帖子如下。
今天,在尝试安装我经常使用的 Truecrypt 7.1 卷时,出现了这个可爱的错误:
错误:mount:在 /media/truecrypt1 上挂载 /dev/mapper/truecrypt1 失败:结构需要清理
然后我尝试在另一个系统上使用命令行 truecrypt 7.1a 安装它,并出现此错误:
错误:挂载:错误的 fs 类型、错误的选项、/dev/mapper/truecrypt1 上的错误超级块,
以下是我目前已采取的步骤:
1 – 已解密但未使用 Truecrypt 安装:
truecrypt --filesystem=none /dev/xxx。
这似乎给了我一个未加密但未挂载的分区。然后我使用 dd 备份了该分区,并尝试备份中的所有其他操作。
2 – 然后我尝试安装它:
挂载 sda3.1 /mnt/tmp
...我得到的结论并不令人意外:
mount:在 /mnt/tmp 上挂载 /dev/loop0 失败:结构需要清理
3 – 因此我尝试:
消息 |尾巴
...这给了我:
[ 1283.815816] EXT4-fs (loop0): ext4_check_descriptors: 组 64 的块位图不在组中 (块 1312711560940789246)!
[ 1283.815825] EXT4-fs (loop0): 组描述符已损坏!
我应该说一下,我不确定这是否是 ext4 卷。老实说,我不记得它是 2、3 还是 4。但从上面的消息来看,我推测它是 ext4。只是觉得这可能很重要。
4 – 现在我尝试 fsck.ext4,但结果很糟糕。如果我自动运行它,我会得到:
sda3.1:注意:如果多个 inode 或块位图块或部分 inode 表需要重新定位,您可能希望首先尝试使用“-b 32768”选项运行 e2fsck。问题可能只出在主块组描述符上,而备份块组描述符可能没有问题。sda3.1
:组 64 的块位图不在组中。(块 1312711560940789246)
sda3.1:意外不一致;手动运行 fsck。(即,不使用 -a 或 -p 选项)
5 – 所以现在我想也许我应该尝试手动运行 fsck。所以我这样做了。问题是发生了以下两种情况之一:
i)我选择“y”代表一切,最终结果是我能挂载卷,但它完全是空的,或者
ii) 我必须决定对什么说“y”和“n”,但我完全不知道该如何辨别。我已经阅读了一些有关文件系统的内容,但仍然只能靠猜测。此外,还出现了数百个问题(第一个问题确实是关于第 64 组...然后是第 65、66 组等),所以即使我知道该怎么做,我也要花很多时间才能做到——我不能犯任何错误,否则我可能会丢失数据,对吧?
6 – 我读过这个帖子:如何恢复 ext4 文件系统并且我还“尝试使用备用超级块位置进行挂载”,如下所示:
安装-t ext4-o sb = 131072,ro sda3.1 /mnt/data_c
正如他所做的那样,“我按照上述操作,将 sb 选项设置为以下所有数字的 4 的倍数:32768、98304、163840、229376、294912、819200、884736、1605632、2654208、4096000。” 每次,我都会收到相同的错误:
mount:错误的 fs 类型、错误的选项、/dev/loop0 上的错误超级块、缺少代码页或辅助程序或其他错误
在某些情况下,在 syslog 中发现有用的信息 - 尝试 dmesg | tail 等。7 - 我运行了 testdisk,有很多选项,但在 sda3.1 文件上选择 Intel/PC 分区表给了我:分区扇区没有结束标记 0xAA55
...并且 testdisk 看不到任何分区。
这就是我现在的处境。如果你能帮忙,我将不胜感激。显然,如果这些数据不重要,我就不会在意。它不会危及生命,但对我来说非常有用。你可能会问,为什么我没有备份它。因为有时你直到丢失它才意识到它有多重要。而且因为我有时是个白痴。
先感谢您。
编辑:根据评论者的要求,我将输出附加到我的原始帖子中:
(一)dumpe2fs
dumpe2fs 1.43.3(2016 年 9 月 4 日) 文件系统卷名: 最后挂载于:/mnt/truecrypt1 文件系统 UUID:26177e9d-7268-48e8-86ff-47373c24d454 文件系统魔数:0xEF53 文件系统修订号:1(动态) 文件系统功能:has_journal ext_attr resize_inode dir_index filetype scope 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum 文件系统标志:signed_directory_hash 默认挂载选项:user_xattr acl 文件系统状态:清除错误 错误行为:继续 文件系统操作系统类型:Linux Inode 计数:1501440 区块数量:5998016 保留块数:299900 空闲区块:2303431 空闲 inode:1393801 第一个区块:0 区块大小:4096 片段大小:4096 组描述符大小:64 保留 GDT 块:1024 每组块数:32768 每组碎片:32768 每组的 Inode 数:8160 每组的 Inode 块:510 弹性块组大小:16 文件系统创建时间:2016 年 4 月 9 日星期六 17:57:07 上次装载时间:2016 年 12 月 19 日星期一 02:11:03 最后写入时间:2016 年 12 月 19 日星期一 03:24:29 坐骑数量:382 最大挂载数量:-1 最后检查时间:2016 年 4 月 9 日星期六 17:57:07 检查间隔:0() 终身写入:95 GB 保留块 uid: 0 (用户 root) 保留块 gid:0(组根) 第一个 inode:11 Inode 大小:256 所需额外尺寸:32 所需额外尺寸:32 日志 inode:8 默认目录哈希:half_md4 目录哈希种子:65bfc178-1879-4c35-ab2c-39bf976dff4c 日志备份:inode 块 FS 错误计数:9760 第一次错误时间:2016 年 12 月 19 日星期一 03:24:13 第一个错误函数:ext4_read_inode_bitmap 第一个错误行号:186 第一个错误 inode 编号:0 第一个错误块编号:0 最后错误时间:2016 年 12 月 19 日星期一 03:24:21 最后一个错误函数:ext4_iget 最后错误行号:4095 最后一个错误 inode 编号:14 最后一个错误块编号:0 校验和类型:crc32c 校验和:0x989a676a dumpe2fs:读取日志 inode 时,inode 校验和与 inode 不匹配
(二)e2fsck -fy
这个输出太长了,无法发布。所以这里有一个链接:e2fsck 输出
最终产品可以安装,但无法恢复。失物招领处有一个文件,而且该文件非常大。如果您需要,我可以提供详细信息。
感谢您的帮助。我期待您对上述内容的看法。