var分区不⾜%15问题处理
现象 描述:
凌晨收到值班同事电话,⼀台DB服务器var分区报警,显⽰磁盘空间(inodes)不⾜%15,具体告警内容如下:
Free inodes is less than 15% on volume /var
问 题分析 :
收到电话后第⼀印象可能是由于/var/log下的⽇志、/var/spool/clientmqueue导致var分区占⽤空间较⼤。
处理步 骤 :
登陆服务器,通过df -h 查看磁盘空间使⽤情况。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda7 6.0G 493M 5.2G 9% /
tmpfs 32G 0 32G 0% /dev/shm
/dev/sda1 124M 57M 62M 49% /boot
/dev/sda8 1.1T 84G 929G 9% /home
/dev/sda2 6.0G 2.1G 3.6G 37% /usr
/dev/sda3 4.0G 1.7G 2.2G 44% /var
发现磁盘使⽤空间还有很多,为什么zabbix监控会报出var磁盘分区不⾜%15的使⽤情况呢?告警内容已经提⽰是inodes不⾜,下⾯就给出答案:
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda7 393216 9179 384037 3% /
tmpfs 8240103 1 8240102 1% /dev/shm
/dev/sda1 32768 46 32722 1% /boot
/dev/sda8 71000064 12127 70987937 1% /home
/dev/sda2 393216 87909 305307 23% /usr
/dev/sda3 262144 222981 39163 86% /var
这⾥我们看到var分区的inode使⽤情况已经不⾜%15了,因此我们可以明⽩为什么会收到那条告警信息了。了解了为什么,那么就具体寻var下⾯哪个⽬录较⼤、零碎⽂件较多,从⽽清理分区空间。
通过cd /var/ ,通过du -hs * 发现磁盘空间最⼤的⽂件来⾃/var/spool⽬录,第⼀印象可能是 /var/spool /clientmqueue,但进⼊发现实际占⽤较⼤空间的是/var/spool/postfix/maildrop
这个⽬录,这个⽬录⼀般是系统邮件的回收站,删除、丢弃的邮件会放到这⾥,我们只需要删除这⾥的⽂件即可腾出多余的INode,从⽽减低/var空间使⽤率。
cd /var/spool/postfix/ m aildrop
ls | xarg s -n 10 rm -rf
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda7 393216 9179 384037 3% /
tmpfs 8240103 1 8240102 1% /dev/shm
/dev/sda1 32768 46 32722 1% /boot
/dev/sda8 71000064 12127 70987937 1% /home
/dev/sda2 393216 87909 305307 23% /usr
/dev/sda3 262144 2409 259735 1% /var
此时磁盘inode明显降低,告警也随之消除。
深⼊分 析 :
为何/var/spool/postfix/maildrop⽬录会⽣成⼤量的⽂件?
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
cat /etc/cron.d/0hourly
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
mysql下载哪个盘这⾥删除邮件会⾃动存储root⽤户下的 /var/spool/postfix/ m aildrop⽬录中,我们可以通过以下⽅式避免:
将MAILTO=root修改为MAILTO=空值即可,然后重启crond服务 ( service crond restart)。
知 识 扩展:
1)⽬录/var/spool/clientmqueue/也容易产⽣较多的零碎⽂件,其原因是由于系统中有⽤户开启了cron任务,⽽cron中执⾏的程序有输出内容,输出内容会以邮件形式发给cron的⽤户,⽽sendmail没有启动所以就产⽣了这些⽂件。解决办法如下:
清理/var/spool/clientmqueue/下⾯的⽂件,cd /var/spool/clientmqueue/ ;ls |xargs -n 10 rm -rf ;
查看产⽣/var/spool/clientmqueue/⽂件的内容,到对应的具体cron任务
将任务脚本输出添加 >/dev/null 2>&1
2)如果通过df -h 和 df -i发现 分区空间很⼤,但⾥⾯⽂件⼏乎没有,即磁盘空间没有被释放。导致这种原因⼀般是由于磁盘有些进程⽤到了这个分区下的⽂件,⽤户在没有停掉进程的情况下清理了这些⽂件,但进程还在,从⽽磁盘空间没有被释放。解决⽅法如下: lsof|gre p deleted
mysqld 5668 mysql 5u REG 8,3 0 1572866 /tmp/ibHVyCeJ (deleted)
mysqld 5668 mysql 6u REG 8,3 0 1572871 /tmp/ibW1Z6Gn (deleted)
mysqld 5668 mysql 7u REG 8,3 0 1572922 /tmp/ibz4HB91 (deleted)
mysqld 5668 mysql 8u REG 8,3 0 1572923 /tmp/ibFbld7k (deleted)
mysqld 5668 mysql 12u REG 8,3 0 1572924 /tmp/ibMFN1EZ (deleted)
到进程,直接杀死即可(也可以通过重启操作系统解决)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论