【问题标题】:df and du are reporting different amounts of filesystem useddf 和 du 报告使用的文件系统数量不同
【发布时间】:2015-07-04 07:43:20
【问题描述】:

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

此主机正在镜像我每晚使用 lftp 管理的另一台主机。我已经在这台主机上设置了 apache,使用符号链接将其指向镜像目录。实际镜像数据约为 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     /

【问题讨论】:

标签: linux centos du linux-disk-free


【解决方案1】:

在该驱动器上运行fsck

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

空闲计数中可能缺少 9GB 空间,但没有文件名可以访问它们。这是文件系统损坏的常见形式。

【讨论】:

  • 我运行 fsck 并没有得到任何修复提示。它给出了这个状态:/dev/xvda: 150374/5549696 个文件(38.9% 不连续),6014203/12517376 个块
  • 而 6014203/12517376 大约是 50%。所以 df 可能是正确的。我永远不会使用 du 来计算未使用的空间;这不是它的工作。
  • 是的,我注意到了。根据我镜像的数据量,我应该有 14GB 左右。我正在使用 du 试图找到负责 9 GB 的文件。有趣的是,当我使用救援分区并挂载我的卷时,du 显示 23 GB,但当我正常挂载它时,它显示 14 GB。
  • 以上可能是因为我没有在正常会话中以 root 身份运行 du。使用 du 我看到 /var/spool/postfix/maildrop 似乎是罪魁祸首,占用了丢失的 9 GB。
【解决方案2】:

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

【讨论】:

  • 或者至少不要扔掉权限被拒绝的错误信息:2>/dev/null
  • 当我将它添加到命令中时,这应该是我的第一条线索。它几乎击中了我的脸,但我仍然错过了它。无论如何感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 2017-02-20
  • 2017-10-04
  • 1970-01-01
相关资源
最近更新 更多