conspicio.fr
← Serveur

Verifier l'etat de sante d'un disque

Publié le

  • smart
  • smartctl
  • disque

SMART

Les disques on un systeme d’autosurveillance integre permettant de verifier sont etat de sante. Self-Monitoring, Analysis and Reporting Technology

Un disque expose donc trois choses :

  • attributs (compteurs et mesures)
  • verdict global
  • autotests

Attributs

RAW_VALUE : donnee relle (nb de secteurs, heures, erreurs) VALUE : note normalise par le fabriquant (plus haut = mieux) WORST : note notmalise plus basse atteinte THRESH : Seuil d’echec fixer par le fabriquant (VALUE)

Verdict

PASSED / FAILED

Tout est dans le nom, FAILED est une valeur sur alors que PASSED ne prouve rien.

Autotests

Un disque peut se tester lui meme.

  • short : petite zoen (~2min)
  • long : tout (plusieurs h)
  • conveyance : degats de transport (~5min)

Logs

Il existe egalement un journal d’erreur qui enregistre les erreurs en usage reel

TEST

Pour tester un disque il faut deja les identifier :

lsblk -d -o NAME,SIZE,MODEL,SERIAL,ROTA,TRAN
ls -l /dev/disk/by-id/ | grep -v part

ata- SATA nvme- nvme usb- usb scsi- sas ou sata derriere sas/raid wwn-0x id mondial on peut rajouter | grep <format> pour en selectionner un en particulier

On travaille en by-id car celui ci ne change par la ou le NAME depend de l’ordre au demarrage. Pour faire plus simple on lui donne un id

D=/dev/disk/by-id/ata-<modèle>_<série>

Pour aller plus vite on peut faire DX pour chaque disque et faire une boucle, c’est ce qu’on fera pour la suite (une boucle sur un disque marche evidemment).

for d in $D1 $D2 ...; do ...; done

Pour verifier qu’un disque dispose de SMART on utilise

smartctl -d $D

Activer SMART

smartctl -s on $D

Pour un disque en usb il faut rajouter -d sat sur smartctl.

Relever l’etat actuel

smartctl -H -A $D

On peut deja voir PASSED / FAILED et des attributs qui vont nous servir de reference (a noter; 5, 9, 187, 188, 197, 198, 199).

En donnant le resultat de smartctl -l error $D a une IA et ceux de la commande precendente (flemme de lire ca), on peut savoir si une erreur est ancienne ou recente.

Test court

Identifier si un disque est mort avant d’entamme un test long

smartctl -t short $D

Test long

smartctl -t long $D

Suivre un test

smartctl -c $D | grep -A1 'Self-test execution'

Un test s’effectue sur un disque, donc tant que le disque ne s’etaint, il n’est pas oblige de garder une connexion avec lui.

Savoir quand un test est terminer

for d in $D1 $D2 ...; do echo "=== $d"; smartctl -c $d | grep -A1 'Self-test execution'; done

Resultat d’un test

smartctl -l selftest $d

Je vous laisse analyser les resultats avec IA…