Я пытаюсь добавить виртуальную машину в vlan, который я создал через мост. У меня есть сервер с 4 сетевыми картами. 2 (eno1 и eno2) — это 1-гигабитные сетевые карты управления, а 2 других (enp1s0f0 и enp1s0f1) — это 10-гигабитные сетевые карты пересылки. Вот моя сетевая конфигурация через .yaml в netplan:
network:
version: 2
renderer: networkd
ethernets:
eno1: {}
eno2: {}
enp1s0f0: {}
enp1s0f1: {}
bonds:
bond_10G:
interfaces:
- enp1s0f0
- enp1s0f1
parameters:
mode: balance-rr
bond_mgmt:
addresses:
- 192.168.21.228/24
gateway4: 192.168.21.1
interfaces:
- eno1
- eno2
nameservers:
addresses:
- 192.168.91.5
- 192.168.91.6
search:
- blah.net
parameters:
mode: active-backup
vlans:
vlan66:
dhcp4: no
dhcp6: no
accept-ra: no
id: 66
link: bond_10G
vlan69:
dhcp4: no
dhcp6: no
accept-ra: no
id: 69
link: bond_10G
vlan2232:
dhcp4: no
dhcp6: no
accept-ra: no
id: 2232
link: bond_10G
bridges:
br66:
dhcp4: no
dhcp6: no
interfaces: [ vlan66 ]
br69:
dhcp4: no
dhcp6: no
interfaces: [ vlan69 ]
br2232:
dhcp4: no
dhcp6: no
interfaces: [ vlan2232 ]
Я могу увидеть их все, когда делаю brctl show
:
$ brctl show
bridge name bridge id STP enabled interfaces
br2232 8000.9e3e2f786260 no vlan2232
br66 8000.16545d040c3a no vlan66
br69 8000.92c5912a358b no vlan69
virbr0 8000.525400e3bdfa yes virbr0-nic
Когда я вхожу в этот QEMU/KVM через virt-manager, я получаю только опцию virbr0, а другие мосты не перечислены как опции для добавления. Есть ли способ сделать это через virsh
или я просто делаю это неправильно в virt-manager?
Я также пытался добавить его через virt-install
, но он не попал в нужный vlan:
sudo virt-install \
--name deb9-vm \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/deb9-vm.qcow2,size=20 \
--os-type linux \
--os-variant debian9 \
--network bridge=br66 \
--graphics none \
--console pty,target_type=serial \
--location 'http://ftp.debian.org/debian/dists/stretch/main/installer-amd64/' \
--extra-args 'console=ttyS0,115200n8 serial'
Думаю, мой вопрос в том, как сделать так, чтобы другие мосты отображались в качестве опций для виртуальной машины?
решение1
libvirt (и, следовательно, virt-manager, virt-install, ...) не исследуют/не знают фактические мосты в системе. Вы уже определили свои vlan и мосты через netplan, что отлично и является правильным шагом №1.
По умолчанию есть только default
сеть, которая является локальным мостом на основе NAT, вам нужно определить сеть. В ней вы контролируете, какие мосты, режимы пересылки и т. д. используются - и должен ли libvirt порождать, например, dhcp на ней (как это было бы на локальном мосту по умолчанию).
Существует большой ресурспримеры netplanкоторые расширены до сих пор, пока не документированные случаи найдены. Но ваш случай довольно распространен и там, он также имеет минимальный фрагмент того libvirt network xml как:
<network>
<name>vlan66</name>
<bridge name='br66'/>
<forward mode="bridge"/>
</network>
Используя вышеизложенное и адаптируя его к вашим нуждам, вы можете тогда, virsh net-define <xmlfilename>
что позволит libvirt узнать о сети. Затем вы можете увидеть их в virsh net-list
virt-manager и других инструментах.