O que é KVM e Virsh
KVM (Kernel-based Virtual Machine) e uma tecnologia de virtualização integrada ao kernel Linux desde 2007. Ele transforma o Linux em um hypervisor completo, permitindo rodar VMs com performance próxima ao hardware nativo. O Virsh e a ferramenta de linha de comando para gerenciar essas VMs sem precisar de interface gráfica.
Juntos, KVM e Virsh formam uma pilha de virtualização madura, estável e já instalada na maioria dos sistemas Linux modernos. Ao contrario do Vagrant, que é uma camada de abstração por cima de VirtualBox, VMware ou HyperV, KVM opera diretamente com o suporte de virtualização do processador (VT-x ou AMD-V).
Para desenvolvedores que usam Vagrant para criar ambientes isolados de desenvolvimento, KVM e Virsh oferecem a mesma funcionalidade com mais controle, menor overhead e sem dependência de Ruby ou VirtualBox.
Como funciona
KVM converte o kernel Linux em um hypervisor do tipo 1 (bare-metal): as VMs rodam diretamente sobre o hardware virtualizado pelo kernel, sem uma camada intermediaria. Isso resulta em performance significativamente melhor que hypervisores do tipo 2 como VirtualBox.
O Virsh e o cliente da API do libvirt, que por sua vez e uma camada de abstração sobre KVM. Com Virsh você pode criar, iniciar, pausar, clonar e destruir VMs via linha de comando, exatamente como você faria com vagrant up, vagrant halt e vagrant destroy.
O ciclo de vida de uma VM com Virsh e: definir (XML de configuração), instalar o SÓ, criar snapshot base, clonar quando precisar de um novo ambiente. Cada desenvolvedor no time clona a imagem base em segundos, sem baixar arquivos pesados do Vagrant Cloud.
Antes de instalar KVM, verifique se a virtualização esta habilitada no processador: grep -E 'vmx|svm' /proc/cpuinfo. Se retornar resultado, o hardware suporta KVM.
Principais vantagens sobre o Vagrant
A motivação para abandonar o Vagrant fica clara quando você compara os dois:
- Performance: VMs KVM tem acesso direto ao hardware. O overhead e mínimo comparado ao VirtualBox que o Vagrant usa por padrão.
- Sem Ruby: o Vagrant precisa de Ruby e de um ecosistema de gems. KVM e Virsh rodam com o que já esta no Linux.
- Boot mais rápido: VMs KVM iniciam em segundos.
- Snapshots nativos: Virsh suporta snapshots com um comando. Rollback para estado limpo e instantâneo.
- Integração com o ecossistema Linux: networking via bridge ou NAT usando ferramentas que você já conhece.
A principal desvantagem e que o Vagrantfile e mais simples para iniciantes. Mas para devs Linux com familiaridade com o terminal, Virsh compensa o aprendizado inicial.
Como começar: instalação passo a passo
Veja como instalar KVM e Virsh em um sistema Debian (ou Ubuntu).
Passo 1 - Instalar os pacotes:
sudo apt update
sudo apt install -y qemu-system-x86 libvirt-daemon-system \
libvirt-clients bridge-utils virt-manager
# Adicionar seu usuário ao grupo libvirt
sudo usermod -aG libvirt $(whoami)
newgrp libvirt
Passo 2 - Verificar que o serviço esta ativo:
sudo systemctl enable --now libvirtd
systemctl status libvirtd
Passo 3 - Baixar imagem cloud do Debian 12:
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2 \
-O /var/lib/libvirt/images/debian12-base.qcow2
O diretório /var/lib/libvirt/images/ pertence ao root e ao grupo libvirt. Certifique-se de que seu usuário esta no grupo libvirt antes de criar VMs.
Exemplo prático: criar e acessar uma VM
Com a imagem base baixada, você pode criar uma VM em segundos. O fluxo abaixo cria uma VM Debian 12 com 2 CPUs e 2GB de RAM.
# Criar disco a partir da imagem base
qemu-img create -f qcow2 -b /var/lib/libvirt/images/debian12-base.qcow2 \
-F qcow2 /var/lib/libvirt/images/minha-vm.qcow2 20G
# Criar cloud-init com usuário e SSH
cat > user-data.yaml <Crie um snapshot logo após configurar a VM: virsh snapshot-create-as minha-vm --name base-configurada. Rollback instantâneo: virsh snapshot-revert minha-vm base-configurada.
Comparação com alternativas
O ecossistema de virtualização para devs tem varias opcoes:
- Vagrant: melhor para times que querem Vagrantfile versionado. Mais pesado, mais dependências.
- Docker: para serviços isolados, Docker e mais simples. Use VM quando precisar de um SÓ completo com kernel próprio.
- VirtualBox: interface gráfica, performance inferior ao KVM, não funciona bem em servidores sem GPU.
- Multipass: wrapper simples sobre KVM/HyperV para Ubuntu. Mais fácil que Virsh puro, menos flexível.
- KVM + Virsh: máxima performance e controle, curva maior, ideal para quem domina Linux.
Pontos positivos e limitações
Pontos positivos: performance próxima ao metal, sem dependências externas, snapshots nativos, networking flexível e custo zero.
Limitações: curva inicial mais inclinada que o Vagrant. O XML de configuração do Virsh e verboso. Exclusivo do Linux - não funciona em macOS ou Windows diretamente.
Para times heterogéneos com macOS, considere usar Lima no Mac (QEMU) e KVM no Linux, com scripts de bootstrap compartilhados entre os dois ambientes.
Nunca delete a imagem base qcow2 enquanto VMs filhas ainda existem. Todas as VMs que dependem da base vao corromper. Destrua as VMs antes de remover a base.
Casos de uso reais
Quando KVM e Virsh fazem mais sentido que o Vagrant:
- Times de DevOps/SRE: que testam configurações de servidor (nginx, systemd, iptables) em ambientes limpos.
- Desenvolvimento de kernels ou drivers: testar módulos do kernel em VMs KVM e mais seguro que em hardware real.
- CI em servidor Linux: pipelines que precisam de VMs para testes de integração se beneficiam da performance do KVM.
- Emular infraestrutura de produção: VMs KVM com networking bridge, ideal para testar configurações de rede complexas.
Dicas e boas práticas
Use imagens cloud (qcow2) em vez de ISOs de instalação. Elas já vem configuradas para cloud-init e eliminam a instalação manual. Debian, Ubuntu, Fedora e Alpine disponibilizam imagens cloud oficiais.
Crie aliases para os comandos mais usados: vm-create, vm-start, vm-ssh, vm-destroy. Isso aproxima a experiência da simplicidade do Vagrant sem abrir mao do controle.
Combine KVM com Ansible: criar VM com Virsh, esperar SSH disponível, rodar playbook Ansible. Resultado: ambiente idêntico ao de produção em minutos, totalmente scriptado e versionavel.
Monitore o uso de disco em /var/lib/libvirt/images/. VMs com snapshots podem crescer rapidamente. Use qemu-img info para ver o tamanho real de cada disco.
Vale a pena migrar?
Se você usa Vagrant no Linux e tem familiaridade com terminal e administração de sistemas, a migração para KVM e Virsh vale o esforço. O ganho de performance e perceptivel, a redução de dependências simplifica o setup e o controle sobre networking e armazenamento e muito maior.
Se você esta começando ou usa macOS, o Vagrant ainda e mais simples. Mas para devs Linux que dominam o terminal, KVM e Virsh são ferramentas que vao durar muito mais tempo sem surpresas.
O próximo passo: instale os pacotes, baixe uma imagem cloud do Debian e crie sua primeira VM com Virsh. A diferença de boot e performance vai ficar evidente imediatamente.
Comentários
Deixar um comentárioVocê precisa ter uma conta no CuritibaBlog para comentar.