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 版本。

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

  • 视窗 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\XenServer
    • C:\Windows\Inf\setupapi.dev.log
    • C:\Windows\Inf\setupapi.setup.log
  • 以下命令的输出:
    • 系统信息
    • 任务列表 /NH
    • 即插即用工具 -e
    • 即插即用工具 /枚举驱动程序
    • WMI管理 /验证存储库
    • IP配置 /全部

运行 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. 导航到 设备管理器 > OVMF 平台配置。这将显示当前屏幕分辨率。
  7. Enter 键查看屏幕分辨率选项。
  8. 使用箭头键选择所需的屏幕分辨率,然后按 Enter 键。
  9. F10 键保存更改并确认您的选择。
  10. 重新启动虚拟机以在更新的屏幕分辨率下查看 XenCenter 控制台。

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

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

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

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

无法启动的 UEFI 安全启动虚拟机的控制台输出。

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

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

重要提示:

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

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

为了诊断您的虚拟机上的问题是否由启用了安全启动引起,请(/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 实用程序:

  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 块设备的数据
  • -rrepeat-header - 在每个域之前重复表头
  • -v–vcpus - 输出与域关联的每个 vCPU 的数据
  • -i–iterations - xentop 退出前要显示的迭代(更新)次数
  • -f–full-name - 输出完整的域名称而不是截断的名称

您还可以在 xentop 实用程序中配置大多数这些参数。

排查虚拟机问题