ufs文件系统下inode耗尽导致业务进程重启失败
一次业务升级后,发现生产系统上的业务进程UPRG无法启动,日志里面报错:can not create UPRG.log,但是观察/logs目录剩余空间还有很多。尝试直接在/logs下touch文件也失败,也是报can not create file。
第一反应是/logs目录的权限是否被人误改了?但很快便发现目录权限正常。
第二反应是磁盘坏了,但想想磁盘是RAID1,不可能两个盘都坏了,而且系统日志里面没有任何磁盘报错。
第三反应是分区表坏了,但如果分区表坏了,应该cd都不能进去。
。。。
最后发现原来是inode耗尽了,用find+xargs狂删一堆日志文件后,业务进程成功启动了。
(以下参考http://blog.chinaunix.net/uid-119039-id-2802580.html)
inode数计算公式:
inode_number=文件系统大小/nbpi
文件系统大小(GB) 缺省的nbpi大小(byte)
≤1 2048
1<fs≤2 4096
2<fs≤3 6144
3<fs≤1023 8192 8K
≥1024(即1T) 1M
我们/logs是64G,这么算下来inode总数是64*1024*1024/8=800万。
也就是说/logs目录下只能创建800多万个文件,而此生产机上新上的一个业务,将每个用户的日志都单独生成一个日志文件,因此导致小文件数目暴涨,在日志清理周期内就耗尽了inode,从而引发问题。
另外,感觉solaris的提示不够人性化,在这种情况下,报:can not create file,它完全可以报:
can not create file due to exhaustion of inode。即使是工作多年的运维,也很难遇到一次生产系统inode耗尽的情况,在业务恢复的紧急时候,还是很抓狂的。
本文出自 “记忆碎片” 博客,请务必保留此出处http://weikle.blog.51cto.com/3324327/1617091
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。