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