各位小伙伴,以下是我的一些處理方法,與大家共享。
今天上傳了一個13kb的文件,提示磁盤已滿,不能上傳。df -h 查了一下,如下圖:
磁盤慢了
由于是開發環境,堆滿了大量的日志沒刪,10g了,于是我刪除了一些很久的日志,8g。奇怪的事情發生了,命令查看磁盤,依然是100%。linux還是跟windows區別挺大的么,windows我們刪除了文件,馬上就有磁盤釋放了。想到的就是刪除的文件并不能釋放出磁盤(當時只是猜測),于是lsof | grep deleted 查了一下。
果斷地把這些進程都kill掉了,哎呦喂,奇跡發生了,df -h 查看:
已經從100%降到了13%。問題解決了,于是找度娘查了下linux刪除的機制,大致如下:
一個文件在文件系統中的存放分為兩個部分:數據部分和指針部分,指針位于文件系統的meta-data中,數據被刪除后(例如我們的日志文件),這個指針就從meta-data中清除了,而數據部分存儲在磁盤中,數據對應的指針從meta-data中清除后,文件數據部分占用的空間就可以被覆蓋并寫入新的內容,之所以出現刪除log文件后,空間還沒釋放,就是因為httpd進程還在一直向這個文件寫入內容,導致雖然刪除了log文件,但文件對應的指針部分由于進程鎖定,并未從meta-data中清除,而由于指針并未被刪除,那么系統內核就認為文件并未被刪除,因此通過df命令查詢空間并未釋放也就不足為奇了。一般說來不會出現刪除文件后空間不釋放的情況,但是也存在例外,比如文件被進程鎖定,或者有進程一直在向這個文件寫數據等等,要理解這個問題,就需要知道Linux下文件的存儲機制和存儲結構。
-
Linux
+關注
關注
87文章
11345瀏覽量
210391 -
WINDOWS
+關注
關注
4文章
3569瀏覽量
89302
發布評論請先 登錄
相關推薦
評論