Salta al contenuto

Come posso installare e attivare il driver ENA più recente per supportare le reti avanzate sulla mia istanza EC2 che esegue RHEL?

6 minuti di lettura
0

Desidero utilizzare il driver Adattatore elastico di rete (ENA) più recente per supportare le reti avanzate. La mia istanza Amazon Elastic Compute Cloud (Amazon EC2) viene eseguita su Red Hat Enterprise Linux (RHEL).

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Alcune versioni precedenti del sistema operativo RHEL non includono un driver ENA. Per le istanze Nitro, devi aggiornare il driver ENA se modifichi il tipo di istanza EC2 per la connettività di rete. Per installare il driver ENA più recente su un'istanza EC2, completa i seguenti passaggi in base alla versione di RHEL.

Prima di installare o aggiornare un driver ENA, è consigliabile creare uno snapshot del volume Amazon Elastic Block Store (Amazon EBS) dell'istanza.

Per ulteriori informazioni sull'aggiornamento dei driver per Linux, consulta ENA Linux Driver Best Practices and Performance Optimization Guide (Best practice per i driver ENA per Linux e guida all'ottimizzazione delle prestazioni) sul sito web GitHub.

Importante: quando arresti un'istanza, Amazon EC2 elimina tutti i dati presenti nei volumi di archivio dell'istanza. Per verificare il tipo di dispositivo root, consulta Determinare il tipo di dispositivo root dell'AMI. Devi eseguire il backup dei dati archiviati su un volume di archivio dell'istanza se desideri conservare i dati.

RHEL versione 7.4 e successive

Per impostazione predefinita, le Amazon Machine Image (AMI) RHEL versione 7.4 e successive hanno il driver ENA per reti avanzate già installato. Per ulteriori informazioni, consulta Abilita una rete avanzata con ENA sulle tue EC2 istanze.

RHEL versioni precedenti alla 7.4

Per installare il driver ENA, completa i seguenti passaggi:

  1. Esegui questo comando per aggiornare il kernel alla versione più recente:

    sudo yum upgrade kernel -y
  2. Arresta l'istanza.

  3. Per aggiornare l'istanza, esegui questo comando AWS CLI modify-instance-attribute:

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

    Nota: sostituisci exampleID con l'ID della tua istanza e exampleRegion con la tua Regione AWS.

  4. Avvia l'istanza.

  5. Per verificare di aver installato correttamente il driver ENA sull'istanza, esegui questo comando:

    ethtool -i eth0

    Nota: sostituisci eth0 con il nome dell'interfaccia che desideri controllare. Se il sistema operativo utilizza nomi di rete prevedibili, il nome della rete potrebbe essere diverso. Per ulteriori informazioni, consulta Understanding the predictable network interface device names (Nomi prevedibili dei dispositivi di interfaccia di rete) sul sito web Red Hat.

RHEL 6

Nota: RHEL 6 non include driver NVMe Amazon EC2 pronti per la produzione e non puoi eseguire l'aggiornamento ai driver NVMe. Per utilizzare un'istanza basata su Nitro o un tipo di istanza con volumi di archivio del'’istanza NVMe, esegui l'upgrade a RHEL 7.4 o versioni successive.

Scarica e installa il driver ENA

Completa i seguenti passaggi:

  1. Per aggiornare il kernel e riavviare il sistema per utilizzare il kernel più recente, esegui questo comando:

    sudo yum upgrade kernel -y && sudo reboot
  2. Per installare il pacchetto di sviluppo per creare moduli del kernel che corrispondono al kernel, esegui questi comandi:

    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. Per copiare il modulo nella directory del modulo, esegui questo seguente:

    sudo cp ena.ko /lib/modules/$(uname -r)/
  4. Per rigenerare i file della mappa delle dipendenze del modulo del kernel, esegui questo comando:

    sudo depmod
  5. Per confermare la presenza del modulo ENA, esegui questo seguente:

    modinfo ena

    Quando compili e installi il driver ENA sul sistema, la versione potrebbe essere successiva alla 2.2.11g. L'output del comando mostra le informazioni sul driver ENA.
    Esempio di output:

    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. Per aggiungere net.ifnames=0 a /boot/grub/grub.conf disattivare la denominazione dell'interfaccia di rete, esegui questo comando:

    sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf
  7. Arresta l'istanza.

  8. Per attivare il supporto delle reti avanzate a livello di istanza, esegui questo comando modify-instance-attribute:

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

    Nota: sostituisci exampleID con l'ID della tua istanza e exampleRegion con la tua Regione.

  9. Modifica il tipo di istanza con un tipo di istanza che supporti ENA.

  10. Avvia l'istanza.

  11. Utilizza SSH per connetterti all'istanza, quindi esegui questo comando per verificare di aver installato correttamente il driver ENA:

ethtool -i eth0

Esempio di output:

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

(Facoltativo) Configura il programma DKMS

Se l'applicazione dipende direttamente dalla versione ENA, configura il programma Dynamic Kernel Module Support (DKMS). Questo assicura che Amazon EC2 includa il driver nei futuri aggiornamenti del kernel.

Nota: puoi utilizzare il repository Extra Packages for Enterprise Linux (EPEL) in un'istanza RHEL.

Per configurare il programma DKMS, completa i seguenti passaggi:

  1. Per installare il file Red Hat Package Manager (rpm), esegui questo comando:

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

    Nota: per un elenco degli ultimi pacchetti .rpm, consulta Available packages in EPEL (Pacchetti disponibili in EPEL) sul sito web Fedora Project.

  2. Per installare DKMS, esegui questo comando:

    sudo yum install dkms -y
  3. Per eliminare il kernel esistente, esegui questo comando:

    VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )
  4. Per copiare i file sorgente nella directory dei sorgenti, esegui questo comando:

    sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}
  5. Per creare il file di configurazione DKMS e compilare e installare il modulo ENA, esegui questo comando:

    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 UFFICIALEAggiornata un anno fa