CN116501409A - 一种基于双Flash的服务器启动方法、计算机设备及存储介质 - Google Patents
一种基于双Flash的服务器启动方法、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN116501409A CN116501409A CN202310469933.4A CN202310469933A CN116501409A CN 116501409 A CN116501409 A CN 116501409A CN 202310469933 A CN202310469933 A CN 202310469933A CN 116501409 A CN116501409 A CN 116501409A
- Authority
- CN
- China
- Prior art keywords
- flash
- wdt
- hash value
- main flash
- starting
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000001960 triggered effect Effects 0.000 claims abstract description 43
- 230000008439 repair process Effects 0.000 claims description 19
- 230000009977 dual effect Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 12
- 230000002093 peripheral effect Effects 0.000 claims description 5
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Hardware Redundancy (AREA)
- Retry When Errors Occur (AREA)
Abstract
本申请属于计算机技术领域,公开了一种基于双Flash的服务器启动方法、计算机设备及存储介质,其中方法包括:通过定时器设备检查判断上一次启动时WDT是否被触发;若WDT未被触发,通过主Flash中的程序启动系统;若WDT被触发,通过备用Flash读取主Flash上的数据并计算主Flash的第一哈希值;判断第一哈希值与存储在备用Flash的第二哈希值是否一致;若第一哈希值与第二哈希值不一致,则使定时器设备清空WDT的状态,重新设定倒计时时长,通过备用Flash修复主Flash,修复完成后,通过主Flash中的程序启动系统;若第一哈希值与第二哈希值一致,则定时器设备清空WDT的状态,并重新设定倒计时时长,在倒计时时长内通过主Flash中的程序启动系统。解决了因单个Flash损坏,而无法开机的情况。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于双Flash的服务器启动方法、计算机设备及存储介质。
背景技术
在服务器的硬件设计中,服务器的复位地址通常指向Flash,在服务器开机时,存储在Flash中的固件程序开始运行,固件程序的作用是初始化硬件,并将硬件的资源上报给操作系统,在开机过程中固件程序起着呈上启下的作用,一旦存储在Flash中的固件程序发生故障,如Flash中读写数据出错、数据升级流程异常或者要升级的数据本身故障将导致无法开机,甚至会损坏硬件。
发明内容
为此,本申请的实施例提供了一种基于双Flash的服务器启动方法、计算机设备及存储介质,在服务器出厂后发生主Flash中固件损坏的情况下,不需人工的参与,即可自动通过备用Flash实现对主Flash损坏的修复。
第一方面,本申请提供一种基于双Flash的服务器启动方法。
本申请是通过以下技术方案得以实现的:
一种基于双Flash的服务器启动方法,所述方法包括:
S10:服务器开机时,通过定时器设备检查上一次启动时WDT是否被触发;
S20:若上一次启动时WDT未被触发,通过主Flash中的程序启动系统;
S30:若上一次启动时WDT被触发,通过备用Flash读取主Flash上的数据并计算主Flash的第一哈希值;
S40:将所述第一哈希值与存储在所述备用Flash的第二哈希值进行对比,判断所述第一哈希值与所述第二哈希值是否一致;
S50:若所述第一哈希值与所述第二哈希值不一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,通过备用Flash修复主Flash,修复完成后,通过主Flash中的程序启动系统;
S60:若所述第一哈希值与所述第二哈希值一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,在所述倒计时时长内通过主Flash中的程序启动系统。
在本申请一较佳的示例中可以进一步设置为,
所述通过定时器设备检查上一次启动时WDT是否被触发的步骤包括:
通过定时器设备读取上一次启动时WDT的状态寄存器的状态位,若状态位为第一状态值,则确认上一次启动时的启动情况为启动失败,WDT被触发;
若状态位为第二状态值,则确认上一次启动时的启动情况为启动成功,WDT未被触发。
在本申请一较佳的示例中可以进一步设置为,
所述若上一次启动时WDT未被触发,服务器通过主Flash中的程序启动系统的步骤还包括:
定时器设备清空WDT的状态,并重新设定倒计时时长,判断所述WDT在被触发前是否正常进入系统,若未能正常进入系统,则返回步骤S10;
若正常进入系统,在进入系统时,主Flash中的固件向定时器设备发送关闭WDT指令。
在本申请一较佳的示例中可以进一步设置为,所述若所述第一哈希值与所述第二哈希值一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,服务器在所述倒计时时长内通过主Flash中的程序启动系统的步骤还包括:
记录服务器在倒计时时长内通过主Flash中的程序启动系统的重启次数,将所述重启次数与预设次数阈值进行对比,若所述重启次数大于或等于所述预设次数阈值,则通过备用Flash修复主Flash。
在本申请一较佳的示例中可以进一步设置为,所述通过备用Flash修复主Flash的步骤包括:
将备用Flash的数据复制到内存中,切换Flash芯片的片选信号,将所述片选信号选定为主Flash,将内存中的备用Flash的数据写入主Flash中,完成主Flash修复。
在本申请一较佳的示例中可以进一步设置为,所述通过主Flash中的程序启动系统的步骤包括:
服务器开机后,主Flash中的固件开始运行,初始化硬件资源,读取硬盘上的引导程序,根据引导程序进入操作系统,关闭WDT。
在本申请一较佳的示例中可以进一步设置为,所述备用Flash读取主Flash上的数据并计算主Flash的第一哈希值的方法为:SHA-512或SM3中的一种。
在本申请一较佳的示例中可以进一步设置为,所述定时器设备为外设的具备WDT功能的控制器,包括BMC或EC。
第二方面,本申请提供一种计算机设备。
本申请是通过以下技术方案得以实现的:
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任意一种基于双Flash的服务器启动方法的步骤。
第三方面,本申请提供一种计算机可读存储介质。
本申请是通过以下技术方案得以实现的:
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任意一种基于双Flash的服务器启动方法的步骤。
综上所述,与现有技术相比,本申请实施例提供的技术方案带来的有益效果至少包括:通过在服务器开机时,利用定时器设备来检查上一次启动时WDT(Watchdog Timer)看门狗的状态,通过上一次启动时看门狗的状态来判断上一次启动时是成功还是失败,若上一次启动时看门狗未被触发,则证明上一次启动成功,则尝试通过主Flash中的程序启动系统;若上一次启动时看门狗被触发,则证明上一次启动失败。此时没有直接利用备用Flash来修复主Flash,而是利用备用Flash来读取主Flash上的数据来计算此时主Flash的第一哈希值,与存储在备用Flash中的第二哈希值进行对比,来进一步确认主Flash是否损坏,若确认主Flash损坏时,通过备用Flash来修复主Flash,修复完成后通过主Flash中的程序启动系统。解决了因主Flash损坏,而无法开机的情况,在服务器出厂后发生主Flash中固件损坏的情况下,不需人工的参与,即可自动通过备用Flash实现对主Flash损坏的修复。
附图说明
图1为本申请一示例性实施例提供的一种基于双Flash的服务器启动方法的流程示意图;
图2为本申请又一示例性实施例提供的一种基于双Flash的服务器启动方法的流程示意图。
具体实施方式
本具体实施例仅仅是对本申请的解释,其并不是对本申请的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本申请的权利要求范围内都受到专利法的保护。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
下面结合说明书附图对本申请实施例作进一步详细描述。
在本申请的一个实施例中,提供一种基于双Flash的服务器启动方法,如图1所示,主要步骤描述如下:
S10:服务器开机时,通过定时器设备检查上一次启动时WDT是否被触发。
具体的,定时器设备检查上一次启动时WDT的状态,根据上一次启动时WDT的状态来判断上一次启动时WDT是否被触发。
在一些实施例,定时器设备为外设的具备WDT功能的控制器,可以为基板管理控制器BMC(Baseboard Management Controller)或嵌入式控制器EC(Embedded Controller)。相比于其他利用主Flash中内部定时器的方案,在主Flash出现损坏时,其中的内部定时器同样不能工作;而本方案中采用外设的定时器设备,在主Flash完全损坏的情况下,同样可以起到超时重启的作用,在保证服务器正常启动方面更加可靠。同时需要进行说明的是,WDT看门狗是一种专门的定时器模块,可以帮助服务器恢复,当WDT看门狗达到其计数周期的末尾时,会重置服务器系统,防止系统进入死循环。在WDT看门狗中有一个状态寄存器,一旦WDT看门狗被触发造成重启,这个状态位会被重置。外设的定时器设备通过读取上一次启动时WDT看门狗的状态寄存器的状态位,根据状态寄存器的状态位来判断上一次启动时WDT看门狗是否被触发,进而判断上一次启动时为启动成功还是启动失败。需要进行说明的是,系统中存在多个WDT看门狗,需要固定其中一个WDT看门狗进行判断,具体WDT看门狗的类型本申请不进行限制。
具体的,定时器设备读取上一次启动时WDT看门狗的状态寄存器的状态位,若状态位为第一状态值,则确认上一次启动时,WDT看门狗被触发,上一次启动情况为启动失败;若状态位为第二状态值,则确认上一次启动时,WDT看门狗未被触发,上一次启动情况为启动成功。其中第一状态值为数值1,第二状态值为数值0。即上一次启动时,WDT看门狗的状态寄存器的状态位为1时,则证明上一次启动成功;WDT看门狗的状态寄存器的状态位为0时,则证明上一次启动失败。
S20:若上一次启动时WDT未被触发,通过主Flash中的程序启动系统。
若上一次启动时,WDT看门狗的状态寄存器的状态位为1时,即上一次启动时WDT未被触发,则说明上一次启动成功,主Flash中的程序可以正常启动系统的。则定时器设备清空WDT看门狗的状态,并重新设定倒计时时长,服务器通过主Flash中的程序启动系统。
在一些实施例中,若上一次启动时WDT看门狗未被触发,服务器通过主Flash中的程序成功启动系统时,还需要定时器设备清空WDT看门狗的状态,并重新设定倒计时时长,判断在倒计时时长内通过主Flash中的程序启动系统的过程中,在WDT看门狗被触发前是否正常进入系统,若未能正常进入系统,则会触发WDT看门狗,系统重启,则返回本启动方法的步骤S10,重新来检查上一次启动时WDT看门狗的状态。若正常进入系统,则在进入系统时,主Flash中的固件向定时器设备通讯,向定时器设备发送关闭WDT看门狗指令,将WDT看门狗关闭。其中,倒计时时长可以根据需要进行设定。
S30:若上一次启动时WDT被触发,通过备用Flash读取主Flash上的数据并计算主Flash的第一哈希值。
具体的,备用Flash通过读取主Flash上的数据,根据主Flash上的数据来计算此时主Flash的第一哈希值,第一哈希值为主Flash的实时哈希值。在生成Flash的固件程序时,会生成相应的哈希值,然后将哈希值和固件程序一起烧录到Flash中,可以通过计算实时哈希值来判断主Flash是否被修改过。实时哈希值可以通过哈希函数进行计算,哈希函数是将任意长度的消息映射成固定长度消息的函数。在本申请中,使用的哈希函数为SHA-512算法或SM3算法。SHA-512算法对数据的处理分为两个阶段:第一阶段为明文预处理阶段,将明文按照1024位进行分组和填充,使得每个分组具有相同的长度,第二阶段为迭代加密阶段。SHA-512算法相比于其他的哈希函数算法具有更高的抗碰撞的能力。SM3算法是一种密码散列函数标准,密钥长度和分组长度均为128位,同样具有较高的安全性和较高的运算速度。
S40:将所述第一哈希值与存储在备用Flash的第二哈希值进行对比,判断第一哈希值与第二哈希值是否一致。
备用Flash与原始未被损坏的主Flash具有相同的固件程序,以及具有相同的哈希值。固件程序在实际运行时,可以通过读取Flash的片选信号来判断是主Flash还是备用Flash,以此来实现不同的代码逻辑,例如主Flash只需要进行启动系统,备用Flash还需增加修复Flash的功能。因此备用Flash中的第二哈希值即可看做是主Flash的原始哈希值,通过判断第一哈希值和第二哈希值是否一致可以来判断主Flash是否被损坏。若第一哈希值和第二哈希值不一致,则证明主Flash损坏;若第一哈希值和第二哈希值一致,则证明主Flash存在未损坏的可能性,即主Flash可能已经损坏,也可能未损坏。
S50:若第一哈希值与第二哈希值不一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,通过备用Flash修复主Flash,修复完成后,通过主Flash中的程序启动系统。
当主Flash的第一哈希值和预存在备用Flash中的第二哈希值不一致时,说明主Flash已经被修改,主Flash损坏。此时需要备用Flash对主Flash进行修复,修复完成后再通过主Flash启动系统。
S60:第一哈希值与第二哈希值一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,在倒计时时长内通过主Flash中的程序启动系统。
在一些实施例中,计算出第一哈希值与第二哈希值一致时,说明主Flash中的数据存在未被损坏的可能性,仍有成功启动的概率,即可能主Flash中的数据未被损坏,上一次启动失败是由其他原因造成的,例如因WDT故障导致的启动失败,此时首先可以在倒计时时长内通过主Flash中的程序启动系统。
具体的,在倒计时时长内通过主Flash中的程序启动系统还需要记录在倒计时时长内服务器通过主Flash中的程序启动系统的重启次数,将重启次数与预设次数阈值进行对比。其中预设次数阈值为设定在倒计时时长内,允许的最多的重启次数。若重启次数大于或等于预设次数阈值,即在倒计时时长内经过最多的重启次数,服务器仍未能通过主Flash中的程序启动系统,则认为此时主Flash出现损坏,需要通备用Flash修复主Flash。若在最多的重启次数内能通过主Flash中的程序启动系统,则正常进入系统。
在一些实施例中,预设次数阈值为5次。即在倒计时时长内,最多允许服务器通过主Flash中的程序启动系统5次。将预设次数阈值设置为5次的好处,在于可以尽量保证通过主Flash中的程序启动系统的概率下,尽可能提高启动效率。因尝试次数过少时,不能保证一定可以通过主Flash中的程序启动系统;当尝试次数过多时,会导致尝试通过主Flash中的程序启动系统的时间过长。当计算得到的主Flash内的第一哈希值与存储在备用Flash中的第二哈希值一致时,只是说明主Flash存在未被损害的可能性,但也存在主Flash已经被损害的可能性。在这种情况下,过多尝试通过主Flash中的程序启动系统会导致效率降低。
在一些实施例中,通过备用Flash修复主Flash的步骤具体为:将备用Flash中的数据复制到内存中,切换Flash芯片的片选信号,将片选信号选定为主Flash,在将内存中的备用Flash的数据写入到主Flash中,完成对主Flash修复。
在一些实施例中,在判断主Flash未损坏或将主Flash修复好后,通过Flash中的程序启动系统的步骤具体为:服务器开机后,主Flash中固件程序开始运行,初始化硬件资源,读取硬盘上的引导程序,根据引导程序进行操作系统,关闭WDT看门狗。
本申请通过在服务器开机时,利用定时器设备来检查上一次启动时WDT(WatchdogTimer)看门狗的状态,通过上一次启动时看门狗的状态来判断上一次启动时是成功还是失败,若上一次启动时看门狗未被触发,则证明上一次启动成功,则尝试通过主Flash中的程序启动系统;若上一次启动时看门狗被触发,则证明上一次启动失败。此时没有直接利用备用Flash来修复主Flash,而是利用备用Flash来读取主Flash上的数据来计算此时主Flash的第一哈希值,与存储在备用Flash中的第二哈希值进行对比,来进一步确认主Flash是否损坏,若确认主Flash损坏时,通过备用Flash来修复主Flash,修复完成后通过主Flash中的程序启动系统。解决了因主Flash损坏,而无法开机的情况,在服务器出厂后发生主Flash中固件损坏的情况下,不需人工的参与,即可自动通过备用Flash损坏实现主Flash损坏的修复;同时可以通过哈希值来判断主Flash是否完全损坏,在主Flash可能未损坏的情况下,尝试通过主Flash进入系统,避免因其他原因导致的启动失败而对主Flash进行误修复。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器。
该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述任意一种基于双Flash的服务器启动方法:
S10:服务器开机时,通过定时器设备检查上一次启动时WDT是否被触发;
S20:若上一次启动时WDT未被触发,通过主Flash中的程序启动系统;
S30:若上一次启动时WDT被触发,通过备用Flash读取主Flash上的数据并计算主Flash的第一哈希值;
S40:将第一哈希值与存储在备用Flash的第二哈希值进行对比,判断第一哈希值与第二哈希值是否一致;
S50:若第一哈希值与第二哈希值不一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,通过备用Flash修复主Flash,修复完成后,通过主Flash中的程序启动系统;
S60:若第一哈希值与第二哈希值一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,在倒计时时长内通过主Flash中的程序启动系统。
如图2所示,开机时,定时器设备首先检查上次启动时WDT的状态,WDT有一个状态寄存器,一旦WDT在上一次启动时被触发,造成重启,状态寄存器的状态位会被重置为1,WDT在上一次启动时未被触发,状态寄存器的状态为0,所以可以通过读取状态寄存器的值,来判断上一次的启动是正常启动,还是被WDT触发之后的启动。此时会存在如下两种情况:
情况一、如果上一次启动时WDT被触发,则说明上一次启动失败,则定时器设备将系统切换到从备用Flash开机。此时,整个系统运行在备用Flash上。首先备用Flash会读取主Flash上的内容,主Flash被划分为SCP、Hostboot两个区域,备用Flash对这两个区域进行计算,并计算得到哈希值,作为第一哈希值。计算哈希值的哈希算法为SHA-512或SM3。同时需要进行说明的是,在生成Flash的固件程序时,也会生成对应的哈希值,在将固件程序烧录到Flash时,也会将哈希值一并烧录到Flash中,将此哈希值看做是第二哈希值。然后比较固件生成时产生的第二哈希值,与计算得到的第一哈希值是否一致。
根据对比结果此时存在两种情况:
(a)如果第一哈希值和第二哈希值一致,说明主Flash中数据可能并未损坏,上一次的启动失败也有可能是其他原因造成的,主Flash仍然有成功启动的可能性。此时,系统会尝试主Flash中的程序重启,尝试5次后,如仍未能启动成功,就进入修复主Flash阶段,否则可以正常进入系统。进行尝试5次的好处在于,若尝试次数太少,不能确保主Flash是否可以成功启动;尝试次数过多,则会导致尝试重启的时间会过长。
(b)如果第一哈希值和第二哈希值不一致,则说明主Flash中数据确实已经被破坏了。这时,需要将利用备用Flash中备份的内容来修复主Flash。修复完成后,会重启整个系统,重新开机。通过计算哈希值来判断主Flash是否损坏,若因为其他原因造成启动失败,则不对主Flash进行修复,不更改主Flash内的数据。
其中,备用Flash修复主Flash的具体步骤为:首先备用Flash将其内容复制到内存中,然后切换Flash芯片的片选信号,将Flash芯片选定为主Flash,然后将内存中备用Flash的数据,全部写入主Flash。
情况二、如果上一次启动时WDT没有被触发,则说明上一次启动成功,主Flash的内容是可以正常启动系统的。这时就开始正常的开机启动流程,正常开机启动流程即我们按下电源开关键,系统进入正常启动的流程。服务器开机后,主Flash的固件运行,初始化硬件资源,然后读取硬盘上的引导程序,最后进入操作系统。
需要定时器设备打开WDT,并重新设定倒计时时长,然后正常开机启动。如果在倒计时时长内,可以正常开机进入操作系统,则主Flash中固件会在进入操作系统之前向定时器设备通信,关闭WDT,并清除尝试重启次数;如果在倒计时时长内WDT被触发之前依然未能进入操作系统,则WDT被触发,系统重启,重新开始整个开机流程。倒计时时长的设定可以为100s,或者其他时间,可以根据需要进行设定,本申请不对倒计时时长的具体数值进行限定。
同时需要进行说明的是,对于Flash中存储内容的描述,备用Flash不包含Flash开机所需使用的配置文件,这部分配置文件只有在主Flash中会用到。在其他特殊场合下,如用户主动更新Flash上的代码信息时,此时主Flash和备用Flash上的数据都需要更新,确保主Flash和备用Flash上的数据一致性。
本申请在服务器出厂后发生主Flash中固件损坏的情况下,不需要人工的参与,即可自动实现主Flash固件的自动修复;借用第三方的定时器设备,为外设设备,可以在主Flash完全损坏的情况下,也能起到超时重启的作用,可靠性更高。其他直接利用主Flash中定时器的方案,在主Flash损坏的情况下,定时器同样不能工作。同时会通过计算哈希值的机制来判断主Flash是否真正损坏,减少因WDT错误等原因造成的误修复。相比于现有的通过UBOOT启动的方式,具有更高的可靠性。
在一个实施例中,提供一种计算机可读存储介质,包括存储器、处理器及存储在存储器上并可以在处理器上执行的计算机程序,处理器执行计算机程序以实现上述任意一种基于双Flash的服务器启动方法:
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)、DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将本申请所述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
Claims (10)
1.一种基于双Flash的服务器启动方法,其特征在于,所述方法包括:
S10:服务器开机时,通过定时器设备检查上一次启动时WDT是否被触发;
S20:若上一次启动时WDT未被触发,通过主Flash中的程序启动系统;
S30:若上一次启动时WDT被触发,通过备用Flash读取主Flash上的数据并计算主Flash的第一哈希值;
S40:将所述第一哈希值与存储在所述备用Flash的第二哈希值进行对比,判断所述第一哈希值与所述第二哈希值是否一致;
S50:若所述第一哈希值与所述第二哈希值不一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,通过备用Flash修复主Flash,修复完成后,通过主Flash中的程序启动系统;
S60:若所述第一哈希值与所述第二哈希值一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,在所述倒计时时长内通过主Flash中的程序启动系统。
2.根据权利要求1所述的基于双Flash的服务器启动方法,其特征在于,所述通过定时器设备检查上一次启动时WDT是否被触发的步骤包括:
通过定时器设备读取上一次启动时WDT的状态寄存器的状态位,若状态位为第一状态值,则确认上一次启动时的启动情况为启动失败,WDT被触发;
若状态位为第二状态值,则确认上一次启动时的启动情况为启动成功,WDT未被触发。
3.根据权利要求1所述的基于双Flash的服务器启动方法,其特征在于,所述若上一次启动时WDT未被触发,通过主Flash中的程序启动系统的步骤还包括:
定时器设备清空WDT的状态,并重新设定倒计时时长,判断所述WDT在被触发前是否正常进入系统,若未能正常进入系统,则返回步骤S10;
若正常进入系统,在进入系统时,主Flash中的固件向定时器设备发送关闭WDT指令。
4.根据权利要求1所述的基于双Flash的服务器启动方法,其特征在于,所述若所述第一哈希值与所述第二哈希值一致,则使定时器设备清空WDT的状态,并重新设定倒计时时长,在所述倒计时时长内通过主Flash中的程序启动系统的步骤还包括:
记录在倒计时时长内通过主Flash中的程序启动系统的重启次数,将所述重启次数与预设次数阈值进行对比,若所述重启次数大于或等于所述预设次数阈值,则通过备用Flash修复主Flash。
5.根据权利要求1所述的基于双Flash的服务器启动方法,其特征在于,所述通过备用Flash修复主Flash的步骤包括:
将备用Flash的数据复制到内存中,切换Flash芯片的片选信号,将所述片选信号选定为主Flash,将内存中的备用Flash的数据写入主Flash中,完成主Flash修复。
6.根据权利要求1所述的基于双Flash的服务器启动方法,其特征在于,所述通过主Flash中的程序启动系统的步骤包括:
服务器开机后,主Flash中的固件开始运行,初始化硬件资源,读取硬盘上的引导程序,根据引导程序进入操作系统,关闭WDT。
7.根据权利要求1所述的基于双Flash的服务器启动方法,其特征在于,所述备用Flash读取主Flash上的数据并计算主Flash的第一哈希值的方法为:SHA-512或SM3中的一种。
8.根据权利要求1所述的基于双Flash的服务器启动方法,其特征在于,所述定时器设备为外设的具备定时功能的控制器,包括BMC或EC。
9.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现权利要求1至8任意一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至8任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310469933.4A CN116501409B (zh) | 2023-04-27 | 2023-04-27 | 一种基于双Flash的服务器启动方法、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310469933.4A CN116501409B (zh) | 2023-04-27 | 2023-04-27 | 一种基于双Flash的服务器启动方法、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116501409A true CN116501409A (zh) | 2023-07-28 |
CN116501409B CN116501409B (zh) | 2024-05-07 |
Family
ID=87317829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310469933.4A Active CN116501409B (zh) | 2023-04-27 | 2023-04-27 | 一种基于双Flash的服务器启动方法、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501409B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117193863A (zh) * | 2023-09-08 | 2023-12-08 | 上海合芯数字科技有限公司 | 主机引导程序的启动方法、装置、系统和处理器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104049999A (zh) * | 2014-06-19 | 2014-09-17 | 福建星网视易信息系统有限公司 | 基于网络的存储设备自动修复系统及其方法 |
CN109144584A (zh) * | 2018-07-27 | 2019-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种可编程逻辑器件及其启动方法、系统和存储介质 |
CN111767172A (zh) * | 2020-06-29 | 2020-10-13 | 深圳市宽宏科技有限公司 | 一种基于看门狗及bootloader的机顶盒自修复办法 |
CN112988465A (zh) * | 2021-03-26 | 2021-06-18 | 东莞市峰谷科技有限公司 | 一种单片机升级失败自动恢复运行的方法 |
CN113064757A (zh) * | 2021-03-26 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种服务器固件自恢复系统及服务器 |
CN114866404A (zh) * | 2022-04-06 | 2022-08-05 | 深圳市灵动高科电子有限公司 | 智能网关灾难恢复方法、装置、电子设备以及存储介质 |
CN115658157A (zh) * | 2022-11-04 | 2023-01-31 | 山东云海国创云计算装备产业创新中心有限公司 | 一种固件程序启动方法、系统、存储介质及设备 |
-
2023
- 2023-04-27 CN CN202310469933.4A patent/CN116501409B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104049999A (zh) * | 2014-06-19 | 2014-09-17 | 福建星网视易信息系统有限公司 | 基于网络的存储设备自动修复系统及其方法 |
CN109144584A (zh) * | 2018-07-27 | 2019-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种可编程逻辑器件及其启动方法、系统和存储介质 |
CN111767172A (zh) * | 2020-06-29 | 2020-10-13 | 深圳市宽宏科技有限公司 | 一种基于看门狗及bootloader的机顶盒自修复办法 |
CN112988465A (zh) * | 2021-03-26 | 2021-06-18 | 东莞市峰谷科技有限公司 | 一种单片机升级失败自动恢复运行的方法 |
CN113064757A (zh) * | 2021-03-26 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种服务器固件自恢复系统及服务器 |
CN114866404A (zh) * | 2022-04-06 | 2022-08-05 | 深圳市灵动高科电子有限公司 | 智能网关灾难恢复方法、装置、电子设备以及存储介质 |
CN115658157A (zh) * | 2022-11-04 | 2023-01-31 | 山东云海国创云计算装备产业创新中心有限公司 | 一种固件程序启动方法、系统、存储介质及设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117193863A (zh) * | 2023-09-08 | 2023-12-08 | 上海合芯数字科技有限公司 | 主机引导程序的启动方法、装置、系统和处理器 |
CN117193863B (zh) * | 2023-09-08 | 2024-05-24 | 上海合芯数字科技有限公司 | 主机引导程序的启动方法、装置、系统和处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN116501409B (zh) | 2024-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8972591B2 (en) | Method for downloading software | |
CN102298545B (zh) | 一种系统启动引导处理方法及装置 | |
CN113064757B (zh) | 一种服务器固件自恢复系统及服务器 | |
CN116501409B (zh) | 一种基于双Flash的服务器启动方法、计算机设备及存储介质 | |
CN112328358B (zh) | 一种基于虚拟机的双系统启动方法及存储介质 | |
CN103858107A (zh) | 安全恢复装置和方法 | |
CN108932249B (zh) | 一种管理文件系统的方法及装置 | |
CN111552592A (zh) | 一种双备份启动方法及系统 | |
CN113114730B (zh) | 升级方法、装置、终端设备及存储介质 | |
US6483746B2 (en) | Electronic apparatus | |
CN110188004A (zh) | 一种终端设备的双备份软件系统管理方法及系统 | |
CN113553115B (zh) | 一种基于异构多核芯片的启动方法以及存储介质 | |
CN114047958A (zh) | 一种服务器的基板管理控制器的启动方法、设备及介质 | |
CN110865906B (zh) | 一种电机初始位置角度存储方法、装置、车辆及存储介质 | |
CN112559059A (zh) | 一种bios选项配置方法及相关装置 | |
CN112882757A (zh) | 一种嵌入式系统双分区安全启动方法 | |
CN113672302A (zh) | 一种路由器启动方法、装置、路由器及存储介质 | |
CN116185510A (zh) | 分区切换启动方法、阵列服务器和计算机可读存储介质 | |
CN115391090A (zh) | 固件双镜像自恢复方法、装置、电子设备及存储介质 | |
CN114356653A (zh) | 一种工控防火墙掉电保护方法及装置 | |
CN114356658A (zh) | 固件升级异常的处理方法、计算机设备以及可读存储介质 | |
CN113467805A (zh) | 一种网络设备的固件回滚方法及相关装置 | |
CN111124729A (zh) | 一种故障盘判定方法、装置、设备及计算机可读存储介质 | |
CN118051383A (zh) | 一种分区损坏切换备份的方法及系统 | |
CN114911648B (zh) | Xip flash程序驱动方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |