linux中du,df查看磁盘空间大小还不一样
共 1634字,需浏览 4分钟
·
2022-01-04 19:52
“Linux查看磁盘空间一般可以用du,df,但是有些时候两个得到的结果却不一样.
分别用du,df查看根分区的大小
> root# du -k -d 1 /
628 /run
41736 /etc
0 /dev
6761392 /root
6905636 /var
4 /media
4 /mnt
206096 /boot
2247520 /opt
30812 /home
0 /proc
16 /lost+found
10319996 /usr
0 /sys
4 /srv
168 /tmp
26514016 /
> df -k
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 1856388 0 1856388 0% /dev
tmpfs 1866776 0 1866776 0% /dev/shm
tmpfs 1866776 628 1866148 1% /run
tmpfs 1866776 0 1866776 0% /sys/fs/cgroup
/dev/vda1 41152812 26803328 12445776 69% /
tmpfs 373356 0 373356 0% /run/user/0
du得到根目录
/
的大小是26514016KBdf得到根目录
/
的大小是 26803328KB
df 得到的比du得到的大,下面分析一下原因
五种原因
df 命令的全称是Disk Free ,显而易见它是统计磁盘中空闲的空间,也即空闲的磁盘块数。它是通过文件系统磁盘块分配图进行计算出的。
du 命令的全称是 Disk Used ,统计磁盘有已经使用的空间。它是直接统计各文件各目录的大小,而不是从硬盘获得信息的。
用户删除了大量的文件后,du命令就不会在文件系统目录中统计这些文件。如果此时还在运行中的进程持有这个已经被删除的文件句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改,df命令仍会统计这个被删除的文件。通过lsof命令查询处于deleted状态的文件,被删除的文件在系统中被标记为deleted。如果系统有大量deleted状态的文件,会导致du和df命令统计结果不一致。可在opt目录下执行如下命令查看。
lsof |grep deleted
Linux系统磁盘分区有保留区的概念,会给root或指定用户预留5%或更大的空间,当使用到这块保留区的空间时,fdisk命令的计算将会是负数。ext文件系统(包括ext2、ext3、ext4)都会默认预留5%的磁盘空间,使用root用户维护系统或记录系统关键日志使用。
当用
du -sh *
命令来统计目录总容量时,如果该路径下包含隐藏文件,是不会包含在统计结果里的。如果某个正在运行的进程进行io的文件被删除,du不会统计,但因为对应的句柄未释放,文件系统中仍有此句柄,df仍会有对应的统计;
由于数据盘挂载前该路径下就存在文件,挂载后用du无法查询到原路径文件。
文章转载:入门小站
(版权归原作者所有,侵删)
点击下方“阅读原文”查看更多