解决df和du查出来的已使用空间不同的问题

我之前在系统上写过一个监控硬盘剩余空间的脚本,今天它给我发来报警了,于是我就登录到服务器上查看,结果发现df和du查出来的结果不一样,du查出来的“实际使用空间”明显比df查出来的已使用空间要小很多,这是为什么呢?难道有些空间被隐藏起来了?

最终,借助网上的力量,解决了这个“诡异”的事件,并全程记录下来了。

首先,我们用df来查看已使用空间:

从上图可知,根分区已使用5456700KB(合约5.20GB)。

然后,我们用du查出根分区下每个目录的大小:

排除红框中的两个目录(因为他们是挂载上去的),所有目录的总大小为3075332KB(合约2.93GB),比df查出来足足小了2.27GB。

为什么会少了这么多空间呢?

其实是因为我们之前删除了一些进程正在写入的文件,虽然已经被我们删除了,但只要进程还在,那个文件就不会被真正地删除,只是被临时存放到系统的某个地方而已,有点类似于Windows的回收站。

想解决这个问题,最简单地就是重启服务器了,但是生产环境一般都不会轻易重启的,所以我们可以通过其他方式来解决。

先用lsof命令配合grep命令查出哪些是已经被删除,却依旧占用系统空间的“无赖”。

上图红框中的文件正是我之前删除的一个大文件,我现在尝试去重启这个程序(node),我直接kill掉这个进程,因为我做了自动启动,所以我不用手动去启动它。

已使用空间一下子下降到3226324KB(合约3.08GB),已经很接近du统计的总空间了。

接下来,我逐个重启了其他deleted的文件,最终df查出来的大小就和du统计的总空间差不多大了。

到此,就解决了df和du查出来的结果不同的文件,赶走了系统里的“无赖”,索回属于我们的空间。

如果读者根据此法依旧无法解决问题,说明你们的情况可能跟我的不太一样。

时间: 2024-11-08 23:55:14

解决df和du查出来的已使用空间不同的问题的相关文章

解决df和du查看的空间容量相差很大问题

环境:Centos 6.5 今天遇到一个怪事,就是df -h查看磁盘空间时,显示使用空间为100%,无法写入文件到磁盘,但是用du -sh /home/*查看时,总和加起来使用空间约为20%左右 最后发现是之前有一个大文件虽然使用了rm -rf删除了,但是由于该文件还存在其他进程调用,所以相当于没有被删除.当我们使用rm -rf删除文件时,只是删除了该文件在磁盘上的索引,并不是真正的删除,当有新文件写入的时会被覆盖. 这时,可以使用kill -9 14930来结束这个进程,让磁盘释放空间,如下图

Linux下查看文件和文件夹大小的df和du命令

当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结. 下面分别简要介绍 df命令可以显示目前所有文件系统的可用空间及使用情形,请看下列这个例子: 以下是代码片段: [yayug@yayu ~]$ df -h Filesystem        

Linux下查看文件或文件夹大小的命令df 、du、ls

转自:http://www.cnblogs.com/benio/archive/2010/10/13/1849946.html 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结. 下面分别简要介绍 df命令可以显示目前所有文件系统的可用空

利用linux的df和du命令查看文件和目录的内存占用

文章目录 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结. 做后台开发经常遇到磁盘占满的情况,毕竟不断有日志在生成,不断有文件在备份,如果长时间不管的话,总有一天会占用满. 题主有一天在发布java项目的时候,就发现提示 1 No space

df和du显示的磁盘空间使用情况不一致的原因及处理

在Linux下查看磁盘空间使用情况,最常使用的就是du和df了.然而两者还是有很大区别的,有时候其输出结果甚至非常悬殊. 1. 如何记忆这两个命令 du-Disk Usage df-Disk Free 2. df 和du 的工作原理 2.1 du的工作原理 du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小.它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作.如果针对的目录中文件很多,du速度就会很慢了. 2.2 df的工作原理 df命令使

lsof处理df和du大小不一致的问题

APP服务器根满了,一直报警 df显示根分区已经使用了90%的空间,但是du根分区总和只有40G左右,该分区应该没有大量小文件,所以应该不会产生大量小文件导致的block写满的问题. 网上搜了下发现有可能是有程序操作大文件导致文件句柄没有释放,这些被程序占用着的文件句柄会被df认为是存在硬盘上的. 网上是这么解释的: du是把目录下所有的文件统计另起来,而df是从文件系统考虑,统计被分配出去的空间,并且包括被程序申请占用的空间. 如果看来,/目录下应该有大量空间被某个程序占用了. 处理方法 ls

df和du命令区别

1.正常情况下,df和du输出结果都会有差距. du -sh命令通过将指定文件系统中所有的目录.符号链接和文件使用的块数累加得到该文件系统使用的 总块数: 而df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数. 文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如i节点,磁盘分布图,间接块,超级块等 .这些数据对大多数用户级的程序来说是不可见的,通常称为Meta Data. du命令是用户级的程序,它不考虑Meta Data,而df命令则查看文件系统的磁盘分配图并考虑Meta Data

Linux4:useradd、userdel、passwd、groupadd、chgrp、chown、df、du、sort、wget

useradd 添加新的用户账号,只有root账户可以操作 -d 目录:指定用户主目录(默认在home下),若此目录不存在可同时使用-m创建主目录 -g 用户组:指定用户所属的用户组 -G 用户组:指定用户所属的附加组 -s shell文件:指定用户登陆使用的shell 例如: useradd -d /usr/sam -m sam:为登录名sam创建一个主目录/usr/sam useradd -s /bin/sh -g group -G adm,root sam:创建一个登录用户sam,该用户登

linux命令--df命令&du命令

df命令是用来查看linux文件系统的磁盘占用情况,可以看到目前磁盘占用多少空间及还剩多少空间 其中几个常用的命令如下 命令1 df默认显示大小是以kb为单位的,可以用参数-k 1024字节为单位,-m 1024*1024字节为单位,-i 显示innode信息,-h 以合适单位显示数据,-H 和-h效果一样,但是-H 是以1000为一个单位,-h是以1024为一个单位 文件系统              容量  已用 可用 已用% 挂载点 /dev/xvda1             97G