Virtualização

O que é Hypervisor?

Definição

A hypervisor is the software layer that creates and runs virtual machines, allocating physical CPU, memory and IO between them. A type-1 hypervisor runs directly on the hardware; KVM is unusual in being a type-1 hypervisor implemented as a Linux kernel module, which lets it use the whole Linux driver ecosystem.

Porque é que Hypervisor importa

Um hipervisor tipo 1 executa diretamente no hardware; KVM é invulgar por ser um hipervisor tipo 1 implementado como módulo do kernel Linux, o que lhe permite usar todo o ecossistema de drivers Linux.

Hypervisor na prática

Quando estás a executar um servidor num hipervisor KVM, olhas para a alocação real de hardware: vCPUs, RAM, I/O de disco. Ajustas estes a partir do painel, muitas vezes adicionando memória a quente sem reiniciar. Se errares ao sobrecarregar o host, as cargas de trabalho ruidosas dos teus vizinhos esfomeiam a CPU ou I/O da tua instância, tornando um convidado perfeitamente configurado um lento. Virtualização aninhada significa que podes executar um hipervisor dentro do teu hipervisor, útil para testes, mas custa desempenho e pode confundir a tua própria contagem de recursos.

O que se costuma entender mal sobre Hypervisor

O erro comum é tratar o hiperevisor como um limite de contentor. Não é. Um hiperevisor dá-lhe uma máquina virtual completa, o seu próprio kernel, o seu próprio /proc, sem espaço de nomes partilhado. As pessoas assumem que os processos do vizinho são invisíveis ou que o seu kernel personalizado é impossível, e depois esbarram em limitações. A correção: com KVM, obtém isolamento e controlo genuínos, podendo arrancar uma imagem feita à mão ou executar virtualização aninhada, coisas que um contentor não consegue fazer.

Hypervisor — perguntas frequentes

O que significa hiperevisor tipo 1?

Um hiperevisor tipo 1 corre diretamente no hardware do anfitrião, não sobre um sistema operativo. O KVM é especial porque é um hiperevisor tipo 1 implementado como módulo do kernel Linux, podendo assim usar todo o ecossistema de controladores Linux para gerir hardware. Isso dá-lhe o desempenho da virtualização bare-metal com a flexibilidade do Linux.

Em que difere o KVM dos contentores como OpenVZ?

O KVM oferece virtualização verdadeira: cada convidado tem o seu próprio kernel, o seu próprio /proc, sem espaço de nomes partilhado, dando-lhe acesso root total e a possibilidade de executar kernels personalizados. Os contentores partilham o kernel e os espaços de nomes do anfitrião, o que limita o que pode fazer. Com KVM, obtém isolamento e controlo, incluindo a capacidade de executar virtualização aninhada ou arrancar um ISO personalizado.

Mais de virtualização

KVM
KVM é virtualização completa de hardware integrada no kernel Linux, dando a cada convidado o seu próprio kernel e isolamento imposto por hardware dos outros inquilinos.
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.
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.