当 df 显示已占用 40gb(总共 50gb)而 du 显示已占用 49.9gb(总共 50gb)时,我是否可以再存储 1-2gb 的数据?

当 df 显示已占用 40gb(总共 50gb)而 du 显示已占用 49.9gb(总共 50gb)时,我是否可以再存储 1-2gb 的数据?

我已经阅读了大约 22 个关于堆栈上类似问题的答案,以了解为什么 df 和 du 显示差异结果。但我关心的是我应该依靠哪一个?哪个报告实际上是正确的?

我的 Ubuntu 22.04 LT 上只有一张启动光盘,没有任何其他/额外的外部安装光盘,但在我的 GCP Ubuntu 服务器上,df 显示 50 GB 中已使用了约 40 GB 磁盘,而 du 和 df 均显示已使用了 49.9 GB 50克。 df 和 du 显示差异结果 哪一个是真的?我很难维护我的服务器。是因为我的磁盘几乎 100% 已满,还是因为 4GB RAM 和 2 个共享核心不足以满足我的系统需求。

同一 Gcp 实例/服务器上的 Ncdu 结果

答案1

您在计算中包括了所有已安装的文件系统(包括 RAM 和伪文件系统),du而 df 是实际的文件系统。尝试添加-x到 du 命令。

即使如此,它也可能不是 100% 准确。有很多不同的因素。文件系统类型、文件系统块大小、物理块大小、硬链接、引用链接、元数据、稀疏文件等。在任何情况下,它通常都不是精确的计算。

答案2

正如他们的手册页中所写,du计算文件空间使用情况,同时df计算文件系统磁盘空间使用情况。因此,df这是适合您的用例的更好工具。

您将参数传递给df分区(或目录),以发现该分区(或托管该分区的文件系统)上剩余多少可用空间。就您而言,这就是您正在寻找的结果,并且您还有大约 9 GB 的可用空间,如@CR。在评论中说。

另一方面,du采用文件或目录作为参数;如果目录包含来自不同文件系统的子目录,您将获得没有意义的磁盘使用计数。 (在输出中,观察如何du尝试导航/proc,这是一个不占用任何空间的伪文件系统。)在这种情况下,您必须记住使用-xaka--one-file-system选项,它会跳过不同文件系统上的目录。

相关内容