Гайд: Настройка Magic SysRq Key: экстренная синхронизация дисков и безопасная перезагрузка (REISUB)
Архитектура подсистемы Magic SysRq Key в ядре Linux
Комбинация Magic SysRq Key — это встроенный в ядро Linux низкоуровневый механизм экстренной отладки и восстановления, работающий напрямую через драйвер клавиатуры или системный псевдотерминал /proc/sysrq-trigger. В отличие от стандартных демонов пространства пользователя (Userspace), обработчик SysRq перехватывает системные прерывания на уровне прерываний ядра (Interrupt Handler). Это позволяет безопасно остановить зависшую систему, сбросить файловые кэши на диск и перезагрузить сервер даже в ситуациях, когда:
- Полностью завис графический сервер Xorg / Wayland;
- Пространство пользователя заблокировано из-за 100% исчерпания оперативной памяти (OOM Thrashing);
- Заблокирован планировщик задач или процесс упал в состояние Uninterruptible Sleep (D-state) из-за зависшего дискового I/O;
- Сервер недоступен по протоколу SSH.
Бизнес-риски аварийного отключения по питанию (Hard Reset)
Жесткое выключение сервера кнопкой питания или через PDU без предварительного сброса буферов приводит к повреждению журналов файловых систем (EXT4/XFS), потере транзакций в СУБД (MySQL/PostgreSQL) и разрушению RAID-массивов.
Мнемоническая последовательность REISUB (Raising Elephants Is So Utterly Boring)
| Клавиша | Системное действие ядра | Назначение |
|---|---|---|
| R (unRaw) | Переводит клавиатуру из режима Raw в режим XLATE. | Возврат контроля над клавиатурой при зависшем Xorg. |
| E (tErm) | Отправляет сигнал SIGTERM всем процессам, кроме init / systemd. | Корректное завершение пользовательских программ. |
| I (kIll) | Отправляет сигнал SIGKILL всем оставшимся процессам. | Принудительное уничтожение зависших процессов. |
| S (Sync) | Сбрасывает все «грязные» страницы (Dirty Pages) из RAM на диск. | Предотвращение повреждения файловых систем. |
| U (Unmount) | Ремонтирует все смонтированные файловые системы в режим Read-Only. | Защита разделов перед сбросом питания. |
| B (reBoot) | Мгновенно перезагружает систему в обход BIOS/UEFI. | Безопасный перезапуск сервера. |
Регламент включения и применения Magic SysRq
Сценарий 1: Персистентная активация SysRq в sysctl
По умолчанию в большинстве дистрибутивов (Ubuntu, Debian, RHEL) функционал SysRq включен частично (битовая маска 176 или 438). Для полной активации задайте битовую маску 1:
# 1. Проверка текущего значения битовой маски SysRq:
cat /proc/sys/kernel/sysrq
# 2. Включение всех функций на лету:
sudo sysctl -w kernel.sysrq=1
# 3. Персистентное сохранение в конфигурационном файле:
sudo tee /etc/sysctl.d/99-sysrq.conf <<EOF
kernel.sysrq = 1
EOF
sudo sysctl --systemСценарий 2: Порядок экстренной перезагрузки через клавиатуру (REISUB)
Зажмите комбинацию клавиш Alt + PrintScreen (SysRq) и, удерживая их, последовательно нажимайте клавиши с интервалом в 2–3 секунды:
- Alt + SysRq + R — перехват клавиатуры;
- Alt + SysRq + E — отправка SIGTERM (подождите 3 секунды для сохранения данных приложениями);
- Alt + SysRq + I — уничтожение зависших процессов через SIGKILL;
- Alt + SysRq + S — синхронизация файловых систем (дождитесь мигания индикаторов диска или надписи Emergency Sync complete в консоли);
- Alt + SysRq + U — перемонтирование в Read-Only (сообщение Emergency Remount R/O);
- Alt + SysRq + B — немедленный ребут.
Сценарий 3: Выполнение SysRq команд через псевдотерминал /proc/sysrq-trigger (Удаленно по SSH / IPMI Serial-over-LAN)
Если доступен доступ к шеллу, но система нестабильна:
# Экстренная синхронизация буферов диска:
sudo bash -c 'echo s > /proc/sysrq-trigger'
# Перевод файловых систем в режим Read-Only:
sudo bash -c 'echo u > /proc/sysrq-trigger'
# Принудительный OOM-Kill самого тяжелого процесса:
sudo bash -c 'echo f > /proc/sysrq-trigger'
# Мгновенная перезагрузка:
sudo bash -c 'echo b > /proc/sysrq-trigger'Типовые ошибки администраторов
- Слишком быстрое нажатие последовательности: Если нажать REISUB за 1 секунду, ядро не успеет завершить сброс сотен мегабайт грязных страниц из буферов на диск до отправки команды
b(Reboot). Обязательно выдерживайте паузу 3–5 секунд междуS,UиB. - Использование на ноутбуках без функциональной клавиши: На многих компактных клавиатурах кнопка
PrintScreenсовмещена сFnилиInsert(комбинация становитсяAlt + Fn + PrtScn + [Key]).
Инженеры ITSTM настроят сбор ядерных дампов, консольный вывод по Serial-over-LAN (IPMI SoL) и проведут аудит системной памяти.
Частые вопросы (FAQ)
Что означают значения битовой маски kernel.sysrq?
0 — полностью выключено; 1 — включены все команды; 2 — включен контроль уровней логирования консоли; 4 — управление клавиатурой (SAK, unraw); 8 — отладочные дампы процессов; 16 — синхронизация sync; 32 — перемонтирование remount-ro; 64 — сигналы процессам (term, kill, oom-kill); 128 — перезагрузка/выключение.
Как вызвать SysRq в виртуальной машине KVM / Proxmox?
В Proxmox/QEMU выполните команду в консоли монитора: sendkey sysrq-b или sendkey alt-sysrq-s.
Чем отличается SysRq 'o' от SysRq 'b'?
Команда 'b' выполняет немедленный перезапуск (reBoot), а команда 'o' инициирует немедленное отключение питания материнской платы (powerOff) через ACPI.
Безопасно ли оставлять kernel.sysrq = 1 на публичных серверах?
Если к физической консоли или KVM-интерфейсу имеют доступ посторонние лица, SysRq позволяет перезагрузить сервер или вызвать OOM-killer. В защищенных ЦОД с авторизованным доступом значение 1 является стандартом DevOps.