如何在运行 Red Hat 6/7 的 Amazon EC2 实例上安装和启用最新版的 ENA 驱动程序以增强网络支持?

上次更新时间:2020 年 9 月 22 日

如何在运行 Red Hat Enterprise Linux 6 或 7 版的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上安装和启用最新版的 Elastic Network Adapter (ENA) 驱动程序以增强网络支持?

简短描述

一些较早版本的 Red Hat Enterprise Linux 操作系统不包含 ENA 驱动程序。ENA 驱动程序需要更改您的 EC2 实例类型以进行网络连接。

解决方法

RHEL 7.4 及更高版本

RHEL 7.4 及更高版本的 AMI 预装了 ENA 增强联网所需的模块。有关详细信息,请参阅在 Linux 实例上启用 ENA 增强联网

低于 7.4 的 RHEL 7

1.    运行以下命令以将内核升级到最新版本:

sudo yum upgrade kernel -y

2.    停止该实例

3.    运行以下命令:

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

RHEL 6

注意:此过程适用于支持 ENA 的早期实例类型。此过程不适用于迁移到基于 Nitro 的实例类型。RHEL 6 不附带 Amazon EC2 生产就绪型 NVME 驱动程序,您无法单独升级到 NVME 驱动程序。如果要使用基于 Nitro 的或任何 ENA 接口实例类型,请升级到 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.    停止该实例

8.    启用实例级别的增强网络支持。以下示例从 AWS 命令行界面 (AWS CLI) 修改实例的属性。

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 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

配置动态内核模块支持 (DKMS) 计划,以确保未来的内核升级期间包括驱动程序

请记住以下几点:

  • 来自 EPEL 存储库的软件不受 Red Hat 或 AWS 的支持。
  • 使用 DKMS 会导致您的订阅的支持协议无效。

1.    安装下列 Red Hat Package Manager (rpm) 文件:

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm -y

注意:有关最新 .rpm 软件包的列表,请参阅 EPEL - Fedora 项目维基百科网站

2.    运行安装命令:

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

这篇文章对您有帮助吗?


您是否需要账单或技术支持?