今天開始安裝 Proxmox VE。這一天比較特殊,因為是第一次實際進入 Lab 加上完整安裝過程,所以文章會保留較多部署內容。後續文章則會把詳細操作放在 GitHub,正式文章主要解釋部署時使用了哪些技術、每個設定代表什麼,以及為什麼要這樣設定。
OPNsense 最後會管理內部網路,但目前還沒有安裝,因此 pve-l0 與三台 L1 PVE 先接到現有路由器,使用路由器提供的 IP、預設閘道(Gateway)與 DNS 完成安裝和更新。完整到每個按鈕與欄位的操作,另外整理在 GitHub 的 詳細部署文件。
本文閱讀方式
- 完整理解技術與底層原理:依序閱讀全文。
- 掌握完成部署所需的基本概念:優先閱讀標有「⭐」的章節。
- 快速了解當天的部署內容:閱讀文末的 Lab/實作章節。
- 跟著系列建立完整系統:依照 GitHub 詳細部署文件 的天數順序操作。
先到 Proxmox VE ISO Downloads 下載本系列使用的 proxmox-ve_9.2-1.iso,再使用 Rufus 製作開機 USB。

圖(一)Proxmox VE 9.2-1 ISO 下載頁面
開機後先進入 BIOS/UEFI,確認 Intel VT-x 或 AMD-V 已啟用。若硬體虛擬化沒有開啟,後面雖然可以安裝三台 L1 PVE,卻無法在它們裡面繼續啟動 KVM VM。
從 USB 開機後選擇圖形化安裝(Install Proxmox VE (Graphical)),接著完成幾個主要設定:

圖(二)管理網路設定(Management Network Configuration)。畫面是 pve01 的實際範例,安裝 pve-l0 時應填入自己的 FQDN 與管理位址。
安裝前最後會看到摘要頁面,這裡要再次確認硬碟、檔案系統(Filesystem)、管理介面、主機名稱與 IP。下面使用的是早期安裝 pve01 的畫面,因此主機名稱與 IP 和 pve-l0 不同。操作 pve-l0 時仍應填入前面規劃的 pve-l0.lab.home 與實際取得的管理位址。

圖(三)Proxmox VE 安裝前的摘要(Summary)
圖(三)使用 ext4,而不是 ZFS。這台實驗機只有一顆 500GB 硬碟,無法建立 ZFS Mirror 或 RAIDZ 的磁碟冗餘,因此先使用預設的 ext4 與 LVM-thin。ext4、ZFS、RAID 與 Ceph 的差異會在下一篇詳細說明,今天先專注於安裝。
這裡先使用現有路由器參數,是因為 OPNsense 尚未部署完成。PVE 安裝完成後會使用安裝時寫入的管理設定,接著應到路由器依網卡的 MAC地址 建立固定租約,避免相同 IP 被分配給其他設備,也避免後續管理位置改變。
重新開機後,主控台會顯示 PVE 網頁管理介面位址:
https://目前的管理IP:8006/
從同一個 LAN 的電腦開啟網址後,以 root 和 Linux PAM standard authentication 登入。
PVE 登入畫面的驗證領域(Realm)代表帳號要交給哪一套系統驗證:
root@pam。這類帳號同時存在於底層 Debian,具備對應權限與命令列環境(Shell)時也能登入主控台或 SSH。admin@pve。帳號保存在 PVE 設定中,適合搭配 PVE 的角色(Role)、存取控制清單(ACL)與雙因素驗證(2FA),但不會因此自動變成可以登入 Debian Shell 的 Linux 使用者。現在是第一次登入,所以先使用安裝時建立的 root@pam。後續若要提供日常管理或多人使用,再建立個人帳號並依用途分配權限,不需要所有人共用 root。
本次實驗取得的管理位置是 https://192.168.0.146:8006/,因此從同一個 LAN 進入這個網址。
登入命令列環境後確認目前實際使用的名稱與網路:
hostname --fqdn
ip -4 -br address show vmbr0
ip route
cat /etc/resolv.conf

圖(四)從 PVE 命令列確認主機名稱、管理 IP、路由與 DNS
圖(四)是早期實驗畫面,當時輸入的主機名稱(Hostname)與搜尋網域(Search Domain)並不是最後規劃值。本文後續統一使用 pve-l0.lab.home 與 lab.home。
/etc/resolv.conf 是 Linux 名稱解析器(Resolver)的設定檔。圖中的 nameserver 192.168.0.1 表示 DNS 查詢(Query)會送到 192.168.0.1。search 10.lab 則表示查詢短名稱時,系統會嘗試補上這個 DNS 後綴(Suffix)。依本系列規劃,後續搜尋網域應統一為 lab.home。
因為 pve-l0 後續還要在三台 L1 PVE 裡啟動 KVM VM,所以除了 BIOS/UEFI,也要確認 L0 的 KVM 巢狀虛擬化已啟用:
cat /sys/module/kvm_intel/parameters/nested 2>/dev/null
cat /sys/module/kvm_amd/parameters/nested 2>/dev/null
依 CPU 類型只會有其中一個檔案,輸出 Y 或 1 代表已啟用。若輸出 N 或 0,只需執行符合自己 CPU 的其中一組設定,再重新開機:
# Intel
echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf
# AMD
echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf
reboot
重新開機後再次執行前面的檢查。建立 L1 PVE VM 時仍要把 CPU Type 設為 host,兩個條件缺一不可。
PVE 的底層仍是 Debian,所以很多目錄如果操作過 Linux 系統多少應該會有點了解。登入命令列環境後常見的根目錄用途如下:
| 目錄 | 用途 |
|---|---|
| /etc | 系統與服務設定,例如網路、APT、SSH 與 PVE 設定 |
| /var | 會持續變動的資料,例如紀錄(Log)、快取(Cache)、套件狀態與 VM 備份 |
| /usr | 大部分程式、函式庫(Library)、指令與文件 |
| /root | root 使用者的家目錄 |
| /home | 一般 Linux 使用者的家目錄 |
| /boot | Linux 核心(Kernel)、初始記憶體檔案系統(Initramfs)與開機相關檔案 |
| /dev | 磁碟、終端機等裝置節點 |
| /proc | 行程(Process)與 Linux 核心狀態的虛擬檔案系統 |
| /sys | Linux 核心、驅動程式(Driver)與硬體狀態的虛擬檔案系統 |
| /run | 開機後產生的行程識別碼(Process ID,PID)、通訊端(Socket)與其他執行狀態 |
| /tmp | 暫存資料,不能當成永久儲存位置 |
| /mnt、/media | 手動或可移除裝置的掛載位置 |
| /opt、/srv | 額外軟體或服務資料,實際用途由管理者決定 |
在新版 Debian 中,/bin、/sbin 與 /lib 通常會透過 UsrMerge 指向 /usr 內對應目錄,看起來仍在根目錄,實際檔案則集中在 /usr。
PVE 管理時更需要注意下列位置:
| 路徑 | PVE 中的用途 |
|---|---|
| /etc/pve | PVE 的 pmxcfs 設定檔系統,保存節點、VM、儲存空間(Storage)、權限、防火牆、叢集與高可用設定 |
| /etc/pve/qemu-server | 本節點的 QEMU/KVM VM 設定,例如 <VMID>.conf |
| /etc/pve/lxc | 本節點的 LXC 容器(Container)設定 |
| /etc/pve/storage.cfg | PVE 儲存空間定義,加入叢集後會在節點間同步 |
| /etc/network/interfaces | PVE 使用的 Linux 網路設定,包括實體網路介面卡(NIC)與 Linux 橋接器(Linux Bridge) |
| /etc/apt/sources.list.d | Debian、PVE 與 Ceph 套件庫(Repository)設定 |
| /var/lib/vz | 預設的 local 目錄型儲存空間,常見內容包括 ISO、容器範本(Container Template)與 vzdump 備份 |
| /var/lib/pve-cluster/config.db | pmxcfs 在本機保存的設定資料庫,不應在服務運作時手動編輯 |
| /var/log/pve | PVE 工作(Task)與相關執行紀錄 |
| /dev/pve | 預設 LVM 安裝下的邏輯磁碟區(Logical Volume)裝置 |
/etc/pve 看起來像一般資料夾,實際上是由 pve-cluster 提供的 pmxcfs。建立叢集後,其中設定會透過 Corosync 在節點間同步,也會負責避免重複的虛擬機識別碼(VMID)。不要把它當成一般目錄隨意搬動、修改權限或刪除檔案。
Linux 透過套件庫(Repository)取得套件與更新,PVE 也不例外。PVE 安裝後預設啟用企業套件庫(Enterprise Repository),但這個套件來源需要有效訂閱。本 Lab 沒有企業訂閱(Enterprise Subscription),因此要先調整套件庫。
先到 pve-l0 → Updates → Repositories 停用 PVE 企業套件庫。如果已有 Ceph 企業套件庫,也一併停用。Debian 的 trixie、trixie-updates 與 trixie-security 基礎來源要保留。
接著回到命令列建立 /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
再編輯 /etc/apt/sources.list.d/ceph.sources 加入:
Types: deb
URIs: http://download.proxmox.com/debian/ceph-squid
Suites: trixie
Components: no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
完成設定後,回到 Updates → Repositories,確認剛加入的 PVE、Ceph 無訂閱套件庫(No-Subscription Repository)已啟用,而兩個企業套件庫已停用:

圖(五)PVE 與 Ceph 無訂閱套件庫(No-Subscription Repository)
畫面上方的黃色訊息是在提醒無訂閱套件庫不建議直接用於正式環境,並不是設定失敗。
接著到 Updates 按 Refresh,確認套件清單正常後執行 Upgrade。比較習慣命令列介面(Command-Line Interface,CLI)的話可以使用:
apt update
apt full-upgrade
如果成功的話 apt update 不會出現 401 Unauthorized,也不能混入其他 Debian 或 Ceph 大版本。
Day 02 已經規劃 vmbr0 與 vmbr2 的用途,這裡直接完成設定:
pve-l0 → System → Network。Create → Linux Bridge 建立 Linux 橋接器。Bridge ports)留白,IPv4 與 IPv6 都不設定。VLAN aware。L1 PVE VLAN Trunk,或其他你自己看得懂的註解。Apply Configuration。
圖(六)在 L0 建立支援 VLAN 的 vmbr2
這座橋接器會連接 L1 PVE 與後續的 OPNsense,承載 VLAN 10~50 的帶標籤流量(Tagged Traffic)。它不是 Corosync 的 PVE 叢集通訊網路。Corosync 會在後續使用 L0 vmbr5 與 10.77.80.0/24 獨立網段。
先到 local → ISO Images → Upload 上傳 PVE ISO,再建立 VM 101:
local-lvm,Bus 選 SCSI,容量設為 80GB。host。Hardware → Add → Network Device,再加入第二張 VirtIO NIC,接到 vmbr2,VLAN Tag 同樣留白。
圖(七)替 L1 PVE 加入連接 vmbr2 的第二張 VirtIO NIC
CPU Type 使用 host,是為了把實體 CPU 的虛擬化能力傳給 L1 PVE。如果 BIOS 或 KVM 沒有允許巢狀虛擬化,後面在 L1 啟動 VM 時就會出現 KVM Virtualisation Not Available 的錯誤。
在 pve01 尚未安裝作業系統前,直接右鍵 VM 101,使用複製(Clone)功能建立 VM 102、103,再分別命名為 pve02、pve03。
三台 VM 的 MAC 位址會由 PVE 自動設定成不同值。這一天先建立管理與 VLAN 中繼(Trunk)兩張網卡。Ceph 與 Corosync 使用的獨立網路會在後續文章再加入。
三台依序啟動並安裝 PVE:
vmbr0 的 NIC。pve01.lab.home、pve02.lab.home、pve03.lab.home。Day 15 才會把一般管理流量、DNS 與預設閘道(Default Gateway)切到 OPNsense。在那之前,還是推薦先讓 IP 固定。

圖(八)三台 L1 PVE 完成安裝。畫面中的 fw01 是後續建立的 VM,不屬於 Day 03 的操作內容。
完成後,pve-l0、pve01、pve02、pve03 都能透過現有路由器網路登入。三台 L1 PVE 的 net0 負責目前的安裝與管理,net1 則已接上 vmbr2,準備承載後續 VLAN Trunk。
pve-l0。vmbr2。pve01、pve02、pve03。下一篇會從檔案系統、分割表與 RAID 開始,介紹 LVM、ZFS、快照、備份與共享儲存各自解決什麼問題。Ceph 使用的網路與空白 OSD 磁碟,則會在 Day 05 完成前置準備。