メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

VPC 内の Linux インスタンスにおける Elastic Network Adapter (ENA) を使用した拡張ネットワーキングの有効化

ENA ネットワークアダプタを使用した拡張ネットワーキングを準備するには、次のようにインスタンスをセットアップします。

  • Linux カーネルバージョン 3.2 以降を使用して、HVM AMI からインスタンスを起動します。最新の Amazon Linux HVM AMI では、拡張ネットワーキングに必要なモジュールがインストールされており、必要な属性も設定されています。したがって、拡張ネットワーキングがサポートされている、Amazon EBS-Backed インスタンスを最新の Amazon Linux HVM AMI を使用して起動した場合は、ENA 拡張ネットワーキングが既に有効化されています。

  • VPC 内でインスタンスを起動している (インスタンスが EC2-Classic 内で動作している場合、拡張ネットワーキングを有効にできません)。

  • 選択した任意のコンピュータ、できればローカルのデスクトップまたはノート PC に、AWS CLI または AWS Tools for Windows PowerShell をインストールして設定します。詳細については、「Amazon EC2 へのアクセス」を参照してください。拡張ネットワーキングは、Amazon EC2 コンソールから管理することはできません。

  • 保持する必要がある重要なデータがインスタンスにある場合、インスタンスから AMI を作成してそのデータをバックアップする必要があります。カーネルとカーネルモジュールを更新し、enaSupport 属性を有効にすると、互換性のないインスタンスがレンダリングされたり、オペレーティングシステムにアクセスできなくなる場合があります。最新のバックアップがあれば、このような場合でもデータは保持されます。

ENA を使用した拡張ネットワーキングが有効化されているかどうかのテスト

を使用した拡張ネットワーキングが既に有効になっているかどうかをテストするには、enaena モジュールがインスタンスにインストールされていることと、enaSupport 属性が設定されていることを確認します。インスタンスがこれら 2 つの条件を満たしている場合は、ethtool -i ethn コマンドによって、ネットワークインターフェイスで使用されているモジュールが表示されます。

カーネルモジュール (ena)

ena モジュールがインストールされていることを確認するには、以下の要領で modinfo コマンドを使用します。

Copy
[ec2-user ~]$ modinfo ena filename: /lib/modules/4.4.11-23.53.amzn1.x86_64/kernel/drivers/amazon/net/ena/ena.ko version: 0.6.6 license: GPL description: Elastic Network Adapter (ENA) author: Amazon.com, Inc. or its affiliates srcversion: 3141E47566402C79D6B8284 alias: pci:v00001D0Fd0000EC21sv*sd*bc*sc*i* alias: pci:v00001D0Fd0000EC20sv*sd*bc*sc*i* alias: pci:v00001D0Fd00001EC2sv*sd*bc*sc*i* alias: pci:v00001D0Fd00000EC2sv*sd*bc*sc*i* depends: intree: Y vermagic: 4.4.11-23.53.amzn1.x86_64 SMP mod_unload modversions parm: debug:Debug level (0=none,...,16=all) (int) parm: push_mode:Descriptor / header push mode (0=automatic,1=disable,3=enable) 0 - Automatically choose according to device capability (default) 1 - Don't push anything to device memory 3 - Push descriptors and header buffer to device memory (int) parm: enable_wd:Enable keepalive watchdog (0=disable,1=enable,default=1) (int) parm: enable_missing_tx_detection:Enable missing Tx completions. (default=1) (int) parm: numa_node_override_array:Numa node override map (array of int) parm: numa_node_override:Enable/Disable numa node override (0=disable) (int)

上の Amazon Linux のケースでは、ena モジュールはインストールされています。

Copy
ubuntu:~$ modinfo ena ERROR: modinfo: could not find module ena

上の Ubuntu インスタンスでは、モジュールはインストールされていないため、まずインストールする必要があります。詳細については、「Ubuntu での ENA を使用した拡張ネットワーキングの有効化」を参照してください。

インスタンス属性 (enaSupport)

インスタンスに拡張ネットワーキングの enaSupport 属性が設定されているかどうかを確認するには、次のいずれかのコマンドを使用します。属性が設定されている場合、レスポンスは true です。

  • describe-instances (AWS CLI)

    Copy
    aws ec2 describe-instances --instance-ids instance_id --query 'Reservations[].Instances[].EnaSupport'
  • Get-EC2Instance (Tools for Windows PowerShell)

    Copy
    (Get-EC2Instance -InstanceId instance-id).Instances.EnaSupport

イメージ属性 (enaSupport)

AMI に拡張ネットワーキングの enaSupport 属性が設定されているかどうかを確認するには、次のいずれかのコマンドを使用します。属性が設定されている場合、レスポンスは true です。

  • describe-images (AWS CLI)

    Copy
    aws ec2 describe-images --image-id ami_id --query 'Images[].EnaSupport'
  • Get-EC2Image (Tools for Windows PowerShell)

    Copy
    (Get-EC2Image -ImageId ami_id).EnaSupport

ネットワークインターフェイスドライバー

ena モジュールが特定のインターフェイスで使用されていることを確認するには、確認するインターフェイス名に置き換えて、次のコマンドを使用します。単一のインターフェイス (デフォルト) を使用している場合は、eth0 です。

Copy
[ec2-user ~]$ ethtool -i eth0 driver: vif version: firmware-version: bus-info: vif-0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no

前述の場合、リストされているドライバは ena であるため、vif モジュールはロードされていません。

Copy
[ec2-user ~]$ ethtool -i eth0 driver: ena version: 0.6.6 firmware-version: bus-info: 0000:00:03.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no

この場合、ena モジュールはロードされており、最小推奨バージョンです。このインスタンスでは、拡張ネットワーキングが適切に設定されています。

Amazon Linux での ENA を使用した拡張ネットワーキングの有効化

最新の Amazon Linux HVM AMI では、ENA を使用した拡張ネットワーキングに必要なモジュールがインストールされており、必要な enaSupport 属性も設定されています。したがって、サポートされるインスタンスタイプで最新の Amazon Linux HVM AMI を使用してインスタンスを起動した場合、ENA を使用した拡張ネットワーキングは既にインスタンスで有効になっています。詳細については、「ENA を使用した拡張ネットワーキングが有効化されているかどうかのテスト」を参照してください。

以前の Amazon Linux AMI を使用してインスタンスを起動し、まだ拡張ネットワーキングが有効になっていない場合、拡張ネットワーキングを有効にするには次の手順を実行します。

ENA を使用した拡張ネットワーキングを有効にするには (EBS-backed インスタンス)

  1. インスタンスに接続します。

  2. インスタンスから、次のコマンドを実行して、ena を含む最新のカーネルとカーネルモジュールでインスタンスを更新します。

    Copy
    [ec2-user ~]$ sudo yum update
  3. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを再起動します。reboot-instances (AWS CLI)、Restart-EC2Instance (AWS Tools for Windows PowerShell)。

  4. インスタンスに再接続し、「ENA を使用した拡張ネットワーキングが有効化されているかどうかのテスト」の modinfo ena コマンドを使用して、ena モジュールがインストールされ、最小推奨バージョンであることを確認します。

  5. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを停止します。stop-instances (AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。

    重要

    instance store-backed インスタンスを使用している場合、インスタンスを停止することはできません。代わりに、「ENA を使用して拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)」に進みます。

  6. ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの属性を有効化します。

  7. (オプション) 「Amazon EBS-Backed Linux AMI の作成」の説明に従って、インスタンスから AMI を作成します。AMI は、インスタンスから拡張ネットワーキング enaSupport 属性を継承します。したがって、この AMI を使用して、ENA を使用した拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。

  8. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを起動します。start-instances (AWS CLI)、Start-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。

  9. インスタンスに接続し、「ena」の ethtool -i ethn コマンドを使用して、ENA を使用した拡張ネットワーキングが有効化されているかどうかのテスト モジュールがインストールされ、ネットワークインターフェイスにロードされていることを確認します。

    ENA を使用した拡張ネットワーキングを有効にした後にインスタンスに接続できない場合、「Elastic Network Adapter (ENA) のトラブルシューティング」を参照してください。

ENA を使用して拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)

インスタンスが Instance Store-Backed インスタンスである場合、前の手順の「ステップ 1」から「ステップ 4」までを実行し、「Instance Store-Backed Linux AMI の作成」の説明に従って新しい AMI を作成します。 AMI を登録するときに、必ず拡張ネットワーキング enaSupport 属性を有効化してください。

  • register-image (AWS CLI)

    Copy
    aws ec2 register-image --ena-support ...
  • Register-EC2Image (AWS Tools for Windows PowerShell)

    Copy
    Register-EC2Image -EnaSupport $true ...

Ubuntu での ENA を使用した拡張ネットワーキングの有効化

次の手順では、Ubuntu インスタンスで ENA を使用した拡張ネットワーキングを有効にする場合の一般的なステップを説明します。

Ubuntu で ENA を使用した拡張ネットワーキングを有効にするには (EBS-backed インスタンス)

  1. インスタンスに接続します。

  2. パッケージキャッシュおよびパッケージを更新します。

    Copy
    ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y

    重要

    更新プロセス中に grub をインストールするよう求められた場合は、grub のインストール先として /dev/xvda を使用し、現在のバージョンの /boot/grub/menu.lst を保持することを選択します。

  3. build-essential パッケージをインストールしてカーネルモジュールと dkms パッケージをコンパイルし、カーネルが更新されるたびに ena モジュールが再構築されるようにします。

    Copy
    ubuntu:~$ sudo apt-get install -y build-essential dkms
  4. ena の GitHub からインスタンスで https://github.com/amzn/amzn-drivers モジュールのソースコードのクローンを作成します。

    Copy
    ubuntu:~$ git clone https://github.com/amzn/amzn-drivers
  5. amzn-drivers パッケージを /usr/src/ ディレクトリに移動して、カーネルの更新のたびに dkms がこのパッケージを見つけてビルドできるようにします。ソースコードのバージョン番号 (現在のバージョン番号はリリースノートにあります) をディレクトリ名に付加します。たとえば、バージョン 1.0.0 を以下の例に示します。

    Copy
    ubuntu:~$ sudo mv amzn-drivers /usr/src/amzn-drivers-1.0.0
  6. 以下の値を使用し、 の使用しているバージョンに置き換えて、dkmsena 設定ファイルを作成します。

    1. ファイルを作成します。

      Copy
      ubuntu:~$ sudo touch /usr/src/amzn-drivers-1.0.0/dkms.conf
    2. ファイルを編集し、次の値を追加します。

      Copy
      ubuntu:~$ sudo vim /usr/src/amzn-drivers-1.0.0/dkms.conf PACKAGE_NAME="ena" PACKAGE_VERSION="1.0.0" CLEAN="make -C kernel/linux/ena clean" MAKE="make -C kernel/linux/ena/ BUILD_KERNEL=${kernelver}" BUILT_MODULE_NAME[0]="ena" BUILT_MODULE_LOCATION="kernel/linux/ena" DEST_MODULE_LOCATION[0]="/updates" DEST_MODULE_NAME[0]="ena" AUTOINSTALL="yes"
  7. enadkms を使用して、インスタンスで モジュールを追加、ビルド、およびインストールします。

    1. dkms にモジュールを追加します。

      Copy
      ubuntu:~$ sudo dkms add -m amzn-drivers -v 1.0.0
    2. dkms を使用してモジュールをビルドします。

      Copy
      ubuntu:~$ sudo dkms build -m amzn-drivers -v 1.0.0
    3. dkms を使用してモジュールをインストールします。

      Copy
      ubuntu:~$ sudo dkms install -m amzn-drivers -v 1.0.0
  8. 起動時に正しいモジュールがロードされるように、initramfs を再ビルドします。

    Copy
    ubuntu:~$ sudo update-initramfs -c -k all
  9. ena から modinfo ena コマンドを使用して、ENA を使用した拡張ネットワーキングが有効化されているかどうかのテスト モジュールがインストールされていることを確認します。

    Copy
    ubuntu:~$ modinfo ena filename: /lib/modules/3.13.0-74-generic/updates/dkms/ena.ko version: 1.0.0 license: GPL description: Elastic Network Adapter (ENA) author: Amazon.com, Inc. or its affiliates srcversion: 9693C876C54CA64AE48F0CA alias: pci:v00001D0Fd0000EC21sv*sd*bc*sc*i* alias: pci:v00001D0Fd0000EC20sv*sd*bc*sc*i* alias: pci:v00001D0Fd00001EC2sv*sd*bc*sc*i* alias: pci:v00001D0Fd00000EC2sv*sd*bc*sc*i* depends: vermagic: 3.13.0-74-generic SMP mod_unload modversions parm: debug:Debug level (0=none,...,16=all) (int) parm: push_mode:Descriptor / header push mode (0=automatic,1=disable,3=enable) 0 - Automatically choose according to device capability (default) 1 - Don't push anything to device memory 3 - Push descriptors and header buffer to device memory (int) parm: enable_wd:Enable keepalive watchdog (0=disable,1=enable,default=1) (int) parm: enable_missing_tx_detection:Enable missing Tx completions. (default=1) (int) parm: numa_node_override_array:Numa node override map (array of int) parm: numa_node_override:Enable/Disable numa node override (0=disable) (int)
  10. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを停止します。stop-instances (AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。

    重要

    instance store-backed インスタンスを使用している場合、インスタンスを停止することはできません。代わりに、「Ubuntu で ENA を使用した拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)」に進みます。

  11. ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの属性を有効化します。

  12. (オプション) 「Amazon EBS-Backed Linux AMI の作成」の説明に従って、インスタンスから AMI を作成します。AMI は、インスタンスから拡張ネットワーキング属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。

  13. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを起動します。start-instances (AWS CLI)、Start-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。

  14. (オプション) インスタンスに接続し、モジュールがインストールされていることを確認します。

    ENA を使用した拡張ネットワーキングを有効にした後にインスタンスに接続できない場合、「Elastic Network Adapter (ENA) のトラブルシューティング」を参照してください。

Ubuntu で ENA を使用した拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)

インスタンスが instance store–backed インスタンスである場合、前の手順の「ステップ 1」から「ステップ 9」までを実行し、「Instance Store-Backed Linux AMI の作成」の説明に従って新しい AMI を作成します。AMI を登録するときに、必ず拡張ネットワーキング enaSupport 属性を有効化してください。

  • register-image (AWS CLI)

    Copy
    aws ec2 register-image --ena-support ...
  • Register-EC2Image (AWS Tools for Windows PowerShell)

    Copy
    Register-EC2Image -EnaSupport $true ...

他の Linux ディストリビューションでの ENA を使用した拡張ネットワーキングの有効化

次の手順では、Amazon Linux または Ubuntu 以外の Linux ディストリビューションで ENA を使用した拡張ネットワーキングを有効にする場合の一般的なステップを説明します。コマンドの詳細な構文、ファイルの場所、パッケージやツールのサポートなどの詳細については、使用する Linux ディストリビューションのドキュメントを参照してください。

Linux で ENA を使用した拡張ネットワーキングを有効にするには (EBS-backed インスタンス)

  1. インスタンスに接続します。

  2. ena の GitHub からインスタンスで https://github.com/amzn/amzn-drivers モジュールのソースコードのクローンを作成します。

    Copy
    ubuntu:~$ git clone https://github.com/amzn/amzn-drivers
  3. インスタンスで ena モジュールをコンパイルし、インストールします。

    ディストリビューションが dkms をサポートしている場合は、システムのカーネルが更新されるたびに ena モジュールを再コンパイルするように dkms を設定することを検討してください。ディストリビューションが dkms をネイティブにサポートしていない場合、Red Hat Enterprise Linux バリアントの場合は、EPEL リポジトリ (https://fedoraproject.org/wiki/EPEL) で見つけることができます。または、http://linux.dell.com/dkms/ でこのソフトウェアをダウンロードできます。dkms の設定については、「Ubuntu で ENA を使用した拡張ネットワーキングを有効にするには (EBS-backed インスタンス)」の「ステップ 5」から「ステップ 7」までを参照してください。

  4. sudo depmod コマンドを実行して、モジュールの依存関係を更新します。

  5. 起動時に新しいモジュールがロードされるように、インスタンスの initramfs を更新します。

  6. システムがデフォルトで予測可能なネットワークインターフェイス名を使用するかどうかを確認します。systemd または udev のバージョン 197 以上を使用するシステムの場合、イーサネットデバイスの名前を変更でき、単一ネットワークインターフェイスの名前が eth0 になることは保証されません。この動作は、インスタンスに接続する際に問題の原因となる可能性があります。詳細と他の設定オプションについては、freedesktop.org ウェブサイトで「Predictable Network Interface Names/」を参照してください。

    1. 次のコマンドを使用して、RPM ベースのシステムで systemd または udev のバージョンを確認できます。

      Copy
      [ec2-user ~]$ rpm -qa | grep -e '^systemd-[0-9]\+\|^udev-[0-9]\+' systemd-208-11.el7_0.2.x86_64

      上記の Red Hat Enterprise Linux 7 の例では、systemd のバージョンは 208 であるため、予測可能なネットワークインターフェイス名は無効になっている必要があります。

    2. net.ifnames=0 オプションを /etc/default/grubGRUB_CMDLINE_LINUX 行に追加することによって、予測可能なネットワークインターフェイス名を無効にします。

      Copy
      [ec2-user ~]$ sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
    3. grub の設定ファイルを再ビルドします。

      Copy
      [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  7. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを停止します。stop-instances (AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。

    重要

    instance store-backed インスタンスを使用している場合、インスタンスを停止することはできません。代わりに、「ENA を使用して拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)」に進みます。

  8. ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの enaSupport 属性を有効化します。

  9. (オプション) 「Amazon EBS-Backed Linux AMI の作成」の説明に従って、インスタンスから AMI を作成します。AMI は、インスタンスから拡張ネットワーキング enaSupport 属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。

    重要

    インスタンスオペレーティングシステムに /etc/udev/rules.d/70-persistent-net.rules が含まれている場合には、AMI を作成する前にそれを削除する必要があります。このファイルには、元のインスタンスのイーサネットアダプターの MAC アドレスが保存されています。別のインスタンスがこのファイルを使用して起動した場合、オペレーティングシステムがそのデバイスを検出できなくなり、eth0 が失敗して、起動に関する問題が発生することがあります。このファイルは次の起動サイクルで再び生成され、AMI から起動されるインスタンスごとに独自のバージョンが作成されます。

  10. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを起動します。start-instances (AWS CLI)、Start-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。

  11. (オプション) インスタンスに接続し、モジュールがインストールされていることを確認します。

    ENA を使用した拡張ネットワーキングを有効にした後にインスタンスに接続できない場合、「Elastic Network Adapter (ENA) のトラブルシューティング」を参照してください。

ENA を使用して拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)

インスタンスが instance store–backed インスタンスである場合、前の手順の「ステップ 1」から「ステップ 5」までを実行し、「Instance Store-Backed Linux AMI の作成」の説明に従って新しい AMI を作成します。AMI を登録するときに、必ず拡張ネットワーキング enaSupport 属性を有効化してください。

  • register-image (AWS CLI)

    Copy
    aws ec2 register-image --ena-support ...
  • Register-EC2Image (AWS Tools for Windows PowerShell)

    Copy
    Register-EC2Image -EnaSupport ...

トラブルシューティング

ENA アダプタのトラブルシューティングの詳細については、「Elastic Network Adapter (ENA) のトラブルシューティング」を参照してください。