Многие администраторы VMware ESXi сталкивались с такой проблемой, как фиолетовый экран смерти. Самое неприятное в этой проблеме, что у вас возникает недоверие к своей собственной инфраструктуре. В голове постоянно крутятся мысли о том, что такая же проблема может повториться и на другом сервере.
Что такое PSOD?
PSOD расшифровывается, как Purple Screen of Diagnostics, часто называемый Purple Screen of Death от более известного Blue Screen of Death, встречающегося в Microsoft Windows.
Это диагностический экран, отображаемый VMware ESXi, когда ядро обнаруживает фатальную ошибку, при которой оно либо не может безопасно восстановиться, либо не может продолжать работу.
Он показывает состояние памяти во время сбоя, а также дополнительные сведения, которые важны для устранения причины сбоя: версия и сборка ESXi, тип исключения, дамп регистра, обратную трассировку, время безотказной работы сервера, сообщения об ошибках и информацию о дампе ядра. (файл, созданный после ошибки, содержащий дополнительную диагностическую информацию).
Данный экран отображается в консоли сервера. Чтобы увидеть его, вам нужно будет либо находиться в центре обработки данных и подключить монитор, либо подключиться удаленно с помощью внеполосного управления сервером (iLO, iDRAC, IMM и т.д. в зависимости от вашего вендора).
Рисунок 1Почему появляется PSOD?
PSOD- этосбой в ядре. Все мы знаем, что ESXi не основан на UNIX, но механика сбоя соответствует определению UNIX. Ядро ESXi (vmkernel) запускает эту меру безопасности в ответ на события или ошибки, которые невозможно исправить, это будет означать, что продолжение работы может создать высокий риск для служб и виртуальных машин. Проще говоря: когда хосты ESXi чувствуют, что они повреждены, они совершают харакири и, истекая пурпурной кровью, пишут предсмертную записку с подробным описанием причин, по которым они это сделали!
Наиболее частые причины PSOD:
1. Аппаратные сбои, в основном связанные с RAM или CPU. Обычно они выдают ошибку MCE или NMI.
MCE исключение проверки компьютера, которое представляет собой механизм в ЦП для обнаружения и сообщения о проблемах с оборудованием. В кодах, отображаемых на фиолетовом экране, есть важные детали для определения основной причины проблемы.
NMI немаскируемое прерывание, то есть аппаратное прерывание, которое не может игнорироваться процессором. Поскольку NMI является очень важным сообщением об отказе HW, ответ по умолчанию, начиная с ESXi 5.0 и более поздних версий, должен запускать PSOD. Более ранние версии просто регистрировали ошибку и продолжали. Как и в случае с MCE, фиолетовый экран, вызванный NMI, предоставляетважные коды, которые имеют решающее значение для устранения неполадок.
2. Программные ошибки
неверное взаимодействие между компонентами ESXi SW (см.KB2105711)
условия гонки (см.KB2136430)
из ресурсов: память, динамическая область памяти, буфер (см.KB2034111,KB2150280)
бесконечный цикл + переполнение стека (см.KB2105522)
неверные или неподдерживаемые параметры конфигурации (см.KB2012125,KB2127997)
3. Некорректно функционирующие драйвера;ошибки в драйверах, которые пытаются получить доступ к некорректному индексу или несуществующему методу (см.KB2146526,KB2148123)
Какое влияние оказывает PSOD?
Когда возникает сбой, хост выходит из строя изавершает работу всех служб, работающих на нем, вместе со всеми размещенными виртуальными машинами. Виртуальные машины отключаются резко ине завершаютсвою работу корректно. Если хост является частью кластера и вы настроили HA, эти виртуальные машины будут запущены на других хостах в кластере. Помимо простоя и недоступности виртуальных машин во время их простоя, грязное завершение может повлиять на некоторые критически важные приложения, такие как серверы баз данных, очереди сообщений или задания резервного копирования.
Кроме того, все другие службы, предоставляемые хостом, будут прекращены, поэтому, если ваш хост является частью кластера VSAN, PSOD также повлияет на vSAN.
Что делать?
1. Проанализируйте сообщение на фиолетовом экране.
Одна из самых важных вещей, которые нужно сделать при появлении фиолетового экрана - это сделать снимок экрана. Если вы подключаетесь к консоли удаленно (IMM, iLO, iDRAC, ), будет легко сделать снимок экрана, если нет такой возможности, хотя сфотографируйте экран на телефон. На этом экране много полезной информации о причине сбоя.
Рисунок 22. Обратитесь в службу поддержки VMware.
Прежде чем приступить к дальнейшему исследованию и устранению неполадок, рекомендуется обратиться в службу поддержки VMware, если у вас есть контракт на поддержку. Параллельно с вашим расследованием они смогут помочь вам в проведении корневого анализа причин (RCA).
3. Перезагрузите затронутый хост ESXi.
Чтобы восстановить сервер, вам необходимо перезагрузить его. Я бы также посоветовал оставить его в режиме обслуживания, пока вы не выполните полный анализ RCA, пока не будет определена и исправлена ошибка. Если вы не можете позволить себе держать его в режиме обслуживания, по крайней мере, точно настройте свои правила DRS, чтобы на нем работали только второстепенные виртуальные машины, чтобы в случае возникновения другого PSOD влияние было минимальным.
4. Получите coredump
После загрузки сервера вы должны собрать дамп ядра -coredump. Coredump, также называемый vmkernel-zdump, представляет собой файл, содержащий журналы с более подробной информацией, чем та, что отображается на фиолетовом экране диагностики, и будет использоваться при дальнейшем устранении неполадок. Даже если причина сбоя может показаться очевидной из сообщения PSOD, которое вы проанализировали на шаге 1, рекомендуется подтвердить ее, просмотрев журналы из coredump.
В зависимости от вашей конфигурации у вас может быть дамп ядра в одной из следующих форм:
а. Во временномразделе
b. В виде файла.dumpв одном из хранилищ данных хоста
c. В виде файла.dumpна vCenter через службу netdump
Coredump становится особенно важным, если конфигурация хоста должна автоматически сбрасываться после PSOD , и в этом случае вы не увидите сообщение на экране. Вы можете скопировать файл дампа с хоста ESXi с помощью SCP, а затем открыть его с помощью текстового редактора (например, Notepad ++). Он будет вмещать содержимое памяти на момент сбоя, и первые его части будут содержать сообщения, которые вы видели на фиолетовом экране. Служба поддержки VMware может запросить весь файл, но у вас лишь будет возможность извлечь только журнал vmkernel, который более нагляден:
Рисунок 35. Расшифруйте ошибку.
Устранение неполадок и анализ причин позволяют почувствовать себя Шерлоком Холмсом. Самый важный симптом, с которого вам следует начать, - это сообщение об ошибке, создаваемое фиолетовым экраном.К счастью, количество выдаваемых сообщений об ошибках ограничено:
Exception Type 0 #DE: Divide Error
Exception Type 1 #DB: Debug Exception
Exception Type 2 NMI: Non-Maskable Interrupt
Exception Type 3 #BP: Breakpoint Exception
Exception Type 4 #OF: Overflow (INTO instruction)
Exception Type 5 #BR: Bounds check (BOUND
instruction)
Exception Type 6 #UD: Invalid Opcode
Exception Type 7 #NM: Coprocessor not available
Exception Type 8 #DF: Double Fault
Exception Type 10 #TS: Invalid TSS
Exception Type 11 #NP: Segment Not Present
Exception Type 12 #SS: Stack Segment Fault
Exception Type 13 #GP: General Protection Fault
Exception Type 14 #PF: Page Fault
Exception Type 16 #MF: Coprocessor error
Exception Type 17 #AC: Alignment Check
Exception Type 18 #MC: Machine Check Exception
Exception Type 19 #XF: SIMD Floating-Point
Exception
Exception Type 20-31: Reserved
Exception Type 32-255: User-defined (clock
scheduler)
Поскольку сбой в ядре обрабатывается процессором, для получения дополнительной информации об этих исключениях см. Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура иРуководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A.
Наиболее распространенные случаи описаны в отдельных статьях базы знаний VMware. Поэтому используйте эту таблицу в качестве индекса для ошибок PSOD:
Пример ошибки |
Подробная статья в базе знаний |
LINT1/NMI (motherboard nonmaskable interrupt), undiagnosed |
Использование аппаратных средств NMI для диагностики не отвечающих хостов (1014767) |
Panic requested by one or more 3rd party NMI handlers |
|
COS Error: Oops |
|
Lost Heartbeat |
Что такое фиолетовый диагностический экран Потерянное сердцебиение (1009525) |
ASSERT bora/vmkernel/main/pframe_int.h:527 |
Понимание фиолетовых диагностических экранов ASSERT и NOT_IMPLEMENTED (1019956) |
NOT_IMPLEMENTED /build/mts/release/bora-84374/bora/vmkernel/main/util.c:83 |
Понимание фиолетовых диагностических экранов ASSERT и NOT_IMPLEMENTED (1019956) |
Spin count exceeded (iplLock) possible deadlock |
Что такое фиолетовый диагностический экран Превышено количество отжимов (1020105) |
PCPU 1 locked up. Failed to ack TLB invalidate |
Что такое ошибка подтверждения TLB, аннулирующая фиолетовый диагностический экран (1020214) |
#GP Exception(13) in world 4130:helper13-0 @ 0x41803399e303 |
Общие сведения о событиях фиолетового экрана диагностики исключения 13 и исключения 14 (1020181) |
#PF Exception type 14 in world 136:helper0-0 @ 0x4a8e6e |
|
Machine Check Exception: Unable to continueHardware (Machine) Error |
Вывод исключения проверки машины декодирования (MCE) после ошибки фиолетового экрана (1005184) |
Hardware (Machine) Error |
|
PCPU: 1 hardware errors seen since boot (1 corrected by hardware) |
6. Проверьте журналы
Может случиться так, что причина не очень очевидна при просмотре фиолетового сообщения на экране или журнала дампа ядра, поэтому следующее место, где искать подсказки, - это журналы хоста, особенно во временном интервале, непосредственно предшествующем PSOD.Даже если вы чувствуете, что нашли причину, все же рекомендуется подтвердить ее, просмотрев журналы.
Если вы администрируете корпоративную среду, вероятно, у вас под рукой есть специализированное решение для управленияжурналами(например,VMware Log Insight или SolarWinds LEM), поэтому их будет легко просматривать, но если у вас нет управления журналами, вы можете легкоэкспортировать их.
Наиболее интересные файлы журналов для изучения:
Компоненты |
Место расположения |
Что это такое |
Системные сообщения |
/var/log/syslog.log |
Содержит все общие сообщения журнала и может использоваться для устранения неполадок. |
VMkernel |
/var/log/vmkernel.log |
Записывает действия, связанные с виртуальными машинами и ESXi.Большинство записей, относящихся к PSOD, будет в этом журнале, поэтому обратите на него особое внимание. |
Журнал агента хоста ESXi |
/var/log/hostd.log |
Содержит информацию об агенте, который управляет и настраивает хост ESXi и о его виртуальных машинах. |
Предупреждения VMkernel |
/var/log/vmkwarning.log |
Записывает действия, связанные с виртуальными машинами.Следит за записями журнала, связанными с истощение динамической области памяти (Heap WorkHeap). |
Журнал агента vCenter |
/var/log/vpxa.log |
Содержит информацию об агенте, который обменивается данными с vCenter, поэтому вы можете использовать его для обнаружения задач, запускаемых vCenter и могущих вызвать PSOD. |
Журнал shell |
/var/log/shell.log |
Содержит запись всех набранных команд, так что вы можете соотнести PSOD с выполненной командой. |