VM 问题故障排除

Citrix 提供两种形式的支持:

  • Citrix Web 站点 上的免费自助支持
  • 可以从支持站点购买的付费支持服务。

通过 Citrix 技术支持,您可以在遇到技术问题时,打开在线支持案例或者通过电话与支持中心联系。

Citrix 支持站点包含许多资源,当您遇到异常行为、崩溃或其他问题时,这些资源可能会对您有所帮助。资源包括:技术支持论坛、知识库文章和产品文档。

如果您看到异常的 VM 行为,本部分内容旨在帮助您解决该问题。本部分还提供了应用程序日志所在位置以及其他有助于您的 Citrix Hypervisor 解决方案提供商跟踪并解决问题的信息。

重要提示:

请仅在您的 Citrix Hypervisor 解决方案提供商或技术支持团队的指导下利用本节的故障排除信息解决问题。

供应商更新:使用操作系统供应商提供的更新保持您的 VM 处于最新状态。供应商可能会提供针对 VM 崩溃和其他故障的修复。

VM 崩溃

如果遇到 VM 崩溃,内核故障转储可能会帮助您发现问题。请重现崩溃(如有可能)并按照此过程进行操作。请咨询来宾操作系统供应商,以对此问题进行进一步调查。

控制 Linux VM 故障转储行为

对于 Linux VM,可以通过 actions-after-crash 参数控制故障转储行为。下面是可能的值:

说明
preserve 使 VM 处于暂停状态。(供分析使用)
restart 不进行核心转储,重新启动 VM。(这是默认值)
destroy 不进行核心转储,使 VM 处于停止状态。

要启用 Linux VM 故障转储的保存功能,请执行以下操作:

  1. 在 Citrix Hypervisor 服务器上,通过运行以下命令确定所需 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 崩溃。

    • 对于 PV 来宾系统,请在 VM 上运行以下命令:

       echo c | sudo tee /proc/sysrq-trigger
      
  4. 在 dom0 上执行核心转储命令。例如,运行:

    xl dump-core domid filename
    

控制 Windows VM 故障转储行为

对于 Windows VM,actions-after-crash 参数无法控制核心转储行为。默认情况下,Windows 故障转储放在 Windows VM 自身的 %SystemRoot%\Minidump 中。

可以按照以下菜单路径配置 VM 转储级别:我的电脑 > 属性 > 高级 > 启动和故障恢复

Linux VM 上的引导问题故障排除

Citrix Hypervisor 服务器控制域中存在名为 xe-edit-bootloader 的实用程序脚本。此脚本可用于编辑关闭 Linux VM 的引导加载程序配置,并修复阻止 VM 引导的问题。

使用此脚本:

  1. 运行以下命令:

    xe vm-list
    

    此命令可确保涉及的 VM 已关闭(power-state 的值为 halted)。

  2. 可以按以下方式使用 UUID:

    xe-edit-bootloader -u linux_vm_uuid -p partition_number
    

    或者,可以按如下所示使用 name-label:

    xe-edit-bootloader -n linux_vm_name_label -p partition_number
    

    分区号表示包含文件系统的磁盘分区。对于默认 Debian 模板,分区号为 1,因为它是第一个分区。

  3. 此时将打开一个编辑器,其中加载了指定 VM 的 grub.conf 文件。更改此文件以修复该问题,保存该文件并退出编辑器,然后启动 VM。

对 Windows VM 上的 UEFI 和安全引导问题进行故障排除

我如何更改启用了 UEFI 的 VM 上的 XenCenter 控制台的屏幕分辨率?

要更改启用了 UEFI 的 VM 上的 XenCenter 控制台的屏幕分辨率,请执行以下操作:

  1. 打开 Windows 设置
  2. 单击更新和安全按钮
  3. 在“恢复”选项卡下,按立即重新启动按钮。
  4. 导航到疑难解答 > 高级选项 > UEFI 固件设置
  5. 重新启动。重新启动过程中,UEFI 设置菜单将加载。
  6. 导航到设备管理器 > OVMF 平台配置。此操作将显示当前的屏幕分辨率。
  7. Enter 键查看屏幕分辨率选项。
  8. 使用箭头键选择所需的屏幕分辨率,然后按 Enter 键。
  9. F10 键保存更改并确认您的选择。
  10. 重新启动 VM 以使用更新后的屏幕分辨率查看 XenCenter 控制台。

为什么我不能创建 UEFI 安全引导 VM?

检查您的 VM 操作系统是否支持 UEFI 安全引导模式。在 Citrix Hypervisor 8.1 中,只有以下操作系统支持安全引导:Windows 10(64 位)、Windows Server 2016(64 位)、Windows Server 2019(64 位)。

检查您的 Citrix Hypervisor 服务器是否在 UEFI 模式下引导。只能在存在安全引导证书的 Citrix Hypervisor 服务器上创建 UEFI 安全引导 VM。安全引导证书仅存在于在 UEFI 模式下引导的服务器上或者与在 UEFI 模式下引导的服务器位于同一池中的服务器上。有关详细信息,请参阅网络引导

检查 硬件兼容性列表 中是否包含 UEFI 引导的 Citrix Hypervisor 服务器。在 UEFI 模式下引导时,较旧的服务器可能不包含安全引导证书。

如何知道我在其上创建安全引导 VM 的 Citrix Hypervisor 服务器是否具有安全引导证书?

如果您的 Citrix Hypervisor 服务器在 UEFI 模式下引导,安全引导证书将在服务器上可用。Citrix Hypervisor 服务器与同一资源池中的其他服务器共享其证书。如果您的资源池中有 UEFI 引导的服务器,则该池中的所有服务器都具有可用的安全引导证书。

在 Citrix Hypervisor 服务器上运行以下命令:

xe pool-param-get param-name=uefi-certificates uuid=<pool-uuid> | wc -c

如果该命令返回大于零的值,则存在安全引导证书。

要检查证书是否有效,请在 Citrix Hypervisor 服务器上运行以下命令:

xe pool-param-get uuid=$(xe pool-list --minimal)  param-name=uefi-certificates|base64 -d|tar tv
-rw-r--r-- root/root      1600 2019-11-11 17:09 KEK.auth
-rw-r--r-- root/root      3212 2019-11-11 17:09 db.auth

如果安全引导证书不存在,请在 Citrix Hypervisor 服务器上运行以下命令:

ls /sys/firmware/efi/efivars | grep KEK

如果此命令返回空值,则无法在该服务器上创建安全引导 VM,因为 UEFI 固件缺少所需的证书。

为什么我的 UEFI 安全引导 VM 无法启动?

如果您在 UEFI 安全引导 VM 的控制台上看到以下消息并在 XenCenter 中看到一条警报,安全引导过程已失败,您的 VM 无法启动。

未启动的 UEFI 安全引导 VM 中的控制台输出。

这通常是由于将未签名的驱动程序安装到 VM 中导致的。调查自上次成功安全引导以来已更新或安装的驱动程序。

可以禁用安全引导并在设置模式下启动 VM,以删除未签名的驱动程序。

重要提示:

在执行此操作之前,请通过创建快照来备份您的 VM。

要将 UEFI 安全引导 VM 更改为 UEFI 引导 VM,请在托管该 VM 的 Citrix Hypervisor 服务器上运行以下命令:

varstore-sb-state <VM_UUID> setup

修复您的 VM 后,运行以下命令以重新启用安全引导:

varstore-sb-state <VM_UUID> user

安全引导是否导致我的 Windows VM 出现问题?

要诊断 Windows VM 上的问题是否是由于为 VM 启用了安全引导而导致的,请禁用安全引导并尝试重现该问题。

要禁用安全引导,请在托管 VM 的 Citrix Hypervisor 服务器上运行以下命令:

varstore-sb-state <VM_UUID> setup

调试该问题后,可以运行以下命令以重新启用安全引导:

varstore-sb-state <VM_UUID> user

如何在安全引导 VM 上运行 Windows 调试?

您无法在安全引导 VM 上运行 Windows 调试。要在 VM 上运行 Windows 调试,可以执行以下操作之一:

  • 通过运行以下命令将 VM 切换到 UEFI 引导模式:

    xe vm-param-set uuid=<UUID> platform:secureboot=false
    

    重新启动 VM。

    调试该问题后,可以运行以下命令以重新启用安全引导:

    xe vm-param-set uuid=<UUID> platform:secureboot=auto
    

    重新启动 VM。

  • 通过在托管 VM 的 Citrix Hypervisor 服务器上运行以下命令来禁用安全引导:

    varstore-sb-state <VM_UUID> setup
    

    调试该问题后,可以运行以下命令以重新启用安全引导:

    varstore-sb-state <VM_UUID> user
    

为什么我的 UEFI VM 仅显示两个 NIC?

即使在创建启用了 UEFI 的 VM 时设置了两个以上的 NIC,当 VM 首次启动时,您也只能看到两个 NIC。在 VM 中安装 Citrix VM Tools 后,此信息正确显示。

为什么我的模拟设备显示为与预期类型不同?

UEFI 安全引导 VM 将 NVME 和 E1000 用于模拟设备。但是,当 VM 首次启动时,模拟设备显示为不同类型。在 VM 中安装 Citrix VM Tools 后,此信息正确显示。

为什么我无法将模板从 BIOS 模式转换为 UEFI 或 UEFI 安全引导模式?

您只能从 Citrix Hypervisor 随附的模板创建启用了 UEFI 的 VM 模板。

请勿对其上安装了某些内容的模板或您从快照创建的模板使用 xe template-param-set 命令。无法更改这些快照的引导模式,如果您尝试更改引导模式,VM 将无法引导。

我如何检查 UEFI 和 UEFI 安全引导设置?

在托管 UEFI 或 UEFI 安全引导 VM 的 Citrix Hypervisor 服务器上,运行以下命令:

varstore-ls

此命令列出了可用设置的 ID。请在以下命令中使用设置 ID:

varstore-get <setting_ID> <VM_ID> | hexdump -C

该设置的值 0 表示已禁用,值 1 表示已启用。

为什么我不能在安全引导 VM 中使用“测试”驱动程序?

如果客户还与第三方合作调试和修复其 UEFI 安全引导 VM 中的问题,第三方可能会提供未签名的驱动程序用于测试或验证目的。这些驱动程序将无法在 UEFI 安全引导 VM 中运行。

告知客户向第三方请求签名的驱动程序。或者,客户可以将其 UEFI 安全引导 VM 切换到设置模式以使用未签名的驱动程序运行。