Panika jądra na maszynach wirtualnych z systemem Azure Linux

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

Podsumowanie

W tym artykule omówiono wiele sytuacji, które mogą prowadzić do paniki kernela i dostarcza wskazówki do rozwiązywania problemów.

Ogólnie rzecz biorąc, sytuacja paniki jądra występuje, gdy jądro nie może poprawnie się załadować, w wyniku tego system nie może się uruchomić. Inna forma paniki jądra występuje, gdy jądro napotka sytuację, której nie potrafi obsłużyć, i chroni się poprzez zatrzymanie.

Wymagania wstępne

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

Jak zidentyfikować panikę systemową?

Użyj portalu Azure, aby wyświetlić dane wyjściowe dziennika konsoli szeregowej maszyny wirtualnej w bloku diagnostyki rozruchu, bloku konsoli szeregowej lub AZ CLI w celu zidentyfikowania określonego ciągu paniki jądra.

Panika jądra wygląda podobnie do poniższych danych wyjściowych i zostanie wyświetlona na końcu dziennika konsoli szeregowej:

Probing EDD (edd=off to disable)... ok
Memory KASLR using RDRAND RDTSC...
[  300.206297] Kernel panic - xxxxxxxx
[  300.207216] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G               ------------ T 3.xxx.x86_64 #1

Niektóre z najczęstszych zdarzeń kernel panic:

Komunikat o paniki Przyczyna
Ops: 0000 [#1] SMP " (sprawdź dziennik, aby uzyskać szczegółowe informacje) Wystąpiła panika systemu z powodu dereferencji nieprawidłowego adresu.
SysRq: Wyzwalanie zrzutu awaryjnego Zrzut pamięci został zainicjowany przez użytkownika za pomocą polecenia sysrq-c lub przez wpisanie c do /proc/sysrq-trigger.
Błąd jądra przy <ścieżka_plik/nazwa_plik>:<numer_linii>! Ten format jest standardem dla nieudanej kontroli błędu (które jest podobne do ASSERT, ale logika jest odwrócona). Nazwa pliku i numer wiersza wskażą, który BUG check nie powiódł się.
Panika jądra - brak synchronizacji: softlockup: zawieszone zadania Wykrywacz blokady miękkiej znalazł CPU, który nie zaplanował zadania watchdog w wyznaczonym czasie na blokadę miękką.
Panika jądra — brak synchronizacji: Watchdog wykrył blokadę twardą na procesorze CPU 0 Twardy detektor blokady znalazł procesor, który nie otrzymał żadnych przerwań hrtimer w ramach twardego progu blokady.
Panika jądra — brak synchronizacji: hung_task: zablokowane zadania Watchdog wykrył co najmniej jedną zawieszoną czynność, która była w stanie nieprzerywalnym przez czas dłuższy niż wartość limitu czasu dla zablokowanego zadania.
Panika jądra — brak synchronizacji: brak pamięci. wybrano panic_on_oom Systemowi zabrakło pamięci i obszaru wymiany i został zmuszony do rozpoczęcia zabijania procesów, aby zwolnić pamięć, co nie jest domyślnym zachowaniem.
Panika jądra — brak synchronizacji: brak pamięci i brak procesów, które można zabić... Systemowi zabrakło pamięci i pamięci wymiany, więc zabija procesy, aby zwolnić pamięć, ale nie ma już procesów do zabicia.
Panika jądra — brak synchronizacji: Wystąpiła NMI, zobacz zintegrowany dziennik zarządzania, aby uzyskać szczegółowe informacje. Watchdog przechwycił NMI (nie maskowalne przerwanie).
Panika jądra — brak synchronizacji: błąd NMI IOCK: Nie kontynuowano System otrzymał kontrolę przerwania NMI ze sprzętu (nie błąd parzystości pamięci) i parametr kernel.panic_on_io_nmi był włączony (co nie jest ustawieniem domyślnym).
Panika jądra — brak synchronizacji: NMI: Nie kontynuowano System otrzymał NMI (błąd parzystości sprzętu lub pamięci), a ustawienie kernel.panic_on_unrecovered_nmi było aktywowane (co nie jest ustawieniem domyślnym).
Panika jądra — brak synchronizacji: nmi watchdog System otrzymał NMI, a ustawiony został albo kernel.panic_on_timeout, albo kernel.panic_on_oops (a nie wartości domyślne).
Panika jądra — bez synchronizacji: krytyczny błąd sprawdzania maszyny Zgłoszono wyjątek sprawdzania maszynowego z powodu stanu krytycznego.
Panika jądra — brak synchronizacji: podjęto próbę zabicia init! Proces init to pierwszy proces, który zostaje uruchomiony i nigdy nie powinien zakończyć działania.
Panika jądra — brak synchronizacji: VFS: Nie można zamontować głównego systemu plików na nieznanym bloku (0,0) Zakłada się, że jądro będzie używać initramfs do instalacji rootfs. Ten błąd występuje, gdy jądro nie ma pliku initramfs.

Scenariusz 1. W czasie uruchomienia systemu występuje awaria jądra systemu

Panika jądra w czasie rozruchu uniemożliwia maszynie wirtualnej zakończenie procesu uruchamiania systemu operacyjnego. Dzieje się tak za każdym razem, gdy maszyna wirtualna jest uruchamiana i nie zezwala na logowanie.

Tego rodzaju zdarzenie jest często związane, ale nie ogranicza się do:

Rozwiązanie dla scenariusza 1

Aby poradzić sobie z tego rodzaju paniką jądra, można zastosować następujące metody:

Metoda 1. Używanie konsoli szeregowej Azure

Użyj konsoli szeregowej Azure, aby przerwać proces rozruchu i wybrać poprzednią wersję jądra, jeśli jest dostępna. W ten sposób maszyna wirtualna będzie mogła ponownie uruchomić się, a następnie użyć jednej z następujących metod, aby rozwiązać konkretny problem z jądrem, który nie uruchamia się:

Metoda 2. Naprawa offline przy użyciu ratowniczej maszyny wirtualnej

Jeśli konsola szeregowa Azure jest niedostępna lub nie jest dostępne żadne poprzednie jądro, potrzebna jest maszyna wirtualna do ratownictwa/naprawy, aby wykonać naprawę offline.

Użyj polecenia Repair VM, aby utworzyć maszynę wirtualną naprawczą z dołączoną kopią dysku systemowego docelowej maszyny wirtualnej. Następnie użyj narzędzia chroot, aby zamontować kopię systemów plików systemu operacyjnego na maszynie wirtualnej do naprawy. Następnie spróbuj wykonać następujące metody, aby rozwiązać problemy z jądrem:

Scenariusz 2. Panika jądra w czasie wykonywania

Ten rodzaj paniki jądra jest często wyzwalany w nieprzewidywalnym czasie po zakończeniu procesu uruchamiania systemu operacyjnego i powoduje, że maszyna wirtualna przestanie odpowiadać, uniemożliwiając jej zalogowanie. Jest to często związane, ale nie tylko:

Rozwiązanie dla scenariusza 2

Aby poradzić sobie z tego rodzaju paniką jądra, można użyć następujących podejść:

  • Przejrzyj użycie zasobów i ogólną wydajność systemu. Panika jądra może być związana z potencjalnym niedoborem zasobów, co może skutkować zmianą rozmiaru maszyny wirtualnej.
  • Jeśli to możliwe, zainstaluj najnowsze aktualizacje dostępne w odpowiednich repozytoriach dystrybucji systemu Linux. Panika jądra może być związana ze znanymi usterkami w jądrze lub innym oprogramowaniu.
  • Istnieje możliwość, że panika jądra jest związana z niedawną zmianą jądra, w takim przypadku zaleca się również uruchomić poprzednią wersję jądra, jak wyjaśniono w sekcji Rozwiązanie dla scenariusza 1.
  • Jeśli powyższe opcje nie mają zastosowania, może być konieczne skonfigurowanie kdump i wygenerowanie zrzutu podstawowego w celu udostępnienia go w celu dalszej analizy.

Bardziej szczegółowe scenariusze paniki jądra

Typowe scenariusze paniki jądra z określonymi instrukcjami rozwiązywania problemów i odzyskiwania systemu:

Dokument Scenariusz
Maszyna wirtualna Azure z systemem Linux na jądrze w wersji 3.10 ulega awarii po aktualizacji węzła hosta W tym artykule omówiono problem, który występuje, gdy maszyna wirtualna z systemem Linux Azure z uruchomionym jądrem opartym na wersji 3.10 ulega awarii po uaktualnieniu węzła hosta w Azure.
Jak odzyskać maszynę wirtualną z systemem Linux Azure z problemów z rozruchem powiązanym z jądrem Ten artykuł zawiera rozwiązania problemu, w którym maszyna wirtualna z systemem Linux nie może ponownie uruchomić się po zastosowaniu zmian jądra.