Hdparm

De Wiki doc


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

Sources de la section