Udostępnij za pośrednictwem


Rozruch maszyny wirtualnej platformy Azure z systemem Linux kończy się niepowodzeniem i wprowadza powłokę awaryjną dracut

Uwaga

CentOS, do którego odwołuje się ten artykuł, jest dystrybucją systemu Linux i osiągnie koniec życia (EOL). Rozważ użycie i odpowiednio zaplanuj. Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące końca życia systemu CentOS.

Ten artykuł zawiera rozwiązania problemu, w którym maszyna wirtualna (VM) platformy Azure z systemem Linux nie może się uruchomić, ponieważ system operacyjny (OS) nie jest dostępny z usługi RAMdisk. Maszyna wirtualna ląduje w powłoce awaryjnej dracut.

Wymagania wstępne

Upewnij się, że konsola szeregowa jest włączona i działa na maszynie wirtualnej z systemem Linux.

Jak zidentyfikować problem z rozruchem dracut

Aby zidentyfikować problem z rozruchem dracut, użyj Azure Portal, aby wyświetlić dane wyjściowe dziennika konsoli szeregowej maszyny wirtualnej w okienku diagnostyki rozruchu, okienku konsoli szeregowej lub użyć interfejsu wiersza polecenia AZ.

Wszystkie maszyny wirtualne z problemem z rozruchem wylądują w powłoce awaryjnej dracut lub initramfs i zostaną wyświetlone na końcu dziennika konsoli szeregowej:

  • RHEL/CentOS/SLES/Oracle Linux:

    [  201.935612] dracut-initqueue[455]: Warning: dracut-initqueue timeout - starting timeout scripts
    [  201.941153] dracut-initqueue[455]: Warning: Could not boot.
             Starting Setup Virtual Console...
    [[0;32m  OK  [0m] Started Setup Virtual Console.
             Starting Dracut Emergency Shell...
    Warning: /dev/mapper/rootvg-rootlv does not exist
    
    Generating "/run/initramfs/rdsosreport.txt"
    
    
    Entering emergency mode. Exit the shell to continue.
    Type "journalctl" to view system logs.
    You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
    after mounting them and attach it to a bug report.
    
    
    dracut:/# 
    
  • Ubuntu:

    mdadm: No arrays found in config file or automatically
    done.
    Gave up waiting for root file system device.  Common problems:
     - Boot args (cat /proc/cmdline)
       - Check rootdelay= (did the system wait long enough?)
     - Missing modules (cat /proc/modules; ls /dev)
    ALERT!  /dev/mapper/osencrypt does not exist.  Dropping to a shell!
    
    
    BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.4) built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    
    (initramfs)
    

Rozwiązywanie problemów online

Porada

Jeśli masz ostatnio utworzoną kopię zapasową maszyny wirtualnej, przywróć maszynę wirtualną z kopii zapasowej , aby rozwiązać problem z rozruchem.

Konsola szeregowa jest najszybszą metodą rozwiązywania problemów. Umożliwia to bezpośrednie rozwiązanie problemu bez konieczności prezentowania dysku systemowego na maszynie wirtualnej odzyskiwania. Upewnij się, że spełniasz wymagania wstępne niezbędne do dystrybucji. Aby uzyskać więcej informacji, zobacz Konsola szeregowa maszyny wirtualnej dla systemu Linux.

  1. Określ, czy maszyna wirtualna wyląduje w powłoce awaryjnej dracut.

  2. Spróbuj rozwiązać ten problem przy użyciu konsoli szeregowej platformy Azure.

    Uwaga

    Nie każdy problem można rozwiązać przy użyciu konsoli szeregowej platformy Azure.

    1. Uruchom ponownie maszynę wirtualną (twardą) z konsoli szeregowej.
    2. Przerwij maszynę wirtualną w menu GRUB przy użyciu klawisza ESC .
    3. Wybierz pozycję E , aby zmodyfikować pierwszy wpis jądra w menu GRUB.
    4. Przejdź do wiersza, a następnie zweryfikuj linux16 i popraw błędną konfigurację GRUB w następujący sposób:
  3. Po ręcznym zmodyfikowaniu ustawień narzędzia GRUB wybierz pozycję Ctrl+X , aby uruchomić maszynę wirtualną.

    Wszelkie modyfikacje wprowadzone na tym etapie są nietrwałą modyfikacją. Jeśli maszyna wirtualna jest w stanie uruchomić maszynę wirtualną, rozwiąż ten problem w pliku konfiguracji GRUB lub wystąpi ponownie.

  4. Po powrocie maszyny wirtualnej do trybu online rozwiąż problemy z konfiguracją /etc/default/grub w pliku konfiguracji i zaktualizuj konfigurację narzędzia GRUB. Aby to zrobić, zobacz Ponowne instalowanie pliku GRUB i ponowne generowanie pliku konfiguracji GRUB.

  5. Uruchom ponownie maszynę wirtualną, aby upewnić się, że jest w stanie uruchomić się bez żadnej ręcznej interwencji.

Rozwiązywanie problemów w trybie offline

Porada

Jeśli masz ostatnio utworzoną kopię zapasową maszyny wirtualnej, przywróć maszynę wirtualną z kopii zapasowej , aby rozwiązać problem z rozruchem.

  1. Jeśli konsola szeregowa platformy Azure nie działa na określonej maszynie wirtualnej lub nie jest dostępna w twojej subskrypcji, rozwiąż ten problem przy użyciu maszyny wirtualnej ratunkowej/napraw. Użyj poleceń naprawy maszyny wirtualnej , aby utworzyć maszynę wirtualną naprawczą, która ma dołączoną kopię dysku systemu operacyjnego maszyny wirtualnej, którego dotyczy problem. Zainstaluj kopię systemów plików systemu operacyjnego na maszynie wirtualnej naprawy przy użyciu narzędzia chroot.

    Uwaga

    Alternatywnie można ręcznie utworzyć maszynę wirtualną ratunkową przy użyciu Azure Portal. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z maszyną wirtualną z systemem Linux, dołączając dysk systemu operacyjnego do maszyny wirtualnej odzyskiwania przy użyciu Azure Portal.

  2. Przejdź do następujących sekcji, aby rozwiązać określone problemy:

  3. Po rozwiązaniu problemu z rozruchem związanym z dracut/initramfs wykonaj następujące akcje:

    1. Zamknij chroot.
    2. Odinstaluj kopię systemów plików z maszyny wirtualnej ratowniczej/naprawczej.
    3. Uruchom polecenie , az vm repair restore aby zamienić naprawiony dysk systemu operacyjnego na oryginalny dysk systemu operacyjnego maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Krok 5 w artykule Naprawianie maszyny wirtualnej z systemem Linux przy użyciu poleceń naprawy maszyny wirtualnej platformy Azure.
    4. Sprawdź, czy maszyna wirtualna jest w stanie uruchomić się, przyglądając się konsoli szeregowej platformy Azure lub próbując nawiązać połączenie z maszyną wirtualną.

Nie można uruchomić zaszyfrowanej maszyny wirtualnej ADE, ponieważ funkcja VFAT jest wyłączona

Aby uzyskać więcej informacji, zobacz Nie można uruchomić zaszyfrowanych maszyn wirtualnych ADE.

Brak sterowników funkcji Hyper-V

Jeśli sterowniki funkcji Hyper-V zawarte w jądrze systemu Linux wszystkich nowoczesnych dystrybucji systemu Linux są wyłączone, włącz je ponownie i ponownie wygeneruj obraz initramfs/initrd. Aby uzyskać więcej informacji, zobacz Scenariusz 3: Inne sterowniki funkcji Hyper-V są wyłączone.

Jeśli maszyna wirtualna to Red Hat i jest migrowana ze środowiska lokalnego, włącz wymagane sterowniki funkcji Hyper-V na obrazie initramfs. Aby uzyskać więcej informacji, zobacz Sterownik funkcji Hyper-V nie może być uwzględniony w początkowym dysku RAM podczas korzystania z funkcji hypervisor innej niż Hyper-V.

Błędna konfiguracja narzędzia GRUB

Parametr rd.break wymusza rozruch maszyny wirtualnej w powłoce awaryjnej dracut. Upewnij się, że ten parametr nie jest zakodowany na stałe w pliku konfiguracji GRUB.

Nieprawidłowa ścieżka urządzenia głównego w pliku konfiguracji NARZĘDZIA GRUB

Sprawdź, czy ścieżka root=/dev/*** główna w pliku konfiguracji GRUB jest poprawna. Upewnij się, że jest używana właściwa ścieżka urządzenia.

Podczas tej weryfikacji upewnij się, że są następujące rzeczy:

  • Na maszynach wirtualnych z systemem Ubuntu z szyfrowaniem systemu operacyjnego upewnij się, że nazwa urządzenia to /dev/mapper/osencrypt.
  • Na maszynach wirtualnych z menedżerem woluminów logicznych (LVM) na dysku systemu operacyjnego wolumin główny to /dev/mapper/rootvg-rootlv. Ta sama ścieżka jest używana na maszynach wirtualnych RHEL z zaszyfrowanym dyskiem systemu operacyjnego ADE.
  • Upewnij się, że żadne nazwy urządzeń w postaci /dev/sdX nie są używane, ponieważ zmienią się one podczas ponownych rozruchów i nie są trwałe w systemie Linux. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów ze zmianami nazwy urządzenia maszyny wirtualnej z systemem Linux.
  • Jeśli są używane identyfikatory UUID, upewnij się, że jest używany odpowiedni główny identyfikator UUID systemu plików, a składnia to root=UUID=xxx-yyy-zzz.

Nieprawidłowa ścieżka urządzenia zamiany w pliku konfiguracji NARZĘDZIA GRUB

W tym scenariuszu maszyna wirtualna nie może ukończyć procesu rozruchu i wprowadza powłokę awaryjną dracut z błędem podobnym do następującego:

[  188.000765] dracut-initqueue[324]: Warning: /dev/VG/SwapVol does not exist
         Starting Dracut Emergency Shell...
Warning: /dev/VG/SwapVol does not exist

Plik konfiguracji GRUB w tym przykładzie jest ustawiony na ładowanie woluminu logicznego (LV) jako zamiany z parametrem rd.lvm.lv=VG/SwapVol. Jednak maszyna wirtualna nie może zlokalizować tego LV podczas procesu rozruchu.

Należy pamiętać, że używanie urządzenia wymiany w ten sposób na maszynach wirtualnych z systemem Linux platformy Azure nie jest zalecane. Aby uzyskać więcej informacji, zobacz Tworzenie pliku SWAP dla maszyny wirtualnej z systemem Linux platformy Azure.

Aby rozwiązać ten problem, znajdź ścieżkę rd.lvm.lv=VG/SwapVol zamiany w pliku konfiguracji GRUB (/etc/default/grub) i usuń go. Aby to zrobić, użyj jednej z następujących metod:

Zduplikowane parametry w pliku konfiguracji NARZĘDZIA GRUB

Sprawdź, czy w pliku konfiguracji GRUB znajdują się zduplikowane parametry:

Uszkodzenie głównego systemu plików

Gdy główny system plików jest uszkodzony, nie można go zainstalować z obrazu initrd/initramfs.

Aby naprawić uszkodzenie głównego systemu plików, postępuj zgodnie z instrukcjami w temacie Rozwiązywanie problemów z rozruchem maszyny wirtualnej z systemem Linux z powodu błędów systemu plików — wykonaj naprawę systemu plików.

Problemy z aktywacją LVM

Niektóre problemy mogą wystąpić, gdy uzyskujesz dostęp do woluminu fizycznego LVM (PV), grupy woluminów (VG) i/lub woluminu logicznego (LV). Nie można ich rozwiązać z poziomu konsoli szeregowej platformy Azure. Aby je rozwiązać, użyj maszyny wirtualnej do naprawy/ratowania.

  1. Wykonaj krok 1 w obszarze Rozwiązywanie problemów w trybie offline.

  2. Aby zidentyfikować problemy, uruchom następujące polecenia i zapoznaj się z danymi wyjściowymi poleceń.

    1. Zidentyfikuj, które urządzenie odpowiada dyskowi systemu operacyjnego, i sprawdź, czy zostało wykryte jako PV:

      lsblk
      pvs
      
    2. Sprawdź, czy wykryto maszynę rootvg wirtualną:

      vgs
      
    3. Sprawdź, czy wykryto LV:

      lvs
      
  3. Rozwiąż następujące typowe błędy LVM, które powodują problemy z dostępem do woluminu głównego:

    • Nieznany PV, gdy maszyna wirtualna rootvg ma tylko jeden PV (jest to standardowa konfiguracja platformy Azure)

      Partycja przechowująca PV jest niepoprawnie usuwana, zmieniana lub tworzona. Aby rozwiązać ten problem, zobacz Brak partycji głównej.

    • Nieznany PV, gdy maszyna wirtualna rootvg jest modyfikowana i podzielona na więcej niż jeden dysk

      Posiadanie 2 wirtualnych widoków w sieci wirtualnej rootvg nie jest zalecaną konfiguracją. W tym scenariuszu dysk danych może zostać odłączony od maszyny wirtualnej, a woluminy logiczne rootvg nie są już dostępne. Aby rozwiązać ten problem, ponownie dołącz oryginalny dysk do maszyny wirtualnej i uruchom go ponownie.

  4. Jeśli PV jest nieodwracalny, wykonaj przywracanie z kopii zapasowej.

Brak partycji głównej

Główny system plików może być niedostępny z powodu niektórych problemów występujących na poziomie partycji podczas operacji zmiany rozmiaru partycji lub innych.

W tym scenariuszu, jeśli udokumentowano oryginalny układ tabeli partycji z dokładnymi sektorami początkowymi i końcowymi dla każdej z oryginalnych partycji (i nie są wykonywane żadne dalsze modyfikacje w systemie, takie jak tworzenie nowych systemów plików), utwórz ponownie partycje przy użyciu tego samego oryginalnego układu. Można to zrobić za pomocą narzędzi, takich jak fdisk (dla tabel partycji MBR) lub gdisk (dla tabel partycji GPT), aby uzyskać dostęp do niedostępnego systemu plików. Wykonaj tę operację odzyskiwania z maszyny wirtualnej naprawy/ratowania. Aby uzyskać więcej informacji, zobacz sekcję Rozwiązywanie problemów w trybie offline .

Jeśli to podejście nie zadziała, zalecamy wykonanie przywracania z kopii zapasowej.

Uszkodzenie initrd lub initramfs

Obraz initrd/initramfs ma pewien poziom uszkodzenia, co powoduje niepowodzenie instalowania woluminu głównego i uruchamiania procesu uruchamiania systemu operacyjnego.

Aby rozwiązać ten problem, wykonaj następujące kroki z poziomu narzędzia chroot na maszynie wirtualnej naprawy/ratowania:

  1. Wykonaj krok 1 w obszarze Rozwiązywanie problemów w trybie offline.
  2. Wygeneruj ponownie brakujące pliki initramfs ręcznie.
  3. Uruchom ponownie maszynę wirtualną, aby potwierdzić, czy jest w stanie zostać uruchomiona.

Następne kroki

Jeśli konkretny błąd rozruchu nie jest problemem dracut lub initramfs, zobacz Rozwiązywanie problemów z błędami rozruchu Virtual Machines systemu Azure Linux, aby uzyskać dalsze opcje rozwiązywania problemów.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.