Este documento organiza a instalação e configuração do KVM/libvirt em uma estação de trabalho com Ubuntu 24.04, com foco em uso local, gerenciamento via virt-manager e armazenamento em partição dedicada fora do diretório padrão do libvirt .
Padronizar a preparação de uma estação de trabalho para virtualização com KVM/libvirt, incluindo instalação dos pacotes, criação de pools de armazenamento, ajuste de permissões no AppArmor e provisionamento inicial de máquinas virtuais .
Este guia contempla as seguintes atividades :
/datastore.A implementação foi realizada em uma estação identificada como kvm-03, utilizando Ubuntu 24.04 como sistema base . O armazenamento foi separado em partições distintas, com uma partição dedicada montada em /datastore para uso com imagens, templates e ISOs .
| Item | Detalhe |
|---|---|
| Host | kvm-03 |
| Sistema operacional | Ubuntu 24.04 |
| Perfil de uso | Estação de trabalho com virt-manager |
| Armazenamento dedicado | /datastore em partição separada |
sudo apt install virt-manager libosinfo-bin genisoimage ovmf guestfs-tools -y
virsh version --daemon
No ambiente documentado, o virsh reportou libvirt 10.0.0 e hypervisor QEMU 8.2.2 .
sudo usermod -aG kvm $USER
sudo systemctl reboot
Observação: após alteração de grupos, é necessário reiniciar a sessão ou o sistema para aplicar as permissões corretamente.
Durante a instalação do sistema, foi reservada uma partição exclusiva para os dados das VMs, evitando o uso do caminho padrão /var/lib/libvirt/images .
df -h | grep nvme
Exemplo do ambiente de referência :
| Partição | Montagem | Observação |
|---|---|---|
/dev/nvme0n1p2 |
/ |
Sistema operacional |
/dev/nvme0n1p3 |
/home |
Dados do usuário |
/dev/nvme0n1p4 |
/datastore |
Armazenamento das VMs |
/dev/nvme0n1p1 |
/boot/efi |
Boot UEFI |
sudo mkdir /datastore/{images,templates,isos}
| Diretório | Finalidade |
|---|---|
images |
Discos virtuais das máquinas (qcow2) |
templates |
Imagens base para clonagem e automação |
isos |
Mídias de instalação dos sistemas operacionais |
A definição de pools facilita a administração das imagens diretamente pelo libvirt e pelo virt-manager .
virsh pool-define-as --name images --type dir --target /datastore/images
virsh pool-define-as --name templates --type dir --target /datastore/templates
virsh pool-define-as --name isos --type dir --target /datastore/isos
virsh pool-autostart images
virsh pool-autostart templates
virsh pool-autostart isos
virsh pool-start images
virsh pool-start templates
virsh pool-start isos
virsh pool-list --all
virsh pool-info images
No exemplo documentado, o pool images foi criado com estado running, persistência habilitada e capacidade aproximada de 377.24 GiB .
Como os discos e ISOs ficam fora do caminho padrão do libvirt, é necessário liberar explicitamente o acesso aos diretórios em /datastore .
sudo mkdir -p /etc/apparmor.d/local/abstractions
sudo touch /etc/apparmor.d/local/abstractions/libvirt-qemu
sudo vim /etc/apparmor.d/local/abstractions/libvirt-qemu
/datastore/images/ r,
/datastore/images/** rwk,
/datastore/templates/ r,
/datastore/templates/** rwk,
/datastore/isos/ r,
/datastore/isos/** r,
sudo systemctl reload apparmor
sudo systemctl restart libvirtd
sudo journalctl -xe | grep apparmor
Após abrir o virt-manager, o pool default foi iniciado automaticamente no ambiente de referência, apontando para /var/lib/libvirt/images . Como a estratégia adotada foi usar apenas os pools criados em /datastore, o conteúdo original recomenda desativar e remover o pool padrão .
virsh pool-list
virsh pool-info default
virsh pool-dumpxml default | grep path
virsh pool-destroy default
virsh pool-undefine default
virsh pool-delete default
Atenção: antes de remover o pool
default, confirmar que não existem discos importantes armazenados em/var/lib/libvirt/images.
Para instalação de uma VM Ubuntu, o documento original usa a imagem do Ubuntu 24.04.4 Desktop .
sudo wget https://deb.campolargo.pr.gov.br/ubuntu/releases/24.04.4/ubuntu-24.04.4-desktop-amd64.iso -P ~/kvm/isos
osinfo-query os | grep ubuntu
Observação: como os pools definidos usam
/datastore/isos, convém padronizar o caminho de download da ISO para esse mesmo diretório, evitando divergência operacional .
O exemplo original prevê uma VM com 2 vCPUs, 4 GiB de RAM, 32 GiB de disco QCOW2, CPU em modo host-passthrough e rede VirtIO .
sudo virt-install \
--virt-type kvm \
--machine q35 \
--name ubuntu24 \
--description "Ubuntu Noble Numbat" \
--boot uefi \
--cdrom ~/kvm/isos/ubuntu-24.04.4-desktop-amd64.iso \
--os-variant ubuntu24.04 \
--disk pool=images,size=32,format=qcow2,bus=virtio,cache=none \
--memory 4096 \
--vcpus 2 \
--cpu host-passthrough \
--network=default,model=virtio \
--graphics spice \
--noautoconsole
Nota operacional: após a criação, o procedimento depende da abertura do
virt-managerpara continuidade da instalação gráfica .
sudo virt-install \
--name win11 \
--os-variant win11 \
--virt-type kvm \
--machine q35 \
--vcpus 4 \
--memory 8192 \
--boot uefi,loader_secure=yes \
--tpm backend.type=emulator,backend.version=2.0,model=tpm-tis \
--cpu host-passthrough \
--disk pool=images,size=64,format=qcow2,bus=virtio,cache=none \
--cdrom ~/kvm/isos/Win11_22H2_English_x64v1.iso \
--disk path=~/kvm/isos/virtio-win-0.1.285.iso,device=cdrom \
--network network=default,model=virtio \
--graphics spice \
--noautoconsole
O documento também referencia o download do driver VirtIO para Windows no projeto virtio-win .
Para publicação em base de conhecimento, o conteúdo foi reorganizado para leitura mais rápida e manutenção mais simples, preservando os comandos principais e separando melhor contexto, armazenamento, pools, permissões e criação de VMs .
Sugestão de organização da página dentro da base de conhecimento:
Infraestrutura
└── Virtualização
├── KVM no Ubuntu 24.04
├── Pools de armazenamento no libvirt
├── Criação de VMs com virt-install
├── Permissões AppArmor para libvirt
└── Gestão de imagens ISO e templates
Antes de publicar em definitivo, vale revisar os seguintes pontos do conteúdo original :
/datastore, mas o download da ISO e os exemplos de virt-install usam ~/kvm/isos.home, mas a estrutura configurada utiliza /datastore.virt-manager, mas não menciona explicitamente libvirt-daemon-system; convém validar se a estação já possuía esse componente ou se ele entra como dependência .virsh pool-delete default deve ser aplicado com cautela após confirmar ausência de artefatos úteis no pool padrão .# Instalar ferramentas
sudo apt install virt-manager libosinfo-bin genisoimage ovmf guestfs-tools -y
# Criar diretórios
sudo mkdir /datastore/{images,templates,isos}
# Criar pools
virsh pool-define-as --name images --type dir --target /datastore/images
virsh pool-define-as --name templates --type dir --target /datastore/templates
virsh pool-define-as --name isos --type dir --target /datastore/isos
# Ativar pools
virsh pool-autostart images
virsh pool-autostart templates
virsh pool-autostart isos
virsh pool-start images
virsh pool-start templates
virsh pool-start isos