MD-RAID kann bei fehlendem Laufwerk nicht gestartet werden

MD-RAID kann bei fehlendem Laufwerk nicht gestartet werden

Ich habe einen Server mit Debian Jessie, 4 Laufwerke (sda bis sdd), die alle gleich partitioniert sind. Das System ist ein RAID1 MD-RAID über alle Laufwerke. Alle Laufwerke haben Grub und ich kann die Laufwerke untereinander austauschen, jedes ist bootfähig und das System bootet problemlos. Alle Laufwerke haben genau das gleiche Format:

  sdx1 - Boot Partition, GRUB installed
  sdx2 - Raid 1 /boot
  sdx3 - Raid 1 /
  sdx4 - Raid 10 swap
  sdx5 - non-md btrfs Raid 6 /data

Die Datenpartition ist ein RAID 6-BTRFS. Ich versuche derzeit, meine Kapazität zu erweitern, indem ich ein Laufwerk gegen ein größeres austausche. Da es zwei Ausfälle geben kann, war mein erster Instinkt, einfach eines der Laufwerke auszutauschen, neu zu booten und die ausgefallenen RAID-Arrays mit dem neu installierten Laufwerk wiederherzustellen. Nach dem Neuaufbau ist alles wieder normal.

ABER die Maschine (die derzeit leider ohne Header ist) bootet nicht, wenn ich die Laufwerke gegen etwas austausche, das das RAID-Array ungültig macht. Ich kann die Discs den ganzen Tag lang untereinander austauschen und es bootet problemlos. Aber wenn ich eine Disc entferne oder etwas einbaue, das nicht Teil des RAID ist, bootet es nicht.

Übersehe ich etwas? Wie kann ich MD mitteilen, dass es in Ordnung ist, automatisch mit fehlenden Datenträgern/degradiertem Array zu booten? Letztendlich kann, soweit es MD betrifft, sogar einer der vier Datenträger das gesamte System alleine unterstützen. Die Datenpartition ist ein weiteres Biest, da sie mindestens zwei Laufwerke benötigt, aber MD sollte sich darüber keine Gedanken machen, da es sich dabei um einen reinen BTRFS-RAID handelt.

Ich weiß, dass ich für den aktuellen Anwendungsfall das Laufwerk einfach aus dem RAID entfernen, es aktualisieren und dann wieder dort einsetzen könnte, aber im Fehlerfall habe ich nicht die Möglichkeit, das Laufwerk zu entfernen, wenn das System nicht startet.

Antwort1

Als Update und Antwort - in der Zwischenzeit habe ich herausgefunden, dass das einzige, was hier wirklich fehlte, das Nofail-Flag in fstab war. Das Dateisystem war degradiert und es würde das Dateisystem nicht in einem degradierten Zustand mounten, ohne dass die Nofail-Option gesetzt wäre.

Antwort2

Soweit ich weiß, ist es noch nicht möglich, mit mdadm ein Raid zu erstellen, von dem man booten kann, ohne separate Bootpartitionen zu haben. Ich gehe davon aus, dass du es ähnlich eingerichtet hast wie hier beschrieben, es verwendet ein Raid10, gilt aber für andere Raid-Level:

Wie erstelle ich ein bootfähiges redundantes Debian-System mit 3 oder 4 (oder mehr) Festplatten-Software-RAID10?

Ist es möglich, dass Sie die anderen Festplatten im BIOS nicht so konfiguriert haben, dass von ihnen gebootet werden soll? Oder die Bootpartitionen sind nicht exakt gleich, d. h. es handelt sich um exakte Kopien mit derselben UUID.

Damit eine bestimmte Festplatte booten kann, muss sie einen Bootsektor haben und das BIOS muss so konfiguriert sein, dass es von diesem bootet (zusammen mit einer Liste anderer Bootfestplatten, die Teil des RAID sind). Damit ein Bootvorgang erfolgreich abgeschlossen werden kann, muss die Festplatte natürlich auch eine Bootpartition haben. Da diese Bootpartitionen nicht Teil des RAID sind, hat jede Bootfestplatte ihre eigene. Wenn Sie sicherstellen, dass jede Bootpartition genau dasselbe Dateisystem enthält (indem Sie es beispielsweise mit dd kopieren) und jede Festplatte einen Bootsektor hat, der mit den Images auf dieser Bootpartition erstellt wurde, sollte das System von jeder der Festplatten booten können. Selbst wenn das RAID herabgestuft ist, sollte ein herabgestuftes RAID einen erfolgreichen Bootvorgang nicht verhindern. Andernfalls macht dies einen großen Vorteil eines RAIDs überflüssig.

Zitat aus dem Link:

Jede Festplatte, die Teil des Raids ist, sollte eine bootfähige Partition von etwa 1 GB haben, die NICHT Teil des Raids ist. Erstellen Sie diese Partitionen wie gewohnt, sie müssen genau gleich groß sein. Markieren Sie sie als bootfähig, der Einhängepunkt auf einer der Festplatten sollte /boot sein, die anderen können Sie uneingehängt lassen.

Nachdem Sie mit dd genaue Kopien der Bootpartition erstellt haben:

Stellen Sie nun sicher, dass Ihr BIOS so konfiguriert ist, dass es versucht, von allen 3 Festplatten zu booten. Die Reihenfolge spielt keine Rolle. Solange das BIOS versucht, von jeder Festplatte zu booten, bootet das System bei einem Festplattenausfall automatisch von der anderen Festplatte, da die UUIDs genau gleich sind.

verwandte Informationen