• 生活的道路一旦选定,就要勇敢地走到底,决不回头。——左拉
  • 坚强的信心,能使平凡的人做出惊人的事业。——马尔顿
  • 人不可有傲气,但不可无傲骨。 --徐悲鸿
  • 古之立大志者,不惟有超世之才,亦必有坚韧不拔之志。 --苏轼
  • 时间像海绵里的水,只要你愿意挤,总还是有的。 --鲁迅

linux服务器df、du命令查看磁盘空间不一致的解决方案

工作随笔 zkinogg 2个月前 (07-05) 79次浏览 0个评论

一、描述

今天到公司看监控发现某台服务器磁盘使用率告警,登上之后查看磁盘空间使用率如下图所示:

 

 

 

 

然后我使用 du -sh –exclude=’proc‘ /*命令查看/目录下各目录使用空间情况,发现和df 的对不上.

 

 

 

 

 

 

二、原因

当一个文件被删除的时候,在文件系统的目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。

 

三、解决方案

通过执行以下命令得已解决

# lsof是一个列出当前系统打开文件的工具.通过以下命令可以找出已删除后但是程序在占用空间大的文件和程序名称,将程序重启及可释放空间
lsof|grep delete|head -100|awk '{print $8,$10}'

#列出来的这些文件,表示已经通过rm删除,但实际上进程还在调用;并没有真正在磁盘中被删除,手动重启该进程的应用,即可完全释放被删除的文件的句柄从而释放真正的磁盘空间。

 

 

 

 

#重启对应程序后再次查看磁盘空间情况,已经恢复正常

 

 

 

 

 

四、总结

rm删除命令在某些时候删除掉文件后,并不能立刻释放磁盘空间,尤其是日志文件,相关应用程序只要运行着,即使删除了,还是会调用着该文件,从而不释放已经删除的空间,需要将应用程序重启才能真正释放磁盘空间!建议之后在清理日志文件的时候尽量避免用rm,可以使用echo > xxx.log进行重定向删除操作。

 

 

喜欢 (5)
[17551054905]
分享 (0)

您必须 登录 才能发表评论!