Linux提示“No space left on device”解决办法

首先判断是不是磁盘空间满了、如果是磁盘空间满了就寻找占用空间比较多的的log之类的tmp文件删除就好了。
可以使用以下命令查看占用情况:

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       41152832 9942528  29096820  26% /
devtmpfs          933584       0    933584   0% /dev
tmpfs             941040       0    941040   0% /dev/shm
tmpfs             941040     676    940364   1% /run
tmpfs             941040       0    941040   0% /sys/fs/cgroup
/dev/vdb1       13285488 4690464   7913504  38% /home
tmpfs             188208       0    188208   0% /run/user/0
tmpfs             188208       0    188208   0% /run/user/1004

如果不是空间满了那就有可能是因为小文件过多造成inodes占满了。
使用以下命令查看

# df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/vda1      2621440 201362 2420078    8% /
devtmpfs        233396    336  233060    1% /dev
tmpfs           235260      1  235259    1% /dev/shm
tmpfs           235260    473  234787    1% /run
tmpfs           235260     16  235244    1% /sys/fs/cgroup
/dev/vdb1       851968  46668  805300    6% /home
tmpfs           235260      1  235259    1% /run/user/0
tmpfs           235260      1  235259    1% /run/user/1004

这种情况可以使用以下命令查看哪个目录下的小文件太多:

for i in /var/*; do echo $i; find $i | wc -l; done

可能原因1:

/var/spool/postfix/maildrop目录下小文件过多。
由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送Cron所有者,
而由于客户环境中的sendmail和postfix没有正常运行,导致邮件发送不成功,全部小文件堆积在了maildrop目录
下面,而且没有自动清理转换的机制,所以此目录堆积了大量的文件 .
进入/var/spool/postfix/maildrop路径,使用ls | xargs -n 10 rm -rf将文件清楚,问题得以恢复。

根本解决方法:

vi /etc/crontab
将MAILTO=root替换MAILTO="",然后service crond restart即可。如不行crontab -e 第一行增加MAILTO=""