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

Lesedauer: 5 Minute
0

Ich möchte den neuesten Elastic Network Adapter (ENA)-Treiber für erweiterte Netzwerkunterstützung auf einer Red Hat Enterprise Linux (RHEL) Amazon Elastic Compute Cloud (Amazon EC2)-Instance verwenden.

Behebung

Informationen zur Installation des neuesten ENA-Treibers auf Ihrer Amazon EC2-Instance finden Sie in dem Abschnitt, der für Ihre Version von RHEL gilt. Einige frühere Versionen des RHEL-Betriebssystems (OS) enthalten keinen ENA-Treiber. Für Nitro-Instances muss der ENA-Treiber Ihren EC2-Instance-Typ für die Netzwerkkonnektivität ändern.

**Hinweis:**Bevor Sie einen ENA-Treiber installieren oder aktualisieren, empfiehlt es sich, einen Snapshot Ihrer Instance zu erstellen.

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

RHEL Version 7.4 und höher

Das Modul für erweiterte Netzwerke mit einer ENA ist in RHEL-Version 7.4, Amazon Machine Images (AMIs) und allen späteren RHEL-Versionen vorinstalliert. Weitere Informationen finden Sie unter Aktivierung des erweiterten Netzwerks mit dem Elastic Network Adapter (ENA) auf Linux-Instances.

RHEL-Versionen vor 7.4

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

    sudo yum upgrade kernel -y
  2. Stoppen Sie die Instance.
    **Hinweis:**Wenn Sie eine Instance beenden, gehen Daten in Instance-Speicher-Volumen verloren. Weitere Informationen finden Sie unter Ermitteln des Root-Gerätetyps Ihrer Instance. Stellen Sie sicher, dass Sie alle Daten die Sie auf dem Instance-Speicher-Volumen, aufbewahren wollen, sichern.

  3. Führen Sie den AWS Command Line Interface (AWS CLI)-Befehl aus:

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

    **Hinweis:**Wenn Sie beim Ausführen von Befehlen im AWS CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Beheben von Fehlern im AWS CLI. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.

  4. Starten Sie die Instance.

  5. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der ENA-Treiber auf der Instance geladen ist. Ersetzen Sie den Standardschnittstellennamen eth0 durch den Namen der Schnittstelle, die Sie überprüfen möchten. Wenn Ihr Betriebssystem vorhersehbare Netzwerknamen verwendet, lautet der Netzwerkname möglicherweise anders.

    $ ethtool -i eth0

RHEL 6

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

Herunterladen und Installieren des ENA-Treibers

  1. Aktualisieren Sie den Kernel und starten Sie dann das System neu, damit der neueste Kernel wirksam wird:

    sudo yum upgrade kernel -y && sudo reboot
  2. Installieren Sie das Entwicklungspaket, um Kernelmodule zu erstellen, die zum Kernel passen:

    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. Kopieren Sie das Modul in das Modulverzeichnis:

    sudo cp ena.ko /lib/modules/$(uname -r)/
  4. Generieren Sie die Abhängigkeitszuordnungsdateien des Kernelmoduls neu:

    sudo depmod
  5. Verwenden Sie den Befehl modinfo, um zu bestätigen, dass das ENA-Modul vorhanden ist:

    modinfo ena

    Die Ausgabe des Befehls modinfo zeigt die ENA-Treiberinformation.
    Hinweis: Wenn Sie den ENA-Treiber kompilieren und auf Ihrem System installieren, ist die Version möglicherweise höher als 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. Hängen Sie net.ifnames=0 an /boot/grub/grub.confn, um die Benennung von Netzwerkschnittstellen auszuschalten:

    sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf
  7. Stoppen Sie die Instance. Aktivieren Sie dann die erweiterte Netzwerkunterstützung auf Instance-Ebene. Das folgende Beispiel ändert das Attribut der Instance aus der AWS-CLI:

    aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x
  8. Ändern Sie den Instance-Typ in einen der von ENA unterstützten Instance-Typen.

  9. Starten Sie die Instance, verwenden Sie SSH, um eine Verbindung zur Instance herzustellen, und führen Sie dann den Befehl ethtool aus:

    ethtool -i eth0

    Die folgende Beispielausgabe beinhaltet die ENA-Treiberversion:

    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
    

Konfigurieren Sie das DKMS-Programm, um sicherzustellen, dass der Treiber in zukünftigen Kernel-Upgrades enthalten ist

Hinweis: AWS und RHEL bieten keine Unterstützung für Software aus dem EPEL-Repository. Wenn Sie Dynamic Kernel Module Support (DKMS) verwenden, kündigen Sie die Support-Vereinbarung für Ihr Abonnement.

So konfigurieren Sie das DKMS-Programm:

  1. Installieren Sie die folgende Red Hat Package Manager (rpm)-Datei:

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

    Hinweis: Eine Liste der aktuellsten RPM-Pakete finden Sie unter Extra Packages für Enterprise Linux (EPEL) auf der Fedora-Projekt-Website.

  2. Führen Sie den BefehlInstall aus:

    sudo yum install dkms -y
  3. Ermitteln Sie die aktuelle Version:

    VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )
  4. Kopieren Sie die Quelldateien in das Quellverzeichnis:

    sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}
  5. Erstellen Sie die DKMS-Konfigurationsdatei und erstellen und installieren Sie das ENA-Modul:

    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 OFFICIAL
AWS OFFICIALAktualisiert vor 3 Monaten