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

事件起因:

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

了解下df与du的工作原理:

du

du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果针对的目录中文件很多,du速度就会很慢了。

df

df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针对整个分区。由于df直接读取超级块,所以运行速度不受文件多少影响。

du和df不一致情况原因:

常见的df和du不一致情况就是文件删除的问题。当一个文件被删除后,在文件系统目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除, 分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。

解决方法:

1 lsof | grep delete                   --- 查看已经删除,仍被进程占用没有释放空间的文件相关信息
2 得到占用文件的进程,重启或kill该进程,释放文件。 

进行第一步操作时发现有较大的tomcat 和 nginx的访问日志被删除后但仍进程占用,进行第二步操作后系统盘空间成功释放很多,系统盘的使用率也就降下去了。

其他需要注意的:

(1)当出现du和df差距很大的情况时,考虑是否是有删除文件未完成造成的,方法是lsof命令,然后重启或关闭相关进程即可。
(2)可以使用清空文件的方式来代替删除文件,方式是:echo > test.log。
(3)除了rm外,有些命令会间接的删除文件,如gzip命令完成后会删除原来的文件,为了避免在出现这种问题,前先确认没有进程打开该文件。

原文地址:https://www.cnblogs.com/ytc6/p/10155994.html

时间: 2024-10-29 19:53:45

du 与df 统计系统磁盘不一致原因与解决方法的相关文章

B150主板Win7系统出现蓝屏且提示错误代码0x000000C5的原因及解决方法

最近有用户反映,使用网吧内客户机出现蓝屏问题,且提示错误代码0x000000C5,检查发现客户机主板使用的是B150,这该怎么办呢?本文将提供Win7系统出现蓝屏且提示错误代码0x000000C5的原因及解决方法供大家了解,希望对大家有所帮助 近来有网吧用户反馈网吧内客户机出现C5蓝屏问题,客户机主板使用的是B150,那么如何解决呢?下面脚本之家的小编就带来了Win7系统出现0x000000C5蓝屏的解决方法,一起来看看吧. 原因说明 DNF等游戏程序会利用intel 虚拟化技术,如果没有开启i

双系统(win7+ubuntu)ubuntu磁盘空间不足时解决方法

原文网址: http://www.lupaworld.com/thread-868507-1-1.html 问题描述: 双系统(win7+ubuntu)ubuntu系统提醒磁盘空间不足,又不想重装系统. 解决思路:第一步,在win7下划出一块可用空间:第二步,利用gparted软件将此可用空间划给ubuntu系统:第三步,最后利用grub修复技术修复损坏的grub. 具体步骤: 第一步:在win7下划出一块可用空间 登录win7系统--> (右击)计算机-->  属性  --> 存储 -

Ubuntu输入正确的用户名密码不能进入系统的原因和解决方法

    问题描述:在VMWare上装了个Ubuntu,关机后再启动输入正确的用户名和密码,系统一闪又回来登录界面,而且不提示用户名或者密码错误(间接证明用户名密码正确).   问题原因:linux的启动配置文件/etc/profile 出现问题 解决办法:同时按下CTRL+ALT+F1键,从图形界面进入命令行模式,输入用户名密码登陆.登陆成功后,sudo su 切换到root用户.然后vi /ect/profile文件,将该文件中错误的部分去掉.wq退出.按CTRL+ALT+F7返回图形界面,重

MySQL 实例空间使用率过高的原因和解决方法

用户在使用 MySQL 实例时,会遇到空间使用告警甚至超过实例限额被锁定的情况.在 RDS 控制台的实例基本信息中,即会出现如下信息: 本文将介绍造成空间使用率过高的常见原因及其相应的解决方法.对于MySQL 5.6版本的实例,升级实例规格和存储空间后即可解锁实例,关于如何升级实例配置,请参见变更配置. 常见原因 造成 MySQL 实例空间使用率过高,主要有如下四种原因: Binlog 文件占用高. 数据文件占用高. 临时文件占用高. 系统文件占用高. 查看空间使用状况 您可以通过 DMS 中的

coreseek常见错误原因及解决方法

coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索.论坛/站内搜索.数据库搜索.文档/文献检索.信息检索.数据挖掘等应用场景,用户可以免费下载使用 本文为大家整理了coreseek/sphinx中文检索引擎的常见问题和解决方法,感兴趣的同学参考下. Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协

电脑蓝屏的原因及解决方法

几乎所有使用电脑的朋友都遇到过电脑蓝屏的现象,电脑蓝屏是一个非常普遍的现象,即使是比尔.盖茨在介绍Windows 98 功能的发布会这么重要的场合仍未能避免蓝屏现象,之所以电脑蓝屏现象很常见,是因为电脑蓝屏的发生有着多种原因,硬件出现问题,硬件之间不兼容,软件之间不兼容都可能造成蓝屏的问题!今天就为大家介绍下电脑蓝屏的原因及解决方法,希望对大家解决电脑蓝屏现象有所帮助! 电脑蓝屏原因 1 软件兼容性问题引起电脑蓝屏刚安装的系统,若驱动与硬件不兼容可能会导致蓝屏现象,建议安装硬件赠送光盘中的驱动(

关于jsp乱码问题的产生原因 及 解决方法。

http://blog.csdn.net/caoxiaohong/article/details/1781777 JSP/JDBC MySQL乱码问题JSP的request 默认为ISO8859_1,所以在处理中文的时候,要显示中文的话,必须转成GBK的,如下String str=new String(request.getParameter("name").getBytes("ISO8859-1"),"GBK"); out.println(st

mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法

补充:正常情况下,建议数据库备份最好用工具进行备份,通过拷贝数据库表进行数据迁移,不同的环境会出现各种不同的意外问题. 背景:今天在整理一个网站的时候,操作系统由于系统自动更新导致一直出现系统蓝屏死机,唉,悲剧了,于是重新安装了系统 windows server 2008 enterprise 32bit. 详情: 系统安装完成后,重新配置之前那个网站,appache服务配好之后,再配置数据的时候是这样做的,将原来Mysql 文件夹(C:\Windows.old\ProgramData\MySQ

解析Win8小键盘灯不亮的原因及解决方法      

相信不少用户安装win8.1系统后发现,每次电脑开机小键盘灯都不亮,导致无法使用小键盘,需要手动按Num lock键才能打开数字小键盘输入.虽然,问题不大,但每次都要重复这样的动作感觉很烦.有没有办法解决这个问题呢?其实,只需要修改注册表就能搞定. 按"win+R"快捷键打开运行对话框,输入"regedit"命令,打开注册表编辑器,依次找到"HKEY_USERS→.DEFAULT→Control Panel→Keyboard",将其右边的&quo