tamaño creciente de / tmp en instancias EC2

8

Estoy ejecutando un servidor Ubuntu en EC2 ebs, y mi aplicación necesita mucho espacio de disco temporal, asignado en / tmp. Sin embargo, en ec2 la unidad raíz que también contiene / tmp es bastante pequeña, alrededor de 10 GB. Todo el espacio restante en disco se monta bajo / mnt. Como resultado, mi aplicación devuelve errores 'sin espacio en disco', porque / tmp parece estar lleno.

¿Cuál es la mejor manera de resolver este problema? Una cosa que puedo pensar es crear / mnt / tmp y hacer un enlace simbólico

/tmp --> /mnt/tmp

Sin embargo, soy un poco reacio a perder el tiempo con algo que utilizan tantos programas y herramientas de Linux. No estoy seguro de si cada programa resolverá correctamente el enlace simbólico, y no estoy seguro de lo que sería para el rendimiento.

Jeroen
fuente
2
Los montajes de enlace significan no tener que hacer un enlace simbólico.
Ignacio Vazquez-Abrams

Respuestas:

5

Con imágenes respaldadas por EBS, el almacenamiento efímero todavía está disponible, simplemente no está asignado como un dispositivo de bloque de forma predeterminada (como lo está en las imágenes de la tienda de instancias)

El documento de Amazon está aquí , y hay una publicación de blog útil, aquí

En resumen: puede especificar esta asignación en la línea de comando cuando inicia la imagen y luego montarla como un volumen normal /dev/sd[x]. O bien, si enrolla su propia AMI, puede hornear la asignación en esa AMI para que todas las imágenes lanzadas desde ella tengan acceso a ella desde el principio.

Symlinking /tmpfuncionará, pero no lo recomendaría en este caso, donde tiene una gran cantidad de almacenamiento temporal en uso. Una vez que tenga disponible la asignación de dispositivos, puede montar el dispositivo como /tmpen /etc/fstab.

Con una pequeña instancia, debe tener 150 GB de tienda de instancias disponibles de forma gratuita. Huelga decir que este almacenamiento muere cuando la instancia se reinicia. Si su uso no es tan temporal, entonces necesita crear su propio volumen EBS nuevo y montarlo de esa manera.

SmallClanger
fuente
1
¿Por qué no se recomienda simular? Por ejemplo, si quiero poner / var / tmp y / var / log en mi almacenamiento efímero, puedo montar el almacenamiento como / mnt y vincular ambos directorios allí.
j0nes
Buen punto. Estaba pensando en este caso específico, basado en la suposición de que el OP estaba considerando volver a vincular a la partición principal. Aclararé mi respuesta.
SmallClanger
1

Puede vincular el punto de montaje / tmp a / mnt / tmp:

montaje sudo -B / tmp / mnt / tmp

Hithwen
fuente
2
Que los comandos me miran hacia atrás. Creo que intercambiaste los dos nombres de directorio.
Kasperd
0

La vinculación simbólica como se sugiere en la pregunta no es una solución tan mala. Pero hay que tener especial cuidado al hacerlo. Solo para consolidar los pasos precisos involucrados en el montaje del volumen son:

1) Crear nuevo volumen en la consola de AWS. Adjuntarlo a la instancia.

2) Formatearlo y montarlo debajo de decir /mnt/vol1

3) Limpiar /tmpen la medida de lo posible.

4) mkdir /mnt/vol1/tmp && mv /tmp/* /mnt/ && rmdir /tmp && ln -s /mnt/vol1/tmp /tmp

Murphy
fuente
Mover los archivos al nuevo directorio no va a lograr el resultado deseado para ningún archivo que esté abierto actualmente. En cambio, reiniciaría, ya que los programas no pueden esperar que los archivos /tmpsobrevivan a un reinicio.
kasperd