云盘性能指标与压测
评估云盘性能看三个指标:IOPS(每秒读写次数)、吞吐量(MB/s)与时延(毫秒)。随机小 IO 场景看 IOPS 与时延,顺序大 IO 场景看吞吐。云盘的实际性能同时受云盘档位与实例规格两重限制,压测得到的是两者共同作用的结果,把标称值当实际能力是最常见的误判来源。
基本信息
| 三个指标 | IOPS、吞吐、时延,三者互相牵制,高 IOPS 往往伴随时延上升 |
|---|---|
| IO 模型 | 随机小块(数据库)、顺序大块(日志与备份)、混合读写 |
| 双重约束 | 云盘档位上限与实例规格带宽上限,取其中较小者 |
| 压测工具 | Linux 下常用 fio,可指定块大小、队列深度与读写模式 |
| 观察口径 | 关注稳定态与 P99 时延,而非只取峰值 |
典型使用场景
- 选型前评估:数据库盘选哪一档,用压测结论替代参数表猜谜
- 上线前验收:确认实际能跑到业务峰值所需的 IOPS 与吞吐
- 故障定位:业务变慢时判断是盘受限还是应用层问题
- 调优验证:调整队列深度、调度策略后复测是否见效
- 成本权衡:确认低一档也能满足业务,避免长期为闲置性能付费
fio 压测随机读
fio 压测随机读
sudo fio --name=randread --ioengine=libaio --direct=1 \
--rw=randread --bs=4k --iodepth=64 \
--size=2G --numjobs=1 --runtime=60 --group_reporting
# bs=4k 模拟数据库随机小 IO;iodepth 模拟并发队列深度
# --direct=1 绕过页缓存,避免内存缓存把结果做好看
# 顺序吞吐场景改成 --rw=read --bs=1M指标读法
| 指标 | 含义 | 重点关注业务 |
|---|---|---|
| IOPS | 每秒完成的读写次数 | 数据库、小文件密集服务 |
| 吞吐 | 每秒传输的数据量 | 日志、备份、视频与大文件处理 |
| 时延 | 单次 IO 的响应时间 | 交互式业务,P99 比均值更有意义 |
| 队列深度 | 并发未完成 IO 数量 | 深度不足压不出盘的上限 |
在业务低峰压测,或用独立测试盘验证;压测参数(块大小、队列深度、读写比例)要贴近真实负载。
直接对生产数据盘做写压测会破坏数据:写测试只能在空盘或测试盘上做,读测试也要确认不会与业务 IO 争抢。