Tengo una instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2) con volúmenes de Amazon Elastic Block Store (Amazon EBS) y volúmenes de almacén de instancias asociados. Quiero identificar los volúmenes asociados del almacén de instancias.
Breve descripción
Para identificar los volúmenes de almacén de instancias en instancias de Linux de Amazon EC2, compruebe primero si el tipo de instancia admite volúmenes de almacén de instancias. Si la instancia admite volúmenes de almacén de instancias, compruebe los tipos de volúmenes de almacén de instancias compatibles. A continuación, revise la información del volumen en el sistema operativo (SO).
Solución
- Compruebe qué tipo de volumen de almacén de instancias (HDD, SSD o SSD NVMe) admite su instancia, si es que admite alguno. Verifique la cantidad, el tamaño, el tipo y las optimizaciones de rendimiento de los volúmenes de almacenes de instancias que están disponibles para cada tipo de instancia admitido.
- Determine qué volúmenes asociados a su instancia son volúmenes de almacén de instancias. El método de identificación depende de si tiene volúmenes de almacén de instancias SSD NVMe o HDD/SSD.
Volúmenes de almacén de instancias SSD NVMe
-
Conéctese a su instancia.
-
Instale el paquete de línea de comandos de NVMe, nvme-cli. Utilice las herramientas de administración de paquetes para su distribución de Linux. En el caso de las instancias de Amazon Linux, instale el paquete nvme-cli mediante el comando yum. Si desea obtener instrucciones de descarga e instalación para otras distribuciones, consulte la documentación de GitHub para nvme-cli o consulte la documentación de su distribución.
-
Ejecute el comando nvme list como usuario privilegiado:
$ sudo nvme list
En la columna Modelo del siguiente ejemplo de resultado se indica si cada dispositivo conectado es Amazon Elastic Block Store o Amazon EC2 NVMe Instance Storage. El resultado del ejemplo proviene de un tipo de instancia que admite un dispositivo SSD NVMe:
$ sudo nvme list
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 vol0923757ba05df9515 Amazon Elastic Block Store 1 0.00 B / 8.59 GB 512 B + 0 B 1.0
/dev/nvme1n1 AWS1A4FC25FB16B79F76 Amazon EC2 NVMe Instance Storage 1 50.00 GB / 50.00 GB 512 B + 0 B 0
Volúmenes de almacén de instancias HDD o SSD
En el caso de los volúmenes de almacén de instancias HDD o SSD, obtenga la lista de dispositivos de bloques asociados desde el sistema operativo. A continuación, recupere la sección de asignación de dispositivos de bloques que se incluye en los metadatos de la instancia.
-
Conéctese a su instancia.
-
Ejecute el comando lsblk. Si el comando lsblk no está presente, instale el paquete util-linux con las herramientas de administración de paquetes para su distribución de Linux. En el caso de las instancias de Amazon Linux, instale el paquete util-linux mediante el comando yum install. Si desea obtener instrucciones de descarga e instalación para otras distribuciones, consulte la documentación de su distribución:
$ sudo lsblk
El siguiente ejemplo de resultado muestra la lista de dispositivos de bloques de una instancia con muchas unidades. Esta instancia se ejecuta en un tipo de instancia que admite volúmenes de almacén de instancias SSD:
$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdb 202:16 0 745.2G 0 disk
xvdc 202:32 0 745.2G 0 disk
xvdd 202:48 0 745.2G 0 disk
xvde 202:64 0 745.2G 0 disk
-
Averigüe si xvdb, del resultado del ejemplo anterior, es una unidad efímera. Para ello, recupere los metadatos de block-device-mapping. Utilice la URL base de todas las solicitudes de metadatos de instancia (http://169.254.169.254/latest/meta-data/block-device-mapping):
$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
sdb
$ ls -l /dev/sdb
lrwxrwxrwx 1 root root 4 Aug 27 13:07 /dev/sdb -> xvdb
En el ejemplo anterior, los dispositivos de bloques para ephemeral0 se asignan a sdb, que es un enlace simbólico a xvdb. Esto significa que xvdb es un dispositivo efímero.
-
(Opcional) También puede automatizar este proceso para mostrar los dispositivos efímeros de su instancia mediante los siguientes comandos:
Identificación de los dispositivos de bloques del sistema operativo:
OSDEVICE=$(sudo lsblk -o NAME -n | grep -v '[[:digit:]]' | sed "s/^sd/xvd/g")
Configuración de la URL de asignación de dispositivos de bloques:
BDMURL="http://169.254.169.254/latest/meta-data/block-device-mapping/"
Recorrido por los dispositivos del sistema operativo para buscar la asignación en la asignación de dispositivos de bloques:
for bd in $(curl -s ${BDMURL}); do MAPDEVICE=$(curl -s ${BDMURL}/${bd}/ | sed "s/^sd/xvd/g"); if grep -wq ${MAPDEVICE} <<< "${OSDEVICE}"; then echo "${bd} is ${MAPDEVICE}"; fi; done | grep ephemeral
A continuación se muestra un ejemplo de los tres comandos descritos anteriormente y su resultado:
$ OSDEVICE=$(sudo lsblk -o NAME -n | grep -v '[[:digit:]]' | sed "s/^sd/xvd/g")
$ BDMURL="http://169.254.169.254/latest/meta-data/block-device-mapping/"
$ for bd in $(curl -s ${BDMURL}); do MAPDEVICE=$(curl -s ${BDMURL}/${bd}/ | sed "s/^sd/xvd/g"); if grep -wq ${MAPDEVICE} <<< "${OSDEVICE}"; then echo "${bd} is ${MAPDEVICE}"; fi; done | grep ephemeral
ephemeral0 is xvdb
ephemeral1 is xvdc
ephemeral2 is xvdd
ephemeral3 is xvde