博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么df和du看到的数据量不一样?
阅读量:6227 次
发布时间:2019-06-21

本文共 1026 字,大约阅读时间需要 3 分钟。

     【@】最近在window客户端用多个iozone进程通过samba共享的方式访问我们集群文件系统。

    待测试完毕后,我进入集群文件系统的挂载点将生成的临时数据全部删掉。然后用du -sh命令查看挂载点显示为148k(还剩下几个脚本),但我用df -h查看挂载点的使用空间时,显示已使用395G(正是iozone生成的数据的大小),怎么会差这么大呢?是我们的集群文件系统出bug了么?

    首先怀疑是两个命令的统计方式不同,但从结果看了统计方式不同也不至于结果差别这么大吧?排除此种可能。

    然后我通过lsof grep deleted命令查看,这一看就一目了然了,把所有已经deleted的但尚有进程在open着的文件列了出来,查看持有此类文件的进程是samba进程,再看看window客户端的任务管理器的进程,果然有六七十个iozone进程,原因很明显了:虽然已经将文件删除,但尚有进程open着此文件,所有空间尚未释放,等进程close该文件后,空间才真正释放!

    unlink()  deletes  a  name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted

and the space it was using is made available for reuse.
    If the name was the last link to a file but any processes still have the file open the file  will  remain  in  existence  until  the  last  file
descriptor referring to it is closed.

    哈哈,幸亏没追到代码中去,要是追到代码去的话估计现在也没心情写blog,也许正愁着怎么解决这个“bug”呢!

    PS:du得到的空间占用情况和df的结果差距明显的情形,还有一种原因,那就是某个原本有内容的目录被作为挂载点mount上其他分区,于是那个目录下原本的内容就看不到了,但是它们都还在那里,在占用着空间。你看不见的东西,不意味着它们就不存在。^_^

转载于:https://my.oschina.net/uvwxyz/blog/150597

你可能感兴趣的文章
C实现shell管理的一个例子
查看>>
为ASP.NET控件加入快捷菜单
查看>>
Tftod 的服务器使用下载文件
查看>>
装机、UEFI双系统安装
查看>>
jsp入门
查看>>
Android-----使用Button特效 selector+shape
查看>>
android获取/更改gps和WIFI状态
查看>>
自定义线程池
查看>>
SQL Server性能优化(11)非聚集索引的覆盖索引存储结构
查看>>
Django后台管理定制admin
查看>>
从源码分析scrollTo、scrollBy、Scroller方法的区别和作用
查看>>
购买内存条的几点方法
查看>>
[51Nod1487]占领资源
查看>>
Asymptote 学习记录(1):基本的安装以及用批处理模式和交互模式绘图
查看>>
高效率随机删除数据(不重复)
查看>>
什么是死锁?其条件是什么?怎样避免死锁?
查看>>
【JDK1.8】JUC——LockSupport
查看>>
第八组Postmortem事后分析
查看>>
扁平化设计2.0
查看>>
codevs1116
查看>>