常有Linux用户询问,为什么利用du和df查看磁盘容量的结果不一致,是否是有bug或者有磁盘碎块,或该以哪个结果为准。而实际上两个命令得出的值是不一致的由于du与df命令实施上的不同,而非故障。

[root@www ~]# du -sh /home
4.7G    /home
[root@www ~]# df -h /home
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5              15G  4.9G  8.9G  36% /home
[root@www ~]#

从上图能够看出,/home 分区的容量,使用df查看是4.9GB,而使用du查看是4.7GB。

du -s 命令通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数。

df 命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如i节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为Meta Data。

du 命令是用户级的程序,它不考虑Meta Data,而df命令则查看文件系统的磁盘分配图并考虑Meta Data。df命令获得真正的文件系统数据,而du命令只查看文件系统的部分情况。