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

2877
phuclv

Моя виртуальная машина (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

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

1 ответ на вопрос

0
Seth

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

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

Я читал это раньше, когда узнал о virtio. Я не вижу, как они связаны здесь. Можете ли вы уточнить? phuclv 7 лет назад 0
Ну, это прямо говорит вам, что это не предназначено для замены «общих» сетевых интерфейсов, таких как eth0 и eth1, но вместо этого будет работать как специальное устройство. Следовательно, он отображается как virbr0, и вам придется настраивать его отдельно. В Linux у вас, вероятно, будет возможность просто переименовать файл устройства на тот случай, если вас беспокоит только название, но я бы посоветовал против этого, поскольку некоторые программы могут показаться странными, потому что ожидают стандартного сетевого интерфейса. Seth 7 лет назад 0
это то, что я спрашиваю. Я хочу включить и настроить его. Прямо сейчас у него есть некоторый IP-адрес, который не связан с хостом и не может быть достигнут хостом или любыми другими виртуальными машинами. phuclv 7 лет назад 0
Но это не то, что говорит твой вопрос. Ваш вопрос говорит о том, что вы хотите превратить eth0 / eth1 в устройство virtio-net. Из того, что я могу вам сказать, вы можете настроить их так же, как и любой другой сетевой интерфейс, только если имя будет другим. Вы на самом деле пытались настроить интерфейс? Если да, то с какими ошибками вы столкнулись или схожи? Вы, вероятно, должны переработать свой вопрос, чтобы показать, что вы знаете и уже попробовали, и какова ваша реальная цель. Seth 7 лет назад 0
Я понятия не имею о том, как работает virtio и как его настроить. Я просто хочу использовать их для моей виртуальной машины. Имена не важны, но сетевой путь должен быть точно таким, как определено. Я думал, что это просто сетевой адаптер, как и любой другой, но с определенной поддержкой виртуализации. Я проверил с помощью lsmod, но ни один модуль с именем virtio не загружен. phuclv 7 лет назад 0
Ваш вопрос говорит о том, что у вас появился интерфейс `virbr0`. Итак, вы пытались просто настроить этот интерфейс, используя обычные средства? Seth 7 лет назад 0
Как я уже сказал, я просто подумал, что это как обычный адаптер, так что просто подключите и используйте. Но это оказывается намного более сложным, чем я думал, вне сферы моего предыдущего понимания сети. Я просмотрел некоторые документы, но понятия не имею, как заставить это работать phuclv 7 лет назад 0
То есть вы не настраивали eht0 и eth1 самостоятельно? Ну, это действительно будет зависеть от того, что вам нужно сделать. Вы могли бы опубликовать это как самостоятельный вопрос. Seth 7 лет назад 0
Я настроил их сам, потому что это очень просто, просто некоторые изменения в IP, Mac-адресе или имени. Но этот virbr0 совершенно другой. Я не знаю, где он подключается, потому что нет открытого адаптера, а остальные eth0 и eth1 по-прежнему функционируют нормально phuclv 7 лет назад 0
Если вы действительно включили какой-то вывод в свой первоначальный вопрос, вы можете получить более полезные ответы. Поскольку у меня нет никаких оснований предполагать, что `virbr0` будет обрабатывать что-то другое, а с хостом Windows я, похоже, не смогу его воспроизвести. И, как я уже сказал, вам, вероятно, следует опубликовать это как самостоятельный вопрос (включая текущую конфигурацию) с вопросом, как настроить устройство virtio-net для репликации вашей конфигурации eth. Seth 7 лет назад 0
Я намеревался включить это в вопрос, но затем оставлю это, поскольку это не поможет, это просто еще один новый virbr0 помимо eth0 и eth1. Все IP-адреса, MAC-адреса и другая информация в старых не изменились phuclv 7 лет назад 0
@Seth Фраза в цитируемом абзаце довольно странная. Как и адаптеры VMware vmxnet, он, конечно, будет выглядеть как обычный сетевой адаптер для клиентской ОС. Так что на самом деле это «переключение eth0 на virtio». Это даже так с точки зрения конфигурации. Daniel B 7 лет назад 0