Asignación de volúmenes de Amazon EBS a nombres de dispositivos NVMe - Amazon EBS

Asignación de volúmenes de Amazon EBS a nombres de dispositivos NVMe

EBS utiliza la virtualización de E/S de raíz única (SR-IOV) para proporcionar asociaciones de volumen en instancias basadas en Nitro mediante la especificación NVMe. Estos dispositivos se basan en los controladores NVMe 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 dispositivo NVMe siguen el patrón /dev/nvme<x>n<y>, donde <x> es el orden de enumeración y, para EBS, <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 sus volúmenes EBS dentro de su instancia, como uno de los siguientes:

  • Para las instancias basadas en Nitro, los mapeos de dispositivos de bloques que se especifican en la consola Amazon EC2 cuando está conectando un volumen de EBS o durante las llamadas a la API AttachVolume o RunInstances se capturan en el campo de datos específico del proveedor de la identificación del controlador NVMe. Con AMI Amazon Linux de versiones posteriores a la 2017.09.01, proporcionamos una regla udev que lee estos datos y crea un enlace simbólico al mapeo de dispositivos de bloques.

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

  • Los volúmenes EBS de NVMe disponen de un ID de volumen de EBS 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 dispositivo NVMe puede variar en función de si el volumen de EBS se adjuntó durante o después del lanzamiento de la instancia. Los nombres de dispositivos NVMe para los volúmenes adjuntos después del lanzamiento de la instancia incluyen el prefijo /dev/, mientras que los nombres de dispositivos NVMe para los volúmenes adjuntos durante el lanzamiento de la instancia no incluyen el prefijo /dev/.

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

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

  • Cuando se le da formato a un dispositivo, se genera un UUID que se conserva durante la vida útil del sistema de archivos. Se puede especificar una etiqueta de dispositivo al mismo tiempo. Para obtener más información, consulte Cómo hacer que un volumen de Amazon EBS esté disponible para su uso y Arranque desde un volumen incorrecto.

AMI de Amazon Linux

Con la AMI de Amazon Linux 2017.09.01 o posterior (incluido Amazon Linux 2), puede ejecutar el comando ebsnvme-id como se indica a continuación para mapear el nombre del dispositivo NVMe 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 dispositivo NVMe 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 dispositivo NVMe incluye el prefijo /dev/.

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

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

AMI de FreeBSD

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

Otras AMI de Linux

Con una versión del kernel 4.2 o posterior, puede ejecutar el comando nvme id-ctrl como se indica a continuación para mapear un dispositivo NVMe a un ID de volumen. En primer lugar, instale el paquete de línea de comandos de NVMe, nvme-cli, mediante las herramientas de administración de paquetes de la distribución de Linux. 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 de volumen y el nombre del dispositivo NVMe de un volumen que se adjuntó durante el lanzamiento de la instancia. Tenga en cuenta que el nombre del dispositivo NVMe no incluye el prefijo /dev/. El nombre del dispositivo está disponible a través de la extensión específica del proveedor del controlador NVMe (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 obtiene el ID de volumen y el nombre del dispositivo NVMe de un volumen que se adjuntó después del lanzamiento de la instancia. Tenga en cuenta que el nombre del dispositivo NVMe incluye el prefijo /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..."

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

También puede ejecutar el comando ebsnvme-id para asignar el número de disco del dispositivo NVMe a un ID de volumen EBS y a un nombre de dispositivo. De forma predeterminada, todos los dispositivos NVMe de EBS se enumeran. Puede pasar un número de disco para enumerar información de un dispositivo concreto. La herramienta ebsnvme-id se incluye en las últimas AMI de Windows Server proporcionadas por AWS que se ubican en C:\ProgramData\Amazon\Tools.

A partir del paquete de controladores NVMe de AWS 1.5.0,, el paquete de controladores instala la última versión de la herramienta ebsnvme-id. 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 es 1.1.0, que puede descargar con el enlace ebsnvme-id.zip y extraer el contenido en su instancia de Amazon EC2 para obtener acceso a ebsnvme-id.exe.

PS C:\ProgramData\Amazon\Tools> 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:\ProgramData\Amazon\Tools> ebsnvme-id.exe 4 Disk Number: 4 Volume ID: vol-03e2dbe464b66f0a1 Device Name: xvdc