No hay suficiente espacio en disco '/' en la instancia de AWS


28

Estoy ejecutando la instancia de Ubuntu 11.04 para mi servidor web en la nube de AWS, ahora estoy obteniendo que no hay espacio en disco / partición de mi servidor. df -ah di esto

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  7.8G   97M  99% /
proc                     0     0     0   -  /proc
none                     0     0     0   -  /sys
fusectl                  0     0     0   -  /sys/fs/fuse/connections
none                     0     0     0   -  /sys/kernel/debug
none                     0     0     0   -  /sys/kernel/security
none                  3.7G  112K  3.7G   1% /dev
none                     0     0     0   -  /dev/pts
none                  3.7G     0  3.7G   0% /dev/shm
none                  3.7G   80K  3.7G   1% /var/run
none                  3.7G     0  3.7G   0% /var/lock
/dev/xvdb             414G   16G  377G   4% /mnt

Ahora he intentado esto para obtener espacio adicional en / partición

  • Limpie todos los archivos de registro para Apache.
  • Se eliminaron todos los archivos innecesarios del servidor.
  • Limpieza del directorio de inicio.

Pero aún así no estoy obteniendo suficiente espacio. Este tipo de instancia es m1.large con 8GB EBS. Ahora estoy obteniendo tengo suficiente espacio en disco en / dev / xvdb .

¿Hay alguna manera de asignar espacio en disco a / desde / dev / xvdb o cualquier otra forma? Sugiérame la posible solución para esto. ¿Es posible utilizar la misma partición / dev / xvdb con otra instancia?


1
Actualización 2017: ¡Amazon permite cambiar el tamaño de sus unidades (incluso la unidad de arranque) sobre la marcha hoy en día! vea mi respuesta SO aquí: stackoverflow.com/a/42791031/7022062
Dmitry Shevkoplyas

Respuestas:


26

La respuesta es doble.

Solución alternativa: use / dev / xvdb (/ mnt) para datos temporales

Este es el denominado almacenamiento efímero de su instancia de Amazon EC2 y sus características son muy diferentes a las del almacenamiento persistente de Amazon EBS en uso en otros lugares. En particular, este almacenamiento efímero se perderá en los ciclos de detención / inicio y generalmente puede desaparecer , por lo que definitivamente no desea poner nada de valor duradero allí, es decir, solo coloque allí datos temporales que pueda permitirse perder o reconstruir fácilmente , como un archivo de intercambio o datos estrictamente temporales en uso durante los cálculos. Por supuesto, puede almacenar grandes índices allí, por ejemplo, pero debe estar preparado para reconstruirlos después de que el almacenamiento se haya borrado por cualquier motivo (reinicio de instancia, falla de hardware, ...).

Solución: redimensionar / dev / xvda1 (/) para obtener el almacenamiento deseado

Este es el denominado Almacenamiento de dispositivo raíz de su instancia EC2 respaldada por Amazon EBS , que facilita a Amazon EBS para la flexibilidad y durabilidad en particular, es decir, los datos almacenados allí son razonablemente seguros y sobreviven a fallas de instancia; puede aumentar aún más la flexibilidad y la durabilidad al tomar instantáneas regulares de su volumen EBS, que se almacenan en Amazon S3 , con el conocido 99.99999999999% de durabilidad.

Estas características de instantánea le permiten resolver su problema a la vez, en la medida en que pueda reemplazar su almacenamiento raíz EBS actual de 8GB (/ dev / xvda1) con uno más o menos tan grande como desee. El proceso se describe en el excelente artículo de Eric Hammond Cambiar el tamaño del disco raíz en una instancia EBS Boot EC2 en ejecución :

Mientras esté bien con un poco de tiempo de inactividad en la instancia EC2 (unos minutos), es posible cambiar el volumen raíz de EBS con una copia más grande, sin necesidad de iniciar una nueva instancia.

Si prepara correctamente los pasos que él describe (le recomiendo probarlos primero con una instancia de EC2 desechable para familiarizarse con el procedimiento, o incluso automatizarlo a través de un script personalizado), debería poder finalizar el proceso con unos pocos minutos de inactividad solo de hecho.

La mayoría de los pasos descritos también se pueden realizar a través de la consola de administración de AWS , lo que evita tratar con las herramientas de API Amazon EC2 ; esto se reduce a:

  • detener (no terminar) la instancia EC2
  • separe el volumen EBS de la instancia detenida
  • crear una instantánea del volumen de EBS separado
  • crear un nuevo volumen EBS (más grande) a partir de la instantánea creada
  • adjunte el nuevo volumen EBS a la instancia EC2 ( ¡ Importante ! Si este es su dispositivo raíz, asegúrese de nombrarlo exactamente como el dispositivo raíz de la instancia como se mencionó, por ejemplo (/ dev / sda1) o (/ dev / xdva1) de lo contrario, se adjuntará como un dispositivo de bloque y no como un dispositivo raíz y no podrá iniciar la instancia, ya que no habrá ningún dispositivo raíz enumerado para la instancia).
  • SSH en la instancia en ejecución y confirme que todo está en orden a través de df -ah
    • en caso de que su sistema no haya cambiado automáticamente el tamaño del sistema de archivos, deberá hacerlo manualmente como se explica en el artículo de Eric

¡Buena suerte!


Alternativa

Dada la versatilidad y facilidad de uso de estos volúmenes de EBS, una opción adicional sería adjuntar más volúmenes de EBS a su instancia y mover áreas de interés claramente separables allí.

Por ejemplo, estamos utilizando un par de aplicaciones Java bastante pesadas, cada una de las cuales consume 1-2 GB de almacenamiento por versión; para facilitar la actualización de versiones y, en general, poder mover estas aplicaciones a diferentes instancias a mi discreción, las coloqué en volúmenes EBS dedicados cada una, las monté en una instancia y las vinculé suavemente a la ubicación deseada, por ejemplo, usualmente /var/lib/<app>/<version>y /usr/local/<app>/<version>.

Con este método, actualmente estamos ejecutando instancias EC2 con el almacenamiento del dispositivo raíz todavía en su tamaño predeterminado de 8 GB (al igual que el suyo), pero a veces también hasta 8 volúmenes EBS con diferentes tamaños (1-15 GB) adjuntos.

Sin embargo, debe tener en cuenta los posibles problemas de rendimiento de la red, en la medida en que todos estos volúmenes de EBS están utilizando la misma LAN para sus E / S, lo que podría generar ganancias de rendimiento respectivas incluso, o saturar su red en casos extremos, por lo que, como de costumbre, esto depende sobre el caso de uso y la carga de trabajo a mano.


Estoy usando / dev / xvdb para mantener mi base de datos que ahora tiene un tamaño de casi 16 GB. Se está ejecutando un proceso en segundo plano para mantenerla actualizada. Entonces, ¿cuál debería ser el mejor almacenamiento permanente para esta base de datos? ¿Debo ir por Amazon RDS o Amazon DynamoDB? cual es tu sugerencia Estoy ejecutando el servidor PHP en esta instancia.
Sumant

2
@Sumant: Eso no es bueno, así que hiciste exactamente lo que es peligroso, es decir, poner los datos para que se conserven en un disco que básicamente puede desaparecer en cualquier momento (por lo general no lo hace, por lo que uno debería tratarlo así). Espero no tengo abeja engañosa en este sentido - por favor tenga mucho cuidado al mitigar este con el fin de evitar la pérdida de datos durante el proceso (que hacer tener copias de seguridad de bases de datos sin tener en cuenta, ¿verdad?)!
Steffen Opel

@Sumant: con respecto a su pregunta: no debería necesitar cambiar la arquitectura de su aplicación (o la base de datos) para remediar el problema de almacenamiento, simplemente cambie el tamaño de su disco raíz o adjunte más volúmenes EBS como se sugiere. Sin embargo, si desea mejorar y desacoplar su nivel de base de datos, lo que es bueno en principio teniendo en cuenta el crecimiento futuro (pero viene con los costos respectivos desde el principio), y suponiendo que actualmente esté ejecutando MySQL, Amazon RDS Sería la elección perfecta y conveniente. Amazon DynamoDB requiere una nueva arquitectura de aplicación completa y se aplica solo a casos de uso específicos.
Steffen Opel

1
@Sumant: Sin embargo, tenga en cuenta que migrar su base de datos a una instancia de m1.small RDS en realidad podría exhibir un rendimiento más lento que su MySQL actual en EC2, que ejecuta m1.large con los respectivos beneficios de rendimiento de CPU y E / S, si esto aplica, Sin embargo, depende de su carga de trabajo de base de datos actual. Por supuesto, también puede usar instancias de RDS más grandes para remediar esto, pero su costo aumentará en consecuencia.
Steffen Opel

1

Sip de una manera simple para fstab y luego montarlo para decir / var / www / html / files2 /

luego mkdir / var / www / html / files2 / website luego ln -s -d / var / www / html / website / var / www / html / files2 / website


use UUID para montar la partición usando el comando blkids y fdisk diga '/ dev / vxds /' para hacer la partición. Use Midnight Commander para mover los archivos con F6 de una carpeta a otra, asegúrese de elegir la carpeta correcta debajo de la posición de montaje oh y, por supuesto, tendrá que 'montar -a' después de agregar a fstab
Daniel Chay

0

Hoy se me ocurrió el mismo problema, cuando dejas que la nueva ec2 intance por defecto, EBS es de 8GB. Puede modificar el tamaño del EBS adjunto sin crear una nueva imagen o tomar una instantánea o separar EBS. Estos son los tres pasos que puede seguir:

  1. Cambiar el tamaño del volumen de EBS
  2. Cambiar el tamaño de la partición
  3. Cambiar el tamaño de la partición Para el primer paso, vaya a la consola de AWS y haga clic en EBS y cambie el tamaño deseado y haga clic en modificar.

Para el resto de los pasos, siga este artículo si tiene alguna pregunta, no dude en preguntar.

¡Gracias!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.