- fio简介
fio是一个性能测试工具,可以针对文件系统或者裸盘进行性能测试。本教程以裸盘进行说明。
- fio的安装
对于centos系统,执行执行yum install fio即可,其它系统请自行查找资料安装。
fio测试不同设备的方法:
测试iscsi:使用iscsi将lun挂载给客户端,然后客户端使用fio对多路径设备/dev/mapper/mpathX进行读写测试即为iscsi性能测试:
fio --ioengine=libaio -filename=/dev/mapper/mpatha
测试krbd:在存储管理界面将lun映射给本地客户端,然后对/dev/rbdX进行读写即为krbd性能测试
fio --ioengine=libaio -filename=/dev/rbd0
测试librbd(对fio有版本要求,2.X有部分不支持):需要先在客户端安装rbd-client,安装完rbd-client之后,需要将存储节点/var/lib/ceph/etc/ceph/XXXXX.conf 文件scp到客户端节点的相同目录下,在客户端节点与存储public网络连接之后即可使用librbd进行测试:
fio --ioengine=rbd -rbdname=120845d0-438b-11eb-81fc-246e9609b932 -pool=4eb9c4b0-433e-11eb-b68a-246e9609b932 -clientname=admin
- fio的使用
读写注意事项:没有写过的数据的盘做读操作之前需要进行写一遍的操作,否则会存在读空数据的情况,估计读到bitmap就返回数据了,性能会超级高,不能代表存储实际性能。特殊场景需要构造磁盘存在空穴的情况,也可以使用fio进行进行构造。
首先,我们来把磁盘写一遍
fio --ioengine=libaio -filename=/dev/mapper/mpatha -direct=1 -rw=rw -bs=1024k -rwmixread=0 -iodepth=128 -numjobs=1 -group_reporting -name=test
ioengine fio3.7版本中就支持25种不同的引擎模式,其中常用的为libaio(linux原生异步io,我们的测试也基本上是在这个模型下测试的);rbd即使用librbd方式来执行读写(相比iscsi方式访问压力会更稳定)。默认的ioengine为sync,即一个io写下去了之后会确认完成读写才会执行下一个io。还有一个是psync,比sync又多了个原子操作的概念。
Filename即你要测试裸磁盘或者文件系统里的文件
Direct 通常和libaio一起使用,=1即不使用缓存
Rw定义读写模型,有9个定义,常用的有read write randread randwrite rw(readwrite) randrw
Rwmixread/rwmixwrite 读写模型种读和写的比例,默认为50,只定义一个即可。配合rw定义的rw模型使用
Bs 单个io读写的块大小
Iodepth 读写的队列深度,类似于一个车道上排队的车辆数
Numjobs 读写的job个数,类似于有几个车道
Group_reporting -name=两个一起用,通常用来区分不同的fio任