Filesystem/Monitoring/Smart
Introduction
Le but de ce tutoriel est d'utiliser la technologie SMART (équipant tout les disques durs récents) pour vérifier si son état est correct ou pas. Les disques SMART sont capables de surveiller en continu l'état du disque et d'alerter l'utilisateur si une anomalie est détectée, et la plupart sont aussi capables de faire des tests spécifiques pour une meilleure analyse.
Procédure d'installation
La première chose a faire est de vérifier si SMART est activé dans le BIOS. Par exemple :
S.M.A.R.T. for Hard Disk: Enabled
Certain BIOS n'ont pas l'option et désactivent SMART, mais ne vous inquiétez pas, smartctl peut l'activer (voir plus bas). Référez vous au manuel de la carte mère pour plus de précisions.
Maintenant installons le paquet <package>smartmontools</package>.
# yum install smartmontools
Vérifiez si votre disque gère SMART :
# smartctl -i /dev/hda
Ou pour les périphériques SATA :
# smartctl -i -d ata /dev/sda
Pour activer SMART sur les disques IDE :
# smartctl -s on /dev/hda
Pour activer SMART sur les disques SATA :
# smartctl -s on -d ata /dev/sda
Utiliser smartctl
Statut de santé SMART
Vérifiez le statut de santé de SMART :
# smartctl -H /dev/hda
Si vous lisez PASSED c'est bon, mais si vous lisez FAILED vous devez sauvegarder vos données maintenant : le disque est déjà planté ou est prédit a planter dans les 24 heures.
Journal d'erreur SMART
Maintenant vérifiez le journal d'erreur SMART (c'est un liste d'erreurs détectées par SMART durant la vie du disque) :
# smartctl -l error /dev/hda
Si vous lisez No Errors Logged c'est bon. Si il y a quelques erreurs vous ne devriez pas non-plus vous inquiéter. Si il y a un nombre important d'erreurs, sauvegardez vos données et prévoyez de changer le disque.
Lire le statut de santé et le journal d'erreur SMART n'est pas suffisant : vous devriez vraiment faire d'autres tests spécifiques.
Tests SMART
Ces tests n'interfèrent pas avec le fonctionnement normal des disques et peut être réalisé à n'importe quel moment. Il est décrit ici uniquement comment les lancer et lire leur rapport. Si vous voulez en apprendre plus, lisez la page de manuel ( man smartctl ).
Premièrement vous devrez connaître quels tests sont gérés par votre disque :
# smartctl -c /dev/hda
Vous saurez aussi combien de temps dure chaque test.
Maintenant exécutez le test SMART Immediate Offline (si il est supporté bien sûr) :
# smartctl -t offline /dev/hda
Vous n'avez plus qu'a attendre, smartctl vous dira combien de temps. Quand c'est finis vous n'avez plus qu'a lire à nouveau le journal d'erreur SMART pour avoir le rapport.
Si vous avez a vérifier plusieurs disques, vous devriez créer un script comme celui-ci, qui enregistre le journal SMART dans le fichier approprié après que le test soit effectué. Exécutez ce script avec les types de tests comme arguments. Si vous ne comprenez pas ce que le script fait, ne l'utilisez pas.
<path>/usr/local/bin/smartd.sh</path>
#!/bin/sh
# Script by Meliorator. irc://irc.freenode.net/Meliorator
[ ! "$@" ] && echo "Usage: $0 type [type] [type]"
[ ! -e smart-logs ] && mkdir smart-logs
[ ! -d smart-logs ] && Can not create smart-logs dir && exit 1
a=0
for t in "$@"; do
case "$t" in
offline) s=1 && l=error;;
short|long) s=60 && l=selftest;;
*) echo $t is an unrecognised test type. Skipping... && continue
esac
for hd in /dev/hd*[^0-9]; do
r=$(( $(smartctl -t $t $hd | grep 'Please wait' | awk '{print $3}') * $s ))
echo Check $hd - $t test in $(( $r / 60 )) minute\(s\)
[ $r -gt $a ] && a=$r
done
echo Waiting $(( $a / 60 )) minute\(s\) for all tests to complete
sleep $a
for hd in /dev/hd*[^0-9]; do
smartctl -l $l $hd 2>&1 >> smart-logs/smart-${t}-${hd##*/}.log
done
done
for i in {1..10}; do
sleep .01
echo -n -e \\a
done
echo "All tests have completed"
N'oubliez pas de rendre le script exécutable :
# chmod +x smart.sh
Maintenant soucions-nous du Short Self Test SMART ou du Extended Self Test (si supportés). Ils sont similaires mais le second est plus précis que le premier :
# smartctl -t short /dev/hda
# smartctl -t long /dev/hda
Vérifiez alors le journal des erreurs du test SMART Self Test :
# smartctl -l selftest /dev/hda
Maintenant exécutons le test SMART Conveyance Self Test :
# smartctl -t conveyance /dev/hda
Vérifiez à nouveau le journal :
# smartctl -l selftest /dev/hda
Surveiller automatiquement vos disques
Si vous voulez surveiller automatiquement vos disques, vous devrez configurer le service smartd et faire en sorte qu'il soit lancé au démarrage.
Si vous utilisez des disques SATA ou SCSI, le fichier de périphérique bouge durant le démarrage, vous ne devrez alors pas utiliser /dev/sd? pour trouver vos disques. Vous devrez utiliser les liens symboliques dans <path>/dev/disk/by-id</path> :
lrwxrwxrwx 1 root root 9 2008-02-20 17:16 scsi-SDNS0P6B00FED -> ../../sdb lrwxrwxrwx 1 root root 10 2008-02-20 17:16 scsi-SDNS0P6B00FED-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 2008-02-20 17:16 scsi-SDNS0P6B00FTH -> ../../sda lrwxrwxrwx 1 root root 10 2008-02-20 17:16 scsi-SDNS0P6B00FTH-part1 -> ../../sda1 lrwxrwxrwx 1 root root 9 2008-02-20 17:16 scsi-S_5QHZ0BRZ -> ../../sdc lrwxrwxrwx 1 root root 10 2008-02-20 17:16 scsi-S_5QHZ0BRZ-part1 -> ../../sdc1 lrwxrwxrwx 1 root root 9 2008-02-20 17:16 scsi-S_5QH02EWC -> ../../sdf lrwxrwxrwx 1 root root 10 2008-02-20 17:16 scsi-S_5QH02EWC-part1 -> ../../sdf1 lrwxrwxrwx 1 root root 9 2008-02-20 17:16 scsi-S_5QH02EX3 -> ../../sdh lrwxrwxrwx 1 root root 10 2008-02-20 17:16 scsi-S_5QH02EX3-part1 -> ../../sdh1 lrwxrwxrwx 1 root root 9 2008-02-20 17:16 scsi-S_5QH02EYT -> ../../sdd lrwxrwxrwx 1 root root 10 2008-02-20 17:16 scsi-S_5QH02EYT-part1 -> ../../sdd1 lrwxrwxrwx 1 root root 9 2008-02-20 17:16 scsi-S_9QG4MSPC -> ../../sdg lrwxrwxrwx 1 root root 10 2008-02-20 17:16 scsi-S_9QG4MSPC-part1 -> ../../sdg1 lrwxrwxrwx 1 root root 9 2008-02-20 17:16 scsi-S_9QG56Q28 -> ../../sdi lrwxrwxrwx 1 root root 10 2008-02-20 17:16 scsi-S_9QG56Q28-part1 -> ../../sdi1 lrwxrwxrwx 1 root root 10 2008-02-20 17:16 usb-PLEXTOR_CORPORATION._PLEXTOR_USB2.0-ATA.ATAPI_Bridge_000000002BDC -> ../../scd0 lrwxrwxrwx 1 root root 9 2008-02-20 17:16 usb-ST316002_1A_200509223316-0:0 -> ../../sde lrwxrwxrwx 1 root root 10 2008-02-20 17:16 usb-ST316002_1A_200509223316-0:0-part1 -> ../../sde1
Ce système a 8 disques durs, 2 SCSI et 6 SATA, ainsi qu'un lecteur DVD USB et un disque USB.
La suite va décrire comment :
- surveiller un disque SCSI seul (<path>/dev/disk/by-id/scsi-SDNS0P6B00FED</path>).
- programmer les test (Offline, Extended et Conveyance) pour être lancés tout les vendredi entre 11h00 et 15h00.
- exécuter un script si une erreur est détectée : ce script écrira un rapport détaillé et éteindra l'ordinateur.
Le fichier de configuration du service smartd est dans <path>/etc/smartd.conf</path>. Si il n'existe pas, créez-le.
... #DEVICESCAN ... /dev/disk/by-id/scsi-SDNS0P6B00FTH \ -H \ -l error -l selftest \ -s (O/../../5/11|L/../../5/13|C/../../5/15) \ -m ThisIsNotUsed -M exec /usr/local/bin/smartd.sh
Contenu du script <path>/usr/local/bin/smartd.sh</path> :
#!/bin/bash LOGFILE="/var/log/smartd.log" echo -e "$(date)\n$SMARTD_MESSAGE\n" >> "$LOGFILE" shutdown -h now
Rendez le script exécutable :
# chmod +x /usr/local/bin/smartd.sh
Ce script et cette configuration ne sont que des exemples, chacun est libre de l'adapter a ses besoins et préférences. Si vous voulez en savoir plus vous pouvez lire la page de manuel :
$ man smartd.conf
Pour vérifier le script, vous devrez ajouter -M test à la dernière ligne de <path>smartd.conf</path> et lancer le service (notez que comme convenu il éteindra votre ordinateur) :
# /etc/init.d/smartd start
Si quelque chose ne vas pas vous pouvez vérifier <path>/var/log/messages</path>:
# tail /var/log/messages
Maintenant enlevez l'option -M test et configurez le lancement de smartd au démarrage :
# rc-update add smartd default
Finis !
Liens utiles
Page originale :
Autres :
- Page Léa-Linux (FR)
- smartmontools Home Page (EN)
- Monitoring Hard Disks with SMART (Linux Journal) (EN)
- Bad Block HowTo (EN)
- SMART Attributes (EN)