我使用 du 列出所有文件夹并按大小排序,结果根本不等于使用了多少磁盘空间(使用 df)。大约有20G的差异,为什么?
[root@xxx lib]# du --max-深度=1 -h /|排序-n-r 310M /库 123M /根 96K /开发人员 88M /等 75G/ 73G/var 30M/sbin 20M/开机 20K/tmp 18M/lib64 16K/月 16K /丢失+找到 12K/家 8.0K/服务器 8.0K /selinux 8.0K/可选 8.0K /杂项 8.0K/媒体 7.0M/箱 1.2G/usr 0 /系统 0 /进程 [root@xxx lib]# df -h 已使用的文件系统大小 可用 使用% 安装于 /dev/mapper/VolGroup00-LogVol00 298G 94G 189G 34% / /dev/sda1 99M 26M 69M 28% /boot tmpfs 2.0G 0 2.0G 0% /dev/shm
答案1
那是因为du
和df
衡量的东西不同。
man du
说:
du - 估计文件空间使用情况(...) 总结每个文件的磁盘使用情况,对于目录递归。
和man df
:
df-报告文件系统磁盘空间使用情况
文件系统有 inode 表、日志等,这些没有被 总结du
。它不仅是 Linux 特定的,而且是 UNIX 特定的(甚至是 UNIX 文件系统特定的)。因为 UNIX 进程使用文件来处理所有事情(我正在简化),即写入日志文件,所以还可能有一个打开文件描述符在这种情况下,问题会导致不同的du
和df
输出。
答案2
这索引节点桌子(以及一些非常小的东西)包含在已用空间中。看起来您有大约 18GB 的 inode。这大约是 6% 的空间,这在 ext2/ext3/ext4 的预期范围内(如果没有其他情况,没有 inode 表的文件系统可能有更大的目录条目)。您可以通过运行找到用于 inode 的精确大小tune2fs -l /dev/mapper/VolGroup00-LogVol00
,例如,以下是我的 20GB ext3 文件系统之一的相关行:
Inode count: 2622368
Inode size: 128
该分区有 2622368×128 B ≈ 320 MB 的 inode。
附加说明:您调用的方式du
,您将看到每个文件使用的空间,即使在远程安装和其他非直接磁盘支持的文件系统上也是如此。运行du -x /
以查看根文件系统上存储的内容。