Linux,du、df统计磁盘情况不一致

转载: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])即可。

时间: 2024-08-08 00:27:35

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

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

Linux & Unix 中 df 和 du 命令统计磁盘空间数值不一致 经常会使用 df 和 du 分别查看磁盘空闲空间和占用空间,偶尔会发现 df(空闲空间) 会小于磁盘大小减去 du(占用空间). 两个命令实现目的是一样的,但是实现的过程有着本质的区别.就像两个人是到同一个地方,但走不同的路,所以路程的长短也就不同. df 命令的全称是 Disk Free ,显而易见它是统计磁盘中空闲的空间,也即空闲的磁盘块数.它是通过硬盘分配图进行计算出的. du 命令的全称是 Disk Used ,它

linux中 df 和 du 命令统计磁盘空间数值不一致

经常会使用 df 和 du 分别查看磁盘空闲空间和占用空间,偶尔会发现 df(空闲空间) 会小于磁盘大小减去 du(占用空间).    两个命令实现目的是一样的,但是实现的过程有着本质的区别.就像两个人是到同一个地方,但走不同的路,所以路程的长短也就不同.    df 命令的全称是 Disk Free ,显而易见它是统计磁盘中空闲的空间,也即空闲的磁盘块数.它是通过硬盘分配图进行计算出的.    du 命令的全称是 Disk Used ,它是统计磁盘有已经使用的空间.它是直接统计各各目录的大小,

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

df 命令列出指定的文件名所在的文件系统上可用磁盘空间的数量. 如果没有指定文件名,则显示当前所有使用中的文件系统.默认情况下,磁盘空间以 1K 为一块显示,如果设置了环境变量 POSIXLY_CORRECT,则采用 512 字节为一块显示. 命令格式 df [OPTION]... [FILE]... 命令参数 -a, --all 显示所有文件系统磁盘空间的占用情况 -B, --block-size=SIZE 指定块的大小 --total 额外显示总体的磁盘空间的占用情况 -h, --human

linux du df ls

du可以查看文件和文件夹的大小,df主要查看数据库大小,查看分区的的磁盘使用情况,ls可以添加-h参数,方便我们查看文件大小 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结 [[email protected] eaccelerator]# df -hFilesystem            Size  Used

linux命令-df查看磁盘命令

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

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

事件起因: 同事发现云主机磁盘系统盘满了,准备清理系统盘,便利用du 命令统计了根目录下各文件夹的大小,发现统计的各文件夹的大小总和 加起来比 df 命令查看到的系统盘所使用空间 要小很多.这里记录下解决方法 了解下df与du的工作原理: du du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小.它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作.如果针对的目录中文件很多,du速度就会很慢了. df df命令使用的事statfs这个系统调用

Linux下磁盘保留空间的调整,解决df看到的空间和实际磁盘大小不一致的问题

linux的硬盘分区程序会自动为root或指定的用户保留一定的磁盘空间默认是5%,在较大的分区或是不重要的分区上这种设置会占据过多不必要的空间, 利用mke2fs的-m reserved-percentage选项可以调整这个设置来获得更多的磁盘空间且不影响性能.而在创建了文件系统之后,用户可以用tune2fs来修 改这个设置比如tune2fs -m 1 /dev/sda4 可以将保留的空间设置为1% 看 mkfs.ext3 的man page,就可以知道原因了,其中有这么一句:-m reserv

linux命令——df:查看磁盘情况

linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命令功能: 显示指定磁盘文件的可用空间.如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示.默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示 3.命令参数: 必要参数: -a 全部文件系统列表 -h

Linux 查看文件夹大小,磁盘剩余空间(du/df)

1. 简介 du查看目录大小,df查看磁盘使用情况. 2. du disk usage (1)基本功能 递归查看文件夹下所有文件的大小 (2)常用参数: -h, –human-readable 以可读性较好的方式显示尺寸(例如:1K 234M 2G) -s, –summarize 只分别计算命令列中每个参数所占的总用量 (3)其它参数说明: -a, –all 输出所有文件的磁盘用量,不仅仅是目录 –apparent-size 显示表面用量,而并非是磁盘用量:虽然表面用量通常会小一些,但有时它会因