千家信息网

fio 命令入门到跑路(千万不能在系统所在的分区测试硬盘性能)

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,fio是一种I / O工具,用于基准测试和压力/硬件验证。它支持19种不同类型的I / O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,
千家信息网最后更新 2026年11月01日fio 命令入门到跑路(千万不能在系统所在的分区测试硬盘性能)


fio是一种I / O工具,用于基准测试和压力/硬件验证。它支持19种不同类型的I / O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等),I / O优先级(适用于较新的Linux内核) ,评估I / O,分叉或线程作业等等。它可以在块设备和文件上工作。fio以简单易懂的文本格式接受职位描述。包含几个示例作业文件。fio显示各种I / O性能信息,包括完整的IO延迟和百分位数。Fio在许多地方广泛使用,用于基准测试,QA和验证目的。它支持Linux,FreeBSD,NetBSD,OpenBSD,OS X,OpenSolaris,AIX,HP-UX,Android和Windows。
fio 官网地址:http://freshmeat.net/projects/fio/

安装:

yum install fio -y

用法

fio分顺序读 -rw=read ,随机读 -rw=randread,顺序写 -rw=write,随机写-rw=randwrite ,混合随机读写模式 -rw=randrw

参数:

filename: 指定文件(设备)的名称。可以通过冒号分割同时指定多个文件,如filename=/dev/sda:/dev/sdb。

directory: 设置filename的路径前缀。在后面的基准测试中,采用这种方式来指定设备。

name: 指定job的名字,在命令行中表示新启动一个job。

direct: bool类型,如果设置成true (1),表示不使用io buffer。

ioengine: I/O引擎,现在fio支持19种ioengine。默认值是sync同步阻塞I/O,libaio是Linux的native异步I/O。

iodepth: 如果ioengine采用异步方式,该参数表示一批提交保持的io单元数。该参数可参考文章"Fio压测工具和io队列深度理解和误区"。

rw: I/O模式,随机读写,顺序读写等等。

bs: I/O block大小,默认是4k。

size: 指定job处理的文件的大小。

numjobs: 指定job的克隆数(线程)。

time_based: 如果在runtime指定的时间还没到时文件就被读写完成,将继续重复知道runtime时间结束。

runtime: 指定在多少秒后停止进程。如果未指定该参数,fio将执行至指定的文件读写完全完成。

group_reporting: 当同时指定了numjobs了时,输出结果按组显示。

下面是带数字的解释:

   direct=1             #测试过程绕过机器自带的buffer。使测试结果更真实   rw=randwrite         #测试随机写的I/O   rw=randrw            #测试随机写和读的I/O   bs=16k               #单次io的块文件大小为16k   bsrange=512-2048     #同上,提定数据块的大小范围   size=5G              #本次的测试文件大小为5g,以每次4k的io进行测试   numjobs=30           #本次的测试线程为30个   runtime=1000         #测试时间1000秒,如果不写则一直将5g文件分4k每次写完为止   ioengine=psync       #io引擎使用psync方式   rwmixwrite=30        #在混合读写的模式下,写占30%   group_reporting      #关于显示结果的,汇总每个进程的信息   lockmem=1G           #只使用1g内存进行测试   zero_buffers         #用0初始化系统buffer   nrfiles=8            #每个进程生成文件的数量

filename参数指定某个要测试的裸设备(硬盘或分区),切勿在系统分区做测试,会破坏系统分区,而导致系统崩溃。若一定要测试系统分区较为安全的方法是:在根目录下创建一个空目录,在测试命令中使用directory参数指定该目录,而不使用filename参数。

例如:要测试根目录

mkdir /test/
fio -directory=/test/ ……

我建了一个/data

fio -directory=/data/ -name=tempfile.dat -direct=1 -rw=randwrite -bs=4k -size=1M -numjobs=16 -time_based -runtime=100 -group_reporting


看看生成的一堆文件

#复制下面的配置内容,将directory=/path/to/test修改为你测试硬盘挂载目录的地址,并另存为fio.conf

[global]ioengine=libaiodirect=1thread=1norandommap=1randrepeat=0runtime=60ramp_time=6size=1gdirectory=/data[read4k-rand]stonewallgroup_reportingbs=4krw=randreadnumjobs=8iodepth=32[read64k-seq]stonewallgroup_reportingbs=64krw=readnumjobs=4iodepth=8[write4k-rand]stonewallgroup_reportingbs=4krw=randwritenumjobs=2iodepth=4[write64k-seq]stonewallgroup_reportingbs=64krw=writenumjobs=2iodepth=4


#测试

fio fio.conf


---------------------

怎么跑路的:

我之前用的dd命令测试的硬盘性能

•使用dd命令来测量服务器的吞吐率(写速度) dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync

•使用dd命令测量服务器延迟 dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync

•if=/dev/zero (if=/dev/input.file) :用来设置dd命令读取的输入文件名。

•of=/tmp/test1.img (of=/path/to/output.file):dd命令将input.file写入的输出文件的名字。

•bs=1G (bs=block-size) :设置dd命令读取的块的大小。例子中为1个G。

•count=1 (count=number-of-blocks):dd命令读取的块的个数。

•oflag=dsync (oflag=dsync) :使用同步I/O。不要省略这个选项。这个选项能够帮助你去除caching的影响,以便呈现给你精准的结果。

•conv=fdatasyn: 这个选项和oflag=dsync含义一样。



QQ群里一个小伙说用fio测试才准确,差 你个糟老头子,我信了你个鬼。

我就执行了下面的命令 ,sda1是系统所在的盘。

fio -name iops -rw=write -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda1 -ioengine libaio -direct=1

还没执行完系统就断了,联系机房看了下报错,文件系统崩溃了,哎 哎 哎 不让说哎 就说哎



我能怎么办只能下面这个样子了:

dd命令测试的是对的

dd if=/dev/zero of=/tmp/test.dbf bs=4k count=10000  oflag=dsync

另外一个就快


为什么差距这么大呢?后来发现是因为一个是sas卡 一个是raid卡 raid卡有缓存比sas卡快


到最后终于找到原因了,奉劝你不要用这个fio命令,赶紧忘记他,去你的fio命令


测试 文件 命令 系统 参数 大小 结果 设备 硬盘 基准 引擎 方式 时间 模式 线程 进程 面的 顺序 支持 性能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技创新与互联网经济 易互联网科技有限公司 成都互联网科技公司 互联网 视角下的科技创新 互联网金融 科技创新 互联网科技咨询 成都仁贤领冠互联网科技有限公司 博兴的互联网电子科技公司 互联网教育科技公司vipkid 成都铂石互联网科技做什么的 岳阳华臻互联网科技有限公司 华夏互联网科技业 国大互联网教育科技有限公司工作 互联网科技大赛获奖感言 华中科技大学互联网的牛人 电子商务与互联网科技的关系 济南小医互联网科技有限公司招聘 同城互联网络科技 马化腾互联网科技教学 株洲百竞科技的互联网营销顾问 中国互联网科技股 互联网科技战争 奇酷互联网科技公司 互联网科技论坛 玖二柒互联网科技公司待遇 广州慧亚互联网科技怎么样 南平创想时代互联网科技有限公司 易企秀互联网科技是做什么的 科技互联网专业务虚会材料 利用互联网等科技手段
0