高考考试网
当前位置: 首页 高考资讯

vmware虚拟机和hyper-v不兼容(从VMware和Hyper-V迁移虚拟机到OpenStack)

时间:2023-08-07 作者: 小编 阅读量: 2 栏目名: 高考资讯

vmware虚拟机和hyper-v不兼容介绍当前我们有一整套运行长达5年之久的VMware,因服务器逐步报废的原因,我们决定将所有的VMware虚拟主机迁移至OpenStack。OpenStack是采用Kolla部署的Train版本的高可用环境,ceph为独立部署的Nautilus版本。本次迁移仅仅涉及V2V,不涉及任何的P2V。现在应该可以正常启动了。因此,无需注入VirtIO驱动程序。使用VirtIO硬件创建并启动新的KVM虚拟机。

vmware虚拟机和hyper-v不兼容?当前我们有一整套运行长达5年之久的VMware,因服务器逐步报废的原因,我们决定将所有的VMware虚拟主机迁移至OpenStackOpenStack是采用Kolla部署的Train版本的高可用环境,ceph为独立部署的Nautilus版本,今天小编就来聊一聊关于vmware虚拟机和hyper-v不兼容?接下来我们就一起去研究一下吧!

vmware虚拟机和hyper-v不兼容

介绍

当前我们有一整套运行长达5年之久的VMware,因服务器逐步报废的原因,我们决定将所有的VMware虚拟主机迁移至OpenStack。OpenStack是采用Kolla部署的Train版本的高可用环境,ceph为独立部署的Nautilus版本。

当前我们需要从VMware ESXi 迁移超过220个VMware虚拟机(Linux和Windows)到OpenStack。除了VMware主机外,还有少部分的Hyper-V虚拟主机也要进行迁移。本文将为大家演示用于迁移虚拟机的步骤和命令。通过这些步骤和命令,可以轻松创建自动进行迁移的脚本。

本次迁移仅仅涉及V2V,不涉及任何的P2V。

比较新版本的libguestfs-tools和qemu-img convert可以很好地处理VMDK文件(旧版本的工具存在一些问题),因此迁移效率更高。迁移过程中去除了从VMDK到VMDK(单个文件)以及从VMDK到RAW 的转换步骤。通过减少这些步骤,使迁移速度将加倍。

迁移过程中需要注意本文涉及到的命令,因为一些命令非常强大,并且可以破坏Ceph和OpenStack中的配置和数据。因此,请谨慎的使用相关的命令

全局步骤

1. 安装VirtIO驱动程序

1. 扩展分区(可选)

1. 自定义虚拟机(可选)

1. 创建Cinder卷

1. 将VMDK转换为Ceph

1. 创建Neutron端口(可选)

1. 在OpenStack中创建和启动实例

技术指标

以下是用于迁移的基础结构的规范:

· 云平台:OpenStack Train

· 云存储:Ceph

· Windows实例:Windows Server 2012R2至2016

· Linux实例:RHEL5/6/7,SLES,Debian和Ubuntu

· 只能转换来自ESXi的VMDK文件,无法使用qemu-img从VMware Player转换VMDK文件

· 不涉及加密磁盘的迁移

· OpenStack为实例提供VirtIO半虚拟化硬件

需求

Linux"迁移服务器"(可以使用Ubuntu 14.04/16.04/18.04,CentOS6/CentOS7,Redhat6/Redhat7,Fedora19-22),同时需满足以下需求:

· 服务器操作系统(已成功通过以下测试):

· RHEL6(RHEL7没有" libguestfs-winsupport")

· Fedora 19、20、21和22

· Ubuntu 14.04,16.04和18.04

· 与正在运行的OpenStack环境的网络连接。最好不要通过公网Internet,因为我们需要"超级管理员"权限。本地网络连接通常比Internet连接更快。如果能保证是万兆网络的话将会更好。

· 足够的硬件性能与功能来转换磁盘并能在KVM中运行实例(大小取决于您要在一定时间内迁移的实例,如有SSD最佳)。

我们使用的服务器配置为,8核Intel Xeon E3-1230@3.3 GHz,64 GB RAM,8块1TB SSD,并且每小时能够迁移超过500 GB 。但是,这实际上取决于实例磁盘空间的使用情况。我的旧公司笔记本电脑(Core i5和8GB RAM和一个旧的4500rmp HDD)也可以工作,但是显然性能很差。

在迁移之前还要满足如下需求:

· 拥有Linux迁移主机上的本地sudo(root)权限

· QEMU/KVM主机

· OpenStack的权限(通过Keystone获取)

· 对Ceph的相应的操作权限

· 对OpenStack API和Ceph的不受限制网络访问

· VirtIO驱动程序(可从Red Hat,Fedora等主站下载)

· 软件包(所有软件包都应位于默认的发行版存储库中):

· " python-cinderclient"(用于云盘)

· " python-keystoneclient"(用于向OpenStack进行身份验证)

· " python-novaclient"(控制实例)

· " python-neutronclient"(用于控制网络)

· " python-httplib2"(以便能够与Web服务通信)

· " libguestfs-tools"(用于访问磁盘文件)

· " libguestfs-winsupport"(应该仅在基于RHEL的系统上单独安装)

· " libvirt-client"(控制KVM)

· " qemu-img"(转换磁盘文件)

· " ceph"(将虚拟磁盘导入Ceph)

· " vmware-vdiskmanager"(用于扩展VMDK磁盘,可从VMware站点下载)

步骤1.注入VirtIO驱动程序1.1 Windows Server 2012

从Windows Server 2012和Windows 8.0开始,驱动程序受Windows 保护。在脱机Windows磁盘中注入驱动程序非常困难。Windows Server 2012默认无法从VirtIO硬盘启动。因此,我采取了以下后续步骤将VirtIO驱动程序安装到Windows中。请注意,这些步骤应适用于所有经过测试的Windows版本(2008/2012/2016)。

1. 创建一个新的KVM实例。确保将Windows vmdk磁盘创建为IDE磁盘!网卡应该是VirtIO设备。

1. 添加额外的VirtIO磁盘,以便Windows可以安装VirtIO驱动程序。

1. 当然,您应该添加包含驱动程序的VirtIO ISO或软盘驱动器。您还可以使用virt-copy-in 注入驱动程序文件,并注入必要的注册表设置以自动安装驱动程序。

1. 启动虚拟机,并给Windows大约两分钟时间,以找到新的VirtIO硬件。为所有新发现的硬件安装驱动程序。确认没有设备没有安装驱动程序。

1. 关闭系统并卸下额外的VirtIO磁盘。

1. 将Windows vmdk磁盘重新定义为VirtIO磁盘(这是IDE)并启动实例。现在应该可以正常启动了。关闭 虚拟机。

1.2 Linux(内核2.6.25及更高版本)

Linux 2.6.25及更高版本的内核已经内置了对VirtIO硬件的支持。因此,无需注入VirtIO驱动程序。 使用VirtIO硬件创建并启动新的KVM虚拟机。如果LVM分区没有自动安装,请运行以下命令进行修复:

mount -o remount,rw /pvscanvgscanreboot

(重新启动后,所有LVM分区都应该挂载,Linux应该可以正常启动)

完成后关闭虚拟机。

1.3 Linux(2.6.25之前的内核)

一些Linux发行版提供了用于较旧内核版本的VirtIO模块:

· 红帽为RHEL 3.9及更高版本提供VirtIO支持

· SuSe为SLES 10 SP3及更高版本提供VirtIO支持

较旧内核的步骤是:

1. 创建KVM实例:

1. Linux(内核2.6.25之前):使用IDE硬件创建和启动KVM实例(由于只能配置一个IDE 控制器而导致产生4个磁盘,因此KVM中限于4 个磁盘!)。我没有尝试过SCSI或SATA,因为本次迁移中只有不超过4个磁盘的Linux虚拟机。Linux应该启动没有问题。

1. 加载virtio模块(特定于发行版):RHEL(旧版本):https://access.redhat.com/documentation/en-US/RedHatEnterpriseLinux/6/html/VirtualizationHostConfigurationandGuestInstallationGuide/ch10s04.html 和SLES 10 SP3系统:https://www.suse.com/documentation/opensuse121/bookkvm/data/appkvmvirtio_install.html

1. 关闭实例。

1. 将所有磁盘更改为VirtIO磁盘并启动实例。现在应该可以正常启动了。

1. 完成后关闭虚拟机。对于Red Hat,请参阅:https://access.redhat.com/documentation/zh-CN/RedHatEnterpriseLinux/6/html/VirtualizationHostConfigurationandGuestInstallationGuide/ch10s04.html对于SuSe,请参阅:https://www.suse.com/documentation/opensuse121/bookkvm/data/appkvmvirtio_install.htm

1.4 Windows Server 2008(及更低版本);不推荐使用

对于2012之前的Windows版本,您还可以使用以下步骤插入驱动程序。

1. 将相应Windows版本的所有VirtIO驱动程序文件复制到C:Drivers。您可以使用工具virt-copy-in将文件和文件夹复制到虚拟磁盘中。

1. 将* .sys文件复制到%WINDIR%system32%drivers(您可能希望使用virt-ls查找正确的目录。请注意Windows中的大小写)。您可以使用工具virt-copy-in将文件和文件夹复制到虚拟磁盘中。

1. Windows注册表应结合硬件ID和驱动程序,但默认情况下Windows中未安装VirtIO驱动程序。因此,我们需要自己做。您可以使用virt-win-reg 注入注册表文件。如果您选择将所有VirtIO驱动程序复制到C:Drivers以外的其他位置,则必须在最后一行更改" DevicePath" 变量(最简单的方法是在外部Windows系统上进行更改,然后导出注册表文件,从而提供给迁移虚拟机使用)。

注册表文件(也称为mergeviostor.reg,因为它仅保存VirtIO存储信息):

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00000000]"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor"[HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00020000]"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor"[HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00021AF4]"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor"[HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00021AF4&rev_00]"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor"[HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1004&subsys_00081af&rev_00]"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor"[HKEY_LOCAL_MACHINESYSTEMControlSet001Servicesviostor]"ErrorControl"=dword:00000001"Group"="SCSI miniport""Start"=dword:00000000"Tag"=dword:00000021"Type"=dword:00000001"ImagePath"="system32driversviostor.sys"[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion]"DevicePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,69,00,6e,00,66,00,3b,00,63,00,3a,00,5c,00,44,00,72,00,69,00,76,00,65,00,72,00,73,00,00,00

执行完这些步骤后,Windows应从不带BSOD的VirtIO 磁盘引导。

Windows引导时,所有其他驱动程序(网络,balloon等)也应自动安装。

请参阅:https://support.microsoft.com/zh-cn/kb/314082 (为Windows XP 编写,但仍可用于Windows 2003和2008)。

另请参阅:http://libguestfs.org/virt-copy-in.1.html和http://libguestfs.org/virt-win-reg.1.html

2.展开分区(可选)

迁移的某些Windows服务器在Windows分区上的可用磁盘空间有限。没有足够的空间来安装新的管理应用程序。所以,可以使用用vmware-vdiskmanager工具,以增加磁盘的大小。然后,您仍然需要从操作系统扩展分区。您可以在下一步中自定义虚拟机时执行此操作。

3.自定义虚拟机(可选)

要准备在OpenStack中运行的操作系统,您可能需要卸载某些软件(例如VMware Tools和驱动程序),更改密码并安装新的管理工具等。您可以通过编写脚本来自动执行此操作。您应该能够使用virt-copy-in命令将脚本和文件注入虚拟磁盘。

3.1在Linux中自动启动脚本

由于只有几个Linux服务器需要迁移,因此我在Linux中手动启动了脚本。而且很容易就做到了自动化。

3.2在Windows中自动启动脚本

可以选择RunOnce方法在Windows启动时启动脚本,因为该方法适用于所有Windows版本。您可以 通过注入注册表文件将脚本放入RunOnce。仅当用户登录时才运行RunOnce脚本。因此,还应该注入Windows 管理员的用户名,密码,并将AutoAdminLogon设置为'1'。当Windows启动时,它会自动登录的用户定义。完成后,请确保关闭虚拟机。

自动登录Windows(使用用户" Administrator"和密码" Password")并启动C:StartupWinScript.vbs的示例注册表文件:

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce] "Script"="cscript C:StartupWinScript.vbs" "Parameters"=""[HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogon]"AutoAdminLogon"="1""UserName"="Administrator""Password"="Password"

4.创建Glance镜像

当前OpenStack平台使用Ceph作为存储、镜像后端。如果创建云主机希望通过从镜像的方式启动而不是云盘的方式启动的话,那么镜像上传需要通过glance-api。我们在vMware上的云主机,系统盘数据大小约为200G。不管是作为上传体积较大的raw或者qcow2镜像,由于要经过glance-api上传,速度会比较慢,此时可以采用先上传到Ceph,再在glance中create的方式,因为连接到Ceph后端的通常是万兆光口,上传速度会很快:

具体步骤如下:

· 生成随机uuid,作为镜像id

uuid=$(uuidgen)

· 通过rbd的方式上传镜像,同时添加相应的快照与快照保护

rbd -p images --image-format 2 import image_file $uuidrbd -p images snap create --snap snap $uuidrbd -p images snap protect --snap snap $uuid

· glance创建镜像,同时与rbd镜像进行关联

glance image-create --os-image-api-version 1 --id $uuid --name image_name --disk-format raw --container-format bare --is-public false --location rbd://$(ceph fsid)/images/$uuid/snap

5.创建Cinder卷

对于要导入的每个磁盘,您需要创建一个Cinder卷。Cinder命令中指定的卷大小并不重要,因为下一步我们将删除(并通过ceph直接导入的方式重新创建)Ceph块设备。我们仅创建cinder卷以创建Cinder和Ceph 之间的链接。

但是,您应该使卷大小与计划导入的磁盘相同。这对于拥有OpenStack管理界面(Horizon)用户来说,操作很简单。

使用以下命令创建一个cinder卷(大小以GB为单位,您可以通过cinder type-list检查可用的卷类型):

cinder create --display-name <name_of_disk> <size> --volume-type <volumetype>

注意卷ID(您也可以使用以下命令找到卷ID ),因为下一步需要使用这些ID。

cinder list | grep <name_of_disk>

Cinder命令信息:http://docs.openstack.org/cli-reference/content/cinderclient_commands.html

6.将VMDK转换为Ceph

一旦创建了Cinder卷,就可以将VMDK磁盘文件转换为RBD块(Ceph)。但是首先我们需要删除实际的Ceph 磁盘。请确保删除正确的**Ceph块设备!**

首先,您应该知道磁盘驻留在哪个Ceph池中。然后从Ceph中删除该卷(volume-id是您在上一步"创建Cinder卷"中记录的卷ID ):

rbd -p <ceph_pool> rm volume-<volume-id>

下一步是将VMDK文件转换为Ceph上的卷(所有ceph的参数都是为了更好的性能。vmdk_disk_file变量是vmdk文件的完整路径。volume-id**是您之前记下的ID)。

qemu-img convert -p <vmdk_disk_file> -O rbd rbd:<ceph_pool>/volume-<volume-id>

对虚拟机的所有虚拟磁盘执行此操作。

小心!rbd命令非常强大(可能会破坏Ceph上比预期更多的数据,请谨慎使用)!

7.创建Neutron端口(可选)

在某些情况下,您可能需要设置固定的IP地址或MAC地址。您可以通过使用neutron创建端口并在下一步中使用该端口(在OpenStack中创建和启动实例中进行关联)来实现。您首先应该知道network_name是什么(nova net-list),需要使用" Label"。仅network_name是必需的。您还可以通过添加来添加安全组。

--security-group <security_group_name>

为每个安全组添加此参数,因此,如果要添加6个安全组,则应添加此参数6次。

neutron port-create --fixed-ip ip_address=<ip_address> --mac-address <mac_address> <network_name> --name <port_name>

注意neutron端口的ID,下一步将需要它。

8.在OpenStack中创建并启动实例

现在,我们已经准备就绪,可以使用Cinder卷和可选的neutron端口创建实例。注意启动磁盘的卷ID。现在,您只需要知道要选择的flavor的ID。运行nova flavor-list,以获取所所需要flavor的flavor ID。

现在,您可以创建并启动新实例:

nova boot <instance_name> --flavor <flavor_id> --boot-volume <boot_volume_id> --nic port-id=<neutron_port_id>

注意实例ID。现在,通过执行此命令来添加实例的其他磁盘(如果要添加其他卷):

nova volume-attach <instance_ID> <volume_id>

总结

迁移过程中可能会出现失败的情况,尤其是windows。错误版本的驱动程序极易导致windows系统蓝屏,所以正确的安装驱动非常重要。对于较大的数据盘,本案例是使用直接上传到ceph中,替换掉相同大小的空卷,如果通过镜像glance的方式上传,然后创建云盘,那么会多花几倍的时间。所以合理以及灵活的使用Ceph能大大加快迁移的速度。

本文主要讲解了操作的流程,如果是批量操作的话,完全可以写成对应的编排脚本,进行批量迁移。脚本运行之前一定要充分测试。

    推荐阅读
  • 女人最适合情侣网名(适合情侣的网名)

    女人最适合情侣网名?我们一起去了解并探讨一下这个问题吧!呆萌小可爱|高冷大帅比姐{de}高傲|哥{de}格调晴空少女|深巷浪人碧海蓝天白婚纱|钻戒红毯我的他深情凭借时光陪伴|时光依附深情存在治愈系少男|病态系少女亡心少女久溺深海|失心少年长眠情崖超萌系美少女!|超暖系呆少年!逗比女王范|怪咖国王范若相依不别离|若别离不想念她是光芒亦能暖阳|他是信仰亦会发光

  • 有种情叫做自作多情的句子(浪漫型深度解析)

    经典人物刘晓庆、蔡琴、苏芮、张馨予、郝蕾、玛莉莲·梦露、罗密·施耐德、水果姐凯蒂·佩里等。永远的茜茜公主,罗密·施奈德蔡琴水果姐1浪漫型人着装要求款式、剪裁:曲线剪裁,X型剪裁。浪漫型人比优雅型人要更大气,显现大女人的风情万种。回避土布粗麻等粗糙厚重的面料。包包包包选择软质感的拎包、挎包,心形、圆形包。发型对长短没要求,短发、长发、中长发都可以,但一定是卷发。大波浪批肩发、烫过再盘发。

  • 枸杞颜色怎么算好(枸杞泡水颜色怎么算好)

    枸杞可以补血安神,改善睡眠,并且可防止皮肤皱纹的提早生成,是目前自然界最有效的抗氧化物质。但是需要注意的是,这种方法烹饪枸杞时间要注意控制,应该在起锅之前加入,这样才不会导致枸杞子中所含有的营养价值大量流失。除此之外,也可以将枸杞子泡茶或者是制作成为凉菜。日常如果需要对枸杞子进行清洗,那么只需要稍微放入温水中清洗一下就可以了。

  • iPhone6sp有没有必要升ios13 iphone6s有必要升级ios13吗

    ios13支持iPhoneiPhone6sp,不过考虑到ios13刚刚发布,建议iPhone6sp的用户在iPhone系统更新两到三个版本后,逐渐稳定,BUG也逐渐修复时,那个时候才是升级ios13的最佳时机。

  • 酉怎么读音(酉念什么)

    接下来我们就一起去了解一下吧!酉怎么读音酉读yǒu。

  • 老豹子汽车(13.68万赛车开回家)

    最近,我们刚好就试驾了这么一台,一直在键盘车神里处于“鄙视链下层”的“网红车”——广汽传祺影豹。不过说来惭愧,尽管影豹已经上市了整整一年,但我却还没有机会试到这台车。无论你能否接受这个如此张牙舞爪的外观,你都不能否认在加上声浪以后,这台影豹R-Style赛道版绝对能够在街头获得足够多的回头率。而影豹如果是在山路上以中低强度驾驶的话,整体的感觉还是非常不错的。

  • 功败垂成是什么意思啊(看完你就知道了)

    功败垂成是什么意思啊功败垂成,汉语成语,拼音是gōngbàichuíchéng,意思是指事情接近成功的时候却遭到了失败。出自《三国志·杨阜传》:“弃垂成之功,陷不义之名,阜以死守之。”接到皇帝就地驻守的圣旨,谢玄眼看千秋功业胜利在望,却因错失良机,马上功亏一篑,一次次上疏,陈述利害,乃至提出辞呈,均未获准。在挥师回朝途中,终因忧愤交集染病身亡,死时才46岁。统一北方未遂,人们感叹他是功败垂成。

  • 考生自由可投是什么意思(考生自由可投介绍)

    另外一种情况就是考生被投入高校后,因为考生填报志愿时内容为“不服从专业调剂”或者是“身体受限”等原因被退档后,也会出现“自由可投”的状态。在经省级招生主管部门录取检查,审核全部通过后。如果同意高校的录取意见,随后考生的状态会显示为“录取”。

  • 拥抱着你的离去歌词(歌曲拥抱着你的离去歌词)

    拥抱着你的离去歌词?跟着小编一起来看一看吧!收录于同名专辑《拥抱你离去》中。

  • 全面战争三国女生声优是谁 全面战争三国 配音

    全面战争三国女生声优是谁?想必很多朋友都还不是很清楚吧,所以呢小编今天给大家带来的就是全面战争三国全女性配音人员介绍,需要的朋友还不快进来看看。