CN101894066B - 一种基于磁盘阵列虚拟化的网络存储管理软件测试方法 - Google Patents
一种基于磁盘阵列虚拟化的网络存储管理软件测试方法 Download PDFInfo
- Publication number
- CN101894066B CN101894066B CN2010101576848A CN201010157684A CN101894066B CN 101894066 B CN101894066 B CN 101894066B CN 2010101576848 A CN2010101576848 A CN 2010101576848A CN 201010157684 A CN201010157684 A CN 201010157684A CN 101894066 B CN101894066 B CN 101894066B
- Authority
- CN
- China
- Prior art keywords
- address
- array
- tcp
- udp
- management software
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于磁盘阵列虚拟化的网络存储管理软件测试方法。其基本原理是,在测试网络存储管理软件的性能时,无需读写远端真实的磁盘阵列,而是在远程PC机下运行多个虚拟盘阵的服务进程来模拟真实盘阵在接受管理软件的管理命令后执行的读写操作。虚拟盘阵服务进程通过UDP和TCP协议与网络存储管理软件的客户进程交互,从而完成软件的性能测试。本发明方法在测试网络存储管理软件的正确性和有效性时,无需读写远端真实的磁盘阵列,既降低了软件测试的费用又增加了测试的灵活性,具有极大的实用价值和经济效益。
Description
技术领域
本发明属于计算机软件测试技术领域,涉及一种网络存储管理软件的测试方法。
背景技术
随着存储容量的不断扩展,存储网络变得越来越复杂,自动化管理变得异常重要。因此,网络存储管理软件的设计和开发就成为存储产品开发中不可或缺的部分。
当网络存储管理软件设计完成后,需要通过读写远端的多个磁盘阵列来验证软件的正确性和有效性。另外,还需要监测在大规模盘阵工作时软件的性能极限。上述两种情况都要配置相当数量的真实盘阵作为测试的硬件基础。如此一来,不仅会严重浪费硬件资源,增加软件测试的成本,而且盘阵运行时所耗费的空间资源和电力资源也会进一步加大测试开销。另外一方面,当测试所需的盘阵数量快速变化时,基于真实盘阵的测试方法不能及时响应测试要求,影响测试效果。
鉴于上述方法存在的问题,提出一种在远程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进程
实现的功能:响应UDP Client发出的查询包,把虚拟盘阵的硬件信息打包返回给UDP Client线程。如图2所示,具体过程如下:
(1)把进程参数IP地址设置为该虚拟盘阵的通信地址,将参数UID作为虚拟盘阵的硬件标识;
(2)创建一个基于UDP协议的网络套接字sockfd;
(3)初始化sockaddr_in结构的变量,并赋值;
(4)设置sockfd的SO_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的SO_REUSEADDR属性,以允许TCP Server重启之后原来的IP地址可用;
(4)将网络套接字sd与该虚拟盘阵的IP地址和端口绑定;
(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线程。这样,虚拟盘阵的一次读操作就结束了。
Claims (3)
1.一种基于磁盘阵列虚拟化的网络存储管理软件测试方法,其特征在于,包括以下步骤:
步骤一、搭建测试环境
采用一台计算机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线程;该线程依次给每个网段内的每个虚拟磁盘阵列的UDP Server进程发送一个UDP包,以探测该磁盘阵列的状态和类型;如果在规定时间内UDP Client没有收到来自该虚拟磁盘阵列的UDP Server进程发出的响应包,则认为该磁盘阵列失效;如果收到了响应信息,则UDP Client线程就把该虚拟磁盘阵列的IP地址记录在一个公共数组中;之后,主程序时刻监测公共数组的变化,当发现有新的IP地址加入数组就立刻调用TCP Client的线程,该线程会向上述IP地址所属的虚拟磁盘阵列的TCPServer进程发起一个TCP连接,要求对应的虚拟磁盘阵列模拟完成读操作或者写操作;根据网络存储管理软件管理磁盘阵列的私有协议,监听到有来自TCPClient的TCP连接请求的TCP Server进程会解析TCP信息包中的操作命令,从而模拟该TCP Server进程所属的虚拟磁盘阵列执行读/写操作并把结果返回给TCPClient线程;
在上述测试过程中,每个虚拟磁盘阵列的UDP Server进程和TCP Server进程分别与主程序中的UDP Client线程和TCP Client线程交互,模拟出真实磁盘阵列在管理软件测试中响应UDP包并根据管理命令要求执行读/写数据的操作;其中,UDP Server进程的运行以IP地址和UID标识作为参数,TCP Server进程仅以IP地址作为参数。
2.如权利要求1所述的一种基于磁盘阵列虚拟化的网络存储管理软件测试方法,其特征在于,所述UDP Server进程的执行过程如下:
(1)把进程参数IP地址设置为该虚拟磁盘阵列的通信地址,将参数UID作为虚拟磁盘阵列的硬件标识;
(2)创建一个基于UDP协议的网络套接字sockfd;
(3)初始化sockaddr_in结构的变量,并赋值;
(4)设置sockfd的SO_REUSEADDR属性,以允许UDP Server重启之后原来的IP地址可用;
(5)将网络套接字sockfd与该虚拟磁盘阵列的IP地址和端口进行绑定;
(6)进入无限循环的等待状态,直到接收到UDP Client发来的查询包,记录下Client的IP地址,然后填充本虚拟磁盘阵列的硬件信息包括IP地址、UID标识和磁盘阵列类型作为响应包信息返回给UDP Client。
3.如权利要求1所述的一种基于磁盘阵列虚拟化的网络存储管理软件测试方法,其特征在于,所述TCP Server进程的执行过程如下:
(1)接收进程参数IP地址,将其设置为该虚拟磁盘阵列的通信地址;
(2)创建一个基于TCP协议的网络套接字sd;
(3)设置sd的SO_REUSEADDR属性,以允许TCP Server重启之后原来的IP地址可用;
(4)将网络套接字sd与该虚拟磁盘阵列的IP地址和端口绑定;
(5)在sd上监听到来的TCP请求;
(6)进入循环的等待连接状态,检查每一个到来的连接是否可读,如果可读则接受该连接,记录下TCP Client的IP地址并创建新线程执行TCP Client要求的管理命令;
(7)新线程读取该socket的内容到缓冲区,根据网络存储管理软件的私有协议解析命令内容,如果是读操作,则到Linux系统的特定目录下读取以命令名命名的数据文件并把数据内容打包返回给TCP Client线程;如果是写操作,则需要在特定目录下创建以命令名命名的数据文件并写入数据,从而完成虚拟磁盘阵列的一次读写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101576848A CN101894066B (zh) | 2010-04-28 | 2010-04-28 | 一种基于磁盘阵列虚拟化的网络存储管理软件测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101576848A CN101894066B (zh) | 2010-04-28 | 2010-04-28 | 一种基于磁盘阵列虚拟化的网络存储管理软件测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101894066A CN101894066A (zh) | 2010-11-24 |
CN101894066B true CN101894066B (zh) | 2012-11-28 |
Family
ID=43103260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101576848A Active CN101894066B (zh) | 2010-04-28 | 2010-04-28 | 一种基于磁盘阵列虚拟化的网络存储管理软件测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101894066B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101982955B (zh) * | 2010-11-19 | 2013-09-04 | 深圳华大基因科技有限公司 | 高性能文件传输系统及方法 |
CN102075385A (zh) * | 2010-12-28 | 2011-05-25 | 云海创想信息技术(北京)有限公司 | 一种磁盘阵列分布式测试方法 |
CN103841148A (zh) * | 2012-11-23 | 2014-06-04 | 京信通信系统(中国)有限公司 | 监控程序中利用可靠与非可靠网络的主从通信方法及系统 |
CN103984619A (zh) * | 2014-06-06 | 2014-08-13 | 山东超越数控电子有限公司 | 一种网络存储系统性能监测方法 |
CN106302075B (zh) * | 2015-06-29 | 2019-10-29 | 联想(北京)有限公司 | 一种创建逻辑卷的方法及装置 |
CN106339318A (zh) * | 2016-08-29 | 2017-01-18 | 上海斐讯数据通信技术有限公司 | 一种自动化测试装置及其创建方法 |
CN107871059A (zh) * | 2016-09-23 | 2018-04-03 | 广州康昕瑞基因健康科技有限公司 | 基因测序仪运行模拟方法和系统 |
CN108984419B (zh) * | 2018-08-23 | 2022-11-04 | 郑州云海信息技术有限公司 | 一种存储软件测试方法、装置及设备 |
CN109240932A (zh) * | 2018-09-21 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种统一存储管理软件的测试方法、装置及设备 |
CN110166322B (zh) * | 2019-05-29 | 2020-11-10 | 广东电网有限责任公司 | 一种计量自动化终端的检测方法和相关装置 |
CN112069051A (zh) * | 2019-06-11 | 2020-12-11 | 福建天泉教育科技有限公司 | 一种push耗时的测试方法及终端 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540524A (zh) * | 2003-10-31 | 2004-10-27 | 清华大学 | 存储区域网络中分布式虚拟化存储的方法 |
CN101184001A (zh) * | 2007-12-14 | 2008-05-21 | 北京金山软件有限公司 | 网络服务器压力测试方法及系统 |
-
2010
- 2010-04-28 CN CN2010101576848A patent/CN101894066B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540524A (zh) * | 2003-10-31 | 2004-10-27 | 清华大学 | 存储区域网络中分布式虚拟化存储的方法 |
CN101184001A (zh) * | 2007-12-14 | 2008-05-21 | 北京金山软件有限公司 | 网络服务器压力测试方法及系统 |
Non-Patent Citations (1)
Title |
---|
谭毓安等.存储区域网络中路径容错及负载均衡的研究.《计算机工程》.2006,第32卷(第12期),第32-33,41页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101894066A (zh) | 2010-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101894066B (zh) | 一种基于磁盘阵列虚拟化的网络存储管理软件测试方法 | |
CN110520843B (zh) | 集群环境中高度可用的有状态容器 | |
CN101699825B (zh) | 网络文件系统访问方法、装置及系统 | |
CN106933508B (zh) | 应用容器的迁移方法及装置 | |
CN102710814B (zh) | 虚拟机ip地址的控制方法及装置 | |
CN102571698B (zh) | 一种虚拟机访问权限的控制方法、系统及装置 | |
JP5376496B2 (ja) | 仮想マシンデバイスの動的割り当て | |
US11522806B1 (en) | Migration of files contained on virtual storage to a cloud storage infrastructure | |
US20180189109A1 (en) | Management system and management method for computer system | |
CA2637749C (en) | Method, system, and program product for deploying a platform dependent application in a grid environment | |
CN107092541A (zh) | 一种运用虚拟机进行存储性能测试的方法 | |
US20150106518A1 (en) | Managing virtual network ports | |
CN102467408A (zh) | 一种虚拟机数据的访问方法和设备 | |
CN112256399B (zh) | 基于Docker的Jupyter Lab多用户远程开发方法及系统 | |
US11550616B2 (en) | Virtual IP support for bare metal cloud infrastructures | |
CN109327332B (zh) | 一种Ceph云存储下基于LIO的iSCSI GateWay高可用实现方法 | |
CN105074665A (zh) | 用于实现桌面虚拟化的迁移工具 | |
CN109274537B (zh) | 一种连续性网络虚拟化平台系统 | |
WO2019222262A1 (en) | Apparatuses and methods for zero touch computing node initialization | |
CN103823638A (zh) | 一种虚拟设备访问方法及装置 | |
CN104283959A (zh) | 一种适用于云平台的基于性能分级的存储机制 | |
CN102096606A (zh) | 虚拟机迁移方法、装置和系统 | |
CN116932130A (zh) | 一种基于OpenStack的仿真实验环境部署方法 | |
CN111061617A (zh) | 一种基于云计算的天基网络组网仿真测试系统 | |
CN113296891B (zh) | 基于平台的多场景知识图谱处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |