编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

详解Linux磁盘IO测试工具--FIO,运维必备神器

wxchong 2024-09-07 01:33:54 开源技术 8 ℃ 0 评论

概念

fio是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。

注意: 性能测试建议直接通过写裸盘的方式进行测试,会得到较为真实的数据。但直接测试裸盘会破坏文件系统结构,导致数据丢失,请在测试前确认磁盘中数据已备份。

以下基于centos7系统做测试。


安装步骤

#yum安装 
yum install libaio-devel fio -y
#手动安装 
yum install 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

这里我采用yum的方式安装。


FIO的用法

FIO分顺序读,随机读,顺序写,随机写,混合随机读写模式。

--顺序读模式:
fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=10G -numjobs=30 -runtime=1000 \
-group_reporting -name=mytest
--随机读模式:
fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=10G -numjobs=30 -runtime=1000 \
-group_reporting -name=mytest
--顺序写模式:
fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=10G -numjobs=30 -runtime=1000 \
-group_reporting -name=mytest
--随机写模式:
fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=10G -numjobs=30 -runtime=1000 \
-group_reporting -name=mytest
--混合随机读写模式:
fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=10G -numjobs=30 \
-runtime=100 -group_reporting -name=mytest -ioscheduler=noop

说明:

filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。

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引擎使用pync方式

rwmixwrite=30 在混合读写的模式下,写占30%

group_reporting 关于显示结果的,汇总每个进程的信息。

lockmem=1G 只使用1g内存进行测试。

zero_buffers 用0初始化系统buffer。

nrfiles=8 每个进程生成文件的数量。


篇幅有限,这块内容就介绍到这了,后面再介绍下怎么去测试磁盘的IOPS,感兴趣的朋友可以关注一下~

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表