1. 程式人生 > >徹底解決Linux索引節點(inode)用滿導致故障的方法

徹底解決Linux索引節點(inode)用滿導致故障的方法

今天伺服器監控突然曝出了如下的錯誤:

vfs.fs.inode[/,pfree]):5 %
登入到伺服器上df -i
一看/路徑下96%,而資料目錄/data下才用了30%,故初步判斷生成的資料量正常,可能是一些系統產生的檔案把根路徑佔滿了

於是乎在執行以下命令,檢視根路徑下各個資料夾的檔案數

for i in /*; do echo $i; find $i |wc -l|sort -nr; done 
數檔案數超過10W的有兩個/data(我們的資料分割槽,確認資料量正常)和/var

/data 13W+檔案

/var下70W+檔案

樓主linux水平有限,於是把/var下的目錄一個個的執行了上面的命令

for i in /var/cache; do echo $i; find $i |wc -l|sort -nr; done 
for i in /var/db; do echo $i; find $i |wc -l|sort -nr; done 
........
重點來了,當執行到下面的時候
for i in /var/spool/; do echo $i; find $i |wc -l|sort -nr; done 
資料夾裡有70W+檔案

於是重複上述步驟,終於找到了罪魁禍首

for i in /var/spool/postfix/maildrop/; do echo $i; find $i |wc -l|sort -nr; done 
/var/spool/postfix/maildrop/下有67W+檔案


樓主百度了一把,發現了這篇文章:http://www.shangxueba.com/jingyan/121368.html

於是乎執行rm -rf ./* 竟然報錯


只能來大招了。

find . -name "*" | xargs rm -rf 
10S後,成功收到報警解除的郵件
勝利處理完困擾我好幾天的問題