【v2v迁移】Xen2kvm 迁移-Windows篇
迁移环境:
源平台:华为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,宿主机生成时会自动创建设备与之连接通信
【v2v迁移】Xen2kvm 迁移-Windows篇的更多相关文章
- 将Win8.1/WP8.1应用迁移到Universal Windows Platform
在上一篇在VS2015 RC打开CTP中创建的工程,我们介绍了怎么在RC中打开CTP中创建的Universal 工程,这一篇我们来讲下怎么将Windows 8.1/WP8.1的应用迁移到Univers ...
- 版本控制工具Git工具快速入门-Windows篇
版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...
- Code First 迁移,及迁移错误
迁移错误: 今天在使用EF6 Code First时,出现如下错误,折腾了老半天.分享一下,帮后面的兄弟少走弯路. PM> Enable-Migrations Checking if the c ...
- Qt全局热键(windows篇)
Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对这些进行支持,我们就只能自己写代码,调用系统相关的API了. 注意,这个 ...
- Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)
转载:http://www.cuteqt.com/blog/?p=2088 Qt对于系统底层,一直没有很好的支持,例如串口并口通信,还有我们经常都会用到的全局热键,等等.既然Qt可能出于某种原因,不对 ...
- Node.js安装及环境配置之Windows篇
Node.js安装及环境配置之Windows篇 一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1. ...
- Saiku数据库迁移H2迁移到Mysql(二十二)
Saiku数据库迁移H2迁移到Mysql Saiku默认使用H2数据库来存储saiku的用户与角色信息,我们可以根据角色来做saiku的权限控制,然后将角色分配给用户 ,该用户就会有对应的约束了! 由 ...
- C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇)
C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇) 名词解释:apxs apxs is a tool for building and installing ext ...
- Node.js安装及环境配置之Windows篇(转:https://www.cnblogs.com/zhouyu2017/p/6485265.html)
Node.js安装及环境配置之Windows篇(原文地址:https://www.cnblogs.com/zhouyu2017/p/6485265.html) 一.安装环境 1.本机系统:Wind ...
- [windows篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录
为了更好的阅读体验,欢迎阅读原文.原文链接在此. [windows篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录 Part 2: Using G ...
随机推荐
- uniapp学习(二)
easycom自动导入自定义组件 目录下 components / MyItem /MyItem.vue <template> <view> <view class=&q ...
- 一文了解io包中的discard类型
1. 引言 io.discard是Go语言标准库提供一个结构体类型,其在丢弃不需要的数据场景下非常好用.本文我们将从io.discard 类型的基本定义出发,讲述其基本使用和实现原理,接着简单描述 i ...
- Java 中的值传递和引用传递 ?
一. 介绍 值传递:值传递(Pass-by-Value)当我们向方法传递参数时,实际上是将该参数的值进行拷贝,并将拷贝后的值传递给方法内部.在方法内部对参数进行修改不会影响原始变量的值. 引用传递:引 ...
- Redis 集群偶数节点跨地域部署之高可用测试
笔者目前所在公司存在多套 Redis 集群: A 集群 主 + 从 共 60 个分片,部署在 3 + 3 台物理机上,每台机器各承载 10 个端口 主库 30 个端口在广州,从库 30 个端口在中山 ...
- 删除 /tmp 目录下长时间未访问的文件
#!/bib/bash DIR=/tmp cd $DIR || { echo "Dir not Found: $Dir" exit } echo "Delete a fi ...
- BugKu:文件包含+php伪协议
这道题一进去发现一个超连接点击后发现跳转到了如下页面url如下/index.php?file=show.php,觉得这道题应该是一个php伪协议的应用 1 php://filter php://fil ...
- 宝塔面板配合tomcat部署静态资源网站
在宝塔中安装下图所示软件 第一步:上传代码到服务器 第二步,点击JAVA项目一键部署 点击添加项目 第一次使用时项目版本是为空的,点击下方的版本管理进行安装 需要填写的选项 至此配置完成 访问方式 i ...
- 医疗知识图谱问答 ——Neo4j 基本操作
前言 说到问答机器人,就不得不说一下 ChatGPT 啦.一个预训练的大预言模型,只要是人类范畴内的知识,似乎他回答得都井井有条,从写文章到写代码,再到解决零散琐碎的问题,不光震撼到我们普通人,就百度 ...
- 记一次Android项目升级Kotlin版本(1.5 -> 1.7)
原文地址: 记一次Android项目升级Kotlin版本(1.5 -> 1.7) - Stars-One的杂货小窝 由于自己的历史项目Kotlin版本比较老了,之前已经升级过一次了(1.4-&g ...
- 【故障公告】多年的故障老朋友又来了:数据库服务器 CPU 100%
数据库服务器 CPU 100% 问题几乎每年都要来几次,从来都不事先打一声招呼,今年的第2次在我们正忙着会员救园的时候来了. 今天 13:35 首先收到我们自己的异常告警通知: Execution T ...