一、什么是inodes
直白说,就是文件/文件夹总数限制。一般VPS限制为最大是1,000,000,具体还要看主机商的设置
也有不少虚拟主机管理面板中可以看到,比如CPanel。
为什么会研究inodes:
前段时间我的vps莫名奇妙的,mysql数据读不出来,但只是wordpress列表分类无法读取,一直显示”No Categories”
开始不知道原因,删除部分日志后正常了,但是过不了几分钟又无法读取了,于是开始找原因。
其中一次分析的时候,把mysql停止再启动发现,无法启动,提示 “touch: cannot touch `/var/lock/subsys/mysqld’: Disk quota exceeded”
google找到的解决办法有人说是空间满了换个地方存储,但是我空间明显只用了50%不到,所以不是空间问题,
后来发现时inodes满了,运行”df -i”命令可以查看当前inodes使用情况。
二、inodes达到上限会出现的问题?
这个问题影响比较大,先不说ftp上传不了,
首先还是日志文件,无法新建日志文件会导致程序无法启动,或者运行中挂起,就会出现我上面提到的mysql问题
不过没明白为什么只影响到分类的读取却没影响到文章的读取。
linux下日志是很重要的块,日志无法创建和更新将会影响很多程序的正常运行。
三、如何提高inodes上限
1、连续vps厂商客服来提高上限
一般的厂商默认安装的系统硬件上的配置一般都是给的低配,也就是说在免费配额内都还能提升。
但也有上限,可以提交一个ticket问清楚这些设置
2、确实已达上限,但是又不想升级package,自己清理文件的办法
主要是用到几个常见find、rm、grep、xargs
举例:
(1)删除当前目录下的所有空目录:
cd /tmp find ./ -type d -empty -delete
(2)查找当前目录下所有文件名为 *.tmp 的文件,直接删除 (慎用)
cd /tmp find ./ -name "*.tmp" -type f -exec rm -f {} \;
(3)查找当前目录下所有文件内容,凡是包含指定字符串的文件,直接删除 (慎用)
find ./ -type f -exec grep -li “file not found” {} \;|xargs rm
3、查看各个目录分别占了多少inodes
cd / #可以切换到任意你想查看的目录 echo "Detailed Inode usage for: $(pwd)" ; for d in `find -maxdepth 1 -type d |cut -d\/ -f2 |grep -xv . |sort`; do c=$(find $d |wc -l) ; printf "$c\t\t- $d\n" ; done ; printf "Total: \t\t$(find $(pwd) | wc -l)\n"
暂无评论