有时我的 Web 服务器会崩溃,并且可能需要几个小时才能启动。有人告诉我fsck可能是罪魁祸首,因为它只能在启动期间运行,只能在 X 天和 Y 次挂载后运行,如果服务器启动了很长时间,下次重新启动时它肯定会很慢.
那么我能做些什么来解决这个问题?我发现大约tune2fs. 但是我需要通过重启 cronjob 来协调它吗?说我愿意tune2fs -i 1w /dev/sda1。恐怕如果我将 cron 设置为在该日期之后运行(我可以使用-l),那么在以下日期它们将不同步,不是吗?
还有一点不清楚:崩溃后,无论如何 fsck 会运行吗?应该是?即使它在不到一周前运行,它仍然会很慢吗?
tl;dr:查看您的系统日志,或使用类似的东西bootlogd,这应该会告诉您速度下降的地方。我敢打赌,事实并非如此fsck。
首先,fsck可以随时运行,不必在启动时运行。您可能指的是它只能在未挂载的文件系统上运行,并且由于/在系统完全运行时挂载了其他文件系统,因此这是在这些文件系统上运行它的唯一可能时间。
fsck如果只是进行常规检查,则不应花费数小时才能完成,除非它确实在文件系统中发现了不一致并必须修复它们(但即便如此,即使在具有许多不一致的大型文件系统上,一小时听起来也不太可能)。看看你的系统日志,或者使用类似的东西bootlogd,这应该会告诉你速度变慢的地方。我敢打赌,事实并非如此fsck。
文件系统可以在没有任何明显副作用的情况下产生不一致,这就是定期fsck检查的目的,无论文件系统是否被标记为脏。
您无法在系统运行时卸载根文件系统,因为它将被使用,因此您无法fsck在其上运行,因此无法正确运行 cron 作业来执行此操作。可以fsck在某些日期强制重新启动,然后重新启动,但我真的不明白这一点。我真的不明白你所说的“不同步”是什么意思。
崩溃后,fsck将在任何脏文件系统上运行,即未完全卸载的文件系统。如果您的计算机在正常操作期间崩溃,fsck那么,是的,会运行。如果您的计算机在关机的最后阶段崩溃,可能不会,因为文件系统不会受到损害。