PVE 中虚拟化万兆网卡

2021-07-05 [硬件] #PVE #NCI #Network Interface Controller #10G #Homelab
更新日志
2021-07-09 添加标签: Homelab

去年自己攒了一台 E5 2680v4 * 2, 16G RECC * 8 的机器,一开始主要作为远程开发机 & Docker-Compose。 最近跑 k3s 集群并把 Docker-Compose 的服务迁到 k3s 上,于是重新规划系统资源,本文记录在搭建过程中关于在PVE中网络的配置。

在配置虚拟网卡前建议使用 iperf3 或其他工具测试 Linux Bridge 提供的网络性能是否满足需求。

安装Open_vSwitch

PVE 宿主安装 Open_vSwitch,具体可参考官方文档

apt update
apt install openvswitch-switch

创建虚拟网卡

  1. 宿主机的 System - Network

  2. 点击 Create 创建 OVS Bridge,默认名称应该是 vmbr1,可以调整或直接保存

创建 OVS Bridge

  1. 点击 Create 创建 OVS IntPort
    • Name: internal(可调整)
    • OVS Bridge 选择 刚刚创建的 OVS Bridge 名称: vmbr1

创建 OVS IntPort

为虚拟机添加网卡

到指定虚拟机的 Hardware 中添加 Network Device

为虚拟机添加网卡

虚拟机配置多网卡

虚拟机系统以 debian 10 为例,shell 进入虚拟机系统内。

# 查看网卡情况
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 4e:70:ec:64:03:41 brd ff:ff:ff:ff:ff:ff
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether a2:76:5e:67:9b:cc brd ff:ff:ff:ff:ff:ff

其中 ens18 是默认的 Linux Bridge 网卡,也就是vmbr0。ens19 是刚刚绑定的 OVS Bridge。

编辑网卡配置: sudo vim /etc/network/interfaces,使两个网卡正常工作: vmbr0 用外部网络访问,vmbr1 用于虚拟机内部通信。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens18
iface ens18 inet dhcp
# This is an autoconfigured IPv6 interface
iface ens18 inet6 auto


# 设置 ens19
allow-hotplug ens19
iface ens19 inet static
        # 绑定静态IP
        address 10.0.0.2/24
        gateway 10.0.0.1
        netmask 255.255.255.0
        up ip route del default dev ens19

其中,最后一个配置项: up ip route del default dev ens19, 意思是:当该网卡被启用时,删除该网卡的 default 路由。 可以通过 ip route show 查看路由情况。 若不删除 ens19 的 default 路由,重启网络/系统后,虚拟机将无法访问外部网络。因为存在两张网卡,系统将生成两个 default 路由,所有流量将被 ens19 接管,由于 ens19 是内部网卡,无法访问外部网络,导致虚拟机也无法访问外部网络。

测试虚拟速度

在任意两个虚拟机上安装iperf3

Connecting to host 10.0.0.9, port 5201
[  5] local 10.0.0.9 port 50026 connected to 10.0.0.9 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  2.47 GBytes  21.2 Gbits/sec    0   1.48 MBytes
[  5]   1.00-2.00   sec  2.27 GBytes  19.5 Gbits/sec    0   1.48 MBytes
[  5]   2.00-3.00   sec  2.10 GBytes  18.0 Gbits/sec    0   1.65 MBytes
[  5]   3.00-4.00   sec  2.01 GBytes  17.3 Gbits/sec    0   1.65 MBytes
[  5]   4.00-5.00   sec  2.00 GBytes  17.2 Gbits/sec    0   1.80 MBytes
[  5]   5.00-6.00   sec  2.04 GBytes  17.5 Gbits/sec    0   1.80 MBytes
[  5]   6.00-7.00   sec  2.00 GBytes  17.1 Gbits/sec    0   1.80 MBytes
[  5]   7.00-8.00   sec  2.01 GBytes  17.3 Gbits/sec    0   1.80 MBytes
[  5]   8.00-9.00   sec  1.88 GBytes  16.1 Gbits/sec    0   1.80 MBytes
[  5]   9.00-10.00  sec  1.93 GBytes  16.6 Gbits/sec    0   1.80 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  20.7 GBytes  17.8 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  20.7 GBytes  17.8 Gbits/sec                  receiver

iperf Done.
文章作者:eightpigs
创作时间:2021-07-05
更新时间:2021-07-05
许可协议:CC by-nc-nd 4.0