Comment tester un disque dur sous Mac OS X gratuitement.

Suite au crash de mon mac mini serveur ( merci EDF pour ces coupures intempestives et répétitives, vive le 06 et sa précarité énergétique) 😉 .

Je précise que ce serveur interne à notre entreprise est en charge de fournir différent service comme l’agenda partagé, le CRM (facturation y compris) ainsi que de servir de serveur de backup des différents serveur de production loués dans des datacenter français.

Ce serveur dispose de son propre onduleur et il s’éteint et se rallume automatiquement en cas de coupure de courant se prolongeant dans la durée.

Donc un beau Lundi matin d’orage, après 5 coupures de courant espacé de 10 moinutes environ, le serveur à planté avec impossibilité de redémarrer, écran gris avec la pomme et le gif animé du chargement.

Avant de démonter le disque vérifier son état en redémarrant en « single user » (appui sur Pomme et S) Lancer la commande fsck -f ATTENTION : le clavier est en qwerty

Les différents mode de redémarrage n’ayant apporté aucune solution, la décision d’ouvrir la bête et de remplacer le disque dur principale c’est imposée d’elle même.

Merci à notre partenaire « Villanelle Multimedia » de nous avoir fournit si rapidement un disque de remplacement.

Un démarrage et une restauration de la dernière sauvegarde time machine plus tard et tout est de nouveau opérationnel.

Mais que faire de ce vieux disque dur, est il vraiment HS?

Je vais donc vous présentez les outils utilisés et leur installation sur Mac OS X Mountain Lion.

Icone-Utilitaire-Disque

Pour commencer il est préférable de vérifier tout simplement que le disque peut être formater via l’utilitaire de disque.

Il est possible d’utiliser la ligne de commande pour vérifier l’état du disque mais le résultat ne reflète pas forcément la réalité des choses.

diskutil verifyvolume /Volumes/NomDuDisque

Pour aller plus loin, si on veut tester les blocs pour savoir si ce disque comporte des secteurs défectueux par exemple il faut alors installer des outils complémentaires.
Si comme moi vous avez installé le disque en question dans un boitier USB il faudra installer un driver (OS X SAT SMART Driver) permettant d’acceder aux informations SMART des disques connectés de la sorte 5Un re-démarrage est obligatoire après cette installation).

Une fois ce driver installé et votre mac redémarrer vous verrez apparaître en bas à droite de l’utilitaire de disque le statut « Vérifié » pour l’État S.M.A.R.T cf copie écran ci-dessous.

Vérifier l'état smart de votre disque connecté en USB

Vérifier l’état smart de votre disque connecté en USB

Puis installer Smartmontools et depuis la ligne de commande exécuter la commande suivante pour faire un teste rapide de votre disque

sudo /usr/local/sbin/smartctl --test=short -s on /dev/diskX

X est remplacé par 0,1.. en fonction du disque à tester.
Vous devriez obtenir un message vous informant que le test a commencé et obtenir la date et heure de fin du teste.

smartctl 6.2 2013-07-26 r3841 [x86_64-apple-darwin12.4.0] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Thu Aug  1 18:16:19 2013

Use smartctl -X to abort test.

Pour obtenir le résultat du teste

sudo /usr/local/sbin/smartctl -a -s on /dev/diskX (version détaillée)<br />sudo /usr/local/sbin/smartctl -q errorsonly -H -l selftest (résumé des erreurs seulement)

Une fois le teste rapide effectué il faudra lancer un test long qui lui demandera beaucoup plus de temps (3h environ pour notre disque de 500Go)

sudo /usr/local/sbin/smartctl --test=long -s on /dev/diskX

Le résultat affichée par la commande smartctl -a retourne (entre autre) un tableau qui contient une ligne fort intéressante pour déterminer la santé de votre disque.
La ligne  5 Reallocated_Sector_Ct

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   084   084   062    Pre-fail  Always       -       9699553
  2 Throughput_Performance  0x0005   100   100   040    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0007   129   129   033    Pre-fail  Always       -       2
  4 Start_Stop_Count        0x0012   100   100   000    Old_age   Always       -       1087
  5 Reallocated_Sector_Ct   0x0033   012   012   005    Pre-fail  Always       -       4265
  7 Seek_Error_Rate         0x000b   100   100   067    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   040    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0012   038   038   000    Old_age   Always       -       27494
 10 Spin_Retry_Count        0x0013   100   100   060    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       519
160 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
191 G-Sense_Error_Rate      0x000a   100   100   000    Old_age   Always       -       4294967296
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       60
193 Load_Cycle_Count        0x0012   001   001   000    Old_age   Always       -       2371493
194 Temperature_Celsius     0x0002   152   152   000    Old_age   Always       -       36 (Min/Max 3/55)
195 Hardware_ECC_Recovered  0x000a   100   100   000    Old_age   Always       -       0
196 Reallocated_Event_Count 0x0032   003   003   000    Old_age   Always       -       4764
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       60
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   200   200   000    Old_age   Always       -       0
223 Load_Retry_Count        0x000a   100   100   000    Old_age   Always       -       0
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       4294967311

ci dessus le résultat sur le disque ayant provoqué le plantage du Mac Mini Serveur, on constate un nombre important de secteurs ré-alloués donc endommagés.
ci dessous le résultat du disque de mon mac book pro (ayant presque le même âge) ici aucun secteur défectueux.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   100   100   046    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   030    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0003   100   100   025    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   098   098   000    Old_age   Always       -       7109
  5 Reallocated_Sector_Ct   0x0033   100   100   024    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   100   100   047    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   019    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   084   084   000    Old_age   Always       -       8485
 10 Spin_Retry_Count        0x0013   100   100   020    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       5259
160 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       81620434986
193 Load_Cycle_Count        0x0032   086   086   000    Old_age   Always       -       290169
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       39 (Min/Max 9/55)
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       0
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
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   253   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x000f   100   100   060    Pre-fail  Always       -       0
203 Run_Out_Cancel          0x0002   100   100   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x003e   200   200   000    Old_age   Always       -       0
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       845

Temps que vous n’avez aucune ligne de ce tableau comportant une valeur autre que le « – » dans la colonne RAW_VALUE alors votre disque reste utilisable mais si les valeurs des lignes Raw_Read_Error_Rate et Reallocated_Sector_Ct augmentent régulièrement alors il est temps de prendre vos précautions en commandant un nouveau disque dur.

La ligne de commande est pas votre amie

Interface Graphique pour SmartControl

Interface Graphique pour Smartmontools

MacPorts

Optez pour l’interface graphique GSmartControl avec par exemple la version pour MacOs

Pour installer GSmartControl via MacPorts (MacPorts doit être installé sur votre Mac bien sur) exécutez les commandes suivantesviaMacPorts

sudo port install gsmartcontrol

Si vous obtenez un message d’erreur style « Not Found » alors essayez de lancer la commande suivante avant de relancer l’installation

sudo port selfupdate

Pour lancer le programme il faudra passer par la ligne de commande

sudo gsmartcontrol
MacPort installera les dépendances donc si smartmontools n’est pas dans votre path il ce peut qu’un autre version de cette application soit installé en même temps. Vérifier vos dossier /usr/local/sbin et /op/local/sbin si vous trouvez les fichiers smartctl et smartd dans chacun de ces dossiers vous pouvez en supprimer une version en fonction de ce que retourne la commande $PATH

Pour aller plus loin il est possible de configurer un « service » qui effectuera ces testes régulièrement et vous alertera en cas de problème, smartd compris dans smartmontools. Pour plus de détails sur son fonctionnement voici deux sites riches d’informations à son sujet : http://doc.ubuntu-fr.org/smartmontools et http://valaurea.free.fr/documents/sig11_smart.html