一、问题简述

原有的业务系统运行在Xen环境的Xen Server 上,公司由于业务变更,需要将Xen虚拟环境的业务迁移到物理服务器或者Vmware Vsphere环境或者OpenStack环境。

在迁移Windows 系统时,采用Xen自带的导出方法,导出为OVF文件,解包得到VHD文件。

在三种平台上使用以下处理方式:

在Hyper-V上,可以直接使用VHD文件。

在Vmware上,将VHD转换为VMDK/VMDK-Flat格式。

在OpenStack上,将VHD转换为QEMU格式。

所有的虚拟磁盘处理方式没有问题,但是将系统加载到其他虚拟平台时,会出现蓝屏错误:

SYSTEM_THREAD_EXCEPTION_NOT_HANDLED

在Windows 徽标出现的1秒钟后,立即出现意外系统线程错误。

根据传统思路,有以下可能性:

1、虚拟机配置差异;

2、虚拟磁盘与虚拟电脑连接的虚拟控制器选择;

3、虚拟电脑模型;

4、多余的PCI设备;

5、多余的CPU Tags;

6、虚拟驱动差异。

在经过逐级排除后,使用相同的CPU数量/内存容量/预留内存/预留的显示模型/切换为q35^1440fx/删除多余的虚拟设备/使用相同的CPU/CPUTags/删除虚拟驱动及服务。

均无效。

二、问题解决

有两种方式使虚拟机恢复正常运行:

1、如果你已经无法使用Xen环境

此时,你的虚拟机已经无法使用正常方法打开,你需要使用以下方式来使得无法进入系统的虚拟机恢复运行:

在这种情况下,你可以进入安全模式。

在安全模式中,无法运行MSI部署程序,所以无法执行虚拟驱动卸载。

所以进入C:\Program Files\Cirtix目录。

执行 Uninstall.exe 可以在后台执行服务和注册表清理进程。

执行完成后,文件夹并不会消失。

删除这个文件夹:C:\Program Files\Cirtix

删除以下文件:

  • C:\Windows\System32\xen*
  • C:\Windows\System32\drivers\xen*
  • C:\Program Files\Citrix\XenToos\

清理以下注册表:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xen* (XEN 不需要删除)
    • xenagent
    • xenbus
    • xenbus_monitor
    • xendisk
    • xenfilt
    • xeniface
    • xennet
    • xenSvc
    • xenvbd
    • xenvif
  • HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\

此时,重启虚拟机,你将发现此时已可以正常运行。

2、如果你仍然在使用Xen环境

请在迁移到其他虚拟平台或物理机前,执行以下步骤:

使用控制面板卸载以下程序:

Citrix XenServer Windows Management Agent

成功卸载后,执行以下操作:

删除以下文件:

  • C:\Windows\System32\xen*
  • C:\Windows\System32\drivers\xen*
  • C:\Program Files\Citrix\XenToos\

清理以下注册表:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\xen* (XEN 不需要删除)
    • xenagent
    • xenbus
    • xenbus_monitor
    • xendisk
    • xenfilt
    • xeniface
    • xennet
    • xenSvc
    • xenvbd
    • xenvif
  • HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\

重启虚拟机,发现系统已正常运行

三、问题分析

本区块内容受到权限保护。

Junzhao Han

MOYING

2024年4月8日

Categories:

No responses yet

发表评论

您的电子邮箱地址不会被公开。