PVE 系統是什麼:Proxmox VE 虛擬化平台功能與適用場景
PVE 系統就是 Proxmox VE,一個基於 Debian 的開源虛擬化平台:用 KVM 跑完整虛擬機器,用 LXC 跑輕量容器,叢集、高可用、ZFS 和 Ceph 儲存、備份都內建,瀏覽器開啟 8006 連接埠就能管理。軟體本身免費,付費訂閱買的是企業軟體源和技術支援。
PVE 系統就是 Proxmox VE(Proxmox Virtual Environment),由奧地利的 Proxmox Server Solutions 公司開發,2008 年釋出首個版本,以 AGPLv3 開源。它是一個裝在物理伺服器上的完整虛擬化平台:底層是 Debian,用 KVM/QEMU 執行完整的虛擬機器(Linux、Windows、BSD 都能裝),用 LXC 執行共享宿主核心的輕量容器,叢集、高可用、ZFS 和 Ceph 儲存、備份、防火牆、許可權管理全部內建,瀏覽器存取 8006 連接埠就能管理一台或整個叢集。軟體本身免費,所有功能不需要許可證;付費訂閱買的是經過更多測試的企業軟體源和官方技術支援。在機房裡,它常見於兩種用法:獨服或母機上切虛擬機器對外出租,也就是俗稱的“開小雞”;以及用 3 台以上伺服器搭一個跑內部系統的小型私有云。
PVE 系統由什麼組成:Debian、KVM 和 LXC
| 組成部分 | 是什麼 | 在 PVE 裡怎麼體現 |
|---|---|---|
| Debian | 底層作業系統,PVE 9 基於 Debian 13,PVE 8 基於 Debian 12 | 用 apt 升級,熟悉 Linux 就能維護宿主 |
| Proxmox 核心 | 以 Ubuntu 核心原始碼為基礎定製,內建 ZFS 支援 | 硬體相容性跟隨 Linux 核心,沒有單獨的相容列表 |
| KVM + QEMU | 硬體輔助的完整虛擬化 | 命令 qm,配置檔案 /etc/pve/qemu-server/<VMID>.conf |
| LXC | 系統級容器,與宿主共用核心 | 命令 pct,配置檔案 /etc/pve/lxc/<VMID>.conf |
| pmxcfs + corosync | 叢集檔案系統,掛載在 /etc/pve,由 corosync 在節點間同步 | 命令 pvecm,任何節點改的配置全叢集可見 |
| pveproxy、pvedaemon | Web 介面和 REST API | 8006 連接埠,命令列用 pvesh 呼叫同一套 API |
所謂“PVE 虛擬機器”,就是一台由 QEMU 程序執行的 KVM 虛擬機器:每台有一個從 100 開始的編號(VMID),配置是一個文字檔案,磁碟放在你新增的某個儲存上。在宿主上它就是一個普通程序,命令列裡帶著 -id 101 這樣的編號,所以出現效能問題時,top、iostat 這些 Linux 工具照樣能用。
pveversion -v | head -n 5 # PVE 及關鍵元件版本
qm list # 所有 KVM 虛擬機器及執行狀態
pct list # 所有 LXC 容器
cat /etc/pve/qemu-server/101.conf # 101 號虛擬機器的完整配置
ps -ef | grep '[k]vm -id 101' # 這台虛擬機器對應的 QEMU 程序
systemctl status pveproxy pvedaemon pve-cluster --no-pager
核心功能:叢集、高可用、儲存與備份
叢集:不需要單獨的管理伺服器
PVE 叢集沒有主節點,任意一台節點的 Web 介面都能管理整個叢集,配置透過 corosync 即時同步到每個節點的 /etc/pve。這一點和 vSphere 不同:ESXi 要集中管理必須另外部署 vCenter,PVE 把管理平面分佈在每個節點上。
pvecm create dc1-cluster # 在第一台上建立叢集
pvecm add 10.10.40.11 # 在要加入的節點上執行,IP 填叢集裡已有的節點
pvecm status # 看 Quorate 是否為 Yes,以及投票數
三條規矩:加入叢集的節點上不能已有虛擬機器;corosync 對延遲敏感,節點放在同一機房的低延遲網路裡,最好給它單獨一個網口或 VLAN,不要和儲存、遷移流量擠在一起;叢集靠多數票工作,失去多數的一側配置變為唯讀。
高可用:節點當機後在別處重啟虛擬機器
用 ha-manager add vm:101 --state started 把虛擬機器交給 HA 管理後,所在節點當機時,它會在其他節點上自動啟動。前提有三個:至少 3 個節點(或 2 個加 QDevice);虛擬機器磁碟在共享儲存上,或者用 ZFS 儲存複製定期同步到其他節點;節點有看門狗,失去多數票的節點會自我隔離(重啟),確保同一台虛擬機器不會在兩個節點上同時執行。HA 是“重啟”不是“不中斷”,切換期間業務會停幾分鐘。
儲存:從本地 ZFS 到分散式 Ceph
| 儲存型別 | 節點間共享 | 快照 | 適合 |
|---|---|---|---|
| 目錄(local) | 否 | 磁碟為 qcow2 格式時支援 | ISO、範本、備份檔案 |
| LVM-thin | 否 | 支援 | 有硬體 RAID 卡的單機 |
| ZFS | 否,可用儲存複製同步 | 支援 | 單機,或兩三台用複製做準高可用 |
| Ceph RBD | 是 | 支援 | 3 台以上的超融合叢集 |
| NFS | 是 | 磁碟為 qcow2 格式時支援 | 已有 NAS |
| iSCSI、FC 上的 LVM | 是 | 不支援或受限 | 已有 SAN |
兩種在機房裡常用的組合:
- ZFS 加儲存複製:每台節點用本地 NVMe 做 ZFS,關鍵虛擬機器每 15 分鐘(預設值,最短 1 分鐘)非同步複製到另一台。節點故障時 HA 用最近一次複製的資料啟動,最多丟失一個複製間隔的資料,換來的是不需要共享儲存。
- Ceph 超融合:在 Web 介面裡就能部署,每台節點的硬碟作為 OSD,儲存池預設 3 副本。假設 3 台節點每台 4 塊 3.84 TB NVMe,裸容量約 46 TB,3 副本後可用約 15 TB,再留 20% 餘量,規劃時按 12 TB 用。Ceph 流量走單獨的網路,萬兆起步,25 GbE 更從容。
備份:vzdump 與 Proxmox Backup Server
內建的 vzdump 支援三種模式:snapshot(不停機,預設推薦)、suspend(短暫掛起)、stop(關機備份,一致性最好)。在“資料中心 → 備份”裡建定時任務,保留策略按 keep-daily、keep-weekly 設定。資料量大了以後,可以接入同公司的 Proxmox Backup Server(PBS):增量備份、跨虛擬機器去重、客戶端加密、定期校驗,Web 連接埠 8007。
vzdump 101 102 --storage pbs01 --mode snapshot --prune-backups keep-daily=7,keep-weekly=4
qmrestore /var/lib/vz/dump/vzdump-qemu-101-2026_12_20-02_00_01.vma.zst 151 # 本地備份檔案恢復為 151 號
Proxmox VE 是否免費:免費使用與企業訂閱的區別
免費。AGPLv3 不限制用途,商業環境、生產環境都可以合法使用,所有功能都在,不存在“免費版閹割功能”的問題。訂閱按 CPU 插槽、按年計費,分 Community、Basic、Standard、Premium 四檔,區別如下:
| 專案 | 不訂閱 | 訂閱 |
|---|---|---|
| 功能 | 全部 | 全部,訂閱不解鎖額外功能 |
| 軟體源 | pve-no-subscription:更新來得早,測試相對少,官方定位為測試和非生產用途 | pve-enterprise:經過更多測試和驗證的更新 |
| 技術支援 | 社群論壇 | Community 檔只含企業源;Basic 起帶工單支援,檔位越高工單越多、回應越快 |
| 登入介面 | 每次登入彈出“無有效訂閱”提示,不影響使用 | 無提示 |
裝好後系統預設啟用的是企業源,沒有訂閱時 apt update 會報 401 錯誤,需要改用免費源:在 Web 介面的“節點 → 更新 → 軟體倉庫”裡禁用 enterprise,新增 No-Subscription。PVE 9 的軟體源採用 deb822 格式,等價的做法是在 /etc/apt/sources.list.d/pve-enterprise.sources 里加一行 Enabled: no,再新建免費原始檔:
# /etc/apt/sources.list.d/proxmox.sources
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
另外還有一個測試源(PVE 9 裡叫 pve-test,PVE 8 叫 pvetest),主要供開發者測試新功能,生產環境不要啟用。用免費源跑生產的團隊不少,關鍵是自己承擔驗證:先在一台非關鍵節點上升級,觀察幾天再升其他節點。
PVE 和 ESXi 的定位差異
| 對比項 | Proxmox VE | VMware ESXi / vSphere |
|---|---|---|
| 底層 | Debian 加 KVM、LXC,開源 | 自研 VMkernel,閉源 |
| 授權 | 免費;可選訂閱按 CPU 插槽計 | 生產需訂閱,按 CPU 核心計,每顆至少 16 核 |
| 集中管理 | 內建,任一節點即可管理叢集 | 需要單獨部署 vCenter |
| 高可用、線上遷移 | 內建 | 依賴 vCenter 和對應套件 |
| 容器 | 原生 LXC | 不直接提供,容器要跑在虛擬機器裡 |
| 硬體相容 | 跟隨 Linux 核心,雜牌和老硬體也多能用 | 只認相容列表裡的硬體 |
| 備份 | 內建 vzdump,另有 PBS | 依賴第三方備份軟體 |
| 生態 | 第三方軟體的支援在增加,但仍少於 vSphere | 備份、監控、災備等商業生態成熟 |
| 常見場景 | 中小機房、獨服開小雞、實驗室、小型私有云 | 企業資料中心、已有 vSphere 體系的環境 |
簡單說:已經圍繞 vCenter 建好流程、依賴 vSAN 或 NSX 的環境留在 vSphere;新建的小型虛擬化平台、對外出租的母機、不在 VMware 相容列表裡的硬體,PVE 的門檻和成本都更低。
獨服和機房母機用 PVE 開小雞
先算一台母機能開多少台
母機能開多少台,由記憶體、磁碟、CPU 三者中最緊的那個決定。假設一台母機為 2 × 16 核 32 執行緒(共 64 執行緒)、256 GB 記憶體、4 塊 3.84 TB NVMe 組 ZFS RAID10,套餐為 4 核、8 GB、100 GB:
| 資源 | 可分配 | 按套餐能開 |
|---|---|---|
| 記憶體(不超分) | 256 − 宿主預留 8 − ZFS 讀快取 16 = 232 GB | 232 ÷ 8 = 29 台 |
| 磁碟 | RAID10 約 7.68 TB,留 20% 餘量約 6.1 TB | 6100 ÷ 100 = 61 台 |
| CPU(按 3 倍超分) | 64 × 3 = 192 個 vCPU | 192 ÷ 4 = 48 台 |
瓶頸是記憶體,這台母機按 29 台規劃。ZFS 讀快取(ARC)的 16 GB 來自 PVE 8.1 起安裝程式寫入 /etc/modprobe.d/zfs.conf 的預設上限:記憶體的 10%,最多 16 GiB;8.1 之前裝的系統沿用 ZFS 自身的預設上限(記憶體的 50% 或更多),開小雞前要自己調小。CPU 可以超分,因為小雞很少同時跑滿;記憶體超分在出租業務裡風險大,宿主記憶體不足時會有虛擬機器被系統強制結束。
IP 也要提前算:29 台小雞要 29 個公網 IP。一個 /27 有 32 個位址,去掉網路位址、廣播位址和閘道器剩 29 個,宿主再佔 1 個只剩 28 個,差一個。要麼把宿主的管理位址放到內網或管理網段,要麼申請 /26。
KVM 還是 LXC
| 對比項 | KVM 虛擬機器 | LXC 容器 |
|---|---|---|
| 隔離 | 獨立核心,硬體虛擬化隔離 | 與宿主共享核心,靠名稱空間和 cgroup 隔離 |
| 能裝的系統 | Linux、Windows、BSD | 只有 Linux |
| 資源開銷 | 每台要單獨預留記憶體 | 開銷小,同樣的母機能開更多 |
| 客戶能做的事 | 換核心、裝 Docker、載入核心模組 | 不能換核心,跑 Docker 要開啟巢狀等選項且有限制 |
| 適合 | 對外出租的常規 VPS | 自用的內部服務;對外出租前要評估隔離風險 |
對外出租時,客戶會做什麼無法預料,KVM 的隔離更穩妥;LXC 更適合自己的 DNS、監控、反向代理這類內部服務。
用範本和 cloud-init 批次開機
逐台裝系統太慢,標準做法是用發行版提供的雲映象做一個範本,開機時由 cloud-init 注入 IP、密碼和 SSH 公鑰:
# 一次性:用 Debian 13 雲映象做成 9000 號範本(映象檔名以實際下載為準)
qm create 9000 --name debian13-tpl --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single
qm set 9000 --scsi0 local-zfs:0,import-from=/root/debian-13-genericcloud-amd64.qcow2
qm set 9000 --ide2 local-zfs:cloudinit --boot order=scsi0 --serial0 socket --vga serial0
qm template 9000
# 每開一台:完整克隆,改規格,注入位址和公鑰,擴容磁碟,網路卡限速 100 Mbps
qm clone 9000 201 --name vps201 --full
qm set 201 --cores 4 --memory 8192 --ipconfig0 ip=203.0.113.21/26,gw=203.0.113.1 --sshkeys /root/keys/vps201.pub
qm resize 201 scsi0 100G
qm set 201 --net0 virtio,bridge=vmbr0,rate=12.5,firewall=1
qm start 201
網路卡的 rate 單位是 MB/s,12.5 MB/s 約等於 100 Mbps;磁碟也可以用 iops_rd、iops_wr、mbps_rd、mbps_wr 限制讀寫,防止一台小雞壓滿整台母機的硬碟。
防止小雞盜用別人的 IP
橋接模式下,客戶在小雞裡把 IP 改成別人的,會造成位址衝突。PVE 防火牆的虛擬機器選項裡有兩個開關:MAC filter(預設開啟,禁止偽造 MAC)和 IP filter(預設關閉)。開啟 IP filter 並在名為 ipfilter-net0 的 IPSet 裡寫入分配給它的位址,這台小雞就只能用這些 IP 發包。前提是資料中心級和虛擬機器網路卡上的防火牆都已啟用。啟用資料中心防火牆前,先建一個名為 management 的 IPSet 寫入維運網段(它會自動放行這些位址存取 8006、22 等管理連接埠),並保持一個 SSH 會話不斷開,以免把自己擋在外面:
# /etc/pve/firewall/201.fw
[OPTIONS]
enable: 1
ipfilter: 1
[IPSET ipfilter-net0]
203.0.113.21
機房防火牆要放行的連接埠
| 連接埠 | 協議 | 用途 | 放行範圍 |
|---|---|---|---|
| 8006 | TCP | Web 管理介面與 API | 只對維運網段開放 |
| 22 | TCP | SSH,叢集內部操作也會用到 | 維運網段和叢集節點之間 |
| 5900–5999 | TCP | 網頁 VNC 控制檯 | 同 8006 |
| 3128 | TCP | SPICE 代理 | 用 SPICE 客戶端時 |
| 5405–5412 | UDP | corosync 叢集通訊 | 只在叢集節點之間 |
| 60000–60050 | TCP | 線上遷移的記憶體和本地磁碟資料 | 只在叢集節點之間 |
| 3300、6789、6800–7300 | TCP | Ceph 監視器與 OSD | 只在 Ceph 網路內 |
| 8007 | TCP | Proxmox Backup Server | PVE 節點到備份伺服器 |
8006 對整台母機擁有完全控制權,不能直接暴露在公網。
在管理系統裡怎麼落地
母機開小雞,最容易出問題的是位址台帳和交換器側的繫結。在 IP 位址管理 裡把整段位址(例如上面的 /26)分配給這台母機並指定主 IP,這段位址就不會在開通其他伺服器時被自動分出去,哪段位址在哪台母機上一查便知。交換器側要留意:ARP 繫結會把 IP 和網路卡的 MAC 鎖在一起,而橋接模式下每台小雞用自己的 MAC 收發。如果這段位址按母機網路卡的 MAC 做了繫結,或者連接埠只允許母機的 MAC 透過,小雞的流量就可能被交換器丟棄,表現為 IP 配好了卻不通。處理辦法有兩種:按小雞的實際 MAC 調整這些位址的繫結,或者改用路由方式,把整段位址路由到母機 IP 上,由母機轉發。母機本身的系統,可以在 DCIM 的重灌映象中直接選擇 Proxmox VE(見 DCIM 機房管理系統),由機房裡的從節點就近完成安裝。
常見問題
PVE 的管理介面怎麼登入?
瀏覽器開啟 https://伺服器IP:8006,用 root 帳號、認證域選 Linux PAM 登入。預設證書是安裝時生成的自簽名證書,瀏覽器會提示不安全,可以在節點的證書設定裡上傳正式證書,或用內建的 ACME 功能申請 Let's Encrypt 證書。
兩台 PVE 能組叢集嗎?
能組,但兩台各 1 票,任何一台當機,剩下的一台都拿不到多數票,不能啟動或修改虛擬機器。解決辦法是在叢集外找一台機器(小虛擬機器也可以)安裝 corosync-qnetd 作為 QDevice,叢集節點安裝 corosync-qdevice 後執行 pvecm qdevice setup 加上它的 IP,湊出第 3 票。
不在同一個叢集的兩台 PVE 之間怎麼遷移虛擬機器?
通用做法是備份恢復:源主機用 vzdump 備份,把備份檔案拷到目標主機後用 qmrestore 恢復;兩邊接入同一台 Proxmox Backup Server 時,在目標主機直接從備份伺服器恢復。命令列的 qm remote-migrate 也支援跨叢集遷移,官方標註為實驗性功能,以當前文件為準。