Как включить virtio в Virtualbox?

4

Моя виртуальная машина (Ubuntu 12.04) имеет 2 подключенных сетевых интерфейса, которые распознаются как eth0и eth1.

Теперь я хочу изменить карты на virtio для повышения производительности, поэтому я открываю настройки виртуальной машины и меняю оба типа адаптеров на паравиртуализированную сеть (virtio-net)

Но после перезагрузки производительность кажется такой же, если не сказать еще медленнее, и когда я проверил ifconfigвывод, появился другой virbr0интерфейс eth0и eth1.

Я думал, что изменение типа в VirtualBox сделает eth0и eth1станет адаптером virtio. Это было позже подтверждено несколькими страницами, которые я нашел в Интернете. Они сказали, что достаточно просто поменять тип адаптера и скорость сразу улучшится. Но в моем случае это не так.

Как настроить адаптеры, чтобы он работал?

Конфигурация такая. 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показывает ничего, связанного с virtio, кроме как в комментарии, когда я воссоздаю MAC-адрес адаптера

Я провел много тестов, iperfи результаты с адаптером Intel PRO / 1000 варьируются в пределах 250-350 Мбит / с, в то время как результаты для карт virtio-net всегда лежат между 100-150 Мбит / с, что намного ниже моих ожиданий. Поэтому я переключаюсь обратно на карту e1000 прямо сейчас, пока не будет найдено решение.

Я видел некоторые возможные проблемы в интернете, но до сих пор не смог решить


Редактировать:

Мой проект обновился до новой 64-битной виртуальной машины 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), но результаты остались прежними. virtio по-прежнему намного медленнее Intel 1000

phuclv
источник
virbr0Интерфейс не создаются VirtualBox или Virtio внутрисетевого водителем. Вероятно, это результат установки libvirt. Кроме того, я бы не рассчитывал, что virtio-net сделает вещи быстрее. Реализация VirtualBox может быть просто дерьмом.
Даниэль Б
@DanielB virbr0 появляется только после переключения типа адаптера на virtio-net
phuclv
Тем не менее, драйвер virtio-net не создает эти интерфейсы. Я создал виртуальную машину VirtualBox с Ubuntu 12.04. Это если конечно нет virbr0моста. Известно, что libvirt его создает.
Даниэль Б

Ответы:

0

Руководство Глава 6. Виртуальные сети :

«Паравиртуализированный сетевой адаптер (virtio-net)» является особенным. Если вы выберете это, VirtualBox не будет виртуализировать обычное сетевое оборудование (которое поддерживается обычными гостевыми операционными системами из коробки). Вместо этого VirtualBox ожидает, что гость предоставит специальный программный интерфейс для виртуализированных сред, что позволит избежать сложности эмуляции сетевого оборудования и повышения производительности сети. Начиная с версии 3.1, VirtualBox обеспечивает поддержку стандартных сетевых драйверов «virtio», которые являются частью проекта KVM с открытым исходным кодом.

Сет
источник
Я читал это раньше, когда узнал о virtio. Я не вижу, как они связаны здесь. Можете ли вы уточнить?
phuclv
Ну, это прямо говорит вам, что это не предназначено для замены «общих» сетевых интерфейсов, таких как eth0 и eth1, но вместо этого будет работать как специальное устройство. Следовательно, он отображается как virbr0, и вам придется настраивать его отдельно. В Linux у вас, вероятно, будет возможность просто переименовать файл устройства на тот случай, если вас беспокоит только название, но я бы посоветовал против этого, так как некоторые программы могут показаться странными, потому что ожидают стандартного сетевого интерфейса.
Сет
это то, что я спрашиваю. Я хочу включить и настроить его. Прямо сейчас у него есть некоторый IP-адрес, который не связан с хостом и не может быть достигнут хостом или любыми другими виртуальными машинами
phuclv
Но это не то, что говорит твой вопрос. Ваш вопрос говорит о том, что вы хотите превратить eth0 / eth1 в устройство virtio-net. Из того, что я могу вам сказать, вы можете настроить их так же, как и любой другой сетевой интерфейс, только если имя будет другим. Вы на самом деле пытались настроить интерфейс? Если да, то с какими ошибками вы столкнулись или схожи? Вы, вероятно, должны переработать свой вопрос, чтобы показать, что вы знаете и уже попробовали и какова ваша реальная цель.
Сет
Я понятия не имею, как работает virtio и как его настроить. Я просто хочу использовать их для моей виртуальной машины. Имена не важны, но сетевой путь должен быть точно таким, как определено. Я думал, что это просто сетевой адаптер, как и любой другой, но с определенной поддержкой виртуализации. Я проверил с помощью lsmod, но ни один модуль с именем virtio не загружен.
phuclv