由于科学计算实验的需求,需要使用InfiniBand做一个持久性内存全互联的分布式存储系统。其中从网卡到交换机使用Mellanox全家桶,而在Mellanox网卡与交换机的使用过程中还是遇到了不少的问题。在此将博主从0到RDMA的实践过程做一个总结,以避免大家在做此类研究的时踩坑、浪费时间。

1.首先准备了Mellanox的网卡(博主使用的是ConnectX-3 354A)插到Pice*8的槽上,用InfiniBand连接线将网卡与交换机或者网卡与网卡之间来连接起来。不用奇怪,此时网卡上的灯不会亮

2.进入到节点上查看PCI设备可以看到网卡      lspci |grep Mellanox

查看主机是否安装HCA   lspci -v |grep Mellanox

3.安装IB网卡驱动

上官网找到符合自己系统的驱动

https://cn.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers

红色框中连接不能直接wget,点进去之后会有让你Accept的东西,然后才给你下载连接。

在这有些小建议,最好用最新系统装,并且把内核更新到最新,网卡驱动版本一般都会比较超前,不用担心越界。老一些版本的系统可能会出稀奇古怪的内核不匹配问题,或者重启之后就出现mlx4_ib belong to kernel which is not a part of MLNX failed  skipping 这样子的错误,博主在centos 7.4折腾了很久都是这个错误,更新版本与内核后就没这个问题了。至于这个问题的具体原因网上有其他博客说过这个的解决方案,但非常麻烦且各种缺失这了那了。

查看系统版本:uname -a  lsb_release-a

更新系统版本:yum  update;

更新内核:yum upgrade kernel

Wget到驱动安装包后解压

# tar -zxvf  MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.7-x86_64.tgz

进入到MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.7-x86_64文件夹,执行驱动安装

# ./mlnxofedinstall

这时候有可能会提示缺少这了那了,根据提示缺啥按

yum install gtk2 atk tcl tcsh tk

然后重新执行  # ./mlnxofedinstall 继续根据提示缺少啥安装啥,如果不出问题,系统会自己查找到Mellanox设备,并且会提示update  firmware之类的东西,不用担心,系统重启后会自动更新。这块忘了截图

小Tips :一般安装好了以后系统就直接自己启动了IB驱动,并且默认的是开机自启动,不用自己设置。

如果没有启动#systemctl start openibd  启动一下

设置开机自启动(一般不用):#chkconfig openibd on

启动好了可以看到

安装完驱动,插好线,这个时候就可以看到网卡上的端口灯亮了,通过ibstat可以看到具体的IB端口信息

如上图,显示的是端口1正在初始化,且状态是LinkUp,初始化状态表示还存在问题(暂时先不考虑)。

卸载驱动则可以通过/usr/sbin/ofed_uninstall.sh或者进入到安装驱动的文件夹下运行卸载驱动程序。

通过ibnodes可以查看互联的IB节点信息

4.设置infiniband网卡IP  IPoIB

Ifconfig 可以看到网卡信息

但会出现Infiniband hardware address can be incorrect! Please read BUGS section in ifconfig(8)的提示,这块主要是由于IB网卡的MAC地址比较长,而ifconfig一般只认前八位。现在都推荐用 ip  a命令查看网卡信息(我还是喜欢用ifconfig)。

InfiniBand网卡的IP设置办法与以太网查不到,但要注意是的一定要加上TYPE,要不然会当作普通以太网处理,去查找以太网设备,然后提示找不到设备,或者网卡不符合,如图

其中 HWADDR与UUID可以不写,写的话要自己给ifcfg-ib0生成一个UUID,#uuidgen eth1,最主要的就是一定要加TYPE=InfiniBand,博主在这块浪费了好久时间,做了很多无用功,不过也搞清楚了这中间的部分细节。设置好了通过ip  a可以查看

5.IB网性能测试

还记得之前ibstat的initialzing吗,这个状态在IB网使用时会出现问题。

IB带宽测试在服务端执行:ib_send_bw -a -c UD -d mlx4_0 -i 1

在客户端执行ib_send_bw -a -c UD -d mlx4_0 -i 1 10.0.0.6

不行的原因initialzing,主要由于opensm没有开启。开启opensm可以整成运行服务端,客户端也一样

一切正常后测试过程可以看到

可以使用qperf测试其他内容,在服务端执行qperf

客户端执行qperf 10.0.0.5 ud_lat ud_bw rc_rdma_read_bw rc_rdma_write_bw uc_rdma_write_bw tcp_bw tcp_lat udp_bw udp_lat可以看到

至此InfiniBand硬件设置踩坑过程结束。

从0开始的InfiniBand硬件踩坑过程的更多相关文章

  1. linux上安装redis的踩坑过程

    redis用处很广泛,我不再啰嗦了,我按照网上教程想在linux上安装下,开始了踩坑过程,网上买了一个linux centos7.3,滴滴云的,巨坑无比啊,不建议大家用这家的! redis 为4.0, ...

  2. React-Native 踩坑过程

    踩坑过程: 解决方法就是去 SDK Manager 把 23.0.1 的版本下载了 而如果报错信息中含有bintray.com.gradle.org等网址,请***,反复重试,或者去react nat ...

  3. 使用impala连接hive踩坑过程

    一.打包镜像出错 docker build总是出错,如果你用的是python3.7,可以考虑使用python3.6版本 并且注意:选择thrift-sasl==0.2.1,否则会出现: Attribu ...

  4. .NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)

    .NET Core 2.0 新时代 万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Stand ...

  5. 记一次Docker中部署Asp.Net Core 3.0的踩坑过程

    最近公司打算重构目前直销报单系统到微信小程序中,目前的系统只能在PC上面使用,这两年也搞过App端,但是由于人员流动和公司架构调整最后都不了了之,只留下一堆写了一半的接口.以前的接口依然是使用Asp. ...

  6. mini-ndn0.5.0 安装教程 (避免踩坑)

    写在前面 首先需要确定一些配置,因为在安装的过程中需要编译一些内容,所以需要提前准备好. 本人之前ubuntu系统可能比较乱,在尝试很多次安装后,仍然失败,所以就直接重装了一下.说一下我自己的一些配置 ...

  7. 安装GourdScanV2的踩坑过程

    环境:ubuntu 16.04.1 1.安装dcoker sudo apt-get install docker.io 坑:sudo apt-get install docker 2.下载关于dock ...

  8. ubuntu 16.04安装nVidia显卡驱动和cuda/cudnn踩坑过程

    安装深度学习框架需要使用cuda/cudnn(GPU)来加速计算,而安装cuda/cudnn,首先需要安装nvidia的显卡驱动. 我在安装的整个过程中碰到了驱动冲突,循环登录两个问题,以至于最后不得 ...

  9. web项目踩坑过程

    sql函数设计: 一开始本来是直接用Java的jdbc直接传输操作语句的.但后来学了存储过程发现存储过程可以提高不少的效率.就重构了自己对数据库的操作代码.包括:开启,查找,修改,关闭. 开启:直接使 ...

随机推荐

  1. Linux系统配置Java开发基本环境

    jdk安装一.用yum安装jdk1.查看yum库都有哪些jdk版本yum search java|grep jdk2.选择版本安装yum install java-1.8.0-openjdk(/usr ...

  2. Day6----Python的pyinstall库的使用

    Python的pyinstaller库 pyinstaller的安装 介绍:pyinstaller是Python的第三方库,主要用于将Python代码打包成  可执行文件    ,以此达到就算没安装P ...

  3. UVAlive 6756 Increasing Shortest Path

    We all love short and direct problems, it is easier to write, read and understand the problem statem ...

  4. LeetCode 852. Peak Index in a Mountain Array(C++)

    Let's call an array A a mountain if the following properties hold: A.length >= 3 There exists som ...

  5. 记录混合APP开发遇到的坑!!

    1.在IOS中给body绑定click事件会失效 2.在IOS中<div contenteditable="true"></div>中点击时可以弹出键盘但是 ...

  6. https://blog.csdn.net/eguid_1/article/category/6270094

    https://blog.csdn.net/eguid_1/article/category/6270094

  7. sass-RGB颜色函数-RGB()颜色函数

    在 Sass 的官方文档中,列出了 Sass 的颜色函数清单,从大的方面主要分为 RGB , HSL 和 Opacity 三大函数,当然其还包括一些其他的颜色函数,比如说 adjust-color 和 ...

  8. day19 python模块 json模块 pickle模块

    day19 python   一.序列化模块     序列类型: 列表 字符串 元组 bytes     序列化: 特指字符串和bytes, 就是把其他的数据类型转化成序列的数据类型的过程 dic = ...

  9. Tab选项卡点击 滑动效果js实现

    html部分代码: [html] css部分代码: *{ margin: ; padding:; list-style: none; font-size: 12px; } .notice{ width ...

  10. axios之前端发送get与post请求模板

    import axios from "axios"; 一.get mounted() { axios .get( "/api/queryusertree?domId=&q ...