您好,登錄后才能下訂單哦!
這篇文章主要介紹了Linux刪除了文件后空間沒有釋放原因及如何解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Linux刪除了文件后空間沒有釋放原因及如何解決文章都會有所收獲,下面我們一起來看看吧。
我們的一臺應用服務器,操作系統是 Red Hat Linux,監控報警,/opt/applog文件系統使用率超閾值,整體容量為50G,但發現實際文件容量20G,剩下的30G空間是什么?
我們知道,Linux 環境下,任何事物,都是以文件的形式存在,系統在后臺,為每個應用程序,分配了一個文件描述符,他為應用程序和操作系統之間的交互操作提供了通用的接口,既然是文件,就會占用空間,此時可以使用 lsof 指令,他可以列出,當前系統正在打開的文件。
?
>lsof COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... filebeat 111442 app 1r REG 253,3 209715229 1040407 /opt/applog/E.20171016.info.012.log filebeat 111442 app 2r REG 253,3 209715254 385080 /opt/applog/E.20171015.info.001.log (deleted) ...
表頭各字段,含義如下:
?
COMMAND:進程的名稱 PID:進程標識符 USER:進程所有者 FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等 TYPE:文件類型,如DIR、REG等 DEVICE:指定磁盤的名稱 SIZE:文件的大小 NODE:索引節點(文件在磁盤上的標識) NAME:打開文件的確切名稱
可以看出,有一些行中,NAME標識了(deleted)
?
/opt/applog/E.20171015.info.001.log (deleted)
他的含義,就是這文件已被刪除,但打開文件的句柄,并未關閉,再看 COMMAND 的名稱是 filebeat,USER 進程所有者是 app,這是我們的日志采集進程,app 用戶開啟了 filebeat 進程。
插播一下日志采集平臺
傳統的開源日志平臺,即 ELK,由 ElasticSearch、Logstash 和 Kiabana 三個開源工具組成,其中:
常見的部署圖,如下所示
對于上面提到的 filebeat 又是什么?和 ELK 有什么聯系?
?
因為 logstash 是 jvm 跑的,資源消耗比較大,所以后來作者又用 golang 寫了一個功能較少但是資源消耗也小的輕量級的 logstash-forwarder。不過作者只是一個人,加入http://elastic.co公司以后,因為 es 公司本身還收購了另一個開源項目 packetbeat,而這個項目專門就是用 golang 的,有整個團隊,所以 es 公司干脆把 logstash-forwarder 的開發工作也合并到同一個 golang 團隊來搞,于是新的項目就叫 filebeat 了。
簡單來講,filebeat 就是日志采集的進程 agent,負責采集應用日志文件。
對于我上面的這個問題,之所以有大量的(deleted),未釋放文件句柄,還有個背景,就是由于磁盤空間非常有限,臨時加了任務,每小時刪除12小時前的日志,換句話說,定時任務會自動刪除此時 filebeat 正在打開著的一些文件,于是這些文件,就變為了未釋放的文件,因此實際文件刪除了,但空間未被釋放。
解決方案1:
為了迅速釋放空間占用,最直接的方法,就是 kill -9 filebeat 進程,此時空間會釋放。但并不是從根本解決,定時任務還會刪除這些,filebeat 打開的文件,導致空間滿。
解決方案2: filebeat 的配置文件 filebeat.yml,其實有兩個參數:
即如果一個文件在某個時間段內沒有發生過更新,則關閉監控的文件handle,默認1小時。
即當文件名稱有變化時,包括改名和刪除,會自動關閉一個文件。
這兩個參數結合起來,根據應用需求,一個文件30分鐘內不更新,則需要關閉句柄,文件改名或刪除,需要關閉句柄
?
close_older: 30m force_close_files: true
可以滿足,filebeat 采集日志,以及定時刪除歷史文件,這兩個任務的基本要求。
關于“Linux刪除了文件后空間沒有釋放原因及如何解決”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Linux刪除了文件后空間沒有釋放原因及如何解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。