← [ BACK_TO_NOTES ]

fio

Flexible I/O Tester,面向 Linux 与服务器存储的 I/O 压测工具,用于测量顺序/随机读写、IOPS、带宽与延迟。

#resource #growing #vps #tool #cli #linux #server

[!info] related notes

  • 相关主题:
  • 相关 MOC:
  • 相关 howto:

fio

这是什么

fio(Flexible I/O Tester)是常用的存储 I/O 基准与压力测试工具。它可以精确控制块大小、读写模式、队列深度、并发数和测试时长,用来测量磁盘或云盘的带宽、IOPS 与延迟。

一句话定位:YABS 负责一键综合验货,fio 负责把磁盘 / 云盘性能单独做严谨测试。

在 VPS 验货里主要看什么

顺序读写

适合观察大文件传输、备份、镜像、日志归档等工作负载的吞吐能力。

随机读写

更能反映数据库、容器、包管理器、构建缓存和大量小文件操作的体验。

IOPS

IOPS 是每秒 I/O 操作次数。小块随机 I/O 场景中,它通常比单纯 MB/s 更有意义。

延迟

同样的 IOPS,如果延迟高且波动大,交互体验和数据库尾延迟也可能很差。评价云盘时不要只看峰值带宽。

常见测试思路

测试前应先确认测试文件路径和剩余空间,避免把系统盘写满。

例如用 1 GiB 测试文件做随机 4K 读:

fio --name=randread --filename=fio-test.bin --size=1G --rw=randread --bs=4k --iodepth=32 --numjobs=1 --runtime=30 --time_based --direct=1

随机 4K 写:

fio --name=randwrite --filename=fio-test.bin --size=1G --rw=randwrite --bs=4k --iodepth=32 --numjobs=1 --runtime=30 --time_based --direct=1

顺序读写可把 --rw 改为 read / write,块大小改为 1M 等更适合大块传输的设置。

如何评价结果

不要把不同参数的 fio 结果直接横比。块大小、队列深度、并发数、缓存策略和测试文件大小都会显著改变结果。

正确做法是:

  1. 固定同一套参数;
  2. 确保测试文件明显大于缓存影响范围,或使用 direct=1;
  3. 比较相近规格 / 同类磁盘;
  4. 重复测试观察波动;
  5. 同时看带宽、IOPS、平均延迟和高分位延迟。

对代理节点的重要性

纯 sing-box / Xray / WireGuard 落地节点通常对磁盘要求很低,因此 fio 在代理场景中优先级低于 IP、线路、CPU 和真实吞吐。

但如果 VPS 同时运行:

  • 数据库;
  • 日志平台;
  • Docker / 容器编排;
  • CI 构建;
  • 下载 / NAS;
  • 监控与历史数据

磁盘性能就会明显影响整体体验。

云 VPS 常见陷阱

缓存导致“虚高”

过小测试文件可能主要命中内存缓存,而不是实际存储。

突发性能

一些云盘允许短时间 burst,刚开始很快,持续写一段时间后速度明显下降。因此需要足够长的测试来观察持续性能。

共享存储超售

同一宿主机上的其他租户也可能影响云盘表现。白天和晚高峰结果波动很大,说明共享资源争用可能比较明显。

安全注意

fio 可以产生很高的磁盘压力。不要随便对生产数据库所在块设备做破坏性测试,也不要直接对裸设备使用写入模式,除非你非常清楚数据会被覆盖。

在普通 VPS 验货中,优先用单独测试文件,而不是直接指定 /dev/vda、/dev/nvme0n1 等块设备。

测试完成后记得删除测试文件:

rm -f fio-test.bin

与其它工具的分工

官方入口

创建于 2026/9/7 更新于 2026/9/7
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本