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

4 disk-usage

我使用 du 列出所有文件夹并按大小排序,结果根本不等于使用了多少磁盘空间(使用 df)。大约有20G的差异,为什么?

[root@xxx lib]# du --max-depth=1 -h /| 排序 -n -r
310M/库
123M/根
96K/开发
88M /等
75G /
73G/无功
30M /sbin
20M/开机
20K/tmp
18M /lib64
16K /分钟
16K /丢失+找到
12K/家
8.0K/srv
8.0K /selinux
8.0K /选择
8.0K/杂项
8.0K/媒体
7.0M /bin
1.2G /usr
0 /系统
0 /进程
[root@xxx lib]# df -h
已使用的文件系统大小 Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      298G 94G 189G 34% /
/dev/sda1 99M 26M 69M 28% /boot
tmpfs 2.0G 0 2.0G 0% /dev/shm

小智 11

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

man du 说:

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

man df

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

文件系统有 inode 表、日志等,它们没有被du. 它不仅特定于 Linux,而且特定于 UNIX(甚至特定于 UNIX 文件系统)。因为 UNIX 进程将文件用于所有事情(我正在简化),即写入日志文件,在这种情况下也可能存在打开的文件描述符问题,导致不同的dudf输出。