Ampliar una instancia de EC2 es fácil como una respiración (por ejemplo, crear una AMI, iniciar una instancia desde ella y luego cambiar el tamaño de almacenamiento).
Pero reducirlo se vuelve más difícil. Me gustaría reducir el tamaño de volumen raíz de una instancia de Elastic Block Store (EBS) de Amazon Web Services (AWS) EC2. Hay un par de viejos procedimientos de alto nivel en la red. La versión más detallada que encontré es una respuesta de un año a una pregunta de StackOverflow: cómo puedo reducir mi capacidad de volumen de ebs , los pasos tienen un nivel bastante alto:
Cree un nuevo volumen EBS que tenga el tamaño deseado (por ejemplo, / dev / xvdg)
Inicie una instancia y adjúntele ambos volúmenes EBS
Compruebe el sistema de archivos (del volumen raíz original): (p. Ej.) E2fsck -f / dev / xvda1
Reduzca al máximo el volumen raíz original: (por ejemplo, ext2 / 3/4) resize2fs -M -p / dev / xvda1
Copie los datos con dd:
Elija un tamaño de fragmento (me gustan 16 MB)
Calcule el número de fragmentos (utilizando el número de bloques de la salida resize2fs): blocks * 4 / (chunk_size_in_mb * 1024): redondee un poco por seguridad
Copie los datos: (p. Ej.) Dd if = / dev / xvda1 ibs = 16M of = / dev / xvdg obs = 16M count = 80
Cambiar el tamaño del sistema de archivos en el nuevo volumen EBS (más pequeño): (por ejemplo) resize2fs -p / dev / xvdg
Compruebe el sistema de archivos (del volumen raíz original): (p. Ej.) E2fsck -f / dev / xvdg
Separe su nuevo volumen raíz de EBS y adjúntelo a su instancia original
No puedo encontrar una solución detallada "cómo" paso a paso.
Mi volumen raíz de EBS está conectado a una instancia de HVM Ubuntu.
Cualquier ayuda sería muy apreciada.
fuente
Respuestas:
En la consola de AWS:
Detenga la instancia que desea cambiar de tamaño
Cree una instantánea del volumen activo y luego cree un volumen "SSD de uso general" a partir de esa instantánea.
Cree otro volumen "SSD de propósito general" al tamaño que desee.
Adjunte estos 3 volúmenes a la instancia como:
Inicia la instancia.
Inicie sesión en la nueva instancia a través de SSH.
cree estos nuevos directorios:
mkdir /source /target
mkfs.ext4 /dev/xvdf
mount -t ext4 /dev/xvdf /target
e2label /dev/xvdf /
mount -t ext4 /dev/xvdg /source
rsync -ax /source/ /target
Nota: no hay "/" siguiente "/ target". Además, puede haber algunos errores sobre enlaces simbólicos y atributos, pero el cambio de tamaño aún fue exitoso
umount /target
umount /source
De vuelta en la consola de AWS: detenga la instancia y separe todos los volúmenes.
Adjunte el nuevo volumen de tamaño a la instancia como: "/ dev / sda1"
Inicie la instancia y debería iniciarse.
EL PASO 10 ES IMPORTANTE : etiquete el nuevo volumen con "e2label" como se mencionó anteriormente, o la instancia parecerá arrancar en aws pero no pasará la verificación de conexión.
fuente
Ninguna de las otras soluciones funcionará si el volumen se usa como dispositivo raíz (de arranque).
Al disco recién creado le falta la partición de arranque, por lo que necesitaría tener GRUB instalado y algunos indicadores configurados correctamente antes de que una instancia pueda usarlo como volumen raíz.
Mi solución (a partir de hoy, trabajando ) para reducir un volumen raíz es:
Antecedentes: tenemos una instancia A, cuyo volumen raíz queremos reducir. Llamemos a este volumen VA. Queremos reducir el VA de 30 GB a 10 GB
NOTA: Los siguientes pasos se toman principalmente de la solución de @bill:
Detenga la instancia que desea cambiar de tamaño (A).
Cree una instantánea del volumen VA y luego cree un volumen "SSD de uso general" a partir de esa instantánea. Este volumen lo llamaremos VASNAP.
Gire una nueva instancia con amazon Linux, llamaremos a esta instancia C. Solo usaremos esta instancia para copiar el contenido de VASNAP a VB. Probablemente también podríamos usar la instancia A para realizar estos pasos, pero prefiero hacerlo en una máquina independiente.
Adjunte los siguientes volúmenes a la instancia C. / dev / xvdf para VB. / dev / xvdg para VASNAP.
Reinicie la instancia C.
Inicie sesión en la instancia C a través de SSH.
Cree estos nuevos directorios:
mkdir /source /target
mkfs.ext4 /dev/xvdf1
Si no obtiene errores, continúe con el Paso 11. De lo contrario, si no los tiene
/dev/xvdf1
, debe crear la partición haciendo lo siguiente i-vii:i) Si
/dev/xvdf1
no existe por alguna razón, debe crearlo. Primero ingrese:sudo fdisk /dev/xvdf
.ii) Limpie el disco ingresando:
wipefs
iii) Cree una nueva partición ingresando:
n
iv) Ingrese
p
para crear una partición primariav) Siga presionando enter para continuar con la configuración predeterminada.
vi) Cuando solicite un comando nuevamente, ingrese
w
para escribir los cambios y salga.vii) Verifique que tiene la
/dev/xvdf1
partición haciendo:lsblk
Deberías ver algo como:
Ahora proceda al Paso 11.
mount -t ext4 /dev/xvdf1 /target
e2label /dev/xvdf1 /
mount -t ext4 /dev/xvdg1 /source
rsync -vaxSHAX /source/ /target
Nota: no hay "/" siguiente "/ target". Además, puede haber algunos errores sobre enlaces simbólicos y atributos, pero el cambio de tamaño aún fue exitoso
umount /target
De vuelta en la consola de AWS: desconecte VB de la instancia C y también desconecte VA de A.
Adjunte el nuevo volumen de tamaño (VB) a la instancia como: "/ dev / xvda"
Arranque instancia A, ahora su dispositivo raíz es de 10 GB :)
Elimine ambas instancias B y C, y también todos los volúmenes excepto VB, que ahora es el volumen raíz de la instancia A.
fuente
/dev/sda1
lugar de/dev/xvda
@RubenSerrate?Los siguientes pasos me funcionaron
Paso 1. Cree una instantánea del volumen de ebs raíz y cree un nuevo volumen a partir de la instantánea (llamemos a esto copia de volumen)
Paso 2. Cree una nueva instancia con el volumen raíz de ebs con el tamaño deseado. (Llamemos a esto volumen redimensionado) Este volumen ebs tendrá la partición correcta para el arranque. (Crear un nuevo volumen de ebs desde cero no funcionó para mí)
Paso 3. Adjunte el cambio de tamaño y la copia de volumen a una instancia.
Paso 4. Formatee el cambio de tamaño del volumen.
Nota: asegúrese de que el volumen de la partición
/dev/xvdf1
no se ingrese/dev/xvdf
Paso 5. Monte el cambio de tamaño del volumen y la copia del volumen mkdir / mnt / copy mkdir / mnt / resize
Paso 6. Copie archivos
Paso 7. Asegúrese de que e2label sea el mismo que el volumen raíz
Paso 8. Actualice grub.conf en volume-copy para que coincida con el nuevo volumen udid
Busque y reemplace uudid en /boot/grub/grub.cfg
Paso 9. Desmontar volúmenes
Paso 10. Adjunte un nuevo volumen ebs redimensionado a instancia / dev / sda1
fuente
blkid
sinsudo
retornos resultados en caché sin validarlos. Entonces parecerá que el UUID no ha cambiado.Aquí hay un enfoque alternativo;
Adjunte y monte el antiguo volumen EBS en una instancia EC2 en ejecución. Si desea copiar un volumen de arranque, es mejor hacerlo en una instancia diferente, con el volumen anterior montado como datos, no con el volumen utilizado como un sistema en vivo.
Cree un nuevo volumen EBS del tamaño deseado.
Adjunte el nuevo volumen a la instancia y formatee (cuidadosamente) un nuevo sistema de archivos en él (por ejemplo, usando mkfs). Móntalo.
Copie el contenido del sistema de archivos anterior del volumen anterior al nuevo volumen:
Desmonta el nuevo volumen y sepáralo de la instancia.
Si estaba copiando el sistema de archivos raíz, entonces:
Cree una instantánea de EBS del nuevo volumen.
Registre la instantánea como una nueva AMI.
fuente
El siguiente artículo es un tutorial bueno y directo sobre cómo disminuir el tamaño del volumen de EBS. Tiene una guía paso a paso y capturas de pantalla fáciles de seguir.
Disminuya el tamaño del volumen EBS en su instancia EC2
fuente