迁移环境:
源平台:华为FusionComputeV100R006C10SPC101
目标平台:基于KVM虚拟化的云平台,本文以原生的libvirt为例
虚拟机:Windows server 2012 R2
具体操作步骤:
本文的前3个步骤与【v2v迁移】Xen2kvm 迁移-linux篇基本一致:导出vhd,安装qemu-img-hw工具,转换格式等。
注意:
导出之前,在源Windows系统上卸载uvp-vmtools,否则虚拟机蓝屏无法启动。
1、在源平台导出格式为ovf的磁盘镜像
导出后,得到vhd文件:xen_win2012_C.vhd
。将该文件传输到装有libvirt和相关工具套件的Linux环境上,本文所使用的是一台centos7.6物理机,部署了GUI界面,安装了libvirt libvirt-client qemu-img virt-manager
等工具。
2、下载华为自研的qemu-img-hw命令
解压得到命令,为命令赋予执行权限:
$ unzip qemu-img-hw.zip
$ cd qemu-img-hw.zip
$ chmod a+x qemu-img-hw
据华为公有云文档描述:zvhd和zvhd2是云服务内部自研格式,qemu-img工具无法识别这两种格式的镜像文件,需要使用qemu-img-hw:
# 使用华为提供的qemu-img-hw看到的镜像格式是zvhd
[root@hyperhost ~]$ qemu-img-hw info xen_win2012_C.vhd
image: xen_win2012_C.vhd
file format: zvhd
virtual size: 20G (21474836480 bytes)
disk size: 9.2G
# 使用原生工具qemu-img看到的镜像格式是raw:
[root@hyperhost ~]$ qemu-img info xen_win2012_C.vhd
image: xen_win2012_C.vhd
file format: raw
virtual size: 9.2G (9879011328 bytes)
disk size: 9.2G
3、zvhd转换为qcow2格式:
转换时间依数据量而定
# 这里的目标是一个逻辑卷,需要提前创建:
# 使用qemu-img-hw info 看到的虚拟大小是,因此创建一个20GiB的镜像文件:
[root@hyperhost ~]$ lvcreate -L 20GiB -n vmpool-1/xen_win2012
Logical volume "xen_win2012" created.
# 转换格式:
[root@hyperhost ~]$ qemu-img-hw convert -p -f zvhd -O qcow2 xen_win2012_C.vhd /dev/vmpool-1/xen_win2012
(100.00/100%)
# 检查格式:
[root@hyperhost ~]$ qemu-img-hw info /dev/vmpool-1/xen_win2012
image: /dev/vmpool-1/xen_win2012
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 0
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
4、配置驱动
# 在宿主机上下载一个rpm包(下载最新版):
[root@hyperhost ~]$ wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.240-1/virtio-win-0.1.240-1.noarch.rpm
# 本地安装:
[root@hyperhost ~]$ yum localinstall virtio-win-0.1.240-1.noarch.rpm
把驱动iso配置为一个storage pool:在virt-manager上点击edit,选择connection details,进一步选择storage,点击左下角➕新建一个pool。类型选择dir,路径选择/usr/share/virtio-win/,就可以看到virtio-win.iso了。之后新建虚拟机时挂载这个iso给虚拟机,就可以安装驱动了。
5、部署为kvm虚拟机
本文使用virt-manager将qcow2磁盘部署为虚拟机:
如果创建虚拟机后直接开机,会报找不到磁盘:
这里我们对磁盘总线类型做一些修改:
磁盘总线类型是IDE,存储类型是raw,这里我们修改为qcow2格式就可以启动了。
为了安装virtio磁盘驱动,我们为这台虚拟机新增一块1G的磁盘,总线类型选择virtio,存储类型随意:
为了安装virtio网卡驱动,我们将这台虚拟机的网卡的设备类型从e1000修改为virtio:
新增一个cdrom设备,挂载驱动iso,总线类型选择IDE或者SATA都行:
6、开机,进入设备管理器,为设备安装驱动
安装驱动:
位置选择光驱D盘,单击下一步:
自动查找驱动后提示安装,选择安装:
所有驱动安装后,就可以看到使用virtio总线类型的网卡设备和第二块磁盘:
在OpenStack平台,建议安装qemu-guest-agent,Windows2008可能不支持:
7、收尾工作
关机,卸载网卡,卸载cdrom,卸载磁盘等。导出磁盘,删除临时虚拟机等。
上传OpenStack平台之前,可以使用工具压缩镜像大小:
[root@hyperhost ~]$ qemu-img-hw convert -p -c -O qcow2 /dev/vmpool-1/xen_win2012 win2k12r2_1.qcow2
上传OpenStack平台:
[root@openstack ~]$ openstack image create --file <FILE> --container-format bare --disk-format qcow2 --min-disk <disk-gb> --min-ram <ram-mb> --property os_type=windows --property hw_qemu_guest_agent=yes --public <image-name>
--property os_type=windows # 指明镜像的操作系统类型,有助于正确显示系统时间
--property hw_qemu_guest_agent=yes # 表明镜像安装了qga,宿主机生成时会自动创建设备与之连接通信
标签:virtio,img,Windows,xen,hw,win2012,Xen2kvm,迁移,qemu
From: https://www.cnblogs.com/wang272/p/xen2kvm_Windows_virtual_machine_migration.html