排查 Google 虚拟 NIC 问题


以下提示有助于排查 Google 虚拟 NIC (gVNIC) 问题。

常见错误

如果用于创建虚拟机的映像未标记为使用 gVNIC,会发生以下问题。

ERROR: (gcloud.compute.instances.create) Could not fetch resource:
 - Invalid value for field 'resource.networkInterfaces[0].nicType': 'GVNIC'.
NetworkInterface NicType can only be set to GVNIC on instances with
GVNIC GuestOsFeature.

如需解决此问题,请确保您使用的是标记为使用 gVNIC 的映像。如需了解详情,请参阅创建自定义映像

其他问题

本部分介绍了在将 gVNIC 驱动程序与 Compute Engine 实例搭配使用时可能会遇到的其他错误。

虚拟机实例未启动

  • 原因:映像上未启用 gVNIC。

  • 诊断:检查映像是否已启用 gVNIC。要进行验证,请运行以下命令:

    gcloud compute images describe IMAGE_NAME

    IMAGE_NAME 替换为映像名称。

    命令的输出应在 guestOsFeatures 下显示 GVNIC

    您还可以检查虚拟机是否已创建,并且 nic-type 设置为 gVNIC。要执行此操作,请运行以下命令:

    gcloud compute instances describe VM_NAME

    VM_NAME 替换为虚拟机名称。

  • 解决办法:确保您使用的是受支持的映像,或者您已在自定义映像上正确设置 gVNIC 驱动程序

虚拟机实例已启动,但无法通过网络访问

  • 原因:未成功安装和加载 gVNIC。

  • 诊断:如需检查驱动程序是否已安装和加载,请完成以下步骤:

    Linux

    1. 检查驱动程序是否已安装。

      modinfo gve

      输出应类似于以下内容:

      filename:       /lib/modules/4.15.0-1036-gcp/updates/dkms/gve.ko
      version:        1.1.0
      license:        Dual MIT/GPL
      description:    gVNIC Driver
      author:         Google, XXX.
      srcversion:     5FEFB9DD945EB2DEC94EE09
      alias:          pci:v00001AE0d00000042sv*sd*bc*sc*i*
      depends:
      retpoline:      Y
      name:           gve
      vermagic:       4.15.0-1036-gcp SMP mod_unload
      
    2. 检查驱动程序是否已加载。

      lsmod | grep gve

      输出应类似于以下内容:

      gve                    49152  0

    Windows

    1. 通过 SAC 连接到实例。
    2. 使用您的用户名和密码登录。
    3. 在命令提示符下,运行以下命令:

      dism /online /get-drivers | findstr gvnic
    4. 查看结果。

      • 如果驱动程序已安装,您应该会在输出中看到文本 Original File Name : gvnic.inf
      • 如果驱动程序未安装,则不会返回任何消息。
  • 解决方法:如果 gVNIC 不可用,请确保您使用的是受支持的映像,或者已在自定义映像上正确设置了 gVNIC

计算实例未使用 VPC 中设置的 MTU 值

按照说明将 MTU 值更改为 8896 后,实例上的 MTU 配置未使用相同的 MTU 值。例如,您可以在实例上运行 /sbin/ifconfig | grep mtu 命令来检查 MTU 设置。您已重启实例,但实例配置未更新。

原因:gVNIC 驱动程序版本过旧

解决方法

  1. 如果您的实例使用的是公共映像,请查看操作系统详细信息页面上适用于您的操作系统版本的网络功能标签页。确保它显示完全支持巨型帧。
  2. 如果公共映像不完全支持巨型帧,或者您使用的是自定义操作系统映像,则安装的 gVNIC 驱动程序版本过低,不支持较高的 MTU 值。请按照“在不支持的操作系统上使用”部分中的说明更新计算实例的 gVNIC 驱动程序。
  3. 更新 gVNIC 驱动程序后,请重启实例并重新检查 MTU 配置。

Windows Server 2022 和 Windows 11 虚拟机的网络吞吐量不佳

Google 虚拟 NIC (gVNIC) 与使用 gVNIC 驱动程序 GooGet 软件包版本 1.0.0@44 或更低版本的 Windows Server 2022 和 Windows 11 虚拟机搭配使用时,您可能会遇到网络吞吐量不佳问题。

如需解决此问题,请通过执行以下操作将 gVNIC 驱动程序 GooGet 软件包更新到 1.0.0@45 或更高版本:

  1. 从管理员命令提示符或 Powershell 会话中运行以下命令,检查虚拟机上安装了哪个驱动程序版本:

    googet installed
    

    输出类似于以下内容:

    Installed packages:
      ...
      google-compute-engine-driver-gvnic.x86_64 VERSION_NUMBER
      ...
    
  2. 如果 google-compute-engine-driver-gvnic.x86_64 驱动程序版本为 1.0.0@44 或更早版本,请通过管理员命令提示符或 Powershell 会话运行以下命令来更新 GooGet 软件包代码库

    google-compute-engine-driver-gvnic.x86_64