发生
周五上午一早,多台服务器产生 DNS-1服务不可达告警。登陆到服务器上ping DNS服务器地址正常,使用nslookup
指定故障DNS服务器查询域名也是正常。尝试重启DNS-1服务器后,故障短暂恢复,过了30分钟又出现告警。同时多台服务器又同时产生 DNS-3、DNS-4服务不可达告警。
处理
查看DNS服务器上的CPU、内存占用均无问题,但查询硬盘使用情况发现,4台服务器中的三台根分区占用率已经达到100%
[root@DNSsrv1 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 20G 0M 100% /
/dev/sda4 109G 320M 103G 1% /home
/dev/sda1 996M 67M 878M 8% /boot
tmpfs 12G 0 12G 0% /dev/shm
于是先将占用空间较大的log文件备份出来,腾出一些空间,以恢复服务的正常运行。同时使用 du -h --max-depth=1 /*
排查占用空间较大的文件位置。经检查发现, /var/spool/clientmqueue/
目录占用了巨量的磁盘空间,在该目录下 ls
会造成终端卡死。
/var/spool/clientmqueue/
目录为存放linux系统内mail的缓存文件夹。当有系统事件或cron定时任务具有输出时,系统会调用sendmail服务为用户发送信件。如果系统中有sendmail服务运行的话,信件将会存放到/var/spool/mail/
中对应的用户名文件内。若sendmail服务并没有运行,信件则会存放到 /var/spool/clientmqueue/
内。
使用crontab -l
检查定时任务脚本,并未发现有输出的脚本。对所有定时任务脚本加入了>/dev/null 2>&1
重定向所有输出到/dev/null
防止定时任务产生信件。
由于 /var/spool/clientmqueue/
中的文件太多,无法使用 rm -f *
直接删除,需要使用 ls | xargs rm -f
进行删除。耗时三个小时将 /var/spool/clientmqueue/
中的文件清空,清理了15G的文件。
[root@DNSsrv1 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 3.9G 15G 22% /
/dev/sda4 109G 320M 103G 1% /home
/dev/sda1 996M 67M 878M 8% /boot
tmpfs 12G 0 12G 0% /dev/shm
观察该文件夹,仍然在每五分钟产生15个新的文件
查看其中信件内容为
From root@DNSsrv1 Sat Apr 29 11:15:43 2017
Return-Path: <root@DNSsrv1>
Received: from DNSsrv1 (dnsserver [127.0.0.1])
by DNSsrv1 (8.13.8/8.13.8) with ESMTP id v3T3CGvN014948
for <root@DNSsrv1>; Sat, 29 Apr 2017 11:15:42 +0800
Received: (from root@localhost)
by DNSsrv1 (8.13.8/8.13.8/Submit) id v3SKjM7U019884;
Sat, 29 Apr 2017 04:45:22 +0800
Date: Sat, 29 Apr 2017 04:45:22 +0800
Message-Id: <201704282045.v3SKjM7U019884@DNSsrv1>
To: root@DNSsrv1
From: ituser@DNSsrv1
Auto-Submitted: auto-generated
Subject: *** SECURITY information for DNSsrv1 ***
DNSsrv1 : Apr 29 04:45:22 : ituser : /etc/sudoers is mode 0755, should be 0440 ; TTY=pts/0 ; PWD=/home/ituser ; USER=root ; COMMAND=/usr/sbin/ethtool eth6
原来是由于 /etc/sudoers
文件权限不是0440而导致每次sudoer用户ituser执行sudo命令的时候,sudo通知root用户该文件权限不对。
使用 chmod 0440 /etc/sudoers
修改文件权限后,再没有新的文件产生了。
总结
- 例行查看服务器状态时多留意磁盘空间的变化
- 使用cron执行定时任务脚本时,要注意脚本的输出,若不想收到Linux系统信件,记得将输出重定向到
/dev/null
- 为防止类似事情发生,可设置定时任务定时清除
/var/spool/clientmqueue/
中的文件
网友评论