PVE 的本质
Proxmox VE(Proxmox Virtual Environment)是基于 Debian 的虚拟化平台,使用 Web 界面和命令行统一管理虚拟机、LXC 容器、存储、网络、备份和集群。
- KVM 虚拟机(VM):提供完整的虚拟硬件,适合运行 Windows、Linux 等独立操作系统。
- LXC 容器(CT):共享 PVE 宿主机内核,启动快、开销小,适合运行 Linux 服务。
- 节点(Node):一台安装 PVE 的物理主机。
- 集群(Cluster):多个 PVE 节点组成的管理和高可用域。
- 存储(Storage):保存虚拟磁盘、容器 rootfs、ISO、模板、备份和片段配置。
常用入口:
首次登录使用 root@pam 和安装时设置的密码。自签名证书会触发浏览器告警,生产环境可以替换为受信任证书。
安装前准备
1 2 3 4 5 6 7 8 9 10 11
| grep -E --color 'vmx|svm' /proc/cpuinfo
free -h lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS lspci
cat /etc/os-release hostnamectl
|
安装前确认以下事项:
- BIOS/UEFI 已开启 Intel VT-x 或 AMD-V,以及 IOMMU(需要 PCI 直通时)。
- PVE 节点使用固定 IP,主机名能够通过 DNS 或
/etc/hosts 解析。
- 系统盘、虚拟机数据盘和备份盘尽量分离,避免单盘故障同时影响运行和备份。
- 安装 PVE ISO 会重新分区并清空目标磁盘,执行前确认安装盘名称。
系统信息和软件源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| pveversion -v cat /etc/debian_version
cat /etc/apt/sources.list.d/pve-enterprise.list cat /etc/apt/sources.list.d/pve-no-subscription.list
apt update
apt full-upgrade
reboot
|
没有企业订阅时,可以使用 no-subscription 源。不要同时启用互相冲突的 enterprise 和 no-subscription 源;修改软件源后检查 apt update 是否报错。
节点和 Web 服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| pvesh get /nodes pvesh get /nodes/$(hostname)/status
systemctl status pveproxy systemctl status pvedaemon systemctl status pvestatd systemctl status corosync
systemctl restart pveproxy systemctl restart pvedaemon
journalctl -u pveproxy -f journalctl -u pvedaemon -f journalctl -u pvestatd -f
|
PVE 的配置主要位于 /etc/pve,该目录由 pmxcfs 管理。集群模式下不要直接用编辑器批量改动其中的文件,优先使用 Web 界面、pvesh、qm 和 pct。
网络配置
PVE 常用 Linux Bridge(通常名为 vmbr0)把物理网卡连接给虚拟机和容器。物理网卡一般作为 bridge port,不直接配置业务 IP。
1 2 3 4 5 6 7 8 9 10
| ip -br addr bridge link ip route
cat /etc/network/interfaces
ifreload -a
|
静态 IP 的典型配置(按实际网卡名和网段修改):
1 2 3 4 5 6 7 8 9 10 11 12 13
| auto lo iface lo inet loopback
auto eno1 iface eno1 inet manual
auto vmbr0 iface vmbr0 inet static address 192.168.1.10/24 gateway 192.168.1.1 bridge-ports eno1 bridge-stp off bridge-fd 0
|
1 2 3 4 5 6 7
| ip link show type bridge bridge fdb show br vmbr0
ping -c 4 192.168.1.1 getent hosts download.proxmox.com
|
远程修改 /etc/network/interfaces 有断网风险。应准备本地控制台或带外管理,并在执行 ifreload -a 前确认网关、掩码和物理网卡名称。
存储
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| pvesm status cat /etc/pve/storage.cfg
zpool status zfs list
pvs vgs lvs
df -h df -ih
|
常见存储类型:
local:目录存储,通常位于 /var/lib/vz,可保存 ISO、模板、备份和磁盘镜像。
local-lvm:LVM-thin 存储,适合虚拟磁盘,不适合直接保存 ISO 和备份文件。
Directory:挂载额外磁盘、NFS 或 SMB 后,以目录形式加入 PVE。
ZFS:提供校验、快照和镜像/RAID 能力,但需要足够内存,且不建议再叠加硬件 RAID。
1 2 3 4 5 6 7 8 9
| du -xhd1 /var/lib/vz | sort -h
pvesm list local pvesm list local-lvm
vgscan
|
不要直接删除正在使用的虚拟磁盘文件。先确认 VM/CT 配置、快照和备份,再通过 qm disk unlink、qm destroy 或 Web 界面执行。
虚拟机(VM)管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| qm list
qm config 100
qm create 100 --name debian-01 --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
qm set 100 --ide2 local:iso/debian.iso,media=cdrom qm set 100 --boot 'order=ide2;scsi0'
qm set 100 --scsihw virtio-scsi-single qm set 100 --scsi0 local-lvm:32
qm start 100 qm shutdown 100 qm stop 100 qm reboot 100
qm status 100 pvenode task list
qm terminal 100
|
1 2 3 4 5 6 7 8 9
| qm set 100 --cores 4 --memory 4096 qm set 100 --net0 virtio=AA:BB:CC:DD:EE:01,bridge=vmbr0,firewall=1
qm resize 100 scsi0 +20G
qm disk list 100
|
虚拟机内扩容通常还需要执行分区、LVM 或文件系统扩容。例如 ext4 文件系统可以在确认设备后使用 resize2fs,XFS 使用 xfs_growfs。缩容比扩容风险高,不建议直接操作原盘。
LXC 容器(CT)管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| pct list
pct config 200
pveam update pveam available --section system
pveam download local debian-12-standard_12.7-1_amd64.tar.zst
pct create 200 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \ --hostname app-01 --cores 2 --memory 1024 --swap 512 \ --rootfs local-lvm:8 --net0 name=eth0,bridge=vmbr0,ip=dhcp \ --password 'change-this-password'
pct start 200 pct shutdown 200 pct stop 200 pct enter 200
pct exec 200 -- ip addr
|
特权容器(privileged)与非特权容器(unprivileged)权限模型不同。除非明确需要宿主机设备或特殊内核能力,优先使用非特权容器;挂载目录、Docker-in-LXC、NFS 和设备直通要单独评估安全边界。
模板、克隆和 Cloud-Init
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| qm template 100
qm clone 100 101 --name debian-02 --full 1 --storage local-lvm
qm cloudinit dump 101 user qm cloudinit dump 101 network
qm set 101 --ciuser admin --cipassword 'change-this-password' qm set 101 --sshkeys ~/.ssh/id_ed25519.pub qm set 101 --ipconfig0 ip=192.168.1.21/24,gw=192.168.1.1
|
Cloud-Init 需要客户机镜像本身支持,并且虚拟机挂载 cloudinit 驱动器。克隆后检查 MAC 地址、主机名、IP 和 SSH 主机密钥是否已重新生成。
快照、备份和恢复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| qm snapshot 100 before-upgrade --description '升级前快照' qm listsnapshot 100 qm rollback 100 before-upgrade qm delsnapshot 100 before-upgrade
pct snapshot 200 before-upgrade pct listsnapshot 200
vzdump 100 --storage backup --mode snapshot --compress zstd vzdump 200 --storage backup --mode snapshot --compress zstd
ls -lh /var/lib/vz/dump/
qmrestore /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst 110 --storage local-lvm
pct restore 210 /var/lib/vz/dump/vzdump-lxc-200-*.tar.zst --storage local-lvm
|
快照不是备份:快照通常依赖原存储,删除底层磁盘或存储故障时可能一起丢失。重要数据至少保留一份独立存储或远端备份,并定期执行恢复演练。
集群和高可用基础
1 2 3 4 5 6 7 8 9 10 11 12 13
| pvecm status pvecm nodes
pvecm create lab-cluster
pvecm add 192.168.1.10
systemctl status corosync corosync-cfgtool -s
|
集群节点需要稳定、低延迟、可互通的网络和唯一主机名。加入集群前应确认节点没有旧的集群配置;生产环境不要在网络不稳定或没有仲裁条件时启用高可用。
防火墙和权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| pve-firewall status pve-firewall compile
nft list ruleset
pveum user list pveum role list pveum token list root@pam
pveum user add monitor@pve pveum acl modify / --user monitor@pve --role PVEAuditor
|
PVE 防火墙有 Datacenter、Node 和 VM/CT 三个层级。放行 8006、22、集群通信和备份所需端口前,先明确访问来源;不要为了排障长期关闭所有防火墙。
硬件直通和常见检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| dmesg | grep -Ei 'iommu|dmar|amd-vi'
find /sys/kernel/iommu_groups/ -type l
qm status 100 qm unlock 100 pvenode task list --source all
journalctl -b -p warning dmesg -T | tail -n 100
|
qm unlock 只应在确认没有备份、迁移或快照任务仍在运行时使用。任务中断后先检查 pvenode task list 和对应日志,避免并发操作损坏虚拟磁盘。
常见排障路径
- Web 页面打不开:检查
ip addr、ip route、systemctl status pveproxy,再查看 journalctl -u pveproxy。
- 虚拟机无法启动:执行
qm config <vmid>、qm status <vmid>,检查存储状态、磁盘锁、启动顺序和任务日志。
- 存储显示为 unknown/offline:执行
pvesm status、df -h、mount,确认挂载点、NFS/SMB 连通性和权限。
- 虚拟机无网络:检查
vmbr0、物理网卡链路、VLAN tag、客户机网卡配置和上游交换机端口。
- 迁移失败:确认两端节点时间、DNS、集群状态、CPU 兼容性、共享存储和 SSH/集群通信正常。
- 备份失败:检查备份目标空间、
vzdump 任务日志、快照模式兼容性和客户机磁盘是否存在错误。
1 2 3 4 5 6 7 8 9
| systemctl --failed
pvenode task list --source all tail -n 200 /var/log/pve/tasks/index
cat /var/log/pve/tasks/<UPID>
|
经验总结
- PVE 宿主机尽量只承担虚拟化和基础管理职责,业务服务放到虚拟机或 LXC 中。
- 生产节点使用固定 IP、可靠 DNS/NTP 和独立的管理网络,先解决基础设施再排查虚拟机问题。
- 修改网络、存储和集群配置前,先备份
/etc/pve 相关配置并准备本地控制台。
- 快照用于短期回滚,备份用于灾难恢复;重要备份必须放在独立存储并定期验证可恢复性。
- 所有涉及
qm destroy、pct destroy、磁盘删除、存储格式化和 zpool 操作的命令,都要先核对节点、VMID、磁盘和目标路径。