news 2026/8/11 5:20:17

FIO 实战详解:安全测试 Linux 磁盘 IOPS 的正确方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FIO 实战详解:安全测试 Linux 磁盘 IOPS 的正确方法

在性能测试中,磁盘 IOPS(Input/Output Operations Per Second)是衡量存储系统性能的重要指标。 但很多人拿到 fio 命令后就直接对 /dev/sdX 开始“无脑测试”,结果数据全毁、分区损坏、系统宕机。

本文将系统讲解fio 的正确使用方式,以及如何安全地测试磁盘性能

一、fio 简介

fio(Flexible I/O Tester) 是 Linux 下最常用的磁盘性能测试工具,支持多线程、多种 I/O 模式(顺序、随机、混合)和多种 I/O 引擎。 它既能测试裸盘性能,也能测试挂载后的文件系统性能。

但这两种模式的风险完全不同:

结论:除非你明确知道自己在做什么,否则不要用 fio 测试裸盘或带文件的分区

二、fio 为什么会“毁盘”?

例如以下命令:

fio -filename=/dev/sdb1 -rw=randwrite -bs=4k -size=10G -ioengine=libaio -direct=1 -name=test

这条命令会从sdb1 的第一个扇区开始随机写入数据,直接覆盖原有内容。

执行后的文件系统展示如下(df -h),如果存有重要数据,我想你应该是崩溃的:

如果该分区已有文件系统(ext4、xfs 等),文件系统的元数据会被破坏,结果就是:

  • 分区无法挂载;
  • 文件系统损坏;
  • 实例宕机或进入紧急修复模式;
  • 容量显示异常(例如“64Z”)。

因此,一定要使用文件系统路径测试。

三、安全的 fio 测试方式

1、安装 fio

# 推荐直接使用 yum 安装
yum install -y fio libaio-devel

或手动安装:

wget http://brick.kernel.dk/snaps/fio-2.2.10.tar.gz
tar -zxvf fio-2.2.10.tar.gz
cd fio-2.2.10
make && make install

2、编写测试配置文件

新建一个配置文件 fio.conf(示例):

[global]
ioengine=libaio
direct=1
thread=1
norandommap=1
randrepeat=0
runtime=60
ramp_time=6
size=1g
directory=/data2# 修改为测试硬盘挂载目录

[read4k-rand]
stonewall
group_reporting
bs=4k
rw=randread
numjobs=8
iodepth=32

[read64k-seq]
stonewall
group_reporting
bs=64k
rw=read
numjobs=4
iodepth=8

[write4k-rand]
stonewall
group_reporting
bs=4k
rw=randwrite
numjobs=2
iodepth=4

[write64k-seq]
stonewall
group_reporting
bs=64k
rw=write
numjobs=2
iodepth=4

执行测试:

fio fio.conf

这样 fio 会在 /data2 下自动生成测试文件,测试结束后可删除,不会破坏现有系统。

四、常见手动测试命令

若需快速压测,可使用以下示例命令:

# 顺序读
fio -filename=/mnt/data/testfile -direct=1 -iodepth=1 -thread -rw=read \
-ioengine=psync -bs=16k -size=10G -numjobs=4 -runtime=60 -group_reporting -name=seq-read

# 顺序写
fio -filename=/mnt/data/testfile -direct=1 -iodepth=1 -thread -rw=write \
-ioengine=psync -bs=16k -size=10G -numjobs=4 -runtime=60 -group_reporting -name=seq-write

# 随机读
fio -filename=/mnt/data/testfile -direct=1 -iodepth=1 -thread -rw=randread \
-ioengine=psync -bs=4k -size=10G -numjobs=4 -runtime=60 -group_reporting -name=rand-read

# 随机写
fio -filename=/mnt/data/testfile -direct=1 -iodepth=1 -thread -rw=randwrite \
-ioengine=psync -bs=4k -size=10G -numjobs=4 -runtime=60 -group_reporting -name=rand-write

# 混合随机读写(70%读 / 30%写)
fio -filename=/mnt/data/testfile -direct=1 -iodepth=1 -thread -rw=randrw -rwmixread=70 \
-ioengine=psync -bs=4k -size=10G -numjobs=4 -runtime=60 -group_reporting -name=randrw

✅ 注意:filename 必须指向挂载点内的测试文件或目录,不要直接写 /dev/sdX。

五、结果解读

测试结束后,fio 会输出如下信息:

IOPS=54123, BW=211MiB/s, Latency=1.23ms

关键指标说明:

六、总结

  • 不要直接对 /dev/sdX 执行 fio 测试,那是“物理毁灭”级操作;
  • 推荐在挂载目录内测试,fio 会自动生成并删除测试文件;
  • 对比不同存储介质(SATA SSD、NVMe、RAID、云盘)性能时,务必保持同样的配置参数;
  • 最后测试完记得 rm -f testfile 清理文件。

📘小结一句话:

用 fio 测试磁盘性能没问题,问题是你要知道“写到哪儿”。 写到分区头就是毁盘,写到文件里才是压测。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/11 5:19:44

Node.js文件下载被IDM拦截?详解HTTP下载机制与前后端解决方案

1. 问题缘起:当Node.js遇上IDM,一个下载请求的“罗生门”最近在做一个后端数据归档的功能,需要从我们的服务端批量下载一些由Node.js生成的报告文件,这些报告被打包成了ZIP格式。代码很简单,就是最经典的http模块或者a…

作者头像 李华
网站建设 2026/8/11 5:19:34

Unity中Marschner毛发渲染模型:从原理到工程实践

1. 项目概述:Marschner毛发渲染模型在Unity中的落地如果你在Unity里做过角色渲染,尤其是涉及到写实向的角色,大概率会为头发这个“老大难”问题头疼过。传统的Lambert、Blinn-Phong模型处理头发,要么看起来像一坨塑料,…

作者头像 李华
网站建设 2026/8/11 5:16:18

终极魔兽争霸3优化指南:如何用WarcraftHelper实现180帧流畅体验

终极魔兽争霸3优化指南:如何用WarcraftHelper实现180帧流畅体验 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏《魔兽争霸…

作者头像 李华
网站建设 2026/8/11 5:15:57

写技术文章时,怎样把知识体系做成可维护的索引

写技术文章时,怎样把知识体系做成可维护的索引 技术写作的难点往往不在于某一篇文章写不出来,而在于一段时间后找不到旧结论的来源,或新文章重复解释同一个概念。把它当作“高并发系统故障”没有帮助;它更像一项轻量的信息维护工作…

作者头像 李华
网站建设 2026/8/11 5:14:41

构建自驱AI Agent:从监督者模式到动态工作流引擎的实践指南

1. 从“手动挡”到“自动挡”:为什么我们需要自驱的AI Agent最近在折腾各种AI Agent项目时,我发现自己陷入了一个奇怪的循环:启动Agent,给出指令,Agent执行几步后停下来,弹出“下一步该做什么?”…

作者头像 李华
网站建设 2026/8/11 5:14:36

Ubuntu Server 20.04安装桌面环境:从命令行到图形界面的完整指南

1. 从零到一:为什么要在Ubuntu 20.04上安装桌面环境?如果你手头有一台只安装了Ubuntu Server 20.04的机器,或者你当初为了追求极致的性能和资源利用率,选择了最小化安装,那么现在你可能会遇到一个非常实际的需求&#…

作者头像 李华