久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Linux中出現(xiàn)文件已刪除但空間不釋放的原因是什么

226次閱讀
沒有評論

共計 1637 個字符,預(yù)計需要花費 5 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 Linux 中出現(xiàn)文件已刪除但空間不釋放的原因是什么,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

 

1、錯誤現(xiàn)象

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

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

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

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

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

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

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

圖 3 查看磁盤空間是否釋放

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

2、解決思路

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

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

3、問題排查

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

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

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

4、解決問題

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

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

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

看完了這篇文章,相信你對“Linux 中出現(xiàn)文件已刪除但空間不釋放的原因是什么”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-25發(fā)表,共計1637字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 莱阳市| 武功县| 长寿区| 莫力| 通辽市| 宿松县| 郯城县| 中山市| 汨罗市| 南川市| 大兴区| 镇雄县| 永善县| 兴化市| 城步| 辽源市| 南皮县| 北海市| 盱眙县| 康定县| 崇明县| 美姑县| 盘锦市| 惠州市| 马边| 介休市| 日照市| 灵武市| 南和县| 望城县| 江北区| 工布江达县| 特克斯县| 衢州市| 平邑县| 客服| 华坪县| 开化县| 务川| 岳阳市| 广西|