Como script parted para redimensionar a partição no sistema de arquivos raiz em execução?

3

Eu tenho um modelo de VM que uso para construir outras VMs usando virt-clone / KVM. O modelo da VM é de 4 GB para economizar espaço. O armazenamento para VMs que eu construo a partir disso é em destinos 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 eu estiver criando algo que precise 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 quero continuar apesar de usar '-s'

A saída abaixo mostra uma tentativa de script com falha e uma sessão interativa de trabalho para conseguir isso.

Qual é a melhor maneira de redimensionar meu post-clone de partição raiz que pode ser simplesmente roteirizado?

Tentativa de script com falha compartilhada

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 scripts

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

Partição após remoção com falha

# 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 de trabalho (seguido de reinicialização)

Partição 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% /
    
por Anonymouslemming 04.05.2015 / 14:48

1 resposta

2

Eu descobri como fazer isso. A chave é o kpartx para tornar o LVM utilizável por parted fora da VM (assim no host do Hypervisor). Então você modifica o tamanho da partição, então inicializa o convidado e aumenta o sistema de arquivos.

Portanto, se você tiver um convidado chamado TESTVM que tenha seu armazenamento em / dev / VMS / VIRT-TESTVM, faça o seguinte no host do hypervisor:

# 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 

Reinicialize novamente apenas para estar no lado seguro.

    
por 07.05.2015 / 18:17