Saltar al contenido principal

Ahorro energético

En el caso de que no usemos el disco de forma habitual, podemos optar por apagar el disco para los tiempos de inactividad así alargando su vida útil y ahorrar energía.

Para ello emplearemos la utilidad hdparm que permite gestionar paámetros de discos en Linux, incluyendo el ahorro de energía, el tiempo de inactividad antes de suspender y el estado del disco (activo/standy).

hdparm

Instalación

Antes de proceder, actualizamos los repositorios del sistema operativo ejecuando

apt update

La salida sería similar a la siguiente:

Hit:1 http://security.debian.org/debian-security trixie-security InRelease
Hit:2 http://deb.debian.org/debian trixie InRelease
Hit:3 http://deb.debian.org/debian trixie-updates InRelease
Hit:4 http://download.proxmox.com/debian/pbs trixie InRelease
All packages are up to date.

Aprovechamos la intervención para actualizar el sistema operativo

apt upgrade -y

En el caso de que no hayan actualizaciones disponibles, la salida será similar a la siguiente:

Summary:                         
Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0

A contiuación, instalamos la utilidad hdparm ejecutando:

apt install -y hdparm

La salida será similar a la siguiente:

Installing:                      
hdparm

Installing dependencies:
powermgmt-base

Summary:
Upgrading: 0, Installing: 2, Removing: 0, Not Upgrading: 0
Download size: 114 kB
Space needed: 276 kB / 24.4 GB available

Get:1 http://deb.debian.org/debian trixie/main amd64 hdparm amd64 9.65+ds-1.1 [107 kB]
Get:2 http://deb.debian.org/debian trixie/main amd64 powermgmt-base all 1.38 [7,284 B]
Fetched 114 kB in 0s (2,362 kB/s)
Selecting previously unselected package hdparm.
(Reading database ... 59088 files and directories currently installed.)
Preparing to unpack .../hdparm_9.65+ds-1.1_amd64.deb ...
Unpacking hdparm (9.65+ds-1.1) ...
Selecting previously unselected package powermgmt-base.
Preparing to unpack .../powermgmt-base_1.38_all.deb ...
Unpacking powermgmt-base (1.38) ...
Setting up powermgmt-base (1.38) ...
Setting up hdparm (9.65+ds-1.1) ...
Processing triggers for man-db (2.13.1-1) ...

Identificación del disco

Para averiguar el nombre del dispositivo ejecutamos

lsblk

La salida será similar a la siguiente:

NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1007K 0 part
├─sda2 8:2 0 512M 0 part /boot/efi
└─sda3 8:3 0 39.5G 0 part
├─pbs-swap 252:0 0 4.9G 0 lvm [SWAP]
└─pbs-root 252:1 0 29.7G 0 lvm /
sdb 8:16 0 18.2T 0 disk
├─sdb1 8:17 0 18.2T 0 part
└─sdb9 8:25 0 8M 0 part

En nuestro caso, el disco de interés es /dev/sdb.

Configuración del tiempo de apagado

Podemos configurar el tiempo de apagado (spindown) del disco con el parámetro -S.

Hay que tener en cuenta que los valores no son directos, sino funcionan de la siguiente forma:

  • 1-240: múltiplos de 5 segundos

    ejemplo: 120 significa 120 x 5 = 600 s = 5 minutos

  • 241-251: múltipo de 30 minutos

A continuación, se muestra una tabla de equivalencias

ValorTiempoValorTiempoValorTiempo
24130 minutos2421 hora2431 h 30 min
2442 horas2452 h 30 min2463 horas
2473 h 30 min2484 horas2494 h 30 min
2515 h 30 min
  • 0: desactiva el apagado automático
hdparm -S 242 /dev/sdb

Veremos una salida similar a la siguiente:

/dev/sdb:
setting standby to 242 (1 hour)

Comprobación de estado de disco

Ejecutamos el siguiente comando:

hdparm -C /dev/sdb

Veremos una salida similar a la siguiente:

/dev/sdb:
drive state is: standby

Persistencia de la configuración

Para hacer la configuración persistente, necesitamos configurar el servicio hdparm con los parámetros adecuados.

Para ello, añadimos al fichero /etc/hdparm.conf el siguiente contenido:

/dev/sdb {
spindown_time = 242
}

hd-idle

hd-idle es daemon que observa el I/O real del disco y si no hay actividad durante un tiempo determinado, envía comando de standby.

A diferencia de hdparm, no depende de temporizadores internos del disco, sino del uso real.

Instalación

Antes de proceder, actualizamos los repositorios del sistema operativo ejecuando

apt update

La salida sería similar a la siguiente:

Hit:1 http://security.debian.org/debian-security trixie-security InRelease
Hit:2 http://deb.debian.org/debian trixie InRelease
Hit:3 http://deb.debian.org/debian trixie-updates InRelease
Hit:4 http://download.proxmox.com/debian/pbs trixie InRelease
All packages are up to date.

Aprovechamos la intervención para actualizar el sistema operativo

apt upgrade -y

En el caso de que no hayan actualizaciones disponibles, la salida será similar a la siguiente:

Summary:                         
Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0

A contiuación, instalamos la utilidad hd-idle ejecutando:

apt install -y hd-idle

Veremos una salida similar a la siguiente:

Installing:                      
hd-idle

Summary:
Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
Download size: 730 kB
Space needed: 2,054 kB / 24.4 GB available

Get:1 http://deb.debian.org/debian trixie/main amd64 hd-idle amd64 1.21+ds-1+b8 [730 kB]
Fetched 730 kB in 0s (9,975 kB/s)
Selecting previously unselected package hd-idle.
(Reading database ... 59125 files and directories currently installed.)
Preparing to unpack .../hd-idle_1.21+ds-1+b8_amd64.deb ...
Unpacking hd-idle (1.21+ds-1+b8) ...
Setting up hd-idle (1.21+ds-1+b8) ...
Created symlink '/etc/systemd/system/multi-user.target.wants/hd-idle.service' → '/usr/lib/systemd/system/hd-idle.service'.
Processing triggers for man-db (2.13.1-1) ...

Identificación del disco

Para averiguar el nombre del dispositivo ejecutamos

lsblk

La salida será similar a la siguiente:

NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1007K 0 part
├─sda2 8:2 0 512M 0 part /boot/efi
└─sda3 8:3 0 39.5G 0 part
├─pbs-swap 252:0 0 4.9G 0 lvm [SWAP]
└─pbs-root 252:1 0 29.7G 0 lvm /
sdb 8:16 0 18.2T 0 disk
├─sdb1 8:17 0 18.2T 0 part
└─sdb9 8:25 0 8M 0 part

En nuestro caso, el disco de interés es /dev/sdb.

Configuración

Editmos el fichero /etc/default/hd-idle ejecutando:

nano /etc/default/hd-idle

Agregamos el siguiente contenido:

HD_IDLE_OPTS="-i 0 -a /dev/sdb -i 3600"

Activación del servicio

Activamos el servicio ejecutando:

systemctl enable --now hd-idle

Veremos una salida similar a la siguiente:

Synchronizing state of hd-idle.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable hd-idle