Я использую 30 виртуальных машин KVM, определенных libvirt, на сервере с двумя физическими сетевыми адаптерами (1 Гбит / с).
В настоящее время я использую виртуальные сети с NAT, определяя интерфейсы виртуальных машин (как часть полного определения виртуальной машины, а не отдельного определения сети) следующим образом:
<interface type='bridge'>
<source bridge='virbr0'/>
<target dev='vnet0'/>
<model type='virtio'/>
<alias name='net0'/>
</interface>
[EDIT] Это работает как задумано. 30 виртуальных машин используют интерфейс Ethernet по умолчанию хоста, но пропускная способность на нем ограничена 1 Гбит / с.
Чтобы максимизировать пропускную способность (в частности, RX) для виртуальных машин, я бы хотел, чтобы половина виртуальных машин использовала одну из физических сетевых адаптеров, а другая половина - другую сетевую карту. Хост также должен будет использовать одну из этих сетевых адаптеров.
Можно ли это сделать? Я ищу максимальную производительность RX на виртуальных машинах.
Мы не можем использовать мостовой режим, так как у нас, вероятно, недостаточно доступных IP-адресов для того количества виртуальных машин, которое мы собираемся запускать (на нескольких копиях этого сервера).
Ранее в этом году у меня была такая же проблема, и я пришел к ней после некоторых исследований.
В целом логистика следующая; Поскольку у вас есть созданные файлы xml, вам необходимо сначала определить сеть, запустить и включить ее автозапуск с запуском службы, а затем вам нужно прикрепить ее к выбранной виртуальной машине.
Например, если у вас есть файл net0.xml, выполните:
$ sudo virsh net-define net0.xml //To define the network from the xml file without starting it
$ sudo virsh net-start net0 //To start an already defined network
$ sudo virsh net-autostart net0 //To configure the net0 network to automatically start along with the service
Для подтверждения создания моста вы можете выполнить:
$ ip a
или
$ virsh net-list --all
Теперь, чтобы подключить сеть к виртуальной машине, выполните:
$ sudo virsh attach-interface --domain <vm-name-here> --type bridge \
--source net0 --model virtio --config --live
С помощью следующей команды вы можете проверить, какие виртуальные сети вы подключили к конкретной виртуальной машине.
$ sudo virsh domiflist <vm-name-here>
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 bridge virbr0 virtio 52:54:00:e9:ad:17
vnet1 bridge net0 virtio 52:54:00:47:e1:eb
Если вам нужно отсоединить сеть от вашей виртуальной машины (например, сеть по умолчанию или ранее созданную и подключенную), вы можете выполнить указанную выше команду, чтобы скопировать MAC-адрес, а затем следующую команду, чтобы отсоединить интерфейс от вашей виртуальной машины.
$ sudo virsh detach-interface --domain <vm-name-here> --type bridge --mac
52:54:00:47:e1:eb --config
$ sudo virsh domiflist <vm-name-here>
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 bridge net0 virtio 52:54:00:e9:ad:17
Если по какой-либо причине мост не подключен, вы можете выдать:
$ sudo nmcli connection up net0
И чтобы увидеть особенности соединения net0, вы можете сделать это с помощью:
$ sudo nmcli connection show net0
С помощью следующей команды вы можете проверить список сетей, который вы создали для своих виртуальных машин, а также вы можете проверить флаги, которые соответствуют состоянию, постоянству и автозапуску каждой сети.
virsh net-list --all
Все задокументировано Вот и они говорят это лучше, чем я.
Как правило, я нашел много ответов на следующих сайтах, касающихся гипервизора KVM или администрирования Linux:
Документация по интерфейсам RedHat-Network
Кроме того, может быть, вы хотите проверить Кокпит. Он предоставляет веб-интерфейс для вашего сервера, и вы можете добавить его на свой компьютер через обычный репозиторий. С добавлением пакетов cockpit-machines вы можете получить довольно удобную среду управления для вашего сервера. Я рекомендую вам установить его вручную, так как версия в репозитории на несколько версий меньше текущей.
Надеюсь это поможет.