Pesquisa de site

Série RHCSA: Fundamentos de Virtualização e Administração de Convidados com KVM - Parte 15


Se você procurar a palavra virtualizar em um dicionário, descobrirá que significa “criar uma versão virtual (em vez de real) de algo”. Na computação, o termo virtualização refere-se à possibilidade de executar vários sistemas operacionais simultaneamente e isolados uns dos outros, sobre o mesmo sistema físico (hardware), conhecido no esquema de virtualização como host.

Através do uso do monitor de máquina virtual (também conhecido como hipervisor), as máquinas virtuais (referidas como convidados) recebem recursos virtuais (ou seja, CPU, RAM, armazenamento, rede interfaces, para citar alguns) do hardware subjacente.

Tendo isto em mente, é evidente que uma das principais vantagens da virtualização é a poupança de custos (em equipamentos e infra-estruturas de rede e em termos de esforço de manutenção) e uma redução substancial do espaço físico necessário para acomodar todo o hardware necessário.

Como este breve tutorial não pode cobrir todos os métodos de virtualização, recomendo que você consulte a documentação listada no resumo para obter mais detalhes sobre o assunto.

Tenha em mente que o presente artigo pretende ser um ponto de partida para aprender os fundamentos da virtualização no RHEL 7 usando KVM (Máquina Virtual Baseada em Kernel) com utilitários de linha de comando, e não uma introdução. -discussão aprofundada do tema.

Verificando os requisitos de hardware e instalando pacotes

Para configurar a virtualização, sua CPU deve suportá-la. Você pode verificar se o seu sistema atende aos requisitos com o seguinte comando:


grep -E 'svm|vmx' /proc/cpuinfo

Na captura de tela a seguir podemos ver que o sistema atual (com um microprocessador AMD) suporta virtualização, conforme indicado por svm. Se tivéssemos um processador baseado em Intel, veríamos vmx nos resultados do comando acima.

Além disso, você precisará ter recursos de virtualização habilitados no firmware do seu host (BIOS ou UEFI).

Agora instale os pacotes necessários:

  1. qemu-kvm é um virtualizador de código aberto que fornece emulação de hardware para o hipervisor KVM, enquanto qemu-img fornece uma ferramenta de linha de comando para manipular imagens de disco.
  2. libvirt inclui as ferramentas para interagir com os recursos de virtualização do sistema operacional.
  3. libvirt-python contém um módulo que permite que aplicativos escritos em Python usem a interface fornecida por libvirt.
  4. libguestfs-tools: diversas ferramentas de linha de comando do administrador do sistema para máquinas virtuais.
  5. virt-install: outros utilitários de linha de comando para administração de máquinas virtuais.

yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install

Assim que a instalação for concluída, certifique-se de iniciar e ativar o serviço libvirtd:


systemctl start libvirtd.service
systemctl enable libvirtd.service

Por padrão, cada máquina virtual só poderá se comunicar com as demais no mesmo servidor físico e com o próprio host. Para permitir que os convidados acessem outras máquinas dentro de nossa LAN e também da Internet, precisamos configurar uma interface bridge em nosso host (digamos br0, por exemplo) por,

1. adicionando a seguinte linha à nossa configuração principal da NIC (provavelmente /etc/sysconfig/network-scripts/ifcfg-enp0s3):


BRIDGE=br0

2. criando o arquivo de configuração para br0 (/etc/sysconfig/network-scripts/ifcfg-br0) com este conteúdo (observe que você talvez seja necessário alterar o endereço IP, o endereço do gateway e as informações de DNS):


DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4

3. finalmente, habilitando o encaminhamento de pacotes fazendo, em /etc/sysctl.conf,


net.ipv4.ip_forward = 1

e carregando as alterações na configuração atual do kernel:


sysctl -p

Observe que você também pode precisar informar ao firewalld que esse tipo de tráfego deve ser permitido. Lembre-se de que você pode consultar o artigo sobre esse tópico nesta mesma série (Parte 11: Controle de tráfego de rede usando FirewallD e Iptables) se precisar de ajuda para fazer isso.