Внешний жесткий диск USB 3.0 вращается и выключается при выключении или перезагрузке Raspberry Pi 4B
Внешний жесткий диск USB 3.0 Seagate Expantion Drive 1 ТБ подключен к моему Raspberry Pi 4B на Raspbian Buster. Жесткий диск работает редко, поэтому первым делом хотелось бы, чтобы он отключался во время простоя (вращение прекращалось). Сразу скажу, что попробовал утилиту "hdparm", но она у меня абсолютно не работает. На моем старом Raspberry Pi 3B + он отлично справлялся со своей работой, но совсем не работает на новом. Я пробовал делать
sudo hdparm -S 10 / dev / sda1
а также
sudo hdparm -Y / dev / sda1
Но все, что он выдает, это
/dev/sda:
issuing sleep command
SG_IO: bad / missing sense data, sb []: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
При этом диск продолжает вращаться и горит светодиод на корпусе, сколько бы я ни ждал, я также пытался прописать следующие настройки в hdparm.conf:
/dev/sda1 {
spindown_time = 20
}
Но это тоже не дало никакого эффекта, диск продолжает вращаться. Также, зная, что udisks2 установлен в raspbian buster, я попытался создать файл конфигурации Seagate_Expansion_NA4B2GTR-0: 0.conf (это именно то, что мне дала команда "udevadm info / dev / sda") в каталоге /etc/udisks2/ с содержимым
[ATA]
StandbyTimeout = 20
Но и это не сработало.
То, что диск не перестает крутиться - моя первая проблема. Вторая проблема в том, что при выключении или перезапуске Raspberry диск не паркует головки и его питание резко прерывается, что вызывает очень неприятный хрип. В интернете нашла похожие запросы, это очень частая проблема. Я бы хотел, чтобы во время процедуры выключения ОС диск был правильно размонтирован и его питание отключалось до потери питания на порту USB 3.0. К счастью, мне удалось написать похожий сценарий, и он отлично работает:
hddshutdown.sh
sudo umount -f /dev/sda1
sudo udisksclt power-off -b /dev/sda1
sleep 5
Если я запускаю этот сценарий во время работы ОС, он делает именно то, что мне нужно: диск отключен, вращение диска прекращается и светодиод на корпусе гаснет. Однако я не могу заставить этот скрипт работать таким же образом во время процедуры выключения ОС.
Я написал этот модуль для systemd: hddshutdown.service в /usr/lib/systemd/system/
[Unit]
Description=[=======USB-HDD-spindown============]
DefaultDependencies=no
After=umount.target
Before=shutdown.target poweroff.target reboot.target halt.target
[Service]
ExecStart=/bin/sh /home/pi/hddshutdown.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=reboot.target
Я сделал "sudo systemctl enable hddshutdown", попробовал несколько разных параметров конфигурации, поиграл с разными значениями Before, After и WantedBy, но ни один из вариантов не сработал, только один, диск успешно отключен, но питание не отключается, привод продолжает вращаться, и светодиод горит до момента выключения Pi. Более того, я точно знаю, что sh-скрипт запускается точно, задержка "сна", которую я выставил в конце скрипта, действительно работает.
Я не очень хорошо знаю Linux, и это был мой первый опыт написания модулей для systemd. Я нашел информацию о том, что udisksctl требует для работы DBus, но он не существует во время выключения, и поэтому питание диска не может отключиться. Я не смог найти способ запустить этот модуль как можно раньше во время процедуры выключения, когда DBus все еще доступен. (Даже не знаю что это, может я сказал глупость) Помогите пожалуйста решить 2 из этих проблем, заранее спасибо.
2 ответа
Я сам нашел ответ на свой вопрос. Поскольку я использую диск Seagate Expansion, я использовал программу Seagate Dashboard с официального сайта, чтобы "перепрограммировать" свой жесткий диск. Мне удалось отключить внешний LED-индикатор и установить время выключения вращения на 10 минут, и теперь на любой системе жесткий диск отключается через 10 минут. Использование программ вроде hdparm или udisks больше не требуется!
Что помогло мне заставить мой жесткий диск автоматически останавливаться в режиме ожидания, так это новая реализация hd-idle.
Моя конкретная установка: Raspberry Pi 4B + Suptronics X835 + WD Blue WD20EZRZ.
Ни один из других обычных инструментов не работал у меня (hdparm, оригинальный hd-idle).