服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-26 简米科技 4,000 字 10 分钟阅读

虚拟机如何准确查看磁盘IOPS性能?,虚拟机磁盘IOPS测试方法有哪些

导读准确查看虚拟机磁盘IOPS,关键不是盯住一个峰值数字,而是把Guest内工具、宿主机虚拟化层和云平台监控放到同一口径下交叉验证;固定块大小、队列深度、读写比例后,IOPS才有比较意义,虚拟机里的磁盘IOPS经常“看起来很奇怪”:Guest里跑分很高,业务却卡;云监控显示没到上限,iostat的await却一路升……

准确查看虚拟机磁盘IOPS,关键不是盯住一个峰值数字,而是把Guest内工具、宿主机虚拟化层和云平台监控放到同一口径下交叉验证;固定块大小、队列深度、读写比例后,IOPS才有比较意义。

虚拟机里的磁盘IOPS经常“看起来很奇怪”:Guest里跑分很高,业务却卡;云监控显示没到上限,iostat的await却一路升高,原因不复杂,I/O路径从应用、文件系统、虚拟磁盘、宿主机缓存到物理盘,每一层都可能改写你看到的数字,下面按实操路径拆开讲。

虚拟机磁盘IOPS怎么测试?先把“谁看到的IOPS”对齐

测试前先确认三件事:看的是Guest内IOPS、宿主机虚拟磁盘IOPS,还是云平台云盘IOPS,三者口径不同,直接对比容易误判,业内专家指出,虚拟化层的缓存模式和队列深度会显著改变Guest内看到的IOPS,因此测试报告必须带参数。

IOPS不是单一数字:块大小、队列深度、读写比决定结果

同样一块虚拟盘,4K随机读和1M顺序写的“IOPS”没有可比性,看结果时至少记录:

  • 块大小:4K、8K、16K还是1M。
  • 读写比例:纯读、纯写、7:3混合。
  • 队列深度:iodepth=1还是32,差距很大。
  • 随机/顺序:randread、randwrite、read、write。
  • 缓存状态:是否direct=1,是否绕过page cache。

三层视角:Guest、Hypervisor、云平台监控

视角 常用入口 能看到什么 常见坑
Linux Guest iostat -x、sar -d、pidstat -d、fio r/s、w/s、await、aqu-sz、应用延迟 page cache、文件系统预读、参数不一致
Windows Guest 性能监视器、Get-Counter、diskspd 读写次数、队列、延迟 未关缓存、未固定块大小
宿主机 virsh domblkstat、esxtop、Hyper-V PerfMon 虚拟磁盘命令数、队列、延迟 聚合值掩盖单台VM
云平台 云监控、云盘性能指标 云盘IOPS、吞吐、时延、限速 采样周期和计费口径不同

Linux虚拟机查看磁盘IOPS命令:iostat、sar、pidstat怎么配合

先看全局,再定位进程:

iostat -x 1 5
sar -d 1 5
pidstat -d 1 5

重点字段这样读:

  • r/s + w/s:Guest内每秒读写次数,接近日常说的IOPS。
  • await:平均I/O等待时间,升高通常比%util更敏感。
  • aqu-sz:平均队列长度,持续偏高说明排队。
  • %util:传统机械盘有参考价值,NVMe和多队列虚拟盘上别单独下结论。

需要压测时,用fio固定参数,例如4K随机读、队列深度32:

fio --name=randread --filename=/dev/vdb --direct=1 --rw=randread \
--bs=4k --iodepth=32 --ioengine=libaio --runtime=60 --time_based \
--group_reporting --percentile=99

/dev/vdb要换成无业务数据的独立数据盘,文件系统场景则把--filename改成/data/fio-test --size=8G,并保留--direct=1减少缓存干扰。

Windows虚拟机怎么看到真实IOPS

用性能监视器或命令行抓读写次数:

Get-Counter '\PhysicalDisk()\Disk Reads/sec','\PhysicalDisk()\Disk Writes/sec'

压测可用diskspd:

diskspd -c1G -d60 -w0 -b4K -o32 -t1 -r -h -L

-b4K是块大小,-o32是队列深度,-r随机,-h关闭软件缓存,测试文件要放在目标数据盘,不要放系统盘。

云服务器和本地虚拟机磁盘IOPS区别:同配置跑分不同不奇怪

云服务器和本地虚拟机磁盘IOPS区别,核心在“IOPS来源”,据公开云厂商文档,云盘IOPS通常与云盘类型、容量和实例规格绑定,部分类型还有突发额度;本地虚拟机则受物理盘、RAID、缓存模式和宿主机争用影响,行业共识认为,IOPS必须和块大小、读写比例、队列深度一起报告才有意义。

云盘规格、缓存模式与限速

云上排查先看云监控里的云盘IOPS和吞吐是否触顶,云盘容量小、规格低时,IOPS上限可能先到,突发型云盘短时间跑高,持续压测会回落到基线。

本地虚拟化缓存模式与virtio队列

本地KVM常见none、writeback、writethrough缓存模式。writeback可能让Guest写测试很好看,但掉电风险和数据一致性要单独评估,virtio-blk/virtio-scsi的多队列、io_uring配置也会改变结果,对比测试时,缓存模式、磁盘总线、队列数要写进记录。

维度 云服务器 本地虚拟机
IOPS来源 云盘规格、容量、突发额度 物理盘能力、RAID、缓存
虚拟化层 厂商封装,用户可控项少 virtio总线、缓存模式可调
监控入口 云监控加Guest工具 宿主机工具加Guest工具
测试成本 按量计费、云盘规格 硬件已投入,主要是时间

虚拟机磁盘IOPS低怎么排查:从Guest到宿主机逐层定位

虚拟机磁盘IOPS低怎么排查,别一上来就换云盘,按下面顺序走,通常能快速缩小范围:

  • 先定业务基线:是随机小I/O多,还是顺序大I/O多;延迟阈值是多少。
  • Guest内看现象:iostat -x 1看await、aqu-sz;pidstat -d 1找高I/O进程;iotop看谁在刷盘。
  • 排除缓存假象:文件测试是否命中page cache,fio是否加了--direct=1。
  • 查虚拟磁盘状态:KVM下用virsh domblklist vm-name确认盘,再用virsh domblkstat vm-name vda看读写次数和失败数。
  • 查宿主机争用:vmstat 1看st偷取时间;ESXi用esxtop看CMDS/s、DAVG、KAVG;Hyper-V看虚拟磁盘延迟。
  • 查云盘限速:云监控里对齐采样周期,看IOPS、吞吐、时延是否触顶。
  • 查文件系统和应用:小文件元数据操作多、日志同步写多,IOPS不高也会很慢。

如果Guest内await高、宿主机虚拟磁盘延迟也高,再看物理盘或云盘;如果Guest内高但宿主机低,优先怀疑Guest文件系统、缓存或测试方法。

做一次可信的IOPS基准测试:fio参数、测试口径与成本

可信测试不是跑一次取峰值,而是固定口径、多轮验证,建议记录:块大小、读写比、队列深度、线程数、direct状态、预热时间、运行时长、99分位延迟,每轮至少60秒,跑3轮取中位数,比单次峰值更接近真实能力。

fio裸盘和文件测试怎么选

  • 验证云盘或块设备能力:用独立空盘裸盘测,避免误伤数据。
  • 验证业务文件系统:在目标目录建测试文件,保留--direct=1。
  • 线上环境:优先低干扰采样,压测放维护窗口,控制--runtime和--size。

上海云服务器磁盘IOPS测试多少钱?按量测试的成本口径

在上海云服务器磁盘IOPS测试场景里,云服务器磁盘IOPS性能测试多少钱没有统一价,成本主要由云盘类型、容量、实例规格、测试时长决定,快照和公网流量另算,短时基准测试可用按量付费实例加独立数据盘,测完释放;长期压测要按云盘规格和时长核算,别只看实例单价,上海地域测试还要注意可用区、云盘类型是否支持目标IOPS规格,以及测试盘和业务盘是否同类型。

云监控和fio结果对不上怎么办

先对齐时间窗口和采样周期,再对齐块大小、读写比例,云监控看的是云盘侧限速和计费口径,Guest内fio看的是应用可获得的I/O能力,两者差得大时,检查缓存模式、文件系统、队列深度和宿主机争用。先统一口径,再判断谁不准。

虚拟机磁盘IOPS的准确查看,本质是统一口径后的交叉验证;先把Guest、宿主机、云平台三层数据对齐,再用fio和业务压测复核,结论才可信,线上环境优先用监控和低干扰采样,压测留给维护窗口。

虚拟机磁盘IOPS查看常见问题Q&A

Q1 虚拟机里iostat的%util到100%是否说明磁盘已跑满?

不一定。%util在NVMe、多队列和虚拟化环境下参考价值有限,更应看await、aqu-sz、应用延迟和云监控限速,机械盘上%util持续接近100%更有参考意义,但也要结合队列和响应时间。

Q2 fio在文件系统上测和裸盘测差很多,以哪个为准?

看目标,验证云盘或块设备上限,用独立空盘裸盘测;验证数据库、日志等业务场景,在目标文件系统上测,并保留--direct=1,两者不是谁替代谁,而是回答不同问题。

Q3 虚拟机磁盘IOPS查看时,云监控和Guest内数据不一致先信哪个?

排查限速和计费口径看云监控,判断应用体验看Guest内iostat和业务延迟,对齐采样周期、块大小和读写比后,再判断差异来自缓存、文件系统还是宿主机争用,短时基准测试通常用按量付费实例加独立数据盘,测完释放即可,长期压测则要按云盘规格和时长核算。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱