溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ESXI主機(jī)紫屏分析方法是什么

發(fā)布時(shí)間:2022-01-07 10:54:04 來(lái)源:億速云 閱讀:526 作者:柒染 欄目:云計(jì)算

這篇文章給大家介紹ESXI主機(jī)紫屏分析方法是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

一:概述

相信VMware的工程師對(duì)紫屏不會(huì)陌生,紫屏死機(jī)(PSoDs, Purple Screen of Death)是發(fā)生在ESXI上的一種故障,類(lèi)似于微軟Windows操作系統(tǒng)的藍(lán)屏。紫屏情況通常是由于硬件和軟件故障導(dǎo)致的,比如軟件bug、CPU、內(nèi)存泄露等原因。當(dāng)發(fā)生紫屏故障時(shí)整個(gè)ESXI主機(jī)會(huì)突然崩潰,當(dāng)紫屏故障發(fā)生后管理員能做的只有記錄紫屏信息以及重啟主機(jī),也就是說(shuō)ESXI主機(jī)上面的虛擬機(jī)將會(huì)受到影響;如果有HA機(jī)制的話則會(huì)遷移到其他可用的ESXI主機(jī)。

當(dāng)發(fā)現(xiàn)ESXI主機(jī)出現(xiàn)紫屏現(xiàn)狀時(shí)第一時(shí)間應(yīng)該將紫屏的信息記錄下來(lái),簡(jiǎn)單的辦法就是將當(dāng)前的屏幕信息截圖或者拍照下來(lái),因?yàn)槔锩姘ê芏嘀匾男畔?;在里面可以顯示和了解到ESXI版本和build號(hào)、異常類(lèi)型、寄存器轉(zhuǎn)儲(chǔ)(register dump)、崩潰時(shí)每個(gè)CPU正在跑什么、回溯追蹤(back-trace)、服務(wù)器運(yùn)行時(shí)間、錯(cuò)誤日志、內(nèi)存硬件信息等。當(dāng)將ESXI主機(jī)重啟后,還可以通過(guò)ESXI主機(jī)的/root或者//var/core/獲取vmkernel-zdump文件,當(dāng)發(fā)生紫屏后會(huì)有一個(gè)以vmkernel-zdump開(kāi)頭(命名)的文件,可以將該文件提交給VMware的技術(shù)支持幫助進(jìn)行故障分析;同時(shí)也可以額借助通過(guò)vmkdump工具提取 VMkernel日志信息、尋找與PSoDs有關(guān)的線索,從而判斷PSoDs發(fā)生的原因。關(guān)于提取和識(shí)別vmkernel-zdump查閱官方KB:https://kb.vmware.com/s/article/1006796?lang=zh_CN

ESXI主機(jī)紫屏分析方法是什么

二:理解紫屏信息

通過(guò)紫屏后屏幕信息都可以獲取到很多關(guān)鍵信息,管理員可以快速的借助這些信息進(jìn)行故障定位和排查。錯(cuò)誤會(huì)顯示在紫色診斷屏幕中。紫色診斷屏幕大致如下所示:

ESXI主機(jī)紫屏分析方法是什么

通過(guò)以上內(nèi)容可以查看到幾個(gè)關(guān)鍵信息

· 產(chǎn)品和內(nèi)部版本
VMware ESX Server [Releasebuild-3620759
紫色診斷屏幕中的此部分表示出錯(cuò)的產(chǎn)品和內(nèi)部版本。在本示例中,產(chǎn)品是ESXI,版本號(hào)是3620759,也就是ESXI 6.0 U2

· 錯(cuò)誤消息
PCPU 1 locked up.Failed to ack TLB invalidate
紫色診斷屏幕的此部分表示報(bào)告的錯(cuò)誤消息。只能報(bào)告有限數(shù)量的錯(cuò)誤消息。本文稍后會(huì)討論這些錯(cuò)誤消息。

· CPU 寄存器
frame=0x3a37d98 ip=0x625e94 cr2=0x0 cr3=0x40c66000 cr4=0x16c
es=0xffffffff ds=0xffffffff fs=0xffffffff gs=0xffffffff
eax=0xffffffff ebx=0xffffffff ecx=0xffffffff edx=0xffffffff
ebp=0x3a37ef4 esi=0xffffffff edi=0xffffffff err=-1 eflags=0xffffffff
出錯(cuò)時(shí),這些值存儲(chǔ)在物理 CPU 寄存器中。這些寄存器中的信息千差萬(wàn)別,具體取決于出現(xiàn)的 VMkernel 錯(cuò)誤

· 物理 CPU
*0:1037/helper1-4 1:1107/vmm0:Fagi 2:1121/vmware-vm 3:1122/mks:Franc
紫色診斷屏幕的此部分表示 VMkernel 出錯(cuò)期間運(yùn)行指令的物理 CPU。在本示例中,0 旁邊的 * 表示發(fā)生故障時(shí)物理 CPU 0 正在運(yùn)行操作。新版本 ESX 不再使用 *,而是使用前綴字母 CPU。例如,如果新版本 VMware ESX 同樣出現(xiàn)上述錯(cuò)誤,則同一行會(huì)顯示為:
CPU0:1037/helper1-4 cpu1:1107/vmm0:Fagi cpu2:1121/vmware-vm cpu3:1122/mks:Franc。
紫色診斷屏幕的此部分還描述了出錯(cuò)時(shí) CPU 上運(yùn)行的環(huán)境(進(jìn)程)。在上述示例中,用戶環(huán)境正在運(yùn)行 helper1-4。
注意:進(jìn)程名稱(chēng)可能已截?cái)唷?/p>

· 堆棧跟蹤
0x3a37ef4:[0x625e94]Panic+0x17 stack: 0x833ab4, 0x3a37f10, 0x3a37f48
0x3a37f04:[0x625e94]Panic+0x17 stack: 0x833ab4, 0x1, 0x14a03a0
0x3a37f48:[0x64bfa4]TLBDoInvalidate+0x38f stack: 0x3a37f54, 0x40, 0x2
0x3a37f70:[0x66da4d]XMapForceFlush+0x64 stack: 0x0, 0x4d3a, 0x0
0x3a37fac:[0x652b8b]helpFunc+0x2d2 stack: 0x1, 0x14a4580, 0x0
0x3a37ffc:[0x750902]CpuSched_StartWorld+0x109 stack: 0x0, 0x0, 0x0
0x3a38000:[0x0]blk_dev+0xfd76461f stack: 0x0, 0x0, 0x0
堆棧表示出錯(cuò)時(shí) VMkernel 正在執(zhí)行的操作。在本示例中,VMkernel 正在嘗試清除內(nèi)存頁(yè)表 (TLB)。此信息是一個(gè)重要工具,有助于通過(guò)評(píng)估出錯(cuò)時(shí)內(nèi)核所執(zhí)行的操作來(lái)診斷紫色屏幕錯(cuò)誤。

· 正常運(yùn)行時(shí)間
VMK uptime: 7:05:43:45.014 TSC: 1751259712918392
此部分表示自上次啟動(dòng)以來(lái)服務(wù)器運(yùn)行的時(shí)間。在本示例中,ESXI 主機(jī)已運(yùn)行了 7 天 5 小時(shí) 43 分 45.014 秒。TSC 值是服務(wù)器啟動(dòng)之后經(jīng)過(guò)的 CPU 時(shí)鐘頻率循環(huán)次數(shù)。

· 核心轉(zhuǎn)儲(chǔ)
Starting coredump to disk Starting coredump to disk Dumping using slot 1 of 1...using slot 1 of 1... log
紫色診斷屏幕的此部分表示正復(fù)制到 vmkcore 分區(qū)的 VMkernel 內(nèi)存內(nèi)容。

三:通過(guò)錯(cuò)誤信息定位故障

上面介紹了如何查看和理解紫屏的屏幕信息,其中比較關(guān)鍵的就是關(guān)于錯(cuò)誤信息的字段,接下來(lái)我們可以通過(guò)紫色屏幕生成的 VMkernel 錯(cuò)誤消息可用于確定問(wèn)題原因。不過(guò),產(chǎn)生的錯(cuò)誤消息數(shù)是有限的。以下是已知的 VMkernel 錯(cuò)誤消息列表。

l 類(lèi)型:控制臺(tái)警告

錯(cuò)誤示例:COS Error: Oops

描述:ESX 主機(jī)出現(xiàn)故障并在出現(xiàn)服務(wù)控制臺(tái)警告時(shí)顯示紫色屏幕。與大多數(shù)紫色屏幕錯(cuò)誤不同的是,該錯(cuò)誤并非由 VMkernel 觸發(fā)。相反,它由服務(wù)控制臺(tái)觸發(fā),并發(fā)生在 Linux 級(jí)別。這些紫色屏幕錯(cuò)誤包含來(lái)自 Linux 內(nèi)核的其他信息。有關(guān)控制臺(tái)警告的詳細(xì)信息,請(qǐng)參見(jiàn) Understanding an "Oops" purple diagnostic screen (1006802)。

l 類(lèi)型:檢測(cè)信號(hào)丟失

錯(cuò)誤示例:Lost Heartbeat

描述:ESX VMkernel 和服務(wù)控制臺(tái) Linux 內(nèi)核同時(shí)在 ESX 上運(yùn)行。服務(wù)控制臺(tái) Linux 內(nèi)核會(huì)運(yùn)行一個(gè)稱(chēng)為 vmnixhbd 的進(jìn)程,只要 VMkernel 能夠分配和釋放內(nèi)存頁(yè),該進(jìn)程便會(huì)向 VMkernel 發(fā)送檢測(cè)信號(hào)。如果在 30 分鐘超時(shí)時(shí)間之前未收到檢測(cè)信號(hào),VMkernel 會(huì)觸發(fā) COS 嚴(yán)重錯(cuò)誤以及表明檢測(cè)信號(hào)丟失的紫色診斷屏幕。有關(guān)檢測(cè)信號(hào)丟失的詳細(xì)信息,請(qǐng)參見(jiàn) Understanding a "Lost Heartbeat" purple diagnostic screen (1009525)。

l 類(lèi)型:斷言

錯(cuò)誤示例:ASSERT bora/vmkernel/main/pframe_int.h:527

描述:斷言錯(cuò)誤屬于軟件錯(cuò)誤,因?yàn)樗鼈兌寂c程序所基于的假設(shè)條件有關(guān)。此類(lèi)型的紫色屏幕錯(cuò)誤主要是由軟件錯(cuò)誤導(dǎo)致的。有關(guān)斷言錯(cuò)誤消息的詳細(xì)信息,請(qǐng)參見(jiàn) Understanding ASSERT and NOT_IMPLEMENTED purple diagnostic screens (1019956)。

l 類(lèi)型:未執(zhí)行

錯(cuò)誤示例:

NOT_IMPLEMENTED /build/mts/release/bora-84374/bora/vmkernel/main/util.c:83

描述:代碼遇到超出設(shè)計(jì)處理范圍的情形時(shí)會(huì)出現(xiàn)未執(zhí)行錯(cuò)誤消息。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) Understanding ASSERT and NOT_IMPLEMENTED purple diagnostic screens (1019956)。

l 類(lèi)型:轉(zhuǎn)數(shù)已超出/可能出現(xiàn)死鎖

錯(cuò)誤示例:Spin count exceeded (iplLock) - possible deadlock

描述:線程嘗試在代碼關(guān)鍵部分執(zhí)行時(shí),VMware ESX 主機(jī)可能在紫色診斷屏幕上報(bào)告轉(zhuǎn)數(shù)已超出且可能出現(xiàn)死鎖。由于線程正嘗試進(jìn)入關(guān)鍵部分,因此,它需要執(zhí)行自旋鎖操作,以便先輪詢(xún)互斥鎖,然后再執(zhí)行代碼。線程在執(zhí)行自旋鎖操作期間會(huì)繼續(xù)輪詢(xún)互斥鎖,但是,互斥鎖輪詢(xún)次數(shù)存在一定限制。有關(guān)轉(zhuǎn)數(shù)已超出錯(cuò)誤的詳細(xì)信息,請(qǐng)參見(jiàn) Understanding a "Spin count exceeded" purple diagnostic screen (1020105)。

l 類(lèi)型:無(wú)法確認(rèn) TLB 是否失效

錯(cuò)誤示例:PCPU 1 locked up.Failed to ack TLB invalidate.

描述:物理 CPU 在嘗試清除內(nèi)存頁(yè)表時(shí)出現(xiàn)故障。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) Understanding a Failed to ack TLB invalidate purple diagnostic screen (1020214)。

紫色診斷屏幕還會(huì)以異常的形式出現(xiàn)。異常處理程序是一種計(jì)算機(jī)硬件機(jī)制,旨在處理正常執(zhí)行流(除零、頁(yè)面錯(cuò)誤等)發(fā)生變動(dòng)的某些情形。該處理程序并無(wú)跟蹤機(jī)制,因此您需要通過(guò)日志記錄確定處理程序是否出現(xiàn)問(wèn)題(或通過(guò)單步調(diào)試)。以下是常見(jiàn)異常列表:

l 類(lèi)型:異常 13(一般保護(hù)錯(cuò)誤)

錯(cuò)誤示例:#GP Exception(13) in world 4130:helper13-0 @ 0x41803399e303

描述:在以下任一情況下都會(huì)出現(xiàn)一般保護(hù)錯(cuò)誤(異常 13):正在請(qǐng)求的頁(yè)面不屬于請(qǐng)求該頁(yè)的程序(未映射到程序內(nèi)存中),或者程序無(wú)權(quán)在頁(yè)面上執(zhí)行讀取或?qū)懭氩僮鳌S嘘P(guān)異常 13 或頁(yè)面錯(cuò)誤的詳細(xì)信息,請(qǐng)參見(jiàn) Understanding Exception 13 and Exception 14 purple diagnostic screen events (1020181)。

l 類(lèi)型:異常 14(頁(yè)面錯(cuò)誤)

錯(cuò)誤示例:#PF Exception type 14 in world 136:helper0-0 @ 0x4a8e6e

描述:正在請(qǐng)求的頁(yè)面未成功加載到內(nèi)存時(shí)出現(xiàn)頁(yè)面錯(cuò)誤(異常 14)。有關(guān)異常 14 或頁(yè)面錯(cuò)誤的詳細(xì)信息,請(qǐng)參見(jiàn) Understanding Exception 13 and Exception 14 purple diagnostic screen events (1020181)。

l 類(lèi)型:異常 18(計(jì)算機(jī)檢查異常)

錯(cuò)誤示例:Machine Check Exception: Unable to continue

錯(cuò)誤示例:Hardware (Machine) Error

描述:計(jì)算機(jī)檢查異常 (MCE) 由硬件生成并通過(guò)主機(jī)進(jìn)行報(bào)告。出現(xiàn) MCE 事件時(shí),請(qǐng)咨詢(xún)您的硬件供應(yīng)商。通過(guò)評(píng)估顯示的信息,可以確定報(bào)告錯(cuò)誤的單個(gè)組件。有關(guān) MCE 的詳細(xì)信息,請(qǐng)參見(jiàn) Decoding Machine Check Exception (MCE) output after a purple screen error (1005184)。

四:分析同一主機(jī)的多個(gè)錯(cuò)誤

同一ESXI主機(jī)上出可能現(xiàn)多個(gè)紫色診斷屏幕時(shí),可以使用多個(gè)紫色診斷屏幕示例確定問(wèn)題與硬件還是與軟件有關(guān)。為此,請(qǐng)確定紫色診斷屏幕的以下部分是否存在一些模式:

l 錯(cuò)誤消息和堆棧跟蹤:

如果多個(gè) vmkernel 錯(cuò)誤中的錯(cuò)誤消息和堆棧變化很大,則表明同一錯(cuò)誤并不總是軟件造成的。盡管不是十分確鑿,但這很可能意味著硬件問(wèn)題。

如果多個(gè) vmkernel 中的錯(cuò)誤消息和堆棧始終相同,則表明同一錯(cuò)誤都是由軟件造成的。盡管不是十分確鑿,但這很可能意味著軟件問(wèn)題。有關(guān)出現(xiàn)的錯(cuò)誤消息的詳細(xì)信息,請(qǐng)參見(jiàn)上述特定錯(cuò)誤消息部分。

l 物理 CPU:

如果多個(gè) vmkernel 錯(cuò)誤中的物理 CPU 值始終相同,則表明軟件總是在同一個(gè)物理 CPU 上出現(xiàn)錯(cuò)誤。盡管不是十分確鑿,但這很可能意味著 CPU 問(wèn)題。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) KB1003560

l 環(huán)境:

如果多個(gè) vmkernel 錯(cuò)誤中的環(huán)境值始終相同,則表明 vmkernel 從同一環(huán)境接收指令時(shí)出現(xiàn)錯(cuò)誤。盡管不是十分確鑿,但這很可能意味著發(fā)送指令的環(huán)境可能觸發(fā)了 VMkernel 錯(cuò)誤。

五:異常列表參考

異常類(lèi)型 0 #DE:除法錯(cuò)誤(Divide Error)

異常類(lèi)型 1 #DB:調(diào)試異常

異常類(lèi)型 2 NMI:不可屏蔽中斷

異常類(lèi)型 3 #BP:斷點(diǎn)異常

異常類(lèi)型 4 #OF:溢出(INTO 指令)

異常類(lèi)型 5 #BR:界限檢查(BOUND 指令)

異常類(lèi)型 6 #UD:Opcode 無(wú)效

異常類(lèi)型 7 #NM:協(xié)處理器不可用

異常類(lèi)型 8 #DF:雙重故障

異常類(lèi)型 10 #TS:TSS 無(wú)效

異常類(lèi)型 11 #NP:分段不存在

異常類(lèi)型 12 #SS:堆棧分段錯(cuò)誤

異常類(lèi)型 13 #GP:一般保護(hù)錯(cuò)誤

異常類(lèi)型 14 #PF:頁(yè)面錯(cuò)誤

異常類(lèi)型16 #MF:協(xié)處理器錯(cuò)誤

異常類(lèi)型 17 #AC:對(duì)齊檢查

異常類(lèi)型 18 #MC:計(jì)算機(jī)檢查異常

異常類(lèi)型 19 #XF:SIMD 浮點(diǎn)異常

異常類(lèi)型 20-31:預(yù)留

異常類(lèi)型 32-255:用戶定義(時(shí)鐘調(diào)度程序)

六:示例

在實(shí)際環(huán)境中遇到過(guò)以下提示的紫屏情況,通過(guò)屏幕中的信息可以獲知以下幾點(diǎn)信息,故障的ESXI主機(jī)是esxi 6.0 U2(build 3620759),該主機(jī)自上次開(kāi)機(jī)來(lái)正常運(yùn)行了35:18:32:21也就是35天18小時(shí)32分。

ESXI主機(jī)紫屏分析方法是什么

同時(shí)關(guān)于該紫屏的關(guān)鍵代碼信息是PF Exception 14 in world 33168:memMapKernal 根據(jù)該關(guān)鍵代碼信息可以在VMware的KB庫(kù)中查到以下

https://kb.vmware.com/s/article/1020181?lang=zh_CN#q=esxi%E7%B4%AB%E5%B1%8F

https://kb.vmware.com/s/article/2071752?lang=zh_CN#q=esxi%E7%B4%AB%E5%B1%8F

根據(jù)KB介紹,信息可能如下:

如果要請(qǐng)求的頁(yè)面未成功載入內(nèi)存,則會(huì)出現(xiàn)頁(yè)面錯(cuò)誤(異常 14)。存在正常狀態(tài)和非正常狀態(tài)兩種頁(yè)面錯(cuò)誤:

正常狀態(tài)頁(yè)面錯(cuò)誤會(huì)導(dǎo)致頁(yè)面從交換內(nèi)存載入物理內(nèi)存。這樣便允許程序在數(shù)據(jù)正確載入物理內(nèi)存后繼續(xù)執(zhí)行。

如果頁(yè)面未載入內(nèi)存,并且操作系統(tǒng)無(wú)法將頁(yè)面從交換內(nèi)存載入物理內(nèi)存,則會(huì)出現(xiàn)非正常狀態(tài)頁(yè)面錯(cuò)誤。

再配合后面的MemMapKernal字段大概可以判斷本次的紫屏想象是由ESXI主機(jī)中的內(nèi)存異常導(dǎo)致的,可能是內(nèi)存載入或內(nèi)存溢出,也有可能是在本示例中的Horizon View中虛擬內(nèi)存共享機(jī)制導(dǎo)致的系統(tǒng)紫屏故障。

關(guān)于ESXI主機(jī)紫屏分析方法是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI