Как запретить ядру Linux выводить из спящего режима дополнительный жесткий диск

Как запретить ядру Linux выводить из спящего режима дополнительный жесткий диск

Есть ли способ указать ядру (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, если на то пошло) или нет.

(Редактировать): Строго говоря,похоже, можно заставить ядро ​​игнорировать диск, исправив его. Однако это не помешает диску проснуться — совсем наоборот, патч, ссылку на который я дал, не даст вам получить доступ к диску, вы не сможете получить доступ к своим файлам даже время от времени, а также не сможете перевести диск в спящий режим.

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