设置简单的 Infiniband 块存储(SRP 或 iSER)

ajd*_*con 4 storage infiniband hpc

我试图弄清楚如何设置一个简单的存储系统,使用 SRP 或 iSER 通过 Infiniband 导出块存储。

我还处于这个过程的早期阶段,目前我基本上只是在寻找以下级别的教程:“您的结构上有两台服务器:以下是如何将块存储设备从一台服务器导出到另一台服务器。 ” 最好在 RHEL 或其变体上。有什么指点吗?

waz*_*oox 5

好吧,坦白说,我走了简单的路线,并愉快地使用了 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"
Run Code Online (Sandbox Code Playgroud)

一些文档:

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
Run Code Online (Sandbox Code Playgroud)

总聚合带宽 1.3 GB/s,绝对优于 10 GigE。


Tai*_*ada 5

我最近在 Linux 上配置了 SRP 目标/启动器对,与传统的 iSCSI-over-IPoIB 配置(SDR 上的 300MB/s)相比,性能提高了约 100%(10Gbps SDR 上的 580MB/s)。

设置:

  • 发行版: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

注意:据我所知,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
Run Code Online (Sandbox Code Playgroud)

在上面(实际)示例中,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
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,您将在 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)
...
Run Code Online (Sandbox Code Playgroud)

最后一点,ib_srp.ko/ib_srpt.ko 仍然有些不成熟。它们都工作正常,但诸如断开连接之类的功能似乎尚未实现。因此,一旦连接了 SCSI 块设备,就无法将其分离。然而,他们的表现却非常出色。