通常情况下,每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很好,另一个故事。