与存储相关的某些 VMkernel 消息可能包含 SCSI 感知代码。

问题

在分析 ESXi 主机的 /var/log/vmkernel 日志文件时,您遇到了包含 SCSI 感知代码的事件或错误消息。

结果

解析 SCSI 感知代码的能力能够帮助您更好地理解存储环境中的问题。由于 SCSI 感知代码值是由 T10 委员会分配的,因此请参考 T10 标准文档来确定代码的含义。本主题说明了如何使用 T10 文档来解释 SCSI 感知代码。

解析 SCSI 感知代码

以下是有关显示在 ESXi 日志文件中的 SCSI 错误消息的示例:

2011-04-04T21:07:30.257Z cpu2:2050)ScsiDeviceIO:2315: Cmd(0x4124003edb00) 0x12, CmdSN 0x51 to dev "naa.600508XXXXXXXXXXXXX" failed H:0x0 D:0x2 P:0x0 Valid sense data:0x5 0x25 0x0

在此示例中,SCSI 感知代码由 H:0x0 D:0x2 P:0x00x5 0x25 0x0 两个字段来表示。

第一个字段 H:0x0 D:0x2 P:0x0 是存储环境中主机、设备和插件这三个组件的 SCSI 状态代码的组合。SCSI 状态代码用于确定 SCSI 命令的成功或失败。若要解释每个 SCSI 状态代码,请参见 http://www.t10.org/lists/2status.htm

注:

T10 文档中的十六进制数字使用 NNNh 格式,而 ESXi 日志文件中的 SCSI 感知代码遵循了 0xNNN 格式。例如 0x2 = 02h。

对于以上示例的状态字段您将得到以下解释:H:0x0 D:0x2 P:0x0 = H(host):GOOD D(device):CHECK CONDITION P(plug-in):GOOD

典型 SCSI 错误消息中的第二个字段提供了有关错误的详细信息。是感知密钥 (sense)、附加感知代码 (asc) 和附加感知代码限定符 (ascq) 参数的组合。

例如,以上错误消息中的 0x5 0x25 0x0 字段可表示为 sense=5 asc=25 ascq=0

若要解析感知密钥,请参阅http://www.t10.org/lists/2sensekey.htm

若要确定附加感知代码 (asc) 和附加感知代码限定符 (ascq) 的含义,请一起使用这两种代码。有关详细信息,请参见http://www.t10.org/lists/2asc.htm

对于 0x5 0x25 0x0 字段,您应当会得到以下解释:

sense=5 (非法请求), ASC=25 ASCQ=0 (不支持逻辑单元)