Infiniband HCAのセットアップ on Ubuntu11.10 Server

Ubuntu11.10 Server で Mellanox ConnectX-2 を認識させるまでの記録

OSインストール
 ・Ubuntu11.10 Serverをインストール
・最新へアップデートを行なう
# sudo apt-get update
# sudo apt-get dist-upgrade
# sudo reboot

# lsmod
Module Size Used by
vesafb 13809 1
i7core_edac 27942 0
ghes 13661 0
dcdbas 14490 0
edac_core 53746 3 i7core_edac
hed 13226 1 ghes
acpi_power_meter 18210 0
lp 17799 0
parport 46562 1 lp
bnx2 82704 0
mlx4_core 111622 0

このとき、Kernelは、3.0.0-15 となった
# sudo depmod -a
# modprobe -l | grep ib_
kernel/drivers/infiniband/core/ib_core.ko
kernel/drivers/infiniband/core/ib_mad.ko
kernel/drivers/infiniband/core/ib_sa.ko
kernel/drivers/infiniband/core/ib_cm.ko
kernel/drivers/infiniband/core/ib_addr.ko
kernel/drivers/infiniband/core/ib_umad.ko
kernel/drivers/infiniband/core/ib_uverbs.ko
kernel/drivers/infiniband/core/ib_ucm.ko
kernel/drivers/infiniband/hw/mthca/ib_mthca.ko
kernel/drivers/infiniband/hw/ipath/ib_ipath.ko
kernel/drivers/infiniband/hw/qib/ib_qib.ko
kernel/drivers/infiniband/ulp/ipoib/ib_ipoib.ko
kernel/drivers/infiniband/ulp/srp/ib_srp.ko
kernel/drivers/infiniband/ulp/iser/ib_iser.ko

 ドライバは入っているので、とりあえず手動インストール
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/core/ib_core.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/core/ib_mad.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/hw/mthca/ib_mthca.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/core/ib_sa.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/core/ib_cm.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/ulp/ipoib/ib_ipoib.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/core/ib_umad.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/core/ib_uverbs.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/core/ib_ucm.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/hw/qib/ib_qib.ko
# sudo insmod /lib/modules/3.0.0-15-server/kernel/drivers/infiniband/hw/mlx4/mlx4_ib.ko
# ifconfig -a
eth0 Link encap:イーサネット ハードウェアアドレス 78:2b:cb:16:84:13
inetアドレス:10.10.57.113 ブロードキャスト:10.10.63.255 マスク:255.255.248.0
inet6アドレス: fe80::7a2b:cbff:fe16:8413/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:11243 エラー:0 損失:2731 オーバラン:0 フレーム:0
TXパケット:914 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:1326769 (1.3 MB) TXバイト:115919 (115.9 KB)
割り込み:16 メモリ:da000000-da012800

eth1 Link encap:イーサネット ハードウェアアドレス 78:2b:cb:16:84:14
BROADCAST MULTICAST MTU:1500 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
割り込み:17 メモリ:dc000000-dc012800

ib0 Link encap:不明なネット ハードウェアアドレス 80-00-00-48-FE-80-00-00-00-00-00-00-00-00-00-00
BROADCAST MULTICAST MTU:2044 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:256
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)

ib1 Link encap:不明なネット ハードウェアアドレス 80-00-00-49-FE-80-00-00-00-00-00-00-00-00-00-00
BROADCAST MULTICAST MTU:2044 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:256
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)

lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:1 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:1 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:88 (88.0 B) TXバイト:88 (88.0 B)

 ib0,1が出現すればOK
 デフォルトのドライバで行ける事が判ったので、
 /etc/modules に以下を記載
mlx4_core
mlx4_ib
ib_sa
ib_cm
ib_umad
ib_addr
ib_uverbs
ib_ipoib
ib_ipath
ib_qib
ib_sdp
ib_mthca


# sudo apt-get install mstflint rpm
/usr/bin/hca_self_test.ofed がインストールされ、HCAのセルフチェックができるようになる
  注)hca_self_test.ofedは、rpmパッケージを要求する

# sudo /usr/bin/hca_self_test.ofed
---- Performing InfiniBand HCA Self Test ----
Number of HCAs Detected ................ 1
PCI Device Check ....................... PASS
HCA Firmware on HCA #0 ................. v2.8.0
HCA Firmware Check for HCA #0 .......... NA
REASON: NO required fw version
Host Driver Initialization ............. PASS
Number of HCA Ports Active ............. 1
Port State of Port #0 on HCA #0 ........ UP 4X QDR
Port State of Port #1 on HCA #0 ........ DOWN
Error Counter Check on HCA #0 .......... PASS
Kernel Syslog Check .................... PASS
Node GUID on HCA #0 .................... 00:02:c9:03:00:0e:c4:56
------------------ DONE ---------------------

# sudo apt-get install opensm
# sudo apt-get install libsdp1 libsdpa-dev


# sudo reboot
 リーブート完了後、モジュールが正常に読み込まれ、ib0,1がみえればOK

 後は、適当に/etc/network/interfaces を編集して、IPアドレスを振れば設定完了

★とりあえず Infiniband で遊ぶにはこれで良かったのですが、Gluster で RDMA が使えるようにすることが目的なので、OFEDをインストールする。
OFED のインストール
# wget http://www.openfabrics.org/downloads/OFED/ofed-1.5.4/OFED-1.5.4.1.tgz
# sudo apt-get install alien
# sudo apt-get install flex bison zlib1g-dev libssl-dev tcl-dev tk-dev
# tar xvfz OFED-1.5.4.1.tgz
# cd OFED-1.5.4.1
# sudo ln -s /usr/bin/rpm /bin/rpm
# sudo ln -s /usr/bin/rpmbuild /bin/rpmbuild
# sudo rm -rf /bin/sh
# sudo ln -s /bin/bash /bin/sh


install.pl の修正
  my $rpminstall_flags = ""; を
  my $rpminstall_flags = "--force-debian"; に変更する

 uninstall.sh の修正
  $RPM -e となっている箇所を
  $RPM --force-debian -e に修正する

# sudo ./install.pl --without-depcheck
2) Install OFED Software
3) All packages (all of Basic, HPC)
1) OFA (IB and iWARP)
以降はデフォルトでOK

# cd /lib/modules/3.0.0-15-server
# sudo rm -rf kernel/drivers/net/mlx4
# sudo rm -rf kernel/drivers/infiniband
# sudo depmod -a
# sudo update-initramfs -u
# sudo apt-get install ibverbs-utils
# sudo apt-get install libmlx4-1 libmlx4-dev
# sudo vi /etc/udev/rules.d/90-ib.rules
NAME= となっている箇所全てを SYMLINK+ に変更する

# sudo reboot

再起動後、 ib0,1 が見えていればOK