美文网首页
linux中du, df两个命令的区别

linux中du, df两个命令的区别

作者: analanxingde | 来源:发表于2018-03-29 09:47 被阅读152次
    du,df示例

    实现原理:

    df 命令的全称是Disk Free ,显而易见它是统计磁盘中空闲的空间,也即空闲的磁盘块数。它是通过文件系统磁盘块分配图进行计算出的。
    du 命令的全称是 Disk Used ,统计磁盘有已经使用的空间。它是直接统计各文件各目录的大小,而不是从硬盘获得信息的。

    返回值可能不同的情况(df>du):

    1、 元数据Meta Data的存在

    元数据Meta Data的存在:

    • du命令是用户级的程序,它不考虑元数据,
    • df命令则查看文件系统的磁盘分配图因此考虑了元数据,所以df的返回值可能会因此大于du。

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

    2、用户删除文件

    2.1. 如果用户删除了一个正在运行的应用所打开的某个目录下的文件:

    • du命令返回的值显示出减去了该文件后的目录的大小。
    • df命令并不显示减去该文件后的大小,直到该运行的应用关闭了这个打开的文件,df返回的值才显示出减去了该文件后的文件系统的使用情况。

    当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件

    2.2. 用户写入已被删除的文件

    • du统计不到写入的这些磁盘块:因为目录中已经找不到这个文件
    • df 能统计到:因为写的进程还在,磁盘空间没有被释放,所以df能统计到,所以df统计的结果比du大很多。

    一个进程要向一个文件里面写东西,那么会得到一个pointer,
    然后向指针指向的文件(磁盘区域)写入。假如由于某些原因(也可能人为)被指向的文件被删除了,但是( write call)并不知道文件是否还在,就还会继续向里面写,不管文件是否存在,磁盘块还是被写操作使用。

    相关文章

      网友评论

          本文标题:linux中du, df两个命令的区别

          本文链接:https://www.haomeiwen.com/subject/gtnpcftx.html