一种基于iozone的硬盘性能测试的方法

文档序号:8487709阅读:349来源:国知局
一种基于iozone的硬盘性能测试的方法
【技术领域】
[0001]本发明涉及计算机服务器技术领域,具体涉及一种基于1zone的硬盘性能测试的方法,是一种实用性强,可以针对不同配置使用1zone对硬盘进行性能测试的方法。
【背景技术】
[0002]随着IT领域技术的不断发展,传统信息化服务以及日趋强大的云计算服务对服务器的性能要求越来越高。硬盘做为数据载体,其性能直接影响服务器的整体呈现。做为服务器硬件供应商,在产品开发时对于硬盘的性能测试需要更多的投入。
[0003]Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高。
[0004]1zone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。可以测试 Read, write, re-read, re-write, read backwards, readstrided, fread, fwrite, random read, pread, mmap, a1_read, a1_write 等等不同的模式下的硬盘的性能。
[0005]但是1zone只提供了简单的参数,单条1zone命令有非常大的测试局限,如只能对一块硬盘进行测试,测试线程数控制难等。
[0006]基于上述技术,如果能够通过shell脚本,根据实际服务器配置来修改测试文件,并能够手动调整部分参数,这将对于多种多样的配置的硬盘性能测试带来便利和更高的效率。

【发明内容】

[0007]本发明要解决的技术问题是:针对以上不足之处,提供是一种实用性强,可以对1zone的测试参数进行扩展,使之适应多种多样的性能测试需求的方法。
[0008]本发明所采用的技术方案为:
一种基于1zone的硬盘性能测试的方法,其具体实现过程为:
O识别本服务器所有的硬盘或者raid阵列;
2)对硬盘或者raid阵列进行分区,格式化和挂载;
3)根据实际配置修改将测试参数传递给性能测试脚本;
4)开始性能测试,并输出结果。
[0009]其中:
识别本服务器所有的硬盘或者raid阵列过程如下:
#!/bin/bash
#判断输入参数个数,不符合时输出usage后退出 if [ $# -ne 2]; then
echo “Usage:./$0 RECSIZE THREADS_PERFHDDexit 0;fi
#识别所有的盘符funct1n get—disk O
{
fdisk -1 |grep ,,Disk /dev/sd,, | awk,{print $2 | ^cut -bS,,},>> /root/1, txtfor i in cat /root/1, txt'do
echo 〃/dev/sd$i〃 >> /root/disk.1stdone
}
对硬盘或者raid阵列进行分区,格式化和挂载过程如下:
#分区
funct1n fdisk—disk O
{
for disk in cat /root/disk.1stdo
#对系统盘sda分区if [ $disk = /dev/sda ]then
echo -e 〃fdisk $disk now...〃
parted - s $disk mkpart $disk"3〃 60gb 10gb
else
#对非系统盘分区
echo -e 〃fdisk $disk now...〃
parted -s $disk mklabel gpt mkpart $disk〃l〃 I 10gbecho -e 〃Done〃fi
done
}
#格式化
funct1n mkfs_disk()
{
for i in cat /root/1, txt'do
if [ $i = a ]then
mkfs.ext4 /dev/sd$i〃3〃elsemkfs.ext4 /dev/sd$i〃l〃fidone
}
#挂载
funct1n mount_disk()
{
for i in cat /root/1, txt'
if [ $i = a ]
then
mkdir /mnt/sd$i〃3〃mount /dev/sd$i〃3〃 /mnt/sd$i〃3〃else
mkdir /mnt/sd$i〃l〃mount /dev/ sd$i〃l〃 /mnt/sd$i〃l〃fi
}
根据实际配置修改,将测试参数传递给性能测试脚本过程为: funct1n 1zone_disk()
{
count=' cat /root/disk, txt | wc -1' # 确定测试的硬盘个数FILESIZE=1g #测试文件大小RECSIZE=$I #测试块大小
THREADS=' echo “$2 * $count”|bc' #测试总的线程数,根据硬盘数量和输入的每个硬盘的线程数决定OUTPUTFILE=
#根据每个硬盘测试的线程数,确定测试文件 for ((1=0; K= $2; I++)) do
for J in cat /root/1, txt'do
FILE=$FILE〃 "7mnt/sd$J” l”/k$ {1} 〃donedone
echo $FILE
for TIMES in {1..2}
do
0UTPUTFILE="hddext4—${THREADS}thrd_${FILESIZE}—recsize—${RECSIZE}—sep〃 echo "Reading and Writing test Starting …〃 >> $OUTPUTFILE./1zone -r ${RECSIZE} -s $FILESIZE -t $THREADS -F $FILE _i 0 _i I _breport, xls _c _+n _e >> $OUTPUTFILE
echo "Reading and Writing test Finished …〃 >> $OUTPUTFILE echo 〃 〃 ? $OUTPUTFILE exit I
done
}
所述方法的主程序如下:
#按顺序执行分程序 get—disk fdisk—disk mkfs_disk mount_disk 1zone—disk
脚本执行完成后,在本文件夹中以hddext4开头的文件为最终结果。
[0010]本发明的有益效果为:
本发明方法能够对多块硬盘同时进行多个线程的多种模式的读写性能测试。测试过程中的线程数、测试块大小、测试文件大小、测试模式等都是可以根据实际需求进行手动调节的。
[0011]本发明方法在各种配置上都可以应用,可以灵活、便捷的根据不同配置修改测试参数来调用1zone测试硬盘性能,解决了单一使用1zone的测试局限性,丰富了测试手段,更好的检测部件的性能。
[0012]说明书附图
图1为本发明方法实现流程图。
【具体实施方式】
[0013]下面根据说明书附图,结合【具体实施方式】对本发明进一步说明:
一、使用raid卡制作阵列,或者使用HBA卡直连硬盘,然后安装系统;
O识别本服务器所有的硬盘或者raid阵列
#!/bin/bash
#判断输入参数个数,不符合时输出usage后退出 if [ $# -ne 2]; then
echo “Usage:./$0 RECSIZE THREADS_PERFHDDexit 0;fi
#识别所有的盘符 funct1n get—disk()
{
fdisk -1 |grep ,,Disk /dev/sd,, | awk,{print $2 | ^cut -bS,,},>> /root/1, txtfor i in cat /root/1, txt'do
echo 〃/dev/sd$i〃 >> /root/disk.1stdone
}
2)对硬盘或者raid阵列进行分区,格式化和挂载#分区
funct1n fdisk—disk()
{
for disk in cat /root/disk.1stdo
#对系统盘sda分区if [ $disk = /dev/sda ]then
echo -e 〃fdisk $disk now...〃
parted - s $disk mkpart $disk"3〃 60gb 10gb
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1