现象
某天收到服务器告警提示"/"使用率已超过90%,通过"df -Th"指令查看空间情况如下:
[nhu@reimbursements1 ~]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 189G 177G 12G 94% /
devtmpfs devtmpfs 32G 0 32G 0% /dev
tmpfs tmpfs 32G 0 32G 0% /dev/shm
tmpfs tmpfs 32G 3.1G 29G 10% /run
tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 178M 837M 18% /boot
/dev/mapper/rhel-home xfs 64G 11G 54G 16% /home
tmpfs tmpfs 6.3G 12K 6.3G 1% /run/user/42
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0
但分别统计根目录下各个文件夹大小后,发现所有的文件夹容量相加后仅40G左右,无法确定到底是什么文件占用率这么多空间。
问题定位
后来在网上查到了有朋友和我一样的问题,明确原因是某些文件被删除时仍被进程占用,Linux下你虽然删了文件,但是空间依旧被占用不会被释放。
可通过如下指令查看空间中被删除但仍处于打开状态的文件:
lsof -n | grep delete
最终查到是一堆java Tomcat catalina.out日志文件记录,原来是定时任务每天定期去清理日志,但是实际日志文件一直被占用,导致空间没有被释放。
解决方法
网上大佬提供解决办法是杀进程,进程结束后,对应占用的空间也会释放。
后期我也修改了清理catalina.out的定时任务,不再是去删除文件,而是通过"cat /dev/null>catalina.out"的形式去清理日志。
文章最后附上相关参考文章连接。
空间异常占用