Amazon Elastic Compute Cloud
Linux 实例用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

在 VPC 中的 Linux 实例上启用 Intel 82599 VF 接口增强联网

Amazon EC2 通过使用 Intel ixgbevf 驱动程序的 Intel 82599 VF 接口向 C3、C4、D2、I2、M4 (m4.16xlarge 除外) 和 R3 实例提供增强联网功能。

要使用 Intel 82599 VF 接口准备增强联网,请按如下方式设置您的实例:

  • 从使用 Linux 内核版本 2.6.32 或更高版本的 HVM AMI 启动实例。最新的 Amazon Linux HVM AMI 安装有增强联网所需的模块,并已设置所需的属性。因此,如果使用最新的 Amazon Linux HVM AMI 启动由 Amazon EBS 提供支持且支持增强联网的实例,则已为您的实例启用增强联网。

    警告

    仅 HVM 实例支持增强联网。使用半虚拟化实例启用增强联网会让该实例无法访问。在模块或模块版本不正确的情况下设置此属性还可能导致您的实例不可访问。

  • 在 VPC 中启动实例。(如果实例在 EC2-Classic 中,则您不能启用增强联网功能。)

  • AWS CLI适用于 Windows PowerShell 的 AWS 工具 安装到您选择的任意计算机上 (最好是您的本地台式计算机或笔记本电脑) 并进行配置。有关更多信息,请参阅 访问 Amazon EC2。不能从 Amazon EC2 控制台管理增强联网。

  • 如果您的实例上有重要的数据需要保留,则应立即从您的实例创建 AMI,来备份这些数据。更新内核和内核模块以及启用 sriovNetSupport 属性可能会导致实例不兼容或操作系统无法访问;如果您有最新备份,则可在发生这种情况时保留数据。

测试是否启用了 Intel 82599 VF 接口增强联网

如果已在您的实例上安装 ixgbevf 模块且设置了 sriovNetSupport 属性,请启用 Intel 82599 VF 接口增强联网。

实例属性 (sriovNetSupport)

要检查实例是否设置了增强联网 sriovNetSupport 属性,请使用以下任一命令:

  • describe-instance-attribute (AWS CLI)

    aws ec2 describe-instance-attribute --instance-id instance_id --attribute sriovNetSupport
  • Get-EC2InstanceAttribute (适用于 Windows PowerShell 的 AWS 工具)

    Get-EC2InstanceAttribute -InstanceId instance-id -Attribute sriovNetSupport

如果此属性未设置,则 SriovNetSupport 为空;否则,设置如下:

"SriovNetSupport": { "Value": "simple" },

映像属性 (sriovNetSupport)

要检查 AMI 是否设置了增强联网 sriovNetSupport 属性,请使用以下任一命令:

  • describe-image-attribute (AWS CLI)

    aws ec2 describe-image-attribute --image-id ami_id --attribute sriovNetSupport

    请注意,该命令仅适用于您拥有的映像。对于不属于您的账户的映像,您会收到 AuthFailure 错误。

  • Get-EC2ImageAttribute (适用于 Windows PowerShell 的 AWS 工具)

    Get-EC2ImageAttribute -ImageId ami-id -Attribute sriovNetSupport

如果此属性未设置,则 SriovNetSupport 为空;否则,设置如下:

"SriovNetSupport": { "Value": "simple" },

网络接口驱动程序

使用以下命令验证模块是否在特定接口上使用 (替换为要检查的接口的名称)。如果您使用单个接口 (默认设置),则它是 eth0

[ec2-user ~]$ ethtool -i eth0 driver: vif version: firmware-version: bus-info: vif-0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no

在上例中,ixgbevf 模块未加载,因为列出的驱动程序是 vif

[ec2-user ~]$ ethtool -i eth0 driver: ixgbevf version: 4.0.3 firmware-version: N/A bus-info: 0000:00:03.0 supports-statistics: yes supports-test: yes supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: no

在本示例中,已加载 ixgbevf 模块。此实例正确配置了增强联网。

Amazon Linux 上启用 Intel 82599 VF 接口增强联网

最新的 Amazon Linux HVM AMI 安装有增强联网所需的 ixgbevf 模块,并已设置所需的 sriovNetSupport 属性。因此,如果使用最新的 Amazon Linux HVM AMI 启动实例类型,则已为您的实例启用增强联网。有关更多信息,请参阅 测试是否启用了 Intel 82599 VF 接口增强联网

如果您使用较旧的 Amazon Linux AMI 启动了实例,并且实例尚未启用增强联网,请通过以下步骤启用增强联网。

警告

增强联网属性启用之后将无法禁用。

警告

仅 HVM 实例支持增强联网。使用半虚拟化实例启用增强联网会让该实例无法访问。在模块或模块版本不正确的情况下设置此属性还可能导致您的实例不可访问。

启用增强联网 (EBS 支持的实例)

  1. 连接到您的实例。

  2. 从实例运行以下命令以使用最新内核和内核模块 (包括 ixgbevf) 更新实例:

    [ec2-user ~]$ sudo yum update
  3. 使用 Amazon EC2 控制台或以下任一命令从本地计算机重新启动实例:reboot-instances (AWS CLI),Restart-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)。

  4. 再次连接到您的实例,并使用 测试是否启用了 Intel 82599 VF 接口增强联网 中的 modinfo ixgbevf 命令验证 ixgbevf 模块是否已安装并具有推荐的最低版本。

  5. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机停止实例:stop-instances (AWS CLI),Stop-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)。如果您的实例由 AWS OpsWorks 管理,则应在 AWS OpsWorks 控制台中停止该实例,以便使实例状态保持同步。

    重要

    如果您使用的是实例存储支持的实例,则不能停止实例,而应继续启用增强联网 (实例存储支持的实例)

  6. 使用以下任一命令从本地计算机启用增强联网属性:

    • modify-instance-attribute (AWS CLI)

      aws ec2 modify-instance-attribute --instance-id instance_id --sriov-net-support simple
    • Edit-EC2InstanceAttribute (适用于 Windows PowerShell 的 AWS 工具)

      Edit-EC2InstanceAttribute -InstanceId instance_id -SriovNetSupport "simple"
  7. (可选) 从实例创建 AMI,如 创建 Amazon EBS 支持的 Linux AMI 中所述。该 AMI 从实例继承增强联网属性。因此,您可以使用此 AMI 启动默认情况下启用了增强联网功能的其他实例。

  8. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机启动实例:start-instances (AWS CLI),Start-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)。如果您的实例由 AWS OpsWorks 管理,则应在 AWS OpsWorks 控制台中启动该实例,以便使实例状态保持同步。

  9. 连接到您的实例,并使用 测试是否启用了 Intel 82599 VF 接口增强联网 中的 ethtool -i ethn 命令验证是否在网络接口上安装并加载了 ixgbevf 模块。

启用增强联网 (实例存储支持的实例)

在 Ubuntu 上启用 Intel 82599 VF 接口增强联网

在开始之前,在您的实例上检查是否已启用增强联网

Quick Start Ubuntu HVM AMI 包含实现增强联网所需的驱动程序。如果您拥有版本 2.16.4 或更高版本的 ixgbevf,则无需编译其他版本的 ixgbevf 模块,除非您想要较新版本中提供的额外功能。早于 2.16.4 的 ixgbevf 版本 (包括版本 2.14.2) 在某些 Ubuntu 版本上构建不正确。

如果您已从其他 Ubuntu AMI 中启动实例,请联系 AMI 供应商以确保是否需要较新版本的增强联网驱动程序。

以下过程提供了在 Ubuntu 实例上编译 ixgbevf 模块的一般步骤。

在 Ubuntu 上启用增强联网 (EBS 支持的实例)

  1. 连接到您的实例。

  2. 更新包缓存和包。

    ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y

    重要

    如果在更新过程中系统提示您安装 grub,请使用 /dev/xvda 安装 grub,然后选择保留当前版本的 /boot/grub/menu.lst

  3. 安装 dkms 包,以便每次更新内核时都会重建 ixgbevf 模块。

    ubuntu:~$ sudo apt-get install -y dkms
  4. 从 Sourceforge 上的 https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/ 位置下载适合您的实例内核版本的 ixgbevf 模块源代码;例如:

    ubuntu:~$ wget "https://sourceforge.net/projects/e1000/files/ixgbevf stable/4.3.3/ixgbevf-4.3.3.tar.gz"

    注意

    使用 uname -r 命令获取实例的内核版本。

  5. 解压缩并解档 ixgbevf 包。

    ubuntu:~$ tar -xzf ixgbevf-4.3.3.tar.gz
  6. ixgbevf 包移动到 /usr/src/ 目录,以便 dkms 可以在每次内核更新中找到并构建该模块。

    ubuntu:~$ sudo mv ixgbevf-4.3.3 /usr/src/
  7. 使用以下值创建 dkms 配置文件 (替换为您的 ixgbevf 版本)。

    1. 创建文件。

      ubuntu:~$ sudo touch /usr/src/ixgbevf-4.3.3/dkms.conf
    2. 编辑文件并添加以下值。

      ubuntu:~$ sudo vim /usr/src/ixgbevf-4.3.3/dkms.conf PACKAGE_NAME="ixgbevf" PACKAGE_VERSION="4.3.3" CLEAN="cd src/; make clean" MAKE="cd src/; make BUILD_KERNEL=${kernelver}" BUILT_MODULE_LOCATION[0]="src/" BUILT_MODULE_NAME[0]="ixgbevf" DEST_MODULE_LOCATION[0]="/updates" DEST_MODULE_NAME[0]="ixgbevf" AUTOINSTALL="yes"
  8. 使用 ixgbevfdkms 在实例上添加、构建并安装 模块。

    1. 将该模块添加到 dkms

      ubuntu:~$ sudo dkms add -m ixgbevf -v 4.3.3
    2. 使用 dkms 构建该模块。

      ubuntu:~$ sudo dkms build -m ixgbevf -v 4.3.3

      注意

      如果您的构建失败,请验证是否安装了 perl 以及其是否在该路径中。dkms 包需要 perl,但后者并非在所有操作系统上均默认安装。

      ubuntu:~$ which perl

      如果上面命令的输出路径中未显示 perl,您需要进行安装。

      对于 Ubuntu 16.04,您可能需要打开 /usr/src/ixgbevf-x.x.x/src/kcompat.h 文件并将 UTS_UBUNTU_RELEASE_ABI 的值更改为大于 1037 的值 (例如,99999)。

    3. 使用 dkms 安装该模块。

      ubuntu:~$ sudo dkms install -m ixgbevf -v 4.3.3
  9. 重新构建 initramfs,以便在启动时加载正确的模块。

    ubuntu:~$ sudo update-initramfs -c -k all
  10. 使用 modinfo ixgbevf 命令验证 ixgbevf 模块是否已安装且具有推荐的最新版本。

    ubuntu:~$ modinfo ixgbevf filename: /lib/modules/3.13.0-139-generic/updates/dkms/ixgbevf.ko version: 4.3.3 license: GPL description: Intel(R) 10 Gigabit Virtual Function Network Driver author: Intel Corporation, <linux.nics@intel.com> srcversion: 759A432E3151C8F9F6EA882 alias: pci:v00008086d00001515sv*sd*bc*sc*i* alias: pci:v00008086d000010EDsv*sd*bc*sc*i* depends: vermagic: 3.13.0-139-generic SMP mod_unload modversions parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (956-488281, 0=off, 1=dynamic), default 1 (array of int)
  11. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机停止实例:stop-instances (AWS CLI),Stop-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)。如果您的实例由 AWS OpsWorks 管理,则应在 AWS OpsWorks 控制台中停止该实例,以便使实例状态保持同步。

    重要

    如果您使用的是实例存储支持的实例,则不能停止实例,而应继续在 Ubuntu 上启用增强联网 (实例存储支持的实例)

  12. 使用以下任一命令从本地计算机启用增强联网 sriovNetSupport 属性。请注意,此属性启用之后将无法禁用。

    • modify-instance-attribute (AWS CLI)

      aws ec2 modify-instance-attribute --instance-id instance_id --sriov-net-support simple
    • Edit-EC2InstanceAttribute (适用于 Windows PowerShell 的 AWS 工具)

      Edit-EC2InstanceAttribute -InstanceId instance_id -SriovNetSupport "simple"
  13. (可选) 从实例创建 AMI,如 创建 Amazon EBS 支持的 Linux AMI 中所述。该 AMI 从实例继承增强联网 sriovNetSupport 属性。因此,您可以使用此 AMI 启动默认情况下启用了增强联网功能的其他实例。

  14. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机启动实例:start-instances (AWS CLI),Start-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)。如果您的实例由 AWS OpsWorks 管理,则应在 AWS OpsWorks 控制台中启动该实例,以便使实例状态保持同步。

  15. (可选) 连接到实例并确认已安装模块。

在 Ubuntu 上启用增强联网 (实例存储支持的实例)

在其他 Linux 发行版上启用 Intel 82599 VF 接口增强联网

在开始之前,在您的实例上检查是否已启用增强联网。最新 Quick Start HVM AMI 包含实现增强联网所需的驱动程序,因此您无需执行其他步骤。

下面的过程提供了在 Amazon Linux 或 Ubuntu 之外的 Linux 发行版上启用 Intel 82599 VF 接口增强联网所需的一般步骤。有关更多信息 (如命令的详细语法、文件位置或包和工具支持),请参阅您的 Linux 分发版的特定文档。

在 Linux 上启用增强联网 (EBS 支持的实例)

  1. 连接到您的实例。

  2. 从 Sourceforge 上的 ixgbevfhttps://sourceforge.net/projects/e1000/files/%20stable/ 位置在实例上下载 ixgbevf 模块的源代码。

    早于 2.16.4 的 ixgbevf 版本 (包括版本 2.14.2) 在某些 Linux 发行版 (包括某些 Ubuntu 版本) 上构建不正确。

  3. 在实例上编译并安装 ixgbevf 模块。

    如果您的分发版支持 dkms,则应考虑配置 dkms 以便在每次更新系统内核时重新编译 ixgbevf 模块。如果您的分发版自身不支持 dkms,则可以在用于 Red Hat Enterprise Linux 各版本的 EPEL 存储库 (https://fedoraproject.org/wiki/EPEL) 中找到它,也可以到 https://linux.dell.com/dkms/ 下载该软件。使用 在 Ubuntu 上启用增强联网 (EBS 支持的实例)步骤 6步骤 8 帮助配置 dkms

    警告

    如果您为当前内核编译 ixgbevf 模块,然后升级内核而不为新内核重建驱动程序,则系统会在下次重新启动时恢复为特定于分发版的 ixgbevf 模块,这可能会在特定于分发版的版本与增强联网不兼容时使您的系统无法访问。

  4. 运行 sudo depmod 命令以更新模块依赖项。

  5. 在实例上更新 initramfs 以确保在启动时加载新模块。

  6. 确定您的系统是否默认使用可预测的网络接口名称。使用 systemdudev 版本 197 或更高版本的系统可以重命名以太网设备,它们不保证单个网络接口将命名为 eth0。此行为可能导致连接到实例时出现问题。要获取更多信息并查看其他配置选项,请参阅 freedesktop.org 网站上的可预测的网络接口名称

    1. 您可以使用以下命令在基于 RPM 的系统上检查 systemdudev 版本:

      [ec2-user ~]$ rpm -qa | grep -e '^systemd-[0-9]\+\|^udev-[0-9]\+' systemd-208-11.el7_0.2.x86_64

      在以上 Red Hat Enterprise Linux 7 示例中,systemd 版本是 208,因此必须禁用可预测的网络接口名称。

    2. 通过将 net.ifnames=0 选项添加到 /etc/default/grub 中的 GRUB_CMDLINE_LINUX 行,可禁用可预测的网络接口名称。

      [ec2-user ~]$ sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
    3. 重新构建 grub 配置文件。

      [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  7. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机停止实例:stop-instances (AWS CLI),Stop-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)。如果您的实例由 AWS OpsWorks 管理,则应在 AWS OpsWorks 控制台中停止该实例,以便使实例状态保持同步。

    重要

    如果您使用的是实例存储支持的实例,则不能停止实例,而应继续启用增强联网 (实例存储支持的实例)

  8. 使用以下任一命令从本地计算机启用增强联网属性:

    • modify-instance-attribute (AWS CLI)

      aws ec2 modify-instance-attribute --instance-id instance_id --sriov-net-support simple
    • Edit-EC2InstanceAttribute (适用于 Windows PowerShell 的 AWS 工具)

      Edit-EC2InstanceAttribute -InstanceId instance_id -SriovNetSupport "simple"
  9. (可选) 从实例创建 AMI,如 创建 Amazon EBS 支持的 Linux AMI 中所述。该 AMI 从实例继承增强联网属性。因此,您可以使用此 AMI 启动默认情况下启用了增强联网功能的其他实例。

    重要

    如果您操作系统的实例包含 /etc/udev/rules.d/70-persistent-net.rules 文件,则必须在创建 AMI 之前将其删除。此文件包含原始实例的以太网适配器 MAC 地址。如果其他实例使用此文件启动,操作系统将找不到设备,eth0 会失败,从而导致启动问题。此文件将在下次启动过程中重新生成,从 AMI 启动的任意实例都会创建这个文件的自有版本。

  10. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机启动实例:start-instances (AWS CLI),Start-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)。如果您的实例由 AWS OpsWorks 管理,则应在 AWS OpsWorks 控制台中启动该实例,以便使实例状态保持同步。

  11. (可选) 连接到实例并确认已安装模块。

启用增强联网 (实例存储支持的实例)

排除连接问题

如果您在启用增强联网期间丢失连接,则 ixgbevf 模块可能与内核不兼容。请尝试安装用于您的实例的 Linux 分发版所附带的 ixgbevf 模块版本。

如果您为半虚拟化实例或 AMI 启用增强网络,则这可能会使您的实例无法访问。