Red Hat 6/7 を実行している Amazon EC2 インスタンスで、拡張ネットワークサポート用の最新の ENA ドライバーをインストールし、アクティブ化するにはどうすればよいですか?

最終更新日: 2022 年 4 月 27 日

RHEL バージョン 6 または 7 を実行している Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで、拡張ネットワークサポート用の最新の Elastic Network Adapter (ENA) ドライバーをインストールし、アクティブ化するにはどうすればよいですか?

簡単な説明

Red Hat Enterprise Linux オペレーティングシステムの以前のバージョンには、ENA ドライバーが含まれていません。Nitro インスタンスの場合、ネットワーク接続のために EC2 インスタンスタイプを変更するには、ENA ドライバーが必要です。

注: 次の解決方法に進む前に、インスタンスのスナップショットを作成することがベストプラクティスです。

解決方法

RHEL 7.4 以降

RHEL 7.4 以降の AMI には、ENA を使用した拡張ネットワークに必要なモジュールがプリインストールされています。詳細については、「Linux インスタンスでの Elastic Network Adapter (ENA) を使用した拡張ネットワークの有効化」を参照してください。

7.4 より前の RHEL 7

1.    次のコマンドを実行して、カーネルを最新バージョンにアップグレードします。

sudo yum upgrade kernel -y

2.    インスタンスを停止します

注: インスタンスが停止すると、インスタンスストアボリュームのデータは失われます。詳細については、「インスタンスのルートデバイスタイプの判別」をご参照ください。インスタンスストアボリュームで保持するデータのバックアップを作成します。

3.    次の AWS Command Line Interface (AWS CLI) コマンドを実行します。

aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x

注: AWS CLI がインスタンスにインストールされていない場合は、インストールして設定できます。AWS CLI コマンドの実行時にエラーが発生した場合は、使用している AWS CLI を最新のバージョンにしてください

4.    インスタンスを起動します

5.    次のコマンドを使用して、ENA ドライバーがインスタンスにロードされたことを確認します。eth0 を確認するインターフェイスの名前に置き換えます。単一のインターフェイスのデフォルト名は eth0 です。オペレーティングシステムが予測可能なネットワーク名を使用している場合、ネットワーク名は異なる可能性があります。

$ ethtool -i eth0

RHEL 6

注: RHEL 6 には、Amazon EC2 本番環境対応の NVMe ドライバーは付属していません。また、NVME ドライバーに個別にアップグレードすることはできません。NVMe インスタンスストアボリュームで Nitro ベースまたは任意のインスタンスタイプを使用する場合は、RHEL 7.4 以降にアップグレードします。

ENA ドライバーをダウンロードしてインストールする

1.    最新のカーネルが有効になるように、カーネルを更新してシステムを再起動します。

sudo yum upgrade kernel -y && sudo reboot

2.    カーネルと一致するようにカーネルモジュールを構築するための開発パッケージをインストールします。

sudo yum install kernel-devel-$(uname -r) gcc git patch rpm-build wget -y
cd /usr/src/
sudo wget https://github.com/amzn/amzn-drivers/archive/master.zip
sudo unzip master.zip
cd amzn-drivers-master/kernel/linux/ena
sudo make

3.    モジュールを modules ディレクトリにコピーします。

sudo cp ena.ko /lib/modules/$(uname -r)/

4.    カーネルモジュールの依存関係マップファイルを再生成します。

sudo depmod

5.    ENA モジュールが存在することを確認するには、modinfo コマンドを使用します。

modinfo ena

modinfo コマンドの出力には、ENA ドライバー情報が表示されます。

注: コンパイルしてシステムにインストールする際の ENA ドライバーのバージョンは、2.2.11g より新しい場合があります。

filename:       /lib/modules/2.6.32-754.33.1.el6.x86_64/ena.ko
version:        2.2.11g
license:        GPL
description:    Elastic Network Adapter (ENA)
author:         Amazon.com, Inc. or its affiliates
retpoline:      Y
srcversion:     17C7CD1CEAD3F0ADB3A5E5E
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*
alias:          pci:v00001D0Fd00000051sv*sd*bc*sc*i*
depends:        
vermagic:       2.6.32-754.33.1.el6.x86_64 SMP mod_unload modversions 
parm:           debug:Debug level (0=none,...,16=all) (int)
parm:           rx_queue_size:Rx queue size. The size should be a power of 2. Max value is 8K
 (int)
parm:           force_large_llq_header:Increases maximum supported header size in LLQ mode to 224 bytes, while reducing the maximum TX queue size by half.
 (int)
parm:           num_io_queues:Sets number of RX/TX queues to allocate to device. The maximum value depends on the device and number of online CPUs.
 (int)

6.    net.ifnames=0/boot/grub/grub.conf に追加すると、ネットワークインターフェイスの命名が無効になります。

sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf

7.    インスタンスを停止します

8.    インスタンスレベルで、拡張ネットワークサポートをアクティブ化します。次の例では、AWS Command Line Interface (AWS CLI) からインスタンスの属性を変更します。

aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x

9.    インスタンスタイプを ENA でサポートされているインスタンスタイプのいずれかに変更します。

10.    インスタンスを起動し、SSH を使用してインスタンスに接続し、ethtool コマンドを実行します。

ethtool -i eth0

出力には、次の例に示すように、ENA ドライバーのバージョンが含まれます。

driver: ena
version: 2.2.11g
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

Dynamic Kernel Module Support (DKMS) プログラムを設定し、今後のカーネルアップグレードでドライバーが含まれるようにする

以下に留意してください。

  • EPEL リポジトリのソフトウェアは、Red Hat または AWS ではサポートされていません。
  • DKMS を使用すると、サブスクリプションのサポート契約が無効になります。

1.    以下の Red Hat Package Manager (rpm) ファイルをインストールします。

sudo yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm -y

注: 最新の .rpm パッケージのリストについては、EPEL - Fedora Project Wiki のウェブサイトを参照してください。

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

sudo yum install dkms -y

3.    現在のバージョンを検出します。

VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )

4.    ソースファイルをソースディレクトリにコピーします。

sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}

5.    DKMS 設定ファイルを生成し、ENA モジュールをビルドしてインストールします。

sudo cat <<EOM | sudo tee /usr/src/amzn-drivers-${VER}/dkms.conf
PACKAGE_NAME="ena"
PACKAGE_VERSION="$VER"
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"
EOM

sudo dkms add -m amzn-drivers -v $VER
sudo dkms build -m amzn-drivers -v $VER
sudo dkms install -m amzn-drivers -v $VER

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?