方法一、使用Truenas开机脚本
编写脚本文件
#!/bin/bash
# 定义变量
INTERFACE="enp3s0f0"
NUM_VFS=8
# 检查并启用SRIOV
echo $NUM_VFS > /sys/class/net/$INTERFACE/device/sriov_numvfs || { echo "Failed to enable SRIOV"; exit 1; }
# 设置VF的MAC地址
for ((i=0; i<$NUM_VFS; i++)); do
MAC_ADDR="54:13:10:cf:00:$i"
ip link set dev $INTERFACE vf $i trust on mac $MAC_ADDR spoofchk off || { echo "Failed to set MAC address for VF $i"; exit 1; }
done
echo "SRIOV enabled and VF MAC addresses set successfully."
设置脚本开机执行

方法二、添加系统开机脚本
文件路径
/etc/init.d/net-sriov
该文件会在Truenas Scale更新后被系统删除,所以该开启SR-IOV的方法会在Truenas Scale更新后失效。
文件内容
#! /bin/sh
### BEGIN INIT INFO
# Provides: sriov_script
# Required-Start: $network $named $remote_fs $syslog $sriov_scripts
# Required-Stop: $remote_fs $sriov_scripts
# 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
echo 8 > /sys/class/net/enp3s0f0/device/sriov_numvfs
# set up mac addresses
ip link set dev enp3s0f0 vf 0 trust on mac 54:13:10:cf:00:00 spoofchk off
ip link set dev enp3s0f0 vf 1 trust on mac 54:13:10:cf:00:01 spoofchk off
ip link set dev enp3s0f0 vf 2 trust on mac 54:13:10:cf:00:02 spoofchk off
ip link set dev enp3s0f0 vf 3 trust on mac 54:13:10:cf:00:03 spoofchk off
ip link set dev enp3s0f0 vf 4 trust on mac 54:13:10:cf:00:04 spoofchk off
ip link set dev enp3s0f0 vf 5 trust on mac 54:13:10:cf:00:05 spoofchk off
ip link set dev enp3s0f0 vf 6 trust on mac 54:13:10:cf:00:06 spoofchk off
ip link set dev enp3s0f0 vf 7 trust on mac 54:13:10:cf:00:07 spoofchk off
}
stop () {
[ "$READ_INTERFACES" != "no" ] && network_interfaces ifdown
}
case $1 in
start)
start
;;
stop | force-stop)
stop
;;
*)
echo "Usage: $0 {start|stop}" >&2
exit 1
;;
esac
exit 0
修改换行符
如果是在Windows中创建的脚本文件,切记修改文件换行符为UNIX、Linux形式。

相关命令简介
查看网卡列表
lspci | grep Eth
查看SR-IOV虚拟网卡最大数量
cat /sys/bus/pci/devices/0000:03:00.0/sriov_totalvfs
查看当前启用的虚拟网卡数量
cat /sys/bus/pci/devices/0000:03:00.0/sriov_numvfs
将数字写入这个文件即可生成相应数量的虚拟网卡,但系统重启后虚拟网卡消失且文件内容归0。
给开机脚本添加执行权限
chmod +x /etc/init.d/net-sriov
启用服务
systemctl enable net-sriov
一些命令截图

发表回复