Inode占滿導致No space left on device解決
線上有一臺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的使用情況。
擴展:
查看block和inode的大小
[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
查看block和inode的總的數量(一般是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解決