
An meine VM (Ubuntu 12.04) sind 2 Netzwerkschnittstellen angeschlossen, die als eth0
und erkannt werden eth1
.
Jetzt möchte ich die Karten auf Virtio umstellen, um die Leistung zu verbessern, also öffne ichVM-Einstellungenund ändern Sie die Typen beider Adapter inParavirtualisiertes Netzwerk (virtio-net)
Aber nach dem Neustart scheint die Leistung dieselbe zu sein, um nicht zu sagen, dass sie sogar viel langsamer ist, und als ich ifconfig
die Ausgabe überprüft habe, gab es neben und eine andere virbr0
Schnittstelle .eth0
eth1
Ich dachte, dass durch Ändern des Typs in VirtualBox ein Virtio-Adapter erstellt wird eth0
. eth1
Dies wurde später durch einige Seiten bestätigt, die ich im Internet fand. Dort hieß es, dass es ausreicht, nur den Adaptertyp zu ändern, und die Geschwindigkeit sofort verbessert wird. In meinem Fall ist das aber nicht der Fall.
Wie konfiguriere ich die Adapter, damit es funktioniert?
Die Konfiguration sieht folgendermaßen aus: eth0
ist eine Brücke zum externen Netzwerk. eth1
ist 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 habe es versucht lsmod | grep virt
, aber es wird kein Ergebnis angezeigt. insmod
zeigt nichts wie virtio_net
entweder
$ 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 Optionen, die ich brauche, um das Laden des Virtio-Treibers zu aktivieren?
Die Datei /etc/udev/rules.d/70-persistent-net.rules
zeigt auch nichts im Zusammenhang mit Virtio, außer im Kommentar, wenn ich die MAC-Adresse des Adapters neu generiere
Ich habe viele Tests durchgeführt iperf
und die Ergebnisse mit dem Intel PRO/1000-Adapter schwanken um 250-350 Mbit/s, während die Ergebnisse mit der Virtio-Net-Karte immer zwischen 100-150 Mbit/s liegen, weit unter meinen Erwartungen. Daher wechsle ich jetzt wieder zur e1000-Karte, bis eine Lösung gefunden ist.
Ich habe im Internet einige mögliche verwandte Probleme gesehen, aber bisher keine Möglichkeit, sie zu lösen
- https://getsatisfaction.cumulusnetworks.com/cumulus/topics/cumulus-vx-virtualbox-virtio-nic-slow
- https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/1079212
- https://forums.virtualbox.org/viewtopic.php?f=7&t=26783
Bearbeiten:
Mein Projekt wurde auf eine neue 64-Bit Ubuntu 14.04 VM () aktualisiert, 3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
aber die Ergebnisse sind immer noch dieselben. Virtio ist immer noch viel langsamer als Intel 1000
Antwort1
HandbuchKapitel 6. Virtuelle Netzwerke:
Der „Paravirtualisierte Netzwerkadapter (virtio-net)“ ist etwas Besonderes. Wenn Sie diesen auswählen, virtualisiert VirtualBox keine gängige Netzwerkhardware (die von gängigen Gastbetriebssystemen standardmäßig unterstützt wird). Stattdessen erwartet VirtualBox dann, dass vom Gast eine spezielle Softwareschnittstelle für virtualisierte Umgebungen bereitgestellt wird. Dadurch wird die Komplexität der Emulation von Netzwerkhardware vermieden und die Netzwerkleistung verbessert. Ab Version 3.1 bietet VirtualBox Unterstützung für die branchenübliche „virtio“-Netzwerktreiber, die Teil des Open-Source-KVM-Projekts sind.