磁盤空間耗盡(deleted)

linux系統中,使用rm刪除某個大文件,,但如果在刪除之前有進程已經打開該文件,卻沒有關閉這個的句柄,那麼linux內核還是不會釋放該文件的磁盤空間,最後造成磁盤空間佔用100%,因爲沒有磁盤提供讀寫,使系統無法正常運行。


使用 du 和 df 查看磁盤空間時,兩個結果不匹配

df -h    顯示磁盤使用100%

du -sh *     查看個目錄佔用磁盤空間卻很小


遇到這種情況基本斷定,某些打文件被某些進程佔用,導致內核不能釋放空間,不能更新磁盤顯示,但是磁盤目錄又佔用。顯示不一致。因爲文件刪除後,而佔用該文件的進程沒有被關閉,造成內核無法回收這些文件佔用的空間。


解決步驟:

df -h    查看磁盤分區使用情況

du -sh *    查看系統目錄和文件磁盤使用情況

lsof -n |grep deleted 列出已刪除文件的磁盤讀寫操作進程,這類操作是無效的。

gearmand  22377        gearmand    3w      REG    253,1 32753639424  201505632 /var/log/gearmand/gearmand.log (deleted)
gearmand  22377 22413  gearmand    3w      REG    253,1 32753639424  201505632 /var/log/gearmand/gearmand.log (deleted)
gearmand  22377 22414  gearmand    3w      REG    253,1 32753639424  201505632 /var/log/gearmand/gearmand.log (deleted)
gearmand  22377 22415  gearmand    3w      REG    253,1 32753639424  201505632 /var/log/gearmand/gearmand.log (deleted)

kill pid    殺死佔用被刪除文件的進程(殺死該進程前,最好先關閉相關服務,一面服務發生錯誤)。


如果在mysql正常運行的情況下,使用rm刪除對應的表文件,就會出現這種情況,此時重啓mysql即可!(有博友說登陸mysql,執行flush  tables也可以,沒有試過!)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章