¿Cómo puedo controlar el tiempo de inactividad del HDD?


71

Tengo 2 discos duros en mi PC. Ubuntu apaga el HDD secundario muy rápidamente después de unos 15 minutos, lo cual es corto para mí. Necesito controlar esta vez. ¿Cómo puedo hacerlo?

Intenté la administración de energía de GNOME pero no la encontré útil.

Respuestas:


67

Echa un vistazo a hdparm.

Del manual ( man hdparmen la línea de comando):

-S Establecer el tiempo de espera de espera (spindown) para la unidad. El variador usa este valor para determinar cuánto tiempo esperar (sin actividad del disco) antes de apagar el motor del husillo para ahorrar energía. En tales circunstancias, la unidad puede tardar hasta 30 segundos en responder a un acceso posterior al disco, aunque la mayoría de las unidades son mucho más rápidas.

La codificación del valor de tiempo de espera es algo peculiar. Un valor de cero significa "los tiempos de espera están deshabilitados": el dispositivo no entrará automáticamente en modo de espera. Los valores del 1 al 240 especifican múltiplos de 5 segundos, produciendo tiempos de espera de 5 segundos a 20 minutos. Los valores de 241 a 251 especifican de 1 a 11 unidades de 30 minutos, con tiempos de espera de 30 minutos a 5,5 horas. Un valor de 252 significa un tiempo de espera de 21 minutos. Un valor de 253 establece un período de tiempo de espera definido por el proveedor entre 8 y 12 horas, y el valor 254 está reservado. 255 se interpreta como 21 minutos más 15 segundos. Tenga en cuenta que algunas unidades antiguas pueden tener interpretaciones muy diferentes de estos valores.

Entonces sudo hdparm -I /dev/sdb | grep levelmostrará el valor actual de spindown, por ejemplo:

Advanced power management level: 254

Del manual: 254 está reservado, así que espero que sea el predeterminado de Ubuntu (¿alguien puede confirmar / expandir esto por favor?)

Ejemplo:

sudo hdparm -S 25 /dev/sdb = spindown después de 25 * 5 segundos.

sudo hdparm -S 245 /dev/sdb = spindown después (245-240) * 30 minutos.


gracias Rinzwind por los consejos, que me ayudó mucho pero me gustaría ver GUI para esto en la próxima versión de Ubuntu o podría estar integrado en gestor de energía de GNOME
user16295

44
Con respecto a la respuesta de lzap, parece que lo haces greppara APM ( -Bparm) pero hablas -Sdel spindown. ¿También sabes algo sobre APM?
turbo

3
La -Bconfiguración actual se muestra como se indica arriba. ¿Cómo puedo ver la -Sconfiguración actual ?
SabreWolfy

55
sudo hdparm -y /dev/sdbmata a la bestia inmediatamente
siamii

1
@SabreWolfy Lo he hecho como una pregunta por separado: ¿cómo puedo averiguar el tiempo de
ændrük

46

Utilidad de disco -> seleccione la unidad de disco duro -> haga clic en el icono "Más acciones ..." en la esquina superior derecha -> Configuración de la unidad ...

El mío es así: captura de pantalla


66
Más fácil de lejos, ¡gracias! (Por cierto, el paquete que necesita instalar si no tiene esto es gnome-disk-utility.
Gerhard Burger

camino a seguir linux! +1
neu-rah

Sí, extremadamente fácil, me alegro de que esté aquí.
Zzzach ...

@ Ray usted, señor, son increíbles! Básicamente no tenía ninguna esperanza de que funcionaría para un HDD externo, ¡pero lo hizo!
UTF-8

1
¿Por qué la mayoría de los consejos involucran la edición de archivos propensos a errores o las operaciones de la consola, mientras que herramientas fáciles de usar como esta ya existen!
WooYek

30

Si está interesado en hacer que la configuración de hdparm sea persistente entre reinicios, en lugar de agregarla al crontab, puede usar el /etc/hdparm.conf. Tengo lo siguiente, tenga en cuenta el uso de S mayúscula, no minúsculas:

command_line {
    hdparm -S 25 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215 
}

Agregue esa línea reemplazando el UUID por el suyo, o también puede especificar el dispositivo usando el /dev/sdXformato. Puede averiguar el UUID de su disco con el comando sudo blkid.


3
¿Es correcto usarlo command_linehoy en día? Tengo diferentes ejemplos en mi /etc/hdparm?
Atenúa el

1
La respuesta de Ondra Žižka parece estar más actualizada.
Raphael

9
  1. Encuentra el UUID de tu disco .

    sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
    
  2. Editar /etc/hdparm.conf

    sudo -H gedit /etc/hdparm.conf  # Be careful from now on
    
  3. Busque spindown-timeo la sección de configuración de su disco.

    /dev/disk/by-label/4TB {
        spindown_time = 1200
    }
    
  4. Prefiero referirme al disco por UUID, que permanece igual en diferentes instalaciones (a menos que lo cambie en el propio HW).

    /dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
        spindown_time = 1200
    }
    
  5. Si el script de inicio provoca problemas de arranque, puede pasar nohdparm la línea de comando del kernel y el script no se ejecutará.


¿Cuáles son las unidades para ese parámetro?
detly

IIRC, son segundos. O tal vez este es el parámetro que tenía reglas salvajes como "si está por debajo de 10, entonces es decenas de segundos, si está por debajo de 100, entonces son minutos", y tal. Necesito encontrarlo.
Ondra Žižka

2
No son unidades, mira
Ondra Žižka

Saludos, por alguna razón no pude encontrarlo man hdparm.conf.
detly

man hdparm.conflee indirectamente que el valor se pasa a -Spor lo tanto para valores <255 debe ser compatible con la regla en la respuesta superior . Cualquier información adicional es bienvenida.
dma_k

8

Después de pasar horas y horas descubrí que mi unidad WDC no admite el comando hdparm -S, sin importar el valor del atributo idle3 (google: idle3ctl). Y ese es un problema común con las unidades WD. Pero me complace anunciar que hd-idle ( http://hd-idle.sourceforge.net/ ) funciona a la perfección. Si se instala desde el paquete dpkg-builded (vea las Notas de instalación), crea un demonio en ubuntu y debian (la configuración está en / etc / default / hd-idle). Funciona bien después de salir de la hibernación también.

mc predeterminado # ps aux | grep hd-idle | grep -v grep | corte -c 66-; para f en [ad]; do hdparm -C / dev / sd $ f | grep -v "^ $"; hecho
/ usr / sbin / hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log
/ dev / sda:
 estado de la unidad es: activo / inactivo
/ dev / sdb:
 estado de la unidad es: en espera
/ dev / sdc:
 estado de la unidad es: en espera
/ dev / sdd:
 estado de la unidad es: en espera



5

Descubrí que el comportamiento spindown de Samsung HD204UI depende del nivel de APM ( hdparm -B). Si el nivel de APM es 127, el tiempo de espera de spindown es de 10 s. Si el nivel de APM es 150, la opción define el tiempo de espera de spindown -S.


hdparm puede establecer pero no obtener la -Sopción (consulte Cómo determinar el tiempo de spindown del disco ). Para obtenerlo, use el software GUI "Disco". Vea la otra respuesta con la captura de pantalla.
KrisWebDev

5

Añado algo como:

@reboot sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e  > /dev/null 2> /dev/null

al crontab de root. Creo que usar uuid es mejor porque sda/ sdbetc. parece cambiar con cada reinicio


10
¿Por qué no usar hdparm.conf?
ændrük

3

En Ubuntu 14.04

Discos> resaltar unidad> haga clic en el engranaje en la esquina superior derecha> Configuración de unidad> ahora tiene la configuración de espera, APM, AAM y caché de escritura en una GUI fácil de usar.


¿Cómo haces que esto funcione? He configurado esto, y después de reiniciar si vuelvo, ha recordado que la unidad debería apagarse, pero nunca lo hace. hdparm -C siempre muestra que está activo y solo ejecuta hdparm -S xxx desde la línea de comandos lo hace funcionar.
dan carter

1
¿Dónde encuentras "Discos"?
nealmcb

1

En Debian, con unidades WD, encuentro que establecer cualquier nivel con hdparm -S hace que la unidad regrese un nivel 254 en hdparm -I subsiguiente . Así que realmente no estoy seguro de si están girando hacia abajo o no. Creo que todavía están girando hacia abajo.

Estas unidades están en una matriz de servidores, y realmente no quiero que se vuelquen. En el pasado, me equivoqué al configurar un trabajo cron para actualizar un archivo cada pocos minutos.


1

No tuve suerte con hdparm en un HDD externo montado en una carcasa USB, que utilizo para servir medios con minidlna.

Me encontré con una idea desde aquí: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping-while-mounted

Los mejores resultados provienen del uso del uuid del disco, que puede encontrar con:

sudo blkid

El siguiente método requiere acceso de root, pero hdparm también. Esto usa crontab para leer un bloque aleatorio de la unidad cada 5 minutos e ignora todos los mensajes. Para asegurarse de que tiene el UUID correcto, pruébelo en la línea de comando como esta (asegúrese de usar su UUID deseado, no este):

sudo dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM

Debería ver una salida como esta:

1+0 records in
1+0 records out
512 bytes copied, 0.000738308 s, 693 kB/s`

Para suprimir este mensaje, que podría terminar siendo escrito en algún lugar, potencialmente el sistema de archivos / (que está en un SSD en mi caso), a continuación es lo que estoy usando en el crontab raíz. Llegas allí con

sudo crontab -e

Luego, bajo los comentarios:

*/5 * * * * bash -c 'dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM' >/dev/null 2>&1

Espero que esto ayude a alguien más con problemas similares. Desafortunadamente, esto todavía se escribe en el syslog, pero hay posibles formas de suprimirlo; vea esta publicación de ServerFault .

[editar] 2017-01-07 09:02:

Pude suprimir estos mensajes editando /etc/rsyslog.d/50-default.conf para cambiar esta línea:

*.*;auth,authpriv.none -/var/log/syslog

a esto:

*.*;cron,auth,authpriv.none -/var/log/syslog

Desafortunadamente, esto suprime todos los mensajes cron; No pude obtener cron para redirigir el cierre de sesión del sistema de archivos raíz (que en mi caso está en un SSD antiguo, por lo que quiero limitar las escrituras), pero como este es solo un servidor doméstico, probablemente no me estoy perdiendo mucho. Definitivamente no recomendaría esta estrategia para una máquina de producción.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.