Продолжаем наш цикл передач «для тех, у кого много свободного времени» про управление бездушными железками.
После перевода ноута на беззвучный и быстрый ssd, я вытащил из него cd-rom и заменил его прекрасным адаптером для 2,5" hdd. Куда и вмонтировал «старый» hdd. Но этот диск нужен сейчас редко и негоже ему зря крутиться, жужжать и расходовать энергию. Диски умеют спать, аккуратно сложив свои головки и остановив свой шпиндель. При обращении к ним они просыпаются и начинают работать. Просто «усыпить» диск можно так:
# hdparm -Y /dev/sdb
/dev/sdb:
issuing sleep command
Текущее состояние диска смотрим так:
# hdparm -C /dev/sdb
/dev/sdb:
drive state is: standby
Автоматизируем это, чтоб диск засыпал сразу на старте системы: добавляем правило udev куда-нибудь в /etc/udev/rules.d/50-hdparm.rules:
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sdb", RUN+="/sbin/hdparm -Y /dev/sdb"
systemd-udevd (или что там у вас?) будет отлично выполнять возложенную на него операцию. Но после засыпания/пробуждения системы тот диск также будет просыпаться, подобно всей системе. Для «засыпания при просыпании» добавим ещё один хук для systemd в /usr/lib/systemd/system-sleep (назовём его 50hdparm_set, хоть это и не имеет никакого значения: хуки оттуда, похоже, выполняются асинхронно):
#!/bin/sh
echo "Apply hdparm settings to /dev/sdb"
/sbin/hdparm -Y /dev/sdb
Единственное, я не уверен, верно ли это с идеологической точки зрения напрягать udevd подобными задачами? Может, есть способ лучше/логичнее/правильнее?
Ну и всё, наслаждаемся тишиной, которую иногда прерывает вентилятор системы охлаждения. Потому что печка какая-то, а не процессор:
# cat /proc/cpuinfo | grep "model name"
model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
model name : Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
Но это уже совсем другая история…
p.s.: и не забыть выпилить этот диск из конфигов smartd (/etc/smartmontools/smartd.conf), а то пробуждается иногда, понимаешь ли. ;)
Я просто прописал там исключительно основной ssd (не забыв убрать DEVICESCAN):
…
/dev/sda -d sat -H -l error -l selftest -t -f -m root -M exec /usr/libexec/smartmontools/smartdnotify -n standby,10,q
…