天天看點

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

直到找出具體的目錄。

在/data/web下有超多的檔案 ls 半天沒反應

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

# ls | xargs rm –f

此時用df –i指令檢視發現正常了,建立檔案也不會出現錯誤

④ 總結問題

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

擴充:

檢視block和inode的大小

1

2

3

4

5

6

7

<code>[root@bier ~]</code><code># dumpe2fs /dev/sdb1 |grep -i"Block size"</code>

<code>dumpe2fs 1.41.12 (17-May-2010)</code>

<code>Block size:               1024</code>

<code> </code> 

<code>[root@bier ~]</code><code># dumpe2fs /dev/sdb1 |grep -i"Inode size"</code>

<code>Inode size:               128</code>

檢視block和inode的總的數量(一般是block大于inode數量)

<code>[root@bier ~]</code><code># dumpe2fs /dev/sdb1 |grep"Block count"</code>

<code>Block count:              524272</code>

<code>[root@bier ~]</code><code># dumpe2fs /dev/sdb1 |grep"Inode count"</code>

<code>Inode count:              131072</code>

本文轉自 Mr_sheng 51CTO部落格,原文連結:http://blog.51cto.com/sf1314/2052937