前言
在最近的工作任务中,需要部署KVM虚拟环境,并尝试把以前在VMware下制作的虚拟机镜像转换成KVM支持的文件。之前也没接触过kvm,就网上搜索一番资料来试试看,幸运的是这次搜到的资料竟然一次成功,没有任何报错,简直感激涕零啊......索性把这个过程记录一下,分享出来,能少踩坑就少踩坑。
前期检查
无论在物理机还是虚拟机都应该启用CPU的虚拟化功能Intel-VT,以更好地运行KVM或者VMware虚拟机
安装步骤
-
检查CPU特性
lscpu | grep vmx
-
安装一些基础软件包(非必须)
sudo yum install -y epel-release net-tools vim unzip zip wget ftp bridge-utils
-
安装KVM及相关工具
sudo yum install -y qemu-kvm libvirt
sudo yum install -y libguestfs-tools libguestfs-tools libguestfs-tools-c
- 验证安装结果
$ lsmod | grep ^kvm
kvm_intel 174250 0
kvm 570658 1 kvm_intel
- 启动服务并设置为开机自动运行
systemctl start libvirtd
systemctl enable libvirtd
- 检查服务状态
systemctl status libvirtd
systemctl is-enabled libvirtd
- 创建网络环境
注意: 正常情况下,按之前的步骤一步步来是没有报错的,我这里实际测试也是如此,这时系统里已经有了virbr0这个网桥,则后面直接使用virbr0网桥即可。如果没有,就参看文末的引用链接原文寻找此处内容。
VMware转化KVM
-
检查vmware虚拟机保存目录,查看是否为独立的vmdk文件,如果不是独立文件需要对其进行合并。还有,如果这台虚拟机有快照,需要将快照导出为完整虚拟机!
-
合并方法:以管理员身份运行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就是合并后的独立文件。 -
将vmdk文件拷贝到KVM Linux主机,运行命令:
[root@localhost ~]# qemu-img convert Winxp-vm.vmdk -O qcow2 Winxp-kvm.img
转化之后,Winxp-kvm.img就是可以导入KVM的镜像文件 -
启动virtmanager,导入镜像创建虚拟机。这时启动的虚拟机可能会发生蓝屏状况(windows虚拟机会有这种情况发生),你需要强制关闭蓝屏虚拟机。
-
导入注册表
[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
- 找到kvm虚拟机使用的img文件,将其转换成vmdk格式。
qemu-img convert testvm1.img –O vmdk /tmp/testvm1.vmdk
- 在VMware 里创建一个虚拟机,要和kvm环境虚拟机配置相同, 在创建磁盘那一步,选择”使用现有虚拟磁盘“,就是刚刚转换好的vmdk文件,再开启虚拟机就OK了。
引用
在CentOS7上运行KVM虚拟机
2019-02-21 VMware15在Ubuntu16.04安装使用及转换KVM
vmware虚拟机迁移到kvm