Jump to content
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

- https://sourceforge.net/projects/hdparm/ - hdparm sur SourceForge

Categories:

- File systems (Français)
- Storage (Français)