在虚拟机上启用虚拟显示


本文档介绍如何在虚拟机 (VM) 实例上启用或停用虚拟显示。

如果虚拟机上运行的应用需要显示设备,但您不需要 GPU 的性能,则将虚拟机配置为使用虚拟显示设备。通过在虚拟机上启用虚拟显示,您可以在虚拟机上运行虚拟显示设备,例如远程系统管理工具、远程桌面软件和屏幕截取

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。

      1. 安装 Google Cloud CLI。
      2. 如需初始化 gcloud CLI,请运行以下命令:

        gcloud init
      3. 为您的 Google 账号创建本地身份验证凭据:

        gcloud auth application-default login

      如需了解详情,请参阅 Set up authentication for a local development environment

      REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色

如需获得在虚拟机上启用或停用虚拟显示所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色可提供在虚拟机上启用或停用虚拟显示所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

在虚拟机上启用或停用虚拟显示需要以下权限:

  • 在现有虚拟机上启用或停用虚拟显示:针对虚拟机的 compute.instances.updateDisplayDevice 权限
  • 创建启用了虚拟显示的虚拟机:
    • 针对项目的 compute.instances.create 权限
    • 使用自定义映像创建虚拟机:针对映像的 compute.images.useReadOnly 权限
    • 使用快照创建虚拟机:针对快照的 compute.snapshots.useReadOnly 权限
    • 使用实例模板创建虚拟机:针对实例模板的 compute.instanceTemplates.useReadOnly 权限
    • 为虚拟机分配旧版网络:针对项目的 compute.networks.use 权限
    • 为虚拟机指定静态 IP 地址:针对项目的 compute.addresses.use 权限
    • 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的 compute.networks.useExternalIp 权限
    • 为虚拟机指定子网:针对项目或所选子网的 compute.subnetworks.use 权限
    • 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的 compute.subnetworks.useExternalIp 权限
    • 为虚拟机设置虚拟机实例元数据:针对项目的 compute.instances.setMetadata 权限
    • 为虚拟机设置标记:针对虚拟机的 compute.instances.setTags 权限
    • 为虚拟机设置标签:针对虚拟机的 compute.instances.setLabels 权限
    • 为虚拟机设置要使用的服务账号:针对虚拟机的 compute.instances.setServiceAccount 权限
    • 为虚拟机创建新磁盘:针对项目的 compute.disks.create 权限
    • 以只读或读写模式挂接现有磁盘:针对磁盘的 compute.disks.use 权限
    • 以只读模式挂接现有磁盘:针对磁盘的 compute.disks.useReadOnly 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

价格

在虚拟机上启用或停用虚拟显示不会产生任何相关费用。

限制

对于启用了虚拟显示的虚拟机,存在以下限制:

  • 如果虚拟机运行的是版本 v20190312 之前基于 x64 的 Windows 操作系统映像,则在虚拟机上启用虚拟显示后,您必须按照本文档中所述安装虚拟显示驱动程序。如果虚拟机运行的是更高的操作系统映像版本,则表示该驱动程序已安装在操作系统映像上。

  • 只有在客机操作系统启动并初始化虚拟显示驱动程序后,您才能在虚拟机上使用虚拟显示设备。

  • 您不能在运行 Sandy Bridge CPU 平台的虚拟机上使用虚拟显示设备。

  • 您不能在 T2A Arm 虚拟机上使用虚拟显示设备。

在虚拟机上启用虚拟显示

如需在虚拟机上启用虚拟显示,请选择本文档中所述的以下方法之一:

如果虚拟机运行的是版本 v20190312 之前基于 x64 的 Windows 操作系统映像,则在虚拟机上启用虚拟显示后,请按照本文档中所述安装虚拟显示驱动程序

创建启用了虚拟显示的虚拟机

如需创建启用了虚拟显示的虚拟机,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,转到创建实例页面。

    转到“创建实例”

  2. 指定虚拟机的属性,包括名称、可用区和机器类型。

  3. 显示设备部分中,选中启用显示设备复选框。

  4. 如需创建虚拟机,请点击创建

gcloud

如需创建启用了虚拟显示的虚拟机,请将 gcloud compute instances create 命令--enable-display-device 标志结合使用。

gcloud compute instances create VM_NAME \
    --enable-display-device \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE

替换以下内容:

  • VM_NAME:虚拟机的名称。

  • MACHINE_TYPE:要用于虚拟机的机器类型。

  • ZONE:要在其中创建虚拟机的可用区。

Terraform

如需创建启用了虚拟显示的虚拟机,请使用 Terraform 资源,并将 enable_display 参数设置为 true

例如,如需在可用区 us-central1-c 中创建启用了虚拟显示的虚拟机,并将 f1-micro 指定为机器类型,请使用以下资源:


resource "google_compute_instance" "instance_virtual_display" {
  name         = "instance-virtual-display"
  machine_type = "f1-micro"
  zone         = "us-central1-c"

  # Set the below to true to enable virtual display
  enable_display = true

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  network_interface {
    # A default network is created for all GCP projects
    network = "default"
    access_config {
    }
  }
}

REST

如需创建启用了虚拟显示的虚拟机,请向 instances.insert 方法发出 POST 请求。在请求正文中,添加设置为 trueenableDisplay 字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "project/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "displayDevice": {
    "enableDisplay": true
  },
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ]
}

替换以下内容:

  • PROJECT_ID:要在其中创建虚拟机的项目的 ID。

  • ZONE:要在其中创建虚拟机的可用区。

  • VM_NAME:虚拟机的名称。

  • MACHINE_TYPE:要用于虚拟机的机器类型。

  • IMAGE_PROJECT:操作系统映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,必须采用 family/IMAGE_FAMILY 格式。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

如需详细了解如何创建虚拟机,请参阅创建并启动 Compute Engine 实例

在现有虚拟机上启用虚拟显示

在虚拟机上启用虚拟显示之前,请务必停止虚拟机

如需在现有虚拟机上启用虚拟显示,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 名称列中,点击虚拟机的名称。

    系统会打开虚拟机的详情页面。

  3. 点击 修改

    系统会打开用于修改虚拟机属性的页面。

  4. 显示设备部分中,选中启用显示设备复选框。

  5. 点击保存

gcloud

如需在现有虚拟机上启用虚拟显示,请将 gcloud compute instances update 命令--enable-display-device 标志结合使用。

gcloud compute instances update VM_NAME \
    --enable-display-device \
    --zone=ZONE

替换以下内容:

  • VM_NAME:虚拟机的名称。

  • ZONE:该虚拟机所在的可用区。

REST

如需在现有虚拟机上启用虚拟显示,请向 instances.updateDisplayDevice 方法发出 POST 请求。在请求正文中,添加 enableDisplay 字段并将其设置为 true

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateDisplayDevice

{
  "enableDisplay": true
}

替换以下内容:

  • PROJECT_ID:虚拟机所在项目的 ID。

  • ZONE:该虚拟机所在的可用区。

  • VM_NAME:虚拟机的名称。

在现有虚拟机上停用虚拟显示

在虚拟机上停用虚拟显示之前,请务必停止虚拟机

如需在现有虚拟机上停用虚拟显示,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 名称列中,点击虚拟机的名称。

    系统会打开虚拟机的详情页面。

  3. 点击 修改

    系统会打开用于修改虚拟机属性的页面。

  4. 显示设备部分中,取消选中启用显示设备复选框。

  5. 点击保存

gcloud

如需在现有虚拟机上停用虚拟显示,请将 gcloud compute instances update 命令--no-enable-display-device 标志结合使用。

gcloud compute instances update VM_NAME \
    --no-enable-display-device \
    --zone=ZONE

替换以下内容:

  • VM_NAME:虚拟机的名称。

  • ZONE:该虚拟机所在的可用区。

REST

如需在现有虚拟机上停用虚拟显示,请向 instances.updateDisplayDevice 方法发出 POST 请求。在请求正文中,添加 enableDisplay 字段并将其设置为 false

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateDisplayDevice

{
  "enableDisplay": false
}

替换以下内容:

  • PROJECT_ID:虚拟机所在项目的 ID。

  • ZONE:该虚拟机所在的可用区。

  • VM_NAME:虚拟机的名称。

安装虚拟显示驱动程序

如果您已在运行版本 v20190312 之前的 Windows 操作系统映像的 Windows 虚拟机上启用了虚拟显示,则如需在该虚拟机上使用虚拟显示设备,您必须安装 Google Cloud 提供的虚拟显示驱动程序。如果虚拟机运行较新的操作系统映像版本,则表示该驱动程序已安装,您可以跳过此部分。

如需在启用了虚拟显示的虚拟机上安装虚拟显示驱动程序,请执行以下操作:

  1. 连接到 Windows 虚拟机

  2. 以管理员身份打开 PowerShell 终端。

  3. 安装 google-compute-engine-driver-gga 组件:

    googet install google-compute-engine-driver-gga
    
  4. 重启虚拟机

重启虚拟机后,您可以按照下一部分所述验证是否已正确安装驱动程序

验证虚拟显示驱动程序的安装情况

如果您必须按照上一部分中所述在 Windows 虚拟机上手动安装虚拟显示驱动程序,则可以通过执行以下操作来验证安装是否成功:

  1. 连接到 Windows 虚拟机(如果尚未连接到)。

  2. 打开设备管理器。

  3. Device Manager 列表的 Display adapters 列表中,确保列出了 Google Graphics Array (GGA) 驱动程序。

    如果未列出该驱动程序,请按照本文档中所述重新安装虚拟显示驱动程序

后续步骤