infiniband安装配置

[TOC]

基本概念

RDMA

Remote Direct Memory Access: 为了解决网络传输中服务器端数据处理的延迟而产生,通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,不需要用到多少计算机的处理功能。

IB

infiniband,是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。InfiniBand也用作服务器与存储系统之间的直接或交换互连,以及存储系统之间的互连,它用到了RDMA技术。

IPoIB

Internet Protocol over InfiniBand,利用物理IB网络通过IP协议进行连接,并进行数据传输。性能稍低于rdma,但是比普通的千兆网要快很多。目前在集群nfs上测试,可以10Gb/s

安装infiniband

安装包

infiniband驱动模块是需要在所有infiniband节点安装。

驱动模块,以下软件包之一:

1
2
以下软件包之一:infinipath-psm
、libcxgb3、libcxgb4、libehca、libipathverbs、libmthca、libmlx4、libmlx5、libnes 及 libocrdma

libibverbs 提供InfiniBand Verbs API

1
yum install libibverbs
1
2
yum install rdma  #RDMA栈内核初始化
systemctl start rdma

opensm

opensm可以搭建管理子网络。

1
yum install opensm

测试工具

infiniband-diags 或 ibutils 为 InfiniBand 结构管理提供大量有用的调试工具。这些工具只
为 iWARP 或 RoCE 提供有限功能,因为大多数工具可在 InfiniBank 链接层工作,但无法在 Verbs API 层
使用。

qperf和perftest 用于各种 RDMA 通讯类型的性能测试应用程序。

------------------------------------
查看所有node的配置信息
------------------------------------
    iblinkinfo 
        CA: node5 mlx5_0:
              0x248a07030058f544      1    1[  ] ==( 4X      25.78125 Gbps Active/  LinkUp)==>      11   34[  ] "MF0;switch-ab29a6:MSB7700/U1" ( )
        CA: node6 mlx5_0:
              0x248a07030058f650      8    1[  ] ==( 4X      25.78125 Gbps Active/  LinkUp)==>      11   32[  ] "MF0;switch-ab29a6:MSB7700/U1" ( )
                  11   32[  ] ==( 4X      25.78125 Gbps Active/  LinkUp)==>       8    1[  ] "node6 mlx5_0" ( )
                  11   34[  ] ==( 4X      25.78125 Gbps Active/  LinkUp)==>       1    1[  ] "node5 mlx5_0" ( )

------------------------------------
ibping test RDMA
------------------------------------
    首先启动opensm服务
    然后查看每个node节点的infiniband信息 ibv_devinfo 或者 ibstat都行
    [root@master rdma]#ibv_devinfo && ibstat
        hca_id: mlx5_0
            transport:          InfiniBand (0)
            fw_ver:             12.17.1010
            node_guid:          248a:0703:0058:f504
            sys_image_guid:         248a:0703:0058:f504
            vendor_id:          0x02c9
            vendor_part_id:         4115
            hw_ver:             0x0
            board_id:           MT_2180110032
            phys_port_cnt:          1
                port:   1
                    state:          PORT_ACTIVE (4)
                    max_mtu:        4096 (5)
                    active_mtu:     4096 (5)
                    sm_lid:         2
                    port_lid:       2
                    port_lmc:       0x00
                    link_layer:     InfiniBand

        CA 'mlx5_0'
            CA type: MT4115
            Number of ports: 1
            Firmware version: 12.17.1010
            Hardware version: 0
            Node GUID: 0x248a07030058f504
            System image GUID: 0x248a07030058f504
            Port 1:
                State: Active
                Physical state: LinkUp
                Rate: 100
                Base lid: 2
                LMC: 0
                SM lid: 2
                Capability mask: 0x2659e84a
                Port GUID: 0x248a07030058f504
                Link layer: InfiniBand

    在服务端
        ibping -S -C mlx5_0 -P 1 -L 2
        ibping -S -C mlx5_0 -P 1 -G 0x248a07030058f504
        -S 以server启动
        -C 就是指明CA的名称
        -P 指明port
        -L 指明port_lid/Base lid
        -G 指明GUID

    在客户端
        ibping -c 10000 -f -C mlx5_0 -P 1 -L 2
        指明你要ping的服务端的 -C -P -G -L等
        结果如下:
        [root@node2 ~]#ibping -c 10000 -f -C mlx5_0 -P 1 -L 2

        --- master.(none) (Lid 2) ibping statistics ---
        10000 packets transmitted, 10000 received, 0% packet loss, time 1364 ms
        rtt min/avg/max = 0.034/0.136/0.849 ms

IPoIB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
------------------------------------
IPoIB 配置
------------------------------------
#cat /etc/sysconfig/network-scripts/ifcfg-mlx5_ib0
# Generated by dracut initrd

DEVICE=mlx5_ib0 #这里必须对应/etc/udev/rules.d/70-persistent-ipoib.rules 中的 NAME="mlx5_ib0"
TYPE=InfiniBand #这里必须是InfiniBand
ONBOOT=yes
HARDWAR=80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:58:f5:04
BOOTPROTO=none
IPADDR=172.16.20.10
NETMASK=255.255.255.0
BROADCAST=172.16.20.255
NAME=mlx5_ib0 #这里对应ifconfig中的网卡名称
MTU=65520 #设置连接模式最大MTU
STARTMODE='auto'
NM_CONTROLLED=no
CONNECTED_MODE=yes #设置连接模式

#ifup mlx5_ib0

通过IPoIB配置nfs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
服务端:
yum install nfs-utils
modprobe svcrdma
systemctl start nfs
echo rdma 20049 > /proc/fs/nfsd/portlist
cat /proc/fs/nfsd/portlist
rdma 20049
udp 2049
tcp 2049

客户端:
modprobe xprtrdma
mount -o rdma,port=20049 172.16.20.10:/atlas /atlas
cat /etc/fstab
172.16.20.10:/atlas /atlas nfs defaults 0 0
/dev/sda1 /scratch ext4 defaults 0 0

mount | grep my_directory
...proto=rdma,port=20049,...