欢迎光临
一直在努力

df空间占用已满,但du查看home目录空间占用却很少

一,背景

一大早研发过来报错,home目录之前分配10G空间,使用率100%,自己先尝试了扩容到50G,今天早上来了发现又100%了。。。

os:Red Hat Enterprise Linux Server release 6.6 (Santiago)

二,问题检测

登录问题服务器,执行命令  df -h,发现/home目录已占满,但是进入home,执行du -s -h发现只使用了1.4G的空间

初步怀疑是删除文件未释放导致的,执行命令 lsof |grep deleted

发现tomcat下的日志文件占用过大。。。。应该是开发人员删除了日志文件,但并未重启服务导致的。

三,解决问题

由于是测试环境,所以直接kill掉了服务,再次查看,空间已释放,目录使用率已恢复正常。

四,小结

脑补一下df du lsof

df命令使用的是statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针对整个分区。由于df直接读取超级块,所以运行速度不受文件多少影响。

du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果针对的目录中文件很多,du速度就会很慢了。

lsof全名list opened files,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。

lsof详解见另外一篇文章

脑补lsof(list opened files)命令使用详解

本站文章均为原创,转载请注明出处:运维资源 » df空间占用已满,但du查看home目录空间占用却很少

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

QEDEV 运维分享 运维实战

联系我们关于作者