Total Pageviews

Friday, 6 October 2017

Linux索引节点(Inode)用满导致的一次故障

一、发现问题
下午在访问网站的时候,发现网站速度很慢,猜想可能服务器有些问题。按照以前的情况,很有可能是服务器空间又被塞满了,通过命令df -h查看,发现还有剩余。
重启LNMP服务,发现失败了。于是想通过远程桌面登录进去看看,
发现无法运行vncserver,于是想测试一下,自己新建一个passwd文件
居然提示没有空间。有点奇怪了,前面明明显示还有剩余空间啊。
二、分析问题
后来用df -i查看了一下/分区的索引节点(inode),发现已经用满(已用=100%),导致系统无法创建新目录和文件.

Inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是 Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。 inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。
而这台服务器的Block虽然还有剩余,但inode已经用满,因此在创建新目录或文件时,系统提示磁盘空间不足
三、查找原因
由于小站使用了"DB Cache Reloaded Fix",并开启 了"WordPress object-cache 缓存",这大大提升了小站的缓存效果。但DB Cache Reloaded Fix可以定期清理过期文件,WordPress object-cache 似乎没有这个功能,所以这会生成很多的缓存文件,从而导致系统中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。
四、解决方案
删除缓存目录中的过期文件,释放出系统的一部分inode,效果如下:
重启LNMP服务后,一切正常,问题得以解决。
参考文档:http://www.cnblogs.com/shapherd/archive/2012/02/07/2341638.html

http://blog.s135.com/post/295/

No comments:

Post a Comment