Ajoutez la prise en charge du pilote NVMe à une image personnalisée pour permettre son démarrage sur des types d'instances ECS basés sur NVMe et bénéficier de performances de stockage améliorées.
Le protocole NVMe est conçu pour le stockage à état solide haute vitesse, tel que les SSD flash. Comparé aux protocoles SCSI et virtio-blk, NVMe offre une vitesse supérieure et une bande passante plus importante.
Cas d'utilisation
Suivez cette procédure si :
Vous importez une image personnalisée vers Alibaba Cloud et l'Image Check signale l'absence du pilote NVMe.
-
Vous ne pouvez pas sélectionner une image personnalisée lors de la création d'un type d'instance ECS compatible NVMe, car l'attribut NVMe de l'image ne correspond pas aux exigences du type d'instance.
RemarquePour consulter les familles d'instances compatibles NVMe, reportez-vous à la rubrique Instance family overview. Vérifiez également le paramètre
NvmeSupportdans l'opération d'API DescribeInstanceTypes.Pour déterminer si une image personnalisée prend en charge NVMe, examinez le paramètre
NvmeSupportvia l'opération d'API DescribeImages.Si certaines images n'apparaissent pas lors de la création d'instances ECS, consultez la rubrique Unable to find specific images.
Procédure
-
Lancez une instance ECS à partir de votre image personnalisée existante. Cette instance sert d'environnement intermédiaire pour mettre à jour l'image. Connectez-vous à l'instance.
ImportantL'instance intermédiaire entraîne des frais. Libérez l'instance après avoir créé la nouvelle image personnalisée afin d'éviter des coûts inutiles.
-
Selon le système d'exploitation de votre instance, choisissez une méthode pour vérifier et installer le pilote NVMe.
Configuration via la console
Dans la ECS console - Instances, localisez l'instance cible et accédez à sa page de détails. Dans le coin supérieur droit, cliquez sur All actions puis sélectionnez Configure NVMe Driver Status.
Cliquez sur Install pour installer le pilote NVMe. Le système définit automatiquement l'état du pilote NVMe sur Installed.

Configuration automatique via Cloud Assistant
Cloud Assistant fournit le plug-in
ecs_nvme_configpour configurer rapidement le pilote NVMe. Ce plug-in ne prend en charge que certains systèmes d'exploitation.-
Vérifiez si Cloud Assistant Agent est installé et si le plug-in
ecs_nvme_configest disponible :acs-plugin-manager --list
Si aucune sortie liée à Cloud Assistant n'apparaît, installez d'abord Cloud Assistant Agent.
Si la liste des plug-ins inclut
ecs_nvme_config, passez à l'étape suivante.
-
Utilisez le plug-in
ecs_nvme_configpour configurer le pilote NVMe.-
Vérifiez la présence et la configurabilité du module NVMe à l'aide du plug-in
ecs_nvme_config:sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --check-
Si la sortie contient le message suivant, le pilote NVMe est déjà installé. Passez directement à la création d'une image personnalisée.
[SUCCESS] Summary: Your image can Runnig on nvme instance -
Si la sortie affiche un message
[ERROR]similaire à celui-ci, poursuivez avec l'étape suivante.[ERROR] 1.initrd/initramfs not has nvme module, Please run acs-plugin-manager --exec --plugin ecs_nvme_config --params -f/--fix to enable nvme;
-
-
Configurez le pilote NVMe selon le résultat de la vérification :
sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --fix -
Redémarrez l'instance une fois la configuration terminée.
sudo reboot -
Après le redémarrage de l'instance, vérifiez que la configuration a réussi :
sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --checkExemple de sortie indiquant un succès :
[OK] 1.initrd/initramfs already contain nvme module; [OK] 2.fstab file looks fine and does not contain any device names; [OK] 3.The nvme parameters already included. [SUCCESS] Summary: Your image can Runnig on nvme instance -
Créez une nouvelle image personnalisée à partir de l'instance où vous avez installé le pilote. Ensuite, modifiez les attributs de cette nouvelle image personnalisée et définissez l'attribut NVMe driver sur Supported.
ImportantSi vous ne définissez pas l'attribut du pilote NVMe sur Supported, le système ne reconnaîtra pas l'image comme compatible NVMe. Vous ne pourrez alors pas sélectionner de types d'instances compatibles NVMe lors de la création d'instances à partir de cette image.
-
Configuration manuelle (CentOS/Alibaba Cloud Linux)
-
Vérifiez si le noyau a chargé le pilote NVMe :
cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"
Si la sortie contient
CONFIG_BLK_DEV_NVME=y, le système d'exploitation peut démarrer directement sur les familles d'instances compatibles NVMe. Passez à la section Configuration via la console.Si la sortie contient
CONFIG_BLK_DEV_NVME=m, effectuez les étapes suivantes.
-
Vérifiez si l'initramfs contient le pilote NVMe :
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
Si la sortie correspond à la figure, le système d'exploitation peut démarrer sur les familles d'instances compatibles NVMe. Passez à l'étape d.
En l'absence de sortie, exécutez l'étape c.
-
Ajoutez le pilote NVMe à l'initramfs :
mkdir -p /etc/dracut.conf.d echo 'add_drivers+=" nvme nvme-core "' | sudo tee /etc/dracut.conf.d/nvme.conf > /dev/null sudo dracut -v -fRemarqueSi l'outil dracut n'est pas installé, exécutez la commande sudo yum -y install dracut pour l'installer.
-
Ajoutez le paramètre
io_timeoutpour NVMe dans GRUB.RemarqueL'ajout du paramètre
io_timeoutpour NVMe dans GRUB permet d'éviter les échecs d'E/S dus à des délais d'attente de périphérique. Définir cette valeur à la limite maximale prise en charge garantit que le système continue de traiter les requêtes d'E/S sans interruption prématurée.Dans la plupart des distributions Linux, le paramètre
io_timeoutest défini par défaut à 30 secondes. Avant d'ajouter une valeur pour le paramètreio_timeout, exécutezecho 4294967295 > /sys/module/nvme_core/parameters/io_timeoutouecho 4294967295 > /sys/module/nvme/parameters/io_timeoutafin de vérifier siio_timeoutpeut être réglé à la valeur maximale de 4 294 967 295 secondes. Si la commande renvoie-bash: echo: write error: Invalid argument, cela signifie que la version Linux ne prend en charge que 255 secondes.Méthode 1 : Ajouter des paramètres à l'aide de grubby
-
Vérifiez la disponibilité de
grubby:which grubbySi la sortie inclut le chemin vers
grubby(par exemple,/usr/sbin/grubby), le système prend en chargegrubby. Passez à l'étape suivante.En l'absence de sortie, votre système ne prend pas en charge
grubby. Utilisez plutôt la Méthode 2.
-
Ajoutez les paramètres du noyau avec
grubby:sudo grubby --update-kernel=ALL --args="nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
Méthode 2 : Ajouter des paramètres en modifiant le fichier de configuration GRUB
-
Ouvrez le fichier grub :
sudo vi /etc/default/grub -
Appuyez sur i pour entrer en mode insertion. Repérez la ligne
GRUB_CMDLINE_LINUX=et ajoutez les paramètresnvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295.Contenu du fichier après l'ajout des paramètres :
RemarqueSi ces paramètres existent déjà dans le fichier de configuration, ne les ajoutez pas une seconde fois.
Appuyez sur Échap pour quitter le mode insertion. Saisissez
:wqpuis appuyez sur Entrée pour enregistrer et fermer le fichier.-
Appliquez la configuration GRUB.
Choisissez la commande correspondant au mode de démarrage de l'instance :
-
Mode de démarrage BIOS Legacy
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Mode de démarrage UEFI
-
Consultez le fichier de configuration GRUB :
# For CentOS, run: cat /boot/efi/EFI/centos/grub.cfg # For Alibaba Cloud Linux, run: cat /boot/efi/EFI/alinux/grub.cfg -
Exécutez la commande appropriée selon la sortie obtenue :
-
Si le fichier de configuration pointe vers un autre fichier (par exemple,
/boot/grub/grub.cfg), exécutez :
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Dans le cas contraire, exécutez la commande adaptée à votre système :
# For CentOS sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg # For Alibaba Cloud Linux sudo grub2-mkconfig -o /boot/efi/EFI/alinux/grub.cfg
-
-
-
-
Créez une nouvelle image personnalisée à partir de l'instance où vous avez installé le pilote. Ensuite, modifiez les attributs de cette nouvelle image personnalisée et définissez l'attribut NVMe driver sur Supported.
ImportantSi vous ne définissez pas l'attribut du pilote NVMe sur Supported, le système ne reconnaîtra pas l'image comme compatible NVMe. Vous ne pourrez alors pas sélectionner de types d'instances compatibles NVMe lors de la création d'instances à partir de cette image.
-
-
Vérifiez la sortie relative à NVMe :
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'Si la commande renvoie des noms de fichiers de pilotes (par exemple, nvme.ko), la configuration est terminée. Le système d'exploitation peut désormais démarrer sur les types d'instances ECS compatibles NVMe.

Configuration manuelle (Ubuntu/Debian)
-
(Facultatif) Vérifiez si l'initrd contient le pilote NVMe :
lsinitramfs /boot/initrd.img-`uname -r` | grep -i nvmeLa sortie suivante indique qu'Ubuntu charge le pilote NVMe dans l'initrd par défaut.

-
Ajoutez le paramètre
io_timeoutpour NVMe dans GRUB.RemarqueL'ajout du paramètre
io_timeoutpour NVMe dans GRUB permet d'éviter les échecs d'E/S dus à des délais d'attente de périphérique. Définir cette valeur à la limite maximale prise en charge garantit que le système continue de traiter les requêtes d'E/S sans interruption prématurée.Dans la plupart des distributions Linux, le paramètre
io_timeoutest défini par défaut à 30 secondes. Avant d'ajouter une valeur pour le paramètreio_timeout, exécutezecho 4294967295 > /sys/module/nvme_core/parameters/io_timeoutouecho 4294967295 > /sys/module/nvme/parameters/io_timeoutafin de vérifier siio_timeoutpeut être réglé à la valeur maximale de 4 294 967 295 secondes. Si la commande renvoie-bash: echo: write error: Invalid argument, cela signifie que la distribution Linux ne prend en charge que 255 secondes.-
Ouvrez le fichier /etc/default/grub :
sudo vi /etc/default/grub -
Appuyez sur i pour entrer en mode édition. Ajoutez les paramètres suivants à la ligne
GRUB_CMDLINE_LINUX=:nvme_core.multipath=n nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295.Contenu du fichier après l'ajout des paramètres :
RemarqueSi ces paramètres existent déjà dans le fichier de configuration, ne les ajoutez pas une seconde fois.
Appuyez sur Échap pour quitter le mode insertion. Saisissez
:wqpuis appuyez sur Entrée pour enregistrer et fermer le fichier.
-
-
Appliquez les paramètres GRUB.
Selon le mode de démarrage de l'instance ECS, sélectionnez l'une des commandes suivantes :
-
Cette commande fonctionne pour Ubuntu et Debian quel que soit le mode de démarrage :
sudo update-grub2 -
Mode de démarrage BIOS Legacy
sudo grub-mkconfig -o /boot/grub/grub.cfg -
Mode de démarrage UEFI
sudo grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg
-
-
Créez une nouvelle image personnalisée à partir de l'instance où vous avez installé le pilote. Ensuite, modifiez les attributs de cette nouvelle image personnalisée et définissez l'attribut NVMe driver sur Supported.
ImportantSi vous ne définissez pas l'attribut du pilote NVMe sur Supported, le système ne reconnaîtra pas l'image comme compatible NVMe. Vous ne pourrez alors pas sélectionner de types d'instances compatibles NVMe lors de la création d'instances à partir de cette image.
(Facultatif) Redéployez votre charge de travail avec la nouvelle image personnalisée compatible NVMe. Par exemple, créez une instance à partir d'une image personnalisée ou partagée et sélectionnez un type d'instance compatible NVMe.
Une fois le déploiement vérifié, supprimez l'image personnalisée d'origine afin d'éviter de payer pour des ressources inutilisées.
Références
Les types d'instances ECS basés sur NVMe prennent uniquement en charge les disques ESSD et ESSD AutoPL. Ces disques permettent l'attachement multiple (multi-attach) pour être connectés simultanément à plusieurs instances ECS. Consultez la rubrique Attach a cloud disk to multiple ECS instances (multi-attach).
Si une configuration incorrecte du paramètre
io_timeoutrend un disque NVMe indisponible sur une instance ECS Linux, reportez-vous à la rubrique What do I do if an NVMe disk on a Linux ECS instance is unavailable due to an invalid I/O timeout parameter?.