快捷搜索:   服务器  PHP  安全  IIS  linux 安全

VPS 提示Disk quota exceeded实际是inodes满了的解决办法

现在很多VPS主机为了整台母机的性能,都会限制Inodes数量,Inodes是文件索引数的意思,意思就是你这台VPS可以创建多少个文件、文件夹,比如这个数量限制为400,000就是说,你的VPS只能存在40万个文件,超了的话就无法再写入任何文件,会提示Disk quota exceeded。这个时候你用df -h查看你的空间剩余量可能还很大。inodes满了的话,会造成很多影响,比如FTP传不上去文件,MYSQL一直报错,网站日志无法写入等等。
这种情况在国内用户使用国外主机的时候比较容易出现,因为国外程序很少像国内CMS一样要生成一堆的静态HTML文件和生成一堆的缓存文件,因此老外一般对这个inodes设置值都是比较低的。

ssh下命令:
#df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/simfs            600000  600000       0  100% /
这里可以看到IUSE已经到100%,用满了文件数量的配额,这个时候再也写不进去任何文件了,网站就会出问题了。
这个一般都是可以免费申请提升数量的,很多国外VPS商也是可以商量的,主要还是靠沟通
方法就是发TICKET
标题:My VPS inodes was full

内容:Hello,My VPS inodes was full,Could you please increase the inode for my vps, thanks!Please increase the inode to 8 millions for my vps, thanks!
Below is the df -i result:
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/simfs            600000  600000       0  100% /VPS ID: 3******
VPS IP Address: 184.******

红色字体根据实际情况更改


但是需要注意不是每个VPS商都会同意给你增加,因此如果遇到不给增加的情况,那就只能自己来查下到底是哪些文件占用了,进行适当清理。

可以用以下命令查下


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

(如果确定是某个目录下面,则/转换为该目录绝对路径,如/var/spool,则使用for i in /var/spool/*; do echo $i; find $i | wc -l; done)


blob.png


解决方法:删除无用的临时文件,释放inode。

先查找发现 /tmp 目录,删除类似sess_xxxxx的 session临时文件。

ls -lt /tmp | wc -l


进入/tmp目录,执行find -exec命令

find /tmp -type f -exec rm {} \;

如果使用rm *,有可能因为文件数量太多而出现Argument list too long错误,关于Argument list too long错误可以参考《linux Argument list too long错误解决方法》


除了/tmp的临时文件外,0字节的文件也会占用inode,应该也释放。

遍历寻找0字节的文件,并删除。

find /home -type f -size 0 -exec rm {} \;



您可能还会对下面的文章感兴趣: