当 fsck 不起作用时,从损坏的文件系统中恢复

当 fsck 不起作用时,从损坏的文件系统中恢复

我的文件系统出了问题,Ubuntu 将其设置为只读,现在在 Ubuntu Live Disc 下,fsck 无法修复它。

我正在运行 13.04,但它无法启动 - 在启动时,它只显示 grub 救援提示。

这是一个简单的设置,/dev/sda1 上只有一个硬盘,但它甚至无法安装。

安装程序可以看到该分区,它是 ext4 并且是启动分区。

但是,我似乎无法通过使用 Ubuntu 实时磁盘进行 Ubuntu 安装来拯救文件系统,因为它没有迹象表明它是否要覆盖所有内容,所以我不想冒险。

我使用 backuppc 进行了备份,但愚蠢的是,我丢失了救援磁盘。我宁愿避免完全安装,然后再进行恢复,因为我没有执行过这种操作。

问题的关键是 fsck 说它可以修复所有问题但实际上并不能,所以下次我运行它时,我会收到完全相同的错误消息和修复。

输出如下:

ubuntu@ubuntu:~$ sudo fsck.ext4 -vy /dev/sda1
e2fsck 1.42.8 (20-Jun-2013)
ext2fs_check_desc: Corrupt group descriptor: bad block for block bitmap
fsck.ext4: Group descriptors look bad... trying backup blocks...
Block bitmap for group 0 is not in group.  (block 2553887680)
Relocate? yes

Inode table for group 0 is not in group.  (block 2440124416)
WARNING: SEVERE DATA LOSS POSSIBLE.
Relocate? yes

One or more block group descriptor checksums are invalid.  Fix? yes

Group descriptor 0 checksum is 0x761e, should be 0xcf25.  FIXED.
Block bitmap for group 4352 is not in group.  (block 2553887680)
Relocate? yes

Inode table for group 4352 is not in group.  (block 3731970048)
WARNING: SEVERE DATA LOSS POSSIBLE.
Relocate? yes

Group descriptor 4352 checksum is 0x5eda, should be 0x3da3.  FIXED.
Inode bitmap for group 4353 is not in group.  (block 2785042439)
Relocate? yes

Group descriptor 4353 checksum is 0xd8b1, should be 0xedfb.  FIXED.
Inode bitmap for group 4354 is not in group.  (block 838860807)
Relocate? yes

Group descriptor 4354 checksum is 0x1718, should be 0x0438.  FIXED.
Inode bitmap for group 4355 is not in group.  (block 771751943)
Relocate? yes

Group descriptor 4355 checksum is 0x0bc8, should be 0x4170.  FIXED.
fsck.ext4: e2fsck_read_bitmaps: illegal bitmap block(s) for /dev/sda1

/dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****

/dev/sda1: ********** WARNING: Filesystem still has errors **********

ubuntu@ubuntu:~$ 

这与之前 10 次的结果完全相同,而且我确信接下来的 10 次尝试也会得到完全相同的校验和和块 ID。任何帮助都乐意接受!

谢谢。

编辑:基本上我想问题是:这个文件系统现在可以就地修复吗?还是 fsck 提供的信息意味着我的磁盘坏了?如果它没有坏,除了使用 fsck 之外我还能做什么?

编辑:使用 tune2fs 来识别超级块并运行 e2fsck -b 01234 /dev/sda1 作为 fsck 的替代……没有效果。

编辑:尝试 testdisk,它告诉我分区不好......好的,testdisk 似乎没有提供太多信息。

答案1

终于找到了此链接文件系统类型 ext4 受到猛烈批评,但在给出了我已经尝试过的所有提示后,它最终建议这样做:

sudo mkfs.ext4 -S /dev/sda1

这将用正确的数据替换所有超级块,假设块大小猜测正确(对于大多数系统来说,默认值是正确的)。如果您需要使用此功能,请阅读手册页首先在-S上。不要怪我!

但前提是你觉得自己很幸运。

它修复了分区,所以我可以再次读取它。但是,我必须运行fsck以修复仍然存在的错误,这会将 /etc 的内容和许多其他内容转储到 /lost+found,所以我必须重新安装并从备份中恢复才能再次运行。

答案2

首先:如果此磁盘上有重要数据,那么现在是进行备份的好时机(实际上是坏时机)。请参阅数据恢复:对损坏的设备、文件系统或驱动器进行映像处理. 也许你的硬盘快要坏了。

第二:看看这个:崩溃后如何修复数据驱动器的安装?

第三:使用以下方法检查硬盘智能工具最后是坏块:(sudo badblocks -vsn /dev/sda这可能需要一些时间,如果你有 SSD,请不要这样做)

相关内容