linux有磁盤空間卻顯示不足 linux中inode使用率過高處理辦法 linux中inode使用率過高處理辦法

linux中inode使用率過高處理辦法

前幾天收到監控告警,說Inode節點空間不足,之前沒處理過這種問題,所以記錄一下處理過程,便於以後查閱。

Inode使用率高並不會影響系統正常運行和新文件的創建,但是當使用率達到100%的時候,此時雖然磁盤還有空間,也不能創建新的文件了。

這是因爲,文件在存儲到磁盤中的時候,會同時用到inode和block,inode保存文件屬性信息,包括文件名,大小,權限,時間,存儲位置等,而block中則保存實際的數據,

所以如果inode用完的話,即使磁盤還有空間也無法創建新文件了。

發生這種情況的原因一般是系統中小文件過多,佔用了大量的inode節點,找到對應目錄,刪除一些文件就可以了。

說明:以下執行結果並不是真實告警值,只是操作舉例。

1.查看磁盤分區和inode使用情況

df -h #查看磁盤分區使用情況
df -ih #查看inode節點使用情況

2.查找並刪除臨時文件

ll -rt /tmp | wc -l
find /tmp -type f -exec rm {} \;

3.刪除0字節的文件

find /home -type f -size 0 -exec rm {} \;

4.查找包含大量文件的目錄並刪除

for i in /*; do echo $i; find $i |wc -l; done
for i in /var/*; do echo $i; find $i |wc -l; done

 

大概率在/var目錄下的/var/spool中有大量文件,進入該目錄查看

for i in /var/spool/*; do echo $i; find $i |wc -l; done

 發現 /var/spool/postfix/ 目錄下有大量文件,繼續進入該目錄查看

 說明:/var/spool/postfix/ 下面生成那麼多的文件是因爲crontab定時任務導致的,定時任務執行後發送郵件告知聯繫人,但是發送失敗就會在postfix下生成,所有就產生了這麼多的垃圾文件。

for i in /var/spool/postfix/*; do echo $i; find $i |wc -l; done

 

 可以看到,文件主要集中在/var/spool/postfix/maildrop目錄下,進入該目錄清除即可

 執行rm命令直接刪除,可能會報錯參數列表太長,可以通過一下方式進行刪除

 ls | xargs -n 500 rm -rf #-n表示一次傳遞參數的個數

執行完之後,再次用 df -ih 查看Inode節點使用率,發現恢復正常。 

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