Smartmontool

Smartmontools est un outil d'analyse de disque dur et de leurs caractéristiques physiques les plus critiques. Il se compose de deux parties : smartd le daemon, qui verifie par périodes de 30 minutes les paramètres en écrivant le résultat dans /var/log/syslog, et la commande smartctl qui nécessite les droits root et qui sert à afficher toutes les informations.

Activation / Installation de smartmontool

L'installation nécessite également les privilèges root : Le nom du package varie selon votre version de debian. L'exemple si dessous concerne une sarge .


# apt-get install smartmontools
Lecture des listes de paquets... Fait
Construction de l'arbre des dependances... Fait
Les NOUVEAUX paquets suivants seront installes :
smartmontools
0 mis a jour, 1 nouvellement installes, 0 a enlever et 60 non mis a jour.
Il est necessaire de prendre 222ko dans les archives.
Apres depaquetage, 508ko d'espace disque supplementaires seront utilises.
Reception de : 1 http://ftp.fr.debian.org unstable/main smartmontools 5.32-3 [222kB]
222ko receptionnes en 0s (272ko/s)
Selection du paquet smartmontools precedemment deselectionne.
(Lecture de la base de données... 67466 fichiers et repertoires deja installes.)
Depaquetage de smartmontools (a partir de .../smartmontools_5.32-3_i386.deb) ...
Parametrage de smartmontools (5.32-3) ...
Not starting S.M.A.R.T. daemon smartd, disabled via /etc/default/smartmontools

Comme vous pouvez voir, le daemon n'as pas été lancé de suite, il faut encore éditer /etc/default/smartmontools et de-commanter les lignes start_smartd=yes et smartd_opts="—interval=1800"


23:20 root@revolution /# vi /etc/default/smartmontools
Defaults for smartmontools initscript (/etc/init.d/smartmontools)
# This is a POSIX shell fragment

# list of devices you want to explicitly enable S.M.A.R.T. for
# not needed if the device is monitored by smartd
# enable_smart="/dev/hda /dev/hdb"

# uncomment to start smartd on system startup
start_smartd=yes

# uncomment to pass additional options to smartd on startup
smartd_opts="--interval=1800"
<code>

Les changements validés, lancez le daemon avec la commande {/etc/init.d/smartmontools start}

<code>
# /etc/init.d/smartmontools start
Enabling S.M.A.R.T. for: /dev/hda /dev/hdb.
Starting S.M.A.R.T. daemon: smartd.
23:21 root@revolution /# smartctl -a /dev/hda
smartctl version 5.32 Copyright (C) 2002-4 Bruce Allen

Le daemon smartd contrôlera maintenant à un rythme régulier les informations de votre disque et les inscrit dans vos logs :


# cat /var/log/syslog | grep smartd
Mar 17 10:48:34 slut smartd[990]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices

Et voilà c'est prêt.

réglages fin

Pour régler finement la configuration de smartmontools il vous faut éditer le fichier /etc/smartd.conf et rechercher la ligne DEVICESCAN ajouter vos propre réglage comme sur cet exemple :

DEVICESCAN -H -l error -l selftest -t -f -m admin@votredomaine.fr -M exec /usr/bin/mail -s (S/../.././02|L/../../6/03)

La directive DEVICESCAN indique que l'on souhaite appliquer cette configuration à tous les disques dur détectés comme compatible SMART sur le système. Elle peut-être remplacée par le nom d'un périphérique /dev/hdx ou /dev/sdx.


/dev/hda -H -l error -l selftest -t -f -m admin@votredomaine.fr -M exec /usr/bin/mail -s (S/../.././02|L/../../6/03)
/dev/hdc -H -l error -l selftest -t -f -m admin@votredomaine.fr -M exec /usr/bin/mail -s (S/../.././02|L/../../6/03)

L'ajout de cette ligne dans le fichier de configuration permet d'émettre un email à admin@domain.com en utilisant la commande mail de votre système. L'option -t indique que nous souhaitons être informé au cas où l'attribut « Pre-Fail » ou « Old-age » présente des erreurs, si le test de santé (option -H) échoue ou si les journaux d'erreurs error et selftest évoluent (-l). On peut choisir parmi un panel d'options afin d'ajuster au mieux en fonction de ses besoins. On peut par exemple décider d'ignorer volontairement un attribut à l'aide de l'option -I. L'ajout de l'option -I 194 indique que nous souhaitons recevoir un mail en cas de panne mais en ignorant l'attribut numéro 194 (la température). L'option -s permet de définir la périodicité des tests à réaliser ( version >5.30 nécessaire). Dans cet exemple, nous réalisons un test court (S/) tous les jours à 2 heures du matin, et un test long tous les samedi à 3 heures du matin. Il est également possible de modifier le mail qui sera envoyé par smartd en cas de panne. Il suffit de créer un script qui sera appelé à la place de /bin/mail.

Diagnostique et recherche d'erreur

Comme smartd écrit dans /var/log/syslog il est facile de rechercher avec une commande grep un message comme dans l'exemple suivant :


[root@slut /]# grep smartd /var/log/syslog
Mar 17 10:48:34 slut smartd[990]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices
Mar 17 10:48:34 slut smartd[990]: Device: /dev/hda, opened
Mar 17 10:48:34 slut smartd[990]: Device: /dev/hda, found in smartd database.
Mar 17 10:48:35 slut smartd[990]: Device: /dev/hda, is SMART capable. Adding to "monitor" list.
Mar 17 10:48:35 slut smartd[990]: Device: /dev/hdb, opened
Mar 17 10:48:35 slut smartd[990]: Device: /dev/hdb, not ATA, no IDENTIFY DEVICE Structure
Mar 17 10:48:35 slut smartd[990]: Monitoring 1 ATA and 0 SCSI devices
mar 17 10:48:35 slut smartd: Lancement smartd succeeded
Mar 17 10:48:35 slut smartd[2421]: smartd has fork()ed into background mode. New PID=2421.
Mar 17 13:48:35 slut smartd[2421]: Device: /dev/hda, SMART Prefailure Attribute: 8 Seek_Time_Performance changed from 246 to 247
Mar 17 15:48:35 slut smartd[2421]: Device: /dev/hda, SMART Prefailure Attribute: 8 Seek_Time_Performance changed from 247 to 246
Mar 17 17:18:35 slut smartd[2421]: Device: /dev/hda, SMART Prefailure Attribute: 8 Seek_Time_Performance changed from 246 to 247

Comment interpréter ces lignes ? Le disque montre une valeur constante qui varie entre 246 et 247. Si la valeur change de brutalement de 247 à 500, il s'agit d'un comportement anormal.

L'utilisation de la commande smartctl nécessite les droits root. Voyons les différents attributs de la commande.

smartl -h


[root@ slut /]# smartctl -h
smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/[1]
Usage: smartctl [options] device
h, --help, --usage
Display this help and exit
i, --info
Show identity information for device
a, --all
Show all SMART information for device

smartctl -i /dev/hda


=== START OF INFORMATION SECTION ===
Device Model: Maxtor 6E040L0
Serial Number: E1KTPXFE
Firmware Version: NAR61590
User Capacity: 41,110,142,976 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: ATA/ATAPI-7 T13 1532D revision 0
Local Time is: Thu Mar 17 22:21:52 2005 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

smartctl -a /dev/hda


[root@ slut /]# smartctl -a /dev/hda donne le résultat:
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: (1021) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
No General Purpose Logging support.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 17) minutes.

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
3 Spin_Up_Time 0x0027 252 252 063 Pre-fail Always - 2463
4 Start_Stop_Count 0x0032 253 253 000 Old_age Always - 18
5 Reallocated_Sector_Ct 0x0033 253 253 063 Pre-fail Always - 0
6 Read_Channel_Margin 0x0001 253 253 100 Pre-fail Offline - 0
7 Seek_Error_Rate 0x000a 253 252 000 Old_age Always - 0
8 Seek_Time_Performance 0x0027 247 238 187 Pre-fail Always - 46214
9 Power_On_Minutes 0x0032 241 241 000 Old_age Always - 950h+09m
10 Spin_Retry_Count 0x002b 252 252 157 Pre-fail Always - 0
11 Calibration_Retry_Count 0x002b 253 252 223 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 253 253 000 Old_age Always - 22
192 Power-Off_Retract_Count 0x0032 253 253 000 Old_age Always - 13
193 Load_Cycle_Count 0x0032 253 253 000 Old_age Always - 72
194 Temperature_Celsius 0x0032 253 253 000 Old_age Always - 31
195 Hardware_ECC_Recovered 0x000a 253 252 000 Old_age Always - 25095
196 Reallocated_Event_Count 0x0008 253 253 000 Old_age Offline - 0
197 Current_Pending_Sector 0x0008 253 253 000 Old_age Offline - 0
198 Offline_Uncorrectable 0x0008 253 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0008 199 199 000 Old_age Offline - 0
200 Multi_Zone_Error_Rate 0x000a 253 252 000 Old_age Always - 0
201 Soft_Read_Error_Rate 0x000a 251 138 000 Old_age Always - 1746
202 TA_Increase_Count 0x000a 253 252 000 Old_age Always - 0
203 Run_Out_Cancel 0x000b 253 252 180 Pre-fail Always - 137
204 Shock_Count_Write_Opern 0x000a 253 252 000 Old_age Always - 0
205 Shock_Rate_Write_Opern 0x000a 253 252 000 Old_age Always - 0
207 Spin_High_Current 0x002a 252 252 000 Old_age Always - 0
208 Spin_Buzz 0x002a 252 252 000 Old_age Always - 0
209 Offline_Seek_Performnce 0x0024 187 183 000 Old_age Offline - 0
99 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
100 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
101 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Maintenant il reste l'interprétation des informations tel que l'uptime du disque, la température et, pour nous le plus intéressant, les erreurs. Pour cela nous observons surtout les deux dernières colonnes : WHEN_FAILED et RAW_VALUE et la section juste en dessous : SMART Error Log Version : 1 No Errors Logged.

Un exemple :


5 Reallocated_Sector_Ct 0x0033 016 016 063 Pre-fail Always FAILING_NOW 598

Ici on voit que la réallocation des secteurs à échoué. Il faut donc surveiller cette partie. Si le nombre indiqué passe rapidement à des chiffres supérieurs, prenez les mesures nécessaires : faites le backup de vos données et contactez éventuellement le support.

Conclusion

Smartmontool est simple d'usage et trés complet. Notez que toutefois un tel outil ne remplace pas le plus important : le backup régulier de vos données.