Назад | Перейти на главную страницу

Настроить простое блочное хранилище Infiniband (SRP или iSER)

Я пытаюсь понять, как настроить простую систему хранения, которая экспортирует блочное хранилище через Infiniband, используя SRP или iSER.

Я очень рано в этом процессе, и на данный момент я просто ищу учебник на уровне «У вас есть два сервера на вашей фабрике: вот как экспортировать блочное устройство хранения с одного на другой. " Желательно на RHEL или его вариантах. Есть указатели?

Честно говоря, я пошел простым путем и с радостью использовал iSCSI через IP через IB, и он работал легко и хорошо работал:

Ультрабыстрый учебник по настройке Infiniband IP.

первый...

  • установить opensm, infiniband-diags, rds-tools, sdpnetstat, srptools, perftest (для тестов)
  • загрузить модуль драйвера IB, ib_umad, ib_ipoib
  • теперь вам нужно настроить новый сетевой интерфейс.

настройки производительности:

  • подключенный режим, установите MTU на 65520
  • режим дейтаграммы, установите MTU на 2044
  • производительность дейтаграмм: ~ 5 Гбит / с
  • производительность в подключенном режиме: ~ 6,3 Гбит / с

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).

Настроить:

  • Распространение: Debian sid
  • Ядро Linux: 3.4.0-rc1 (для встроенного в ядро ​​SRP требуется 3.3 или выше)
  • Стек Infiniband: OFED-1.4 (который поставляется с Debian)
  • Цель SRP / iSCSI: Linux-iSCSI с ib_srpt.ko в ядре
  • Инициатор SRP: внутри ядра ib_srp.ko

ПРИМЕЧАНИЕ: AFAIK, SCST теперь устарел, поскольку Linux (ядро) идет с Linux-iSCSI (LIO), а также устаревшим STGT (предыдущая реализация в ядре). Планируется объединить функции SCST в LIO.

Конфигурация InfiniBand:

  • установить IB-карту в режим "подключено" (echo connected> / 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 подключено, его невозможно отсоединить. Однако производительность у них отличная.

Реализация iSER для Linux доступна через tgt проект и реализация SRP для Linux доступны через SCST проект. Что касается поддержки Windows: в настоящее время драйвер инициатора iSER для Windows недоступен. Но драйвер инициатора SRP для Windows доступен в программном пакете winOFED (см. Также веб-сайт openfabrics.org).