双十一到了,又有一批服务器需要续费,最近在折腾的时候发现一台服务器的一个奇葩现象,就是磁盘空间还有27G的剩余,但是无法上传任何文件,错误提示都是磁盘空间已满。
故障发生在一台论坛附件服务器上,由于使用的rsync自动同步,最近发现自动同步老是停止,看错误提示都是空间已满,以前就发生过,随便删除了一些解决,今天问题重现,但是看磁盘空间显示还有27G的剩余,为什么会提示满了呢,我直接ftp上次也不行,可以肯定不是rsync的问题(还检查了老半天rsync设置……)
如下图:df -a查看磁盘空间,才用了72%
我是100G硬盘,大概还剩余27G的空间,空间大小上是完全够用的了,不应该出现磁盘空间满的情况啊。
后来查询了一些资料,发现是inode使用满了,在linux系统下,inode使用满了一样会提示磁盘空间已满。
如下图:df -i 查询了一下,inode使用率100%,剩余可用的完成变成0了。
问题找到,inode是什么可以自行搜索,简单的来说,就相当于磁盘的索引文件,由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件。
什么情况下会造成inode用光使用100%
大量的小文件和大量的单个文件会快速消耗inode,这个其实很好理解,比如一个空文件夹、或者没有任何内容的文本,占用才空间是0kb,但是会消耗inode。
由于discuz程序的附件存放都是每天来存放,一年就会生成300多个文件夹,同时每个文件夹中又有大量的图片,一些缩略图和缓存文件会生成大量的目录和小文件。
第二天再次核查后发现是计划任务日志问题,产生了大概1000万个小文件,清除后彻底解决
具体请参考:linux系统清除/var/spool/clientmqueue下大量文件方法
inode占用100%怎么处理-inode磁盘空间满的解决方法
1、删除大量空文件夹和小文件
查找分析命令:
for i in /www.tuxingzhan.com/data/attachment/forum/*; do echo $i; find $i |wc -l|sort -nr; done
执行后可以看到每个目录里面的文件数,选择数据多的文件夹继续一步步查找,看是否可以删除。
/www.tuxingzhan.com/data/attachment/forum替换成你想要查找的任何一个目录即可。
2、升级磁盘空间:
论坛附件图片当然都是不能随便删除的,那就只能升级磁盘空间了,升级磁盘空间当然是可行的,懒得找的话就花钱啦。
我删除了半天,只腾出了19000的inode空间,过不了多久估计就又挂了,只能花钱升级空间了,论坛图片太多木有办法。