本技術(shù)涉及服務(wù)器,特別是涉及一種版本升級方法、裝置、計算機(jī)設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、用戶通過云端控制器連接至系統(tǒng)中的每個服務(wù)器,并根據(jù)實際需求,獲取服務(wù)器的電源供應(yīng)器(psu)的固件信息,當(dāng)需要對服務(wù)器的psu固件信息進(jìn)行刷新時,通過遠(yuǎn)程登錄服務(wù)器,獲取服務(wù)器的psu固件信息,并通過人機(jī)交互裝置編輯該服務(wù)器的psu固件信息的刷新進(jìn)程,在線對該服務(wù)器的psu固件進(jìn)行刷新,避免了需要直接現(xiàn)場接入psu固件的端口,與psu固件的端口物理連接后進(jìn)行升級操作。操作人員只要通過連接云端控制器,并基于云端控制器連接到各個服務(wù)器,獲取各個服務(wù)器的psu固件信息,做到對psu固件進(jìn)行升級操作,或刷新操作。
2、傳統(tǒng)技術(shù)下升級psu雖然具備能夠遠(yuǎn)程升級的優(yōu)勢,但是當(dāng)psu同時供給多個服務(wù)器設(shè)備節(jié)點時,每個節(jié)點的基板管理控制器(bmc)都是相互獨立的,當(dāng)前使用某一個節(jié)點a的bmc去升級psu,此時a稱之為主節(jié)點,而另外b、c等節(jié)點的系統(tǒng)是完全獨立的,無法感知到psu的升級狀態(tài),如果此時b/c等節(jié)點對psu進(jìn)行升級操作,則會導(dǎo)致psu升級失敗,并且會導(dǎo)致所有可用于升級psu的節(jié)點的bmc報錯,甚至由于同時寫入數(shù)據(jù),造成psu版本出錯,以至于無法供電,造成巨大安全隱患,所以當(dāng)前psu升級只能使用指定單一節(jié)點進(jìn)行版本升級,而且在節(jié)點升級失敗后需要人工干預(yù),造成處理耗時的問題,存在升級失敗機(jī)率較大的狀況。
技術(shù)實現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種能夠防止多個bmc同時對同一psu升級而導(dǎo)致的psu升級失敗或者bmc報錯問題,提升psu的版本升級成功的機(jī)率的版本升級方法、裝置、計算機(jī)設(shè)備及存儲介質(zhì)。
2、一方面,提供一種版本升級方法,所述方法包括:
3、響應(yīng)于接收到所述psu的版本升級指令,檢測所述psu的狀態(tài)鎖的狀態(tài);
4、響應(yīng)于所述狀態(tài)鎖的狀態(tài)為解鎖狀態(tài),通過可編程邏輯器件(cpld)將所述狀態(tài)鎖的狀態(tài)調(diào)整為鎖定狀態(tài),獲取待升級信息并對所述psu進(jìn)行版本的首次升級操作;
5、響應(yīng)于首次升級操作完成且升級失敗,通過所述cpld將所述狀態(tài)鎖的狀態(tài)調(diào)整為解鎖狀態(tài);
6、檢測所述psu的狀態(tài)鎖的狀態(tài),當(dāng)所述狀態(tài)鎖的狀態(tài)為鎖定狀態(tài)時,持續(xù)檢測所述狀態(tài)鎖的狀態(tài)直至狀態(tài)調(diào)整為解鎖狀態(tài),當(dāng)所述狀態(tài)鎖的狀態(tài)為解鎖狀態(tài)時,讀取所述psu的當(dāng)前版本信息;
7、判斷所述psu的當(dāng)前版本信息與原始版本信息是否一致,并根據(jù)判斷結(jié)果執(zhí)行重試升級操作或給出升級成功指示。
8、在其中一個實施例中,還包括:
9、響應(yīng)于接收到所述psu的版本升級指令,檢測所述psu的原始版本信息并同步至所述共享內(nèi)存空間;
10、監(jiān)測所述psu的升級狀態(tài)信息并同步至所述共享內(nèi)存空間,所述升級狀態(tài)信息包括升級操作完成;
11、解析所述版本升級指令得到待升級信息,并將所述待升級信息同步至所述共享內(nèi)存空間,所述待升級信息包括目標(biāo)版本信息以及升級文件;
12、從所述共享內(nèi)存空間獲取所述psu的升級狀態(tài)信息以及版本信息,所述版本信息包括原始版本信息和目標(biāo)版本信息。
13、在其中一個實施例中,所述判斷所述psu的當(dāng)前版本信息與原始版本信息是否一致,并根據(jù)判斷結(jié)果執(zhí)行重試升級操作或給出升級成功指示,包括:
14、響應(yīng)于所述psu的所述當(dāng)前版本信息與所述原始版本信息一致,通過當(dāng)前bmc和/或其他bmc執(zhí)行重試升級操作;
15、響應(yīng)于所述psu的所述當(dāng)前版本信息與所述原始版本信息不一致,則給出升級成功指示。
16、在其中一個實施例中,所述響應(yīng)于所述psu的所述當(dāng)前版本信息與所述原始版本信息一致,通過當(dāng)前bmc和/或其他bmc執(zhí)行重試升級操作,包括:
17、響應(yīng)于所述psu的當(dāng)前版本信息與原始版本信息一致,且所述psu的所述當(dāng)前版本信息與所述目標(biāo)版本信息不一致,將所述狀態(tài)鎖的狀態(tài)調(diào)整為鎖定狀態(tài),通過所述當(dāng)前bmc和/或所述其他bmc執(zhí)行重試升級操作;
18、響應(yīng)于重試升級操作完成且升級成功,退出重試升級操作并給出所述當(dāng)前bmc或所述其他bmc對應(yīng)的所述psu的版本升級成功指示。
19、在其中一個實施例中,所述通過當(dāng)前bmc和/或所述其他bmc執(zhí)行重試升級操作,包括:
20、響應(yīng)于重試升級操作預(yù)設(shè)次數(shù)且所述psu的所述當(dāng)前版本信息與所述原始版本信息一致,判斷在首次升級操作后或重試升級操作中是否有所述其他bmc執(zhí)行升級操作;
21、若無所述其他bmc參與,則將處于靜默狀態(tài)的多個bmc加入升級備選列表,從所述升級備選列表中選擇一個bmc代替執(zhí)行升級操作;
22、若有所述其他bmc參與,將所有參與過升級的所述其他bmc加入升級備選列表,從所述升級備選列表中選擇一個參與過升級的所述其他bmc執(zhí)行升級操作。
23、在其中一個實施例中,所述若有所述其他bmc參與,將所有參與過升級的所述其他bmc加入升級備選列表,從所述升級備選列表中選擇一個參與過升級的所述其他bmc執(zhí)行升級操作,包括:
24、獲取所有參與過升級的bmc所對應(yīng)的目標(biāo)版本信息,并比較各目標(biāo)版本信息是否相同;
25、響應(yīng)于各目標(biāo)版本信息不同,按照各bmc對應(yīng)目標(biāo)版本信息的高低順序依次選取所述升級備選列表中一個參與過升級的所述其他bmc作為目標(biāo)bmc,以所述目標(biāo)bmc所對應(yīng)的目標(biāo)版本信息進(jìn)行升級操作;
26、判斷所述目標(biāo)bmc所對應(yīng)的目標(biāo)版本信息的升級操作是否成功,若升級成功,則給出所述目標(biāo)bmc對應(yīng)的所述psu的版本升級成功指示;若升級失敗,則按照所有目標(biāo)版本信息的高低順序依次選取所述升級備選列表中一個參與過升級的所述其他bmc作為目標(biāo)bmc,代替所述當(dāng)前bmc執(zhí)行所述當(dāng)前bmc所對應(yīng)的目標(biāo)版本信息進(jìn)行升級操作;
27、響應(yīng)于各目標(biāo)版本信息相同,獲取在所述當(dāng)前bmc首次升級操作以及重試升級操作過程中所述其他bmc參與升級操作的時間節(jié)點,按照時間節(jié)點的先后順序依次選取所述升級備選列表中一個參與過升級的所述其他bmc作為目標(biāo)bmc,以目標(biāo)bmc所對應(yīng)的目標(biāo)版本信息進(jìn)行升級操作。
28、在其中一個實施例中,所述響應(yīng)于所述psu的所述當(dāng)前版本信息與所述原始版本信息不一致,則給出升級成功指示,包括:
29、響應(yīng)于所述psu的所述當(dāng)前版本信息與所述原始版本信息不一致,且所述psu的當(dāng)前版本信息與所述目標(biāo)版本信息不一致,退出升級操作則給出所述其他bmc對應(yīng)的所述psu的版本升級成功指示。
30、另一方面,提供了一種版本升級裝置,所述裝置包括:
31、檢測模塊,用于響應(yīng)于接收到所述psu的版本升級指令,檢測所述psu的狀態(tài)鎖的狀態(tài);
32、升級操作模塊,用于響應(yīng)于狀態(tài)鎖的狀態(tài)為解鎖狀態(tài),通過cpld將狀態(tài)鎖的狀態(tài)調(diào)整為鎖定狀態(tài),獲取待升級信息并對psu進(jìn)行版本的首次升級操作;
33、狀態(tài)鎖控制模塊,用于響應(yīng)于首次升級操作完成且升級失敗,通過所述cpld將所述狀態(tài)鎖的狀態(tài)調(diào)整為解鎖狀態(tài);以及用于檢測所述psu的狀態(tài)鎖的狀態(tài),當(dāng)所述狀態(tài)鎖的狀態(tài)為鎖定狀態(tài)時,持續(xù)檢測所述狀態(tài)鎖的狀態(tài)直至狀態(tài)調(diào)整為解鎖狀態(tài),當(dāng)所述狀態(tài)鎖的狀態(tài)為解鎖狀態(tài)時,讀取所述psu的當(dāng)前版本信息;
34、判斷模塊,用于判斷所述psu的當(dāng)前版本信息與原始版本信息是否一致,并根據(jù)判斷結(jié)果執(zhí)行重試升級操作或給出升級成功指示。
35、再一方面,提供了一種計算機(jī)設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序時實現(xiàn)上述一種版本升級方法。
36、又一方面,提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)上述一種版本升級方法。
37、上述版本升級方法、裝置、計算機(jī)設(shè)備及存儲介質(zhì),通過cpld將多個bmc與psu之間的信息進(jìn)行同步,當(dāng)前bmc能夠獲取psu的版本升級指令,根據(jù)版本升級指令,當(dāng)前bmc對psu進(jìn)行升級操作時,設(shè)置psu的狀態(tài)鎖為鎖定狀態(tài),此時其他bmc無法對psu進(jìn)行升級操作,僅為當(dāng)前bmc進(jìn)行升級操作,確保當(dāng)前bmc在升級操作過程中不受其他bmc的干擾,實現(xiàn)了防止多節(jié)點的bmc同時對同一psu升級而導(dǎo)致的psu升級失敗或者多個bmc報錯問題;當(dāng)前bmc在首次升級操作完成且升級失敗后,狀態(tài)鎖調(diào)整為解鎖狀態(tài),等待一段時間,再次檢測到狀態(tài)鎖為鎖定狀態(tài)時,即其他bmc參與進(jìn)行選擇性的升級操作,能夠滿足在當(dāng)前bmc的升級線程中接入其他bmc對psu進(jìn)行升級操作的需求,在當(dāng)前bmc的首次升級操作完成且失敗后,經(jīng)過當(dāng)前bmc的重試升級操作和/或其他bmc的重試升級操作,提升psu最終版本升級成功的機(jī)率。