[转帖]fio测试硬盘性能

fio,测试,硬盘,性能 · 浏览次数 : 0

小编点评

**安装 FIO** 1. 下载并安装 FIO: ```bash wget https://github.com/axboe/fio/releases/fio-2.1.10.tar.gz# 解压Fio源码。tar -zxvf fio-2.1.10.tar.gz#编译并安装Fio。cd fio-fio-2.1.10makemake install# 检查安装的Fio版本号。 ``` **测试 FIO** 1. 选择测试硬盘或文件系统。 2. 使用 `fio --version` 命令检查 FIO 版本。 3. 在空闲的、未保存重要数据的硬盘上进行 FIO 测试。 4. 在测试完后重新制作被测硬盘的文件系统。 5. 测试硬盘性能时,建议直接测试裸数据盘。 6. 使用以下参数调整测试: - `rw`、`iodepth` 和 `bs` 参数控制读/写数据块大小。 - `1rw读写模式` 用于顺序读写测试。 - `readtime_based` 参数启用时间模式。 - `N/Aruntime` 设置测试时长。 7. 使用 `fio-readsizeI/O` 等命令进行 I/O 测试。 **常用参数说明** | 参数名 | 说明 | |---|---| | `bs` | 块大小 (4k、8k、16k) | | `iodepth` | I/O 队列深度 | | `direct` | 使用 direct 模式 | | `rw` | 读取/写入模式 | | `readtime_based` | 使用时间模式 | | `N/Aruntime` | 设置测试时长 (300 秒) | | `N/Anorandommap` | 在随机 I/O 时覆盖文件 | | `N/Arandrepeat` | 随机序列可重复次数 | | `0group_reporting` | 打印整个 group 的统计值 | | `namejob` | 打印 job 的名称 | | `filename` | 测试对象名称 | | `refill_buffers` | refill I/O缓冲区 | | `norandommap` | 覆盖文件每个块 | | `randrepeat` | 随机序列重复次数 | | `time_based` | 使用时间模式 | | `N/Anamejob` | 不打印 job 的名称 | | `filename` | 测试对象名称 |

正文

FIO 是测试磁盘性能的工具,用来对硬件进行压力测试和验证。
使用 FIO 时,建议配合使用 libaio 的 I/O 引擎进行测试。

软件安装

编译安装

fio各版本下载地址如下:

https://github.com/axboe/fio/releases

    以“fio-2.1.10”版本为例,下载源码,并编译安装。

    #安装依赖
    yum install libaio libaio-devel -y
    #下载Fio源码。
    wget https://github.com/axboe/fio/archive/fio-2.1.10.tar.gz
    # 解压Fio源码。
    tar -zxvf fio-2.1.10.tar.gz
    #编译并安装Fio。
    cd fio-fio-2.1.10
    make
    make install
    # 检查安装的Fio版本号。
    fio --version
    #回显信息如下,则Fio安装成功。
    fio-2.1.10
    

      注:有可能需要退出当前shell,从新登陆一下

      yum安装

      如果对版本没有要求,可以直接yum安装:

      yum install libaio libaio-devel -y
      yum install -y fio
      

        衡量指标

        • IOPS:每秒读/写次数,单位为次(计数)。存储设备的底层驱动类型决定了不同的 IOPS。
        • 吞吐量:每秒的读写数据量,单位为MB/s。
        • 时延:I/O 操作的发送时间到接收确认所经过的时间,单位为秒。

        测试建议

        • 建议在空闲的、未保存重要数据的硬盘上进行 FIO 测试,并在测试完后重新制作被测硬盘的文件系统。
        • 测试硬盘性能时,建议直接测试裸数据盘(如 /dev/vdb)。
        • 测试文件系统性能时,推荐指定具体文件测试(如 /data/file)。

        常用参数说明

        不同场景的测试公式基本一致,只有 rw、iodepth 和 bs(block size)三个参数的区别。例如,每个工作负载适合最佳 iodepth 不同,取决于您的特定应用程序对于 IOPS 和延迟的敏感程度。

        参数名说明样例
        bs每次请求的块大小。取值包括4k,8k,16k等。4k
        ioengineI/O 引擎。推荐使用 Linux 的异步 I/O 引擎。libaio
        iodepth请求的 I/O 队列深度。1
        direct指定 direct 模式。
        True(1)表示指定 O_DIRECT 标识符,忽略 I/O 缓存,数据直写。
        False(0)表示不指定 O_DIRECT 标识符。
        默认为 True(1)。
        1
        rw读写模式。取值包括顺序读(read)、顺序写(write)、随机读(randread)、随机写(randwrite)、混合随机读写(randrw)和混合顺序读写(rw,readwrite)。read
        time_based指定采用时间模式。无需设置该参数值,只要 FIO 基于时间来运行。N/A
        runtime指定测试时长,即 FIO 运行时长.300
        refill_buffersFIO 将在每次提交时重新填充 I/O 缓冲区。默认设置是仅在初始时填充并重用该数据。N/A
        norandommap在进行随机 I/O 时,FIO 将覆盖文件的每个块。若给出此参数,则将选择新的偏移量而不查看 I/O 历史记录。N/A
        randrepeat随机序列是否可重复,True(1)表示随机序列可重复,False(0)表示随机序列不可重复。默认为 True(1)。0
        group_reporting多个 job 并发时,打印整个 group 的统计值。N/A
        namejob 的名称。fio-read
        sizeI/O 测试的寻址空间。不指定的时候,会全盘测试。如果是文件测试,不指定大小的话,会报错。100G
        filename测试对象,即待测试的磁盘设备名称。/dev/sdb
        numjobs测试进程数量16

        测试用例

        裸盘iops测试

        写iops

        fio -numjobs=16 -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randwrite -time_based -runtime=300  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-iops -filename=/dev/vdb
        

          写iops关注以下输出
          在这里插入图片描述

          读iops

          fio -numjobs=16 -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randread -time_based -runtime=300  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-iops -filename=/dev/vdb
          

            读iops关注以下输出:
            在这里插入图片描述

            裸盘带宽测试(顺序读写)

            顺序写

            fio --numjobs=16 -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=write -time_based -runtime=300  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-write-throughput -filename=/dev/vdb
            

              顺序读

              fio --numjobs=16 -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=read -time_based -runtime=300  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-read-throughput -filename=/dev/vdb
              

                裸盘延迟

                写延迟

                fio --numjobs=16 -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randwrite -time_based -runtime=300  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-lat -filename=/dev/vdb
                

                  读延迟

                  fio --numjobs=16 -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randread -time_based -runtime=300  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-lat -filename=/dev/vdb
                  
                    文章知识点与官方知识档案匹配,可进一步学习相关知识
                    CS入门技能树Linux入门初识Linux24425 人正在系统学习中

                    与[转帖]fio测试硬盘性能相似的内容:

                    [转帖]fio测试硬盘性能

                    FIO 是测试磁盘性能的工具,用来对硬件进行压力测试和验证。 使用 FIO 时,建议配合使用 libaio 的 I/O 引擎进行测试。 软件安装 编译安装 fio各版本下载地址如下: https://github.com/axboe/fio/releases 以“fio-2.1.10”版本为例,下载

                    [转帖]Windows磁盘性能压测(2)-Fio

                    http://www.manongjc.com/detail/59-qftscgqzitmxpaw.html 目录 一、腾讯云官网硬盘性能指标 二、使用fio测试硬盘性能指标 1. 测试工具相关 2. 单路随机读写时延测试 2.1测试硬盘的随机读时延 2.2测试硬盘的随机写时延 2.3测试硬盘的随机

                    [转帖]FIO磁盘性能测试工具

                    https://www.cnblogs.com/lyhabc/p/16708771.html 简介 一般我们测试硬盘或者存储的性能的时候,会用Linux系统自带的dd命令,因为是自带命令,简单易使用,因此一些客户喜欢使用dd命令来测试磁盘的读写性能。 但是用dd命令来测试性能,有如下问题: 1. d

                    [转帖]FIO磁盘性能测试工具

                    https://www.cnblogs.com/lyhabc/p/16708771.html 简介 一般我们测试硬盘或者存储的性能的时候,会用Linux系统自带的dd命令,因为是自带命令,简单易使用,因此一些客户喜欢使用dd命令来测试磁盘的读写性能。 但是用dd命令来测试性能,有如下问题: 1. d

                    【转帖】FIO磁盘性能测试工具

                    https://www.jianshu.com/p/70b8c7d5d217 FIO工具介绍 FIO 工具是一款用于测试硬件存储性能的辅助工具,兼具灵活性、可靠性从而从众多性能测试工具中脱颖而出。磁盘的 I/O 是衡量硬件性能的最重要的指标之一,而 FIO 工具通过模拟 I/O负载对存储介质进行压力

                    [转帖]文件系统读写性能fio测试方法及参数详解

                    简介 Fio 是一个 I/O 工具,用来对硬件进行压力测试和验证,磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。 Fio支持13种不同的I/O引擎,包括:sync, mmap, libaio, posixaio, SG v3, splice, null, netw

                    [转帖]磁盘测试----fio

                    https://www.bbsmax.com/A/WpdKAgmnJV/ 测试前提 我们在进行测试时,都会分清楚: 测试对象:要区分硬盘、SSD、RAID、SAN、云硬盘等,因为它们有不同的特点 测试指标:IOPS和MBPS(吞吐率),下面会具体阐述 测试工具:Linux下常用Fio、dd工具, W

                    [转帖]fio 命令入门到跑路

                    fio是一种I / O工具,用于基准测试和压力/硬件验证。它支持19种不同类型的I / O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等),I / O优先级(适用于较新的Linux内核)

                    [转帖]【详细齐全】FIO使用方法 及参数解析(文章末尾)

                    linux 使用FIO测试磁盘iops 方法详解 FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎, 包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi,

                    [转帖]FIO使用说明

                    FIO介绍: FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。FIO是一个可以产生很多线程或进程并执行用户指定的特定类型I/O操作的工具,FIO的典型用途是编写和模拟的I/O负载匹配的作业文件。也就是