XenServer

排查虚拟机问题

如果虚拟机出现异常行为,本节旨在帮助您解决问题。本节介绍了应用程序日志的位置,以及其他可以帮助您的 XenServer® 解决方案提供商跟踪和解决问题的信息。

重要:

请仅在您的 XenServer 解决方案提供商或支持团队的指导下,遵循本节中的故障排除信息。

供应商更新:使您的虚拟机与操作系统供应商提供的更新保持同步。供应商可能已提供了针对虚拟机崩溃和其他故障的修复程序。

虚拟机崩溃

如果您的虚拟机发生崩溃,内核崩溃转储可能有助于识别问题。如果可能,请重现崩溃并遵循此过程。请咨询您的客户操作系统供应商以进一步调查此问题。

虚拟机的崩溃转储行为可以通过使用 actions-after-crash 参数来控制。以下是可能的值:

值 描述
preserve 将虚拟机置于暂停状态。(用于分析)
restart 不进行核心转储,重新启动虚拟机。(这是默认设置)
destroy 无核心转储,使 VM 停止。

启用保存 VM 崩溃转储:

  1. 在 XenServer 主机上,通过运行以下命令确定所需 VM 的 UUID:

    xe vm-list name-label=<name> params=uuid --minimal
    <!--NeedCopy-->
    
  2. 通过使用 xe vm-param-set 更改 actions-after-crash 值;例如,在 dom0 上运行以下命令:

    xe vm-param-set uuid=<vm_uuid> actions-after-crash=preserve
    <!--NeedCopy-->
    
  3. 使 VM 崩溃。

    1. 通过在 dom0 上运行以下命令确定 VM 的域 ID:

      xe vm-param-get uuid=<vm_uuid> param-name=dom-id
      <!--NeedCopy-->
      
    2. 在 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 版本。

此工具支持以下操作系统:

  • Windows 10 系统
  • Windows 十一
  • 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\XenServer
    • C:\Windows\Inf\setupapi.dev.log
    • C:\Windows\Inf\setupapi.setup.log
  • 以下命令的输出:
    • 系统信息
    • 任务列表 /NH
    • 命令 pnputil -e
    • pnputil /enum-drivers
    • winmgmt /verifyrepository
    • 显示所有网络配置信息

运行 PowerShell 脚本

要运行 PowerShell 脚本,请按照以下步骤操作:

  1. 在您的 Windows 虚拟机上,以管理员身份打开 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 安全启动的详细信息,请参阅 客户机操作系统功能支持。

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

如果您在 UEFI 安全启动虚拟机的控制台上看到以下消息,并在 XenCenter 中看到警报,则表示安全启动过程失败,您的虚拟机无法启动。

来自未启动的 UEFI 安全启动虚拟机的控制台输出

这通常是由于在虚拟机中安装了未签名的驱动程序所致。请调查自上次成功安全启动以来更新或安装了哪些驱动程序。

您可以 禁用安全启动 以移除未签名的驱动程序。

重要提示:

在此之前,请通过创建快照来备份您的虚拟机。

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

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

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

您无法在安全启动的 Windows 虚拟机上运行 Windows 调试。要在您的虚拟机上运行 Windows 调试,您需要(/zh-cn/xenserver/8/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 实用程序:

  1. 通过 SSH 连接到 XenServer 主机,或者在 XenCenter 中,转到主机的控制台选项卡。
  2. 运行以下命令: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 实用程序中配置这些参数中的大部分。

排查虚拟机问题