仮想ディスプレイを有効にする


VM インスタンス上のアプリケーションで表示デバイスが必要であるものの、GPU のすべての機能は使わないため、全額課金は避けたい場合、仮想表示デバイスを使用するようにインスタンスを構成できます。仮想表示デバイスは、リモート システム管理ツールやリモート デスクトップ ソフトウェアで使用できます。

仮想表示デバイスを新しいインスタンスの作成時に構成することもできますが、既存のインスタンスに追加することも可能です。その際インスタンスはいったん停止する必要があります。仮想表示デバイスを使えば、インスタンスを有効にするための費用はかかりません。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. 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 をインストールし、次のコマンドを実行して初期化します。

      gcloud init

必要なロール

VM の仮想ディスプレイを変更するために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。

この事前定義ロールには、VM の仮想ディスプレイを変更するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

VM の仮想ディスプレイを変更するには、次の権限が必要です。

  • 既存の VM で仮想ディスプレイを追加または削除する: VM に対する compute.instances.updateDisplayDevice
  • 仮想表示デバイスで VM を作成する:
    • プロジェクトに対する compute.instances.create
    • カスタム イメージを使用して VM を作成する: イメージに対する compute.images.useReadOnly
    • スナップショットを使用して VM を作成する: スナップショットに対する compute.snapshots.useReadOnly
    • インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する compute.instanceTemplates.useReadOnly
    • レガシー ネットワークを VM に割り当てる: プロジェクトに対する compute.networks.use
    • VM の静的 IP アドレスを指定する: プロジェクトに対する compute.addresses.use
    • レガシー ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトに対する compute.networks.useExternalIp
    • VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する compute.subnetworks.use
    • VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する compute.subnetworks.useExternalIp
    • VM の VM インスタンス メタデータを設定する: プロジェクトに対する compute.instances.setMetadata
    • VM にタグを設定する: VM に対する compute.instances.setTags
    • VM にラベルを設定する: VM に対する compute.instances.setLabels
    • VM が使用するサービス アカウントを設定する: VM に対する compute.instances.setServiceAccount
    • VM に新しいディスクを作成する: プロジェクトに対する compute.disks.create
    • 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する compute.disks.use
    • 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する compute.disks.useReadOnly

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

制限事項

  • Google は、Linux インスタンスの仮想表示デバイスと、x64 ベースの Windows イメージ v20190312 以降を使用している Windows インスタンスの仮想表示デバイスをサポートしています。
  • VM インスタンスが v20190312 よりも古い Windows イメージを実行している場合は、インスタンスの仮想表示を有効にした後、デバイス ドライバを手動でインストールする必要があります。v20190312 より新しいイメージには、デバイス ドライバがプリインストールされています。
  • 仮想表示デバイスは、ゲスト オペレーティング システムが仮想表示ドライバを起動して初期化した後にのみ機能します。POST の送信中またはゲスト オペレーティング システムの起動中は、仮想表示デバイスを使用できません。
  • 仮想表示デバイスは、Sandy Bridge CPU プラットフォームを実行しているインスタンスとの互換性がありません。
  • 仮想表示デバイスは T2A Arm VM と互換性がありません。

仮想表示デバイスを持つインスタンスの作成

新しいインスタンスを作成するときに、インスタンスで仮想表示デバイスを有効にします。また、仮想表示デバイスを既存のインスタンスに追加することもできます。

コンソール

  1. Google Cloud コンソールで、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. VM のプロパティ(名前、リージョン、ゾーン、マシン構成)を定義します。

  3. 仮想表示デバイスをオンにするには、[マシンの構成] > [表示デバイス] 設定で、[表示デバイスの有効化] チェックボックスをオンにします。

    仮想表示デバイスでは、画面キャプチャを使用できます。

  4. VM を作成するには、[作成] をクリックします。

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 リクエストを構築します。リクエストの本文には、インスタンス プロパティと、enableDisplaytrue に設定した displayDevice プロパティを含めます。

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. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. [名前] 列で、仮想表示デバイスの追加または削除の対象となるインスタンスの名前をクリックします。

  3. [VM インスタンスの詳細] ページの上部にある [停止] をクリックします。

  4. [VM インスタンスの詳細] ページの上部にある [編集] をクリックします。

  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 プロパティを含めます。このインスタンスで仮想表示デバイスを有効にするには、enableDisplaytrue に設定します。 インスタンスで仮想表示デバイスを無効にするには、enableDisplayfalse に設定します。

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 の機能を実装するために不可欠で、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. Google Graphics Array ではなく Microsoft Basic Display がディスプレイ アダプタとして表示されている場合は、ドライバのインストール プロセスを繰り返して、もう一度ドライバを確認します。

次のステップ