今天在linux系统创建文件时碰到“No space left on device” 错误,但是用命令“df -lh”查看发现空闲空间还有很多。所以可以排除空间已满的情况。那么导致文件生成失败还有另一个原因,就是文件索引节点inode已满。
查看inodes使用情况用命令“df -ih”,例如:
root@ubuntu:# df -ih Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/ubuntu-root 464K 464K 0K 100% / udev 123K 421 122K 1% /dev tmpfs 125K 309 125K 1% /run none 125K 4 125K 1% /run/lock none 125K 1 125K 1% /run/shm /dev/vda1 122K 227 122K 1% /boot
果然inodes使用已经是100%了。
解决办法,可以先逐一找到哪个目录使用比较多,然后删除。
登录 SSH,运行下面的命令分析根目录下每个目录下面有多少个文件,命令类似如下。
for i in /*; do echo $i; find $i | wc -l; done
比如最好我找到是apache下的日志文件创建太多的原因,删除日志后就好了。
for i in /var/log/*; do echo $i; find $i | wc -l; done