Olá a todos.
Depois da compra da vmware pela broadcom que causou a fuga em massa das plataformas de virtualização vmware para outro tipo de plataformas (por exemplo kvm/qemu – onde o proxmox se inclui) tenho visto algumas duvidas sobre a forma que o QEMU gere o espaço das imagens em disco, muitas delas por desconhecer a capacidade do conceito de gold image que também se aplica a este tipo de plataformas.
Em primeiro lugar é importante se saber o que é o QEMU . O QEMU é um emulador e virtualizador opensource que permite a execução de sistemas operativos e programas para diferentes arquiteturas de hardware em um sistema host. O QEMU alavanca a utilização de extensões existentes em processadores X86_64 para virtualização (o chamado KVM/AVM).
Se observarem os vossos servidores ou homelabs proxmox, ao nível de consola, quando tem um servidor virtual em execução, o que está a correr por baixo são binários QEMU.
Outro dos conceitos importantes no QEMU, e em virtualização em geral, é o uso de “gold images” ou imagens douradas. Este conceito refere-se a uma imagem de disco base, completamente configurada, a partir da qual podem ser criadas outras imagens em camadas. Utilizando imagens de disco em camadas baseadas em uma gold image, podemos poupar espaço de armazenamento e melhorar a performance. O post desta semana irá explorar estes conceitos e apresenta as melhores práticas para otimização no uso de imagens de disco lidas pelo QEMU.
O que é uma “Gold Image”?
Uma gold image é uma imagem de disco que serve como uma base padrão para a criação de múltiplas máquinas virtuais (VMs). Esta imagem é configurada com um sistema operativo e softwares necessários, representando um estado inicial ideal para novos ambientes. Pode-se aplicar em ambientes Windows, Linux e *BSD’s, sendo perfeitamente suportado em todos.
A criação de uma gold image envolve os seguintes passos:
- Instalação do Sistema Operativo: Instalem um sistema operativo limpo e atualizem-o com os últimos patches e atualizações.
- Instalação de Softwares Necessários: Incluam todos os softwares e ferramentas padrão que serão utilizados em todas as VMs derivadas desta imagem.
- Configuração: Ajuste configurações de sistema, rede, segurança, etc., conforme necessário para o ambiente alvo.
- Otimização: Realizem otimizações adicionais, como limpeza de arquivos temporários, desfragmentação (em sistemas que suportam) e ajustes de desempenho.
- Conversão e Compressão: Converta a imagem para um formato eficiente e, se necessário, comprimam-a para poupar espaço.
Utilização de Imagens de Disco em Camadas
No QEMU, uma das formas de otimizar o uso de gold images é através de imagens de disco em camadas. Estas imagens são baseadas na gold image, mas armazenam apenas as diferenças (ou deltas) feitas em relação a ela. Os principais benefícios são:
- Economia de Espaço: Como as imagens em camadas só armazenam as alterações, há uma significativa redução no espaço de armazenamento utilizado.
- Melhoria de Performance: A leitura da gold image (base) pode ser cached com muita eficiência, reduzindo o tempo de acesso ao disco.
- Facilidade de Gestão: Atualizações ou correções podem ser aplicadas na gold image e automaticamente refletidas nas imagens em camadas, simplificando a gestão de VMs.
Criando e Utilizando Imagens em Camadas no QEMU
1. Criação da Gold Image:
qemu-img create -f qcow2 gold-image.qcow2 20G qemu-system-x86_64 -drive file=gold-image.qcow2,format=qcow2,if=virtio -m 2048 -enable-kvm -boot d -cdrom path/to/installer.iso
Neste ponto, instalamos e configuramos o sistema operativo no ficheiro`gold-image.qcow2`.
2. Criando uma Imagem em Camadas:
qemu-img create -f qcow2 -b gold-image.qcow2 layered-image.qcow2
Este comando cria `layered-image.qcow2` como uma camada baseada na `gold-image.qcow2`.
Executando uma VM com a Imagem em Camadas (neste caso em consola – adaptar na configuração do proxmox webui ou no ficheiro de configuração da VM em si):
qemu-system-x86_64 -drive file=layered-image.qcow2,format=qcow2,if=virtio -m 2048 -enable-kvm
A VM utilizará `layered-image.qcow2`, que contém as alterações feitas em relação à gold image.
Otimização de Espaço e Performance
Compactação e Desfragmentação de Imagens QCOW2
As imagens de disco no formato QCOW2 suportam compactação e outras funcionalidades avançadas que ajudam a poupar espaço. Para compactar uma imagem de disco QCOW2, pode-se usar:
qemu-img convert -O qcow2 source-image.qcow2 compressed-image.qcow2
Utilização de Cache
A configuração de cache melhora a performance de leitura/escrita em discos virtuais. O QEMU oferece várias opções de cache que podem ser configuradas ao iniciar uma VM:
Cache de escrita: `cache=writethrough` (seguro, mas mais lento) ou `cache=writeback` (mais rápido, mas com risco de perda de dados em caso de falha).
Cache de leitura: `cache=none` (direto para o disco, útil em dispositivos SSD).
qemu-system-x86_64 -drive file=layered-image.qcow2,format=qcow2,if=virtio,cache=writeback -m 2048 -enable-kvm
Copy-on-Write (COW)
Outra coisa fundamental que o QEMU suporta são formatos diferentes de disco virtual. Um dos mais versáteis é o formato QCOW2 pois suporta copy-on-write, permitindo que as alterações sejam gravadas apenas quando necessário, economizando espaço e melhorando a performance:
qemu-img create -f qcow2 -o backing_file=gold-image.qcow2 new-layered-image.qcow2
Benefícios e Considerações
Benefícios:
- Eficiência de Armazenamento: As imagens em camadas compartilham a mesma base, resultando em uma grande economia de espaço.
- Performance Aprimorada: O acesso à imagem base pode ser otimizado, e o uso de cache pode acelerar o desempenho da VM.
- Facilidade de Atualização: Atualizar a gold image reflete automaticamente em todas as imagens em camadas, simplificando a manutenção e gestão de múltiplas VMs.
Considerações
- Dependência da Gold Image: Se a gold image for corrompida ou deletada, todas as imagens em camadas associadas serão afetadas.
- Gestão de Snapshots: O uso de snapshots pode complicar o gerenciamento das imagens, pois cada snapshot representa um estado incremental.
- Performance de Gravação:Em alguns casos, a performance de gravação pode ser afetada devido ao overhead de manutenção das diferenças entre a imagem em camadas e a gold image.
- Patching e atualizações ao sistema operativo: As alterações de core ao sistema operativo, por exemplo patching, deverão ser sempre efetuadas na gold image. O recomendado nestes casos, é que as VM’s que estejam a utilizar a gold image como base, sejam desligadas, feito um backup e consequente patching ao sistema operativo da gold image original, e em seguida levantar as VM’s que dependem desta gold image.
Melhores Práticas
Backups regulares.
Realizem backups regulares da gold image e das imagens em camadas. Utilizem ferramentas de backup que suportem QEMU e formatos QCOW2 para garantir a consistência e a segurança dos dados.
Monitorização de Desempenho.
Monitorizem constantemente o desempenho das VMs e ajuste as configurações de cache e discos conforme necessário. Ferramentas como `iostat`, `vmstat` e a monitorização interna do QEMU irão provar ser úteis.
Manutenção de Imagens
- Compactação Regular: Utilizem o `qemu-img` para compactar regularmente as imagens de disco.
- Desfragmentação: Embora menos comum em sistemas de arquivos modernos, desfragmentar periodicamente pode melhorar a performance.
- Limpeza de Dados Temporários: Realizem limpezas regulares de arquivos temporários e logs dentro das VMs para evitar bloating desnecessário das imagens.
Segurança
Mantenham a a segurança das imagens de disco aplicando patches e atualizações regularmente na gold image. Utilize práticas de segurança robustas para proteger contra acesso não autorizado.
Conclusão
Chegamos ao fim de mais um post semanal. Neste, foi demonstrado que o uso de gold images e imagens de disco em camadas no QEMU é uma estratégia eficaz para otimizar o uso de espaço de armazenamento e melhorar a performance das VMs. Ao adotarmos estas simples práticas recomendadas, como compactação regular, configuração de cache adequada e manutenção de backups, é possível maximizar os benefícios desta abordagem.
E com uma gestão eficiente, a utilização de gold images podemos simplificar significativamente a administração de ambientes virtualizados, oferecendo uma solução escalável e robusta para diferentes necessidades de TI.
Até a próxima semana. E já sabem, se alguma coisa estiver menos correta, é falar comigo para que proceda a correção.
Abraço,
Nuno