Compute Engine 仮想ネットワーク インターフェースを使用するインスタンスの作成

Compute Engine 仮想ネットワーク インターフェース(gVNIC とも呼ばれます)は、Compute Engine 上での使用に特化して設計されたものです。Compute Engine 仮想ネットワーク インターフェースは、VM インスタンス間でのトラフィック送信のためのより効率的な配信ネットワークを提供します。これまで、Compute Engine で実行される仮想マシン(VM)インスタンスは、virtIO の仕様に基づく仮想ネットワーク インターフェースを使用していました。

Compute Engine の仮想ネットワーク インターフェースは、GPU が接続されたインスタンスの分散ワークロードに使用できる 50~100 Gbps の速度などのより高いネットワーク帯域幅をサポートする必要があります。

Compute Engine 仮想ネットワーク インターフェースを使用する VM インスタンスを作成するには、次のいずれかの手順に従います。

始める前に

制限事項

Compute Engine 仮想ネットワーク インターフェースは、メモリ最適化マシンタイプを使用する VM インスタンスではサポートされません。

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

gvnic-vm-image-prod イメージ プロジェクトに属する次の画像は、Compute Engine 仮想ネットワーク インターフェースを使用するように構成されています。

  • Debian 9 - debian-9-gvnic
  • Windows
    • Windows Server 2019 - windows-2019-gvnic
    • Windows Server 2016 - windows-2016-gvnic
    • Windows Server 2012 R2 - windows-2012-r2-gvnic

これらいずれかのイメージを使用して、デフォルトで Compute Engine 仮想ネットワーク インターフェースを使用する VM インスタンスを作成できます。

事前に構成されたイメージを使用して VM インスタンスを作成する

gvnic-vm-image-prod イメージ プロジェクトのイメージを使用して VM インスタンスを作成するには、VM インスタンスを作成するの手順に従い、イメージ プロジェクトとイメージ ファミリーを指定してください。

Debian

Debian インスタンスを作成するには、次のコマンドを実行します。

gcloud beta compute instances create instance-name \
      --image-project=gvnic-vm-image-prod \
      --image-family=debian-9-gvnic

instance-name は、実際のインスタンスの名前に置き換えます。

Windows

  • Windows 2019 インスタンスを作成するには、次のコマンドを実行します。

    gcloud beta compute instances create instance-name \
            --image-project=gvnic-vm-image-prod \
            --image-family=windows-2019-gvnic
    
  • Windows 2016 インスタンスを作成するには、次のコマンドを実行します。

    gcloud beta compute instances create instance-name \
              --image-project=gvnic-vm-image-prod \
              --image-family=windows-2016-gvnic
    
  • Windows 2012-r2 インスタンスを作成するには、次のコマンドを実行します。

    gcloud beta compute instances create instance-name \
              --image-project=gvnic-vm-image-prod \
              --image-family=windows-2012-r2-gvnic
    

    instance-name は、実際のインスタンスの名前に置き換えます。

Compute Engine 仮想ネットワーク ドライバを手動でインストールする

Compute Engine 仮想ネットワーク ドライバがインストールされていないイメージから VM インスタンスを作成するには、次の手順に従います。

  1. イメージに Compute Engine 仮想ネットワーク ドライバをインストールします。
  2. Compute Engine 仮想ネットワーク ドライバがインストールされたイメージを使用して、VM インスタンスを作成します。

Linux

Compute Engine 仮想ネットワーク ドライバをインストールする前に、オペレーティング システムに最新バージョンのカーネル ドライバとヘッダーをインストールする必要があります。カーネル ドライバのない Compute Engine 仮想ネットワーク インターフェースを使用するインスタンスでは、内部ネットワークや外部ネットワーク(SSH や RDP など)に接続できません。

ソースからカーネル ドライバをビルドしてインストールするには、ヘッダーがインストールされたサポート対象のカーネルが必要です。Compute Engine 仮想ネットワーク ドライバでは、バージョン 3.10 以降のメインラインおよびメジャー ディストリビューション カーネルに対するビルドがサポートされます。

  1. バージョン 3.10 以降のカーネルとヘッダーをインストールまたは更新します。この手順を完了するには、お使いのオペレーティング システムのドキュメントをご覧ください。ソースコードとドライバ パッケージは、GitHub から入手できます。GoogleCloudPlatform/compute-virtual-ethernet-linux をご覧ください。

  2. イメージを使用して VM インスタンスを作成および起動します。

  3. この VM インスタンスで、カーネル ドライバを読み込みます。ドライバを読み込むには、次のコマンドを実行します。

    modprobe gve

    このコマンドは、システムを再起動するか、rmmod コマンドでドライバを削除するまで、ドライバを読み込みます。

  4. (省略可)システム起動時にドライバが自動的に読み込まれるようにするには、次のいずれかのコマンドを実行します。

    • systemd を使用するオペレーティング システムの場合、次のコマンドを実行します。

      echo gve > /etc/modules-load.d/gve.conf
    • Debian システムの場合、次のコマンドを実行します。

      echo gve >> /etc/modules
  5. VM インスタンスを停止します。

  6. 停止した VM インスタンスに接続されたディスクからイメージを作成します。

    gcloud beta compute images create image-name\
            --source-disk disk-name \
            --guest-os-features=GVNIC
    

    以下を置き換えます。

    • image-name: 作成するイメージの名前。このイメージには、Compute Engine 仮想ネットワーク ドライバがインストールされています。
    • disk-name: 停止した VM インスタンスにあるブートディスクの名前。
  7. Compute Engine 仮想ネットワーク ドライバがインストールされたイメージを使用して、VM インスタンスを作成および起動します。

Windows

  1. イメージを使用して VM インスタンスを作成および起動します。

  2. この VM インスタンスで、GooGet をインストールします。GooGet をインストールするには、GooGet のダウンロードとインストールをご覧ください。

  3. gVNIC ドライバをインストールします。ドライバをインストールするには、昇格した PowerShell プロンプトで次のコマンドを実行します。

    googet install google-compute-engine-driver-gvnic
  4. VM インスタンスを停止します。

  5. 停止した VM インスタンスに接続されたディスクからイメージを作成します。

    gcloud beta compute images create image-name\
            --source-disk disk-name \
            --guest-os-features=GVNIC
    

    以下を置き換えます。

    • image-name: 作成するイメージの名前。このイメージには、Compute Engine 仮想ネットワーク ドライバがインストールされています。
    • disk-name: 停止した VM インスタンスにあるブートディスクの名前。
  6. Compute Engine 仮想ネットワーク ドライバがインストールされたイメージを使用して、VM インスタンスを作成および起動します。

Compute Engine 仮想ネットワーク インターフェースが有効であることを確認する

Linux

方法 1

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

    sudo apt install pciutils
    lspci
    

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

    00:04.0 Ethernet controller: Google, XXX. Device 0042

方法 2

  1. オペレーティング システムの手順に沿って、ethtool ネットワーク ユーティリティ ツールをダウンロードします。

  2. 次のコマンドを実行します。

    sudo ethtool -i network-interface

    network-interface は、ネットワーク インターフェースの名前に置き換えます。例: eth0

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

    driver: gve
    version: 1.0.0
    firmware-version:
    expansion-rom-version:
    bus-info: 0000:00:04.0
    supports-statistics: yes
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags: no

Windows

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

トラブルシューティング

VM インスタンスが起動しなかった

  • 原因: Compute Engine 仮想ネットワーク ドライバがイメージで有効になっていません。

  • 診断: Compute Engine 仮想ネットワーク インターフェースがイメージで有効になっているか確認します。これを確認するには、次のコマンドを実行します。

    gcloud beta compute images describe image-name

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

    コマンドの出力は、guestOsFeatures に「GVNIC」と表示されます。

  • 解決策: サポートされているイメージの使用が適切であるかどうか、またはカスタム イメージで gVNIC ドライバの設定が正しく行われているかどうかを確認します。

VM インスタンスが起動しましたが、ネットワーク経由でアクセスできません

  • 原因: Compute Engine 仮想ネットワーク ドライバが正常にインストールされず、読み込まれていません。

  • 診断: ドライバがインストールおよび読み込みされたかどうかを確認するには、次の手順に従います。

    Linux

    1. ドライバがインストールされていることを確認します。

      modinfo gve

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

      filename:       /lib/modules/4.15.0-1036-gcp/updates/dkms/gve.ko
      version:        1.0.0
      license:        Dual MIT/GPL
      description:    gVNIC Driver
      author:         Google, XXX.
      srcversion:     5FEFB9DD945EB2DEC94EE09
      alias:          pci:v00001AE0d00000042sv*sd*bc*sc*i*
      depends:
      retpoline:      Y
      name:           gve
      vermagic:       4.15.0-1036-gcp SMP mod_unload
      
    2. ドライバが読み込まれていることを確認します。

      lsmod | grep gve

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

      gve                    49152  0

    Windows

    1. SAC 経由でインスタンスに接続します。
    2. 自分のユーザー名とパスワードでログインします。
    3. コマンド プロンプトで、次のコマンドを実行します。

      dism /online /get-drivers | findstr gvnic
    4. 結果を確認します。

      • ドライバがインストールされている場合は、出力に「Original File Name : gvnic.inf」というテキストが表示されます。
      • ドライバがインストールされていない場合、メッセージは返されません。
  • 解決策: Compute Engine 仮想ネットワーク ドライバが使用できない場合は、サポートされているイメージの使用が適切であること、またはカスタム イメージで Compute Engine 仮想ネットワーク ドライバの設定が正しく行われていることを確認します。

次のステップ