Redhat无法创建目录、文件,报No space left on device。
1、问题现象
如下图所示,一台服务器在还有空间的情况下,无法创建目录,查看系统日志发现已没有写入日志信息。
2、问题分析
系统中存在剩余空间,但还是无法创建文件与文件夹,可能是系统出现问题或硬盘有损坏。
所以到BMC口查看系统event,发现没有告警,这只能说明可能是系统出现了问题或者是该分区可有问题。为了验证分区问题,试着在“/”目录下创建文件,发现是OK的。如下图所示:
(1)为了数据的安全性,先把该机器的数据备份到其它机器。
(2)为了验证系统是否有问题,Reboot了系统(在确保该机器不再使用的情况下再重启,避免无法启动风险),但发现Root用户进入不了系统。报错如下图:
郁闷中。。。。
(3)把机器强制关机->给机器放电->再上电。
(4)机器自检过后终于进入系统。
此时发现还是一样,无法创建文件、文件夹。
(5)到这里,只能说明该分区有问题了,是什么问题呢?查看一下 inode吧,去,节点使用100%了。
(6)至此,就找到了问题,就是inode写满了。
3、解决方法
为了试机器很快的再使用起来,找小文件目录,删除。
删除部分文件后,可以创建文件了。但这是临时解决写入问题,如何根治,可以依据自己使用服务器的实际情况确定如何解决。
3.1 以下是建议方法
(1)读出/目录下文件最多的目录
for i in /*; do echo $i; find $i |wc -l|sort -nr; done
(2)找到相应文件夹后,继续找,找到后删除。
3.2 另外方法
治本的方法是在cron 任务中的后面加上 > /dev/null 2>&1