服务器大本营

 找回密码
 我要入营

微信扫码 , 快速开始

QQ登录

只需一步,快速开始

查看: 350|回复: 0

服务器如何测试存储盘性能是否正常?FIO磁盘压测工具的使用详解

[复制链接]

2万

敬重

585

主题

207

精华

管理员

积分
7194

启航之章进阶之印里程之碑突破之证飞跃之星蜕变之勋卓越之路龙年行大运

QQ
发表于 2024-6-29 10:31:16 | 显示全部楼层 |阅读模式

我要入营,结交更多好友,开启更多功能,轻松玩转服务器大本营!

您需要 登录 才可以下载或查看,没有账号?我要入营

x
针对磁盘的压力性能测试工具有很多,简单的测试可以通过dd命令实现,而比较专业和强大的磁盘IO测试工具,当然首推FIO了。本文将和你们分享FIO工具安装和用法,希望可以帮助到你们~想要了解FIO工具首先你得知道顺序读写和随机读写这两个概念。

随机读取:写入是根据磁盘数据分布进行随机读写,可能数据的读、写并不在连续的磁盘空间上,因此磁头寻址时间长、负荷大,每段数据都有地址码,通过地址码进行数据段读取。

顺序读取:写入是根据磁盘数据分布进行连续读写,由于数据分布连续,寻址时间短,中间没有地址码。

通常机械硬盘主要是看顺序读写性能,SSD主要看随机读写性能。

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等操作系统。

实操
注意:测试的盘最好是数据盘,系统盘若是有大量的写操作容易造成损坏,导致系统盘崩溃,如果你用的是VM虚拟机,可以直接添加一块盘测试

下载压测工具命令
  1. yum install fio -y
复制代码

安装好后,查看版本命令
  1. fio -v
复制代码

以下是fio命令的用法:
参数 解析
directory=/ 被测文件挂载的目录,多个目录使用:符号分隔
filename=/dev/vda1 被测文件名,多个文件则使用:符号分隔
direct=1         使用非缓存I/O,使测试磁盘的结果更真实,默认为False,可以用0和1表示
rw=read 测试顺序读(100%顺序读)
rw=write 测试顺序写(100%顺序写)
rw=randread 测试随机读(100%随机读)
rw=randwrite 测试随机写(100%随机写)
rw=randrw 测试随机读写(读写各占50%)
rw=rw,rwmixread=70 测试顺序读写(写占比为70%)
rw=randrw,rwmixwrite=30 在混合读写的模式下,写占30%
rw=trim/randtrim/trimwrite 磁盘修剪,需要磁盘支持此功能,可根据读写一样进行配置
bs=4k 单次I/O的块大小,默认4k
bs=4k,8K 单次以4k块大小读取,以8k写入和修剪
bs=16k,32K 单次以16k读取,以32k大小写入,以默认大小4k修剪
bsrange=8k-1M 同上,指定数据块的大小范围
size=1G 每个线程读写的数据量为1GB
thread=1 使用pthread_create创建线程,默认使用fork创建
numjobs=2 克隆此次测试的线程/进程数量,可用于设置更多执行相同操作的线程/进程
group_reporting 每个线程的测试结果汇总后输出
allow_mounted_write=1 允许写入操作,某些平台可能即使有此参数也无法写入
runtime=100         测试时间,若测试提取完成则提前结束并输出结果,若到达时间后测试尚未完成则会强制结束并输出结果
ramp_time=10 在测试开始前先执行10秒,可以理解为忽略前10秒的测试结果,有助于得到更稳定的测试数据
ioengine=libaio|sync|自定义 指定io引擎,可自定义,官方也提供了多种方式
iodepth=2 队列深度为2,默认为1
name=fioTest 定义本次测试任务名称
output=testRestult 输出测试结果到指定文件中
lockmem=1G 只使用1G内存进行测试,模拟较少内存时使用
stonewall 等待上一个测试任务结束,再启动此当前任务


了解命令用法后现在开始测试

实例:
  1. fio -filename=/dev/vda1 -ioengine=sync -direct=1 -thread=1 -iodepth=1 -group_reporting  -rw=randwrite -allow_mounted_write=1 -bs=4k -size=3G -runtime=60 -name=test-fio
复制代码

这个命令是测试磁盘文件/dev/vda1随机写入操作,使用同步I/O引擎sync,测试配置为使用非缓存I/O,1个线程,I/O深度为1,汇总输出一份报告,允许写入磁盘,块大小为4k,测试文件2G,运行时间60秒,本次测试命名为test-fio

可以看到IPOS和吞吐量,这是随机写入的

服务器如何测试存储盘性能是否正常?FIO磁盘压测工具的使用详解

服务器如何测试存储盘性能是否正常?FIO磁盘压测工具的使用详解


还可以用iostat -x 命令实时观察磁盘的压测情况,1是每秒输出持续使用情况,安装命令:
  1. yum install sysstat -y
复制代码

使用fio命令可以测出来我们磁盘的IOPS和吞吐量,希望对你们有帮助~

感谢您的阅读,服务器大本营-技术文章内容集合站,助您成为更专业的服务器管理员!
一入IDC深似海,从此你我是良人!
您需要登录后才可以回帖 登录 | 我要入营

本版积分规则

Loading...

QQ|Archiver|手机版|网站地图|服务器大本营 ( 赣ICP备2021009089号 )

GMT+8, 2024-9-8 08:58 , Processed in 0.119095 second(s), 28 queries , Gzip On.

Powered by 服务器大本营

© 2021-2023 联系飞飞

快速回复 返回顶部 返回列表