Паника ядра на виртуальных машинах Linux в Azure

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

В этой статье рассматривается несколько условий, которые могут привести к панике ядра и предоставляют рекомендации по устранению неполадок.

Как правило, паника ядра — это ситуация, когда ядро не может загрузиться должным образом, и поэтому система не загрузится. Другая форма паники ядра возникает при возникновении ситуации, когда ядро не знает, как обрабатывать и защищать себя путем остановки.

Необходимые компоненты

Убедитесь, что последовательная консоль включена и работает на виртуальной машине Linux.

Как определить панику ядра?

Используйте портал Azure для просмотра выходных данных журнала последовательной консоли виртуальной машины в колонке загрузки диагностика, колонке последовательной консоли или AZ CLI для определения конкретной строки паники ядра.

Паника ядра выглядит примерно так же, как в выходных данных ниже, и отобразится в конце журнала последовательной консоли:

Probing EDD (edd=off to disable)... ok
Memory KASLR using RDRAND RDTSC...
[  300.206297] Kernel panic - xxxxxxxx
[  300.207216] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G               ------------ T 3.xxx.x86_64 #1

Некоторые из наиболее распространенных событий паники ядра:

Паническое сообщение Причина
Oops: 0000 [#1] SMP " (проверка журнала для получения сведений) Система паниковала из-за разыменовки плохого адреса.
SysRq: активация аварийного завершения Основной дамб был инициирован пользователем с sysrq-c или эхом c в /proc/sysrq-trigger.
ОШИБКА ядра при <имени пути/имени файла>:<номер> строки! Этот формат является стандартным для неудавшегося проверки ошибок (который так же, как и ASSERT, но логика инвертируется). Имя файла и номер строки указывают, какая ошибка ошибок завершилась ошибкой.
Паника ядра — не синхронизируется: обратимая блокировка: зависания задач Детектор обратимой блокировки обнаружил ЦП, который не планировал задачу наблюдателя в пороге мягкой блокировки.
Паника ядра — не синхронизирована: Watchdog обнаружил жесткий LOCKUP на ЦП 0 Детектор жесткой блокировки обнаружил ЦП, который не получил никаких прерываний hrtimer в пределах порога жесткой блокировки.
Паника ядра — не синхронизируется: hung_task: заблокированные задачи Зависающая задача сторожевой группы обнаружила по крайней мере одну задачу, которая находилась в неиспеченном состоянии больше, чем значение времени ожидания заблокированной задачи.
Паника ядра — не синхронизируется: вне памяти. выбран panic_on_oom Система не имеет памяти и переключения и вынуждена запускать процессы убийства, чтобы освободить память (не поведение по умолчанию).
Паника ядра — не синхронизируется: из памяти и не могут быть убиты процессы... Система избежал памяти и переключения и убивал процессы для освобождения памяти, но не было процессов, чтобы убить.
Паника ядра — не синхронизируется: произошла NMI, см. сведения о встроенном журнале управления. Наблюдатель перехватил NMI (не маскируемое прерывание).
Паника ядра — не синхронизирована: ошибка IOCK NMI: не продолжается Система получила NMI проверки ввода-вывода из оборудования (а не ошибка четности памяти) и kernel.panic_on_io_nmi была задана (не по умолчанию).
Паника ядра — не синхронизируется: NMI: не продолжается Система получила NMI (ошибка четности оборудования или памяти), а kernel.panic_on_unrecovered_nmi была задана (не по умолчанию).
Паника ядра — не синхронизируется: nmi watchdog Система получила NMI и kernel.panic_on_timeout или kernel.panic_on_oops была задана (не значения по умолчанию).
Паника ядра — не синхронизируется: проверка неустранимого компьютера Событие исключения проверки компьютера было создано для неустранимого состояния.
Паника ядра — не синхронизирована: попытка убить инициализацию! Процесс инициализации — это первый процесс, который необходимо запустить, и никогда не должен завершать работу.

Сценарий 1. Во время загрузки возникает паника ядра

Во время загрузки ядра не позволяет виртуальной машине завершить процесс запуска операционной системы. Это происходит каждый раз, когда виртуальная машина запущена, и она не разрешает вход.

Этот тип события обычно связан, но не ограничивается:

Разрешение для сценария 1

Чтобы справиться с этим типом паники ядра, можно использовать следующие подходы:

Метод 1. Использование последовательной консоли Azure

Используйте последовательную консоль Azure, чтобы прервать процесс загрузки и выбрать предыдущую версию ядра, если она доступна. Таким образом, виртуальная машина сможет снова загрузиться, а затем можно использовать один из следующих методов для устранения конкретной проблемы с ядром без загрузки:

Метод 2. Автономное восстановление с помощью виртуальной машины спасения

Если последовательная консоль Azure недоступна или предыдущее ядро недоступно, вам потребуется виртуальная машина спасения и восстановления для автономного восстановления.

Используйте команду "Восстановить виртуальную машину", чтобы создать виртуальную машину восстановления с копией подключенного диска ОС целевой виртуальной машины. Затем используйте chroot подключение копии файловых систем ОС на виртуальной машине восстановления. После этого попробуйте выполнить следующие методы, чтобы устранить проблемы с ядром:

Сценарий 2. Паника ядра во время выполнения

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

Разрешение для сценария 2

Чтобы справиться с этим типом паники ядра, можно использовать следующие подходы:

  • Проверьте использование ресурсов и общую производительность системы. Паника ядра может быть связана с возможной нехваткой ресурсов, которые могут привести к размеру виртуальной машины.
  • По возможности установите последние обновления, доступные в соответствующих репозиториях дистрибутивов Linux. Паника ядра может быть связана с известными ошибками в ядре или другом программном обеспечении.
  • Существует вероятность того, что паника ядра связана с недавним изменением ядра, в этом случае также рекомендуется загружать предыдущую версию ядра, как описано в разделе "Разрешение" для сценария 1.
  • Если приведенные выше параметры не применимы, может потребоваться настроить kdump и создать основной дамп для совместного использования с поддержкой дальнейшего анализа.

Более конкретные сценарии паники ядра

Распространенные сценарии паники ядра с определенными инструкциями по устранению неполадок и восстановлению:

Документ Сценарий
В виртуальной машине Azure Linux на базе ядра 3.10 возникает неполадка после обновления главного узла В этой статье описывается проблема, которая возникает при сбое виртуальной машины Linux Azure под управлением ядра 3.10 после обновления узла в Azure.
Восстановление виртуальной машины Linux Azure при проблемах с загрузкой ядра В этой статье приводятся решения проблемы, при которой виртуальная машина Linux не может перезапустить после применения изменений ядра.

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

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