Поделиться через


Использование последовательной консоли Azure для вызовов SysRq и NMI

Область применения: ✔️ виртуальные машины Linux

Системный запрос (SysRq)

SysRq — это последовательность клавиш, понятная ядру операционной системы Linux, которая может инициировать набор предопределенных действий. Эти команды часто используются, когда устранение неполадок или восстановление виртуальных машин не может быть выполнено традиционным администрированием. Например, если виртуальная машина не отвечает. Использование функции SysRq последовательной консоли Azure имитирует нажатие клавиши SysRq и символов, введенных на физической клавиатуре.

После доставки последовательности SysRq конфигурация ядра определяет способ реагирования системы. Сведения о включении и отключении SysRq см. в текстовом по администратору SysRq.

Последовательную консоль Azure можно использовать для отправки команды SysRq виртуальной машине Azure с помощью значка клавиатуры в следующей панели команд.

Снимок экрана: последовательная консоль Azure. Выделен значок клавиатуры и отображается его меню. Это меню содержит элемент команды Send SysRq.

При выборе команды Send SysRq открывается диалоговое окно, которое предоставляет общие параметры SysRq или принимает последовательность команд SysRq, введенных в диалоговое окно. Эта команда "Send SysRq" позволяет выполнять серию высокоуровневых операций, таких как безопасная перезагрузка: REISUB.

Снимок экрана: диалоговое окно

Команда SysRq не может использоваться на остановленных виртуальных машинах или на таких, ядро которых ​​находится в неотвечающем состоянии Например, паника ядра.

Включение SysRq

Как описано в руководстве администратора SysRq, SysRq можно настроить таким образом, чтобы были доступны все команды, ни одна из команд, или только некоторые команды. Вы можете включить все команды SysRq, выполнив следующий шаг, но он не пережил перезагрузку:

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

Конфигурацию SysReq можно сделать постоянной. Включите все команды следующим образом.

  1. Добавьте эту строку в /etc/sysctl.conf.
    kernel.sysrq = 1
  2. Перезагрузка или обновление sysctl путем выполнения
    sysctl -p

Клавиши команд

Из руководства администратора SysRq:

Команда Function
b Немедленно инициирует перезагрузку системы без синхронизации или отключение дисков.
c Выполняет сбой системы с помощью разыменования пустого указателя. Если настроено, будет создан аварийный дамп.
d Показывает все удерживаемые блокировки.
e Отправляет SIGTERM всем процессам, за исключением init.
f Вызовет OOM-киллер, чтобы завершить процесс, потребляющий много памяти, но не паникуйте, если ничего не получится завершить.
g Используется kgdb (отладчик ядра).
h Отобразит справку (любая другая клавиша, кроме перечисленных здесь, также отображает справку, но h легко запомнить :-)
i Отправляет SIGKILL всем процессам, за исключением init.
j Принудительно "размораживает" файловые системы, остановленные с помощью FIFREEZE ioctl.
k Защищенная клавиша доступа (SAK) завершает все программы в текущей виртуальной консоли. ПРИМЕЧАНИЕ. См. важные комментарии в следующем разделе SAK.
l Отображает обратную трассировку стека для всех активных ЦП.
m Передает текущую информацию о памяти в консоль.
n Используется для упрощения работы с задачами RT.
o Завершает работу системы (если эта клавиша настроена и поддерживается).
p Передает текущие регистры и флаги в консоль.
q Будет передавать списки всех установленных hrtimers (но не обычных таймеров timer_list) для каждого ЦП и подробную информацию обо всех устройствах clockevent.
r Отключает режим RAW клавиатуры и устанавливает для нее параметр XLATE.
s Будет пытаться синхронизировать все подключенные файловые системы.
t Передаст список текущих задач и информацию о них в консоль.
u Будет пытаться повторно подключить все подключенные файловые системы только для чтения.
v Принудительно восстанавливает консоль framebuffer.
v Вызывает дамп буфера ETM [относящийся к ARM].
w Создает дамп задач, которые находятся в непрерываемом (заблокированном) состоянии.
x Используется интерфейсом xmon на платформах ppc/powerpc. Отображает глобальные регистры PMU в sparc64. Создает дамп всех записей TLB в MIPS.
y Отображает глобальные регистры ЦП [относящиеся к SPARC-64].
z Создает дамп буфера ftrace.
0-9 Задает уровень журнала консоли, управляющий тем, какие сообщения ядра выводятся в вашей консоль. (0, например, сделает так, чтобы только сообщения о чрезвычайной ситуации, такие как PANIC или OOPS, могли попасть в вашу консоль.)

Документация для конкретного дистрибутива

Документацию для конкретного дистрибутива в SysRq и шаги по настройке Linux для создания аварийного дампа при получении команды SysRq "Crash" см. в следующих ссылках:

Ubuntu

Red Hat

SUSE

CoreOS

Немаскируемое прерывание (NMI)

Немаскируемое прерывание (NMI) создает сигнал, который программное обеспечение на виртуальной машине не может игнорировать. Исторически nmis используются для мониторинга аппаратных проблем в системах, требующих определенного времени отклика. Сегодня программисты и системные администраторы часто используют NMI в качестве механизма отладки или устранения неполадок систем, которые не отвечают.

Последовательная консоль можно использовать для отправки NMI на виртуальную машину Azure с помощью значка клавиатуры на следующей панели команд. После доставки NMI конфигурация виртуальной машины определяет способ реагирования системы. Операционные системы Linux можно настроить для аварийного завершения и создания дампа памяти, когда операционная система получает немаскируемое прерывание.

Снимок экрана: последовательная консоль. Выделен значок клавиатуры и отображается его меню. Это меню содержит элемент прерывания, не допускающий маскировку.

Включение немаскируемого прерывания

Для систем Linux, поддерживающих sysctl для настройки параметров ядра, можно инициировать панику при получении этого NMI с помощью следующих команд:

  1. Добавьте эту строку в /etc/sysctl.conf.
    kernel.panic_on_unrecovered_nmi=1
  2. Перезагрузка или обновление sysctl путем выполнения
    sysctl -p

Дополнительные сведения о конфигурации ядра Linux, включая unknown_nmi_panic, panic_on_io_nmi и panic_on_unrecovered_nmi, см. в разделе документации по /proc/sys/kernel/*. Документацию для конкретного дистрибутива по NMI и действия по настройке Linux для создания аварийного дампа при получении NMI см. в следующих ссылках:

Ubuntu

Red Hat

SUSE

CoreOS

Следующие шаги

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.