云盘性能的三个指标
评估云盘只看三个指标:IOPS 衡量每秒读写次数,吞吐衡量每秒传输字节,时延衡量单次 IO 的响应时间。不同业务的敏感项不同,数据库吃 IOPS 与时延,大数据与备份看吞吐。测盘要用未挂载的新数据盘,在生产盘上跑压测会直接冲击业务。
基本信息
| IOPS | 每秒读写次数,随机小 IO 场景的关键指标 |
|---|---|
| 吞吐 | 每秒传输字节数,顺序大 IO 场景的关键指标 |
| 时延 | 单次 IO 响应时间,决定数据库与缓存的体验 |
| 测试工具 | fio 做精确测试,dd 只能粗测顺序吞吐 |
| 前提 | 用未挂载的新数据盘测试,避免影响业务 |
| 换算关系 | 吞吐约等于 IOPS 乘以块大小 |
指标与场景
| 指标 | 定义 | 敏感场景 |
|---|---|---|
| IOPS | 每秒读写次数 | 数据库、消息队列 |
| 吞吐 | 每秒传输字节 | 大数据、备份、视频 |
| 时延 | 单次 IO 响应时间 | OLTP、缓存持久化 |
| 队列深度 | 并发未完成的 IO 数 | 决定实测 IOPS 的峰值 |
fio 与 dd 测试
fio 与 dd 测试
fio --name=seqwrite --filename=/dev/vdb --direct=1 --rw=write --bs=1M --size=2G --runtime=60 --group_reporting
fio --name=randread --filename=/dev/vdb --direct=1 --rw=randread --bs=4k --iodepth=32 --runtime=60 --group_reporting
# 简易顺序吞吐快测(勿在线上盘执行)
dd if=/dev/zero of=/data/testfile bs=1M count=2048 conv=fdatasync典型使用场景
- 数据库上线前验证云盘能否撑住预期的随机 IOPS
- 迁移到不同规格云盘前做基线对比,避免性能倒退
- 排查应用变慢:先确认是磁盘瓶颈还是其他环节
- 大数据与备份场景评估顺序吞吐是否够用
- 选型时用真实负载的块大小与并发去测,而不是跑个数字交差
测盘务必用未挂载的新数据盘;对线上数据盘跑 dd 或 fio 会与业务争抢 IO,轻则抖动重则引发故障。
dd 测的是顺序吞吐,用它判断随机性能会得出完全错误的结论;随机 IOPS 必须用 fio 按块大小与队列深度去测。
同一块云盘上的多个分区与容器共享总性能上限,多业务挤在一块盘上会互相拖累,容量规划要按盘而不是按目录算。