Proxmox 知識庫
Proxmox 常見問題的解答。每篇條目並非只回答單一問題,而是為了服務所有以不同措辭搜尋同一件事的人而撰寫。
網路
- 讓容器在網路上擁有自己的位址:得到什麼,付出什麼 容器可以用自己的位址發布,而不必透過連接埠號碼。好處是真的,代價也是真的,而代價通常要等建置完成後才會發現。
- 看懂接手的伺服器:先讀懂,再動手 一台不是自己建置的 Proxmox 落到了手上,現在由自己負責。第一個直覺是改點東西來理解它,而這正是一開始最不該做的事。
- 寫了防火牆規則卻毫無作用:三層開關 Proxmox 防火牆要在三個層級分別啟用,只要有一層沒開,規則就不會有任何作用。最常見的情況是規則本身正確,卻位在一個沒有開啟的開關底下。
- 如何閱讀網路地圖:一台機器的流量往哪裡去 有個問題是清單檢視回答得很差的:這台機器的流量究竟經過哪裡。答案找得到,但每次都得在腦中把整條鏈組合起來。
- 改了網路設定就連不上:鋸斷自己坐著的樹枝 網路設定正是透過套用它時所使用的那條連線來套用的。一個小錯誤就會在套用的瞬間切斷連線,而如果沒有事先準備好退路,就需要實體存取。
- 用 VLAN 區隔:一條線、多個網路,以及標籤加在哪裡 區隔的目的是限制糟糕的一天能波及多遠。VLAN 透過一條線路做到這一點,但標籤加在哪裡、橋接器是否允許承載標籤,都可能在無聲無息中出錯。
- 虛擬機器沒有網路:按正確的順序排查 大多數人從虛擬機器內部開始找,但那是最後才該看的地方。這條鏈有四個環節,症狀會指出是哪一環斷了。
- 多張網路卡聚合:備援還是速度 聚合網路卡的理由有兩種,而兩者並不是同一種模式。大多數架構真正需要的是備援,設定時卻追求傳輸量,結果只換來失望。
更新
- 容器自己變了:latest 標籤實際上承諾了什麼 什麼都沒更新,容器的行為卻不一樣了。這不是故障:latest 不是版本,而是一個指標。真正的問題不在於拿到最新版,而在於能不能回去。
- 按下更新之前:哪一種更新會停掉什麼 幾個月沒更新的人真正害怕的不是更新本身,而是不知道什麼會停止。更新並非只有一種,各自的影響也完全不同。
- 套件庫與訂閱提醒:安裝後的第一個意外 全新安裝後,更新會因驗證錯誤而失敗,但其實什麼都沒壞:預設的套件庫是付費的那一個。本條目說明各個套件庫、它們之間真正的差異,以及論壇上流傳的那行危險指令。
- 核心更新:為什麼最危險的更新也是最安靜的 核心安裝完成,什麼事都沒發生,一切看起來都正常。危險在下一次開機時才會出現,而那次開機可能是好幾週之後。原因與結果之間隔了好幾週。
- 更新後出了問題:發生在更新之後,不等於是更新造成的 重新啟動是對上次重新啟動以來所做一切的第一次真正考驗。有些壞掉的東西並不是更新帶來的,而是早就存在,只是從來沒有被驗證過。
- 主要版本升級:這不是一次更新,而是一次遷移 更新替換的是一個零件,主要版本升級替換的是整個系列。差別出現在回頭的時候:更新可以逐個套件復原,系列的更換卻無法復原。
存取
- 將面板對外開放:會改變什麼,以及改變最少的途徑 面板一放上網際網路,登入頁面就對所有人可見,自動化的嘗試幾小時內就會找上門。途徑有三條,而保護最多的那條根本不讓面板曝光。
- 新增使用者時選擇身分來源:存在於伺服器上,還是只存在於面板中 Proxmox 認得兩種使用者:真正存在於伺服器上的系統帳號,以及只存在於 Proxmox 內部的帳號。選錯了,不是擋住登入,就是開了超過需要的門。
- 主控台、Shell 與 SSH:進入同一台機器的三扇門 連不上某台機器時,第一個要問的是當時走的是哪一扇門。門有三扇,每一扇各自依賴不同的元件正常運作。
- 主控台是一種特權:為什麼它需要自己的權限 主控台看起來像一個畫面,但它其實是 shell。能變更設定和能開啟 shell 是兩種不同的權力;把其中一種當成另一種,等於把 root 交出去。
- 為自動化準備一把獨立的鑰匙,而不是共用密碼:權杖及其限制 把密碼交給指令碼,等於把那個人擁有的一切寫進一個檔案。權杖是一把獨立的鑰匙:可以單獨撤銷、可以設定到期日,權限也可以比帳號更小。
- 已撤銷存取權限,對方卻還在裡面:工作階段不等於權限 權限已經移除,甚至帳號也已停用,那個人卻還能操作。並沒有東西壞掉:撤銷存取權限和結束工作階段是兩個不同的動作。
- 面板登入:只靠一組密碼不算防禦 密碼的強度,只有在猜測代價高昂時才有意義。而代價最高的假設,就是認為身在區域網路裡就很安全。
- 讓 AI 助理存取 Proxmox:界線應該設在哪裡 模型真正擅長的工作,也就是閱讀冗長的記錄並找出故障所在,恰恰是它通常不被允許做的事。原因在於現有的接入方式都等於把 root 交給它,而風險不在於惡意,而在於缺乏脈絡。
- 告別 root:沒有人強迫、卻回報最高的決定 以 root 身分工作,不會在某天突然爆炸。它會悄悄破壞兩件事:記錄指向的是誰,以及錯誤的點擊會在哪裡停下。解決方法不是停用 root,而是把日常工作從它身上移開。
- 已經授予權限卻沒有生效:Proxmox 權限中的路徑問題 Proxmox 的權限並不只是一個角色。它是誰、哪個角色,以及在哪個路徑,三者缺一不可。最常見的問題,是在錯誤的位置授予了角色。
- 稽核記錄:回答是誰做的,而不是發生了什麼 監控說明發生了什麼,稽核記錄說明是誰做的。它的價值會在最不希望到來的那些日子顯現,而如果那天手上沒有它,它就等於從未存在。
虛擬機器
- 哪種工作需要多少核心與多少記憶體 資源配置取決於工作的類型。媒體伺服器、資料庫和 AI 主機彼此並不相似,而給太多往往比給太少更糟。
- Docker 在 Proxmox 上該放在哪裡:擺放位置的決定與 compose 陷阱 容器放在哪裡不是品味問題,而是爆炸半徑的問題。compose 檔案看起來像設定,實際上卻是一支要執行的程式。
- 虛擬機器的處理器類型:為什麼預設值很慢,又為什麼 host 不一定正確 預設的處理器類型刻意選用舊型號,好讓它在任何地方都能執行。代價是效能。另一個極端 host 能帶來速度,卻會奪走這台虛擬機器移動的自由。
- 範本與複製:連結複製與完整複製的差別 連結複製幾秒內就能啟動,但會一直和範本綁在一起。完整複製是獨立的,但需要空間和時間。兩者的差別會在想要刪除範本的那一天浮現。
- 在 Proxmox 中以幾秒而非幾分鐘建立虛擬機器 以 ISO 安裝需要二十分鐘。使用雲端映像檔,機器在第一次開機時就已就緒,使用者、主機名稱與套件都已經就位。
- 客體代理程式已啟用,卻仍顯示未執行 啟用代理程式與安裝代理程式是兩件不同的事,即使兩件都做了,代理程式仍可能沒有運作。值得追查的原因不是缺少的 IP 位址,而是那些持續成功、卻在不知不覺中變得不那麼可靠的備份。
- 容器還是虛擬機器:一句話的差別與它的四個後果 這個選擇通常出於資源上的習慣。然而差別就在一句話裡,其他一切都由此而來。
- 選擇虛擬硬體:呈現給客體的硬體決定了它的速度 虛擬機器的硬體不是既定事實,而是一種選擇。模擬的舊硬體是安裝當天的工具,不是虛擬機器整個生命週期的配備。
- 虛擬機器為什麼很慢:處理器、磁碟,還是超額配置 變慢有三個常見來源,各自在不同的地方顯現。在找到真正的來源之前就增加核心,通常只會讓情況更糟。
- 虛擬機器關不了機:請求不是電源開關 關機是提出請求,停止是直接拔掉插頭。虛擬機器拒絕關機時一切令人困惑的地方,都來自這一個區別,以及請求需要內部有人在聆聽這個事實。
- QEMU Guest Agent 是什麼,以及虛擬機器為什麼顯示不出 IP 客體代理程式是虛擬化管理程式與機器內部之間的通道。少了它,IP 會一直是空白,關機要求傳不進去,也無法從面板向機器內部傳達任何東西。
- 從 VMware 搬過來的虛擬機器無法開機:磁碟還在,通往磁碟的路不在了 VMware 遷移後最常見的故障並不是磁碟遺失,而是客體再也認不出磁碟前方的控制器。只要一次只改一件事,修復的每一步都可以復原。
備份
- 該保留幾份備份:真正的問題不是份數,而是能回溯多遠 七份每日備份能完美防範今天就發現的失誤,卻完全無法防範一個月後才發現的損壞。保留不是一個數字,而是關於回溯範圍的決定。
- 備份工作悄悄停了:代價最高的故障不是大聲的那種 大聲失敗的備份當天就會被修好。悄悄停止的備份,要到需要它的那天才會被發現。差別不在通知,而在於看的是什麼。
- 測試還原:綠色的工作不是證明 未經測試的備份不算備份,這句話人人都知道,卻沒有人照著做。本篇談的是測試真正的意思,因為一個看起來成功的工作並不是測試。
- 備份該放在哪裡:關鍵在於要防範什麼 備份目標不是速度上的決定,而是保護上的決定。放在同一個儲存池的備份,會在磁碟損壞時與資料一起消失,而多數環境正好處於這種狀態。
- 備份模式:中斷的代價寫得清清楚楚,一致性的代價卻沒寫 三種模式之間的差異,通常是用停機時間來解釋。真正的差異在於一致性,而對於持續寫入的虛擬機器來說,這個差異決定了備份究竟有沒有用。
安裝
- 磁碟該怎麼配置:鏡像還是分散式同位元 問題不在哪一種比較快,而在要撐過的是哪一種故障,以及故障之後機器將被迫做些什麼。
- 伺服器名稱:安裝時就選好,之後就別再動它 名稱不是標籤,而是位址。設定存放在以它命名的資料夾中,圖表檔案以它命名,叢集成員也靠它辨識。
- 在 Proxmox 主機上執行社群腳本之前:先讀這五件事 社群腳本承載真正的專業經驗,也確實省下大量時間。但這些腳本通常以 root 身分,在最不能出事的那台機器上執行,來源只是一行貼上後沒人讀過的指令。解法不是避開,而是先讀過再執行。
- 永久掛載:一行設定就能讓機器無法開機 手動建立的掛載在重新啟動後就會消失,而要讓它永久生效,必須經過一個決定機器能否開機的檔案。那裡有一行錯誤,停掉的不是某個服務,而是整台機器。
- local 與 local-lvm:為什麼有兩個儲存區,各自的用途是什麼 安裝完成後會看到兩個名稱相似得令人困惑的儲存區,而兩個名稱都沒有說明它們的用途。兩者的區別不在技術,而在於它們存放的內容。
- Proxmox 訂閱提示:為什麼會出現,可以怎麼處理 安裝後,若伺服器沒有訂閱,Proxmox 每次登入都會顯示一則提示。這則提示是資訊,不是錯誤。本文說明兩條官方途徑,以及訂閱帶來的好處。
- 機器的設定檔損毀時:舊版本存放在哪裡 每台機器都有一個小型文字檔。檔案損毀時只影響那台機器,而舊版本存放在兩個大多數人從不查看的地方。
- 告別一體式 NAS:得到了什麼,又有哪些雜務悄悄落到自己身上 一體式設備賣的主要不是儲存空間,而是早已做好的決定,以及一份由別人負責維護的保養日程。搬遷那天,這兩樣都會轉移過來,而第二樣正是最常被遺忘的部分。
- 一台機器,兩種哲學:底層該是儲存還是虛擬化? 問題不在於哪個產品比較好,而在於要讓哪一層位於另一層之下,因為這個選擇決定了日後哪些部分能在不重建整台機器的情況下更換。
- 不用命令列能管理 Proxmox 嗎:誠實的答案 答案大致上是可以,但這不是真正的重點。危險不在於不熟悉命令列,而在於貼上自己看不懂的指令。
拓撲
- Proxmox 網頁介面擅長什麼,又在哪些情況下會需要再開第二個畫面 原生介面並不是 Proxmox 的弱點。它精確、完整且誠實。摩擦集中在一個特定的地方:答案同時分散在好幾個畫面上的問題。
- Proxmox 伺服器的第一個畫面應該呈現什麼? 大多數總覽畫面回答的是有哪些東西。真正有用的問題是:有沒有哪裡出錯,今天是否需要處理。這是兩種不同的畫面,值得每天早上打開的只有其中一種。
- Proxmox 網路裡有一些從來沒有人設定過的部分 有人搜尋 Proxmox 拓撲視覺化工具,聽起來像是想要裝飾。其實不是。客體、橋接器與實體連接埠之間的關係是按客體分別儲存的,所以想看清一個橋接器,唯一的方法就是逐一打開每個客體。
- 啟動順序是延遲,不是相依關係 設定啟動順序時,多數人以為第二台機器會等第一台就緒才啟動。實際上不會。它只等待固定的秒數,然後無論如何都會啟動,這就是測試時正常的順序,到了真正停電的那個早上卻失靈的原因。
- 虛擬機器實際上位在哪一顆實體磁碟上? 清單檢視會顯示某台虛擬機器使用 local-lvm,卻不會顯示另外八台虛擬機器也使用同一顆實體磁碟。而決定單一故障代價的,正是後面這一句。
叢集
- 為什麼兩節點叢集是最糟的選擇:多數決問題 買第二台伺服器組成叢集,看起來像是提高了韌性。實際上兩個節點比一個節點更脆弱:其中一個倒下時,另一個就再也無法做出決定。
- 在叢集中新增與移除節點:無法回頭的步驟 加入叢集不是被加進一份名單。加入的機器自己的設定會被叢集的設定取代,而移除是單向的。
- 設定變成唯讀:為什麼存放設定的位置與眾不同 即使以 root 身分也無法寫入,並不代表磁碟滿了。Proxmox 並不把設定放在一般的目錄中,而那個位置是刻意拒絕寫入的。
- 建好叢集了,虛擬機器卻無法遷移:缺的是儲存空間 建好叢集並不會讓虛擬機器變得可以遷移。讓遷移成為可能的不是網路,而是磁碟所在的位置。而且容器的遷移方式和虛擬機器不同。
- 已開啟高可用性,機器還是停了:HA 真正的承諾是什麼 HA 承諾的不是不中斷運作,而是自動重新啟動。兩者之間相差幾分鐘,不了解這幾分鐘就建立起來的期待,最後只會落空。
儲存
- 新增磁碟與擴充儲存池:悄悄終結備援的那一步 新增磁碟是兩件不同的工作:讓系統看到它,以及決定它歸屬何處。第二件出錯,可能讓備援永久消失。
- 孤立磁碟:刪除之前該先問的問題 虛擬機器刪除了,空間卻沒有回來。殘留的磁碟會因為三種不同的原因留下,而這三種並不相同。這份清單本身就是一份刪除清單,因此它的可靠性是另一個問題。
- 磁碟滿了:空間跑去哪裡,哪些可以安全刪除 儲存空間滿了,第一步不是刪除,而是找出空間去了哪裡。快照、舊備份與孤立磁碟是三個常見元兇,而刪除它們的風險並不相同。
- 記錄檔:唯一一個沒有人決定卻會自己長大的東西 填滿磁碟的東西幾乎都是管理者自己加進去的,只有記錄檔例外。而且一旦發生故障,寫入就會加速,所以記錄檔恰好在最沒有餘力查看的時候長得最快。
- 快照不是備份:差別在哪裡,為什麼重要 快照存在於同一顆磁碟上。磁碟壞了,快照也跟著消失。備份則存放在其他地方,這是唯一真正的差別。
- 建好軟體 RAID 後重新啟動,儲存區卻不見了:陣列沒有在開機時組裝起來 磁碟沒問題,資料也還在,但儲存區不見了。缺少的不是磁碟上的東西,而是告訴系統開機時要組裝陣列的那份記錄。
- ZFS 還是 LVM:在安裝時做出、事後難以更改的決定 ZFS 提供資料完整性與快照,代價是需要記憶體。LVM 輕量又熟悉,但不會自行察覺資料毀損。這個選擇通常取決於記憶體與期望。
- ZFS 儲存池降級或消失:資料是不是不見了 儲存池降級不代表資料遺失,而是失去了備援。看似消失的儲存池,通常也沒有被刪除,只是從系統上脫離了。
主控台與檔案
- 主控台打不開:介面一切正常,為什麼偏偏這一項失敗 其餘介面都完全正常,唯獨主控台始終連不上,這指向少數幾個原因。最常見的是反向代理:一般請求都轉送得好好的,卻悄悄拒絕了主控台真正需要的那種連線。
- Proxmox 沒有檔案管理員時,如何把檔案放進虛擬機器 介面上沒有任何能把檔案上傳到客體內部的按鈕,而這個缺席是刻意的設計,不是疏忽。真正可行的途徑有四種,各有不同的代價,另外還有一條很受歡迎、卻會悄悄損壞檔案系統的捷徑。
- 在主控台中複製貼上,以及鍵盤為什麼會打出錯誤的字元 圖形主控台是一幅螢幕畫面,因此本機的剪貼簿不會自動傳到另一端。有一條管道可以跨過去,另外還有一個獨立的設定,在被找出來之前,會悄悄把每個特殊字元都打錯。
- xterm.js 主控台為什麼是灰色的,以及真正需要的是哪一種主控台 Proxmox 提供不只一種進入執行中客體的方式,而大家最常想用的那一種,卻常常在沒有任何說明的情況下無法使用。變成灰色的選項並沒有壞,它在等兩項設定:一項在主機上,一項在客體內部。
硬體
- 高溫:什麼都不會壞,卻讓一切壽命縮短的故障 運轉溫度過高的伺服器不會當機。它會變慢,並且老化得更快。因為它從不回報錯誤,所以多年來都不會被注意到。
- 把顯示卡交給虛擬機器:真正的障礙不是驅動程式,而是群組 將硬體直接直通給虛擬機器是可行的,但裝置是以群組為單位交出,而不是一個一個交出。而交出去的硬體,也會奪走虛擬機器移動的自由。
- 處理器顯示百分之百:讀數字之前要先問的問題 三個不同的數字頂著同一個名字:開機以來的平均值、累計總量,以及兩次取樣之間的差值。只有最後一個能回答此刻的情況。
- 記憶體顯示 90%:是真的滿了,還是只是看起來滿了 閒置的記憶體就是浪費的記憶體,所以單看百分比偏高,並不代表有問題。該問的不是有多滿,而是誰佔著它。
- SSD 一年掉了百分之四十:為什麼 Proxmox 讓磁碟耗損得更快 磁碟沒有故障,而是工作負載不同。伺服器磁碟不會像桌上型電腦的磁碟那樣閒置,而且每一次寫入都會一層一層地放大。該觀察的數字不是百分比,而是斜率。
監控
- 需要一套指標系統,還是內建檢視已經能回答問題? 警示與指標是用來回答不同問題的不同工具。內建檢視能完美回答現在是否出了問題。指標系統回答的是上週二凌晨三點發生了什麼事,而這也是執行它的唯一理由。
- 昨晚發生了某件事:記錄實際上在哪裡 警示說明發生了某件事,記錄說明原因。問題在於,最需要的那段記錄正好涵蓋機器倒下的那一刻,而在預設安裝中,這段記錄也最可能不見。
- 守護者倒下時:為什麼沉默不是好消息 幾個星期都沒有收到警示信。可能的解釋有兩種,從外面看起來完全一樣:不是一切正常,就是守護者已經倒下。
- 警示已設定卻什麼都沒收到:沒有人測試的傳遞路徑 監控分成兩半,通常只有一半被設定好。發現問題的檢查是簡單的那一半。把訊息送到人手上的路徑,才是會悄悄壞掉的那一半,而且是在曾經正常運作之後才壞掉。
- 為什麼不該開啟所有警示:警報還是摘要 一場嚴重事故之後,第一個直覺就是把所有警示都打開。六週後,卻一則都沒有讀。警報的價值不在於響起,而在於被讀到。