Comment installer et activer le dernier pilote ENA afin d'améliorer la prise en charge du réseau sur une instance Amazon EC2 exécutant Red Hat 6/7 ?

Dernière mise à jour : 22/09/2020

Comment installer et activer le pilote Elastic Network Adapter (ENA) le plus récent afin d'améliorer la prise en charge du réseau sur une instance Amazon Elastic Compute Cloud (Amazon EC2) exécutant Red Hat Enterprise Linux version 6 ou 7 ?

Brève description

Certaines versions antérieures du système d'exploitation Red Hat Enterprise Linux ne comportent pas de pilote ENA. Le pilote ENA est requis pour modifier votre type d'instance EC2 pour la connectivité réseau.

Solution

RHEL 7.4 et versions ultérieures

Les AMI RHEL 7.4 et ultérieures sont préinstallées avec le module nécessaire pour améliorer la mise en réseau avec ENA. Pour plus d'informations, consultez Activation de la mise en réseau améliorée avec les instances ENA sur Linux.

RHEL 7 inférieur à 7.4

1.    Exécutez la commande suivante pour mettre à niveau le noyau vers la dernière version :

sudo yum upgrade kernel -y

2.    Arrêtez l'instance.

3.    Exécutez la commande suivante :

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

RHEL 6

Remarque : cette procédure concerne les types d'instance des générations antérieures prenant en charge ENA. Cette procédure n'est pas destinée à la migration vers un type d'instance Nitro. RHEL 6 n'est pas fourni avec les pilotes NVME Amazon EC2 prêts pour la production, et vous ne pouvez pas effectuer la mise à niveau vers les pilotes NVME séparément. Si vous souhaitez utiliser un type d'instance Nitro ou un type d'interface ENA, effectuez une mise à niveau vers RHEL 7.4 ou une version ultérieure.

Téléchargement et installation du pilote ENA

1.    Mettez à jour le noyau et redémarrez le système pour que le dernier noyau prenne effet :

sudo yum upgrade kernel -y && sudo reboot

2.    Installez le paquet de développement pour créer des modules de correspondant au noyau :

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.    Copiez le module vers le répertoire des modules :

sudo cp ena.ko /lib/modules/$(uname -r)/

4.    Régénérez les fichiers de mappage des dépendances du module du noyau :

sudo depmod

5.    Utilisez la commande modinfo pour confirmer que le module ENA est présent :

modinfo ena

La sortie de la commande modinfo affiche les informations du pilote ENA.

Remarque : la version du pilote ENA peut être plus récente que 2.2.11g lors de la compilation et de l'installation sur votre système.

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.    Ajoutez net.ifnames=0 à /boot/grub/grub.conf pour désactiver le nommage de l'interface réseau :

sudo sed -i '/^kernel/s/$/ net.ifnames=0/' /boot/grub/grub.conf

7.    Arrêtez l'instance.

8.    Activez la prise en charge du réseau améliorée au niveau de l'instance. L'exemple suivant modifie l'attribut de l'instance à partir de l'interface de ligne de commande AWS (CLI AWS).

Remarque : si vous recevez des erreurs lors de l'exécution des commandes de l'interface de ligne de commande (CLI) AWS, vérifiez que vous utilisez la toute dernière version de l’interface de ligne de commande (CLI) AWS.

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

9.    Remplacez le type d'instance par l'un des types d'instances pris en charge par ENA.

10.    Démarrez l'instance, connectez-vous à l'instance en utilisant SSH, puis exécutez la commande ethtool :

ethtool -i eth0

La sortie inclut la version du pilote ENA, comme illustré dans l'exemple suivant :

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

Configurer le programme Dynamic Kernel Module Support (DKMS) afin de s'assurer que le pilote est inclus lors de futures mises à niveau du noyau

Tenez compte des points suivants :

  • Les logiciels du référentiel EPEL ne sont pas pris en charge par Red Hat ou AWS.
  • L'utilisation de DKMS annule le contrat de support de votre abonnement.

1.    Installez le fichier Red Hat Package Manager (rpm) suivant :

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm -y

Remarque : pour obtenir la liste des paquets .rpm les plus récents, reportez-vous au site Web EPEL - Fedora Project Wiki.

2.    Exécutez la commande install :

sudo yum install dkms -y

3.    Détecter la version actuelle :

VER=$( grep ^VERSION /usr/src/amzn-drivers-master/kernel/linux/rpm/Makefile | cut -d' ' -f2 )

4.    Copiez les fichiers source vers le répertoire source :

sudo cp -a /usr/src/amzn-drivers-master /usr/src/amzn-drivers-${VER}

5.    Générez le fichier de configuration DKMS et créez et installez le module 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

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?