Używanie konsoli szeregowej platformy Azure dla wywołań SysRq i NMI

Żądanie systemowe (SysRq)

SysRq to sekwencja kluczy zrozumiała dla jądra systemu operacyjnego Linux, która może wyzwolić zestaw wstępnie zdefiniowanych akcji. Te polecenia są często używane, gdy rozwiązywanie problemów lub odzyskiwanie maszyn wirtualnych nie może być wykonywane za pośrednictwem tradycyjnej administracji (na przykład jeśli maszyna wirtualna nie odpowiada). Użycie funkcji SysRq konsoli szeregowej platformy Azure będzie naśladować naciśnięcie klawisza SysRq i znaków wprowadzonych na klawiaturze fizycznej.

Po dostarczeniu sekwencji SysRq konfiguracja jądra będzie kontrolować reakcję systemu. Aby uzyskać informacje na temat włączania i wyłączania usługi SysRq, zobacz znacznikmarkdowntekstu | SysRq Administracja Guide.

Konsola szeregowa platformy Azure może służyć do wysyłania pliku SysRq do maszyny wirtualnej platformy Azure przy użyciu ikony klawiatury na pasku poleceń pokazanym poniżej.

Zrzut ekranu przedstawiający konsolę szeregową platformy Azure. Ikona klawiatury jest wyróżniona, a jej menu jest widoczne. To menu zawiera element polecenia Send SysRq.

Wybranie opcji "Wyślij polecenie SysRq" spowoduje otwarcie okna dialogowego, które zapewni typowe opcje SysRq lub zaakceptuje sekwencję poleceń SysRq wprowadzonych w oknie dialogowym. Umożliwia to serii SysRq wykonywanie operacji wysokiego poziomu, takich jak bezpieczny ponowny rozruch przy użyciu: REISUB.

Zrzut ekranu przedstawiający okno dialogowe Wysyłanie polecenia SysRq do gościa po wybraniu opcji wprowadzania klucza i wprowadzeniu adresu REISUB w polu poniżej.

Nie można użyć polecenia SysRq na maszynach wirtualnych, które zostały zatrzymane lub których jądro jest w stanie braku odpowiedzi. (na przykład panika jądra).

Włączanie usługi SysRq

Zgodnie z opisem w powyższym przewodniku SysRq Administracja, można skonfigurować usługę SysRq w taki sposób, aby były dostępne wszystkie, żadne lub tylko niektóre polecenia. Możesz włączyć wszystkie polecenia SysRq, wykonując poniższy krok, ale nie przetrwa on ponownego uruchomienia:

echo "1" >/proc/sys/kernel/sysrq

Aby ustawić konfigurację SysReq jako trwałą, można wykonać następujące czynności, aby włączyć wszystkie polecenia SysRq

  1. Dodawanie tego wiersza do pliku /etc/sysctl.conf
    kernel.sysrq = 1
  2. Ponowne uruchamianie lub aktualizowanie programu sysctl przez uruchomienie
    sysctl -p

Klucze poleceń

Z przewodnika Administracja SysRq powyżej:

Polecenia Funkcja
b Natychmiast uruchomi ponownie system bez synchronizowania lub odinstalowywania dysków.
c Spowoduje to awarię systemu przez wyłudczenie wskaźnika NULL. W przypadku skonfigurowania zostanie podjęta awaria.
d Pokazuje wszystkie blokady, które są przechowywane.
e Wyślij sigterm do wszystkich procesów, z wyjątkiem init.
f Będzie nazywać zabójcę oom zabić proces wieprz pamięci, ale nie panikuj, jeśli nic nie może być zabity.
g Używane przez kgdb (debuger jądra)
h Zostanie wyświetlona pomoc (każdy inny klucz niż ten wymieniony tutaj również wyświetli pomoc, ale h jest łatwy do zapamiętania :-)
i Wyślij sigkill do wszystkich procesów, z wyjątkiem init.
j Forcibly "Just thaw it" - filesystems frozen by the FIFREEZE ioctl.
k Bezpieczny klucz dostępu (SAK) zabija wszystkie programy w bieżącej konsoli wirtualnej. UWAGA: Zobacz ważne komentarze poniżej w sekcji SAK.
l Przedstawia śledzenie wsteczne stosu dla wszystkich aktywnych procesorów CPU.
m Spowoduje zrzucenie bieżących informacji o pamięci do konsoli.
n Służy do wykonywania zadań RT z dobrą obsługą
o Spowoduje wyłączenie systemu (jeśli jest skonfigurowany i obsługiwany).
p Spowoduje zrzucenie bieżących rejestrów i flag do konsoli.
q Spowoduje zrzut list procesora CPU wszystkich uzbrojonych hrtimerów (ale NIE zwykłych czasomierzy timer_list) i szczegółowych informacji o wszystkich urządzeniach zegarowentowych.
r Wyłącza tryb nieprzetworzony klawiatury i ustawia go na XLATE.
s Spróbuje zsynchronizować wszystkie zainstalowane systemy plików.
t Spowoduje zrzucenie listy bieżących zadań i ich informacji do konsoli programu .
u Spróbuje ponownie zainstalować wszystkie zainstalowane systemy plików tylko do odczytu.
v Zdecydowanie przywraca konsolę framebuffer
v Powoduje zrzut buforu ETM [specyficzny dla usługi ARM]
w Zrzuty zadań, które są w stanie nieinterruptible (zablokowane).
x Używany przez interfejs xmon na platformach ppc/powerpc. Pokaż globalne rejestry PMU na sparc64. Zrzuć wszystkie wpisy modułu TLB w programie MIPS.
y Pokaż globalne rejestry procesora CPU [specyficzne dla sparc-64]
z Zrzut buforu ftrace
0-9 Ustawia poziom dziennika konsoli, kontrolując, które komunikaty jądra będą drukowane w konsoli. (0na przykład spowoduje to, że tylko komunikaty alarmowe, takie jak PANICs lub OOPSes, zostaną wysłane do konsoli użytkownika).

Dokumentacja specyficzna dla dystrybucji

Aby zapoznać się z dokumentacją dotyczącą dystrybucji programu SysRq i instrukcjami konfigurowania systemu Linux w celu utworzenia zrzutu awaryjnego po otrzymaniu polecenia "Crash" SysRq, zobacz poniższe linki:

Ubuntu

Czerwony kapelusz

SUSE

CoreOS

Niemaskowalne przerwanie (NMI)

Niemaskowalne przerwanie (NMI) jest przeznaczone do tworzenia sygnału, że oprogramowanie na maszynie wirtualnej nie będzie ignorować. W przeszłości interfejsy NMI były używane do monitorowania problemów sprzętowych w systemach, które wymagały określonego czasu odpowiedzi. Obecnie programiści i administratorzy systemu często używają NMI jako mechanizmu do debugowania lub rozwiązywania problemów z systemami, które nie odpowiadają.

Konsola szeregowa może służyć do wysyłania NMI do maszyny wirtualnej platformy Azure przy użyciu ikony klawiatury na pasku poleceń pokazanym poniżej. Po dostarczeniu NMI konfiguracja maszyny wirtualnej będzie kontrolować reakcję systemu. Systemy operacyjne Linux można skonfigurować do awarii i utworzyć zrzut pamięci system operacyjny odbiera NMI.

Zrzut ekranu przedstawiający konsolę szeregową. Ikona klawiatury jest wyróżniona, a jej menu jest widoczne. To menu zawiera element Wyślij przerwanie bez maskowania.

Włączanie usługi NMI

W przypadku systemów z systemem Linux, które obsługują funkcję sysctl na potrzeby konfigurowania parametrów jądra, można włączyć panikę podczas odbierania tej usługi NMI, korzystając z następujących elementów:

  1. Dodawanie tego wiersza do pliku /etc/sysctl.conf
    kernel.panic_on_unrecovered_nmi=1
  2. Ponowne uruchamianie lub aktualizowanie programu sysctl przez uruchomienie
    sysctl -p

Aby uzyskać więcej informacji na temat konfiguracji jądra systemu Linux, w tym unknown_nmi_panic, panic_on_io_nmii panic_on_unrecovered_nmi, zobacz: Dokumentacja /proc/sys/kernel/*. Aby zapoznać się z dokumentacją dotyczącą dystrybucji usługi NMI i instrukcjami konfigurowania systemu Linux w celu utworzenia zrzutu awaryjnego po odebraniu NMI, zobacz poniższe linki:

Ubuntu

Czerwony kapelusz

SUSE

CoreOS

Następne kroki

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.