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

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

Amazon EC2 は、Elastic Network Adapter (ENA) を介して C5, C5d, F1, G3, H1, I3, m4.16xlarge, M5, M5d, P2, P3, R4, R5, R5d, X1, X1e, and z1d インスタンスに拡張されたネットワーキング機能を提供します。

要件

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 モジュール がインスタンスにインストールされていることと、enaSupport 属性が設定されていることを確認します。インスタンスがこれら 2 つの条件を満たしている場合は、ethtool -i ethn コマンドによって、ネットワークインターフェイスで使用されているモジュールが表示されます。

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

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

[ec2-user ~]$ modinfo ena filename: /lib/modules/4.14.33-59.37.amzn2.x86_64/kernel/drivers/amazon/net/ena/ena.ko version: 1.5.0g license: GPL description: Elastic Network Adapter (ENA) author: Amazon.com, Inc. or its affiliates srcversion: 692C7C68B8A9001CB3F31D0 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: retpoline: Y intree: Y name: ena ...

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

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

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

インスタンス属性 (enaSupport)

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

  • describe-instances (AWS CLI)

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

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

イメージ属性 (enaSupport)

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

  • describe-images (AWS CLI)

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

    (Get-EC2Image -ImageId ami_id).EnaSupport

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

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

[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

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

[ec2-user ~]$ ethtool -i eth0 driver: ena version: 1.5.0g firmware-version: expansion-rom-version: bus-info: 0000:00:05.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no

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

Amazon Linux AMI での拡張ネットワーキングの有効化

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

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

Amazon Linux AMI で拡張ネットワーキングを有効化するには

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

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

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

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

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

    [Instance store-backed インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、この手順に進んでください: Amazon Linux AMI で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)

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

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

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

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

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

Amazon Linux AMI で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)

インスタンスを停止するステップまで、前の手順に従います。「Instance Store-Backed Linux AMI の作成」に記述されているように、新しい AMI を作成します。AMI を登録するときに拡張ネットワーキング属性を有効にしてください。

  • register-image (AWS CLI)

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

    Register-EC2Image -EnaSupport $true ...

Ubuntu での拡張ネットワーキングの有効化

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

以前の AMI を使用してインスタンスを起動した場合、まだ拡張ネットワーキングが有効になっていなければ、linux-aws カーネルパッケージをインストールして最新の拡張ネットワーキングドライバーを取得できます。

linux-aws カーネルパッケージをインストールするには

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

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

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

    重要

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

Linux での拡張ネットワーキングの有効化

次の手順では、SUSE Linux Enterprise Server、Red Hat Enterprise Linux、または CentOS など、Amazon Linux AMI または Ubuntu 以外の Linux ディストリビューションで拡張ネットワーキングを有効にするための一般的なステップを示します。開始する前に、「拡張ネットワーキングが有効化されているかどうかのテスト」を参照して、インスタンスで拡張ネットワーキングがすでに有効になっているかどうかを確認します。コマンドの詳細な構文、ファイルの場所、パッケージやツールのサポートなどの詳細については、使用する Linux ディストリビューションのドキュメントを参照してください。

Linux で拡張ネットワーキングを有効化するには

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

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

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

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

  5. 起動時に新しいモジュールがロードされるように、インスタンスの initramfs を更新します。たとえば、ディストリビューションで dracut がサポートされる場合、次のコマンドを使用できます。

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

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

      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 行に追加することによって、予測可能なネットワークインターフェイス名を無効にします。

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

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

    [Instance store-backed インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、この手順に進んでください: Linux で拡張ネットワーキングを有効にするには (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. (オプション) インスタンスに接続し、モジュールがインストールされていることを確認します。

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

Linux で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)

インスタンスを停止するステップまで、前の手順に従います。「Instance Store-Backed Linux AMI の作成」に記述されているように、新しい AMI を作成します。AMI を登録するときに拡張ネットワーキング属性を有効にしてください。

トラブルシューティング

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