Я пытаюсь понять, как настроить простую систему хранения, которая экспортирует блочное хранилище через Infiniband, используя SRP или iSER.
Я очень рано в этом процессе, и на данный момент я просто ищу учебник на уровне «У вас есть два сервера на вашей фабрике: вот как экспортировать блочное устройство хранения с одного на другой. " Желательно на RHEL или его вариантах. Есть указатели?
Честно говоря, я пошел простым путем и с радостью использовал iSCSI через IP через 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,3 ГБ / с, определенно лучше, чем 10 GigE.
Стабильность имеет значение. Mellanox в первую очередь заботится о производительности при продаже оборудования. Когда они купили Voltaire, они продвигают iSER из-за своих шлюзов IB в Ethernet.
Мы в ProfitBricks использовали iSER и Solaris 11 в качестве целевых для нашего облака IaaS 2.0. Но когда мы столкнулись с серьезной производительностью ZFS, а также с проблемами стабильности IPoIB и open-iscsi, мы перешли на хранилище Linux с SCST и SRP. Мы помогаем улучшить эту технологию в списке рассылки linux-rdma и с нашими собственными патчами ib_srp. Для нас стабильность требует простоты. Итак, мы идем на SRP, как и на InfiniBand. RDMA является встроенным для InfiniBand, а SRP - только для RDMA.
В этом году у меня была презентация на LinuxTag по этой теме: InfiniBand / RDMA для хранилищ - SRP против iSER http://www.slideshare.net/SebastianRiemer/infini-band-rdmaforstoragesrpvsiser-21791250
Здесь также показано, как установить соединение SRP.
Недавно я настроил пару цель / инициатор SRP в Linux и получил ~ 100% увеличение производительности (580 МБ / с на SDR 10 Гбит / с) по сравнению с традиционной конфигурацией iSCSI-over-IPoIB (300 МБ / с на SDR).
Настроить:
ПРИМЕЧАНИЕ: 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 подключено, его невозможно отсоединить. Однако производительность у них отличная.
Реализация iSER для Linux доступна через tgt проект и реализация SRP для Linux доступны через SCST проект. Что касается поддержки Windows: в настоящее время драйвер инициатора iSER для Windows недоступен. Но драйвер инициатора SRP для Windows доступен в программном пакете winOFED (см. Также веб-сайт openfabrics.org).