把 KVM qcow2格式虚拟机迁移到 Proxmox VE 6 下的 V2V 脚本

在熟悉 Proxmox VE 之前,我们用 KVM 建了很多虚拟机,了解了这款穷人的 VMware 产品,能做高可用集群,类似 VSphere 的 Live Migration 的时候,我们立刻就喜欢上它,当然最主要的就是免费!

就算要迁移之前的 KVM 虚拟机也十分的方便,其实核心的只有三句话,创建新虚拟机,迁移磁盘,把磁盘挂接到虚拟机上。

十分简单的一个脚本:
#!/bin/bash
id=$1
name=$2
disk=$3
#
pool=”vmpool”
#
[ -z “${disk}” -o ! -r “${disk}” ] && echo “Syntax: $0 id name disk” && exit 1
qm create ${id} –memory 1024 –net0 virtio,bridge=vmbr0 –name ${name} –serial0 socket \
–bootdisk scsi0 –scsihw virtio-scsi-pci –ostype l26
[ $? != 0 ] && echo “Create VM failed!” && exit 2
qm importdisk ${id} ${disk} ${pool} –format qcow2
[ $? != 0 ] && echo “Migrate disk failed!” && exit 3
qm set ${id} –scsi0 ${pool}:${id}/vm-${id}-disk-0.qcow2
[ $? != 0 ] && echo “Attach disk failed!” && exit 4

以上就是一个基本流程。

我们在迁移中遇到几个问题:
1. Ubuntu Guest 的网卡 ens8 被设置成了 ens18,这个需要修改 /etc/netplan 文件里面的网卡名,或者安装 cloud-init , 但是要删除原先 01 开头的 yml 文件
2. 源 qcow2 文件其实不需要在 KVM 环境下关闭 VM 的, 这个几乎等于可以做半在线迁移,能极大的降低 down time.

作者: 甬洁网络

--移动互联网&物联网技术提供商