Was ist der VMkernel?
Der VMkernel ist der Betriebssystemkern von ESX/ESXi. Der Kernel ist für die Ressourcenplanung und die Geräte-E/A zuständig. Die Geräte-E/A wird vom VMware-Netzwerk und den Speicherstapeln verarbeitet, was als Ebene zwischen dem virtuellen Dateisystem, den Netzwerkgeräten und den Gerätetreibern, mit denen physische Geräte gesteuert werden, dient.
Interpretieren des violetten Diagnosebildschirms
Wenn beim VMkernel ein Fehler auftritt, wird dieser in einem violetten Diagnosebildschirm angezeigt. Der violette Diagnosebildschirm sieht so oder ähnlich aus:
VMware ESX Server [Releasebuild-98103
PCPU 1 locked up. Failed to ack TLB invalidate.
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
*0:1037/helper1-4 1:1107/vmm0:Fagi 2:1121/vmware-vm 3:1122/mks:Franc
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
VMK uptime: 7:05:43:45.014 TSC: 1751259712918392
Starting coredump to disk Starting coredump to disk Dumping using slot 1 of 1...using slot 1 of 1... log
Im Folgenden finden Sie eine Aufschlüsselung der einzelnen Abschnitte des obigen violetten Diagnosebildschirms:
- Produkt und Build:
VMware ESX Server [Releasebuild-98103]
In diesem Abschnitt des violetten Diagnosebildschirms werden das Produkt und der Build, bei dem der Fehler aufgetreten ist, identifiziert. In diesem Beispiel handelt es sich um das Produkt VMware ESX Server und den Build 98103.
- Fehlermeldung:
PCPU 1 locked up. Failed to ack TLB invalidate
In diesem Abschnitt des violetten Diagnosebildschirms wird die Fehlermeldung identifiziert. Es gibt nur eine begrenzte Anzahl von möglichen Fehlermeldungen. Diese Fehlermeldungen werden in diesem Artikel behandelt.
- CPU-Register:
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
Dies sind die Werte, die beim Auftreten des Fehlers in den physischen CPU-Registern vorhanden waren. Die Informationen in diesen Registern können zwischen VMkernel-Fehlern erheblich variieren. Diese Register können nur intern beim Debuggen eines Core-Dumps des VMkernel-Fehlers verwendet werden. Weitere Informationen zu diesen Registern finden Sie unter http://www.intel.com/products/processor/manuals/ für Intel und http://support.amd.com/us/psearch/Pages/psearch.aspx für AMD. Suchen Sie auf der AMD-Website nach dem Handbuch für Architekturprogrammierer für Ihren speziellen Prozessortyp.
Hinweis: Die obigen Links waren am 28. März 2013 korrekt. Sollte ein Link fehlerhaft sein, melden Sie uns den betreffenden Artikel, damit der Artikel bei Bedarf durch einen Mitarbeiter von VMware aktualisiert werden kann.
- Physische CPU:
*0:1037/helper1-4 1:1107/vmm0:Fagi 2:1121/vmware-vm 3:1122/mks:Franc
In diesem Abschnitt des violetten Diagnosebildschirms wird die physische CPU identifiziert, die beim Auftreten des VMkernel-Fehlers Anweisungen ausgeführt hat. In diesem Beispiel bedeutet * neben der „0“, dass die physische CPU 0 beim Auftreten des Fehlers einen Vorgang ausgeführt hat. In neueren ESX-Versionen wird anstelle von * die Zeichenfolge „CPU“ vorangestellt. Wenn beispielsweise der obige Fehler in neueren Versionen von VMware ESX auftreten würde, würde folgende Zeile angezeigt werden:
CPU0:1037/helper1-4 cpu1:1107/vmm0:Fagi cpu2:1121/vmware-vm cpu3:1122/mks:Franc.
In diesem Abschnitt des violetten Diagnosebildschirms wird auch die World (Prozess) beschrieben, die beim Auftreten des Fehlers in der CPU ausgeführt wurde. Im obigen Beispiel wurde die Userworld „helper1-4“ ausgeführt.
Hinweis: Der Name des Prozesses ist möglicherweise abgeschnitten.
- Stack-Trace:
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
Der Stack beschreibt, welche Aktion vom VMkernel beim Auftreten des Fehlers ausgeführt wurde. In diesem Beispiel hat er versucht, Arbeitsspeicherseitentabellen (TLB) zu löschen. Diese Informationen sind ein wichtiges Hilfsmittel bei der Diagnose von Fehlermeldungen mit einem violetten Bildschirm, indem die Aktionen des Kernels zum Zeitpunkt des Fehlers ausgewertet werden.
- Betriebszeit:
VMK uptime: 7:05:43:45.014 TSC: 1751259712918392
In diesem Abschnitt wird angegeben, wie lange ein Server seit dem letzten Start läuft. In diesem Beispiel wurde der ESX-Host 7 Tage, 5 Stunden, 43 Minuten und 45,014 Sekunden ausgeführt. Der TSC-Wert ist die Anzahl der CPU-Taktzyklen, die seit dem Start des Servers verstrichen sind.
- Core-Dump:
Starting coredump to disk Starting coredump to disk Dumping using slot 1 of 1...using slot 1 of 1... log
In diesem Abschnitt des violetten Bildschirms wird darauf hingewiesen, dass der Inhalt des VMkernel-Arbeitsspeichers in die vmkcore-Partition kopiert wird.
Fehlerbehebung eines VMkernel-Fehlers mithilfe der Fehlermeldung des violetten Diagnosebildschirms
Mithilfe der vom violetten Bildschirm generierten VMkernel-Fehlermeldung kann die Ursache des Problems identifiziert werden. Es kann nur eine begrenzte Anzahl von Fehlermeldungen generiert werden. Im Folgenden finden Sie eine Aufstellung bekannter VMkernel-Fehlermeldungen.
- Typ: Konsolen-Oops
Beispielfehler: COS Error: Oops
Beschreibung: Bei einem ESX-Host tritt ein Fehler auf und ein violetter Bildschirm wird angezeigt, wenn ein Servicekonsolen-Oops vorliegt. Im Gegensatz zu den meisten Fehlermeldungen mit violettem Bildschirm wird dieser Fehler nicht vom VMkernel ausgelöst. Vielmehr wird er durch die Servicekonsole ausgelöst und tritt auf der Linux-Ebene auf. Diese Fehlermeldungen mit violettem Bildschirm enthalten zusätzliche Informationen des Linux-Kernels. Weitere Informationen zu Konsolen-Oops finden Sie unter Understanding an "Oops" purple diagnostic screen (1006802).
- Typ: Taktsignalfehler
Beispielfehler: Lost Heartbeat
Beschreibung: ESX-VMkernel und der Linux-Kernel der Servicekonsole werden gleichzeitig in ESX ausgeführt. Der Linux-Kernel der Servicekonsole führt den Prozess vmnixhbd aus, der den VMkernel so lange taktet wie eine Arbeitsspeicherseite zugeteilt und freigegeben werden kann. Wenn innerhalb eines Zeitüberschreitungsintervalls von 30 Minuten keine Taktsignale empfangen werden, löst der VMkernel einen COS Panic-Fehler und einen violetten Diagnosebildschirm mit dem Hinweis auf einen Taktsignalfehler aus. Weitere Informationen zu Taktsignalfehlern finden Sie unter Understanding a "Lost Heartbeat" purple diagnostic screen (1009525).
- Typ: Assertion
Beispielfehler: ASSERT bora/vmkernel/main/pframe_int.h:527
Beschreibung: Assertionsfehler sind Softwarefehler, da sie in Beziehung zu Annahmen stehen, auf denen das Programm basiert. Dieser Fehlermeldungstyp mit violettem Bildschirm wird in erster Linie durch Softwareprobleme verursacht. Weitere Informationen zur Assertionsfehlermeldung finden Sie unter Understanding ASSERT and NOT_IMPLEMENTED purple diagnostic screens (1019956).
- Typ: Nicht implementiert
Beispielfehler: NOT_IMPLEMENTED /build/mts/release/bora-84374/bora/vmkernel/main/util.c:83
Beschreibung: Eine „Nicht implementiert“-Fehlermeldung tritt in einer Situation auf, für die der Code nicht ausgelegt ist. Weitere Informationen finden Sie unter Understanding ASSERT and NOT_IMPLEMENTED purple diagnostic screens (1019956).
- Typ: Spin-Anzahl überschritten/möglicher Deadlock
Beispielfehler: Spin count exceeded (iplLock) - possible deadlock
Beschreibung: Ein VMware ESX-Host meldet möglicherweise in einem violetten Diagnosebildschirm eine Überschreitung der Spin-Anzahl und einen möglichen Deadlock, wenn versucht wird, einen Thread im kritischen Abschnitt des Codes auszuführen. Da versucht wurde, den kritischen Abschnitt aufzurufen, musste der Thread eine Sperre von einem Mutex anfordern, bevor der Code mithilfe eines Spinlock-Vorgangs ausgeführt wird. Der Thread setzt die Anfrage beim Mutex während des Spinlock-Vorgangs fort, aber es gibt einen Grenzwert für die Anzahl der Anfragen beim Mutex. Weitere Informationen zu Fehlermeldungen wegen der Überschreitung der Spin-Anzahl finden Sie unter Understanding a "Spin count exceeded" purple diagnostic screen (1020105).
- Typ: Fehler beim Bestätigen des Löschens der TLB.
Beispielfehler: PCPU 1 locked up. Failed to ack TLB invalidate.
Beschreibung: Physische CPUs schlagen fehl, wenn versucht wird, Arbeitsspeicherseitentabellen zu löschen. Weitere Informationen finden Sie unter Understanding a Failed to ack TLB invalidate purple diagnostic screen (1020214).
Ein violetter Bildschirm ist auch in Form eines Ausnahmefehlers möglich. Ein Ausnahme-Handler ist ein Computerhardwaremechanismus für die Behandlung einer Bedingung, die den normalen Ausführungsablauf ändert (Division durch Null, Seitenfehler usw.). Es gibt keine Ablaufverfolgung durch Handler, weshalb Sie die Protokollierung benötigen, um festzustellen, ob der Handler fehlgeschlagen ist (oder Einzelschritt-Debugging). Es folgt eine Aufstellung häufiger Ausnahmefehler:
- Typ: Ausnahme 13 (Allgemeine Schutzverletzung)
Beispielfehler: #GP Exception(13) in world 4130:helper13-0 @ 0x41803399e303
Beschreibung: Eine allgemeine Schutzverletzung (Ausnahme 13) tritt in folgenden Situationen auf: Die angeforderte Seite gehört nicht zum anfordernden Programm (und ist nicht im Arbeitsspeicher des Programms zugeordnet) oder das Programm verfügt nicht über die Rechte zum Ausführen eines Lese- oder Schreibvorgangs auf der Seite. Weitere Informationen zur Ausnahme 13 oder zum Seitenfehler finden Sie unter Understanding Exception 13 and Exception 14 purple diagnostic screen events (1020181).
- Typ: Ausnahme 14 (Seitenfehler)
Beispielfehler: #PF Exception type 14 in world 136:helper0-0 @ 0x4a8e6e
Beschreibung: Ein Seitenfehler (Ausnahme 14) tritt auf, wenn die angeforderte Seite nicht erfolgreich in den Arbeitsspeicher geladen wurde. Weitere Informationen zur Ausnahme 14 oder zum Seitenfehler finden Sie unter Understanding Exception 13 and Exception 14 purple diagnostic screen events (1020181).
- Typ: Ausnahme 18 (Maschinenprüfausnahme)
Beispielfehler: Machine Check Exception: Unable to continue
Beispielfehler: Hardware (Machine) Error
Beschreibung: Eine Maschinenprüfausnahme (Machine Check Exception, (MCE) wird von der Hardware generiert und vom Host gemeldet. Wenden Sie sich bei einem MCE-Fehler an Ihren Hardwareanbieter. Durch die Auswertung der angezeigten Informationen kann die Komponente ausfindig gemacht werden, die den Fehler meldet. Weitere Informationen zu MCE finden Sie unter Decoding Machine Check Exception (MCE) output after a purple screen error (1005184).
Wenn bei Ihrem VMware ESX- oder VMware ESXi-Host ein ähnlicher Fehler auftritt, für den es keinen Verweis auf einen allgemeinen Artikel gibt, suchen Sie in der
Knowledgebase nach der Fehlermeldung und nach Stack-Trace-Informationen. Wenn der Fehler nicht in der Knowledgebase dokumentiert wurde, erfassen Sie die Diagnoseinformationen auf dem VMware ESX-Host und reichen Sie eine Support-Anfrage ein.
Weitere Informationen finden Sie unter:
Fehlerbehebung mehrerer VMkernel-Fehler auf demselben ESX-Host mithilfe der Musteranalyse
Für den Fall, dass auf demselben VMware ESX-Host mehrere violette Diagnosebildschirme auftreten, können Sie mithilfe des Beispiels für mehrere violette Diagnosebildschirme die Wahrscheinlichkeit für ein Problem in Zusammenhang mit Hardware oder Software bestimmen. Zu diesem Zweck können Sie Muster in den folgenden Abschnitten des violetten Diagnosebildschirms identifizieren:
- Fehlermeldung und Stack-Trace:
- Wenn die Fehlermeldung und der Stack zwischen VMkernel-Fehlern erheblich variieren, ist dies ein Hinweis darauf, dass Software nicht immer denselben Fehler auslöst. Dies ist zwar nicht eindeutig, kann aber ein Hinweis auf einen Hardwarefehler sein.
- Wenn die Fehlermeldung und der Stack zwischen VMkernel-Fehlern stets identisch sind, ist dies ein Hinweis darauf, dass Software immer denselben Fehler auslöst. Dies ist zwar nicht eindeutig, kann aber ein Hinweis auf einen Softwarefehler sein.
- Weitere Informationen zur aufgetretenen Fehlermeldung finden Sie weiter oben im Abschnitt zur jeweiligen Fehlermeldung.
- Physische CPU:
- World:
- Wenn der World-Wert bei mehreren VMkernel-Fehlern unverändert bleibt, ist dies ein Hinweis darauf, dass der VMkernel beim Empfang von Anweisungen von derselben World fehlschlägt. Dies ist zwar nicht eindeutig, kann aber ein Hinweis darauf sein, dass eine World Anweisungen sendet, die den VMkernel-Fehler auslösen.