天天看点

linux No space left on device 问题排查以及解决

1、案例一:

在linux上使用crontab -e 编辑crontab时(crontab -l 可以查看),系统提示:No space left on device。

1)使用df -h 查看磁盘使用情况,

/dev/vda2        36G  3.0G   31G   9% /
tmpfs            16G     0   16G   0% /dev/shm
/dev/vdb        197G   35G  153G  19% /data      

2)使用df -i 查看inode情况,发现/ 已经100%

$ df -i
Filesystem       Inodes IUsed    IFree IUse% Mounted on
/dev/vda2       2359296 70023  2289273    100% /
tmpfs           4110062     1  4110061    1% /dev/shm
/dev/vdb       13107200 42946 13064254    1% /data      

表明,inode已经耗尽,无法创建新的文件。

3)系统排序哪个文件夹占用inode最多:

$ for i in /*; do echo $i; find $i | wc -l; done
/bin
121
/boot
36
/cgroup
137
/data
42937
/dev
633
/etc
1956
...      

进一步,检查/var 目录下面inode占用情况:

$ for i in /var/*; do echo $i; find $i | wc -l; done
/var/cache
139
/var/db
1
/var/empty
2
/var/games
...      

发现,/var/spool/postfix/maildrop 下面有很多文件,直接用rm -rf 删除会跳出root,可以使用# ls | xargs rm -f 来删除。

4)分析原因:系统中cron执行的程序有输出内容(异常),输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件。

5)解决方法:

可以执行 crontab -e

在最开头添加 MAILTO='"' 保存,然后 server crond restart 重启 crond

或者

将crontab里面的命令后面加上> /dev/null 2>&1

2、案例二:

 when you create a new directory or file , system will say : No space left on device

创建文件或者目录时,提示No space left on device。df -h 查看磁盘使用情况时发现磁盘容量还很大,但是使用df -i 发现inode已经耗尽。解决方法同上。

继续阅读