天天看點

web站點磁盤空間爆滿無法删除故障處理

今天下午看到zabbix上報警,提示有一台測試伺服器硬碟快要滿了,用量已經超過了百分之八十,我是這麼做的:

第一步:首先通過df -h檢視一下哪個路徑下的空間用量比較大,結果發現是/下占用的空間比較多

[root@kk var]# df -h
 Filesystem               Size  Used Avail Use% Mounted on
 /dev/mapper/centos-root   45G  4.8G   41G  81% /
 devtmpfs                 979M     0  979M   0% /dev
 tmpfs                    991M     0  991M   0% /dev/shm
 tmpfs                    991M  9.5M  981M   1% /run
 tmpfs                    991M     0  991M   0% /sys/fs/cgroup
 /dev/sda1               1014M  133M  882M  14% /boot
 tmpfs                    199M     0  199M   0% /run/user/0      

第二步:切加到根目錄下,執行su -sh ./* 檢視比較大的目錄

[root@kk]# du -sh /*
 0   /bin
 100M    /boot
 0   /dev
 32M /etc
 0   /home
 0   /lib
 0   /lib64
 0   /media
 0   /mnt
 0   /proc
 72K /root
 9.5M    /run
 0   /sbin
 0   /srv
 0   /sys
 4.0K    /tmp
 2.2G    /usr
 38G /var          #發現罪魁禍首在這裡面      

第三步:找出大檔案

[root@kk var]# find ./ -size +500M
 ./nginx_access.log 
 [root@kk var]# du -sh ./nginx_access.log 
 37G ./nginx_access.log       

我打開這個檔案之後,發現都是nginx的日志,而且都是同一個源位址192.168.66.6/24,192.168.66.0/24是我劃給開發部分使用的網段,而且我用tail -f 看了一下這個檔案還在一直增大,我沒有貿然删除檔案,去問了一下開發,開發那幫人說也不知道怎麼回事?幸好日志檔案裡面有源ip位址,于是我在他們的辦公區詢問了一下誰的IP位址是192.168.66.6,我讓他們趕緊檢視一下,結果有一半開發都手忙腳亂的去百度如何檢視電腦的IP位址!!

web站點磁盤空間爆滿無法删除故障處理

當時我想到一個好辦法,我登入上路由器,直接把192.168.66.6這個IP位址和對應的MAC位址都給禁用了!禁用了之後使用這個IP位址的電腦就不能上網了!這個人肯定會浮出水面,因為公司的網是我管着,他們搞不定隻能來找我!

web站點磁盤空間爆滿無法删除故障處理

果真,沒一會兒,新來的測試妹子一臉委屈的說她的電腦不能上網了!

web站點磁盤空間爆滿無法删除故障處理

我問她這兩天有沒有測試什麼東西?她說前兩天用軟體測試了一個什麼,但是就測試了一會兒就把軟體關了,再次問他們确定了那個檔案是沒有什麼用的,于是我就是把那人大日志檔案給删除了,本以為完事了,結果通過df -h一檢視,var目錄還是那麼大,通過find檢視時大檔案查不到了,應該是被删除 了呀!但是為什麼磁盤占用量還是那麼大呢?

web站點磁盤空間爆滿無法删除故障處理

思來想去,不知道昨回事!這裡逼我出絕招了,網管三大法寶:重裝、重新開機、格式化,于是我重新開機了伺服器(測試環境,重新開機一下沒啥大影響),這一招真的屢試不爽,重新開機完成之後再去通過df -h檢視,發現真的好了!占用量一下子降到了百分之三十,怎麼會這樣?重新開機一下伺服器就好了,想不通。

後來經過半天的谷歌,百度之後發現大多數服務(包括腳本)在運作時,是不能删除目前正在寫入的日志檔案的, 清空了運作服務的日志,這裡是清理了當天或正在寫入的日志檔案,之前的沒有清理掉,進而導緻了上面問題。 原來是這樣,當nginx服務運作運作的時候會“綁定”上日志檔案,雖然我表現上清理了,但實作上nginx程序并沒有釋放日志檔案,清理的隻是檔案名,nginx寫日志的時候并不是根據檔案名寫入日志,而是根據檔案的inode号,而inode号還沒有釋放,當我重新開機伺服器之後,就相當重新開機了nginx服務,就把這個檔案的inode号釋放了,是以删除操作就變正常了!

web站點磁盤空間爆滿無法删除故障處理

我趕緊跑到測試妹子的電腦看了一下,果然,果然,那個測試軟體一直在背景運作着……

web站點磁盤空間爆滿無法删除故障處理
00 02 * * * * 
 find /var/log/ -type f -mtime +3 | xargs rm -f