一种linux环境下进行iSCSI多路径测试的方法
技术领域
本申请涉及计算机及网络技术领域,尤其涉及一种linux环境下进行iSCSI多路径测试的方法。
背景技术
互联网小型计算机系统接口(iSCSI,InternetSmallComputerSystemInterface)是一种基于TCP/IP的协议,用来建立和管理IP存储设备和客户端等之间的相互连接,并创建存储区域网络(SAN)。SAN使得SCSI协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。
SCSI结构基于客户端/服务器模式,其通常应用环境是:设备互相靠近,并且这些设备由SCSI总线连接。iSCSI的主要功能是在TCP/IP网络上的客户端(启动器initiator)和存储设备(目标器target)之间进行大量数据的封装和可靠传输过程。此外,iSCSI提供了在IP网络封装SCSI命令,且运行在TCP上。为了增加设备带宽,往往给基于iSCSI技术的网络存储设备配置多个网口,每个网口具有各自的IP地址,这样,不同的iSCSI启动器可以连接到同一个iSCSI目标器的不同网口,达到流量均衡的目的。因此,需要对iSCSI目标器的每一个物理网口进行测试,验证其是否正常工作,这被称作iSCSI多路径测试。
在linux环境下进行iSCSI多路径测试的系统如图1所示,Linux服务器101连接交换机102,交换机102与iSCSI存储设备103的每一个网口建立一个IP连接。现有技术中的iSCSI多路径测试大多数是采用人工方法进行操作,比如人工插上iSCSI目标器103的待测网口与交换机102的网线,待测试完毕后将网线从与网口连接交换机102的端口拔出,再测试下一个待测网口,这样的方法对测试人员来说是机械式的工作,并且工作效率不高,测试人员在整个测试过程中也比较乏味,在极限情况下还无法完成测试需求。
发明内容
本申请提供了一种linux环境下进行iSCSI多路径测试的方法,可以自动高效地完成iSCSI多路径测试。
本申请提供的一种linux环境下进行iSCSI多路径测试的方法,其特征在于,该方法通过包括一台装有linux系统且安装好iptables的主机、交换机和一台iSCSI存储设备的测试系统实施,所述主机连接交换机,交换机与iSCSI存储设备的每一个网口建立一个IP连接;该方法包括:
A、在linux主机上启动iptables进程;
B、生成IP地址列表文件,该IP地址列表文件中包括待测的iSCSI存储设备所有业务网口的IP地址;
C、依据IP地址列表文件中的IP列表顺序,iptables进程依次阻塞1条IP地址,其余IP地址正常提供给前端主机运行的应用程序建立IP连接并运行业务,记录业务运行结果。
较佳地,步骤C包括:
C-1、设置循环参数looptimes和获取IP列表总数totalip,令参数j=1,i=j%totalip;
C-2、Iptables进程读取IP地址列表文件中的第i个IP地址,当i=0时,则选择IP地址列表中最后一个IP地址进行阻塞;当i!=0时,则选择第i个IP地址进行阻塞,将参数($j,$ip,block)记录到业务运行结果中,首次执行时,i=1;
C-3、等待预先设定的时长;
C-4、Iptables进程将所述第i个IP地址对应的路径恢复正常,将参数($j,$ip,unblock)记录到业务运行结果中;
C-5、令j=j+1,判断j是否小于等于looptimes,若是,转至步骤C-2,否则结束步骤C。
较佳地,步骤C-2进一步包括:
判断iSCSI存储设备的路径数是否减少,若是继续执行步骤C-3,否则退出流程。
较佳地,步骤C-4进一步包括:
判断iSCSI存储设备的路径数是否等于IP列表总数totalip,若是,继续执行步骤C-5,否则退出流程。
较佳地,步骤C-3所述预定时长为150秒。
从以上技术方案可以看出,利用linux系统的iptables功能,将交换机和iSCSI存储设备之间n条路径中的1条路径阻塞,只留下n-1条路径工作,然后再放开这1条路径并依次循环,这样的测试方法,就像人工拔插网线、控制器一样,达到失效备援(failover)、自动恢复(failback)功能;结果自动保存,以便后续查询结果。
附图说明
图1为在linux环境下进行iSCSI多路径测试的系统示意图;
图2为本申请实施例提供的linux环境下进行iSCSI多路径测试的方法流程图。
具体实施方式
本申请提出了一种linux环境下进行iSCSI多路径测试的方法,其基本思想是利用linux系统的iptables功能,将交换机和iSCSI存储设备之间n条路径中的1条路径阻塞,只留下n-1条路径工作,然后再放开这1条路径并依次循环。这样的测试方法,就像人工拔插网线、控制器一样,达到失效备援(failover)、自动恢复(failback)功能;结果自动保存,以便后续查询结果。
其中,Iptables是与linux内核集成的IP信息包过滤系统,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中。在信息包过滤表中,规则被分组放在所谓的链(chain)中。
为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
iptables基本原理如下:规则(rules)其实就是网络管理员预定义的数据包筛选条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。本申请方案增加一个选择路径函数(根据ip-list文件,依次阻塞1条ip路径用于放行,其余路径放行)、增加一个计数器(用于计算循环次数)以及增加结果记录文件。
图2为本申请实施例提供的linux环境下进行iSCSI多路径测试的方法流程图,包括如下步骤:
步骤201:准备测试环境,在linux主机上启动iptables进程。所述测试环境即构建如图1所示的系统,包括一台装有linux系统且安装好iptables的主机、交换机和一台iSCSI存储设备;主机连接交换机,交换机与iSCSI存储设备的每一个网口建立一个IP连接。
步骤202:生成IP地址列表文件,该IP地址列表文件中包括待测的iSCSI存储设备所有业务网口的IP地址。
步骤203:依据IP地址列表文件中的IP列表顺序,iptables进程依次阻塞1条IP地址,其余IP地址正常提供给前端主机运行的应用程序建立IP连接并运行业务,记录业务运行结果。
其中,步骤203具体包括如下子步骤:
子步骤203-1:设置循环参数(looptimes)和获取IP列表总数(totalip),令参数j=1,i=j%totalip。
子步骤203-2:Iptables进程读取IP地址列表文件中的第i个IP地址,当i=0时,则选择IP地址列表中最后一个IP地址进行阻塞;当i!=0时,则选择第i个IP地址进行阻塞,将参数($j,$ip,block)传递到业务运行结果中,将业务运行结果记录追加到result.txt文件中,首次执行时,i=1。
阻塞路径对应的命令行为:
Iptables–Aoutput–d$ip-jdrop#$ip为获取到的第i个ip地址。
该子步骤还可以进一步包括:
判断iSCSI存储设备的路径数是否减少,如果减少则说明路径切换成功,否则失败退出流程。获取现有路径数(pathnumber)的方法如:Pathnumber=`Multipath–ll|grep“active”|wc–l`,如果pathnumber<totalip则成功。
子步骤203-3:等待预先设定的时长。该时长为Linux系统中多路径IO管理(MPIO)软件切换流量所需的时间,一般是150秒。
子步骤203-4:Iptables进程将所述第i个IP地址对应的路径恢复正常。将参数($j,$ip,unblock)传递到业务运行结果中,将业务运行结果记录追加到result.txt文件中。
将路径恢复正常对应命令行为:
Iptables–Doutput-d$ip-jdrop#$ip为子步骤203-2中获取到的第i个ip地址
该子步骤还可以进一步包括:
判断iSCSI存储设备的路径数是否等于totalip,如果等于则说明路径恢复成功,获取现有路径(pathnumber)如:Pathnumber=`Multipath–ll|grep“active”|wc–l`,如果pathnumber==totalip则成功,否则失败退出程序。
子步骤203-5:令j=j+1,判断j是否小于等于looptimes,若是,转至子步骤203-2,否则结束步骤203。
通过以上操作,可以替代交换机上手动up/down与iSCSI存储设备连接的端口,从而实现自动测试failover和failback。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。