IO 验收的思路
IO 验收用 fio 按业务画像压测:顺序还是随机、读写比例、块大小与队列深度逐项设置,再核对 IOPS、带宽与时延分布是否符合盘型与阵列配置的预期。压测的价值在于留下可比数据,而不是跑出一个好看的峰值数字。
基本信息
| 工具 | fio,参数按业务画像组织 |
|---|---|
| 关键维度 | 顺序/随机、读写比、块大小、队列深度 |
| 观察指标 | IOPS、带宽、时延分布 |
| 参照基准 | 盘型规格与 RAID 配置的预期能力 |
| 数据真实性 | 用 direct=1 绕过文件系统与设备缓存 |
| 测试对象 | 文件系统上测端到端,裸设备测物理能力 |
典型使用场景
- 新阵列上线:验证实际能力是否达到设计值
- 变更对比:扩容或调整 RAID 级别后与旧数据比较
- 故障复盘:性能下降时与验收基线对比
- 交付留档:形成标准格式的测试报告
- 迁移前评估:确认目标存储能满足业务画像
- 调优验证:验证缓存与写策略调整的实际效果
- 容量规划:用实测数据估算扩容后能达到的服务水平
随机读与顺序带宽
随机读与顺序带宽
# 随机读:4K 块、队列深度 32、4 个并发任务
fio --name=randread --rw=randread --bs=4k --iodepth=32 --numjobs=4 \
--size=8G --runtime=300 --time_based --group_reporting --direct=1
# 顺序读:大块顺序访问,反映大文件传输能力
fio --name=seqread --rw=read --bs=1M --iodepth=8 --numjobs=1 \
--size=16G --runtime=300 --time_based --group_reporting --direct=1结果读法
| 指标 | 含义 | 判读要点 |
|---|---|---|
| IOPS | 每秒完成的 IO 次数 | 小文件随机场景主要看它 |
| 带宽 | 每秒传输数据量 | 大块顺序场景主要看它 |
| 时延分位 | 平均与高百分位时延 | 高百分位更能暴露问题 |
| 队列深度 | 未完成的 IO 数量 | 与业务并发特征对应 |
| 稳态区间 | 排除预热后的读数 | 取稳态值而非冲刺值 |
先明确测试对象:在文件系统上测反映端到端能力,直接对设备测反映物理能力,两者结论不同,报告里要写清楚测的是哪一种。
忽略缓存会得到虚高数据:文件系统缓存与阵列写缓存都会抬高读数,关键结论要在直接 IO 模式下复核。