Google Virtual NIC の使用

Google Virtual NIC(gVNIC)は、Compute Engine 専用の仮想ネットワーク インターフェースです。gVNIC は、virtIO ベースのイーサネット ドライバに代わるものです。

Compute Engine では、サポートされている公開イメージで gVNIC を設定できます。あるいは、Linux ドライバをソースからビルドしてインストールすることもできます。

たとえば、GPU が接続された VM 上の分散ワークロードに使用できる 50~100 Gbps 速度など、より大きなネットワーク帯域幅をサポートするには gVNIC が必要です。また、VM 使用時のパフォーマンスを最適化するように、いくつかの VM 構成を扱う際にも gVNIC が必要です。

ジャンボ フレームを送受信するには、VM で使用される VPC ネットワークを構成します。最大伝送単位(MTU)を最大 8896 までの大きい値に設定します。より高いネットワーク帯域幅で gVNIC を使用することで、VM を最大 98 Gbps で送信できます。ただし、GitHub からネットワーク ドライバをダウンロードしてインストールする必要があります。このドキュメントのサポートされていないオペレーティング システムで使用するをご覧ください。

準備

オペレーティング システムのサポート

サポートされているオペレーティング システムのリストについては、オペレーティング システムの詳細をご覧ください。

サポートされていないオペレーティング システムでの使用

現在サポートされていないオペレーティング システムで gVNIC を使用する場合は、次の手順で gVNIC を手動で構成し、インストールできます。

制限事項

概要

gVNIC を使用する VM を作成するには、次の手順を行います。

  1. gVNIC を使用するようにタグ付けされたカスタム イメージを作成する
  2. カスタム イメージを使用して VM を作成する
  3. gVNIC が有効であることを確認する

問題が発生した場合は、Google Virtual NIC のトラブルシューティングをご覧ください。

gVNIC をサポートするカスタム イメージを作成する

Google Cloud CLI または Compute Engine API を使用して、イメージを作成できます。

gcloud

  1. gVNIC をサポートするイメージまたはイメージ ファミリーを選択します。詳しくは、オペレーティング システムの詳細をご覧ください。

  2. 前の手順で選択したイメージまたはイメージ ファミリーを使用して、カスタムイメージを作成し、このイメージに GVNIC をタグ付けします。カスタム イメージを作成するには、gcloud compute images create コマンドを使用します。たとえば、次のコマンドは、gVNIC をサポートし、特定の OS イメージに基づいてカスタム イメージを作成します。

    gcloud compute images create IMAGE_NAME \
        --source-image=SOURCE_IMAGE \
        --source-image-project=SOURCE_IMAGE_PROJECT \
        --guest-os-features=GVNIC
    

    以下を置き換えます。

    • IMAGE_NAME: 作成するイメージの名前。
    • SOURCE_IMAGE: gVNIC をサポートする特定のイメージ(rhel-8-v20210122 など)。

      イメージ ファミリーの最新イメージを使用する場合は、--source-image フラグを --source-image-family フラグに置き換え、その値を gVNIC をサポートするイメージ ファミリーに設定します。例: --source-image-family=rhel-8。イメージ ファミリーを使用するタイミングについて詳しくは、イメージ ファミリーのベスト プラクティスをご覧ください。

    • SOURCE_IMAGE_PROJECT: ソースイメージまたはイメージ ファミリーを含むプロジェクトの名前。

    Compute Engine rhel-8 イメージ ファミリーの最新のイメージを使用して RHEL 8 イメージを作成するには、次のコマンドを実行します。

    gcloud compute images create IMAGE_NAME \
        --source-image-family=rhel-8 \
        --source-image-project=rhel-cloud \
        --guest-os-features=GVNIC
    

API

  1. gVNIC をサポートするイメージまたはイメージ ファミリーを選択します。詳細については、オペレーティング システムの詳細をご覧ください。

  2. 前の手順で選択したイメージまたはイメージ ファミリーを使用して、イメージを作成し、このイメージに GVNIC をタグ付けします。イメージを作成するには、images.insert メソッドを使用します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    {
      "name":"IMAGE_NAME",
      "sourceImage":"SOURCE_IMAGE_URI",
      "guestOsFeatures":[
        {
          "type":"GVNIC"
        }
      ]
    }
    

    次のように置き換えます。

    • IMAGE_NAME: 作成するイメージの名前。
    • SOURCE_IMAGE_URI: 使用する特定のイメージまたはイメージ ファミリーの URI。

      次に例を示します。

      • 特定のイメージ: "sourceImage": "projects/debian-cloud/global/images/rhel-8-v20210122"
      • イメージ ファミリー: "sourceImage": "projects/debian-cloud/global/images/family/rhel-8"

      イメージ ファミリーを指定すると、Compute Engine はそのファミリー内の非推奨でない最新の OS イメージから VM を作成します。イメージ ファミリーを使用するタイミングについて詳しくは、イメージ ファミリーのベスト プラクティスをご覧ください。

カスタム イメージを使用して VM を作成する

VM を作成するには、Google Cloud CLI または Compute Engine API を使用します。

gcloud

  1. gcloud compute instances create コマンドを使用して VM を作成します。ブートディスクには、前に作成したカスタム イメージを指定します。ネットワーク インターフェースの場合は、nic-type フラグの値を GVNIC に設定します。

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image=IMAGE_NAME \
        --image-project=YOUR_IMAGE_PROJECT \
        --network-interface=nic-type=GVNIC
    

    以下を置き換えます。

    • VM_NAME: 新しい VM の名前。
    • ZONE: VM を作成するゾーン。
    • IMAGE_NAME: 前の手順で作成したイメージ。
    • YOUR_IMAGE_PROJECT: イメージを含むプロジェクトの名前。

    プロジェクト my-project-12345 にある my-rhel-8 という名前のイメージを使用して、ゾーン us-west1-b に RHEL 8 VM を作成するには、次のコマンドを実行します。

    gcloud compute instances create my-rhel-vm \
        --zone=us-west1-b \
        --image=my-rhel-8 \
        --image-project=my-project-12345 \
        --network-interface=nic-type=GVNIC
    

    注意点

    --network-interface フラグには、次のようなサブレベルのフラグがあります。

    • --address
    • --network
    • --network-tier
    • --subnet
    • --private-network-ip

    完全な一覧については、--network-interface のフラグをご覧ください。

  2. Compute Engine によって VM が作成され、nicType isGVNIC に設定されていることを確認します。

    gcloud compute instances describe VM_NAME \
       --zone=ZONE
    

    次のように置き換えます。

    • VM_NAME: VM の名前。
    • ZONE: VM が作成されるゾーン。

API

  1. instances.insert メソッドを使用して VM を作成します。ブートディスクには、前に作成したカスタム イメージを指定します。ネットワーク インターフェースの場合は、nicType フィールドの値を GVNIC に設定します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
      "name":"VM_NAME",
      "networkInterfaces":[
        {
          "network":"NETWORK",
          "nicType":"GVNIC",
          "subnet":"SUBNET_NAME"
        }
      ],
      "disks":[
        {
          "initializeParams":{
            "sourceImage":"projects/YOUR_IMAGE_PROJECT/global/images/IMAGE_NAME"
          },
          "boot":true
        }
      ]
    }
    

    以下を置き換えます。

    • PROJECT_ID: VM を作成するプロジェクトの ID。
    • ZONE: VM を作成するゾーン。
    • VM_NAME: 新しい VM の名前。
    • NETWORK: この VM のネットワーク リソースの URL。ネットワークもサブネットワークも指定しない場合、デフォルトのネットワーク global/networks/default が使用されます。
    • SUBNET_NAME: サブネットの名前。ネットワークは指定したサブネットから推測されます。このフィールドは省略できます。
    • YOUR_IMAGE_PROJECT: イメージを含むプロジェクトの名前。
    • IMAGE_NAME: 前の手順で作成したイメージ。

gVNIC が有効であることを確認する

Linux

Linux VM インスタンスで、次のコマンドを実行します。

sudo lshw -class network

出力は次のようになります。

*-network
   description: Ethernet interface
   product: Compute Engine Virtual Ethernet [gVNIC]
   vendor: Google, Inc.
   physical id: 4
   bus info: pci@0000:00:04.0
   logical name: eth0
   version: 00
   serial: 42:01:0a:8a:00:04
   width: 32 bits
   clock: 33MHz
   capabilities: msix bus_master cap_list ethernet physical
   configuration: broadcast=yes driver=gve driverversion=1.0.0 ip=10.138.0.4 latency=0 link=yes multicast=yes
   resources: irq:11 memory:c0102000-c0102fff memory:c0101000-c010103f memory:c0000000-c00fffff

Windows

  1. Windows VM インスタンスで、デバイス マネージャーを開きます。
  2. [ネットワーク アダプター] に、"Google Ethernet Adapter" と表示されます。

トラブルシューティング

gVNIC のトラブルシューティングについては、Google Virtual NIC のトラブルシューティングをご覧ください。

次のステップ