管理员希望虚拟机的在线迁移过程越快完成越好。Windows Server 2008 R2以及Windows Server 2012没有提供优化在线迁移的方式,但是Windows Server 2012 R2对在线迁移过程进行了优化。
要了解如何优化在线迁移,必须先了解在线迁移的工作机制。当管理员启动在线迁移时,Hyper-V会建立与目标主机的连接并创建一个空白虚拟机。然后hypervisor给新创建的虚拟机分配硬件,分配的硬件资源与源虚拟机一致。
接下来,Hyper-V通过网络将虚拟机的内存拷贝至新创建的虚拟机。内存块的拷贝单位是4KB。因为虚拟机一直在运行,所以在整个拷贝过程中虚拟机的工作集内存一直在不断变化。因此,Hyper-V会记录哪些内存块被修改了并按需拷贝这些变化的内存块。整个过程涉及一些不同的内存拷贝传送。一旦内存内容传送完成,底层存储将转由目标主机控制,虚拟机会在目标主机被置于在线状态。***,进入虚拟机的网络流量被重新路由至目标主机的网络适配器。
虚拟机在线迁移速度
虚拟机在线迁移速度受两大因素的影响。
首先,虚拟机内存的变化数量将影响在线迁移性能。整个内存内容必须被复制到目标主机,这意味着在复制过程中内存变化的内容越多,在初始拷贝操作完成后,将会产生更多的内存复制操作。虚拟机内存变化的内容越多,完成在线迁移所需要的时间就越长。
其次,Hyper-V主机通过网络传输内存内容的速度将影响在线迁移进度。拷贝过程越快,完成在线迁移所需要的时间也就越短。这一概念构成了新在线迁移性能选项的基础。
性能优化
打开Hyper-V Manager,右键单击主机服务器并在弹出的快捷菜单中选择Hyper-V设置选项就可以访问Windows Server 2012 R2 Hyper-V在线迁移性能选项了。如图1所示,打开Hyper-V设置对话框后,展开在线迁移标签并单击高级选项。
图1. 在线迁移性能设置位于高级特性容器内。
在Windows Server 2008 R2和Windows Server 2012中,Hyper-V使用基本的TCP/IP连接简化在线迁移过程。正如图1所示,TCP/IP迁移仍旧是一种选择,但应经不再是默认选择了。
在Windows Server 2012 R2中,Hyper-V在对虚拟机进行在线迁移时默认使用压缩。这一特性在将虚拟机的内存传输到目标主机之前先进行压缩。压缩降低了带宽消耗,减少了在线迁移时间。
然而,压缩的缺点是会消耗CPU资源。幸运的是,Hyper-V主机很少受CPU的约束,受限制最多的往往是物理内存。即使是这样,Hyper-V会在执行在线迁移之前先检查CPU负载。如果没有足够多的CPU资源,Hyper-V将自动转换为使用标准的、基于TCP/IP的非压缩在线迁移。
除压缩外,进行在线迁移时你还可以使用SMB(服务器消息块)。该迁移技术源于硬件卸载。正在被迁移的虚拟机的内存通过SMB连接传输到目标主机。 SMB提供了更好的在线迁移性能,但是它并非默认选项因为只有源端主机和目标主机的网络适配器都支持远程直接内存访问(RDMA)时才能启用SMB。直到2013年10月,社区硬件适配器没有提供RDMA支持。
微软已经在提升在线迁移性能方面取得了很大进展。如果所有Hyper-V主机都配置了兼容RDMA的网络适配器,启用SMB选项就可以达到***的性能。如果Hyper-V主机适配器不支持RDMA,那么你应该使用压缩选项—除非你的Hyper-V主机性能受CPU限制。