获取验证码
存储IO高占用排查分为虚拟化层esxtop与虚拟机内部iostat两层工具定位,先通过esxtop确认ESXi主机、存储设备、虚拟机磁盘读写延迟与队列拥堵,再进入虚拟机使用iostat分析进程读写、块设备等待耗时;分层定位是标准流程,区分硬件存储瓶颈、虚拟机业务进程、快照/备份抢占IO三类根因。
有VMware全系列产品官方资源和定制版资源需求的可以移步:
存储IO高负载标准排查链路:虚拟化层使用esxtop定位宿主机、存储设备、虚拟机磁盘IO延迟、队列、读写带宽;虚拟机操作系统内部使用iostat查看块设备%util、await、r/s/w/s,定位业务进程读写热点,逐层缩小IO瓶颈范围。
1. esxtop进入磁盘监控面板
ESXi Shell执行esxtop,按d切换至Disk存储视图,核心观测指标:
CMDS/sec:每秒读写指令量;DAVG:设备平均响应延迟(ms),>20ms存在存储瓶颈;KAVG:虚拟机磁盘内部延迟;GAVG:Guest到存储网关延迟;%DEVWT:设备IO等待占比,数值越高队列阻塞越严重;QUED:存储队列堆积长度。
2. 分层定位瓶颈步骤
第一步看DAVG:单设备DAVG持续高于20ms,底层存储阵列/硬盘性能不足;DAVG正常但KAVG高,虚拟机内部应用阻塞IO;GAVG偏高代表存储网络(FC/iSCSI)链路拥堵。
第二步查看QUED队列:队列持续堆积,存储处理能力无法匹配虚拟机下发IO,出现排队等待。
第三步按V切换按虚拟机分组视图,定位产生大量IO的虚拟机,记录VM ID、磁盘设备。
3. esxtop高频IO诱因识别
1. 快照未合并:快照链过长,随机读写放大IO负载;
2. 备份/复制任务并发抢占存储带宽;
3. 单块机械硬盘多虚拟机挂载,IO调度争抢;
4. vSAN磁盘组故障、重建任务占用IO资源;
5. iSCSI多虚拟机共用单条链路,网络延迟拉高DAVG。
1. iostat核心关键指标解读
安装sysstat工具,iostat -xmt 2持续采样输出:
%util:设备IO饱和度,接近100%代表磁盘完全打满;await:IO平均等待耗时,超过10ms存在瓶颈;rMB/s wMB/s:读写带宽;r/s w/s:每秒读写IOPS;avgrq-sz:平均IO块大小,随机IO该数值偏小性能更差。
2. 定位产生IO的业务进程配套工具
iostat只能看设备整体负载,配合pidstat -d 2查看每个进程读写IO;iotop直观展示进程磁盘读写速率,快速锁定数据库、日志、定时任务等高IO程序。
3. 虚拟机内高IO常见业务场景
MySQL大量刷脏页、全表扫描;日志持续滚动输出;定时备份、压缩打包脚本;程序未优化频繁随机读写;swap频繁换页,内存不足引发磁盘交换IO飙升。
1. ESXi主机登录执行esxtop(d视图),确认全局存储DAVG、队列、延迟;
2. esxtop按V切换虚拟机视图,锁定IO最高的故障虚拟机;
3. 登录故障虚拟机,执行iostat -x持续采集块设备负载;
4. pidstat/iotop定位占用IO的业务进程;
5. 区分根因:虚拟机业务程序问题 / 底层存储硬件瓶颈 / 快照备份等后台任务抢占IO;
6. 验证优化:调整虚拟机磁盘IO限制、优化业务SQL、合并快照、错峰备份、扩容高速SSD存储。
esxtop(宿主机层)
作用:判断瓶颈在虚拟化层还是底层存储,定位哪台虚拟机产生IO,查看存储网络、磁盘阵列延迟;无法区分虚拟机内部哪个进程占用IO。
iostat(客户机系统层)
作用:查看虚拟机系统块设备饱和程度,结合iotop定位业务进程;无法感知底层存储硬件、快照、vSAN重建、存储网络等虚拟化层面因素。
1. vCenter性能图表:长期IO趋势观测,识别周期性IO峰值;
2. vmkchdev:查看ESXi识别的LUN、磁盘硬件状态;
3. vmkping -s:iSCSI/存储网络延迟、丢包检测;
4. blktrace:虚拟机内核级IO追踪,分析读写块特征;
5. 存储阵列管理界面:查看硬盘负载、RAID重构、缓存命中率。
1. 误区:只看iostat%util高就判定硬盘损坏
纠正:需先用esxtop确认DAVG延迟,区分是虚拟机业务负载还是底层存储硬件性能不足。
2. 误区:esxtop看到高IO直接删除高负载虚拟机
纠正:先进入虚拟机用iotop确认业务进程,可优化程序而非直接关停虚拟机。
3. 误区:DAVG延迟高全部是硬盘性能问题
纠正:GAVG偏高是存储网络拥堵,FC交换机、iSCSI网卡故障同样拉高延迟。
4. 误区:快照合并完成后IO负载会立刻下降
纠正:长快照链合并过程本身会产生大量IO,合并期间负载持续高位。
5. 误区:iostat await高一定是磁盘慢
纠正:虚拟机内存不足大量swap交换,也会造成await持续升高,需同步查看内存使用状态。
存储IO高负载分层排查标准工具为esxtop(ESXi宿主机层)与iostat(虚拟机系统层);esxtop用于观测存储设备延迟、队列、虚拟机IO占用,定位虚拟化/底层存储瓶颈;iostat结合iotop/pidstat在虚拟机内部锁定高IO业务进程,二者自上而下配合完成完整IO瓶颈定位,同时排查快照、备份、存储网络、内存交换等附加诱因。