df 是查看磁盘大小和使用空间的命令 常用的是df -h
du 是查看文件和文件夹大小的命令 常用的是du -sh *
一、问题现象的陈述
1、首先列出df的结果
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 17G 2.3G 88% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/xvdb1 99G 5.7G 88G 7% /mnt
2、du的结果如下所示:
# du -smh /* 2>/dev/null
7.6M /bin
24M /boot
164K /dev
27M /etc
4.0K /home
148M /lib
22M /lib64
16K /lost+found
4.0K /media
5.5G /mnt
8.0K /opt
0 /proc
374M /root
15M /sbin
4.0K /selinux
4.0K /srv
1001M /swap
0 /sys
44K /tmp
3.2G /usr
525M /var
初步对比df检查的系统盘占用大小大于du的执行结果,磁盘去哪了?
二、原因排查,此处用的是一个工具lsof
1、lsof的介绍和使用
linux 大量使用了文件。作为系统管理员,lsof 允许查看核心内存,以找出系统当前是怎样使用这些文件。lsof 最简单的用法可以告诉您哪些进程打开了哪些文件,及哪些文件由哪些进程打开。在收集关于应用程序工作情况的信息时,或者在进行某些可能损坏数据的操作前确保文件没有被使用时,这一点很重要,lsof 更高级的用法能够帮助查找删除的文件。
# lsof |grep delete
nginx 1051 nobody 4u REG 202,1 5324800 394886 /usr/local/nginx/proxy_temp/3/77/0005756773 (deleted)
nginx 1051 nobody 24u REG 202,1 131072 394885 /usr/local/nginx/proxy_temp/2/80/0005756802 (deleted)
AliYunDun 22327 root 12uW REG 202,1 0 394241 /tmp/qtsingleapp-aegiss-a5d2-lockfile (deleted)
java 22635 root 1w REG 202,1 11867008131 655390 /usr/local/tomcat/logs/catalina.out (deleted)
java 22635 root 2w REG 202,1 11867008131 655390 /usr/local/tomcat/logs/catalina.out (deleted)
java 22635 root 129r REG 202,1 13774099 658029 /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/elasticsearch-1.5.2.jar (deleted)
java 22635 root 147r REG 202,1 543706 658104 /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/struts.jar (deleted)
java 22635 root 199r REG 202,1 447676 658074 /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/mail-1.4.1.jar (deleted)
最后重启服务器或程序均可,建议重启服务器,磁盘空间即可出来