Como creditar manualmente uma VM como o vmbuilder faz

0

Estou experimentando VMs baseadas em KVM no meu servidor doméstico. O host executa o Ubuntu Server 16.04.1 LTS e os convidados também.

Eu consegui criar um convidado usando o vmbuilder. Ele gera uma imagem qcow2, que depois converti em imagem bruta em um volume lógico LVM para melhorar o desempenho. O tamanho total dessa imagem é de aproximadamente 900MB e funciona bem para o que eu preciso.

No entanto, quando eu manualmente criar uma VM e instalar o Ubuntu do ISO do servidor Ubuntu nele, eu sou capaz de expor meu volume lógico para o convidado VM como um dispositivo bruto de bloco em vez de imagem bruta do arquivo. Nos meus testes, isso geralmente parece melhorar ainda mais o desempenho do disco, por não margens insignificantes, dependendo de como eu testo. No entanto, esta VM não é tão simples (instalada 1,8 GB ou mais) e o tempo de inicialização é muito mais lento (a VM de dispositivo de bloco criada pelo vmbuilder inicializa em cerca de 5 segundos, a VM baseada em arquivo que eu instalei manualmente em aproximadamente 15 segundos) .

Portanto, meu objetivo é ter uma VM que seja como a instalação do vmbuilder, menos pacotes, inicialização rápida, etc., mas que ela use um dispositivo de bloco bruto como armazenamento em vez da imagem bruta baseada em arquivo.

Perguntas:

  1. Como a VM criada pelo vmbuilder é diferente da instalação manual?

  2. Eu vejo que o Ubuntu (costumava) ter o Ubuntu JeOS e ver referências que ele pode ser instalado a partir do Server iso, mas não consigo descobrir como. Isso ainda é uma opção? Se sim, é isso que o vmbuilder instala?

  3. Como posso criar manualmente um sistema semelhante a um vmbuilder OU como converter a imagem qcow2 para um bloco não processado em vez de uma imagem bruta de arquivo.

por PhilippNagel 25.10.2016 / 18:05

1 resposta

0

Isso não obteve uma resposta, mas consegui encontrar uma solução parcial. O que eu encontrei é este artigo , que descreve como converta a imagem Qcow2 em um dispositivo de bloco bruto, em vez de uma imagem de arquivo bruta.

etapas básicas:

  1. a VM precisa estar desativada
  2. Converta qcow2 em arquivo de imagem raw usando:

    qemu-img convert [qcow2] [rawimg]

  3. Obter tamanho da imagem bruta em bytes:

    ls -l [rawimg]

    123456789

  4. Crie LV e corresponda exatamente ao tamanho da imagem bruta:

    lvcreate -L 123456789b -n [lvname] [vgroup]

  5. Escreva uma imagem bruta para LV:

    dd if = [rawimg] de = [caminho / para / lv]

Altere a definição XML da VM de acordo, por exemplo, de:

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none'/>
  <source file='/srv/virtual/vm_web/tmp5GWO4q.qcow2'/>
  <target dev='hda' bus='virtio'/>
</disk>

para:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none'/>
  <source dev='/dev/vgroup/lv_disk'/>
  <target dev='vda' bus='virtio'/>
</disk>
    
por 01.11.2016 / 19:14