我有一个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 的块分配映射中得到一个零指针,并且不会保留实际的磁盘空间为了它。如果稍后写入,将分配实际的磁盘块,并且映射将更改为指向新块。