Назад | Перейти на главную страницу

libvirt KVM virtualisation - определите, чтобы одни гости использовали одну сетевую карту, а другие - другую?

Я использую 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:

Tecmint

Документация по интерфейсам RedHat-Network

Кроме того, может быть, вы хотите проверить Кокпит. Он предоставляет веб-интерфейс для вашего сервера, и вы можете добавить его на свой компьютер через обычный репозиторий. С добавлением пакетов cockpit-machines вы можете получить довольно удобную среду управления для вашего сервера. Я рекомендую вам установить его вручную, так как версия в репозитории на несколько версий меньше текущей.

Надеюсь это поможет.