SRPまたはiSERを使用して、ブロックストレージをInfiniband経由でエクスポートする単純なストレージシステムをセットアップする方法を理解しようとしています。
私はプロセスの非常に早い段階で、現在は基本的に「ファブリック上に2つのサーバーがあります。ブロックストレージデバイスを一方から他方にエクスポートする方法は次のとおりです。」というレベルのチュートリアルを探しています。 「」好ましくは、RHELまたはそのバリアント上。ポインタはありますか?
まあ、率直に言って、私は単純なルートに行き、楽にiSCSI over IP over IBを使いました。
Infiniband IPセットアップウルトラクイックプライマー
最初...
パフォーマンス設定:
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よりも間違いなく優れています。
安定性が違いを生みます。 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 /秒)。
セットアップ:
注:AFAIK、SCSTはLinux(カーネル)がLinux-iSCSI(LIO)に対応し、STGT(以前のカーネル内実装)も廃止されたため、現在は廃止されています。計画は、SCST機能をLIOにマージすることです。
InfiniBand構成:
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ブロックデバイスを接続すると、それを取り外す方法はありません。ただし、そのパフォーマンスは優れています。
Linux用のiSER実装は tgt プロジェクトから入手でき、Linux用のSRP実装は [〜#〜] scst [〜#〜] プロジェクトから入手できます。 Windowsサポートについて:現時点では、Windowsで使用できるiSERイニシエータードライバーはありません。ただし、Windows用のSRPイニシエータードライバーは、winOFEDソフトウェアパッケージで利用できます(openfabrics.org Webサイトも参照)。