标称SSD实测只有机械盘速度?fio三组命令识破磁盘虚标

来源:互联网 时间:2026-09-02

买了台“NVMe高性能盘”的VPS,网站数据库查询还是慢。先别急着怪MySQL——很可能你那块盘根本没跑出SSD该有的速度。云盘的超售、缓存策略、虚拟化开销,都能让标称性能打对折。验证的办法只有一个:fio。

fio是磁盘测试的事实标准,机房和云厂商的SSD报告基本都由它生成。它能精确控制队列深度、块大小、读写比例、IO引擎,模拟真实业务负载。很多站长装完fio直接跑默认命令,结果测出来速度好得吓人——那是文件系统缓存在帮忙,不是磁盘的本事。

sudo apt install -y fio

# 第一步先排除缓存干扰:--direct=1 是灵魂参数
# 4K随机读(数据库负载的真实写照)
fio --name=rr --rw=randread --bs=4k --size=1G \
--numjobs=4 --iodepth=32 --runtime=30 \
--time_based --direct=1 --group_reporting

# 大块顺序读(测磁盘带宽上限)
fio --name=seq --rw=read --bs=1M --size=1G \
--numjobs=1 --iodepth=16 --runtime=30 \
--time_based --direct=1 --group_reporting

结果怎么读。随机读看IOPS:真正的企业级NVMe在4K随机读上能跑到几十万IOPS,普通SSD几千到几万,机械盘三位数。如果你的“NVMe”只跑出几千IOPS,要么是超售严重,要么是队列深度压错了。顺序读写看BW(带宽):NVMe单盘顺序读2GB/s以上很正常,云盘能给到500MB/s就算良心。延迟看clat(平均完成延迟):企业级NVMe的4K延迟应在1毫秒以内,且波动小;延迟均值高或者95分位数跳得离谱,都是盘不行或者邻居太吵的信号。

一个容易被忽略的坑:测试负载要贴近你的真实业务。数据库为主的站,重点看4K随机读写和延迟一致性;图片站、下载站重点看顺序带宽。别被厂商页面上漂亮的顺序读速度迷惑,你的MySQL根本用不上顺序读,它要的是随机IOPS和稳定的低延迟。

# 模拟数据库混合负载:70%读30%写
fio --name=mixed --rw=randrw --rwmixread=70 --bs=4k \
--size=1G --numjobs=4 --iodepth=32 --runtime=60 \
--time_based --direct=1 --group_reporting

# 测完清理测试文件
rm -f /你的测试目录/rr.* seq.* mixed.*

两个纪律性问题。--size别贪大,1GB足够,别把磁盘塞满影响生产;测试尽量放在业务低峰跑,fio会把磁盘打满,正在服务的请求会跟着遭殃。

测出来的数据留档对比:同配置不同厂商比一次,同一台机器隔三个月再测一次。磁盘性能衰减(邻居超售加重、SSD写入衰减)是渐进的,有了历史数据才能发现“这台机器是不是变慢了”。

相关文章

标签:

A5创业网 版权所有