linux磁盘IO测试工具_FIO
本文收集于https://www.toutiao.com/a6715391531496243720/,但未经测试,仅用于收藏,转载请直接表明原文出处 .
前言
fio是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。
注意: 性能测试建议直接通过写裸盘的方式进行测试,会得到较为真实的数据。但直接测试裸盘会破坏文件系统结构,导致数据丢失,请在测试前确认磁盘中数据已备份.
以下基于centos7系统做测试。
1. 安装步骤
#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
2. 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
2.1. 说明:
filename=/dev/sdb1
测试文件名称,通常选择需要测试的盘的data目录。direct=1
测试过程绕过机器自带的buffer。使测试结果更真实。rw=randwrite
测试随机写的I/Orw=randrw
测试随机写和读的I/Obs=16k
单次io的块文件大小为16kbsrange=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
每个进程生成文件的数量。