Devant les capacités de plus en plus grandes des disques durs, on ne peut que craindre de perdre des données lors d'un plantage de disque dur. Même si une sauvegarde régulière est obligatoire, la surveillance d'un disque est aussi requise pour savoir à l'avance si un danger est sur le point de survenir.
La technologie SMART a été développée pour permettre d'avoir un certain nombre d'indications de focntionnement sur les disques durs de façon à prévenir un éventuel problème. En effet, dans la majorité des cas, un disque dur ne tombe pas en panne sans avoir donné auparavant des avertissements qu'il faut savoir interpréter.
La première chose à faire est de télécharge le programme SmartMonTools, un utilitaire développé par le monde open Source mais dont on trouve une compilation pour Windows. Ce programme est maintenu à jour et reste l'un des plus fiables et des plus performants. Et il est, bien entendu, gratuit.
vous pouvez télécharger le logiciel ici mais je préfère cette version là, qui ne nécessite aucune installation et donc aucune modification de la base de registre, ce qui évite d'alourdir encore la machine. Il suffit de décompresser le fichier à l'endroit voulu.
Le programme se compose de trois petits exécutables DOS et d'un certain nombre d'exemple de configuration et d'exécution.
Pour disposer des fonctionnalités SMART directement sous la console DOS sans configuration fastidieuse, il suffit de copier le contenu du répertoire bin dans le répertoire des exécutables Windows C:\WINDOWS\system32.
Pour commencer, vérifions que tout se passe bien :
smartctl -i /dev/hda
Ce qui devrait donner, si tout se passe bien :
smartctl version 5.37 [i686-mingw32-xp-sp2] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF INFORMATION SECTION ===
Model Family: Seagate U Series 5 family
Device Model: ST320413A
Serial Number: 7ED22DES
Firmware Version: 3.57
User Capacity: 20á020á396á032 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 5
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Wed Aug 15 08:32:58 2007 PM
SMART support is: Available - device has SMART capability.
Disabled status cached by OS, trying SMART RETURN STATUS cmd.
SMART support is: Enabled
Le disque supporte SMART (SMART support is Available) et est activé (SMART support is Enabled).
Nous remarquons que la notation des disques utilisée (/dev/hda, /dev/hdb, etc.) est celle employée dans le monde UNIX. Si vous n'avez qu'un seul disque physique, cela correspondra à hda. si vous en avez plusieurs, il faudra incrémenter la dernière lettre.
Lançons donc un premier test de disque :
smartctl -t long /dev/hda
Il s'agit d'un test long, mis l'on peut choisir aussi un test court (short). Cela devrait donner, si tout se passe bien :
smartctl version 5.37 [i686-mingw32-xp-sp2] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === Sending command: "Execute SMART Extended self-test routine immediately in off-line mode". Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful. Testing has begun. Please wait 23 minutes for test to complete. Test will complete after Wed Aug 15 09:06:38 2007 Use smartctl -X to abort test.
Dans le cas présent, il faut attendre 23 minutes pour que le test soit complet. Bien que le test puisse ralentir un peu la machine, il est toujours possible de l'utiliser. Pedant ce temps, le disque va effectuer une série de tests et les inscrire dans une mémoire interne. A la fin du test, pour lire ses données, il faudra exécuter :
smartctl -l selftest /dev/hda
Ce qui a pour résultat :
smartctl version 5.37 [i686-mingw32-xp-sp2] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed without error 00% 5940 -
Pour avoir la totalité des informations stockées sur le disque, il faut :
smartctl -A /dev/hda
Ce qui donne :
smartctl version 5.37 [i686-mingw32-xp-sp2] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000e 063 044 025 Old_age Always - 83332414 3 Spin_Up_Time 0x0002 073 071 000 Old_age Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 878 5 Reallocated_Sector_Ct 0x0032 100 100 036 Old_age Always - 18 7 Seek_Error_Rate 0x000e 081 060 030 Old_age Always - 150141177 9 Power_On_Hours 0x0032 094 094 000 Old_age Always - 5940 10 Spin_Retry_Count 0x0012 100 097 097 Old_age Always In_the_past 0 12 Power_Cycle_Count 0x0032 098 098 020 Old_age Always - 2847 194 Temperature_Celsius 0x0022 040 052 000 Old_age Always - 40 195 Hardware_ECC_Recovered 0x001a 063 052 000 Old_age Always - 74480863 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0000 100 100 000 Old_age Offline - 0 202 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0
Il y a plusieurs méthodes pour avoir une surveillance automatisée. La première en la réalisant soi-même grâce à un script DOS. La deuxième en utilisant smartd.
La surveillance personnalisée permet d'obtenir une exécution plus fine de la surveillance. En effet, smartd, par l'intermédiaire de son fichier de configuration, peut être programmé pour s'exécuter régulièrement ce qui dans le cas d'un serveur toujours en fonctionnement ne pose aucun problème mais dans le cas d'un ordinateur de bureau peut ne pas correspondre à l'usage. Qu'est-ce qui prouve que la machine sera allumée au moment où la vérification sera programmée ? Surtout que , en général, les diagnostics sonbt plutôt programmés lorsqu'il n'y a pas d'activité sur la machine.
Nous allons donc programmer un contrôle qui s'exécutera lorsqu'il n'y aura pas d'activité sur la machine, soit un schtasks avec l'option /ONIDLE.
Dans la méthode choisie, nous allons envoyer un rapport sous forme de courriel à l'administrateur.
La première chose à faire est de mettre en place le programme d'envoi de courriel par SMTP. Il n'en existe pas par défaut sous Windows, il faut donc en télécharger un. Par exemple blat.
Pour disposer des fonctionnalités blat directement sous la console DOS sans configuration fastidieuse, il suffit de copier le contenu du répertoire blat dans le répertoire des exécutables Windows C:\WINDOWS\system32.
Il faut ensuite configurer blat. Pour cela, il faut :
blat -install <serveur smtp> <utilisateur>
Par exemple, l'utilisateur Paul912@free.fr désirant utiliser le serveur Free smtp.free.fr, exécutera :
blat -install smtp.free.fr Paul912@free.fr
Ensuite, il ne reste plus qu'à réaliser le script suivant (smartd_mail.bat) :
@echo off REM execution de SMART smartctl -t short /dev/hda echo Execution de SMART sur le disque /dev/hda : > e:\Scripts\smartmail.txt echo =========================================== >> e:\Scripts\smartmail.txt echo >> e:\Scripts\smartmail.txt echo Rapport court : >> e:\Scripts\smartmail.txt echo ------------------------------------------- >> e:\Scripts\smartmail.txt smartctl -l selftest /dev/hda >> e:\Scripts\smartmail.txt echo >> e:\Scripts\smartmail.txt echo Rapport long : >> e:\Scripts\smartmail.txt echo ------------------------------------------- >> e:\Scripts\smartmail.txt smartctl -A /dev/hda >> e:\Scripts\smartmail.txt echo Rapport des erreurs : >> e:\Scripts\smartmail.txt echo ------------------------------------------- >> e:\Scripts\smartmail.txt smartctl -l error /dev/hda >> e:\Scripts\smartmail.txt REM Envoi du rapport blat e:\Scripts\smartmail.txt -to ccompagnon@christopher.compagnon.name -subject "Rapport SMART" >> d:\Journaux\smatd.log
Puis de programmer l'exécution du batch dès que la machine sera inutilisée :
schtasks /create /sc onidle /i 10 /tn SMART /tr e:\Scripts\smartd_mail.bat /ru System
System exécutera la tâche SMART après 10 minutes d'inactivité.
Cette méthode exécute automatiquement la surveillance, mais ne permet pas d'interpréter les résultats. cette tâche est laissé au destinataire du message qui devra vérifier régulièrement que les paramètres sont corrects.
Pour une analyse avancée il faut soit réaliser un script plus puissant, soit utiliser smartd.
Dans tous les cas, si dans le rapport la colonne WHEN_FAILED fait apparaître FAILING_NOW ou In_the_past, il faudra surveiller le disque de près.
Pour une surveillance avec smartd (SMART Daemon), il faut tout d'abord modifier le fichier de configuration. En lisant bien le fichier smatd.conf, on remarque qu'il y a déjà un certain nombre d'exemples. Il sufit donc de s'en inspirer. Par exemple :
DEVICESCAN -H -I 194 -I 9 -l error -l selftest -t -M exec E:/Scripts/smartd_error.bat -s (S/../.././02|L/../../6/03)
Cette configuration surveille tous les disques présents (DEVICESCAN ) sauf les paramètres ayant pour ID 194 (température) et 9 (durée d'utilisation du disque), avec un test court tous les jours à 2 heures du matin et un test long le samedi à 3 heures.
L'exécution du script smartd_error.bat permet d'envoyer un message d'erreur avec un rapport de la situation. Par exemple :
@echo off echo Une errue est survenue sur le disque : > e:\Scripts\smartmail.txt echo =========================================== >> e:\Scripts\smartmail.txt echo >> e:\Scripts\smartmail.txt echo Rapport court : >> e:\Scripts\smartmail.txt echo ------------------------------------------- >> e:\Scripts\smartmail.txt smartctl -l selftest /dev/hda >> e:\Scripts\smartmail.txt echo >> e:\Scripts\smartmail.txt echo Rapport long : >> e:\Scripts\smartmail.txt echo ------------------------------------------- >> e:\Scripts\smartmail.txt smartctl -A /dev/hda >> e:\Scripts\smartmail.txt echo Rapport des erreurs : >> e:\Scripts\smartmail.txt echo ------------------------------------------- >> e:\Scripts\smartmail.txt smartctl -l error /dev/hda >> e:\Scripts\smartmail.txt REM Envoi du rapport blat e:\Scripts\smartmail.txt -to ccompagnon@christopher.compagnon.name -subject "Erreur SMART" >> d:\Journaux\smatd_error.log
Pour démarrer smartd automatiquement, il suffit d'appeler un script au démarrage qui exécutera :
smartd start >> d:/journaux/smartd.log