Smartmontool : Surveillance des disques dur

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

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.

2 Activation / Installation de smartmontool

2.1 Debian

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 .

Command aptitude
> aptitude 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" :


Configuration File /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"


Les changements validés, lancez le daemon :

Command
/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 :

Command cat
 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.

2.2 FreeBSD

Pour installer smartmontool :

Command pkg_add
pkg_add -r smartmontool

Puis démarrez le comme ceci :

Command
/usr/local/etc/rc.d/smartd start

Editez la configuration /usr/local/etc/smartd.conf et ajoutez cette ligne (en adaptant à votre email) :

Configuration File /usr/local/etc/smartd.conf
 DEVICESCAN -a -m my@mail.com

Ensuite, si nous voulons que smartd démarre à tous les boot, ajoutez cette ligne :

Configuration File /etc/rc.conf
smartd_enable="YES"

3 Réglages fin

3.1 Debian

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 :

Configuration File /etc/smartd.conf
DEVICESCAN -H -l error -l selftest -t -f -m admin@webank.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.

Configuration File /etc/smartd.conf
 /dev/hda -H -l error -l selftest -t -f -m admin@webank.fr -M exec /usr/bin/mail -s (S/../.././02|L/../../6/03)
 /dev/hdc -H -l error -l selftest -t -f -m admin@webank.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.

3.2 FreeBSD

Pour recevoir des mails tous les jours pour vous indiquer l'état de vos disques, ajoutez ceci dans le fichier /etc/periodic.conf :

Configuration File /etc/periodic.conf
daily_status_smart_devices="/dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10 /dev/ad12"

Evidemment, mettez vos devices à vous.

4 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 :

Command grep
 > 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.

Command smarctl
 smarctl -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


Command smarctl
 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


Command smarctl
 smartctl -a /dev/hda
 
 === 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.

5 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.

6 Faq

6.1 Problème lors de mises à jours

Il peut arriver lors d'une mise à jour de vos packages que la mise à jour se passe mal et que vous na sachiez pas pourquoi. Le problèmes est en fait assez simple. Il suffit de stopper le service :

Command
/etc/init.d/smartmontool stop

puis de nouveau relancez la mise à jour.

6.2 Le service ne veut pas se lancer

Ce problème peut arriver lorsque le SMART n'est tout simplement pas activé. Pour l'activer, il suffit pour ça de taper cette commande :

Command smartctl
smartctl -s on /dev/sda

Essayez ensuite de démarrer smartmontools :

Command
/etc/init.d/smartmontools start

7 Ressources

Checking Hard Disk Sanity With Smartmontools
http://www.davidandrzejewski.com/2009/03/15/freebsd-monitor-your-disks-health-with-smartmontools/