/var 文件系统很快就满了

/var 文件系统很快就满了

/var 文件系统很快就满了。甚至 inode 的使用率也达到 100%。我们必须定期清除日志。由于这个原因,我们也无法使用 ssh。我们最终不得不进行硬重启。我们无法确定确切的根本原因。请帮助我们找出确切的原因并解决问题。

在存储空间有限的服务器上,防止 /var 填满磁盘空间的正确方法是什么?

答案1

/var是应用程序存储大多数数据的位置。这包括日志文件甚至二进制数据对于以下应用程序MySQL或者MongoDB

谈到你的问题,正如你提到的频繁清除日志,你需要监视写入/var/log最多的内容并设置适当的日志旋转政策相同。

/var要根据磁盘使用情况查找前 10 个目录(内部):

sudo du -h /var | sort -hr | head -n10

/var/log按磁盘使用率查找前 10 个文件(内部)

sudo find /var/log -maxdepth 2 ! -path . -printf "%s %p\n" | sort -rn -k1  | head

机器可用的磁盘大小是多少?

它多久会充满一次?

上述两个命令的输出是什么?

答案2

首先,管道 onhead -n10只会打印出 中的前 10 个目录条目/var。如果您有超过 10 个目录,则不会报告它们。其次,du -h并不是这里使用的最佳工具,因为它会报告重复分配,因为正在报告子目录。

尝试这个来更好地了解下所有一级目录的分配/var

# find /var -maxdepth 1 -type d -exec du -smh '{}' \;

21G     /var
18G     /var/lib
4.0K    /var/local
384K    /var/www
86M     /var/cache
3.3G    /var/log
12K     /var/mail
16K     /var/lost+found
7.8M    /var/backups
840K    /var/spool
4.0K    /var/tmp
4.0K    /var/opt

如果您需要深入研究其中一个顶层,以报告父级下的分配,只需将子目录添加到原始命令即可。我可以很容易地看到我的系统elasticsearch中 18G 分配背后的罪魁祸首:/var

# find /var/lib -maxdepth 1 -type d -exec du -smh '{}' \;
18G     /var/lib
...
8.0K    /var/lib/vim
18G     /var/lib/elasticsearch

@fpmurphy 建议yum目录可能与您的问题有关。据此推断,每当您使用yum下载的所有用于更新系统的软件包时/var/cache/yum,默认情况下都会保留在目录中。您可能需要检查文件的内容/etc/yum.conf并检查keepcache环境。您所发的帖子表明keepcache其值为1

如果/var/cache/yum确实已填满,您可能yum clean all现在需要运行来修复。有证据表明但是这个命令可能无法像宣传的那样工作谨慎/var。如果可能的话, 我建议分配更多的空间。

相关内容