Wie kann man virtio in Virtualbox aktivieren?

2949
phuclv

An meine VM (Ubuntu 12.04) sind 2 Netzwerkschnittstellen angeschlossen, die als eth0und erkannt werden eth1.

Jetzt möchte ich die Karten in virtio ändern, um die Leistung zu verbessern, also öffne ich die VM-Einstellungen und ändere die beiden Adaptertypen in Paravirtualized Network (virtio-net).

Nach dem Neustart scheint die Leistung jedoch die gleiche zu sein, um nicht zu sagen, dass sie viel langsamer ist. Wenn ich die ifconfigAusgabe überprüfe, gibt es virbr0neben eth0und eine weitere Schnittstelle eth1.

Ich dachte, dass die Art in VirtualBox Wechsel machen eth0und eth1ein virtio Adapter werden. Dies wurde später durch einige Seiten im Internet bestätigt. Sie sagten, dass bereits ein Wechsel des Adaptertyps ausreicht und die Geschwindigkeit sofort verbessert wird. Aber in meinem Fall ist es nicht so.

Wie konfiguriere ich die Adapter, damit es funktioniert?

Die Konfiguration ist so. eth0ist eine Brücke zum externen Netzwerk. eth1ist ein Host-Only-Adapter

$ 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) 

Ich bin gelaufen, lsmod | grep virtaber es wird kein Ergebnis angezeigt. insmodzeigt nichts, wie virtio_netentweder

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

Der aktuelle Kernel Linux vmdev 3.2.0-124-generic #167-Ubuntu SMP Fri Mar 3 15:26:21 UTC 2017 i686 i686 i386 GNU/Linux. Gibt es irgendwelche Optionen, um das Laden des virtio Treibers zu ermöglichen?

Die Datei /etc/udev/rules.d/70-persistent-net.ruleszeigt auch nichts in Bezug auf virtio, außer im Kommentar, wenn ich die MAC-Adresse des Adapters neu generiere

Ich habe viele Tests mit iperfdem Intel PRO / 1000-Adapter durchgeführt und variiert um 250-350 Mbps, während die Ergebnisse mit der virtio-net-Karte immer zwischen 100-150 Mbps liegen, weit unter meinen Erwartungen. Also wechsle ich jetzt wieder zur e1000-Karte, bis eine Lösung gefunden wird.

Ich habe einige mögliche Probleme im Internet gesehen, aber bisher keine Lösung gefunden


Bearbeiten:

Mein Projekt wurde auf eine neue 64-Bit-Version von Ubuntu 14.04 ( 3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux) aktualisiert, die Ergebnisse sind jedoch immer noch gleich. virtio ist immer noch viel langsamer als Intel 1000

3
Die `virbr0`-Schnittstelle wird nicht von VirtualBox oder dem virtio-net-Treiber erstellt. Es ist wahrscheinlich das Ergebnis der Installation von libvirt. Ich würde auch nicht darauf zählen, dass virtio-net die Dinge schneller macht. Die VirtualBox-Implementierung kann nur Mist sein. Daniel B vor 6 Jahren 0
@DanielB Das virbr0 wird erst angezeigt, nachdem der Adaptertyp auf virtio-net umgestellt wurde phuclv vor 6 Jahren 0
Der virtio-net-Treiber erstellt diese Schnittstellen jedoch nicht. Ich habe eine VirtualBox VM mit Ubuntu 12.04 erstellt. Es hat natürlich keine "virbr0" -Brücke. libvirt ist dafür bekannt, es zu schaffen. Daniel B vor 6 Jahren 0

1 Antwort auf die Frage

0
Seth

Handbuch Kapitel 6. Virtuelle Vernetzung :

Der "Paravirtualisierte Netzwerkadapter (virtio-net)" ist etwas Besonderes. Wenn Sie diese Option auswählen, virtualisiert VirtualBox keine gebräuchliche Netzwerkhardware (die von gängigen Gastbetriebssystemen standardmäßig unterstützt wird). Stattdessen erwartet VirtualBox dann eine spezielle Softwareschnittstelle für virtualisierte Umgebungen, die vom Gast zur Verfügung gestellt wird. Auf diese Weise kann die Emulation von Netzwerkhardware vermieden und die Netzwerkleistung verbessert werden. Ab Version 3.1 bietet VirtualBox Unterstützung für die branchenüblichen "virtio" -Netzwerktreiber, die Teil des Open-Source-KVM-Projekts sind.

Ich habe das schon einmal gelesen, als ich von virtio erfuhr. Ich sehe nicht, wie sie hier verwandt sind. Kannst du das näher erläutern? phuclv vor 7 Jahren 0
Nun, es sagt direkt, dass es nicht beabsichtigt ist, "gewöhnliche" Netzwerkschnittstellen wie eth0 und eth1 zu ersetzen, sondern funktioniert als spezielles Gerät. Daher wird es als virbr0 angezeigt und Sie müssen es separat konfigurieren. Unter Linux haben Sie wahrscheinlich eine Möglichkeit, die Gerätedatei einfach umzubenennen, falls Sie sich nur um den Namen sorgen, aber ich würde davon abraten, da bestimmte Software möglicherweise funky wirkt, da sie eine Standard-Netzwerkschnittstelle erwartet. Seth vor 7 Jahren 0
das frage ich. Ich möchte es aktivieren und konfigurieren. Im Moment hat es eine IP-Adresse, die nicht mit dem Host zusammenhängt und für den Host oder andere VMs nicht erreichbar ist phuclv vor 7 Jahren 0
Aber deine Frage sagt es nicht. Ihre Frage lautet, dass Sie aus eth0 / eth1 ein virtio-net-Gerät machen möchten. Von dem, was ich sagen kann, würden Sie sie wie jede andere Netzwerkschnittstelle konfigurieren, nur dass der Name anders wäre. Haben Sie tatsächlich versucht, die Schnittstelle zu konfigurieren? Wenn ja, auf welche Fehler sind Sie oder ähnliches gestoßen? Sie sollten Ihre Frage wahrscheinlich überarbeiten, um tatsächlich zu zeigen, was Sie wissen und bereits versucht haben und was Ihr eigentliches Ziel ist. Seth vor 7 Jahren 0
Ich habe keine Ahnung, wie virtio funktioniert und wie man es konfiguriert. Ich möchte sie nur für meine VM verwenden. Namen sind nicht wichtig, aber der Netzwerkpfad muss genau wie definiert sein. Ich dachte, es ist nur ein Netzwerkadapter wie jeder andere, aber mit spezifischer Virtualisierungsunterstützung. Ich habe mit lsmod geprüft, aber kein Modul namens virtio ist geladen. phuclv vor 7 Jahren 0
Ihre Frage besagt, dass Sie eine Schnittstelle "virbr0" haben, die angezeigt wurde. Haben Sie also versucht, diese Schnittstelle mit den üblichen Mitteln zu konfigurieren? Seth vor 7 Jahren 0
Wie gesagt, ich dachte nur, dass es wie ein normaler Adapter ist, also einfach anschließen und verwenden. Es stellt sich jedoch viel komplexer dar, als ich dachte, außerhalb meines bisherigen Netzwerkverständnisses. Ich habe einige Dokumente durchgearbeitet, habe aber keine Ahnung, wie das funktioniert phuclv vor 7 Jahren 0
Sie haben also eht0 und eth1 nicht selbst konfiguriert? Nun, es würde wirklich davon abhängen, was Sie tun müssen. Sie könnten es möglicherweise als unabhängige Frage posten. Seth vor 7 Jahren 0
Ich habe diese von mir selbst konfiguriert, weil es sehr einfach ist, nur ein paar Änderungen an IP-Adresse, Mac-Adresse oder Namen. Dieses virbr0 ist jedoch völlig anders. Ich weiß nicht, wo die Verbindung hergestellt wird, da kein Adapter verfügbar ist und die verbleibenden eth0 und eth1 noch normal funktionieren phuclv vor 7 Jahren 0
Wenn Sie tatsächlich etwas in Ihre ursprüngliche Frage aufgenommen haben, erhalten Sie möglicherweise hilfreiche Antworten. Da dies der Fall ist, habe ich keinen Grund anzunehmen, dass `virbr0` anders gehandhabt wird, und mit einem Windows-Host kann ich es wahrscheinlich nicht replizieren. Und wie gesagt, sollten Sie dies wahrscheinlich als unabhängige Frage (einschließlich der aktuellen Konfiguration) posten und fragen, wie Sie ein virtio-net-Gerät einrichten, um Ihre eth-Konfiguration zu replizieren. Seth vor 7 Jahren 0
Ich habe beabsichtigt, es in die Frage aufzunehmen, aber lassen Sie es, da es keine Hilfe ist, es ist nur eine weitere neue virbr0 neben eth0 und eth1. Alle IPs, MACs und anderen Informationen in den alten haben sich nicht geändert phuclv vor 7 Jahren 0
@Seth Die Formulierung im zitierten Absatz ist ziemlich seltsam. Genau wie die VMXnet-Adapter von VMware wird er dem Client-Betriebssystem natürlich als normaler Netzwerkadapter angezeigt. Also ist es eigentlich * "Umstellung von Eth0 auf Virtio". Es ist sogar aus der Sicht der Konfiguration so. Daniel B vor 6 Jahren 0