
내 VM(Ubuntu 12.04)에는 eth0
및 로 인식되는 2개의 네트워크 인터페이스가 연결되어 있습니다 eth1
.
이제 성능향상을 위해 카드를 virtio로 바꾸고 싶어서 열어봅니다.VM 설정두 어댑터 유형을 모두 다음으로 변경합니다.반가상화 네트워크(virtio-net)
그러나 재부팅한 후에도 성능은 훨씬 느린 것은 아니지만 동일한 것 같습니다. 출력을 확인하면 및 옆에 또 다른 인터페이스 ifconfig
가 있습니다 .virbr0
eth0
eth1
VirtualBox에서 유형을 변경하면 virtio 어댑터가 만들어지고 eth0
될 것이라고 생각했습니다. eth1
이것은 나중에 인터넷에서 찾은 몇 페이지를 통해 확인되었습니다. 어댑터 종류만 바꾸면 충분하고, 속도도 바로 좋아진다고 하더군요. 하지만 내 경우에는 그렇지 않습니다.
작동하도록 어댑터를 구성하는 방법은 무엇입니까?
구성은 이렇습니다. eth0
외부 네트워크에 대한 브리지입니다. eth1
호스트 전용 어댑터입니다.
$ 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)
실행했지만 lsmod | grep virt
결과가 표시되지 않습니다. 둘 다 insmod
아무것도 보여주지 않아virtio_net
$ insmod virt<tab><tab>
virtio_balloon virtio_console virtio_mmio virtio-rng virtual
현재 커널 Linux vmdev 3.2.0-124-generic #167-Ubuntu SMP Fri Mar 3 15:26:21 UTC 2017 i686 i686 i386 GNU/Linux
. virtio 드라이버 로딩을 활성화하는 데 필요한 옵션이 있습니까?
/etc/udev/rules.d/70-persistent-net.rules
어댑터의 MAC 주소를 다시 생성할 때의 설명을 제외하고 파일에는 virtio와 관련된 내용이 전혀 표시되지 않습니다.
나는 많은 테스트를 수행했으며 iperf
Intel PRO/1000 어댑터를 사용한 결과는 약 250-350Mbps인 반면 virtio-net 카드를 사용한 결과는 항상 100-150Mbps 사이로 내 기대보다 훨씬 낮았습니다. 그래서 해결책을 찾을 때까지 지금 당장 e1000 카드로 다시 전환할 예정입니다.
인터넷에서 몇 가지 가능한 관련 문제를 보았지만 지금까지 해결할 수 있는 방법이 없습니다.
- 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
편집하다:
내 프로젝트가 새로운 64비트 Ubuntu 14.04 VM( 3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
)으로 업데이트되었지만 결과는 여전히 동일합니다. virtio는 여전히 Intel 1000보다 훨씬 느립니다.
답변1
수동6장. 가상 네트워킹:
"반가상화 네트워크 어댑터(virtio-net)"는 특별합니다. 이 옵션을 선택하면 VirtualBox는 일반 네트워킹 하드웨어(기본적으로 일반 게스트 운영 체제에서 지원됨)를 가상화하지 않습니다. 대신 VirtualBox는 게스트가 제공하는 가상화된 환경을 위한 특별한 소프트웨어 인터페이스를 기대하므로 네트워킹 하드웨어를 에뮬레이트하는 복잡성을 피하고 네트워크 성능을 향상시킬 수 있습니다. 버전 3.1부터 VirtualBox는 오픈 소스 KVM 프로젝트의 일부인 업계 표준 "virtio" 네트워킹 드라이버를 지원합니다.