怎麽办?
[root@myhost ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@myhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_myhost-lv_root 13G 13G 0 100% /
tmpfs 3.9G 72K 3.9G 1% /dev/shm
/dev/sda1 477M 41M 411M 9% /boot
#/dev/mapper/vg_myhost-lv_root分区占用了100%,其挂载点事根目录/;
#那麽我们用du -sh /* 查看到底哪些目录占用了磁盘空间
[root@myhost ~]# du -sh /*
7.7M /bin
39M /boot
252K /dev
41M /etc
18M /home
209M /lib
28M /lib64
16K /lost+found
8.0K /media
0 /misc
4.0K /mnt
0 /net
160M /opt
du: cannot access `/proc/53491/task/53491/fd/4': No such file or directory
du: cannot access `/proc/53491/task/53491/fdinfo/4': No such file or directory
du: cannot access `/proc/53491/fd/4': No such file or directory
du: cannot access `/proc/53491/fdinfo/4': No such file or directory
0 /proc
19M /root
17M /sbin
0 /selinux
4.0K /srv
0 /sys
244K /tmp
12.1G /usr ==》这里大量占用了磁盘空间
217M /var
#继续使用du -sh /usr/*
[root@myhost ~]# du -sh /usr/*
170M /usr/bin
4.0K /usr/etc
4.0K /usr/games
7.6M /usr/include
541M /usr/java
310M /usr/lib
1.1G /usr/lib64
23M /usr/libexec
9.5G /usr/local ==》这里是web应用程序所在目录
31M /usr/sbin
1.4G /usr/share
12K /usr/src
0 /usr/tmp
#继续使用du -sh /usr/*
[root@myhost ~]# du -sh /usr/local/*
156M /usr/local/apache-tomcat-7.0.78
119M /usr/local/apache-tomcat-8.5.24
4.0K /usr/local/bin
4.0K /usr/local/etc
4.0K /usr/local/games
4.0K /usr/local/include
4.0K /usr/local/lib
4.0K /usr/local/lib64
4.0K /usr/local/libexec
4.0K /usr/local/sbin
7.3G /usr/local/sft-tomcat ==》这部分web应用程序大量占用了磁盘空间
96K /usr/local/share
4.0K /usr/local/src
125M /usr/local/syn_hbcqjy
81M /usr/local/task
8.0K /usr/local/tomcat
242M /usr/local/tomcat_hbcqjy
#继续使用du -sh /usr/*
[root@myhost ~]# du -sh /usr/local/sft-tomcat/
738M /usr/local/sft-tomcat/
[root@myhost ~]# du -sh /usr/local/sft-tomcat/*
6.9G /usr/local/sft-tomcat/biz-tomcat ==》这部分web应用程序大量占用了磁盘空间
279M /usr/local/sft-tomcat/task-tomcat
266M /usr/local/sft-tomcat/wf-tomcat
#继续使用du -sh /usr/*
[root@myhost ~]# du -sh /usr/local/sft-tomcat/biz-tomcat/*
816K /usr/local/sft-tomcat/biz-tomcat/bin
236K /usr/local/sft-tomcat/biz-tomcat/conf
7.5M /usr/local/sft-tomcat/biz-tomcat/lib
56K /usr/local/sft-tomcat/biz-tomcat/LICENSE
6.0G /usr/local/sft-tomcat/biz-tomcat/logs ==》这部分web应用程序大量占用了磁盘空间
4.0K /usr/local/sft-tomcat/biz-tomcat/NOTICE
8.0K /usr/local/sft-tomcat/biz-tomcat/RELEASE-NOTES
16K /usr/local/sft-tomcat/biz-tomcat/RUNNING.txt
4.0K /usr/local/sft-tomcat/biz-tomcat/temp
184M /usr/local/sft-tomcat/biz-tomcat/webapps
100K /usr/local/sft-tomcat/biz-tomcat/work
#最后发现是这个tomcat下的日志将磁盘给占满了。o(╥﹏╥)o
#然后我就乖乖地去处理日志了。-_-|| 然后再重新启动了该服务!!!
拓展
fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。
fdisk -l:列出指定的外围设备的分区表状况;
#有时候我们还会遇到这样的情况:
把日志文件都删掉了,可硬盘空间依旧满。是什麽占用了硬盘,还查不到呢?
#出现上面问题原因:
在apache/tomcat服务在运行状态下,直接删除或清空了运行服务的日志,从而导致/dev/mapper/vg_myhost-lv_root 满了的问题。一般情况下,大多数服务(包括脚本)在运行时,是不能直接删除或清空当前正在写入的日志文件的。
#原理分析:
- 当前xxx日志正在被apache/tomcat进程占用。
- 通过rm -f 命令删除xxx日志,实际只删除了文件名(该日志文件应用记数不为0,因此空间不会被释放)。
- 通过rm -f 命令删除了xxx日志后,apache/tomcat依然写日志到xxx日志中,当开启apache/tomcat进程时,已经通过xxx日志定位到该文件的inode了,就是说再写日志是不通过xxx日志,因此即使删除了xxx日志,apache/tomcat依然写日志到xxx日志所在的inode节点,所以导致硬盘空间增加。
- 因为rm -f 删除了xxx日志,所以我们就找不到该文件了,du -sh也查不到,就会出现硬盘满了但看不到究竟是哪些文件占用的。
#解决办法
重启该日志文件的相关服务或程序,如:为tomcat日志文件则重启tomcat(如下图,重启后才硬盘空间占用正常)。