Aller au contenu

Température et santé du stockage

Qu'est-ce que hddtemp ?

hddtemp est un utilitaire en ligne de commande permettant de surveiller la température des disques durs sous Linux. Il fonctionne en récupérant les informations S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) des disques pour afficher leur température. Cet outil peut être utilisé pour prévenir la surchauffe des disques, un facteur qui pourrait entraîner une défaillance matérielle.

Support de hddtemp dans les distributions Linux récentes

hddtemp était historiquement disponible dans de nombreuses distributions Linux. Cependant, en raison de son manque de maintenance récente, il a été retiré de certaines distributions majeures, notamment Debian. Voici un tableau récapitulatif de la disponibilité de hddtemp dans les deux dernières versions des principales distributions Linux :

Distribution Version Disponibilité de hddtemp
Debian 12 (Bookworm) Non disponible
11 (Bullseye) Disponible
Ubuntu 23.04 Non disponible
22.04 (LTS) Disponible
Linux Mint 21.2 (Victoria) Non disponible
21.1 (Vera) Non disponible
RHEL 9 Non disponible
8 Non disponible
Fedora 38 Non disponible
37 Non disponible

Alternatives à hddtemp

Manuelles

Pour les distributions où hddtemp n'est plus disponible, il existe plusieurs alternatives pour surveiller la température des disques :

  1. smartctl : Utilitaire faisant partie du paquet smartmontools, il permet de récupérer des informations S.M.A.R.T. plus détaillées sur les disques durs et les SSD, y compris la température.

    sudo smartctl -A /dev/sdX | grep Temperature_Celsius
    
  2. nvme-cli : Pour les disques NVMe, nvme-cli fournit des informations détaillées sur la santé du disque, y compris la température.

    sudo nvme smart-log /dev/nvmeX | grep temperature
    

Comme mentionné précédemment, hddtemp utilise les données S.M.A.R.T. des disques pour déterminer la température. Les informations S.M.A.R.T. sont un ensemble d'attributs surveillant la fiabilité des disques durs et des SSD. Cela inclut non seulement la température, mais aussi d'autres indicateurs clés comme le nombre de secteurs réalloués, les erreurs de lecture et d'écriture, et les temps de démarrage. Pour accéder à ces informations sans hddtemp, les outils comme smartctl sont recommandés.

Par script

En remplacement du défunt programme "Hddtemp" sous Debian.

#!/bin/bash
STR="MODEL|DEV|TESTS|REALLOCATED_SECTORS|SEEK_ERRORS|PENDING|UNCORRECTABLE_SECTORS|RUN_HOURS|TEMPERATURE\n"
while read DISK; do
    INFO=$(smartctl -a "${DISK}")
    MODEL=$(echo "${INFO}"|grep "Device Model"|sed 's/Device Model: *//')
    if [[ -z "${MODEL}" ]]; then
        MODEL="-"
    fi
    TESTS=$(echo "${INFO}"|grep "overall-health"|sed 's/overall-health: *//'|sed 's/ //g'|cut -d ":" -f2)
    if [[ -z "${TEST}" ]]; then
        TEST="-"
    fi
    REALLOC=$(echo "${INFO}"|grep "Reallocated_Sector_Ct"|sed 's/Reallocated_Sector_Ct: *//'|sed 's/.*-//g'|sed 's/ //g'|cut -d "(" -f1)
    if [[ -z "${REALLOC}" ]]; then
        REALLOC="-"
    fi
    SEEK=$(echo "${INFO}"|grep "Seek_Error_Rate"|sed 's/Seek_Error_Rate: *//'|sed 's/.*-//g'|sed 's/ //g'|cut -d "(" -f1)
    if [[ -z "${SEEK}" ]]; then
        SEEK="-"
    fi
    PENDING=$(echo "${INFO}"|grep "Current_Pending_Sector"|sed 's/Current_Pending_Sector: *//'|sed 's/.*-//g'|sed 's/ //g'|cut -d "(" -f1)
    if [[ -z "${PENDING}" ]]; then
        PENDING="-"
    fi
    UNCORRECT=$(echo "${INFO}"|grep "Offline_Uncorrectable"|sed 's/Offline_Uncorrectable: *//'|sed 's/.*-//g'|sed 's/ //g'|cut -d "(" -f1)
    if [[ -z "${UNCORRECT}" ]]; then
        UNCORRECT="-"
    fi
    HOURS=$(echo "${INFO}"|grep "Power_On_Hours"|sed 's/Power_On_Hours: *//'|sed 's/.*-//g'|sed 's/ //g'|cut -d "(" -f1)
    if [[ -z "${HOURS}" ]]; then
        HOURS="-"
    fi
    TEMP=$(echo "${INFO}"|grep "Temperature_Celsius"|sed 's/.*-//g'|sed 's/ //g'|cut -d "(" -f1)
    if [[ -z "${TEMP}" ]]; then
        TEMP="-"
    fi
    STR="${STR}\n${MODEL}|$(echo ${DISK}|sed 's/\/dev\///g')|${TESTS}|${REALLOC}|${SEEK}|${PENDING}|${UNCORRECT}|${HOURS}|${TEMP}"
done < <(ls /dev/sd?|tr " " "\n")
echo -en "${STR}"|column -s "|" -t

Visualisation des résultats

MODEL                  DEV  TESTS   REALLOCATED_SECTORS  SEEK_ERRORS  PENDING  UNCORRECTABLE_SECTORS  RUN_HOURS  TEMPERATURE
-                      sda          -                    -            -        -                      -          -
WDC WD102KRYZ-01A5AB0  sdb  PASSED  0                    0            0        0                      1313       38
ST10000VE0008-2PQ103   sdc  PASSED  0                    372325321    0        0                      11877      34

Installation de Hddtemp

Warning

Quand il est installable...ce qui n'est plus le cas sous Debian 12 !!

apt-get install hddtemp

Usage de Hddtemp

hddtemp -d /dev/sd[abcde]