linux虚拟化备份与迁移需区分备份数据和迁移整机两类需求,按目标平台选工具:整机镜像用dd/clonezilla,文件级用tar,增量用rsync,加密用duplicity;冷迁移推荐新手,热迁移需cpu/版本/共享存储一致,跨平台可用virt-p2v或格式转换。

Linux虚拟化中实现虚拟机备份与迁移,核心在于区分“备份数据”和“迁移整机”两类需求,并按目标平台(KVM/VMware/VirtualBox)选择匹配工具和流程。不追求一步到位,而是分清阶段、选对方法、避开常见坑点。
备份:按粒度选工具
备份不是只有一种方式,关键看你要保什么:
-
整机镜像级备份:用
dd或Clonezilla,能完整复制磁盘结构、MBR、LVM 和引导信息。适合灾难恢复,但体积大、耗时长。例如:dd if=/dev/sda of=/backup/sda.img bs=4M conv=noerror,sync -
文件系统级备份:用
tar配合排除规则,轻量灵活,支持增量和部分还原。推荐用于日常系统归档:tar cvpzf backup.tgz / --exclude=/proc --exclude=/sys --exclude=/mnt --exclude=/backup.tgz -
增量同步式备份:用
rsync,适合定期更新、远程备份或为迁移做准备:rsync -avz --delete /var/www/ user@backup-server:/backups/www/ -
加密+增量备份:用
duplicity,适合含敏感数据的场景,支持GPG加密和远程存储。
迁移:冷迁稳妥,热迁需条件
迁移成败取决于是否允许停机、存储是否共享、以及平台是否兼容:
-
冷迁移(推荐新手):关机后操作,风险低。
— 导出配置:virsh dumpxml vmname > vmname.xml
— 拷贝磁盘镜像:rsync -avz /var/lib/libvirt/images/vmname.qcow2 user@target:/var/lib/libvirt/images/
— 目标端注册启动:virsh define vmname.xml && virsh start vmname -
热迁移(业务不中断):要求源/目标宿主机CPU型号相近、libvirt/qemu版本一致,且最好挂载同一共享存储(如NFS)。命令示例:
virsh migrate --live vmname qemu+ssh://target-host/system -
跨平台迁移(如物理机→KVM/VMware):可用
virt-p2v在线转换,或用Clonezilla克隆后转格式(如 raw → qcow2),再导入目标平台。
关键注意事项
很多迁移失败不是因为命令写错,而是忽略了这些细节:
- 备份前确认服务已停止或数据已静默(如 MySQL 执行
FLUSH TABLES WITH READ LOCK); - 排除
/proc、/sys、/dev、/run等虚拟文件系统,否则 tar 会报错或损坏; - 目标虚拟机启动后,检查网卡名是否变化(如 eth0 → ens3)、是否需要重装或更新内核模块(尤其从物理机迁入虚拟环境);
- 若使用 LVM,迁移后可能需手动
vgscan && vgchange -ay激活卷组; - 所有操作务必在测试环境先验证恢复流程,不能只备份不测恢复。
不复杂但容易忽略。











