Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
RHEL 上で実行する EC2 インスタンスに最新の ENA ドライバーをインストールして有効化し、ネットワークサポートを拡張する方法を教えてください。
最新の Elastic ネットワークアダプター (ENA) ドライバーを使用してネットワークサポートを拡張したいです。使用する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスは Red Hat Enterprise Linux (RHEL) で実行しています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
RHEL オペレーティングシステム (OS) の過去のバージョンには、ENA ドライバーが含まれていないものがあります。Nitro インスタンスでは、ネットワーク接続用の EC2 インスタンスタイプを変更する場合は、ENA ドライバーを更新する必要があります。EC2 インスタンスに最新の ENA ドライバをインストールするには、使用する RHEL バージョンに応じて次の手順を実行します。
ENA ドライバをインストールまたは更新する前に、インスタンスの Amazon Elastic Block Store (Amazon EBS) ボリュームのスナップショットを作成することをおすすめします。
Linuxドライバーの更新方法に関する詳細については、GitHub のウェブサイトで「ENA Linux ドライバーのベストプラクティスとパフォーマンス最適化ガイド」を参照してください。
重要: インスタンスを停止すると、Amazon EC2 はインスタンスストアボリューム内のすべてのデータを削除します。ルートデバイスの種類を確認する方法については、「AMI のルートデバイスタイプを判別する」を参照してください。データを保持する場合は、インスタンスストアボリュームに保存されているデータをバックアップする必要があります。
RHEL のバージョン 7.4 以降
デフォルトでは、RHEL バージョン 7.4 以降の Amazon マシンイメージ (AMI) には、拡張ネットワーク機能用の ENA ドライバーがインストールされています。詳細については、「EC2 インスタンスで ENA を使用して拡張ネットワーク機能を有効にする」を参照してください。
7.4 より古い RHEL バージョン
ENA ドライバをインストールするには、次の手順を実行します。
-
次のコマンドを実行してカーネルを最新バージョンにアップグレードします。
sudo yum upgrade kernel -y -
インスタンスを停止します。
-
インスタンスを更新するには、次の AWS CLI コマンド modify-instance-attribute を実行します。
aws ec2 modify-instance-attribute --instance-id exampleID --ena-support --region exampleRegion注: 実際のものでそれぞれ、exampleID をインスタンス ID に、exampleRegion を AWS リージョンに置き換えます。
-
ENA ドライバーがインスタンスに正しくインストールされたことを検証するには、次のコマンドを実行します。
ethtool -i eth0注: eth0 を確認するインターフェースの名前に置き換えます。OS が予測可能なネットワーク名を使用している場合、ネットワーク名は異なる可能性があります。詳細については、Red Hat のウェブサイトで「予測可能なネットワークインターフェイスのデバイス名を把握する」を参照してください。
RHEL 6
注: RHEL 6 は Amazon EC2 本番環境対応の NVMe ドライバーを含んでいません。なお、NVME ドライバーへのアップグレードはできません。Nitro ベースのインスタンスや、NVMe インスタンスストアボリュームを使用するインスタンスタイプを使用するには、RHEL 7.4 以降にアップグレードしてください。
ENA ドライバーをダウンロードしてインストールする
次の手順を実行します。
-
カーネルを更新し、システムを再起動して最新のカーネルを使用するには、次のコマンドを実行します。
sudo yum upgrade kernel -y && sudo reboot -
カーネルに合ったカーネルモジュールをビルドするために開発パッケージをインストールするには、次のコマンドを実行します。
sudo yum install kernel-devel-$(uname -r) gcc git patch rpm-build wget -ycd /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 -
モジュールをモジュールディレクトリにコピーするには、次のコマンドを実行します。
sudo cp ena.ko /lib/modules/$(uname -r)/ -
カーネルモジュールの依存関係マップファイルを再生成するには、次のコマンドを実行します。
sudo depmod -
ENA モジュールが存在することを確認するには、次のコマンドを実行します。
modinfo enaコンパイルしてシステムにインストールする際の ENA ドライバーのバージョンは、2.2.11g より新しい場合があります。コマンドの出力には、ENA ドライバーの情報が表示されます。
出力例:filename: /lib/modules/2.6.32-754.33.1.el6.x86_64/ena.koversion: 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) -
/boot/grub/grub.conf に net.ifnames=0 を追加し、ネトワークインターフェイスの命名を無効にするには、次のコマンドを実行します。
sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf -
インスタンスを停止します。
-
インスタンスレベルで拡張ネットワークサポートを有効にするには、次の modify-instance-attribute コマンドを実行します。
aws ec2 modify-instance-attribute --instance-id exampleID --ena-support --region exampleRegion注: 実際のものでそれぞれ、exampleID をインスタンス ID に、exampleRegion をリージョンに置き換えます。
-
インスタンスタイプを ENA をサポートするインスタンスタイプに変更します。
-
SSH を使用してインスタンスに接続し、次のコマンドを実行して ENA ドライバーが正しくインストールされていることを確認します。
ethtool -i eth0
出力例:
driver: enaversion: 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
(オプション) DKMS プログラムを設定する
アプリケーションが ENA バージョンに直接依存している場合は、動的カーネルモジュールサポート (DKMS) プログラムを設定します。この設定を行うと、今後のカーネルアップグレードでも Amazon EC2 にそのドライバーが含まれるようになります。
注: RHEL インスタンスでは Extra Packages for Enterprise Linux (EPEL) リポジトリを使用できます。
DKMS プログラムを設定するには、次の手順を実行します。
-
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 パッケージのリストについては、Fedora Project のウェブサイトで「EPEL で使用可能なパッケージ」を参照してください。
-
DKMS のインストールには、次のコマンドを実行します。
sudo yum install dkms -y -
既存のカーネルを削除するには、次のコマンドを実行します。
VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 ) -
ソースファイルをソースディレクトリにコピーするには、次のコマンドを実行します。
sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER} -
DKMS 設定ファイルを作成し、ENA モジュールをビルドしてインストールするには、次のコマンドを実行します。
sudo cat <<EOM | sudo tee /usr/src/amzn-drivers-${VER}/dkms.confPACKAGE_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
関連するコンテンツ
AWS公式更新しました 3年前