迁移环境:

源平台:华为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 <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,宿主机生成时会自动创建设备与之连接通信

【v2v迁移】Xen2kvm 迁移-Windows篇的更多相关文章

  1. 将Win8.1/WP8.1应用迁移到Universal Windows Platform

    在上一篇在VS2015 RC打开CTP中创建的工程,我们介绍了怎么在RC中打开CTP中创建的Universal 工程,这一篇我们来讲下怎么将Windows 8.1/WP8.1的应用迁移到Univers ...

  2. 版本控制工具Git工具快速入门-Windows篇

    版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...

  3. Code First 迁移,及迁移错误

    迁移错误: 今天在使用EF6 Code First时,出现如下错误,折腾了老半天.分享一下,帮后面的兄弟少走弯路. PM> Enable-Migrations Checking if the c ...

  4. Qt全局热键(windows篇)

      Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对这些进行支持,我们就只能自己写代码,调用系统相关的API了. 注意,这个 ...

  5. Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)

    转载:http://www.cuteqt.com/blog/?p=2088 Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对 ...

  6. Node.js安装及环境配置之Windows篇

    Node.js安装及环境配置之Windows篇   一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1. ...

  7. Saiku数据库迁移H2迁移到Mysql(二十二)

    Saiku数据库迁移H2迁移到Mysql Saiku默认使用H2数据库来存储saiku的用户与角色信息,我们可以根据角色来做saiku的权限控制,然后将角色分配给用户 ,该用户就会有对应的约束了! 由 ...

  8. C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇)

    C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇) 名词解释:apxs apxs is a tool for building and installing ext ...

  9. Node.js安装及环境配置之Windows篇(转:https://www.cnblogs.com/zhouyu2017/p/6485265.html)

    Node.js安装及环境配置之Windows篇(原文地址:https://www.cnblogs.com/zhouyu2017/p/6485265.html)   一.安装环境 1.本机系统:Wind ...

  10. [windows篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录

    为了更好的阅读体验,欢迎阅读原文.原文链接在此. [windows篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录 Part 2: Using G ...

随机推荐

  1. 暗黑2能用Java开发?还能生成APP?

    最近烧哥发现个宝藏项目,竟然用Java开发了暗黑2出来. 众所周知,暗黑2是暴雪开发的一款经典游戏,距今虽有20多年,仍然有很多粉丝. 粉丝延续热情的方式有很多,一种是做Mod,比如魔电,对怪物.技能 ...

  2. Vue学习之认识ref

    ref相当于一个dom节点,值为string 通俗将类似于原生js的document.querySelector('xxx'):但是不同的是vue是操纵虚拟dom,在渲染初期并没有这个属性,而是在创建 ...

  3. vue报错解决Duplicate keys detected: ‘[object Object]’

    最近在做vue项目时遇到了报错 ​ Duplicate keys detected: '[object Object]'. This may cause an update error. ​ 由于这个 ...

  4. 通过ssh远程执行kubectl命令报错问题

    在使用Jenkins链接Kubernetes集群,如果Jenkins安装机器与Kubernetes Master节点不在同一台机器上面,需要使用ssh远程执行部署命令,如下: ssh root@10. ...

  5. 如何将Maven项目快速改造成一个java web项目(方式一)

    因为实际需要,需要将一个maven项目改造成原生的java-web项目,写这边博客 来记录整个改造的过程.原始的maven项目,使用IDEA打开后,目录结构如下所示 直接通过文件夹查看项目结果如下 首 ...

  6. Flutter系列文章-Flutter基础

    Flutter是Google推出的一种新的移动应用开发框架,允许开发者使用一套代码库同时开发Android和iOS应用.它的设计理念.框架结构.以及对Widget的使用,都让开发者能更有效率地创建高质 ...

  7. 压制GIF做的一点点小尝试 以及ezgif的基本功能使用

    事情的起因 首先群友给我整了个loli莉音的视频 很可爱 但是用qq接收的视频没法一直在那边kawaii 图片本身很小其实 但是转gif就很大 转出来的gif的大小就大的唏嘘 寻找问题 这就是mp4的 ...

  8. TrustZone——(一)

    本文内容主要来源于网络,综合了网上的多篇文章,也加入了一些自己的理解,重新组织了文章结构使其便于理解. 主要参考的文章包括: 一篇了解TrustZone TrustZone领域先行者 TrustZon ...

  9. 【go语言】3.1.2 接口的定义和实现

    在 Go 中,接口是一种抽象类型,用来描述其他类型应该有哪些方法.它定义了一组方法,但没有实现.这些方法由其他类型实现. 接口的定义 接口定义的格式如下: type InterfaceName int ...

  10. 零基础入门——从零开始学习PHP反序列化笔记(一)

    靶场环境搭建 方法一:PHPstudy搭建 GitHub地址 https://github.com/mcc0624/php_ser_Class 方法二:Docker部署 pull镜像文件 docker ...