Inode占满导致No space left on device解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的使用情况。


扩展:

查看blockinode的大小

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

 

 

查看blockinode的总的数量(一般是block大于inode数量)

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







以上是关于Inode占满导致No space left on device解决的主要内容,如果未能解决你的问题,请参考以下文章

生产环境下案例 No space left on device (inode使用满的情况)

linux no space left on device的解决的方法(iNode满导致)

No space left on device

No space left on device

inode问题之No space left on device!

如何解决linux报No space left on device错误