要支持sriov功能,首先需要硬件支持,主板和cpu需要支持iommu,vt-d
pci设备需要支持sriov,本人按intel给的芯片列表淘了张Fujitsu 82576NS网卡
1. 先打开bios中的vt-d功能
2.确定编译内核支持IOMMU功能和vfio支持(略)
3.重启系统,kernel.. root=...启动参数后面加入: intel_iommu=on
4.确认系统是否已支持iommu: #dmesg | grep -e DMAR -e IOMMU
应该能找到: DMAR: IOMMU enabled
5. 加载vfio:
#modprobe vfio
#modprobe vfio-pci
6.检查是否已经加载igb驱动
#lsmod | grep -i igb
7.获取对应设备号
#lspci -D | grep 82576
7.产生2个vf
# echo 2 > /sys/class/net/eth1/device/sriov_numvfs
如果要删除vf,如上写入0即可
这里遇到一个坑,一直报echo: write error: Cannot allocate memory
后来在内核启动时加了个参数pci=assign-busses搞定,具体可见:
https://bugzilla.redhat.com/show_bug.cgi?id=1223376
另一个坑,内核参数 pcie_acs_override=downstream
最后还是没成功,后面再调