¿Cómo puedo instalar y activar el controlador ENA más reciente para mejorar la compatibilidad de red en una instancia de Amazon EC2 que ejecuta RHEL?

6 minutos de lectura
0

Quiero usar el controlador Elastic Network Adapter (ENA) más reciente para mejorar la compatibilidad de red en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) de Red Hat Enterprise Linux (RHEL).

Solución

Para instalar el controlador ENA más reciente en su instancia de Amazon EC2, consulte la sección correspondiente a su versión de RHEL. Algunas versiones anteriores del sistema operativo (SO) RHEL no incluyen un controlador ENA. En el caso de las instancias de Nitro, el controlador ENA debe cambiar el tipo de instancia de EC2 para la conectividad de red.

Nota: Antes de instalar o actualizar un controlador ENA, se recomienda crear una instantánea de la instancia.

Para obtener más información sobre cómo actualizar los controladores de Linux, consulte la ENA Linux driver best practices and performance optimization guide en el sitio web de GitHub.

RHEL versión 7.4 y posteriores

El módulo para mejorar las redes con un ENA está preinstalado en las imágenes de máquina de Amazon (AMI) de la versión 7.4 de RHEL y de todas las versiones posteriores de RHEL. Para obtener más información, consulte Habilitar redes mejoradas con Elastic Network Adapter (ENA) en las instancias de Linux.

Versiones de RHEL anteriores a la 7.4

  1. Ejecute el siguiente comando para actualizar el kernel a la versión más reciente:

    sudo yum upgrade kernel -y
  2. Detenga la instancia.
    Nota: Cuando se detiene una instancia, se pierden los datos de los volúmenes del almacén de instancias. Para obtener más información, consulte Determine the root device type of your instance. No olvide hacer una copia de seguridad de los datos que desee conservar en un volumen del almacén de instancias.

  3. Ejecute el siguiente comando de la Interfaz de la línea de comandos de AWS (AWS CLI):

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

    Nota: Si se muestran errores al ejecutar comandos de AWS CLI, consulte Errores de solución de problemas de la AWS CLI. Además, asegúrese de utilizar la versión más reciente de AWS CLI.

  4. Inicie la instancia.

  5. Ejecute el siguiente comando para validar que el controlador ENA está cargado en la instancia. Sustituya el nombre predeterminado de la interfaz eth0 por el nombre de la interfaz que desea comprobar. Si su sistema operativo usa nombres de red predecibles, es posible que el nombre de la red sea diferente.

    $ ethtool -i eth0

RHEL 6

Nota: RHEL 6 no incluye los controladores NVMe listos para la producción de Amazon EC2 y no puede actualizarlos a los controladores NVME. Para usar una instancia basada en Nitro o cualquier tipo de instancia con volúmenes de almacén de instancias de NVMe, actualice a RHEL 7.4 o una versión posterior.

Descarga e instalación del controlador ENA

  1. Actualice el kernel y, a continuación, reinicie el sistema para que se aplique el kernel más reciente:

    sudo yum upgrade kernel -y && sudo reboot
  2. Instale el paquete de desarrollo para crear módulos del kernel que coincidan con el 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. Copie el módulo en el directorio de módulos:

    sudo cp ena.ko /lib/modules/$(uname -r)/
  4. Regenere los archivos de asignación de dependencias del módulo del kernel:

    sudo depmod
  5. Utilice el comando modinfo para confirmar que el módulo de ENA esté presente:

    modinfo ena

    El resultado del comando modinfo muestra la información del controlador ENA.
    Nota: Al compilar e instalar el controlador ENA en el sistema, es posible que la versión sea posterior a la 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. Añada net.ifnames=0 a /boot/grub/grub.conf para desactivar los nombres de las interfaces de red:

    sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf
  7. Detenga la instancia. A continuación, active la compatibilidad mejorada de red en el nivel de instancia. En el siguiente ejemplo se modifica el atributo de la instancia desde la AWS CLI:

    aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x
  8. Cambie el tipo de instancia a uno de los tipos de instancia compatibles con ENA.

  9. Inicie la instancia, use SSH para conectarse a la instancia y, a continuación, ejecute el comando ethtool:

    ethtool -i eth0

    El resultado del siguiente ejemplo incluye la versión del controlador 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
    

Configuración del programa DKMS para asegurarse de que el controlador esté incluido en futuras actualizaciones del kernel

Nota: AWS y RHEL no admiten el software del repositorio EPEL. Si utiliza Dynamic Kernel Module Support (DKMS), anule el acuerdo de soporte de la suscripción.

Para configurar el programa DKMS:

  1. Instale el siguiente archivo de 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: Para obtener una lista de los paquetes .rpm más recientes, consulte Extra Packages for Enterprise Linux (EPEL) en el sitio web de Fedora Project.

  2. Ejecute el comando install:

    sudo yum install dkms -y
  3. Detecte la versión actual:

    VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )
  4. Copie los archivos de origen en el directorio de origen:

    sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}
  5. Cree el archivo de configuración de DKMS y cree e instale el módulo 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
OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 meses