在 Ubuntu 18.04 下测试硬盘 IOPS 上限,最标准、准确的工具
在 Ubuntu 18.04 下测试硬盘 IOPS 上限,最标准、准确的工具是:
✅ 首选:fio(Linux 官方推荐 I/O 压测工具)
Ubuntu18.04 自带 apt 包,可直接安装:
sudo apt-get update
sudo apt-get install fio
🚀 一条命令测试硬盘 IOPS 上限(随机 4K)
1)随机写 IOPS 上限(4K)
fio --name=4k-randwrite --filename=/data/testfile --size=2G \
--bs=4k --rw=randwrite --iodepth=32 --numjobs=4 --direct=1 --time_based \
--runtime=30 --group_reporting
2)随机读 IOPS 上限(4K)
fio --name=4k-randread --filename=/data/testfile --size=2G \
--bs=4k --rw=randread --iodepth=32 --numjobs=4 --direct=1 --time_based \
--runtime=30 --group_reporting
参数说明(关键):
-
--bs=4k→ 4K 块,测数据库最常用 IOPS -
--rw=randread或randwrite→ 随机读/写 -
--numjobs=4→ 相当于 4 个线程(可根据 CPU 增加) -
--iodepth=32→ 队列深度 -
--direct=1→ 绕过缓存,真实测试磁盘 -
--runtime=30→ 运行 30 秒 -
--group_reporting→ 整合输出
🔥 测 IOPS 上限的最强命令(压榨到极限)
适用于 NVMe / RAID / SSD:
fio --name=max-iops --filename=/data/testfile --size=4G \
--rw=randread --bs=4k --numjobs=8 --iodepth=64 --direct=1 \
--time_based --runtime=60 --ioengine=libaio --group_reporting
适合直接看你的硬盘理论上限。
✨ 输出中重点看:
-
IOPS(最关键)
-
lat (usec)平均延迟 -
clat99%、99.99% 延迟 -
bw(带宽)
🧪 附:连续写(顺序写)带宽测试
顺序写:
fio --name=seqwrite --filename=/data/testfile --size=4G \
--bs=1M --rw=write --direct=1 --runtime=30 --group_reporting
顺序读:
fio --name=seqread --filename=/data/testfile --size=4G \
--bs=1M --rw=read --direct=1 --runtime=30 --group_reporting
❗注意事项
-
测试前必须确保目录里有足够空间
-
测试会产生文件(测试后删除即可)
-
如果是生产服务器,请避免测试期间影响业务
-
--direct=1必须开启,否则测试的是缓存不是磁盘
如果你愿意
你可以把 fio 输出发给我,我能帮你分析:
✔ IOPS 是否正常
✔ 是否被 CPU / RAID / 控制器限制
✔ 能否进一步优化 IO 性能(比如调整 iodepth/numjobs)
随时发我即可。