Как я могу сказать, что раскручивает мой двигатель?

Я включил "spindown" на одном из дисков моего Linux-сервера, к которому имеет доступ только клиент BitTorrent - это означает, что когда у меня нет запущенных торрентов, ничто иное не должно быть доступа к диску и его пробуждения из spindown (верно?).

Но что-то заставляет диск раскручиваться каждые 15 минут или около того. Как я могу отследить преступника?

Спасибо за любые отзывы!

7 ответов

Решение

Вы можете проверить http://samwel.tk/laptop_mode/. Хотя эта страница в основном не посвящена вашей проблеме, но дает хорошее общее представление о том, как работает ввод-вывод и идеи, как отключить ваши диски, отключив их.

Краткий ответ на вашу проблему:

echo 1> / proc / sys / vm / block_dump

это будет производить сообщения в системном журнале, как:

23 июля 10:04:05 ядро ​​локуса: ls(5224): ПРОЧИТАТЬ блок 7340136 на dm-4
23 июля, 10:04:05 ядро ​​локуса: ls(5224): ПРОЧИТАТЬ блок 4335136 на dm-4
23 июля, 10:04:05 ядро ​​локуса: ls(5224): ПРОЧИТАТЬ блок 15505568 на dm-4.
23 июля, 10:04:05 ядро ​​локуса: ls(5224): ПРОЧИТАТЬ блок 7340160 на dm-4
23 июля 10:04:05 ядро ​​локуса: ls(5224): ПРОЧИТАТЬ блок 7340168 на dm-4

Я использовал простую команду ls

ПРИМЕЧАНИЕ: убедитесь, что ваша системная регистрация отключена или записана на ramdisk (типа: tmpfs) перед тем, как сделать это, (цитата): "ваша система может попасть в цикл обратной связи, где syslogd вызывает активность диска, это вызывает вывод ядра, и это заставляет syslogd делать больше дисковой активности "

Я рекомендую монтировать / tmp как виртуальный диск, а затем настраивать запись в / tmp / syslog. Это в / etc / fstab (и перезагрузке) сделает:

none / tmp tmpfs по умолчанию, размер =256M 0 0

В Linux недавний выпуск fanotify syscall включил хорошую утилиту под названием fatrace это информирует о том, какой процесс выполняет загрузку какого файла для всей системы или определенного раздела. Определенно мой любимый инструмент для такого рода вещей:

deluged(6542): R /usr/share/GeoIP/GeoIP.dat
rsyslogd(1737): W /var/log/syslog
rsyslogd(1737): W /var/log/kern.log

Я использовал iotop, чтобы выяснить, что использует диск. С веб-сайта вы должны иметь "Ядро Linux ≥ 2.6.20 с включенными параметрами TASK_DELAY_ACCT и TASK_IO_ACCOUNTING".

Похоже, вы просто заинтересованы в одном конкретном диске. Вы можете написать скрипт, который регулярно проверяет с помощью lsof или fuser доступ к этому диску / разделу.

Вы должны иметь возможность использовать аудит Linux, чтобы добавить наблюдение на точку монтирования диска, а затем отслеживать события с помощью ausearch после события, чтобы выяснить, какой файл был прочитан или записан (если есть), и какой процесс это сделал, аудит может следите за чтением, записью, выполнением и изменениями атрибутов в любой файловой системе (если она поддерживается в вашей системе - так и должно быть).

Если процесс начинает записывать данные на диск, вы можете узнать об этом, регулярно проверяя открытые файлы: lsof.

В противном случае вы можете посмотреть "бесплатно", если файл подкачки используется или нет.

Возможно, вы могли бы использовать incron, который использует inotify для запуска команд, основанных на активности файловой системы. Затем вы можете наблюдать за точкой монтирования и использовать incron для запуска lsof, чтобы определить, какой процесс обращается к нему.

Легко проверить, что крутит ваш диск:

перейдите в каталог смонтированного диска, для меня был / media / disk0 / transmission

тогда вы выполняете: sudo fatrace -c

у вас будет вывод anyting, который попадает в эту папку, например вы можете войти через ssh и выполнить команду ls.

df (54956): CO / media / disk1 bash (55025): O / media / disk1 bash (55025): RC / media / disk1 bash (55026): O / media / disk1 bash (55026): RC / media / disk1

Другие вопросы по тегам