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
| Valor | Tiempo | Valor | Tiempo | Valor | Tiempo |
|---|---|---|---|---|---|
| 241 | 30 minutos | 242 | 1 hora | 243 | 1 h 30 min |
| 244 | 2 horas | 245 | 2 h 30 min | 246 | 3 horas |
| 247 | 3 h 30 min | 248 | 4 horas | 249 | 4 h 30 min |
| 251 | 5 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