Virtualização

O que é KVM?

Também conhecido como: Kernel-based Virtual Machine
Definição

KVM is full hardware virtualisation built into the Linux kernel, giving each guest its own kernel and hardware-enforced isolation from other tenants. Because a KVM guest runs its own kernel, it can load kernel modules, run non-Linux operating systems, use real swap and support nested virtualisation.

Porque é que KVM importa

Como um convidado KVM executa o seu próprio kernel, pode carregar módulos do kernel, executar sistemas operativos não Linux, usar swap real e suportar virtualização aninhada. A memória atribuída a um convidado KVM é verdadeiramente reservada, o que é a diferença prática em relação à virtualização baseada em contentores.

KVM na prática

Quando executa um servidor KVM, a primeira coisa que verifica é o /proc/cpuinfo no convidado — se não corresponder às flags do anfitrião, provavelmente está a ver atalhos paravirtualizados, não KVM completo. Define a alocação de memória com reservas reais: a sobrealocação fará com que o OOM killer do convidado dispare enquanto o anfitrião parece inativo. Se configurar mal a virtualização aninhada, perde a paginação assistida por hardware e os convidados executam a uma fração da velocidade. Errar custa-lhe desempenho que não recupera sem um reinício.

O que se costuma entender mal sobre KVM

As pessoas assumem que KVM é o mesmo que OpenVZ ou LXC porque ambos usam o kernel Linux. A correção é que KVM dá a cada convidado o seu próprio kernel, enquanto os contentores partilham o kernel do anfitrião. Pode carregar módulos do kernel e executar SOs não Linux apenas em KVM. O isolamento de espaço de nomes partilhado não é imposto por hardware.

KVM — perguntas frequentes

O que significa KVM para o desempenho?

A virtualização por hardware do KVM significa que cada convidado tem o seu próprio kernel, por isso o desempenho é quase nativo para CPU e memória. A memória é genuinamente reservada, não partilhada. Pode esperar um débito previsível e isolado em comparação com contentores.

Posso executar Windows em KVM?

Sim, um convidado KVM executa o seu próprio kernel, por isso pode executar sistemas operativos não Linux como Windows. Precisará de carregar um ISO e anexar uma consola VNC. Uma licença do Windows Server está disponível como extra opcional em determinadas regiões.

Mais de virtualização

OpenVZ
OpenVZ é virtualização baseada em contentores em que cada instância partilha o kernel do anfitrião, pelo que os convidados não podem carregar módulos do kernel nem executar um sistema operativo diferente.
LXC
LXC é contentorização nativa do Linux que isola processos com namespaces e cgroups, partilhando o kernel do anfitrião.
Hipervisor
Um hipervisor é a camada de software que cria e executa máquinas virtuais, alocando CPU física, memória e I/O entre elas.
Virtualização aninhada
A virtualização aninhada permite que uma máquina virtual execute, ela própria, máquinas virtuais, expondo as extensões de virtualização do processador ao convidado.
vCPU
Uma vCPU é um processador virtual apresentado a um convidado, suportado por tempo de agendamento num núcleo físico ou thread.
cloud-init
cloud-init é o mecanismo padrão para configurar uma máquina virtual no primeiro arranque, usando metadados fornecidos pela plataforma.