¿Cómo utilizar el almacenamiento "Instance Store Volumes" en Amazon EC2?

18

Según AWS, obtuve 850 GB de almacenamiento con el servidor Medium EC2. Pero cuando creo una AMI de Amazon Linux, no puedo usar los 850 GB proporcionados.

Al crearlo, se muestra en la Configuración del dispositivo de almacenamiento en Instance Store Volumes que su dispositivo se ubicará en / dev / sdb, pero cuando inicio la VM, solo encuentro / dev / sda1.

¿Pueden ayudarme a montar este almacenamiento? Gracias

Además, cuando Amazon afirma que el almacenamiento de instancias no es seguro para el uso a largo plazo y debería preferir usar EBS, ¿cuál es el punto de esos 850 GB?

Gracias

rahulg
fuente
¿Qué tipo de instancia específica está intentando ejecutar? c1.medio? m1.medium? ¿algo más?
Eric Hammond el
1
Aquí hay dos excelentes recursos para aprender sobre el almacenamiento de instancias en EC2: docs.amazonwebservices.com/AWSEC2/latest/UserGuide/… y docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…
Eric Hammond

Respuestas:

10

El uso del almacenamiento local de instancia que no es persistente cuando se detiene una instancia es bastante simple: es un gran espacio de espacio útil para cosas transitorias. Son el destino perfecto para montar /tmp, y es extremadamente útil si su servidor maneja archivos muy grandes de forma transitoria.

Por ejemplo, si estaba creando un grupo de instancias para hacer la traducción de voz a texto de archivos de video cargados, el almacenamiento local de instancias sería justo lo que desea colocar en los archivos en proceso. Puede estar allí durante unas horas mientras se procesa el archivo, pero una vez hecho, puede eliminarse y recuperar otro. No necesita EBS para eso, y es mucho más barato ejecutar ese tipo de almacenamiento fuera de la instancia local en lugar de EBS.

El almacenamiento local de instancias está destinado a ser utilizado como espacio reutilizable para ejecutar el procesamiento, no el almacenamiento a largo plazo. Si su carga de trabajo no utiliza el espacio para rascar para nada, o lo que necesita es tan pequeño que no es significativo, entonces no es una buena opción para usted.

sysadmin1138
fuente
16
¡El almacenamiento efímero o la tienda de instancias persisten en los reinicios de una instancia! No persiste durante una parada / inicio, ni una terminación, ni algunas fallas de hardware de instancia. Aquí hay un artículo que escribí sobre la diferencia entre reiniciar y detener / iniciar: alestic.com/2011/09/ec2-reboot-stop-start
Eric Hammond
27

Si aún no está montado en eg / mnt y si no tiene un sistema de archivos creado, entonces:

  1. Comprueba el nombre del dispositivo

    sudo fdisk -l

  2. Haga el directorio donde desea montar el volumen

    sudo mkdir / mnt

  3. Cree un sistema de archivos en su volumen (asegúrese de elegir el volumen correcto porque esto crea un nuevo sistema de archivos en el volumen)

    sudo mkfs.ext4 / dev / xvdj

  4. Volumen de montaje

    sudo mount -t ext4 / dev / xvdj / mnt

  5. Si desea conservar el montaje después de, por ejemplo, un reinicio, abra / etc / fstab y agréguele el montaje

    echo "/ dev / xvdj / mnt auto noatime 0 0" | sudo tee -a / etc / fstab

  6. Asegúrese de que no hay nada malo con fstab montando todos

    monte -a

horte
fuente
55
Dependiendo del tipo de instancia, primero debe adjuntar los volúmenes del almacén de instancias a la instancia utilizando las opciones de mapeo de dispositivos de bloque. Si no hace esto, es posible que ni siquiera vea los dispositivos en / dev
Eric Hammond
@ Comentario de EricHammond era realmente la respuesta a mi búsqueda - no vi en cualquier lugar - incluso enfdisk -l
Peter V. Mørch
Si no ve el dispositivo, intente usarlo lsblk.
volker238
Estas instrucciones montan el volumen para mí, pero intentar escribir un nuevo archivo en el volumen da "acceso denegado". No puedo resolver lo que está mal con los permisos. ¿Algunas ideas?
MikeB
lsblk -fes la mejor manera de encontrar volúmenes de disco: cualquier volumen montado se mostrará con la ruta de montaje, y muestra las etiquetas de los volúmenes (se recomienda usar UUID o etiquetas al montar sistemas de archivos en Linux).
RichVel
1

Creé un script para Ubuntu que se puede ejecutar en el arranque y después de un ciclo de inicio / detención, ya que en el mundo de AWS son dos cosas muy diferentes. Cuando reinicia, todavía tiene el mismo disco efímero y todo lo que tiene que hacer es montar (/ etc / fstab debería manejar esto automáticamente), pero cuando se detiene una instancia y luego se reinicia, obtiene un nuevo disco efímero sin formato que necesita más amor para obtener Listo para usar. Siempre que tenga la entrada / etc / fstab correcta, puede ejecutarla en cualquier momento y montará / formateará el dispositivo según sea necesario. tomará un parámetro del punto de montaje, pero si no se proporciona, asumirá / mnt. Puede llamar al script mount_ephemeral.sh y ejecutarlo como root en un servicio de inicio.

#!/bin/sh
set -e
mountPoint=${1:-'/mnt'}
rawDevice=$(grep "\s$mountPoint\s" /etc/fstab |cut -f1)
#echo checking $mountPoint on $rawDevice
[ "$rawDevice" = "" ] && { echo -e "$mountPoint not in /etc/fstab"; exit 1; }
mountpoint -q $mountPoint
[  "$?" = "0" ] && { echo -e "$mountPoint mounted"; exit; }
hasFS=$(blkid |grep $rawDevice)
[ ! "$hasFS" = "" ] && { echo -e "$mountPoint has FS:$hasFS"; mount $mountPoint; exit; }
echo initializing $mountPoint on $rawDevice
mkdir -p $mountPoint
mkfs.ext4 $rawDevice
mount $mountPoint
chmod 777 $mountPoint
exit 0
DanJGer
fuente
Prefiero no usarlo /mntcomo punto de montaje para volúmenes, porque la convención es que /mnt/foose usa para cada volumen. Si tiene que montar otro volumen en algún momento como se dice /mnt/bar, eso significaría que /mntno se puede desmontar el volumen mientras /mnt/barestá montado. Esto grepes peligroso si está utilizando /mnty hay puntos de montaje como /mnt/foo, ya que /mntpodría coincidir con varias líneas, por lo que el script podría en algunos casos montar o hacer un disco incorrecto.
RichVel
No encontrará otras monturas similares, ya que tiene que coincidir exactamente. El problema es que el espacio en blanco utilizado en su fstab debe coincidir con el valor citado en el grep. He actualizado para usar \bpero YMMV. El /mntes solo un valor predeterminado que puede cambiar usted mismo y es solo un ejemplo. Además, puede pasar un parámetro al script y utilizará ese punto de montaje en su lugar. Voy a agregar el set -epara que cualquier falla termine todo el script
DanJGer
corrección: cambiado de \ba\s
DanJGer
0

El montaje de la tienda de instancias también depende de la imagen:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/add-instance-store-volumes.html

Cuando inicia una instancia, la asignación de dispositivo de bloque predeterminada la proporciona la AMI especificada. Si necesita volúmenes de almacenamiento de instancias adicionales, debe agregarlos a la instancia a medida que la inicia. Tenga en cuenta que también puede omitir los dispositivos especificados en la asignación de dispositivos de bloque AMI.

Algunas imágenes usarán todos los recursos disponibles.

zulú
fuente