排查虚拟机问题
如果您发现虚拟机行为异常,本节旨在帮助您解决问题。本节介绍了应用程序日志的位置以及其他可帮助您的 XenServer® 解决方案提供商跟踪和解决问题的信息。
重要提示:
请仅在您的 XenServer 解决方案提供商或支持团队的指导下,遵循本节中的故障排除信息。
供应商更新:使您的虚拟机与操作系统供应商提供的更新保持同步。供应商可能已提供针对虚拟机崩溃和其他故障的修复程序。
虚拟机崩溃
如果您遇到虚拟机崩溃,内核崩溃转储可能有助于识别问题。如果可能,重现崩溃并按照此过程操作。请咨询您的客户操作系统供应商以进一步调查此问题。
您可以使用 actions-after-crash 参数控制虚拟机的崩溃转储行为。以下是可能的值:
| 值 | 描述 |
|---|---|
preserve |
将虚拟机置于暂停状态。(用于分析) |
restart |
不进行核心转储,重新启动虚拟机。(这是默认设置) |
destroy |
无核心转储,保持 VM 暂停。 |
启用保存 VM 崩溃转储:
-
在 XenServer 主机上,通过运行以下命令确定所需 VM 的 UUID:
xe vm-list name-label=<name> params=uuid --minimal <!--NeedCopy--> -
使用
xe vm-param-set更改actions-after-crash值;例如,在 dom0 上运行以下命令:xe vm-param-set uuid=<vm_uuid> actions-after-crash=preserve <!--NeedCopy--> -
使 VM 崩溃。
-
通过在 dom0 上运行以下命令确定 VM 的域 ID:
xe vm-param-get uuid=<vm_uuid> param-name=dom-id <!--NeedCopy--> -
在 dom0 中运行
xl trigger命令以触发崩溃:xl trigger <dom_id> nmi <!--NeedCopy-->
-
Windows VM 崩溃转储行为
默认情况下,Windows 崩溃转储会放入 Windows VM 本身中的 %SystemRoot%\Minidump。您可以通过遵循菜单路径 我的电脑 > 属性 > 高级 > 启动和恢复 来配置 VM 的转储级别。
收集适用于 Windows 的 XenServer VM Tools 诊断信息
适用于 Windows 的 XenServer VM Tools 包含一个名为 xtbugtool 的诊断工具。此工具以 PowerShell 脚本 xtbugtool.ps1 的形式提供。
此外,我们还提供了一个已弃用的批处理脚本版本,用于在旧版 Windows 上运行,即 xtbugtool.bat。在可能的情况下,我们建议您使用 PowerShell 版本。
此工具支持以下操作系统:
- 视窗 10
- 视窗 11
- Windows 服务器 2016
- Windows 服务器 2019
- Windows 服务器 2022
- Windows 服务器 2025
为了帮助诊断 XenServer VM Tools for Windows 的任何问题,脚本会从您的 Windows VM 收集以下信息:
- 与 XenServer VM Tools for Windows 安装相关的注册表项
- NFO 和文本格式的 MSinfo
- 系统、安全和应用程序事件日志
- 以下文件和目录:
C:\ProgramData\Citrix-
C:\ProgramData\Citrix Systems, Inc.. C:\ProgramData\XenServerC:\Windows\Inf\setupapi.dev.logC:\Windows\Inf\setupapi.setup.log
- 以下命令的输出:
- 系统信息
- 任务列表 /NH
- 即插即用工具 -e
- 即插即用工具 /枚举驱动程序
- WMI管理 /验证存储库
- IP配置 /全部
运行 PowerShell 脚本
要运行 PowerShell 脚本,请按照以下步骤操作:
- 在您的 Windows 虚拟机上,以管理员身份打开 PowerShell 终端。
- 在“开始”菜单中键入
PowerShell并选择“以管理员身份运行”。 - 将目录更改为
C:\Program Files\XenServer\XenTools\diagnostics -
使用以下命令运行脚本:
xtbugtool.ps1 <path_to_output_directory>如果您未提供输出路径的值,脚本会将输出保存到当前目录。
脚本会在您指定的输出目录中创建一个名称格式为 xtbugtool-yyyyMMddHHmmss.zip 的压缩文件。
运行批处理脚本(已弃用)
要运行批处理脚本,请按照以下步骤操作:
- 在您的 Windows 虚拟机上,以管理员身份打开命令提示符。
- 在“开始”菜单中键入
cmd并选择“以管理员身份运行”。 - 将目录更改为
C:\Program Files\XenServer\XenTools\diagnostics -
使用以下命令运行脚本:
xtbugtool.bat <path_to_output_directory>
该脚本会在您指定的输出目录中创建一个压缩文件,其名称格式为 xt-bugtool-YYYY.MM.DD-xxxx.zip。
UEFI 和安全启动问题
如何更改 UEFI 虚拟机上 XenCenter® 控制台的屏幕分辨率?
要更改 UEFI 虚拟机上 XenCenter 控制台的屏幕分辨率,请执行以下操作:
- 打开“Windows 设置”
- 单击“更新和安全”(Windows 10/Server 2019/2022)或“系统 > 恢复”(Windows 11/Server 2025)。
- 在恢复选项卡下,按“立即重新启动”按钮。
- 导航到“疑难解答”>“高级选项”>“UEFI 固件设置”。
- 按“重新启动”。重新启动期间,UEFI 设置菜单将加载。
- 导航到 设备管理器 > OVMF 平台配置。这将显示当前屏幕分辨率。
- 按 Enter 键查看屏幕分辨率选项。
- 使用箭头键选择所需的屏幕分辨率,然后按 Enter 键。
- 按 F10 键保存更改并确认您的选择。
- 重新启动虚拟机以在更新的屏幕分辨率下查看 XenCenter 控制台。
为什么我无法创建 UEFI 安全启动虚拟机?
检查您的虚拟机操作系统是否支持 UEFI 安全启动模式。有关哪些客户机操作系统可以启动到 UEFI 模式的详细信息,请参阅 客户机操作系统功能支持。
为什么我的 UEFI 安全启动虚拟机无法启动?
如果您在 UEFI 安全启动虚拟机的控制台上看到以下消息,并且 XenCenter 中出现警报,则安全启动过程已失败,您的虚拟机无法启动。

这通常是由于在虚拟机中安装了未签名的驱动程序所致。请调查自上次成功安全启动以来更新或安装了哪些驱动程序。
您可以 禁用安全启动 以删除未签名的驱动程序。
重要提示:
在此之前,请通过创建快照来备份您的虚拟机。
安全启动是否导致我的虚拟机出现问题?
为了诊断您的虚拟机上的问题是否由启用了安全启动引起,请(/zh-cn/xenserver/9/vms#disabling-secure-boot)并尝试重现该问题。
如何在安全启动的 Windows 虚拟机上运行 Windows 调试?
您无法在安全启动的 Windows 虚拟机上运行 Windows 调试。要在您的虚拟机上运行 Windows 调试,您需要(/zh-cn/xenserver/9/vms#disabling-secure-boot)。
为什么我的 UEFI 启用的 Windows 虚拟机只显示两个网卡?
即使您在创建支持 UEFI 的虚拟机时设置了两个以上的网卡,当虚拟机首次启动时,您也只会看到两个网卡。在虚拟机中安装 XenServer VM Tools for Windows 后,此信息将正确显示。
为什么我的模拟设备在 UEFI Windows 虚拟机上显示为与预期不同的类型?
UEFI 安全启动虚拟机使用 NVME 和 E1000 作为模拟设备。但是,当虚拟机首次启动时,模拟设备会显示为不同的类型。在虚拟机中安装 XenServer VM Tools for Windows 后,此信息将正确显示。
为什么我无法将模板从 BIOS 模式转换为 UEFI 或 UEFI 安全启动模式?
您只能从 XenServer 提供的模板创建支持 UEFI 的虚拟机模板。
请勿对已安装内容的模板或从快照创建的模板使用xe template-param-set命令。这些快照的启动模式无法更改,如果您尝试更改启动模式,虚拟机将无法启动。
如何检查 UEFI 和 UEFI 安全启动变量?
在托管 UEFI 或 UEFI 安全启动虚拟机的 XenServer 主机上,运行以下命令:
varstore-ls
此命令列出可用变量的 GUID 和名称。在以下命令中使用 GUID 和名称:
varstore-get <VM\_ID> <GUID> <name> | hexdump -C
为什么我不能在安全启动虚拟机中使用“测试”驱动程序?
如果您还与第三方合作调试和修复其 UEFI 安全启动虚拟机中的问题,第三方可能会提供未签名的驱动程序用于测试或验证目的。这些驱动程序在 UEFI 安全启动虚拟机中不起作用。
从第三方请求一个签名驱动程序。或者您可以将您的 UEFI 安全启动虚拟机切换到设置模式以使用未签名驱动程序运行。
Xentop 实用程序
xentop 实用程序以半图形格式显示有关 XenServer 系统和正在运行的域的实时信息。您可以使用此工具调查与虚拟机关联的域的状态。
运行 xentop 实用程序:
- 通过 SSH 连接到 XenServer 主机,或者在 XenCenter 中,转到主机的控制台选项卡。
-
运行以下命令:
xentop控制台以表格形式显示有关主机的信息。信息会定期刷新。
输出列
xentop 实用程序在控制台中显示以下列:
- NAME - 域的名称。“Domain-0”是 XenServer 控制域。其他域属于虚拟机。
-
STATE - 域的状态。状态可以具有以下值之一:
- d - 域正在终止
- s – 域正在关机
- b – 域被阻止
- c – 域已崩溃
- p – 域已暂停
- r – 域正在其中一个 CPU 上积极运行
- CPU(sec) - 域的 CPU 使用率(秒)
- CPU(%) - 域的 CPU 使用率(百分比)
- MEM(k) - 域的当前内存使用量(KiB)
- MEM(%) - 域的当前内存使用量(百分比)
- MAXMEM(k) - 域的最大内存使用量(KiB)
- MAXMEM(%) - 域的最大内存使用量(百分比)
- VCPUS - 分配给域的虚拟 CPU 数量
- NETS - 域使用的虚拟网络数量
- NETTX(k) - 总网络发送量(KiB)
- NETRX(k) - 总网络接收量(KiB)
- VBDS - 虚拟块设备的数量
- VBD_OO - VBD 遇到请求不足错误的次数。发生此情况时,VBD 的 I/O 请求会延迟。
- VBD_RD - VBD 读取请求的总数
- VBD_WR - VBD 写入请求的总数
- VBD_RSECT - VBD 读取扇区
- VBD_WSECT - VBD 写入扇区
Xentop 参数
您可以使用以下参数配置 xentop 命令的输出:
- -h - 输出 xentop 命令的帮助信息。
- -V - 输出 xentop 命令的版本。
- -d 或 –delay=SECONDS - 设置更新之间的秒数
- -n 或 –networks - 输出与域关联的每个 VIF 网络的数据
- -x 或 –vbds - 输出与域关联的每个 VBD 块设备的数据
- -r 或 repeat-header - 在每个域之前重复表头
- -v 或 –vcpus - 输出与域关联的每个 vCPU 的数据
- -i 或 –iterations - xentop 退出前要显示的迭代(更新)次数
- -f 或 –full-name - 输出完整的域名称而不是截断的名称
您还可以在 xentop 实用程序中配置大多数这些参数。