如何把VMware的虚拟机向KVM迁移

  • A+
所属分类:Linux

1. 前言

本文主要讲解如何把VMware的虚拟机向KVM迁移
VMware虚拟机向KVM迁移,最重要的步骤就是虚拟磁盘格式的转换和新硬件环境的适配。如果能成功迁移,那么该虚拟机就可以在其它基于KVM虚拟化技术的平台上运行,比如OpenStack。

 

最终成果:
把vmware的虚拟机迁移到KVM平台。

部署前提条件:

  • 熟悉Linux基本的命令行操作
  • 具有系统的root账号权限或者sudo权限
  • 已经拥有vmware虚拟机磁盘文件
  • Linux系统上已经安装kvm套件

组件介绍:

  • Ubuntu 20.04 或 CentOS 操作系统
  • qemu-utils:提供qemu-img转换工具,把vmware虚拟磁盘格式转换为KVM格式
  • VNC客户端:需要在测试终端上安装VNC客户端。Linux不需要安装该组件。

2. 把VMware的虚拟硬盘文件转换为KVM格式

我们知道VMware的虚拟硬盘文件的后缀名为:vmdk
本教程中,将会用该文件作演示:CentOS7.vmdk

我们来看看该文件的信息:

ll -h CentOS7.vmdk

输出结果:

-rw-rw-r-- 1 test test 1.7G 1月 22 2021 CentOS7.vmdk

可以看到该文件的大小为1.7G。

接下来,我们将要把VMware的虚拟磁盘格式vmdk转换为KVM的qcow2格式:

sudo qemu-img convert -O qcow2 CentOS7.vmdk /var/lib/libvirt/images/CentOS7.qcow2

如果没有输出任何信息,就表示转换成功,我们来看看转换后的文件:

由于普通账户无权限查看 目录/var/lib/libvirt/images/,该目录是KVM虚拟硬盘文件的默认目录。

先切换到root用户

ll -h /var/lib/libvirt/images/CentOS7.qcow2

-rw-r--r-- 1 root root 1.7G 1月 22 09:13 /var/lib/libvirt/images/CentOS7.qcow2

可以看到,转换出来的文件同样是1.7G。

下一步是测试该虚拟磁盘文件。

3. 测试从vmdk转换出来的qcow2文件是否可用

先查看该虚拟磁盘的信息

qemu-img info /var/lib/libvirt/images/CentOS7.qcow2

image: /var/lib/libvirt/images/CentOS7.qcow2
file format: qcow2
virtual size: 40 GiB (42949672960 bytes)
disk size: 1.61 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false

可以看到,该虚拟硬盘大小为40G。

导入KVM虚拟机,内存4096M,2核CPU,VNC端口号5911:

virt-install --name=centos7 --ram=4096 --vcpus=2 --os-type=linux --os-variant=centos7.0 --network default,model=virtio --graphics=vnc,password=linuxrumen.com,port=5911,listen=0.0.0.0 --noautoconsole --accelerate --import --disk path=/var/lib/libvirt/images/CentOS7.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=40

我们使用VNC客户端连接该KVM虚拟机的显示器看看:

我们发现,这样启动其实并不行,启动失败,进入dracut模式

测试失败,原因是我们的硬件环境发生了变化, initramfs 和 initrd需要重建。

查看KVM虚拟机列表:

virsh list --all

virsh destroy centos7

删除虚拟机的配置文件,保留磁盘文件:

virsh undefine centos7

由于我的镜像是CentOS 7,所以先下载好CentOS 7的光盘镜像,用于重建initramfs和initrd,放入目录/var/lib/libvirt/images/

ll -h /var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2003.iso

可以看到该文件大小为1.1G,是CentOS7的安装光盘。

接下来我们使用该光盘镜像启动虚拟机,记得加入从VMware转换过来的qcow2文件

virt-install --name=centos7_2003 --ram=4096 --vcpus=2 --virt-type=kvm --os-type=linux --os-variant=centos7.0 --network default,model=virtio --graphics=vnc,password=linuxrumen.com,port=5911,listen=0.0.0.0 --noautoconsole --accelerate --cdrom=/var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2003.iso --disk path=/var/lib/libvirt/images/CentOS7.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=40

迅速启动VNC客户端连接该虚拟机的显示器。进入Rescue模式。

如何把VMware的虚拟机向KVM迁移

然后通过yum重新安装initramfs 和initrd即可。

4. 总结

通过本文,您应该可以了解到如何把VMware的虚拟机迁移到KVM平台了吧。其实,转换很简单,最关键的是解决转换后虚拟机的兼职性问题。如果有更好的方法,请留言。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: