Virtualização · 7 min read · Jan 07, 2026

Virtualização Com KVM Em Um Servidor Fedora 17

Virtualização Com KVM Em Um Servidor Fedora 17

Versão 1.0
Autor: Falko Timme
Siga-me no Twitter

Este guia explica como você pode instalar e usar o KVM para criar e executar máquinas virtuais em um servidor Fedora 17. Eu vou mostrar como criar máquinas virtuais baseadas em imagem e também máquinas virtuais que usam um volume lógico (LVM). KVM é a sigla para Kernel-based Virtual Machine e faz uso de virtualização de hardware, ou seja, você precisa de um CPU que suporte virtualização de hardware, por exemplo, Intel VT ou AMD-V.

Eu não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Estou usando um servidor Fedora 17 com o nome do host server1.example.com e o endereço IP 192.168.0.100 aqui como meu host KVM.

Eu desativei o SELinux no meu sistema Fedora 17. Eu não testei com o SELinux ativado; pode funcionar, mas se não funcionar, é melhor desligar o SELinux também:

vi /etc/selinux/config

Defina SELINUX=disabled…

| # Este arquivo controla o estado do SELinux no sistema. # SELINUX= pode assumir um destes três valores: # enforcing - A política de segurança do SELinux é aplicada. # permissive - O SELinux imprime avisos em vez de aplicar. # disabled - Nenhuma política do SELinux é carregada. SELINUX=disabled # SELINUXTYPE= pode assumir um destes dois valores: # targeted - Processos direcionados são protegidos, # mls - Proteção de Segurança de Múltiplos Níveis. SELINUXTYPE=targeted |

… e reinicie:

reboot

Nós também precisamos de um sistema desktop onde instalamos o virt-manager para que possamos nos conectar ao console gráfico das máquinas virtuais que instalamos. Estou usando um desktop Fedora 17 aqui.

2 Instalando KVM

Host KVM Fedora 17:

Primeiro verifique se sua CPU suporta virtualização de hardware - se este for o caso, o comando

egrep '(vmx|svm)' --color=always /proc/cpuinfo

deverá exibir algo, por exemplo, assim:

[root@server1 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall  
 nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse  
[root@server1 ~]#

Se nada for exibido, então seu processador não suporta virtualização de hardware, e você deve parar aqui.

Agora importamos as chaves GPG para pacotes de software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Para instalar KVM e virtinst (uma ferramenta para criar máquinas virtuais), executamos

yum install kvm libvirt python-virtinst qemu-kvm

Crie os links de inicialização do sistema para o daemon libvirt e inicie-o:

systemctl enable libvirtd.service  
systemctl start libvirtd.service

Para verificar se o KVM foi instalado com sucesso, execute

virsh -c qemu:///system list

Deverá exibir algo como isto:

[root@server1 ~]# virsh -c qemu:///system list  
 Id Name                 State  
----------------------------------  
  
[root@server1 ~]#

Se exibir um erro em vez disso, então algo deu errado.

Em seguida, precisamos configurar uma ponte de rede em nosso servidor para que nossas máquinas virtuais possam ser acessadas de outros hosts como se fossem sistemas físicos na rede.

Para fazer isso, instalamos o pacote bridge-utils…

yum install bridge-utils

… e configuramos uma ponte.

Eu desativo o NetworkManager do Fedora e habilito a rede “normal”. O NetworkManager é bom para desktops onde as conexões de rede podem mudar (por exemplo, LAN vs. WLAN), mas em um servidor você geralmente não muda as conexões de rede:

systemctl disable NetworkManager.service  
systemctl enable network.service  
systemctl restart network.service  
systemctl stop NetworkManager.service

Verifique seu /etc/resolv.conf se ele lista todos os servidores de nomes que você configurou anteriormente:

cat /etc/resolv.conf

Se os servidores de nomes estiverem faltando, execute

system-config-network

e adicione os servidores de nomes que estão faltando novamente.

Em seguida, descubra sua interface de rede primária executando

ifconfig

No meu caso, ela é chamada em1 - isso é importante para garantir que você edite o arquivo de configuração de rede correto - no meu caso /etc/sysconfig/network-scripts/ifcfg-em1.

Para configurar a ponte, crie o arquivo /etc/sysconfig/network-scripts/ifcfg-br0 (por favor, use os valores DNS1 (mais quaisquer outras configurações de DNS, se houver), GATEWAY, IPADDR, NETMASK e SEARCH do arquivo /etc/sysconfig/network-scripts/ifcfg-em1):

vi /etc/sysconfig/network-scripts/ifcfg-br0

| DEVICE=br0 TYPE=Bridge BOOTPROTO=static DNS1=8.8.8.8 GATEWAY=192.168.0.1 IPADDR=192.168.0.100 NETMASK=255.255.255.0 ONBOOT=yes DNS2=8.8.4.4 SEARCH="example.com" |

Modifique /etc/sysconfig/network-scripts/ifcfg-em1 da seguinte forma (comente BOOTPROTO, DNS1 (e todos os outros servidores DNS, se houver), GATEWAY, IPADDR, NETMASK e SEARCH, defina NM_CONTROLLED como no, e adicione BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-em1

| UUID="e8a818cc-0e23-47b8-88f3-013567828572" NM_CONTROLLED=no #BOOTPROTO=none HWADDR=00:1e:90:f3:f0:02 ONBOOT=yes #IPADDR=192.168.0.100 #NETMASK=255.255.255.0 #DNS2=8.8.4.4 TYPE=Ethernet #GATEWAY=192.168.0.1 #DNS1=8.8.8.8 IPV6INIT=no USERCTL=no PREFIX=24 BRIDGE=br0 |

Então reinicie o sistema:

reboot

Após o reinício, execute

ifconfig

Deverá agora mostrar a ponte de rede (br0):

[root@server1 ~]# ifconfig  
br0: flags=4163  mtu 1500  
        inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255  
        inet6 fe80::21e:90ff:fef3:f002  prefixlen 64  scopeid 0x20  
        ether 00:1e:90:f3:f0:02  txqueuelen 0  (Ethernet)  
        RX packets 70  bytes 7511 (7.3 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 76  bytes 10847 (10.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
em1: flags=4163  mtu 1500  
        ether 00:1e:90:f3:f0:02  txqueuelen 1000  (Ethernet)  
        RX packets 117  bytes 15163 (14.8 KiB)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 92  bytes 12899 (12.5 KiB)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
lo: flags=73  mtu 16436  
        inet 127.0.0.1  netmask 255.0.0.0  
        inet6 ::1  prefixlen 128  scopeid 0x10  
        loop  txqueuelen 0  (Local Loopback)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
virbr0: flags=4099  mtu 1500  
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255  
        ether ce:18:6f:2a:7f:0b  txqueuelen 0  (Ethernet)  
        RX packets 0  bytes 0 (0.0 B)  
        RX errors 0  dropped 0  overruns 0  frame 0  
        TX packets 0  bytes 0 (0.0 B)  
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
  
[root@server1 ~]#

3 Instalando virt-viewer Ou virt-manager Em Seu Desktop Fedora 17

Desktop Fedora 17:

Precisamos de um meio de conectar ao console gráfico de nossos convidados - podemos usar o virt-manager para isso. Estou assumindo que você está usando um desktop Fedora 17.

Torne-se root…

su

… e execute…

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

… para instalar o virt-manager.

(Se você estiver usando um desktop Ubuntu 12.04, pode instalar o virt-manager da seguinte forma:

sudo apt-get install virt-manager

)

4 Criando Um Convidado Debian Squeeze (Baseado em Imagem) A Partir da Linha de Comando

Host KVM Fedora 17:

Agora vamos voltar ao nosso host KVM Fedora 17.

Dê uma olhada em

man virt-install

para aprender como usar o virt-install.

Nós criaremos nossas máquinas virtuais baseadas em imagem no diretório /var/lib/libvirt/images/ que foi criado automaticamente quando instalamos o KVM no capítulo dois.

Para criar um convidado Debian Squeeze (em modo de ponte) com o nome vm10, 512MB de RAM, dois CPUs virtuais e a imagem de disco /var/lib/libvirt/images/vm10.img (com um tamanho de 12GB), insira o CD de instalação Netinstall do Debian Squeeze na unidade de CD e execute

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Claro, você também pode criar uma imagem ISO do CD de instalação Netinstall do Debian Squeeze (por favor, crie-a no diretório /var/lib/libvirt/images/ porque mais tarde eu mostrarei como criar máquinas virtuais através do virt-manager a partir do seu desktop Fedora, e o virt-manager procurará imagens ISO no diretório /var/lib/libvirt/images/)…

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso

… e usar a imagem ISO no comando virt-install:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

A saída é a seguinte:

[root@server1 ~]# virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.5-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm  


Iniciando a instalação...  
Alocando 'vm10.img'              |  12 GB     00:00  
Criando domínio...                |    0 B     00:00  
A instalação do domínio ainda está em andamento. Você pode se reconectar ao  
console para completar o processo de instalação.  
[root@server1 ~]#
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.