« Soyez SMART » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(6 versions intermédiaires par 5 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Category:Les plus du matériel]]
= Soyez Smart ! =
= Soyez Smart ! =


Ligne 68 : Ligne 67 :
| '''Rôle'''
| '''Rôle'''
|-
|-
| <code>Raw_Read_Error_Rate</code>
| <b>Raw_Read_Error_Rate</b>
| Fréquence d'apparition d'erreurs pendant la lecture de données brutes
| Fréquence d'apparition d'erreurs pendant la lecture de données brutes
|-
|-
| <code>Spin_Up_Time</code>
| <b>Spin_Up_Time</b>
| Temps de mise en rotation du disque
| Temps de mise en rotation du disque
|-
|-
| <code>Start_Stop_Count</code>
| <b>Start_Stop_Count</b>
| Nombre de cycles arrêt/démarrage de l'axe de rotation
| Nombre de cycles arrêt/démarrage de l'axe de rotation
|-
|-
| <code>Reallocated_Sector_Ct</code>
| <b>Reallocated_Sector_Ct</b>
| Nombre de secteurs ré-alloués
| Nombre de secteurs ré-alloués
|-
|-
| <code>Seek_Error_Rate</code>
| <b>Seek_Error_Rate</b>
| Fréquence d'erreurs pendant le positionnement de la tête magnétique
| Fréquence d'erreurs pendant le positionnement de la tête magnétique
|-
|-
| <code>Power_On_Hours</code>
| <b>Power_On_Hours</b>
| Nombre d'heures de fonctionnement
| Nombre d'heures de fonctionnement
|-
|-
| <code>Spin_Retry_Count</code>
| <b>Spin_Retry_Count</b>
| Nombre de mises en rotation forcée du disque
| Nombre de mises en rotation forcée du disque
|-
|-
| <code>Power_Cycle_Count</code>
| <b>Power_Cycle_Count</b>
| Nombre de cycles de mise sous tension
| Nombre de cycles de mise sous tension
|-
|-
| <code>Temperature_Celsius</code>
| <b>Temperature_Celsius</b>
| Température interne du disque en degrés Celsius
| Température interne du disque en degrés Celsius
|-
|-
| <code>Hardware_ECC_Recovered</code>
| <b>Hardware_ECC_Recovered</b>
| Nombre de corrections ECC réalisées
| Nombre de corrections ECC réalisées
|-
|-
| <code>Current_Pending_Sector</code>
| <b>Current_Pending_Sector</b>
| Nombre de secteurs en attente de ré-allocation
| Nombre de secteurs en attente de ré-allocation
|-
|-
| <code>Offline_Uncorrectable</code>
| <b>Offline_Uncorrectable</b>
| Nombre de secteurs non ré-allouables
| Nombre de secteurs non ré-allouables
|-
|-
| <code>UDMA_CRC_Error_Count</code>
| <b>UDMA_CRC_Error_Count</b>
| Nombre d'erreurs de CRC pendant un accès Ultra DMA
| Nombre d'erreurs de CRC pendant un accès Ultra DMA
|}
|}
Ligne 122 : Ligne 121 :
Les valeurs de THRESH sont décidées par le constructeur du disque dur pour un modèle donné. Ces valeurs peuvent donc changer en fonction des configurations.
Les valeurs de THRESH sont décidées par le constructeur du disque dur pour un modèle donné. Ces valeurs peuvent donc changer en fonction des configurations.


Le type d'attribut <code>Old-age</code> indique que si l'indice VALUE est inférieur à THRESH alors cela indique que le produit est en fin de vie du fait d'une usure normale. L'attribut <code>Pre-Fail</code> indique que si l'indice VALUE est inférieur à THRESH alors une panne est imminente, il faut prévoir un remplacement.
Le type d'attribut <b>Old-age</b> indique que si l'indice VALUE est inférieur à THRESH alors cela indique que le produit est en fin de vie du fait d'une usure normale. L'attribut <b>Pre-Fail</b> indique que si l'indice VALUE est inférieur à THRESH alors une panne est imminente, il faut prévoir un remplacement.


Il existe deux méthodes pour mettre à jour les valeurs des attributs. La première dite « always » est la plus commune. Le composant électronique observe en permanence cet attribut. A chaque consultation de l'attribut, on peut y lire la valeur en cours. Ainsi, la température, le nombre d'erreurs ECC sont à jour en permanence. Les attributs dits « offline » ne seront remis à jour que lors d'un test du disque avec l'un des quatre modes : offline, short, long, conveyance.
Il existe deux méthodes pour mettre à jour les valeurs des attributs. La première dite « always » est la plus commune. Le composant électronique observe en permanence cet attribut. A chaque consultation de l'attribut, on peut y lire la valeur en cours. Ainsi, la température, le nombre d'erreurs ECC sont à jour en permanence. Les attributs dits « offline » ne seront remis à jour que lors d'un test du disque avec l'un des quatre modes : offline, short, long, conveyance.
Ligne 195 : Ligne 194 :
Dans cet exemple, le test 1 (le dernier que l'on vient d'exécuter), de type test court, s'est déroulé sans erreur, votre disque est donc en bon état.
Dans cet exemple, le test 1 (le dernier que l'on vient d'exécuter), de type test court, s'est déroulé sans erreur, votre disque est donc en bon état.


Le test 7 montre que l'utilisateur a interrompu le test à l'aide de l'option<code> -X</code>.
Le test 7 montre que l'utilisateur a interrompu le test à l'aide de l'option<b> -X</b>.


Ces quelques commandes vous permettent assez simplement de vérifier l'état de votre disque dur, mais tout ceci nécessite une exécution manuelle de l'outil. L'automatisation de ce processus est bien entendu nécessaire et obligatoire pour obtenir une surveillance permanente de vos disques durs.
Ces quelques commandes vous permettent assez simplement de vérifier l'état de votre disque dur, mais tout ceci nécessite une exécution manuelle de l'outil. L'automatisation de ce processus est bien entendu nécessaire et obligatoire pour obtenir une surveillance permanente de vos disques durs.
Ligne 203 : Ligne 202 :
=== Configuration de smartd ===
=== Configuration de smartd ===


smartmontools fournit le démon smartd dont le fichier de configuration est /etc/smartd.conf. Celui-ci dispose d'une syntaxe assez simple. Nous allons configurer celui-ci pour émettre un mail en cas de problème.
smartmontools fournit le démon smartd dont le fichier de configuration est <b>/etc/smartd.conf</b>. Celui-ci dispose d'une syntaxe assez simple. Nous allons configurer celui-ci pour émettre un mail en cas de problème. Il suffit d'ajouter au fichier<b>/etc/smartd.conf</b> la ligne :


<div class="code">
<div class="code">
Ligne 213 : Ligne 212 :
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, /dev/sdx, ...). L'ajout de cette ligne dans le fichier de configuration permet d'émettre un email à a@a.com en utilisant la commande mail de votre système.
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, /dev/sdx, ...). L'ajout de cette ligne dans le fichier de configuration permet d'émettre un email à a@a.com en utilisant la commande mail de votre système.


L'option <code>-t</code> 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 <code>-H</code>) é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 <code>-I</code>. 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 <b>-t</b> 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 <b>-H</b>) é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 <b>-I</b>. 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 <code>/bin/mail</code>.
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 <b>/bin/mail</b>.


<div class="code">
<div class="code">
Ligne 223 : Ligne 222 :
</div>
</div>


Voici le contenu de <code>/usr/local/bin/report_smart</code>
Voici le contenu de <b>/usr/local/bin/report_smart</b>


<div class="code">
<div class="code">
Ligne 232 : Ligne 231 :
  # On ajoute le résultat de « smartctl -a » dans le corps de mail
  # On ajoute le résultat de « smartctl -a » dans le corps de mail
  /usr/sbin/smartctl -a -d $smartd_DEVICETYPE $smartd_DEVICE >> /root/smartmail
  /usr/sbin/smartctl -a -d $smartd_DEVICETYPE $smartd_DEVICE >> /root/smartmail
  # On émet de mail
  # On émet le mail
  /bin/mail -s "$smartd_SUBJECT" $smartd_ADDRESS < /root/smartmail
  /bin/mail -s "$smartd_SUBJECT" $smartd_ADDRESS < /root/smartmail
  rm -f /root/smartmail
  rm -f /root/smartmail</nowiki>
Les scripts appelés par smartd peuvent faire référence à 9 variables d'environnement  (voir le man pour plus de détails):
Variable
Rôle (valeur par défaut)
smartd_MAILER
Argument de -M exec (/bin/mail)
smartd_DEVICE
Périphérique en cause, /dev/hdx, ...
smartd_DEVICETYPE
Type de périphérique : ata, scsi, 3ware
smartd_DEVICESTRING
Idem sauf pour les raid 3ware
smartd_FAILTYPE
Raison de l'alerte
smartd_ADDRESS
Destinataire du mail
smartd_MESSAGE
Corps du message d'alerte
smartd_TFIRST
Date et heure de la première erreur
smartd_TFIRSTEPOCH
Nombre de secondes depuis 1970</nowiki>


</div>
</div>
Les scripts appelés par smartd peuvent faire référence à 9 variables d'environnement  (voir le man pour plus de détails):
{|
! Variable
! Rôle (valeur par défaut)
|-
| smartd_MAILER
| Argument de -M exec (/bin/mail)
|-
| smartd_DEVICE
| Périphérique en cause, /dev/hdx, ...
|-
| smartd_DEVICETYPE
| Type de périphérique : ata, scsi, 3ware
|-
| smartd_DEVICESTRING
| Idem sauf pour les raid 3ware
|-
| smartd_FAILTYPE
| Raison de l'alerte
|-
| smartd_ADDRESS
| Destinataire du mail
|-
| smartd_MESSAGE
| Corps du message d'alerte
|-
| smartd_TFIRST
| Date et heure de la première erreur
|-
| smartd_TFIRSTEPOCH
| Nombre de secondes depuis 1970
|}


Il est à remarquer que l'option « -m » permet d'ajouter des destinataires pour l'email d'alerte mais que celle-ci peut être positionnée sur « nomailer » dans le cas d'exécution d'un simple script, exemple:
Il est à remarquer que l'option « -m » permet d'ajouter des destinataires pour l'email d'alerte mais que celle-ci peut être positionnée sur « nomailer » dans le cas d'exécution d'un simple script, exemple:
Ligne 267 : Ligne 278 :
</div>
</div>


Voici le contenu de <code>/usr/local/bin/wall_smart</code>
Voici le contenu de <b>/usr/local/bin/wall_smart</b>


<div class="code">
<div class="code">
Ligne 293 : Ligne 304 :
Téléchargez smartlinux 0.4 sur le site du projet puis installez-le sur une disquette grâce à l'utilitaire « dd » sous Linux ou rawwrite sous Microsoft Windows. Démarrez l'ordinateur en panne avec la disquette. Attention les lecteurs de disquette USB ne sont pas supportés.
Téléchargez smartlinux 0.4 sur le site du projet puis installez-le sur une disquette grâce à l'utilitaire « dd » sous Linux ou rawwrite sous Microsoft Windows. Démarrez l'ordinateur en panne avec la disquette. Attention les lecteurs de disquette USB ne sont pas supportés.


L'autre solution, consiste à utiliser PXE (Pre eXecution Environment) qui permet de démarrer un système d'exploitation via le réseau. Cette solution, permet de rendre accessible à toutes les machines d'un réseau possédant un serveur PXE l'exécution de smartlinux sans utiliser de disquette. Copiez smartlinux dans le répertoire TFTP de Pxelinux (/var/lib/tftpboot/X86PC/linux). Pour plus d'informations à propos de PXE vous pouvez consulter la documentation disponible sur [http://clic.mandrakesoft.com/documentation/PXE/ http://clic.mandrakesoft.com/documentation/PXE/].
L'autre solution, consiste à utiliser PXE (Pre eXecution Environment) qui permet de démarrer un système d'exploitation via le réseau. Cette solution, permet de rendre accessible à toutes les machines d'un réseau possédant un serveur PXE l'exécution de smartlinux sans utiliser de disquette. Copiez smartlinux dans le répertoire TFTP de Pxelinux (/var/lib/tftpboot/X86PC/linux). Pour plus d'informations à propos de PXE vous pouvez consulter la documentation disponible sur http://clic.mandriva.com/documentation/pxe/.


La configuration du serveur PXE nécessite une petite astuce dans le fichier de configuration de Pxelinux (Pxelinux.cfg) qui consiste à charger smartlinux comme kernel et comme initrd.
La configuration du serveur PXE nécessite une petite astuce dans le fichier de configuration de Pxelinux (Pxelinux.cfg) qui consiste à charger smartlinux comme kernel et comme initrd.
Ligne 305 : Ligne 316 :
</div>
</div>


Une fois smartlinux démarré par PXE ou par disquette, vous pouvez utiliser « smartctl » comme décrit dans cet article. On pourra réaliser une analyse de l'état du disque avec l'option <code> -A</code> puis le tester avec l'option <code>-t short</code> ou <code>-t long</code>. Une fois le test terminé, l'option <code>-l selftest</code> vous permet de consulter le résultat du test. smartlinux possède également d'autres outils pour réparer les disques (dd_rescue, disc-recovery-utils, disktype, e3, fwipe, magicrescue, rescuept, wipe). Pour plus d'informations sur ces outils, consultez les documentations respectives de ces outils (http://smartlinux.sourceforge.net/#packages).
Une fois smartlinux démarré par PXE ou par disquette, vous pouvez utiliser « smartctl » comme décrit dans cet article. On pourra réaliser une analyse de l'état du disque avec l'option <b> -A</b> puis le tester avec l'option <b>-t short</b> ou <b>-t long</b>. Une fois le test terminé, l'option <b>-l selftest</b> vous permet de consulter le résultat du test. smartlinux possède également d'autres outils pour réparer les disques (dd_rescue, disc-recovery-utils, disktype, e3, fwipe, magicrescue, rescuept, wipe). Pour plus d'informations sur ces outils, consultez les documentations respectives de ces outils (http://smartlinux.sourceforge.net/#packages).


== SMART et les disques SCSI ==
== SMART et les disques SCSI ==
Ligne 331 : Ligne 342 :
Le premier volume RAID composé par exemple de 3 disques IDE sera disponible en tant que disque SCSI nommé /dev/sda, le second volume RAID /dev/sdb etc...
Le premier volume RAID composé par exemple de 3 disques IDE sera disponible en tant que disque SCSI nommé /dev/sda, le second volume RAID /dev/sdb etc...


La commande <code>smartctl -a -d 3ware,n /dev/sda</code> permet d'adresser la commande SMART au nième disque réel du premier volume RAID (nommé /dev/sda). Dans cet exemple, « n » pourra prendre les valeurs 0,1,2. La valeur 0 correspond au premier disque IDE du volume.
La commande <b>smartctl -a -d 3ware,n /dev/sda</b> permet d'adresser la commande SMART au nième disque réel du premier volume RAID (nommé /dev/sda). Dans cet exemple, « n » pourra prendre les valeurs 0,1,2. La valeur 0 correspond au premier disque IDE du volume.


Avec ce type de carte RAID, il est donc possible de surveiller l'état des disques qui composent le volume RAID afin d'en prévenir les pannes.
Avec ce type de carte RAID, il est donc possible de surveiller l'état des disques qui composent le volume RAID afin d'en prévenir les pannes.
Ligne 344 : Ligne 355 :


Je voudrais remercier Bruce Allen pour smartmontools, Zbigniew Chlondowski pour smartlinux ainsi que pour son site rempli d'informations utiles sur SMART, à Christophe Guittenit pour ses explications précieuses, Anne pour ses relectures, ses commentaires et son sang froid sur mes fautes d'orthographes et de grammaire, ainsi que tout ceux qui m'encouragent à écrire mes articles.
Je voudrais remercier Bruce Allen pour smartmontools, Zbigniew Chlondowski pour smartlinux ainsi que pour son site rempli d'informations utiles sur SMART, à Christophe Guittenit pour ses explications précieuses, Anne pour ses relectures, ses commentaires et son sang froid sur mes fautes d'orthographes et de grammaire, ainsi que tout ceux qui m'encouragent à écrire mes articles.


<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Erwan le 30/03/2005.</div>
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Erwan le 30/03/2005.</div>
Ligne 350 : Ligne 362 :
Copyright &copy; 30/03/2005, Erwan
Copyright &copy; 30/03/2005, Erwan
{{CC-BY-NC-SA}}
{{CC-BY-NC-SA}}
{{Matériel}}

Dernière version du 29 décembre 2023 à 09:55

Soyez Smart !

Soyez Smart !
par Erwan

On entend très souvent à grand coup de publicité que la toute dernière technologie va vous simplifier la vie et rendre votre ordinateur plus fiable et tout cela bien sûr, à un coût non négligeable. Et pourtant il existe des technologies déjà largement diffusées mais méconnues qui peuvent vous aider à fiabiliser votre ordinateur.

La mauvaise aventure

Elle est malheureusement classique, arrive tous les jours et provoque larmes, crises de nerfs et déceptions. La perte d'un disque dur est toujours un moment pénible. Il contenait bien évidement « LE » dossier à rendre demain, les photos de votre famille, votre configuration réalisée pendant vos week-ends au prix de longues heures de travail, votre musique, vos meilleurs scores à Frozen Bubble, etc...

Ce problème devient d'autant plus important que la taille des disques augmente de manière considérable. Il est aujourd'hui, en mars 2005, classique de posséder un disque d'une capacité allant de 80 à 160 Giga-octets ! Les derniers modèles atteignent même la barre des 400 Go. La conséquence est simple à comprendre et elle sera de plus en plus courante : on possède de très grosses capacités de stockage donc on y stocke énormément de données. Si le disque est amené à tomber en panne la quantité d'informations perdues est gigantesque. Le temps nécessaire au redémarrage d'une machine identique en sera d'autant plus long, voire impossible !

Les solutions classiques

Une fois que cette mauvaise aventure vous est arrivée, la question qui vient rapidement c'est : comment faire pour que cela ne se reproduise pas ?

Plusieurs solutions s'offrent à vous :

  1. installer un système de disque RAID sur votre machine
  2. acheter un deuxième disque dur sur lequel on placera les sauvegardes

La première solution vous permet de créer un miroir d'un disque sur un autre (RAID 1), ou une répartition des données sur plusieurs disques avec un contrôle de parité pour retrouver l'information manquante en cas de panne d'un des disques (RAID 3 et 5). Ceci peut être réalisé soit de manière logicielle, soit de manière matérielle : dans ce cas, il faudra donc prévoir l'achat d'une carte spécialisée.

Le RAID logiciel ne permet pas de bonnes performances en RAID 3 et 5 car le contrôle de parité est réalisé par votre processeur. Cette solution ne permet pas non plus une grande qualité de service car seules les partitions de données sont prises en comptes et non l'ensemble du disque comme le fait un RAID matériel. Le secteur d'amorçage, par exemple, n'est pas dupliqué, le redémarrage en cas de défaillance du disque primaire risque d'être compliqué.

La solution de sauvegarde sur un autre disque nécessite soit de prendre une bonne habitude de sauvegarde manuelle, soit la mise en place de scripts ou d'applications spécialisées pour assurer une bonne cohérence entre les deux disques dur. Cette méthode fonctionne très bien mais attention à la fiabilité du disque de sauvegarde.

Petit rappel sur la fiabilité des disques durs

Ces solutions restent fiables modulo le type de disque dur utilisé : la loi des séries existe et il faut s'en méfier.

Les disques durs d'une même série sont un mélange de mécanique et d'électronique montés à la chaîne dans des conditions identiques. Un exemple valant mieux qu'un long discours, voici un exemple de ce qui peut arriver : un administrateur système monte un RAID 1 matériel. Deux disques durs, de même marque, même modèle, sont donc installés dans cette machine. Il fait sa configuration, met sa machine en production. Il peut se reposer sur la technologie RAID pour compenser la panne possible d'un des deux disques durs. Oui, mais ce modèle de disque dur a eu un taux de retour de 25% en usine à cause d'un défaut de série.

L'administrateur a bien eu une panne sur son premier disque, il le retire et prépare son remplacement par un nouveau le plus rapidement possible. Il n'aura pas eu le temps de le faire car le second possédant le même défaut est tombé également en panne. Le résultat est simple, il a tout perdu et le RAID n'y peut rien. Même avec un RAID 5, il est quasi impossible de faire face à une série aussi rapide de pannes !

Cette petite histoire nous rappelle qu'un disque dur reste un élément fragile dans un ordinateur et représente la pièce la plus faible de celui-ci car elle contient de la mécanique qui reste nettement moins fiable que l'électronique.

Cependant plutôt que d'être mis devant le fait accompli d'un disque inutilisable, une autre approche est possible.

Mieux vaut prévenir que guérir.

Ce vieil adage amène les questions suivantes :

  • « Ne pourrais-je pas anticiper la panne de mon disque ? »
  • « N'y a-t-il pas un moyen de connaître l'état d'usure d'un disque dur ? »

En effet, si nous étions capable de connaître l'état d'usure d'un disque dur, cela nous permettrait d'anticiper une panne liée à l'usure (prématurée ou pas) de celui-ci. La technologie SMART (Self-Monitoring, Analysis and Reporting Technology systems) permet de connaître et d'analyser l'état physique de vos disques durs. Elle est disponible sur les disques dur IDE depuis la fin des années 90 et pourtant très peu de personnes en connaissent l'existence. Preuve de la méconnaissance de cette technologie, la plupart des administrateurs systèmes et réseaux ne savent pas qu'un tel outil peut les aider à gérer leur parc informatique (serveurs et/ou postes de travail). SMART n'est pas une technologie « super-héros », elle ne peut pas ressusciter un disque dur cassé ou empêcher celui-ci de tomber en panne. Une panne matérielle violente liée à une sur-tension, ou à un choc violent sera difficilement prévisible. Néanmoins, même si du point de vue de l'utilisateur un disque dur donne l'impression de tomber en panne brutalement, un certain nombre de signes d'usure sont déjà présents et leur observation permet de prévoir qu'une panne va « bientôt » survenir. La vitesse de rotation du plateau, la hauteur de la tête de lecture, le temps de positionnement de la tête, les taux d'erreurs de lecture/écriture sont autant d'informations utiles pour analyser l'état de santé d'un disque.

SMART n'est pas non plus une technologie « madame soleil », elle n'est pas capable de vous indiquer que votre disque dur va casser le 18 février à 15h30 et 10 secondes. Elle peut juste vous indiquer qu'un élément de votre disque dur se dégrade trop rapidement et que cela peut causer une panne dans les quelques jours/semaines à venir. Mais préfère-t-on sauvegarder les données de ce disque vers un disque neuf même si celui-ci fonctionne encore ou attendre que le disque soit définitivement cassé pour se dire « Ah oui, j'aurais peut-être dû faire une sauvegarde » .

Le cas extrême est d'acheter un disque dur neuf, d'effectuer un test SMART dessus et de se rendre compte que celui-ci annonce déjà une panne probable. Les causes sont multiples (mauvais transport, mauvais stockage, défaut de fabrication) mais on peut se dire que sur un disque neuf, la panne se ne produira pas tout de suite. On peut faire ce pari mais il y a de fortes chances que quelques semaines après, les premiers fameux « I/O errors » apparaissent et il faudra donc changer le disque dans l'urgence. La règle d'or est donc « Mieux vaut prévenir que guérir », il est donc impératif de changer un disque qui annonce une panne prochaine même si celui n'est pas très vieux ou s'il fonctionne encore bien. Les éléments d'usure observés par SMART et leur conséquences sur le fonctionnement du disque sont complètement invisibles et inaccessibles à l'utilisateur. Si vous attendez de vous rendre compte d'une panne sur votre disque pour le changer, dîtes-vous que ce sera déjà trop tard.

Fonctionnement de SMART

SMART définit un protocole de communication via les canaux IDE/SCSI entre un disque dur et une application. Celui-ci peut interroger un disque afin d'obtenir une liste d'attributs (une caractéristique physique) et les valeurs associées. Le disque dur s'auto-teste de manière autonome à la demande de l'utilisateur. Les performances seront certes un peu inférieures pendant la durée de ce test mais le disque dur restera fonctionnel. Le test n'est pas bloquant pour le système d'exploitation ou l'utilisateur. La liste d'attributs est commune à l'ensemble des constructeurs mais cela n'empêche pas ces derniers d'en implémenter d'autres qui leur sont spécifiques et bien sûr non documentées.

Certains constructeurs de disques durs vous proposent de télécharger un logiciel pour tester votre disque dur avant de le renvoyer en « Service Après Vente » . Bien entendu, ce logiciel n'est ni plus ni moins qu'une application qui va exécuter des tests puis lire les informations SMART de votre disque dur mais il est probable que cette application utilise également les attributs spécifiques de la marque.

Les attributs SMART

Voici la liste des attributs habituels que l'on trouve sur un disque dur :

Nom de l'attribut Rôle
Raw_Read_Error_Rate Fréquence d'apparition d'erreurs pendant la lecture de données brutes
Spin_Up_Time Temps de mise en rotation du disque
Start_Stop_Count Nombre de cycles arrêt/démarrage de l'axe de rotation
Reallocated_Sector_Ct Nombre de secteurs ré-alloués
Seek_Error_Rate Fréquence d'erreurs pendant le positionnement de la tête magnétique
Power_On_Hours Nombre d'heures de fonctionnement
Spin_Retry_Count Nombre de mises en rotation forcée du disque
Power_Cycle_Count Nombre de cycles de mise sous tension
Temperature_Celsius Température interne du disque en degrés Celsius
Hardware_ECC_Recovered Nombre de corrections ECC réalisées
Current_Pending_Sector Nombre de secteurs en attente de ré-allocation
Offline_Uncorrectable Nombre de secteurs non ré-allouables
UDMA_CRC_Error_Count Nombre d'erreurs de CRC pendant un accès Ultra DMA

Une liste plus exhaustive des attributs est disponible sur ce site : http://smartlinux.sourceforge.net/smart/attributes.php Chaque constructeur de disque dur implémente un composant électronique responsable de la surveillance de ces valeurs et de les rendre accessibles via le protocole SMART.

Voici un exemple de valeurs:

Analyse des valeurs

A chaque attribut est associé un type, un mode de mise à jour, une valeur brute (RAW), une valeur WORST, une valeur THRESH, une valeur VALUE.

La valeur brute représente la valeur mesurée de l'attribut. Dans le cas de l'attribut « Temperature », elle représente la température du disque dur.

VALUE représente un indice de fiabilité actuelle de cet attribut. THRESH, représente la valeur limite avant une dégradation des performances et un risque de panne élevé : si l'indice VALUE est inférieur ou égal à l'indice THRESH alors le disque risque de tomber en panne. WORST représente la plus petite valeur de VALUE enregistrée.

Les valeurs de THRESH sont décidées par le constructeur du disque dur pour un modèle donné. Ces valeurs peuvent donc changer en fonction des configurations.

Le type d'attribut Old-age indique que si l'indice VALUE est inférieur à THRESH alors cela indique que le produit est en fin de vie du fait d'une usure normale. L'attribut Pre-Fail indique que si l'indice VALUE est inférieur à THRESH alors une panne est imminente, il faut prévoir un remplacement.

Il existe deux méthodes pour mettre à jour les valeurs des attributs. La première dite « always » est la plus commune. Le composant électronique observe en permanence cet attribut. A chaque consultation de l'attribut, on peut y lire la valeur en cours. Ainsi, la température, le nombre d'erreurs ECC sont à jour en permanence. Les attributs dits « offline » ne seront remis à jour que lors d'un test du disque avec l'un des quatre modes : offline, short, long, conveyance.

Le champ WHEN_FAILED indique la probabilité de panne :

  • « FAILING_NOW » indique une panne imminente,
  • « In_the_past » indique de l'indice VALUE est déjà passé une fois sous la valeur THRESH : il faudra surveiller ce disque de près.

L'absence de valeur indique que le disque fonctionne normalement.

La lecture des attributs est assez fastidieuse. Pour cela, les outils de la suite smartmontools vont nous permettre de consulter, d'analyser et d'intervenir en cas de nécessité.

Utilisation de smartmontools

Il existe plusieurs implémentations d'outils permettant la consultation des attributs SMART.

Dans le cadre de cet article, nous utiliserons smartmontools car il est aujourd'hui sous Linux l'outil le plus complet et le plus à jour. Mais il est également disponible dans sa version Windows, OpenBSD, NetBSD, FreeBSD, OS/2 (à partir de la 5.34), Mac OSX (sauf SCSI). Cependant, les concepts et les lignes de commandes qui vont être expliqués dans cette partie doivent être facilement adaptables à d'autres outils SMART.

Installez smartmontools sur votre système à l'aide d'urpmi si vous êtes sur Mandrakelinux, apt si vous êtes sous Debian ou téléchargez la dernière version de smartmontools sur http://smartmontools.sf.net puis compilez et installez la sur votre système.

La version 5.33 est utilisée dans cet article, certaines fonctionnalités ne sont disponibles que depuis la 5.30.

L'outil smartctl vous permet maintenant de consulter les attributs SMART de vos disques durs. Tout d'abord, nous devons nous assurer que la partie SMART de votre disque dur est active. Certains BIOS possèdent une option en relation avec SMART : celle-ci permet généralement de vérifier rapidement que le disque dur ne présente pas de risque de panne élevé avant le démarrage de la machine. Dans ce cas, le BIOS bloque la procédure. Certains BIOS activent également avec cette option le contrôleur SMART du disque, mais ce n'est pas toujours le cas. Il est donc préférable de le faire manuellement : une seule fois suffit durant la vie du disque.

La commande suivante vous permet d'activer SMART, de sauvegarder automatiquement la sauvegarde des attributs ainsi que la mise à jour automatique des attributs « offline » du disque.

[root@] smartctl --smart=on --offlineauto=on --saveauto=on /dev/hdx

Il est à noter que, dans tous les exemples, la lettre « x » de /dev/hdx devra être remplacée par la lettre correspondant *à votre disque dur.

Le résultat suivant vous indique que SMART est maintenant bien activé et qu'une mise à jour des attributs « offline » sera effectuée toutes les quatre heures (cette valeur dépend du modèle et de la marque de votre disque dur).

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
SMART Attribute Autosave Enabled.
SMART Automatic Offline Testing Enabled every four hours.
Vous pouvez consulter la liste des attributs ainsi que leurs valeurs à l'aide de l'option « -A » .
[root@] smartctl -A /dev/hdx
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       28
194 Temperature_Celsius     0x0022   043   046   000    Old_age   Always       -       43
Dans cet exemple, on peut voir que le disque a déjà subi 28 cycles d'allumage et que sa température actuelle est de 43° celsius.
Vous pouvez également déclencher manuellement un test court avec la commande suivante:
[root@] smartctl -t short /dev/hdx
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 1 minutes for test to complete.
Test will complete after Wed Feb 18 11:51:46 2004

La durée des tests de type short, long et conveyance est définie dans la mémoire du disque lui-même, vous ne pouvez pas modifier cette valeur.

Une fois le test terminé, vous pouvez consulter le résultat du test à l'aide de l'option « -l » de smartctl. Cette option va lire dans la mémoire de votre disque (si celui-ci le permet) les traces (log) des dernières opérations réalisées sur celui-ci.

[root@] smartctl -l selftest /dev/hdx
 Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
 # 1  Short offline       Completed without error       00%      4913         -
 # 7  Short offline       Aborted by host               40%       595         -

Dans cet exemple, le test 1 (le dernier que l'on vient d'exécuter), de type test court, s'est déroulé sans erreur, votre disque est donc en bon état.

Le test 7 montre que l'utilisateur a interrompu le test à l'aide de l'option -X.

Ces quelques commandes vous permettent assez simplement de vérifier l'état de votre disque dur, mais tout ceci nécessite une exécution manuelle de l'outil. L'automatisation de ce processus est bien entendu nécessaire et obligatoire pour obtenir une surveillance permanente de vos disques durs.

Le démon smartd le permet, avec une remontée d'erreurs selon la méthode qui vous convient le mieux. Si smartmontools détecte une erreur dans les attributs ou lors d'un test alors celui peut déclencher une action pour vous prévenir : envoyer un mail, un sms, ou même afficher un « wall » sur la machine.

Configuration de smartd

smartmontools fournit le démon smartd dont le fichier de configuration est /etc/smartd.conf. Celui-ci dispose d'une syntaxe assez simple. Nous allons configurer celui-ci pour émettre un mail en cas de problème. Il suffit d'ajouter au fichier/etc/smartd.conf la ligne :

DEVICESCAN -H -l error -l selftest -t -m a@a.com -M exec /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, /dev/sdx, ...). L'ajout de cette ligne dans le fichier de configuration permet d'émettre un email à a@a.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.

/dev/hdx -a  -m admin@mondomain.com -M exec /usr/local/bin/report_smart

Voici le contenu de /usr/local/bin/report_smart

#! /bin/bash
 # Sauvegarde du corps de mail standard
 cat > /root/smartmail
 # On ajoute le résultat de « smartctl -a » dans le corps de mail
 /usr/sbin/smartctl -a -d $smartd_DEVICETYPE $smartd_DEVICE >> /root/smartmail
 # On émet le mail
 /bin/mail -s "$smartd_SUBJECT" $smartd_ADDRESS < /root/smartmail
 rm -f /root/smartmail
Les scripts appelés par smartd peuvent faire référence à 9 variables d'environnement  (voir le man pour plus de détails):
Variable Rôle (valeur par défaut)
smartd_MAILER Argument de -M exec (/bin/mail)
smartd_DEVICE Périphérique en cause, /dev/hdx, ...
smartd_DEVICETYPE Type de périphérique : ata, scsi, 3ware
smartd_DEVICESTRING Idem sauf pour les raid 3ware
smartd_FAILTYPE Raison de l'alerte
smartd_ADDRESS Destinataire du mail
smartd_MESSAGE Corps du message d'alerte
smartd_TFIRST Date et heure de la première erreur
smartd_TFIRSTEPOCH Nombre de secondes depuis 1970

Il est à remarquer que l'option « -m » permet d'ajouter des destinataires pour l'email d'alerte mais que celle-ci peut être positionnée sur « nomailer » dans le cas d'exécution d'un simple script, exemple:

/dev/hdx -a  -m <nomailer> -M exec /usr/local/bin/wall_smart

Voici le contenu de /usr/local/bin/wall_smart

#! /bin/bash
 # Avertir les utilisateurs de la machine
 wall 'Problem detected with disk: ' "$smartd_DEVICESTRING"
 wall 'Warning message from smartd is: ' "$smartd_MESSAGE"
 wall 'Shutting down machine in 60 seconds... '
 # Arrêter la machine
 /sbin/shutdown -t 60 -h

Avec ces quelques exemples, il est facile de modifier la décision à prendre en cas de panne prévue d'un disque. A vous de choisir la solution qui vous convient le mieux (mail, sms, wall, etc..).

Comment démarrer SMART pour diagnostiquer une panne ?

Cet exemple est inspiré d'un cas réel et permet de comprendre concrètement comment SMART peut aider au diagnostic d'une machine en panne. Une machine vient de « planter » et le redémarrage semble impossible car il provoque des « I/O errors » et la réparation du système de fichiers est excessivement lente.

La machine n'utilisait pas SMART donc on ne peut pas savoir si une panne du disque dur était prévisible. Il faut donc tester dans un premier temps l'état du disque dur sans utiliser le disque de celle-ci. Il faut éviter au maximum d'utiliser le disque dur afin de ne pas le détériorer. Ce test permettra de s'assurer que c'est bien une panne matérielle et non logicielle (système de fichiers corrompu).

Le projet smartlinux (http://smartlinux.sf.net) intègre sur une disquette, tous les outils nécessaires au diagnostic et la réparation du disque dur. Naturellement, smartmontools 5.33 est disponible sur smartlinux 0.4. Deux solutions sont disponibles, utiliser une disquette 1.44MB ou utiliser PXE.

Téléchargez smartlinux 0.4 sur le site du projet puis installez-le sur une disquette grâce à l'utilitaire « dd » sous Linux ou rawwrite sous Microsoft Windows. Démarrez l'ordinateur en panne avec la disquette. Attention les lecteurs de disquette USB ne sont pas supportés.

L'autre solution, consiste à utiliser PXE (Pre eXecution Environment) qui permet de démarrer un système d'exploitation via le réseau. Cette solution, permet de rendre accessible à toutes les machines d'un réseau possédant un serveur PXE l'exécution de smartlinux sans utiliser de disquette. Copiez smartlinux dans le répertoire TFTP de Pxelinux (/var/lib/tftpboot/X86PC/linux). Pour plus d'informations à propos de PXE vous pouvez consulter la documentation disponible sur http://clic.mandriva.com/documentation/pxe/.

La configuration du serveur PXE nécessite une petite astuce dans le fichier de configuration de Pxelinux (Pxelinux.cfg) qui consiste à charger smartlinux comme kernel et comme initrd.

label smart
    KERNEL smart-0.4.dsk
    APPEND initrd=smart-0.4.dsk root=/dev/ram

Une fois smartlinux démarré par PXE ou par disquette, vous pouvez utiliser « smartctl » comme décrit dans cet article. On pourra réaliser une analyse de l'état du disque avec l'option -A puis le tester avec l'option -t short ou -t long. Une fois le test terminé, l'option -l selftest vous permet de consulter le résultat du test. smartlinux possède également d'autres outils pour réparer les disques (dd_rescue, disc-recovery-utils, disktype, e3, fwipe, magicrescue, rescuept, wipe). Pour plus d'informations sur ces outils, consultez les documentations respectives de ces outils (http://smartlinux.sourceforge.net/#packages).

SMART et les disques SCSI

Les jeux de commande SCSI sont disponibles sur plusieurs couches de transport : SCSI Parallel Interface (SPI), Fibre Channel (FCP), Serial Attached SCSI (SAS), IEEE1394 (SBP) et USB (mass storage).

Les couches de transport SAS ou SPI (celles que l'on utilise sur un système carte SCSI + disque SCSI interne), permettent également l'utilisation du jeu de commande ATA : celui de vos disques IDE.

Ainsi une commande émise via la couche SAS, atteint le périphérique qui la traduit dans son équivalent ATA. Cette traduction est parfois uniquement réduite aux demandes de lecture et d'écriture. Certains périphériques ne supportent donc pas les commandes SMART, ce sera le cas des périphériques connectés via le port USB.

Le protocole SMART n'est pas normalisé mais est intégré sous différentes formes dans les normes ATA et SCSI. SMART était initialement développé sur les disques SCSI sous forme d'extensions propriétaires. Les constructeurs intègrent aujourd'hui le protocole défini par la norme mais aussi leurs extensions spécifiques pas toujours documentées. La norme SMART intégrée à SCSI étant plus limitée que celle implémentée dans ATA, les attributs seront moins nombreux et certains spécifiques au SCSI. Ainsi on pourra consulter, la marque, le modèle et le numéro de série du disque dur, sa température.

On pourra également consulter le nombre d'erreurs mineures et majeures générées, le nombre d'erreurs corrigées et incorrigibles ainsi que la taille des données qui ont transité sur le disque. Il est a noter que le nombre d'erreurs mineures peut augmenter assez vite car le disque en optimisant les accès aux données produit quelques fautes de positionnement qu'il corrige aussitôt.

Les commandes ainsi que les configurations de smartmontools ne diffèrent pas entre un système de disque ATA et un système de disque SCSI.

SMART et les systèmes RAID matériels

Une carte RAID se comporte comme un périphérique SCSI ou ATA qui retranscrit les commandes qu'elle reçoit vers son bus interne. Les disques connectés à la carte RAID ne sont donc pas accessibles directement, ils sont masqués par celle-ci. Il n'est pas pas possible d'adresser directement à un disque une commande SMART.

Les disques d'un système RAID sont soumis aux mêmes risques de pannes qu'un disque isolé : une panne dégrade les performances d'un volume RAID, plusieurs peuvent atteindre à l'intégrité de celui-ci. Puisque les disques sont masqués, il n'est pas possible d'utiliser les informations SMART des disques pour prévenir les pannes et planifier les interventions. L'utilisateur ou l'administrateur sera donc mis devant le fait accompli, il devra attendre que le volume RAID soit en mode dégradé à cause de la perte d'un disque pour pouvoir prévoir son intervention.

Cependant, certaines marques implémentent un protocole permet de transmettre les commandes SMART vers les disques qui composent le volume RAID. Les cartes 3ware par exemple, permettent de créer des volumes RAID SCSI avec des disques IDE, le pilote permet ensuite à SMART l'accès aux disques réels.

Le premier volume RAID composé par exemple de 3 disques IDE sera disponible en tant que disque SCSI nommé /dev/sda, le second volume RAID /dev/sdb etc...

La commande smartctl -a -d 3ware,n /dev/sda permet d'adresser la commande SMART au nième disque réel du premier volume RAID (nommé /dev/sda). Dans cet exemple, « n » pourra prendre les valeurs 0,1,2. La valeur 0 correspond au premier disque IDE du volume.

Avec ce type de carte RAID, il est donc possible de surveiller l'état des disques qui composent le volume RAID afin d'en prévenir les pannes.

Conclusion

La technologie SMART permet la prévision des pannes liées à l'usure des disques durs mais ne doit pas empêcher les stratégies de sauvegarde. Ce n'est qu'un outil de plus pour faciliter l'administration et le diagnostic des machines.

Les ordinateurs portables et les serveurs sont des plate-formes de choix pour SMART. Un portable étant souvent déplacé, secoué, il est soumis de fait aux risques de chocs et donc de pannes. Le serveur est quant à lui indispensable au bon fonctionnement d'une entreprise, tout arrêt non planifié de celui-ci peut avoir des conséquences importantes. SMART vous permet donc d'anticiper et de planifier le remplacement de vos disques dur sans être mis devant le fait accompli. Un outil vraiment indispensable pour tout le monde.

J'espère avoir contribué à la diffusion de cette technologie trop méconnue et sous-utilisée alors que déjà bien diffusée.

Je voudrais remercier Bruce Allen pour smartmontools, Zbigniew Chlondowski pour smartlinux ainsi que pour son site rempli d'informations utiles sur SMART, à Christophe Guittenit pour ses explications précieuses, Anne pour ses relectures, ses commentaires et son sang froid sur mes fautes d'orthographes et de grammaire, ainsi que tout ceux qui m'encouragent à écrire mes articles.


Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Erwan le 30/03/2005.

Copyright

Copyright © 30/03/2005, Erwan

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/



@ Retour à la rubrique Matériel