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 : 04/03/2021

Comment puis-je 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 RHEL version 6 ou 7 ?

Brève description

Certaines versions antérieures du système d'exploitation Red Hat Enterprise Linux n'incluent aucun pilote ENA. Sur les instances Nitro, ce dernier est requis pour modifier votre type d'instance EC2 à des fins de 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 la section Activer la mise en réseau améliorée avec les instances ENA sur Linux.

RHEL 7 avant 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.

Remarque : les données des volumes de stockage d'instance sont perdues lorsqu'une instance est arrêtée. Pour plus d'informations, consultez Déterminer le type de périphérique racine de votre instance. Pensez à sauvegarder toutes les données que vous souhaitez conserver sur un volume de stockage d'instance.

3.    Exécutez cette commande depuis l'interface de ligne de commande AWS (AWS CLI) :

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

Remarque : si ce n'est pas déjà fait, vous pouvez installer l'interface AWS CLI sur votre instance et la configurer. Si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, vérifiez que vous utilisez la version la plus récente de l'interface.

4.    Démarrez l'instance.

5.    Vérifiez que le pilote ENA est chargé sur l'instance à l'aide de la commande suivante. Remplacez eth0 par le nom de l'interface que vous souhaitez vérifier. Le nom par défaut d'une interface unique est eth0. Celui-ci peut être différent si votre système d'exploitation utilise des noms de réseau prévisibles.

$ ethtool -1 eth0

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 des pilotes NVME prêts à la production Amazon EC2, et vous ne pouvez pas effectuer la mise à niveau vers ces pilotes séparément. Si vous souhaitez utiliser une instance Nitro ou n'importe quel type d'instance avec des volumes de stockage d'instance NVMe, 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 (AWS CLI).

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 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://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.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 ?