• 【v2v迁移】Xen2kvm 迁移-Windows篇


    导读:

    本文系原创,欢迎规范转载。
    本文描述了如何处理window虚拟机从xen虚拟化迁移kvm虚拟化遇到问题,包括安装virtio驱动等。

    系列文章:

    xen2kvm迁移-Windows篇
    xen2kvm迁移-Linux篇

    迁移环境:

    源平台:华为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、配置驱动

    virtio-win下载链接

    # 在宿主机上下载一个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  --container-format bare --disk-format qcow2 --min-disk  --min-ram  --property os_type=windows  --property hw_qemu_guest_agent=yes --public 
    
    
    --property os_type=windows      # 指明镜像的操作系统类型,有助于正确显示系统时间
    --property hw_qemu_guest_agent=yes       # 表明镜像安装了qga,宿主机生成时会自动创建设备与之连接通信
    
  • 相关阅读:
    vue实现json树结构(面试题)
    面试突击44:volatile 有什么用?
    4367. 拍照2
    租房小程序使用uniapp展示地图map
    小工具使用——瑞士军刀(nc.exe)实现远程控制终端操作
    Redis数据的持久化
    在一次又一次的失败中, 我总结了这份万字的《MySQL 性能调优笔记》
    秋招每日一题------剑指offer41(数据流中的中位数)
    《剑指 Offer 》—16. 数值的整数次方
    大疆嵌入式工程师面试
  • 原文地址:https://www.cnblogs.com/wang272/p/xen2kvm_Windows_virtual_machine_migration.html