一种基于磁盘阵列虚拟化的网络存储管理软件测试方法

文档序号:7747306阅读:119来源:国知局
专利名称:一种基于磁盘阵列虚拟化的网络存储管理软件测试方法
技术领域
本发明属于计算机软件测试技术领域,涉及一种网络存储管理软件的测试方法。
背景技术
随着存储容量的不断扩展,存储网络变得越来越复杂,自动化管理变得异常重要。 因此,网络存储管理软件的设计和开发就成为存储产品开发中不可或缺的部分。当网络存储管理软件设计完成后,需要通过读写远端的多个磁盘阵列来验证软件 的正确性和有效性。另外,还需要监测在大规模盘阵工作时软件的性能极限。上述两种情况 都要配置相当数量的真实盘阵作为测试的硬件基础。如此一来,不仅会严重浪费硬件资源, 增加软件测试的成本,而且盘阵运行时所耗费的空间资源和电力资源也会进一步加大测试 开销。另外一方面,当测试所需的盘阵数量快速变化时,基于真实盘阵的测试方法不能及时 响应测试要求,影响测试效果。鉴于上述方法存在的问题,提出一种在远程PC上运行后台进程模拟真实磁盘阵 列操作的虚拟化方法。

发明内容
本发明的目的,现有技术在对大规模磁盘阵列进行集中监控的存储管理软件进行 测试时,要占用大量资源,且测试效果不佳,为了克服该问题,提供一种基于磁盘阵列虚拟 化的网络存储管理软件测试方法。其基本原理是,在测试网络存储管理软件的性能时,无需 读写远端真实的磁盘阵列,而是在远程PC机下运行多个虚拟盘阵的服务进程来模拟真实 盘阵在接受管理软件的管理命令后执行的读写操作。虚拟盘阵服务进程通过UDP和TCP协 议与网络存储管理软件的进行交互,从而完成软件的性能测试。为实现上述目的,本发明所采用的技术方案如下步骤一、搭建测试环境。采用一台计算机A作为运行虚拟盘阵进程的目标机,并在 现有操作系统的基础上安装虚拟机软件(比如在Windows XP上安装VMWare)。之后,在虚 拟机上安装并运行多个Linux操作系统,通过给网卡设置别名的方法,实现单个网卡绑定 多个IP地址。此时,在每个Linux系统的特定目录下部署若干二进制数据文件,这些文件是 管理软件在与真实的磁盘阵列交互时,保存下来的网络包,用于给虚拟盘阵进程提供数据。 采用另一台计算机B并在其上安装待测试的网络存储管理软件。最后,将计算机A、B通过 局域网连接。步骤二、根据测试要求,确定出需要模拟的磁盘阵列个数,以及管理软件与虚拟盘 阵通信的IP地址范围。之后,按照IP地址覆盖的网段个数,在计算机A上有选择地运行若 干个Linux系统,虚拟盘阵运行在每个Linux系统上。一个虚拟盘阵由一个UDP Server进 程和一个TCP Server进程构成,每个虚拟盘阵被分配一个IP地址,UDP Server进程和TCP Server进程监听同一 IP地址上的不同端口。步骤三、运行计算机B上的网络存储管理软件。根据步骤二中确定的IP网段个数及起止地址范围,管理软件的主程序循环调用UDP Client线程。该线程依次给每个网段内 的每个虚拟盘阵的UDP Server进程发送一个UDP包,以探测该盘阵的状态和类型。如果在 规定时间内UDP Client没有收到来自该虚拟盘阵的UDPServer进程发出的响应包,则认为 该IP地址所在的设备不是瞒足条件的磁盘阵列;如果收到了响应信息,则UDP Client线 程就把该虚拟盘阵的IP地址记录在一个公共数组中。之后,主程序时刻监测公共数组的变 化,当发现有新的IP地址加入数组就立刻调用TCP Client的线程。该线程会向上述IP地 址所属的虚拟盘阵的TCP Server进程发起一个TCP连接,要求对应的虚拟盘阵模拟完成读 操作或者写操作。根据存储软件管理盘阵的私有协议,接受连接的虚拟盘阵TCP Server进 程会解析TCP信息包中的操作命令,从而模拟执行读/写的操作,读取相应的二进制文件内 容,并把结果返回给TCP Client线程。经过上述步骤,一次基于盘阵虚拟化的网络存储管理软件的测试过程即可结束。 由于一个Linux系统的单块网卡可以设置多个IP地址,每个IP地址可以与一个虚拟盘阵 绑定,因此一个Linux系统上可虚拟出多个盘阵,如图1所示。在上述测试过程中,每个虚拟盘阵的UDP Server进程和TCP Server进程分别与 主程序中的UDP Client线程和TCP Client线程交互,模拟出真实盘阵在管理软件测试中 响应UDP包并根据管理命令要求执行读/写数据的操作。其中,UDPServer进程的运行以 IP地址和UID标识作为参数,TCP Server进程仅以IP地址作为参数。下面具体介绍这两 个进程的执行过程 UDP Server itfM实现的功能响应UDP Client发出的查询包,把虚拟盘阵的硬件信息打包返回给 UDP Client线程。如图2所示,具体过程如下(1)把进程参数IP地址设置为该虚拟盘阵的通信地址,将参数UID作为虚拟盘阵 的硬件标识;(2)创建一个基于UDP协议的网络套接字sockfd ;(3)初始化sockaddr_in结构的变量,并赋值;(4)设置sockfd的S0_REUSEADDR属性,以允许UDP Server重启之后原来的IP地 址可用;(5)将网络套接字sockfd与该虚拟盘阵的IP地址和端口进行绑定;(6)进入无限循环的等待状态,直到接收到UDP Client发来的查询包,记录下 Client的IP地址,然后填充本虚拟盘阵的硬件信息如IP地址、UID标识和盘阵类型等作为 响应包信息返回给UDP Client。
TCP Server 进程实现的功能响应TCP Client发出的管理请求,根据私有协议解析管理命令,模 拟完成相应操作。如图3所示,具体过程如下(1)接受进程的输入参数IP地址,将其设置为该虚拟盘阵的通信地址;(2)创建一个基于TCP协议的网络套接字sd ;(3)设置sd的S0_REUSEADDR属性,以允许TCP Server重启之后原来的IP地址可 用;(4)将网络套接字sd与该虚拟盘阵的IP地址和端口绑定;
5
(5)在sd上监听到来的TCP连接;(6)进入循环的等待连接状态,检查每一个到来的连接是否可读,如果可读则接受 该连接,记录下TCP Client的IP地址并创建新线程执行TCP Client要求的管理命令;(7)新线程读取该socket的内容到缓冲区,根据网络存储管理软件的私有协议解 析命令内容。如果是读操作,则到Linux系统的特定目录下读取以命令名命名的数据文件 并把数据内容打包返回给TCP Client线程;如果是写操作,则需要在特定目录下创建以命 令名命名的数据文件并写入数据,从而完成虚拟盘阵的一次读写操作。详细过程如图4所示。有益效果采用本发明方法在测试网络存储管理软件的正确性和有效性时,无需读写远端真 实的磁盘阵列,而是把另一台PC机上运行的N个UDP Server进程和N个TCP Server进程 看作N个虚拟盘阵,模拟真实盘阵在存储管理软件测试中执行的操作。其中UDP Server进 程响应管理软件中UDP Client的查询请求,并把该虚拟盘阵的硬件信息返回;TCP Server 进程响应管理软件中TCP Client的管理请求,模拟盘阵所执行的管理命令。与现有技术相 比,用虚拟盘阵软件代替真实的盘阵硬件完成网络存储管理软件性能的测试,既降低了软 件测试的费用又增加了测试的灵活性,具有极大的实用价值和经济效益。


图1为管理软件测试的盘阵虚拟化方法的结构图;图2为UDP Server进程的工作流程图;图3为TCP Server进程的工作流程图;图4为执行读写命令的线程工作流程图。
具体实施例方式下面结合实施例对本发明方法作具体细描述。本发明不仅限于以下实例,凡是利 用本发明的设计思路都进入本发明的保护范围之内。实施例测试实例预计对600个盘阵进行管理。由于在Linux系统下单个网卡最多可以绑 定255个IP地址,因此在计算机A的虚拟机软件上运行3个Linux系统。每个系统的单块网 卡绑定200个IP地址,地址范围设置成192. 168. 4. 11 192. 168. 4. 210、192. 168. 5. 11 192. 168. 5. 210 和 192. 168. 6. 11 192. 168. 6. 210,子网掩码为 255. 255. 255. 0。为了模 拟真实盘阵读取数据的操作,先将与一台真实磁盘阵列交互时的网络数据包dump到二进 制文件里,并部署到这3个Linux系统的相应目录下,这些数据文件用预定义的命令名来命 名。例如,目录/usr/tmp/data下分别有文件名为00012100FFFF和000122000A00的数据 文件。然后依次启动3个Linux系统上的共600个UDPServer进程和600个TCP Server 进程,进程的输入参数IP地址如上述范围,UID范围从1048576变化到1049175。在计算机B 上增加 192. 168. 4. 10,192. 168. 5. 10 和 192. 168. 6. 10 三个 IP 地址, 运行计算机B上的网络存储管理软件。从上述在三个Linux系统上设置的IP地址范围可 知,该地址覆盖了 3个网段,因此管理软件的主程序3次调用UDP Client线程分别在每一个网段内向每个IP地址上的虚拟盘阵发送UDP查询包。如果某个UPD Server接收到UDP查 询包就会把跟自己绑定的IP地址、UID标识以及盘阵类型等信息返回给计算机B中的UDP Client线程。该线程如果能在规定时间内收到来自某个IP地址的UDP响应包就认为该IP 地址上的虚拟盘阵存在,于是把该IP地址记录在一个公共数组中。随后,管理软件的主程 序时刻检测公共数组IP地址的变化,当发现有新的IP地址写入数组,比如192. 168. 5. 121, 则主程序调用TCP Client线程向IP地址为192. 168. 5. 121的虚拟盘阵发出TCP连接请求, 要求该虚拟盘阵执行读命令。 运行在192. 168. 5. 121上的TCP Server进程监听到来自TCP Client的连接,发 现该连接可读,于是建立连接,接着创建新线程实现虚拟盘阵读数据的功能。具体过程如 下先检测此TCP连接的socket数据是否可读,如果可读就循环读出socket中的数据直到 全部读出为止。然后根据存储管理软件的私有协议解析出socket数据中的读命令,比如是 00012100FFFF,最后就到/usr/tmp/data目录下打开文件名为00012100FFFF的数据文件。 如果打开操作成功,就读取文件内容并把文件数据打包返回给TCP Client线程;如果操作 不成功,会重新组织一个无数据内容的信息包返回给TCP Client线程。这样,虚拟盘阵的 一次读操作就结束了。
权利要求
一种基于磁盘阵列虚拟化的网络存储管理软件测试方法,其特征在于,包括以下步骤步骤一、搭建测试环境采用一台计算机A作为运行虚拟盘阵进程的目标机,并在现有操作系统的基础上安装虚拟机软件;之后,在虚拟机上安装并运行多个Linux操作系统,通过给网卡设置别名的方法,实现单个网卡绑定多个IP地址;此时,在每个Linux系统的特定目录下创建若干数据文件,用于给虚拟盘阵进程提供数据;采用另一台计算机B并在其上安装待测试的网络存储管理软件;最后,将计算机A、B通过局域网连接;步骤二、根据测试要求,确定出需要模拟的磁盘阵列个数,以及管理软件与虚拟盘阵通信的IP地址范围;之后,按照IP地址覆盖的网段个数,在计算机A上有选择地运行若干个Linux系统,虚拟盘阵运行在每个Linux系统上;一个虚拟盘阵由一个UDP Server进程和一个TCP Server进程构成,每个虚拟盘阵被分配一个IP地址,UDP Server进程和TCP Server进程监听同一IP地址上的不同端口;步骤三、在计算机B上增加相应网段的IP地址,运行计算机B上的网络存储管理软件;根据步骤二中确定的IP网段个数及起止地址范围,管理软件的主程序循环调用UDP Client线程;该线程依次给每个网段内的每个虚拟盘阵的UDPServer进程发送一个UDP包,以探测该盘阵的状态和类型;如果在规定时间内UDP Client没有收到来自该虚拟盘阵的UDP Server进程发出的响应包,则认为该盘阵失效;如果收到了响应信息,则UDP Client线程就把该虚拟盘阵的IP地址记录在一个公共数组中;之后,主程序时刻监测公共数组的变化,当发现有新的IP地址加入数组就立刻调用TCP Client的线程,该线程会向上述IP地址所属的虚拟盘阵的TCP Server进程发起一个TCP连接,要求对应的虚拟盘阵模拟完成读操作或者写操作;根据存储软件管理盘阵的私有协议,接受连接的虚拟盘阵TCPServer进程会解析TCP信息包中的操作命令,从而模拟执行读/写的操作并把结果返回给TCP Client线程;在上述测试过程中,每个虚拟盘阵的UDP Server进程和TCP Server进程分别与主程序中的UDP Client线程和TCP Client线程交互,模拟出真实盘阵在管理软件测试中响应UDP包并根据管理命令要求执行读/写数据的操作;其中,UDPServer进程的运行以IP地址和UID标识作为参数,TCP Server进程仅以IP地址作为参数。
2.如权利要求1所述的一种基于磁盘阵列虚拟化的网络存储管理软件测试方法,其特 征在于,所述UDP Server进程的执行过程如下(1)把进程参数IP地址设置为该虚拟盘阵的通信地址,将参数UID作为虚拟盘阵的硬 件标识;(2)创建一个基于UDP协议的网络套接字sockfd;(3)初始化sockaddrjn结构的变量,并赋值;(4)设置sockfd的SO_REUSEADDR属性,以允许UDPServer重启之后原来的IP地址可用;(5)将网络套接字sockfd与该虚拟盘阵的IP地址和端口进行绑定;(6)进入无限循环的等待状态,直到接收到UDPClient发来的查询包,记录下Client的IP地址,然后填充本虚拟盘阵的硬件信息如IP地址、UID标识和盘阵类型等作为响应包 信息返回给UDP Client。
3.如权利要求1所述的一种基于磁盘阵列虚拟化的网络存储管理软件测试方法,其特 征在于,所述TCP Server进程的执行过程如下(1)接受进程的输入参数IP地址,将其设置为该虚拟盘阵的通信地址;(2)创建一个基于TCP协议的网络套接字sd;(3)设置sd的S0_REUSEADDR属性,以允许TCPServer重启之后原来的IP地址可用;(4)将网络套接字sd与该虚拟盘阵的IP地址和端口绑定;(5)在sd上监听到来的TCP连接;(6)进入循环的等待连接状态,检查每一个到来的连接是否可读,如果可读则接受该连 接,记录下TCP Client的IP地址并创建新线程执行TCP Client要求的管理命令;(7)新线程读取该socket的内容到缓冲区,根据网络存储管理软件的私有协议解析命 令内容,如果是读操作,则到Linux系统的特定目录下读取以命令名命名的数据文件并把 数据内容打包返回给TCP Client线程;如果是写操作,则需要在特定目录下创建以命令名 命名的数据文件并写入数据,从而完成虚拟盘阵的一次读写操作。
全文摘要
本发明公开了一种基于磁盘阵列虚拟化的网络存储管理软件测试方法。其基本原理是,在测试网络存储管理软件的性能时,无需读写远端真实的磁盘阵列,而是在远程PC机下运行多个虚拟盘阵的服务进程来模拟真实盘阵在接受管理软件的管理命令后执行的读写操作。虚拟盘阵服务进程通过UDP和TCP协议与网络存储管理软件的客户进程交互,从而完成软件的性能测试。本发明方法在测试网络存储管理软件的正确性和有效性时,无需读写远端真实的磁盘阵列,既降低了软件测试的费用又增加了测试的灵活性,具有极大的实用价值和经济效益。
文档编号H04L29/08GK101894066SQ20101015768
公开日2010年11月24日 申请日期2010年4月28日 优先权日2010年4月28日
发明者周泽湘, 张丽, 王道邦, 谭毓安 申请人:北京同有飞骥科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1