一、问题简述
原有的业务系统运行在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日
No responses yet