【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
相关推荐
xyliiiiiL4 分钟前
一文总结常见项目排查
java·服务器·数据库
小麦嵌入式44 分钟前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
刘若水1 小时前
Linux: 进程信号初识
linux·运维·服务器
chem41111 小时前
Conmon lisp Demo
服务器·数据库·lisp
渗透测试老鸟-九青2 小时前
面试经验分享 | 成都渗透测试工程师二面面经分享
服务器·经验分享·安全·web安全·面试·职场和发展·区块链
阳小江2 小时前
Docker知识点
运维·docker·容器
m0_555762902 小时前
QT 动态布局实现(待完善)
服务器·数据库·qt
极客柒2 小时前
RustDesk 开源远程桌面软件 (支持多端) + 中继服务器伺服器搭建 ( docker版本 ) 安装教程
服务器·docker·开源
只是橘色仍温柔3 小时前
xshell可以ssh连接,但vscode不行
运维·vscode·ssh
IT里的交易员3 小时前
【系统】换硬盘不换系统,使用WIN PE Ghost镜像给电脑无损扩容换硬盘
运维·电脑