我知道当du -sh的结果小于文件系统使用df -h返回的结果时,这种情况很常见. (因为有些文件在进程等中仍然是打开的.)但在我的情况下,我有相反的结果.
我正在运行Ubuntu 12.04并尝试获取NFS挂载的已用大小
df -h返回使用的270G,而挂载文件夹的du -sh返回使用的320G.
更新:
我正在使用以下选项安装分区:
nas-server:/path/to/mount /mnt/mount/point nfs proto=tcp,rsize=8192,wsize=8192,hard,intr,exec
有谁知道这可能来自哪里?磁盘上的正确数量应为270G~
谢谢你的帮助.我会提供任何必要的额外信息.
解决方法
du计算硬链接文件使用的块一次,而不是每个硬链接一次.但是,重复数据删除有一些方法可能会失败:
>表du用于删除硬链接文件是固定大小的.如果您拥有的硬链接文件多于表可以存储的文件,则重复数据删除可能不会成功. (某些版本的du有一个动态大小的表,没有这个问题.)
>重复数据删除基于inode值.如果NAS服务器为硬链接的文件显示不同的inode编号,则无法进行重复数据删除.有些NAS服务器可以很好地呈现inode,因为它们使用的是具有inode的文件系统.其他人必须“假装”并且做得不好.
顺便说说…
du只计算文件数据.
df计数块用于文件数据加上所有元数据:目录,超级块,inode表,直接/间接/双向直接块等.
因此,df应该返回比du更小的“使用”尺寸.如果发生相反的情况,我会假设这种重复数据删除被破坏或者NAS服务器已经做了一些让df显示无效信息的东西.