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

所要時間3分
0

最新の Elastic Network Adapter (ENA) ドライバーを使用して、Red Hat Enterprise Linux (RHEL) Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの拡張ネットワークサポートに対応しようと考えています。

解決策

Amazon EC2 インスタンスに最新の ENA ドライバーをインストールするには、お使いの RHEL のバージョンに該当するセクションを参照してください。RHEL オペレーティングシステム (OS) の以前のバージョンには ENA ドライバーが含まれていないものがあります。Nitro インスタンスの場合、ENA ドライバーでネットワーク接続のための EC2 インスタンスタイプを変更する必要があります。

注: ENA ドライバーをインストールまたは更新する前に、インスタンスのスナップショットを作成するのがベストプラクティスです。

Linuxドライバーの更新方法の詳細については、GitHub Webサイトの「ENA Linux driver best practices and performance optimization guide」を参照してください。

RHEL のバージョンが 7.4 以降の場合

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

RHEL のバージョンが 7.4 より前の場合

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

    sudo yum upgrade kernel -y
  2. インスタンスを停止します
    注: インスタンスが停止すると、インスタンスストアボリュームのデータは失われます。詳細については、「インスタンスのルートデバイスタイプの判別」を参照してください。インスタンスストアボリュームに残しておきたいデータは必ずバックアップしてください。

  3. 次の AWS コマンドラインインターフェイス (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 のデフォルトインターフェース名を、確認するインターフェースの名前に置き換えます。OS が予測可能なネットワーク名を使用している場合、ネットワーク名は異なる可能性があります。

    $ ethtool -i eth0

RHEL 6 の場合

注: RHEL 6 は Amazon EC2 本番環境対応の NVMe ドライバーを含んでいません。また、NVME ドライバーへのアップグレードはできません。Nitro ベースのインスタンスや、NVMe インスタンスストアボリュームを使用するインスタンスタイプを使用するには、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. インスタンスを停止します。インスタンスレベルで、拡張ネットワークサポートをアクティブ化します。次の例では、AWS CLI からインスタンスの属性を変更します。

    aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x
  8. インスタンスタイプを ENA でサポートされているインスタンスタイプのいずれかに変更します。

  9. インスタンスを起動し、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
    

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

注: AWS と RHEL は、EPEL リポジトリのソフトウェアをサポートしていません。動的カーネルモジュールサポート (DKMS) を使用すると、サブスクリプションのサポート契約が無効になります。

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 パッケージのリストについては、Fedora Project のウェブサイトの Extra Packages for Enterprise Linux (EPEL) を参照してください。

  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
AWS公式
AWS公式更新しました 3ヶ月前
コメントはありません

関連するコンテンツ