本文最后更新于 282 天前,其中的信息可能已经有所发展或是发生改变。
现象说明
在一次常规检查中,发现 /data
目录占用空间为 78G,但使用 du -sh /data
命令查看实际占用空间却仅为 5G。经过对比和分析,明显有大约 73G 的空间不知被何种文件或数据占用。目前,在 /data
目录下仅可见一个名为 logs
的文件夹。
首先通过 df -lh
和 du -sh /data
命令查看磁盘和目录空间占用情况:
[root@demo ~]# df -lh | grep /data
Filesystem Size Used Avail Use% Mounted on
/dev/sdd 100G 78G 23G 78% /data
[root@demo ~]# du -sh /data
5.0G /data
在 /data
目录下执行 ls -l
命令来查看其包含的文件和文件夹:
[root@demo ~]# ls -l /data
total 0
drwxr-xr-x 20 root root 310 Jul 25 14:19 logs
问题排查
为了找出隐藏的占用空间,利用 lsof
命令检查该目录下的文件句柄情况。经检查发现,filebeat
进程占用了多个已删除但未释放的文件句柄,此即是导致空间异常占用的根本原因。
通过以下命令查找占用情况:
[root@demo ~]# lsof -n /data |grep deleted
filebeat 9831 root 9r REG 8,48 315112660 67116919 /data/logs/1.logs(deleted)
filebeat 9831 root 10r REG 8,48 315124845 67120727 /data/logs/2.logs(deleted)
filebeat 9831 root 11r REG 8,48 315139494 67116921 /data/logs/3.logs(deleted)
解决问题
针对找出的问题,采取结束 filebeat
进程的方式来释放文件句柄,进而回收空间。执行 kill
命令终止对应进程:
[root@demo ~]# kill -9 9831
再次检查磁盘空间,发现占用空间已恢复正常,仅占用 5.1G:
[root@demo ~]# df -lh | grep /data
Filesystem Size Used Avail Use% Mounted on
/dev/sdd 100G 5.1G 95G 6% /data
后述总结
本次问题的解决过程再次强调了监控和维护 Linux 服务器磁盘空间的重要性。一个进程因占用已删除文件的句柄导致磁盘空间异常占用,不仅可能影响系统性能,也可能影响到其他应用和服务的正常运行。
此外,也突显了 lsof
工具在系统问题排查中的重要性,能够帮助我们找到潜在的问题和风险。在今后的运维工作中,应定期使用此类工具进行系统检查和维护,确保系统的稳定和安全运行。
同时,针对类似问题,也应建立一套标准化的问题排查和解决流程,提高问题解决的效率和准确性。在处理此类问题时,还需要注意合理安排进程重启时间,以减少对业务的影响。
版权声明:「自由转载-保持署名-非商业性使用-禁止演绎 3.0 国际」(CC BY-NC-ND 3.0)
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论