Installieren Sie den Ubuntu 18.04-Desktop mit RAID 1 und LVM auf einem Computer mit UEFI-BIOS

11

Ich habe eine Maschine mit UEFI-BIOS. Ich möchte Ubuntu 18.04, Desktop-Version mit RAID 1 (und LVM), installieren, damit mein System auch dann weiter funktioniert, wenn eines der Laufwerke ausfällt. Ich habe kein HOWTO gefunden, wie das geht. Das Desktop-Installationsprogramm unterstützt kein RAID. Die Antwort auf diese Frage funktioniert fast, erfordert jedoch einige magische GRUB-Shell- / Rescue-USB-Festplatten und UEFI-Einstellungen. Ist jemandem ein Verfahren bekannt, das ohne die magischen Teile funktioniert?

Niclas Börlin
quelle

Antworten:

18

Mit Hilfe von Wie installiere ich einen Ubuntu-Server mit UEFI und RAID1 + LVM , RAID in Ubuntu 18.04 und RAID-Unterstützung in Ubuntu 18.04 Desktop Installer? und wie kann man das "Scannen nach btrfs-Dateisystemen" beim Start loswerden? Ich habe es geschafft, ein funktionierendes HOWTO nur mit Linux-Befehlen zusammenzustellen.

Zusamenfassend

  1. Laden Sie das alternative Server-Installationsprogramm herunter.
  2. Installation mit manueller Partitionierung, EFI + RAID und LVM auf RAID-Partition.
  3. Klonen Sie die EFI-Partition von der installierten Partition auf das andere Laufwerk.
  4. Installieren Sie die zweite EFI-Partition in der UEFI-Bootkette.
  5. Entfernen Sie die btrfsStartskripte, um ein langes Warten während des Startvorgangs zu vermeiden, falls ein Laufwerk ausfällt.

Im Detail

1. Laden Sie das Installationsprogramm herunter

2. Installieren Sie mit manueller Partitionierung

  • Wählen Sie während der Installation im Partition disksSchritt die Option aus Manual.
  • Wenn die Datenträger Partitionen enthalten, entfernen Sie diese.
    • Wenn auf Ihren Laufwerken logische Volumes vorhanden sind, wählen Sie Configure the Logical Volume Manager.
      • Wählen Sie, Delete logical volumebis alle Volumes gelöscht wurden.
      • Wählen Sie, Delete volume groupbis alle Volume-Gruppen gelöscht wurden.
    • Wenn ein RAID-Gerät vorhanden ist, wählen Sie Configure software RAID.
      • Wählen Sie, Delete MD devicebis alle MD-Geräte gelöscht wurden.
    • Löschen Sie jede Partition auf den physischen Laufwerken, indem Sie sie auswählen und auswählen Delete the partition.
  • Erstellen Sie physische Partitionen
    • Erstellen Sie auf jedem Laufwerk eine 512-MB-Partition (ich habe gesehen, dass andere 128 MB verwenden) am Anfang der Festplatte. Verwenden Sie als : EFI System Partition.
    • Erstellen Sie auf jedem Laufwerk eine zweite Partition mit der maximalen Größe. Verwenden Sie als : Physical Volume for RAID.
  • Richten Sie RAID ein
    • Wählen Sie Configure software RAID.
    • Wählen Sie Create MD device, geben RAID1, 2 aktive Platten, 0 Ersatzplatten, und wählen Sie die /dev/sda2und /dev/sdb2Geräte.
  • Richten Sie LVM ein
    • Wählen Sie Configure the Logical Volume Manager.
    • Erstellen Sie eine Datenträgergruppe vgauf dem /dev/md0Gerät.
    • Erstellen Sie logische Volumes, z
      • swap bei 16G
      • root bei 35G
      • tmp bei 10G
      • var bei 5G
      • home bei 200G
  • Legen Sie fest, wie die logischen Partitionen verwendet werden sollen
    • swapWählen Sie für die Partition aus Use as: swap.
    • Für die anderen Partitionen, wählen Sie Use as: ext4mit den richtigen Bereitstellungspunkte ( /, /tmp, /var, /home, respectively).
  • Wählen Sie Finish partitioning and write changes to disk.
  • Lassen Sie das Installationsprogramm beenden und neu starten.

Wenn Sie auf einem Laufwerk neu installieren, auf dem zuvor eine RAID-Konfiguration vorhanden war, schlägt der obige Schritt zur RAID-Erstellung möglicherweise fehl und Sie erhalten nie ein mdGerät. In diesem Fall müssen Sie möglicherweise einen Ubuntu Live USB-Stick erstellen, diesen starten und ausführen gparted , um alle Partitionstabellen zu löschen, bevor Sie dieses HOWTO neu starten.

3. Überprüfen Sie das System

  • Überprüfen Sie, welche EFI-Partition gemountet wurde. Höchstwahrscheinlich /dev/sda1.

    montieren | grep boot

  • Überprüfen Sie den RAID-Status. Höchstwahrscheinlich wird synchronisiert.

    cat / proc / mdstat

4. Klonen Sie die EFI-Partition

Das geladene EFI sollte auf installiert sein /dev/sda1. Da diese Partition nicht über das RAID-System gespiegelt wird, müssen wir sie klonen.

sudo dd if=/dev/sda1 of=/dev/sdb1

5. Setzen Sie das zweite Laufwerk in die Startkette ein

Dieser Schritt ist möglicherweise nicht erforderlich, da das System von den (identischen) EFI-Partitionen booten sollte, wenn eines der Laufwerke ausfällt. Es erscheint jedoch ratsam, sicherzustellen, dass wir von beiden Datenträgern booten können.

  • Führen Sie efibootmgr -vden Dateinamen für den ubuntuStarteintrag aus und notieren Sie ihn. Bei meiner Installation war es \EFI\ubuntu\shimx64.efi.
  • Ausführen sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi. Abhängig von Ihrer Shell müssen Sie möglicherweise den Backslashes entkommen.
  • Überprüfen Sie mit , efibootmgr -vdass Sie den gleichen Dateinamen für die haben ubuntuund ubuntu2Boot - Elemente , und dass sie die ersten beiden in der Startreihenfolge.
  • Jetzt sollte das System auch dann starten, wenn eines der Laufwerke ausfällt!

7. Warten Sie

Wenn Sie versuchen möchten, ein Laufwerk physisch zu entfernen oder zu deaktivieren, um Ihre Installation zu testen, müssen Sie zunächst warten, bis die RAID-Synchronisierung abgeschlossen ist! Überwachen Sie den Fortschritt mit cat /proc/mdstat. Sie können jedoch den folgenden Schritt 8 ausführen, während Sie warten.

8. Entfernen Sie BTRFS

Wenn ein Laufwerk ausfällt (nachdem die Synchronisierung abgeschlossen ist), wird das System weiterhin gestartet. Die Startsequenz wird jedoch viel Zeit damit verbringen, nach btrfs-Dateisystemen zu suchen. Führen Sie den Vorgang aus, um das unnötige Warten zu vermeiden

sudo apt-get purge btrfs-progs

Dies sollte entfernen btrfs-progs, btrfs-toolsund ubuntu-server. Das letzte Paket ist nur ein Metapaket. Wenn also keine weiteren Pakete zum Entfernen aufgelistet sind, sollten Sie in Ordnung sein.

9. Installieren Sie die Desktop-Version

Führen Sie aus sudo apt install ubuntu-desktop, um die Desktop-Version zu installieren. Danach ist die Synchronisation wahrscheinlich abgeschlossen und Ihr System ist konfiguriert und sollte einen Festplattenfehler überleben!

10. Aktualisieren Sie die EFI-Partition nach dem Update von grub-efi-amd64

Wenn das Paket grub-efi-amd64aktualisiert wird, können sich die Dateien auf der EFI-Partition (gemountet um /boot/efi) ändern. In diesem Fall muss das Update manuell auf die Spiegelpartition geklont werden. Glücklicherweise sollten Sie vom Update-Manager eine Warnung erhalten grub-efi-amd64, die aktualisiert werden soll, damit Sie nicht nach jedem Update nachsehen müssen.

10.1 Finden Sie schnell die Klonquelle heraus

Wenn Sie nach dem Update nicht neu gestartet haben, verwenden Sie

mount | grep boot

um herauszufinden, welche EFI-Partition gemountet ist. Diese Partition sollte normalerweise /dev/sdb1als Klonquelle verwendet werden.

10.2 Finden Sie die Klonquelle auf paranoide Weise heraus

Erstellen Sie Einhängepunkte und hängen Sie beide Partitionen ein:

sudo mkdir /tmp/sda1 /tmp/sdb1
sudo mount /dev/sda1 /tmp/sda1
sudo mount /dev/sdb1 /tmp/sdb1

Suchen Sie den Zeitstempel der neuesten Datei in jedem Baum

sudo find /tmp/sda1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sda1
sudo find /tmp/sdb1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sdb1

Zeitstempel vergleichen

cat /tmp/newest.sd* | sort | tail -n 1 | perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 is newest.\n"'

Sollte drucken /dev/sdb1 is newest(höchstwahrscheinlich) oder /dev/sda1 is newest. Diese Partition sollte als Klonquelle verwendet werden.

Hängen Sie die Partitionen vor dem Klonen aus, um Inkonsistenzen zwischen Cache und Partition zu vermeiden.

sudo umount /tmp/sda1 /tmp/sdb1

10.3 Klonen

Wenn /dev/sdb1war die Klonquelle:

sudo dd if=/dev/sdb1 of=/dev/sda1

Wenn /dev/sda1war die Klonquelle:

sudo dd if=/dev/sda1 of=/dev/sdb1

Erledigt!

11. Fallstricke der virtuellen Maschine

Wenn Sie dies zuerst in einer virtuellen Maschine ausprobieren möchten, gibt es einige Einschränkungen: Anscheinend wird der NVRAM, der die UEFI-Informationen enthält, zwischen Neustarts, jedoch nicht zwischen Zyklen zum Herunterfahren und Neustarten gespeichert. In diesem Fall landen Sie möglicherweise an der UEFI-Shell-Konsole. Die folgenden Befehle sollten Sie von Ihrem Computer aus starten /dev/sda1(verwenden FS1:für /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

Die erste Lösung in der Top-Antwort des UEFI-Starts in Virtualbox - Ubuntu 12.04 - könnte ebenfalls hilfreich sein.

Niclas Börlin
quelle
Wie würden Sie LUKS für ein verschlüsseltes Spiegelset / RAID 1 verwenden, um zu vermeiden, dass die Verschlüsselung zweimal erfolgt (z. B. LUKS unter mdadm, sodass E / A zweimal ausgeführt wird, die Verschlüsselung selbst jedoch nur einmal erfolgt, was bei einigen Setups tatsächlich nicht der Fall ist B. die für ZFS empfohlenen, bei denen Volumes zweimal pro Gerät verschlüsselt werden, wodurch die Kosten für die Verschlüsselung effektiv dupliziert werden. Ich konnte keine aktuellen Anweisungen zu diesem Setup finden.
Soze
2
@soze, leider habe ich keine Erfahrung mit verschlüsselten Linux-Partitionen. Ich würde ein paar Versuche in einer virtuellen Maschine machen, um das herauszufinden. NB: Ich habe oben einen Abschnitt über Fallstricke von virtuellen Maschinen hinzugefügt.
Niclas Börlin
Danke @ NiclasBörlin! Ich hatte Probleme mit der Erstellung einer Boot-Partition unter RAID und LVM, und Ihre Antwort war glasklar. Vielen Dank!
Gui Ambros
Heiliger Bimbam! Nett!
Pileofrogs
3

RAID-1 + XFS + UEFI

Mit der Antwort von @Niclas Börlin konnte ich ungefähr 99% des Weges dorthin zurücklegen, danke!

Ich habe auch Hilfe aus den folgenden Antworten gezogen:

Hier sind die Möglichkeiten, wie ich Dinge durcheinander gebracht habe

  1. Das BIOS befindet sich im "Auto" -Modus, wodurch der USB-Stick NICHT im UEFI-Modus gestartet werden konnte. Dies führte dazu, dass Grub nicht richtig installiert wurde. Ich habe den Modus auf Nur-UEFI umgestellt, alle logischen Volumes, RAID-Gruppen und Partitionen neu gestartet und gelöscht und neu gestartet. Ich habe weiter versucht, grub auf den EFI-Partitionen neu zu installieren, was die Sache nur noch schlimmer machte.
  2. Die /bootPartition muss auf XFS sein. Das mit Ubuntu 18.04LTS gelieferte grub2 erledigt dies anscheinend nicht. Obwohl das nirgendwo dokumentiert ist. Ich habe eine separate EXT-4- /bootPartition erstellt. Beachten Sie, dass dies immer noch auf dem RAID-1-LVM-Volume ist und keine separaten Partitionen wie die EFI-Partitionen! Viele ältere Antworten sagen, dass dies nicht möglich ist, aber es scheint jetzt zu sein. Am Ende bekam ich Grub, aber unbekannte Dateisystemfehler (z. B. Fehlerbehebung: Unbekanntes Dateisystem. Grub-Rettung> ), die mir den Hinweis XFS /bootals No-Go gaben .
  3. Irgendwo in der Mitte hatte ich Grub installiert, aber eine leere Grub-Eingabeaufforderung, kein Grub-Menü. (z. B. https://help.ubuntu.com/community/Grub2/Troubleshooter#Specific_Troubleshooter ). Dies lag daran, /bootnicht zugänglich zu sein.

Was hat bei mir funktioniert?

Beginnen Sie mit der Antwort von @Niclas Börlin und ändern Sie ein paar Kleinigkeiten.

Partitionstabelle

Ich bevorzuge eine große /Partition, daher spiegelt dies diese Wahl wider. Die Hauptänderung ist eine EXT4- /bootPartition anstelle einer XFS-Partition.

sda/
          GPT     1M (auto-added)
   sda1 - EFI - 512M
   sda2 - MD0 - 3.5G

sdb/
          GPT     1M (auto-added)
   sdb1 - EFI - 512M
   sdb2 - MD0 - 3.5G

md0/
   vg/
     boot - 1G   - EXT4 /boot
     swap - 16G  - SWAP 
     root - rest - XFS  /

Nach der abgeschlossenen Installation konnte ich ddden Inhalt von sda1bis sdb2wie in der anderen Antwort beschrieben. Ich konnte auch das zweite Laufwerk der Boot-Kette hinzufügen, indem ich es efibootmgrwie beschrieben verwendete.

maxslug
quelle
sehr hilfreich! Ich habe das gleiche Problem mit Ubuntu Server 18.04 + UEFI + RAID1 + LVM. Das Befolgen Ihres Partitionsschemas hat mir sehr geholfen. Vielen Dank!
Lucas Aimaretto