Ponte KVM - A conexão de rede falha se eu alterar o modelo do dispositivo para VirtIO de rtl8139

Ponte KVM - A conexão de rede falha se eu alterar o modelo do dispositivo para VirtIO de rtl8139

Estou configurando minha primeira VM e usando ponte para acessar minha rede. É uma VM Windows7 no Ubuntu 14.10. Li que mudar para 'Device Model = VirtIO' na definição da VM melhorará o desempenho da Ethernet. Quando mudo para VirtIO de rtl8139, perco a conectividade Ethernet na VM. Alguma sugestão?

Notas laterais: Sou novo no mundo Linux, como esta pergunta pode indicar. Na verdade, eu preferiria conectar a VM ao meu adaptador sem fio (que desativei), mas muitas das coisas que li dizem que você não pode conectar um adaptador sem fio.

Obrigado por qualquer indicação.

Minha VM win7 foi criada/definida pelo uso da ferramenta GUI que acompanha o KVM. Se eu passar o mouse sobre o ícone, ele diz 'Virtual Machine Manager'. Já tenho uma ponte configurada. Funciona para uma conexão com fio e se o tipo de modelo no parâmetro do arquivo /etc/libvirt/qemu/win7.xml for rtl8139. Se eu usar o Virtual Machine Manager ou o editor de texto nano para alterá-lo para virtIO, perco as conexões LAN para o host Ubuntu e a VM win7. Abaixo está a saída do ifconfig:

br0       Link encap:Ethernet  HWaddr 08:62:66:28:84:88  
          inet addr:192.168.1.75  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2602:304:cd91:e710:bd86:dd51:d7dd:bc0a/64 Scope:Global
          inet6 addr: fe80::a62:66ff:fe28:8488/64 Scope:Link
          inet6 addr: 2602:304:cd91:e710:a62:66ff:fe28:8488/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1094 errors:0 dropped:0 overruns:0 frame:0
          TX packets:151 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:79513 (79.5 KB)  TX bytes:18098 (18.0 KB)

eth0      Link encap:Ethernet  HWaddr 08:62:66:28:84:88  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1483 errors:0 dropped:0 overruns:0 frame:0
          TX packets:151 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:248992 (248.9 KB)  TX bytes:19177 (19.1 KB)
          Interrupt:20 Memory:dff00000-dff20000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:217 errors:0 dropped:0 overruns:0 frame:0
          TX packets:217 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:55759 (55.7 KB)  TX bytes:55759 (55.7 KB)

virbr0    Link encap:Ethernet  HWaddr 3a:13:59:8b:2e:07  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

O host Ubuntu e a VM Win7 estão obtendo seus endereços IP do DHCP. Minha seção de 'interfaces' é idêntica à sua, exceto pelo MAC e pelo tipo de modelo. Eu lhe dei informações erradas na minha última resposta. Estou usando o nano apenas para visualizar o texto no arquivo win7.xml. Não estou usando para editar o arquivo. Estou usando a GUI do Virtual Machine Manager para alterar o tipo de modelo entre rtl8139 e virtIO. Depois de fazer uma alteração, confirmo que o arquivo win7.xml mostra o valor do novo tipo de modelo usando nano para abrir o arquivo e examiná-lo.

Desculpe, mas estou tendo dificuldades para colar o arquivo xml na janela de edição. quando faço isso, posso ver o arquivo inteiro na janela de edição, mas apenas duas linhas aparecem na edição salva. Acho que talvez esteja tentando interpretar o arquivo e eliminando os caracteres especiais. Não consigo encontrar instruções sobre como colar um arquivo inteiro. Existe uma maneira de anexar o arquivo? A propósito - obrigado novamente por sua ajuda com este problema.

Responder1

Observe que, para um convidado do Windows, pode ser necessário instalar drivers especiais para que o virtio funcione corretamente. Por favor, veja estas referências:
http://wiki.libvirt.org/page/Virtio
http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
https://launchpad.net/kvm-guest-drivers-windows/+download

O seguinte é de uma das minhas VMs. Seu endereço MAC e linhas de endereço serão/podem ser diferentes:

    <interface type='bridge'>
      <mac address='52:54:00:c1:f1:b8'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

Você está dizendo que isso não funciona para você? Como a sub-rede 192.168.1.0 obtém seus endereços IP? Via dhcp ou estático?

Para contextualizar, abaixo está todo o arquivo .xml:

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit desk_tt
or other application using the libvirt API.
-->

<domain type='kvm'>
  <name>desk_tt</name>
  <uuid>4235912f-1d46-8866-22ba-c91bfe2a86b7</uuid>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-1.7'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm-spice</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/media/newhd/desk_tt.img'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'/>
    <interface type='bridge'>
      <mac address='52:54:00:c1:f1:b8'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vmvga' vram='16384' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
</domain>

informação relacionada