Proxmox VE QEMU 虚拟机备份与还原操作手册
一、概述
Proxmox VE 使用 vzdump 作为核心备份工具,为 QEMU/KVM 虚拟机和 LXC 容器创建完整备份,备份内容同时包含虚拟机配置和全部磁盘数据。备份文件默认存储在 /var/lib/vz/dump/ 目录。
本手册涵盖 Web 界面和命令行两种操作方式,并补充了备份策略、压缩加密、自动调度、验证测试等最佳实践内容。
二、准备工作
2.1 备份存储配置
在执行备份之前,需要先配置备份存储目标。常见选项包括本地目录、NFS 共享或 Proxmox Backup Server (PBS)。
通过 Web 界面添加存储:数据中心 → 存储 → 添加,选择存储类型并配置参数。
通过命令行添加 NFS 存储:
pvesm add nfs backup-nas --server 192.168.1.50 --export /backups --content backup
通过命令行添加 PBS 存储:
pvesm add pbs pbs-main --server 192.168.1.60 --datastore main \
--username backup@pbs --password YOUR_PASSWORD --content backup
重要建议:不要将备份文件保存在与虚拟机磁盘相同的 RAID 组上,避免单点故障导致备份数据与生产数据同时丢失。
2.2 安装并启用 QEMU Guest Agent(强烈推荐)
为获得更高一致性的备份,应在虚拟机内安装 QEMU Guest Agent。
Debian/Ubuntu:
sudo apt update && sudo apt install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
RHEL/CentOS/Fedora:
sudo dnf install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
Windows:挂载 virtio-win 驱动 ISO,运行 virtio-win-guest-tools.exe 安装。
安装后,在 PVE Web 界面中进入虚拟机 选项 → QEMU Guest Agent → 勾选 启用。
三、备份操作
3.1 三种备份模式对比
vzdump 提供三种备份模式,在一致性和停机时间之间各有取舍:
| 模式 | 工作原理 | 一致性 | 停机时间 | 适用场景 |
|---|---|---|---|---|
| snapshot(快照) | 虚拟机持续运行,通过 QEMU 实时备份 | 高(配合 Guest Agent 可达文件系统一致性) | 无 | 生产环境首选 |
| suspend(暂停) | 短暂暂停虚拟机,备份后恢复 | 高 | 数秒至数分钟 | 快照模式不可用时的备选 |
| stop(停止) | 关闭虚拟机,备份完成后重启 | 最高 | 最长 | 数据完整性要求极高且可接受停机 |
生产环境推荐:
snapshot模式 + QEMU Guest Agent。
3.2 通过 Web 界面备份
- 登录 PVE Web 管理界面,在左侧面板选择对应的节点,点击要备份的虚拟机。
- 进入虚拟机的
备份选项卡,点击立即备份按钮。 - 在弹出的窗口中配置参数:
- 存储:选择备份文件的存放位置(如
local、NFS 或 PBS)。 - 模式:推荐选择
snapshot(快照模式)。 - 压缩:推荐选择
ZSTD。 - 保留策略:可设置保留最近备份数量。
- 点击
开始,在任务日志中查看备份进度。
3.3 通过命令行备份
基本语法:
vzdump <VMID> --mode <模式> --storage <存储位置> --compress <压缩方式>
示例:快照模式备份 VM 100 到 local 存储,使用 ZSTD 压缩:
vzdump 100 --mode snapshot --storage local --compress zstd
示例:停止模式备份(最高一致性):
vzdump 100 --mode stop --storage backup-nfs --compress zstd
示例:暂停模式备份:
vzdump 100 --mode suspend --storage backup-nfs --compress zstd
示例:备份时设置保留策略:
vzdump 100 --storage backup-nfs --prune-backups keep-daily=7,keep-weekly=4,keep-monthly=6
四、还原操作
还原工具是 qmrestore。还原前注意事项:
- 如果还原的目标 VMID 已存在且正在运行,需要先关闭该虚拟机。
- 还原操作会覆盖目标虚拟机当前的所有数据,请提前确认。
4.1 通过 Web 界面还原
- 在 PVE Web 界面中,导航到存放备份文件的存储位置(如
local)。 - 点击该存储的
备份选项卡,列出所有备份文件。 - 选择要还原的备份文件,点击
还原按钮。 - 在弹出的窗口中配置参数:
- VMID:指定还原后的虚拟机 ID(需唯一)。
- 存储:选择磁盘数据恢复到的目标存储。
- 唯一性:勾选后将为新虚拟机生成新的 MAC 地址,避免网络冲突。
- 恢复后启动:勾选后还原完成自动启动虚拟机。
- 点击
还原并确认,等待任务完成。
4.2 通过命令行还原
基本语法:
qmrestore <备份文件路径> <新VMID> [选项]
示例 1:还原为 VMID 101:
qmrestore /var/lib/vz/dump/vzdump-qemu-100-2024_07_24-15_09_44.vma.zst 101
示例 2:还原到指定存储:
qmrestore /path/to/vzdump-qemu-100.vma.zst 101 --storage local-lvm
示例 3:还原后自动启动:
qmrestore /path/to/vzdump-qemu-100.vma.zst 101 --start true
示例 4:从 PBS 实时还原(后台进行,虚拟机立即可用):
qmrestore /path/to/vzdump-qemu-100.vma.zst 101 --live-restore true
4.3 跨节点迁移场景
将虚拟机迁移到另一台 PVE 主机:
1. 在源节点备份虚拟机。
2. 将备份文件拷贝到目标节点:
bash
scp /mnt/pve/dir-133/dump/vzdump-qemu-375-2025_09_10-13_36_56.vma.zst root@目标IP:/mnt/pve/dir-21-212/dump/
3. 在目标节点使用 qmrestore 还原。
五、压缩与加密
5.1 压缩算法选择
| 算法 | 速度 | 文件大小 | 推荐场景 |
|---|---|---|---|
| lzo | 最快 | 最大 | CPU 是瓶颈、存储充足 |
| gzip | 中等 | 中等 | 传统默认选项 |
| zstd | 快(多线程) | 接近 gzip | 推荐,速度与压缩比最佳平衡 |
性能建议:备份到快速存储(如本地 SSD),慢速 NFS 目标会成为整个备份过程的瓶颈。CPU 密集型压缩(如高等级 zstd)或纯软件加密会拖慢节点运行速度。
5.2 备份加密(PBS)
当使用 Proxmox Backup Server 时,可启用客户端加密,即使备份存储被攻破也能保护数据:
# 生成加密密钥
proxmox-backup-client key create /etc/pve/priv/backup-encryption.key
# 配置 PBS 存储使用加密(Web界面:数据中心 > 存储 > 编辑 PBS 存储 > 加密密钥)
六、自动化备份调度
6.1 通过 Web 界面配置
在 数据中心 → 备份 中添加备份任务,可配置:
- 计划时间:如每天凌晨 2:00(0 2 * * *)
- 备份模式:推荐 snapshot
- 压缩方式:推荐 zstd
- 保留策略:设置保留备份数量
- 重复错过:主机离线时错过备份后的补执行策略
6.2 通过配置文件(/etc/pve/jobs.cfg)
vzdump: daily-backup
schedule 0 2 * * *
storage backup-nas
mode snapshot
compress zstd
all 1
mailnotification always
mailto admin@example.com
6.3 生产环境调度建议
- 将每个备份任务的启动时间错开 5-10 分钟,避免多个备份同时运行造成 I/O 拥塞。
- 根据工作负载的 RPO(恢复点目标)确定备份频率:
- 关键系统(数据库、认证服务):每天多次(每 4-6 小时)
- 标准生产:每天一次
- 开发/测试环境:按需或每天一次
七、保留策略(Prune)
7.1 保留参数
Proxmox 支持以下保留参数,可组合使用:
| 参数 | 说明 |
|---|---|
keep-last N |
保留最近 N 个备份 |
keep-daily N |
保留 N 天内的每日备份 |
keep-weekly N |
保留 N 周内的每周备份 |
keep-monthly N |
保留 N 月内的每月备份 |
keep-yearly N |
保留 N 年内的每年备份 |
一个备份只要满足任意一条保留规则即会被保留。
7.2 不同环境的保留策略建议
| 环境类型 | keep-daily | keep-weekly | keep-monthly | keep-yearly |
|---|---|---|---|---|
| 开发/测试 | 3 | 1 | — | — |
| 小型生产 | 7 | 4 | 3 | — |
| 中型企业 | 14 | 8 | 6 | 1 |
| 合规环境(HIPAA/PCI) | 30 | 52 | 12 | 7 |
7.3 命令行设置保留策略
# 在存储上设置保留策略
pvesm set backup-nfs --prune-backups keep-daily=7,keep-weekly=4,keep-monthly=6
7.4 Prune 与 GC 调度
- Prune(修剪)作业:在备份作业完成后运行,建议每天凌晨 3:00
- GC(垃圾回收)作业:在 Prune 之后运行,建议每天凌晨 4:00 或周末
八、备份验证与恢复测试
8.1 验证备份完整性
检查备份日志:
tail -n 200 /var/log/vzdump.log
journalctl -u pvedaemon -n 200 --no-pager
验证备份文件(适用于 tar 格式的配置文件备份):
tar -tzvf /path/to/backup.tar.gz > /dev/null && echo "备份有效"
8.2 定期恢复测试
核心原则:在真正需要恢复之前,永远不知道自己是否能成功恢复。定期测试恢复是备份策略中最重要但最容易被忽视的一环。
推荐做法: 1. 每月至少执行一次恢复测试。 2. 将备份恢复到独立的 VMID(不覆盖生产虚拟机)。 3. 启动恢复的虚拟机,验证应用程序和服务状态。 4. 测试完成后删除测试虚拟机。
自动化测试:可使用脚本从 PBS 仓库中随机选择虚拟机自动执行恢复测试。
九、灾难恢复与 3-2-1 策略
9.1 灾难恢复规划
在规划备份策略之前,应先明确恢复需求:
- RTO(恢复时间目标) :系统可接受的最长停机时间
- RPO(恢复点目标) :可接受的最大数据丢失量
根据 RTO/RPO 确定备份频率、存储位置和验证频率。
9.2 3-2-1 备份策略
- 3 份数据副本(1 份生产 + 2 份备份)
- 2 种不同的存储介质
- 1 份备份存放在异地(Offsite)
9.3 远程灾备
- 在远程灾备站点保存虚拟机备份副本
- 可使用
rclone或 S3 将备份同步到云端 - 对于 PBS,可利用其“即时还原”(Live Restore)功能直接从备份启动 VM,同时后台迁移数据
十、常用命令速查
| 操作 | 命令 |
|---|---|
| 快照模式备份 | vzdump <VMID> --mode snapshot --storage <存储> --compress zstd |
| 停止模式备份 | vzdump <VMID> --mode stop --storage <存储> --compress zstd |
| 带保留策略备份 | vzdump <VMID> --storage <存储> --prune-backups keep-daily=7,keep-weekly=4 |
| 还原虚拟机 | qmrestore <备份文件路径> <新VMID> |
| 还原到指定存储 | qmrestore <备份文件> <VMID> --storage <存储> |
| 还原后自动启动 | qmrestore <备份文件> <VMID> --start true |
| PBS 实时还原 | qmrestore <备份文件> <VMID> --live-restore true |
| 添加 NFS 存储 | pvesm add nfs <名称> --server <IP> --export <路径> --content backup |
| 添加 PBS 存储 | pvesm add pbs <名称> --server <IP> --datastore <名称> --username <用户> |
| 设置存储保留策略 | pvesm set <存储名称> --prune-backups keep-daily=7,keep-weekly=4 |
| 查看备份日志 | tail -n 200 /var/log/vzdump.log |
十一、最佳实践总结
- 生产环境始终使用 snapshot 模式 + QEMU Guest Agent,实现零停机备份。
- 压缩算法首选 ZSTD,在速度和压缩率之间取得最佳平衡。
- 备份存储与生产存储分离,避免单点故障。
- 配置自动化备份调度,根据 RPO 确定备份频率。
- 设置合理的保留策略,平衡存储成本与恢复需求。
- 定期执行恢复测试,每月至少一次。
- 遵循 3-2-1 备份策略,确保异地有备份副本。
- 错开备份任务启动时间,避免 I/O 拥塞。
- 对核心数据库,除虚拟机级备份外,还应使用数据库原生工具(如
mysqldump)进行逻辑备份。 - 备份完成后检查日志,确认任务成功执行。