Ich habe ein ausgefallenes RAID-5-Array, das ich nicht wiederherstellen kann. Im Grunde ist es so, dass ich diese Daten in RAID 5 hatte und LVM verwendete, das jetzt über integriertes RAID verfügt. Ich bemerkte, dass eine der Festplatten defekt war, also besorgte ich mir eine neue und gab ein Problem, pvmove
um die Extents von der defekten Festplatte auf die neue Festplatte zu verschieben. Irgendwann während der Migration fiel die alte Festplatte aus und reagierte überhaupt nicht mehr (ich bin mir nicht sicher, warum das die Ursache war). Also startete ich sie neu und jetzt startet das Array überhaupt nicht mehr. Alles sieht gut genug aus, z. B. funktionieren 3/4 Festplatten, und ich bin ziemlich sicher, dass sogar die ausgefallene vorübergehend wieder funktioniert (traue ihr aber nicht). Aber wenn ich ein Problem auslöse, lvchange -a y vg-array/array-data
erhalte ich eine Fehlermeldung mit folgendem in dmesg
not clean -- starting background reconstruction
device dm-12 operational as raid disk 1
device dm-14 operational as raid disk 2
device dm-16 operational as raid disk 3
cannot start dirty degraded array.
Ich bin mir ziemlich sicher, dass es Möglichkeiten gibt, den Start mit mdadm zu erzwingen, aber ich habe nichts für lvm gesehen. Aber da ich drei Festplatten habe, sind alle meine DatenDortalso muss es wiederherstellbar sein. Weiß jemand, wie das geht?
Antwort1
Die Lösung hierfür besteht darin, den Kernel-Boot-Parameter hinzuzufügen
md-mod.start_dirty_degraded=1
/etc/default/grub
Dann zu Ihrem update-grub
Neustart. Ich musste das Volume immer noch manuell aktivieren, aber nach dem Hinzufügen dieses Parameters werden Dirty Degraded Arrays jetzt als Warnung und nicht als Fehler angezeigt.
Dies ist dokumentiert unterhttps://www.kernel.org/doc/html/latest/admin-guide/md.html#boot-time-assembly-of-degraded-dirty-arrays
Antwort2
Nachdem ich ein neues Gerät hinzugefügt, ein PV darauf erstellt, das PV mit zur Volumegruppe hinzugefügt vgextend
und fehlende PVs mit entfernt hatte vgreduce --remove --force
, konnte ich mein RAID6-Array auf LVM mit dem folgenden Befehl reparieren.
lvconvert --repair <vgname>/<lvname>
Wir können den Fortschritt der Reparatur verfolgen lvs
, indem wir ihn in Cpy%Sync anzeigen.