Назад | Перейти на главную страницу

Когда HDD просыпается?

Я ищу небольшой скрипт или приложение, которое могло бы регистрировать время, когда просыпается несистемный диск.

Я не могу определить, какое приложение или сценарий пробуждает мой несистемный диск (который должен находиться в режиме сна, пока я с ним не поработаю). Я уже установил флаг noatime, попытался использовать powertop и iotop, чтобы определить, какое приложение может предотвратить его переход в спящий режим, но безрезультатно.

Итак, я планирую перевести этот диск в спящий режим (hdparm -Y) и посмотреть, в какое время он будет регулярно просыпаться.

Спасибо за любой совет.

Смотрите этот убунту отчет об ошибке о том, как отследить это (и возможную причину).

Короткие ответы: auditctl -w /dev/sdX -p rwa и удиски

Ты можешь использовать hdparm -C чтобы в любой момент получить состояние режима питания диска. Вот сценарий, который покажет вам время:

while true; do 
  state=`hdparm -C /dev/sda|grep "^ drive"|cut -c 19-`
  echo `date` $state
  sleep 1
done

Запустите сценарий с sudo, так как hdparm нужны привилегии root. Вы можете перенаправить эхо в какой-либо файл, например:

echo `date` $state >> /tmp/sda_state

и, конечно, смените диск, который вы отслеживаете (я использовал /dev/sda) к тому, что вы хотите, и sleep интервал, например sleep 120 запрашивать каждые две минуты.

Однако это не дает вам процесса, который разбудит диск.

У вас могут возникнуть проблемы с указанным выше из-за некоторых ошибок:

Если у вас возникли проблемы с hdparm -C разбудив диск, попробуйте вместо этого:

smartctl -i -n standby /dev/sda|grep "^Power mode"

Согласно man smartctl, при запуске с -n standby, smartctl не должен будить диск. Обратите внимание, что с этим также есть ошибки:

так что попробуйте посмотреть, работает ли это.

Чтобы узнать, к каким файлам осуществляется доступ (что может помочь сузить ответственный процесс), вы можете попробовать использовать inotifywatch который можно настроить для рекурсивного просмотра каталогов под выбранным вами каталогом. Обязательно прочтите предупреждения на странице руководства относительно использования --recursive на большом дереве.

Когда событие файловой системы происходит в каталоге этого дерева, оно записывается и выводится в виде таблицы. Ты можешь использовать --timeout , чтобы ограничить время, в течение которого часы активны.

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

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

https://launchpad.net/fatrace

Больше информации здесь:

http://www.piware.de/2012/02/fatrace-report-system-wide-file-access-events/

Он использует linux fanotify API (подробнее) доступно начиная с ядра Linux 2.6.37.

fatrace по состоянию на июль 2014 г. не упакован большинством дистрибутивов (недавно он входил в состав тестирования debian, поэтому должен поставляться в составе «jessie»), но его легко установить из исходного кода.

Я не могу ответить на ваш вопрос, но хочу указать вам на деталь, которая может быть интересной: у некоторых sata hdd есть перемычка, чтобы установить их в спящий режим по умолчанию (контроллер должен отправить команду sata, чтобы разбудить диск. [не все контроллеры могут это сделать]).

Перемычка уже установлена?

Плотина