KVM:如何将虚拟机添加到特定桥接器

KVM:如何将虚拟机添加到特定桥接器

我正在尝试将虚拟机添加到我通过网桥创建的 vlan。我有一台带有 4 个 NIC 的服务器。其中 2 个(eno1 和 eno2)是 1Gig 管理 NIC,另外 2 个(enp1s0f0 和 enp1s0f1)是 10Gig 转发 NIC。以下是通过 netplan 中的 .yaml 进行的网络配置:

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

当我通过 virt-manager 登录此 QEMU/KVM 时,我仅获得 virbr0 选项,而其他桥接器未列为添加它们的选项。有没有办法通过 virt-manager 做到这一点,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 等)不探测/了解系统上的实际网桥。您已经通过 netplan 定义了您的 VLAN 和网桥,这很好,也是正确的步骤 #1。

默认情况下,只有default基于 NAT 的本地桥接网络,您需要定义一个网络。在其中,您可以控制使用哪些桥接、转发模式等 - 以及 libvirt 是否应该在其上生成 dhcp(就像它在本地默认桥接上所做的那样)。

这里有丰富的资源netplan 示例这些扩展仍在进行中,但尚未发现未记录的案例。但您的案例相当常见,其中还包含 libvirt 网络 xml 的最小片段,例如:

<network>
  <name>vlan66</name>
  <bridge name='br66'/>
  <forward mode="bridge"/>
</network>

使用上述方法并根据您的需要进行调整,您就可以virsh net-define <xmlfilename>让 libvirt 了解网络。然后您可以在virsh net-listvirt-manager 和其他工具中看到它们。

相关内容