亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-10-29 14:35:14 來源:億速云 閱讀:309 作者:小新 欄目:系統運維

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

 

1、錯誤現象

運維的監控系統發來通知,報告一臺服務器空間滿了,登錄服務器查看,根分區確實沒有空間了,如圖1所示。

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

圖1 查看服務器磁盤空間

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

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

圖2 查看/tmp下最大的前三個數據文件

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

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

接著查看系統根分區空間是否釋放,如圖3所示。

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

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

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

2、解決思路

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

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

3、問題排查

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

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

圖4 查看被應用程序鎖定的已刪除文件列表

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

4、解決問題

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

应城市| 垣曲县| 宾阳县| 壶关县| 合肥市| 黄浦区| 盐山县| 九寨沟县| 德昌县| 汶上县| 门头沟区| 鲁甸县| 呼伦贝尔市| 敦煌市| 霍山县| 绥阳县| 文安县| 涿鹿县| 商城县| 花莲市| 辽源市| 临海市| 大新县| 临沧市| 惠东县| 监利县| 利辛县| 永嘉县| 双鸭山市| 呼玛县| 乌拉特中旗| 罗山县| 呼伦贝尔市| 伊金霍洛旗| 宣化县| 班戈县| 睢宁县| 靖边县| 惠州市| 昂仁县| 泗阳县|