fio测裸盘需用干净未挂载设备(如/dev/vdc),配齐direct=1、iodepth、numjobs等关键参数以绕过缓存、压满并发,确保结果可复现可对比;测试后必须umount并mkfs.ext4重初始化,否则无法挂载使用。

直接用 fio 测裸盘,避开系统盘和已挂载盘,配对关键参数才能反映真实磁盘能力。重点不是跑出高分,而是让结果可复现、能对比。
选对测试设备:必须用干净的裸盘
不能测 /dev/vda(系统盘)或已挂载的 /dev/vdb——fio 会直接写扇区,轻则损坏文件系统,重则丢数据。
- 先运行 sudo fdisk -lu 查看所有块设备,挑出候选盘(如 /dev/vdc)
- 再执行 sudo blkid,如果输出里完全没出现该设备名,说明它没分区、没文件系统,可安全测试
- 若 blkid 显示 /dev/vdc1: TYPE="ext4",立刻放弃,换新空盘
装好 fio 和底层依赖:libaio 是性能关键
fio 默认用同步 I/O 引擎,压不出真实并发能力;要测上限,必须启用异步 I/O 支持。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- Ubuntu/Debian:sudo apt install fio libaio-dev
- RHEL/CentOS:sudo yum install fio libaio-devel(CentOS 8+ 用 dnf)
- 验证是否生效:fio --ioengine=libaio --help 不报错即成功
核心参数不能漏:direct、iodepth、numjobs 要配齐
少一个就可能测成内存缓存性能,而不是磁盘真实表现。
- direct=1:强制绕过页缓存,否则结果无效
- iodepth:云盘/NVMe 建议 32 或 64;SATA SSD 可从 16 起步
- numjobs:别只用 1,多线程才压得出真实 IOPS,常见设为 4 或 8
- 典型随机读命令:fio -name=randread -ioengine=libaio -iodepth=32 -rw=randread -bs=4k -direct=1 -size=1G -numjobs=4 -runtime=60 -group_reporting -filename=/dev/vdc
测完必须重初始化:裸盘已被破坏
fio 对设备是扇区级直写,哪怕只跑 5 秒,也会覆盖分区表结构。
- 若还要保留该盘:先 umount(如有误挂载),再 mkfs.ext4 /dev/vdc 重建文件系统
- 若不再需要:卸载后直接在云平台释放,别留着占资源
- 特别注意:测试中途别 Ctrl+C 中断,尤其 randwrite 模式下,中断可能导致设备状态异常,重试前建议重启实例










