自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux常見(jiàn)系統(tǒng)故障:文件已刪除但空間不釋放的原因

系統(tǒng) Linux
一般來(lái)說(shuō)不會(huì)出現(xiàn)刪除文件后空間不釋放的情況,但是也存在例外,比如文件被進(jìn)程鎖定,或者有進(jìn)程一直在向這個(gè)文件寫(xiě)數(shù)據(jù)等,要理解這個(gè)問(wèn)題,就需要知道Linux下文件的存儲(chǔ)機(jī)制和存儲(chǔ)結(jié)構(gòu)。

 [[287341]]

1、錯(cuò)誤現(xiàn)象

運(yùn)維的監(jiān)控系統(tǒng)發(fā)來(lái)通知,報(bào)告一臺(tái)服務(wù)器空間滿(mǎn)了,登錄服務(wù)器查看,根分區(qū)確實(shí)沒(méi)有空間了,如圖1所示。

 

圖1 查看服務(wù)器磁盤(pán)空間

這里首先說(shuō)明一下服務(wù)器的一些刪除策略,由于Linux沒(méi)有回收站功能,所以線上服務(wù)器上所有要?jiǎng)h除的文件都會(huì)先移動(dòng)到系統(tǒng)/tmp目錄下,然后定期清除/tmp目錄下的數(shù)據(jù)。這個(gè)策略本身沒(méi)有問(wèn)題,但是通過(guò)檢查發(fā)現(xiàn)這臺(tái)服務(wù)器的系統(tǒng)分區(qū)中并沒(méi)有單獨(dú)劃分/tmp分區(qū),這樣/tmp下的數(shù)據(jù)其實(shí)占用了根分區(qū)的空間。既然找到了問(wèn)題,那么刪除/tmp目錄下一些占空間較大的數(shù)據(jù)文件即可,檢查/tmp下最大的三個(gè)數(shù)據(jù)文件,如圖2所示。

 

圖2 查看/tmp下最大的前三個(gè)數(shù)據(jù)文件

通過(guò)命令輸出發(fā)現(xiàn)在/tmp目錄下有個(gè)66GB大小的文件access_log,這個(gè)文件應(yīng)該是Apache產(chǎn)生的訪問(wèn)日志文件,從日志大小來(lái)看,應(yīng)該是很久沒(méi)有清理Apache日志文件了,基本判定是這個(gè)文件導(dǎo)致的根空間爆滿(mǎn),在確認(rèn)此文件可以刪除后,執(zhí)行如下刪除操作: 

  1. [root@localhost ~]# rm /tmp/access_log 

接著查看系統(tǒng)根分區(qū)空間是否釋放,如圖3所示。

 

圖3 查看磁盤(pán)空間是否釋放

從輸出可以看到,根分區(qū)空間仍然沒(méi)有釋放,這是怎么回事?

2、解決思路

一般來(lái)說(shuō)不會(huì)出現(xiàn)刪除文件后空間不釋放的情況,但是也存在例外,比如文件被進(jìn)程鎖定,或者有進(jìn)程一直在向這個(gè)文件寫(xiě)數(shù)據(jù)等,要理解這個(gè)問(wèn)題,就需要知道Linux下文件的存儲(chǔ)機(jī)制和存儲(chǔ)結(jié)構(gòu)。

一個(gè)文件在文件系統(tǒng)中的存放分為兩個(gè)部分:數(shù)據(jù)部分和指針部分,指針位于文件系統(tǒng)的meta-data中,在將數(shù)據(jù)刪除后,這個(gè)指針就從meta-data中清除了,而數(shù)據(jù)部分存儲(chǔ)在磁盤(pán)中。在將數(shù)據(jù)對(duì)應(yīng)的指針從meta-data中清除后,文件數(shù)據(jù)部分占用的空間就可以被覆蓋并寫(xiě)入新的內(nèi)容,之所以在出現(xiàn)刪除access_log文件后,空間還沒(méi)釋放,就是因?yàn)閔ttpd進(jìn)程還在一直向這個(gè)文件寫(xiě)入內(nèi)容,導(dǎo)致雖然刪除了access_log文件,但是由于進(jìn)程鎖定,文件對(duì)應(yīng)的指針部分并未從meta-data中清除,而由于指針并未刪除,系統(tǒng)內(nèi)核就認(rèn)為文件并未刪除,因此通過(guò)df命令查詢(xún)空間并未釋放也就不足為奇了。

3、問(wèn)題排查

既然有了解決問(wèn)題的思路,那么接下來(lái)看看是否有進(jìn)程一直在向access_log文件中寫(xiě)數(shù)據(jù),這里需要用到Linux下的lsof命令,通過(guò)這個(gè)命令可以獲取一個(gè)仍然被應(yīng)用程序占用的已刪除文件列表,命令執(zhí)行如圖4所示。

 

圖4 查看被應(yīng)用程序鎖定的已刪除文件列表

從輸出結(jié)果可以看到,/tmp/access_log文件被進(jìn)程httpd鎖定,而httpd進(jìn)程還一直向這個(gè)文件寫(xiě)入日志數(shù)據(jù)。從第7列可知,這個(gè)日志文件大小約70GB,而系統(tǒng)根分區(qū)總大小才100GB,由此可知,這個(gè)文件就是導(dǎo)致系統(tǒng)根分區(qū)空間耗盡的罪魁禍?zhǔn)住W詈笠涣械?ldquo;deleted”狀態(tài)說(shuō)明這個(gè)日志文件已經(jīng)被刪除,但由于進(jìn)程還在一直向此文件寫(xiě)入數(shù)據(jù),因此空間并未釋放。

4、解決問(wèn)題

到這里問(wèn)題就基本排查清楚了,解決這一類(lèi)問(wèn)題的方法有很多種,最簡(jiǎn)單的方法是關(guān)閉或重啟httpd進(jìn)程,當(dāng)然也可以重啟操作系統(tǒng),不過(guò)這些并不是最好的方法。對(duì)待這種進(jìn)程不停對(duì)文件寫(xiě)日志的操作,要釋放文件占用的磁盤(pán)空間,最好的方法是在線清空這個(gè)文件,具體可以通過(guò)如下命令完成: 

  1. [root@localhost ~]# echo " " >/tmp/acess.log 

通過(guò)這種方法,磁盤(pán)空間不但可以馬上釋放,也可保障進(jìn)程繼續(xù)向文件寫(xiě)入日志,這種方法經(jīng)常用于在線清理Apache、Tomcat、Nginx等Web服務(wù)產(chǎn)生的日志文件。

 

責(zé)任編輯:龐桂玉 來(lái)源: 計(jì)算機(jī)與網(wǎng)絡(luò)安全
相關(guān)推薦

2010-04-22 18:17:29

Aix系統(tǒng)故障

2009-08-21 14:07:14

海纜系統(tǒng)故障光纜修復(fù)

2019-12-23 10:53:01

Linux系統(tǒng)故障su

2017-11-03 09:59:16

Linux文件空間

2014-05-09 14:33:35

2009-12-25 10:24:14

2018-11-26 08:40:43

2019-08-19 14:51:56

Linux 系統(tǒng) 數(shù)據(jù)

2013-04-10 13:52:23

2011-08-29 18:25:19

Ubuntu

2021-10-22 09:42:13

Linux恢復(fù)文件

2019-09-06 08:37:48

LinuxGRUBWindows

2010-11-02 09:53:57

2020-05-10 18:16:32

rm刪除文件空間

2023-03-03 00:07:24

2011-05-05 17:03:19

硬盤(pán)故障

2013-08-26 09:49:10

系統(tǒng)故障

2019-11-06 10:00:21

Linux 技巧操作系統(tǒng)

2013-05-16 09:11:15

系統(tǒng)故障故障排查

2012-12-07 10:25:29

Windows 7系統(tǒng)故障
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)