Como faço para instalar e ativar o driver do ENA mais recente para melhorar o suporte de rede em uma instância do Amazon EC2 que executa o RHEL?

6 minuto de leitura
0

Quero usar o driver mais recente do Adaptador de Rede Elástica (ENA) para melhorar o suporte de rede em uma instância do Amazon Elastic Compute Cloud (Amazon EC2) do Red Hat Enterprise Linux (RHEL).

Resolução

Para instalar o driver do ENA mais recente em sua instância do Amazon EC2, consulte a seção que se aplica à sua versão do RHEL. Algumas versões anteriores do sistema operacional (SO) RHEL não incluem um driver do ENA. Para instâncias Nitro, o driver do ENA deve alterar seu tipo de instância EC2 para conectividade de rede.

Observação: antes de instalar ou atualizar um driver do ENA, é uma prática recomendada criar um instantâneo da sua instância.

Para obter mais informações sobre como atualizar drivers do Linux, consulte as melhores práticas de drivers do ENA Linux e o guia de otimização de desempenho no site do GitHub.

RHEL versão 7.4 e posterior

O módulo para redes aprimoradas com um ENA está pré-instalado no Amazon Machine Images (AMIs) do RHEL versão 7.4 e em todas as versões posteriores do RHEL. Para obter mais informações, consulte Ativar redes aprimoradas com o Adaptador de Rede Elástica (ENA) em instâncias Linux.

Versões do RHEL anteriores à 7.4

  1. Execute o comando a seguir para atualizar o kernel para a versão mais recente:

    sudo yum upgrade kernel -y
  2. Interrompa a instância.
    Observação: quando você interrompe uma instância, os dados nos volumes de armazenamento de instâncias são perdidos. Para mais informações, consulte Determinar o tipo de dispositivo raiz da sua instância. Faça backup de todos os dados que você deseja manter no volume de armazenamento da instância.

  3. Execute o seguinte comando da AWS Command Line Interface (AWS CLI):

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

    Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

  4. Inicie a instância.

  5. Execute o comando a seguir para validar se o driver do ENA está carregado na instância. Substitua o nome da interface padrão eth0 pelo nome da interface que você deseja verificar. Se o sistema operacional usa nomes de rede previsíveis, o nome da rede pode ser diferente.

    $ ethtool -i eth0

RHEL 6

Observação: o RHEL 6 não inclui drivers do NVMe prontos para produção do Amazon EC2, e você não pode fazer o upgrade para drivers do NVME. Para usar uma instância baseada em Nitro, ou qualquer tipo de instância com volumes de armazenamento de instâncias NVMe, atualize para o RHEL 7.4 ou superior.

Baixar e instalar o driver do ENA

  1. Atualize o kernel e, em seguida, reinicie o sistema para que o kernel mais recente entre em vigor:

    sudo yum upgrade kernel -y && sudo reboot
  2. Instale o pacote de desenvolvimento para criar módulos do kernel que correspondam ao 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 o módulo para o diretório do módulo:

    sudo cp ena.ko /lib/modules/$(uname -r)/
  4. Regenere os arquivos do mapa de dependência do módulo kernel:

    sudo depmod
  5. Use o comando modinfo para confirmar se o módulo ENA está presente:

    modinfo ena

    A saída do comando modinfo mostra as informações do driver do ENA.
    Observação: quando você está compilando e instalando o driver do ENA em seu sistema, a versão pode ser posterior à 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. Anexe net.ifnames=0 a /boot/grub/grub.conf para desativar a nomenclatura da interface de rede:

    sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf
  7. Interrompa a instância. Em seguida, ative o suporte de rede aprimorado no nível da instância. O exemplo a seguir modifica o atributo da instância a partir da AWS CLI:

    aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --ena-support --region xx-xxxxx-x
  8. Altere o tipo de instância para um dos tipos de instância compatíveis com ENA.

  9. Inicie a instância, use SSH para conectar-se à instância e, em seguida, execute o comando ethtool:

    ethtool -i eth0

    O exemplo de saída a seguir inclui a versão do driver do 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
    

Configurar o programa DKMS para garantir que o driver seja incluído em futuras atualizações do kernel

Observação: a AWS e o RHEL não oferecem suporte a software do repositório EPEL. Se você usar o Dynamic Kernel Module Support (DKMS), anulará o contrato de suporte da sua assinatura.

Para configurar o programa DKMS:

  1. Instale o seguinte arquivo do 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

    Observação: para obter uma lista dos pacotes.rpm mais recentes, consulte Pacotes extras para Enterprise Linux (EPEL) no site do Projeto Fedora.

  2. Execute o comando install:

    sudo yum install dkms -y
  3. Detecte a versão atual:

    VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )
  4. Copie os arquivos de origem no diretório de origem:

    sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}
  5. Crie o arquivo de configuração do DKMS e crie e instale o 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
AWS OFICIAL
AWS OFICIALAtualizada há 3 meses