PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停

作者 : 七界传说 发布时间: 2025-01-7 文章热度:1.2K 共6530个字,阅读需17分钟。

目 录

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!SR-IOV(Single Root I/O Virtualization)是一种硬件支持的虚拟化技术,允许单个PCI Express(PCIe)设备向主机系统呈现多个独立的PCI设备,旨在提高网络性能和资源利用率‌‌

SR-IOV技术通过在物理网卡上引入一个称为Physical Function(PF)的实体,管理和控制一组称为Virtual Functions(VF)的虚拟网卡。每个VF都相当于一个独立的逻辑网卡,具有自己的MAC地址和队列,可以独立运行并与外部环境通信‌

SR-IOV的工作原理
SR-IOV技术的核心思想是在物理网卡上引入PF,负责管理和控制一组VF。每个VF都相当于一个独立的逻辑网卡,具有自己的MAC地址和队列。通过SR-IOV技术,PF将物理资源(如带宽、队列和缓存等)划分为多个VF,每个VF都可以被分配给不同的虚拟机或容器进行使用。VF之间是相互隔离的,它们可以独立地配置、管理和控制网络流量。这样,虚拟化环境中的各个虚拟机或容器可以直接访问它们所分配的VF,而无需经过主机操作系统的网络协议栈,从而提高网络性能和响应速度‌

SR-IOV的优势
‌提高性能‌:使用SR-IOV VF而不是模拟设备的主要优点是提高性能。作为vNIC附加到虚拟机的VF性能几乎与物理NIC相同,并且优于半虚拟化或模拟的NIC‌

‌减少资源消耗‌:通过减少主机CPU和内存资源的使用量,SR-IOV可以显著降低服务器的整体负载。每个VF独立管理自己的资源,减少了上下文切换和数据处理的时间延迟‌

‌增强隔离性‌:每个VF都是独立的逻辑网卡,具有自己的资源和控制权,这增强了虚拟化环境中的隔离性,提高了系统的稳定性和安全性‌

实际应用场景
SR-IOV技术广泛应用于需要高性能网络的虚拟化环境中。例如,在云计算数据中心、大数据分析、高性能计算(HPC)等领域,SR-IOV技术能够显著提升网络性能和资源利用率,满足复杂应用场景的需求‌

进入PVE SSH命令控制台:

lspci -k | grep -i ethernet

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!

以02:00.1 02:00.0为例:

cat /sys/bus/pci/devices/0000:02:00.1/sriov_totalvfs

查看是否支持SR-IOV,支持虚拟64个VF网口

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!

不支持如下:

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!

创建文件开启网卡SR-IOV代码

cd /etc/systemd/system/
nano sriov-pcie1.service

复制以下内容:网卡名改为你PVE的

[Unit]
Description=Script to enable SR-IOV on boot
[Service]
Type=simple
#start SR-IOV
ExecStartPre=/usr/bin/bash -c '/usr/bin/echo 15 > /sys/class/net/enp2s0f1/device/sriov_numvfs'
#set VF MAC
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 0 mac 00:20:00:00:00:00'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 1 mac 00:20:00:00:00:01'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 2 mac 00:20:00:00:00:02'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 3 mac 00:20:00:00:00:03'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 4 mac 00:20:00:00:00:04'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 5 mac 00:20:00:00:00:05'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 6 mac 00:20:00:00:00:06'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 7 mac 00:20:00:00:00:07'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 8 mac 00:20:00:00:00:08'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 9 mac 00:20:00:00:00:09'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 10 mac 00:20:00:00:00:10'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 11 mac 00:20:00:00:00:11'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 12 mac 00:20:00:00:00:12'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 13 mac 00:20:00:00:00:13'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f1 vf 14 mac 00:20:00:00:00:14'
#set PF up
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1 up'
#set VF up
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v0 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v1 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v2 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v3 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v4 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v5 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v6 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v7 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v8 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v9 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v10 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v11 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v12 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v13 up'
ExecStart=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f1v14 up'
Restart=on-failure
[Install]
WantedBy=multi-user.target

 

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!Ctrl+x按Y保存

编辑第二个光口

nano sriov-pcie2.service
[Unit]
Description=Script to enable SR-IOV on boot
[Service]
Type=simple
#start SR-IOV
ExecStartPre=/usr/bin/bash -c '/usr/bin/echo 15 > /sys/class/net/enp2s0f0/device/sriov_numvfs'
#set VF MAC
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 0 mac 00:20:00:00:10:00'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 1 mac 00:20:00:00:10:01'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 2 mac 00:20:00:00:10:02'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 3 mac 00:20:00:00:10:03'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 4 mac 00:20:00:00:10:04'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 5 mac 00:20:00:00:10:05'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 6 mac 00:20:00:00:10:06'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 7 mac 00:20:00:00:10:07'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 8 mac 00:20:00:00:10:08'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 9 mac 00:20:00:00:10:09'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 10 mac 00:20:00:00:10:10'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 11 mac 00:20:00:00:10:11'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 12 mac 00:20:00:00:10:12'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 13 mac 00:20:00:00:10:13'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set dev enp2s0f0 vf 14 mac 00:20:00:00:10:14'
#set PF up
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0 up'
#set VF up
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v0 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v1 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v2 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v3 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v4 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v5 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v6 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v7 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v8 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v9 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v10 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v11 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v12 up'
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v13 up'
ExecStart=/usr/bin/bash -c '/usr/bin/ip link set enp2s0f0v14 up'
Restart=on-failure
[Install]
WantedBy=multi-user.target

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!

Ctrl+x按Y保存

加入开机启动

systemctl daemon-reload

systemctl 添加开机启动

systemctl enable sriov-pcie1.service

systemctl 添加开机启动

systemctl enable sriov-pcie2.service

systemctl 删除开机启动

systemctl disable sriov-pcie1.service
systemctl disable sriov-pcie2.service

重启虚拟化主机

reboot

以下开启成功后截图,然后虚拟直通SR-IOV网卡即可:

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!

虚拟机全部替换SR-IOV直通光口:

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!

测试:

两台虚拟机直通SR-IOV用iperf3

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!

 

PVE 8.2.2 开启万兆光口网卡SR-IOV与虚拟机定时启丶停-七界传说丨关注分享网络、硬件、维护、游戏、主题、虚拟化、软件分享!

定时开关虚拟机:

crontab -e

首次输入命令按1
添加定时关机时间与开机时间:

06 20 * * * pvesh create /nodes/pve/qemu/101/status/stop
10 20 * * * pvesh create /nodes/pve/qemu/101/status/start
00 01 * * * pvesh create /nodes/pve/qemu/667/status/stop
30 17 * * * pvesh create /nodes/pve/qemu/667/status/start

Ctrl+x按Y保存,注:[标注红色是你PVE安装时名称一定要对,ntp校时设置好]

crontab -l

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

发表评论

22
+2262天安全运行
主题分享
0
+0篇本周更新
更新我快乐

VIP免费下载全站资源

立即了解

本站支持IPv6访问 本站支持SSL安全访问

站点地图