红联Linux门户
Linux帮助

linux的inode暴增

发布时间:2016-02-21 10:15:10来源:linux网站作者:skate

今天刚到公司,接收到一个报警短信,一个数据库的inode使用率达到99%

[root@DBtmp ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda8              20G  7.5G   11G  41% /
/dev/sda1              92M   14M   74M  16% /boot
none                   12G     0   12G   0% /dev/shm
/dev/sda2             1.3T  1.2T   47G  97% /oracle
/dev/sda7             9.7G   56M  9.1G   1% /tmp
/dev/sda5              20G  303M   18G   2% /usr/local
/dev/sda6             9.7G  7.9G  1.3G  87% /var

[root@DBtmp ~]# df -hi
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda8               2.5M    305K    2.2M   13% /
/dev/sda1                24K      39     24K    1% /boot
none                    3.0M       1    3.0M    1% /dev/shm
/dev/sda2               165M     55K    165M    1% /oracle
/dev/sda7               1.3M      46    1.3M    1% /tmp
/dev/sda5               2.5M    4.0K    2.5M    1% /usr/local
/dev/sda6               1.3M    1.2M     25K   99% /var
[root@DBtmp ~]#

可以看到磁盘空间还有1.3G,而inode的使用率已经达到99%,推测是有很多小文件,导致把inode都使用完了。


查看具体什么文件占用这么多的空间:
[root@DBtmp ~]# du -sh /var/spool/*
20K     /var/spool/anacron
20K     /var/spool/at
4.9G    /var/spool/clientmqueue
20K     /var/spool/cron
16K     /var/spool/cups
32K     /var/spool/exim
24K     /var/spool/fax
8.0K    /var/spool/imap
8.0K    /var/spool/lpd
2.8G    /var/spool/mail
8.0K    /var/spool/mailman
8.0K    /var/spool/mqueue
64K     /var/spool/news
120K    /var/spool/postfix
8.0K    /var/spool/repackage
8.0K    /var/spool/rwho
8.0K    /var/spool/samba
8.0K    /var/spool/squid
16K     /var/spool/squirrelmail
8.0K    /var/spool/up2date
8.0K    /var/spool/uucp
8.0K    /var/spool/uucppublic
8.0K    /var/spool/vbox
24K     /var/spool/voice
[root@DBtmp ~]#

可以看到“/var/spool/clientmqueue”和“/var/spool/mail”占用的空间最大

/var/spool/mail:
每个用户的具体邮件

/var/spool/clientmqueue:
文件变大的原因:系统启用cron功能,而cron的程序又有输出内容,这内容通过sendmail以邮件的形式发送给cron用户;首先把邮件放到这个目录下,然后等待MTA(mail transfer agent)把这里的邮件迁移到“/var/spool/mqueue”里,然后在发送到真正的目的地,目录“/var/spool/clientmqueue”变大的原因就是MTA没有及时处理这个目录下的邮件。


解决方法:
1.把cron程序的输出都重定向到其他地方"> /dev/null 2>&1"
2.或者定期删除clientmqueue目录下的邮件,如下:
#for rm /var/spool/clientmqueue/*
08      02       *       *       *      ls /var/spool/clientmqueue | xargs rm -f  > /dev/null 2>&1

临时清除/var/spool/clientmqueue/目录下的文件:
[root@DBtmp ~]# cd /var/spool/clientmqueue
[root@DBtmp ~]# rm -rf *
如果文件太多,占用空间太大,用上面命令删除慢的话,就执行下面的命令:
[root@DBtmp ~]# cd /var/spool/clientmqueue
[root@DBtmp ~]# ls | xargs rm -f


本文永久更新地址:http://www.linuxdiyf.com/linux/18250.html