我们在这个系列文章中已相当全面地介绍了Hyper-V的新特性,这回聊聊这个特性:虚拟机迁移。我们不妨深入地介绍实时迁移(Live Migration)、无共享实时迁移(Shared Nothing Live Migration)和实时存储迁移(Live Storage Migration)。
如果说虚拟化管理员非要挑选一项他们不可或缺的特性,我确信大多数人会选择虚拟机迁移。能够迁移虚拟机、又不给最终用户带来明显的停机时间,这为IT部门在维护、打补丁和高可用性方面提供了极大的灵活性。
最初版本的Hyper-V仅仅提供快速迁移(Quick Migration):在从一个主机切换到另一个主机的过程中,这项特性暂时停止虚拟机。在正常运行时间不是很关键的时候,这项特性仍然可用;而在大多数情况下,快速迁移的速度快于实时迁移。Windows Server 2008 R2中的Hyper-V增添了实时迁移特性,但是只允许在一个集群中的两个主机之间进行单一的实时迁移。由于2008 R2集群中的***主机数量是16个,这允许总共有八路实时迁移同时进行。虽然它会按顺序处理来自一个主机的多路实时迁移,即一路实时迁移后进行下一路实时迁移,但是这在大型环境下是个局限因素。
图1:Hyper-V里面的所有虚拟机迁移操作都由同一个向导程序来处理;你只要选择所需的类型即可。
你想同时进行多少路实时迁移,Windows Server 2012就允许进行多少路实时迁移,每个主机有个设置,你可以决定想允许多少路实时迁移。并行实时迁移方面的局限性其实取决于你的硬件:你的实时迁移网络连接速度是1 Gbps还是10 Gbps(或是不是几块网卡组成的群集)、每个虚拟机(在分配内存方面)有多大、在实时迁移过程中每个虚拟机中存储内容的变化速度有多快?基于这些参数,你在你的网络中决定允许每个主机上进行多少路实时迁移。在集群中,一个主机失效后,在该节点上运行的虚拟机就在其他主机上重启。当原始主机恢复运行后,虚拟机会自动实现故障恢复——在2008 R2中,这是快速迁移;而在2012中,这是实时迁移。
Hyper-V主机上的实时迁移在默认情况下被禁用,于是你不得不明确允许实时迁移进出主机。此外一个默认设置是,将所有可用的网络用于实时迁移流量——当然,这应该只在测试环境下使用。在生产环境下,某个特定的网络应该用于实时迁移。
图2:在能够迁移虚拟机之前,你需要在非集群主机上启用进出的实时迁移。
Windows Server 2012还新增了这两项功能:将虚拟机的虚拟硬盘存储在SMB 3.0文件共享区上 (第五篇已有介绍),以及在非集群主机之间实时迁移运行中虚拟机的功能。这在数据中心设计方面大大提高了灵活性,因为没有高可用性要求的低优先级虚拟机可以存储在简单的文件共享区上,但是仍可以在主机之间迁移,以便进行维护。
就你需要提供给用户的所有虚拟机而言,要留意:当你进入到可信赖的帐户选择器(account picker)以便添加计算机帐户时,这些并不会出现。默认情况下,只有用户、用户组和安全主体才会出现。只要将计算机帐户添加到帐户选择器寻找的对象,你应该没有任何问题。要是你有好多个计算机帐户要添加,那么为实时迁移创建一个群组,然后将所有Hyper-V主机计算机帐户添加到该群组来得比较容易。
图3:确保你记得将计算机帐户添加到你所寻找的对象类型列表中。
实时存储迁移
Windows Server 2012还允许你通过实时存储迁移(LSM),迁移运行中虚拟机的虚拟硬盘,不会给最终用户带来停机时间。对CIO来说这项特性很重要的原因是,“因为你迟早要更换存储区域网络(SAN);借助这项特性,你就能将所有虚拟机迁移到新的SAN上,没有停机时间。”对我们这些一线工作人员来说,使用这项特性的主要原因是,能够将虚拟机从一只空间耗尽(通常是由于使用动态磁盘)的磁盘迁移到拥有足够存储空间的另一只磁盘,希望没有人注意到这个过程。
由于实时存储迁移,集群不再是虚拟机迁移的边界。因此,可以从集群取走虚拟机(就迁移虚拟机所用的那段时间而言不具有高可用性),实时存储迁移到另一个集群上,然后作为高可用性角色添加到新的集群中——这一切都不会带来虚拟机停运时间。SCVMM 2012 SP1会用一个向导程序来处理这项任务,但如果换成Hyper-V管理器或PowerShell,这是个分为多个步骤的过程。
图4:你可以迁移整个虚拟机,也可以只迁移存储系统,包括选择迁移到不同位置的单个VHD(X)文件。
LSM从技术上来说相当令人关注。在初始会话建立起来之后,来自每个VHD(X)文件的数据被复制到目的地存储系统,同时还可以跟踪磁盘的写入变化。这最终实现了存储镜像:写操作在两个主机上都进行,随后进行正常的实时迁移,将虚拟机实际迁移到目的地主机。
无共享实时迁移
Windows Server 2012还提供了在两个除了网络连接外,什么都不共享的主机之间迁移运行中虚拟机的特性,这在业内属于首创。这似乎是一项在生产环境中应用有限的特性,但是要考虑它所能实现的许多场景,包括前面所述的多个集群之间迁移虚拟机。
非集群实时迁移存在的一个问题是,如果你使用远程桌面(Remote Desktop)远程连接至主机1,就开始实时迁移,将虚拟机实时迁移到主机2,这一步成功完成后,你想把虚拟机迁移回到主机1。除非你通过远程桌面连接至主机2,并在主机2那里开始实时迁移,否则可能会收到错误信息。这是由于Windows安全和凭证的工作方式使然;具体来说,Windows不允许一个服务器把你的凭证传递给另一个服务器。解决办法就是,要么以传统方式启用约束委派,这需要创建域管理员凭证。另一个办法是,使用基于资源的Kerberos约束委派,这并不需要拥有域管理员权限,而且还可以跨域和林信任工作。你还可以使用采用CredSSP协议的PowerShell Remoting或者拥有正确配置的Run As帐户的SCVMM 2012 SP1,为非集群主机管理安全。
其他改进
现在你可以在虚拟机运行的过程中合并快照,这也实际上删除了快照文件。另一个巨大的改进在于虚拟机导出和导入方面;在之前的版本中,只要你导入到的目标服务器拥有非常相似的配置,这项特性效果就很好,而虚拟机在导入过程中往往“丢失”部分配置项。新的导入向导程序会检查配置,并询问哪些配置项并不相符,以便让你可以将虚拟机连起来,以便在新的主机上工作。更棒的是,你实际上没必要再使用导出功能,只要你有VHD(X)文件和配置文件,就可以在主机上导入虚拟机。
这是我们之前介绍Windows Server 2012中Hyper-V技术改进的一系列文章的结束篇。但是我们还没有大功告成:下一次,我将全面比较Hyper-V和VMware vSphere,既着眼于技术层面,还着眼于每家公司对待虚拟机和私有云采取的做法。