Linux磁盤空間被未知資源耗盡


在linux中,當我們使用rm在linux上刪除了大文件,但是如果有進程打開了這個大文件,卻沒有關閉這個文件的句柄,那么linux內核還是不會釋放這個文件的磁盤空間,最后造成磁盤空間占用100%,整個系統無法正常運行。這種情況下,通過df和du命令查找的磁盤空間,兩者是無法匹配的,可能df顯示磁盤100%,而du查找目錄的磁盤容量占用卻很小。

遇到這種情況,基本可以斷定是某些大文件被某些程序占用了,並且這些大文件已經被刪除了,但是對應的文件句柄沒有被某些程序關閉,造成內核無法回收這些文件占用的空間。

那么,如何查找那些文件被某些程序占用呢,命令如下

lsof -n | grep deleted
COMMAND     PID      USER   FD      TYPE             DEVICE        SIZE       NODE NAME
dd        31708      higkoo    1w      REG                8,2 5523705856     429590 /data/filetest (deleted)

命令打lsof -n | grep deleted印出所有針對已刪除文件的讀寫操作,這類操作是無效的,也正是磁盤空間莫名消失的根本原因

備注:本人遇到的場景是同事刪除了mysql的表,但是是在shell上執行rm表的文件,而不是通過drop table之類的命令去刪除表的,於是mysql會一直占用這些表文件的句柄,最后造成磁盤空間100%,這種情況下,也不用重啟mysql,只要進入mysql客戶端執行flush tables就行了

 

參考資料 http://hi.baidu.com/higkoo/item/6a478917d1a819debf9042f1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM