首页 > 代码库 > Linux虚拟化应用之HyperV到KVM的迁移

Linux虚拟化应用之HyperV到KVM的迁移

一、实施说明

公司很多服务都泡在微软的HpyerV虚拟机上,现要逐步将其迁移到KVM上,国内网站很多都是针对vmware进行的迁移,很难发现针对HyperV做迁移的,其实步骤也差不多比较简单,下面说一下操作步骤。

 

注意事项:如果有快照的话注意要将原来的虚拟机快照进行合并成一个vhd文件,也许有更好的方法保留快照,但我还没有研究透。

二、实施步骤

为了更好的说明,跑hyperV的源机器叫H,跑kvm的目标机器叫做K

1.在H上将要迁移的的hyperV虚拟机的静态IP改成自动获取,然后关机,将vhd硬盘通过scp或者其他方式拷贝到目标机器K上。【如果有快照,需要对快照进行合并整理,左后只有一个vhd硬盘文件。】

 

2.获取virtio的windows驱动【该驱动主要用于windows的网卡和硬盘】

cd /var/lib/libvirt/image

wget https://alt.fedoraproject.org/pub/alt/virtiowin/latest/images/bin/virtio-win-0.1-81.iso

3.在目标机器K上进行映像格式转换,并建立一个新的磁盘文件【该磁盘文件主要用于windows通过识别新硬盘来安装新的virtio驱动,否则内置只有普通IDE驱动无法进行新的驱动安装】

qemu-img convert -O qcow2 /root/hyperv.vhd /mnt/storage/kvm.qcow2	#将vhd格式转换成qcow2格式

qemu-img create /mnt/storage/disk.img 1G				#建立一个新的磁盘

4.使用virt-manager或virt-install进行镜像导入,并将驱动镜像放入cdrom建议使用virt-install

virt-install --name server --ram 512 --os-type=windows --vcpus 1 --disk path=/mnt/storage/kvm.qcow2,device=disk,bus=ide,format=qcow2 --disk path=/mnt/storage/disk.img,format=qcow2,bus=virtio --disk path=/var/lib/libvirt/image/virt-win-0.1-81.iso,device=cdrom --network bridge=br0,model=virtio --graphics vnc --noautoconsole --import --noreboot --debug

5.启动虚拟机进入windows,通过cdrom里的镜像安装网卡和硬盘驱动【安装过windows驱动的人应该都会的】,装好后关闭虚拟机。

 

6.通过virt-manager或者修改kvm虚拟机的/etc/libvirt/qemu/server.xml文件,将新建的磁盘删除,将原有的硬盘bus模式改成virtio,xml方式修改如下:

<disk type=‘block‘ device=‘disk‘>
<driver name=‘server‘ type=‘qcow‘/>
<source dev=‘/mnt/storage/kvm.qcow2‘/>
<target dev=‘vda‘ bus=‘virtio‘/>
<address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x04‘ function=‘0x0‘/>
</disk>

【其实通过virt-manager会更方便一些】

7.启动虚拟机进行ip的配置,验证IP连通性,完成迁移。

Linux虚拟化应用之HyperV到KVM的迁移