O KVM (Kernel-based Virtual Machine) é a tecnologia de virtualização integrada no kernel do Linux. Num VPS Linux Infrawire, significa que o seu servidor se comporta como uma máquina real com o seu próprio kernel, e não como uma simples pasta isolada no sistema de outra pessoa. Este guia explica a diferença para as tecnologias de contentores e mostra como verificá-lo por si.
📋 Pré-requisitos
- Um VPS Linux (Ubuntu 24.04, Debian 12, AlmaLinux 9 ou Rocky Linux 9)
- Acesso SSH como root ou como utilizador com
sudo - Noções básicas de linha de comandos
1. Como funciona o KVM
O KVM transforma o kernel Linux do anfitrião físico num hipervisor. Cada máquina virtual é um processo normal gerido pelo QEMU, mas vê hardware emulado: CPU, RAM, disco e placa de rede. Graças às extensões de virtualização do processador (Intel VT-x, AMD-V), o código do convidado executa-se quase à velocidade nativa.
Dentro da VM instala um sistema operativo completo, com o seu próprio kernel, sistema de init e processos. Do seu ponto de vista, é um servidor dedicado.
2. KVM versus OpenVZ e LXC
As tecnologias de contentores funcionam de outra forma:
- OpenVZ e LXC: todos os contentores partilham o kernel do anfitrião. Obtém apenas um espaço de utilizador isolado. Não pode mudar o kernel, carregar módulos nem escolher a versão do kernel.
- KVM: virtualização completa. Cada VPS arranca o seu próprio kernel e tem a sua própria alocação de memória e disco.
Um contentor é mais leve, mas está limitado ao que o kernel do anfitrião permite. Um VPS KVM dá-lhe liberdade, com um consumo de memória ligeiramente maior.
3. Porque é importante num VPS
Com o seu próprio kernel pode:
- Carregar módulos do kernel como WireGuard,
br_netfilterounf_conntrack - Executar Docker e outros motores de contentores sem restrições (cgroups, sistema de ficheiros overlay, iptables)
- Ajustar o sistema com
sysctl(buffers de rede, reencaminhamento IP, controlo de congestionamento BBR) - Usar a sua própria firewall, ficheiro de swap e o sistema de ficheiros que preferir
- Instalar outra versão do kernel da sua distribuição
Bash# Mostrar o kernel em execução uname -r # Mostrar os parâmetros do kernel que pode alterar sudo sysctl net.ipv4.ip_forward net.ipv4.tcp_congestion_control
4. Verificar que está em KVM
O mais simples é o systemd-detect-virt:
Bashsystemd-detect-virt # Saída esperada: kvm
Se o comando mostrar openvz, lxc ou docker, está dentro de um contentor. none indica uma máquina física.
Pode confirmar com lscpu:
Bashlscpu | grep -iE 'hypervisor|virtualization type' # Hypervisor vendor: KVM # Virtualization type: full
E com as mensagens de arranque do kernel:
Bashsudo dmesg | grep -i -E 'kvm|hypervisor' # Hypervisor detected: KVM
Por fim, o hostnamectl apresenta uma linha Virtualization: kvm.
5. Testar o que o KVM lhe dá
Verifique que consegue carregar um módulo e executar contentores:
Bash# Ubuntu 24.04 / Debian 12: módulo WireGuard sudo modprobe wireguard lsmod | grep wireguard # Instalar o Docker a partir do repositório da distribuição e executar um contentor de teste sudo apt update && sudo apt install -y docker.io sudo docker run --rm hello-world
No AlmaLinux 9 ou Rocky 9, use sudo dnf install -y wireguard-tools para as ferramentas e siga a documentação oficial do Docker (docs.docker.com) para instalar o motor.
🔧 Resolução de problemas
dmesg: read kernel buffer failed: Operation not permitted
O kernel restringe o dmesg ao root. Execute-o com sudo ou use sudo journalctl -k.
modprobe: FATAL: Module wireguard not found
Em algumas imagens mínimas faltam os módulos adicionais. No Ubuntu, instale linux-modules-extra-$(uname -r). Se acabou de atualizar o kernel, reinicie primeiro para que uname -r corresponda aos módulos instalados.
systemd-detect-virt: command not found
A imagem não tem systemd ou é muito mínima. Use lscpu ou dmesg, ou instale o pacote systemd.
O Docker queixa-se de cgroups ou iptables
Verifique se o serviço está ativo com systemctl status docker e se não desativou nf_tables ou iptables numa configuração de firewall personalizada.
🚀 Já sabe o que o KVM traz ao seu VPS: um kernel real, controlo total e nenhum limite escondido imposto pelo anfitrião.