Eu tenho um modelo de VM que uso para construir outras VMs usando virt-clone/KVM. O modelo de VM tem 4 GB para economizar espaço. O armazenamento para VMs que eu construo a partir disso está em alvos iSCSI ou volumes LVM (dependendo da função), e seus tamanhos de sistema de arquivos diferem dependendo da função da máquina.
Depois de criar uma nova VM a partir do modelo, preciso redimensionar a partição raiz se estiver construindo algo que precisará de mais de 4 GB de disco. Isso funciona bem ao usar o parted interativamente, mas não com script. Ao tentar remover o sistema de arquivos, me perguntam se desejo continuar apesar de usar '-s'
A saída abaixo mostra uma tentativa de script com falha e uma sessão interativa funcional para conseguir isso.
Qual é a melhor maneira de redimensionar minha partição raiz pós-clone que pode ser simplesmente programada?
Tentativa de script parted falhada
Partição após clonagem
# 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
Tentativa de remoção de script
# parted /dev/vda -s rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
#
Partição após falha na remoção
# 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
Redimensionamento interativo funcional (seguido de reinicialização)
Particionar antes da remoção
# 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
Remoção e criação de nova partição que usa todo o 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
Redimensionamento do sistema de arquivos
# 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% /
Responder1
Eu descobri como fazer isso. A chave é kpartx para tornar o LVM utilizável por parte fora da VM (ou seja, no host do hipervisor). Em seguida, você modifica o tamanho da partição, inicializa o convidado e aumenta o sistema de arquivos.
Portanto, se você tiver um convidado chamado TESTVM com armazenamento em /dev/VMS/VIRT-TESTVM, faça o seguinte no host do 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
Em seguida, basta iniciar a máquina, fazer login e fazer
# resize2fs /dev/vda1
Reinicie novamente apenas para garantir a segurança.