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