如何修复 filesystem superblock 损坏

本周去某公司调试系统,他们硬件测试部分送来了一台系统无法进入的机器,让我看下是系统原因还是 SSD 硬件有问题。

拿到机器开机后,没有正常的进入系统,直接进入了initramfs mode, 并有filesystem invalid superblock checksum error 的错误提示,遂告诉他们是系统的 filesystem 挂了。

然后开始查找修复方法,最后找到了方法并修复了机器,在此记录一下。

修复方法

下面的命令都是在initramfs shell中执行的。

  1. 先确定你系统所在的分区

可以执行 lsblk 来查看分区信息,然后确定,假设是 /dev/sdaX

  1. 列出分区的superblock备份信息

执行命令 mke2fs -n /dev/sdaX,将会看到以下输出:

    mke2fs 1.44.2 (14-May-2018)

    /dev/sda7 有一个 ext4 文件系统

        上一次挂载于 /, 时间 Thu May 17 17:15:32 2018

    Proceed anyway? (y,N) y

    创建含有 7864320 个块(每块 4k)和 1966080 个inode的文件系统

    文件系统UUID:dd407bb8-e38a-42f8-ae3f-38081af46323

    超级块的备份存储于下列块:

        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000

输出中最后的那些数字就是用来恢复的。

  1. 从备份中恢复

先使用备份中列块的第一个 number 进行恢复,命令:e2fsck -b 32768 /dev/sdaX -y, 执行完成后重启。

如果重启还是进不了系统,就换一个 列块 number 继续恢复,然后重启,直至成功。

    原文作者:jouyouyun
    原文地址: https://www.jianshu.com/p/0f2d27155547
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞