Amazon EBS y NVMe - Amazon EBS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Amazon EBS y NVMe

EBSlos volúmenes se exponen como dispositivos de NVMe bloques en las instancias creadas con el sistema Nitro.

La guía de EBS rendimiento indicada en los detalles EBS del producto de Amazon es válida independientemente de la interfaz de bloqueo de dispositivos.

instancias de Linux

Los nombres de dispositivo son /dev/nvme0n1, /dev/nvme1n1 y así sucesivamente. Los nombres de los dispositivos que especificas en un mapeo de dispositivos de bloques se renombran con los nombres de los NVMe dispositivos ()/dev/nvme[0-26]n1. El controlador de dispositivos de bloques puede asignar los nombres de los NVMe dispositivos en un orden diferente al especificado para los volúmenes en la asignación de dispositivos de bloques.

instancias de Windows

Cuando adjunta un volumen a su instancia, incluye un nombre de dispositivo para el volumen. Amazon utiliza este nombre de dispositivoEC2. El controlador del dispositivo de bloques de la instancia asigna el nombre real del volumen al montar el volumen, y el nombre asignado puede ser diferente del nombre que EC2 utiliza Amazon.

Instale o actualice el controlador NVMe

Para acceder a NVMe los volúmenes, los NVMe controladores deben estar instalados. Las instancias pueden admitir NVMe EBS volúmenes, volúmenes de almacenamiento de NVMe instancias, ambos tipos de NVMe volúmenes o ningún NVMe volumen. Para obtener más información, consulte Resumen de las características de redes y almacenamiento.

Los siguientes AMIs incluyen los NVMe controladores necesarios:

  • Amazon Linux 2

  • Amazon Linux AMI 2018.03

  • Ubuntu 14.04 o versiones posteriores con el kernel linux-aws

    nota

    AWS Los tipos de instancias basados en Graviton requieren Ubuntu 18.04 o una versión posterior con núcleo linux-aws

  • Red Hat Enterprise Linux 7.4 o versiones posteriores

  • SUSELinux Enterprise Server 12 o posterior SP2

  • CentOS 7.4.1708 o versiones posteriores

  • Versión BSD 11.1 gratuita o posterior

  • GNUDebian/Linux 9 o posterior

Para confirmar que su instancia tiene el controlador NVMe

Puedes confirmar que tu instancia tiene el NVMe controlador mediante el siguiente comando.

  • Servidor empresarial Amazon LinuxRHEL, CentOS y SUSE Linux

    $ modinfo nvme

    Si la instancia tiene el NVMe controlador, el comando devuelve información sobre el controlador.

  • Amazon Linux 2 y Ubuntu

    $ ls /sys/module/ | grep nvme

    Si la instancia tiene el NVMe controlador, el comando devuelve los controladores instalados.

Para actualizar el NVMe controlador

Si la instancia tiene el NVMe controlador, puede actualizarlo a la versión más reciente mediante el siguiente procedimiento.

  1. Conecte con la instancia .

  2. Actualice la caché del paquete para obtener las actualizaciones necesarias del paquete que se indican a continuación.

    • En Amazon Linux 2, Amazon Linux, CentOS y Red Hat Enterprise Linux:

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

      [ec2-user ~]$ sudo apt-get update -y
  3. Ubuntu 16.04 y versiones posteriores incluyen el linux-aws paquete, que contiene los ENA controladores NVMe y los controladores necesarios para las instancias basadas en Nitro. Actualice el paquete linux-aws para recibir la última versión tal como se indica a continuación:

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

    Para Ubuntu 14.04, puede instalar el último paquete linux-aws del modo siguiente:

    [ec2-user ~]$ sudo apt-get install linux-aws
  4. Reinicie la instancia para cargar la última versión de kernel.

    sudo reboot
  5. Vuelva a conectarse a su instancia una vez que se haya reiniciado.

AWS Windows AMIs para Windows Server 2008 R2 y versiones posteriores incluyen el AWS NVMe controlador. Si no utilizas la última versión de AWS Windows AMIs proporcionada por Amazon, consulta Instalación o actualización de AWS NVMe controladores PowerShell en la Guía del EC2 usuario de Amazon.

Identifica el EBS dispositivo

EBSutiliza la virtualización de E/S de raíz única (SR-IOV) para proporcionar adjuntos de volumen en instancias basadas en Nitro según la especificación. NVMe Estos dispositivos se basan en NVMe los controladores estándar del sistema operativo. Por lo general, estos controladores detectan los dispositivos conectados durante el arranque de la instancia y crean nodos de dispositivo basados en el orden en el que responden los dispositivos, no en cómo se especifican los dispositivos en la asignación de dispositivos de bloques.

En Linux, los nombres de los NVMe dispositivos siguen el patrón/dev/nvme<x>n<y>, donde <x>es el orden de enumeración y, paraEBS, <y>es 1. A veces, los dispositivos pueden responder a la búsqueda con un orden distinto en los siguientes inicios de instancia, lo que provoca un cambio del nombre del dispositivo. Además, el nombre de dispositivo asignado por el controlador de dispositivo de bloques puede ser diferente del nombre especificado en la asignación de dispositivos de bloques.

Le recomendamos que utilice identificadores estables para los EBS volúmenes de la instancia, como uno de los siguientes:

  • En el caso de las instancias basadas en Nitro, las asignaciones de dispositivos de bloques que se especifican en la EC2 consola de Amazon al adjuntar un EBS volumen AttachVolume o durante las RunInstances API llamadas se capturan en el campo de datos específico del proveedor de la identificación del controlador. NVMe Con Amazon Linux AMIs posterior a la versión 2017.09.01, proporcionamos una udev regla que lee estos datos y crea un enlace simbólico al mapeo de dispositivos de bloques.

  • El ID del EBS volumen y el punto de montaje son estables entre los cambios de estado de la instancia. El nombre del NVMe dispositivo puede cambiar en función del orden en el que respondan los dispositivos durante el arranque de la instancia. Recomendamos utilizar el ID del EBS volumen y el punto de montaje para una identificación coherente del dispositivo.

  • NVMeEBSlos volúmenes tienen el identificador del EBS volumen establecido como número de serie en la identificación del dispositivo. Utilice el comando lsblk -o +SERIAL para enumerar el número de serie.

  • El formato del nombre del NVMe dispositivo puede variar en función de si el EBS volumen se adjuntó durante o después del lanzamiento de la instancia. NVMelos nombres de dispositivo de los volúmenes adjuntos después del lanzamiento de la instancia incluyen el /dev/ prefijo, mientras que los nombres de los NVMe dispositivos de los volúmenes adjuntos durante el lanzamiento de la instancia no incluyen el /dev/ prefijo.

    • Para Amazon Linux o Free BSDAMI, utilice el sudo ebsnvme-id /dev/nvme0n1 -u comando para obtener un nombre de NVMe dispositivo coherente.

    • Para otras distribuciones, utilice el sudo nvme id-ctrl -v /dev/nvme0n1 comando para determinar el nombre del NVMe dispositivo. Puede que necesite incluir la opción de --vendor-specific comando.

  • Cuando se formatea un dispositivo, UUID se genera un archivo que persiste durante toda la vida útil del sistema de archivos. Se puede especificar una etiqueta de dispositivo al mismo tiempo. Para obtener más información, consulte Hacer que un EBS volumen de Amazon esté disponible para su uso y Arranque desde un volumen incorrecto.

Amazon Linux AMIs

Con Amazon Linux AMI 2017.09.01 o versiones posteriores (incluido Amazon Linux 2), puede ejecutar el ebsnvme-id comando de la siguiente manera para asignar el nombre del NVMe dispositivo a un ID de volumen y un nombre de dispositivo:

En el ejemplo siguiente se muestra el comando y el resultado de un volumen adjunto durante el lanzamiento de la instancia. Tenga en cuenta que el nombre del NVMe dispositivo no incluye el prefijo. /dev/

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

En el siguiente ejemplo se muestra el comando y el resultado de un volumen adjunto después del lanzamiento de la instancia. Tenga en cuenta que el nombre del NVMe dispositivo incluye el /dev/ prefijo.

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

Amazon Linux también crea un enlace simbólico entre el nombre del dispositivo en la asignación de dispositivos de bloques (por ejemplo,/dev/sdf) y el nombre del NVMe dispositivo.

¡Gratis BSD AMIs

A partir de Free BSD 12.2-RELEASE, puede ejecutar el ebsnvme-id comando como se muestra arriba. Pase el nombre del NVMe dispositivo (por ejemplonvme0) o el del dispositivo de disco (por ejemplo, nvd0 onda0). Free BSD también crea enlaces simbólicos a los dispositivos de disco (por ejemplo, /dev/aws/disk/ebs/volume_id).

Otros Linux AMIs

Con una versión 4.2 o posterior del kernel, puede ejecutar el nvme id-ctrl comando de la siguiente manera para asignar un NVMe dispositivo a un ID de volumen. En primer lugar, instale el paquete de línea de NVMe comandos mediante las herramientas de administración de paquetes de su distribución de Linux. nvme-cli Para obtener instrucciones de descarga e instalación para otras distribuciones, consulte la documentación específica de su distribución.

En el siguiente ejemplo, se obtiene el ID del volumen y el nombre del NVMe dispositivo de un volumen que se adjuntó durante el lanzamiento de la instancia. Ten en cuenta que el nombre del NVMe dispositivo no incluye el /dev/ prefijo. El nombre del dispositivo está disponible a través de la extensión específica del proveedor del NVMe controlador (bytes 384:4095 de la identificación del controlador):

[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..."

En el siguiente ejemplo, se obtienen el ID del volumen y el nombre del NVMe dispositivo de un volumen que se adjuntó tras el lanzamiento de la instancia. Tenga en cuenta que el nombre del NVMe dispositivo incluye el /dev/ prefijo.

[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..."

El comando lsblk muestra los dispositivos disponibles y sus puntos de montaje (cuando corresponda). Esto le ayuda a determinar el nombre de dispositivo correcto que debe usar. En este ejemplo, /dev/nvme0n1p1 se monta en el dispositivo raíz y /dev/nvme1n1 se adjunta pero no se monta.

[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

Puede ejecutar el ebsnvme-id comando para asignar el número de disco del NVMe dispositivo a un identificador de EBS volumen y un nombre de dispositivo. De forma predeterminada, se enumeran todos los EBS NVMe dispositivos. Puede pasar un número de disco para enumerar información de un dispositivo concreto. La ebsnvme-id herramienta se incluye en la última versión de Windows Server AWS proporcionada AMIs enC:\PROGRAMDATA\AMAZON\Tools.

A partir del paquete 1.5.0, de AWS NVMe controladores, el paquete de controladores instala la última versión de la ebsnvme-id herramienta. La versión más reciente solo está disponible en el paquete de controladores. El enlace de descarga independiente de la herramienta ebsnvme-id ya no recibirá actualizaciones. La última versión disponible a través del enlace independiente es1.1.0, que se puede descargar utilizando el enlace ebsnvme-id.zip y extrayendo el contenido a tu EC2 instancia de Amazon para poder acceder a ella. 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

Trabaja con volúmenes NVMe EBS

Para formatear y montar un NVMe EBS volumen, consulteHacer que un EBS volumen de Amazon esté disponible para su uso.

instancias de Linux

Si utiliza el kernel 4.2 de Linux o una versión posterior, cualquier cambio que realice en el tamaño de un NVMe EBS volumen se reflejará automáticamente en la instancia. En el caso de los kernels de Linux más antiguos, es posible que tengas que separar y adjuntar el EBS volumen o reiniciar la instancia para que se refleje el cambio de tamaño. Con el kernel de Linux 3.19 o una versión posterior, puedes usar el siguiente hdparm comando para forzar un nuevo escaneo del dispositivo: NVMe

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

Al separar un NVMe EBS volumen, la instancia no tiene la oportunidad de vaciar las cachés o los metadatos del sistema de archivos antes de separar el volumen. Por lo tanto, antes de separar un NVMe EBS volumen, primero debe sincronizarlo y desmontarlo. Si el volumen no consigue desconectarse, puede intentar un comando force-detach como se describe en Separar un EBS volumen de Amazon de una instancia.

instancias de Windows

Las versiones más recientes de AWS Windows AMIs incluyen el AWS NVMe controlador que requieren los tipos de instancias que exponen EBS los volúmenes como dispositivos de NVMe bloques. No obstante, si cambia el tamaño del volumen raíz en un sistema Windows, debe volver a analizar el volumen para que este campo se refleje en la instancia. Si lanzaste la instancia desde una instancia diferenteAMI, es posible que no contenga el AWS NVMe controlador necesario. Si la instancia no tiene el AWS NVMe controlador más reciente, debe instalarlo. Para obtener más información, consulta AWS NVMelos controladores para instancias de Windows.

Tiempo de espera de las operaciones de E/S

La mayoría de los sistemas operativos especifican un tiempo de espera para las operaciones de E/S enviadas a los NVMe dispositivos.

instancias de Linux

En Linux, EBS los volúmenes adjuntos a las instancias basadas en Nitro utilizan el NVMe controlador predeterminado que proporciona el sistema operativo. La mayoría de los sistemas operativos especifican un tiempo de espera para las operaciones de E/S enviadas a los dispositivos. NVMe El tiempo de espera predeterminado es 30 segundos y se puede cambiar mediante el parámetro de arranque nvme_core.io_timeout. En la mayoría de los kernels de Linux anteriores a la versión 4.6, este parámetro es nvme.io_timeout.

Si la latencia de E/S supera el valor de este parámetro de tiempo de espera, el NVMe controlador de Linux no pasa la E/S y devuelve un error al sistema de archivos o a la aplicación. Según la operación de E/S, el sistema de archivos o aplicación puede recuperar el error. En algunos casos, el sistema de archivos puede volverse a montar como de solo lectura.

Para obtener una experiencia similar a la de los EBS volúmenes adjuntos a las instancias de Xen, recomendamos nvme_core.io_timeout configurarla con el valor más alto posible. Para los kernels actuales, el máximo es 4294967295, mientras que para los kernels anteriores el máximo es 255. En función de la versión de Linux, el tiempo de espera ya podría estar definido en el valor máximo admitido. Por ejemplo, el tiempo de espera está establecido en 4294967295 de forma predeterminada para Amazon Linux AMI 2017.09.01 y versiones posteriores.

Puede verificar el valor máximo de la distribución de Linux mediante la escritura de un valor superior al máximo sugerido en /sys/module/nvme_core/parameters/io_timeout y la comprobación del error Numerical result out of range cuando intente guardar el archivo.

instancias de Windows

En Windows, el tiempo de espera predeterminado es de 60 segundos y el máximo de 255 segundos. Puede modificar la configuración del registro de la clase de TimeoutValue disco mediante el procedimiento descrito en Entradas de registro para controladores de SCSI minipuertos.

Abort command

El Abort comando es un comando de NVMe administración que se ejecuta para anular un comando específico que se envió previamente al controlador. El controlador de dispositivos suele emitir este comando para los dispositivos de almacenamiento que han superado el límite de tiempo de espera de la operación de E/S. Los tipos de EC2 instancias de Amazon que admiten el Abort comando de forma predeterminada abortarán un comando específico que se haya enviado previamente al controlador del EBS dispositivo Amazon conectado al que se emite un Abort comando.

Los siguientes tipos de instancias admiten el Abort comando para todos los EBS volúmenes de Amazon adjuntos de forma predeterminada: R5b R6iM6i,M6a,C6gn,C6i,,X2gd,X2iezn,Im4gn,Is4gen.

Otros tipos de instancias no realizan ninguna acción cuando se emiten Abort comandos a EBS volúmenes de Amazon adjuntos.

EBSLos dispositivos Amazon con una versión de NVMe dispositivo 1.4 o superior admiten el Abort comando.

Para obtener más información, consulte la sección 5.1 Comando de cancelación de la especificación básica de NVM Express.