Google Virtual NIC の使用

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

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

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

始める前に

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

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

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

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

制限事項

  • gVNIC は、メモリ最適化マシンタイプを使用する VM ではサポートされていません。
  • 現在、大規模受信オフロード(LRO)はサポートされていません。gVNIC を使用する VM では、汎用受信オフロード(GRO)がデフォルトで有効になっています。VM で GRO を無効にしないでください。接続の問題が発生する可能性があります。

概要

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

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

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

カスタム イメージの作成

このイメージを作成するには、gcloud コマンドライン ツールまたは Compute Engine API を使用します。

gcloud

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

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

    gcloud compute images create IMAGE_NAME \
        [--source-image-family=SOURCE_IMAGE_FAMILY | --source-image=SOURCE_IMAGE] \
        --source-image-project=SOURCE_IMAGE_PROJECT \
        --guest-os-features=GVNIC
    

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

    • IMAGE_NAME: 作成するイメージの名前。
    • SOURCE_IMAGE または SOURCE_IMAGE_FAMILY: 次のいずれかを指定します。
      • SOURCE_IMAGE: 公開イメージの必須バージョン。例: --image rhel-8-v20210122
      • SOURCE_IMAGE_FAMILY: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、--image-family rhel-8 を指定すると、Compute Engine は RHEL 8 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。
    • 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
    

    IMAGE_NAME は、イメージの名前に置き換えます。

API

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

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

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

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

    • IMAGE_NAME: 作成するイメージの名前。
    • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。
      • IMAGE: 公開イメージの必須バージョン。例: "sourceImage": "projects/debian-cloud/global/images/rhel-8-v20210122"
      • IMAGE_FAMILY: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、"sourceImage": "projects/debian-cloud/global/images/family/rhel-8" を指定すると、Compute Engine は RHEL 8 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。
    • SOURCE_IMAGE_PROJECT: ソースイメージを含むプロジェクトの名前。

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

VM は、gcloud コマンドライン ツールまたは Compute Engine API を使用して作成できます。

gcloud

  1. カスタム イメージを使用して VM を作成します。VM を作成するには、gcloud compute instances create コマンド--network-interface=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. カスタム イメージを使用して VM を作成します。VM を作成するには、instances.insert メソッドを使用して、gVNIC をサポートするイメージを使用して 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"
          },
          "boot":true
        }
      ]
    }
    

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

    • PROJECT_ID: VM を作成するプロジェクトの ID。
    • ZONE: VM を作成するゾーン。
    • VM_NAME: 新しい VM の名前。
    • NETWORK: この VM のネットワーク リソースの URL。ネットワークもサブネットワークも指定しない場合、デフォルトのネットワーク global/networks/default が使用されます。
    • IMAGE_NAME: 前の手順で作成したイメージ。
    • YOUR_IMAGE_PROJECT: イメージを含むプロジェクトの名前。
    • SUBNET_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 のトラブルシューティングをご覧ください。

次のステップ