在很多项目或者客户自建的VMware环境中(FC SAN 或 IP SAN)经常碰到虚拟机响应时间过长影响业务应用的运行,在虚拟化平台或者云管中还会发现存储路径延迟的报警。

概述

传统集中式存储出现存储性能问题的常见原因有如下几种:

  • 服务器与存储的SAN链路出现问题;
  • 存储系统的 I/O 性能已经无法支撑现有应用;
  • 服务器的多路径故障;

识别故障原因

可以使用交互式 esxtop 实用程序查看 VMware ESX 主机的各种设备的 I/O 指标。
启用 ESXi Shell 和 SSH 访问,通过putty等软件远程到ESXi主机。

要监控每个 HBA 的存储性能,执行以下操作:

  1. 在命令行键入 esxtop 以启动 esxtop。
  2. 按 d 切换到磁盘视图(HBA 模式)。
  3. 要查看完整的设备名称,请按 SHIFT + L 并在“更改名称字段大小”中输入 36。
  4. 按 f 修改显示的字段。
  5. 按 b、c、d、e、h 和 j 切换字段,然后按 Enter。
  6. 按 s,接着按 2 将更新时间间隔改为 2 秒,然后按 Enter。

要按每个 LUN 监控存储性能,请执行以下操作:

  1. 从命令行键入 esxtop 以启动 esxtop。
  2. 按 u 切换到磁盘视图(LUN 模式)。
  3. 按 f 修改显示的字段。
  4. 按 b、c、f 和 h 切换字段,然后按 Enter。
  5. 按 s,接着按 2 将更新时间间隔改为 2 秒,然后按 Enter。

要增加 esxtop 中设备字段的宽度以显示完整的 naa id,请执行以下操作:

  1. 在命令行键入 esxtop 以启动 esxtop。
  2. 按 u 切换到磁盘设备显示。
  3. 按 L 更改名称字段大小。
  4. 输入值 36 以显示完整的 naa 标识符。

注意:务必使用大写字母 L。

要按每个虚拟机监控存储性能,请执行以下操作:

  1. 在命令行键入 esxtop 以启动 esxtop。
  2. 键入 v 切换到磁盘视图(虚拟机模式)。
  3. 按 f 修改显示的字段。
  4. 按 b、d、e、h 和 j 切换字段,然后按 Enter。
  5. 按 s,接着按 2 将更新时间间隔改为 2 秒,然后按 Enter。

各项指标说明:

指标描述
CMDS/s这是指每秒命令总数,包括 IOPS(每秒输入/输出操作数)和其他 SCSI 命令,如 SCSI reservations、locks、vendor string requests、unit attention 等要发送到或发送自受监控设备或虚拟机的命令。在大多数情况下,除非有大量元数据操作(如 SCSI 预留),否则 CMDS/s = IOPS。
DAVG/cmd这是发送给设备的每个命令的平均响应时间(以毫秒为单位)。
KAVG/cmd这是命令在 VMkernel 中花费的时间。
GAVG/cmd是指客户机操作系统感知的响应时间。该值使用此公式计算: DAVG + KAVG = GAVG

上述列既适用于读取操作,也适用于写入操作,而 xAVG/rd 只适用于读取操作,xAVG/wr 只适用于写入操作。将这些列的结合起来是监控性能的最好方式,但是高读取或写入响应时间可能表示该阵列上的读取或写入缓存处于禁用状态。所有阵列的执行方式都不同,但对于持续的时间段
DAVG/cmd、KAVG/cmd 和 GAVG/cmd 不应超出10 毫秒 (ms)。

如果响应时间增加到超过 5000 毫秒(或 5 秒),则 VMware ESX 将让命令超时并中止操作。这些事件已记入日志;可以在以下日志中查看中止消息和其他 SCSI 错误:

  • ESX 3.5 和 4.x – /var/log/vmkernel
  • ESXi 3.5 和 4.x – /var/log/messages
  • ESXi 5.x 及更高版本 - /var/log/vmkernel.log

存储性能问题分析

如果同存储设备的所有LUN均出现 DAVG/cmd 超出10 毫秒 (ms),甚至达到惊人的几十毫秒或者上百上千毫秒,就需要通过以下方式进一步分析根因。

  • FC SAN环境:从光纤交换机上查看光衰是否正常,从而确认是否需要更换光纤线或光模块。
  • IP SAN环境:确认iSCSi网卡和以太网交换机的线路或光模块是否异常。

如果单个LUN出现 DAVG/cmd 超出10 毫秒 (ms),甚至达到惊人的几十毫秒或者上百上千毫秒,在其他LUN的运行正常前提下需要确认是否是存储LUN本身 I/O 性能不足导致的该问题。

esxtop的详细指标说明