ITPub博客

首页 > 数据库 > 数据库开发技术 > 每日一探索问题-du和df文件大小不一致问题

每日一探索问题-du和df文件大小不一致问题

原创 数据库开发技术 作者:五分钟学SRE 时间:2021-11-25 09:01:00 0 删除 编辑

du -sh * df -Th 显示大小不一样

了解下df与du的工作原理:

du

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

 

df

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


因为:通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink),du就不会再统计它了,然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。 

查看方法:

lsof |grep delete 列出来的这些文件,表示已经删除,但实际上进程还在使用

如何释放磁盘空间:

kill掉相应的进程,或者停掉使用这个文件的应用,让os自动回收磁盘空间



可以把讨论与想法写在评论区,一起学习,一起进步,一起喝咖啡

原文作者:五分钟学SRE;如有侵权,请联系管理员删除。

上一篇: openssl原理与操作
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2021-11-23

  • 博文量
    81
  • 访问量
    38726