Использование последовательной консоли Azure для вызовов SysRq и NMI
Область применения: ✔️ виртуальные машины Linux
Системный запрос (SysRq)
SysRq — это последовательность клавиш, понятная ядру операционной системы Linux, которая может инициировать набор предопределенных действий. Эти команды часто используются при устранении неполадок или восстановлении виртуальных машин через традиционное администрирование (например, если виртуальная машина не отвечает). Использование функции SysRq в последовательной консоли Azure будет имитировать нажатие клавиши SysRq и ввод символов на физической клавиатуре.
Как только последовательность SysRq будет запущена, конфигурация ядра будет контролировать реакцию системы. Сведения о включении и отключении SysRq см. в текстовом | руководстве по администратору SysRq.
Последовательную консоль Azure можно использовать для отправки SysRq на виртуальную машину Azure с использованием значка клавиатуры в показанной ниже командной строке.
При выборе команды Send SysRq Command (Отправить команду SysRq) откроется диалоговое окно, которое предоставит общие параметры SysRq или примет последовательность команд SysRq, введенных в диалоговое окно. Это позволяет сериям SysRq выполнять высокоуровневую операцию, такую как безопасная перезагрузка с использованием: REISUB
.
Команда SysRq не может использоваться на остановленных виртуальных машинах или на таких, ядро которых находится в неотвечающем состоянии (например, критическое состояние ядра).
Включение SysRq
Как описано в упомянутом выше руководстве администратора SysRq, SysRq можно настроить таким образом, чтобы были доступны все или только определенные команды. Вы можете включить все команды SysRq, используя следующий шаг, но эта настройка не сохранится в случае перезагрузки:
echo "1" >/proc/sys/kernel/sysrq
Конфигурацию SysReq можно сделать постоянной. Включите все команды следующим образом.
- Добавьте эту строку в /etc/sysctl.conf.
kernel.sysrq = 1
- Перезагрузка или обновление sysctl путем выполнения
sysctl -p
Клавиши команд
Как указано в упомянутом выше руководстве администратора SysRq:
Команда | Function |
---|---|
b |
Немедленно инициирует перезагрузку системы без синхронизации или отключение дисков. |
c |
Выполняет сбой системы с помощью разыменования пустого указателя. Если настроено, будет создан аварийный дамп. |
d |
Показывает все удерживаемые блокировки. |
e |
Отправляет SIGTERM всем процессам, за исключением init. |
f |
Вызывает завершение зависшего процесса, чтобы устранить нехватку памяти, но не переживайте, если процесс не завершается. |
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 для создания аварийного дампа при получении команды Crash SysRq доступны по ссылкам ниже.
Ubuntu
Red Hat
- Что такое средство SysRq и как его использовать?
- Как использовать средство SysRq для сбора информации с сервера RHEL?
SUSE
CoreOS
Немаскируемое прерывание (NMI)
Немаскируемое прерывание (NMI) предназначено для создания сигнала, который программное обеспечение на виртуальной машине не будет игнорировать. Раньше немаскируемые прерывания использовались для мониторинга аппаратных проблем в системах, требующих определенного времени отклика. Сегодня программисты и системные администраторы часто используют Node Managed Identity в качестве механизма для отладки или устранения неполадок в неотвечающих системах.
Последовательную консоль можно использовать для отправки немаскируемого прерывания на виртуальную машину Azure с помощью значка клавиатуры, показанного ниже в командной строке. Как только немаскируемое прерывание будет запущено, конфигурация виртуальной машины будет контролировать реакцию системы. Операционные системы Linux можно настроить для аварийного завершения и создания дампа памяти, когда операционная система получает немаскируемое прерывание.
Включение немаскируемого прерывания
Для систем Linux, которые поддерживают sysctl для настройки параметров ядра, можно включить аварийный сигнал при получении этого немаскируемого прерывания, выполнив следующее:
- Добавьте эту строку в /etc/sysctl.conf.
kernel.panic_on_unrecovered_nmi=1
- Перезагрузка или обновление sysctl путем выполнения
sysctl -p
Дополнительные сведения о конфигурации ядра Linux, включая unknown_nmi_panic
, panic_on_io_nmi
и panic_on_unrecovered_nmi
, см. в разделе документации по /proc/sys/kernel/*. Документацию по немаскируемому прерыванию для конкретного дистрибутива и шаги по настройке Linux для создания аварийного дампа при получении немаскируемого прерывания см. по ссылкам ниже.
Ubuntu
Red Hat
- Что такое немаскируемое прерывание и для чего его можно использовать?
- Как я могу настроить свою систему на сбой при передаче немаскируемого прерывания?
- Руководство администратора по выполнению аварийного дампа
SUSE
CoreOS
Следующие шаги
- См. страницу документации по работе с последовательной консолью Linux.
- Используйте последовательную консоль для перехода в режим GRUB и однопользовательский режим.
- Последовательная консоль также доступна для виртуальных машин Windows.
- См. дополнительные сведения о диагностике загрузки.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или помощь, создайте запрос на поддержку или попросите сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.