查看当前设备的VFS数量(三种方式结果一样)
cat /sys/class/infiniband/mlx5_0/device/mlx5_num_vfs cat /sys/class/net/ib0/device/sriov_numvfs cat /sys/class/net/ib0/device/mlx5_num_vfs0
注意:如果命令执行失败,可能意味着未加载驱动程序。
注意:mlx5_num_vfs和sriov_numvfs的区别在于,即使操作系统未加载虚拟化模块(未向grub文件添加intel_iommu=on),mlx5_num_vfs也存在;sriov_numvfs 仅在将intel_iommu=on添加到grub文件时才适用。因此,如果没有sriov_numvfs文件,请检查是否已将Intel_iommu=on添加到grub文件中。
注意:因内核版本不同,可能没有部分选项。
设置VFS的数量(三种方式,任选其一)
echo 4 > /sys/class/infiniband/mlx5_0/device/mlx5_num_vfs cat /sys/class/infiniband/mlx5_0/device/mlx5_num_vfs echo 4 > /sys/class/net/ib0/device/sriov_numvfs cat /sys/class/net/ib0/device/sriov_numvfs echo 4 > /sys/class/net/ib0/device/mlx5_num_vfs cat /sys/class/net/ib0/device/mlx5_num_vfs4
如出现错误信息:
echo: write error: Cannot allocate memory
修改 /etc/default/grub并重新生成/boot/grub2/grub.cfg:
vim /etc/default/grubGRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet intel_iommu=on iommu=pt pci=realloc"
grub2-mkconfig -o /boot/grub2/grub.cfg更新配置后,重启。
注意:
1.更改VFS的数量是临时的,服务器重新启动后,设置的值会丢失。
2.写入sysfs文件时,适用以下规则:
如果未分配VFS,则VFS的数量可以更改为任何有效值(0-固件设置步骤中设置的最大VFS);
如果有分配给虚拟机的VFS,则无法更改VFS的数量;
如果在未分配VFS的情况下,管理员在PF上卸载驱动程序,则驱动程序将卸载并禁用SRI-OV;
如果在卸载PF驱动程序时分配了VFS,则不会禁用SR-IOV。这意味着VF在VM上可见,但它们将无法运行。这适用于使用pci_stub而非vfio内核的操作系统。
VF驱动程序将发现这种情况并关闭其资源;
重新加载PF上的驱动程序后,VF可以运行。 VF的管理员将需要重新启动驱动程序才能继续使用VF。
查看PCI设备
lspci -D | grep Mellanox0000:02:00.0 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]
0000:02:00.1 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5 Virtual Function]
0000:02:00.2 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5 Virtual Function]
0000:02:00.3 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5 Virtual Function]
0000:02:00.4 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5 Virtual Function]
0000:81:00.0 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]
注意:带 Virtual Function 的四个PCI设备就是通过SR-IOV虚拟化出来的RDMA网卡。
ibdev2netdev -v0000:02:00.0 mlx5_0 (MT4119 - MCX555A-ECAT) CX555A - ConnectX-5 QSFP28 fw 16.26.4012 port 1 (ACTIVE) ==> ib0 (Up)
0000:81:00.0 mlx5_1 (MT4119 - MCX555A-ECAT) CX555A - ConnectX-5 QSFP28 fw 16.27.2008 port 1 (ACTIVE) ==> ib1 (Up)
0000:02:00.1 mlx5_2 (MT4120 - NA) fw 16.26.4012 port 1 (DOWN ) ==> ib2 (Down)
0000:02:00.2 mlx5_3 (MT4120 - NA) fw 16.26.4012 port 1 (DOWN ) ==> ib3 (Down)
0000:02:00.3 mlx5_4 (MT4120 - NA) fw 16.26.4012 port 1 (DOWN ) ==> ib4 (Down)
0000:02:00.4 mlx5_5 (MT4120 - NA) fw 16.26.4012 port 1 (DOWN ) ==> ib5 (Down)