Redimensionamento automático do disco VM

Redimensionamento automático do disco VM

Eu tenho uma configuração KVM/Qemu que funciona muito bem. Agora quero agilizar o provisionamento de novas VMs.

As duas maneiras óbvias são clonar um disco existente ou instalar do zero (com um preseed/kickstart automatizado).

Em meus testes, a instalação com preseed/kickstart leva pelo menos alguns minutos desde a criação até a instalação e execução (mesmo com espelhos locais). O resultado é ótimo, mas demora muito.

A clonagem é obviamente muito mais rápida, mas cria problemas assim que você precisa de um disco maior que o de origem.

Agora, se fosse apenas uma coisa única, teria sido trivial inicializá-lo e expandir o disco manualmente. No entanto, pretendo fazer isso de forma automatizada na primeira inicialização.

Existem basicamente três tarefas que precisam ser executadas:

  • Expanda o disco (fdisk/cfdisk etc)
  • Redimensione o pool de volumes (no caso de LVM)
  • Expanda o sistema de arquivos real

Embora fosse possível criar um script para isso, eu queria abordá-lo aqui, pois duvido que seja o único que queira fazer isso de forma automatizada. A coisa mais próxima que encontrei éraspi-configpara o Raspberry Pi, que oferece uma ferramenta automatizada para isso.

É claro que eu poderia retirar o código do raspi-config, mas ele faz muitas suposições, então esperava que houvesse uma ferramenta mais universal disponível.

Responder1

libguestfspode estar à altura da tarefa, mas não pode fazê-lo no lugar, citação:

Copy olddisk to newdisk, extending one of the guest's partitions to fill the extra 5GB of space.

    virt-filesystems --long -h --all -a olddisk

    truncate -r olddisk newdisk
    truncate -s +5G newdisk

    # Note "/dev/sda2" is a partition inside the "olddisk" file.
    virt-resize --expand /dev/sda2 olddisk newdisk

Fazer isso como etapa de clonagem deve funcionar.

Responder2

Acontece que growroot, que faz parteInicialização na nuvemposso fazer isso. Para um exemplo completo de como isso funciona, dê uma olhada na minha implementação emvmprep.

informação relacionada