web-dev-qa-db-fra.com

Comment récupérer un tableau Crashed Linux MD RAID5?

Il y a quelque temps, j'ai eu un système RAID5 à la maison. L'un des 4 disques a échoué mais après avoir retiré et le remettre en arrière, il semblait être d'accord alors j'ai commencé une resynchronisation. Quand il a fini, j'ai réalisé, à mon horreur, que 3 disques sur 4 ont échoué. Cependant, je ne crois pas que ce soit possible. Il existe plusieurs partitions sur les disques de chaque partie d'un tableau de raid différent.

  • mD0 est une matrice RAID1 composée de SDA1, SDB1, SDC1 et SDD1.
  • mD1 est une matrice RAID5 composée de SDA2, SDB2, SDC2 et SDD2.
  • mD2 est une matrice RAID0 composée de SDA3, SDB3, SDC3 et SDD3.

mD0 et MD2 signale tous les disques sur les rapports MD1 3 ont échoué (SDB2, SDC2, SDD2). C'est mon uderstanding que lorsque les disques durs échouent, toutes les partitions doivent être perdues, pas seulement les moyens.

À ce stade, j'ai éteint l'ordinateur et j'ai débranché les lecteurs. Depuis lors, j'utilisais cet ordinateur avec un nouveau disque plus petit.

Y a-t-il un espoir de récupérer les données? Puis-je convaincre Mdadm que mes disques travaillent en fait? Le seul disque pouvant vraiment avoir un problème est de SDC, mais celui-ci aussi est signalé par les autres tableaux.

Mise à jour

J'ai finalement eu la chance de connecter les vieux disques et de démarrer cette machine de SystemRescuecd. Tout ce qui précède a été écrit de la mémoire. Maintenant, j'ai des données difficiles. Voici la sortie de mdadm --examine /dev/sd*2

/dev/sda2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
  Creation Time : Sun May 30 21:48:55 2010
     Raid Level : raid5
  Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
     Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1

    Update Time : Mon Aug 23 11:40:48 2010
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 1
  Spare Devices : 1
       Checksum : 68b48835 - correct
         Events : 53204

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     0       8        2        0      active sync   /dev/sda2

   0     0       8        2        0      active sync   /dev/sda2
   1     1       8       18        1      active sync   /dev/sdb2
   2     2       8       34        2      active sync   /dev/sdc2
   3     3       0        0        3      faulty removed
   4     4       8       50        4      spare   /dev/sdd2
/dev/sdb2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
  Creation Time : Sun May 30 21:48:55 2010
     Raid Level : raid5
  Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
     Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1

    Update Time : Mon Aug 23 11:44:54 2010
          State : clean
 Active Devices : 2
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 1
       Checksum : 68b4894a - correct
         Events : 53205

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     1       8       18        1      active sync   /dev/sdb2

   0     0       0        0        0      removed
   1     1       8       18        1      active sync   /dev/sdb2
   2     2       8       34        2      active sync   /dev/sdc2
   3     3       0        0        3      faulty removed
   4     4       8       50        4      spare   /dev/sdd2
/dev/sdc2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
  Creation Time : Sun May 30 21:48:55 2010
     Raid Level : raid5
  Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
     Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1

    Update Time : Mon Aug 23 11:44:54 2010
          State : clean
 Active Devices : 1
Working Devices : 2
 Failed Devices : 2
  Spare Devices : 1
       Checksum : 68b48975 - correct
         Events : 53210

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     2       8       34        2      active sync   /dev/sdc2

   0     0       0        0        0      removed
   1     1       0        0        1      faulty removed
   2     2       8       34        2      active sync   /dev/sdc2
   3     3       0        0        3      faulty removed
   4     4       8       50        4      spare   /dev/sdd2
/dev/sdd2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
  Creation Time : Sun May 30 21:48:55 2010
     Raid Level : raid5
  Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
     Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1

    Update Time : Mon Aug 23 11:44:54 2010
          State : clean
 Active Devices : 1
Working Devices : 2
 Failed Devices : 2
  Spare Devices : 1
       Checksum : 68b48983 - correct
         Events : 53210

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     4       8       50        4      spare   /dev/sdd2

   0     0       0        0        0      removed
   1     1       0        0        1      faulty removed
   2     2       8       34        2      active sync   /dev/sdc2
   3     3       0        0        3      faulty removed
   4     4       8       50        4      spare   /dev/sdd2

Il semble que les choses ont changé depuis la dernière botte. Si je lis cela correctement SDA2, SDB2 et SDC2 fonctionnent et contiennent des données synchronisées et SDD2 est disponible. Je me souviens distinctement de voir 3 disques défaillants, mais c'est une bonne nouvelle. Pourtant, le tableau ne fonctionne toujours pas:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md125 : inactive sda2[0](S) sdb2[1](S) sdc2[2](S)
      1875194880 blocks

md126 : inactive sdd2[4](S)
      625064960 blocks

md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
      64128 blocks [4/4] [UUUU]

unused devices: <none>

mD0 semble être renommé à MD127. MD125 et MD126 sont très étranges. Ils devraient être un tableau pas deux. Qui était appelé md1. MD2 est complètement parti mais c'était mon échange alors je m'en fiche.

Je peux comprendre les différents noms et ça n'a pas vraiment d'importance. Mais pourquoi un tableau avec 3 disques "active Sync" est-il illisible? Et qu'est-ce qui se passe avec SDD2 étant dans un tableau séparé?

Mise à jour

J'ai essayé ce qui suit après la sauvegarde des superblocs:

root@sysresccd /root % mdadm --stop /dev/md125
mdadm: stopped /dev/md125
root@sysresccd /root % mdadm --stop /dev/md126
mdadm: stopped /dev/md126

Jusqu'ici tout va bien. Puisque SDD2 est épargné, je ne veux pas encore l'ajouter.

root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2 missing 
mdadm: cannot open device missing: No such file or directory
mdadm: missing has no superblock - Assembly aborted

Apparemment, je ne peux pas faire ça.

root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2        
mdadm: /dev/md1 assembled from 1 drive - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : inactive sdc2[2](S) sdb2[1](S) sda2[0](S)
      1875194880 blocks

md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
      64128 blocks [4/4] [UUUU]

unused devices: <none>

Cela n'a pas fonctionné non plus. Essayons avec tous les disques.

mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c,d}2
mdadm: /dev/md1 assembled from 1 drive and 1 spare - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat                           
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : inactive sdc2[2](S) sdd2[4](S) sdb2[1](S) sda2[0](S)
      2500259840 blocks

md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
      64128 blocks [4/4] [UUUU]

unused devices: <none>

Pas de chance. Basé sur - cette réponse Je prévois d'essayer:

mdadm --create /dev/md1 --assume-clean --metadata=0.90 --bitmap=/root/bitmapfile --level=5 --raid-devices=4 /dev/sd{a,b,c}2 missing
mdadm --add /dev/md1 /dev/sdd2

Est-ce sûr?

Mise à jour

Je publie le SCRIPT DE SUPERBLOCK PARSER J'avais l'habitude de faire cette table dans le mon commentaire. Peut-être que quelqu'un trouvera cela utile. Merci pour votre aide.

17
stribika

J'ai eu beaucoup de problèmes pendant que j'ai utilisé mdadm, mais jamais perdu des données. Vous devriez éviter le --force Option ou utilisez-la très soigneusement, car vous pouvez perdre toutes vos données. S'il vous plaît poster votre /etc/mdadm/mdadm.conf

1
Glendyr