在 Proxmox VE(PVE)环境中进行宿主机迁移时,正确区分“系统数据”和“虚拟机数据”是关键。宿主机应当只包含操作系统、Proxmox 配置、网络与服务状态,而虚拟机磁盘(qcow2、raw、LVM-thin 等)应交由 PBS 或单独备份处理。这样可以在迁移、恢复或硬件更换时保持高可控性和可恢复性。
本文介绍一种稳定、可重复的做法:
在运行中的 PVE 上备份宿主机系统,同时排除虚拟机磁盘文件。
一、系统与虚拟机数据的分离原则
在典型 PVE 安装中,虚拟机磁盘可能以 qcow2 文件的形式存在于:
/var/lib/vz/images/<VMID>/vm-XXX-disk-0.qcow2
这类文件往往单个就有数 TB 大小,且已经通过 Proxmox Backup Server(PBS)等方式被单独备份,因此在迁移宿主机时应明确排除。
应当备份的内容包括:
/etc、/usr、/var/lib/pve-cluster- systemd、网络配置
- 存储定义、虚拟机与容器配置(不含磁盘)
不应当备份的内容包括:
- qcow2 或 raw 虚拟磁盘
/proc、/sys、/run、/dev- 运行时的 lxcfs 内容
二、推荐方式:使用 rsync 在线备份宿主机
rsync 非常适合做“可恢复的系统复制”,在宿主机运行时也可安全执行。
示例命令
rsync -aAXHv --numeric-ids --one-file-system \
--exclude={"/proc/*","/sys/*","/dev/*","/run/*","/tmp/*","/mnt/*","/media/*","/lost+found"} \
--exclude={"/var/cache/*","/var/tmp/*"} \
--exclude=/etc/pve/.members.lock \
--exclude={"/var/lib/vz/images/100/*","/var/lib/vz/images/101/*","/var/lib/vz/images/102/*","/var/lib/vz/images/104/*","/var/lib/vz/images/106/*","/var/lib/vz/images/107/*"} \
/ /mnt/backup/pve-rootfs/
参数说明
-aAXH:保持权限、ACL、xattr 和硬链接--numeric-ids:避免 UID/GID 在新系统上错位--one-file-system:防止递归进入挂载的备份盘、NFS 等--exclude=/var/lib/vz/images/...:跳过指定 VM 磁盘目录
该方式不会影响正在运行的虚拟机,只会产生少量“运行中变更文件”的时间差,这在系统迁移场景中是可接受的。
三、tar 打包方式(需要注意排除运行态目录)
如果需要生成一个单一的归档文件(如 .tar.gz),可以使用 tar,但必须排除动态伪文件系统和 lxcfs。
稳定可用的 tar 模板
tar --xattrs --acls --numeric-owner \
-cpvzf /pbs-system.tar.gz \
--one-file-system \
--exclude=/proc \
--exclude=/sys \
--exclude=/dev \
--exclude=/run \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/media \
--exclude=/lost+found \
--exclude=/var/lib/lxcfs \
--exclude=/var/lib/vz/images/100 \
--exclude=/var/lib/vz/images/101 \
--exclude=/var/lib/vz/images/102 \
--exclude=/var/lib/vz/images/104 \
--exclude=/var/lib/vz/images/106 \
--exclude=/var/lib/vz/images/107 \
/
为什么要排除 /var/lib/lxcfs
lxcfs 是 LXC 容器使用的运行时虚拟文件系统,用于显示 CPU、内存等动态状态。这些文件:
- 会在读取过程中变化
- 不支持 xattr
- 不应被系统备份
若不排除,会看到大量类似:
file changed as we read it
Operation not supported
这类警告不是磁盘损坏,也不是 tar 失败,只是 tar 正在读取一个动态伪文件系统。
四、tar 运行结果的判断
tar 完成后应检查返回码:
echo $?
| 返回值 | 含义 |
|---|---|
| 0 | 完全成功 |
| 1 | 有警告(通常是动态文件变化),归档可用 |
| 2 | 错误,需重做 |
只要不是 2,通常可以用于系统恢复。
五、迁移后的恢复思路(概述)
在新硬件上:
- 创建与原系统同名的 LVM 结构(例如
VG=pve,LV=root) - 创建相同类型的文件系统(ext4 或 xfs)
- 挂载 LV 到
/mnt - 将 rsync 目录或 tar 内容恢复到
/mnt - chroot 并重装 grub
- 重启
- 通过 PBS 或单独方式恢复虚拟机磁盘
这种“宿主机 + 虚拟机磁盘分离”的结构,是企业级虚拟化平台的标准设计。
结语
通过 rsync 或 tar 对 Proxmox VE 宿主机进行系统级迁移时,只要正确排除虚拟机磁盘与运行态文件系统,就可以获得:
- 可启动
- 可恢复
- 可重复部署
的高质量系统备份。
这种方式不仅适用于硬件更换,也适用于灾难恢复、跨机房迁移与长期系统归档。