Жесткий диск не переходит в режим ожидания автоматически

Жесткий диск не переходит в режим ожидания автоматически

У меня есть жесткий диск, который должен автоматически переходить в режим ожидания через 30 или 60 минут.

Я попробовал (3 минуты на проверку):

# hdparm -S 36 /dev/sda

/dev/sda:
 setting standby to 36 (3 minutes)

И это не работало, даже когда не было доступа более 5 минут. Теперь я подумал о каком-то процессе, получающем доступ к данным, поэтому я протестировал

# hdparm -y /dev/sda

/dev/sda:
 issuing standby command

Диск перешел в режим ожидания и продолжил спать, как вы можете посмотреть с помощью

# hdparm -C /dev/sda;date

/dev/sda:
 drive state is:  standby

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

Почему не работает автоматическое отключение? Насколько я понял, оно должно даже отключать жесткий диск независимо от ОС, пока нет доступа.

решение1

Я использую Ubuntu 18.04 и столкнулся с той же проблемой. Благодаря ответу @allo я узнал, что это smartdдействительно причина.

по умолчанию /etc/smartd.confнастроено так:

DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/martd-runner

который будет автоматически сканировать все диски и опрашивать их (эта операция раскручивает диск) периодически (по умолчанию каждые 30 минут, можно изменить). Хотя с этой -n standbyчастью smartd будет пропускать раскрученные диски, но проблема в следующем: если интервал опроса smartd короче, чем время «остановки вращения после» диска, то smartd всегда будет опрашивать диск ДО того, как у него появится возможность остановить вращение, таким образом, диск никогда не перейдет в режим ожидания.

Если «тайм-аут остановки вращения» диска короче интервала опроса smartd, то диск замедлит вращение до опроса smartd, после чего smartd пропустит этот диск и не будет его раскручивать. Если диск (вручную) замедляется другими инструментами, такими как hd-idle, то smartd также пропустит его.

один из способов увеличить интервал опроса smartd — отредактировать эту строку /etc/default/smartmontools:

smartd_opts="--interval=1800"

1800 означает 30 минут, например, пусть это будет 10800 (3 часа), этого будет достаточно. И не забудьте перезапустить их:

systemctl restart smartd smartmontools

решение2

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

Я решил эту проблему, отключив и время от времени smartdзапуская тесты .smartctl

решение3

Обратите внимание, что некоторые приводы не реализуют эту функцию, даже если команда проходит. Вам также может потребоваться уменьшитьРасширенное управление питаниемуровень до 127 или ниже с hdparm -B 127 /dev/sda. Из страницы руководства:

-B Получить/установить функцию расширенного управления питанием... значения от 1 до 127 (которые разрешают замедление вращения) и значения от 128 до 254 (которые не разрешают замедление вращения).

Если все это не удается, вы можете написать небольшой скрипт, который опрашивает /proc/diskstatsили /sys/block/sda/statопределяет количество операций чтения/записи на устройстве и явно переводит диск в режим ожидания, если они не меняются в течение нескольких минут. См.hd-холостой ходполезность.

Связанный контент