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節點使用率,發現恢復正常。 


免責聲明!

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



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