如果你已经装好了 KVM 基础环境,下一步最自然的选择就是 Proxmox VE(简称 PVE)。它把 KVM + libvirt 包装成一个完整的 Web 管理平台,集群、热迁移、高可用、备份全都有。本文带你从零部署 PVE 集群,覆盖安装、配置、虚拟机管理、Live Migration、高可用和备份恢复。
一、为什么选择 Proxmox VE
核心优势:
- 基于 Debian,底层就是 Ubuntu/Debian,软件生态完善
- 完全开源免费(可选付费订阅获取企业仓库)
- 支持 KVM 虚拟机 + LXC 容器两种模式
- 原生支持 Ceph 分布式存储
二、环境准备
2.1 系统要求
CPU: 支持 Intel VT-x 或 AMD-V(必须开启)
内存: ≥ 4GB(推荐 8GB+)
磁盘: ≥ 32GB(推荐 SSD,虚拟机镜像另算)
网卡: 至少 1 块以太网卡(集群建议双网卡)
2.2 安装方式
PVE 使用专用 ISO 安装,安装过程会格式化整块磁盘,所以不要装在已有系统的磁盘上。
# 1. 下载 ISO
# https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso
# 2. 制作启动 U 盘(Windows 用 Rufus,Linux 用 dd)
dd if=proxmox.iso of=/dev/sdX bs=4M status=progress oflag=direct
# 3. 从 U 盘启动,按向导完成安装
# - 设置 root 密码
# - 配置管理 IP、网关、DNS
# - 完成安装,重启
安装后通过浏览器访问:
https://<服务器IP>:8006
首次登录账号:root@pam,提示设置订阅源时选择 No-Subscription(免费版)。
三、初始配置
3.1 更换软件源(国内推荐)
# 编辑源配置
nano /etc/apt/sources.list.d/pve-enterprise.list
# 注释掉企业源(免费版不用付费仓库)
# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
# 添加社区源
deb http://mirrors.aliyun.com/proxmox/debian/pve bookworm pve
# 更新软件包
apt update && apt upgrade -y
3.2 配置网络
# 查看当前网络
ip addr show
# PVE 默认网络配置在 /etc/network/interfaces
cat /etc/network/interfaces
典型桥接网络配置:
auto lo
iface lo inet loopback
iface ens18 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
bridge-ports ens18
bridge-stp off
bridge-fd 0
# 应用配置
systemctl restart networking
# 验证桥接
brctl show
3.3 创建存储
# 查看现有存储
ls /var/lib/vz/dump # 默认备份目录
ls /var/lib/vz/template/iso # ISO 镜像目录
# 添加本地数据存储
mkdir -p /data/images
ln -s /data/images /var/lib/vz/images # 可选:软链接
# 在 Web UI 中配置:
# Datacenter → Storage → Add → Dir
# 路径: /data/images, 内容: Images, VZDump, Containers
四、创建虚拟机
4.1 上传 ISO 镜像
# 方式一:SCP 上传到 PVE
scp ubuntu-24.04.iso root@pve-ip:/tmp/
# 复制到 ISO 存储目录
cp /tmp/ubuntu-24.04.iso /var/lib/vz/template/iso/
# 方式二:直接在 Web UI 上传
# 存储 → local → Content → Upload
4.2 创建 KVM 虚拟机(命令行)
# 创建虚拟机(ID 必须唯一,1-999999)
qm create 100 \
--name ubuntu-web \
--memory 4096 \
--cores 4 \
--cpu host \
--net0 virtio,bridge=vmbr0
# 添加硬盘(50GB QCOW2)
qm set 100 --scsi0 local-zfs:50,format=qcow2
# 挂载 ISO 光驱
qm set 100 --ide2 local-zfs:iso/ubuntu-24.04.iso,media=cdrom
# 启用云初始化(免安装自动配置)
qm set 100 --ipconfig0 ip=dhcp
qm set 100 --ciuser admin
qm set 100 --password 'YourPassword123!'
# 启动虚拟机
qm start 100
# 查看状态
qm status 100
4.3 创建虚拟机(Web UI)
Web UI 更直观,适合日常操作:
1. 点击对应节点 → Create VM
2. 常规: 设置 VM ID 和名称
3. 系统: 选择操作系统(Linux 6.x / 7.x)
4. 硬件: 分配 CPU、内存、硬盘、网络
5. 选项: 启动顺序、串行控制台
6. 确认: 点击创建
7. 启动后点击控制台安装系统
4.4 创建 LXC 容器(轻量级)
LXC 共享宿主内核,启动秒级,资源占用极低:
# 创建 LXC 容器
pct create 200 \
/var/lib/vz/template/cache/ubuntu-24.04-standard_24.04-1_amd64.tar.zst \
--hostname lxc-web \
--memory 2048 \
--swap 512 \
--cores 2 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp
# 启动容器
pct start 200
# 进入容器控制台
pct enter 200
# 列出所有容器
pct list
KVM vs LXC 选择:
五、集群管理
5.1 创建集群
# 在第一节点上创建集群(集群名自定义)
pvecm create mycluster
# 查看集群状态
pvecm status
pvecm nodes
# 在其他节点上加入集群
# SSH 登录到第二节点,执行:
pvecm add <第一节点IP>
# 输入 root 密码后等待加入完成
# 加入后检查集群状态
pvecm status
5.2 集群配置要点
# 1. 配置集群存储(共享存储)
# 如果有 NFS/iSCSI,在第一个节点配置后会自动同步
# 2. 配置集群网络
# PVE 默认使用 54.x 端口段进行节点间通信
# 确保防火墙放行:
# TCP/UDP 54.0.0.0/8 (集群通信)
# 3. 验证集群健康
pvecm status
pvecm expected
# 4. 查看集群日志
journalctl -u pve-cluster -f
5.3 虚拟机高可用(HA)
# 为虚拟机启用 HA
pvecm addnode <新节点名>
qm ha stop 100 # 先停止虚拟机
qm modify 100 --ha 1 # 启用 HA
# 查看 HA 状态
pvesh get /cluster/ha/status
# 模拟节点故障(测试 HA 是否生效)
qm shutdown 100 # 关机测试
# HA 会自动在其他节点重启 100 号虚拟机
六、Live Migration(热迁移)
热迁移允许在不停机的情况下将虚拟机从一台物理服务器迁移到另一台,需要共享存储。
6.1 热迁移步骤
# 方式一:命令行迁移
qm migrate 100 <目标节点名> --online
# 示例
qm migrate 100 pve-node-02 --online
# 方式二:Web UI 迁移
# 虚拟机 → 迁移 → 选择目标节点 → 在线迁移
# 查看迁移状态
qm monitor 100
# 输入:query-migrate
6.2 共享存储配置(NFS 示例)
# 在所有 PVE 节点上挂载 NFS
mount -t nfs <NFS服务器IP>:/data/images /var/lib/vz/images
# 配置持久化挂载
echo "<NFS服务器IP>:/data/images /var/lib/vz/images nfs defaults 0 0" >> /etc/fstab
# 在 Web UI 中添加 NFS 存储
# Datacenter → Storage → Add → NFS
# Content 选择: Images, VZDump, Containers
七、备份与恢复
7.1 手动备份
# 备份指定虚拟机
vzdump 100 --compress zstd --mode snapshot
# 备份整个节点的所有虚拟机
vzdump --all --compress zstd --mode snapshot
# 备份到远程服务器(SSH)
vzdump 100 --storage remote-backup --compress zstd
# Web UI 备份
# 节点 → Backup → Backup Now
# 选择虚拟机、目标存储、压缩方式
7.2 定时备份
# 编辑定时备份配置
nano /etc/pve/jobs/vzdump.cfg
# 示例:每天凌晨 2 点备份所有虚拟机
# 这是通过 cron 实现的
crontab -e
# 添加定时任务
0 2 * * * /usr/bin/vzdump --all --compress zstd --mode snapshot --storage local-backup
7.3 恢复备份
# 方式一:Web UI 恢复
# 备份存储 → 选择备份文件 → Restore
# 方式二:命令行恢复
# 列出所有备份
vzdump --list
# 从备份文件恢复
qmrestore /var/lib/vz/dump/vzdump-qemu-100-2024_01_01-02_00_00.vzdump.gz 101
# 方式三:恢复 LXC 容器
pct restore 201 /var/lib/vz/dump/vzdump-lxc-200-2024_01_01-02_00_00.tar.zst
八、日常运维
8.1 常用命令速查
# === 虚拟机管理 ===
qm list # 列出所有 KVM 虚拟机
qm status <vmid> # 查看状态
qm start <vmid> # 启动
qm stop <vmid> # 优雅停止
qm shutdown <vmid> # 优雅关机
qm destroy <vmid> # 强制删除(不可恢复!)
qm restart <vmid> # 重启
# === 容器管理 ===
pct list # 列出所有 LXC 容器
pct start <cid> # 启动容器
pct stop <cid> # 停止容器
pct enter <cid> # 进入容器控制台
# === 集群管理 ===
pvecm status # 集群状态
pvecm nodes # 节点列表
pvecm expected # 期望节点列表
pmdeploy status # 部署状态
# === 存储管理 ===
ls /var/lib/vz/dump # 备份目录
ls /var/lib/vz/template/iso # ISO 目录
df -h # 磁盘空间
# === 日志查看 ===
journalctl -u pve-cluster -f
journalctl -u pve-firewall -f
tail -f /var/log/syslog
8.2 监控与告警
# 查看资源使用
pvesm status # 存储状态
pct stats <cid> # 容器资源使用
qm stats <vmid> # 虚拟机资源使用
# Web UI 实时监控
# Dashboard 页面可实时查看 CPU、内存、网络、磁盘 I/O
# 配置邮件告警(可选)
# Datacenter → Alerts → Email
8.3 系统更新
# PVE 更新(建议在低峰期执行)
apt update && apt upgrade -y
# 更新后重启
reboot
# Web UI 更新
# Datacenter → Updates → Check for Updates
九、常见问题排查
9.1 虚拟机无法启动
# 查看错误日志
journalctl -u pve-cluster -n 50
qm monitor 100
# 检查磁盘空间
df -h /var/lib/vz/images
# 检查 QEMU 进程
ps aux | grep qemu
9.2 网络不通
# 检查桥接配置
brctl show
ip addr show vmbr0
# 检查防火墙
pvefirewall rules
pvefirewall reload
# 检查 VM 网络配置
qm config 100 | grep net
9.3 集群节点失联
# 检查节点间通信
ping <其他节点IP>
# 检查 corosync 服务
systemctl status corosync
pvecm status
# 重新同步配置
pvecm sync
9.4 存储不可用
# 检查存储状态
pvesm status
# 检查 NFS 挂载
mount | grep nfs
# 修复权限
chown -qemu:qemu /data/images
十、最佳实践总结
10.1 安全加固
# 1. 修改默认端口(可选)
# 编辑 /etc/pve/pveproxy.conf,修改 listen 端口
# 2. 配置防火墙
pvefirewall enable
pvefirewall rule add all -p tcp --dport 22 -j ACCEPT
pvefirewall rule add all -p tcp --dport 8006 -j ACCEPT
# 3. 定期更新系统
# 配置自动安全更新(可选)
# 4. 限制 root 远程登录
# 创建普通用户并授权
pveum user add admin@pam --password
pveum ACL modify / -user admin@pam -role Administrator
10.2 性能优化
# 1. 启用 KSM(同页内存合并)
echo 1 > /sys/kernel/mm/ksm/run
# 2. 使用 virtio 驱动(创建 VM 时默认启用)
# 3. 启用 IO 线程
qm set 100 --iothread 1
# 4. 调整 I/O 调度器
echo deadline > /sys/block/sda/queue/scheduler
# 5. 启用透明大页面
echo never > /sys/kernel/mm/transparent_hugepage/enabled
10.3 架构建议
单机环境(1-3 节点):
PVE + 本地存储 + 手动备份
中小集群(4-10 节点):
PVE 集群 + NFS/iSCSI 共享存储 + 定时备份
大规模集群(10+ 节点):
PVE 集群 + Ceph 分布式存储 + HA + 异地备份
十一、下一步
掌握 PVE 之后,你可以继续探索:
Ansible + PVE: 自动化管理虚拟机生命周期
Ceph 深度配置: 分布式存储高可用方案
PVE API 开发: 对接自研运维平台
GPU 直通: 虚拟机内使用 NVIDIA/AMD 显卡
SDN 软件定义网络: 复杂网络拓扑配置
评论