一、实施说明

二、实施步骤

为了更好的说明,跑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连通性,完成迁移。