更多精彩内容,欢迎您持续关注正阳。
首页-资源中心-技术文章

Ubuntu 20.04 安装NVIDIA网卡驱动

安装步骤简介:

  1. 查询系统版本和架构

  2. 下载对应系统版本架构的网卡驱动

  3. 上传网卡驱动安装文件到服务器

  4. 检查系统是否识别到网卡设备

  5. 挂载或者解压驱动包,安装网卡驱动

  6. 配置网卡静态ip地址

  7. 使用驱动自带性能测试工具测试网卡性能

详细安装过程

1. 查询系统版本和架构

本文以Ubuntu 20.04 LTS 为例,演示安装 NVIDIA/Mellanox 网卡驱动过程。

查询系统信息:

root@ubuntu01:~# cat /etc/issue
Ubuntu 20.04.6 LTS \\n \\l

查询架构:

root@ubuntu01:~# uname -m
x86_64

2. 下载对应系统版本架构的网卡驱动

官方驱动下载页面,选择对应系统版本架构,下载驱动安装包,根据上一步骤查询到的信息,我们选择Ubuntu 20.04 x86_64 。

01.png

对于Version 版本,想要体验最新版本,就选择第一个,对稳定性和可靠性有要求的,建议选择 LTS 版本。

驱动包文件提供了3种类型的下载,通常选择ISO或者tgz,不建议使用源码包。

3. 上传驱动安装包文件到服务器

3.1 从Windows系统上传驱动包到服务器

如果你使用Windows 系统,浏览器默认下载驱动包到系统“下载”目录,推荐使用Windows的scp命令直接上传文件到服务器。

使用快捷键 Windows + R ,输入 powershell,打开powershell 终端。

02.png

打开powershell终端后,默认在用户目录,切换到“下载”目录,上传驱动包文件到服务器.

03.png

3.2 使用U盘上传安装包到服务器

驱动安装包下载到U盘,把U盘插到服务器,挂载U盘,复制驱动包到服务器目录

# 使用 lsblk 查询当前块设备

vincent@ubuntu01:~$ lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0   63.3M   1 loop /snap/core20/1828
loop1                       7:1    0   91.9M   1 loop /snap/lxd/24061
loop2                       7:2    0   49.9M   1 loop /snap/snapd/18357
loop3                       7:3    0   53.3M   1 loop /snap/snapd/19457
loop4                       7:4    0   63.5M   1 loop /snap/core20/1974
sda                         8:0    0 223.6G   0 disk 
├─sda1                      8:1    0     1M   0 part 
├─sda2                      8:2    0     2G   0 part /boot
└─sda3                      8:3    0 221.6G   0 part   
   └─ubuntu--vg-ubuntu--lv 253:0    0   100G   0 lvm   /

# 插入U盘后,再查询,出现新的 sdb,就是U盘

vincent@ubuntu01:~$ lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0   63.3M   1 loop /snap/core20/1828
loop1                       7:1    0   91.9M   1 loop /snap/lxd/24061
loop2                       7:2    0   49.9M   1 loop /snap/snapd/18357
loop3                       7:3    0   53.3M   1 loop /snap/snapd/19457
loop4                       7:4    0   63.5M   1 loop /snap/core20/1974
sda                         8:0    0 223.6G   0 disk 
├─sda1                      8:1    0     1M   0 part 
├─sda2                      8:2    0     2G   0 part /boot
└─sda3                      8:3    0 221.6G   0 part   
   └─ubuntu--vg-ubuntu--lv 253:0    0   100G   0 lvm   /
sdb                         8:16   1   7.5G   0 disk 
└─sdb1                      8:17   1   7.5G   0 part

# 挂载U盘,并复制U盘里的驱动包 到服务器

vincent@ubuntu01:~$ sudo mount /dev/sdb1 /mnt
[sudo] password for vincent: 
vincent@ubuntu01:~$

复制U盘里的驱动包到服务器

vincent@ubuntu01:~$ cd /mnt
vincent@ubuntu01:/mnt$ sudo cp MLNX_OFED_LINUX-23.04-1.1.3.0-ubuntu20.04-x86_64.iso /opt
vincent@ubuntu01:/mnt$ ls /opt
MLNX_OFED_LINUX-23.04-1.1.3.0-ubuntu20.04-x86_64.iso
vincent@ubuntu01:/mnt$ cd


# 解除U盘挂载

vincent@ubuntu01:~$ sudo umount /mnt

4. 检查网卡设备

在正式安装驱动之前,建议先检查服务器是否硬件已经识别到网卡设备

vincent@ubuntu01:~$ sudo -i
root@ubuntu01:~# lspci |grep Mellanox
45:00.0 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]
root@ubuntu01:~#

有类似以上 输出代表主机已识别到一张 Mellanox [ConnectX-5] 网卡

5. 安装驱动

如果下载的驱动包文件格式 为ISO,那么挂载,如果是tgz包就直接解压,进入解压后的目录开始安装。

ISO 方式:

root@ubuntu01:~# apt update
root@ubuntu01:~# mount /opt/MLNX_OFED_LINUX-23.04-1.1.3.0-ubuntu20.04-x86_64.iso /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
root@ubuntu01:~# cd /mnt
root@ubuntu01:/mnt# ls
root@ubuntu01:/mnt# ./mlnxofedinstall --all
......
Do you want to continue?[y/N]:y

看到以上提示,输入y   开始安装,或者使用 --force 直接安装,不会再提示输入 y

root@ubuntu01:/mnt# ./mlnxofedinstall --all --force

tgz 方式:

root@ubuntu01:~# apt update
root@ubuntu01:~# cd /opt
root@ubuntu01:/opt# tar xf MLNX_OFED_LINUX-23.04-1.1.3.0-ubuntu20.04-x86_64.tgz
root@ubuntu01:/opt# cd MLNX_OFED_LINUX-23.04-1.1.3.0-ubuntu20.04-x86_64
root@ubuntu01:/opt/MLNX_OFED_LINUX-23.04-1.1.3.0-ubuntu20.04-x86_64# ls
root@ubuntu01:/opt/MLNX_OFED_LINUX-23.04-1.1.3.0-ubuntu20.04-x86_64# ./mlnxofedinstall --all --force

整个安装过程大概持续10分钟左右,请耐心等待。

安装完成后,提示重启驱动

root@ubuntu01:~# /etc/init.d/openibd restart
Unloading HCA driver:                                      [   OK   ]
Loading HCA driver and Access Layer:                       [   OK   ]
root@ubuntu01:~#

6. 配置网卡静态ip地址

root@ubuntu01:~# ibdev2netdev 
mlx5_0 port 1 ==> ibp4s0 (Up)
root@ubuntu01:~# cat /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:
   version: 2
   renderer: networkd
   ethernets:
    ibp4s0:
      dhcp4: false
      addresses:
        - 10.10.10.111/24

使配置生效:

root@ubuntu01:~# netplan apply

7. 使用驱动自带性能测试工具测试网卡性能

通常使用到的测试命令:
带宽测试:

ib_write_bw

ib_send_bw

ib_read_bw

延时测试:

ib_write_lat

ib_send_lat

ib_read_lat

注意:测试前需要关闭防火墙,或者放行测试工具的默认端口号 18515

使用方法,至少使用2台服务器,一台开启服务端,另外一台开启客户端去访问服务端。

服务端

在ubuntu01开启服务端:假设服务端ib网卡IP地址为 10.10.10.111/24

root@ubuntu01:~# ib_write_bw --report_gbits

客户端

在ubuntu02开启客户端去访问服务端:

root@ubuntu02:~# ib_write_bw --report_gbits 10.10.10.111 -D 30

说明:

--report_gbits   #   以Gb/s 为单位显示测试结果
-D 30         #   测试时长 30 秒

以下是一个 ib_write_bw 测试截图

04.png


8. 常见问题和诊断:

    8.1 IB交换机端口状态LED灯处于橙色状态,或者网卡处于初始化状态 State:Initializing

root@ubuntu02:~# ibstat
CA 'mlx5_0'
    CA type: MT4123
    Number of ports: 1
    Firmware version: 20.37.1014
    Hardware version: 0
    Node GUID: 0xb88303ffff9ec6dc
    System image GUID: 0xb88303ffff9ec6dc
    Port 1:
        State: Initializing
        Physical state: LinkUp
        Rate: 100
        Base lid: 65535
        LMC: 0
        SM lid: 0
        Capability mask: 0xa651e84a
        Port GUID: 0xb88303ffff9ec6dc
        Link layer: InfiniBand

网卡处于初始化,说明IB子网中,子网管理器(SM)没有开启,开启SM常见的2种方式:在交换机或者服务器(选择其一即可)
在带管理的IB交换机(SB7800,QM8700,QM9700)开启SM:

ibswitch [standalone: master] > enable
ibswitch [standalone: master] # configure terminal
ibswitch [standalone: master] (config) # ib smnode ibswitch enable
ibswitch [standalone: master] (config) # show ib sm
enable
ibswitch [standalone: master] (config) # write memory

在服务器开启子网管理器,建议在2台服务器开启SM:

root@ubuntu02:~# /etc/init.d/opensmd start
Starting opensmd (via systemctl): opensmd.service.

root@ubuntu02:~# ibstat
CA 'mlx5_0'
    CA type: MT4123
    Number of ports: 1
    Firmware version: 20.37.1014
    Hardware version: 0
    Node GUID: 0xb88303ffff9ec6dc
    System image GUID: 0xb88303ffff9ec6dc
    Port 1:
        State: Active
        Physical state: LinkUp
        Rate: 200
        Base lid: 1
        LMC: 0
        SM lid: 1
        Capability mask: 0xa651e84a
        Port GUID: 0xb88303ffff9ec6dc
        Link layer: InfiniBand