我在各种目录中运行du -sh来查找磁盘猪。 我有两台相同的服务器(戴尔PE2850),都使用RHEL5,而在另一台服务器上运行du时间要长得多。
例如,在服务器A(其中大约25GB)上执行du -sh /opt/foobar需要5分钟,而在服务器B上,具有相同数据量的相同命令将立即报告给我。 跑顶时我没有看到明显的东西
任何意见是极大的赞赏。
如果该目录中的文件数量很大,并且目录内容不断变化,则目录条目本身会随着时间的推移而被碎片化。 然后,当操作系统正在读取目录内容时,将会有大量不必要的磁盘查找。 特别是ext *文件系统(ext4可能会更好)以及旧的ReiserFS v3.x文件系统(如果已经超过85%),这种情况尤其会发生。
解决scheme相当简单:
cp -pr origdir newdir mv origdir origdir.bak mv newdir origdir
当然,如果一切都被caching在内存中,这并不重要; 通常Linuxcaching经常访问的文件和dirs相当积极。 如果你真的想把这些目录的内容保存在RAM中,你可以把类似ls -lah /your/dir 2>&1 >/dev/null放到你的cron中。
编辑:哦,有一件事在我脑海中popup。 如果您的服务器有一个电池备份的RAID控制器,并有一些caching,请检查电池是否正常。 我已经看到电池没电了的情况,控制器完全禁用了caching,破坏了性能非常糟糕。 例如,HP服务器可能会在iLO日志中告诉控制器电池; 在实际的服务器健康仪表板中,一切似乎都很好,但是只有日志条目会告诉你这个事情。
我build议尝试简单的杜命令没有任何开关。 你最终会看到哪个目录正在放慢这个过程。 可能是一个错误的磁盘,或其他原因,…