Como habilitar a virtualização KVM aninhada

0
35


Aprender: Como Instalar Red Hat 8
Aprender: Como Instalar Red Hat 8
Shutterstock.com/Eugene Kouzmenok

KVM é uma tecnologia de virtualização incorporada ao kernel do Linux. Um sistema habilitado para KVM pode atuar como um hypervisor tipo 1, desde que o processador o suporte.

Existem várias maneiras de criar uma máquina virtual usando KVM. O QEMU pode usar KVM e libvirt e sua interface de usuário do Virtual Machine Manager fornece uma interface conveniente em torno dele.

O KVM pode ser usado para criar máquinas virtuais aninhadas em hardware compatível. Isso permite que você crie máquinas virtuais dentro de máquinas virtuais para atender a casos de uso mais complexos. Considere um ambiente de desenvolvimento virtualizado em execução em seu host. Você pode precisar executar emuladores de dispositivos virtuais Dentro de esse ambiente, aninhado a dois níveis de profundidade do hardware bare metal.

Este artigo mostrará como configurar a virtualização KVM aninhada e testar se ela funciona. Antes de continuar, verifique se você tem uma instalação KVM em funcionamento disponível e se está familiarizado com a criação de novas máquinas virtuais KVM.

Verifique se a virtualização aninhada está habilitada

A virtualização aninhada é suportada pela maioria das famílias de processadores modernos que oferecem virtualização de hardware. Você pode verificar se o aninhamento já está ativado em seu hypervisor usando o cat comando para ler um dos seguintes caminhos, dependendo se você tem um sistema Intel ou AMD:

# Intel
$ cat /sys/module/kvm_intel/parameters/nested

# AMD
$ cat /sys/module/kvm_amd/parameters/nested

A saída deve ser Y qualquer N. Vendo Y significa que você está pronto para começar: a virtualização aninhada já está ativada. Você pode pular para a seção “Ativando a virtualização aninhada para um convidado” abaixo. Se você ver N em seu terminal, é hora de habilitar o aninhamento no módulo do kernel KVM.

Ativando a virtualização aninhada

O aninhamento é controlado por um parâmetro de módulo do kernel KVM. Você pode alterar o parâmetro editando /etc/modprobe.d/qemu-system-x86.conf. Em alguns sistemas, este arquivo pode ser chamado /etc/modprobe.d/kvm.conf.

Você provavelmente verá uma única linha semelhante a uma destas:

options kvm_intel
options kvm_intel nested=0

options kvm_amd
options kvm_amd nested=0

Qualquer uma dessas variantes significa que o KVM está ativo, mas o aninhamento está desabilitado.

Para habilitar o aninhamento, basta adicionar ou alterar o nested parâmetro para que você tenha 1 como seu valor:

# Intel systems only
options kvm_intel nested=1

# AMD systems only
options kvm_amd nested=1

Você deve então recarregar o módulo do kernel KVM para aplicar sua mudança. Você deve interromper qualquer máquina virtual em execução antes de fazer isso.

# Unload the module
$ sudo modprobe -r kvm_intel

# Reload the module with new settings
$ sudo modprobe kvm_intel

Substituto kvm_amd em vez de kvm_intel se você tiver um processador AMD.

Agora repita o comando acima para verificar se o aninhamento está habilitado. voce deveria pegar Y como saída.

# Intel
$ cat /sys/module/kvm_intel/parameters/nested
Y

# AMD
$ cat /sys/module/kvm_amd/parameters/nested
Y

Este método ativa permanentemente a virtualização aninhada. Ele persistirá nas reinicializações até que você remova nested=1 dos parâmetros do módulo KVM.

Habilitando a virtualização aninhada para um convidado

As máquinas virtuais convidadas só podem usar a virtualização aninhada quando configuradas com um modo de CPU compatível. O convidado precisa de uma definição de CPU que corresponda exatamente ao hardware físico de seu host.

A maioria dos convidados funcionará quando o modo CPU estiver definido como host-model, que geralmente é o padrão. Isso significa que o convidado recebe uma definição de CPU semelhante ao seu host. Em alguns casos, pode ser necessário usar o host-passthrough modo que passa exatamente por todas as características da CPU host.

Você pode verificar e alterar o tipo de CPU de um convidado recuperando seu manifesto com virsh. Primeiro execute o virsh Comando para iniciar um shell interativo. então escreva list --all para recuperar todas as suas máquinas virtuais:

virsh # list --all
 Id   Name          State
------------------------------
 -    ubuntu22.04   shut off
 -    win10         shut off

próxima corrida edit <vm-name> Para abrir o manifesto de uma máquina virtual nomeada:

virsh # edit ubuntu22.04

Dentro do arquivo, encontre a linha que começa com <cpu mode=. Altere-o para um destes:

<cpu mode="host-model" check='partial' />
<cpu mode="host-passthrough" check='none' />

Salve e feche o arquivo e digite exit no shell virsh para fechá-lo. O convidado agora deve estar pronto para iniciar seus próprios convidados aninhados. Tente alterar os modos se parecer haver um problema.

Verificando um ninho de convidados

A maioria dos sistemas operacionais pode dizer se eles podem criar uma máquina virtual. Execute o seguinte comando dentro de sua VM para verificar se um convidado Linux tem acesso à virtualização:

cat /proc/cpuinfo | grep "svm|vmx"

A virtualização está disponível se você obtiver algum resultado com svm qualquer vmx destacado em vermelho. SVM aparecerá em máquinas AMD; VMX para Intel aparece.

Agora instale uma tecnologia de virtualização dentro do convidado. Você deve descobrir que pode iniciar uma nova máquina virtual aninhada. Aqui está uma captura de tela mostrando uma máquina virtual Ubuntu executando um convidado Alpine usando KVM aninhado:

uma imagem mostrando máquinas virtuais KVM aninhadas

Limitações

Os hóspedes aninhados vêm com algumas limitações. Alguns recursos KVM ficam indisponíveis para convidados que iniciaram uma máquina virtual aninhada. Você não poderá migrar, salvar ou carregar essas máquinas virtuais até que a máquina virtual aninhada seja interrompida.

O efeito real de tentar realizar uma dessas operações não está definido. Alguns sistemas podem suportá-lo; outros podem causar um kernel panic. Sempre tente desligar seus convidados aninhados antes de executar uma operação nas máquinas virtuais acima deles na cadeia.

Resumo

A virtualização aninhada fornece mais poder e flexibilidade. Você pode isolar tecnologias que precisam de sua própria virtualização para funcionar, como IDEs que iniciam emuladores de dispositivo.

Fazer o aninhamento funcionar com o KVM geralmente é fácil. Qualquer solução de problemas deve começar com a verificação do nested O parâmetro está habilitado para seu módulo de kernel KVM. Depois disso, verifique o modelo de CPU atribuído ao seu convidado e verifique se você está usando um hipervisor de segundo nível compatível dentro da VM.