關(guān)于Linux服務(wù)器磁盤(pán)空間占滿問(wèn)題的解決方法
下面我們一起來(lái)看一篇關(guān)于Linux服務(wù)器磁盤(pán)占滿問(wèn)題解決(/dev/sda3 滿了),希望碰到此類(lèi)問(wèn)題的人能帶來(lái)幫助。
今天下班某電商技術(shù)部leader發(fā)現(xiàn)個(gè)問(wèn)題,說(shuō)他們服務(wù)器硬盤(pán)滿了。把日志文件都刪掉了,可硬盤(pán)空間依舊滿。于是df -h查看了下各個(gè)掛載點(diǎn)的狀況(如下圖)。
/dev/sda3占用了100%,那么我們du -s -h ./*看下目錄的占用情況(如下圖)。
在工作中,我們也許會(huì)遇到這樣的問(wèn)題,發(fā)現(xiàn)某個(gè)磁盤(pán)空間快滿了,于是,找到一些無(wú)用的大文件將其刪除后,發(fā)現(xiàn)磁盤(pán)空間還是沒(méi)有釋放掉,這是什么原因呢?如何解決呢?下面來(lái)重現(xiàn)一下整個(gè)過(guò)程:
查看磁盤(pán)空間情況
[@74.114 var]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 9.7G 284M 8.9G 4% / /dev/xvda1 251M 13M 226M 6% /boot none 1.1G 0 1.1G 0% /dev/shm /dev/xvda10 97G 60G 33G 65% /home /dev/xvda3 3.9G 2.7G 1.1G 72% /usr /dev/xvda5 3.9G 3.6G 77M 98% /var
var分區(qū)快滿了,找到大文件,并刪除
[@74.114 var]# cd /var [@74.114 var]# du –sh * 3.3G account 111M cache 53M log 0 mail 156K run 344K spool … [@74.114 var]# rm –rf account/*
df –h 看一下,卻依然是/var 為98%,一點(diǎn)都沒(méi)釋放。
[@74.114 var]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 9.7G 284M 8.9G 4% / /dev/xvda1 251M 13M 226M 6% /boot none 1.1G 0 1.1G 0% /dev/shm /dev/xvda10 97G 60G 33G 65% /home /dev/xvda3 3.9G 2.7G 1.1G 72% /usr /dev/xvda5 3.9G 3.6G 77M 98% /var
但du –sh * 卻顯示沒(méi)有大文件了
[@74.114 ~]# cd /var && du –sh * 120K account 111M cache 53M log 0 mail 156K run 344K spool …
猜想1:應(yīng)該是刪除的內(nèi)容依然被進(jìn)程占用,內(nèi)存沒(méi)釋放,所以用lsof |grep – I deleted 看了一下,發(fā)現(xiàn)如下:
[@74.114 account]# lsof |grep -i deleted listserve 4833 blty 0u CHR 136,2 4 /dev/pts/2 (deleted) listserve 4833 blty 1u CHR 136,2 4 /dev/pts/2 (deleted) listserve 4833 blty 2u CHR 136,2 4 /dev/pts/2 (deleted) Billing_P 16989 blty 0u CHR 136,0 2 /dev/pts/0 (deleted) Billing_P 16989 blty 1u CHR 136,0 2 /dev/pts/0 (deleted) Billing_P 16989 blty 2u CHR 136,0 2 /dev/pts/0 (deleted) Billing_P 16990 blty 0u CHR 136,0 2 /dev/pts/0 (deleted) Billing_P 16990 blty 1u CHR 136,0 2 /dev/pts/0 (deleted) Billing_P 16990 blty 2u CHR 136,0 2 /dev/pts/0 (deleted)
發(fā)現(xiàn)時(shí)billing程序占用沒(méi)釋放,所以聯(lián)系項(xiàng)目經(jīng)理將Billing_P停掉,重啟,依然沒(méi)有釋放任何空間。無(wú)果
猜想2:刪除的文件是accout目錄下的pacct文件,應(yīng)該是由psacct產(chǎn)生和管理,重啟這個(gè)程序后是否會(huì)OK呢?解決
[@74.114 account]# /etc/init.d/psacct restart
最后看一下磁盤(pán)空間,磁盤(pán)空間釋放鳥(niǎo)~~
[@74.114 var]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 9.7G 284M 8.9G 4% / /dev/xvda1 251M 13M 226M 6% /boot none 1.1G 0 1.1G 0% /dev/shm /dev/xvda10 97G 60G 33G 65% /home /dev/xvda3 3.9G 2.7G 1.1G 72% /usr /dev/xvda5 3.9G 100M 3.6M 4% /var
小建議:
以后處理相關(guān)問(wèn)題時(shí),如果發(fā)現(xiàn)du 和df 大小不一致的情況,可以通過(guò)lsof 查看,也許可以找到一些出現(xiàn)問(wèn)題的原因,如果還是找不到問(wèn)題,在允許的情況下不妨試一下重啟服務(wù),也許問(wèn)題就迎刃而解了。
重啟服務(wù)得不到解決的情況下,可以通過(guò)卸載磁盤(pán)分區(qū)來(lái)試著解決。
在決定刪除某些文件前,最好確定好這個(gè)文件被哪些服務(wù)使用,先停掉這些服務(wù)再刪除,這樣就很少出現(xiàn)空間釋放不了的情況了
linux磁盤(pán)掛載點(diǎn)目錄占用情況(圖)
掛載點(diǎn)下的目錄之和遠(yuǎn)小于4.5G,那么是什么占用了硬盤(pán)呢?
以下為該問(wèn)題的解答:
在apache/tomcat服務(wù)在運(yùn)行狀態(tài)下,清空了運(yùn)行服務(wù)的日志,從而導(dǎo)致了/dev/sda3 滿了的問(wèn)題。一般情況下,大多數(shù)服務(wù)(包括腳本)在運(yùn)行時(shí),是不能刪除當(dāng)前正在寫(xiě)入的日志文件的。
原理分析:
1. 當(dāng)前access.log日志正在被apache進(jìn)程占用。
2. 通過(guò)rm命令刪除access.log,實(shí)際只刪除了文件名(該日志文件應(yīng)用記數(shù)不為0,因此空間不會(huì)被釋放)。
3. 通過(guò)rm命令刪除了access.log后,apache依然寫(xiě)日志到access.log中,當(dāng)開(kāi)啟apache進(jìn)程時(shí),已經(jīng)通過(guò)access.log定位到該文件的inode了,就是說(shuō)再寫(xiě)日志是不通過(guò)access.log,因此即使刪除了access.log,apache依然寫(xiě)日志到access.log所在的inode節(jié)點(diǎn),所以導(dǎo)致硬盤(pán)空間增加。
4. 因?yàn)閯h除了access.log,所以我們就找不到該文件了,du也查不到,就會(huì)出現(xiàn)硬盤(pán)滿了但看不到究竟是哪些文件占用的。
(寫(xiě)的不甚詳細(xì),不明白的大家再google下。)
解決方法:
重啟該日志文件的相關(guān)服務(wù)或程序,如:為apache日志文件則重啟apache(如下圖,重啟后才硬盤(pán)空間占用正常)。
以上所述是小編給大家介紹的關(guān)于Linux服務(wù)器磁盤(pán)空間占滿問(wèn)題的解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
FreeBSD6.1Release下利用route和ipfilter架設(shè)路由的方法
FreeBSD6.1Release下利用route和ipfilter架設(shè)路由的方法...2007-05-05Ubuntu系統(tǒng)中部署Vagrant和VirtualBox的圖文教程
這篇文章主要介紹了Ubuntu系統(tǒng)中部署Vagrant和VirtualBox的圖文教程,需要的朋友可以參考下2018-04-04Linux Crontab 啟動(dòng) 、運(yùn)行 和編輯 查看的命令
cron服務(wù)是Linux的內(nèi)置服務(wù),但它不會(huì)開(kāi)機(jī)自動(dòng)啟動(dòng)??梢允褂妹顔?dòng)和停止服務(wù),對(duì)Crontab 啟動(dòng) 、運(yùn)行 和編輯 查看的命令相關(guān)知識(shí)感興趣的的朋友通過(guò)本文學(xué)習(xí)吧2017-07-07