通用技术 测试环境问题排查 --- 磁盘空间不释放

huzhiwei99bill · 2021年02月10日 · 最后由 花菜 回复于 2021年02月10日 · 2185 次阅读

头条刷搞笑段子的时候 偶然看到某厂面试里有这么一道题
大概意思是:

服务器磁盘空间占用很大(df 命令查看),但是去每个分区查找的话,占用磁盘空间缺很小(du 命令),请问为什么呢?

今天就通过实践跟大家讲下这个问题

1、登录服务器 查看磁盘空间占用比较多,200 多 G
$ df -lh
Filesystem Size Used Avail Use% Mounted on
dev/sda2 259G 210G 37G 86% /

tmpfs 32G 20K 32G 1% /dev/shm
/dev/sda1 240M 34M 194M 15% /boot
/dev/sdb1 1.1T 171M 1.1T 1% /data

2、去每个分区看磁盘总空间不多,du -sh
3、怀疑是某进程写的日志文件被删了,但是进程还一直存在
$ lsof |grep deleted
zabbix_ag 3586 zabbix 1w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3586 zabbix 2w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3593 zabbix 1w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3593 zabbix 2w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3594 zabbix 1w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3594 zabbix 2w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3595 zabbix 1w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3595 zabbix 2w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3596 zabbix 1w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3596 zabbix 2w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3598 zabbix 1w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
zabbix_ag 3598 zabbix 2w REG 8,2 926 3670771 /var/log/zabbix/zabbix_agentd.log-20200326 (deleted)
docker 3627 root txt REG 8,2 14243454 533156 /usr/bin/docker (deleted)
salt-mini 4097 root txt REG 8,2 9032 526442 /usr/bin/python2.6 (deleted)
salt-mini 4097 root 0r REG 8,2 17 5767173 /tmp/sh-thd-1585122196 (deleted)
salt-mini 4097 root 6w REG 8,2 3442 3801977 /var/log/salt/minion-20201020 (deleted)
salt-mini 4098 root txt REG 8,2 9032 526442 /usr/bin/python2.6 (deleted)
salt-mini 4098 root 0r REG 8,2 17 5767173 /tmp/sh-thd-1585122196 (deleted)
salt-mini 4098 root 6w REG 8,2 3442 3801977 /var/log/salt/minion-20201020 (deleted)
java 94075 root 1w REG 8,2 193473089391 2490385 /root/test1/dubbo-governance.log.100 (deleted)
java 94075 root 2w REG 8,2 193473089391 2490385 /root/test1/dubbo-governance.log.100 (deleted)

其中第 7 列里有个 193473089391 值比较大,这列代表文件大小,单位为 B
193473089391 /(1024 * 1024 *1 024 )= 180 G

4、查进程
$ ps -ef|grep 94075
root 88886 87352 0 11:30 pts/0 00:00:00 grep 94075
root 94075 1 31 2020 ? 24-16:33:21 /usr/java/jdk1.8.0_131/bin/java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

5、杀死进程
6、查看磁盘空间
$ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 259G 30G 217G 12% /
tmpfs 32G 20K 32G 1% /dev/shm
/dev/sda1 240M 34M 194M 15% /boot
/dev/sdb1 1.1T 171M 1.1T 1% /data

磁盘空间使用了 30G,磁盘空间释放前使用 210G,释放了 180G,验证正确

共收到 2 条回复 时间 点赞

其实对于类似问题的话,如果我们想把事情做的更好的话,不光是要发现问题,解决问题,还要考虑规避问题,规避测试环境问题,规避生产环境问题等等等等,你考虑问题不光要有深度(比如优化操作系统内核层如何去规避这个问题,或者提示这个问题),还要求全面性(要做到滴水不漏)

huzhiwei99bill 回复

这样做的价值点在哪里?如果不这样做能不能其他的方式完成?由你来做和别人来做有什么不同?
对业务进行了拿些赋能?你在本次解决问题中还有哪些不足?不足的地方为什么没有提前想到?
确保下次百分之百不会犯这类错误?😏

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册