Linux Software RAID mit EFI

Aus MyWiki
Zur Navigation springen Zur Suche springen

Linux kann nicht mit onBoard RAID von Intel umgehen. Das heißt eine Installation auf ein eingerichtet RAID mit einem onBoard RAID z.B. von Intel wird fehlgeschlagen


Die Alternative dazu ist das onBoard RAID aufzulösen und auf AHCI zu stellen und das RAID als Software RAID (mdadm) in Linux zu konfigurieren. Dabei gibt es aber einige Dinge zu beachten. z.B. funktioniert das nicht mit Desktop ISOs von Ubuntu, sondern es benötigt ein Ubuntu Server oder Debian und ein Software RAID über eine EFI Partition funktioniert nicht mit grub (zumindest nicht während der Installation)

Die Konfiguration während der Installation muss dabei wie folgt aussehen.

  • auf beiden Datenträgern eine EFI (ESP) und eine root (/) Partition erstellen
  • Im nächsten Schritt wird ein RAID 1 ausschließlich für die root Partition erstellt.
    Das kann über das Setup gemacht werden, vorher verlangt das Setup, dass die in Schritt 1 geplante Konfiguration auf die Datenträger geschrieben wird.
    manuell kann man das RAID auch mit mdadm einrichten: mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2 
    Die EFI Partition bekommt kein RAID
  • Das Setup nun ganz normal abschließen

Nun muss noch der Bootloader auf dem zweiten Datenträger eingerichtet werden.

  • prüfen, welches Laufwerk in /boot/efi gemountet ist: mount | grep /boot/efi
  • normalerweise wird das /dev/sda1 sein. Die Partition nun unmounten: umount /boot/efi
  • nun die EFI Partition des zweiten Datenträgers nach /boot/efi mounten: mount /dev/sdb1 /boot/efi
  • Nun den grub bootloader installieren: grub-install --bootloader-id disk2 /dev/sdb
  • wieder die default efi Partition mounten: umount /boot/efi; mount /boot/efi
  • mit den folgenden Befehlen kann man prüfen und vergleichen, dass die beiden EFI Partitionen korrekt im bootloader konfiguriert sind:
    ls -l /dev/disk/by-partuuid/
    efibootmgr -v
    eine weitere Option den EFI bootloader zu setzen ist mit dem folgenden Befehl (ungetestet): efibootmgr --create --disk /dev/sdb --part 1 --label "disk2" --loader “\EFI\debian\shimx64.efi”


Nun könnte theoretisch auch mit der zweiten Disk gestartet werden, allerdings wird das im Moment noch Probleme machen, da in der /etc/fstab die EFI Partition vom ersten Datenträger gemountet wird und wenn der nicht vorhanden ist, startet Linux nicht.

Die /boot/efi Partition nicht zu mounten ist leider nur eine temporäre Option, die wird bei verschiedenen Updates benötigt z.B. Kernel Updates oder grub Update. Man könnte nun theoretisch die EFI Partition mit automount in der /etc/fstab konfigurieren (UUID=8E6E-7059 /boot/efi vfat umask=0077,x-systemd.automount) aber trotzdem müsste man dafür sorgen, dass die regelmäßig mit der Kopie synchronisiert wird.


Dazu kann man nachträglich ein RAID über die EFI Partitionen erstellen. Vorher prüfen, welcher Datenträger gerade den EFI Mount hat. Bei mir war es sdb1. Das RAID wird also mit den nicht gemounteten Datenträger erstellt

  • RAID erstellen: mdadm --create /dev/md1 --level 1 --raid-disks 2 --metadata 1.0 /dev/sda1 missing
  • als FAT32 formatieren (wird später trotzdem als vfat angezeigt): mkfs.fat -F32 /dev/md1
  • neues RAID in temporären Ordner mounten: mkdir /tmp/RAID; mount /dev/md1 /tmp/RAID
  • Daten von der aktuellen EFI Partition ins RAID kopieren: rsync -av --progress /boot/efi/ /tmp/RAID/
  • ersten Datenträger unmounten und zum RAID hinzufügen: umount /dev/sdb1; mdadm --manage /dev/md1 --add /dev/sdb1
  • aktuelle Partition UUID ermitteln und damit in der fstab den efi mount ersetzen: blkid /dev/md1
  • das neue RAID in der mdadm Konfiguration hinzufügen: mdadm --detail --scan | grep md1 >> /etc/mdadm/mdadm.conf
  • Boot-Image aktualisieren: update-initramfs -u