Recherche de site Web

Comment vérifier l’état d’un disque dur à partir de la ligne de commande à l’aide de smartctl


Le paquet smartmontools est généralement disponible dans les dépôts par défaut de toutes les principales distributions Linux. Il contient deux utilitaires utiles pour vérifier l’état du stockage avec le support S.M.A.R.T (Self Monitoring Analysis and Reporting Technology) : smartcl et smartd. Le premier est l’utilitaire que nous utilisons directement pour vérifier les attributs S.M.A.R.T, exécuter des tests ou effectuer d’autres actions ; Ce dernier est le démon qui peut être utilisé pour planifier des opérations en arrière-plan. Dans ce tutoriel, nous allons apprendre l’utilisation de base de smartctl.

Dans ce tutoriel, vous allez apprendre :

  • Comment installer le paquet smartmontools sur diverses distributions
  • Quelles sont les différences entre les autotests S.M.A.R.T
  • Comment utiliser smartctl pour vérifier l’état d’un périphérique de stockage
  • Comment exécuter des tests sur un périphérique de stockage à partir de la ligne de commande

Comment vérifier l’état d’un disque dur à partir de la ligne de commande à l’aide de smartctl

Configuration logicielle requise et conventions utilisées

Installation

Comme mentionné précédemment, le paquet smartmontools est disponible dans les dépôts de toutes les principales distributions Linux, donc tout ce que nous avons à faire pour l’installer, est d’utiliser notre gestionnaire de paquets préféré. Si vous utilisez Debian ou l’un de ses dérivés, comme Ubuntu ou Mint, par exemple, vous pouvez exécuter :

sudo apt-get update && sudo apt-get install smartmontools

Sur les versions récentes de Red Hat Enterprise Linux, CentOS et Fedora, nous pouvons utiliser dnf :

sudo dnf install smartmontools

Si Archlinux est votre distribution préférée, vous pouvez utiliser pacman :

sudo pacman -S smartmontools

Vérifier si SMART est activé

Familiarisons-nous avec l’utilitaire smartctl. La première chose que nous voulons vérifier est si la prise en charge S.M.A.R.T est active sur l’appareil. Pour effectuer cette opération, nous pouvons exécuter l’utilitaire smartctl avec l’option -i (abréviation de --info) :

sudo smartctl -i /dev/sda

Le résultat de la commande est le suivant :

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Red
Device Model:     WDC WD10EFRX-68FYTN0
LU WWN Device Id: 5 0014ee 20c672def
Firmware Version: 82.00A82
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Thu Sep 24 18:13:19 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Disabled

Nous pouvons voir que des informations de base sont affichées telles que la famille de l’appareil, le modèle, la taille des secteurs, etc. Ce qui nous intéresse le plus, cependant, c’est le contenu des deux dernières lignes. À partir de là, nous pouvons voir que l’appareil dispose de capacités SMART et que, dans ce cas, la prise en charge SMART est désactivée. Que se passe-t-il si nous voulons l’activer ? Tout ce que nous avons à faire est d’exécuter smartctl avec l’option -s, en utilisant « on » comme argument :

sudo smartctl -s on /dev/sda
smartctl 6.6 2017-11-05 r4594 [armv6l-linux-5.4.51+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

Se familiariser avec smartctl

Pour obtenir toutes les informations SMART disponibles sur un périphérique de stockage, nous pouvons lancer l’utilitaire avec l’option -a (abréviation de -all) et bien sûr passer le chemin d’accès du périphérique que nous voulons vérifier comme dernier argument de la commande. Supposons que nous voulions vérifier l’état actuel du périphérique /dev/sda ; Nous courrions :

sudo smartctl -a /dev/sda

La commande ci-dessus produit beaucoup de sortie. Entre autres choses, nous pouvons voir l’état de divers paramètres SMART :

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   135   125   021    Pre-fail  Always       -       4216
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       941
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   085   085   000    Old_age   Always       -       11285
 10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       446
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       108
193 Load_Cycle_Count        0x0032   199   199   000    Old_age   Always       -       4258
194 Temperature_Celsius     0x0022   111   099   000    Old_age   Always       -       32
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0

Les paramètres très importants à vérifier sont, entre autres, « Reallocated_Sector_Ct » et « Current_Pending_Sector ». Dans les deux cas, si le RAW_VALUE est autre que 0, nous devons être très prudents et commencer à sauvegarder les données sur le disque dur. Le Reallocated_Sector_Ct est le nombre de secteurs sur le périphérique de bloc qui ne peuvent pas être utilisés correctement.

Lorsqu’un tel secteur est détecté, il est remappé à l’un des secteurs < >rechange disponibles du périphérique de stockage, et les données qu’il contient sont déplacées. L’attribut Current_Pending_Sector, à la place, est le nombre de secteurs défectueux qui attendent toujours d’être remappés. Si vous voulez en savoir plus sur les attributs S.M.A.R.T et leur signification, vous pouvez commencer à jeter un coup d’œil à la page S.M.A.R.T de wikipédia.

Dans la sortie, nous pouvons également voir un journal des tests effectués sur l’appareil :

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
1  Short offline       Completed without error       00%      9590         -
2  Short offline       Completed without error       00%      2941         -
3  Extended offline    Completed without error       00%        21         -
4  Short offline       Completed without error       00%        18         -
5  Short offline       Completed without error       00%         0         -
6  Short offline       Completed without error       00%         0         -

Dans la colonne Test_Description, nous pouvons voir que différents types de tests ont été exécutés, et tous ont été terminés sans erreur. Dans la section suivante, nous verrons quelles sont les différences entre eux et comment lancer réellement un test sur un périphérique de stockage.

Tests SMART disponibles

L’utilitaire smartctl peut être utilisé pour lancer une variété d’auto-tests :

  • courte
  • longue
  • moyen de transport (appareils ATA seulement)
  • select (périphériques ATA uniquement)

Voyons rapidement quelles sont les différences entre eux.

Ce court test est destiné à vérifier rapidement les problèmes les plus courants qui pourraient être trouvés sur un périphérique de stockage. Le test ne doit pas durer plus de 10 minutes : les performances mécaniques, électriques et de lecture d’un disque sont vérifiées.

Le test long est essentiellement une version plus précise du test « court ». Cela peut prendre beaucoup de temps à réaliser : comme indiqué dans le manuel smartctl, cela peut durer de quelques dizaines de minutes à plusieurs heures.

Le test de transport est destiné à vérifier s’il n’y a pas eu de dommages pendant le transport de l’appareil. Il faut généralement quelques minutes pour effectuer un test de transport. Il n’est disponible que sur les appareils ATA.

Le test de sélection, comme celui de « conveyance », n’est disponible que sur les périphériques ATA et ne vise à vérifier que la plage spécifiée de LBA (Logical Block Addresses). La plage d’adresses est spécifiée lors du lancement du test. Par exemple, pour vérifier les adresses de 10 à 20 (inclus), nous exécuterions :

sudo smartctl -t select,10-20

Il est possible de spécifier un maximum de 5 plages différentes de LBA à vérifier en répétant l’option -t :

sudo smartctl -t select,0-5 -t select,5-10

L’option -t est l’abréviation de --test et est utilisée pour exécuter un test immédiatement.

Exécution d’un test

Nous avons vu quels sont les tests possibles que nous pouvons exécuter avec l’utilitaire smartctl. Voyons maintenant comment lancer un test. Comme nous l’avons vu à la fin de la section précédente, l’option -t est utilisée pour exécuter un test immédiatement ; Nous devons fournir le type de test que nous voulons exécuter comme argument de l’option. Pour exécuter un court test sur le périphérique /dev/sda, nous exécuterions :

sudo smartctl -t short /dev/sda
smartctl 6.6 2017-11-05 r4594 [armv6l-linux-5.4.51+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Thu Sep 24 14:39:05 2020

Use smartctl -X to abort test.

Le résultat de la commande indique le temps que nous devons attendre pour que le test se termine ainsi que la date et l’heure auxquelles il doit être terminé. Après l’intervalle de temps spécifié, pour vérifier les résultats du test, nous pouvons exécuter :

sudo smartctl -a /dev/sda

Comme vous pouvez le remarquer, le test (le premier de la liste – #1) et ses résultats ont été ajoutés à la liste des journaux. Il a été complété sans erreurs :

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
1  Short offline       Completed without error       00%     11286         -
2  Short offline       Completed without error       00%      9590         -
3  Short offline       Completed without error       00%      2941         -
4  Extended offline    Completed without error       00%        21         -
5  Short offline       Completed without error       00%        18         -
6  Short offline       Completed without error       00%         0         -
7  Short offline       Completed without error       00%         0         -

Il est possible de connaître le temps estimé qu’il faudrait pour terminer un test. Ces informations doivent être incluses dans la sortie de la commande smartctl -a /dev/sdx, mais peuvent être demandées explicitement en lançant smartctl avec l’option -c (abréviation de --capabilities). Voici les lignes intéressantes de la sortie :

sudo smartctl -c /dev/sda
[...]
Short self-test routine
recommended polling time:    (   2) minutes.
Extended self-test routine
recommended polling time:    ( 157) minutes.
Conveyance self-test routine
recommended polling time:    (   5) minutes.
[...]

Exécutons maintenant un test de transfert :

sudo smartctl -t conveyance /dev/sda

Nous attendons 5 minutes, puis vérifions les résultats. Comme prévu, le test apparaît maintenant dans la liste, et heureusement, aucune erreur n’a été trouvée :

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
1  Conveyance offline  Completed without error       00%     11286         -
2  Short offline       Completed without error       00%     11286         -
3  Short offline       Completed without error       00%      9590         -
4  Short offline       Completed without error       00%      2941         -
5  Extended offline    Completed without error       00%        21         -
6  Short offline       Completed without error       00%        18         -
7  Short offline       Completed without error       00%         0         -
8  Short offline       Completed without error       00%         0         -

Maintenant, pour un simple test de sélection :

sudo smartctl -t select,100-150 /dev/sda
smartctl 6.6 2017-11-05 r4594 [armv6l-linux-5.4.51+] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Selective self-test routine immediately in off-line mode".
SPAN         STARTING_LBA           ENDING_LBA
   0                  100                  150
Drive command "Execute SMART Selective self-test routine immediately in off-line mode" successful.
Testing has begun.

Ce test est passé avec succès :

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
1  Selective offline   Completed without error       00%     11287         -
2  Conveyance offline  Completed without error       00%     11286         -
3  Short offline       Completed without error       00%     11286         -
4  Short offline       Completed without error       00%      9590         -
5  Short offline       Completed without error       00%      2941         -
6  Extended offline    Completed without error       00%        21         -
7  Short offline       Completed without error       00%        18         -
8  Short offline       Completed without error       00%         0         -
9  Short offline       Completed without error       00%         0         -

Encore une fois, les résultats des tests sont inclus dans la sortie générée lorsque smartctl est lancé avec l’option -a ; Si l’on veut se concentrer uniquement sur les journaux, on peut utiliser l’option -l (--log) et spécifier quel type de journaux doit être affiché. Pour afficher uniquement les journaux d’erreurs, il faut exécuter :

sudo smartctl -l error /dev/sda

Pour inclure également les journaux d’autotests, à la place :

sudo smartctl -l error -l selftest /dev/sda

Lorsque smartctl est lancé avec l’option -a, les erreurs, les autotests et les journaux sélectifs sont inclus dans la sortie des périphériques ATA.

Conclusions

Dans ce tutoriel, nous avons vu comment installer le paquet smartmontools sur certaines des distributions Linux les plus utilisées et comment utiliser l’utilitaire smartctl pour vérifier l’état des paramètres S.M.A.R.T sur un périphérique de stockage. Nous avons également vu quels sont les tests possibles que nous pouvons effectuer, et quelles sont les différences entre eux. Nous avons également vu comment lancer un test et comment en obtenir les résultats. Dans le prochain article, nous verrons comment planifier des tests à l’aide du démon smartd, et comment être averti par un e-mail lorsqu’une erreur est rencontrée. Restez à l’écoute !

Articles connexes: