一种加载IO模块驱动程序的方法及装置与流程

文档序号:12664698阅读:253来源:国知局
一种加载IO模块驱动程序的方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种加载IO模块驱动程序的方法及装置。



背景技术:

随着计算机技术的不断发展与进步,服务器作为一种具有高性能、高可靠性和安全性的计算机,被广泛应用于生活及生产中的各个领域。与个人计算机不同,为了能够存储更多的数据,服务器通常配备有专门的存储器。存储器包括机箱、IO(Input/Output,输入/输出)模块及多个硬盘,IO模块根据服务器的指令,向各个硬盘中存储数据或从各个硬盘中读取数据。

作为存储器生产厂商,在存储器出厂之前,需要对存储器进行各种类型的检测,以保证存储器交付用户之后能够可靠、稳定地进行运行。在对存储器进行检测之前,需要加载存储器上IO模块的驱动程序,这样测试服务器才能够从存储器上读取或写入信息,以对存储器进行各种类型的检测。

目前,测试人员通过手动操作的方式在测试服务器上加载IO模块的驱动程序。

针对于目前加载IO模块驱动程序的方法,针对于每一台存储器,测试人员都需要通过手动操作的方式输入指令代码,由于指令代码种类繁多且结构复杂,手动输入造成加载IO模块驱动程序的效率较低。



技术实现要素:

本发明实施例提供了一种加载IO模块驱动程序的方法及装置,能够提高加载IO模块驱动程序的效率。

本发明实施例提供了一种加载IO模块驱动程序的方法,将测试服务器与至少一个待测试存储器相连,并在所述测试服务器上存储驱动加载脚本,还包括:

针对于每一个所述待测试存储器,均执行:

扫描所述待测试存储器上IO模块的型号PN码;

根据所述PN码,确定所述IO模块的类型;

根据所述IO模块的类型,在所述测试服务器上运行所述驱动加载脚本,加载所述待测试存储器上所述IO模块的驱动程序。

优选地,在所述扫描所述待测试存储器上IO模块的型号PN码之前,进一步包括:

针对于每一个所述待测试存储器,扫描所述待测试存储器上IO模块的序列号,根据所述序列号形成对应于所述待测试存储器的日志文件;

在所述测试服务器上运行预先存储的日志记录脚本,将所述扫描PN码、所述确定IO模块类型及所述加载驱动程序的过程及结果记录到与所述待测试存储器相对应的日志文件中。

优选地,在所述加载所述待测试存储器上IO模块的驱动程序之后,进一步包括:

判断所述待测试存储器上IO模块的驱动程序是否加载成功,如果是,通过所述测试服务器输出驱动加载成功信息,否则通过所述测试服务器输出驱动加载失败信息。

优选地,该方法进一步包括:在所述测试服务器上存储硬件检测脚本,并通过小型计算机系统接口SAS线将所述待测试存储器与所述测试服务器相连;

当所述待测试存储器上IO模块的驱动程序加载成功后,

运行所述硬件检测脚本,通过所述SAS线抓取所述待测试存储器的硬件信息;

根据所述硬件信息,判断所述待测试存储器与所述测试服务器之间SAS线连接状态以及所述待测试存储器上各个功能模块的在位状态是否均正常,如果否,发出报警信息;其中,所述功能模块包括硬盘及所述IO模块中的任意一个或全部。

本发明实施例还提供了一种加载IO模块驱动程序的装置,包括:扫描单元、识别单元及加载单元;

所述扫描单元,用于针对于每一个与测试服务器相连的待测试存储器,扫描所述待测试存储器上IO模块的型号PN码;

所述识别单元,用于根据所述扫描单元获取到的所述PN码,确定所述IO模块的类型;

所述加载单元,用于根据所述识别单元确定的所述IO模块的类型,在所述测试服务器上运行预先存储在是测试服务器上的驱动加载脚本,加载所述待测试存储器上所述IO模块的驱动程序。

优选地,该装置进一步包括:日志形成单元;

所述扫描单元,进一步用于针对于每一个所述待测试存储器,扫描所述待测试存储器上IO模块的序列号;

所述日志形成单元,用于根据所述扫描单元获取到的所述序列号,形成对应于是待测试存储器的日志文件,并在所述测试服务器上运行预先存储的日志记录脚本,将所述扫描单元扫描PN码、所述识别单元确定IO模块类型及所述加载单元加载驱动的过程及结果记录到与所述待测试存储器相对应的日志文件中。

优选地,该装置进一步包括:判断单元;

所述判断单元,用于判断所述加载单元是否将所述待测试存储器上IO模块的驱动程序加载成功,如果是,通过所述测试服务器输出驱动加载成功信息,否则通过所述测试服务器输出驱动加载失败信息。

优选地,该装置进一步包括:硬件检测单元;

所述硬件检测单元,用于根据所述判断单元的判断结果,当所述待测试存储器上IO模块的驱动程序加载成功后,运行预先存储在所述测试服务器上的硬件检测脚本,通过连接所述测试服务器与各个所述待测试存储器的SAS线抓取所述待测试存储器的硬件信息;并根据所述硬件信息,判断所述待测试存储器与所述测试服务器之间SAS线连接状态以及所述待测试存储器上各个功能模块的在位状态是否均正常,如果否,发出报警信息;其中,所述功能模块包括硬盘及所述IO模块中的任意一个或全部。

本发明实施例还提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述实施例提供的任意一种加载IO模块驱动程序的方法。

本发明实施例还提供了一种存储控制器,包括:处理器、存储器和总线;

所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述实施例提供的任意一种加载IO模块驱动程序的方法。

本发明实施例提供了一种加载IO模块驱动程序的方法及装置,将至少一个待测试存储器与测试服务器相连,并在测试服务器上存储驱动加载脚本,针对于与测试服务器相连的每一个待测试存储器,扫描待测试存储器上IO模块的PN码,根据IO模块的PN码确定IO模块的类型,根据IO模块的类型运行驱动加载脚本,加载待测试存储器上IO模块的驱动程序。由此可见,预先将驱动加载脚本存储到测试服务器上,通过扫描IO模块的PN码确定IO模块的类型,驱动加载脚本运行后根据IO模块的类型自动完成驱动程序的加载,无需手动输入复杂的指令代码,从而可以提高加载存储器上IO模块驱动程序的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种加载IO模块驱动程序的方法流程图;

图2是本发明另一个实施例提供的一种加载IO模块驱动程序的方法流程图;

图3是本发明又一个实施例提供的一种加载IO模块驱动程序的方法流程图;

图4是本发明一个实施例提供的一种加载IO模块驱动程序的装置示意图;

图5是本发明另一个实施例提供的一种加载IO模块驱动程序的装置示意图;

图6是本发明又一个实施例提供的一种加载IO模块驱动程序的装置示意图;

图7是本发明再一个实施例提供的一种加载IO模块驱动程序的装置示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种加载IO模块驱动程序的方法,该方法可以包括以下步骤:

步骤101:将测试服务器与至少一个待测试存储器相连,并在所述测试服务器上存储驱动加载脚本;

步骤102:针对于每一个所述待测试存储器,扫描所述待测试存储器上IO模块的型号PN码;

步骤103:根据所述PN码,确定所述IO模块的类型;

步骤104:根据所述IO模块的类型,在所述测试服务器上运行所述驱动加载脚本,加载所述待测试存储器上所述IO模块的驱动程序。

本发明实施例提供了一种加载IO模块驱动程序的方法,将至少一个待测试存储器与测试服务器相连,并在测试服务器上存储驱动加载脚本,针对于与测试服务器相连的每一个待测试存储器,扫描待测试存储器上IO模块的PN码,根据IO模块的PN码确定IO模块的类型,根据IO模块的类型运行驱动加载脚本,加载待测试存储器上IO模块的驱动程序。由此可见,预先将驱动加载脚本存储到测试服务器上,通过扫描IO模块的PN码确定IO模块的类型,驱动加载脚本运行后根据IO模块的类型自动完成驱动程序的加载,无需手动输入复杂的指令代码,从而可以提高加载存储器上IO模块驱动程序的效率。

在本发明一个实施例中,在步骤102中扫描待测试存储器上IO模块的PN码之前,针对于每一个待测试存储器,可以首先扫描该待测试存储器上IO模块的序列号,根据IO模块的序列号创建与该待测试存储器相对应的日志文件。通过运行预先存储到测试服务器上的日志记录脚本,将后续扫描IO模块PN码、根据PN码确定IO模块类型及根据IO模块类型加载驱动程序的过程及结果记录到该待测试存储器相对应的日志文件中。

具体地,通过预先在测试存储器上存储日志记录脚本,针对于每一个待测试存储器,在开始加载IO模块的驱动程序之前,扫描该存储器上IO模块的序列号,由于IO模块的序列号具有唯一性,根据IO模块的序列号形成对应于该待测试存储器的日志文件。在日志文件形成之后,对日志记录脚本进行运行,在日志记录脚本进行运行的过程中,日志记录脚本能够将后续进行的扫描IO模块PN码、根据PN码确定IO模块类型及根据IO模块类型加载驱动程序的过程及结果写入到日志文件中。这样,针对于每一个待测试存储器形成一个日志文件,并在日志文件中记录对该待测试存储器上IO模块驱动程序进行加载的过程及结果,通过对日志文件进行查看,可以确定驱动程序加载的整个过程,方便驱动程序加载失败时进行原因分析,提高了该加载IO模块驱动程序的方法的易用性。

在本发明一个实施例中,在步骤104中加载待测试存储器上IO模块的驱动程序之后,可以判断待测试存储器上IO模块的驱动程序是否加载成功,如果是,通过测试服务器输出驱动加载成功信息,否则通过测试服务器输出驱动加载失败信息。

具体地,针对于与测试服务器相连的每一个待测试存储器,在完成加载该待测试存储器上IO模块的驱动程序后,判断IO模块的驱动程序是否成功,如果IO模块的驱动程序加载成功,则通过测试服务器输出驱动加载成功信息,如果IO模块的驱动程序加载失败,则通过测试服务器输出驱动加载失败信息。这样,根据测试服务器输出的信息,可以确定待测试存储器上IO模块的是否加载成功,进而确定是否对待测试存储器进行相应的测试,避免待测试存储器上IO模块的驱动未加载成功仍对待测试存储器进行测试,造成测试失败的情况发生。

在本发明一个实施例中,除了在测试服务器上存储驱动加载脚本外,还可以在测试服务器上存储硬件检测脚本,并通过SAS线将各个待测试存储器与测试服务器相连。针对于每一个待测试存储器上,当判断出待测试存储器上IO模块的驱动程序加载成功后,运行硬件检测脚本,通过SAS线抓取待测试存储器的硬件信息;根据抓取到的硬件信息,判断待测试存储器与测试服务器之间SAS线连接状态是否正常,以及判断待测试存储器上硬盘、IO模块等功能模块的在位状态是否正常,如果上述两个判断的结果有一个为否,则发出报警信息。

具体地,在确定待测试存储器上IO模块的驱动程序加载成功后,从待测试存储器上抓取硬件信息,根据所抓取的硬件信息对待测存储器与测试服务器之间SAS线连接状态、以及待测试存储器上各个功能模块的在位状态进行判断,如果SAS线连接状态及各个功能模块的在位状态均正常,则可以针对该待测试存储器进行各种类型的测试;如果SAS线连接状态及各个功能模块的在位状态中存在一个或多个不正常,则说明待测试存储器无法正常完成测试,相应地发出报警信息。

如果待测试存储器与测试服务器之间的SAS线连接状态异常,或待测试存储器上硬盘、IO模块的在位状态异常,均会导致测试服务器无法向待测试存储器发送指令,无法正常完成对待测试存储器进行各种类型的测试。在完成待测试存储器上IO模块驱动程序的加载后,通过抓取硬件信息的方式判断待测试存储器的硬件状态是否正常,当判断硬件状态正常后再对待测试存储器进行各种测试,保证测试成功率;当判断硬件状态存在异常后发出报警信息,测试人员可以根据报警信息对待测试存储器存在的硬件故障进行排除。

下面以同时加载8台存储器上IO模块的驱动程序为例,对本发明实施例提供的加载IO模块驱动程序的方法作进一步详细说明,如图2所示,该方法可以包括以下步骤:

步骤201:通过SAS线将测试服务器与各个待测试存储器相连。

在本发明一个实施例中,在测试服务器上安插HBA(Host bus adapter,主机总线适配器)卡,根据待测试存储器的数量,通过相应数量的SAS线将待测试存储器与HBA卡相连,完成测试硬件环境的搭建。

例如,现有8台存储器需要进行测试,分别为存储器1至存储器8,通过服务器A对8台存储器进行测试时,在服务器A上安插HBA卡,通过8条SAS线将存储器1至存储器8分别与HBA卡相连,实现服务器A与8台存储器之间交互。

步骤202:在测试服务器上存储驱动加载脚本、日志记录脚本及硬件检测脚本。

在本发明一个实施例中,在测试服务器上存储驱动加载脚本、日志记录脚本以及硬件检测脚本,其中,驱动加载脚本在运行时能够加载待测试存储器上IO模块的驱动程序,硬件检测脚本在运行时能够抓取硬件信息并判断硬件状态,日志记录脚本能够创建日志文件并将驱动程序加载过程和结果、待测试存储器的硬件信息写入日志文件。

例如,在服务器A上存储文件名为load.ini的驱动加载脚本,文件名为record.ini的日志记录脚本及文件名为detect.ini的硬件检测脚本。

步骤203:扫描待测试存储器上IO模块的序列号,运行日志记录脚本,根据所述序列号形成对应的日志文件。

在本发明一个实施例中,针对于与测试服务器相连的每一个待测试存储器,通过扫描枪等设备扫描待测试存储器上IO模块的序列号,其中IO模块的序列号位于待测试存储器机箱上或待测试存储器中IO模块上。在获取到IO模块的序列号后,运行存储在测试服务器上的日志记录脚本,日志记录脚本根据扫描获得的序列号形成与待测试存储器相对应的日志文件。在日志文件创建完成后,日志记录脚本持续运行,将后续各个步骤的操作及操作结果记录到日志文件中。

例如,存储器1至存储器8上IO模块的序列号以条形码的形式粘贴在各自的机箱上,通过与服务器A相连的扫描枪依次对存储器1至存储器8机箱上IO模块序列号的条形码进行扫描,分别获取8个存储器上IO模块的序列号。在服务器A上运行文件名为record.ini的日志记录脚本,根据各个存储器上IO模块的序列号,分别形成对应于8个存储器的日志文件。日志记录脚本持续运行将后续步骤的过程及结果记录到对应的日志文件中,比如,将后续针对存储器1进行的各项操作及操作结果写入存储器对应的日志文件中。

步骤204:扫描待测试存储器上IO模块的PN码。

在本发明一个实施例中,针对于每一个待测试存储器,通过扫描枪等扫描设备扫描待测试存储器上IO模块的PN码,其中IO模块的PN码位于待测试存储器机箱上或待测试存储器中IO模块上。

例如,存储器1至存储器8上IO模块的PN码以条形码的形式粘贴中各自的机箱上,通过与服务器A相连的扫描枪依次对存储器1至存储器8上标识有IO模块PN码的条形码,分别获取存储器1至存储器8上IO模块的PN码,其中存储器1至存储器8上IO模块的PN码依次为PN码1至PN码8。

步骤205:根据IO模块的PN码确定IO模块的类型。

在本发明一个实施例中,在获取到各个待测试存储器上IO模块对应的PN码后,根据预先存储在配置文件中的PN码与IO模块类型的对应关系,分别确定各个待测试存储器上IO模块的类型。

例如,配置文件中记录有各种IO模块类型与PN码的对应关系,根据存储器1至存储器8上IO模块的PN码,分别确定存储器1至存储器8上IO模块的类型。比如根据存储器1对应的PN码1,确定存储器1上IO模块的类型为SAS类型;根据存储器2对应的PN码2,确定存储器2上IO模块的类型为光纤通道FC类型。

步骤206:运行驱动加载脚本,根据IO模块的类型加载待测试存储器上IO模块对应的驱动程序。

在本发明一个实施例中,在获取到各个待测试存储器上IO模块的类型后,在测试服务器上运行驱动加载脚本,驱动加载脚本根据各个待测试存储器上IO模块的类型,在测试服务器上加载对应类型的IO模块驱动程序。

例如,在获取到存储器1至存储器8上IO模块的类型后,在服务器A上运行文件名为load.ini的驱动加载脚本,驱动加载脚本根据各个存储器上IO模块的类型,在服务器A上加载相对应的IO模块驱动程序。比如,驱动加载脚本根据存储器1上SAS类型的IO模块,在服务器A上加载对应于存储器1的SAS类型IO模块的驱动程序;根据存储器2上FC类型的IO模块,在服务器A上加载对应于存储器2的FC类型IO模块的驱动程序。

步骤207:判断驱动程序是否加载成功,如果是,执行步骤208,否则执行步骤212。

在本发明一个实施例中,针对于每一个待测试存储器,在完成对应于该待测试存储器的IO模块驱动程序加载之后,判断驱动程序加载是否成功,如果是,说明可以进行后续测试处理,相应地执行步骤208;如果否,说明驱动程序加载失败,无法继续后续测试处理,相应地执行步骤212。

例如,存储器1、存储器3及存储器5的IO模块驱动程序加载成功,针对存储器1、存储器3及存储器5执行步骤208;存储器2、存储器4及存储器6至8的IO模块驱动程序加载失败,针对存储器2、存储器4及存储器6至8执行步骤212。

步骤208:运行硬件检测脚本,抓取待测试存储器的硬件信息。

在本发明一个实施例中,针对于每一驱动程序加载成功的待测试存储器,在测试服务器上运行硬件检测脚本,硬件检测脚本通过SAS线抓取待测试存储器的硬件信息,其中,硬件信息包括待测试存储器与测试服务器之间SAS线的连接状态信息以及待测试存储器上各个功能模块的在位状态信息,功能模块包括硬盘及IO模块。

例如,经过步骤207的判断,存储器1、存储器3及存储器5的驱动程序加载成功,运行文件名为detect.ini的硬件检测脚本,硬件检测脚本通过SAS线依次抓取存储器1、存储器3及存储器5与服务器A之间SAS线的连接状态信息,以及依次抓取存储器1、存储器3及存储器5上硬盘、IO模块的在位状态信息。

步骤209:根据硬件信息判断待测试存储器上硬件状态是否正常,如果是,执行步骤210,否则执行步骤211。

在本发明一个实施例中,针对于每一个抓取到硬件信息的待测试存储器,根据所抓取到的硬件信息,判断待测试存储器与测试服务器之间SAS线的在位状态,以及待测试存储器上硬盘、IO模块等功能模块的在位状态是否均正常,如果是,说明待测试存储器的硬件状态正常,相应地执行步骤210;如果否,说明待测试存储器的硬件状态异常,相应地执行步骤211。

例如,根据存储器1的硬件信息,确定存储器1与服务器A之间的SAS线连接状态正常,且存储器1上各个硬盘及IO模块的在位状态正常,则针对存储器1执行步骤210;根据存储器3的硬件信息,确定存储器3与服务器A之间的SAS线连接状态异常,根据存储器5的硬件信息,确定存储器5上硬盘的在位状态异常,则针对存储器3和存储器5执行步骤211。

步骤210:通过测试服务器发送驱动加载成功信息,并结束当前流程。

在本发明一个实施例中,针对驱动程序加载成功且硬件状态正常的待测试存储器,通过测试服务器发送针对该待测试存储器的驱动加载成功信息,以通知测试人员该待测试存储器可以进行后续测试步骤。

例如,针对存储器1,通过服务器A发送存储器1上驱动程序加载成功的驱动加载成功信息。

步骤211:通过测试服务器发送报警信息,并结束当前流程。

在本发明一个实施例中,针对驱动程序加载成功且硬件状态异常的待测试存储器,通过测试服务器发送报警信息,以通知测试人员该待测试存储器的硬件状态异常。

例如,针对存储器3和存储器5,通过服务器A发送报警信息。

步骤212:通过测试服务器发送驱动加载失败信息。

在本发明一个实施例中,针对IO模块驱动程序没有加载成功的待测试存储器,通过测试服务器发送驱动加载失败信息,已通知测试人员该待测试存储器的IO模块驱动程序加载失败。

例如,针对存储器2、存储器4及存储器6至8,通过服务器A发送驱动加载失败信息。

如图3所示,本发明一个实施例提供了一种加载IO模块驱动程序的方法,该方法可以包括:

步骤301:测试环境搭建。

在本发明实施例中,准备好一台服务器(插好HBA卡),依次将每台待测存储器与服务器之间用SAS线连接好(最多可同时测试8PCS存储器);服务器安装好Linux操作系统;挂载U盘mount/dev/sdb4/mnt;复制即可cp/mnt/SAS_driver/usr/local/bin/Neptune/。

步骤302:执行自动化程式。

在本发明实施例中,系统下执行自动化程式(加执行权限chmod+x SAS_driver;执行命令./SAS_driver)。

步骤303:扫描IO模块的序列号,形成日志文件。

在本发明实施例中,扫描存储器中SAS I/O的序列号(每次测试的产品为同一型号),log会自动写在以时间命名的文件夹中,路径可以自己通过配置文件指定;程序中断log自动结束。

实现脚本可以包括:

print"Please scan uiomsn[]:";

chomp($uiom_sn=<STDIN>);

my$output_filename="20160906portchk_SAS_driver.log"。

步骤304:扫描IO模块的PN码,根据PN码确定IO模块的类型。

在本发明实施例中,扫描IO的PN,程序通过PN判断IO的类型(例:待测产品为SAS IO)。

步骤305:加载驱动程序。

在本发明实施例中,程序自动加载驱动程序,加载成功程序继续,加载失败打印error,处理异常后重新执行程序。

实现脚本可以包括:

subload_driver;

if($fc){`modprobemptfc`}--FC类型的I/O

if($sas){`modprobemptsas`}---SAS类型的I/O。

步骤306:检测硬件状态。

在本发明实施例中,驱动加载完成后,程序通过SAS线检测硬件状态,硬件状态OK,打印测试PASS,同时测试结束;检测硬件状态异常,打印error信息,排除问题后重新测试。

实现脚本可以包括:

dprint("sg_map-i-x");

our@sg_map=`sg_map-x-i`;

chomp(@sg_map)。

在图2及图3所示的加载IO模块驱动程序的方法中,驱动加载脚本可以包括以下内容:

在图2及图3所示的加载IO模块驱动程序的方法中,硬件检测脚本可以包括以下内容:

subget_uut_info{

($partial_uutsn)=@_;

($partial_uutsn_hex)=unpack('H*',"@_");

$partial_uutsn_hex=~s/(.{2})/$1/g;

our@iocs=();

ur@ips=();

dprint("sg_map-i-x");

our@sg_map=`sg_map-x-i`;

chomp(@sg_map);

foreach(@sg_map){

my$uut_match=-1;

my$type=-1;

my$ioc=-1;

$type=(split/\s+/,$_)[5];

$ioc=(split/\s+/,$_)[1];

if($type==13){

my$dev_sg;

my@UUT_SGSN=();

my@pg83=();

my@pg85=();

my@scan_parts=(split/\s+/,$_);

$dev_sg=$scan_parts[0];

my$maybe_fw_prefix=$scan_parts[-1];

@pg85=`sg_inq-p 85h$dev_sg 2>/dev/null`;

@pg83=`sg_inq-p 83h$dev_sg 2>/dev/null`;

chomp(@pg83);

chomp(@pg85);

foreach(@pg83){

if($_=~/$partial_uutsn/or(/$partial_uutsn_hex/)){

$uut_match=1;

}

}

if($uut_match==1){

#Everything after this line is specific to the UUT we are testing our$fw_prefix=$maybe_fw_prefix;

dprint("(get_uut_info)dev_sg:'$dev_sg'");

@chap_ips=();

foreach(@pg85){

next unless/http:/;

my$check_ip=(split/http\:///)[1];

next if($check_ipeq"0.0.0.0");

next if($check_ipeq"");

dprint("(get_uut_info)check_ip:'$check_ip'");

my$telnet;

$retries=5;

while($retries--){

$telnet=chap->new($check_ip);

if(($telnet==-1)||(not defined($telnet))){

if($retries){

sleep 5;

}else{

print"\n\nERROR[$telnet]:UNABLE TO CONNECT TO IP$check_ip EXITING!!!\n\n\n";

exit;

}

}else{

$retries=0;

}

}

my$retries=5;

while($retries--){

@chap_ips=$telnet->get_ip_addresses;

if(@chap_ips){

$retries=0;

}else{

if($retries){

print"Got blank MC IP from MC CLI,retrying...$retries\n";

sleep 30;

}else{

print"\n\nERROR:UNABLE TO GET MC IP FROM MC CLI,EXITING!!!\n\n\n";

exit;

}

}

如图4所示,本发明一个实施例提供了一种加载IO模块驱动程序的装置,包括:扫描单元401、识别单元402及加载单元403;

所述扫描单元401,用于针对于每一个与测试服务器相连的待测试存储器,扫描所述待测试存储器上IO模块的型号PN码;

所述识别单元402,用于根据所述扫描单元401获取到的所述PN码,确定所述IO模块的类型;

所述加载单元403,用于根据所述识别单元402确定的所述IO模块的类型,在所述测试服务器上运行预先存储在是测试服务器上的驱动加载脚本,加载所述待测试存储器上所述IO模块的驱动程序。

在本发明一个实施例中,如图5所示,该加载IO模块驱动程序的装置还可以包括:日志形成单元504;

所述扫描单元401,进一步用于针对于每一个所述待测试存储器,扫描所述待测试存储器上IO模块的序列号;

所述日志形成单元504,用于根据所述扫描单元401获取到的所述序列号,形成对应于是待测试存储器的日志文件,并在所述测试服务器上运行预先存储的日志记录脚本,将所述扫描单元401扫描PN码、所述识别单元402确定IO模块类型及所述加载单元403加载驱动的过程及结果记录到与所述待测试存储器相对应的日志文件中。

在本发明一个实施例中,如图6所示,该加载IO模块驱动程序的装置还可以包括:判断单元605;

所述判断单元605,用于判断所述加载单元403是否将所述待测试存储器上IO模块的驱动程序加载成功,如果是,通过所述测试服务器输出驱动加载成功信息,否则通过所述测试服务器输出驱动加载失败信息。

在本发明一个实施例中,如图7所示,该加载IO模块驱动程序的装置还可以包括:硬件检测单元706;

硬件检测单元706,用于根据所述判断单元605的判断结果,当所述待测试存储器上IO模块的驱动程序加载成功后,运行预先存储在所述测试服务器上的硬件检测脚本,通过连接所述测试服务器与各个所述待测试存储器的SAS线抓取所述待测试存储器的硬件信息;并根据所述硬件信息,判断所述待测试存储器与所述测试服务器之间SAS线连接状态以及所述待测试存储器上各个功能模块的在位状态是否均正常,如果否,发出报警信息;其中,所述功能模块包括硬盘及所述IO模块中的任意一个或全部。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例还提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明实施例提供的任意一种加载IO模块驱动程序的方法。

本发明实施例还提供了一种存储控制器,包括:处理器、存储器和总线;

所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制执行本发明实施例提供的任意一种加载IO模块驱动程序的方法。

本发明实施例提供了一种加载IO模块驱动程序的方法及装置,至少具有如下有益效果:

1、在本发明实施例提供的加载IO模块驱动程序的方法及装置中,将至少一个待测试存储器与测试服务器相连,并在测试服务器上存储驱动加载脚本,针对于与测试服务器相连的每一个待测试存储器,扫描待测试存储器上IO模块的PN码,根据IO模块的PN码确定IO模块的类型,根据IO模块的类型运行驱动加载脚本,加载待测试存储器上IO模块的驱动程序。由此可见,预先将驱动加载脚本存储到测试服务器上,通过扫描IO模块的PN码确定IO模块的类型,驱动加载脚本运行后根据IO模块的类型自动完成驱动程序的加载,无需手动输入复杂的指令代码,从而可以提高加载存储器上IO模块驱动程序的效率。

2、在本发明实施例提供的加载IO模块驱动程序的方法及装置中,针对于每一个待测试存储器形成一个日志文件,并在日志文件中记录对该待测试存储器上IO模块驱动程序进行加载的过程及结果,通过对日志文件进行查看,可以确定驱动程序加载的整个过程,方便驱动程序加载失败时进行原因分析,提高了该加载IO模块驱动程序的方法的易用性。

3、在本发明实施例提供的加载IO模块驱动程序的方法及装置中,在完成加载该待测试存储器上IO模块的驱动程序后,判断IO模块的驱动程序是否成功,如果IO模块的驱动程序加载成功,则通过测试服务器输出驱动加载成功信息,如果IO模块的驱动程序加载失败,则通过测试服务器输出驱动加载失败信息。这样,根据测试服务器输出的信息,可以确定待测试存储器上IO模块的是否加载成功,进而确定是否对待测试存储器进行相应的测试,避免待测试存储器上IO模块的驱动未加载成功仍对待测试存储器进行测试,造成测试失败的情况发生。

4、在本发明实施例提供的加载IO模块驱动程序的方法及装置中,通过Perl语言编写脚本,能够批量加载IO模块的驱动程序,从而是测试操作简单方便。可以同时大批量的对存储器进行测试,每个测试步骤都有测试日志产生,不但效率高,而且有重量保障。在提高测试效率和测试良率的同时,降低了测试的成本。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1