一種集中固件更新方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及服務(wù)器管理技術(shù)領(lǐng)域,尤其涉及一種集中固件更新方法。
【背景技術(shù)】
[0002]刀片服務(wù)器和整機(jī)柜服務(wù)器由于具有刀片密度高、部署靈活快速的優(yōu)點(diǎn),在互聯(lián)網(wǎng)領(lǐng)域得到了廣泛的應(yīng)用。
[0003]服務(wù)器的每個(gè)刀片上往往都有一顆BMC (基板管理控制器Baseboard ManagementController )用于對服務(wù)器進(jìn)行管理,這些BMC又被管理載板上的SMC集中管理并對外提供管理訪問控制接口,如SMC的Web管理界面。傳統(tǒng)的逐個(gè)單獨(dú)更新BMC固件的方式在具有多個(gè)刀片的服務(wù)器的操作中已經(jīng)顯得繁瑣低效,不再適用。為了解決這一問題,已有多個(gè)方案被提出,但這些方案多需要第三方工具軟件的支持,如TFTP服務(wù)器、DHCP服務(wù)器和SSH客戶端等。
[0004]SMC是系統(tǒng)管理控制器(System Management Controller)的簡稱,指的是對一個(gè)刀片服務(wù)器或者機(jī)柜服務(wù)器的整機(jī)進(jìn)行集中的系統(tǒng)的管理的管理控制器,BMC和SMC本質(zhì)上是一樣的,都是提供管理功能的管理控制器,但BMC的管理范圍如其名稱所示局限于其所在的板卡,SMC則負(fù)責(zé)整個(gè)服務(wù)器系統(tǒng)的管理,相對來說SMC的處理能力更強(qiáng),功能也更多,它既要收集各個(gè)BMC所收集的健康信息并對BMC進(jìn)行控制,又要監(jiān)控機(jī)箱電源和風(fēng)扇,還要對外提供訪問接口,可以認(rèn)為SMC是管理的管理,SMC的稱呼在國內(nèi)做服務(wù)器管理的開發(fā)人員中是一種比較通用的約定俗成的叫法,意義也比較明確,SMC類似于天蝎項(xiàng)目整機(jī)柜服務(wù)器解決方案技術(shù)規(guī)范中的RMC (機(jī)柜管理控制器,Rack Management Controller),但管理的BMC的規(guī)模相對RMC可以較小。
[0005]現(xiàn)有技術(shù)下的具有多個(gè)刀片的服務(wù)器,有一個(gè)管理載板和若干個(gè)計(jì)算單元,及機(jī)箱電源、風(fēng)扇等必備組件。管理載板上放置一顆SMC,每個(gè)計(jì)算單元上各放置一顆BMC。
[0006]在目前的更新方案中,無論SMC還是BMC都基于Web進(jìn)行固件更新,固件文件的上傳通過Web服務(wù)器提供的文件上傳功能實(shí)現(xiàn),如附圖1所示。Web的Prepare Flash Area、Upload Flash File、Verify Firmware Image、Start Image Flash和Get Flash Progress操作通過Web接口調(diào)用底層固件刷新庫,進(jìn)而通過本機(jī)進(jìn)程間通信引起固件刷新進(jìn)程的相應(yīng)操作,最終完成SMC或者BMC的固件更新。這種固件更新方案是逐個(gè)SMC或者BMC進(jìn)行的。
[0007]如何簡單高效的對服務(wù)器中多個(gè)刀片上的BMC進(jìn)行固件更新是一個(gè)需要解決的技術(shù)問題。
[0008]
【發(fā)明內(nèi)容】
[0009]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種集中固件更新方法,在不使用任何第三方工具軟件的情況下,通過操作SMC的Web管理界面,借助SMC的固件中繼作用,實(shí)現(xiàn)對多個(gè)BMC固件的同時(shí)集中更新,避免單獨(dú)對某一個(gè)BMC進(jìn)行分散式的固件更新的繁瑣和低效,同時(shí)不存在現(xiàn)有批量更新固件的技術(shù)方案中對第三方工具軟件的依賴,以提高固件更新效率。
[0010]本發(fā)明所采用的技術(shù)方案如下:
2、一種集中固件更新方法,包括以下步驟:
P、選擇需要更新固件的BMC ;
Q、SMC發(fā)送準(zhǔn)備命令給BMC,BMC及SMC分別執(zhí)行所述的準(zhǔn)備命令;
R、使用SMC的Web服務(wù)器上傳固件文件到SMC,同時(shí)SMC向BMC發(fā)送接收命令;
S、BMC接收所述的固件文件,并反饋可以接收的信息給SMC ;
T、SMC判斷是否存在可以接收固件文件的BMC,如果存在,則讀取固件尺寸比數(shù)據(jù)塊并向收到接收命令回復(fù)的BMC分別發(fā)送;
U、發(fā)送完固件尺寸比數(shù)據(jù)塊后,經(jīng)過延時(shí),等待BMC接收并寫入此固件尺寸比數(shù)據(jù)塊后,再讀取新的固件尺寸比數(shù)據(jù)塊并分別發(fā)送,直到發(fā)送完畢;
V、BMC接收固件文件的固件尺寸比數(shù)據(jù)塊,解析固件尺寸比數(shù)據(jù)塊結(jié)尾的標(biāo)志位;
W、BMC完成固件接收并關(guān)閉固件文件后,向SMC回復(fù)已接收完畢;
X、如果BMC接收固件文件完畢,則SMC向BMC發(fā)送校驗(yàn)命令;
Y、BMC執(zhí)行校驗(yàn)命令,如果校驗(yàn)成功,則向SMC回復(fù)可以進(jìn)行固件刷新;
Z、SMC獲取BMC執(zhí)行校驗(yàn)命令的狀態(tài);
AA、如果BMC校驗(yàn)成功,則SMC向BMC發(fā)送開始命令;
BB、BMC執(zhí)行開始命令進(jìn)入真正的固件刷新階段,如果刷新完畢,則向SMC回復(fù)固件已刷新完畢并自動(dòng)重啟;
CC、SMC向BMC定時(shí)發(fā)送獲取命令以獲取BMC執(zhí)行開始命令后BMC的固件刷新進(jìn)度; DD、如果所有的BMC已完成固件刷新,則SMC自動(dòng)重啟。
[0011]方法具體包括:
(1)服務(wù)器上電,待整個(gè)管理系統(tǒng)完成啟動(dòng)后登錄SMC的Web管理界面;
(2)在BMC固件更新頁面選擇要更新固件的BMC,進(jìn)入集中固件更新階段;
(3)SMC發(fā)送準(zhǔn)備命令到被選中的BMC ;
(4)BMC執(zhí)行所述準(zhǔn)備命令為接收和刷新固件做準(zhǔn)備,執(zhí)行完畢后BMC向SMC回復(fù)已完成準(zhǔn)備;
(5)SMC獲取BMC執(zhí)行所述準(zhǔn)備命令的狀態(tài);
(6)在BMC完成準(zhǔn)備操作后,SMC也執(zhí)行所述的準(zhǔn)備命令,以釋放一部分RAM空間;
(7)在SMC完成所述準(zhǔn)備命令操作后,選擇BMC固件,使用SMC的Web服務(wù)器提供的文件上傳功能上傳BMC固件到SMC ;
(8)SMC端使用Web服務(wù)器的文件上傳功能上傳固件完畢后,SMC向BMC發(fā)送接收命令;
(9)BMC接收到所述的接收命令后,如果已成功執(zhí)行所述的準(zhǔn)備命令,則向SMC回復(fù)可以接收固件文件;
(10)SMC獲取BMC是否可以接收固件文件的信息,若存在可以接收固件文件的BMC^lJSMC讀取固件尺寸比數(shù)據(jù)塊并向收到接收命令回復(fù)的BMC分別發(fā)送:
發(fā)送完固件尺寸比數(shù)據(jù)塊后,經(jīng)過延時(shí),等待BMC接收并寫入此固件尺寸比數(shù)據(jù)塊后,再讀取新的固件尺寸比數(shù)據(jù)塊并分別發(fā)送,直到發(fā)送完畢;
(11)BMC接收固件文件的固件尺寸比數(shù)據(jù)塊,解析固件尺寸比數(shù)據(jù)塊結(jié)尾的標(biāo)志位; BMC完成固件接收并關(guān)閉固件文件后,向SMC回復(fù)已接收完畢;
(12)SMC獲取BMC執(zhí)行接收命令的狀態(tài);
(13)如果BMC接收固件文件完畢,則SMC向BMC發(fā)送校驗(yàn)命令;
(14)BMC執(zhí)行校驗(yàn)命令,如果校驗(yàn)成功,則向SMC回復(fù)可以進(jìn)行固件刷新;
(15)SMC獲取BMC執(zhí)行校驗(yàn)命令的狀態(tài);
(16)如果BMC校驗(yàn)成功,則SMC向BMC發(fā)送開始命令;
(17)BMC執(zhí)行開始命令進(jìn)入真正的固件刷新階段,如果刷新完畢,則向SMC回復(fù)固件已刷新完畢并自動(dòng)重啟;
(18)SMC向BMC定時(shí)發(fā)送獲取命令以獲取BMC執(zhí)行開始命令后BMC的固件刷新進(jìn)度;
(19)如果所有的BMC已完成固件刷新,則SMC自動(dòng)重啟。
[0012]步驟(7)中:
在SMC完成準(zhǔn)備命令操作后,選擇固件后使用SMC的Web服務(wù)器提供的文件上傳功能上傳BMC固件到SMC,存儲(chǔ)到/dev/shm掛載的/mnt目錄下,文件名為rom.1ma,SMC端不進(jìn)行固件的校驗(yàn)。
[0013]步驟(10)中所述的固件尺寸比數(shù)據(jù)塊的獲取方法是:SMC讀取/mnt/rom.1ma的一個(gè)尺寸為整個(gè)固件尺寸的整數(shù)分之一生成所述的固件尺寸比數(shù)據(jù)塊。
[0014]當(dāng)未讀到文件末尾時(shí),發(fā)送內(nèi)容為這個(gè)固件尺寸比數(shù)據(jù)塊及固件尺寸比數(shù)據(jù)塊結(jié)尾的未發(fā)送完畢標(biāo)志位;
當(dāng)已讀到文件末尾時(shí),由于設(shè)置的讀取數(shù)據(jù)塊尺寸為整個(gè)固件尺寸的整數(shù)分之一,因此readO函數(shù)返回的實(shí)際讀取字節(jié)為0,為了 BMC接收端處理數(shù)據(jù)的一致性,使發(fā)送內(nèi)容為相同尺寸的未經(jīng)賦值的數(shù)據(jù)塊及數(shù)據(jù)塊結(jié)尾的已發(fā)送完畢標(biāo)志位。
[0015]步驟(11)中:
若標(biāo)志位指示未發(fā)送完畢,則將去除標(biāo)志位的數(shù)據(jù)塊寫入BMC端的固件文件;
若標(biāo)志位指示已發(fā)送完畢,則不再向BMC端的固件文件中寫入任何數(shù)據(jù),并關(guān)閉文件;BMC端的固件文件存儲(chǔ)在與SMC端類似的位置,即將接收到的數(shù)據(jù)塊存儲(chǔ)為BMC端/dev/shm掛載的/mnt目錄下的rom.1ma文件。
[0016]與現(xiàn)有技術(shù)相比,本發(fā)明的方案有如下特點(diǎn):
(1)整個(gè)固件更新過程由單一的管理控制器執(zhí)行所有操作的方式改為“SMC集中管理,BMC具體執(zhí)行”的方式;
(2)SMC端保留Web對外管理界面,通過修改Web接口、固件刷新庫和固件刷新進(jìn)程為BMC端的操作提供管理和支持:
Web的文件上傳功能和擴(kuò)展固件刷新庫中的文件發(fā)送功能模塊相結(jié)合起到了 SMC對BMC固件的中繼作用,文件發(fā)送功能模塊的主要作用是高效可靠地分發(fā)BMC固件;
(3)BMC端無需對外管理界面的支持,因此不需要Web服務(wù)器,通過修改固件刷新進(jìn)程進(jìn)行具體的固件更新操作:
(4)溝通SMC和BMC的橋梁是不同主機(jī)進(jìn)程間通彳目,米用Socket實(shí)現(xiàn)。
[0017]綜上所述,本發(fā)明提供的技術(shù)方案帶來的有益效果是: 在不借助第三方工具軟件的情況下,只通過SMC的Web操作將SMC端經(jīng)Web上傳的BMC固件高效可靠地分發(fā)到各個(gè)BMC并完成固件刷新操作。
【附圖說明】
[0018]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0019]圖1為現(xiàn)有技術(shù)下的固件更新方案的流程框圖;
圖2為本發(fā)明的一種集中固件更新方法的流程框圖。
【具體實(shí)施方式】
[0020]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0021]實(shí)施例一
如附圖2所示,一種集中固件更新方法,包括以下步驟:
(1)服務(wù)器上電,待整個(gè)管理系統(tǒng)完成啟動(dòng)后登錄SMC的Web管理界面;
(2)在BMC固件更新頁面選擇要更新固件的BMC,點(diǎn)擊更新BMC固件按鈕進(jìn)入集中固件更新階段;
(3)SMC發(fā)送Prepare Flash Area命令到被選中的BMC ;
(4)BMC執(zhí)行PrepareFlash Area命令為接收和刷新固件做準(zhǔn)備,主要的操作包括:kill固件更新無關(guān)的進(jìn)程,rmmod所有的模塊,unmount固件更新無關(guān)的文件系統(tǒng),掛載/dev/shm設(shè)備到/mnt目錄并格式化為tmpfs文件系統(tǒng)等;執(zhí)行完畢后BMC向SMC回復(fù)已完成準(zhǔn)備;
(5)SMC獲取BMC執(zhí)行Pr印are Flash Area命令的狀態(tài);
(6)在BMC 完成 Prepare Flash Area 操作后,SMC 也執(zhí)彳丁 Prepare Flash Area,與 BMC執(zhí)行此操作不同的是,BMC是為了最終執(zhí)行固件更新操作,而SMC只是為了接收Web上傳的BMC固件而釋放一部分RAM空間;
(7)在SMC完成PrepareFlash Area操作后,彈出選擇BMC固件的對話框,選擇固件后使用SMC的Web服務(wù)器提供的文件上傳功能上傳BMC固