1. 程式人生 > >Inode占滿導致No space left on device解決

Inode占滿導致No space left on device解決

inode占滿

① 發現問題

線上有一臺web服務器磁盤檢測告警了,提示空間不足,登到服務器查看

技術分享圖片

touch:cannot touch `furm.html‘: No space left on device


② 分析問題

使用df -h命令查看發現

技術分享圖片

/data/web分區只使用了2%,創建文件卻提示磁盤空間不足,按道理不會出現這種情況的。懷疑是inode耗盡導致。

分析導致的原因:
使用df –i查看發現inode已經耗盡,則系統上將不能創建文件

技術分享圖片

查找原因並解決

/data/web是線上業務數據目錄,其中有個程序產生大量的小文件造成的。可通過下面的命令找出占用空間最多的


③ 解決問題

文件或目錄:

find / -type d -size +10M

此命令作用是找出大小大於10M的目錄(目錄大小越大,表示目錄下的文件越多)。

大量的小文件分布在大量的目錄下

cd /

find */ ! -type l | cut -d / -f 1 | uniq -c

此命令作用是找出目錄下文件總數,可能需要執行多次。比如上面的命令找出了/data目錄下存在大量的小文件,但/data/目錄還有很多目錄,這時候我們還需要繼續執行:

cd /data

find */ ! -type l | cut -d / -f 1 | uniq -c

直到找出具體的目錄。

/data/web下有超多的文件 ls 半天沒反應

rm -rf * 會自動跳出root,用xargs來解決。

# ls | xargs rm –f

此時用df –i命令查看發現正常了,創建文件也不會出現錯誤


④ 總結問題

inode占用進行監控,並且收到inode告警時應及時使用以上方法來定位問題,並反饋給相應人員從根源解決。以後遇到類似的問題要註意,用df -i 檢查inode的使用情況。


擴展:

查看blockinode的大小

[root@bier ~]# dumpe2fs /dev/sdb1 |grep -i"Block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               1024
 
[root@bier ~]# dumpe2fs /dev/sdb1 |grep -i"Inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:               128

查看blockinode的總的數量(一般是block大於inode數量)

[root@bier ~]# dumpe2fs /dev/sdb1 |grep"Block count"
dumpe2fs 1.41.12 (17-May-2010)
Block count:              524272
 
[root@bier ~]# dumpe2fs /dev/sdb1 |grep"Inode count"
dumpe2fs 1.41.12 (17-May-2010)
Inode count:              131072







Inode占滿導致No space left on device解決