SCSI-Fehler auf Vmware ESXi mit HP Smart Array Controllern
Auf gewissen Installationen von Vmware ESXi tauchen manchmal SCSI-Fehlermeldungen im vmkernel.log auf, die auf ein ernstes Problem hindeuten:
2015-01-06T13:33:12.828Z cpu1:16590)NMP: nmp_ThrottleLogForDevice:2346: Cmd 0x85 (0x4124008154c0, 3268) to dev "naa.600508b1001c872c079296d6e2be22e4" on path "vmhba2:C0:T0:L1" Failed: H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0. Act:NONE 2015-01-06T13:33:12.839Z cpu0:62543)ScsiDeviceIO: 2358: Cmd(0x4124008154c0) 0x4d, CmdSN 0x76 from world 3268 to dev "naa.600508b1001c872c079296d6e2be22e4" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0. 2015-01-06T13:33:12.839Z cpu0:2050)ScsiDeviceIO: 2358: Cmd(0x4124008154c0) 0x1a, CmdSN 0x77 from world 3268 to dev "naa.600508b1001c872c079296d6e2be22e4" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x24 0x0.
Bekannte Indikatoren sind:
- Keine Abhängigkeiten von der tatsächlichen Versionen von ESX(i),
- Mit (mindestens) HP Smart Array P212,
- Keine Abhängigkeit von Firmware- oder Treiberversionen.
Analyse
Zuerst ist die genaue Bedeutung der angezeigten Fehlercodes herauszufinden. Anhand dieser kann danach entschieden werden, ob weitere Schritte notwendig sind. Die entscheidenden Informationen sind zu finden in
H:0x0 D:0x2 P:0x0
und in
sense data: 0x5 0x20 0x0
Gemäß Vmware Knowledgebase bedeutet 0x0 = Kein Fehler, D:0x2, dass es sich um einen Fehler im Device, also meistens dem SCSI-Target (Disk) handelt. 0x2 steht für CHECK CONDITION, eine Aufforderung vom Device an den Initiator (Hostadapter), genauere Informationen einzuholen. In den Sense Keys sind diese genaueren Informationen dann vermerkt.
Hier ist im Sense-Feld 0x5 vermerkt, dies steht für ILLEGAL REQUEST. In den erweiterten Sensebytes ist 0x20 oder 0x24 vermerkt, Bedeutung nach Wikipedia: invalid/unsupported command code bzw. invalid field in CDB (Command Descriptor Block).
Lösung
Der Host hat dem Gerät also ein Kommando gesendet, was dieses nicht versteht. Diese Meldungen sind lt. Vmware explizit nicht kritisch, sondern normal und können/sollen ignoriert werden.
Um (exakt diese) Meldungen auszublenden, damit Wichtiges nicht untergeht, kann folgende Grep-Zeile in der ESXi-Shell verwendet werden:
egrep -v '^[-[:digit:]]+T[:[:digit:]]+\.[[:digit:]]{3}Z cpu[[:digit:]]:[[:digit:]]+\)(NMP: nmp_ThrottleLogForDevice:[[:digit:]]+|ScsiDeviceIO: [[:digit:]]+): Cmd( 0x[[:xdigit:]]+ )?\(0x[[:xdigit:]]+(, [[:digit:]]+)?\)( 0x[[:xdigit:]]+, CmdSN 0x[[:xdigit:]]+ from world [[:digit:]]+)? to dev "naa\.[[:xdigit:]]+" (on path "[[:alnum:]]+:C[[:digit:]]:T[[:digit:]]:L[[:digit:]]" Failed:|failed) H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x2[04] 0x0\.( Act:NONE)?$' /var/log/vmkernel.log
Weblinks
- Vmware KB Artikel 289902: Interpreting SCSI sense codes in VMware ESXi and ESX (en)
- Vmware KB Artikel 1031221: Messages relating to mpx.vmhba devices in the vmkernel or messages log after a rescan (en)
- SCSI Key Code Qualifier bei Wikipedia (en)