Linux InfiniBandのメモ帳
ConnectXを10GbEに設定する。
実験環境での設定手順。
Mellanoxのドライバを使用する為にScientific Linux 6.1を使用してます。
カードはHPのHP 448397-B21 DualPort InfiniBand 4x DDR PCI-Eを使用。
ドライバ等はインストール済みの状態で、一カ所設定ファイルを書き換え。
[root@scientific infiniband]# cat /etc/infiniband/connectx.conf # ConnectX Port Configuration for /bin/echo eth > /sys/bus/pci/devices/0000\:02\:00.0/mlx4_port1 /bin/echo eth > /sys/bus/pci/devices/0000\:02\:00.0/mlx4_port2
設定コマンドあるけど、そっちだと設定失敗して必ずInfiniBandモードになる。
以下の設定だと何故か駄目。
# ConnectX Port Configuration for /sbin/connectx_port_config -d -c eth,eth
InfiniBandモードに戻したかったら、
/bin/echo ib > /sys/bus/pci/devices/0000\:02\:00.0/mlx4_port1 /bin/echo ib > /sys/bus/pci/devices/0000\:02\:00.0/mlx4_port2
で戻ります。
ConnectX-2以降の場合のポート設定
/etc/modprobe.d 以下にmlx4_coreを呼び出す際のオプションを書いたファイルを置く。
うちでは、mlnx.confというファイルを作成している。
options mlx4_core port_type_array=1,2
ポート1から順に指定していく、1はIBで2はEthernetの指定になる。
Ubuntu 12.04LTSの場合
MLNX_OFEDが対応したので、それをインストール。
ABIに変更があるため、同梱のコマンド・ライブラリ等を使用しないと駄目みたい。
kernel-imageを3.5まで上げてみたが動作した。3.8だとコンパイルエラーでこけます。
Ubuntu 12.10の場合
Ubuntu 12.10でConnextX-2 MHQH29B-XTCを使って試してみた。
Ubuntu 12.04 LTSだと、iSERにバグがあって色々と面倒だったので、12.10使ってます。
12.10だとKernelが3.5になってるから、色々とRDMA回りが修正されてます。
ちなみに、InfiniBand用のppaがあるので、それを利用。
https://launchpad.net/~narayan-desai/+archive/infiniband
から、パッケージ落とせるのでそれを利用すると楽。
sudo add-apt-repository ppa:narayan-desai/infiniband sudo vi /etc/apt/sources.list.d/narayan-desai-infiniband-quantal.list
ただし 12.04LTS precise用なので、/etc/apt/sources.list.d/の下の設定ファイルを下記のように書き換える必要あり。
deb http://ppa.launchpad.net/narayan-desai/infiniband/ubuntu precise main deb-src http://ppa.launchpad.net/narayan-desai/infiniband/ubuntu precise main
ドライバはOFEDのKernel Patchは使用せずに、Kernel標準のドライバを利用してます。
上記のはDebian OFEDからパッケージ取ってきてる模様。
Debian系でも標準パッケージだけで、新しいOFEDに近い環境が使える日も近い?
パッケージ追加
とりあえず、以下のパッケージを追加すれば、動作確認可能です。
sudo aptitude install infiniband-diags
InfiniBandの設定
/etc/modules に下記を追加(debian OFED how toより拝借)
# Hardware drivers # Choose the apropriate modules from # /lib/modules/<kernel-version>/updates/kernel/drivers/infiniband/hw # # Mellanox ConnectX cards mlx4_ib mlx4_en #ib_mthca # some mellanox cards #iw_cxgb3 # Chelsio T3 cards #iw_nes # NetEffect cards # # Protocol modules # Common modules rdma_ucm ib_umad ib_uverbs # IP over IB ib_ipoib # scsi over IB ib_srp # IB SDP protocol ib_sdp
/etc/network/interfaceで下記のように設定してる。
auto p2p1 iface p2p1 inet manual post-up /bin/echo eth > /sys/bus/pci/devices/0000\:02\:00.0/mlx4_port2 up ifconfig p2p1 0.0.0.0 mtu 9000 promisc up auto ib0 iface ib0 inet static post-up /bin/echo connected > /sys/class/net/ib0/mode post-up ip link set ib0 mtu 65520 # post-up /bin/echo datagram > /sys/class/net/ib0/mode # post-up ip link set ib0 mtu 4092 # post-up ip link set ib0 mtu 2044 address 192.168.17.55 network 192.168.17.0 netmask 255.255.255.0 broadcast 192.168.17.255
p2p1が、MHQH29B-XTRのPort2をEtherにする設定。
ib0が、Port1をIPoIBでの使用する設定。
上記の設定ではconnected modeで設定している。
UDモードで設定したい場合は、コメントになってる部分をコメントアウトする。
はまった所
ESXi 4.1・Linux・OpenIndiana・Windows Server 2008 R2でInfiniBand使用してるけど、OpenSMを最新にするとエラーが orz
とりあえず、Windows Server 2008 R2にインストールしてWindows用のOFED 3.1のOpenSMを使用すると何とか動くので、
それで動作させてますが、WindowsでのIPoIBインターフェスが上がらなくなって鬱 orz
SCSTでSRP Targetの設定
- 設定ファイル
# Automatically generated by SCST Configurator v2.0.0. HANDLER vdisk_blockio { DEVICE disk00 { filename /dev/zvol/zpool/iscsi nv_cache 1 } } TARGET_DRIVER ib_srpt { enabled 1 TARGET ib_srpt_target_0 { rel_tgt_id 1 enabled 1 GROUP HOST01 { LUN 0 disk00 } } }
srptools
とりあえず、OFEDで配ってるのではなくて改造されてる方の所。
https://github.com/bvanassche/srptools
srp initiatorのバックポートとかもされてるみたい。
iscsi initiatorの設定方法
open-iscsiの設定方法は色々なところに載ってるので省略。
open-iscsiでのiSER initiatorの設定の仕方
root@kvm-server-01:~# iscsiadm --mode node --op update -T iqn.1986-03.com.sun:02:iscsi-iser-kvm \ --name=iface.iscsi_ifacename --value=iser
と設定してやる。
上手く接続できると以下のように。
root@kvm-server-01:~# iscsiadm -m session -P 3 iSCSI Transport Class version 2.0-870 version 2.0-871 Target: iqn.1986-03.com.sun:02:iscsi-iser-kvm Current Portal: 192.168.17.41:3260,2 Persistent Portal: 192.168.17.41:3260,2 ********** Interface: ********** Iface Name: default Iface Transport: iser Iface Initiatorname: iqn.1993-08.org.debian:01:355da1e80c7 Iface IPaddress: <empty> Iface HWaddress: (null) Iface Netdev: (null) SID: 1 iSCSI Connection State: LOGGED IN iSCSI Session State: LOGGED_IN Internal iscsid Session State: NO CHANGE ************************ Negotiated iSCSI params: ************************ HeaderDigest: None DataDigest: None MaxRecvDataSegmentLength: 128 MaxXmitDataSegmentLength: 8192 FirstBurstLength: 65536 MaxBurstLength: 1048576 ImmediateData: No InitialR2T: Yes MaxOutstandingR2T: 1 ************************ Attached SCSI devices: ************************ Host Number: 8 State: running scsi8 Channel 00 Id 0 Lun: 0 Attached scsi disk sdc State: running
うちの環境では、速度がIPoIBのTCP使用のiscsiに比べて倍くらいまで速度アップしました。
実際にもっと速いストレージ使うとその差はもっと出ると思われ。