您好,登錄后才能下訂單哦!
小編給大家分享一下Linux怎么處理文件已刪除但空間不釋放,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
問題產生背景
一個業務系統的服務器監控系統發來預警通知,磁盤空間使用率已經達到90%了,然后就登陸服務器搜索了下比較大的日志文件,全部都刪除了(坑在此處埋上了),磁盤空間釋放了一些,當時也是疏忽,沒有確認查出并刪除的文件大小的空間是否已經全部釋放。沒過幾天,服務器又被預警了,比較納悶,日志怎么增長的這么快,排查之后發現,原來是上次操作刪除文件后,有個較大的文件空間沒有釋放導致的。
問題還原及解決辦法
找到占用空間較大的數據文件
#查看磁盤空間使用情況 $ df -h #先查詢/tmp目錄下占用空間較大的文件 $ du -sh /tmp/*|sort -nr|head -3 #在查詢/home目錄下占用空間較大的文件 $ du -sh /home/*|sort -nr|head -3 # 找到文件后,進行刪除即可,刪除后,使用 df -h進行查看是否已經釋放
說明下為啥在找文件的時候,先找了/tmp/*目錄下的文件
Linux系統刪除策略:Linux沒有回收站功能,所以服務去會將要刪除的文件都會先移動到系統/tmp目錄下,然后定期清除/tmp目錄下的數據。
有好多服務器在安裝系統的時候沒有給/tmp進行單獨分區,所以有可能是/tmp目錄下的數據占用了很大一部分空間,可以先清除掉/tmp目錄下的文件來釋放空間。
本次出現刪除文件不釋放空間,是在刪除/home目錄空間下的一個dubbo服務日志文件時發生的。
刪除文件不釋放空間原因
一般情況下不會出現刪除文件后空間不釋放的情況,但在這個文件被進程鎖住或者是有進程一直往這個文件寫數據等情況下,還是會出現的。了解Linux下文件的存儲機制和存儲結構的原理就會理解這個問題了。
文件存在Linux系統中分為兩部分:指針部分和數據部分。
指針部分:存在文件系統的meta-data中,我們執行rm命令將數據刪除后,這個指針就從meta-data中被清除掉了。
數據部分:數據就是直接存儲在磁盤上了,當指針被從meta-data中清除后,數據部分占用的空間就可以被覆蓋并寫入新的內容。
之所以出現刪除dubbo日志文件后,空間還不釋放,就是由于dubbo進程還在一直往這個文件里面寫數據,在刪除文件的時候,指針并沒有被從meta-data中清除掉,所以日志文件還是占用著空間。
如何找到此類文件
可以通過lsof命令獲取已經刪除但是還被程序占用的文件列表:
lsof | grep delete
如何釋放此類空間
解決這一類問題釋放空間的方法有很多種:重啟占用的進程、重啟操作系統、通過命令。非生產環境采用前兩種方式最方便了,但是對于生產環境,還是盡量采用命令的方式,其實命令也很簡單:
echo " " >/home/dubbo/log/xxx.log
通過這種方式,會里面釋放掉占用的磁盤空間,也不影響進程繼續執行。
以上是“Linux怎么處理文件已刪除但空間不釋放”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。