400-166-0296
400-166-0296
400-166-0296
新 闻
虚拟机卡顿如何定位?从 I/O 到 vSAN 网络链路的完整排查
. | 蒙帕Moonpac | 日期:2026-11-09 | 15 次浏览 | 🔊 点击朗读正文 ❚❚ ▶ | 分享到:

导读|某客户虚拟化平台多台虚拟机持续卡顿、业务响应明显变慢,而物理网卡始终保持 Link Up、10Gbps、全双工。排查结果表明:异常与 vSAN 主用物理链路持续产生大量接收帧错误有关。隔离异常链路并切换至备用链路后,vSAN 与虚拟机恢复正常。

本文按照实际排查顺序,对虚拟机 I/O、vSAN 健康检查、网络路径和物理网卡计数进行关联分析。虚拟机卡顿只是表面现象,只有将不同层级的性能数据和日志证据放在一起,才能逐步缩小故障范围,最终定位到异常链路。


01

虚拟机延迟确认


先检查虚拟机的虚拟 SCSI 延迟。在一次异常采样中,读取延迟为 6,055.24 ms,写入延迟达到 18,892.907 ms,相当于一次读取等待约 6 秒、一次写入接近 19 秒。该延迟足以造成虚拟机明显卡顿,与现场表现一致。

同一组性能图中,读取延迟 0.503 ms,写入延迟 1,877.095 ms。

异常期间的 IOPS 并不高,但较低的 I/O 数量不能说明存储访问正常。虚拟 SCSI 延迟已达到秒级,需要继续确认等待发生在虚拟机内部、vSAN 存储服务还是跨主机网络路径。

02

vSAN I/O 路径定位


确认虚拟机存在明显 I/O 等待后,继续使用 I/O 行程分析器检查访问路径。结果显示,红色告警位于计算节点 ESXi-A 与远程组件节点 ESXi-B 之间,异常指向跨主机的 vSAN 网络路径。

该虚拟机并不运行在 ESXi-B 上,但其部分 vSAN 组件位于 ESXi-B。排查 vSAN 性能问题时,不能只检查虚拟机所在主机,还需要确认数据实际经过的组件节点和网络路径。

检查 vSAN 网络延迟详情:两组组件平均写入延迟分别为 284 ms 和 197.3 ms,其中一组标准偏差为 228.65 ms。

上述数值是 I/O 行程分析记录的网络延迟,并非所有虚拟机的平均磁盘延迟。结合红色路径告警,异常范围已收敛到 vSAN 网络方向,后续检查继续沿该路径展开。

03

vSAN 网络异常证据


ESXi-B 的 vSAN 性能视图显示,读取延迟为 764.503 ms,写入延迟为 187.152 ms,读写延迟均达到数百毫秒。

通过 Skyline 运行状况检查同时报出异常:多条与 ESXi-B 有关的 vSAN 大包 Ping 路径显示红色或黄色,异常目标均指向 vmk3。

进一步核对 vmk3、虚拟交换机和物理上联的映射关系。大包 Ping 失败可能由端到端 MTU 不一致引起,也可能与丢包或物理链路质量劣化有关。仅凭检查项名称不能直接判定需要修改 MTU。

04

健康检查与迁移异常


vSAN 运行状况历史中,红色、黄色和绿色状态交替出现,说明异常具有间歇性。历史记录显示,多条经过 ESXi-B 的 vmk3 路径出现同类异常。

相关记录中还出现 vMotion 失败:目标主机未收到源主机通过 vMotion 网络发送的数据,随后发生等待迁移启动请求超时。

vMotion 失败说明主机之间出现过通信异常。但 vMotion 与 vSAN 属于不同业务流,是否共用物理上联,还需要核对各自的 VMkernel、VLAN 和上联映射。该记录只能作为辅助证据,不能单独证明 vmnic1 存在故障。

05

物理网卡计数定位


沿 ESXi-B 的 vSAN 路径继续检查,确认 vmk3 的主用 uplink3 对应 vmnic1,备用 uplink4 对应 vmnic2。该映射来自支持包中的 vSAN 网络和分布式交换机配置:

link selection = link state up 

active  = uplink3 -> vmnic1 

standby = uplink4 -> vmnic2

支持包中的 commands/nicinfo.sh.txt 显示,vmnic1 虽保持 Up、10Gbps、全双工状态,但 FCS 错误帧已超过 1,400 万,编码错误帧超过 155 万。

vmnic1 Driver: bnxtnet Admin Status: Up  

Link Status: Up Speed: 10000 Mbps 

Duplex: Full rx_stat_err:14178327

rx_fcs_err_frames:  14176251

rx_code_err_frames: 1553891 

rx_link_down_events: 1


上述数值为支持包采集时的累计计数。备用 vmnic2 的同类计数均为 0,两条链路形成了明确对照,具备进一步切流验证的条件。

FCS 是以太网帧的校验值。接收端检测到校验失败后会丢弃错误帧;vSAN 使用 TCP 通信,丢包可能触发重传并增加 I/O 等待。因此,Link Up 只能说明链路已经建立,不能证明链路传输质量正常。Broadcom KB 341594 和 KB 326609 对相关计数和影响有进一步说明。

综合以上证据,故障范围已从虚拟机性能异常收敛到 vmnic1 所在的物理接收链路。

06

异常链路隔离与业务恢复


vmnic1 始终保持 Link Up,主备策略继续将其判定为可用上联,因此备用 vmnic2 未自动接管。确认备用路径可用后,手工将 vmnic1 置为 DOWN,vSAN 流量随即按既有策略切换到 vmnic2。

链路切换完成后,vSAN 状态和虚拟机响应恢复正常。路径告警、网卡错误计数与切流后的恢复结果能够相互印证,vmnic1 所在物理链路被判定为本次性能故障的主要原因。

现有证据能够将异常定位到 vmnic1 所在物理链路,但尚不能唯一确定具体故障部件。后续仍需检查服务器网卡端口、光模块、光纤或线缆以及交换机端口。

虚拟机心跳日志的辅助证据

hostd 日志还记录了多台虚拟机的心跳降级。以下摘录关键字段,虚拟机名称已匿名化:

VM-01  heartbeat red,    actual =  1/30 

VM-02  heartbeat red,    actual = 10/30

VM-03  heartbeat yellow, actual = 20/30

VM-04  heartbeat yellow, actual = 30/38

虚拟机心跳降级反映其响应能力下降,但不能单独证明 vSAN 网络异常。将该记录与 I/O 路径告警、vSAN 延迟和物理网卡错误计数结合分析,可作为影响范围的辅助证据。

同一份支持包中,节点状态仍显示 HEALTHY。该状态只能说明采集时健康检查未判定节点退出或失效,不能代表所有性能指标正常。健康状态与实际响应速度需要分别判断。

07

可复用的排查方法


① 沿 I/O 路径逐层下钻|先选择一台受影响的虚拟机确认 I/O 延迟,再沿 I/O 路径判断异常发生在哪个层级。发现跨主机的 vSAN 网络告警后,继续核对 VMkernel、上联映射和物理网卡计数,逐步缩小故障范围。

② 看增量而非累计|累计计数只能说明网卡曾经出现过错误,连续采样的增量才能判断错误是否仍在增长。采集数据时应同时记录计数、流量负载和交换机端口状态,便于两端对照。

③ 不只看虚拟机所在主机|vSAN 组件分布在不同节点,虚拟机可能通过网络访问远程组件,本次 I/O 路径即属于这种情况。

④ 单变量替换验证|业务恢复后,异常链路应继续保持隔离。后续维护窗口需检查交换机端口错误、两端光模块状态和光功率,并依次替换光纤、光模块或端口。每次只改变一个变量,操作前后记录错误计数和延迟,才能进一步确认具体故障部件。

⑤ 真实负载下验收|原链路修复并重新承载流量后,应在实际业务负载下持续观察网卡错误计数、vSAN 网络延迟、虚拟机磁盘延迟和业务响应。空闲状态下 Ping 正常或错误计数暂未增长,不能作为完整的验收依据。

🛠 现场信息采集建议

以下命令均为只读检查。网卡编号应按现场映射替换;FCS 和编码错误等驱动计数,可结合支持包中的 nicinfo.sh.txt 进行核对。

esxcli vsan network list esxcli network nic list esxcli network nic stats get -n vmnic1 esxcli network nic stats get -n vmnic2

本次能够直接隔离 vmnic1,前提是故障路径已经核实且备用链路确认可以接管。执行类似操作前,应确认备用链路的连通性和容量,核查目标网卡是否承载其他业务,并准备恢复方案。

KEY TAKEAWAY

本次故障的关键特征是物理网卡始终保持 Link Up,但链路质量已经明显劣化。遇到虚拟机未宕机却持续卡顿的情况,除检查链路状态外,还应继续核对 Error、FCS、编码错误和延迟等指标。

08

延伸阅读


▸ Broadcom KB 389082|vSAN 延迟与性能问题排查

▸ Broadcom KB 341594|ESXi 物理网卡错误与丢包计数

▸ Broadcom KB 326609|vSAN TCP 丢包与延迟影响

▸ Broadcom KB 326823|vSAN 小包与大包 Ping 健康检查

注:文中客户、主机及虚拟机标识已匿名化,截图保留现场关键路径与数值。


————————————————————————————————————————————————————————————————————————————————————