更新後出了問題:發生在更新之後,不等於是更新造成的
重新啟動是對上次重新啟動以來所做一切的第一次真正考驗。有些壞掉的東西並不是更新帶來的,而是早就存在,只是從來沒有被驗證過。
AtlasPVE ·
本條目涵蓋以下問題
- proxmox 更新後無法開機
- proxmox 用上一個核心開機
- proxmox 回復更新
- proxmox pveproxy 無法啟動
- proxmox 更新後 web 介面打不開
完成更新、重新啟動之後,有東西不正常了。第一個反應是更新把它弄壞了,有時候確實如此。但必須先做一個區分,因為這個區分從一開始就會改變工作的方向。
之後,不等於因為
重新啟動是對上次重新啟動以來所做一切的第一次真正考驗。手動啟動卻從未加入開機程序的服務、從未寫入設定的掛載、在執行中變更卻從未存成檔案的設定:這些都已經存在好幾個月,直到那一刻之前從未被驗證過。重新啟動揭露了它們,而不是造成了它們。
知道這一點很值得,因為回復更新解決不了這類問題,而正因為解決不了,它會把人帶往錯誤的方向好幾個小時。
先看症狀,再做決定
真正的問題不是怎麼回到從前,而是到底是什麼壞了。症狀分成三類,分別指向三個不同的方向。
機器完全起不來。問題在核心或開機層。回頭的路是上一個核心,而它通常還在,因為更新不會刪除舊核心。
機器起得來,但沒有管理面板。有某個服務沒有啟動。查看是哪一個以及原因;這幾乎總是單一設定的問題,而不是整個更新的問題。
一切都起來了,但某些東西的行為不一樣。某個元件確實改變了。這正是想回頭的直覺最錯誤的地方:正確的工作是閱讀到底改變了什麼。
回頭不是免費的
回復根檔案系統不只會復原更新,還會復原從那一刻起的一切。期間變更的設定、新增的存取金鑰、安裝的其他東西,全都會回到過去。回頭是一個決定,不是一個按鈕。
從最便宜的做法開始的階梯
先嘗試範圍最窄的做法,如果有效,就不要再動其他東西:
用上一個核心開機。它只影響核心,其餘維持原樣。
把單一套件退回先前的版本。影響僅限於該套件。
整體回復系統狀態。最強大也最昂貴的做法,留到最後。
修復之前先記下來
記下看到的內容:錯誤訊息那一行、哪個服務、什麼時間。等到恢復正常的那天,原因就會跟著消失,而三個月後同樣的事情再次發生時,手上將什麼都沒有。
Atlas 的做法
Atlas 會在更新前鎖定目前執行中的核心。所以即使安裝了新核心,重新啟動後仍會以舊核心開機;切換到新核心是另一個獨立且刻意的步驟。真正切換到新核心時,開機守護會接手:它會驗證系統確實正常啟動,若沒有,就自行退回舊核心。
更新前會為根檔案系統建立快照。在 ZFS 上這很便宜,回復只需要幾分鐘;在沒有 ZFS 的系統上,套件狀態會另外保存,因此雖然無法復原整個系統,仍能復原安裝狀態。會保留最近五個更新前的快照,較舊的會被清除。
安裝完成後還會執行另一項檢查:關鍵服務是否已啟動,叢集共識是否仍然維持。所以有沒有東西壞掉這個問題,在有人察覺之前就已經被問過了。
⚠️ 上面的警告依然成立:整體回復根檔案系統所復原的不只是更新。Atlas 會備妥快照,但是否回頭,決定權在管理者手上。
資料來源
Proxmox 官方文件。內容為英文,且在此主題上以官方文件為準。