Permettez-moi de reconnaître tout d'abord que j'ai fait des erreurs et que j'ai une sauvegarde pour la plupart mais pas toutes les données de ce RAID. J'ai toujours l'espoir de récupérer le reste des données. Je n'ai pas le genre d'argent pour amener les disques à une entreprise experte en récupération.
Erreur # 0, ne pas avoir de sauvegarde à 100%. Je sais.
J'ai un mdadm
système RAID5 de 4x3TB. Drives / dev / sd [be], le tout avec une seule partition /dev/sd[b-e]1
. Je suis conscient que RAID5 sur de très gros disques est risqué, mais je l'ai quand même fait.
Événements récents
Le RAID se dégrade après une panne de deux disques. Un lecteur [/ dev / sdc] a vraiment disparu, l'autre [/ dev / sde] est revenu après un cycle d'alimentation, mais n'a pas été automatiquement ajouté au RAID. Je me suis donc retrouvé avec un RAID à 4 périphériques avec seulement 2 disques actifs [/ dev / sdb et / dev / sdd].
Erreur # 1, ne pas utiliser de copies dd des disques pour restaurer le RAID. Je n'avais ni les lecteurs ni le temps. Erreur # 2, ne pas faire de sauvegarde du superbloc et mdadm -E
des disques restants.
Tentative de récupération
J'ai remonté le RAID en mode dégradé avec
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Je pouvais alors accéder à mes données. J'ai remplacé /dev/sdc
par une pièce de rechange; vide; lecteur identique.
J'ai retiré l'ancien /dev/sdc1
du RAID
mdadm --fail /dev/md0 /dev/sdc1
Erreur # 3, ne pas faire cela avant de remplacer le lecteur
J'ai ensuite partitionné le nouveau /dev/sdc
et l' ai ajouté au RAID.
mdadm --add /dev/md0 /dev/sdc1
Il a alors commencé à restaurer le RAID. ETA 300 min. J'ai suivi le processus /proc/mdstat
jusqu'à 2%, puis je suis allé faire d'autres choses.
Vérification du résultat
Plusieurs heures (mais moins de 300 minutes) plus tard, j'ai vérifié le processus. Il s'était arrêté en raison d'une erreur de lecture sur /dev/sde1
.
Voici où les ennuis commencent vraiment
J'ai ensuite retiré /dev/sde1
du RAID et l' ai rajouté. Je ne me souviens pas pourquoi j'ai fait ça; il était tard.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
Cependant, /dev/sde1
était désormais marqué comme de rechange. J'ai donc décidé de recréer l'ensemble du tableau en utilisant --assume-clean en utilisant ce que je pensais être le bon ordre, et avec /dev/sdc1
manquant.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Cela a fonctionné, mais le système de fichiers n'a pas été reconnu lors de la tentative de montage. (Cela aurait dû être EXT4).
Ordre des appareils
J'ai ensuite vérifié une sauvegarde récente que j'avais /proc/mdstat
, et j'ai trouvé l'ordre du lecteur.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
Je me suis alors souvenu que ce RAID avait subi une perte de disque il y a environ un an, et je m'en suis remis en remplaçant le disque défectueux par un disque de rechange. Cela a peut-être un peu brouillé l'ordre des périphériques ... il n'y avait donc pas de lecteur [3] mais seulement [0], [1], [2] et [4].
J'ai essayé de trouver l'ordre du lecteur avec le script Permute_array: https://raid.wiki.kernel.org/index.php/Permute_array.pl mais cela n'a pas trouvé l'ordre approprié .
Des questions
J'ai maintenant deux questions principales:
J'ai foutu tous les superblocs sur les disques, mais j'ai seulement donné:
mdadm --create --assume-clean
commandes (donc je n'aurais pas dû écraser les données elles-mêmes
/dev/sd[bde]1
. Ai-je raison qu'en théorie le RAID peut être restauré [en supposant un instant que ce/dev/sde1
soit ok] si je trouve juste le bon ordre de périphérique?Est-il important de
/dev/sde1
donner le numéro de périphérique [4] dans le RAID? Quand je le crée avecmdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
on lui attribue le numéro [3]. Je me demande si cela est pertinent pour le calcul des blocs de parité. Si cela s'avère important, comment puis-je recréer le tableau avec
/dev/sdb1[0]
[1] manquant/dev/sdd1[2]
/dev/sde1[4]
? Si je pouvais faire fonctionner cela, je pourrais le démarrer en mode dégradé et ajouter le nouveau lecteur/dev/sdc1
et le laisser se resynchroniser à nouveau.
Ce n'est pas grave si vous souhaitez me faire remarquer que ce n'était peut-être pas la meilleure solution, mais vous constaterez que je m'en suis rendu compte. Ce serait génial si quelqu'un avait des suggestions.