Panika jądra na maszynach wirtualnych z systemem Linux na platformie Azure
W tym artykule omówiono wiele warunków, które mogą prowadzić do paniki jądra, i przedstawiono wskazówki dotyczące rozwiązywania problemów.
Ogólnie rzecz biorąc, panika jądra jest sytuacją, w której jądro nie jest w stanie załadować się prawidłowo, a zatem system nie może się uruchomić. Inna forma paniki jądra występuje, gdy jądro napotka sytuację, w której nie wie, jak obsługiwać i chronić się przez zatrzymanie.
Wymagania wstępne
Upewnij się, że konsola szeregowa jest włączona i działa na maszynie wirtualnej z systemem Linux.
Jak zidentyfikować panikę jądra?
Użyj Azure Portal, aby wyświetlić dane wyjściowe dziennika konsoli szeregowej maszyny wirtualnej w bloku diagnostyki rozruchu, bloku konsoli szeregowej lub interfejsie wiersza polecenia AZ, aby zidentyfikować określony ciąg błędu jądra.
Błąd jądra wygląda podobnie do poniższych danych wyjściowych i zostanie wyświetlony 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ń paniki jądra:
Wiadomość paniki | Powodu |
---|---|
Oops: 0000 [#1] SMP " (sprawdź dziennik, aby uzyskać szczegółowe informacje) | System wpadł w panikę z powodu wyłudzania nieprawidłowego adresu. |
SysRq: Wyzwalanie crashdump | Zrzut rdzeni został zainicjowany przez użytkownika za pomocą polecenia sysrq-c lub przez echo c do /proc/sysrq-trigger. |
USTERKA jądra pod adresem <pathname/filename>:<line number>! | Ten format jest standardem dla sprawdzania błędów zakończonych niepowodzeniem (który jest podobny do ASERCJI, ale logika jest odwrócona). Nazwa pliku i numer wiersza będą wskazywać, które sprawdzanie błędu nie powiodło się. |
Panika jądra — brak synchronizacji: softlockup: zadania zawieszające się | Wykrywacz blokady nietrwałej znalazł procesor CPU, który nie zaplanował zadania watchdog w ramach progu blokady nietrwałej. |
Panika jądra — nie synchronizowanie: Watchdog wykrył twardą blokadę na procesorze 0 | Twardy czujnik blokady znalazł procesor, który nie otrzymał żadnych przerwań hrtimer w ramach progu twardej blokady. |
Panika jądra — nie synchronizowanie: hung_task: zablokowane zadania | Zawieszający się strażnik zadań wykrył co najmniej jedno zadanie, które było w stanie nieinterruptalnym dla więcej niż wartość limitu czasu zablokowanego zadania. |
Panika jądra — brak synchronizacji: brak pamięci. panic_on_oom jest zaznaczona | W systemie zabrakło pamięci i wymiany i został zmuszony do rozpoczęcia zabijania procesów w celu zwolnienia pamięci (a nie domyślnego zachowania). |
Panika jądra — brak synchronizacji: Brak pamięci i brak procesów możliwych do zabicia... | System zabrakło pamięci i wymiany i został zabijania procesów, aby zwolnić pamięć, ale zabrakło procesów, aby zabić. |
Panika jądra — brak synchronizacji: Wystąpiła usługa NMI, zobacz Zintegrowany dziennik zarządzania, aby uzyskać szczegółowe informacje. | Watchdog przechwycił NMI (niemaskowalne przerwanie). |
Panika jądra — brak synchronizacji: błąd NMI IOCK: Nie kontynuuj | System otrzymał usługę NMI sprawdzania operacji we/wy ze sprzętu (nie błąd parzystości pamięci) i kernel.panic_on_io_nmi została ustawiona (nie domyślna). |
Panika jądra — brak synchronizacji: NMI: Nie kontynuuj | System otrzymał NMI (błąd parzystości sprzętu lub pamięci), a kernel.panic_on_unrecovered_nmi została ustawiona (nie domyślna). |
Panika jądra — nie synchronizowanie: nmi watchdog | System otrzymał NMI i ustawiono kernel.panic_on_timeout lub kernel.panic_on_oops (nie wartości domyślne). |
Panika jądra — nie synchronizowanie: sprawdzanie maszyny ze skutkiem śmiertelnym | Dla stanu krytycznego zgłoszono zdarzenie wyjątku sprawdzania maszyny. |
Panika jądra — nie synchronizowanie: Próbowano zabić init! | Proces init jest pierwszym procesem, który należy uruchomić i nigdy nie powinien kończyć pracy. |
Scenariusz 1. Panika jądra występuje w czasie rozruchu
Błąd 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 powiązane, ale nie ogranicza się do:
- Ostatnie uaktualnienie jądra.
- Ostatnia zmiana na starszą wersję jądra.
- Zmiany modułu jądra.
- Zmiany konfiguracji systemu operacyjnego (GRUB, sysctl i SELinux).
- Brak ważnych plików i katalogów.
- Brak ważnych bibliotek i pakietów podstawowych systemu.
- Nieprawidłowe uprawnienia do plików.
- Brak partycji.
Rozwiązanie dla scenariusza 1
Aby poradzić sobie z tego rodzaju paniką jądra, można zastosować następujące podejścia:
Metoda 1. Korzystanie z konsoli szeregowej platformy Azure
Użyj konsoli szeregowej platformy 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ć rozruch, a następnie użyć jednej z następujących metod, aby rozwiązać konkretny problem z jądrem bez rozruchu:
- Zainstaluj ponownie lub ponownie zregeneruj brakujące pliki initramfs.
- Zainstaluj ponownie problematyczne jądro.
- Przejrzyj załadowane lub brakujące moduły jądra.
- Przejrzyj partycje.
Metoda 2. Naprawa w trybie offline przy użyciu maszyny wirtualnej ratowniczej
Jeśli konsola szeregowa platformy Azure nie jest dostępna lub żadne poprzednie jądro nie jest dostępne, do naprawy w trybie offline potrzebna jest maszyna wirtualna do ratowania/naprawy.
Użyj polecenia Napraw maszynę wirtualną, aby utworzyć maszynę wirtualną naprawczą z dołączoną kopią dysku systemu operacyjnego docelowej maszyny wirtualnej. Następnie użyj narzędzia chroot , aby zainstalować kopię systemów plików systemu operacyjnego na maszynie wirtualnej naprawy. Następnie spróbuj wykonać następujące metody, aby rozwiązać problemy z jądrem:
- Zainstaluj ponownie lub ponownie zregeneruj brakujące pliki initramfs.
- Zainstaluj ponownie problematyczne jądro.
- Przejrzyj załadowane lub brakujące moduły jądra.
- Przejrzyj partycje.
- Odzyskaj brakujące pliki.
- Odzyskaj brakujące ważne biblioteki i pakiety podstawowe systemu.
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 przestaje odpowiadać, uniemożliwiając jej zalogowanie się. Jest to często związane, ale nie tylko:
- Ostatnie uaktualnienie jądra.
- Ostatnia zmiana na starszą wersję jądra.
- Zmiany modułu jądra.
- Zmiany konfiguracji systemu operacyjnego (GRUB, sysctl i SELinux).
- Zmiany obciążenia aplikacji.
- Zmiany lub usterki tworzenia aplikacji.
- Możliwe usterki jądra.
- Problemy związane z wydajnością.
Rozwiązanie dla scenariusza 2
Aby poradzić sobie z tego rodzaju paniką jądra, można zastosować następujące podejścia:
- Przejrzyj użycie zasobów i ogólną wydajność systemu. Panika jądra może być związana z możliwym brakiem zasobów, który może prowadzić do zmiany 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ż rozruch w poprzedniej wersji jądra, jak wyjaśniono w rozwiązaniu dla scenariusza 1.
- Jeśli powyższe opcje nie mają zastosowania, może być konieczne skonfigurowanie narzędzia kdump i wygenerowanie zrzutu podstawowego w celu udostępnienia go z obsługą dalszej analizy.
Bardziej szczegółowe scenariusze paniki jądra
Typowe scenariusze paniki jądra z określonymi instrukcjami dotyczącymi rozwiązywania problemów/odzyskiwania:
Dokument | Scenariusz |
---|---|
Maszyna wirtualna platformy Azure z systemem Linux na jądrze opartym na wersji 3.10 wpada w panikę po uaktualnieniu węzła hosta | W tym artykule omówiono problem występujący, gdy maszyna wirtualna platformy Azure z systemem Linux z uruchomionym jądrem opartym na wersji 3.10 ulega awarii po uaktualnieniu węzła hosta na platformie Azure. |
Jak odzyskać maszynę wirtualną platformy Azure z systemem Linux z powodu problemów z rozruchem związanym z jądrem | Ten artykuł zawiera rozwiązania problemu, w którym maszyna wirtualna z systemem Linux nie może zostać ponownie uruchomiona po zastosowaniu zmian jądra. |
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.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla