du和df查看的数值不一致
我们通过df和du分别查看分区,发现二者的数值有时并不完全一样
首先简单介绍一下二者的概念:
df:disk free,指磁盘空余空间,统计磁盘中的空闲进行计算
du:disk usage,指磁盘空间,将目录中所有的文件叠加计算
两者获取信息的过程是:
du使用fstat系统调用,可以直接获取文件的情况,包括目录,符号链接,文件使用块数等占用情况
du可以跨多分区进行操作,有可能获得的是多个分区的情况
du不会统计被已经删除文件的信息
du不会统计Meta Data的数据
du使用fstat系统调用,可以直接获取文件的情况,包括目录,符号链接,文件使用块数等占用情况
du可以跨多分区进行操作,有可能获得的是多个分区的情况
du不会统计被已经删除文件的信息
du不会统计Meta Data的数据,Meta Data包括i节点,磁盘分布图,间接块,超级块等,这些对用户级的程序是不可见的
例如:通过du和df查看/大小,因为df只统计/分区的信息,而du统计的是包括/下的所有目录的大小,包括其他分区的,如/nginx,/redis,/mysql等
通过df和du查看/test占用大小,发现df的数值要比du高,原因是/test/test.txt文件虽已被删除,但还是被进程占用没有释放,显示为delete状态
总结起来,就是du是直接查看文件的情况,而df查看的是超级块信息,以及meta data的信息,这两者的数值并不相同
如果处于delete状态的进程占用该分区已删除的文件,那么分区空间不会被释放出来,导致二者的值差异较大