转载:http://blog.linezing.com/?p=2136

在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使用df -lh命令来检查每个挂载了文件系统的硬盘的总量和已使用量,或者,可以使用du -sh [directory]命令来统计某个目录下所有文件的空间占用。

在使用df、du命令时,常常会遇到统计的硬盘使用情况不一致的问题。比如du统计根目录下文件总共大小为2G,而df判断挂载在根目录的硬盘已用空间达到了3G,20G甚至更多。发生这种情况,有以下三种原因:

1.预留空间

为了预防紧急情况,linux ext文件系统会预留部分硬盘空间,具体预留的数值可以通过tune2fs -l [dev_name] | grep “Reserved block count”查看到(dev_name是设备名),这里预留的空间会被df计算到已用空间中,从而导致df和du统计不一致。如果需要调整预留空间大小,我们可以使用tune2fs -m [size] [dev_name]来进行调整。

2.幻影文件(phantom file)

du是统计被文件系统记录到的每个文件的大小,然后进行累加得到的大小,这是通过文件系统获取到的。而df主要是从超级块(superblock)中读入硬盘使用信息,df获取到的是磁盘块被使用的情况。当一个文件被删除时,如果有别的进程正在使用它(占有句柄), 这个文件将不会被du统计到,但是这个文件被占用的磁盘空间却依然会被df统计到。这些文件,以及正在使用这些文件的进程可以通过lsof | grep deleted查到。当进程停止或者被kill时,这些空间将被释放。

3.未统计到的文件

如果上面两种情况都排除了,但是数据还是不一致,那是怎么回事?这里隐藏着一种情况:当我们将一个目录挂在到一个新的设备(硬盘)上之前,如果这个目录里面已经有数据,那么这一部分数据不会被du感知,在文件系统中也看不到这些数据,但是这些数据又是确实占用了磁盘空间,是能够被df所统计到的。这时候通过du/df统计原设备的空间使用情况,就会发现df统计到的比du要多。遇到这样的情况时,使用fuser -km [directory]杀死占用该目录的所有进程(小心操作!),然后使用umount [directory]将该目录挂载的设备卸载,这时,目录里面原来已有的数据就会出现,我们将其删除之后,再重新挂载设备(mount -t [type] [dev] [directory])即可。

Linux,du、df统计磁盘情况不一致的更多相关文章

  1. df 和du 命令统计磁盘空间不准确

    Linux & Unix 中 df 和 du 命令统计磁盘空间数值不一致 经常会使用 df 和 du 分别查看磁盘空闲空间和占用空间,偶尔会发现 df(空闲空间) 会小于磁盘大小减去 du(占 ...

  2. Linux 命令 - df: 报告磁盘空间的占用情况

    df 命令列出指定的文件名所在的文件系统上可用磁盘空间的数量. 如果没有指定文件名,则显示当前所有使用中的文件系统.默认情况下,磁盘空间以 1K 为一块显示,如果设置了环境变量 POSIXLY_COR ...

  3. linux du df ls

    du可以查看文件和文件夹的大小,df主要查看数据库大小,查看分区的的磁盘使用情况,ls可以添加-h参数,方便我们查看文件大小 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为 ...

  4. linux命令-df查看磁盘命令

    格式 df -h 人性化变换数据单位 -k 数据以k为单位 -m 数据以m为单位 -i  查看indoe使用情况 free(查看swap)

  5. Linux,du、df统计的硬盘使用情况不一致问题

    [转]http://blog.linezing.com/?p=2136 Linux,du.df统计的硬盘使用情况不一致问题   在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使 ...

  6. du 与df 统计系统磁盘不一致原因与解决方法

    事件起因: 同事发现云主机磁盘系统盘满了,准备清理系统盘,便利用du 命令统计了根目录下各文件夹的大小,发现统计的各文件夹的大小总和 加起来比 df 命令查看到的系统盘所使用空间 要小很多.这里记录下 ...

  7. linux中df和du查看磁盘大小不一致解决方法

    挂了一块50G到/data目录下#  df -h Filesystem Size Used Avail Use% Mounted on /dev/xvdb1 50G 46G 1.2G 98% /dat ...

  8. 41、解决du与df统计不一致的解决方法

    41.1.案例说明: 通过df -hT和du -sh /.du -h --max-depth=1 /命令 发现磁盘的使用不量不一致,使用'df -hT'命令查看磁盘的使用量要 比使用'du -sh / ...

  9. du和df显示磁盘空间使用差异大的几种情况

     接触客户多了,发现经常有客户遇到du看到系统只使用了一部分磁盘空间,但df看时磁盘空间已经满了,或者差异较大,我遇到过三次不一样的原因,下面做一下总结,恶补一下!也希望对大家有点帮助! 现象:有客户 ...

随机推荐

  1. CSS 基础知识点 样式 选择器 伪类

    CSS 基础知识点汇集 版权声明:这篇博客是别人写的,大神博客地址 : https://www.cnblogs.com/Mtime/p/5184685.html 1.CSS 简介 CSS 指层叠样式表 ...

  2. redhat6.4 elasticsearch1.7.3安装配置

    利用elasticsearch管理集群索引, 今天刚好需要重新调整elasticsearch的最大内存, 所以自己安装了练手 附件: elasticsearch 附件:elasticsearch-he ...

  3. UVa 10891 Game of Sum - 动态规划

    因为数的总和一定,所以用一个人得分越高,那么另一个人的得分越低. 用$dp[i][j]$表示从$[i, j]$开始游戏,先手能够取得的最高分. 转移通过枚举取的数的个数$k$来转移.因为你希望先手得分 ...

  4. SxsTrace

    https://troubleshooter.xyz/wiki/fix-the-application-has-failed-to-start-because-the-side-by-side-con ...

  5. python os.system command_line

    command_line = ("{7} {0} -Xmx{1} -jar {2} -T Pileup -R {3} -I {4} -L {5} -o {6} " + " ...

  6. 【网络知识】【1】http、tcp/udp、soap的区别

    一句话总结: soap信息可以通过http协议包装后通过tcp或udp传输 参考:https://zhidao.baidu.com/question/617706398106243452.html

  7. WPF基础学习笔记整理 (六) RoutedEvent路由事件

    基础知识: 传统的事件模型中,会在消息触发时将消息通过事件传给事件的订阅者(显式的事件订阅),事件订阅者使用事件处理程序来做出响应.事件订阅者必须能够直接访问到事件的宿主(拥有者). 路由事件的事件的 ...

  8. python 获取字符串中所有数字

    s = "dede323frf54de23" l = len(s) numbers = [] i = 0 while i < l: num = '' symbol = s[i ...

  9. Flex布局兼容知识点总结

    转载,原文http://www.cnblogs.com/tugenhua0707/p/5180841.html,部分截取 假设父容器class为 box,子项目为item.旧版语法如下:一:定义容器的 ...

  10. MongoDB(课时5 数据查询)

    3.4.2 数据查询 对于数据的查询操作核心语法: db.集合名称.find({查询条件}, {设置显示的字段}) 范例:没查询条件 db.info.find() 范例:有查询条件,查询出url为&q ...