Zainstaluj komputer Ubuntu 18.04 z RAID 1 i LVM na komputerze z systemem UEFI BIOS

11

Mam maszynę z UEFI BIOS. Chcę zainstalować Ubuntu 18.04, wersję stacjonarną z RAID 1 (i LVM), aby mój system nadal działał, nawet jeśli jeden z dysków ulegnie awarii. Nie znalazłem HOWTO jak to zrobić. Instalator pulpitu nie obsługuje RAID. Odpowiedź na to pytanie prawie działa, ale wymaga trochę powłoki GRUB / dysku ratunkowego USB i magii ustawień UEFI. Czy ktoś wie o procedurze, która działa bez magicznych części?

Niclas Börlin
źródło

Odpowiedzi:

18

Przy pomocy pomocy Jak zainstalować serwer Ubuntu z UEFI i RAID1 + LVM , konfiguracja RAID w Ubuntu 18.04 i obsługa RAID w instalatorze Ubuntu 18.04 Desktop? i Jak pozbyć się „skanowania w poszukiwaniu systemów plików btrfs” podczas uruchamiania? , Udało mi się zebrać działający HOWTO, używając tylko poleceń linux.

W skrócie

  1. Pobierz alternatywny instalator serwera.
  2. Zainstaluj z ręcznym partycjonowaniem, EFI + RAID i LVM na partycji RAID.
  3. Sklonuj partycję EFI z zainstalowanej partycji na inny dysk.
  4. Zainstaluj drugą partycję EFI w łańcuchu rozruchowym UEFI.
  5. Aby uniknąć długiego oczekiwania podczas rozruchu na wypadek awarii napędu, usuń btrfsskrypty rozruchowe.

Szczegółowo

1. Pobierz instalator

2. Zainstaluj z ręcznym partycjonowaniem

  • Podczas instalacji Partition diskswybierz w kroku Manual.
  • Jeśli dyski zawierają jakieś partycje, usuń je.
    • Jeśli na dyskach znajdują się woluminy logiczne, wybierz Configure the Logical Volume Manager.
      • Wybierz, Delete logical volumedopóki wszystkie woluminy nie zostaną usunięte.
      • Wybierz, Delete volume groupdopóki wszystkie grupy woluminów nie zostaną usunięte.
    • Jeśli obecne jest jakieś urządzenie RAID, wybierz Configure software RAID.
      • Wybierz, Delete MD devicedopóki wszystkie urządzenia MD nie zostaną usunięte.
    • Usuń każdą partycję na dyskach fizycznych, wybierając je i wybierając Delete the partition.
  • Utwórz partycje fizyczne
    • Na każdym dysku, utworzyć partycję 512MB (widziałem inni korzystają z 128MB) na początku dysku, wykorzystać jako: EFI System Partition.
    • Na każdym dysku utworzyć drugą partycję „max” wielkości wykorzystać jako: Physical Volume for RAID.
  • Skonfiguruj RAID
    • Wybierz Configure software RAID.
    • Wybierz Create MD device, wpisz RAID1, 2 aktywne dyski, 0 zapasowych dysków i wybierz urządzenia /dev/sda2i /dev/sdb2.
  • Skonfiguruj LVM
    • Wybierz Configure the Logical Volume Manager.
    • Utwórz grupę woluminów vgna /dev/md0urządzeniu.
    • Utwórz woluminy logiczne, np
      • swap przy 16G
      • root przy 35G
      • tmp przy 10G
      • var przy 5G
      • home przy 200G
  • Skonfiguruj sposób korzystania z partycji logicznych
    • Dla swappartycji wybierz Use as: swap.
    • Dla innych partycji, wybierz Use as: ext4z punktami właściwa mount ( /, /tmp, /var, /home, odpowiednio).
  • Wybierz Finish partitioning and write changes to disk.
  • Poczekaj, aż program instalacyjny zakończy się i uruchom ponownie.

Jeśli instalujesz ponownie na dysku, który wcześniej miał konfigurację RAID, powyższy krok tworzenia RAID może się nie powieść i nigdy nie otrzymasz mdurządzenia. W takim przypadku może być konieczne utworzenie pamięci USB Ubuntu Live, uruchomienie systemu, uruchomienie, gparted aby wyczyścić wszystkie tabele partycji, przed ponownym uruchomieniem tego HOWTO.

3. Sprawdź system

  • Sprawdź, która partycja EFI została zamontowana. Najprawdopodobniej /dev/sda1.

    zamontować | grep boot

  • Sprawdź status RAID. Najprawdopodobniej synchronizuje się.

    cat / proc / mdstat

4. Klonuj partycję EFI

Załadowany EFI powinien był zostać zainstalowany /dev/sda1. Ponieważ ta partycja nie jest dublowana przez system RAID, musimy ją sklonować.

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

5. Włóż drugi dysk do łańcucha rozruchowego

Ten krok może nie być konieczny, ponieważ jeśli jeden z dysków umrze, system powinien uruchomić się z (identycznych) partycji EFI. Wydaje się jednak rozsądne, aby zapewnić możliwość rozruchu z dowolnego dysku.

  • Uruchom efibootmgr -vi zauważ nazwę pliku dla pozycji ubunturozruchu. W mojej instalacji tak było \EFI\ubuntu\shimx64.efi.
  • Uruchom sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi. W zależności od powłoki może być konieczne uniknięcie ukośników odwrotnych.
  • Sprawdź efibootmgr -v, czy masz taką samą nazwę pliku dla elementów ubuntui ubuntu2boot i czy są to pierwsze dwa w kolejności rozruchu.
  • Teraz system powinien się uruchomić, nawet jeśli jeden z dysków ulegnie awarii!

7. Poczekaj

Jeśli chcesz spróbować fizycznie usunąć lub wyłączyć dowolny dysk w celu przetestowania instalacji, musisz najpierw poczekać, aż zakończy się synchronizacja RAID! Monitoruj postęp za pomocą cat /proc/mdstatMożesz jednak wykonać krok 8 poniżej podczas oczekiwania.

8. Usuń BTRFS

Jeśli jeden dysk ulegnie awarii (po zakończeniu synchronizacji), system nadal się uruchomi. Jednak sekwencja rozruchowa poświęci dużo czasu na szukanie systemów plików btrfs. Aby usunąć niepotrzebne oczekiwanie, uruchom

sudo apt-get purge btrfs-progs

To powinno usunąć btrfs-progs, btrfs-toolsi ubuntu-server. Ostatni pakiet to tylko pakiet meta, więc jeśli nie ma już więcej pakietów do usunięcia, powinieneś być w porządku.

9. Zainstaluj wersję na komputer

Uruchom, sudo apt install ubuntu-desktopaby zainstalować wersję na komputer. Następnie synchronizacja jest prawdopodobnie zakończona, a system jest skonfigurowany i powinien przetrwać awarię dysku!

10. Zaktualizuj partycję EFI po aktualizacji grub-efi-amd64

Gdy pakiet grub-efi-amd64zostanie zaktualizowany, pliki na partycji EFI (zamontowane w /boot/efi) mogą ulec zmianie. W takim przypadku aktualizację należy ręcznie sklonować na partycję lustrzaną. Na szczęście powinieneś otrzymać ostrzeżenie od menedżera aktualizacji, który grub-efi-amd64ma zostać zaktualizowany, więc nie musisz sprawdzać po każdej aktualizacji.

10.1 Szybko znajdź źródło klonowania

Jeśli nie uruchomiłeś się ponownie po aktualizacji, użyj

mount | grep boot

aby dowiedzieć się, która partycja EFI jest zamontowana. Ta partycja zwykle /dev/sdb1powinna być używana jako źródło klonowania.

10.2 Znajdź źródło klonowania, sposób paranoiczny

Utwórz punkty montowania i zamontuj obie partycje:

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

Znajdź znacznik czasu najnowszego pliku w każdym drzewie

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

Porównaj znaczniki czasu

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

Powinien wydrukować /dev/sdb1 is newest(najprawdopodobniej) lub /dev/sda1 is newest. Ta partycja powinna być używana jako źródło klonowania.

Odmontuj partycje przed klonowaniem, aby uniknąć niespójności pamięci podręcznej / partycji.

sudo umount /tmp/sda1 /tmp/sdb1

10,3 Klon

Jeśli /dev/sdb1źródło było klonem:

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

Jeśli /dev/sda1źródło było klonem:

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

Gotowy!

11. Gotcha maszyny wirtualnej

Jeśli chcesz to najpierw wypróbować na maszynie wirtualnej, istnieją pewne zastrzeżenia: Najwyraźniej pamięć NVRAM przechowująca informacje o UEFI jest zapamiętywana między restartami, ale nie między cyklami zamykania i restartowania. W takim przypadku możesz skończyć w konsoli Shell UEFI. Następujące polecenia powinny uruchomić komputer z /dev/sda1(użyj FS1:dla /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

Pomocne może być również pierwsze rozwiązanie z pierwszej odpowiedzi rozruchu UEFI w virtualbox - Ubuntu 12.04 .

Niclas Börlin
źródło
Jak poszedłbyś używać LUKS, do szyfrowanego zestawu kopii lustrzanych / RAID 1, unikając dwukrotnego szyfrowania (np. LUKS siedzi pod mdadm, więc IO dzieje się dwa razy, ale samo szyfrowanie odbywa się tylko raz, tak naprawdę nie dzieje się tak w przypadku niektórych konfiguracji , takich jak te zalecane dla ZFS, w których woluminy są szyfrowane dwukrotnie, raz na urządzenie, skutecznie powielając koszt strony szyfrującej rzeczy). Nie udało mi się znaleźć ostatnich instrukcji dotyczących tej konfiguracji.
soze
2
@soze, niestety nie mam doświadczenia z zaszyfrowanymi partycjami Linuksa. Zrobiłbym kilka prób i błędów na maszynie wirtualnej, aby się dowiedzieć. NB: Dodałem powyższą sekcję o gotach maszyn wirtualnych.
Niclas Börlin
Dzięki @ NiclasBörlin! Walczyłem z utworzeniem partycji rozruchowej w RAID i LVM, a twoja odpowiedź była krystalicznie czysta. Wielkie dzięki!
Gui Ambros
Święta krowa! Miły!
pileofrogs
Wygląda na to, że nie działa to już z Focal Fossa, ponieważ nie ma już alternatywnego instalatora. Instalator Focal nie ma wspomnianych opcji partycjonowania i nalega na urządzenie, /bootjeśli spróbujesz przejść zautomatyzowaną trasę instalacji.
śr
3

RAID-1 + XFS + UEFI

Udało mi się dotrzeć w około 99% z odpowiedzią @Niclas Börlin, dziękuję!

Skorzystałem również z następujących odpowiedzi:

Oto sposoby, w jakie popsułem rzeczy

  1. Posiadanie systemu BIOS w trybie „Auto”, który pozwalał na uruchomienie klucza USB NIE w trybie UEFI. To spowodowało, że Grub nie został poprawnie zainstalowany. Przełączyłem tryb tylko na UEFI, ponownie uruchomiłem i usunąłem wszystkie woluminy logiczne, grupy rajdowe i partycje i zacząłem od nowa. Próbowałem ponownie zainstalować grub na partycjach EFI, co tylko pogorszyło sytuację.
  2. Posiadanie /bootpartycji na XFS. Grub2, który jest dostarczany z Ubuntu 18.04LTS, najwyraźniej nie obsługuje tego. Chociaż nie jest to nigdzie udokumentowane. Utworzyłem osobną /bootpartycję EXT-4 . Pamiętaj, że nadal znajduje się na woluminie RAID-1 LVM, a nie oddzielnych partycjach, takich jak EFI! Wiele starszych odpowiedzi mówi, że nie jest to możliwe, ale wydaje się, że jest teraz. Skończyło się na tym, że dostałem gruba, ale otrzymałem nieznane błędy systemu plików (np. Jak naprawić błąd: nieznany system plików. Grub rat> ), które dały mi wskazówkę XFS /bootjako nie do przejścia.
  3. Gdzieś w połowie tego skończyło się z zainstalowanym grub, ale pustym monitem o grub, bez menu grub. (np. https://help.ubuntu.com/community/Grub2/Trou Rozwiązywanie problemów#Specific_Trou Rozwiązywanie problemów ). Było to spowodowane /bootbrakiem dostępu.

Co dla mnie zadziałało

Zacznij od odpowiedzi @Niclas Börlin i zmień kilka drobnych rzeczy.

Tabela partycji

Preferuję jedną dużą /partycję, więc odzwierciedla to wybór. Główną zmianą jest /bootpartycja EXT4 zamiast partycji XFS.

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  /

Po zainstalowaniu zakończone udało mi się ddzawartości sda1do sdb2opisanego szczegółowo w drugiej odpowiedzi. Byłem także w stanie dodać drugi dysk do łańcucha rozruchowego, używając efibootmgrszczegółów.

maxslug
źródło
bardzo pomocny! Mam ten sam problem z serwerem Ubuntu 18.04 + UEFI + RAID1 + LVM. Przestrzeganie schematu partycji bardzo mi pomogło. Dzięki!
Lucas Aimaretto,