df 和 du 报告使用的文件系统数量不同

df and du are reporting different amounts of filesystem used

我有一个 centos 系统,它使用 df 报告的磁盘使用情况比使用 du 报告的多。我读过当文件句柄没有关闭时会发生这种情况。但是,我已经多次重新启动系统并且 lsof 没有显示任何搁浅的文件句柄。

此主机正在镜像我使用 lftp nightly 管理的另一台主机。我已经在这台主机上设置了 apache,使用符号 link 将它指向镜像目录。实际镜像数据约为 12-13 GB。基于此,14 GB 的数字似乎是正确的,df 报告了额外的 9 GB。

可能是什么原因造成的?

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda        48G   23G   23G  50% /
tmpfs           492M  112K  492M   1% /dev/shm
$ du -hs / 2>/dev/null
14G     /

运行 该驱动器上的 fsck

df 将为您提供磁盘未分配块计数中的块数,du 报告可通过文件系统访问的块数。您可以看到这些方法的差异,因为 df 是瞬时的(查找一个数字),而 du 花费的时间与它必须检查的文件数(准确地说是 i 节点)成正比。

可能有 9GB 的 space 不在免费计数中,而且没有文件名可以访问它们。这是文件系统损坏的常见形式。

运行 du 作为根用户。您的用户帐户无法访问的文件将不包含在总和中,因此您必须 运行 以 root 身份查看磁盘上所有文件的总和。