2 disques "défecteux" dans un RAID-5 à 3 disques

2 disques "défecteux" dans un RAID-5 à 3 disques - Divers - Linux et OS Alternatifs

Marsh Posté le 23-04-2010 à 23:17:57    

Bonjour,
 
Hier j'ai déplacé ma machine et je ne peux maintenant plus accéder à la matrice RAID. C'est d'abord sdb qui a déconné, puis depuis le reboot suivant, sdc. Comme tout s'est produit pendant un intervalle de temps de quelques minutes et que je n'ai rien écrit, je pense que les données sont toujours là, intactes. J'ai juste peur de faire une bêtise et de tout perdre par ma faute (ça m'est déjà arrivé).
 
'mdadm --detail /dev/md0' donne :

/dev/md0:
        Version : 01.02
  Creation Time : Wed Apr 15 00:00:14 2009
     Raid Level : raid5
  Used Dev Size : 976762432 (931.51 GiB 1000.20 GB)
   Raid Devices : 3
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent
 
    Update Time : Thu Apr 22 23:40:27 2010
          State : active, degraded, Not Started
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1
 
         Layout : left-symmetric
     Chunk Size : 64K
 
           Name : server:d0  (local to host server)
           UUID : e84b8f97:fd7fd496:1f9adc88:b8915c4d
         Events : 299841
 
    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       1       8       16        1      spare rebuilding   /dev/sdb
       2       0        0        2      removed


 
Bien que sdb soit marqué "rebuilding", il n'y a pas de synchronisation en cours puisqu'il n'y a plus qu'un seul disque de valide. De plus, ses données semblent être à niveau vu la valeur de Events ici :

# mdadm --examine /dev/sd[abc] | grep Events
         Events : 299841
         Events : 299841
         Events : 299838


 
Du coup, je pensais recréer la matrice RAID en mode dégradé de cette façon :

mdadm --create /dev/md0 --assume-clean --level=5 --verbose --raid-devices=3 /dev/sda /dev/sdb missing


(comme expliqué ici : http://kevin.deldycke.com/tag/mdadm/)
 
Pour ensuite remettre sdc après avoir remis à zéro son superblock puis laisser faire la reconstruction.
 
Seulement le doute s'installe en moi quand je vois que 'mdadm --examine /dev/sdb' m'affiche (entre autre) :
 


Feature Map : 0x2
Recovery Offset : 6400 sectors


 
Ceci montre bien qu'une synchro était en cours avant que sdc s'arrête. Du coup est-ce qu'il vous semble sûr de lancer les opérations prévues ? Est-ce que cette synchro va s'annuler après le 'create --assume clean' ou est-ce que sdb va tenter de se synchroniser avec le sdc "vierge" que je vais remettre en dernière étape ?
 
Merci,
Yann

Reply

Marsh Posté le 23-04-2010 à 23:17:57   

Reply

Marsh Posté le 24-04-2010 à 01:31:04    

La situation me semble très délicate ! Si tu as accès à beaucoup d'espace de stockage je te conseille de faire des images disque (dd if=/dev/sda of=/.../fichier) pour pouvoir recommencer en cas d'erreur.
 
Sinon je ne sais pas du tout la procédure à suivre pour essayer de récupérer quelque chose, je laisse les autres te répondre

Reply

Marsh Posté le 24-04-2010 à 10:56:17    

mdadm --create ça déjà clair et net c'est une bêtise !!! tu vas flinguer ta pile direct.
 
faut faire un mdadm --assemble ...
 
ensuite, même remarque que xytovl, je te suggère très fortement de te faire des images de tes disques avant de te lancer
 
je rajouterai même de vérifier complètement (tests SMART, surface, ...) tes deux disques sdb et sdc avant de tenter quoique ce soit niveau mdadm

Reply

Marsh Posté le 24-04-2010 à 13:36:30    

Question en passant pour fighting_falcon : Tu utilises quoi pour faire la vérification de surface sous linux ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 24-04-2010 à 13:41:22    

--assemble ne fonctionne pas puisque les disques sont marqués défectueux. J'ai trouvé pas mal de posts où --create permet de récupérer un RAID si :
1) on réutilise les mêmes paramètres
2) on déclare un disque en "missing", ce qui permet de ne pas avoir de synchro automatique
 
Par contre 3 disques de 1To, ça va être chaud à sauvegarder pour moi. Bon, au pire, j'achète, je sauvegarde, je répare, je revends.

Reply

Marsh Posté le 24-04-2010 à 14:02:04    

En fait le pb est de savoir si un ou plusieurs disques sont vraiment défectueux (matériellement).
 
Si tu es sûr que les 3 sont en bon état, je te confirme que le simple fait de faire un mdadm --create (en respectant les paramètres d'origines de la grappe) va te garder les données, que la synchro soit déclenchée ou pas ... j'ai sauvé mes grappes raid un paquet de fois comme ça ... C'est le seul moyen quand les disques d'une grappe sont dans un état complètement incohérent.
 
Ensuite tu montes le filesystem, tu backupes tout ce que tu peux (si tu en as la possibilité), tu démontes, et tu fais un fsck !

Reply

Marsh Posté le 24-04-2010 à 15:07:59    

Ok, merci.
 
Je ne pense pas qu'ils soient défectueux. J'ai juste déplacé la machine, fait un peu de nettoyage vite fait, donc je pense plutôt à un mauvais contact au premier redémarrage (je n'ai vérifié les branchements qu'ensuite).
 
Est-ce que je peux indiquer sdb comme 'clean' malgré le fait qu'il ai été interrompu pendant une synchro (cf. 'Feature Map' et 'Recovery offset') ?

Reply

Marsh Posté le 24-04-2010 à 15:30:01    

esox_ch > l'utilitaire du constructeur ... (PowerMax pour Maxtor, ESTool pour Samsung, ...)

Reply

Marsh Posté le 24-04-2010 à 17:07:04    

L'ordre des disques dans la commande --create a-t-il une importance ? Je ne suis pas sûr que les sda, sdb, sdc soient dans le même ordre que le jour où j'ai créé la matrice.

Reply

Marsh Posté le 24-04-2010 à 17:49:13    

vu la technologie utilisée (raid5, c'est à dire parité = données A XOR données B), je ne pense pas ...
 
mais j'aimerai confirmation de la part d'autres membres ...

Reply

Marsh Posté le 24-04-2010 à 17:49:13   

Reply

Marsh Posté le 24-04-2010 à 17:57:43    

Bon, avec tout ce que j'ai appris, je pense à peu près savoir ce que je fais. Donc j'ai tapé :

mdadm --create /dev/md0 --assume-clean --level=5 --raid-devices=3 --verbose --metadata=1.2 --auto=part /dev/sda /dev/sdb missing


 
Ça a bien fonctionné. J'ai ensuite monté le filesystem en read-only et je suis maintenant en train de voir si mes fichiers sont bons. En tout cas, ils sont là et ils ont l'air corrects. Si à peu près tout se révèle correct, je passerai au zero-superblock, puis add du troisième disque.

Reply

Marsh Posté le 25-04-2010 à 17:32:14    

Bon... ça se gâte quand je rajoute le troisième disque. Mais je viens de remarquer qu'il y a des erreurs de déclarée sur sdb avec 'smartctl -l error /dev/sdb'. Y a-t-il des erreurs "normales" ou est-ce que ça veut automatiquement dire que le disque est à changer ?

Reply

Marsh Posté le 30-04-2010 à 16:46:16    

Quand j'avais fait mon create avec assume-clean, j'avais du reseter les uid sur les disques ensuite.
 
que dis ton /proc/mdstat en ce moment ?


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
Reply

Marsh Posté le 04-05-2010 à 01:16:42    

Pardon, j'avais pas vu ton message. Je viens de remplacer le disque "défectueux" mais ça ne fonctionne pas mieux.
 
Le disque en question était sdb. Donc je suis reparti avec un :

# mdadm --create /dev/md0 --assume-clean --level=5 --raid-devices=3 --verbose --metadata=1.2 --auto=part /dev/sda missing /dev/sdc
# mdadm --zero-superblock /dev/sdb


A partir de là, j'ai accédé (en read-only bien sûr) à mes fichiers le temps de commander un nouveau disque. Donc aucune perte.
 
Ensuite remplacement du disque sdb par un neuf et :

# mdadm --add /dev/md0 /dev/sdb


 
Mais là j'ai exactement le même comportement qu'en faisant les mêmes opérations disque défectueux. Pendant une seconde ou deux, il fait genre il synchronise, et puis :

# mdadm --detail /dev/md0
[...]
    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       1       0        0        1      removed
       2       0        0        2      removed
 
       2       8       32        -      faulty spare   /dev/sdc
       3       8       16        -      spare   /dev/sdb
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdb[3](S) sdc[2](F) sda[0]
      1953524864 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/1] [U__]


 
Vous avez une idée ?

Reply

Marsh Posté le 04-05-2010 à 01:43:06    

Euhhhh, bizarrement smartctl m'indique 2 disque défaillants sur les 3 anciens. Je comprends pas trop comment c'est possible. Surtout que pour tous les deux, j'obtiens ceci après un selftest :

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed: read failure       20%      8217         4512


C'est pas bizarre d'avoir une erreur au même LBA ? Coïncidence ? Ou logique vu qu'ils fonctionnaient dans la même matrice RAID ?

Reply

Marsh Posté le 04-05-2010 à 21:10:37    

C'est du seagate ?
 
sinon ton mdadm--detail ressemble au mien avant le --assume-clean.
 
check chaque superblock et vérifie que chaque uid est bien le même. je crois que le create refait un uid différend, donc check bien ça.


---------------
"Your god is too small", Giordano Bruno, 1548 - 1600
Reply

Marsh Posté le 06-05-2010 à 09:32:32    

Non, c'est du Samsung.
Oui, le create créé un nouvel uid. D'ailleurs le fait que tous les disques soient listés dans le detail indique qu'ils sont bien dans le même uid.
 
Bon, je crois que j'ai vraiment 2 disques défecteux. J'arrive même pas faire un dd if=/dev/sdc. Je comprends pas comment c'est possible d'avoir 2 disques défectueux en même temps et au même endroit.

Reply

Marsh Posté le 11-07-2010 à 12:57:15    

Mon histoire est réglée et je n'ai perdu aucune donnée.
 
La procédure donnée ci-dessus était bien la bonne. Il s'est trouvé que j'avais 2 disques sur les 3 donnés comme défectueux, et tous les deux sur les secteurs 4512 et 4513. J'en ai remplacé un par un neuf (que j'ai d'abord cloné depuis un des deux "défectueux" ), puis formaté l'autre en bas-niveau avec l'outil Samsung, réinséré dans la matrice, puis reconstruit à partir des deux autres.
 
Finalement, j'ai aussi formaté en bas-niveau le disque que j'ai remplacé et je l'utilise maintenant par ailleurs. Même l'outil Samsung ne leur trouve plus d'erreur maintenant. Allez savoir ce qu'il s'est passé !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed