이 글은 Mellanox 사의 Adapter 를 기준으로 설명합니다.


1. Mellanox 홈페이지에서 Infiniband 드라이버를 다운로드 합니다.

    • wget http://www.mellanox.com/downloads/ofed/MLNX_OFED_LINUX-1.5.3-3.1.0-rhel6.3-x86_64.iso

2. Release note 를 보면 시스템에 기본적으로 설치되어야할 소프트웨어 목록이 있다. (iso, tgz 파일 안에 있다.)

OS Distribution         Required Packages
---------------         ----------------------------------
General:
o  Common to all        gcc, glib, glib-devel, glibc, glibc-devel,
                        glibc-devel-32bit (to build 32-bit libraries on x86_64
                        and ppc64), zlib-devel, libstdc++-devel
o  RedHat, Fedora       kernel-devel, rpm-build, redhat-rpm-config
o  SLES                 kernel-source, kernel-syms, rpm

Note:   To build 32-bit libraries on x86_64 and ppc64 platforms, the 32-bit
        glibc-devel should be installed.

Specific Component Requirements:
o  Mvapich              a Fortran Compiler (such as gcc-g77)
o  Mvapich2             libsysfs-devel
o  Open MPI             libsysfs-devel
o  ibutils              tcl, tcl-devel, tk, libstdc++-devel
o  mstflint             libstdc++-devel (32-bit on ppc64), gcc-c++

3. 다음의 명령어로 각각 설치한다.

    • yum install gcc gcc-c++
    • yum install glibc-devel.i686
    • yum install zlib-devel
    • yum install kernel-devel rpm-build redhat-rpm-config
    • yum install gcc-gfortran
    • yum install libsysfs-devel
    • yum install tcl tcl-devel tk
    • yum install bc tcsh

별로 필요 없을 수도 있긴 하지만, 일반적으로 개발하는데 필수품이므로 다음 패키지도 설치한다.

    • yum install autoconf automake libtool subversion

4. 다운받은 iso 이미지를 /mnt 경로로 마운트한다.

    • mount -o ro,loop MLNX_OFED_LINUX-1.5.3-3.1.0-rhel6.3-x86_64.iso /mnt

5. 설치 스크립트를 실행한다.

    • /mnt/mlnxofedinstall

[root@system ~]# /mnt/mlnxofedinstall
This program will install the MLNX_OFED_LINUX package on your machine.
Note that all other Mellanox, OEM, OFED, or Distribution IB packages will be removed.
Do you want to continue?[y/N]:y


Starting MLNX_OFED_LINUX-1.5.3-3.1.0 installation ...

Installing mlnx-ofa_kernel RPM
준비 중...               ##################################################
mlnx-ofa_kernel             ##################################################
Installing kmod-mlnx-ofa_kernel RPM
준비 중...               ##################################################
kmod-mlnx-ofa_kernel        ##################################################
Installing mlnx-ofa_kernel-devel RPM
준비 중...               ##################################################
mlnx-ofa_kernel-devel       ##################################################
Installing kernel-mft RPM
준비 중...               ##################################################
kernel-mft                  ##################################################
Installing knem RPM
준비 중...               ##################################################
knem                        ##################################################
Installing mpi-selector RPM
준비 중...               ##################################################
mpi-selector                ##################################################
Installing user level RPMs:
준비 중...               ##################################################
ofed-scripts                ##################################################
준비 중...               ##################################################
libibverbs                  ##################################################
준비 중...               ##################################################
libibverbs                  ##################################################
준비 중...               ##################################################
libibverbs-devel            ##################################################
준비 중...               ##################################################
libibverbs-devel            ##################################################
준비 중...               ##################################################
libibverbs-devel-static     ##################################################
준비 중...               ##################################################
libibverbs-devel-static     ##################################################
준비 중...               ##################################################
libibverbs-utils            ##################################################
준비 중...               ##################################################
libmthca                    ##################################################
준비 중...               ##################################################
libmthca                    ##################################################
준비 중...               ##################################################
libmthca-devel-static       ##################################################
준비 중...               ##################################################
libmthca-devel-static       ##################################################
준비 중...               ##################################################
libmlx4                     ##################################################
준비 중...               ##################################################
libmlx4                     ##################################################
준비 중...               ##################################################
libmverbs                   ##################################################
준비 중...               ##################################################
libmverbs                   ##################################################
준비 중...               ##################################################
libmlx4-devel               ##################################################
준비 중...               ##################################################
libmlx4-devel               ##################################################
준비 중...               ##################################################
libmverbs-devel             ##################################################
준비 중...               ##################################################
libmverbs-devel             ##################################################
준비 중...               ##################################################
libmqe                      ##################################################
준비 중...               ##################################################
libmqe                      ##################################################
준비 중...               ##################################################
libmqe-devel                ##################################################
준비 중...               ##################################################
libmqe-devel                ##################################################
준비 중...               ##################################################
libcxgb3                    ##################################################
준비 중...               ##################################################
libcxgb3                    ##################################################
준비 중...               ##################################################
libcxgb3-devel              ##################################################
준비 중...               ##################################################
libcxgb3-devel              ##################################################
준비 중...               ##################################################
libnes                      ##################################################
준비 중...               ##################################################
libnes                      ##################################################
준비 중...               ##################################################
libnes-devel-static         ##################################################
준비 중...               ##################################################
libnes-devel-static         ##################################################
준비 중...               ##################################################
libipathverbs               ##################################################
준비 중...               ##################################################
libipathverbs               ##################################################
준비 중...               ##################################################
libipathverbs-devel         ##################################################
준비 중...               ##################################################
libipathverbs-devel         ##################################################
준비 중...               ##################################################
libibcm                     ##################################################
준비 중...               ##################################################
libibcm                     ##################################################
준비 중...               ##################################################
libibcm-devel               ##################################################
준비 중...               ##################################################
libibcm-devel               ##################################################
준비 중...               ##################################################
libibumad                   ##################################################
준비 중...               ##################################################
libibumad                   ##################################################
준비 중...               ##################################################
libibumad-devel             ##################################################
준비 중...               ##################################################
libibumad-devel             ##################################################
준비 중...               ##################################################
libibumad-static            ##################################################
준비 중...               ##################################################
libibumad-static            ##################################################
준비 중...               ##################################################
libibmad                    ##################################################
준비 중...               ##################################################
libibmad                    ##################################################
준비 중...               ##################################################
libibmad-devel              ##################################################
준비 중...               ##################################################
libibmad-devel              ##################################################
준비 중...               ##################################################
libibmad-static             ##################################################
준비 중...               ##################################################
libibmad-static             ##################################################
준비 중...               ##################################################
ibsim                       ##################################################
준비 중...               ##################################################
ibacm                       ##################################################
준비 중...               ##################################################
librdmacm                   ##################################################
준비 중...               ##################################################
librdmacm                   ##################################################
준비 중...               ##################################################
librdmacm-utils             ##################################################
준비 중...               ##################################################
librdmacm-devel             ##################################################
준비 중...               ##################################################
librdmacm-devel             ##################################################
준비 중...               ##################################################
libsdp                      ##################################################
준비 중...               ##################################################
libsdp                      ##################################################
준비 중...               ##################################################
libsdp-devel                ##################################################
준비 중...               ##################################################
libsdp-devel                ##################################################
준비 중...               ##################################################
opensm-libs                 ##################################################
준비 중...               ##################################################
opensm-libs                 ##################################################
준비 중...               ##################################################
opensm                      ##################################################
준비 중...               ##################################################
opensm-devel                ##################################################
준비 중...               ##################################################
opensm-devel                ##################################################
준비 중...               ##################################################
opensm-static               ##################################################
준비 중...               ##################################################
opensm-static               ##################################################
준비 중...               ##################################################
compat-dapl                 ##################################################
준비 중...               ##################################################
compat-dapl                 ##################################################
준비 중...               ##################################################
compat-dapl-devel           ##################################################
준비 중...               ##################################################
compat-dapl-devel           ##################################################
준비 중...               ##################################################
dapl                        ##################################################
준비 중...               ##################################################
dapl                        ##################################################
준비 중...               ##################################################
dapl-devel                  ##################################################
준비 중...               ##################################################
dapl-devel                  ##################################################
준비 중...               ##################################################
dapl-devel-static           ##################################################
준비 중...               ##################################################
dapl-devel-static           ##################################################
준비 중...               ##################################################
dapl-utils                  ##################################################
준비 중...               ##################################################
perftest                    ##################################################
준비 중...               ##################################################
mstflint                    ##################################################
준비 중...               ##################################################
mft                         ##################################################
준비 중...               ##################################################
sdpnetstat                  ##################################################
준비 중...               ##################################################
srptools                    ##################################################
준비 중...               ##################################################
rds-tools                   ##################################################
준비 중...               ##################################################
rds-devel                   ##################################################
준비 중...               ##################################################
ibutils2                    ##################################################
준비 중...               ##################################################
ibutils                     ##################################################
준비 중...               ##################################################
cc_mgr                      ##################################################
준비 중...               ##################################################
dump_pr                     ##################################################
준비 중...               ##################################################
ar_mgr                      ##################################################
준비 중...               ##################################################
ibdump                      ##################################################
준비 중...               ##################################################
infiniband-diags            ##################################################
준비 중...               ##################################################
qperf                       ##################################################
준비 중...               ##################################################
fca                         ##################################################
INFO: updating ...

IMPORTANT NOTE:
===============

- The FCA Manager and FCA MPI Runtime library are installed in /opt/mellanox/fca directory.
- The FCA Manager will not be started automatically.
- To start FCA Manager now, type:
    # /etc/init.d/fca_managerd start

- There should be single process of FCA Manager running per fabric.

- To start FCA Manager automatically after boot, type:
    # /etc/init.d/fca_managerd install_service

- Check /opt/mellanox/fca/share/doc/fca/README.txt for quick start instructions.

준비 중...               ##################################################
mxm                         ##################################################
준비 중...               ##################################################
infinipath-psm              ##################################################
준비 중...               ##################################################
infinipath-psm-devel        ##################################################
준비 중...               ##################################################
mvapich_gcc                 ##################################################
준비 중...               ##################################################
openmpi_gcc                 ##################################################
준비 중...               ##################################################
mpitests_mvapich_gcc        ##################################################
준비 중...               ##################################################
mpitests_openmpi_gcc        ##################################################
준비 중...               ##################################################
mlnxofed-docs               ##################################################

Installation finished successfully.

Configuring /etc/security/limits.conf.
Please reboot your system for the changes to take effect.
[root@system ~]#

6. 재부팅한다.

    • shutdown -r now

7. 장치가 인식되었는지 확인해본다.

    • yum install pciutils
    • lspci -v
    • lspci -v | grep -i mellanox

[root@system ~]# lspci -v | grep -i mellanox
01:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]
        Subsystem: Mellanox Technologies Device 0017
[root@system ~]#

8. Self 테스트를 해본다.

    • hca_self_test.ofed

[root@system ~]# hca_self_test.ofed

---- Performing Adapter Device Self Test ----
Number of CAs Detected ................. 1
PCI Device Check ....................... PASS
/usr/bin/hca_self_test.ofed: line 149: [: too many arguments
Host Driver RPM Check .................. FAIL
    REASON: no RPMs found for currently booted kernel 2.6.32-279.14.1.el6.x86_64
Kernel Arch ............................ x86_64
Host Driver Version .................... NA
Firmware Check on CA #0 (VPI) .......... NA
Host Driver Initialization ............. NA
Number of CA Ports Active .............. NA
Error Counter Check .................... NA
Kernel Syslog Check .................... NA
Node GUID on CA #0 (VPI) ............... 00:02:c9:03:00:18:b9:c0
------------------ DONE ---------------------

[root@system ~]#

9. FAIL 이 떴다. 커널 자체에 Infiniband 를 탑재하도록 다시 빌드해야 한다. 마운트했던 경로에 이를 지원해주는 스크립트가 있다.

    • yum install mkisofs
    • yum install make

새로운 iso 이미지를 만들 것이므로, 이미지 굽는 소프트웨어가 필요하다. 이를 설치하자.

    • cd ~
    • mkdir ofed
    • cp -r /mnt ./ofed
    • umount /mnt
    • ./ofed/mnt/mlnx_add_kernel_support.sh -i MLNX_OFED_LINUX-1.5.3-3.1.0-rhel6.3-x86_64.iso

마운트한 경로의 파일을 복사해 두고, /mnt 경로는 언마운트해주자.

그 다음에 드디어 스크립트를 실행하자. 실행 결과물은 기본적으로 /tmp 경로에 만들어진다.

[root@system ~]# ./ofed/mnt/mlnx_add_kernel_support.sh -i MLNX_OFED_LINUX-1.5.3-3.1.0-rhel6.3-x86_64.iso
Note: This program will create MLNX_OFED_LINUX ISO for rhel6.3 under /tmp directory.
      All Mellanox, OEM, OFED, or Distribution IB packages will be removed.
Do you want to continue?[y/N]:y
See log file /tmp/mlnx_ofed_iso.2235.log

Building OFED RPMs. Please wait...
Removing OFED RPMs...
Running mkisofs...
Created /tmp/MLNX_OFED_LINUX-1.5.3-3.1.0-rhel6.3-x86_64.iso
[root@system ~]#

10. 다시 만들어진 iso 를 마운트하고 다시 인스톨한다.

    • cd /tmp
    • mount -o ro,loop MLNX_OFED_LINUX-1.5.3-3.1.0-rhel6.3-x86_64.iso /mnt
    • /mnt/mlnxofedinstall

[root@system tmp]# /mnt/mlnxofedinstall
This program will install the MLNX_OFED_LINUX package on your machine.
Note that all other Mellanox, OEM, OFED, or Distribution IB packages will be removed.
Do you want to continue?[y/N]:y


Starting MLNX_OFED_LINUX-1.5.3-3.1.0 installation ...

Installing kernel-ib RPM

준비 중...               ##################################################
kernel-ib                   ##################################################
Installing kernel-ib-devel RPM
준비 중...               ##################################################
kernel-ib-devel             ##################################################
Installing kernel-mft RPM
준비 중...               ##################################################
kernel-mft                  ##################################################
Installing knem RPM
준비 중...               ##################################################
knem                        ##################################################
Installing mpi-selector RPM
준비 중...               ##################################################
mpi-selector                ##################################################
Installing user level RPMs:
준비 중...               ##################################################
ofed-scripts                ##################################################
준비 중...               ##################################################
libibverbs                  ##################################################
준비 중...               ##################################################
libibverbs                  ##################################################
준비 중...               ##################################################
libibverbs-devel            ##################################################
준비 중...               ##################################################
libibverbs-devel            ##################################################
준비 중...               ##################################################
libibverbs-devel-static     ##################################################
준비 중...               ##################################################
libibverbs-devel-static     ##################################################
준비 중...               ##################################################
libibverbs-utils            ##################################################
준비 중...               ##################################################
libmthca                    ##################################################
준비 중...               ##################################################
libmthca                    ##################################################
준비 중...               ##################################################
libmthca-devel-static       ##################################################
준비 중...               ##################################################
libmthca-devel-static       ##################################################
준비 중...               ##################################################
libmlx4                     ##################################################
준비 중...               ##################################################
libmlx4                     ##################################################
준비 중...               ##################################################
libmverbs                   ##################################################
준비 중...               ##################################################
libmverbs                   ##################################################
준비 중...               ##################################################
libmlx4-devel               ##################################################
준비 중...               ##################################################
libmlx4-devel               ##################################################
준비 중...               ##################################################
libmverbs-devel             ##################################################
준비 중...               ##################################################
libmverbs-devel             ##################################################
준비 중...               ##################################################
libmqe                      ##################################################
준비 중...               ##################################################
libmqe                      ##################################################
준비 중...               ##################################################
libmqe-devel                ##################################################
준비 중...               ##################################################
libmqe-devel                ##################################################
준비 중...               ##################################################
libcxgb3                    ##################################################
준비 중...               ##################################################
libcxgb3                    ##################################################
준비 중...               ##################################################
libcxgb3-devel              ##################################################
준비 중...               ##################################################
libcxgb3-devel              ##################################################
준비 중...               ##################################################
libnes                      ##################################################
준비 중...               ##################################################
libnes                      ##################################################
준비 중...               ##################################################
libnes-devel-static         ##################################################
준비 중...               ##################################################
libnes-devel-static         ##################################################
준비 중...               ##################################################
libipathverbs               ##################################################
준비 중...               ##################################################
libipathverbs               ##################################################
준비 중...               ##################################################
libipathverbs-devel         ##################################################
준비 중...               ##################################################
libipathverbs-devel         ##################################################
준비 중...               ##################################################
libibcm                     ##################################################
준비 중...               ##################################################
libibcm                     ##################################################
준비 중...               ##################################################
libibcm-devel               ##################################################
준비 중...               ##################################################
libibcm-devel               ##################################################
준비 중...               ##################################################
libibumad                   ##################################################
준비 중...               ##################################################
libibumad                   ##################################################
준비 중...               ##################################################
libibumad-devel             ##################################################
준비 중...               ##################################################
libibumad-devel             ##################################################
준비 중...               ##################################################
libibumad-static            ##################################################
준비 중...               ##################################################
libibumad-static            ##################################################
준비 중...               ##################################################
libibmad                    ##################################################
준비 중...               ##################################################
libibmad                    ##################################################
준비 중...               ##################################################
libibmad-devel              ##################################################
준비 중...               ##################################################
libibmad-devel              ##################################################
준비 중...               ##################################################
libibmad-static             ##################################################
준비 중...               ##################################################
libibmad-static             ##################################################
준비 중...               ##################################################
ibsim                       ##################################################
준비 중...               ##################################################
ibacm                       ##################################################
준비 중...               ##################################################
librdmacm                   ##################################################
준비 중...               ##################################################
librdmacm                   ##################################################
준비 중...               ##################################################
librdmacm-utils             ##################################################
준비 중...               ##################################################
librdmacm-devel             ##################################################
준비 중...               ##################################################
librdmacm-devel             ##################################################
준비 중...               ##################################################
libsdp                      ##################################################
준비 중...               ##################################################
libsdp                      ##################################################
준비 중...               ##################################################
libsdp-devel                ##################################################
준비 중...               ##################################################
libsdp-devel                ##################################################
준비 중...               ##################################################
opensm-libs                 ##################################################
준비 중...               ##################################################
opensm-libs                 ##################################################
준비 중...               ##################################################
opensm                      ##################################################
준비 중...               ##################################################
opensm-devel                ##################################################
준비 중...               ##################################################
opensm-devel                ##################################################
준비 중...               ##################################################
opensm-static               ##################################################
준비 중...               ##################################################
opensm-static               ##################################################
준비 중...               ##################################################
compat-dapl                 ##################################################
준비 중...               ##################################################
compat-dapl                 ##################################################
준비 중...               ##################################################
compat-dapl-devel           ##################################################
준비 중...               ##################################################
compat-dapl-devel           ##################################################
준비 중...               ##################################################
dapl                        ##################################################
준비 중...               ##################################################
dapl                        ##################################################
준비 중...               ##################################################
dapl-devel                  ##################################################
준비 중...               ##################################################
dapl-devel                  ##################################################
준비 중...               ##################################################
dapl-devel-static           ##################################################
준비 중...               ##################################################
dapl-devel-static           ##################################################
준비 중...               ##################################################
dapl-utils                  ##################################################
준비 중...               ##################################################
perftest                    ##################################################
준비 중...               ##################################################
mstflint                    ##################################################
준비 중...               ##################################################
mft                         ##################################################
준비 중...               ##################################################
sdpnetstat                  ##################################################
준비 중...               ##################################################
srptools                    ##################################################
준비 중...               ##################################################
rds-tools                   ##################################################
준비 중...               ##################################################
rds-devel                   ##################################################
준비 중...               ##################################################
ibutils2                    ##################################################
준비 중...               ##################################################
ibutils                     ##################################################
준비 중...               ##################################################
cc_mgr                      ##################################################
준비 중...               ##################################################
dump_pr                     ##################################################
준비 중...               ##################################################
ar_mgr                      ##################################################
준비 중...               ##################################################
ibdump                      ##################################################
준비 중...               ##################################################
infiniband-diags            ##################################################
준비 중...               ##################################################
qperf                       ##################################################
준비 중...               ##################################################
fca                         ##################################################
INFO: updating ...

IMPORTANT NOTE:
===============

- The FCA Manager and FCA MPI Runtime library are installed in /opt/mellanox/fca directory.
- The FCA Manager will not be started automatically.
- To start FCA Manager now, type:
    # /etc/init.d/fca_managerd start

- There should be single process of FCA Manager running per fabric.

- To start FCA Manager automatically after boot, type:
    # /etc/init.d/fca_managerd install_service

- Check /opt/mellanox/fca/share/doc/fca/README.txt for quick start instructions.

준비 중...               ##################################################
mxm                         ##################################################
준비 중...               ##################################################
infinipath-psm              ##################################################
준비 중...               ##################################################
infinipath-psm-devel        ##################################################
준비 중...               ##################################################
mvapich_gcc                 ##################################################
준비 중...               ##################################################
openmpi_gcc                 ##################################################
준비 중...               ##################################################
mpitests_mvapich_gcc        ##################################################
준비 중...               ##################################################
mpitests_openmpi_gcc        ##################################################
준비 중...               ##################################################
mlnxofed-docs               ##################################################
Device (01:00.0):
        01:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]
        Link Width: 8x
        PCI Link Speed: Unknown


Installation finished successfully.

The firmware version on the device 2.10.700 is newer than provided version 2.10.0. No update required.
Note: To force firmware update use '--force-fw-update' flag.
Please reboot your system for the changes to take effect.
[root@system tmp]#
[root@system tmp]# hca_self_test.ofed

---- Performing Adapter Device Self Test ----
Number of CAs Detected ................. 1
PCI Device Check ....................... PASS
Kernel Arch ............................ x86_64
Host Driver Version .................... MLNX_OFED_LINUX-1.5.3-3.1.0 (OFED-1.5.3-3.1.0): 2.6.32-279.14.1.el6.x86_64
Host Driver RPM Check .................. PASS
Firmware on CA #0 VPI .................. v2.10.700
Firmware Check on CA #0 (VPI) .......... PASS
    NOTE: The found fw version is higher than the fw included in this package (v2.10.0)
Host Driver Initialization ............. PASS
Number of CA Ports Active .............. 0
Port State of Port #1 on CA #0 (VPI)..... DOWN (InfiniBand)
Error Counter Check on CA #0 (VPI)...... PASS
Kernel Syslog Check .................... PASS
Node GUID on CA #0 (VPI) ............... 00:02:c9:03:00:18:b9:c0
------------------ DONE ---------------------

[root@system tmp]#

11. Self 테스트 결과도 중간에 Port 상태가 DOWN 으로 떨어지는 것 이외에는 모두 인식했다.


추가:

포트 1번이 DOWN 된 이유를 알았다. 광케이블을 깊숙히 밀어넣어서 단자에 꽂아야 하는데, 다소 느슨하게 접촉이 되었나보다. 제대로 꽂고선 Self 테스트를 해보니 제대로 인식했다.

Port State of Port #1 on CA #0 (VPI)..... UP 4X QDR (InfiniBand)
Posted by 집시F