« Diagnostic smart d'un disque » : différence entre les versions

Aller à la navigation Aller à la recherche
(27 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Category:serveur]]
[[Category:serveur]]
[[Category:Bureautique]]
[[Category:desktop]]


=Activation=
=Activation=
Ligne 15 : Ligne 15 :
si jamais le smart de votre disque est disabled, essayez de l'activer avec  
si jamais le smart de votre disque est disabled, essayez de l'activer avec  
<pre>smartctl -s on /dev/sda</pre>
<pre>smartctl -s on /dev/sda</pre>
Sur un desktop, il est possible de désactiver la récupération automatique "Offline" des données car elle peut altérer de manière aléatoire les performances du disque (<code>smartctl -o off /dev/sda</code>), sachant qu'une telle vérificatiion est généralement lancé au démarrage du disque. Sur un serveur (avec un disque tournant donc en permanence), il peut être préférable de la laisser activé.


=Généralités=
=Généralités=


Pour vérifier l'état global du disque utilisez l'option -H. Si vous obtenez PASSED, tant mieux, sinon, préparez vous à sauvegarder d'urgence vos données !
Pour vérifier l'état global du disque utilisez l'option -H. Si vous obtenez <code>PASSED</code>, tant mieux, sinon, préparez vous à sauvegarder d'urgence vos données !
<pre>
<pre>
~# smartctl -H /dev/sda
~# smartctl -H /dev/sda
Ligne 89 : Ligne 91 :
smartctl -t short /dev/sda
smartctl -t short /dev/sda
smartctl -t long /dev/sda
smartctl -t long /dev/sda
smartctl -t offline /dev/sda
smartctl -t conveyance /dev/sda
smartctl -t conveyance /dev/sda
</pre>
</pre>


Pour vérifier le status des tests :
Pour vérifier le niveau d'avancement du test en cours, regardez la ligne <code>Self-test execution status</code> de <code>smartctl --capabilities /dev/sda</code>
 
Pour vérifier le résultat des tests terminés :
<pre>smartctl -l selftest /dev/sda</pre>
<pre>smartctl -l selftest /dev/sda</pre>


=interprétation des attributs=
=Interprétation des attributs=


Les attributs SMART sont ceux utilisés pour calculer l'état global du disque (<code>smartctl -H /dev/sda</code>). Pour visualiser ces attributs il faut utiliser l'option <code>-A</code> :
Les attributs SMART sont ceux utilisés pour calculer l'état global du disque (<code>smartctl -H /dev/sda</code>). Pour visualiser ces attributs il faut utiliser l'option <code>-A</code> :
Ligne 139 : Ligne 144 :
Pour savoir si la RAW_VALUE est meilleure haute ou basse, je vous renvoi ici : http://en.wikipedia.org/wiki/S.M.A.R.T.#Known_ATA_S.M.A.R.T._attributes (en général, une erreur doit être la plus basse possible)
Pour savoir si la RAW_VALUE est meilleure haute ou basse, je vous renvoi ici : http://en.wikipedia.org/wiki/S.M.A.R.T.#Known_ATA_S.M.A.R.T._attributes (en général, une erreur doit être la plus basse possible)


Globalement, retenez que les RAW_VALUE de Current_Pending_Sector et Offline_Uncorrectable et Reallocated_Sector_Ct doivent être a 0 (et si elles augmentent, c'est que ça va mal)
Globalement, retenez que les RAW_VALUE de Current_Pending_Sector et Offline_Uncorrectable et Reallocated_Sector_Ct doivent idéalement être a 0. Si elles augmentent, il faut investiguer la situation.
 
Notez que certains attributs SMART, identifiés par le mot <code>Offline</code> à la colonne <code>UPDATED</code>, ne sont mis à jour que lorsque la collecte de données offline a lieu. Généralement, cette collecte à lieu au démarrage du disque, ou de manière régulière si vous activez la collecte automatique des données offline (avec <code>smartctl -o on /dev/sda</code>)
 
==Current_Pending_Sector, Reallocated_Event_Count et Reallocated_Sector_Ct==
 
* Quand le contrôleur interne du disque détecte un secteur qu'il ne parvient plus à lire, il incrémente la valeur <code>Current_Pending_Sector</code>.
* Si lors d'une tentative ultérieure de lecture, le secteur est lu avec succès, les données sont transférés sur un spare sector. Dans ce cas, le contrôleur décrémente la valeur <code>Current_Pending_Sector</code>, et incrémente les valeurs <code>Reallocated_Event_Count</code> et <code>Reallocated_Sector_Ct</code>
* Si le secteur ne peut vraiment plus être lu, le contrôleur conserve en mémoire ce secteur en attente (d'où le maintien de <code>Current_Pending_Sector</code>), dans l'attente d'une tentative d'écriture sur ce secteur. Par la suite, il y a deux cas de figure selon les constructeurs :
** Soit, par la suite, des données doivent être écrite sur ce secteur, et que cette écriture réussie, le secteur est considéré comme fonctionnel et le contrôleur décrémente la valeur <code>Current_Pending_Sector</code>. Si l'écriture échoue, le secteur est considéré comme défectueux, et se retrouve remplacé par un spare sector. Dans ce cas, le contrôleur décrémente la valeur <code>Current_Pending_Sector</code>, et incrémente les valeurs <code>Reallocated_Event_Count</code> et <code>Reallocated_Sector_Ct</code>
** Soit, dès que des données doivent être écrite sur ce secteur, il est immédiatement remappé sur un spare sector, et les données sont écrites sur le spare sector. Dans ce cas, le contrôleur décrémente la valeur <code>Current_Pending_Sector</code>, et incrémente les valeurs <code>Reallocated_Event_Count</code> et <code>Reallocated_Sector_Ct</code>
 
<br>
A noter que, dans tous les cas, après une écriture complète du disque (par exemple si vous le remplissez de 0 avec dd), <code>Current_Pending_Sector</code> devrait toujours revenir à 0 (et éventuellement, selon le mode de fonctionnement, <code>Reallocated_Event_Count</code> et <code>Reallocated_Sector_Ct</code> augmenteront ou non).<br>
<br>
Si <code>Current_Pending_Sector</code> ne revient pas à 0 après un full-disk-write, c'est relativement inquiétant car cela signifie qu'un secteur est défectueux mais n'arrive pas a être remappé pour une raison quelconque (ou alors bug de firmware).
 
<br>
Dans l'idéal, si vous voyez Current_Pending_Sector augmenter :
* Débuter par faire un long check smart
* Si l'erreur persiste, faite une lecture complète du disque (par exemple avec badblocks)
* Si l'erreur persiste toujours, sauvegardez les données puis faite un full-disk-write
* Si l'erreur persiste malgré tout, essayez de faire un secure erase puis un full-disk-write : https://grok.lsu.edu/Article.aspx?articleid=16716 https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing
 
<br>
De manière globale, le risque de voir son disque tomber définitivement en panne, ou provoquer une perte de données importante, dépend non seulement du nombre de pending sectors et reallocated sectors, mais également de la vitesse à laquelle ces chiffres augmentent. Si vous avez 2 secteurs réalloués, mais que ce chiffre reste stable, votre disque pourrait vivre encore plusieurs années. Tout dépend aussi de l'importance que vous accordez aux données stockées.<br>
Enfin, notez qu'un nombre important de secteurs réalloués ralentira votre disque dur (les spare sector ne sont, nécessairement, pas continu avec les secteurs réalloués, donc la tête de lecture doit se déplacer).
 
=Surveillance automatique avec smartd=
 
<pre>/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m mail@domain.tld</pre>
 
Nous activons la surveillance globale (<code>-a</code>), la collection automatique offline des donnés (<code>-o on</code>), la sauvegarde automatique des attributs (<code>-S on</code> et lançons un <code>short self test</code> tous les jours à 2h du matin, et un <code>long self test</code> tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à mail@domain.tld.<br>
Notez que <code>-a</code> correspond à <code>-H -f -t -l error -l selftest -C 197 -U 198</code> avec :
* -H : SMART Health Status
* -f : Monitor for failure of any 'Usage' Attributes
* -t : Report changes in 'Prefailure' Normalized Attributes et Report changes in 'Usage' Normalized Attributes
* -l : Monitor SMART log (error et selftest ici)
* -C 197 : Report if Current Pending Sector count non-zero (attribut 197)
* -U 198 : Report if Offline Uncorrectable count non-zero (attribut 198)
4 203

modifications

Menu de navigation