【Linux】磁盘性能压测-FIO工具

一、FIO工具介绍

fio(Flexible I/O Tester)是一个用于评估计算机系统中 I/O 性能的强大工具。 官网:fio - fio - Flexible IO Tester

注意事项!

1、不要指定文件系统名称(如/dev/mapper/centos-root),避免造成文件系统损坏。

2、最好测试前备份重要数据

二、安装FIO

#本次安装版本为3.20版本,往上版本需要gcc版本大于4.9版本,3.20版本百度网盘下载链接: https://pan.baidu.com/s/1kX7NLxwhRcFLOvnOdRp5Vg?pwd=rdzt 提取码: rdzt

bash 复制代码
[root@dt1 yixing]# wget https://git.kernel.dk/cgit/fio/snapshot/fio-3.20.tar.gz
[root@dt1 yixing]# tar -xvf fio-3.20.tar.gz
[root@dt1 fio-3.37]# cd fio-3.20
[root@dt1 fio-3.20]# yum install gcc libaio-devel -y
[root@dt1 fio-3.20]# ./configure --prefix=/usr/local/fio-3.20
[root@dt1 fio-3.20]# make && make install
[root@dt1 fio-3.20]# ln -s /usr/local/fio-3.20/bin/fio /usr/bin/fio
#查看版本
[root@dt1 fio-3.20]# fio -v

三、磁盘性能测试

参数

  • -filename=/dev/vdb #指定测试的目标文件或设备,最好不要指定文件系统名称 (如/dev/mapper/centos-root),避免造成文件系统损坏。

  • -direct=1 #使用直接 I/O 模式,即绕过文件系统缓存,直接访问磁盘。这通常 用于测量真实的磁盘性能。

  • **-iodepth=4 #**每个作业的 I/O 深度。如果模拟高并发负责情况,值可写32。

  • -rw=randwrite #指定测试中使用的读写模式。randwrite 表示随机写入,即测试将 会对设备进行随机位置的写入操作。还有randread(随机读)read (顺序读)write(顺序写)randrw(混合随机读写)

  • -ioengine=libaio # 指定 I/O 引擎。libaio 是 Linux 下的异步 I/O 引擎,用于提高性能 并允许并发操作。

  • -bs=4k # 每个 I/O 操作的块大小。这里设置为 4KB,即每次读写操作的数据 块大小为 4KB。

  • **-size=10G #**指定测试文件或设备的大小。

  • -numjobs=4 # 同时运行的作业数。这里设置为 4,表示 fio 将会启动 4 个并发作 业来执行测试。不要超过cpu核数。

  • **-runtime=180 #**测试的运行时间。这里设置为 180 秒(3分钟),即测试将持续运 行3 分钟。

  • **-group_reporting #**汇总报告输出。当多个作业同时运行时,使用此选项可以合并它们 的结果输出。

  • **-name=iotest_randwrite #**为这个测试任务指定一个名称

测试参数值建议

  • 测试吞吐量和延迟:顺序I/O、较大的块大小
  • 测试IOPS和延迟:随机I/O、较小的块大小

IOPS:磁盘在1s中进行几次io读写操作

吞吐量:磁盘每秒IO的流量

测试随机写IOPS

bash 复制代码
#将创建/data/yixing/test文件
[root@dt1 yixing]# fio -filename=/data/yixing/test -direct=1 -iodepth=4 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=4 -runtime=60 -group_reporting -name=randwrite
#删掉测试文件
[root@dt1 yixing]# rm -rf test

#如果报一下错误,加上-allow_mounted_write=1

fio: /dev/vdb appears mounted, and 'allow_mounted_write' isn't set. Aborting.

测试随机读IOPS

bash 复制代码
#将创建/data/yixing/test文件
[root@dt1 yixing]# fio -filename=/data/yixing/test -direct=1 -iodepth=4 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=4 -runtime=60 -group_reporting -name=randread
[root@dt1 yixing]# rm -rf test

测试顺序读吞吐量

bash 复制代码
#将创建/data/yixing/test文件
[root@dt1 yixing]# fio -filename=/data/yixing/test -direct=1 -iodepth=4 -rw=read -ioengine=libaio -bs=4k -size=4G -numjobs=4 -runtime=180 -group_reporting -name=read
[root@dt1 yixing]# rm -rf test

测试顺序写吞吐量

bash 复制代码
#将创建/data/yixing/test文件
[root@dt1 yixing]# fio -filename=/data/yixing/test -direct=1 -iodepth=4 -rw=write -ioengine=libaio -bs=4k -size=4G -numjobs=4 -runtime=180 -group_reporting -name=write
相关推荐
眠修4 分钟前
Kuberrnetes 服务发布
linux·运维·服务器
好奇的菜鸟1 小时前
Docker 配置项详解与示例
运维·docker·容器
xcs194051 小时前
集运维 麒麟桌面版v10 sp1 2403 aarch64 离线java开发环境自动化安装
运维·自动化
BAOYUCompany1 小时前
暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目
运维·服务器
超龄超能程序猿2 小时前
Bitvisse SSH Client 安装配置文档
运维·ssh·github
奈斯ing2 小时前
【Redis篇】数据库架构演进中Redis缓存的技术必然性—高并发场景下穿透、击穿、雪崩的体系化解决方案
运维·redis·缓存·数据库架构
鳄鱼皮坡3 小时前
仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器
运维·服务器
即将头秃的程序媛3 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
fangeqin3 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
小Mie不吃饭3 小时前
FastAPI 小白教程:从入门级到实战(源码教程)
运维·服务器