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: 39.069 ]

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

Fundamentos do sistema Linux - hardware

Fundamentos do sistema Linux - comandos do Linux

Zenwalk Core: Para quem só quer o essencial

Vyatta, o concorrente livre dos roteadores Cisco

Fundamentos do sistema Linux - direcionadores

Leitura recomendada

Songbird - Conheçam o media-player da Mozilla

Instalando o novo Anjuta 2.2.0 no Ubuntu Feisty

Apresentando o Ubuntu 7.04 Feisty Fawn

Configurando o OpenOffice

VPN com pptpd com acesso a compartilhamentos

  
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