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 !
