深入学习 Hyper-V 的导出和导入
在 Windows Server 2008 with Hyper-V 上,我们可以通过内置的 Hyper-V 管理器方便快捷的上手操作和管理 Hyper-V 虚拟机。较之前的版本,在 Hyper-V 管理器中当我们要打开一个已经存在了的 Hyper-V 虚拟机时你会不知所措而无从下手,难道 Hyper-V 无法实现打开已经存在的虚拟机么?或者是必须要重新建立么?事实并非如此,在 Hyper-V 中微软从新进行了设计,理念上有所修改,原来的打开功能赋予给了“导入”,gOxiA 认为 Hyper-V 管理器更像一个管理容器,所以使用“导入”这个词可能更为形象准确。不能否认,微软在 Hyper-V 的开发设计方面更加的严谨了!
下面,假设我们创建了一个虚拟机之后,因为某些原因需要从管理器中删除这台虚拟机,于是我们不加思索将其删除后(从 Hyper-V 中删除虚拟机并不会完全删除虚拟机涉及到的文件),当发现还需要将该虚拟机加入到 Hyper-V 中时,该如何挽救呢?我们只能重新建立一个虚拟机并加载已经存在的虚拟机磁盘文件。但是也许在一些规定严格的环境中,这样做可能会导致一些不可预料的错误。毕竟新建立的虚拟机重新产生了ID等唯一性的标示信息。
今天 gOxiA 将与大家分享 Hyper-V 的导出、导入功能,通过对其学习和了解,我们将正确掌握与之相关的操作及方法。
在开始之前我们先了解一下在什么场景中会使用到导出和导入功能。首先,正如 gOxiA 之前所提到的场景,我们也许只是暂时的将已经创建的虚拟机脱离 Hyper-V 管理;此外,当我们要将虚拟机迁移到另外一个磁盘、分区、卷或其他存储位置时;当我们需要备份虚拟机的配置时。当然可能还有很多场景 gOxiA 还没有想到,不过就这几点来讲,我们已经能够深刻认识导出和导入功能在 Hyper-V 中所处的重要地位。
现在我们先通过一系列的操作实践来认识学习 Hyper-V 中的导出和导入功能。这里以 gOxiA 的 Hyper-V 测试环境下的 WDS 虚拟机为案例,这台虚拟机唯一特殊之处在于我使用了差异磁盘,我们可以从下图了解到,本虚拟机的 VHD 保存在 E:Hyper-V MachinesWDSWDS.vhd,通过磁盘检查可以了解到它所使用的父存盘是 D:Hyper-V MachinesVirtual Hard DisksWindowsServer2008ST_x86目录下(可能由于路径过长,Hyper-V 管理器没能完全显示出来路径),VHD 的文件名为 WindowsServer2008ST_x86.vhd,在虚拟硬盘属性窗体中,再单击检查,我们可以获得父磁盘的详细信息。
首先选中虚拟机 WDS,然后鼠标右键单击后出现菜单列表,选中“导出”。
弹出的“导出虚拟机”向导中我们可以根据实际需要进行虚拟机配置的导出或完全的虚拟机导出。这里我先进行了虚拟机配置的导出测试,通过浏览选择要导出配置的保存位置,然后单击“导出”按钮完成,整个导出速度很快也就是1秒左右!
打开资源管理器,定位到我们之前所要保存的位置,看到 Hyper-V 管理器导出了如下图所示的文件。一个名为 config 的 xml 文件,一个以唯一标示符命名的目录和以扩展名为exp的文件。
通过这个导出的虚拟机配置,我们可以轻松的将之前从 Hyper-V 管理器中删除的虚拟机恢复回来。实际上通过仔细观察,你会发现虽然在删除虚拟机时,系统会提示不会删除虚拟机文件,但是实际上如果一但执行了删除操作,那么虚拟机所在目录下的以唯一标示符命名的目录和以扩展名为exp的文件会自动被删除掉(这个目录和文件通常保存在Virtual Machines目录下)。
接下来我们再尝试导出完整的虚拟机,步骤与之前不同的是在向导页面不要复选“仅导出虚拟机配置”。
之后我们在 Hyper-V 管理器中的虚拟机列表中看到 WDS 这台虚拟机的操作状态当前为正在导出的进度。
现在我们重新打开导出后的目录,会发现目录结构所有变化如下图所示,在 Virtual Hard Disks 目录下存在两个 VHD 文件,一个是为虚拟机配置使用的 WDS.vhd,另一个是父磁盘。Hyper-V 的导出很严谨很让我放心!呵呵。打开 config.xml 看看里面的内容,没有什么特殊之处,记录的是这台虚拟机导出前磁盘的相关配置信息。
接下来我们测试一下导入功能,在左边的服务器列表窗体中先选中该 Hyper-V 服务器,鼠标右键单击并选中“导入虚拟机”。
在向导中我确定了要导入的虚拟机位置并复选了“重复使用旧虚拟机 ID”,然后单击“导入”。
出错,如下图所示!因为当前管理器中已经存在这台虚拟机,而且在导入时我复选了“重复使用旧虚拟机 ID”,所以出现这个错误是正常的。
现在我们重新执行导入操作。
由于没有复选“重复使用旧虚拟机 ID”,所以这次导入成功,但是给出了警告信息。如下图所示!
运行事件查看器,定位到 Hyper-V-VMMS 下的 Admin 事件日志,看一看到具体的错误信息。从下图中我们看到这个错误信息来源于虚拟机的网络配置。
进入 Hyper-V 管理器,打开先前导入的这台虚拟机配置页面,我们发现网络适配器没有配置。这个问题的出现还是与当前 Hyper-V 中包含有原虚拟机导致的。我们只需要重新配置网络适配器即可,不过在生产环境下我们还是需要注意,如果两台虚拟机都同时打开运行必然会出现问题。
ok,下来我们来看看导入后的虚拟机磁盘的配置变化,从图中我们可以看到当虚拟机导入后,Hyper-V 会根据导出的配置信息重新调整磁盘位置,即分配的磁盘所在路径已经变为导出后的最终路径。
至此,整个的导出导入操作就算完成了。前面 gOxiA 提到过导出后的配置文件——config.xml 及唯一标识符命名的目录和以扩展名为exp的文件,不知大家是否注意到,在导入虚拟机时向导中会有一段警告文字“导入之后,导入的虚拟机将使用此导入文件夹下的文件。无法再次导入此文件夹。”那么 Hyper-V 是如何识别当前虚拟机目录是否具备导入的信息呢?为了验证导入机制,gOxiA 又进行了如下的测试。导出完整的虚拟机,再进行导入,之后进行目录前后的变化对比,然后再删除虚拟机进行对比,发现除了是否具备 VHD 虚拟磁盘文件以外, config.xml 及以唯一标示符命名的目录和以扩展名为exp的文件是能否导入 Hyper-V 的关键,缺一不可!否则即会出现下面的错误。
总结,当导入虚拟机后 Hyper-V 会自动删除导出后产生的 config.xml 文件,当从 hyper-V 中删除虚拟机时,会自动删除以唯一标识符命名的目录和以扩展名为exp的文件。使用记事本打开扩展名为exp的文件,里面纪录了详细的虚拟机配置信息。通过以上综述,希望大家能够掌握在何种场景中该如何正确使用 Hyper-V 的导出和导入功能。
Love天平
2008/12/26 15:47
不错很详细
Asuka
2008/12/25 22:33
不错,支持一下
分页: 1/1 1