¿Hay alguna manera de indicarle al kernel (Linux) que no active un disco duro secundario después de un ciclo de suspensión/activación del sistema? Lo pregunto porque en mi computadora portátil tengo un SSD como unidad principal que contiene la raíz del sistema y un disco duro secundario donde guardo un sistema de respaldo y archivos a los que accedo esporádicamente. Dado que la computadora portátil generalmente pasa por muchos ciclos diarios de suspensión/activación (me refiero a suspensión en RAM, no hibernación) durante muchos días, me gustaría poner el disco duro secundario en suspensión manualmente e indicarle al kernel que lo mantenga dormido durante la suspensión del sistema. /ciclos de despertar.
Respuesta1
Dado que solo usa el disco duro secundario para la copia de seguridad, sugeriría decirle a fstab que no monte la unidad automáticamente y que cree un script de copia de seguridad que monte la unidad, haga la copia de seguridad y desmonte la unidad nuevamente.
ejemplo de la línea fstab con la opción noauto:
/dev/sdb1 /media/backup ext4 user,noauto 0 0
El script bash para la copia de seguridad comenzaría con mount /media/backup
y terminaría conumount /media/backup
Respuesta2
Nunca girar el disco
Hacer girar los discos parece estar codificado en el núcleo(Gracias aveónpara desenterrar esto.)
Pero, por supuesto, se puede parchear:Parche para una versión anterior del kernel.
Todo esto es extraño, ya que pensé recordar que una vez hubo un parámetro/interruptor del kernel para esto.
Dado que se trata de un truco, no lo recomiendo, ya que tendrá que parchear y compilar el kernel en cada actualización y, a veces, incluso adaptar el parche al código modificado. Una mejor manera sería enviar un parche (que ofrezca un cambio real y funcione para todos los sistemas) a los propios desarrolladores del kernel. Creo que eso está más allá del alcance de esta respuesta. :)
Detener el disco nuevamente (SystemD/Linux)
Sobre la base de la solución de Marc.2377, esto funcionó para apagar un disco duro en 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
Reemplácelo MYDISK
por un nombre de archivo de dispositivo real en /dev/disk/by-id
y guárdelo como /etc/systemd/system/wake_hdd-stop.service
.
Luego corre systemctl daemon-reload
para activarlo.
Deteniendo el disco nuevamente (GNU/Linux)
En un sistema GNU/Linux normal, pm-utils
puedes poner lo siguiente en /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
Reemplazando MYDISK
, por supuesto.
Luego haga el archivo ejecutable conchmod +x /etc/pm/sleep.d/99_hdd-stop
NOTA
que, en cualquier caso, desea ejecutar el comando lo más tarde posible, o el disco podría volver a girar debido a algún proceso de inicialización que acceda a él.
Además, mi disco parece ignorar completamente el -S
comando. Entonces YMMV. (Creé un .desktop
archivo para ejecutar el script anterior y utilicé la configuración global de atajos de teclado de mi entorno de escritorio para asignarle un atajo. Así puedo detenerlo instantáneamente, cuando quiera).
Respuesta3
No creo que eso sea posible. La unidad es probada por el BIOS/UEFI al arrancar, no solo por el kernel.
Sin embargo, lo que hago es indicarle al sistema que ponga la unidad en modo de suspensión inmediatamente después de que se inicia el sistema. Controlarhttps://wiki.archlinux.org/index.php/Hdparm#Putting_a_drive_to_sleep_directly_after_boot.
En mi caso tengo:
/usr/local/lib/systemd/system/rsleephdd.servicio
[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
No importa si la unidad o sus particiones están montadas mediante fstab (o crypttab, para el caso) o no.
(Editar): Estrictamente hablando,parece posible hacer que el kernel ignore un disco parchándolo. Sin embargo, eso no evitará que la unidad se active; todo lo contrario, el parche al que me vinculé le impedirá acceder a la unidad, no podrá acceder a sus archivos ni siquiera esporádicamente y tampoco podrá poner la unidad en dormir.