评估生产环境存储吞吐能力的关键是在真实负载下测出可持续、低延迟的输出,需关注顺序大块吞吐、随机小块IOPS及混合读写稳定性,推荐用dd(绕过缓存、bs=1M)快速摸底,fio模拟真实负载并监控clat 99.9th等核心指标,配合iostat与iotop实时定位瓶颈,同时规避SSD空间不足、测试分区不当等常见干扰。

评估生产环境存储吞吐能力,关键不是跑出峰值数字,而是测出在真实负载模式下可持续、低延迟的输出。重点看三个层面:顺序大块吞吐(如备份、日志归档)、随机小块IOPS(如数据库事务)、以及混合读写下的响应稳定性。
用 dd 快速摸底顺序吞吐
适合上线前快速验证磁盘持续读写能力,但必须绕过缓存、选对块大小:
- 写测试(先清缓存):sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'; dd if=/dev/zero of=/mnt/testfile bs=1M count=2048 oflag=direct
- 读测试(同样清缓存):sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'; dd if=/mnt/testfile of=/dev/null bs=1M iflag=direct
- bs=1M 比默认 512B 更贴近视频转码、大数据写入等典型场景;多次运行取稳定值,避开首次预热抖动
用 fio 模拟真实业务负载
fio 是生产环境评估的主力工具,能精准控制 IO 模式、并发和深度:
- 数据库类随机读(低延迟敏感):fio --name=randread --ioengine=libaio --rw=randread --bs=4k --size=2G --numjobs=16 --iodepth=32 --direct=1 --runtime=60 --time_based --group_reporting
- 日志类顺序写(高带宽需求):fio --name=seqwrite --ioengine=libaio --rw=write --bs=1M --direct=1 --size=4G --runtime=60 --time_based --group_reporting
- 关注核心指标:IOPS(随机场景)、MB/s(顺序场景)、clat 99.9th(长尾延迟,比 avg 更反映卡顿风险)
用 iostat + iotop 实时观察瓶颈
压测中同步监控,避免“测完再查”,直接定位问题根源:
- 每2秒刷新一次:iostat -x 2,重点关注:%util(持续接近100%说明设备饱和)、await(平均等待毫秒数,SSD持续>2ms需警惕)、r_await/w_await(分离读写延迟)
- 查谁在吃IO:iotop -o,再用 lsof -p PID 看具体文件句柄
- 若 await 显著大于 svctm,说明请求积压在队列里——可能是应用并发过高,也可能是磁盘响应变慢
避开常见干扰和误判
很多“性能差”其实是测试方式或环境导致的假象:
- SSD 测试前确保空闲空间 ≥20%,否则垃圾回收会拖垮随机写性能
- 别在根分区或系统盘上跑长时间大压力测试,可能触发 OOM 或影响 SSH 响应
- 虚拟机中测试,需确认后端是本地盘、NFS 还是 Ceph;宿主机 CPU/内存/网络也可能成为瓶颈
- 单次测试时间 ≥60 秒,跳过初始预热阶段,取中间 40 秒稳定区间数据更可信


















