Mellanox 網卡使用SR-IOV
一、硬件環境准備
物理服務器為:浪潮
網卡型號:Mellanox Technologies MT27800
1、進入BIOS
浪潮服務器為例,開機畫面中按“DEL”鍵;
等待系統進入BIOS 后再進行下一步;
成功進入BIOS的畫面
2、主板開啟SR-IOV
移動光標到“Advanced”標簽頁面,再選擇“PCI Subsystem Settings”,選中按回車;
再將SR-IOV支持開關設置為“Enabled”;
處理器開啟虛擬化支持;
將光標移動到“Processor”標簽頁,再選中“Processor Configration”;
將“VMX”與“SMX”的值設置為“Enabled”;
再從”Processor ”下找到“IIO Configuration”,進入后將“VT-d”功能打開;
操作系統開啟iommu
(Centos8.1 為例)
[root@localhost ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet intel_iommu=on iommu=pt"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
開啟完成后需要重啟機器;
驅動環境准備
1、取得下載合適的安裝包進行驅動的安裝
這里以MLNX_OFED_LINUX-5.0-2.1.8.0-rhel8.1-x86_64.tgz 為例:
2、解壓
[root@localhost ~]# tar xzvf MLNX_OFED_LINUX-5.0-2.1.8.0-rhel8.1-x86_64.tgz
1、查看readme 安裝相應的依賴包:
[root@localhost ~]#yum install perl pciutils python gcc-gfortran libxml2-python tcsh libnl.i686 libnl expat glib2 tcl libstdc++ bc tk gtk2 atk cairo numactl pkgconfig ethtool
2、驅動安裝
[root@localhost ~]#./mlnxofedinstall
3、安裝完成后重啟機器;
3、配置opensm開啟虛擬化
[root@localhost docs]# vim /etc/opensm/opensm.conf
添加內容后保存退出:
virt_enabled 2
參數的解釋:
parameter has the following configuration options:
0: Ignore Virtualizations - No virtualization support
1: Disable Virtualization - Disable virtualization on all Virtualization supporting ports
2: Enable Virtualization - Enable (virtualization on all Virtualization supporting ports)
4、系統上開啟SRIOV
[root@localhost docs] # mst start
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module - Success
Loading MST PCI configuration module - Success
Create devices
[root@localhost docs]# mst status
MST modules:
------------
MST PCI module is not loaded
MST PCI configuration module loaded
MST devices:
------------
/dev/mst/mt4119_pciconf0 - PCI configuration cycles access.
domain:bus:dev.fn=0000:af:00.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
Chip revision is: 00
5、查詢設備狀態信息:
[root@localhost docs]# mlxconfig -d /dev/mst/mt4119_pciconf0 q
Device #1:
----------
Device type: ConnectX5
Name: MCX516A-CCA_Ax
Description: ConnectX-5 EN network interface card; 100GbE dual-port QSFP28; PCIe3.0 x16; tall bracket; ROHS R6
Device: /dev/mst/mt4119_pciconf0
Configurations: Next Boot
MEMIC_BAR_SIZE 0
MEMIC_SIZE_LIMIT _256KB(1)
HOST_CHAINING_MODE DISABLED(0)
HOST_CHAINING_DESCRIPTORS Array[0..7]
HOST_CHAINING_TOTAL_BUFFER_SIZE Array[0..7]
FLEX_PARSER_PROFILE_ENABLE 0
FLEX_IPV4_OVER_VXLAN_PORT 0
ROCE_NEXT_PROTOCOL 254
ESWITCH_HAIRPIN_DESCRIPTORS Array[0..7]
ESWITCH_HAIRPIN_TOT_BUFFER_SIZE Array[0..7]
PF_BAR2_SIZE 0
NON_PREFETCHABLE_PF_BAR False(0)
VF_VPD_ENABLE False(0)
STRICT_VF_MSIX_NUM False(0)
VF_NODNIC_ENABLE False(0)
NUM_OF_VFS 4
PF_BAR2_ENABLE False(0)
SRIOV_EN True(1)
PF_LOG_BAR_SIZE 5
VF_LOG_BAR_SIZE 1
NUM_PF_MSIX 63
NUM_VF_MSIX 11
INT_LOG_MAX_PAYLOAD_SIZE AUTOMATIC(0)
上面的兩個參數值需要注意,一個是虛擬機出來的VF數量,一個是開啟sriov 功能的開關;
如果需要調整請使用:
mlxconfig -d /dev/mst/mt41139pciconf0 set SRIOV_EN=1 NUM_OF_VFS=4
Device #1:
----------
Device type: ConnectI
PCI device: /dev/mst/mt4119_pciconf0
Configurations: Current New
SRIOV_EN 0 1
NUM_OF_VFS 0 4
FPP_EN 0 1
INT_LOG_MAX_PAYLOAD_SIZE 0 0
Apply new Configuration? ? (y/n) [n] : y
Applying... Done!
-I- Please reboot machine to load new configurations.
設置完成后需要重啟機器;
6、適配設備
[root@localhost docs]# mlxfwreset --device /dev/mst/mt4119_pciconf0 reset
Minimal reset level for device, /dev/mst/mt4119_pciconf0:
3: Driver restart and PCI reset
Continue with reset?[y/N] y
-I- Sending Reset Command To Fw -Done
-I- Stopping Driver -Done
-I- Resetting PCI -Done
-I- Starting Driver -Done
-I- Restarting MST -Done
-I- FW was loaded successfully
7、設置網卡的vf參數值.
[root@localhost docs]# echo 4 >/sys/class/net/ens47f1/device/sriov_numvfs
8、檢查是否成功;
常用命令檢查即可,如ifconfig .ip a ,lspci等;