【值得买】12核魔改套装搭配PVE7.1开启万兆X520的SR-IOV(all in one)
我的PVE主机目前有3块网卡,一个板载千兆,一个usb千兆,一个pci-e千兆,搭配一个8口tp塑料壳子傻瓜交换机,你说千兆有点瓶颈呢,但其实群晖又是用的机械盘。。。嗯,瓶颈其实是硬盘吧哈哈,话说回来其实看起来又蛮般配。
但是呢,经常逛淘宝看到4口的千兆网卡都要600元,单口2.5G也要150元,看到很想要,但是一直舍不得买,
我家有两条宽带,想要玩出更多玩法,把两条宽带全部利用起来就需要涉及到vlan划分和vlan拨号,所以之前都是用newifi3d2汇聚两个宽带,虽然也没有感觉到性能瓶颈。。
那我到底想干嘛?好吧,我其实想用一张万兆网卡ALL IN ONE 用50年哈哈哈哈。。
Proxmox ve 主机主要配置:
所需硬件全为淘宝或者闲鱼自费购入,型号可查,就不发图片了,纯分享。
cpu:qnvh Intel8代笔记本6核12线程 UHD630 主频3G 450元
主板:技嘉z170x gaming3 6个pcie插槽(需要魔改bios) 220元
内存: DDR4 24G 400元
网卡:两个x520单口万兆光纤网卡 芯片是intel82599 才5瓦 165元x2
交换机:飞鱼星vs6024xa,28口2层网管交换机,包含24口千兆rj45和4口万兆sfp+,功耗23瓦 288元
OK 我们算一下多少钱
450+220+400+330+288=1688元
如果你只是增加万兆网卡和万兆交换机,那成本就更低啦,只要600元左右,怎么样?
主要分享的内容:
【网管交换机vlan划分】
【开机启用SR-IOV分配VF并固定MAC地址】
【SR-IOV直通给群晖】
【SR-IOV直通给openwrt拨号作为主路由】
【SR-IOV直通给爱快折腾了很久没法拨号,这里放弃了,驱动问题吧】
【SR-IOV直通给win10】
【SR-IOV虚拟机内网速度测试】
【SR-IOV虚拟机内网速度测试cpu利用率】
#SR-IOV还可以直通给其他虚拟机,反正可以虚拟63个网卡,你想直通给黑苹果啊ubuntu啊debian啊,看您心情咯,很多都是免驱的。
总览草图:
这个方案实在是太爽了,忍不住要分享出来,让各位早点上万兆车,
这个草图我解释一下,两个光猫改好桥接(方便软路由拨号)分别接入交换机3和4口,创建两个vlan接入交换机千兆端口,交换机万兆口28出来连接到pve主机的万兆网卡,这样既可以让所有虚拟机都共享万兆通道(万兆群晖,万兆openwrt,万兆爱快,万兆win11),也可以让虚拟机和外界的万兆物理机组成万兆局域网,剩下的的千兆口可以接其他设备。我这里只是想节省网卡和成本。。你可以买双口万兆网卡和8口万兆交换机。。但是我觉得这样够用了,毕竟是家用,不是专业的生产环境,因为我也是新手,有不对的地方,请各位批评指正。
交换机vlan划分
目的:把两条宽带接入交换机,vlan划分后,需要用到拨号的,只需填写vlan号就可以拨号,
可以玩出很多花样。
vlan最终设置好的样子,后面详细截图。
Access端口配置vlan3和vlan4
Hybrid端口设置,让vlan3 vlan4 vlan1从28口通过。
【下面开始PVE7.1宿主机SR-IOV的ALL IN ONE】
开机启用SR-IOV分配VF并固定MAC地址
主板支持和CPU支持
主板BIOS中有的话打开下面这些选项
VT-D(vt-d一般包含了后两者), IO-MMU, SR-IOV
开启IO-MMU和启用SR-IOV
ssh连接pve
修改grub文件
root@pve:~# nano /etc/default/grub
在GRUB_CMDLINE_LINUX_DEFAULT项末尾加上下面的内容
quiet intel_iommu=on pci=assign-busses pcie_acs_override=downstream iommp=pt
#解释一下
intel_iommu=on是适用于intel平台
pcie_acs_override=downstream 是提示内存报错
pci=assign-busses和iommp=pt 是开启sr-iov需要的参数
东拼西凑的参数 目前机器没有问题
root@pve:~# update-grub
加载直通内核模块
root@pve:~# echo vfio >> /etc/modules
root@pve:~# echo vfio_iommu_type1 >> /etc/modules
root@pve:~# echo vfio_pci >> /etc/modules
root@pve:~# echo vfio_virqfd >> /etc/modules
root@pve:~# update-initramfs -u
重启主机
查看所有网卡(82599ES)
root@pve:~# lspci -nn|grep Eth
03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
0b:00.0 Ethernet controller [0200]: Qualcomm Atheros Killer E220x Gigabit Ethernet Controller [1969:e091] (rev 10)
0c:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
查看BF(网卡名为enp12s0)
root@pve:~# lshw -c network -businfo
Bus info Device Class Description
=============================================================
pci@0000:03:00.0 network RTL8111/8168/8411 PCI Express Gig
pci@0000:0b:00.0 enp11s0 network Killer E220x Gigabit Ethernet Con
pci@0000:0c:00.0 enp12s0 network 82599ES 10-Gigabit SFI/SFP+ Netwo
usb@2:6 enx000ec6711984 network Ethernet interface
vmbr0 network Ethernet interface
ztnfag5sip network Ethernet interface
tap888i0 network Ethernet interface
查看SR-IOV开启状态(最后一项是支持sr-iov的)
root@pve:~# lspci -s 0c:00.0 -vvv | grep Capabilities
pcilib: sysfs_read_vpd: read failed: Input/output error
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
Capabilities: [70] MSI-X: Enable+ Count=64 Masked-
Capabilities: [a0] Express (v2) Endpoint, MSI 00
Capabilities: [e0] Vital Product Data
Capabilities: [100 v1] Advanced Error Reporting
Capabilities: [140 v1] Device Serial Number 00-1b-21-ff-ff-ba-bf-e6
Capabilities: [150 v1] Alternative Routing-ID Interpretation (ARI)
Capabilities: [160 v1] Single Root I/O Virtualization (SR-IOV)
查看网口链路状态(10000MB全双工)
root@pve:~# ethtool enp12s0
Settings for enp12s0:
Supported ports: [ FIBRE ]
Supported link modes: 10000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: 10000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: off
Port: FIBRE
PHYAD: 0
Transceiver: internal
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
查看网卡驱动版本(这个只需了解一下)
root@pve:~# ethtool -i enp12s0
driver: ixgbe
version: 5.13.19-1-pve
firmware-version: 0x00012b2c
expansion-rom-version:
bus-info: 0000:0c:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
查看网卡支持多少VF(82599支持单根虚拟63个网卡)
root@pve:~# cat /sys/bus/pci/devices/0000:0c:00.0/sriov_totalvfs
63
利用开机脚本自动启用指定网卡的SR-iov虚拟数量,设定对应mac地址,在开机过程中打开SR-IOV VFs
root@pve:~# cd /etc/init.d
root@pve:~# nano net-sriov
下面是net-sriov启动脚本示例内容,可根据具体情况修改,此处为转载
记得把编辑好的脚本粘贴到net-sriov里面。
原文:在PVE环境下打开SRIOV - Allegro的文章 - 知乎 https://zhuanlan.zhihu.com/p/356437308
#! /bin/sh
#
# Copyright (C) 2011, 2012, 2016 Nicira, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
### BEGIN INIT INFO
# Provides: openvswitch-switch
# Required-Start: $network $named $remote_fs $syslog $openvswitch-switch
# Required-Stop: $remote_fs $openvswitch-switch
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: SR-IOV initialization.
#Description: Initializing VM's network with sriov support.
### END INIT INFO
start () {
#enable Sriov 把enp12s0虚拟12个网卡
echo 12 > /sys/class/net/enp12s0/device/sriov_numvfs
ip link set dev enp12s0 up
ip link set dev enp12s0 vf 0 mac aa:bb:cc:dd:ee:f1
ip link set dev enp12s0 vf 1 mac aa:bb:cc:dd:ee:f2
ip link set dev enp12s0 vf 2 mac aa:bb:cc:dd:ee:f3
ip link set dev enp12s0 vf 3 mac aa:bb:cc:dd:ee:f4
ip link set dev enp12s0 vf 4 mac aa:bb:cc:dd:ee:f5
ip link set dev enp12s0 vf 5 mac aa:bb:cc:dd:ee:f6
ip link set dev enp12s0 vf 6 mac aa:bb:cc:dd:ee:f7
ip link set dev enp12s0 vf 7 mac aa:bb:cc:dd:ee:f8
ip link set dev enp12s0 vf 8 mac aa:bb:cc:dd:ee:f9
ip link set dev enp12s0 vf 9 mac aa:bb:cc:dd:ee:a0
ip link set dev enp12s0 vf 10 mac aa:bb:cc:dd:ee:a1
ip link set dev enp12s0 vf 11 mac aa:bb:cc:dd:ee:a2
#initial OVS bridge
systemctl restart networking
# ovs-vsctl --no-wait add-br br0-ovs
# ovs-vsctl add-port br0-ovs enp12s0
# Manager Interface
# ip link set dev enp12s0v3 up
# ip address add 192.168.0.99/24 dev enp12s0v3
# ip route add default via 192.168.0.1
}
stop () {
[ "$READ_INTERFACES" != "no" ] && network_interfaces ifdown
ovs_ctl stop
}
case $1 in
start)
start
;;
stop | force-stop)
stop
;;
*)
echo "Usage: $0 {start|stop}" >&2
exit 1
;;
esac
exit 0
对net-sriov脚本赋予可执行权限,启用sr-iov
root@pve:~# chmod +x /etc/init.d/net-sriov
root@pve:~# systemctl enable net-sriov
重启pve
root@pve:~# reboot
检查pve网络界面有没有出现很多网卡
检查网卡mac地址是否设定成功
root@pve:~# ip a
【下面正式开始SR-IOV的ALL IN ONE】
这边先说下直通勾选事项:
所有虚拟机在添加SR-IOV的VF网卡的时候,都不要选择所有功能
选择以后会把所在分组的4个网卡一起直通到虚拟机
不勾选就是直通单个虚拟网卡。
SR-IOV直通给群晖
经过上边一顿折腾后网卡就多了起来
(这里的enp2s0和先前的enp12s0不一样是因为我网卡换了插槽所以会变化,如果你也是中途换了插槽上边的脚本也要修改对应网卡名)
黑群晖直通虚拟网卡非常简单,只要引导支持就行,引导对应固件常规安装就行,网上搜的教程都是可以成功的,我这边就不展示过程了,这边放出配置截图。
给群晖分配VF的mac地址,这里原来是dhcp,后来我改成手动了。
分配VF给群晖虚拟网卡速率
嗯,干得漂亮,
SR-IOV直通给openwrt作为主路由
openwrt安装过程也不介绍了,主要讲核心部位。
因为交换机划分了VLAN,所以说只需一个网卡就可以了,谁让咱们网卡是万兆呢,对吧?
接下来配置openwrt的WAN口和LAN口
首先除了lan口其他接口全删掉。(尤其是删掉wan口,不删掉的话创建的wan口防火墙貌似会出问题)
这里,因为通道速度是10G,因此我选择了单臂路由,我任性。。。
这里要配合网管交换机划分vlan4 ,这个可以举一反三。
这里填上账号密码后重启openwrt
万兆单臂路由拨号成功
SR-IOV直通给win10,
win系统很简单,毕竟是Intel自家的东西。
sriov在win不是免驱的,需要同时添加pve的默认自带的虚拟网卡和SRIOV的vf网卡
默认自带的虚拟网卡是为了联网给sriov打驱动,比如360的驱动大师,联网就能打上。
SR-IOV虚拟机内网速度测试
两个Ubuntu分别直通SR-IOV虚拟的网卡用Iperf3测试
openwrt和ubuntu测试
pve7.1 sr-iov 82599网卡测试跑满10G,cpu利用率不到10%
(总结)
经过以上折腾,实现了标题所讲,经过测试,万兆网卡功耗其实并不高,虽然英特尔官方参数说x520的TDP为20瓦,其实这个20w并不是网卡功耗,而是热功耗设计,翻阅官方规格手册可以查到82599芯片的单口网卡功耗是5w。
目前还没有买连接主力机电脑的光纤和模块,又因为群晖机械硬盘暂时达不到1GB/秒的速度,暂时没有测试
我想表达的是
目前只是想实现用一张万兆网卡虚拟12个万兆网卡,而不需要插更多的物理网卡,
我想,至少比两个4口千兆网卡和2.5G网卡要快吧?
这样即省电也省下了宝贵的PCI-E插槽。你觉得呢?
万兆交换机还剩下3个万兆光口,也就是说还可以接3个万兆设备,在我家的使用环境来看只有一台万兆台式机
还剩两个万兆光口,就等以后需要的时候再利用起来吧。
现在newifi3路由器断电了,8口傻瓜交换机也断电了。全部网线都插在飞鱼星交换机了。
再来一张交换机截图图片吧
再来一张电脑主机散热图,一个12cm风扇倾斜30度对5个设备进行散热。我都佩服我记几。哈哈
风扇可以吹到的有主板z170芯片组,阵列卡,单口千兆网卡,M.2固态硬盘,X520万兆网卡
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

























1. 两根光猫出来的线分别接1、2号口并设置成vlan3和4
2. 3-28号口vlanid都是1,就是都没有标记
3.vlan1、3和4的trunk口都是28号口
4. 在宿主虚拟机中,不建立vlanid组(这里不建立组的vlan ID默认就是vlan1),即所有的虚拟客户机都是用vlan1这个id,除了主路由op,在建立wan的时候,在wan的端口上标识vlanid eth0.3和eth0.4,lan口是eth0。这样就把3根线区分开了,对吗?
另外,除了1和2都是没标记的口vlan1,包扩28也是,那是否这些口都是干线口,也就是trunk口,也就是之把pve宿主机连在这些3-28口的任意的1个口上,都能实现28号口的全部功能,除了物理万兆功能?
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
net-sriov.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable net-sriov
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
#initial OVS bridge
systemctl restart networking
# ovs-vsctl --no-wait add-br br0-ovs
# ovs-vsctl add-port br0-ovs enp12s0
# Manager Interface
# ip link set dev enp12s0v3 up
# ip address add 192.168.0.99/24 dev enp12s0v3
# ip route add default via 192.168.0.1
校验提示文案
校验提示文案