本發(fā)明涉及存儲,特別是涉及一種固件升級方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、基板管理控制器(baseboard?management?controller,bmc)作為獨立于服務(wù)器或存儲系統(tǒng)的小型操作系統(tǒng),用于遠(yuǎn)程管理和監(jiān)控設(shè)備。其固件升級通常在開機階段隨基本輸入輸出系統(tǒng)(basic?input?output?system,bios)固件升級一同完成。然而,升級過程中可能受到各種外界因素的影響,如設(shè)備停電、bios軟件出錯或固件文件錯誤,導(dǎo)致升級失敗。
2、當(dāng)前的軟件架構(gòu)在處理bmc升級失敗時,通常在升級結(jié)束后設(shè)備啟動時上報告警,提示用戶重新進行升級。但這種方法存在弊端,如用戶需要重啟設(shè)備并重新構(gòu)建固件文件,耗時較長;且在進行自動化任務(wù)時,若遇到概率性問題導(dǎo)致升級失敗,bmc固件版本可能仍為舊版本,影響后續(xù)任務(wù)的進行。
3、鑒于上述問題,如何解決目前bmc升級失敗的處理方式耗時長,且可能影響后續(xù)任務(wù)進行,是該領(lǐng)域技術(shù)人員亟待解決的問題。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的是提供一種固件升級方法、裝置、設(shè)備及介質(zhì),以解決目前bmc升級失敗的處理方式耗時長,且可能影響后續(xù)任務(wù)進行的問題。
2、為解決上述技術(shù)問題,本發(fā)明提供一種固件升級方法,包括:
3、獲取固件安裝包,判斷系統(tǒng)當(dāng)前的初始固件文件的版本與固件安裝包中的目標(biāo)固件文件的版本是否相同;
4、若確認(rèn)初始固件文件的版本與目標(biāo)固件文件的版本不相同,則將初始固件文件進行備份,并解壓固件安裝包得到目標(biāo)固件文件;
5、基于目標(biāo)固件文件調(diào)用預(yù)設(shè)安裝工具執(zhí)行固件更新動作,并判斷固件更新動作是否執(zhí)行成功;
6、若確認(rèn)固件更新動作執(zhí)行成功,則判斷當(dāng)前固件文件的版本是否為目標(biāo)固件文件的版本;
7、若確認(rèn)當(dāng)前固件文件的版本不為目標(biāo)固件文件的版本,則確認(rèn)固件升級失敗,根據(jù)標(biāo)志位文件判斷當(dāng)前是否為首次固件升級失??;
8、若確認(rèn)當(dāng)前為首次固件升級失敗,則在系統(tǒng)重啟后執(zhí)行所述獲取固件安裝包的步驟;
9、若確認(rèn)當(dāng)前不為首次固件升級失敗,則退出固件升級流程并上報告警信息。
10、一方面,所述判斷固件更新動作是否執(zhí)行成功,包括:
11、根據(jù)預(yù)設(shè)校驗算法分別獲取固件升級前目標(biāo)固件文件的第一校驗值和固件升級后當(dāng)前固件文件的第二校驗值;
12、判斷第一校驗值與第二校驗值是否一致;
13、若確認(rèn)第一校驗值與第二校驗值一致,則確認(rèn)固件更新動作執(zhí)行成功;
14、若確認(rèn)第一校驗值與第二校驗值不一致,則確認(rèn)固件更新動作執(zhí)行失敗。
15、另一方面,若確認(rèn)固件更新動作執(zhí)行失敗,還包括:
16、獲取執(zhí)行固件更新動作期間的系統(tǒng)日志;
17、根據(jù)系統(tǒng)日志確定固件更新動作執(zhí)行失敗原因;
18、其中,固件更新動作執(zhí)行失敗原因至少包括系統(tǒng)掉電、預(yù)設(shè)安裝工具錯誤、中央處理器掉電和基本輸入輸出系統(tǒng)內(nèi)存分配錯誤。
19、另一方面,若確認(rèn)固件更新動作執(zhí)行失敗,還包括:
20、獲取備份的初始固件文件;
21、基于初始固件文件進行固件文件版本回滾。
22、另一方面,所述根據(jù)標(biāo)志位文件判斷當(dāng)前是否為首次固件升級失敗,包括:
23、檢索系統(tǒng)中存儲的所述標(biāo)志位文件;其中,所述標(biāo)志位文件是在固件文件首次升級失敗時生成的文件;
24、判斷是否獲取到所述標(biāo)志位文件;
25、若確認(rèn)未獲取到所述標(biāo)志位文件,則確認(rèn)當(dāng)前為首次固件升級失??;
26、創(chuàng)建所述標(biāo)志位文件;
27、基于重啟指令控制系統(tǒng)執(zhí)行重啟操作,并在系統(tǒng)重啟后執(zhí)行所述獲取固件安裝包的步驟;
28、若確認(rèn)獲取到所述標(biāo)志位文件,則確認(rèn)當(dāng)前不為首次固件升級失敗,退出固件升級流程并上報告警信息;
29、對應(yīng)地,若確認(rèn)當(dāng)前固件文件的版本為目標(biāo)固件文件的版本,還包括:
30、確認(rèn)固件升級成功;
31、檢索系統(tǒng)中存儲的所述標(biāo)志位文件;
32、判斷是否獲取到所述標(biāo)志位文件;
33、若確認(rèn)未獲取到所述標(biāo)志位文件,則退出固件升級流程;
34、若確認(rèn)獲取到所述標(biāo)志位文件,則清除所述標(biāo)志位文件。
35、另一方面,還包括:
36、生成固件升級日志;其中,所述固件升級日志中包含系統(tǒng)固件升級過程的全部信息;
37、將所述固件升級日志上傳至云平臺。
38、另一方面,若確認(rèn)當(dāng)前固件文件的版本為目標(biāo)固件文件的版本,還包括:
39、確認(rèn)固件升級成功,并獲取本次生成的所述固件升級日志;
40、根據(jù)所述固件升級日志判斷固件升級過程是否出現(xiàn)異常;
41、若確認(rèn)固件升級過程出現(xiàn)異常,則輸出表征固件升級過程異常的提示信息。
42、為解決上述技術(shù)問題,本發(fā)明還提供一種固件升級裝置,包括:
43、獲取模塊,用于獲取固件安裝包,判斷系統(tǒng)當(dāng)前的初始固件文件的版本與固件安裝包中的目標(biāo)固件文件的版本是否相同;若確認(rèn)初始固件文件的版本與目標(biāo)固件文件的版本不相同,則觸發(fā)備份解壓模塊;
44、所述備份解壓模塊,用于將初始固件文件進行備份,并解壓固件安裝包得到目標(biāo)固件文件;
45、第一判斷模塊,用于基于目標(biāo)固件文件調(diào)用預(yù)設(shè)安裝工具執(zhí)行固件更新動作,并判斷固件更新動作是否執(zhí)行成功;若確認(rèn)固件更新動作執(zhí)行成功,則觸發(fā)第二判斷模塊;
46、所述第二判斷模塊,用于判斷當(dāng)前固件文件的版本是否為目標(biāo)固件文件的版本;若確認(rèn)當(dāng)前固件文件的版本不為目標(biāo)固件文件的版本,則確認(rèn)固件升級失敗,觸發(fā)第三判斷模塊;
47、所述第三判斷模塊,用于根據(jù)標(biāo)志位文件判斷當(dāng)前是否為首次固件升級失?。蝗舸_認(rèn)當(dāng)前為首次固件升級失敗,則在系統(tǒng)重啟后觸發(fā)所述獲取模塊;若確認(rèn)當(dāng)前不為首次固件升級失敗,則觸發(fā)告警模塊;
48、所述告警模塊,用于退出固件升級流程并上報告警信息。
49、為解決上述技術(shù)問題,本發(fā)明還提供一種固件升級設(shè)備,包括:
50、存儲器,用于存儲計算機程序;
51、處理器,用于執(zhí)行所述計算機程序時實現(xiàn)上述的固件升級方法的步驟。
52、為解決上述技術(shù)問題,本發(fā)明還提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述的固件升級方法的步驟。
53、本發(fā)明所提供的固件升級方法,具體獲取固件安裝包,判斷系統(tǒng)當(dāng)前的初始固件文件的版本與固件安裝包中的目標(biāo)固件文件的版本是否相同;若確認(rèn)初始固件文件的版本與目標(biāo)固件文件的版本不相同,則將初始固件文件進行備份,并解壓固件安裝包得到目標(biāo)固件文件;基于目標(biāo)固件文件調(diào)用預(yù)設(shè)安裝工具執(zhí)行固件更新動作,并判斷固件更新動作是否執(zhí)行成功;若確認(rèn)固件更新動作執(zhí)行成功,則判斷當(dāng)前固件文件的版本是否為目標(biāo)固件文件的版本;若確認(rèn)當(dāng)前固件文件的版本不為目標(biāo)固件文件的版本,則確認(rèn)固件升級失敗,根據(jù)標(biāo)志位文件判斷當(dāng)前是否為首次固件升級失??;若確認(rèn)當(dāng)前為首次固件升級失敗,則在系統(tǒng)重啟后執(zhí)行獲取固件安裝包的步驟;若確認(rèn)當(dāng)前不為首次固件升級失敗,則退出固件升級流程并上報告警信息。
54、本發(fā)明的有益效果在于,當(dāng)準(zhǔn)備進行固件升級時,將初始固件文件進行備份,能夠在固件升級失敗時實現(xiàn)版本回滾,提高了安全性;在進行固件升級時,基于目標(biāo)固件文件調(diào)用預(yù)設(shè)安裝工具執(zhí)行固件更新動作,判斷固件更新動作是否執(zhí)行成功;若確認(rèn)固件更新動作執(zhí)行成功,但是當(dāng)前固件文件的版本不為目標(biāo)固件文件的版本時,確認(rèn)固件升級失敗,根據(jù)標(biāo)志位文件判斷當(dāng)前是否為首次固件升級失敗;若確認(rèn)當(dāng)前為首次固件升級失敗,則在系統(tǒng)重啟后重試升級;若確認(rèn)當(dāng)前不為首次固件升級失敗,則認(rèn)為已經(jīng)多次固件升級失敗,直接退出固件升級流程并上報告警信息,避免了無意義的固件升級重試導(dǎo)致的耗時較長的問題,提高了運維效率。
55、另一方面,本發(fā)明具體根據(jù)預(yù)設(shè)校驗算法分別獲取固件升級前目標(biāo)固件文件的第一校驗值和固件升級后當(dāng)前固件文件的第二校驗值;判斷第一校驗值與第二校驗值是否一致;若確認(rèn)第一校驗值與第二校驗值一致,則確認(rèn)固件更新動作執(zhí)行成功,否則確認(rèn)固件更新動作執(zhí)行失敗,對固件更新動作是否執(zhí)行成功的判斷。當(dāng)確認(rèn)固件更新動作執(zhí)行失敗時,獲取執(zhí)行固件更新動作期間的系統(tǒng)日志;根據(jù)系統(tǒng)日志確定固件更新動作執(zhí)行失敗原因,以便于用戶根據(jù)固件更新動作執(zhí)行失敗原因進行固件升級的維護。若確認(rèn)固件更新動作執(zhí)行失敗,需要獲取備份的初始固件文件,基于初始固件文件進行固件文件版本回滾,從而保證在固件升級失敗的情況下bmc也能夠正常運行。
56、此外,本發(fā)明還提供了一種固件升級裝置、設(shè)備及介質(zhì),效果同上。