fsck关机而不是启动

通常情况下,每30次启动一次,启动后自动执行fsck 。 有时,它可能会非常慢,并可能延迟超过半小时的启动。

有没有办法在关机时运行fsck? (我不介意关机是否延迟,启动时间更重要。)

我想为Debian或Scientific Linux发行版本。

虽然你可以在关机时检查一些东西,但是你不能在你的根文件系统上有效地运行fsck 。 你看, fsck要求在文件系统尝试修复之前不要挂载文件系统。 这只能在启动过程中,而仍然从initramfs运行。

对于Debian,您可以使用AutoFsck,但不再支持该软件包(2010年的最新更新)。 所以记住这一点。

另一种方法是将FSCK / bash脚本放入关机脚本中。 对于SE Linux / centos等我将使用chkconfig级别0(停止)和6(重新启动)。 chkconfig --levels 0 rc.local-shutdown on将脚本放在/etc/rc.d/init.d/ 。 (等级6重启)

对于Debian,我会把创build脚本放在/etc/rc6.K00scriptname和/etc/rc0.d/K00scriptname中,

至于脚本,你可以使用这样的东西:

 #!/bin/bash NETFS="nonfs,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,nousbfs,noshfs,nofuse,nofuseblk" if (( `tune2fs -l /dev/sda2 | awk '/Mount count/{print $3}'` > `tune2fs -l /dev/sda2 | awk '/Maximum mount count/{print $4-1}' )) then /sbin/fsck -A -T -C -a -t $NETFS 2>/dev/null fi 

这段代码不是由我写的,而是由archlinux论坛上的某个人编写的。 我没有尝试过的代码。 所以记住这一点。

或者你可以在脚本里面做一些简单的/sbin/fsck -A -T -C -a -- -f

closuresfsck的问题是,你看到当你closures时,你正在卸载文件系统。 即使fs很脏,卸载fs也不会强迫它检查它的完整性。 当你正在安装它时,你正在执行一个fsck来检查数据的元数据是否正确,以及fs是否有正确的fs信息。 这可以在fs将要安装时发生。 因为当fs将要被挂载时,用于检查fs完整性的代码就会起作用。

这是我猜想,即使fs是肮脏的,但我们可以做一个懒惰的umount,但没有懒惰或强制卸载,当fs是肮脏的;)

除非严重破坏,否则通常不会花很长时间才能出来。 xfs_repair非常漂亮,可以在线完成,而btrfs很好,另一个故事。