前言

在最近的工作任务中,需要部署KVM虚拟环境,并尝试把以前在VMware下制作的虚拟机镜像转换成KVM支持的文件。之前也没接触过kvm,就网上搜索一番资料来试试看,幸运的是这次搜到的资料竟然一次成功,没有任何报错,简直感激涕零啊......索性把这个过程记录一下,分享出来,能少踩坑就少踩坑。

前期检查


无论在物理机还是虚拟机都应该启用CPU的虚拟化功能Intel-VT,以更好地运行KVM或者VMware虚拟机

安装步骤

  1. 检查CPU特性
    lscpu | grep vmx

  2. 安装一些基础软件包(非必须)
    sudo yum install -y epel-release net-tools vim unzip zip wget ftp bridge-utils

  3. 安装KVM及相关工具

sudo yum install -y qemu-kvm libvirt
sudo yum install -y libguestfs-tools libguestfs-tools libguestfs-tools-c
  1. 验证安装结果
$ lsmod | grep ^kvm
kvm_intel             174250  0 
kvm                   570658  1 kvm_intel
  1. 启动服务并设置为开机自动运行
systemctl start libvirtd
systemctl enable libvirtd
  1. 检查服务状态
systemctl status libvirtd
systemctl is-enabled libvirtd
  1. 创建网络环境
    注意: 正常情况下,按之前的步骤一步步来是没有报错的,我这里实际测试也是如此,这时系统里已经有了virbr0这个网桥,则后面直接使用virbr0网桥即可。如果没有,就参看文末的引用链接原文寻找此处内容。

VMware转化KVM

  1. 检查vmware虚拟机保存目录,查看是否为独立的vmdk文件,如果不是独立文件需要对其进行合并。还有,如果这台虚拟机有快照,需要将快照导出为完整虚拟机!

  2. 合并方法:以管理员身份运行cmd,进入到
    C:\Program Files (x86)\VMware\VMware Workstation>(VMware安装目录,根据实际调整)
    用vmware自带的工具vmware- vdiskmanager.exe来合并多个文件,命令如下vmware-vdiskmanager.exe -r "C:\Winxp\Winxp.vmdk" -t 0 "C:\Winxp-vm.vmdk"
    合并成功后,Winxpvm.vmdk就是合并后的独立文件。

  3. 将vmdk文件拷贝到KVM Linux主机,运行命令:
    [root@localhost ~]# qemu-img convert Winxp-vm.vmdk -O qcow2 Winxp-kvm.img
    转化之后,Winxp-kvm.img就是可以导入KVM的镜像文件

  4. 启动virtmanager,导入镜像创建虚拟机。这时启动的虚拟机可能会发生蓝屏状况(windows虚拟机会有这种情况发生),你需要强制关闭蓝屏虚拟机。

  5. 导入注册表

[root@localhost ~]#wget https://github.com/jakobadam/kvm-mergeide/archive/master.zip

[root@localhost ~]#yum install qemu-img *libguestfs*'

[root@localhost kvm-mergeide-master]# virt-win-reg --merge XP mergeide.reg 

注意:这条命令里的XP是你之前创建kvm虚拟机的名称,virt-win-reg会自动搜索KVM中noactive的虚拟机名称,然后执行mergeide.reg。至此,转化已经完成

KVM转化VMWare

  1. 找到kvm虚拟机使用的img文件,将其转换成vmdk格式。
    qemu-img convert testvm1.img –O vmdk /tmp/testvm1.vmdk
  2. 在VMware 里创建一个虚拟机,要和kvm环境虚拟机配置相同, 在创建磁盘那一步,选择”使用现有虚拟磁盘“,就是刚刚转换好的vmdk文件,再开启虚拟机就OK了。

引用

在CentOS7上运行KVM虚拟机
2019-02-21 VMware15在Ubuntu16.04安装使用及转换KVM
vmware虚拟机迁移到kvm