首页 > 解决方案 > 在 Ubuntu 上为 AWS 启用 ENA

问题描述

我有一个旧的 Ubuntu EC2 实例,我正在尝试升级到 C5 类型,因此它需要 ENA 支持(目前它是 C4)。

所以我在这里按照 Ubuntu 的说明进行操作:https ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html#enhanced-networking-ena-ubuntu

这将成功安装 ENA 驱动程序:

    filename:       /lib/modules/4.4.0-1044-aws/kernel/drivers/net/ethernet/amazon/ena/ena.ko
version:        2.0.3K
license:        GPL
description:    Elastic Network Adapter (ENA)
author:         Amazon.com, Inc. or its affiliates
srcversion:     E19C939F9F1A3B8E900815D
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*
depends:        
retpoline:      Y
intree:         Y
vermagic:       4.4.0-1044-aws SMP mod_unload modversions 
parm:           debug:Debug level (0=none,...,16=all) (int)

另一方面,它继续显示正在使用不同的网络接口:

    userid@ip:~$ ethtool -i eth0
driver: ixgbevf
version: 2.12.1-k
firmware-version: 
bus-info: 0000:00:03.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

C5 实例将启动,但无法连接(我收到连接被拒绝错误)。

我不知道从这里去哪里。当我检查其 EnaSupport 属性时,我从该实例创建的实例和 AMI 都显示为 true。我已经在 SO 上找到了这个答案,但它似乎不适用于我的情况:如何在 Amazon AWS 上加载 ena 驱动程序?

编辑: grep ena 不返回任何内容。我已经尝试过仅使用 apt-get 和 DKMS 指令的 Ubuntu 指令。两者最终都使用 ixgbevf 驱动程序。

标签: amazon-web-servicesubuntu

解决方案


检查 ena 是否通过以下方式安装:

 modinfo ena

或者

lsmod | grep ena

您应该检查实例属性是否支持 ENA:

aws ec2 describe-instances --instance-ids <INSTANCE_ID> --query "Reservations[].Instances[].EnaSupport"

现在检查您的网络接口是否有 ena 驱动程序:

ethtool -i eth0

一个正确的应该返回 - driver: ena

修改网络接口的步骤:

  1. sudo apt-get update && sudo apt-get upgrade -y linux-aws
  2. 停止实例:aws ec2 stop-instances --instance-ids <INSTANCE_ID>
  3. 修改网络:aws ec2 modify-instance-attribute --instance-id <INSTANCE_ID> --ena-support
  4. 启动实例:aws ec2 start-instances --instance-ids <INSTANCE_ID>

推荐阅读