根据不可靠的统计,有“无数”工具可以执行物理到虚拟(P2V)转换,尽管这些工具中有许多被开发人员贴上了高价标签,但是至少MicrosoftSysinternals工具集中的Disk2VHD仍然可以免费使用。在本文中,我们将讨论与使用Disk2VHD工具相关的一些常见问题。Disk2VHD是一款绿色轻量级的P2V工具,大小惊人的不到10M。它的界面和功能也简单得惊人,勾选要转换的卷,选择一个vhd或vhdx的生成路径,点击Create(转换)按钮,就大功告成了。下图为Disk2VHD的主界面:对于需要批量操作的管理员,Disk2VHD工具也可以直接作为命令行工具使用。由于界面简洁,很多第一次使用Disk2VHD的用户可能会认为从物理机到虚拟机的转换过程会非常简单。在这里我要提醒大家,不要被它干净的界面给骗了。如果你打算在虚拟化或私有云项目中使用Disk2VHD完成P2V迁移,有一些必要的注意事项需要注意,否则很可能会造成大量的“转换不成功”或“虚拟机启动失败”体验,甚至让客户对我们失去信心。针对这些情况,我将在下面介绍和分享我使用Disk2VHD工具的一些最佳实践。版本更新尽管Disk2VHD自2014年以来一直停留在2.01版本,但您也应该像其他Sysinternals工具一样保持更新。虚拟磁盘文件的保存必须额外注意由Disk2VHD生成的vhd或vhdx虚拟磁盘文件。一些更高版本的Windows允许用户直接双击挂载vhd和vhdx虚拟磁盘文件,我们可以直接对虚拟磁盘添加和删除文件甚至驱动程序。从表面上看,这个功能似乎很了不起,但是在处理Disk2VHD生成的虚拟磁盘文件时就会出现很大的问题。在执行物理到虚拟的转换时,Disk2VHD不会在转换过程中破坏物理服务器的内容。转换完成后,虚拟磁盘直接模拟物理磁盘,但物理磁盘保持不变,物理机保持完整功能。这会导致问题:Windows操作系统向每个磁盘写入一个签名,用于让Windows识别磁盘机制。由于虚拟磁盘文件是物理磁盘的精确副本,因此它将包含与创建它的物理磁盘相同的签名。如果您使用创建虚拟磁盘文件的同一台物理机安装虚拟磁盘,则可能会发生签名冲突。但是,Windows将尝试向虚拟磁盘写入新签名以解决冲突。此时,虚拟机无法启动,因为BCD数据库(磁盘启动配置数据库)引用了一个不再存在的磁盘签名。不合适的场景Disk2VHD工具必须在运行的系统上谨慎使用。它类似于很多备份工具的原理,都是调用底层的WindowsVolumeShadowCopyService(VSS)来创建被转换磁盘的快照,这样就不用担心转换过程中内容被修改了。调用VSS保证了生成的虚拟硬盘文件的完整性,但另一方面,在转换期间或之后在物理服务器上创建或修改的任何数据都不会包含在虚拟硬盘中。这意味着在P2V期间可能会丢失数据,尤其是在运行高度事务性应用程序的系统上。例如:虽然ExchangeServer理论上可以使用Disk2VHD实现P2V转换,但是转换后的原始服务器报文已经发送和接收,存在非常大的数据丢失风险。所以对于Exchange这样的业务,最好的P2V方式是通过添加新的虚拟机DAG成员,然后卸载旧服务器来完成过渡。对于必须保持在线的高事务服务器(如ExchangeServer或SQLServer等),最好的选择是让数据复制辅助虚拟化过程,而不是依赖Disk2VHD。当然,也可以通过“计划内停机”来停止和禁用与应用程序相关的系统服务,以防止应用程序在转换过程中处于活动状态,从而防止数据丢失的情况发生。其他总结当然,在Disk2VHD完成P2V转换后,在虚拟机投入生产之前,可能还需要对虚拟机进行一些调整。至少要先安装Hyper-V集成服务,然后调整TCP/IP配置,才能完成在线测试。
