验证存储介质真实性能需聚焦目标场景下的稳定边界,而非瞬时峰值;应依测试目标选工具:CrystalDiskMark用于快速摸底,fio/vdbench模拟业务负载,PdTest校验数据一致性,fio长时运行测稳定性,并严格控制缓存、PCIe链路、盘态三变量。

验证存储介质真实上限,关键不是“跑出一个最大数字”,而是用压测工具还原它在目标场景下能稳住的性能边界。厂商标称的顺序读写速度,往往只代表理想条件下的瞬时峰值;而真实业务中更常遇到的是小文件随机读、高并发混合IO、长时间持续写入等压力。这些场景下的IOPS、延迟稳定性、尾延迟(P99/P999)、以及降速拐点,才是选型时真正要抓住的指标。
明确测试目标再选工具
不同工具解决不同问题,不能混用:
- 快速基线摸底:用 CrystalDiskMark 或 AS SSD Benchmark,5分钟内看顺序读写、4K随机读写大致水平,适合装机验收或横向初筛
- 验证真实业务负载:用 fio 或 vdbench,可精确控制队列深度(QD)、块大小(如 4K/64K/1M)、读写比例(如 70%读+30%写)、IO模式(随机/顺序)、缓存策略(是否 bypass page cache)
- 查数据一致性风险:用 PdTest 或 fio + verify 模式,边压测边校验CRC,暴露坏块、掉电丢数据、控制器静默错误等问题
- 测长时间稳定性:fio 配合 --runtime 和 --time_based 参数,连续运行数小时甚至24小时,观察 IOPS 是否衰减、延迟是否跳变、温度是否触发限频
必须控制的三个干扰变量
否则测出来的是环境瓶颈,不是盘的真实能力:
- 绕过操作系统缓存:fio 中加 --direct=1,vdbench 中 openflags=o_direct;否则测的是内存带宽,不是NVMe SSD的物理性能
- 确认PCIe链路不打折:执行 lspci -vv -s $(lspci | grep NVMe | head -1 | awk '{print $1}') | grep LnkSta,确保显示 Speed 8GT/s(PCIe 3.0)或 16GT/s(PCIe 4.0),Width x4;若显示 x2 或 Speed 2.5GT/s,说明插槽或主板限制了带宽
- 测试前清空盘并预热:NVMe SSD在空盘、半盘、满盘状态下性能差异极大;建议先 fio 清盘(randwrite,size=100%,runtime=300),再做正式测试;同时 warmup 时间不少于60秒,让主控和NAND进入稳态
重点关注四类核心指标
单看 MB/s 或 IOPS 数字容易误判,必须结合上下文读:
- 小块随机读 IOPS(4K QD32):反映数据库、虚拟机启动、AI小文件加载能力;重点看 P99 延迟是否稳定在 100μs 内,而非平均值
- 大块顺序写带宽(1M QD16):反映视频转码、备份归档吞吐;注意观察持续写入10分钟后是否出现明显降速,这可能暴露SLC缓存耗尽或温控降频
- 混合负载响应能力(70%读+30%写,4K QD16):模拟真实OLTP场景;关注写延迟是否被读操作大幅拖慢(即“写阻塞”现象)
- 尾延迟突刺(P999 latency spike):fio 输出中的 clat_ns 分布,若 P999 达到毫秒级,即使平均延迟只有100μs,也意味着偶发卡顿,不适合低延迟敏感业务
结合部署形态交叉验证
同一块NVMe盘,在不同使用方式下表现差异巨大:
- 直连单机使用:测裸设备(如 /dev/nvme0n1),获得原始硬件上限
- 挂载为XFS文件系统:用 fio 测文件(如 --filename=/mnt/testfile),验证文件系统层开销(通常损耗<5%,但碎片多时会升高)
- 接入分布式对象存储(如 MinIO):此时瓶颈可能已不在盘本身,而在网络、CPU编解码、或RAID/JBOD配置;需同步监控网卡收发、CPU软中断、磁盘util%
- 用于数据库(如 YashanDB):单机压测时 buffer pool 设置必须合理(建议设为内存50%),否则IO压力全落到盘上,测出的是配置缺陷而非盘能力


















