启用虚拟显示


如果虚拟机实例上的应用需要显示设备,但并不需要 GPU 的全部功能或不想承担相应购买成本,则可以将您的实例配置为使用虚拟显示设备。利用这些虚拟显示设备,您就可以运行需要显示设备的远程系统管理工具和远程桌面软件。

在新建实例时配置虚拟显示设备,或在现有实例处于停止的状态下为其添加虚拟显示设备。为您的实例启用虚拟显示设备无需支付任何费用。

准备工作

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

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

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

      gcloud init
    2. 设置默认区域和可用区

    Terraform

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

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

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

      gcloud auth application-default login

    如需了解详情,请参阅 为本地开发环境设置身份验证

    REST

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

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

      gcloud init

所需的角色

如需获得修改虚拟机上的虚拟显示所需的权限,请让您的管理员为您授予项目的 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 权限

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

限制

  • Google 支持在 Linux 实例和使用任何基于 x64 的 Windows 映像 v20190312 或更高版本的 Windows 实例上使用虚拟显示设备。
  • 如果您的虚拟机实例正在运行 v20190312 之前的 Windows 映像,则为实例启用虚拟显示设备之后,还必须手动安装设备驱动程序。设备驱动程序中预安装了比 v20190312 更新的映像。
  • 只有在客机操作系统完成虚拟显示驱动程序的启动和初始化之后,虚拟显示设备才能正常工作。在 POST 期间或客机操作系统启动期间,您无法使用虚拟显示设备。
  • 虚拟显示设备与运行 Sandy Bridge CPU 平台的实例不兼容。
  • 虚拟显示设备与 T2A Arm 虚拟机不兼容。

创建使用虚拟显示设备的实例

创建新实例时,在实例上启用虚拟显示设备。或者,您也可以将虚拟显示设备添加到现有实例

控制台

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

    转到“创建实例”

  2. 定义虚拟机的属性,包括名称、区域、可用区和机器配置。

  3. 如需启用虚拟显示设备,请从机器配置 > 显示设备设置中选中启用显示设备复选框。

    虚拟显示设备允许您使用截屏功能。

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

gcloud

在 Google Cloud CLI 中,使用 compute instances create 命令并添加 --enable-display-device 标志:

 gcloud compute instances create [INSTANCE_NAME] --enable-display-device

其中 [INSTANCE_NAME] 是您要创建的实例的名称。

Terraform

您可以使用 Terraform 资源创建实例,并通过将 enable_display 参数设置为 true 来启用虚拟显示。


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

在 API 中,构建对 compute.instances.insert 方法的 POST 请求。 在请求正文中,包含实例属性以及将 enableDisplay 设置为 truedisplayDevice 属性。

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

{
  "name": "[INSTANCE_NAME]",
  "machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "displayDevice": {
    "enableDisplay": true
  },
⋮
}]

其中:

  • [INSTANCE_NAME] 是实例的名称。
  • [PROJECT_ID] 是您的项目 ID。
  • [ZONE] 是实例所在的地区。

创建使用虚拟显示设备的实例后,您可以配置远程桌面来远程管理您的 Windows 实例。

在现有实例上添加或移除虚拟显示设备

您可以在现有实例上启用虚拟显示设备。此外,您还可以在新建实例时启用虚拟显示设备

在正在运行的实例上启用或停用虚拟显示设备之前,必须先停止该实例

控制台

  1. 转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 名称列中,点击要在其中添加或移除虚拟显示设备的实例的名称。

  3. 虚拟机实例详情页面的顶部,点击停止

  4. 虚拟机实例详情页面的顶部,点击修改

  5. 显示设备下方,点击启用显示设备以为此实例启用或停用虚拟显示设备。

  6. 在实例创建设置的底部,点击保存

gcloud

如需添加虚拟显示设备,请在 Google Cloud CLI 中使用 compute instances update 命令并添加 --enable-display-device 标志:

 gcloud compute instances update [INSTANCE_NAME] --enable-display-device

其中 [INSTANCE_NAME] 是您要创建的实例的名称。

如需移除虚拟显示设备,请在 gcloud CLI 中使用 compute instances update 命令并添加 --no-enable-display-device 标志:

 gcloud compute instances update [INSTANCE_NAME] --no-enable-display-device

其中 [INSTANCE_NAME] 是您要创建的实例的名称。

REST

在 API 中,构建对 compute.instances.updateDisplayDevice 方法的 POST 请求。在请求正文中,包含 enableDisplay 属性。要在此实例上启用虚拟显示设备,请将 enableDisplay 设置为 true。要停用实例上的虚拟显示设备,请将 enableDisplay 设置为 false

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/updateDisplayDevice

{
 "enableDisplay": [ENABLE_DISPLAY]
}

其中:

  • [INSTANCE_NAME] 是要在其中启用或停用虚拟显示设备的实例的名称。
  • [PROJECT_ID] 是您的项目 ID。
  • [ZONE] 是实例所在的地区。
  • [ENABLE_DISPLAY] 可以为 true,以在实例上启用虚拟显示设备;也可以为 false,以在实例上停用虚拟显示设备。

创建使用虚拟显示设备的实例后,您可以配置远程桌面来远程管理您的 Windows 实例。

安装虚拟显示驱动程序

Google 提供了一种显示驱动程序,让 Windows 实例可以正确使用虚拟显示设备。Compute Engine 的多项功能要求具有该驱动程序。Google 仅为 Windows 实例提供此显示驱动程序和相应支持。

创建使用虚拟显示设备的实例后,或者将虚拟显示设备添加到现有实例后,您可以通过以下过程在实例上安装虚拟显示设备:

  1. 连接到已启用虚拟显示设备的 Windows 实例
  2. 以管理员身份打开 PowerShell 终端。
  3. 运行 googet 安装程序以安装 google-compute-engine-driver-gga 组件:

    googet install google-compute-engine-driver-gga
    
  4. 重启该实例。

重启实例后,请按照以下说明确认已安装驱动程序。

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

如果您必须手动安装设备驱动程序,请按照以下说明验证安装是否成功。

  1. 连接到已启用虚拟显示设备的 Windows 实例
  2. 打开运行工具并运行 devmgmt.msc 计算机管理工具。
  3. 在计算机管理工具的导航菜单中,点击设备管理器以查看设备列表。
  4. 检查显示适配器列表,确保其中列出了 Google Graphics Array 驱动程序。Windows 的“计算机管理”窗口,显示将 Google Graphics Array 作为已安装显示适配器列出的画面。
  5. 如果此处列出的显示适配器是 Microsoft 基本显示适配器,而非 Google Graphics Array,请重复执行一次驱动程序安装过程,然后再次检查驱动程序。

后续步骤