Come posso installare e attivare il driver ENA più recente per un supporto di rete avanzato su un'istanza Amazon EC2 che esegue RHEL?

5 minuti di lettura
0

Desidero utilizzare il driver Adattatore elastico di rete (ENA) più recente per un supporto di rete avanzato su un'istanza Amazon Elastic Compute Cloud (Amazon EC2) di Red Hat Enterprise Linux (RHEL).

Risoluzione

Per installare il driver ENA più recente sulla tua istanza Amazon EC2, consulta la sezione relativa alla tua versione di RHEL. Alcune versioni precedenti del sistema operativo (OS) RHEL non includono un driver ENA. Per le istanze Nitro, il driver ENA deve modificare il tipo di istanza EC2 per la connettività di rete.

Nota: prima di installare o aggiornare un driver ENA, è consigliabile creare uno snapshot dell'istanza.

Per ulteriori informazioni su come aggiornare i driver Linux, consulta le best practice per i driver ENA Linux e la guida all'ottimizzazione delle prestazioni sul sito web di GitHub.

Versione 7.4 e successive di RHEL

Il modulo per il networking avanzato con un driver ENA è preinstallato sulle Amazon Machine Image (AMI) RHEL versione 7.4 e tutte le versioni successive di RHEL. Per ulteriori informazioni, consulta la sezione Abilitazione delle reti avanzate con Elastic Network Adapter (ENA) sulle istanze Linux.

Versioni di RHEL precedenti alla 7.4

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

    sudo yum upgrade kernel -y
  2. Arresta l'istanza.
    Nota: quando si arresta un'istanza, i dati contenuti nei volumi dell'archivio delle istanze vengono persi. Per ulteriori informazioni, consulta la sezione Definire il tipo di dispositivo root dell'istanza. Assicurati di eseguire il backup di tutti i dati che desideri conservare nel volume dell'archivio dell’istanza.

  3. Esegui il seguente comando dell'interfaccia della linea di comando AWS (AWS CLI):

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

    Nota: se ricevi dei messaggi di errore quando esegui i comandi di AWS CLI, consulta la sezione Risolvi gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

  4. Avvia l'istanza.

  5. Esegui il comando seguente per verificare che il driver ENA sia caricato sull'istanza. Sostituisci il nome dell'interfaccia predefinita 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.

    $ ethtool -i eth0

RHEL 6

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

Scarica e installa il driver ENA

  1. Aggiorna il kernel, quindi riavvia il sistema in modo che venga impiegato il kernel più recente:

    sudo yum upgrade kernel -y && sudo reboot
  2. Installa il pacchetto di sviluppo per creare moduli del kernel adatti al kernel:

    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. Copia il modulo nella directory del modulo:

    sudo cp ena.ko /lib/modules/$(uname -r)/
  4. Rigenera i file della mappa delle dipendenze del modulo del kernel:

    sudo depmod
  5. Usa il comando modinfo per confermare che il modulo ENA è presente:

    modinfo ena

    L'output del comando modinfo mostra le informazioni relative al driver ENA.
    Nota: durante la compilazione e l'installazione del driver ENA sul sistema, la versione potrebbe essere successiva alla 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. Aggiungi net.ifnames=0 a /boot/grub/grub.conf per disattivare la denominazione dell'interfaccia di rete:

    sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf
  7. Arresta l'istanza. Quindi, attiva il supporto di rete avanzato a livello di istanza. L'esempio seguente modifica l'attributo dell'istanza da AWS CLI:

    aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x
  8. Modifica il tipo di istanza in uno dei tipi di istanza supportati da ENA.

  9. Avvia l'istanza, usa SSH per connetterti all'istanza, quindi esegui il comando ethtool:

    ethtool -i eth0

    L'output dell'esempio seguente include la versione del driver ENA:

    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
    

Configura il programma DKMS per assicurarti che il driver sia incluso nei futuri aggiornamenti del kernel

Nota: AWS e RHEL non supportano il software del repository EPEL. Utilizzando il Dynamic Kernel Module Support (DKMS), si annullerà il contratto di supporto per l'abbonamento.

Per configurare il programma DKMS:

  1. Installa il seguente file Red Hat Package Manager (rpm):

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

    Nota: per un elenco dei pacchetti .rpm più recenti, consulta la sezione Extra Packages for Enterprise Linux (EPEL) sul sito web del Progetto Fedora.

  2. Esegui il comando install:

    sudo yum install dkms -y
  3. Rileva la versione corrente:

    VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )
  4. Copia i file di origine nella directory di origine:

    sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}
  5. Crea il file di configurazione DKMS, compila e installa il modulo ENA:

    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 UFFICIALE
AWS UFFICIALEAggiornata 3 mesi fa