CN104850479A - 一种基于fio的硬盘自动化测试方法 - Google Patents

一种基于fio的硬盘自动化测试方法 Download PDF

Info

Publication number
CN104850479A
CN104850479A CN201510249631.1A CN201510249631A CN104850479A CN 104850479 A CN104850479 A CN 104850479A CN 201510249631 A CN201510249631 A CN 201510249631A CN 104850479 A CN104850479 A CN 104850479A
Authority
CN
China
Prior art keywords
test
fio
hard disk
script
parameter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510249631.1A
Other languages
English (en)
Inventor
苗永威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201510249631.1A priority Critical patent/CN104850479A/zh
Publication of CN104850479A publication Critical patent/CN104850479A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于FIO的硬盘自动化测试方法,所述方法具体实现过程为:1)根据测试需求人工修改测试脚本参数;2)脚本根据参数自动选择对应测试模块;3)测试模块根据参数自动开始测试;4)完成测试并输出结果到日志。本发明方法,摆脱了FIO单条测试命令的局限性,能够对硬盘同时进行多个线程的多种模式的读写性能测试、稳定性测试及压力测试,有效的提高了FIO工具的易用性,可以根据不同需求调整测试参数和配置文件,满足越来越多不同客户的硬盘测试需求,极大的提高了公司的人均产能,降低测试成本,增强竞争力。

Description

一种基于FIO的硬盘自动化测试方法
技术领域
本发明涉及服务器技术IO测试领域,具体涉及一种基于FIO的硬盘自动化测试方法,可以实现针对不同配置,使用FIO工具对硬盘进行性能、稳定性等自动化测试方法。
背景技术
随着IT行业的高速发展,信息化、大数据及云计算的发展对服务器性能要求越来越高。硬盘作为数据存储的载体,性能指标直接影响服务器的整体呈现。做为国内领先的服务器硬件供应商,各大公司都在不断提高对硬盘性能测试的质量及效率。
Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高。
FIO是一个文件***的benchmark工具,可以测试各种操作***文件***的读写性能,可以进行不同测试块大小、不同模式下的硬盘性能测试。但是FIO只提供了简单的参数,单条命令的使用有非常大的测试局限,很难做到对硬盘进行较为***的性能及稳定性测试。
如果能够通过shell语言编写自动化的测试脚本,并手动进行测试参数的调整,将会极大提高硬盘性能及稳定性测试的质量及效率。
发明内容
本发明要解决的技术问题是:本发明针对以上不足之处,提供一种测试实用性强、可以对FIO的测试参数进行扩展,以适应各种性能及稳定性测试需求的方法。
本发明所采用的技术方案为:
一种基于FIO的硬盘自动化测试方法,其具体实现过程为:
1)根据测试需求人工修改测试脚本参数;
2)脚本根据参数自动选择对应测试模块;
3)测试模块根据参数自动开始测试;
4)完成测试并输出结果到日志。
所述方法脚本包含内容如下:
对模块变量及部分参数进行初始定义;
通过usage命令,对脚本可用到的参数进行说明;
套用getopts命令,对脚本命令行参数进行定义,
根据if语句的判断,调用base_test测试模块;
利用for循环嵌套,采用不同线程不同读写策略不同数据块大小进行测试并输出结果至log档;
根据设置参数运行带宽测试;
利用不同数据块大小、不同线程及不同读写策略运行稳定性测试。
所述方法包含性能、稳定性、压力等多种模块化测试,测试线程数、测试块大小、测试文件大小、测试模式等可以根据实际需求进行调节。
本发明的有益效果为:
本发明方法,摆脱了FIO单条测试命令的局限性,能够对硬盘同时进行多个线程的多种模式的读写性能测试、稳定性测试及压力测试,有效的提高了FIO工具的易用性,可以根据不同需求调整测试参数和配置文件,满足越来越多不同客户的硬盘测试需求,极大的提高了公司的人均产能,降低测试成本,增强竞争力。
说明书附图
图1为本发明方法实现流程图。
具体实施方式
下面根据说明书附图,结合具体实施方式对本发明进一步说明:
如图1所示,一种基于FIO的硬盘自动化测试方法,其具体实现过程为:
1)根据测试需求人工修改测试脚本参数;
2)脚本根据参数自动选择对应测试模块;
3)测试模块根据参数自动开始测试;
4)完成测试并输出结果到日志。
所述方法shell脚本内容如下:
IS_FRAG=false
IS_STRESS=false
IS_BASE=false
IS_FILESYSTEM=false
IS_IOPS=false
IO_ENGINE=libaio
FILE_SIZE=100%
对模块变量及部分参数进行初始定义,如默认IO engine为libaio模式;
usage(){
    echo "$0 [-f] [-s] [-e io_engine] [-h] [-b] [-d dev_name] [-m] [-p partion] [-w workdir] [-r] [-i iops]"
    echo "-f fragment"
    echo "-s stress test"
    echo "-e ioengine type , default type is libaio"
    echo "-b raw device base test"
    …
    …
    echo "example:"
    echo "  raw device fragment:  nohup &>/dev/null sh iotest.sh -f -d /dev/sda &"
    echo "  raw device base test:  nohup &>/dev/null sh iotest.sh -b -d /dev/sda &"
    …
    …
    echo "If you have any question, contact with me : miaoywinspur.com"
    exit
usage说明,对脚本可用到的参数进行说明,例如:执行iotest.sh –h会屏幕print;
while getopts "hsfbe:d:mp:w:ri:" arg
do
    case $arg in
        h)
        usage;;
        s)
        IS_STRESS=true;;
        f)
        IS_FRAG=true;;
        b)
        IS_BASE=true;;
        …
        …
        w)
        workdir=${OPTARG};;
        r)
        IS_IOPS=true;;
        i)
        define_iops=${OPTARG};;
    esac
done
套用getopts方式,对脚本命令行参数进行定义,例如执行iotest.sh –b 会自动将“IS_BASE=true”;
if ${IS_FRAG};then
    fragment
fi
if ${IS_BASE};then
    base_test
fi
if ${IS_IOPS};then
    fixed_iops_test
fi
根据if语句的判断,调用base_test测试模块;
base_test(){
    for RW in write randwrite read randread
    do
        for BS in 4k 16k 64k 512k
        do
            for THREADS in 1 2 8 16 32 64 256
            do
                if [ $THREADS -le 32 ];then
                fio --readwrite=${RW} --bs=${BS} --numjobs=${THREADS} --runtime=300s ${PARA_LINE} --filename=${DEV_LIST} --name=${RW}_${BS}_${THREADS} | tee -a ${RW}.log
                else
                iodepth=$(($THREADS/32))
                PARA_LINE2="--end_fsync=0 --group_reporting --direct=1 --ioengine=${IO_ENGINE} --iodepth=$iodepth --time_based  --invalidate=1 --norandommap --randrepeat=0 --exitall --size=${FILE_SIZE}"
                fio --readwrite=${RW} --bs=${BS} --numjobs=32 --runtime=300s ${PARA_LINE2} --filename=${DEV_LIST} --name=${RW}_${BS}_${THREADS} | tee -a ${RW}.log
                fi
            done
        done
        sleep 60s
    done
以上部分是利用for循环嵌套,采用不同线程不同读写策略不同数据块大小进行测试并输出结果至log档;
        fio --readwrite=read --bs=512k --direct=1 --runtime=300s --end_fsync=0 --ioengine=${IO_ENGINE} --time_based --invalidate=1 --norandommap --randrepeat=0 --group_reporting --numjobs=1 --size=${FILE_SIZE} --filename=${DEV_LIST} --name=BW_read |tee -a BW_read.log
    sleep 60s
    fio --readwrite=write --bs=512k --direct=1 --runtime=300s --end_fsync=0 --ioengine=${IO_ENGINE} --time_based --invalidate=1 --norandommap --randrepeat=0 --group_reporting --numjobs=1 --size=${FILE_SIZE} --filename=${DEV_LIST} --name=BW_write |tee -a BW_write.log
    sleep 60s
以上部分是根据设置参数运行带宽测试;
    # steady
    iostat -xm 1 > 4k_rw_iops &
    fio --readwrite=randrw --rwmixread=70 --bs=4k --runtime=3000s --numjobs=32 ${PARA_LINE}  --filename=${DEV_LIST} --name=4k_rw_iops | tee -a 4k_rw_iops.log
    kill `pidof iostat` > /dev/null
    sleep 30s
    …
    …
    iostat -xm 1 > 16k_w_iops &
    fio --readwrite=randwrite --bs=16k --runtime=3000s --numjobs=32 ${PARA_LINE}  --filename=${DEV_LIST} --name=16k_w_iops  | tee -a 16k_w_iops.log
    kill `pidof iostat` > /dev/null
以上部分是利用不同数据块大小、不同线程及不同读写策略运行稳定性测试;
}
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (3)

1.一种基于FIO的硬盘自动化测试方法,其特征在于,所述方法具体实现过程为:
1)根据测试需求人工修改测试脚本参数;
2)脚本根据参数自动选择对应测试模块;
3)测试模块根据参数自动开始测试;
4)完成测试并输出结果到日志。
2.根据权利要求1所述的一种基于FIO的硬盘自动化测试方法,其特征在于:所述方法脚本包含内容如下:
对模块变量及部分参数进行初始定义;
通过usage命令,对脚本用到的参数进行说明;
套用getopts命令,对脚本命令行参数进行定义,
根据if语句的判断,调用base_test测试模块;
利用for循环嵌套,采用不同线程不同读写策略不同数据块大小进行测试并输出结果至log档;
根据设置参数运行带宽测试;
利用不同数据块大小、不同线程及不同读写策略运行稳定性测试。
3.根据权利要求1或2所述的一种基于FIO的硬盘自动化测试方法,其特征在于:所述方法的测试线程数、测试块大小、测试文件大小、测试模式根据实际需求进行调节。
CN201510249631.1A 2015-05-15 2015-05-15 一种基于fio的硬盘自动化测试方法 Pending CN104850479A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510249631.1A CN104850479A (zh) 2015-05-15 2015-05-15 一种基于fio的硬盘自动化测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510249631.1A CN104850479A (zh) 2015-05-15 2015-05-15 一种基于fio的硬盘自动化测试方法

Publications (1)

Publication Number Publication Date
CN104850479A true CN104850479A (zh) 2015-08-19

Family

ID=53850134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510249631.1A Pending CN104850479A (zh) 2015-05-15 2015-05-15 一种基于fio的硬盘自动化测试方法

Country Status (1)

Country Link
CN (1) CN104850479A (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302725A (zh) * 2015-11-11 2016-02-03 浪潮电子信息产业股份有限公司 一种基于Iozone的文件***性能自动测试方法
CN105389236A (zh) * 2015-12-09 2016-03-09 浪潮电子信息产业股份有限公司 一种基于fio的hba卡自动化测试方法
CN105487952A (zh) * 2015-12-15 2016-04-13 浪潮电子信息产业股份有限公司 一种基于fio的pcie-ssd自动化测试方法
CN105843716A (zh) * 2016-04-01 2016-08-10 浪潮电子信息产业股份有限公司 一种基于mltt的io功能测试方法
CN106502844A (zh) * 2016-10-11 2017-03-15 郑州云海信息技术有限公司 一种测试RAID存储器IO的sAS端口带宽的方法
CN106685747A (zh) * 2015-11-05 2017-05-17 北京出入境检验检疫局检验检疫技术中心 一种云存储均衡性能测试***
CN107368416A (zh) * 2017-07-24 2017-11-21 郑州云海信息技术有限公司 一种Unix***性能测试方法
CN107608841A (zh) * 2017-10-25 2018-01-19 郑州云海信息技术有限公司 硬盘测试文件生成方法、装置、设备及可读存储介质
CN107832180A (zh) * 2017-11-27 2018-03-23 郑州云海信息技术有限公司 一种对硬盘接口依次进行单盘性能自动测试的方法
CN108776638A (zh) * 2018-06-11 2018-11-09 郑州云海信息技术有限公司 一种服务器跑整机fio压力测试的方法及***
CN108874645A (zh) * 2018-06-12 2018-11-23 郑州云海信息技术有限公司 一种整合fio性能数据的方法及***
CN109086176A (zh) * 2018-07-26 2018-12-25 郑州云海信息技术有限公司 一种基于fio的ssd稳态测试方法、装置、设备及存储介质
CN109656475A (zh) * 2018-12-03 2019-04-19 郑州云海信息技术有限公司 一种自动关闭cache的方法、装置、终端及存储介质
CN116340189A (zh) * 2023-05-29 2023-06-27 天翼云科技有限公司 接入业务流程自动化测试方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744759A (zh) * 2013-12-27 2014-04-23 浪潮电子信息产业股份有限公司 一种Linux***下无人值守磁盘性能及稳定性验证方法
CN104503909A (zh) * 2014-12-18 2015-04-08 浪潮(北京)电子信息产业有限公司 一种磁盘io性能的测试方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744759A (zh) * 2013-12-27 2014-04-23 浪潮电子信息产业股份有限公司 一种Linux***下无人值守磁盘性能及稳定性验证方法
CN104503909A (zh) * 2014-12-18 2015-04-08 浪潮(北京)电子信息产业有限公司 一种磁盘io性能的测试方法和装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106685747A (zh) * 2015-11-05 2017-05-17 北京出入境检验检疫局检验检疫技术中心 一种云存储均衡性能测试***
CN105302725A (zh) * 2015-11-11 2016-02-03 浪潮电子信息产业股份有限公司 一种基于Iozone的文件***性能自动测试方法
CN105389236A (zh) * 2015-12-09 2016-03-09 浪潮电子信息产业股份有限公司 一种基于fio的hba卡自动化测试方法
CN105487952A (zh) * 2015-12-15 2016-04-13 浪潮电子信息产业股份有限公司 一种基于fio的pcie-ssd自动化测试方法
CN105843716A (zh) * 2016-04-01 2016-08-10 浪潮电子信息产业股份有限公司 一种基于mltt的io功能测试方法
CN106502844A (zh) * 2016-10-11 2017-03-15 郑州云海信息技术有限公司 一种测试RAID存储器IO的sAS端口带宽的方法
CN107368416A (zh) * 2017-07-24 2017-11-21 郑州云海信息技术有限公司 一种Unix***性能测试方法
CN107608841A (zh) * 2017-10-25 2018-01-19 郑州云海信息技术有限公司 硬盘测试文件生成方法、装置、设备及可读存储介质
CN107832180A (zh) * 2017-11-27 2018-03-23 郑州云海信息技术有限公司 一种对硬盘接口依次进行单盘性能自动测试的方法
CN108776638A (zh) * 2018-06-11 2018-11-09 郑州云海信息技术有限公司 一种服务器跑整机fio压力测试的方法及***
CN108874645A (zh) * 2018-06-12 2018-11-23 郑州云海信息技术有限公司 一种整合fio性能数据的方法及***
CN109086176A (zh) * 2018-07-26 2018-12-25 郑州云海信息技术有限公司 一种基于fio的ssd稳态测试方法、装置、设备及存储介质
CN109656475A (zh) * 2018-12-03 2019-04-19 郑州云海信息技术有限公司 一种自动关闭cache的方法、装置、终端及存储介质
CN116340189A (zh) * 2023-05-29 2023-06-27 天翼云科技有限公司 接入业务流程自动化测试方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN104850479A (zh) 一种基于fio的硬盘自动化测试方法
CN105487952A (zh) 一种基于fio的pcie-ssd自动化测试方法
US10289409B2 (en) Systems, methods, and apparatus for migrating code to a target environment
US20130263090A1 (en) System and method for automated testing
US8205115B2 (en) System and method for testing a computer
CN104360919A (zh) 一种自动进行ssd性能、功能及稳定性测试的方法
CN104809042A (zh) 一种基于iozone的硬盘性能测试的方法
WO2013123405A1 (en) Profiling and sequencing operators executable in an emulated computing system
CN109241165B (zh) 一种数据库同步延时的确定方法、装置和设备
CN113886162B (zh) 一种计算设备性能测试方法、计算设备及存储介质
US9117020B2 (en) Determining control flow divergence due to variable value difference
CN105260281A (zh) 一种基于iozone的PCIE SSD卡性能测试的方法
CN105022686A (zh) 安卓平台上进程的cpu占用率确定方法和装置
CN105930178B (zh) 一种可配置的参数动态装载方法及***
CN105389236A (zh) 一种基于fio的hba卡自动化测试方法
CN112346962A (zh) 一种应用于对照测试***中的对照数据测试方法及装置
CN112559525B (zh) 数据检查***、方法、装置和服务器
CN109918106A (zh) 一种混合cdn统一源站自动刷新方法及***
CN106095635A (zh) 一种基于dd的硬盘性能测试方法
CN107515724B (zh) 用于再现存储***的输入输出的方法和设备
CN105677470A (zh) 虚拟机任务调度方法、虚拟机***
CN105243022B (zh) 主机应用软件***的性能数据分析方法及装置
CN111125005B (zh) 一种hdfs分布式文件***io性能调优方法、***及设备
US20170192878A1 (en) Separating Test Coverage In Software Processes Using Shared Memory
CN103605612A (zh) 一种快速选定自动化测试用例的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20150819

RJ01 Rejection of invention patent application after publication