Instalação e utilização do Qemu no Fedora Core

O Qemu é um software de virtualização de código aberto muito conhecido e utilizado entre os usuários de Linux. Este artigo traz informações sobre como instalar e utilizar essa ferramenta na distribuição Linux Fedora, incluindo a configuração de interfaces de rede nas máquinas virtuais através do software VDE e a utilização do método de virtualização completa com o acelerador kqemu.

[ Hits: 40.806 ]

Por: Davidson Rodrigues Paulo em 15/05/2007 | Blog: http://davidsonpaulo.com/


Habilitando rede na máquina virtual



Habilitar a rede nas máquinas virtuais do Qemu é um processo relativamente simples, mas não muito documentado. Existem diversos métodos, mas o mais eficiente e prático consiste em configurar bridge na máquina hospedeira, criando interfaces virtuais acessíveis pelas máquinas virtuais.

Para demonstrar a configuração da rede na máquina virtual do Qemu, consideraremos um ambiente virtual com os seguintes dados:
  • IP da máquina hospedeira: 10.1.0.192
  • IP da máquina virtual: 10.1.0.208
  • Gateway padrão: 10.1.0.1
  • DNS primário: 10.1.0.6

Nossa configuração começa com a instalação no VDE. Baixe a versão estável mais recente na página do projeto:
Após baixar o arquivo, descompacte-o, acesse o diretório criado e, então, execute o comando:

$ ./configure && make && su -c 'make install'
password:

Após a instalação, execute a seguinte seqüência de comandos:

# vde_switch -sock /tmp/vde.ctl -mod 666 -tap tun0 -daemon
# ifconfig eth0 down
# brctl addbr br0
# ifconfig eth0 0.0.0.0 promisc up
# ifconfig tun0 0.0.0.0 promisc up
# ifconfig br0 10.1.0.192 netmask 255.255.255.0 broadcast 10.1.0.255 up
# brctl stp br0 off
# brctl setfd br0 1
# brctl sethello br0 1
# brctl addif br0 eth0
# brctl addif br0 tun0
# route add default gw 10.1.0.1


O comando brctl está disponível através do pacote bridge-utils. Você pode instalá-lo utilizando o Yum:

$ su -c 'yum install bridge-utils'
password:

A interface br0 passa agora a responder pelo endereço anteriormente atribuído à interface eth0. Para a máquina hospedeira isso não causará nenhuma diferença, ou seja, o sistema vai continuar respondendo pelo mesmo IP na interface eth0. Já a máquina virtual receberá o IP que quisermos atribuir.

Para iniciar uma máquina virtual com suporte a rede, execute o vdeqemu, da seguinte forma:

$ vdeqemu [opções do qemu]

No nosso caso, vamos iniciar a máquina virtual "zimbra" do exemplo anterior com suporte a rede:

$ vdeqemu -hda /home/vm/zimbra -m 256 \
   -net nic,vlan=0 -net vde,vlan=0,sock=/tmp/vde.ctl


Após a inicialização da máquina virtual, a interface de rede eth0 será reconhecida, restando apenas configurarmos uma conexão para ela.

Múltiplas interfaces de rede


Se quisermos criar várias máquinas virtuais com suporte a rede ou habilitar várias interface de rede a uma única máquina virtual, precisaremos criar várias interfaces TAP no servidor hospedeiro. Para isso, basta basear-se nos procedimentos anteriores, fazendo as alterações necessárias.

Nesse exemplo, vamos criar 3 interfaces para serem utilizadas por duas máquinas virtuais. Uma dela usará duas interfaces e a outra apenas uma.

# vde_switch -sock /tmp/vde.ctl -mod 666 -tap tun0 -daemon
# vde_switch -sock /tmp/vde.ctl -mod 666 -tap tun1 -daemon
# vde_switch -sock /tmp/vde.ctl -mod 666 -tap tun2 -daemon
# ifconfig eth0 down
# brctl addbr br0
# ifconfig eth0 0.0.0.0 promisc up
# ifconfig tun0 0.0.0.0 promisc up
# ifconfig tun1 0.0.0.0 promisc up
# ifconfig tun2 0.0.0.0 promisc up
# ifconfig br0 10.1.0.192 netmask 255.255.255.0 broadcast 10.1.0.255 up
# brctl stp br0 off
# brctl setfd br0 1
# brctl sethello br0 1
# brctl addif br0 eth0
# brctl addif br0 tun0
# brctl addif br0 tun1
# brctl addif br0 tun2
# route add default gw 10.1.0.1


Como você pode perceber, a única diferença está na criação de mais duas interfaces: tun1 e tun2.

Vamos, agora, iniciar uma máquina virtual utilizando duas interfaces de rede:

$ vdeqemu -hda /home/vm/vms1 -m 160 \
   -net nic,vlan=0 -net vde,vlan=0,sock=/tmp/vde.ctl \
   -net nic,vlan=1 -net vde,vlan=1,sock=/tmp/vde.ctl


E, então, iniciar outra máquina virtual utilizando a outra interface:

$ vdeqemu -hda /home/vm/vms2 -m 240 \
   -net nic,vlan=2 -net vde,vlan=2,sock=/tmp/vde.ctl


Página anterior     Próxima página

Páginas do artigo
   1. Instalação
   2. Criando uma máquina virtual
   3. Habilitando rede na máquina virtual
   4. Dicas
Outros artigos deste autor

Xen: Criando dom0 e domU no Fedora

Instalando um sistema Debian GNU/Linux completo em 20 minutos

Fundamentos do sistema Linux - direcionadores

Fundamentos do sistema Linux - usuários e grupos

Usando o start-stop-daemon no Slackware

Leitura recomendada

Linvox - Sistema Linux voltado para deficientes visuais

Instalando Tryd Pro no Linux com Sucesso

Administrando Servidores Windows 2000 c/ o RDesktop

Introdução ao OpenLDAP com o JXplorer

Conhecendo o Slpkg (gerenciador de pacotes para Slackware)

  
Comentários
[1] Comentário enviado por fdavid em 15/05/2007 - 07:30h

Já fui adepto do QEMU, gostava dele, mas sofri muito com a performace do mesmo, com ou sem KQEMU o negocio era sofrido.

Comecei a testar em um K6 400Mhz 256MB, tudo bem que eu estava querendo demais, passei para um Celeron 1Ghz 512Mb e nada.

Mais ou menos na mesma epoca saiu o vmplayer (versão free do vmware), testei e com o mesmo hardware tive um desempenho muito satisfatorio, hoje só cogito usar o QEMU em um hardware big big e se precisar emular uma arquitetura diferente de i386 (coisa que o vmplayer não faz).

[2] Comentário enviado por y2h4ck em 15/05/2007 - 13:20h

Qemu e da hora porem o [*****] e a parte de networking dele que deixa a desejar.
Valeu :)

[3] Comentário enviado por removido em 15/05/2007 - 19:08h

Rapaz, o "homi" resolveu dar o ar da graça!!!!!
;-))

[4] Comentário enviado por davidsonbhz em 15/05/2007 - 23:10h

O procedimento de uso eh diferente para o Slackware? baixe os fontes tanto do vde quanto do qemu e compilei, consegui criar a maquina virtual normalmente, mas o stress q estou tendo eh na parte de rede. Quando configuro a rede na maquina virtual, seja por dhcp ou manualmente, o qemu mostra a seguinte mensagem de erro:

sendto: Bad file descriptor

Depois disso a rede nao funciona de jeito nenhum! Alguma dica?

[5] Comentário enviado por davidsonpaulo em 16/05/2007 - 09:59h

Davidson,

Eu consegui obter o mesmo erro quando atribuí à máquina virtual um IP que já estava sendo utilizado na rede. Algo parecido deve estar acontecendo aí com você.

Uma observação válida: seguindo esse artigo as máquinas virtuais NÃO conseguirão obter um IP via DHCP. Para isso é necessário alterar um valor na configuração da bridge br0. Eu não lembro de cabeça o valor, mas procure por informações sobre bridge-utils e o comando brctl que você encontrará a resposta.

Um abraço.

[6] Comentário enviado por removido em 04/06/2007 - 13:17h

Para funcionar é necessário trocar na linha que chama o qemu:
$ vdeqemu -hda /home/vm/zimbra -m 256 \
-net nic,vlan0 -net vde,vlan0,sock=/tmp/vde.ctl

por:

$ vdeqemu -hda /home/vm/zimbra -m 256 \
-net nic,vlan=0 -net vde,vlan=0,sock=/tmp/vde.ctl

Ao invés de vlan0, vlan=0.

Demorou um pouco para eu sacar isto.
Vejam como no segundo exemplo está correto.


[7] Comentário enviado por davidsonpaulo em 04/06/2007 - 13:35h

Opa! Erro grosseiro de digitação. Corrigido.

Obrigado Oséias.

[8] Comentário enviado por aazevedo1984 em 19/07/2008 - 18:35h

Aq esta dando erro, quando digito o comando
ifconfig tun0 0.0.0.0 promisc up
A mensagem de erro e a seguinte
SIOCSIFADDR: No such device
tun0: ERROR while getting interface flags: No such device
tun0: ERROR while getting interface flags: No such device
tun0: ERROR while getting interface flags: No such device
Como resolver isto?

consegui resolver simplismente com o comando modprobe tun. Agora funcionou muito bem, valew pela ajuda

[9] Comentário enviado por azraelm em 21/12/2011 - 08:46h

Muito bom!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts