Многие администраторы VMware ESXi сталкивались с такой проблемой, как «фиолетовый экран смерти». Самое неприятное в этой проблеме, что у вас возникает недоверие к своей собственной инфраструктуре. В голове постоянно крутятся мысли о том, что такая же проблема может повториться и на другом сервере. PSOD расшифровывается, как Purple Screen of Diagnostics, часто называемый  Purple Screen of Death от более известного  Blue Screen of Death,  встречающегося в Microsoft Windows.  Это диагностический экран, отображаемый VMware ESXi, когда ядро ​​обнаруживает фатальную ошибку, при которой оно либо не может безопасно восстановиться, либо не может продолжать работу.  Он показывает состояние памяти во время сбоя, а также дополнительные сведения, которые важны для устранения причины сбоя: версия и сборка ESXi, тип исключения, дамп регистра, обратную трассировку, время безотказной работы сервера, сообщения об ошибках и информацию о дампе ядра. (файл, созданный после ошибки, содержащий дополнительную диагностическую информацию).  Данный экран отображается в консоли сервера. Чтобы увидеть его, вам нужно будет либо находиться в центре обработки данных и подключить монитор, либо подключиться удаленно с помощью внеполосного управления сервером (iLO, iDRAC, IMM и т.д. в зависимости от вашего вендора).    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) Когда возникает сбой, хост выходит из строя и завершает работу всех служб, работающих на нем, вместе со всеми размещенными виртуальными машинами. Виртуальные машины отключаются резко и не завершают свою работу корректно. Если хост является частью кластера и вы настроили HA, эти виртуальные машины будут запущены на других хостах в кластере. Помимо простоя и недоступности виртуальных машин во время их простоя, «грязное» завершение может повлиять на некоторые критически важные приложения, такие как серверы баз данных, очереди сообщений или задания резервного копирования. Кроме того, все другие службы, предоставляемые хостом, будут прекращены, поэтому, если ваш хост является частью кластера VSAN, PSOD также повлияет на vSAN. 1. Проанализируйте сообщение на фиолетовом экране. Одна из самых важных вещей, которые нужно сделать при появлении фиолетового экрана - это  сделать снимок экрана. Если вы подключаетесь к консоли удаленно (IMM, iLO, iDRAC, …), будет легко сделать снимок экрана, если нет такой возможности, хотя сфотографируйте экран на телефон. На этом экране много полезной информации о причине сбоя.  2. Обратитесь в службу поддержки 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, который более нагляден:  5. Расшифруйте ошибку. Устранение неполадок и анализ причин позволяют почувствовать себя Шерлоком Холмсом.  Самый важный симптом, с которого вам следует начать, - это сообщение об ошибке, создаваемое фиолетовым экраном. К счастью, количество выдаваемых сообщений об ошибках ограничено:  Exception Type 0 #DE: Divide ErrorException Type 1 #DB: Debug ExceptionException Type 2 NMI: Non-Maskable InterruptException Type 3 #BP: Breakpoint ExceptionException Type 4 #OF: Overflow (INTO instruction)Exception Type 5 #BR: Bounds check (BOUND instruction)Exception Type 6 #UD: Invalid OpcodeException Type 7 #NM: Coprocessor not availableException Type 8 #DF: Double FaultException Type 10 #TS: Invalid TSSException Type 11 #NP: Segment Not PresentException Type 12 #SS: Stack Segment FaultException Type 13 #GP: General Protection FaultException Type 14 #PF: Page FaultException Type 16 #MF: Coprocessor errorException Type 17 #AC: Alignment CheckException Type 18 #MC: Machine Check ExceptionException Type 19 #XF: SIMD Floating-Point ExceptionException Type 20-31: ReservedException 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 Что такое фиолетовый диагностический экран «Упс» (1006802) 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 с выполненной командой.    Специалист по информационной безопасности