linux – 如何修复文件系统损坏?

Debian在外部USB SSD驱动器上. 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
...

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

最佳答案
您可以指示文件系统在安装时立即执行fsck:

方法#1:使用/ forcefsck

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

$sudo touch /forcefsck
$sudo reboot

方法#2:使用shutdown

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

$sudo shutdown -rF now

注意:第一种方法是实现这一目标的最通用方法!

方法#3:使用tune2fs

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

$sudo tune2fs -l /dev/sda1
Mount count: 3
Maximum mount count: 25

因此,您必须使用以下命令将“Mount count”置于高于25的位置:

$sudo tune2fs -C 26 /dev/sda1

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

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

补充说明

您通常会看到与已格式化为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>)

当以这种方式设置参数时,设备在安装期间将永远不会执行fsck.对于大多数发行版来说这是相当典型的.

有两种力量可以检查.无论是坐骑数还是经过时间. “检查间隔”是基于时间的.你可以说每两周一次,2w.有关更多信息,请参见tune2fs手册页.

注意:还要确保理解tune2fs是文件系统命令,而不是设备命令.所以它不适用于任何旧设备/ dev / sda,除非那里有ext2 / 3/4文件系统,命令tune2fs没有意义,它必须用于对使用其中一种类型格式化的分区文件系统.

参考

> Linux Force fsck on the Next Reboot or Boot Sequence

转载注明原文:linux – 如何修复文件系统损坏? - 代码日志