fio测试步骤

安装fio

fio-3.7建议直接使用yum的方式安装,CentOS 7.6下直接使用以下命令即可安装:

1
yum -y install fio 

也可以采用以下的方式下载源码包编译安装。

  1. 下载fio压缩包到所有client的“/home”目录下。

    下载链接:https://git.kernel.dk/cgit/fio/snapshot/fio-3.7.tar.gz

  2. 所有客户端解压fio。

    1
    cd /home && tar -zxvf fio-3.7.tar.gz
    

  3. 进入fio解压后的目录。

    1
    cd fio-3.7
    

  4. 安装rbd引擎依赖。

    1
    yum -y install librbd-devel
    

    安装librbd-devel需要配置ceph源,具体配置方法请参考《Ceph块存储 部署指南(CentOS 7.6&openEuler 20.03)》中“配置部署环境”相关内容。

  5. 编译安装fio。

    1
    ./configure && make && make install
    

fio测试模型

fio通过执行工作负载配置文件运行,选取其中一台客户端执行即可,该客户端会通过负载配置文件中的其他客户端IP地址等信息自动登录到其他客户端执行测试。测试前需要先创建若干块设备镜像(image),fio会直接对这些image进行读写测试。

创建fio工作负载

本文以1个Ceph客户端为例,每个客户端映射了3个RBD块设备,每个块设备读写最大容量为20G为例。下文以client1创建1MB顺序写工作负载为例,需要为每个client同时创建3个image配置文件。

  1. 创建第一个image配置文件。

    1
    vi 1024Kclient1_image1write.fio
    
    [global]  
    ioengine=rbd  
    clientname=admin  
    pool=vdbench  
    size=100G  
    direct=1  
    numjobs=1  
    runtime=300  
    ramp_time=10  
    log_avg_msec=500  
    thread  
    time_based  
    rbdname=image1  
    [1024K-write]  
    bs=1024K  
    rw=write  
    iodepth=64  
    write_bw_log=1024K-write  
    stonewall  
    buffer_compress_percentage=40

  2. 创建第二个image配置文件。

    1
    vi 1024Kclient1_image2write.fio
    
    [global]  
    ioengine=rbd  
    clientname=admin  
    pool=vdbench  
    size=100G  
    direct=1  
    numjobs=1  
    runtime=300  
    ramp_time=10  
    log_avg_msec=500  
    thread  
    time_based  
    rbdname=image2  
    [1024K-write]  
    bs=1024K  
    rw=write  
    iodepth=64  
    write_bw_log=1024K-write  
    stonewall  
    buffer_compress_percentage=40

  3. 创建第三个image配置文件。

    1
    vi 1024Kclient1_image3write.fio
    
    [global]  
    ioengine=rbd  
    clientname=admin  
    pool=vdbench  
    size=100G  
    direct=1  
    numjobs=1  
    runtime=300  
    ramp_time=10  
    log_avg_msec=500  
    thread  
    time_based  
    rbdname=image3  
    [1024K-write]  
    bs=1024K  
    rw=write  
    iodepth=64  
    write_bw_log=1024K-write  
    stonewall  
    buffer_compress_percentage=40

buffer_compress_percentage=40是测试压缩时用到的参数。加上此参数,fio写入的数据可被压缩为一定比例。如果不需要测试压缩,可以将此字段删除。

执行测试用例

  1. 启动fio服务。

    1
    fio -S &
    

  2. 在client1上执行测试用例(以image1write为例)。

    1
    fio --client=client1 ./1024Kclient1_image1write.fio --client=client1 ./1024Kclient1_image2write.fio --client=client1 ./1024Kclient1_image3write.fio   --output=./1mwrite.log
    

查看测试结果

测试完成后会在当前目录下1mwrite.log,包含各项测试数据。