Ir para o conteúdo

Como faço para instalar e ativar o driver do ENA mais recente para melhorar o suporte de rede na minha instância do 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. Minha instância do Amazon Elastic Compute Cloud (Amazon EC2) é executada em um Red Hat Enterprise Linux (RHEL).

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Algumas versões anteriores do sistema operacional (SO) RHEL não incluem um driver do ENA. Para instâncias Nitro, você deve atualizar o driver do ENA se alterar o tipo de instância do EC2 para conectividade de rede. Para instalar o driver do ENA mais recente em sua instância do EC2, conclua as etapas a seguir com base na sua versão do RHEL.

Antes de instalar ou atualizar um driver do ENA, é uma prática recomendada criar um snapshot do volume do Amazon Elastic Block Store (Amazon EBS) da sua instância.

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

Importante: quando você interrompe uma instância, o Amazon EC2 exclui todos os dados nos volumes de armazenamento de instâncias. Para verificar o tipo de dispositivo raiz, consulte Determinar o tipo de dispositivo raiz da sua AMI. Você deve fazer backup dos dados armazenados em um volume de armazenamento de instâncias se quiser manter esses dados.

RHEL versão 7.4 e posteriores

Por padrão, o RHEL versão 7.4 e posteriores da imagem de máquina da Amazon (AMIs) têm o driver do ENA para redes aprimoradas instalado. Para obter mais informações, consulte Ativar redes aprimoradas com ENA em suas instâncias do EC2.

Versões do RHEL anteriores à 7.4

Para instalar o driver do ENA, conclua as seguintes etapas:

  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.

  3. Para atualizar a instância, execute o seguinte comando modify-instance-attribute da AWS CLI:

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

    Observação: substitua exampleID pelo ID da instância e exampleRegion pela região da AWS.

  4. Execute a instância.

  5. Para validar se você instalou corretamente o driver do ENA na instância, execute o seguinte comando:

    ethtool -i eth0

    Observação: substitua 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. Para obter mais informações, consulte Compreendendo os nomes previsíveis dos dispositivos da interface de rede no site da Red Hat.

RHEL 6

Observação: o RHEL 6 não inclui drivers do NVMe prontos para produção do Amazon EC2, e não é possível 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.

Baixe e instale o driver do ENA

Conclua as etapas a seguir:

  1. Para atualizar o kernel e reinicializar o sistema para usar o kernel mais recente, execute o seguinte comando:

    sudo yum upgrade kernel -y && sudo reboot
  2. Para instalar o pacote de desenvolvimento para criar módulos do kernel que correspondam ao kernel, execute os seguintes comandos:

    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. Para copiar o módulo para o diretório do módulo, execute o seguinte comando:

    sudo cp ena.ko /lib/modules/$(uname -r)/
  4. Para regenerar os arquivos do mapa de dependência do módulo kernel, execute o seguinte comando:

    sudo depmod
  5. Para confirmar se o módulo ENA está presente, execute o seguinte comando:

    modinfo ena

    Quando você compila e instala o driver do ENA em seu sistema, a versão pode ser posterior à 2.2.11g. A saída do comando mostra as informações do driver do ENA.
    Exemplo de saída:

    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. Para adicionar net.ifnames=0 ao /boot/grub/grub.conf e desativar a nomenclatura da interface de rede, execute o seguinte comando:

    sudo sed -i '/kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf
  7. Interrompa a instância.

  8. Para ativar o suporte de rede aprimorado no nível da instância, execute o seguinte comando modify-instance-attribute:

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

    Observação: substitua exampleID pelo ID da instância e exampleRegion pela região.

  9. Altere o tipo de instância para um tipo de instância compatível com ENA.

  10. Execute a instância.

  11. Use o SSH para se conectar à instância e, em seguida, execute o seguinte comando para validar se você instalou corretamente o driver do ENA:

ethtool -i eth0

Exemplo de saída:

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

(Opcional) Configurar o programa DKMS

Se sua aplicação depender diretamente da versão ENA, configure o programa Dynamic Kernel Module Support (DKMS). Isso garante que o Amazon EC2 inclua o driver em futuras atualizações do kernel.

Observação: é possível usar o repositório Extra Packages for Enterprise Linux (EPEL) em uma instância do RHEL.

Para configurar o programa DKMS, conclua as seguintes etapas:

  1. Para instalar o arquivo Red Hat Package Manager (rpm), execute o seguinte comando:

    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 disponíveis no EPEL no site do Projeto Fedora.

  2. Para instalar o DKMS, execute o seguinte comando:

    sudo yum install dkms -y
  3. Para excluir o kernel existente, execute o seguinte comando:

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

    sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}
  5. Para criar o arquivo de configuração do DKMS e criar e instalar o módulo ENA, execute o seguinte 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 OFICIALAtualizada há um ano