我在具有两个物理网卡(1Gbps)的服务器上运行 30 个 libvirt 定义的 KVM VM。
目前我正在使用 NATted 虚拟网络,定义虚拟机的接口(作为完整虚拟机定义的一部分,而不是单独的网络定义),如下所示:
<interface type='bridge'>
<source bridge='virbr0'/>
<target dev='vnet0'/>
<model type='virtio'/>
<alias name='net0'/>
</interface>
[编辑] 一切按预期运行。30 台虚拟机使用主机的默认以太网接口 - 但其带宽上限为 1Gbps。
为了最大限度地提高虚拟机的吞吐量(特别是 RX),我希望一半的虚拟机使用其中一个物理网卡,另一半使用另一个网卡。主机也必须使用其中一个网卡。
可以这样做吗?我正在寻找虚拟机上的最大 RX 性能。
我们不能使用桥接模式,因为我们可能没有足够的 IP 来支持我们想要运行的虚拟机数量(在该服务器的多个副本上)。
答案1
今年早些时候,我遇到了同样的问题,这是我经过一番研究后得出的结论。
一般来说,物流如下;由于您已经创建了 xml 文件,因此您需要首先定义网络,启动并使其随服务启动自动运行,然后需要将其附加到您选择的 VM。
例如,如果您有一个 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 管理的答案:
另外,也许你想检查一下座舱。它为您的服务器提供了一个基于 Web 的界面,您可以通过常规存储库将其添加到您的计算机。添加 cockpit-machines 软件包后,您可以为您的服务器提供一个非常整洁的管理环境。不过,我建议您手动安装它,因为存储库中的版本比当前版本早几个版本。
希望这可以帮助。