怎麼辦?
[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(如下圖,重啓後才硬盤空間佔用正常)。