Настройка простого хранилища Infiniband Block (SRP или iSER)
Я пытаюсь выяснить, как настроить простую систему хранения, которая экспортирует блочное хранилище через Infiniband, используя SRP или iSER.
Я очень рано в процессе, и на данный момент я просто ищу учебник на уровне: "У вас есть два сервера на вашей фабрике: вот как экспортировать блочное устройство хранения с одного на другое." Предпочтительно на RHEL или его вариантах. Есть указатели?
4 ответа
Недавно я настроил пару целевой / инициатор SRP в Linux, и производительность увеличилась примерно на 100% (580 МБ / с на 10 Гбит / с SDR) по сравнению с традиционной конфигурацией iSCSI-over-IPoIB (300 МБ / с на SDR).
Настроить:
- Распространение: Debian sid
- Ядро Linux: 3.4.0-rc1 (3.3 или выше требуется для SRP в ядре)
- Стек 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, его невозможно отсоединить. Тем не менее, их производительность отличная.
Честно говоря, я пошел простым путем и с радостью использовал iSCSI поверх IP поверх IB, и он работал легко и хорошо работал:
Infiniband IP setup сверхбыстрый праймер.
первый...
- установить 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/
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 Гиг.
Стабильность имеет значение. 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.
Реализация iSER для Linux доступна через проект tgt, а реализация SRP для Linux доступна через проект SCST. Относительно поддержки Windows: в настоящее время драйвер Windows iSER не доступен для Windows. Но драйвер инициатора SRP для Windows доступен в программном пакете winOFED (см. Также веб-сайт openfabrics.org).