一种PCIe设备N+1冗余备份方法及系统
技术领域
本发明属于服务器数据处理技术领域,具体涉及一种PCIe设备N+1冗余备份方法及系统。
背景技术
目前服务器系统中,大部分的外设设备(卡)都是通过PCIe(peripheralcomponent interconnect express)总线和系统相连。PCIe设备之间的冗余备份并无很好的解决方法。如系统中某一张PCIe卡(如GPU卡)故障,即使系统内有其他冗余的GPU卡,因为设备的资源与原有设备的资源不一致,或在系统内呈现的接口不一致等原因,仍然无法直接替换使用,没有很好的冗余备份解决方案。
因此,现阶段需设计一种PCIe设备N+1冗余备份方法及系统,来解决以上问题。
发明内容
本发明目的在于提供一种PCIe设备N+1冗余备份方法,用于解决上述现有技术中存在的技术问题,如:PCIe设备之间的冗余备份并无很好的解决方法。如系统中某一张PCIe卡如GPU卡)故障,即使系统内有其他冗余的GPU卡,仍然无法直接替换使用,没有很好的冗余备份解决方案。
为实现上述目的,本发明的技术方案是:
一种PCIe设备N+1冗余备份方法,包括以下子步骤:
S1:在PCIe Switch下,外接N+1个相同功能的PCIe设备;
S2:正常情况下,冗余管理软件控制服务器操作系统对第N+1个PCIe设备不上电,服务器操作系统只能读取N个PCIe设备,第N+1个PCIe设备处于备份模式,并不被服务器操作系统所读取;所述冗余管理软件用于保存和恢复相关PCIe设备的状态信息;
S3:服务器操作系统上电或者初始化时,1~N个PCIe设备被服务器操作系统或者驱动正常初始化,分配相关的资源;
S4:PCIe设备驱动程序正常接管N个PCIe设备,并利用这N个PCIe设备为服务器操作系统提供正常的业务服务;
S5:PCIe故障管理软件记录所有N个正常工作PCIe设备的相关资源状态;所述PCIe故障管理软件用于监控服务器操作系统PCIe链路状态和设备状态
S6:当1~N其中的某一个PCIe设备故障时,PCIe设备驱动保持住,PCIe设备驱动保持住后,所有新下发的IO请求和业务请求,不返回结果;
S7:故障管理软件发现此故障,自动把故障的PCIe设备移除,并上电第N+1个备份PCIe设备,接入服务器操作系统;
S8:故障管理软件把前面保存的N个资源状态中的故障的那个PCIe设备的相关资源状态回填至第N+1个备份PCIe设备的寄存器空间;
S9:PCIe设备驱动正常访问新接入的PCIe设备,正常向第N+1个PCIe设备处理下发保持住的IO请求和业务请求,确保第N+1个设备正常工作。
进一步的,步骤S1中,所述PCIe设备为服务器操作系统PCIe接口的外部设备。
进一步的,步骤S5和S8中,所述相关资源状态包括:PCIe BAR空间地址、BUS地址、以及配置空间里面的关键设置信息。
进一步的,所述相关资源状态按PCIe设备的编号,从1到N编号保存在服务器操作系统存储设备中。
进一步的,所述服务器操作系统存储设备为硬盘。
进一步的,步骤S6中,已经下发IO请求和业务请求的,返回给生成业务软件失败,要求业务软件重发。
进一步的,步骤S5中,故障管理软件记录所有N个正常工作PCIe设备的相关资源状态的过程中,若记录到故障的PCIe设备且服务器操作系统掉电时;
则重新上电,继续掉电前的记录过程。
一种PCIe设备N+1冗余备份系统,该冗余备份系统用于上述的一种PCIe设备N+1冗余备份方法,包括故障管理软件、冗余管理软件、PCIe设备驱动程序;
所述故障管理软件用于监控服务器操作系统PCIe链路状态和设备状态,并在发现设备故障时及时通知设备驱动程序和冗余管理软件;
所述PCIe设备驱动程序用于初始化使能设备,以及处理相关业务下发至PCIe设备的IO和业务请求,在设备故障时,需要保持住相关IO请求和业务请求,在新设备接入后,恢复相关业务请求;所述使能设备是指:初始化完成后,开启设备的相关功能单元;
所述冗余管理软件用于保存和恢复相关PCIe设备的状态信息。
与现有技术相比,本发明所具有的有益效果为:
本方案的一个创新点在于,由于传统的PCIe总线为带内总线,且为树形结构,总线上的每个PCIe设备都有自己独立的唯一资源范围和访问地址。一般情况下,如果系统中的某个PCIe设备故障,将会导致此部分功能失效。某些冗余备份的方案有很大的局限性,比如,使用两张网卡,一主一备,一张故障后,重新配置备份网卡的IP和主网卡一致,从而从业务与层面上达成业务冗余切换和业务连续行。但此方案并不具备通用性。PCIe设备有很多种,比如网卡、RAID卡、GPU卡、等等。每种类型的卡都有不一样的业务功能和接口,无法在业务层面上使用统一的备份冗余方案。
无需关注具体的PCIe设备具体功能,在底层驱动和操作系统层面,通过保存恢复PCIe相关设备和状态信息,达成在线替换冗余PCIe设备,确保系统软件无中断在线运行正常。
附图说明
图1为本申请实施例的步骤流程示意图。
图2为本申请实施例的PCIe Switch连接的系统结构示意图。
图3为本申请实施例的CPU(RC)直出连接系统结构示意图。
具体实施方式
下面结合本发明的附图1-附图3,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例:
如图1和图2所示,一般而言,在服务器操作系统里面,PCIe外设由PCIe Switch或者CPU(RC)直出连接(如图3所示)。无论哪种情况,本方法都具有适用性,下面说以PCIeSwitch连接方式说明:
PCIe Switch下,外接N+1个相同功能的PCIe设备(Device ,即D1,D2,D3,…DN+1),例如N+1个PCIe卡。
正常情况下,冗余管理软件控制服务器操作系统对第N+1张PCIe卡不上电,服务器操作系统只能看到N个PCIe卡,为服务器操作系统提供GPU算力功能,第N+1个PCIe卡处于备份模式,并不被服务器操作系统所看到。
服务器操作系统上电或者初始化时,1~N个PCIe设备被服务器操作系统或者驱动正常初始化,分配相关的资源。
PCIe设备的驱动程序正常接管N个PCIe设备,并利用这N个PCIe设备为服务器操作系统提供正常的业务服务。
PCIe故障管理软件记录所有N个正常工作PCIe设备的PCIe相关资源状态(包括:PCIe BAR空间地址、BUS地址、以及配置空间里面的关键设置信息等)。故障管理软件记录所有N个正常工作PCIe设备的相关资源状态的过程中,若记录到故障的PCIe设备且服务器操作系统掉电时;则重新上电,继续掉电前的记录过程(实际操作时,正在保存相关故障卡的信息的时候,服务器操作系统容易出现掉电情况)。其中,首先判断服务器操作系统是否掉电,若服务器操作系统掉电,则标记当前记录的位置,然后将服务器操作系统上电后,实时记录直接调取至标记的位置处继续记录过程。
这些记录的资源状态按PCIe设备的编号,从1到N编号保存在服务器操作系统存储设备(如硬盘)中。
当1~N其中的某一个(如第m个)PCIe设备故障时,PCIe设备驱动保持住(把所有的请求暂停处理,不返回结果)此后所有新下发的IO请求和业务请求,暂不处理。驱动给上层软件提供业务接口,上层软件调用驱动的接口实现功能。即,上层软件会不停的向驱动下发相关请求,当PCIe设备故障时,驱动对此时刻以后收到的业务请求暂不处理,保持住状态,不返回。
对于已经下发了的IO和业务请求,返回给生成业务软件失败,要求业务软件重发。
其中,上层业务软件如果设计不合理,当保持住IO不返回,或者返回要求上层业务软件重发时。上层软件如果超时容错比较差,可能导致业务失败。若实际操作中出现该情况时,要上层业务软件修改适配。
故障管理软件发现此故障,自动把故障的PCIe设备移除,并上电第N+1个备份PCIe设备,接入服务器操作系统。
故障管理软件把前面保存的N个资源状态中的第m个PCIe设备的相关资源状态(包括:PCIe BAR空间地址、BUS地址、以及配置空间里面的关键设置信息等)回填至第N+1个备份PCIe设备的寄存器空间。
PCIe设备驱动正常访问新接入的PCIe设备,正常向第N+1个PCIe设备处理下发保持住的IO和业务请求,确保第N+1个设备正常工作,服务器操作系统业务软件无感知,无缝切换。
对于驱动而言,第N+1个设备的相关硬件资源和分配的总线、地址等,均与故障的第m个设备完全相同,驱动可以完全按照以前访问第m个设备的方式,继续使用第N+1个设备。
一种冗余备份PCIe设备系统,包括故障管理软件、冗余管理软件、PCIe设备驱动程序。
所述的故障管理软件用于监控系统PCIe链路状态和设备状态,并在发现设备故障时及时通知设备驱动程序和冗余管理软件;
所述的PCIe设备驱动程序,初始化使能设备(使能的意思是说,初始化完成后,开启设备的相关功能单元。),以及处理相关业务下发至PCIe设备的IO和业务请求,在设备故障时,需要保持住相关IO和业务请求,在新设备接入后,恢复相关业务请求。
所述冗余管理软件,用于保存和恢复相关PCIe设备的状态信息。
通过保存恢复相关设备和状态信息,达成在线替换冗余PCIe设备,确保系统软件无中断在线运行正常。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。