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
- Cree una nueva instancia de ec2, B, con el mismo sistema operativo que la instancia A. Como almacenamiento, elija un volumen que sea del mismo tipo que VA, pero con un tamaño de 10 GB. (o cualquiera que sea su tamaño objetivo). Así que ahora tenemos una instancia B que usa este nuevo volumen (llamémoslo VB) como volumen raíz.
- Una vez que se ejecuta la nueva instancia (B). Deténgalo y separe su volumen raíz (VB).
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
- Formatee la partición principal de VB con un sistema de archivos ext4:
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 primaria
v) 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:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
Ahora proceda al Paso 11.
- Montarlo en este directorio:
mount -t ext4 /dev/xvdf1 /target
- Esto es muy importante, el sistema de archivos necesita una etiqueta e2 para que Linux lo reconozca y arranque, use "e2label / dev / xvda1" en una instancia activa para ver cuál debería ser, en este caso la etiqueta es: "/"
e2label /dev/xvdf1 /
- Monte VASNAP en / fuente:
mount -t ext4 /dev/xvdg1 /source
- Copia los contenidos:
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
- Desmontar VB:
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.