web-dev-qa-db-ja.com

シンプルなInfiniband Block Storage(SRPまたはiSER)をセットアップする

SRPまたはiSERを使用して、ブロックストレージをInfiniband経由でエクスポートする単純なストレージシステムをセットアップする方法を理解しようとしています。

私はプロセスの非常に早い段階で、現在は基本的に「ファブリック上に2つのサーバーがあります。ブロックストレージデバイスを一方から他方にエクスポートする方法は次のとおりです。」というレベルのチュートリアルを探しています。 「」好ましくは、RHELまたはそのバリアント上。ポインタはありますか?

4
ajdecon

まあ、率直に言って、私は単純なルートに行き、楽にiSCSI over IP over IBを使いました。

Infiniband IPセットアップウルトラクイックプライマー

最初...

  • opensm、infiniband-diags、rds-tools、sdpnetstat、srptools、perftest(ベンチマーク用)をインストールします
  • iBドライバーモジュールのロード、ib_umad、ib_ipoib
  • これで、構成する新しいネットワークインターフェイスができました。

パフォーマンス設定:

  • 接続モード、MTUを65520に設定
  • データグラムモードの場合、MTUを2044に設定します
  • データグラムのパフォーマンス:〜5 Gb/s
  • 接続モードのパフォーマンス:〜6.3 Gb/s

YMMVとIBコントローラーモデル、ドライバーなど.

IP設定:

net.ipv4.tcp_timestamps=0
net.ipv4.tcp_sack=0
net.core.netdev_max_backlog=250000
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.core.rmem_default=16777216
net.core.wmem_default=16777216
net.core.optmem_max=16777216
net.ipv4.tcp_mem="16777216 16777216 16777216"
net.ipv4.tcp_rmem="4096 87380 16777216"
net.ipv4.tcp_wmem="4096 65536 16777216"

いくつかのドキュメント:

http://support.systemfabricworks.com/lxr/#ofed+OFED-1.5/ofed-docs-1.5/ipoib_release_notes.txt

http://www.mjmwired.net/kernel/Documentation/infiniband/ipoib.txt

iperf、4スレッド:

[  3] local 192.168.1.2 port 50585 connected with 192.168.1.3 port 5003
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  2.75 GBytes  2.36 Gbits/sec
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  2.79 GBytes  2.40 Gbits/sec
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  3.31 GBytes  2.84 Gbits/sec
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  3.51 GBytes  3.02 Gbits/sec

総帯域幅は1.3GB/sで、10GigEよりも間違いなく優れています。

4
wazoox

安定性が違いを生みます。 Mellanoxは、ハードウェアを販売する際に、主にパフォーマンスを重視しています。 Voltaireを購入したとき、IBからイーサネットゲートウェイへの移行により、iSERを推進しています。

ProfitBricksでは、IaaS2.0クラウドのターゲットとしてiSERとSolaris11を使用しました。しかし、主要なZFSパフォーマンス、IPoIBおよびopen-iscsiの安定性の問題が発生したため、SCSTとSRPを備えたLinuxストレージに切り替えました。 linux-rdmaメーリングリストと独自のib_srpパッチを使用して、このテクノロジーの改善を支援します。私たちにとって、安定性には単純さが必要です。 InfiniBandがあるので、SRPを使用します。 RDMAはInfiniBandにネイティブであり、SRPはRDMAのみです。

今年、このトピックに関してLinuxTagに関するプレゼンテーションを行いました:InfiniBand/RDMA for Storage-SRP vs. iSER http://www.slideshare.net/SebastianRiemer/infini-band-rdmaforstoragesrpvsiser-2179125

また、SRP接続を確立する方法も示します。

最近、LinuxでSRPターゲット/イニシエーターペアを構成しましたが、従来のiSCSI-over-IPoIB構成(SDRで300MB /秒)に比べてパフォーマンスが最大100%向上しました(10GbpsSDRで580MB /秒)。

セットアップ:

  • 配布:Debian sid
  • Linuxカーネル:3.4.0-rc1(カーネル内SRPには3.3以上が必要)
  • Infinibandスタック:OFED-1.4(Debianに付属)
  • SRP/iSCSIターゲット:カーネル内のib_srpt.koを使用したLinux-iSCSI
  • SRPイニシエーター:カーネル内ib_srp.ko

注:AFAIK、SCSTはLinux(カーネル)がLinux-iSCSI(LIO)に対応し、STGT(以前のカーネル内実装)も廃止されたため、現在は廃止されています。計画は、SCST機能をLIOにマージすることです。

InfiniBand構成:

  • iBカードを「接続済み」モードに設定します(エコー接続>/sys/class/net/ib0/mode)
  • sysctlパラメーターを構成します(上記の投稿と同じ)
  • mTUを最大に設定します(ip link set dev ib0 mtu 65520)

SRP構成:これは理解するのが少し難しいので、作業ログから貼り付けます。

=== SRP target configuration ===
// NOTE: This is GUID of your IB interface on target-side. You can check it with ibstatus(1)
# targecli
/> cd /ib_srpt
/ib_srpt> create 0xfe800000000000000008f1040399d85a
Created target 0xfe800000000000000008f1040399d85a.
Entering new node /ib_srpt/0xfe800000000000000008f1040399d85a
/ib_srpt/0xfe...8f1040399d85a> cd luns
// This is just a dm-zero mapped "/dev/zero"-like block device
/ib_srpt/0xfe...0399d85a/luns> create /backstores/iblock/zero
/ib_srpt/0xfe...85a/luns/lun0> cd ../../acls
// This is GUID of your IB interface on initiator-side
/ib_srpt/0xfe...0399d85a/acls> create 0x00000000000000000008f1040399d832

上記の(実際の)例では、GUIDは0xfe80 ...スタイルと0x0000xxxスタイルの間で異なりますが、どちらも同じように使用できると思います。/var/target/fabricを編集して正規化ルールを構成できます。 /ib_srpt.spec(またはPython rtslibライブラリ(Linux-iSCSIツールが使用)がインストールされている場所)。

=== SRP initiator configuration ===
// uMAD device must match with IB interface being used
# ibsrpdm -c -d /dev/infiniband/umad1
id_ext=0008f1040399d858,ioc_guid=0008f1040399d858,dgid=fe800000000000000008f1040399d85a,pkey=ffff,service_id=0008f1040399d858
// Supply above string to ib_srp.ko, in order to setup SRP connection
# for i in $(ibsrpdm -c -d /dev/infiniband/umad1); \
do echo $i > /sys/class/infiniband_srp/srp-mlx4_0-2/add_target; done

すべてが正常に行われた場合、dmesgに次のようなメッセージが表示されます。

[10713.616495] scsi Host9: ib_srp: new target: id_ext 0008f1040399d858 ioc_guid 0008f1040399d858 pkey ffff service_id 0008f1040399d858 dgid fe80:0000:0000:0000:0008:f104:0399:d85a
[10713.815843] scsi9 : SRP.T10:0008F1040399D858
[10713.891557] scsi 9:0:0:0: Direct-Access     LIO-ORG  IBLOCK 4.0 PQ: 0 ANSI: 5
[10713.988846] sd 9:0:0:0: [sde] 2147483648 512-byte logical blocks: (1.09 TB/1.00 TiB)
...

最後に、ib_srp.ko /ib_srpt.koはどちらもまだやや未熟です。どちらも正常に動作しますが、切断などの機能は実装されていないようです。したがって、SCSIブロックデバイスを接続すると、それを取り外す方法はありません。ただし、そのパフォーマンスは優れています。

3
Taisuke Yamada

Linux用のiSER実装は tgt プロジェクトから入手でき、Linux用のSRP実装は [〜#〜] scst [〜#〜] プロジェクトから入手できます。 Windowsサポートについて:現時点では、Windowsで使用できるiSERイニシエータードライバーはありません。ただし、Windows用のSRPイニシエータードライバーは、winOFEDソフトウェアパッケージで利用できます(openfabrics.org Webサイトも参照)。

2
user251384