直接使用PVE的备份功能,再复制镜像到新的PVE节点上也是OK的,但是通用性较差,成功率较低。使用ZSTD压缩备份,若干次都是还原失败(提示校验失败,新版本已成功)。逐放弃,选择迁移虚拟磁盘的方式操作。
备份前可到虚拟机中清理未使用空间,可让镜像更小(根据实际情况处理)
# 清理前QCOW2体积为7.3G,清理后体积为5G
# 使用dd填充0,然后再删除,建议df -h查看下分区,将数据和系统分区填充一遍
dd if=/dev/zero of=/home/zero.dat bs=2M status=progress
rm -rf /home/zero.dat
1、截图备份原虚拟机的配置
2、将lvm里的raw镜像转换为qcow2镜像
SHELL登陆宿主机,执行下面命令:
【2020.11补充】重要:先执行ls /dev/mapper/
查看一下具体的存储名和硬盘名,以免搞混。
如图,pve和VM--LVM是你WEB界面可以看到的存储名(local存储显示为你的节点名),后面跟上的vm--100--disk--0是ID为100虚拟机的虚拟磁盘。
继续执行如下命令:
qemu-img convert -p -O qcow2 -c /dev/mapper/pve-vm--110--disk--0 VM110.qcow2
#其中pve-vm--110--disk--0是上图硬盘的名,注意格式对应修改,VM110.qcow2是转换到当前目录的文件名。
3、转换完成后复制QCOW2镜像到目标PVE宿主机
复制方法自由发挥,可以通过方法如下:
SCP发送、WinSCP下载上传、挂载U盘、挂载移动硬盘、挂载NFS存储等等
分享:挂载NTFS格式的U盘(移动硬盘)
mkdir /mnt/Upan/
apt install -y ntfs-3g
#(CentOS:yum install -y ntfs-3g
)
mount -t ntfs /dev/sdc1 /mnt/Upan/
#挂载
umount /dev/sdc1
#卸载
4、目标PVE宿主机创建虚拟机
根据步骤一的截图,创建虚拟机,然后在虚拟机详情里的“硬件”分离并删除自动创建的硬盘。
5、导入QCOW2磁盘镜像文件到新创建的虚拟机
SHELL登陆目标PVE宿主机,执行下面命令:
qm importdisk <vmid> <source> <storage>
#例子:qm importdisk 101 VM110.qcow2 local-lvm
#上面101是新建虚拟机的VM ID,VM110.qcow2是复制过来的QCOW2磁盘镜像文件,local-lvm是你的存储ID。
登陆WEB界面,应用未使用的磁盘。
启动虚拟机,完成迁移。