• HOME
  • DOCS
  • WTF
  • TECH
  • LIFE
  • PAGES
    • ARCHIVE
    • TAGS
    • ABOUT
    • FRIENDS
    • RSS
  • TOOLS
    • GEO
    • RANDOM()
    • GOO.GL
    • CSS HEART
Aj's Blog

记录时间溜走的瞬间和折腾过的那些事

如何解决linux vps inodes上限问题
2012-03-11 @ TECH cannot touch /var/lock/subsys/mysqlddf -iDisk quota exceededfind grep xargsinodeslinuxmysqlNo Categoriesvpswordpress

一、什么是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"
下一篇:   wordpress文件丢失如何修复
上一篇:   FORM表单中onclick()、submit()与onsubmit()的问题
暂无评论

Cancel reply