本页内容
Proxmox VE 能把一台独立服务器变成 KVM 虚拟机和 LXC 容器的宿主机,可通过 Web 界面或命令行进行管理。本指南介绍如何在 FlexDedi 服务器上安装 Proxmox VE,以及在拥有公网 IP 的机器上需要重点关注的配置:软件源、更新、存储、网络、防火墙和备份。
文中命令以基于 Debian 13「Trixie」的 Proxmox VE 9 为准。凡是 Proxmox VE 8(Debian 12「Bookworm」)有所不同的地方,也会一并给出 8.x 的写法。所有命令均以 root 身份在宿主机上执行。
选择安装方式
一键镜像。 Proxmox VE 与 Ubuntu、Debian、AlmaLinux、Rocky Linux 和 Windows Server 一样,都在系统镜像库中。下单或在控制面板中重装系统时选择它,服务器启动后即已装好 Proxmox VE。在创建客户机(虚拟机和容器)之前,请先确认它采用的是哪种存储布局,具体方法见下文的存储部分。
通过 KVM 控制台使用官方 ISO。 如果你想自行选择文件系统、磁盘布局或具体版本,就选这种方式。HTML5 KVM 控制台可以引导任意 ISO,挂载虚拟介质的方法见 IPMI 与 KVM 文档。
第三种方式是先安装 Debian,再添加 Proxmox 软件包。这同样可行,但步骤更多,只有在磁盘布局比较特殊时才值得采用。
通过 ISO 安装
- 从 Proxmox 官网下载最新的 Proxmox VE 9 ISO,并将其 SHA-256 校验和与官方公布的值进行比对。
- 在控制面板中打开 KVM 控制台,将 ISO 挂载为虚拟介质,然后从该介质重启服务器。
- 在目标磁盘界面中打开 Options,选择 zfs (RAID1) 并勾选两块 NVMe 硬盘。在 Pro 64 等配备四块硬盘的服务器上,选择 zfs (RAID10) 即可用上全部四块。
- 设置国家、时区和键盘布局,然后设置一个强 root 密码,并填写用于接收告警的电子邮件地址。
- 在网络界面中选择承载公网的网卡,并按照控制面板中显示的信息,填写服务器的 IPv4 地址及前缀长度、网关和 DNS 服务器。主机名请使用完全限定域名,例如
pve1.example.com。 - 确认摘要信息后开始安装,完成后卸载 ISO 并重启。
然后在浏览器中访问 https://YOUR_SERVER_IP:8006,以 root 身份、选择 Linux PAM 认证域登录。在你替换证书之前,浏览器会对自签名证书发出警告;内置的 ACME 客户端可以申请 Let's Encrypt 证书(Datacenter → ACME,然后在节点的 Certificates 面板中操作)。
切换到无订阅软件源
全新安装的系统会让 APT 指向企业版软件源,而企业版源需要订阅密钥;没有密钥时,apt update 会报授权错误。没有订阅的主机应改用 pve-no-subscription 软件源。Proxmox 建议生产环境使用企业版软件源,因为无订阅源的软件包在发布前经过的测试较少。
在 Proxmox VE 9 上,软件源采用 deb822 的 .sources 格式。在 /etc/apt/sources.list.d/pve-enterprise.sources 的条目中添加 Enabled: no;如果 /etc/apt/sources.list.d/ceph.sources 指向 enterprise.proxmox.com,也做同样的修改。修改后的企业版源文件如下:
Types: deb
URIs: https://enterprise.proxmox.com/debian/pve
Suites: trixie
Components: pve-enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
Enabled: no然后添加无订阅软件源:
cat > /etc/apt/sources.list.d/proxmox.sources <<'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF在 Proxmox VE 8 上,软件源是单行格式的 .list 文件:
sed -i 's/^deb/# deb/' /etc/apt/sources.list.d/pve-enterprise.list
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
> /etc/apt/sources.list.d/pve-no-subscription.list如果 /etc/apt/sources.list.d/ceph.list 使用的是企业版地址,也用同样的方法将其注释掉。以上所有修改也可以在 Web 界面中节点的 Updates → Repositories 面板中完成。没有订阅时,登录时还会弹出「No valid subscription」提示。该提示仅供参考,如果通过修改界面文件来隐藏它,每次更新后都会失效。
更新宿主机
apt update
apt full-upgrade
pveversion
reboot # when a new kernel was installed更新 Proxmox VE 时,请始终使用 apt full-upgrade(或 apt dist-upgrade),切勿只用 apt upgrade。Proxmox 的新版本经常会新增或替换依赖,不完整的升级可能让宿主机处于不一致的状态。
存储:在 NVMe 上使用 ZFS 还是 LVM-thin
安装程序会生成以下两种布局之一。使用 ZFS 时,系统位于 rpool 存储池中,客户机磁盘存放在 local-zfs 存储中。使用 ext4 或 XFS 时,名为 pve 的卷组中包含一个名为 data 的精简池(thin pool),以 local-lvm 的形式提供。用以下命令查看当前布局:
pvesm status
zpool status # ZFS installs
lvs pve # LVM-thin installs| ZFS 镜像 | LVM-thin | |
|---|---|---|
| 两块 NVMe 硬盘之间的冗余 | 内置(镜像或 RAID10) | 本身不提供 |
| 校验和与自我修复 | 支持 | 不支持 |
| 快照与精简配置 | 支持 | 支持 |
| Proxmox 节点间存储复制 | 支持 | 不支持 |
| 内存占用 | ARC 缓存,默认设有上限 | 极少 |
| 开销 | 较高(写时复制、校验和) | 低 |
在配备两块 NVMe 硬盘的服务器上,ZFS 镜像是理所当然的默认选择。它是 Proxmox 唯一支持的本地软 RAID,还能检测出静默数据损坏,而普通镜像只会把这类损坏原样复制过去。单盘上的 LVM-thin 简单、快速,但没有冗余;而且 Proxmox 不支持将它运行在 Linux mdadm RAID 之上。
从 Proxmox VE 8.1 起,安装程序会把 ZFS ARC 限制为内存的 10%,且最多 16 GiB。在内存为 384 GB 的 Pro 32 上,这一上限就是 16 GiB,其余内存都留给客户机。如需修改,例如改为 32 GiB:
echo "options zfs zfs_arc_max=34359738368" > /etc/modprobe.d/zfs.conf
update-initramfs -u -k all # required when root is on ZFS
echo 34359738368 > /sys/module/zfs/parameters/zfs_arc_max # apply without a reboot在四块硬盘的服务器上,除了 RAID10,还可以把系统安装在由两块硬盘组成的镜像上,再用另外两块硬盘为客户机单独组建一个镜像。创建该存储池时,请使用持久化的磁盘 ID,而不是 /dev/nvme 设备名,因为后者在每次启动后可能发生变化:
ls -l /dev/disk/by-id/ | grep nvme
zpool create -o ashift=12 tank mirror /dev/disk/by-id/nvme-DISK_C /dev/disk/by-id/nvme-DISK_D
pvesm add zfspool tank-vm --pool tank --content images,rootdir --sparse 1网络:公网 IP 与私有 VLAN
安装完成后,/etc/network/interfaces 中会有一个网桥 vmbr0,它在物理端口上承载宿主机的公网 IP。接入 vmbr0 的客户机直接位于公网上,只有当它们拥有网络所接受的公网地址时才能正常工作。服务器自带的那一个 IPv4 地址,通常由客户机通过 NAT 共享;而服务器的 /64 地址块可以提供公网 IPv6,配置方法见 IPv6 网络。
为客户机配置 NAT
创建一个不绑定物理端口的网桥,并将其子网伪装(masquerade)到公网网桥之后。把以下内容追加到 /etc/network/interfaces:
auto vmbr1
iface vmbr1 inet static
address 10.10.10.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1为客户机启用 Proxmox 防火墙时,这两行 CT --zone 配置可确保连接跟踪正常工作。用 ifreload -a 应用更改,然后为每台客户机分配 10.10.10.0/24 网段内的静态地址,网关设为 10.10.10.1。如需对外发布服务,在同一配置段中添加一对相应的规则,把端口转发到客户机:
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8443 -j DNAT --to-destination 10.10.10.20:443
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 8443 -j DNAT --to-destination 10.10.10.20:443如果客户机需要独立的公网 IPv4 地址,可以申请额外的 IPv4。请向技术支持确认这些地址是路由到你的主 IP,还是以直连(on-link)方式分配,因为这决定了客户机是直接接入 vmbr0,还是位于路由网桥之后。
服务器之间的私有 VLAN
免费的内网可以把你在同一机房的 FlexDedi 服务器连接起来,内部流量不计费。集群通信、热迁移、备份和复制都应走内网,完全不经过公网接口。以下示例假设 VLAN 100 位于端口 eno1 上;请根据内网文档替换为实际的网卡和 VLAN ID:
auto eno1.100
iface eno1.100 inet manual
auto vmbr2
iface vmbr2 inet static
address 10.0.0.11/24
bridge-ports eno1.100
bridge-stp off
bridge-fd 0如果内网以不带标签(untagged)的方式接入第二个端口,就改为把该端口填入 bridge-ports。接入 vmbr2 的客户机可以通过内网访问你的其他服务器;Proxmox 集群的 corosync 通信也应走这个网络,而不是公网。集群对延迟要求很高,因此每个集群都应部署在同一机房内。
防火墙
Proxmox 防火墙分为数据中心、节点和客户机三个层级,默认处于禁用状态。启用之前,请保持一个到宿主机的 SSH 会话,并随时准备好 KVM 控制台,以免操作失误把自己锁在外面。
在拥有公网地址的主机上,有两项默认设置需要特别注意。local_network 别名是根据宿主机自身所在的子网自动检测的,因此在公网 IP 上,它可能包含不受你控制的地址,Proxmox 建议在这类主机上覆盖它。management IP 集合列出了允许访问 Web 界面和 SSH 的地址。一个最简的 /etc/pve/firewall/cluster.fw 如下:
[OPTIONS]
enable: 1
policy_in: DROP
[ALIASES]
local_network 10.0.0.0/24 # private VLAN, not the public subnet
[IPSET management]
203.0.113.10 # admin workstation or VPN exit
[RULES]
IN Ping(ACCEPT)pve-firewall localnet # shows the local network the firewall uses
pve-firewall status然后在每台客户机的 Firewall → Options 中启用防火墙,只放行该客户机对外提供服务的端口。Proxmox 防火墙和 FlexDedi 始终开启的 DDoS 防护各司其职:前者决定哪些服务可以被访问,后者在上游过滤流量型攻击。两者缺一不可。
备份到另一台服务器
RAID 和 ZFS 镜像能防范硬盘故障,但防不了虚拟机被误删、升级出错或宿主机被入侵。请备份到另一台机器上。
Proxmox Backup Server(PBS)是最自然的备份目标:它支持虚拟机和容器的增量、去重备份,以及客户端加密、校验任务和快速恢复。在同一机房的另一台服务器上,通过 KVM 控制台用 ISO 安装 PBS,这样备份流量就会走私有 VLAN。Storage 264 可为它提供 264 TB 裸磁盘容量;规模较小的环境用一台 Core 16 就够了。Proxmox 建议数据存储(datastore)使用 SSD;如果使用机械硬盘存储池,通常的折中方案是用镜像的 NVMe 作为存放元数据的特殊设备(special device)。
在 Proxmox VE 中,通过 Datacenter → Storage → Add → Proxmox Backup Server 添加备份服务器,填写它的内网地址、数据存储名称、专用的备份用户以及服务器证书指纹。在 Datacenter → Backup 中设置定时备份任务。在命令行中执行一次性备份:
vzdump 100 --storage pbs1 --mode snapshot如需异地副本,可以在另一个机房的第二台 PBS 上运行同步任务。内网无法跨机房,因此这份副本会通过 TLS 加密穿越公网;如果不希望异地站点能读取备份内容,请启用客户端加密。流量不限量,所以在地域之间复制备份不会产生任何传输费用。最后,一定要测试恢复:从未恢复过的备份,只是一种假设。
在 FlexDedi 上运行
Pro 32($749/月)非常适合作为第一台 Proxmox 宿主机:32 个核心,12 通道共 384 GB DDR5-6000 ECC 内存,以及可组建 ZFS 镜像的 2 × 3.84 TB NVMe Gen5。Pro 64($1,349/月)核心数翻倍,配备 768 GB 内存、四块可组建 ZFS RAID10 的 NVMe 硬盘和 2 × 25 Gbps 端口。Core 16($299/月)可用于实验环境或运行少量虚拟机。无论选择哪一款,都可以搭配 Storage 264($699/月)作为备份服务器;多节点架构请参阅私有云。