性能测试当前已经成为一个很重要测试模块,通常在进行性能测试的时候都是使用IOMeter来完成的,在windows下的图形界面,操作比较简单。那么linux下如何进行集群的性能测试呢?这里我尝试使用FIO在linux下完成对集群的测试方法。
测试环境:
4台主机,12个虚拟机,每个虚拟机2块待测试磁盘。
测试流程:
导入虚拟机 模板部署(不要分配个人磁盘,需要配置IP和hostname) 批量编辑虚拟机添加2块20G的预分配磁盘(操作2次,1次只能添加1块) 进入所有虚拟机关闭防火墙并打开监听(2.0的模板已预先完成) 编辑测试模型脚本(.job) 编辑测试执行脚本(.sh) 为执行脚本.sh 添加权限(2.0的模板已预先完成)
执行脚本./fio_test.sh开始测试。
注意事项:
1、待测试的两块硬盘使用预分配模式,为了避免配置复杂,建议在派生的时候不要添加私有盘,而是在派生结束之后,批量添加2块预分配盘。待测试的盘直接挂载即可使用,切勿对其进行格式化。
2、性能测试需要为所有虚拟机配置IP,FIO提供的脚本并无配置IP的功能,需要在派生虚拟机时完成IP的分配,同时为虚拟机手工指定hostname,方便观察输出。
3、所有的待测试脚本只需要在其中一台虚拟机上配置即可。
测试过程:
新建/导入linux虚拟机,我使用的是某公司之前提供的用于FIO单虚拟机测试的模板(centosfio_vma)。
对虚拟机模板派生,我这里的环境是4主机的延伸集群,使用12台虚拟机来测,派生13台是为了和另外12台区分。只用12台也可以,FIO测试并没有控制端和客户端的说法。
注意将所有的虚拟机连接在同一台虚拟交换机上,并配置IP,否则后面要一台一台的配很麻烦。
注意:派生时先不要创建私有数据盘,因为创建的私有数据盘默认是动态分配的,后续还要手动为每个数据盘修改为预分配盘。
派生完毕之后,对所有的虚拟机进行批量添加硬盘操作,在批量添加硬盘时可以选择为预分配。不过一次批量只能编辑一块盘,需要进行两次批量编辑。
编辑完成,打开虚拟机配置进行确认。确认有两块预分配盘和网卡IP。
配置hostname,是因为后续在脚本输出的时候,是根据hostname回显的,方便查看。
将虚拟机开机,保证平均运行在所有主机上。测试环境部署完毕。
打开所有被测虚拟机,查看其有两块磁盘,同时关闭防火墙,并打开监听。(2.0的新模板已默认关闭并打开监听)可使用ps -aux | grep daemonize 查看是否开启监听。
进入其中任意一台虚拟机,写入测试脚本
[global] ioengine=libaio runtime=300 #运行时间 direct=1 rw=write #读写模式 bs=1M #块大小 iodepth=32 #IO深度 group_reporting [test ] time_based stonewall filename=/dev/vdb #虚拟磁盘1,这个也要根据虚拟机的磁盘ID修改 filename=/dev/vdc #虚拟磁盘2,这个也要根据虚拟机的磁盘ID修改 size=10G
numjobs=2 #多少个磁盘设置多少个numjobs
【预写脚本】
【4K随机写】
【4K随机读】
写一个测试的shell脚本用于测试,可根据测试模型自行修改,将待测模型的.job文件替换到job参数里。将待测试的其他虚拟机IP替换到fio命令中。
为脚本添加执行权限,执行测试脚本:
在最下方的回显中,可以实时的看到测试结果。包括测试进度、带宽、IOPS、剩余时间。
每个脚本跑完之后会等待60s,60s之后接着跑第二个脚本,最终的测试结果会呈现在一个txt文件中,在统计txt文件中的数据时,需要手动统计,将每个text进程的iops数值累加以得到最终的结果。
测试结果就不在这里写了,主要突出一下测试流程。
|