df 说我比 du 多使用了 20G 的磁盘空间。为什么?

df 说我比 du 多使用了 20G 的磁盘空间。为什么?

我使用 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

那是因为dudf衡量的东西不同。

man du说:

du - 估计文件空间使用情况(...) 总结每个文件的磁盘使用情况,对于目录递归。

man df

df-报告文件系统磁盘空间使用情况

文件系统有 inode 表、日志等,这些没有被 总结du。它不仅是 Linux 特定的,而且是 UNIX 特定的(甚至是 UNIX 文件系统特定的)。因为 UNIX 进程使用文件来处理所有事情(我正在简化),即写入日志文件,所以还可能有一个打开文件描述符在这种情况下,问题会导致不同的dudf输出。

答案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 /以查看根文件系统上存储的内容。

相关内容