我正在EC2上运行一台服务器(分操作系统,2.6.35.14,x86_64),最近我检查了每月100万I/O配额,这是荒谬的,因为我的磁盘利用率不应该接近这一点。(我没有运行任何需要大量磁盘访问的服务.甚至任何磁盘访问)
我的第一个想法是启动iotop,看看是否有任何进程不断地写入磁盘。iotop向我展示了一个名为jbd2的进程每分钟写入磁盘一次以上。
在一些 四处搜索之后,问题似乎要么是内核错误,要么是某个定期接触磁盘的守护进程。
我安装了inotify工具,并在整个文件系统上启动了inotifywait;
sudo /usr/local/bin/inotifywait -m -r /!(dev|proc)这表明/etc/passwd正在被打开、访问,然后关闭,每分钟多次。不用我在系统上做任何事!inotify没有告诉您处理的是什么进程,但是我安装了审计(http://people.redhat.com/sgrubb/audit/),设置了一些登录/etc/passwd,并让它运行了一段时间,然后查看了日志,但是他们告诉我的是它是由sudo:(用户名编辑)访问的。
type=SYSCALL msg=audit(10/03/2011 17:48:30.493:260) : arch=x86_64 syscall=open success=yes exit=4 a0=7f809205669a a1=80000 a2=1b6 a3=0 items=1 ppid=6466 pid=6467 auid=**** uid=root gid=**** euid=root suid=root fsuid=root egid=**** sgid=**** fsgid=**** tty=pts0 ses=79 comm=sudo exe=/usr/bin/sudo key=(null)
type=SYSCALL msg=audit(10/03/2011 17:48:30.493:261) : arch=x86_64 syscall=open success=yes exit=4 a0=7f809205669a a1=80000 a2=1b6 a3=0 items=1 ppid=6466 pid=6467 auid=**** uid=root gid=**** euid=root suid=root fsuid=root egid=**** sgid=**** fsgid=**** tty=pts0 ses=79 comm=sudo exe=/usr/bin/sudo key=(null)
type=SYSCALL msg=audit(10/03/2011 17:48:30.488:256) : arch=x86_64 syscall=open success=yes exit=3 a0=7f809205669a a1=80000 a2=1b6 a3=0 items=1 ppid=6441 pid=6466 auid=**** uid=**** gid=**** euid=root suid=root fsuid=root egid=**** sgid=**** fsgid=**** tty=pts0 ses=79 comm=sudo exe=/usr/bin/sudo key=(null)
...有办法进一步缩小范围吗?我的cron文件中没有任何内容,也没有其他我能想到的服务会导致这样的结果:
chkconfig | grep on
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
cgconfig 0:off 1:off 2:off 3:off 4:off 5:off 6:off
cloud-init 0:off 1:off 2:on 3:on 4:on 5:on 6:off
cloud-init-user-scripts 0:off 1:off 2:on 3:on 4:on 5:on 6:off
conman 0:off 1:off 2:off 3:off 4:off 5:off 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
yum-updatesd 0:off 1:off 2:on 3:on 4:on 5:on 6:off发布于 2011-10-04 07:47:35
当您使用CentOS时,您应该能够通过查看/var/log/secure来了解sudo在做什么。
sudo tail /var/log/secure10月4日03:45:44 EC2-centos-实例sudo: iain : TTY=pts/0;PWD=/home/iain;USER=root;命令=/usr/bin/tail /var/log/secure
编辑:使用注释中的答复进行更新
使用:echo 1 > /proc/sys/vm/block_dump启用块转储并使用dmesg查看它有助于跟踪访问磁盘的进程。比碘片更可靠。原来sar一直在运行,写到/var/log/sa/saXX,所以我在cron.d中禁用了它,一切都很好。
发布于 2011-10-04 03:02:10
听起来好像你有一个脚本或程序,它使用sudo来尝试并作为根用户来做一些事情。您可以在sudo中启用登录功能,找出他们想要做的事情,并想出一个更好的解决方案(可能需要一个setuid二进制文件)。下面是有关sudo的更多信息(比如如何启用日志记录):
http://aplawrence.com/Basics/sudo.html
https://serverfault.com/questions/318189
复制相似问题