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

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

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

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

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

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

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

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

Команду SysRq нельзя использовать на виртуальных машинах, которые остановлены или ядро которых не отвечает. (например, при панике ядра).

Включение SysRq

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

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

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

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

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

Из руководства по Администратор SysRq выше:

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

Документация по распространению

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

Ubuntu

Red Hat

SUSE

CoreOS

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

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

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

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

Включение NMI

Для систем 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.