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 .
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" :
/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 :
|
/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
|
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 :
pkg_add
|
pkg_add -r smartmontool
|
Puis démarrez le comme ceci :
|
/usr/local/etc/rc.d/smartd start
|
Editez la configuration /usr/local/etc/smartd.conf et ajoutez cette ligne (en adaptant à votre email) :
/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 :
/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 :
/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.
/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 :
/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 :
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.
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
|
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
|
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 :
|
/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 :
smartctl
|
smartctl -s on /dev/sda
|
Essayez ensuite de démarrer smartmontools :
|
/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/