ブラックボックス

プログラミングのノウハウやライフハックをどんどん投稿していきたい

Sep 1, 2018 - 2 minute read - ノウハウ

【AWS】Elastic Network Adapter(ENA)を有効にする

つい先日EC2にT3インスタンスがリリースされた為、T2から移行しようとした際に表題のElastic Network Adapter(ENA)問題により移行が出来なかった。
元々はT1からT2に移行したこともある古いインスタンスだった為かと思いますが、
updateをきちんと行っていれば有効に出来るらしいので有効化してみました。
環境:

  • Amazon Linux AMI release 2018.03

参考:
RHEL 7.4 で AWS の Elastic Network Adapter を有効にしてみる

用意するもの:

  • 該当のインスタンス以外でAWS CLIが使える環境

今回はLinuxにAWS CLIのセットアップを行った為、Linux向けのコマンドを記載しています。

まずはenaモジュールがインストールされていること確認。
対象のインスタンスで下記コマンドを実行。

$ modinfo ena
filename:       /lib/modules/4.14.59-64.43.amzn1.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
vermagic:       4.14.59-64.43.amzn1.x86_64 SMP mod_unload modversions
parm:           debug:Debug level (0=none,...,16=all) (int)

情報が出るのでインストールはされている。

次にenaが使われているか確認。
これも対象のインスタンスで実行。

$ 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

driver: vif となっていることから、enaは使われていない。

余談ですが、この状態で管理コンソールからenaが必須のインスタンスタイプに変更して開始した際は下記アラートが出て開始出来ませんでした。

ということで、enaの有効化を行う。

まずは対象のインスタンスを停止。
停止後、AWS CLIをセットアップした環境から下記コマンドを実行しenaを有効化する。

$ aws ec2 modify-instance-attribute --instance-id 【インスタンスID】 --ena-support

このコマンドは実行後に何も返って来ない為、別のコマンドで有効化されたことを確認する。

$ aws ec2 describe-instances --instance-id 【インスタンスID】 --query 'Reservations[].Instances[].EnaSupport'
[
    true
]

trueが返ってくれば有効化されている。
無効の場合は下記となる。

$ aws ec2 describe-instances --instance-id 【インスタンスID】 --query 'Reservations[].Instances[].EnaSupport'
[]

この状態で対象のインスタンスを開始する。
起動後、SSHでログインし再度確認。

$ ethtool -i eth0
driver: ena
version: 1.5.0g
firmware-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

driver: ena となった為、enaが使われている。