Eu configurei recentemente o par alvo / inicializador SRP no Linux e tive um aumento de desempenho de ~ 100% (580MB / s em 10Gbps SDR) em relação à configuração tradicional iSCSI-over-IPoIB (300MB / s em SDR).
Configuração:
- Distribuição: sid Debian
- Linux kernel: 3.4.0-rc1 (3.3 ou superior é necessário para o SRP no kernel)
- Pilha Infiniband: OFED-1.4 (que vem com o Debian)
Alvo SRP / iSCSI - : Linux-iSCSI com ib_srpt.ko no kernel
- Iniciador SRP: no kernel ib_srp.ko
OBSERVAÇÃO: AFAIK, SCST agora está obsoleta, já que o Linux (kernel) está sendo executado com o Linux-iSCSI (LIO), o obsoleto STGT (implementação anterior no kernel) também. O plano é mesclar recursos do SCST no LIO.
Configuração do InfiniBand:
- defina o cartão IB para o modo "conectado" (eco conectado > / sys / class / net / ib0 / mode)
- configure os parâmetros do sysctl (o mesmo que acima do post)
- define MTU como máximo (ip link set dev ib0 mtu 65520)
Configuração do SRP:
Este é um pouco confuso para descobrir, então eu vou apenas colar do meu log de trabalho.
=== 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
No exemplo acima (real), o GUID varia entre o estilo 0xfe80 ... e
0x0000xxx estilo, mas acho que ambos podem ser usados de forma intercambiável. Você pode
configure a regra de canonização editando /var/target/fabric/ib_srpt.spec (ou
onde quer que a biblioteca rtslib do Python (que a ferramenta Linux-iSCSI usa) esteja instalada).
=== 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
Se tudo der certo, você verá uma mensagem semelhante à abaixo em seu 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)
...
Como nota final, os dois ib_srp.ko / ib_srpt.ko ainda são um pouco imaturos.
Ambos funcionam bem, mas o recurso de desconexão parece não ser implementado.
Portanto, assim que o dispositivo de bloco SCSI estiver conectado, não será possível separá-lo.
No entanto, seu desempenho é excelente.