排查虚拟机问题

Last published : Oct 07, 2026
如果您发现虚拟机行为异常,本节旨在帮助您解决问题。本节描述了应用程序日志的位置以及其他可以帮助您的 XenServer® 解决方案提供商跟踪和解决问题的信息。
重要:
请仅在您的 XenServer 解决方案提供商或支持团队的指导下遵循本节中的故障排除信息。
供应商更新:使您的虚拟机与操作系统供应商提供的更新保持同步。供应商可能已提供了针对虚拟机崩溃和其他故障的修复程序。

虚拟机崩溃

如果您遇到虚拟机崩溃,内核崩溃转储可能有助于识别问题。如果可能,重现崩溃并遵循此过程。请咨询您的客户操作系统供应商以进一步调查此问题。
虚拟机的崩溃转储行为可以通过使用 actions-after-crash 参数来控制。以下是可能的值:
值 描述
preserve 将虚拟机置于暂停状态。(用于分析)
restart 无核心转储,重新启动虚拟机。(这是默认值)
destroy 没有核心转储,VM 保持停止状态。
启用保存 VM 崩溃转储:
  1. 在 XenServer 主机上,通过运行以下命令确定所需 VM 的 UUID:
    xe vm-list name-label=<name> params=uuid --minimal
  2. 使用 xe vm-param-set 更改 actions-after-crash 值;例如,在 dom0 上运行以下命令:
    xe vm-param-set uuid=<vm_uuid> actions-after-crash=preserve
  3. 使 VM 崩溃。
    1. 通过在 dom0 上运行以下命令确定 VM 的域 ID:
      xe vm-param-get uuid=<vm_uuid> param-name=dom-id
    2. 在 dom0 中运行 xl trigger 命令以触发崩溃:
      xl trigger <dom_id> nmi

Windows VM 崩溃转储行为

默认情况下,Windows 崩溃转储会放入 Windows VM 本身的 %SystemRoot%\Minidump 中。您可以通过遵循菜单路径 我的电脑 > 属性 > 高级 > 启动和恢复 来配置 VM 的转储级别。

收集适用于 Windows 的 XenServer VM Tools 诊断信息

适用于 Windows 的 XenServer VM Tools 包含一个名为 xtbugtool 的诊断工具。此工具以 PowerShell 脚本 xtbugtool.ps1 的形式提供。
此外,我们还提供了一个已弃用的批处理脚本版本,用于在旧版 Windows 上运行,即 xtbugtool.bat。在可能的情况下,我们建议您使用 PowerShell 版本。
此工具支持以下操作系统:
  • Windows 10 系统
  • Windows 11 系统
  • Windows 服务器 2016
  • Windows 服务器 2019
  • Windows 服务器 2022
  • Windows 服务器 2025
为了帮助诊断 XenServer VM Tools for Windows 的任何问题,该脚本会从您的 Windows VM 中收集以下信息:
  • 与 XenServer VM Tools for Windows 安装相关的注册表项
  • MSinfo 的 NFO 和文本版本
  • 系统、安全和应用程序事件日志
  • 以下文件和目录:
    • C:\ProgramData\Citrix
    • C:\ProgramData\Citrix Systems, Inc..
    • C:\ProgramData\XenServer
    • C:\Windows\Inf\setupapi.dev.log
    • C:\Windows\Inf\setupapi.setup.log
  • 以下命令的输出:
    • 系统信息
    • 任务列表 /NH
    • 即插即用工具 -e
    • 即插即用工具 /enum-drivers
    • WMI 管理 /verifyrepository
    • IP 配置 /all

运行 PowerShell 脚本

要运行 PowerShell 脚本,请按照以下步骤操作:
  1. 在您的 Windows VM 上,以管理员身份打开 PowerShell 终端。
  2. 在开始菜单中键入 PowerShell 并选择以管理员身份运行。
  3. 将目录更改为 C:\Program Files\XenServer\XenTools\diagnostics
  4. 使用以下命令运行脚本:xtbugtool.ps1 <path_to_output_directory>
    如果您未提供输出路径的值,脚本将输出到当前目录。
脚本会在您指定的输出目录中创建一个名称格式为 xtbugtool-yyyyMMddHHmmss.zip 的压缩文件。

运行批处理脚本(已弃用)

要运行批处理脚本,请按照以下步骤操作:
  1. 在您的 Windows 虚拟机上,以管理员身份打开命令提示符。
  2. 在开始菜单中键入 cmd 并选择以管理员身份运行。
  3. 将目录更改为 C:\Program Files\XenServer\XenTools\diagnostics
  4. 使用以下命令运行脚本:
    xtbugtool.bat <path_to_output_directory>
该脚本会在您指定的输出目录中创建一个压缩文件,其名称格式为 xt-bugtool-YYYY.MM.DD-xxxx.zip。

UEFI 和安全启动问题

如何更改支持 UEFI 的虚拟机上 XenCenter® 控制台的屏幕分辨率?

要更改支持 UEFI 的虚拟机上 XenCenter 控制台的屏幕分辨率:
  1. 打开Windows 设置
  2. 单击更新和安全(Windows 10/Server 2019/2022)或系统 > 恢复(Windows 11/Server 2025)。
  3. 在恢复选项卡下,按立即重新启动按钮。
  4. 导航到疑难解答 > 高级选项 > UEFI 固件设置。
  5. 按重新启动。重新启动期间,UEFI 设置菜单将加载。
  6. 导航到 Device Manager > OVMF Platform Configuration。这将显示当前的屏幕分辨率。
  7. 按 Enter 查看屏幕分辨率选项。
  8. 使用箭头键选择所需的屏幕分辨率,然后按 Enter。
  9. 按 F10 保存更改并确认您的选择。
  10. 重新启动虚拟机以在更新的屏幕分辨率下查看 XenCenter 控制台。

为什么我无法创建 UEFI 安全启动虚拟机?

检查您的虚拟机操作系统是否支持 UEFI 安全启动模式。有关哪些客户机操作系统支持 UEFI 安全启动的详细信息,请参阅 Guest OS Feature Support。

为什么我的 UEFI 安全启动虚拟机无法启动?

如果您在 UEFI 安全启动虚拟机的控制台上看到以下消息,并且 XenCenter 中出现警报,则表示安全启动过程失败,您的虚拟机无法启动。
来自未启动的 UEFI 安全启动虚拟机的控制台输出
这通常是由于在虚拟机中安装了未签名的驱动程序所致。调查自上次成功安全启动以来更新或安装了哪些驱动程序。
您可以 禁用安全启动 以删除未签名的驱动程序。
重要提示:
在此之前,请通过创建快照来备份您的虚拟机。

安全启动是否导致我的虚拟机出现问题?

为了诊断您的虚拟机上的问题是否由为虚拟机启用安全启动引起,请(/zh-cn/xenserver/8/vms.html#disabling-secure-boot)并尝试重现该问题。

如何在安全启动的 Windows 虚拟机上运行 Windows 调试?

您无法在安全启动的 Windows 虚拟机上运行 Windows 调试。要在您的虚拟机上运行 Windows 调试,您需要(/zh-cn/xenserver/8/vms.html#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 &lt;VM_ID> &lt;GUID> &lt;name> | hexdump -C

为什么我不能在安全启动虚拟机中使用“测试”驱动程序?

如果您还与第三方合作调试和修复其 UEFI 安全启动虚拟机中的问题,第三方可能会提供未签名的驱动程序用于测试或验证目的。这些驱动程序在 UEFI 安全启动虚拟机中不起作用。
从第三方请求签名驱动程序。或者您可以将 UEFI 安全启动 VM 切换到设置模式以使用未签名驱动程序运行。

Xentop 实用程序

xentop 实用程序以半图形格式显示有关 XenServer 系统和正在运行的域的实时信息。您可以使用此工具调查与 VM 关联的域的状态。
运行 xentop 实用程序:
  1. 通过 SSH 连接到 XenServer 主机,或者在 XenCenter 中,转到主机的控制台选项卡。
  2. 运行以下命令:xentop
    控制台以表格形式显示有关主机的信息。信息会定期刷新。

输出列

xentop 实用程序在控制台中显示以下列:
  • NAME - 域的名称。“Domain-0”是 XenServer 控制域。其他域属于 VM。
  • 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 实用程序中配置这些参数中的大部分。