Como evitar que o kernel do Linux desperte um HDD secundário do modo de suspensão

Como evitar que o kernel do Linux desperte um HDD secundário do modo de suspensão

Existe uma maneira de instruir o kernel (Linux) a não ativar um disco rígido secundário após um ciclo de suspensão/despertar do sistema? Estou perguntando porque no meu laptop tenho um SSD como unidade primária contendo a raiz do sistema e um HDD secundário onde mantenho um sistema de backup e arquivos que acesso esporadicamente. Como o laptop geralmente passa por muitos ciclos diários de suspensão/despertar (quero dizer, suspender na RAM, não na hibernação) por muitos dias, gostaria de colocar o disco rígido secundário para hibernar manualmente e instruir o kernel para mantê-lo adormecido durante a suspensão do sistema /ciclos de despertar.

Responder1

como você usa apenas o disco rígido secundário para backup, sugiro dizer ao fstab para não montar a unidade automaticamente e criar um script de backup que monte a unidade, faça o backup e desmonte a unidade novamente.

exemplo da linha fstab com a opção noauto:

/dev/sdb1 /media/backup ext4 user,noauto 0 0

O script bash para o backup começaria mount /media/backupe terminaria comumount /media/backup

Responder2

Nunca girando o disco

A rotação dos discos parece estar codificada no kernel(Graças aVeonpor descobrir isso.)
Mas é claro que pode ser corrigido:Patch para uma versão mais antiga do kernel.
A coisa toda é estranha, pois pensei ter me lembrado de que havia um parâmetro/switch do kernel desta vez.

Como isso é um hack, eu não o recomendo, pois você terá que corrigir e construir o kernel a cada atualização e, às vezes, até adaptar o patch ao código alterado. Uma maneira melhor seria enviar um patch (que ofereça uma opção real e funcione para todos os sistemas) aos próprios desenvolvedores do kernel. Acho que isso está além do escopo desta resposta. :)


Parando o disco novamente (SystemD/Linux)

Com base na solução Marc.2377, isso funcionou aqui para desligar um HDD no 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

Substitua MYDISKpor um nome de arquivo de dispositivo real /dev/disk/by-ide salve-o como /etc/systemd/system/wake_hdd-stop.service.

Em seguida, execute systemctl daemon-reloadpara ativá-lo.


Parando o disco novamente (GNU/Linux)

No sistema GNU/Linux normal, pm-utilsvocê pode simplesmente colocar o seguinte /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

Substituindo MYDISK, é claro.
Em seguida, torne o arquivo executável comchmod +x /etc/pm/sleep.d/99_hdd-stop


OBSERVAÇÃO

de qualquer forma, você deseja executar o comando o mais tarde possível, ou o disco pode girar novamente devido a algum processo de inicialização que o acessa.

Além disso, meu disco parece ignorar completamente o -Scomando. Então YMMV. (Criei um .desktoparquivo para executar o script acima e usei as configurações globais de atalho de teclado do meu ambiente de área de trabalho para mapear um atalho para ele. Assim, posso interrompê-lo instantaneamente, sempre que quiser.)


Responder3

Eu não acho que isso seja possível. A unidade é testada pelo BIOS/UEFI na inicialização, não apenas pelo kernel.

O que eu faço, porém, é instruir o sistema a colocar a unidade no modo de suspensão logo após a inicialização do sistema. Verificarhttps://wiki.archlinux.org/index.php/Hdparm#Putting_a_drive_to_sleep_directly_after_boot.

No meu caso eu tenho:

/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

Não faz diferença se a unidade ou suas partições são montadas por fstab (ou crypttab, nesse caso) ou não.

(Editar): Estritamente falando,parece ser possível fazer com que o kernel ignore um disco corrigindo-o. Isso não impedirá que a unidade seja ativada - muito pelo contrário, o patch ao qual vinculei impedirá que você acesse a unidade, você não conseguirá acessar seus arquivos, mesmo esporadicamente, e também não conseguirá colocar a unidade em dormir.

informação relacionada