mdadm Ubuntu 12.04 kann RAID6 während des Startvorgangs nicht zusammenbauen

3359
Ueland

Ich werde versuchen, mich kurz zu fassen.

Ich habe ein mdadm RAID 6 mit 11 Laufwerken. Dies hat jahrelang ohne Probleme bei Neuinstallationen und dergleichen "funktioniert". Ich hatte noch nicht einmal die Notwendigkeit, mdadm.conf zu konfigurieren.

Nach der Version 12.04 kann ich den Computer nicht mehr booten, ohne dass mdadm das Array mounten kann und mich dann in die initramfs-Shell werfen kann. Beim Booten nimmt mdadm 7 der Laufwerke und startet sie in / dev / md127, was natürlich fehlschlägt.

Wenn ich gebootet habe, stoppe ich es, füge alle Laufwerke wieder als md0 zusammen und alles ist wieder gut.

Die Frage ist, wie mache ich es auch während des Bootens?

Nach einigen Tests ist meine aktuelle mdadm.conf folgende: http://pastebin.com/SWx1nCNg

mdadm-status während des Startvorgangs: http://pastebin.com/Ua9W3aj4

Beachten Sie, dass sich unten auf der Paste oben der Befehl befindet, der für den erneuten Zusammenbau verwendet wird. Er funktioniert einwandfrei.

Hilfe? :)

3

3 Antworten auf die Frage

2
jonaz

The problem is that the /usr/share/initramfs-tools/scripts/mdadm-functions is called before all drives has been initialized.

I have 6 drives in RAID array. 2 of them are onboard SATA and 4 are on mpt2sas (SAS2008) card.

Apparently mdadm tries to initialize the array before all 6 drives have been attached to the system

If I edit mdadm-functions to this everything works (ugly fix):

degraded_arrays() { sleep 15 mdadm --misc --scan --detail --test >/dev/null 2>&1 return $((! $?)) } 

For me, this bug was introduced for when I upgraded from 10.04 LTS to 12.04.1 LTS Today!

1
Ueland

Ich habe nach ein paar Tipps herausgefunden, dass das Problem darin besteht, dass einige Laufwerke von mdadm nicht schnell genug erkannt werden, so dass es einfach stoppt.

Jemand schlug vor, rootdelay = 30 als Kernel-Parameter hinzuzufügen, aber Ubuntu ignorierte dies einfach. Stattdessen habe ich ein initramfs-Premount-Skript hinzugefügt.

echo "sleep 60" > /etc/initramfs-tools/scripts/init-premount; chmod +x /etc/initramfs-tools/scripts/init-premount; update-grub;  update-initramfs -u; 

Der Neustart dauert eine Minute länger, aber dann weiß ich, dass mdadm alle Laufwerke erkannt hat.

1
jmjf

Änderung der Antworten, die an anderer Stelle gefunden wurden, die für mich funktionierten.

Symptome, die ich gesehen habe:

Ein RAID, das unter Lucid / 10.04 einwandfrei lief, wurde beim Upgrade auf Precise / 12.04 nicht mehr automatisch zusammengefügt. RAID wurde in / Precise als / dev / md127 zusammengestellt. In der initramfs-Shell wurde das Problem behoben und der Computer konnte gestartet werden.

mdadm --stop / dev / md127 mdadm --assemble / dev / md0

Lösung, die funktioniert hat:

Stellen Sie sicher, dass mdadm.conf die korrekte ARRAY-Zeile hat. (Die Tatsache, dass ich / dev / md0 richtig zusammenstellen konnte, deutete an, dass mdadm.conf korrekt war.)

Erstellen Sie ein Skript in / usr / share / initramfs-tools / scripts / local-top (ich habe es mdfix genannt)

#!/bin/sh sleep 6 mdadm --stop /dev/md127 sleep 6 mdadm --assemble /dev/md0 

Dann

chmod +x mdfix update-grub update-initramfs -u 

update-initramfs generiert möglicherweise ein "kein solches Gerät" über / dev / md127. Legen Sie Ihr Handtuch über den Kopf und geraten Sie nicht in Panik. :)

Starten Sie den Computer neu und Sie sollten / dev / md0 richtig installieren, wenn Sie etwas langsamer als zuvor sind. (Der Schlaf ist vielleicht nicht notwendig, aber sicherer als leid.)