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.

Installation

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

Astuce

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.

Mise en place

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

Surveillance automatisée

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.

Surveillance personnalisée

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

Mise en place de programme d'envoi SMTP

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.

Astuce

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

Le script de surveillance

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

Programmation de l'exécution

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

Remarque

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.

Surveillance avec smartd

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