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已经耗尽。解决方法同上。