【51CTO精选译文】在虚拟化环境中,克隆(cloning)这个术语是指为现有的虚拟机创建一个精确副本即克隆的过程。克隆虚拟机并不破坏原始虚拟机,而是仅仅为虚拟机的虚拟硬盘和配置文件创建一个副本。如果克隆时,虚拟机正好在运行或处于保存状态,那么因而创建的克隆同样含有原始虚拟机的存储状态。
克隆虚拟机是原始虚拟机的精确副本,这意味着它有一样的安全标识符(SID)和计算机名称。它可能还有一样的IP地址及/或MAC地址,这取决于克隆操作是如何进行的。如果是这种情况,原始虚拟机和克隆虚拟机又都在同一个网络上运行,那么会因为重复的网络地址而出现问题。如果网络是活动目录森林的一部分,原始虚拟机和克隆虚拟机将使用活动目录中一样的计算机帐户,这同样会带来问题。由于诸如此类的考量因素,克隆虚拟机通常不应该在生产网络上使用。
由于如果你不小心将克隆虚拟机引入到原始虚拟机所在的同一个网络上,克隆虚拟机会带来问题,"克隆"这个术语有时用来指分两个步骤的这一过程:在虚拟机上运行Sysprep程序,然后通过运行Sysprep程序所得的映像,生成新的虚拟机。一旦虚拟机以这种方式克隆而成,它可以用作创建新虚拟机的模板,这些新虚拟机在大多数方面与原始虚拟机一模一样,但每个虚拟机都有各自的独特SID和计算机名称,那样它们可以在同一个网络上共存。不过,除非另有指定,否则就本文而言,我会使用"克隆机"这个术语指现有虚拟机的准确副本。
克隆的若干优点
能够克隆虚拟机的***优点之一是,可以排查与在虚拟机的访客操作系统中运行的应用程序和服务有关的问题。为此,你需要能够在虚拟机运行时克隆虚拟机。
比如说,假设你有一个虚拟机在你的生产网络上运行,客户们在使用该虚拟机中的一个应用程序。随后一些客户开始抱怨:他们在使用该应用程序时,时常出现应用程序超时、挂起或崩溃的问题。你如何排查这个问题?客户在使用该应用程序时试图对应用程序环境进行改动有风险,所以你可能会等到深夜,那时没有客户访问该应用程序,然后再试图排查这个问题。这就意味着原本已经疲惫不堪的管理员(你)又要忙一个晚上了。
不过,如果你可以在问题出现时创建虚拟机的精确副本(克隆机),就可以将克隆虚拟机复制到测试网络上,那样你就可以安全地对它进行操作,设法查明应用程序出了什么岔子。当然,如果应用程序是多层体系,那么情况变得比较复杂,因为你需要克隆包括虚拟机、虚拟网络和存储系统的整个应用程序环境。但从理论上来说,你可以使用诸如此类的实时克隆功能,安全地排查与虚拟机里面运行的应用程序和服务有关的问题。
借助VMware进行克隆
使用VMware虚拟化平台的管理员们已经很熟悉如何克隆实时(运行中)的虚拟机,因为这项功能出现在VMware vCenter Server中已有一段时日了,它提供了一种集中式平台,便于管理VMware vSphere环境。
克隆在VMware ESXi主机上运行的虚拟机的步骤很简单,在一篇题为《在vCenter Server中克隆虚拟机(1027865)》的文章中的VMware知识库部分已有概述,详见http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1027865。由于克隆不是一种瞬时操作,又由于未提交事务可能在虚拟机的磁盘存储系统中等待处理,所以克隆过程可能并不尽善尽美。想更详细地了解使用VMware vSphere Client克隆虚拟机有关的步骤,请参阅vSpher 5文档中心中一篇题为《在vSphere Client中克隆虚拟机》的文章,详见http://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.vsphere.vm_admin.doc_50%2FGUID-5C504B67-CDB3-42FC-8B3B-737201A725DD.html。
借助Hyper-V进行克隆
微软系统中心虚拟机管理器(VMM)自2008年发布的平台以来就支持虚拟机克隆功能。VMM文档特别指出,你应该先使用sysprep处理虚拟机,然后对它进行克隆,那样你就能利用克隆后的虚拟机创建新的虚拟机。图1显示了使用VMM 2012 R2的SCVMM管理员控制台,克隆运行中(实时)的虚拟机,并配置给Windows Server 2012 R2 Hyper-V主机。
图1:使用系统中心虚拟机管理器2012 R2,实时克隆虚拟机
VMM 2012 R2中的实时克隆创建了原始虚拟机的精确副本,有着一样的计算机名称、SID、MAC地址和IP地址。在该例中,我将克隆机部署到有别于原始虚拟机的另一个逻辑网络上,以便不会有任何冲突。
要是你的环境中没有部署System Center 2012 R2,该怎么办?有没有什么办法单单使用Hyper-V,克隆实时虚拟机?如果你的Hyper-V主机运行***版本的Windows Server 2012 R2,答案是肯定的,因为该版本中引入的一项新功能就是能够在虚拟机运行时导出虚拟机。尤其吸引人的地方是,你还可以导出虚拟机的检查点(快照)。
下面简要介绍了你如何实时导出在Windows Server 2012 R2 Hyper-V上运行的虚拟机,然后将它导入到另一个主机上,创建原始虚拟机的克隆机。图2显示了Hyper-V管理器控制台被用来导出名为DC150(150)的运行中虚拟机:
图2:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第1步
提示:
你还可以在Hyper-V管理器中选择多个虚拟机,右击鼠标,选择Export(导出),即可实时导出同时在Windows Server 2012 R2中运行的多个虚拟机。
我们将把运行中的虚拟机导出到目标主机上的共享区:
图3:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第2步
注意:你可能需要配置共享区上的NTFS许可权限,以便允许进行导出操作。想了解更多信息,参阅该链接:http://technet.microsoft.com/en-us/library/ee407532(v=WS.10).aspx。
导出过程的开始阶段是临时合并检查点:
图4:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第3步
随后,打开目标主机上的File Explorer(文件资源管理器),虚拟机文件被导出到目标主机上的共享区,如图所示:
图5:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第4步。
现在我们可以使用目标主机上的Hyper-V管理器,导入被导出的虚拟机文件:
图6:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第5步
按Import Virtual Machine向导逐步操作,我们决定使用现有的独特ID,恢复虚拟机,那样它是原始虚拟机的精确副本:
图7:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第6步。
我们遇到的唯一问题是由这个事实引起的:我们测试服务器HOST40上的虚拟网络其名称不同于原始虚拟机所在的生产服务器HOST30上的虚拟网络:
图8:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第7步。
不过,要解决这个问题,我们只要为虚拟机选择HOST40上的虚拟网络及每个检查点:
图9:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第8步
一旦我们完成了向导,虚拟机文件就复制到目标存储文件夹,导入过程完毕。克隆后的虚机最初处于"保存"状态,如图所示:
图10:使用Windows Server 2012 R2 Hyper-V实时克隆虚拟机的第9步
然后,你可以启动克隆机,它的行为和运行与用来创建克隆机的原始虚拟机一模一样。一旦你完成了这一步,现在一旦在原始虚拟机中运行的应用程序和服务出了什么问题,就可以使用克隆机开始排查问题。
你还可以使用Windows PowerShell,实时导出和导入虚拟机,但可能要棘手一点,尤其是导入过程。我们会在以后的文章中对此作一番介绍。
结束语
实时功能是一种功能强大的工具,可用来排查在虚拟机中运行的应用程序和服务出现的问题,不需要断开虚拟机。VMware和微软的虚拟化平台现在都支持这项功能,所以学习如何使用该功能是个好主意。