为什么 df 和 du 报告的磁盘使用情况存在差异?

为什么 df 和 du 报告的磁盘使用情况存在差异?

我有一个Linux CentOS服务器,周围使用的操作系统+软件包5GB。然后我转了97GB将数据从Windows服务器转移到该Linux服务器上的两个文件夹,在计算磁盘使用情况后,我发现这两个文件夹的总大小大于磁盘使用大小。

在每个文件夹上运行一次du -sh,使用一次50GB,另一个使用47GB

但是运行df -h,使用的空间是96GB。 (50GB+47GB+5GB) >96GB

有什么问题吗?这两个文件夹包含大量文件(超过 100 万个)。谢谢。

答案1

页面给出了一些关于为什么它们具有不同值的见解,但是它似乎表明您的du尺寸应该是两者中较小的一个。

df使用分配的总块数,而du仅查看文件本身,不包括索引节点等元数据,这些元数据仍然需要磁盘上的块。此外,如果在应用程序打开文件时删除文件,du则会将其报告为可用空间,但df直到应用程序退出后才会报告。

答案2

du大于 时df,通常的原因是“稀疏块”:如果程序实际上并未写入磁盘块,而是查找它,它会在 inode 的块分配映射中得到一个零指针,并且不会保留实际的磁盘空间为了它。如果稍后写入,将分配实际的磁盘块,并且映射将更改为指向新块。

相关内容