Ich habe ein Problem auf einem Server mit 4 x 1 TB-Laufwerken, auf denen Debian wheezy und GRUB 1.99-27 + deb7u3 ausgeführt werden.
sda und sdb haben Partitionen, die mit (Linux-Software) RAID1 gespiegelt wurden, einschließlich /boot
. sdc und sdd haben jeweils eine einzelne Partition, die ein physisches LVM-Volume für Daten spiegelt. GRUB ist auf sda und sdb installiert. Früher habe ich mdadm
zu --fail
und --remove
der 1 TB - SDC und ersetzt das alte Laufwerk (a ST91000640NS) mit einem neuen 2 TB ST2000NX0243.
Mit dem neuen Laufwerk kommt GRUB so weit wie möglich
GRUB loading.
Welcome to GRUB!
Das Menü wird jedoch nicht angezeigt. Die Laufwerksanzeige auf SDC leuchtet kontinuierlich, sodass der GRUB-Kern vermutlich versucht, dieses Laufwerk zu lesen, obwohl es nicht für den Zugriff auf / boot / grub benötigt wird. Ich habe zwei Laufwerke desselben Modells ausprobiert smartctl
, mit denen beide problemlos getestet werden können , mit demselben Ergebnis. Wenn der SDC-Laufwerksschacht leer ist, wird alles normal gestartet. Das System startet von Live-USB und das neue Laufwerk ist zugänglich, sodass es sich nicht um eine Hardware-Inkompatibilität handelt (*). Ich bin sicher, dass SDC entfernt wurde, und es gibt keinen Hinweis darauf, dass das BIOS die Laufwerke neu angeordnet hat.
(*) Dies war möglicherweise keine sichere Annahme. Siehe Antworten.
Ich habe also folgende verwandte Fragen:
- Könnte die geänderte Größe des logischen Sektors (4096 statt 512 Byte) ein Problem verursachen, möglicherweise in der im GRUB-Kern integrierten RAID-Unterstützung? Warum bekomme ich nicht wenigstens eine
grub rescue>
Aufforderung? Könnte ein 4K-Problem auch die Verwendung des Laufwerks für Linux-RAID verhindern? - Was ist der schnellste Weg, um dies zu lösen? [Frühere Vorschläge enthalten: Muss ich GRUB mit dem neuen Laufwerk neu installieren und in diesem Fall wie? Hätte ein GRUB Rescue USB (hergestellt aus demselben System) das gleiche Problem? Ist es ein bekannter Fehler in GRUB und sollte ich ein Upgrade durchführen? Die Antworten auf diese Fragen scheinen zu sein: Nein, Ja und Nein.] Kann ich das von Debian verwendete GRUB-Image-Präfix dauerhaft konfigurieren?
- Wie würde man diese Phase von GRUB debuggen? Es mag empfindlich sein, welche Module eingebaut sind, aber wie finden Sie das heraus?
Ich denke an eine debug.cfg mit just debug=all
und so etwas wie:
grub-mkimage -c debug.cfg -o dcore.img configfile normal raid fs multiboot
grub-setup -c dcore.img /dev/sda
Funktioniert das? (Ich spreche diesen Punkt 3 in meiner eigenen Antwort an, aber das Hängenbleiben in meinem Fall scheint zu geschehen, bevor auf die eingebettete Konfiguration reagiert wird.)
Weitere Systemdetails
Falls dies zur Visualisierung beiträgt, ist hier ein Teil der lsblk
Ausgabe:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 957M 0 part
│ └─md0 9:0 0 956.9M 0 raid1 /boot
├─sdb2 8:18 0 9.3G 0 part
│ └─md1 9:1 0 9.3G 0 raid1 /
├─sdb3 8:19 0 279.4G 0 part
│ └─md2 9:2 0 279.4G 0 raid1 /var
└─sdb4 8:20 0 641.9G 0 part
└─md3 9:3 0 641.9G 0 raid1
├─vg0-home (dm-0) 253:0 0 1.4T 0 lvm /home
└─vg0-swap (dm-2) 253:2 0 32G 0 lvm [SWAP]
sdc 8:32 0 931.5G 0 disk
└─sdc1 8:33 0 931.5G 0 part
└─md4 9:4 0 931.5G 0 raid1
└─vg0-home (dm-0) 253:0 0 1.4T 0 lvm /home
sdd 8:48 0 931.5G 0 disk
└─sdd1 8:49 0 931.5G 0 part
└─md4 9:4 0 931.5G 0 raid1
└─vg0-home (dm-0) 253:0 0 1.4T 0 lvm /home
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 957M 0 part
│ └─md0 9:0 0 956.9M 0 raid1 /boot
├─sda2 8:2 0 9.3G 0 part
│ └─md1 9:1 0 9.3G 0 raid1 /
├─sda3 8:3 0 279.4G 0 part
│ └─md2 9:2 0 279.4G 0 raid1 /var
└─sda4 8:4 0 641.9G 0 part
└─md3 9:3 0 641.9G 0 raid1
├─vg0-home (dm-0) 253:0 0 1.4T 0 lvm /home
└─vg0-swap (dm-2) 253:2 0 32G 0 lvm [SWAP]
Dies ist ein BIOS vor 2010 und verfügt über keine EFI-Funktionen.
Irrelevant: Auf dem laufenden System gibt das Folgende den gleichen LVM-Fehler von Grub-Probe 1.99 wie bei der Grub-Installation, obwohl alles zu funktionieren scheint (dies scheint in GRUB 2.02 behoben zu sein).
# grub-fstest /dev/sda cp '(loop0,msdos1)/grub/grub.cfg' grub.cfg
error: unknown LVM metadata header.
Die Debug-Methoden in der folgenden Antwort zeigen, dass das Präfix des zu sd [ab] installierten Images wie folgt lautet:
grub-mkimage -d /usr/lib/grub/i386-pc -O i386-pc --output=/boot/grub/core.img '--prefix=(mduuid/<UUID of sdN1>)/grub' biosdisk ext2 part_msdos part_msdos raid mdraid09
Ich weiß nicht, warum 'part_msdos' wiederholt wird. Es gibt keine GPT-Tabellen. md0 (boot) verwendet RAID-Superblock Version 0.9, ebenso wie md1, md2 und md4 (dies sind alte Arrays). md3 ist super 1.2, sollte aber nicht am booten beteiligt sein.
Aktualisieren
Vielen Dank für die bisherigen Vorschläge. Nach weiteren Tests:
- Das BIOS war bereits so eingestellt, dass es mit sda (ata1.00) bootet. Nachdem GRUB auf allen Laufwerken mit neu installiert wurde
dpkg-reconfigure grub-pc
, hat sich nichts geändert und GRUB bleibt vor dem Menü hängen, wenn das neue Laufwerk über SATA verbunden wird. Dies konnte nicht durch / boot / grub-Inhalte erklärt werden, die ohnehin nicht mit dem Kern-Image übereinstimmen. Ebenso macht das physische Neuanordnen von Laufwerken keinen Unterschied. - Ein Upgrade auf GRUB auf 2.02 in Debian Jessie hat nur zur Folge, dass die
Welcome to GRUB!
Nachrichten nicht gedruckt werden - stattdessen wird der Grafikmodus geändert. Es hängt immer noch unter den gleichen Bedingungen. - Der Hang scheint aufzutreten, bevor die eingebettete Konfiguration die
debug
Variable festlegt . Es werden keine nützlichen Debug-Informationen ausgegeben. - GRUB zeigt beim Booten von einem Wechselmedium ein Menü an, in dem das Präfix keine UUIDs verwendet. Auf diese Weise kann das System mit dem physisch vorhandenen Laufwerk gestartet werden. Die TAB-Aufzählung der Laufwerke friert jedoch ein. Wie erwartet hängt das Kettenladen von GRUB von einer Festplatte wie zuvor. Das Booten von einem USB-Laufwerk, das von
grub-mkrescue
demselben System erstellt wurde, hängt ebenfalls. - Als separater Fehler führt der Versuch, auf dem Live-System (Linux 3.2.0-4-amd64) das neue 4Kn-Laufwerk entweder über internes SATA oder USB zum RAID1-Array hinzuzufügen,
Bad block number requested
auf dem Gerät zum Ausfall des md-Systems das LaufwerkBUG: unable to handle kernel paging request
und ein Kernel oops. (mdadm --remove
sagt, das ausgefallene Element ist ausgelastet und der md-resync-Prozess reagiert nicht auf SIGKILL. Ich habe es nicht versuchtecho frozen > /sys/block/mdX/md/sync_action
. Beim Testen des Laufwerksdd
über SATA scheint alles in Ordnung zu sein.) Sicherlich können die Linux MD-Treiber ein 4Kn-Laufwerk mit älteren Laufwerken synchronisieren und verwenden das BIOS nicht?
Problemumgehungen können daher das Mounten einer Nicht-RAID-Partition als umfassen /boot/
. Installieren von GRUB mit einem geräteabhängigen Präfix; oder das BIOS flashen. Am sinnvollsten ist es wahrscheinlich, den Lieferanten zu kontaktieren, um die Laufwerke auszutauschen.
Mit anderen Worten, Frage 3 hat eine Lösung, deren Ineffektivität möglicherweise Gegenstand einer GRUB-Funktionsanforderung ist. Frage 2 hat den falschen Baum angebellt, also habe ich ihn überarbeitet. und Frage 1, wenn es nicht zu weit vom Thema entfernt ist, befasst sich jetzt zusätzlich damit, warum das Laufwerk anscheinend nicht für Linux-RAID verwendet werden kann.
Ich würde das Kopfgeld gerne für eine anständige Erklärung all dessen vergeben, etwas über den RAID-Resync-Fehler oder Anekdoten über die Verwendung flashrom
für 4Kn-Unterstützung, wie man grub-install anweist, keine UUIDs oder relevante Sysadmin-Tipps zu verwenden.
sdc
, dass dies anhand der Seriennummern der mdstat
Fall war und dass es in die Bucht zurückgebracht und erneut synchronisiert wurde. Guter Punkt. Wenn sdb entfernt worden wäre, würde es ähnliche Symptome geben oder normal booten? Ich würde auch das hier erwähnte Verhalten nicht ganz erwarten: serverfault.com/questions/241109/…
sdb
Festplatte jetzt nicht angeschlossen ist, liegt möglicherweise das gleiche Symptom vor. Da sda
kann alte Version des Boot-Datensatzes haben und / oder BIOS hat andere Laufwerk jetzt zu booten.
sdc
verbunden ist , können Sie versuchen , (via BIOS oder POST) angeben , das Boot gerade durch sda
? Wenn das nicht funktioniert, können Sie versuchen, von einer Live-CD zu booten und grub sdc
auch zu installieren .
sdc
Festplatte ersetzt haben ? Weilboot
undroot
Partitionen eingeschaltet sindsda
undsdb
Festplatten.