¿Cómo habilitar virtio en Virtualbox?

¿Cómo habilitar virtio en Virtualbox?

Mi VM (Ubuntu 12.04) tiene 2 interfaces de red conectadas que se reconocen como eth0y eth1.

Ahora quiero cambiar las tarjetas a virtio para mejorar el rendimiento, así que abroConfiguración de máquina virtualy cambie los tipos de ambos adaptadores aRed paravirtualizada (virtio-net)

Pero después de reiniciar, el rendimiento parece ser el mismo, por no decir mucho más lento, y cuando revisé ifconfigel resultado hay otra virbr0interfaz al lado de eth0y eth1.

Pensé que cambiar el tipo en VirtualBox me convertiría eth0en eth1un adaptador virtio. Esto fue confirmado más tarde por algunas páginas que encontré en Internet. Dijeron que basta con cambiar el tipo de adaptador y la velocidad mejorará de inmediato. Pero en mi caso no lo es.

¿Cómo configurar los adaptadores para que funcione?

La configuración es así. eth0es un puente hacia la red externa. eth1es un adaptador solo de host

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:62:0d:bd
          inet addr:10.184.130.70  Bcast:10.184.130.255  Mask:255.255.240.0
          inet6 addr: fe80::a00:27ff:fe64:dbd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:411321 errors:0 dropped:2 overruns:0 frame:0
          TX packets:118875 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:298154310 (298.1 MB)  TX bytes:65017532 (65.0 MB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9d:6b:df
          inet addr:172.17.0.6  Bcast:172.17.255.255  Mask:255.255.0.0
          inet6 addr: fe80::a00:27ff:fe8d:6bdf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12445 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1275663 (1.2 MB)  TX bytes:8705940 (8.7 MB)

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:16436  Metric:1
          RX packets:8538 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8538 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2286738 (2.2 MB)  TX bytes:2286738 (2.2 MB)

virbr0    Link encap:Ethernet  HWaddr 76:ee:57:37:78:7c
          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)

Lo ejecuté lsmod | grep virtpero no se muestra ningún resultado. insmodno muestra nada virtio_netparecido

$ insmod virt<tab><tab>
virtio_balloon  virtio_console  virtio_mmio     virtio-rng      virtual

El núcleo actual Linux vmdev 3.2.0-124-generic #167-Ubuntu SMP Fri Mar 3 15:26:21 UTC 2017 i686 i686 i386 GNU/Linux. ¿Necesito alguna opción para habilitar la carga del controlador virtio?

El archivo /etc/udev/rules.d/70-persistent-net.rulestampoco muestra nada relacionado con virtio, excepto en el comentario cuando regenero la dirección MAC del adaptador.

He realizado muchas pruebas iperfy los resultados con el adaptador Intel PRO/1000 varían entre 250 y 350 Mbps, mientras que los resultados con la tarjeta virtio-net siempre se encuentran entre 100 y 150 Mbps, muy por debajo de mis expectativas. Así que voy a volver a usar la tarjeta e1000 ahora mismo hasta que encuentre una solución.

He visto algunos posibles problemas relacionados en Internet, pero hasta ahora no hay forma de resolverlos.


Editar:

Mi proyecto se actualizó a una nueva máquina virtual Ubuntu 14.04 de 64 bits ( 3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux), pero los resultados siguen siendo los mismos. virtio sigue siendo mucho más lento que Intel 1000

Respuesta1

ManualCapítulo 6. Redes virtuales:

El "Adaptador de red paravirtualizado (virtio-net)" es especial. Si selecciona esto, VirtualBox no virtualiza el hardware de red común (que es compatible con los sistemas operativos invitados comunes listos para usar). En cambio, VirtualBox espera que el huésped proporcione una interfaz de software especial para entornos virtualizados, evitando así la complejidad de emular hardware de red y mejorando el rendimiento de la red. A partir de la versión 3.1, VirtualBox brinda soporte para los controladores de red "virtio" estándar de la industria, que forman parte del proyecto KVM de código abierto.

información relacionada