GRUB2 auf mdadm Raid installieren

Vorsicht: Dieser Artikel bezieht sich auf ein Debian Testing System von Anfang 2012, ob und wie dieses Vorgehen auch unter anderen Linux Systemen zum Erfolg führt kann ich nicht sagen.

Damit Debian Wheezy von jeder Festplatte des RAID Verbundes booten kann, muss folgende Zeile in der Datei „/etc/default/grub“ auskommentiert werden:
GRUB_TERMINAL=console

Jetzt müssen alle Datenträger für den Grub2 registriert werden:

grub-mkdevicemap -n

Zum Schluss aktualisiert man noch die Grub2 Konfiguration und installiert den Grub2 Bootloader in jede Festplatte des RAID-Verbunds:

update-grub

grub-install /dev/sda grub-install /dev/sdb

Jetzt kann das System von jeder Festplatte des RAIDs gestartet werden.

20 thoughts on “GRUB2 auf mdadm Raid installieren

  1. Funktioniert aber bei einem Raid5 schon nicht mehr, also aufpassen was für ein Raid Level man hat. Raid 1 klappt problemlos, hab das vorgestern erst getestet auf Debian Stable in Virtualbox. Bei Raid 5 in der VM ging kein Boot mehr nachdem ich eine der VDI´s entfernt und durch eine leere ersetzt habe.

    Raid 0 dürfte das selbe sein. Raid 6 habe ich nicht getestet.

  2. Dominik, wie aktualisierst du die Grub2 Konfiguration? Bearbeitest du die grub.cfg direkt? Trägst du die UUIDs der Platten ein? Ich habe den Eindruck, die dpkg-reconfigure Tools können das nicht. Oder ich habe etwas falsch gemacht.

    1. Hallo Chris,

      die grub.cfg soll man seit Grub2 möglichst nicht mehr von Hand editieren.
      Die UUIDs werden mit dem Befehl grub-mkdevicemap -n automatisch eingetragen.
      Danach muss die Konfiguration einmal aktualisiert werden mit update-grub, danach muss Grub auf jeder Festplatte in den MBR eingetragen werden mit grub-install /dev/sdX.

      1. Danke Dominik für die schnelle Antwort. Ich dachte grub-mkdevicemap bearbeitet nur die device.map. Ich versuch’s damit nochmal. Das ist mein x-ter Versuch das Software-Raid zum Laufen zu bekommen.

          1. Es klappt überhaupt nicht. Ich habe ein vorhandenes System mit einer Platte. Das möchte ich jetzt auf RAID 1 umstellen. Eigentlich dachte ich, es reicht die UUIDs in /etc/fstab von sda1 auf md0 zu ändern. Dabei stellt sich schon die Frage, ob ich die UUIDs von md0 aus blkid oder aus „mdadm –detail –brief /dev/md0 >> /etc/mdadm/mdadm.conf“ einfügen muss. Die sind nämlich nicht identisch. Danach habe ich

            update-initramfs -u
            grub-mkdevicemap -n
            update-grub #(!)
            grub-install –recheck /dev/sda
            grub-install –recheck /dev/sdb

            ausgeführt und /boot/, /etc/fstab und /etc/mdadm von sda1 nach md0 kopiert.

            Ein anderer Versuch war, die Änderungen in einer chroot-Umgebung in md0 durchzuführen. Aber das ging auch nicht.

            Das Ganze ist ein ziemlich unsystematisches Trial & Error, aber ich habe bisher noch keine Anleitung gefunden nach der es funktioniert.

          2. Puuhh, ein bestehendes System von einer Festplatte auf ein Soft-RAID zu migrieren habe ich auch noch nicht versucht.
            Wäre es nicht einfacher und für die Nerven schonender, deine Daten zu sichern, das RAID anzulegen und dann die Daten zurückzusichern?

            Ansonsten kann ich beizeiten dein Problem sportlich nehmen und in einer VM nachstellen, wäre schöner Stoff für meinen Blog 😉

          3. Wenn du eine Lösung findest, würde mich das sehr interessieren. Ich bin auch am Experimentieren in einer VM. Eine komplette Neuinstallation mit Datensicherung wäre vermutlich die einfachste Möglichkeit. Allerdings handelt es sich um ein Produktivsystem (Samba-Server). Deshalb sollte ich mit möglichst kurzer Downtime auskommen…

            Ein weiterer Versuch war die Debian-Rescue CD:
            1. RAID assemblieren lassen
            2. Shell im Root-Device geben lassen
            3. dpkg-reconfigure grub-pc und root=/dev/md0
            angeben. Hört sich einfach an, ging auch nicht. Vor allem ist mir auch gar nicht klar, was Tools wie z.B. dpkg-reconfigure genau machen. Deshalb würde ich fast am liebsten die grub.cfg einfach von Hand editieren. Damit ist mir das Umstellen und Booten auch mal gelungen, aber das war wohl Zufall…

            Als Stoff für dein Blog würde sich das Thema sehr gut eignen. Das einzige was ich auch nach längerem Googlen dazu gefunden habe, waren Anleitungen die sich auf Legacy Grub beziehen!

  3. Dominik, ich habe nur einen Copy & Paste Fehler gemacht. Wenn man was aus einem Terminal kopiert, sollte das Fenster auch breit genug sein. Wenn es dich interessiert: ich habe die Befehle und Dateien oben verlinkt.

  4. Vielen Dank,
    nach Stunden qualvoller Frickelei hat mir Dein Post bei einem Debian-Server geholfen, auf dem eine Platte im Raid hinüber war. Die andere hatte keinen Bootsektor.

  5. Hallo Leute,

    ich stehe auch derzeit vor der Herausforderung ein aktuell laufendes Debian Wheezy System mit zwei Festplatten auf Software-Raid 1 umzustellen …

    Ich habe so ziemlich das komplette Internet durchsucht, aber die aktuellsten Tutorials sind für Debian Squezze und leider gibt es da ein paar Veränderungen, sodass ich nicht nachvollziehen kann, was genau da geschehen muss, damit das reibungslos über die Bühne geht …

    Welche Dateien müssen wo angepasst werden ?

    Wäre schön, wenn jemand doch noch ein Tutorial dazu schreiben würde … 🙂

  6. Hallo zusammen,

    ich musste gerade ein MD-Raid wieder bootfähig machen. Hier mein (erfolgreiches) Vorgehen:

    Szenario: Getauschte Raid6-Festplatte /dev/sda. Danach war das System nicht mehr bootbar.

    Zunächst mit einem Rescue starten und die relevanten Partitionen in /mnt/ einhängen. In der Regel ist das das Root-Dateisystem und ggfs. die Boot-Partition. Los gehts:

    mkdir /mnt/rescue
    mount /dev/md[x] /mnt/rescue
    mount /dev/md[y] /mnt/rescue/boot

    Vorbereiten der System-Verzeichnisse:

    mount -o bind /dev /mnt/rescue/dev
    mount -o bind /dev/pts /mnt/rescue/dev/pts
    mount -o bind /proc /mnt/rescue/proc
    mount -o bind /run /mnt/rescue/run #ggfs nicht notwendig
    mount -o bind /sys /mnt/rescue/sys

    Wechseln des Root-Dateisystems:
    chroot /mnt/rescue

    Dann, wie oben beschrieben, vorgehen. Da mein System bereits als Raid mit Grub konfiguriert war, war GRUB_TERMINAL=console bereits auskommentiert. Weiter gehts:

    grub-mkdevicemap -n
    update-grub
    grub-install /dev/sda
    grub-install /dev/sdb

    exit # um aus dem chroot raus zu kommen.
    reboot # und beten 🙂

    Happy rescueing…

  7. Hoi,

    hab das gerade mal auf einem aktuellen System (Debian 8) versucht und bin kläglich gescheitert 🙁

    mdadm –detail /dev/md0 sagt mir, dass das raid clean ist.

    „grub-mkdevicemap -n“ ohne Fehler
    „update-grub“ findet in /boot ein linux- und ein initrd-Abbild und meldet „erledigt“
    „grub-install /dev/sda“ antwortet ein „Installation beendet. Keine Fehler aufgetreten“
    „grub-install /dev/sdb“ mault dann rum: „root@viebu01:~# grub-install /dev/sdb
    Installing for i386-pc platform.
    grub-install: Warnung: Es wird versucht, GRUB auf einer Platte mit mehreren Partitionsbezeichnungen zu installieren. Dies wird derzeit noch nicht unterstützt..
    grub-install: Fehler: Einbettung ist nicht möglich, jedoch für die Installation mit RAID und LVM erforderlich.“

    was mache ich denn da falsch?

    1. Hi,

      in irgendeinem Punkt müssen sich die beiden Festplatten ja unterscheiden.
      Was gibt ein fdisk -l auf den beiden Platten aus?
      Schick mir doch mal die letzten zwei Zeilen der mdadm –detail Ausgabe.

      Ich betreibe zwar noch ein MDADM Raid 1, allerdings nur noch als Datenhalde ohne davon booten zu müssen.

      1. Hi,

        „fdisk -l“ spuckt folgendes aus:

        root@viebu01:~# fdisk -l

        Disk /dev/sda: 298,1 GiB, 320072933376 bytes, 625142448 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disklabel type: dos
        Disk identifier: 0x86dda3ba

        Device Boot Start End Sectors Size Id Type
        /dev/sda1 * 2048 625141759 625139712 298,1G fd Linux raid autodetect

        Disk /dev/sdb: 232,9 GiB, 250059350016 bytes, 488397168 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disklabel type: dos
        Disk identifier: 0x050ac768

        Device Boot Start End Sectors Size Id Type
        /dev/sdb1 2048 488396799 488394752 232,9G fd Linux raid autodetect

        Disk /dev/md0: 232,8 GiB, 249923895296 bytes, 488132608 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes

        und „mdadm –detail /dev/md0“:
        Number Major Minor RaidDevice State
        0 8 1 0 active sync /dev/sda1
        1 8 17 1 active sync /dev/sdb1

        ich habe inzwischen auch versucht, grub auf das md0-device zu installieren. Das lehnt grub auch ab.

        Danke für die Hilfe!
        Viele Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.