Я ищу небольшой скрипт или приложение, которое могло бы регистрировать время, когда просыпается несистемный диск.
Я не могу определить, какое приложение или сценарий пробуждает мой несистемный диск (который должен находиться в режиме сна, пока я с ним не поработаю). Я уже установил флаг 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
утилита, которая регистрирует каждый доступ к файлу и сообщает вам, какой процесс за это отвечает:
Больше информации здесь:
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, чтобы разбудить диск. [не все контроллеры могут это сделать]).
Перемычка уже установлена?
Плотина