inode问题故障1例
故障关键字:ext3_dx_add_entry: Directory index full!

线上业务的一台服务器无缘无故突然挂了
让机房帮忙连接显示器后发现报错

http://image.kbnix.com/Blog/monitor_error.jpg

遂让机房重启了

重启后能正常进入系统,查看/var/log/message后,依然发现有这个报错,而且是持续了很久了,看来是没关注好这类型错误

先是马上查看了硬盘的inode数

df -i看,没有异常,inode use采用了14%

再Google一下,说是ext3文件系统单个目录下不能超过32000个节点

然后就查一下到底是哪个目录占用inode过多了

for i in /*; do echo $i; find $i |wc -l; done

这时候在/var目录下卡住了半天不出结果
接着进入/var里面查看一下
先是看了/var下的xdebug目录跟tmp目录,都是空的,没有异常
随手进入了spool目录
ll一看,惊呆了,其他目录都是4096大小的,里面的一个目录clientmqueue是一个天文数字
ll -h一看,1017M的目录。。。我去,这里面隐藏了多少inode
马上Google之,说是计划任务cron由于没有把输出重定向掉,而导致的,cron会把执行的计划任务的输出以mail的形式发给指定的管理员账户,默认是发给root的,然后由于没有安装或者开启sendmail服务,就会把邮件积压在这个目录里面

马上检查crontab,/etc/crontab,/etc/cron.d/*,/var/spool/cron/root,都看了,所有计划任务都是加了重定向>/dev/null 2>&1的

那就奇怪了,怎么没效果呢
马上把目录移除掉rm -rf,rsync –delete,ls | xargs rm -f都好像卡死了一样没效果

果断把它先mv掉,然后重建一个给它,发现cron继续往里面写文件了,看一下内容,都是cron的输出,重启一下crond看看,还是老样子,没效果,继续写

暂时解决办法:
把clientmqueue目录mv掉,不建立目录了,让cron无处可写,然后现在挂在screen里用rsync –delete的方法来删掉mv过的clientmqueue目录,挂了一晚,一直还卡在那,想看看有没在删
ps aux | grep rsync获取pid,然后strace -p pid,看到进程一直在unlink了,这下才放心,确定它是一直在删除的了
df -i再看看,inode use降到了8%了,目前还在删

后续
删了1天半,终于删完了
后面把sendmail服务删掉就没有再往clientmqueue写文件了

yum remove sendmail

EXT3_DX_ADD_ENTRY: DIRECTORY INDEX FULL!的更多相关文章

  1. [原][openstack-pike][controller node][issue-3][horizon] dashboard show internal error 500 Cannot serve directory /var/www/html

    问题点: 安装完pike后发现只能使用 ip:80 登录到http的主页面 不能使用 http://controller_ip:80/dashboard 登录openstack登录页面.如下图 重启h ...

  2. Python3.5 day4作业:对员工信息文件,实现增删改查操作。

    需求: 1.可进行模糊查询,语法至少支持下面3种: 1.select name,age from staff_table where age > 22 2.select  * from staf ...

  3. [转]Part1: Understanding !PTE , Part 1: Let’s get physical

    http://blogs.msdn.com/b/ntdebugging/archive/2010/02/05/understanding-pte-part-1-let-s-get-physical.a ...

  4. mysql5.5手册读书日记(3)

    <?php /* MySQL_5.5中文参考手册 587开始 与GROUP BY子句同时使用的函数和修改程序 12.10.1. GROUP BY(聚合)函数 12.10.2. GROUP BY修 ...

  5. .htaccess文件的详解以及404页面的设置

    打开记事本,写入以下代码: ErrorDocument 404 /404.html保存成.htaccess文件上传到网站的根目录. /404.html是目录名和文件名,可以改成自己的名字.QUOTE: ...

  6. nginx 跨域。。。掉坑里了,小心

    今天公司产品一个功能突然挂掉了...向客户演示之前出现了,手机端显示不能获取下载资源,可是急坏了一票人.. 通过手机端,调查服务器地址调用了http:/2342342.domain.hostname. ...

  7. 开发DZ插件教程

    插件制作的基本思路是:(初学者适用)1.形成插件思路2.制作插件界面3.构架程序模块4.搭建存储数据5.填充功能语句6.检查应用错误7.完善插件功能 前言:为方便互联网数万Discuz!爱好者,更加深 ...

  8. 13.1.17 CREATE TABLE Syntax

    13.1.17 CREATE TABLE Syntax 13.1.17.1 CREATE TABLE ... LIKE Syntax 13.1.17.2 CREATE TABLE ... SELECT ...

  9. Nginx 配置指令的执行顺序(六)

    前面我们在 (五) 中提到,在一个 location 中使用 content 阶段指令时,通常情况下就是对应的 Nginx 模块注册该 location 中的“内容处理程序”.那么当一个 locati ...

随机推荐

  1. SQL Server 2008 定时作业的制定(SQL2005参考此方法) 转

    --  Author : htl258(Tony)--  Date   : 2010-04-29 19:07:45--  Version:Microsoft SQL Server 2008 (RTM) ...

  2. 获取hadoop的源码和通过eclipse关联hadoop的源码

    一.获取hadoop的源码 首先通过官网下载hadoop-2.5.2-src.tar.gz的软件包,下载好之后解压发现出现了一些错误,无法解压缩, 因此有部分源码我们无法解压 ,因此在这里我讲述一下如 ...

  3. keil(持续更新)

    1函数格式提示 2  cording时有警告和错误提示 3 类的成员 提示

  4. hdu 2058

    PS:TLE了N次...虽然结果对了...后来看了公式才知道要枚举项数才行... 代码: #include "stdio.h"#include "math.h" ...

  5. 0816 1459 json & pickle ,目录导入,目录规范

    ---恢复内容开始--- 1.json & pickle 磁盘上只能存储字符串或二进制数据,直接存字典.列表.元组等是存不了的,所以需要把各种数据转换成字符串格式,然后再存到硬盘. 直接将一个 ...

  6. PP

  7. UITouch的用法

    UITouch一般无法直接获取,是通过UIView的touchesBegan等函数获得. //这四个方法是UIResponder中得方法 // Generally, all responders wh ...

  8. C++ Frequently asking question

    http://stackoverflow.com/questions/14295884/c-new-empty-project-how-to-create-it-add-main-method-and ...

  9. BZOJ 1912 巡逻

    重赋边权. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...

  10. VBS_For_next

    指定循环次数,使用计数器重复运行语句,语法结构如下: 1 2 3 4 5 For counter = start To end [Step step]     [statements]     [Ex ...