一種基于fio的硬盤自動(dòng)化測(cè)試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及服務(wù)器技術(shù)1測(cè)試領(lǐng)域,具體涉及一種基于F1的硬盤自動(dòng)化測(cè)試方法,可以實(shí)現(xiàn)針對(duì)不同配置,使用F1工具對(duì)硬盤進(jìn)行性能、穩(wěn)定性等自動(dòng)化測(cè)試方法。
【背景技術(shù)】
[0002]隨著IT行業(yè)的高速發(fā)展,信息化、大數(shù)據(jù)及云計(jì)算的發(fā)展對(duì)服務(wù)器性能要求越來(lái)越高。硬盤作為數(shù)據(jù)存儲(chǔ)的載體,性能指標(biāo)直接影響服務(wù)器的整體呈現(xiàn)。做為國(guó)內(nèi)領(lǐng)先的服務(wù)器硬件供應(yīng)商,各大公司都在不斷提高對(duì)硬盤性能測(cè)試的質(zhì)量及效率。
[0003]Shell腳本與Windows/Dos下的批處理相似,也就是用各類命令預(yù)先放入到一個(gè)文件中,方便一次性執(zhí)行的一個(gè)程序文件,主要是方便管理員進(jìn)行設(shè)置或者管理用的。但是它比Windows下的批處理更強(qiáng)大,比用其他編程程序編輯的程序效率更高。
[0004]F1是一個(gè)文件系統(tǒng)的benchmark工具,可以測(cè)試各種操作系統(tǒng)文件系統(tǒng)的讀寫性能,可以進(jìn)行不同測(cè)試塊大小、不同模式下的硬盤性能測(cè)試。但是F1只提供了簡(jiǎn)單的參數(shù),單條命令的使用有非常大的測(cè)試局限,很難做到對(duì)硬盤進(jìn)行較為系統(tǒng)的性能及穩(wěn)定性測(cè)試。
[0005]如果能夠通過(guò)shell語(yǔ)言編寫自動(dòng)化的測(cè)試腳本,并手動(dòng)進(jìn)行測(cè)試參數(shù)的調(diào)整,將會(huì)極大提高硬盤性能及穩(wěn)定性測(cè)試的質(zhì)量及效率。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問(wèn)題是:本發(fā)明針對(duì)以上不足之處,提供一種測(cè)試實(shí)用性強(qiáng)、可以對(duì)F1的測(cè)試參數(shù)進(jìn)行擴(kuò)展,以適應(yīng)各種性能及穩(wěn)定性測(cè)試需求的方法。
[0007]本發(fā)明所采用的技術(shù)方案為:
一種基于F1的硬盤自動(dòng)化測(cè)試方法,其具體實(shí)現(xiàn)過(guò)程為:
1)根據(jù)測(cè)試需求人工修改測(cè)試腳本參數(shù);
2)腳本根據(jù)參數(shù)自動(dòng)選擇對(duì)應(yīng)測(cè)試模塊;
3)測(cè)試模塊根據(jù)參數(shù)自動(dòng)開始測(cè)試;
4)完成測(cè)試并輸出結(jié)果到日志。
[0008]所述方法腳本包含內(nèi)容如下:
對(duì)模塊變量及部分參數(shù)進(jìn)行初始定義;
通過(guò)usage命令,對(duì)腳本可用到的參數(shù)進(jìn)行說(shuō)明;
套用getopts命令,對(duì)腳本命令行參數(shù)進(jìn)行定義,
根據(jù)if語(yǔ)句的判斷,調(diào)用base_test測(cè)試模塊;
利用for循環(huán)嵌套,采用不同線程不同讀寫策略不同數(shù)據(jù)塊大小進(jìn)行測(cè)試并輸出結(jié)果至log檔;
根據(jù)設(shè)置參數(shù)運(yùn)行帶寬測(cè)試;
利用不同數(shù)據(jù)塊大小、不同線程及不同讀寫策略運(yùn)行穩(wěn)定性測(cè)試。
[0009]所述方法包含性能、穩(wěn)定性、壓力等多種模塊化測(cè)試,測(cè)試線程數(shù)、測(cè)試塊大小、測(cè)試文件大小、測(cè)試模式等可以根據(jù)實(shí)際需求進(jìn)行調(diào)節(jié)。
[0010]本發(fā)明的有益效果為:
本發(fā)明方法,擺脫了 F1單條測(cè)試命令的局限性,能夠?qū)τ脖P同時(shí)進(jìn)行多個(gè)線程的多種模式的讀寫性能測(cè)試、穩(wěn)定性測(cè)試及壓力測(cè)試,有效的提高了 F1工具的易用性,可以根據(jù)不同需求調(diào)整測(cè)試參數(shù)和配置文件,滿足越來(lái)越多不同客戶的硬盤測(cè)試需求,極大的提高了公司的人均產(chǎn)能,降低測(cè)試成本,增強(qiáng)競(jìng)爭(zhēng)力。
[0011]說(shuō)明書附圖
圖1為本發(fā)明方法實(shí)現(xiàn)流程圖。
【具體實(shí)施方式】
[0012]下面根據(jù)說(shuō)明書附圖,結(jié)合【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說(shuō)明:
如圖1所示,一種基于F1的硬盤自動(dòng)化測(cè)試方法,其具體實(shí)現(xiàn)過(guò)程為:
1)根據(jù)測(cè)試需求人工修改測(cè)試腳本參數(shù);
2)腳本根據(jù)參數(shù)自動(dòng)選擇對(duì)應(yīng)測(cè)試模塊;
3)測(cè)試模塊根據(jù)參數(shù)自動(dòng)開始測(cè)試;
4)完成測(cè)試并輸出結(jié)果到日志。
[0013]所述方法shell腳本內(nèi)容如下:
IS_FRAG=false
IS_STRESS=false
IS_BASE=false
IS_FILESYSTEM=false
IS_10PS=false
1_ENGINE=liba1
FILE_SIZE=100%
對(duì)模塊變量及部分參數(shù)進(jìn)行初始定義,如默認(rèn)1 engine為Iiba1模式; usage O {
echo "$0 [-f] [_s] [_e 1_engine] [_h] [_b] [_d dev_name] [_m] [_ppart1n] [-w workdir] [_r] [_i 1ps]〃echo 〃-f fragment"echo 〃-s stress test〃
echo 〃-e 1engine type , default type is liba1〃 echo 〃-b raw device base test〃
echo "example:〃
echo 〃 raw device fragment:nohup &>/dev/null sh 1test.sh -f _d /dev/sda &〃
echo 〃 raw device base test:nohup &>/dev/null sh 1test.sh _b _d /dev/sda &〃
echo 〃If you have any quest1n, contact with me: miaoyw@inspur.com〃 exit
usage說(shuō)明,對(duì)腳本可用到的參數(shù)進(jìn)行說(shuō)明,例如:執(zhí)行1test.sh _ h會(huì)屏幕print ; while getopts 〃hsfbe:d:mp:w:r1:〃 arg do
case $arg in h)
usage;; s)
IS_STRESS=true;;f)
IS_FRAG=true;;b)
IS—BASE=true;;w)
workdir=${OPTARG};;r)
IS_1PS=true;;i)
define—1ps=${OPTARG};;
esac
done
套用getopts方式,對(duì)腳本命令行參數(shù)進(jìn)行定義,例如執(zhí)行1test.sh - b會(huì)自動(dòng)將“IS_BASE=true” ;
if ${IS_FRAG};thenfragment
fi
if $ {IS—BASE};thenbase_test
fi
if ${IS—1PS};thenfixed_1ps_testfi
根據(jù)if語(yǔ)句的判斷,調(diào)用base—test測(cè)試模塊; base_testO {
for RW in write randwrite read randread do
for BS in 4k 16k 64k 512k
do
for THREADS in I 2 8 16 32 64 256do
if [ $THREADS -1e 32 ];then
f1 —readwrite=${RW} -_bs=${BS}—numjobs=${THREADS} —runtime=300s $ {PARA—LINE} —filename=${DEV—LIST}—name=${RW}—${BS}—${THREADS} | tee -a ${RW}.log
else
1depth=$(($THREADS/32))
PARA—LINE2=〃一end—fsync=0 —group—reporting —direct=l—1engine=${10_ENGINE} —1depth=$1depth —time_based —invalidate=l—norandommap —randrepeat=0 —exitall —size=${FILE—SIZE}〃
f1 —readwrite=${RW} -_bs=${BS}--numjobs = 32 --runtime = 300s $ {PARA_LINE2} --f iIename = ${DEV_LIST}—name=${RW}—${BS}—${THREADS} | tee -a ${RW}.log
fi
done
done
sleep 60s
done
以上部分是利用for循環(huán)嵌套,采用不同線程不同讀寫策略不同數(shù)據(jù)塊大小進(jìn)行測(cè)試并輸出結(jié)果至log檔;
f1 —readwrite=read —bs=512k —direct=l —runtime=300s —end—fsync=0 —1engine=${10_ENGINE} —time_based —invalidate=l —norandommap--randrepeat=0 --group_reporting --numjobs=l --size=${FILE_SIZE}—filename=${DEV_LIST} —name=BW_read |tee -a BW_read.logsleep 60s
f1 —readwrite=write —bs=512k —direct=l —runtime=300s —end_fsync=0 —1engine=${10_ENGINE} —time_based —invalidate=l —norandommap--randrepeat=0 --group_reporting --numjobs=l --size=${FILE_SIZE}—filename=${DEV—LIST} —name=BW—write |tee -a BW—write, log sleep 60s以上部分是根據(jù)設(shè)置參數(shù)運(yùn)行帶寬測(cè)試;
# steady
1stat -xm I > 4k_rw_1ps &f1 —readwrite=randrw —rwmixread=70 —bs=4k —runtime=3000s—numjobs=32 ${PARA—LINE} —filename=${DEV—LIST} —name=4k_rw_1ps | tee -a4k_rw_1ps.log
kill 'pidof 1stat' > /dev/null sleep 30s
1stat -xm I > 16k—w—1ps &f1 —readwrite=randwrite —bs=16k —runtime=3000s —numjobs=32${PARA—LINE} —filename=${DEV—LIST} —name=16k—w—1ps | tee -a 16k—w—1ps.log
kill 'pidof 1stat' > /dev/null以上部分是利用不同數(shù)據(jù)塊大小、不同線程及不同讀寫策略運(yùn)行穩(wěn)定性測(cè)試;
}
以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
【主權(quán)項(xiàng)】
1.一種基于F1的硬盤自動(dòng)化測(cè)試方法,其特征在于,所述方法具體實(shí)現(xiàn)過(guò)程為: 1)根據(jù)測(cè)試需求人工修改測(cè)試腳本參數(shù); 2)腳本根據(jù)參數(shù)自動(dòng)選擇對(duì)應(yīng)測(cè)試模塊; 3)測(cè)試模塊根據(jù)參數(shù)自動(dòng)開始測(cè)試; 4)完成測(cè)試并輸出結(jié)果到日志。
2.根據(jù)權(quán)利要求1所述的一種基于F1的硬盤自動(dòng)化測(cè)試方法,其特征在于:所述方法腳本包含內(nèi)容如下: 對(duì)模塊變量及部分參數(shù)進(jìn)行初始定義; 通過(guò)usage命令,對(duì)腳本用到的參數(shù)進(jìn)行說(shuō)明; 套用getopts命令,對(duì)腳本命令行參數(shù)進(jìn)行定義, 根據(jù)if語(yǔ)句的判斷,調(diào)用base_test測(cè)試模塊; 利用for循環(huán)嵌套,采用不同線程不同讀寫策略不同數(shù)據(jù)塊大小進(jìn)行測(cè)試并輸出結(jié)果至log檔; 根據(jù)設(shè)置參數(shù)運(yùn)行帶寬測(cè)試; 利用不同數(shù)據(jù)塊大小、不同線程及不同讀寫策略運(yùn)行穩(wěn)定性測(cè)試。
3.根據(jù)權(quán)利要求1或2所述的一種基于F1的硬盤自動(dòng)化測(cè)試方法,其特征在于:所述方法的測(cè)試線程數(shù)、測(cè)試塊大小、測(cè)試文件大小、測(cè)試模式根據(jù)實(shí)際需求進(jìn)行調(diào)節(jié)。
【專利摘要】本發(fā)明公開了一種基于FIO的硬盤自動(dòng)化測(cè)試方法,所述方法具體實(shí)現(xiàn)過(guò)程為:1)根據(jù)測(cè)試需求人工修改測(cè)試腳本參數(shù);2)腳本根據(jù)參數(shù)自動(dòng)選擇對(duì)應(yīng)測(cè)試模塊;3)測(cè)試模塊根據(jù)參數(shù)自動(dòng)開始測(cè)試;4)完成測(cè)試并輸出結(jié)果到日志。本發(fā)明方法,擺脫了FIO單條測(cè)試命令的局限性,能夠?qū)τ脖P同時(shí)進(jìn)行多個(gè)線程的多種模式的讀寫性能測(cè)試、穩(wěn)定性測(cè)試及壓力測(cè)試,有效的提高了FIO工具的易用性,可以根據(jù)不同需求調(diào)整測(cè)試參數(shù)和配置文件,滿足越來(lái)越多不同客戶的硬盤測(cè)試需求,極大的提高了公司的人均產(chǎn)能,降低測(cè)試成本,增強(qiáng)競(jìng)爭(zhēng)力。
【IPC分類】G06F11-26
【公開號(hào)】CN104850479
【申請(qǐng)?zhí)枴緾N201510249631
【發(fā)明人】苗永威
【申請(qǐng)人】浪潮電子信息產(chǎn)業(yè)股份有限公司
【公開日】2015年8月19日
【申請(qǐng)日】2015年5月15日