linux系统
用户发现有目录空间不足的报警,查看发现df 统计的结果和du差距很大。du统计出的容量加一起也不足1G,但使用已经达到16G。
home]# du -sh *
220K ansibleDemo
28K cp.log
172M gpadmin
4.0K host.sh
36K ktabrm
36K ktahis
40K ktappt
36K ktauas
16K lost+found
1.4M oracle
637M scripts
home]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/root_vg-homelv 20G 16G 2.8G 86% /home
df 统计的时候是从文件系统考虑的,不仅包含文件系统大小,还要统计被命令或者程序占用的空间,
例如:文件已经被删除,但是被某个进程持有。其原理是读取每个分区的superblock来获取空闲数据块、已使用数据块,从而计算出空闲空间和已使用空间,因此df统计的速度极快(superblock才占用1024字节)。所以非常快。
du 是面向文件的,只计算文件或者目录占用空间,其具体做法就是stat文件,然后统计其所占的实际物理空间。stat命令用于显示关于文件或文件系统的详细信息,包括文件的属性、权限、所有者、大小、时间戳等信息。
总的来说df统计的容量是不准确的,du出来的才是真实的容量。
实验室搭建环境
原始容量是接近的
跑一个后台查看这5个文件的进程然后删除文件,进程还在
这个时候就差了这5个文件的容量
列出当前系统已打开文件,但是deleted的状态
lsof -n|grep deleted
kill掉进程,容量回归,下图是kill掉一个
全kill掉,容量就基本一致了
用户现场与猜测一致,存在大量系统已打开文件,但是deleted的状态。把处于deleted状态的进程kill掉就好了。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作