1. 程式人生 > >磁碟空間被未知資源佔盡分析

磁碟空間被未知資源佔盡分析

一、背景
在Linux中,當我們使用rm在linux上刪除了大檔案,但是如果有程序打開了這個大檔案,卻沒有關閉這個檔案的控制代碼,那麼linux核心還是不會釋放這個檔案的磁碟空間,最後造成磁碟空間佔用100%,整個
系統無法正常執行。這種情況下,通過df和du命令查詢的磁碟空間,兩者是無法匹配的,可能df顯示磁碟100%,而du查詢目錄的磁碟容量佔用卻很小。

二、解決
遇到這種情況,基本可以斷定是某些大檔案被某些程式佔用了,並且這些大檔案已經被刪除了,但是對應的檔案控制代碼沒有被某些程式關閉,造成核心無法收回這些檔案佔用的空間。

那麼,如何查詢那些檔案被某些程式佔用呢:
命令:lsof -n | grep deleted 打印出所有針對已刪除檔案的讀寫操作,這類操作是無效的,也正是磁碟空間莫名消失的根本原因。

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)

解決辦法:
kill -9 PID #只需把程序刪掉就能釋放空間