CN104850479A - 一种基于fio的硬盘自动化测试方法 - Google Patents
一种基于fio的硬盘自动化测试方法 Download PDFInfo
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 claims abstract description 14
- 238000013112 stability test Methods 0.000 claims abstract description 8
- 238000011056 performance test Methods 0.000 abstract description 6
- 239000012634 fragment Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于FIO的硬盘自动化测试方法,所述方法具体实现过程为:1)根据测试需求人工修改测试脚本参数;2)脚本根据参数自动选择对应测试模块;3)测试模块根据参数自动开始测试;4)完成测试并输出结果到日志。本发明方法,摆脱了FIO单条测试命令的局限性,能够对硬盘同时进行多个线程的多种模式的读写性能测试、稳定性测试及压力测试,有效的提高了FIO工具的易用性,可以根据不同需求调整测试参数和配置文件,满足越来越多不同客户的硬盘测试需求,极大的提高了公司的人均产能,降低测试成本,增强竞争力。
Description
技术领域
本发明涉及服务器技术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的硬盘自动化测试方法,其特征在于:所述方法的测试线程数、测试块大小、测试文件大小、测试模式根据实际需求进行调节。
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)
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)
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性能的测试方法和装置 |
-
2015
- 2015-05-15 CN CN201510249631.1A patent/CN104850479A/zh active Pending
Patent Citations (2)
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)
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 |