最近处理了一个奇怪的 ESXi 网络故障:在执行 vMotion 迁移时,物理交换机突然报告端口 down,ESXi 主机提示冗余丢失,甚至有时候 vMotion 直接失败。通过 esxtop 监控发现,负责 vMotion 的 vmkernel 适配器会在迁移过程中更换使用的 vmnic,这让我花了不少时间才定位到根本原因。
故障现场还原:现象与初步分析
这个故障的典型表现包括:
-
- 物理交换机端口随机 down
- ESXi 主机在 vMotion 时报告冗余丢失
- vMotion 可能失败(即使成功也伴随网络波动)
- esxtop 监控显示 vmkernel 适配器使用的 vmnic 会切换
我通过 esxtop 观察到,原本使用 vmnic3 的 vmk2(vMotion 专用适配器)在迁移过程中会突然切换到其他 vmnic,导致物理网络连接状态变化。进一步检查 vmkernel 日志后,发现了关键线索 – 日志中频繁出现 TX hang 报错。
故障根源:NIC 固件驱动问题
经过分析,问题的根源在于固件驱动层面:当进行 vMotion 这类高吞吐量操作时,特定的 NIC 驱动/固件组合会暴露出时序敏感性或缓冲区管理缺陷,导致网卡发送队列挂起(TX hang)。此时驱动会触发固件级别的 NIC 重置,从而导致 vmnic 切换和网络中断。
vmkernel 日志中的报错信息通常类似这样(不同硬件可能有差异):
ixgben 0000:##:00.0: TX hang detected
解决方案与避坑指南
1. 确认故障的关键步骤
首先需要通过 vmkernel 日志确认是否存在 TX hang 问题:
1. 登录 ESXi 主机(SSH 或 Putty)
2. 进入 /var/log 目录:cd /var/log
3. 查看 vmkernel.log:cat vmkernel.log | less
4. 搜索 TX hang:输入 /tx hang(不区分大小写)
2. 官方推荐解决方案
由于 NIC 驱动和固件不属于 VMware 官方支持范围,推荐以下解决步骤:
-
- 联系硬件厂商获取最新的驱动和固件版本
- 确保使用 VMware 硬件兼容性列表 (HCL) 中测试过的版本组合
- 参考官方文档确认驱动/固件版本是否匹配
3. 老鸟避坑建议
遇到这类问题时,还需要注意:
-
- 操作前先备份重要虚拟机快照
- 在非业务高峰时段进行维护操作
- 关注硬件厂商的支持论坛,可能有其他用户遇到类似问题的解决方案
- 对于关键业务环境,建议提前测试新驱动/固件版本的稳定性
4. 相关排查工具
- esxtop:实时监控网络适配器状态和流量
- vmkernel.log:查看详细的系统和网络日志
- VMware HCL:验证硬件、驱动、固件的兼容性
这个故障提醒我们,在使用 ESXi 和 vMotion 时,不仅要关注 VMware 自身的配置,还要注意硬件组件的驱动和固件状态。及时更新到官方支持的版本,能有效避免这类隐蔽的网络问题。







