排查 Arm 虚拟机问题


本文档列出了在创建或更新 Arm 虚拟机时可能会出现的错误。

创建虚拟机时出错

如果您无法创建 Arm 虚拟机实例,原因可能是排查有关创建和更新虚拟机的问题中介绍的一些常见问题,例如:

  • 配额不足
  • 同时创建多个资源时的 not ready 错误
  • 资源可用性问题
  • 可用区可用性问题
  • 权限不足
  • 资源名称
  • 违反了限制条件
  • 必需的 CPU 平台

Arm 虚拟机实例无法启动

您尝试创建 Arm 虚拟机,但它未进入“已启动”状态。最常见的问题是为 Arm 虚拟机使用了不兼容的机器类型或操作系统映像。

另一个可能的原因是使用 x86 虚拟机的启动磁盘创建 Arm 虚拟机。启动磁盘的架构必须与虚拟机的架构相匹配。Compute Engine 会检查启动磁盘架构是否与虚拟机架构匹配,但这种验证可能对自定义映像无效。

错误消息

使用 x86 架构的启动磁盘创建 Arm 虚拟机会导致启动过程早期发生故障,主要表现是无法使用 ssh 访问虚拟机。由于虚拟机无法运行,因此验证问题的唯一方法是通过串行控制台日志,该日志应如下所示并且会无限重复:

BdsDxe: failed to load Boot0001 "UEFI nvme_card-pd" from PciRoot(0x0)/Pci(0x2,
0x0)/NVMe(0x1,00-00-00-00-00-00-00-00): Not Found
EMU Variable FVB Started
EMU Variable invalid PCD sizes
Found PL031 RTC @ 0x9010000
InitializeRealTimeClock: using default timezone/daylight settings
[2J[01;01H[=3h[2J[01;01H
UEFI: Failed to load image.
Description: UEFI nvme_card-pd
FilePath: PciRoot(0x0)/Pci(0x2,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
OptionNumber: 1.
Status: Not Found.

解决方法

确保虚拟机实例在与 Arm 兼容的机器类型和操作系统映像上运行。不要使用 x86 虚拟机中的启动磁盘来创建虚拟机。重新创建 Arm 虚拟机。

如需了解可用的 Arm 映像,请参阅操作系统详细信息

实例启动循环

实例在启动阶段循环。导致此问题的常见原因包括:

  • Arm 虚拟机使用具有 x86 操作系统的启动磁盘。
  • 您的组织政策要求所有新的 Compute Engine 虚拟机实例使用启用了安全启动的安全强化型磁盘映像,或者您使用 --shielded-secure-boot 选项创建了虚拟机。

解决方法

如果您使用错误的操作系统映像为虚拟机创建了启动磁盘,请使用 Arm 操作系统映像重新创建 Arm 虚拟机。如需了解可用的 Arm 操作系统映像,请参阅操作系统详细信息

如果虚拟机使用的是 Arm 操作系统映像,则该操作系统映像可能不支持安全启动。如果您在使用 Arm 虚拟机时遇到此问题,请修改虚拟机以设置 --no-shielded-secure-boot 选项。如需了解如何设置此选项,请参阅修改安全强化型虚拟机

更新虚拟机时出错

如果您无法更新虚拟机实例,可能是因为出现以下问题所导致的。

更改机器类型时出错

当您尝试更改虚拟机的机器类型时,可能会出现以下错误:

ERROR: (gcloud.compute.instances.set-machine-type) Could not fetch resource:
 - Invalid resource usage: 'Requested boot disk architecture (X86_64) is not compatible with machine type architecture (ARM64).'

解决方法

  • 确保您的虚拟机支持新机器类型的处理器。如需详细了解不同机器类型支持的处理器,请参阅机器系列比较

  • 尝试使用 Google Cloud CLI 更改机器类型

  • 如果从 x86 机器类型切换到 Arm T2A 机器类型,您可能会收到“INVALID_RESOURCE_USAGE”错误,表明您的磁盘类型与 Arm 机器类型不兼容。请使用兼容的 Arm 操作系统和磁盘创建新的 T2A Arm 实例。

后续步骤