Я использую сервер на EC2 (Cent OS, 2.6.35.14, x86_64), и недавно я превысил свою квоту в 1 миллион операций ввода-вывода в месяц, что абсурдно, поскольку использование моего диска не должно приближаться к этому. (Я не использую какие-либо службы, которые требуют большого доступа к диску .... или даже доступа к диску)
Моей первой мыслью было запустить iotop и посмотреть, есть ли какие-нибудь процессы, непрерывно записывающие на диск. iotop показал мне, что процесс с именем jbd2 записывал на диск чаще, чем раз в минуту.
После некоторые гуглить, оказалось, что проблема либо в ошибке ядра, либо какой-то демон регулярно трогает диск.
Я установил inotify-tools и запустил 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
Поскольку вы используете CentOS, вы сможете узнать, что делает sudo, заглянув в /var/log/secure
например
sudo tail /var/log/secure
4 октября 03:45:44 ec2-centos-instance sudo: iain: TTY = pts / 0; PWD = / home / iain; ПОЛЬЗОВАТЕЛЬ = корень; КОМАНДА = / usr / bin / tail / var / log / secure
Изменить: обновление с ответом из комментариев
Включение блочного дампа:echo 1 > /proc/sys/vm/block_dump
и взгляните на это с помощью dmesg, который помог отследить, какие процессы обращались к диску. Намного надежнее, чем iotop. Оказывается, sar работал постоянно, записывая в / var / log / sa / saXX, поэтому я отключил его в cron.d, и снова все в порядке
Похоже, у вас есть скрипт или программа, использующая sudo для выполнения каких-либо действий от имени пользователя root. Вы можете включить вход в sudo, чтобы выяснить, что они пытаются сделать, и найти лучшее решение (возможно, двоичный файл setuid подойдет). Вот дополнительная информация о sudo (например, как включить ведение журнала):