Amazon EBS et NVMe - Amazon EBS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Amazon EBS et NVMe

Les volumes EBS sont exposés sous forme de blocs NVMe sur des instances construites sur le Système Nitro.

Les recommandations en matière de performances EBS définies sur la page Description détaillée d’Amazon EBS s’appliquent quelle que soit l’interface du périphérique de stockage en mode bloc.

Instances Linux

Les noms des appareils sont/dev/nvme0n1,/dev/nvme1n1, et ainsi de suite. Les noms du périphérique que vous spécifiez dans un mappage de périphérique de stockage en mode bloc sont modifiés par les noms du périphérique NVMe (/dev/nvme[0-26]n1). Le pilote du périphérique de stockage en mode bloc peut attribuer les noms de périphériques NVMe dans un autre ordre que celui que vous avez spécifié pour les volumes dans le mappage de périphériques de stockage en mode bloc.

instances Windows

Lorsque vous associez un volume à votre instance, vous incluez un nom d’appareil pour le volume. Ce nom d’appareil est utilisé par Amazon EC2. Le pilote de périphérique de bloc de l'instance attribue le nom réel du volume lors du montage du volume, et le nom attribué peut être différent de celui utilisé par Amazon EC2.

Installation ou mise à niveau du pilote NVMe

Pour accéder aux volumes NVMe, les pilotes NVMe doivent être installés. Les instances peuvent prendre en charges les volumes EBS NVMe, les volumes de stockage d’instances NVMe, les deux types de volumes NVMe ou aucun volume NVMe. Pour plus d'informations, voir Résumé des fonctionnalités de mise en réseau et de stockage.

Les AMI suivantes incluent les pilotes NVMe requis :

  • Amazon Linux 2

  • AMI Amazon Linux 2018.03

  • Ubuntu 14.04 ou une version ultérieure avec noyau linux-aws

    Note

    AWS Les types d'instances basés sur Graviton nécessitent Ubuntu 18.04 ou version ultérieure avec noyau linux-aws

  • Red Hat Enterprise Linux 6.5 ou une version ultérieure

  • Red Hat Enterprise Linux 7.4 ou une version ultérieure

  • SUSE Linux Enterprise Server 12 SP2 ou une version ultérieure

  • CentOS 7.4.1708 ou une version ultérieure

  • FreeBSD 11.1 ou une version ultérieure

  • Debian GNU/Linux 9 ou version ultérieure

Pour vérifier que votre instance a le pilote NVMe

Vous pouvez confirmer que votre instance dispose du pilote NVMe à l’aide de la commande suivante.

  • Amazon Linux, RHEL, CentOS et SUSE Linux Enterprise Server

    $ modinfo nvme

    Si l’instance a le pilote NVMe, la commande renvoie des informations sur le pilote.

  • Amazon Linux 2 et Ubuntu

    $ ls /sys/module/ | grep nvme

    Si l’instance dispose du pilote NVMe, la commande renvoie les pilotes installés.

Pour mettre à jour le pilote NVMe

Si votre instance a le pilote NVMe, vous pouvez le mettre à jour vers la dernière version à l’aide de la procédure suivante.

  1. Connectez-vous à votre instance.

  2. Mettez à jour le cache de votre package pour obtenir les mises à jour de packages nécessaires, comme suit.

    • Pour Amazon Linux 2, Amazon Linux, CentOS et Red Hat Enterprise Linux :

      [ec2-user ~]$ sudo yum update -y
    • Pour Ubuntu et Debian :

      [ec2-user ~]$ sudo apt-get update -y
  3. Ubuntu 16.04 et versions ultérieures incluent le package linux-aws, qui contient les pilotes NVMe et ENA requis par les instances basées sur Nitro. Mettez à niveau le package linux-aws pour recevoir la version la plus récente, comme suit :

    [ec2-user ~]$ sudo apt-get install --only-upgrade -y linux-aws

    Pour Ubuntu 14.04, vous pouvez installer le package linux-aws le plus récent, comme suit :

    [ec2-user ~]$ sudo apt-get install linux-aws
  4. Redémarrez votre instance pour charger la dernière version du noyau.

    sudo reboot
  5. Reconnectez-vous à votre instance après son redémarrage.

Les AMI AWS Windows pour Windows Server 2008 R2 et versions ultérieures incluent le pilote AWS NVMe. Si vous n'utilisez pas les dernières AMI AWS Windows fournies par Amazon, consultez la section Installation ou mise à niveau des pilotes AWS NVMe PowerShell à l'aide du guide de l'utilisateur Amazon EC2.

Identifier le périphérique EBS

EBS utilise la virtualisation d’I/O d’une racine unique (SR-IOV) afin de fournir des volumes attachés sur les instances basées sur Nitro à l’aide de la spécification NVMe. Ces périphériques dépendent des pilotes NVMe standard du système d’exploitation. Habituellement, ces pilotes détectent les périphériques attachés au démarrage de l’instance, puis créent des nœuds de périphériques selon l’ordre dans lequel les périphériques répondent, et non selon la spécification des périphériques dans le mappage de périphérique de stockage en mode bloc.

<y>Sous Linux, les noms des périphériques NVMe suivent le modèle/dev/nvme<x>n<y>, où se <x>trouve l'ordre d'énumération et, pour EBS, 1. Lors de démarrages consécutifs de l’instance, il arrive que les périphériques répondent à la détection dans un ordre différent, d’où un changement de nom des périphériques. En outre, le nom de périphérique attribué par le pilote de périphérique de stockage en mode bloc peut être différent du nom spécifié dans le mappage de périphérique de stockage en mode bloc.

Nous vous recommandons d’utiliser des identificateurs stables pour les volumes EBS au sein de votre instance, par exemple :

  • Pour les instances basées sur Nitro, les mappages de périphériques de stockage en mode bloc spécifiés dans la console Amazon EC2 lorsque vous attachez un volume EBS ou durant les appels de l’API AttachVolume ou RunInstances sont capturés dans le champ de données propre au fournisseur de l’identification du contrôleur NVMe. Avec les AMI Amazon Linux ultérieures à la version 2017.09.01, nous fournissons une règle udev qui lit ces données et crée un lien symbolique vers le mappage de périphérique de stockage en mode bloc.

  • L’ID de volume EBS et le point de montage sont stables entre les changements d’état d’instance. Le nom du périphérique NVMe peut changer en fonction de l’ordre dans lequel les périphériques répondent lors du démarrage de l’instance. Nous vous recommandons d’utiliser l’ID de volume EBS et le point de montage pour une identification cohérente des périphériques.

  • Les volumes EBS NVMe ont l’ID de volume EBS comme numéro de série dans l’identification du périphérique. Utilisez la commande lsblk -o +SERIAL pour répertorier le numéro de série.

  • Le format de nom de périphérique NVMe peut varier selon si le volume EBS a été attaché pendant ou après le lancement de l’instance. Les noms de périphériques NVMe pour les volumes attachés après le lancement de l’instance incluent le préfixe /dev/, tandis que les noms de périphériques NVMe pour les volumes attachés au cours du lancement de l’instance n’incluent pas le préfixe /dev/. Si vous utilisez une AMI Amazon Linux ou FreeBSD, utilisez la commande sudo ebsnvme-id /dev/nvme0n1 -u pour nommer les périphériques NVMe de façon cohérente. Pour les autres distributions, utilisez la commande sudo nvme id-ctrl -v /dev/nvme0n1 pour déterminer le nom du périphérique NVMe.

  • Lors du formatage d’un périphérique, un UUID est généré, qui persiste pendant toute la durée de vie du système de fichiers. Il est possible de spécifier une étiquette de périphérique au même moment. Pour plus d'informations, consultez Rendre un volume Amazon EBS disponible pour utilisation et Démarrez à partir du mauvais volume.

AMI Amazon Linux

Avec l’AMI Amazon Linux 2017.09.01 ou ultérieure (y compris Amazon Linux 2), vous pouvez exécuter la commande ebsnvme-id comme suit afin de mapper le nom de périphérique NVMe à un ID de volume et un nom de périphérique :

L’exemple suivant illustre la commande et la sortie d’un volume attaché lors du lancement de l’instance. Notez que le nom du périphérique NVMe n'inclut pas le préfixe /dev/.

[ec2-user ~]$ sudo /sbin/ebsnvme-id /dev/nvme0n1 Volume ID: vol-01324f611e2463981 sda

L’exemple suivant illustre la commande et la sortie d’un volume attaché après le lancement de l’instance. Notez que le nom du périphérique NVMe inclut le préfixe /dev/.

[ec2-user ~]$ sudo /sbin/ebsnvme-id /dev/nvme1n1 Volume ID: vol-064784f1011136656 /dev/sdf

Amazon Linux crée également un lien symbolique entre le nom du périphérique du mappage de périphérique de stockage en mode bloc (par exemple, /dev/sdf) et le nom du périphérique NVMe.

AMI FreeBSD

À partir de FreeBSD 12.2-RELEASE, vous pouvez exécuter la commande ebsnvme-id comme indiqué ci-dessus. Transmettez le nom du périphérique NVMe (par exemple, nvme0) ou du périphérique de disque (par exemple, nvd0 ou nda0). FreeBSD crée également des liens symboliques vers les périphériques de disque (par exemple /dev/aws/disk/ebs/volume_id).

Autres AMI Linux

Avec la version 4.2 ou une version ultérieure du noyau, vous pouvez exécuter la commande nvme id-ctrl comme suit pour mapper un périphérique NVMe à un ID de volume. Commencez par installer le package de ligne de commande NVMe, nvme-cli, à l’aide des outils de gestion du package pour votre distribution Linux. Pour obtenir des instructions de téléchargement et d’installation pour d’autres distributions, reportez-vous à la documentation correspondante.

L’exemple suivant permet d’obtenir l’ID de volume et le nom de périphérique NVMe pour un volume attaché lors du lancement de l’instance. Notez que le nom du périphérique NVMe n’inclut pas le préfixe /dev/. Le nom de périphérique est disponible via une extension du contrôleur NVMe spécifique au fournisseur (octets 384:4095 de l’identification du contrôleur) :

[ec2-user ~]$ sudo nvme id-ctrl -v /dev/nvme0n1 NVME Identify Controller: vid : 0x1d0f ssvid : 0x1d0f sn : vol01234567890abcdef mn : Amazon Elastic Block Store ... 0000: 2f 64 65 76 2f 73 64 6a 20 20 20 20 20 20 20 20 "sda..."

L’exemple suivant permet d’obtenir l’ID de volume et le nom de périphérique NVMe pour un volume attaché après le lancement de l’instance. Notez que le nom du périphérique NVMe inclut le préfixe /dev/.

[ec2-user ~]$ sudo nvme id-ctrl -v /dev/nvme1n1 NVME Identify Controller: vid : 0x1d0f ssvid : 0x1d0f sn : volabcdef01234567890 mn : Amazon Elastic Block Store ... 0000: 2f 64 65 76 2f 73 64 6a 20 20 20 20 20 20 20 20 "/dev/sdf..."

La commande lsblk répertorie les périphériques disponibles ainsi que leurs points de montage (le cas échéant). Vous pouvez ainsi déterminer quel nom de périphérique utiliser. Dans cet exemple, /dev/nvme0n1p1 est monté comme périphérique racine et /dev/nvme1n1 est attaché mais pas monté.

[ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme1n1 259:3 0 100G 0 disk nvme0n1 259:0 0 8G 0 disk nvme0n1p1 259:1 0 8G 0 part / nvme0n1p128 259:2 0 1M 0 part

Vous pouvez exécuter la commande ebsnvme-id pour mapper le numéro de disque du périphérique NVMe à un ID de volume EBS et un nom de périphérique. Tous les périphériques NVMe EBS sont énumérés par défaut. Vous pouvez passer un numéro de disque pour énumérer des informations pour un périphérique spécifique. L'ebsnvme-idoutil est inclus dans les dernières AMI Windows Server AWS fournies dansC:\PROGRAMDATA\AMAZON\Tools.

À partir du package de pilotes AWS NVMe, 1.5.0, la dernière version de l'ebsnvme-idoutil est installée par le package de pilotes. La dernière version n’est disponible que dans le package du pilote. Le lien de téléchargement autonome de l’outil ebsnvme-id ne recevra plus de mises à jour. La dernière version disponible via le lien autonome est 1.1.0, qui peut être téléchargée à l’aide du lien ebsnvme-id.zip et ensuite extraire le contenu vers votre instance Amazon EC2 pour accéder à ebsnvme-id.exe.

PS C:\Users\Administrator\Desktop> ebsnvme-id.exe Disk Number: 0 Volume ID: vol-0d6d7ee9f6e471a7f Device Name: sda1 Disk Number: 1 Volume ID: vol-03a26248ff39b57cf Device Name: xvdd Disk Number: 2 Volume ID: vol-038bd1c629aa125e6 Device Name: xvde Disk Number: 3 Volume ID: vol-034f9d29ec0b64c89 Device Name: xvdb Disk Number: 4 Volume ID: vol-03e2dbe464b66f0a1 Device Name: xvdc PS C:\Users\Administrator\Desktop> ebsnvme-id.exe 4 Disk Number: 4 Volume ID: vol-03e2dbe464b66f0a1 Device Name: xvdc

Utiliser les volumes EBS NVMe

Pour formater et monter un volume EBS NVMe, consultez Rendre un volume Amazon EBS disponible pour utilisation.

Instances Linux

Si vous utilisez la version 4.2 du noyau Linux ou une version ultérieure, tout changement apporté à la taille d’un volume EBS NVMe sera automatiquement appliqué à l’instance. Pour des noyaux Linux plus anciens, il se peut que vous ayez besoin de détacher et de rattacher le volume EBS ou de redémarrer l’instance afin que le changement de taille soit effectif. Avec une version 3.19 ou ultérieure du noyau Linux, vous pouvez exécuter la commande hdparm comme suit pour forcer une nouvelle analyse du périphérique NVMe :

[ec2-user ~]$ sudo hdparm -z /dev/nvme1n1

Lorsque vous détachez un volume EBS NVMe, l’instance n’a pas la possibilité de vider les caches du système de fichiers ou les métadonnées avant le détachement du volume. Ainsi, avant de détacher un volume EBS NVMe, vous devez d’abord le synchroniser et le démonter. Si le volume ne se détache pas, vous pouvez tenter une commande force-detach, tel que décrit dans Détacher un volume Amazon EBS d'une instance.

instances Windows

Les dernières AMI AWS Windows contiennent le pilote AWS NVMe requis par les types d'instances qui exposent les volumes EBS en tant que périphériques en mode bloc NVMe. Néanmoins, si vous redimensionnez votre volume racine sur un système Windows, vous devez réanalyser le volume afin que cette modification soit reflétée dans l’instance. Si vous avez lancé votre instance à partir d'une autre AMI, il est possible qu'elle ne contienne pas le pilote AWS NVMe requis. Si votre instance ne possède pas le dernier pilote AWS NVMe, vous devez l'installer. Pour plus d'informations, consultez la section Pilotes AWS NVMe pour les instances Windows.

Expiration de l’intégration des I/O

La plupart des systèmes d’exploitation spécifient un délai d’attente pour les opérations d’I/O soumises aux périphériques NVMe.

Instances Linux

Sous Linux, les volumes EBS attachés à des instances basées sur Nitro utilisent le pilote NVMe par défaut fourni par le système d'exploitation. La plupart des systèmes d’exploitation spécifient un délai d’attente pour les opérations d’I/O soumises aux périphériques NVMe. Le délai d’attente par défaut est de 30 secondes. Il peut être modifié à l’aide du paramètre de démarrage nvme_core.io_timeout. Pour la plupart des noyaux Linux antérieurs à la version 4.6, ce paramètre est nvme.io_timeout.

Si la latence d’I/O dépasse la valeur de ce paramètre de délai d’attente, le pilote NVMe Linux fait échouer l’I/O et renvoie une erreur dans le système de fichiers ou l’application. Selon l’opération d’I/O, le système de fichiers ou l’application peut retenter l’erreur. Dans certains cas, il est possible de remonter le système de fichiers en lecture seule.

Pour bénéficier d’une expérience similaire à celles des volumes EBS attachés aux instances Xen, nous vous recommandons de définir nvme_core.io_timeout sur la valeur la plus élevée possible. Pour les noyaux actuels, le maximum est 4294967295, alors que pour les noyaux précédents, le maximum est 255. Selon la version de Linux, il se peut que la temporisation soit déjà réglée à la valeur maximale prise en charge. Par exemple, la temporisation est réglée sur 4294967295 par défaut pour les AMI Linux Amazon 2017.09.01 et ultérieures.

Vous pouvez vérifier la valeur maximale pour votre distribution de Linux en écrivant une valeur plus élevée que la valeur maximale suggérée dans /sys/module/nvme_core/parameters/io_timeout et en recherchant l’erreur Numerical result out of range au moment d’enregistrer le fichier.

instances Windows

Sous Windows, le délai d'expiration par défaut est de 60 secondes et le maximum est de 255 secondes. Vous pouvez modifier le paramètre de registre de classe de disque TimeoutValue à l’aide de la procédure décrite sur la page Registry Entries for SCSI Miniport Drivers.

Abort commande

La commande Abort est une commande d’administrateur NVMe émise afin d’interrompre une commande spécifique précédemment envoyée au contrôleur. Cette commande est généralement émise par le pilote de périphérique aux périphériques de stockage qui ont dépassé le seuil de délai d’expiration des opérations d’I/O. Les types d’instance Amazon EC2 qui prennent en charge la commande Abort par défaut vont interrompre une commande spécifique précédemment envoyée au contrôleur du périphérique Amazon EBS attaché vers lequel une commande Abort est émise.

Les types d’instance suivants prennent en charge la commande Abort pour tous les volumes Amazon EBS attachés par défaut : R5b, R6i, M6i, M6a, C6gn, C6i, X2gd, X2iezn, Im4gn, Is4gen.

Les autres types d’instance ne prennent aucune action lorsque des commandes Abort sont émises vers des volumes Amazon EBS attachés.

Les périphériques Amazon EBS avec un périphérique NVMe version 1.4 ou ultérieure prennent en charge la commande Abort.

Pour en savoir plus, consultez 5.1 Abort command dans NVM Express Base Specification.