Wie werden die md
Geräte beim Booten in Ubuntu zusammengebaut? Ist hier /etc/mdadm/mdadm.conf
wirklich der relevante Faktor?
Mein mdadm.conf
Sound ist solide und ich habe das überprüft, während ich mich in der Rettungs-CD-Umgebung befand. Beim Ausführen werden mdadm -A --scan
die Gerätenamen wie gewünscht gefunden und zugewiesen. Das mdadm.conf
enthält AUTO -all
, um jeglichen Automatismus aus dem Zusammenbau der Arrays herauszunehmen.
Was ich tun muss, ist in der Lage zu sein, die md
Geräte automatisch zusammenzubauen , wie mdadm.conf
beim Booten beschrieben, oder dass beim Zusammenbau der super-minor
Wert für das 0,9-Array und das name
(anscheinend <hostname>:<super-minor>
) für die 1,2-Arrays berücksichtigt wird und das Richtige ohne getan wird mdadm.conf
. Welches Puzzleteil fehlt mir?
Ich habe folgendes Problem. Es gibt zwei md
Geräte mit RAID1 ( md0
und md1
) und eines mit RAID6 ( md2
). Ich beziehe mich mit den gewünschten Gerätenamen auf sie. md0
hat Metadaten Version 0.9, die anderen beiden haben Version 1.2. md0
Karten zu /
und die anderen beiden sind für das Booten nicht relevant .
Das Startlaufwerk ist GPT-partitioniert. Darauf befindet sich ein Kleber "BIOS Boot Partition" ( sda1
). grub-install --no-floppy /dev/sda
meldet Erfolg.
md0 == sda3 + sdb3
md1 == sda2 + sdb2
md2 == sdc + sdd + sde + sdf + sdg + sdh
sda1
undsdb1
sind jeweils "BIOS Boot Partition"
GRUB2 ist glücklich mit der /boot/grub/devicemap
ich es gab und ich hinzu part_gpt
, raid
, mdraid09
und ext2
zu den Modulen Vorspannung in GRUB2.
Da ich mein Root-Volume immer noch in der Rettungsumgebung hatte, habe ich einfach alles gemountet und dann chroot
hineingezogen:
mkdir /target
mount /dev/md0 /target
mount -o bind /dev /target/dev
mount -o bind /dev/pts /target/dev/pts
mount -o bind /sys /target/sys
mount -o bind /proc /target/proc
chroot /target /bin/bash
Von dort setze ich das super-minor
auf md0
(mit Meta-Daten 0,9) und den name
auf md1
und md2
. Ich habe auch überprüft, ob es mit funktioniert mdadm --detail ...
. Ansonsten habe ich mich angepasst /etc/default/grub
, laufe update-grub
und auch grub-install --no-floppy /dev/sda
und grub-install --no-floppy /dev/sdb
.
Danach werde ich beim Booten immer in die initramfs
Rescue-Shell verschoben, da das Root-Dateisystem nicht gemountet werden konnte. Der Grund nach der Überprüfung /proc/mdstat
scheint zu sein, dass das jeweilige md
Gerät nicht einmal zusammengebaut und ausgeführt wird. Ganz zu schweigen davon, dass die beiden anderen Laufwerke (Metadatenversion 1.2) irgendwo im Bereich 125..127 eine Gerätenummer erhalten.
Hinweis: GRUB2 wird von der Startdiskette gestartet. Zumindest wurde es also korrekt eingebettet. Das Problem ist der Übergang vom ursprünglichen rootfs
zum richtigen Root-Dateisystem.
/dev/mdX
genau aus diesem Grund. Verwenden Sie/dev/md/NAME
stattdessen. Das wird sich nie ändern./etc/fstab
. Das Setup nicht vertrauen auf den Namen, ich würde mich immer noch gerne auf diese Weise sein;)Not to mention that the other two (meta-data version 1.2) drives receive a device number somewhere in the 125..127 range
. Ich weiß nicht genug darüber, wie Ubuntu RAID-Volumes zusammenstellt, um das größere Problem zu beantworten.Antworten:
Grundlegender Startvorgang
Roden
Es gibt einen Fallback-Modus, wenn Grub das Dateisystem nicht lesen kann - entweder weil nicht genügend Speicherplatz vorhanden war, um den gesamten Code in den Startdatensatz einzubetten, oder weil das Dateisystem oder die darunter liegenden Ebenen nicht bekannt sind. In diesem Fall bettet GRUB eine Liste von Sektoren ein und liest Code daraus. Dies ist viel weniger robust und wird am besten vermieden. Möglicherweise kann es sogar solche Kernel- und Initramfs ausführen (nicht sicher).
Kernel
Der Kernel übernimmt dann die Kontrolle und führt viele grundlegende Hardware-Initialisierungen durch. Diese Phase ist ziemlich schnell. Als nächstes entpackt der Kernel die initramfs in ein tmpfs und sucht nach einem
/init
auf diesem tmpfs. Es wird dann ausgeführt (im normalen Sinne läuft der Kernel zu diesem Zeitpunkt voll)/init
. Dies ist übrigens ein einfaches altes Shell-Skript.Initramfs
Sie können die initramfs von Hand extrahieren, indem Sie so etwas tun
mkdir /tmp/foo; cd /tmp/foo; zcat /boot/initrd.img-3.8-trunk-amd64 | cpio -idmv
.Das initramfs ist dafür verantwortlich, alle Treiber zu laden, udev zu starten und das Root-Dateisystem zu finden. Dies ist der Schritt, der für Sie fehlschlägt. Das Root-Dateisystem kann nicht gefunden werden.
Sobald das initramfs fertig ist, wird das Root-Dateisystem gemountet und die Steuerung an / sbin / init übergeben.
Systemstart
Zu diesem Zeitpunkt übernimmt Ihr Init - ich denke, Ubuntu verwendet derzeit Upstart.
Was ist kaputt?
Ich bin mir nicht ganz sicher, was kaputt ist (Teil, ich gestehe, weil ich viel besser mit der Funktionsweise von Debian vertraut bin als Ubuntu, obwohl es ähnlich ist), aber ich habe ein paar Vorschläge:
mdadm.conf
. Möglicherweise müssen Sie nur ausführenupdate-initramfs -u
, um das Problem zu beheben.quelle
Okay, ich fand heraus, dass mir nur ein Stück fehlte. Die
initrd
Bilder wurden nach dem Basteln nicht aktualisiertmdadm.conf
.Also, was habe ich getan?
Ich habe das Rettungssystem der Ubuntu Server-Installations-CD gestartet. Sie haben sich entschieden, eine Shell in der Installationsumgebung auszuführen und kein Root-Dateisystem zu verwenden. Dann (Kommentare vorangestellt mit
#
):Das klingt kompliziert, kann aber auch mit einem
bash
Einzeiler (wenn auch einem langen) durchgeführt werden:Dies verwendet die aktuellen Namen der
md
Geräte und ihrer UUIDs und erstellt einedevicemap
für GRUB2. Unter der Annahme, dass die oben genannten Schritte korrekt ausgeführt wurden, sollten Sie bereits die richtigen Gerätenamen haben.Weiter:
Stellen Sie sicher, dass es enthält:
Wenn Sie Ihre
/
oder Ihre/boot
Partition als Metadatenversion 1.2 konfiguriert haben , verwenden Siemdraid1x
stattdessen anstelle vonmdraid09
.Des Weiteren:
Dieser obige Schritt war das fehlende Glied . Dies stellt anscheinend sicher, dass das
mdadm.conf
beim Booten wirksam wird.Danach verlassen Sie die
chroot
und starten Sie neu.quelle