之前老王曾经在WSFC2008R2跨群集迁移WSFC2012R2一文中提到过虚拟化迁移,但是由于不是专门写虚拟化迁移的文章,所以写的不是很详尽,本文我们将详细讨论微软虚拟化的跨版本迁移


微软Hyper-V于2008发布,经历过2008,2008R2,2012,2012R2,2016等五个版本,其中目前国内使用最多的是2008R2,2012R2两个版本,可能大多数用户使用2008R2 Hyper-V用作过尝试测试,或者觉得2008R2 Hyper-V的性能不能满足需求,2012R2 Hyper-V可以说是一个真正可以在企业里面部署的企业级虚拟化产品,可以提供并不逊色于其它虚拟化厂商的性能,最主要的是该有的企业级功能都已经具备,因此随着企业了解,我相信会有越来越多的企业采用2012R2 hyper-v虚拟化,在采用过程中避免不了要面临迁移的问题,可能公司已经在先有2008R2上面部署了一些虚拟机,如何迁移到新的平台,有哪些方法可以选择,怎么迁移停机时间最少,这就是我们今天需要讨论的话题


2008R2到2012R2迁移的最大一个问题就是2012R2 hyper-v不能向下兼容 2008R2 hyper-v,即是说,2008R2并不能直接把虚拟机以实时迁移的方式迁移到2012R2,所以,如果2008R2是单机情况下,迁移时需要关闭虚拟机,进行迁移,2008R2单机迁移到2012R2单机,或迁移到2012R2群集,方法大体有以下几种


  1. 直接拷贝2008R2虚拟机VHD,到2012R2上面基于VHD新建虚拟机:这个方法的好处是,如果在网络带宽足够大的情况下,你可以很快的把VHD文件拷贝到2012R2服务器,然后新建,开机,一系列过程下来,对于技术要求并不会很高,没有什么操作风险,你只需要选择一个合适的时间点,关机虚拟机拷贝文件即可,这种方式的宕机时间是从关闭虚拟机+拷贝VHD到2012R2+创建开机虚拟机,直到最终创建完成虚拟机,才可以重新对外提供服务,这种方法的弊端,不适合网络带宽不足的企业环境,如果带宽不足,拷贝文件的时间会很长,将延长宕机时间,其二,只适合简单的虚拟机,即是说对于虚拟机并没有过多的设置,例如设置多个网卡,每个网卡设置了不同的参数功能,我们如果只是拷贝VHD,这些虚拟机设置是不会带过去的,你需要手动记下来,然后新建虚拟机的时候按照记录进行调整,不支持avhd,即不支持差异磁盘和快照,只支持vhd文件

      此场景我们假定2008R2和2012R2使用不同存储,如果是使用相同存储的情况下,可以将现有2008R2存储添加一个目标给2012R2,然后直接把所有2008R2上面虚拟机的设置记录,移除2008R2存储目标,关闭2008R2虚拟机,在2012R2上面基于设置新建虚拟机,宕机时间是存储目标从2008R2移除+虚拟机关闭+虚拟机创建开机


2.虚拟机导入,虽然2012R2不能支持2008R2直接实时迁移,但是可以支持2008R2的虚拟机通过导入的方式,添加到2012R2的环境,不同的是2012R2可以虚拟机实时导出,2008R2只能关机导出,这种虚拟机导入导出的方式,好处就是可以导出虚拟机所有配置+磁盘,导入时会把配置和磁盘一起导入,不需要管理员进行额外记录,坏处就是,2008R2时代对于虚拟机导出导入限制太多,例如被导出的虚拟机MAC地址都设置为静态,使用标准网络适配器,不能包括快照等等,而且有时候导出失败需要进行排错,较为麻烦,有时导出时间比直接拷贝VHD的时间要长很多,因此我给大家的建议,如果虚拟机没有太多的设置,单机场景下直接拷贝VHD新建最好,如果虚拟机有很多单独的设置,则可以采用导入导出的方式进行操作


3.VMM迁移,VMM2012R2支持添加2008R2,2012,2012R2 Hyper-V,也支持跨版本互相迁移,跨单机群集互相迁移,需要注意Hyper-V 2008R2 虽然可以在VMM被跨版本迁移到2012,2012R2,但实际上背后走的是导入导出,并非直接迁移,即是说2008R2虚拟机也需要满足导出的需求才可以被VMM迁移,与单独的虚拟机导入导出和直接拷贝VHD对比,最大的一点不同是,通过VMM的跨版本迁移,当虚拟机被导入到2012或2012R2时,会自动为虚拟机升级集成组件,而我们采用单独导入导出和直接拷贝VHD都需要事后手动或脚本针对虚拟机升级集成组件。VMM需要单独付费购买。


总结来看,微软自家的2008R2单机迁移到2012R2大体分为两种,1.直接拷贝VHD,2.导入导出。两种办法都避免不了宕机时间,虚拟机必须关闭被导出,必须关机拷贝VHD文件。我们上面讨论的场景,都是直接迁移的场景,如果是替换场景,例如当前1台2008R2宿主机,1台新加2012R2宿主机,希望虚拟机迁移到新加宿主机后,原有宿主机也能升级利用,在这种替换场景下,建议确认虚拟机已经导入或新建在新宿主机后,直接对原宿主机重装系统,不建议采用升级安装。


除了微软自身的方案,另外推荐一个单机对单机的迁移方案,Veeam Backup&Replication,通过它我们可以添加进来2008R2,2012,2012R2 Hyper-v主机,然后将2008R2的虚拟机复制到2012R2!直接2008R2作为复制主站点,2012R2作为DR站点,veeam是支持这样做的,它处理了复制兼容性的问题,这样做了之后我们就可以直接通过永久性转移或者计划内转移的方式,将虚拟机从2008R2上面,直接转移到2012R2上面,它最大的好处是和hyper-v整合好,虚拟机转移到2012R2 DR站点后,直接在hyper-v列表可以看见,不再需要导入虚拟机。通过这种方式我们可以最低化宕机时间,例如如果采用计划内转移的方式,当前虚拟机实时从2008R2复制到2012R2,当某一秒增量数据从2008R2完全同步到2012R2,即隔断2008R2,开机上线2012R2虚拟机,宕机时间仅是虚拟机切割的时间+虚拟机2012R2开机上线的时间。未来希望微软也可以做到这一点,自身支持hyper-v复制跨版本

微软虚拟化跨版本迁移_第1张图片

处于可用性的考虑,一些企业也可能选择在2008R2上面部署了WSFC群集架构,基于WSFC再部署Hyper-V群集,以实现虚拟机的高可用,针对于2008R2群集到2012R2群集的迁移,微软自身提供了低宕机时间的解决方案,即复制群集角色,缺点是这种方式对于操作人员的技术有一定的要求。


由于在2016之前没有滚动升级的技术,因此复制群集角色仅支持跨群集的迁移,即是说您必须要有两个群集才可以完成这件事情


所谓复制群集角色,即是指,把老群集里面的群集角色和磁盘配置复制一份到新群集,复制群集复制仅负责复制配置信息等元数据至新数据,不实际拷贝虚拟机文件,群集数据文件,但会映射复制群集磁盘配置至新群集


2008R2群集虚拟机迁移到2012R2,复制群集角色操作流程如下


  1. 确保新旧群集都可连接到存储,但同一时刻,存储只对单个群集可见

  2. 存储不添加到新群集 群集磁盘中

  3. 运行群集迁移向导,迁移虚拟机配置,CSV配置到新群集

  4. 脱机旧群集虚拟机,取消分配给旧群集的磁盘

  5. 联机旧群集迁移过来的CSV,这时会自动使用之前同时分配给新旧群集的磁盘

  6. 联机虚拟机


切割实例


  1. 虚拟机运作在2008R2群集CSV

  2. 分配CSV背后可用磁盘目标给2012R2群集节点

  3. 2012R2群集节点可以看到磁盘,但是不添加到群集存储

  4. 执行跨群集迁移向导迁移虚拟机

  5. 脱机08R2虚拟机,存储取消分配给08R2群集节点

  6. 12R2群集联机CSV

  7. 12R2群集联机虚拟机


由此大家可以看出一个问题,如果我们在有群集的情况下,那么我们迁移过程的宕机时间是很短的,虚拟机不需要一直被关机才能执行迁移,我们可以一直运作虚拟机,宕机时间仅是虚拟机在2008R2群集离线+2012R2群集联机存储+联机虚拟机的时间。

在复制群集角色方案中,还涉及到一个场景,即存储的映射,如果我们要执行跨群集的复制角色,那么我们必须要将虚拟机CSV存储那块磁盘,同时映射给08R2和12R2群集,但是切割好时间节点,12R2不添加存储至群集中直到08离线,12R2上线时因为虚拟机迁移过来,会带着CSV属性的,而CSV只认那一块磁盘,如果我们采用新群集新存储,旧群集旧存储的方式就会发生CSV的丢失,它会无法认到自己使用的那块盘。

在我们使用跨群集迁移向导时需要注意一点,针对于虚拟机的跨群集迁移向导来说,本质上迁移向导是按照CSV进行迁移,我们只能选择一个CSV,然后把下面所有的虚拟机都迁移过去,而不能选择CSV下面特定的单个虚拟机,因此可以看出,通过跨群集迁移向导,适合群集上面跑了很多虚拟机的场景,如果虚拟机不多的话您也可以选择群集间导入导出的的方式,但是老王依然建议走跨群集迁移向导,因为这样宕机时间最短。


通过复制群集角色可以帮助我们在很低宕机时间的情况下完成虚拟机的跨版本迁移,宕机时间仅发生在切换,但是复制群集角色也有它的不足,即跨群集复制角色,在虚拟机场景下,必须两个群集接入到同一个存储,通过切换间隔来进行处理切割


那么如果两个群集希望各自拥有自身存储的情况下又该如何处理呢,因为不见得所有场景下你都能把两个站点接入到同一个存储,一个不错的解决方案是“反弹迁移“


反弹迁移解决方案,我们首先在老数据中心,选择几台宿主机,迁移走负载,重装为2012R2群集,利用复制群集角色,将2008R2群集虚拟机切换至本地2012R2群集,这种解决方案在这一步,要求被重做的两台2012R2宿主机性能足够强,可以承载起同站点2008R2上面所有虚拟机负载,当虚拟机被迁移到老数据中心临时2012R2群集后,再和新数据中心建立连接,利用2012的无共享实时迁移技术,直接把虚拟机+存储从老数据中心不停机实时迁移至新数据中心。


这种解决方案利用了老数据中心做2012R2中转群集的方式来实现跨群集,跨不同存储的虚拟机迁移,宕机时间是老数据中心2008R2切换到2012R2的关闭虚拟机+联机存储+联机虚拟机的时间 + 无共享实时迁移最后的切换丢包。因此宕机时间几乎很少,关键点在于需要在老数据选择可以承载所有负载的宿主机重装2012R2,其二,2012拥有无共享实时迁移技术,即便两个宿主机连接不同存储,不在同一个群集,也可以把虚拟机迁移过去。此方案尤为适用跨城,跨地域的多数据中心迁移方案

图中VMM为可选项,只要虚拟机迁移到中转2012R2群集,就可以直接无共享实时迁移到新数据中心2012R2群集

微软虚拟化跨版本迁移_第2张图片

上面我们讨论了2008R2迁移到2012R2,单机解决方案,群集解决方案,那么2012R2到2016呢,实际上2012R2到2016 比 2008R2到2012R2容易得多,原因在于2016实现了向下兼容迁移技术,即是说虚拟机可以直接从2012R2实时迁移到2016,但是迁移到2016之后仍采用2012R2版本格式,并不能完全享受2016最新功能,如果希望享受2016hyper-v最新功能,需要把迁移过来的虚拟机选择一个时间节点,关机升级虚拟机配置即可。对于群集,2012R2到2016支持滚动升级,即只在一个群集里面就可以完成迁移,虚拟机可以直接从2012节点移动到2016节点。


WSFC2012R2滚动升级至WSFC2016

https://blog.51cto.com/wzde2012/1962158

WSFC复制群集角色介绍

https://blog.51cto.com/wzde2012/1959545

WSFC2008R2跨群集迁移WSFC2012R2

https://blog.51cto.com/wzde2012/1960273


最终希望可以通过这篇文章为大家打开新的思路,明白微软虚拟化迁移的多种方法过程,为大家实际迁移过程带来帮助