【值得买】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号口的全部功能,除了物理万兆功能?
校验提示文案
ME-ME-ME
校验提示文案
lifigo
校验提示文案
西梁国子曰
校验提示文案
阿淇
校验提示文案
嘻嘻-
校验提示文案
电机猫
校验提示文案
Bing哥儿
校验提示文案
拆除魔仙堡的哈士奇
校验提示文案
还就不起名儿了
校验提示文案
icespace
校验提示文案
Chai
校验提示文案
Zemmy
校验提示文案
y8y8y8
校验提示文案
值友3601838923
校验提示文案
Coolfree
校验提示文案
送碳五花肉
校验提示文案
020-奶爸
校验提示文案
kcllee
校验提示文案
Coolfree
校验提示文案
值友3886959687
校验提示文案
qifenzui
校验提示文案
qifenzui
校验提示文案
doushang
校验提示文案
值友9509161990
校验提示文案
埃罗芒阿老师a
校验提示文案
值友3195348403
校验提示文案
geglong
校验提示文案
子羽
校验提示文案
值友1766213781
校验提示文案
cypress520
net-sriov.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable net-sriov
校验提示文案
值友3292573772
校验提示文案
2018琪琪爸爸
校验提示文案
值友5694001682
校验提示文案
值友7756386439
校验提示文案
月之空上
#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
校验提示文案
lifigo
校验提示文案
lifigo
校验提示文案
值友5683258541
只设置iommp=pt没问题,但执行 `echo 12 > /sys/class/net/enp12s0/device/sriov_numvfs` 这个会报内存错误,有人知道这是咋回事吗?机器不支持sr-iov吗?
校验提示文案
大熊本熊
校验提示文案