Есть ли способ указать ядру (Linux) не пробуждать вторичный жесткий диск после цикла сна/пробуждения системы? Я спрашиваю, потому что в моем ноутбуке у меня есть SSD в качестве основного диска, содержащего системный корень, и вторичный жесткий диск, на котором я храню резервную копию системы и файлы, к которым я обращаюсь время от времени. Поскольку ноутбук обычно проходит через множество ежедневных циклов сна/пробуждения (я имею в виду Suspend to RAM, а не гибернацию) в течение многих дней, я хотел бы вручную переводить вторичный жесткий диск в режим сна и указывать ядру поддерживать его в спящем режиме во время циклов сна/пробуждения системы.
решение1
Поскольку вы используете второй жесткий диск только для резервного копирования, я бы предложил указать fstab не монтировать диск автоматически и создать скрипт резервного копирования, который монтирует диск, создает резервную копию и снова отключает диск.
пример строки fstab с опцией noauto:
/dev/sdb1 /media/backup ext4 user,noauto 0 0
Скрипт bash для резервного копирования будет начинаться с mount /media/backup
и заканчиваться наumount /media/backup
решение2
Никогда не раскручивайте диск
Похоже, что раскрутка дисков жестко запрограммирована в ядре.(БлагодаряВеон(За то, что вы это раскопали.)
Но это, конечно, можно исправить:Патч для более старой версии ядра.
Все это странно, так как я думал, что помню, что когда-то для этого был параметр/переключатель ядра.
Поскольку это хак, я не рекомендую его, так как вам придется патчить и собирать ядро при каждом обновлении, а иногда даже адаптировать патч к измененному коду. Лучшим способом было бы отправить патч (который предлагает реальное переключение и работает для всех систем) самим разработчикам ядра. Я думаю, что это выходит за рамки этого ответа. :)
Повторная остановка диска (SystemD/Linux)
Основываясь на решении Marc.2377, этот способ помог отключить жесткий диск в SystemD/Linux Mint.
[Unit]
Description="Put woken HDD back to sleep and tell it to go to sleep after 2 min of not being used."
After=systemd-suspend.service systemd-hybrid-sleep.service systemd-hibernate.service systemd-suspend-then-hibernate.service
[Service]
Type=simple
ExecStart=/usr/sbin/hdparm -q -S 24 -q -Y /dev/disk/by-id/MYDISK
[Install]
WantedBy=sleep.target
Замените MYDISK
фактическим именем файла устройства в /dev/disk/by-id
и сохраните его как /etc/systemd/system/wake_hdd-stop.service
.
Затем запустите systemctl daemon-reload
его, чтобы активировать.
Повторная остановка диска (GNU/Linux)
В обычной системе GNU/Linux, используя, pm-utils
вы можете просто поместить следующее /etc/pm/sleep.d/99_hdd-stop
:
#! /bin/sh
case "$1" in
resume|thaw)
/usr/sbin/hdparm -q -S 24 -q -Y /dev/disk/by-id/MYDISK
;;
esac
Заменив MYDISK
, конечно.
Затем сделайте файл исполняемым с помощьюchmod +x /etc/pm/sleep.d/99_hdd-stop
ПРИМЕЧАНИЕ
в любом случае, вам следует выполнить команду как можно позже, иначе диск может снова начать вращаться из-за того, что к нему обращается какой-то процесс инициализации.
Кроме того, мой диск, похоже, полностью игнорирует -S
команду. Так что YMMV. (Я создал .desktop
файл для запуска вышеуказанного скрипта и использовал глобальные настройки сочетания клавиш моей среды рабочего стола, чтобы сопоставить ему сочетание клавиш. Так что я могу остановить его мгновенно, когда захочу.)
решение3
Я не думаю, что это возможно. Диск проверяется BIOS/UEFI при загрузке, а не только ядром.
Однако я даю системе команду перевести диск в спящий режим сразу после загрузки системы. Проверитьhttps://wiki.archlinux.org/index.php/Hdparm#Перевод_диска_в_спящий_режим_после_загрузки.
В моем случае:
/usr/local/lib/systemd/system/rsleephdd.service
[Unit]
Description="Ranolfi's script to sleep hard drives on boot"
[Service]
Type=oneshot
ExecStart=/usr/bin/hdparm -q -S 120 -Y /dev/sdc
[Install]
WantedBy=multi-user.target
Не имеет значения, смонтирован ли диск или его разделы с помощью fstab (или crypttab, если на то пошло) или нет.
(Редактировать): Строго говоря,похоже, можно заставить ядро игнорировать диск, исправив его. Однако это не помешает диску проснуться — совсем наоборот, патч, ссылку на который я дал, не даст вам получить доступ к диску, вы не сможете получить доступ к своим файлам даже время от времени, а также не сможете перевести диск в спящий режим.