从0开始的InfiniBand硬件踩坑过程

由于科学计算实验的需求,需要使用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硬件设置踩坑过程结束。

 

 

 

posted @ 2019-12-06 16:25  Freedom314  阅读(10827)  评论(0编辑  收藏  举报