Direkt zum Inhalt

Wie installiere und aktiviere ich den neuesten ENA-Treiber für erweiterte Netzwerkunterstützung auf der EC2-Instance, auf der RHEL ausgeführt wird?

Lesedauer: 6 Minute
0

Ich möchte den neuesten Elastic Network Adapter (ENA)-Treiber für eine verbesserte Netzwerkunterstützung verwenden. Meine Amazon Elastic Compute Cloud (Amazon EC2)-Instance läuft auf einem Red Hat Enterprise Linux (RHEL).

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Einige frühere Versionen des RHEL-Betriebssystems (OS) enthalten keinen ENA-Treiber. Für Nitro-Instances musst du den ENA-Treiber aktualisierst, wenn du den EC2-Instance-Typ für die Netzwerkkonnektivität änderst. Um den neuesten ENA-Treiber auf der EC2-Instance zu installieren, führe je nach RHEL-Version die folgenden Schritte aus.

Bevor du einen ENA-Treiber installierst oder aktualisierst, empfiehlt es sich, einen Snapshot des Amazon Elastic Block Store (Amazon EBS)-Volumes der Instance zu erstellen.

Weitere Informationen zum Aktualisieren von Linux-Treibern findest du auf der GitHub-Website unter den bewährten Methoden für ENA-Treiber und im Leitfaden zur Leistungsoptimierung.

Wichtig: Wenn du eine Instance stoppst, löscht Amazon EC2 alle Daten auf den Instance-Speicher-Volumes. Informationen zum Überprüfen des Root-Gerätetyps findest du unter Ermitteln des Root-Gerätetyps des AMI. Du musst Daten sichern, die auf einem Instance-Speicher-Volume gespeichert sind, wenn du diese Daten behalten möchtest.

RHEL-Version 7.4 und höher

Standardmäßig ist auf Amazon Machine Images (AMIs) der RHEL-Version 7.4 und höher der ENA-Treiber für Enhanced Networking installiert. Weitere Informationen findest du unter Enhanced Networking mit ENA auf den EC2-Instances aktivieren.

RHEL-Versionen vor 7.4

Gehe wie folgt vor, um den ENA-Treiber zu installieren:

  1. Führe den folgenden Befehl aus, um den Kernel auf die neueste Version zu aktualisieren:

    sudo yum upgrade kernel -y
  2. Instance stoppen.

  3. Um die Instance zu aktualisieren, führe den folgenden AWS-CLI-Befehl modify-instance-attribute aus:

    aws ec2 modify-instance-attribute --instance-id exampleID --ena-support --region exampleRegion

    Hinweis: Ersetze exampleID durch die Instance-ID und exampleRegion durch die AWS-Region.

  4. Instance starten.

  5. Führe den folgenden Befehl aus, um zu überprüfen, ob du den ENA-Treiber korrekt auf der Instance installiert hast:

    ethtool -i eth0

    Hinweis: Ersetze eth0 durch den Namen der Schnittstelle, die du überprüfen möchtest. Wenn das Betriebssystem vorhersehbare Netzwerknamen verwendet, lautet der Netzwerkname möglicherweise anders. Weitere Informationen findest du unter Vorhersehbare Netzwerkschnittstellennamen verstehen auf der Red Hat-Website.

RHEL 6

Hinweis: RHEL 6 enthält keine produktionsbereiten Amazon EC2-NVMe-Treiber und du kannst kein Upgrade auf NVMe-Treiber durchführen. Um eine Nitro-basierte Instance oder einen Instance-Typ mit NVMe-Instance-Speicher-Volumen zu verwenden, führe ein Upgrade auf RHEL 7.4 oder höher durch.

Herunterladen und Installieren des ENA-Treibers

Führe die folgenden Schritte aus:

  1. Um den Kernel zu aktualisieren und das System neu zu starten, um den neuesten Kernel zu verwenden, führe den folgenden Befehl aus:

    sudo yum upgrade kernel -y && sudo reboot
  2. Um das Entwicklungspaket zu installieren, um Kernelmodule zu bauen, die zum Kernel passen, führe die folgenden Befehle aus:

    sudo yum install kernel-devel-$(uname -r) gcc git patch rpm-build wget -ycd /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. Um das Modul in das Modulverzeichnis zu kopieren, führe den folgenden Befehl aus:

    sudo cp ena.ko /lib/modules/$(uname -r)/
  4. Führe den folgenden Befehl aus, um die Abhängigkeitszuordnungsdateien des Kernelmoduls neu zu generieren:

    sudo depmod
  5. Führe den folgenden Befehl aus, um zu bestätigen, dass das ENA-Modul vorhanden ist:

    modinfo ena

    Wenn du den ENA-Treiber kompilierst und auf dem System installierst, ist die Version möglicherweise höher als 2.2.11g. Die Ausgabe des Befehls zeigt die ENA-Treiberinformation.
    Beispielausgabe:

    filename:       /lib/modules/2.6.32-754.33.1.el6.x86_64/ena.koversion:        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. Um net.ifnames=0 zu /boot/grub/grub.conf hinzuzufügen und die Benennung von Netzwerkschnittstellen zu deaktivieren, führe den folgenden Befehl aus:

    sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf
  7. Instance stoppen.

  8. Um die erweiterte Netzwerkunterstützung auf Instance-Ebene zu aktivieren, führe den folgenden Befehl modify-instance-attribute aus:

    aws ec2 modify-instance-attribute --instance-id exampleID --ena-support --region exampleRegion

    Hinweis: Ersetze exampleID durch die Instance-ID und exampleRegion durch die Region.

  9. Ändere den Instance-Typ in einen Instance-Typ, der ENA unterstützt.

  10. Instance starten.

  11. Verwende SSH, um eine Verbindung zur Instance herzustellen und führe dann den folgenden Befehl aus, um zu überprüfen, ob du den ENA-Treiber korrekt installiert hast:

ethtool -i eth0

Beispielausgabe:

driver: enaversion: 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

(Optional) So konfigurierst du das DKMS-Programm

Wenn die Anwendung eine direkte Abhängigkeit von der ENA-Version hat, konfiguriere das Programm Dynamic Kernel Module Support (DKMS). Dadurch wird sichergestellt, dass Amazon EC2 den Treiber in zukünftigen Kernel-Upgrades einbezieht.

Hinweis: Du kannst das Extra Packages für Enterprise Linux (EPEL)-Repository in einer RHEL-Instance verwenden.

Gehe wie folgt vor, um das DKMS-Programm zu konfigurieren:

  1. Um die Red Hat Package Manager (rpm)-Datei zu installieren, führe den folgenden Befehl aus:

    sudo yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm -y

    Hinweis: Eine Liste der neuesten RPM-Pakete findest du unter Verfügbare Pakete in EPEL auf der Fedora-Projekt-Website.

  2. Um DKMS zu installieren, führe den folgenden Befehl aus:

    sudo yum install dkms -y
  3. Um den vorhandenen Kernel zu löschen, führe den folgenden Befehl aus:

    VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )
  4. Um die Quelldateien in das Quellverzeichnis zu kopieren, führe den folgenden Befehl aus:

    sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}
  5. Führe den folgenden Befehl aus, um die DKMS-Konfigurationsdatei zu erstellen und das ENA-Modul zu erstellen und zu installieren:

    sudo cat <<EOM | sudo tee /usr/src/amzn-drivers-${VER}/dkms.confPACKAGE_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 OFFICIALAktualisiert vor 6 Monaten