如何在執行 RHEL 的 Amazon EC2 執行個體上安裝和啟用最新的 ENA 驅動程式以取得增強型網路支援?

3 分的閱讀內容
0

我想在 Red Hat Enterprise Linux (RHEL) Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上使用最新的彈性網路介面卡 (ENA) 驅動程式以取得增強型網路支援。

解決方法

若要在 Amazon EC2 執行個體上安裝最新的 ENA 驅動程式,請參閱適用於 RHEL 版本的章節。某些較早版本的 RHEL 作業系統 (OS) 不包含 ENA 驅動程式。對於 Nitro 執行個體,ENA 驅動程式必須變更您的 EC2 執行個體類型才能進行網路連線。

**注意:**在安裝或更新 ENA 驅動程式之前,最佳實務是建立執行個體快照

如需有關更新 Linux 驅動程式的詳細資訊,請參閱 GitHub 網站上的 ENA Linux 驅動程式最佳實務和效能最佳化指南

RHEL 7.4 和更新版本

使用 ENA 的增強型聯網模組已預先安裝在 RHEL 7.4 版 Amazon Machine Images (AMI) 及所有更新的 RHEL 版本上。如需詳細資訊,請參閱在 Linux 執行個體上使用彈性網路介面卡 (ENA) 啟用增強型聯網

早於 7.4 的 RHEL 版本

  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 預設介面名稱取代為您要檢查的介面名稱。如果您的作業系統使用可預測的網路名稱,網路名稱可能會有所不同。

    $ 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. 將模組複製到模組目錄:

    sudo cp ena.ko /lib/modules/$(uname -r)/
  4. 重新產生核心模組相依性映射檔案:

    sudo depmod
  5. 使用 modinfo 命令確認 ENA 模組是否存在:

    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 個月前