文件系统 – du -sh和df -h之间的不一致

我知道当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显示无效信息的东西.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...