• 1
  • 2
  • 3
  • 4
  • 5
Linux操作系统运维问题 首 页  »  帮助中心  »  云服务器  »  Linux操作系统运维问题
Linux主机df和du出来的文件和磁盘大小不相同的原因分析
发布日期:2015-12-19 19:12:15

  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)

  最后重启服务器或程序均可,建议重启服务器,磁盘空间即可出来