本申请涉及存储技术领域,更具体地说,涉及一种hba卡重置方法、系统及一种hba卡和一种计算机可读存储介质。
背景技术
hba(中文全称:主机总线适配器,英文全称:hostbusadapter)卡是一个在服务器和存储装置间提供输入/输出(i/o)处理和物理连接的电路板或集成电路适配器。因为hba卡减轻了主处理器在数据存储和检索任务的负担,它能够提高服务器、存储设备的性能。云数据中心的虚拟化特性使确保公司数据、财务数据和敏感数据的安全变得至关重要。但因为数据安全产品一直以附加(add-on)的形式应用于网络中,这使实现可扩展性、高效、稳定的存储设备成为关键,hba卡的可扩展性及高效、稳定性成为了存储设备的关键技术。
在现有技术中hba卡的驱动程序中无法监控各端口的异常状况,进而在端口故障时完成hba卡的重置,硬件稳定性较差。
因此,如何在hba卡端口故障时完成快速节点操作,提高硬件的稳定性是本领域技术人员需要解决的问题。
技术实现要素:
本申请的目的在于提供一种hba卡重置方法、系统及一种hba卡和一种计算机可读存储介质,在hba卡端口故障时完成快速节点操作,提高了硬件的稳定性。
为实现上述目的,本申请提供了一种hba卡重置方法,包括:
获取所述hba卡端口的状态信息,根据所述状态信息判断是否存在故障端口;
若是,则保存所有所述端口的寄存器信息,释放所述故障端口的dma内存和队列;
向检测程序发送异常信息,以便所述检测程序重启所有所述端口。
其中,还包括:
向所述检测程序注册重置节点,以便所述检测程序通过所述重置节点重启所有所述端口。
其中,获取所述hba卡端口的状态信息,包括:
获取所述hba卡端口对应的队列中的i/o数据,将所述i/o数据作为所述状态信息。
其中,所述检测程序重启所有所述端口,包括:
所述检测程序通过abortio处理函数中断所有所述端口的进程,并通过重置端口处理函数重启所述所有端口。
其中,所述向检测程序发送异常信息,以便所述检测程序重启所有所述端口之后,还包括:
向所述检测程序发送rscn命令,以便所述检测程序初始化所述hba卡的端口登录功能。
其中,所述向检测程序发送异常信息,以便所述检测程序重启所有所述端口,还包括:
根据所述寄存器信息生成转存文件。
为实现上述目的,本申请提供了一种hba卡重置系统,包括:
获取模块,用于获取所述hba卡端口的状态信息,根据所述状态信息判断是否存在故障端口;若是,则启动保存模块的工作流程;
保存模块,用于保存所有所述端口的寄存器信息,释放所述故障端口的dma内存和队列;
发送模块,用于向检测程序发送异常信息,以便所述检测程序重启所有所述端口。
其中,还包括:
生成模块,用于根据所述寄存器信息生成转存文件。
为实现上述目的,本申请提供了一种hba卡,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述hba卡重置方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述hba卡重置方法的步骤。
通过以上方案可知,本申请提供的一种hba卡重置方法,包括:获取所述hba卡端口的状态信息,根据所述状态信息判断是否存在故障端口;若是,则保存所有所述端口的寄存器信息,释放所述故障端口的dma内存和队列;向检测程序发送异常信息,以便所述检测程序重启所有所述端口。
本申请提供的hba卡重置方法,驱动程序通过各端口的状态信息确定故障端口,即当hba卡中存在故障端口时,在保存寄存器信息后向检测程序发送异常信息,检测程序收到该异常信息后重启hba卡中的所有端口,在规定时间内完成快速节点重置操作。由此可见,在本申请提供的hba卡重置方法在驱动程序中进行故障处理描述,在端口故障时完成快速节点重置操作。另外,在重启所有端口之前保存寄存器信息有利于后续步骤生成dump文件等,便于产品出问题后的日志分析,在缩短产品问题的解决周期的同时,提高了硬件稳定性。本申请还公开了一种hba卡重置系统及一种hba卡和一种计算机可读存储介质,同样能实现上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种hba卡重置方法的流程图;
图2为本申请实施例公开的另一种hba卡重置方法的流程图;
图3为本申请实施例公开的一种hba卡重置系统的结构图;
图4为本申请实施例公开的一种hba卡的结构图;
图5为本申请实施例公开的另一种hba卡的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种hba卡重置方法,在hba卡端口故障时完成快速节点操作,提高了硬件的稳定性。
参见图1,本申请实施例公开的一种hba卡重置方法的流程图,如图1所示,包括:
s101:获取所述hba卡端口的状态信息,根据所述状态信息判断是否存在故障端口;若是,则进入s101;
在具体实施中,hba卡中的驱动程序轮询各端口队列中的i/o数据,以获取各端口的状态信息,根据该状态信息判断是否存在故障节点,若是,则进入s101,若否,则结束流程。
作为一种优选实施方式,在本步骤之前,驱动程序可以向主机的检测程序注册重置节点,以便后续步骤检测程序通过该重置节点重启所有端口,完成hba卡的快速节点重置操作(fnr)。
在具体实施中,驱动程序向检测程序注册重置节点后,主io进程在启动过程中会启动用户态fc卡驱动,先后进行disablefnr、用户态驱动初始化、enablefnr的操作。用户态驱动初始化包括为每个端口映射寄存器、分配内存和队列、分配处理函数等,该处理函数可以包括abortio处理函数、重置端口处理函数、设置led状态灯的处理函数、超时操作处理函数等。
s102:保存所有所述端口的寄存器信息,释放所述故障端口的dma内存和队列;
在具体实施中,对所述hba中所有端口的physdev_control寄存器的rc位写0,执行在保持所述所有端口的配置值不变的情况下重启所述所有端口,并释放故障端口的dma内存和队列。
s103:向检测程序发送异常信息,以便所述检测程序重启所有所述端口。
在具体实施中,检测程序可以通过上述的abortio处理函数中断所有所述端口的进程,并通过上述的重置端口处理函数重启所有端口。
作为一种优选实施方式,检测程序重启所有所述端口之后,驱动程序生成并通过重置节点向检测程序发送rscn命令,检测程序接收到该命令后初始化所述hba卡的端口登录功能。
本申请实施例提供的hba卡重置方法,驱动程序通过各端口的状态信息确定故障端口,即当hba卡中存在故障端口时,在保存寄存器信息后向检测程序发送异常信息,检测程序收到该异常信息后重启hba卡中的所有端口,在规定时间内完成快速节点重置操作。由此可见,在本申请实施例提供的hba卡重置方法在驱动程序中进行故障处理描述,在端口故障时完成快速节点重置操作。另外,在重启所有端口之前保存寄存器信息有利于后续步骤生成dump文件等,便于产品出问题后的日志分析,在缩短产品问题的解决周期的同时,提高了硬件稳定性。
本申请实施例公开了一种hba卡重置方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图2,本申请实施例提供的另一种hba卡重置方法的流程图,如图2所示,包括:
s211:向所述检测程序注册重置节点,获取所述hba卡端口对应的队列中的i/o数据,将所述i/o数据作为所述hba卡端口的状态信息;
在具体实施中,驱动程序向检测程序注册重置节点后,主io进程在启动过程中会启动用户态fc卡驱动,先后进行disablefnr、用户态驱动初始化、enablefnr的操作。用户态驱动初始化包括为每个端口映射寄存器、分配内存和队列等,在端口出现故障时,需要在重启前保存寄存器信息,释放内存和队列,以便根据该寄存器信息生成dump文件,便于产品出问题后的日志分析,并确保端口重启后的正常工作。
s212:根据所述状态信息判断是否存在故障端口;若是,则进入s101;
s202:保存所有所述端口的寄存器信息,释放所述故障端口的dma内存和队列;
s203:向检测程序发送异常信息,以便所述检测程序通过abortio处理函数中断所有所述端口的进程,并通过重置端口处理函数重启所述所有端口;
在具体实施中,当出现故障端口时,驱动程序会在退出前使能receivequeue上的标志位,驱动异步发送该事件,检测程序检测异步接收到该消息后,会使用aborttag(异常终止标签,可以理解为abortio处理函数)中断所有端口的进程。最后,驱动程序通过重置端口处理函数重启所述所有端口,生成rscn命令,检测程序接收到该命令时,重新初始化端口登录功能,完成节点重置操作。
s204:根据所述寄存器信息生成转存文件。
在具体实施中,可以对所述hba中所有端口的physdev_control寄存器的dd位写0,动态的搜集hba卡中寄存器的状态信息,所述状态信息可以包括足够的固件状态寄存器、控制寄存器信息、运行状态计数寄存器、配置寄存器信息等。
下面对本申请实施例提供的一种hba卡重置系统进行介绍,下文描述的一种hba卡重置系统与上文描述的一种hba卡重置方法可以相互参照。
参见图3,本申请实施例提供的一种hba卡重置系统的结构图,如图3所示,包括:
获取模块301,用于获取所述hba卡端口的状态信息,根据所述状态信息判断是否存在故障端口;若是,则启动保存模块的工作流程;
保存模块302,用于保存所有所述端口的寄存器信息,释放所述故障端口的dma内存和队列;
发送模块303,用于向检测程序发送异常信息,以便所述检测程序重启所有所述端口。
本申请实施例提供的hba卡重置系统,驱动程序通过各端口的状态信息确定故障端口,即当hba卡中存在故障端口时,在保存寄存器信息后向检测程序发送异常信息,检测程序收到该异常信息后重启hba卡中的所有端口,在规定时间内完成快速节点重置操作。由此可见,在本申请实施例提供的hba卡重置系统在驱动程序中进行故障处理描述,在端口故障时完成快速节点重置操作。另外,在重启所有端口之前保存寄存器信息有利于后续步骤生成dump文件等,便于产品出问题后的日志分析,在缩短产品问题的解决周期的同时,提高了硬件稳定性。
在上述实施例的基础上,作为一种优选实施方式,还包括:
注册模块,用于向所述检测程序注册重置节点,以便所述检测程序通过所述重置节点重启所有所述端口。
在上述实施例的基础上,作为一种优选实施方式,所述获取模块301包括:
获取单元,用于获取所述hba卡端口对应的队列中的i/o数据,将所述i/o数据作为所述状态信息;
判断单元,用于根据所述状态信息判断是否存在故障端口;若是,则启动保存模块的工作流程。
在上述实施例的基础上,作为一种优选实施方式,所述发送模块303包括:
发送单元,用于向检测程序发送异常信息;
重启单元,用于所述检测程序通过abortio处理函数中断所有所述端口的进程,并通过重置端口处理函数重启所述所有端口。
在上述实施例的基础上,作为一种优选实施方式,还包括:
初始化模块,用于向所述检测程序发送rscn命令,以便所述检测程序初始化所述hba卡的端口登录功能。
在上述实施例的基础上,作为一种优选实施方式,还包括:
生成模块,用于根据所述寄存器信息生成转存文件。
本申请还提供了一种hba卡,参见图4,本申请实施例提供的一种hba卡的结构图,如图4所示,包括:
存储器100,用于存储计算机程序;
处理器200,用于执行所述计算机程序时可以实现上述任一实施例所提供hba卡重置方法的步骤。
具体的,存储器100包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器200为hba卡重置设备提供计算和控制能力,执行所述存储器100中保存的计算机程序时,可以实现上述任一实施例所提供hba卡重置方法的步骤。
本申请实施例提供的hba卡,驱动程序通过各端口的状态信息确定故障端口,即当hba卡中存在故障端口时,在保存寄存器信息后向检测程序发送异常信息,检测程序收到该异常信息后重启hba卡中的所有端口,在规定时间内完成快速节点重置操作。由此可见,在本申请实施例提供的hba卡重置设备在驱动程序中进行故障处理描述,在端口故障时完成快速节点重置操作。另外,在重启所有端口之前保存寄存器信息有利于后续步骤生成dump文件等,便于产品出问题后的日志分析,在缩短产品问题的解决周期的同时,提高了硬件稳定性。
在上述实施例的基础上,作为优选实施方式,参见图5,所述hba卡还包括:
输入接口300,与处理器200相连,用于获取外部导入的计算机程序、参数和指令,经处理器200控制保存至存储器100中。该输入接口300可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。
显示单元400,与处理器200相连,用于显示处理器200发送的数据。该显示单元400可以为pc机上的显示屏、液晶显示屏或者电子墨水显示屏等。具体的,在本实施例中,可以通过显示单元400显示寄存器信息等。
网络端口500,与处理器200相连,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术等。
本申请还提供了一种计算机可读存储介质,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所提供hba卡重置方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。