1、老板让你在很短的时间里执行一项操作系统迁移的任务,此时,如果你有一个功能完整的且经过测试的物理机到虚拟机迁移的解决方案,那么你将是一个真正的英雄!P2V 的解决方案可以使你在不影响生产网络或不重新在生产网络中进行配置的前提下执行服务器迁移。在这里,我将向大家解释一些 Microsoft Virtual Server Migration Toolkit(VSMT)的内部工作机制,并且演示一下为了实现迁移,应如何使用ADS 来配置一台可移动的服务器 。在 2006 年 12 月份的“突破 ADS 障碍”一文中,我给大家展示了在 Windows 操作系统迁移时,如何构建一个基础的移动 ADS 解决方
2、案。接着,在 2007 年 5 月份的文章“提升移动 ADS 解决方案”中,我展示了如何通过安装 VSMT 来扩展移动 ADS 解决方案,进而执行物理机到虚拟机的迁移。接下来我将给大家演示如何使用 VSMT 来执行一个 P2V 的迁移。开始之前通过本系列的文章,你已经知道如何在一个移动的小车上组合必要的硬件和安装基本的软件来创建一个移动的 ADS 解决方案:Windows Server 2003 企业版,动态主机配置协议(DHCP)服务器、ADS1.1、Virtual Server 2005 R2 SP1 和 VSMT1.1。我们把资源服务器称为 Testserver,并假想运行着Window
3、s Server 2003 企业版。为了执行一个 P2V 的迁移,你需要执行下面的十个步骤。开始之前,我建议你花一些时间来看看你的服务器是否适合执行 P2V 转换。有时候,在一个不太稳定的生产服务器上执行一次 P2V 的迁移是不值得的。这是因为可能在迁移的过程中,那些不稳定的因素会出现。如果恰好出现这种情况,那么我建议你首先重建虚拟机,然后将数据从旧的物理服务器迁移到虚拟服务器中,这样做可能会更好一些。此外,对于那些带有 OEM 应用程序的服务器,在执行 P2V 迁移前,应该首先卸载或禁用这些应用程序,这样可以保证虚拟机在首次启动时,这些应用程序不会和虚拟机进行交互。读到这里,先看看你的服务器
4、适合进行 P2V 的转换吗?如果适合的话就让我们开始吧。第一步:准备源系统尽管 VSMT 不会修改源系统,我还是推荐你遵循一些最佳实践,在开始 P2V 迁移之前,首先对源操作系统进行备份。此外,禁用与物理服务器相关的所有驱动和应用程序,这些驱动和应用程序在虚拟机环境中将不再可用。第二步:准备 MobileP2V 服务器VSMT 包括一个名为 GatherHW.exe 的工具,该工具能够在源服务器上收集物理硬件的信息,然后创建一个XML 配置文件,你可以使用该配置文件来分析源系统中任何已知的硬件兼容性问题(动态磁盘、高于3.5GB 的内存以及不支持的设备等等)。为了运行 GatherHW.exe
5、,你必须首先将它复制到源系统中。我推荐你首先在 MobileP2V 服务器上的 VSMT 安装目录(缺省为 C:Program FilesMicrosoft VSMT)下创建一个名为 VSMT 的共享目录。当然,你还需要一个位置来存放 GatherHW.exe 生成的 XML 文件。你可以在MobileP2V 服务器上创建一个名为 C:P2VSource 的目录,并将其共享为 P2VSource,设置本机管理员具有写权限。MobileP2V 服务器的驱动器配置信息如下:C 盘(C: 操作系统),D 盘(D:ADS 镜像文件)和 E盘(E:虚拟机存储)。第三步:收集配置信息你在 MobileP2
6、V 服务器上创建了共享后,以本地管理员登录到 Testserver。接着,在 C 盘根目录下创建一个名为 VSMT 的目录,并将MobileP2VVSMT 映射到一个网络盘。然后将 GatherHW.exe 复制到C:VSMT。在源系统上双击 GatherHW.exe 来收集配置信息。GatherHW.exe 将以源系统的计算机名为名称在当前目录下创建一个 XML 文件(如:Testserver.xml)。将 XML 文件复制到MobileP2VP2VSource。第四步:验证配置信息在 Testserver 服务器上使用 GatherHW.exe 收集完配置信息之后,可以使用 VMScrip
7、t.exe(作为 VSMT 的一部分安装在 MobileP2V 上)来对数据进行验证。为了使用刚才生成的 XML 文件作为 VMScript.exe 的运行参数,登录到 MobileP2V 然后打开一个命令行窗口。切换到 C:Program FilesMicrosoft VSMT 目录。在命令行窗口中,输入下列内容来执行 VMScript:VMScript.exe /hwvalidate /hwinfofile:”C:P2VSourceTestserver.xml”VMScript 通过分析 XML 文件来报告源系统硬件的错误以及配置问题。(注意:有一些硬件,诸如特殊的板卡、USB 设备或光纤
8、通道卡等其它设备在虚拟机中可能运行不正常。)检查 VMScript 的输出可以查看出现的问题、警告或错误。你可以使用 Vmpatch.exe 来纠正这些问题,并可在继续之前复制已丢失的系统文件、Service Packs 和一些热修复文件。如果你收到报告 Windows Server 2003 Service Pack 2(SP2)文件丢失的报告时,可参考附文:“在 VSMT 补丁目录中增加对Windows Server 2003 SP2 的支持”,它可以指导你如何更新带有 Windows 2003 SP2 驱动的补丁缓存。Error: Cannot find patch files for
9、the operating system/service pack level in the c:Program FilesMicrosoft VSMTPatches Source5.2.3790SP2 directory.第五步:生成迁移脚本解决了 Testserver 配置相关的问题后,你可以重新运行 VMScript 来生成迁移脚本。这些脚本控制着磁盘镜像捕获、虚拟机创建以及如何将磁盘镜像部署到虚拟机。为了生成迁移脚本,通过下面的语法来运行VMScript:VMScript /hwgeneratep2v /hwinfofile:”pathSource.xml” /name:vm_name
10、 /vmconfigpath:”vm_path” /virtualDiskPath:”vm_path” /hwdestvs:controller_server在该脚本中,pathSource.xml 是 xml 配置文件(C:P2VSourceTestServer.xml)的路径,vm_name 是在Virtual Server 控制台中分配给虚拟机的名称(TESTMIGRATION),vm_path 是在特定的宿主机上存放.vmc 和.vhd 文件的位置(E:VMs),controller_server 是 Virtual Server 宿主机的名称(MobileP2V)。缺省情况下,迁移脚
11、本将创建固定大小的虚拟磁盘。如果源系统的物理磁盘有大量的未分配的空间,或者你不想使用固定大小的虚拟磁盘,可以使用/virtualDisk-Dynamic 选项来执行 VMScript。该选项同时也可以加速虚拟机的创建过程。如果你使用了/virtualDisk-Dynamic 选项,执行脚本的命令行如下:VMScript /hwgeneratep2v /hwinfofile:”C:P2VSourceTestServer.xml” /name:TESTMIGRATION /vmconfigpath:”E:VMs” /virtualDiskPath:”E:VMs” /hwdestvs:MOBILEP
12、2V /virtualDiskDynamicVMScript.exe 将在子目录“C:Program FilesMicrosoft VSMTp2vTESTMIGRATION”里生成迁移脚本。执行 VMScript 命令行,你将看到如图 1 所示的输出。VMScript 创建了 12 个输出文件,这些文件在迁移过程中将会被用到。TestMigration_P2V_Readme.txt 提供了关于脚本创建和驱动问题的相关信息。三个 XML 文件包括了在迁移过程中需要用到的磁盘和驱动配置的相关信息。TestMigration_boot.ini 文件直接复制自源系统中的boot.ini 文件。在迁移过
13、程中你将直接执行三个脚本:TestMigration_Capture.cmd 用来捕捉 ADS 磁盘镜像,Test-Migration_CreateVM.cmd 使用源配置信息来创建目标虚拟机,TestMigration_DeployVM.cmd 将捕捉的源磁盘镜像还原到目标虚拟机的磁盘上。图 1:VMScript.exe 创建的输出文件VMScript 也会创建一个名为 Patches 的子目录。VMScript 将把你需要安装的补丁文件复制到该目录下。第六步:加载需要的驱动到 ADS当 VMScript 验证源系统的配置信息时,它并不去验证安装在 ADS 文件缓存中的驱动程序。需要安装的最
14、重要的驱动是源系统的网卡驱动。如果没有网卡驱动,将无法捕获源服务器的镜像。可以将源系统的最新的网卡驱动下载到 MobileP2V 的一个临时目录中。然后将这些驱动程序文件复制到“C:Program FilesMicrosoft ADSNBS RepositoryUserPreSystem”。当你将网卡驱动程序复制到 ADS 文件缓存时,不要创建任何子目录,同时也不要包括任何的 Txtsetup.oem 文件。这是因为驱动程序文件必须直接放到PreSystem 目录下,Txtsetup.oem 文件也不会用到。驱动程序复制完成后,为了能够找到这些新的驱动程序文件,需要重新启动 ADS Build
15、er 服务。打开一个命令行窗口,然后输入:Net stop adsbuilder按回车。输入:Net start adsbuilder再次按回车。第七步:捕获 Testserver 的系统磁盘现在你可以准备捕获 Testserver 系统磁盘镜像了。TestMigration_Capture.cmd 将利用 ADS 来捕捉磁盘镜像。以本机管理员登录到 MobileP2V,根据如下的步骤来捕捉 TestServer 的磁盘镜像。打开一个命令行窗口,并将当前目录切换至“C:Program FilesMicrosoft VSMTp2vTestMigration”,执行TestMigration_ca
16、pture.cmd 脚本。出现提示时,登录到 Testserver 源服务器,然后通过 PXE 重新启动计算机。ADS 接管源系统并将其启动到 Deployment Agent 来初始化磁盘镜像捕捉。为了跟踪每一个磁盘镜像捕捉的过程,你可以使用在 MobileP2V 服务器上的 Automated Deployment Service 控制台。在 ADS 控制台中,选择“Devices”*“Running Jobs”,然后在“Running Jobs”上双击,如图 2 所示。镜像捕捉的时间取决于需要捕捉的磁盘的数量和大小。如果服务器的网卡速度较慢,那么应该考虑换一块速度较快的网卡来减少传输时间
17、。当镜像捕捉完成时,ADS 关闭计算机并从设备数据库中移除源系统。在脚本运行结束前的最后任务是改变系统文件的属性,如图 3 所示。图 2:Running job 的任务状态图 3:改变文件系统属性第八步:创建虚拟机在将已捕捉的磁盘镜像迁移之前,你必须确保将要创建的虚拟机的内存、磁盘和网络配置与物理机相同。CreateVM.cmd(VMScript 生成的脚本之一)脚本可以帮你自动完成这些工作。为了启动该脚本,打开一个命令行窗口并将当前目录切换至“C:Program FilesMicrosoft VSMTp2vTestMigration”,然后执行 TestMigration_CreateVM.
18、cmd 脚本。该脚本将创建一个新的虚拟机配置文件E:VMSTestMigrationTestMigration.vmc,然后注册该虚拟机,并将该虚拟机连接到缺省的虚拟网络VM0,同时会创建并附加虚拟磁盘(VHDs)到虚拟机上,并附加一个 Remote Installation Services(RIS)虚拟软盘到虚拟软盘驱动器里。如果你看到如下所示的错误:Error: System IO.FileLoadException: The Located assemblys manifest definition with the name Microsoft.VirtualServer.Inter
19、op does not match the assembly reference.那么 MobileP2V 服务器应该是运行在 Virtual Server 2005 R2 Service Pack 1(SP1)上了。VSMT1.1与 Virtual Server 2005 R2 兼容,但与 Virtual Server 2005 R2 SP1 并不兼容,关于如何解决该问题,可以参考附文“为什么 VSMT1.1 不支持 Virtual Server 2005 R2 SP1”。当所有的任务完成时,使用 ADS 控制台检查 ADS 设备数据库。刚才创建的虚拟机应该已经增加到了 ADS 的设备数据库
20、中,并且设置为启动到 Deployment Agent。第九步: 将 ADS 磁盘镜像部署到 TestMigration 虚拟机虚拟机创建后,需要将源磁盘镜像恢复到虚拟机上。TestMigration_DeployVM.cmd 控制着镜像还原。为了将源磁盘镜像部署到虚拟机,切换到“C:Program FilesMicrosoft VSMTp2vTestMigration”目录下执行 TestMigration_DeployVM.cmd。为了跟踪虚拟机部署的过程,你可以使用位于 MobileP2V 服务器上的 Virtual Server 2005 R2 Administration Websi
21、te。你将会看到虚拟机启动到 Deployment Agent 后,磁盘镜像恢复到虚拟磁盘上,如图 4 所示。硬件依存的系统文件则会根据虚拟机兼容的版本进行交换,所需的操作系统配置也会生效。图 4:虚拟机部署状态如果你使用 ADS 控制台来检查 ADS 设备数据库,你将会看到虚拟机仍然位于设备数据库中。将 RIS 虚拟软盘从虚拟机中移出后,TestMigration_DeployVM.cmd 脚本将结束运行。但此时的虚拟机仍然会启动到Deployment Agent。第十步:完成迁移在你完成源系统到虚拟机的迁移之前,需要执行一些清理任务。由于 TestMigration 虚拟机仍然会启动到De
22、ployment Agent,因此你需要重新启动 TestMigration 虚拟机:打开 ADS 控制台,右键单击TestMigration 设备,然后选择 run job。“New Job”向导将启动。单击“Next”,选择“create a one-time job”,然后单击“Next”跳过描述窗口。选择“Internal”命令并单击“Next”。选择“bmonitor reboot”并单击“Next”,单击“Finish”重新启动 TestMigration 虚拟机。TestMigration 重启后,设备将被释放控制并从设备数据库中删除。登录到虚拟机后,你首先应该安装一下 Virtual Machine Additions(虚拟机添加件),这样可以确保你在使用虚拟机时获得更好的性能。将剩下的配置完成后,测试虚拟机的连通性和性能来确保虚拟机已经正常运行。虚拟机测试完成后,你就可以将 TestMigration 从 MobileP2V 迁移到生成环境中的 Virtual Server 宿主机上了。最后提醒你在迁移完成后,需要备份源磁盘镜像,备份完毕后即可从 ADS 镜像存储中删除。现在,你已经拥有一个功能完整且经过测试的 MobileP2V 解决方案了。这样你可以在企业中随时执行 P2V的迁移了。