如何修复文件系统损坏?

tri*_*iwo 8 linux filesystems debian ext4 data-recovery

外部 USB SSD 驱动器上的 Debian。dmesg日志文件中有一些错误:

...[    3.320718] EXT4-fs (sdb2): INFO: recovery required on readonly filesystem
[    3.320721] EXT4-fs (sdb2): write access will be enabled during recovery
[    5.366367] EXT4-fs (sdb2): orphan cleanup on readonly fs
[    5.366375] EXT4-fs (sdb2): ext4_orphan_cleanup: deleting unreferenced inode 6072
[    5.366426] EXT4-fs (sdb2): ext4_orphan_cleanup: deleting unreferenced inode 6071
[    5.366442] EXT4-fs (sdb2): 2 orphan inodes deleted
[    5.366444] EXT4-fs (sdb2): recovery complete
...
Run Code Online (Sandbox Code Playgroud)

系统启动并正常工作。是否有可能完全修复它,正确的方法是什么?

slm*_*slm 9

您可以指示文件系统fsck在安装后立即执行,如下所示:

方法#1:使用/forcefsck

您通常可以在下次重新启动时安排检查,如下所示:

$ sudo touch /forcefsck
$ sudo reboot
Run Code Online (Sandbox Code Playgroud)

方法#2:使用关机

您也可以shutdown通过-F开关告诉命令这样做:

$ sudo shutdown -rF now
Run Code Online (Sandbox Code Playgroud)

注意:第一种方法是最通用的方法!

方法#3:使用tune2fs

您还可以使用tune2fs,它可以在文件系统本身上设置参数以在下次尝试安装时强制进行检查。

$ sudo tune2fs -l /dev/sda1
Mount count: 3
Maximum mount count: 25
Run Code Online (Sandbox Code Playgroud)

因此,您必须使用以下命令将“挂载计数”设置为高于 25:

$ sudo tune2fs -C 26 /dev/sda1
Run Code Online (Sandbox Code Playgroud)

检查更改的值tune2fs -l,然后重新启动!

注意:在我使用的 3 个选项中,tune2fs它可以处理强制检查任何文件系统,无论它是主文件系统 ( /) 还是其他文件系统。

补充说明

您通常会看到与格式化为 ext2/3/4 的分区关联的“最大挂载计数:”和“检查间隔:”参数。很多时候他们是这样配置的:

$ tune2fs -l /dev/sda5 | grep -E "Mount count|Maximum mount|interval"
Mount count:              178
Maximum mount count:      -1
Check interval:           0 (<none>)
Run Code Online (Sandbox Code Playgroud)

以这种方式设置参数时,设备将永远不会fsck在安装过程中执行任何操作。这对于大多数发行版来说是相当典型的。

有两种力量推动检查。安装次数或经过时间。“检查间隔”是基于时间的间隔。你可以每 2 周说一次这个论点,2w。有关tune2fs更多信息,请参阅手册页。

注意:还要确保理解这tune2fs是一个文件系统命令,而不是一个设备命令。因此,它不适用于任何旧设备,/dev/sda除非那里有 ext2/3/4 文件系统,否则该命令tune2fs毫无意义,它必须用于已使用这些类型的文件系统之一格式化的分区。

参考