HyperV2012的实时迁移是一项非常有价值的重大改进。
什么叫做实时迁移呢?在介绍实时迁移之前,我们来介绍一下之前版本(2008、2008R2)的"快速迁移"吧。所谓快速迁移,就是从A主机到B主机之前,通过存储、复制、和重新启动来完成虚拟机的移动。由于虚拟机会有一个保存再重启的过程,所以快速迁移会有一个短暂的服务中断时间。
而所谓的"实时迁移"就是字面的意思,实时,几乎让你感觉不到中断。
我们可以看看下表Windows2008到2012之间的一些性能差距。这里仅关注"实时迁移"这一块就可以了。在2008中根本不支持实时迁移、在2008R2中也仅仅支持一条实时迁移,同时也是有条件的,需要SCVMM,而在WindowsServer2012中,就没有任何限制了。
我们可以通过实时迁移做什么呢?
=================我是分隔线=================
下面来跟我一起体验一下吧。
===========我是分隔线=============
委派
我们先来体验一下无共享迁移。在体验无共享迁移之前,我们要做的第一件事情就是"委派"。为什么要委派呢?下面这张图很能说明问题。不得不说的是,这张图的来源是微软的MVA虚拟学员,水印我也搞不掉,这图也不是我原创的。
我们现在所操作的SCVMM相当于这个用户,那么它希望服务器A和服务器B去通信和迁移。但是我们多数时间并不是直接在服务器A上去操作的(如果你直接登录A,去迁移到B是可以成功的),我们在SCVMM上声明这件事情,让A和B去通信,很明显,这需要一种权限,委派就是让两个不信任的设备相互信任。这类似于我们在企业中常见的委任状、领导指派谁谁谁干活,这些都不是直接嘴一张就能实现的,需要一个合法合理的授权行为。而这个授权行为,就是"委派"。
委派要说简单也很简单,下面一张图就全搞定了。
在域控制器上,找到一台HyperV的服务器,查看他的属性,选择委派,勾选仅信任此计算机来委派指定的服务器→仅使用Kerberos→添加计算机→输入其他的HyperV服务器名称(有多台同时又都参与这个实时迁移,那么就都要加一遍),选择CIFS和MicroSoft virtural System Migration Service就可以了。
委派成功之后,我们需要对HyperV主机配置一下实时迁移的网络。实时迁移的网络配置基本是有几台机器就要配置几台。
我们在VMM中,选中需要操作的HyperV主机,右键查看属性,对虚拟机交换机和迁移设置进行如下图的修改。主要是保证迁移主机和被迁移主机都拥有同样的虚拟交换机。
迁移设置默认设置即可。如果担心安全为题,可以在传入实时迁移网络设置处,增加允许迁进来的HyperV主机IP地址,仅允许这些IP地址进行迁移。
实时迁移
打开VMM控制台,在一台物理机上选中任意一个虚拟机,右键点击,选择迁移虚拟机。
继续的时候,我们看到报错了。发现原因是处理器功能不一致。造成这个错误的原因是,主机A和主机B采用了不一样的CPU。
修改这个很简单,修改这台虚拟机的属性,勾选下图这个选项卡即可。可能有人会说。要修改必须要关机啊,这个所谓的不关机不是骗局么?
首先大家要确认的一点是,在生产环境中,CPU类型不一致的情况比较少见(毕竟都是至强的U,同批次同型号);其次,你现在已经知道不勾选这个选项会造成一些不良后果,那么以后真实施的时候,也就可以避免这个问题。
强烈建议,对重要业务、重要的虚拟机,一定要勾选这个选项。因为你不知道未来会不会迁移这个虚拟机,也不知道它会不会使用群集。
再次操作迁移虚拟机,发现已经没有报错了。
接下来选择迁移后的虚拟机保存的位置,可以保存在对端的本地磁盘上,也可以保存在SMB共享上,毕竟SMB算是一个最廉价的共享存储了。(关于如何将虚拟机放在SMB3.0上,可以参考http://jiushu.blog.51cto.com/972756/1185875中的SMB文件共享部分。)
然后是对端的网络配置,需要注意的是,迁移到的主机上必须有一张网卡和迁移前的主机在同一个网络中。另外不用担心迁移过后MAC地址会自动变之类的问题。使用"实时迁移",虚拟机的MAC地址是不会改变的。
最后我们可以看一下摘要,同时查看所执行的脚本。说实话,脚本还是非常值得大家学习的。
在任务中可以看到迁移的详细过程,这个时候我们其实已经不需要去管它了,过一会就能完成实时迁移动作,当然时间可长可短,因为HyperV首先会拷贝一份完整的镜像到被迁移的机器上,然后复制内存和其他信息过去,耗时最长的就是拷贝镜像这个过程。
至此实时迁移的简单介绍就完成了。实现实时迁移的条件也显而易见了,最关键的是
============我是分隔线=========================
可能有人会觉得这个技术好简单。我这里总结一下,希望大家能够认识到实时迁移的威力。
最后用一张成功迁移的作业图作为本文的结束,大概耗时18分钟,中断时间丢2个包。
如果使用共享存储,那么时间一般都在1分钟左右,中断时间和无共享迁移一致。