Hdparm
Hdparm est un outil permettant de réaliser des opérations sur des disques SATA (pour du SCSI, utiliser Sdparm).
L'ensemble des fonction est visualisable via la commande
hdparm -I /dev/sda
Mise en veille
Un disque dur peut être mis en veille après un certain temps d'inactivité ou sur commande. Dans tout les cas, il se relancera automatiquement à la première tentative d'accès du système. Veillez donc à ne pas le mettre dans une situation où il se met en veille, se réveille, se remet en veille et se reréveille constamment car cette pratique a pour réputation de niquer très rapidement les disques durs.
L'état du disque est visualisable avec la commande
hdparm -C /dev/sda
Si le retour est "unknow" c'est que le disque tourne. Lorsque le retour est à "standby", la tête de lecture est parquée et le moteur à l'arrêt (il est donc en veille).
Programmer la mise en veille
Cette fonction s'appelle Advanced Power Management (APM) et se manipule avec l'argument -B
. Elle accepte une valeur comprise entre 1 et 254 (plus c'est proche de 1, plus l’énergie est optimisée au détriment de la performance - je n'ai pas plus de détail sur cette notion). Chaque unité correspond à 5 secondes (on calculera donc n*5 = temps d'inactivité en secondes avant l'arrêt du disque) et seules les valeurs comprises entre 1 et 127 permettent l'arrêt complet du disque dur (il n'est donc pas possible de programmer l'extinction d'un disque au delà de 635 secondes d’inactivité par cette simple méthode). La valeur par défaut est à 128 (définit par Systemd de ce que j'ai lu) sur mon disque dur (je ne sais pas ce que font les valeur au delà de 127...).
La valeur définie s'obtient par
hdparm -I /dev/sda | grep level
ou
hdparm -B /dev/sda
Pour la modifier il suffit de préciser la valeur souhaité après le paramètre
hdparm -B 60 /dev/sda
Cette dernière se réinitialise au démarrage, il faudra donc user d'astuce pour la maintenir fonctionnelle. Le Wiki d'Archlinux propose un service Systemd pour gérer ceci (le fait de passer par Cron n'est pas fiable de ce que j'ai lu).
vim /etc/systemd/system/hdparm.service
[Unit]
Description=hdparm sda
[Service]
Type=oneshot
ExecStart=/usr/bin/hdparm -B 60 /dev/sda
[Install]
WantedBy=multi-user.target sleep.target
systemctl daemon-reload systemctl enable hdparm.service systemctl status hdparm.service
Mettre en veille immédiatement
Il est possible de mettre le disque en veille directement sans attendre avec la commande
hdparm -y /dev/sda