智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

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

1. 前言

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

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

最终成果:
把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

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

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

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用户

su -
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

查看qcow2虚拟磁盘的信息

可以看到,该虚拟硬盘大小为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

看见以下信息即表示创建成功:
启动KVM虚拟机

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

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

KVM虚拟机启动失败,进行dracut模式

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

查看KVM虚拟机列表:

virsh list --all

查看KVM虚拟机列表

关于虚拟机:

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
-rw-r--r-- 1 libvirt-qemu kvm 1.1G 1月  22 09:54 /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模式。
KVM虚拟机CentOS进入rescure模式

成功启动KVM虚拟机CentOS7

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

4. 总结

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

赞(0)
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!