一、实施说明
公司很多服务都泡在微软的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连通性,完成迁移。
原文地址:http://h11345.blog.51cto.com/780987/1561818