![Como creditar manualmente uma VM como o vmbuilder faz](https://rvso.com/image/97227/Como%20creditar%20manualmente%20uma%20VM%20como%20o%20vmbuilder%20faz.png)
Estou experimentando VMs baseadas em KVM em meu servidor doméstico. O host executa o Ubuntu Server 16.04.1 LTS, e os convidados também.
Consegui criar um convidado usando vmbuilder. Ele gera uma imagem qcow2, que então converti em imagem bruta em um volume lógico LVM para melhorar o desempenho. O tamanho total desta imagem é de cerca de 900 MB e funciona bem para o que preciso.
No entanto, quando eu crio manualmente uma VM e instalo o Ubuntu a partir do ISO do servidor Ubuntu, sou capaz de expor meu volume lógico ao convidado da VM como um dispositivo bruto de bloco em vez de um arquivo de imagem bruta. Em meus testes, isso geralmente parece melhorar ainda mais o desempenho do disco, por margens não insignificantes, dependendo de como eu testo. No entanto, esta VM não é tão enxuta (1,8 GB instalada ou mais) e o tempo de inicialização é muito mais lento (a VM do dispositivo de bloco criada pelo vmbuilder inicializa em cerca de 5 segundos, a VM baseada em arquivo que instalei manualmente em cerca de 15 segundos) .
Portanto, meu objetivo é ter uma VM semelhante à que o vmbuilder instala, menos pacotes, inicialização rápida, etc., mas fazer com que ela use um dispositivo de bloco bruto como armazenamento em vez da imagem bruta baseada em arquivo.
Questões:
Qual a diferença entre a VM criada pelo vmbuilder e quando eu a instalo manualmente?
Vejo que o Ubuntu (costumava) ter Ubuntu JeOS e vejo referências de que ele pode ser instalado a partir da iso do servidor, mas não consigo descobrir como. Isso ainda é uma opção? Se sim, é isso que o vmbuilder instala?
Como posso criar um sistema semelhante ao vmbuilder manualmente OU como posso converter a imagem qcow2 em bloco bruto em vez de imagem de arquivo bruto.
Responder1
Isso não obteve resposta, mas consegui encontrar uma solução parcial. O que eu encontrei é issoartigo, que descreve como converter a imagem Qcow2 em um dispositivo de bloco bruto, em vez de uma imagem de arquivo bruto.
Etapas básicas:
- VM precisa estar desligada
Converta qcow2 em arquivo de imagem raw usando:
qemu-img converter [qcow2] [rawimg]
Obtenha o tamanho da imagem bruta em bytes:
ls -l [rawimg]
123456789
Crie LV e corresponda exatamente ao tamanho da imagem bruta:
lvcreate -L 123456789b -n [lvname] [vgroup]
Grave a imagem bruta no LV:
dd if=[rawimg] of=[caminho/para/lv]
Altere a definição XML da VM adequadamente, 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>