虚拟机迁移的问题有时系统由于设置或配置失误而阻碍了虚拟机迁移或重启,而虚拟机迁移失败对数据中心的效率及可用性会产生不利影响。虚拟机由底层的服务器硬件抽象出来,易于防护,而且能够在主机之间进行迁移。然而,虚拟化并不能保证百分之百的可靠性。让我们一起来看一下导致虚拟机迁移失败的五大常见原因以及如何避免这些问题。1.硬件资源不足你需要有足够可用的计算资源才能启动虚拟机。资源不足或者过量分配可能会立刻导致虚拟机发生故障。如果服务器的内存分配过量或者CPU预留过多,将不能为虚拟机提供足够的资源,很可能会发生上述情况。管理员通常会在过渡整合的服务器、高可用集群或者是在迁移虚拟机到其他利用率很高、没有足够的计算资源用于故障切换的服务器上时发现上述资源问题。服务器升级将会增加资源,但是平衡工作负载是一个更好的解决方案。在服务器之间重新分配一台或多台虚拟机将会释放足够的资源用于保证虚拟机成功启动。2.服务器硬件不兼容虚拟化将工作负载从底层的硬件中抽象出来,但是硬件仍然要提供这些工作负载所需要的关键特性与功能。当你把虚拟机迁移到其他可能缺少硬件特性的服务器上时,可能会发生启动错误。挂起虚拟机使用了CPU特有的电源管理状态;如果虚拟机迁移到的目标服务器的CPU缺少上述电源管理状态,那么虚拟机将不能正常重启。在这种情况下,你可能需要使用命令行选项手动重启虚拟机或者将虚拟机迁移至配置了具有类似功能CPU的服务器然后再重启虚拟机。然后再迁移运行的虚拟机到目标服务器。你可能还会发现CPU缺少虚拟化特性,比如IntelVT或者AMD-V,或者存在未激活的扩展特性导致无法为虚拟机提供支持。在你迁移或者启动虚拟机之前,验证一下目标服务器提供的虚拟化扩展功能,而且一定要在BIOS中启用这些扩展功能。IT专业人员需要按需调整迁移规划以确保能够使用兼容的服务器硬件。在某些情况下,IT专业人员可能能够编辑虚拟机来移除对CPU特定特性的需求。3.虚拟机任务冲突某些虚拟化任务需要花费相当多的时间才能完成,而且即使在发生超时错误后仍在后台运行。当另一个虚拟化任务也在同时运行时尝试启动一个虚拟机可能会导致服务器发生错误。例如,当你删除不需要的快照时,在合并过程中,虚拟机可能不会重启。修改虚拟机配置文件中的超时设置将允许关键的活动不间断运行,但是你可能还需要重新配置后台任务来避免在下班时间虚拟机发生迁移以及重启。4.虚拟机文件损坏虚拟机仅仅是运行于内存中的镜像,而且该镜像以特定的虚拟机文件格式比如.vmx以及.vmdk保存在磁盘中。与所有基于磁盘的存储一样,磁盘存储子系统或者网络连接存储以及服务器存在的问题可能会破坏虚拟机文件。当虚拟机所需要的必要文件丢失、被锁定、损坏时,虚拟机将无法启动。文件锁定用于避免并发的任务对正在使用的文件带来意想不到的变化,经常会发生上述错误。在某些情况下,虚拟机组件文件仍旧被锁定而且避免了虚拟机在另一台服务器上启动。你可以修改被锁定的文件然后移除锁定,但是这一详细的过程需要具备有关特定hypervisor以及数据中心环境的专业知识。更为常见的是从最近的快照或者另一个备份恢复虚拟机。5.许可、管理输入以及其他问题导致虚拟机无法启动的其他问题与比如用户输入意外中断有关,而与服务器功能或者文件完整性无关。虚拟机可能开启了一个正常以及成功的启动过程,但是在启动完成之前暂停了,并等待管理输入。一旦你回答了该问题,虚拟机将会继续启动。在重新配置虚拟机以自动应答常规问题、消除人为干预之前,你需要在虚拟机启动过程中避免中断。这一过程与hypervisor相关而且需要具备专业知识。另一个经常被忽略的问题是许可,该问题通常源于hypervisor安装疏忽。例如,将虚拟机部署在一台刚被虚拟化的服务器上时,这台新服务器的许可可能没有被正确配置。在其他情况下,许可可能被破坏了,或者组织可能就没有许可。因此,你必须确保有足够的许可来支持正在使用的虚拟化服务器,确保服务器已经配置了许可而且务必使许可是完整的而且没有被破坏。访问hypervisor的日志文件或者管理日志也可能会加速故障诊断过程。如果通过日志没有找到问题,根本原因很可能是上述问题中的一个。