如何在每次启动时强制 fsck - 所有(相关)文件系统?

eth*_*nny 16 debian fsck

我正在使用具有 debian 6 和 3 分区(FAT 和 2x ext2)的无风扇 PC(实际上有数百台)。该系统没有电源按钮,因此大多数人倾向于猛拉插头以“关闭它”而不是 init 0(或等效的)。结果,文件系统很快就会产生错误。

我试过使用 'shutdown -rF' 来强制 fsck 但这似乎不起作用。我想知道是否有某种方法可以告诉系统在挂载之前检查每个挂载点/ FS。

我试过在 /etc/fstab 中设置 fsck 参数。这通常会给我一个“发现错误”。手动运行 fsck '消息。

还有其他选择可以尝试吗?

fin*_*een 16

In/etc/init.d/checkfs.sh是 line if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline,因此forcefsck在内核命令行上提供或/forcefsck在关闭时生成文件应该会在下次重新启动时导致 fsck。

为了防止手动 fsck 运行,请fsck尝试-y通过取消注释并将 no 更改yes为以下 /etc/default/rcS 条目来尝试自动修复该选项的错误,编辑后应如下所示:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes
Run Code Online (Sandbox Code Playgroud)

一个选项(forcefsck 或 FSCKFIX)并不意味着另一个。


小智 9

fsck.mode=force在引导加载程序上添加内核参数。附加此选项将GRUB_CMDLINE_LINUX_DEFAULT=变量中/etc/default/grub。以 root 身份生成一个新的 grub 配置文件:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

此参数forcefsck与在挂载点的根目录内创建文件的效果相同。

使用checkfs.sh脚本的解决方案更适合 Debian,但不适用于其他发行版


xit*_*tij 8

我正在编辑我的答案:

命令是:

sudo tune2fs -c 1 /dev/sdX
Run Code Online (Sandbox Code Playgroud)

根据 tune2fs 的联机帮助页 -c 参数计算分区的挂载实例数。因此,1 强制在每个安装实例后检查 fs。

( http://man7.org/linux/man-pages/man8/tune2fs.8.html )

  • 大多数情况下只有一个命令是不够的,至少也要写一个最小的解释。 (2认同)