Dell Unity/VNX:从版本 5.5 u2 及更高版本开始,ESXi 主机上出现随机临时连接丢失和/或性能下降(用户可纠正)
Summary: 负载较重的阵列、网络或结构可能会减慢 ATS 命令的速度,以致阵列对 ATS 命令返回 ESXi 意想不到的误比较检查条件。 由于 VMFS HeartBeat 插槽上的此 ATS 错误比较,ESXi 主机会尝试重新获得对设备的控制权。为此,主机会在持有 VMFS 的 LUN 上发出 SCSI 设备重置命令。此 LUN 上的所有活动 I/O 都将中止,SCSI 设备将重置。VMkernel 日志中显示连接临时中断。 ...
Symptoms
场景:
- 主机升级到 ESXi 5.5 update 2 或 ESXi 6.0
- 一个或多个 ESXi 主机在短时间内失去与 VMFS 数据存储区的连接。数据存储区上的任何虚拟机都可能会崩溃或出现 I/O 错误。
- 由于 VMFS 心跳插槽上的原子测试和设置 (ATS) 错误比较,ESXi 主机会尝试通过在持有 VMFS 的 LUN 上发出 SCSI 设备重置指令来重新获得对设备的控制权。
- 此 LUN 上的所有活动 I/O 都将中止,SCSI 设备将重置。
- VMkernel 日志中显示连接临时中断。
NMP 和 PowerPath 都可能发生 ATS 误比较。
/var/log/vmkernel.log 中显示指示类似以下内容的 ATS 误比较的错误消息:
2015-11-20T22:12:47.194Z cpu13:33467)ScsiDeviceIO: 2645: Cmd(0x439dd0d7c400) 0x89, CmdSN 0x2f3dd6 from world 3937473 to dev "naa.50002ac0049412fa" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0xe 0x1d 0x0.
可能发生的其他问题:
- 主机与 vSphere vCenter 断开连接
- 虚拟机在 I/O作上挂起
Cause
此问题已出现在过载程度足以使主机取消 I/O 请求的阵列、网络或结构上。
一些阵列供应商(包括戴尔)在 ESXi 5.5u2 中引入的 ATS 心跳功能方面遇到了问题。
NOTE: 根据 Broadcom (VMware) KB 326437 (外部链接), 此问题影响 ESXi 版本 VMware ESXi 5.5.x 和 VMware ESXi 6.0.x,未提供所有特定版本,因此此知识库文章假设所有版本为 5.5u2 及更高版本的 ESXi 主机和所有 ESXi 6.0 版本都会受到影响。
主机通过定期对给定卷上的心跳执行 I/O 来指示其活动状态。因此,如果在一段时间内主机的心跳槽上看不到任何活动,则可以断定主机已失去与卷的连接。
ATS 心跳 I/O 具有非常低的超时值,可能会导致主机断开连接和应用程序中断,从而导致磁盘连接丢失和/或主机性能下降。
然后,主机在心跳槽上注册误比较,并在发出重置时中止 LUN 上的所有活动 IO。 此 LUN 上所有挂起的 IO 都将失败,主机感知 8(H:0x8 SCSI 重置)。
Resolution
如果观察到此情况,建议的临时解决方法是禁用 VAAI ATS 心跳机制。有关详细信息,请参阅 Broadcom (VMware) 知识库文章326437(外部链接)。 禁用 ATS 心跳机制会将主机恢复为传统模式。处理负载后,重新启用 ATS 心跳机制。
请联系 VMware 以确认问题,或提供具有 vmsupport 的 ESXi emcgrab 以进行确认。在负载问题得到解决之前,仅建议受影响的客户在 ESX 服务器上禁用 VAAI ATS 心跳功能。
Additional Information
Unity 日志可用于识别此特定类型的中止(感知键 = 0e、ASC = 1d、ASCQ = 00)。
提取的日志中的日志位置为:
要检查日志,请在上面的位置提取所有 c4_safe_ktrace.log* 日志,然后查找“SK = 0x0e,ASC/Q = 0x1d00”。
Linux 系统或类似系统的示例:
grep -i "SK = 0x0e, ASC/Q = 0x1d00" spa/EMC/C4Core/log/c4_safe_ktrace.* | wc -l 15744 <<<< count of aborts on SPA in this example.
如果未添加 ktrace 日志,只需使用 zgrep:
zgrep -i "SK = 0x0e, ASC/Q = 0x1d00" spa/EMC/C4Core/log/c4_safe_ktrace.* | wc -l 15744 <<<< count of aborts on SPA in this example.