温故而知新---Linux:df和du查看磁盘大小不一致的问题和解决办法

本文解析了服务器上du和df命令显示的磁盘使用情况差异原因,深入探讨了deleted状态文件的影响,并提供了两种解决方案:直接kill进程或重启服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在公司的服务器清理日志之后,发现了一个奇怪的现象,先上图:
在这里插入图片描述
如上图所示:data已经用掉了5.5GB的空间,但是data所有文件夹加起来的空间不超过4.3G。那多占用的空间到哪里去了呢?
后来网上查询了一下原因:
du:是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在
的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
df:通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不
是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已 经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除 的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。
当文件系统也确定删除了该文件后,这时候du与df就一致了。
那怎么才能让文件系统亲爱的小姐姐知道这个文件已经删掉了呢?可通过 lsof命令查询处于deleted状态的文件,被删除的文件在系统中被标记为deleted。如果系统有大量deleted状态的文件,会导致du和df统计结果不一致。
使用如下的命令:lsof |grep deleted
在这里插入图片描述
文件系统小姐姐被骗得好惨呀,居然这么多!赶快kill掉这些骗子:
解决方法:
1、根据lsof列出的pid直接kill相应进程或者重启对应的服务。示例:
在这里插入图片描述
执行之后,再来检查,确认没有deleted状态的文件了,最后确认检查:
在这里插入图片描述
注:如果服务器正在运行业务,kill 会导致进程直接终止,可能会影响到业务,请慎重操作。还是不要对小姐姐简单粗暴了,下面 还有一种更加温柔的方式:
2. 重启服务器。(重启大法好)
重启服务器系统会退出现有的进程,开机后重新加载。该过程会释放调用的deleted文件的句柄。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值