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