Hdparm (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de Hdparm. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

hdparm et sdparm sont des utilitaires en ligne de commande pour définir et visualiser les paramètres matériels des Disque Dur. hdparm peut également être utilisé comme un simple outil de benchmarking.

A l'origine, hdparm a été créé pour les disques IDE et sdparm pour les disques SCSI. Comme les interfaces des périphériques de stockage depuis 2010 environ sont un mélange amélioré d'IDE et de SCSI, hdparm et sdparm se complètent.

Attention: Changer les paramètres par défaut du disque peut geler le système ou même endommager le disque de manière irréversible.

Installation

Installez le paquet hdparm. Pour une utilisation avec des périphériques SCSI, installez le paquet sdparm.

Utilisation

Informations sur le disque

Pour obtenir des informations sur les disques durs, exécutez ce qui suit :

# hdparm -I /dev/sda

Benchmarking

hdparm peut être utilisé pour du Benchmarking#hdparm.

Configuration de la gestion de l'alimentation

Les disques durs modernes prennent en charge de nombreuses fonctions de gestion de l'alimentation, les plus courantes sont résumées dans le tableau suivant. Consultez hdparm(8) pour la liste complète.

Attention: Une gestion de l'alimentation trop agressive peut réduire la durée de vie des disques durs en raison de leurs stationnements et arrêts fréquents.
Paramètre Description
-B Définit la fonction Advanced Power Management. Les valeurs possibles sont comprises entre 1 et 255, les valeurs faibles signifiant une gestion de l'énergie plus agressive et les valeurs élevées une meilleure performance. Les valeurs de 1 à 127 autorisent le spin-down, tandis que les valeurs de 128 à 254 ne le permettent pas. Une valeur de 255 désactive complètement la fonction.
-S Définissez le délai d'attente en mode veille (spin down) pour le disque. Ce délai spécifie le temps d'attente en mode veille (sans activité du disque) avant de couper le moteur pour économiser de l'énergie. La valeur 0 désactive le spindown, les valeurs de 1 à 240 spécifient des multiples de 5 secondes et les valeurs de 241 à 251 des multiples de 30 minutes.
-M Définit la fonction Automatic Acoustic Management. La plupart des disques durs modernes ont la capacité d'accélérer les mouvements de la tête afin de réduire leur niveau de bruit. La valeur possible dépend du disque, certains disques peuvent ne pas prendre en charge cette fonctionnalité.
Note: Lorsque vous passez à la fois les paramètres -B et -S, les valeurs APM inférieures à 128 peuvent provoquer l'arrêt du disque avant la valeur de timeout -S. Consultez [1].

Pour demander la valeur actuelle, passez le paramètre sans valeur. Par exemple :

# hdparm -B /dev/sda

Pour appliquer une valeur différente, par exemple définir APM à 127 :

# hdparm -B 127 /dev/sda

Cache en écriture

La mise en cache en écriture est le processus de mise en cache temporaire des fichiers dans la mémoire intégrée du disque avant de les écrire sur le disque, ce qui constitue essentiellement une amélioration des performances. La mise en cache en écriture est une fonctionnalité fournie par la plupart des disques durs, et elle est activée par défaut dans la plupart des cas. Pour vérifier si c'est le cas, exécutez :

$ hdparm -W /dev/sdX
Attention: Bien que le cache en écriture améliore gratuitement les performances, il présente également un inconvénient. L'activation du cache en écriture augmente le risque de perte de données en cas de coupure soudaine de l'alimentation.

S'il est désactivé, on peut l'activer avec :

$ hdparm -W 1 /dev/sdX.

À l'inverse, pour le désactiver, on peut utiliser :

$ hdparm -W 0 /dev/sdX

Mettre hors tension un disque dur

Un cas d'utilisation typique, où une telle fonctionnalité est recherchée, est celui des disques connectés à un boîtier externe USB/SATA/FireWire bon marché, ou à un concentrateur. S'il n'émet pas correctement une commande d'arrêt au disque lors de la mise hors tension, le disque est forcé d'effectuer un retrait d'urgence de la tête. Si vous faites cela régulièrement, tôt ou tard, le disque sera cassé. Une solution consiste, une fois que l'on est sûr que les données ont été écrites sur le support, à exécuter une commande pour éteindre le lecteur :

# hdparm -Y /dev/sdX
Attention: Soyez absolument certain que :
  1. Les données ont bien été écrites sur le support. Il est également conseillé d'attendre un certain temps pour que le lecteur devienne inactif.
  2. Le périphérique, /dev/sdX dans l'exemple, est celui que vous voulez éteindre.

Trucs et astuces

Interroger l'état du disque sans le réveiller

L'invocation de hdparm avec l'option query est connue pour réveiller certains disques. Dans ce cas, considérez smartctl fourni par smartmontools pour interroger le périphérique qui ne réveillera pas un disque endormi. Par exemple :

# smartctl -i -n standby /dev/sda
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-4.10.13-1-ARCH] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

Device is in STANDBY mode, exit(2)

Configuration persistante à l'aide de la règle udev

Pour que la configuration soit persistante après un redémarrage, on peut utiliser une règle udev :

/etc/udev/rules.d/69-hdparm.rules
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda", RUN+="/usr/bin/hdparm -B 254 -S 0 /dev/sda"

Étant donné qu'un disque peut être attribué de manière aléatoire à un /dev/sdX en tant que périphérique, le disque peut également être identifié par son numéro de série comme expliqué dans Udev (Français)#Identifier un disque par son numéro de série.

Les systèmes dotés de plusieurs disques durs peuvent appliquer la règle de manière flexible en fonction de certains critères. Par exemple, pour appliquer les paramètres d'économie d'énergie à tous les disques rotatifs (disque dur avec tête rotative, excluant en particulier les solid state drives), utilisez la règle suivante :

/etc/udev/rules.d/69-hdparm.rules
ACTION=="add|change", KERNEL=="sd[a-z]", ATTRS{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 /dev/%k"

Ré-application de la configuration après le réveil

Si la configuration est perdue après une suspension/hibernation du système, elle peut être réappliquée en utilisant systemd-sleep.

Placez un script dans /usr/lib/systemd/system-sleep et rendez-le exécutable :

/usr/lib/systemd/system-sleep/hdparm
#!/bin/sh

case $1 in post)
        /usr/bin/hdparm -B 254 -S 0 /dev/sda
        ; ;
esac

Mise en veille d'un lecteur directement après le démarrage

Un périphérique qui est rarement utilisé peut être mis en veille directement à la fin du processus de démarrage. Cela ne fonctionne pas avec la règle udev ci-dessus car cela se produit trop tôt. Pour lancer la commande lorsque le démarrage est terminé, il suffit de créer un service systemd puis activez-le :

/etc/systemd/system/hdparm.service
[Unit]
Description=hdparm sleep

[Service]
Type=oneshot
ExecStart=/usr/bin/hdparm -q -S 120 -y /dev/sdb

[Install]
WantedBy=multi-user.target

Utilisation de matériel non pris en charge

Certains disques ne prennent pas en charge l'extinction via hdparm. Un message d'erreur de diagnostic similaire au suivant est une bonne indication que c'est le cas :

# hdparm -S 240 /dev/sda
/dev/sda:
setting standby to 240 (20 minutes)
HDIO_DRIVE_CMD(setidle) failed: Invalid argument

Pour certains autres disques, la commande hdparm est reconnue mais le disque ne respecte pas les paramètres (soit APM ou spin down timer). Ceci a été observé avec un disque dur Toshiba P300 (modèle HDWD120).

De tels disques peuvent être mis hors tension en utilisant hd-idleAUR qui est fourni avec un service systemd (Français). Éditez /etc/conf.d/hd-idle et la valeur HD_IDLE_OPTS, puis démarrez et activez hd-idle.service.

Exemple utilisant un temps d'inactivité de 10 min pour /dev/sda et un temps d'inactivité de 1 min pour /dev/disk/by-uuid/01CF0AC9AA5EAF70 :

HD_IDLE_OPTS="-i 0 -a /dev/sda -i 600 -a /dev/disk/by-uuid/01CF0AC9AA5EAF70 -i 60"

le paramètre de départ -i 0 indique que la fonction hd-idle est désactivée sur les autres disques.

Gestion de l'alimentation pour les disques Western Digital Green

Les disques durs Western Digital Green ont une minuterie spéciale idle3 qui contrôle le temps d'attente du disque avant de positionner ses têtes dans leur position de parking et d'entrer dans un état de faible consommation d'énergie. Le réglage d'usine par défaut est agressivement fixé à 8 secondes, ce qui peut entraîner des milliers de cycles de chargement/déchargement des têtes en un court laps de temps et éventuellement une défaillance prématurée, sans parler de l'impact sur les performances du disque qui doit souvent se réveiller avant d'effectuer des E/S de routine. Western Digital a publié une information, affirmant que Linux n'est pas optimisé pour les périphériques de stockage à faible consommation et conseillant de réduire la fréquence d'enregistrement. Il existe différentes façons de modifier l'état idle3 :

  1. Western Digital fournit un utilitaire DOS wdidle3.exe à télécharger permettant de modifier ce paramètre. Cet utilitaire est conçu pour mettre à jour uniquement le firmware des disques durs suivants : WD1000FYPS, WD7500AYPS, WD7501AYPS mais il est connu pour être capable de modifier la minuterie idle3 d'autres modèles Green également.
  2. hdparm propose une implémentation de rétro-ingénierie derrière le paramètre -J, qui n'est pas aussi complète que le programme officiel original, même si elle semble fonctionner sur au moins quelques disques. Un réglage de 30 secondes est recommandé pour une utilisation sous Linux. Spécifiez une valeur de zéro (0) pour désactiver complètement la minuterie idle3 de WD ('non recommandé):
    # hdparm -J 30 --please-destroy-my-drive /dev/sda
    Consultez #Configuration persistante à l'aide de la règle udev pour utiliser automatiquement ce paramètre sur les disques durs pris en charge.
  3. Un autre utilitaire non officiel est fourni par le paquet idle3-tools. Une valeur brute idle3 est passée en paramètre de la commande idle3ctl. La correspondance entre cette valeur et le délai d'attente en secondes est fournie dans le tableau inférieur de idle3ctl(8). La commande suivante définit le temporisateur à 30 secondes:
    # idle3ctl -s 129 /dev/sdc
    La commande suivante désactive complètement le timer (non recommandé):
    # idle3ctl -d /dev/sdc
Note:
  • Un cycle d'alimentation complet est nécessaire pour que tout changement prenne effet, quel que soit le programme ci-dessus utilisé. Cela signifie que le disque doit être mis hors tension puis sous tension, un simple redémarrage ne suffit pas.
  • Certains disques Western Digital Green sont également connus pour avoir une interprétation différente du paramètre de délai de mise en veille de hparm, -S 1, ce qui entraîne un délai de 10 minutes au lieu de 5 secondes.
  • La consommation d'énergie d'un disque Green est généralement d'environ 5,3 W en lecture/écriture, 4,7 W en mode veille et 0,7 W en mode veille.

Dépannage

Réinitialisation du niveau APM après la suspension

Le niveau APM peut être réinitialisé après une suspension, ce qui nécessite de le réexécuter après chaque reprise. Ceci peut être automatisé avec l'unité systemd suivante (adaptée d'un fil du forum) :

/etc/systemd/system/apm.service
[Unit]
Description=Local system resume actions
After=suspend.target hybrid-sleep.target hibernate.target

[Service]
Type=simple
ExecStart=/usr/bin/hdparm -B 254 /dev/sda

[Install]
WantedBy=sleep.target
Note: La sleep.target est requise par toutes les cibles suspend, hybrid-sleep et hibernate, mais elle termine le démarrage avant que le système soit suspendu, donc les trois cibles doivent être spécifiées explicitement. Consultez [2].

Vous pouvez également créer un hook dans /usr/lib/systemd/system-sleep.

Consulter aussi