Intento fallido de guión separado

Intento fallido de guión separado

Tengo una plantilla de VM que uso para construir otras VM usando virt-clone/KVM. La plantilla de VM es de 4 GB para ahorrar espacio. El almacenamiento para las máquinas virtuales que construyo a partir de esto está en objetivos iSCSI o volúmenes LVM (según la función), y los tamaños de sus sistemas de archivos difieren según la función de la máquina.

Después de crear una nueva máquina virtual a partir de la plantilla, tengo que cambiar el tamaño de la partición raíz si estoy creando algo que necesitará más de 4 GB de disco. Esto funciona bien cuando se usa parted de forma interactiva, pero no con un guión. Al intentar eliminar el sistema de archivos, me preguntan si quiero continuar a pesar de usar '-s'

El siguiente resultado muestra un intento fallido de script y una sesión interactiva funcional para lograrlo.

¿Cuál es la mejor manera de cambiar el tamaño de mi partición raíz después de la clonación que se pueda programar simplemente con un script?

Intento fallido de guión separado

Partición después de la clonación

# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4294MB  4293MB  primary  ext4         boot

Intento de eliminación del script

# parted /dev/vda -s rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
#

Partición después de una eliminación fallida

# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4294MB  4293MB  primary  ext4         boot

Trabajar con cambio de tamaño interactivo (seguido de reinicio)

Partición antes de la eliminación

# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4294MB  4293MB  primary  ext4         boot

Eliminación y creación de una nueva partición que utiliza todo el disco.

# parted /dev/vda
(parted) rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
Yes/No? y
Error: Partition(s) 1 on /dev/vda have been written, but we have been unable to
inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before
making further changes.
Ignore/Cancel? I
(parted) mkpart p ext4 1 -1
(parted)

# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  10.7GB  10.7GB  primary  ext4

cambiar el tamaño del sistema de archivos

# resize2fs /dev/vda1
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vda1 is now 2621184 blocks long.

# df -kh  .
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       9.8G  1.6G  7.9G  17% /

Respuesta1

He descubierto cómo hacer esto. La clave es kpartx para que el LVM sea utilizable por parte fuera de la VM (por ejemplo, en el host del hipervisor). Luego modifica el tamaño de la partición, luego inicia el invitado y aumenta el sistema de archivos.

Entonces, si tiene un invitado llamado TESTVM que tiene su almacenamiento en /dev/VMS/VIRT-TESTVM, haría lo siguiente en el host del hipervisor:

# kpartx -a /dev/VMS/VIRT-TESTVM
# parted /dev/VMS/VIRT-TESTVM rm 1
# parted /dev/VMS/VIRT-TESTVM mkpart -a optimal p ext4 0% 100% 
# kpartx -d /dev/VMS/VIRT-TESTVM

Luego simplemente inicie la máquina, inicie sesión y haga

# resize2fs /dev/vda1 

Reinicie nuevamente solo para estar seguro.

información relacionada