技術文章 · 網路與網通建置

交換器韌體更新怎麼做?更新前備份、避免斷電變磚與跨版本順序

交換器韌體更新最怕的不是麻煩,是寫到一半斷電變磚。這篇從一台救回來的設備講起,把快閃記憶體為什麼一斷電就開不了機、雙映像與單映像的差別、動手前該驗與該備份什麼、跨版本為何得照升級路徑一階一階走,到堆疊與 PoE 重開的連鎖影響與變磚救援,一次講到你能自己判斷該不該動手。

作者 Steve Chen · 發布  · 更新  · 約 8 分鐘閱讀

網路與網通建置 — 廷皓技術專欄插圖

交換器韌體更新最怕的不是麻煩,是寫到一半斷電變磚。這篇從一台救回來的設備講起,把快閃記憶體為什麼一斷電就開不了機、雙映像與單映像的差別、動手前該驗與該備份什麼、跨版本為何得照升級路徑一階一階走,到堆疊與 PoE 重開的連鎖影響與變磚救援,一次講到你能自己判斷該不該動手。

先搞懂韌體躺在哪裡,才知道更新實際在改什麼

交換器不是只有硬體,機殼裡有一顆快閃記憶體(flash),韌體就整包住在裡面。你可以把它想成這台機器的作業系統加驅動程式,交換轉發、VLAN 切割、PoE 供電判斷、管理介面,全都靠這包程式撐起來。所謂更新韌體,本質上就是把原廠新版的映像檔(image)覆寫進這顆快閃記憶體,再讓機器改用新的那份重開一次。

開機的順序也值得懂一層。通電之後,最底層先跑的是一段燒死在晶片裡、幾乎不會去動它的開機載入器(bootloader);它的任務是把主韌體找出來、驗一遍完整性,確認沒問題才把整套系統帶起來。這段流程平常你完全感覺不到,但它正是「變磚」與「救得回來」的分水嶺:只要 bootloader 本身還活著,機器再怎麼開不了機,通常都還有救;真正的死局,是連 bootloader 都被寫壞。

為什麼更新到一半斷電,機器就再也開不起來

要理解變磚,得先知道快閃記憶體有個物理特性:它沒辦法像便條紙一樣「原地改字」,而是得先把一整個區塊擦除成空白,再一頁一頁把新資料寫進去。也就是說,更新的當下,這顆記憶體會經歷一段「舊的已經抹掉、新的還沒寫完」的空窗,這段時間對斷電毫無招架之力。電一旦在這個節骨眼被切斷,快閃裡留下的就是半舊半新、東缺一塊西缺一塊的殘骸。

接下來就輪到 bootloader 上場。它一校驗,發現映像檔的雜湊值(hash)或檢查碼對不上:資料被改動哪怕只有一個位元組,算出來的驗證碼都會天差地遠:於是它拒絕載入這份殘缺韌體,機器就卡死在開機階段起不來。這就是俗稱的變磚。它不是壞在硬體,記憶體、晶片、埠口其實都好好的,壞的是那包被寫到一半、再也通不過校驗的程式。

單映像和雙映像,決定你能有多大膽

比較講究的機種會做雙映像設計(dual image,或稱 A、B 分區):快閃裡切成兩塊,平常用 A 區開機,更新時新韌體先寫進閒置的 B 區,全部寫完、驗證通過,才把「下次開機改用 B」這個旗標切過去。萬一新版有問題,機器連續開機失敗幾次(常見設計是三次)之後,會自動退回還完好的 A 區把系統帶起來。這種架構的好處很實在:寫入過程就算斷電,被寫壞的是備用區,正在用的那份完全沒被動到,重開照樣走得回舊版。

但很多入門級、或是年紀比較大的機型只有單一映像分區,新韌體是直接覆蓋在唯一那份上面。這種設計沒有退路,寫壞就是壞了,斷電風險是實打實地壓在你身上。你手上那台是哪一種,規格頁或使用手冊查得到,這件事該在動手之前就先弄清楚,因為它直接決定了這次更新可以多大膽、要不要為它多鋪幾層保險。

動手前把這幾件事做完,風險就砍掉一大半

  • 完整備份現有設定檔,而且下載到電腦另存。不是存在交換器自己身上:設備一旦變磚,存在它肚子裡的備份會跟著一起陪葬。
  • 記下目前韌體版本,把新版的更新說明(release note)從頭讀一遍。已知問題、相依條件、升級限制通常都寫在裡面,讀那十分鐘,省掉的可能是一整晚。
  • 核對韌體檔對應的型號與硬體版本(hardware revision)。同一個型號的 V1 與 V3 常常用的是不同硬體,韌體檔並不通用,刷錯版本一樣會變磚。
  • 上傳前先驗檔案的雜湊值。原廠下載頁多半會附 MD5 或 SHA256 檢查碼,花三十秒用工具算一遍比對,可以擋掉下載途中損毀的檔案:壞檔刷進去,後果跟中途斷電幾乎沒兩樣。
  • 接上不斷電系統(UPS),或至少確認更新時段沒有排任何電力工程。這一步在開頭那台機器身上,正是那條沒做、代價最慘的保險。

備份這一步最常被跳過,因為大家直覺覺得「更新又不會動到我的設定」。多數時候確實不會,但跨大版本升級偶爾會重整設定檔的內部格式,真出事時手上沒備份,就只能憑記憶重建每一條 VLAN、每個埠的角色、每一則存取規則,那是很折磨人的一晚。順帶一提,備份與還原本身也有眉角,例如加密過的設定檔換一台機器往往還原不了,這部分牽涉的細節不少,值得單獨當一件事來對待。挑離峰時段動手、事前預告使用者網路會中斷大約五到十五分鐘,也一併安排好。

跨版本升級:不能從很舊的版本一口氣跳到最新

放了三五年沒人碰過的交換器,升級時最容易踩的雷不是斷電,而是升級路徑。有些新韌體不只換掉系統程式,還會順手改寫開機載入器、或升級設定檔的資料結構;為了讓這些底層搬遷能安全進行,原廠往往會規定:必須先升到某個「中繼版本」,讓它把地基墊好,再從那一版跳到最新。這種要求通常就藏在更新說明裡的升級路徑或注意事項那一段。

無視順序硬跳,輕則設定在升級過程中被判定不相容而整批清空,重則底層改寫到一半卡住、直接開不了機。愈舊的起點、跨愈多個大版本,這個風險就愈高。所以面對一台版本老舊的設備,正確的心態不是「一次更到最新最省事」,而是「照著原廠畫好的階梯,一階一階往上走」。每升一階,就回頭確認版本號真的變了、設定還在不在,再往下一階走:這比一次跳實際、出事再回頭找原因,實際上快得多。

堆疊與 PoE:一台重開,底下一整片跟著斷

更新過程設備一定會重新開機,單台機型整趟流程大概抓三到十分鐘。但如果這台是堆疊(stack)架構的一員,就得多想好幾層。堆疊的前提是主機與所有成員跑同一個韌體版本,所以升級多半得整疊一起做、每台輪流重開,中斷時間自然拉長。市面上確實有少數高階平台標榜「不中斷升級」,能一台升完、等它回到線上、再換下一台,讓整體服務幾乎不斷線;但這類能力有明確的機種與架構門檻,中小企業常用的入門到中階機種,基本上都是整疊一起重開,別對它抱期待。而且就算是支援的平台,也常有版本落差不能太大、必須逐步過渡的限制。

還有一條最常被漏算的連鎖反應:交換器一重開,靠它 PoE 供電的裝置會同步斷電再開機。監視攝影機從斷電到重新開始錄影,大約要一到三分鐘;這段空窗如果剛好沒有其他備援,畫面就是真的沒錄到。無線基地台重連、使用者裝置重新取得連線,也要數十秒到一兩分鐘。更容易被忽略的是門禁:如果讀卡機也吃 PoE,這一兩分鐘裡刷卡就是沒反應,人會卡在門口。把這些受影響的裝置事前列清楚、跟現場講明白,遠比事後跟老闆解釋為什麼監視器有一段空白來得省力。

真的變磚了怎麼救,以及什麼時候乾脆別自己動手

回到開頭那台機器。它最後是靠一條 Console 線接進去、進到 bootloader 的救援模式,再用 TFTP 把完整韌體重新灌回快閃記憶體,才救活的。這條路能走通的前提,是 bootloader 沒被寫壞:這也是為什麼前面說它是分水嶺。實務上還有幾個坑:Console 的連線速率依廠牌可能是 9600 或 115200,設錯就是滿畫面亂碼;救援用的韌體檔得是對的型號、對的版本;而且不是每一台都救得回來,連 bootloader 本身都毀了的,就只剩送修或報廢兩條路。

所以我給客戶的判斷準則其實很直接,符合下面任何一條,就別自己升,找人來:

  • 手邊沒有 Console 線、也沒有可靠的設定備份。這代表你根本沒有退路,一出事只能乾等。
  • 這台是營業時段唯一的骨幹,一斷全公司停擺。沒有備援的關鍵設備,不該拿一次更新去賭。
  • 是單映像機種、又要跨多個大版本升級。這是風險最高的組合,交給熟手先鋪好保險再動比較穩。

反過來說,有另一種情況根本不必糾結:如果這台設備原廠已經停產、不再釋出任何新韌體,那「要不要更新」這個問題本身就沒意義了。真正的風險,是讓一台再也不會有人幫它補漏洞的老骨頭,繼續扛著全公司的流量與資安:那該編預算換機,就別省。

對照指令

聯絡廷皓討論 看更多文章