iSCSI на NW6.5SP5

Наконец-то собрался написать давно обещанную заметку на тему iSCSI на Netware. Сразу оговорюсь: речь пойдёт о работе инициатора под конкретной версией Netware 6.5 SP5, с более новыми SP некоторые обновления делать не нужно, они уже входят в саппорт-пак.
Рекомендация первая: настоятельно рекомендуется для работы по iSCSI иметь отдельную сетевую карту. Никаких особых требований к ней нет (NW так и не научилась использовать TCP offload), но лучше всё-таки использовать что-нибудь поприличнее, н-р, карты от интела. Загрузка драйвера ничем особым не отличается от обычной:
LOAD E1000.LAN SLOT=2 FRAME=Ethernet_II POLL=0 NAME=E1000_2_EII
Параметр POLL выставлен в 0. Хотя это и умолчание (работать по прерываниям), на некоторых серверах может оказаться, что быстрее будет работать по опросу (poll=1), здесь этот параметр приведён как подсказка. В моём конкретном случае ощутимой разницы между poll=0 и poll=1 я не заметил.
Рекомендация вторая: обновите winsock до упора, т.к. iSCSI работает поверх него и, если почитать release notes, видно, что в обновлениях винсока исправлялось заметное количество iSCSi-специфичных ошибок.
Тут небольшое отступление: формально автономные обновления на сегодня заканчиваются архивом wsock6o.zip, у которого требования к SP - 6 и выше. Но изучение установочного скрипта привело к выводу, что даже на SP5 это обновление УСТАНАВЛИВАЕТСЯ без проблем. НЕ БУДЕТ ставится только содержимое подкаталога /NILE (это OpenSSL версия поддержки SSL на NW). Из любопытства скопировал содержимое этого каталога вручную, перезагрузил сервер и - вуаля, OpenSSL прекрасно пошёл и на SP5. Признаки: работает аутентификация по TLS, т.е., стало возможным подключаться по https из IE7/8, у которых authTLS включён по умолчанию (для обхода этой неприятности раньше приходилось или использовать IE6 или выключать authTLS в IE7/8). Ещё один бонус от OpenSSL - заработал доступ по ftps из TotalCommander-а (он использует только authTLS).
Рекомендация третья: обновите компоненты iSCSI. Долгие разборки и исследования привели к выводу - версия, которая представлена в SP8 - ХУЖЕ, чем предыдущая. Это же подтвердили некоторые зарубежные коллеги, с которыми я общался по этому поводу. С iSCSI из SP8 целый букет неприятностей - резкое ухудшение производительности, невозможность подключения к target-ам, к которым предыдущие версии цеплялись без проблем. В итоге для меня оказалась самая удачная версия (по модулю ISCSIHAM.HAM) - 1.06.03 из SP7. Версия 1.06.05 из SP8 - ПЛОХАЯ, не используйте её! Нужный список файлов, которые извлекаются из архива SP7, можно посмотреть, н-р, в автономном обновлении NetWare 6.5 SP6a iSCSI 1.06.02.
Рекомендация четвёртая: обновите компонент SCSIHD.CDM до версии 3.3.10 (эта же версия присутствует в SP8).
Рекомендация пятая: оптимизация настроек для работы по iSCSI. Некоторые настройки (умолчания) менялись на разных SP, поэтому правильнее выставить их явно. Содержимое AUTOEXEC.NCF, относящееся к iSCSI:
Особых комментариев, думаю, не нужно. Интересной является последняя строка - NCP не привязывается к адаптеру, предназначенному для работы по iSCSI, чтобы уменьшить ненужный трафик через него.
Дальше в AUTOEXEC.NCF идёт собственно запуск iSCSI-инициатора:
ION.NCF - немодифицированный, содержимое ISIN.NCF:
Все закомментированные строки остались от тестов, команды вполне рабочие. Одно замечание - единственный target, с которым у NW почему-то не получалось сделать browse - HP P2000 G3. Но указание строки запуска с явным именем без проблем подключало инициатор к этому хранилищу.
Задержка в 15 секунд в конце командного файла подобрана экспериментально, при меньших значениях иногда не успевали инициализироваться все тома, приходилось давать повторно команду 'mount all'.
В заключение: не было времени и возможности потестировать работу с jumbo фреймами, но, когда появится рабочая СХД, я это сделаю обязательно, всё для этого есть, включая коммутаторы с поддержкой jumbo frames. Скорость работы в итоге получилась не бог весть какой - чтение/запись примерно от 20 до 40 мбайт/сек (на разных target-ах, лучший был HP P2000 G3, на "железном" LeftHand-е (P4000) потестироваться не успел, пробовал только на виртуальной версии), но при этом 64-х разрядная PCI-X сетевая карта, по которой гонялся трафик iSCSI сервера, была включена в обычный 32-х разрядный PCI-слот, т.е., работала с далеко не оптимальной производительностью (не было более подходящего железа под рукой). Думаю, в режиме PCI-X 64 bit производительность будет повыше. Н-р, линух с 64-битной сетевой картой у нас легко выжимал по dd (большими блоками) до 95-100 Мбайт/сек (правда загрузка процессора при этом была под сто процентов).
Рекомендация первая: настоятельно рекомендуется для работы по iSCSI иметь отдельную сетевую карту. Никаких особых требований к ней нет (NW так и не научилась использовать TCP offload), но лучше всё-таки использовать что-нибудь поприличнее, н-р, карты от интела. Загрузка драйвера ничем особым не отличается от обычной:
LOAD E1000.LAN SLOT=2 FRAME=Ethernet_II POLL=0 NAME=E1000_2_EII
Параметр POLL выставлен в 0. Хотя это и умолчание (работать по прерываниям), на некоторых серверах может оказаться, что быстрее будет работать по опросу (poll=1), здесь этот параметр приведён как подсказка. В моём конкретном случае ощутимой разницы между poll=0 и poll=1 я не заметил.
Рекомендация вторая: обновите winsock до упора, т.к. iSCSI работает поверх него и, если почитать release notes, видно, что в обновлениях винсока исправлялось заметное количество iSCSi-специфичных ошибок.
Тут небольшое отступление: формально автономные обновления на сегодня заканчиваются архивом wsock6o.zip, у которого требования к SP - 6 и выше. Но изучение установочного скрипта привело к выводу, что даже на SP5 это обновление УСТАНАВЛИВАЕТСЯ без проблем. НЕ БУДЕТ ставится только содержимое подкаталога /NILE (это OpenSSL версия поддержки SSL на NW). Из любопытства скопировал содержимое этого каталога вручную, перезагрузил сервер и - вуаля, OpenSSL прекрасно пошёл и на SP5. Признаки: работает аутентификация по TLS, т.е., стало возможным подключаться по https из IE7/8, у которых authTLS включён по умолчанию (для обхода этой неприятности раньше приходилось или использовать IE6 или выключать authTLS в IE7/8). Ещё один бонус от OpenSSL - заработал доступ по ftps из TotalCommander-а (он использует только authTLS).
Рекомендация третья: обновите компоненты iSCSI. Долгие разборки и исследования привели к выводу - версия, которая представлена в SP8 - ХУЖЕ, чем предыдущая. Это же подтвердили некоторые зарубежные коллеги, с которыми я общался по этому поводу. С iSCSI из SP8 целый букет неприятностей - резкое ухудшение производительности, невозможность подключения к target-ам, к которым предыдущие версии цеплялись без проблем. В итоге для меня оказалась самая удачная версия (по модулю ISCSIHAM.HAM) - 1.06.03 из SP7. Версия 1.06.05 из SP8 - ПЛОХАЯ, не используйте её! Нужный список файлов, которые извлекаются из архива SP7, можно посмотреть, н-р, в автономном обновлении NetWare 6.5 SP6a iSCSI 1.06.02.
Рекомендация четвёртая: обновите компонент SCSIHD.CDM до версии 3.3.10 (эта же версия присутствует в SP8).
Рекомендация пятая: оптимизация настроек для работы по iSCSI. Некоторые настройки (умолчания) менялись на разных SP, поэтому правильнее выставить их явно. Содержимое AUTOEXEC.NCF, относящееся к iSCSI:
- Код: Выделить всё
##### Start iSCSI optimization #####
Set TCP Maximum Initial Receive Window = 64
SET TCP Delayed Acknowledgement = On
SET TCP Nagle Algorithm = On
SET TCP PATH MTU BLACK HOLE DETECTION AND RECOVERY = ON
SET TCP MINSHALL ALGORITHM = OFF
SET USE SPECIFIED MTU = OFF
SET Minimum Packet Receive Buffers = 5000
SET Maximum Packet Receive Buffers = 10000
SET NCP Exclude IP Addresses = 192.168.167.99
##### End iSCSI optimization #####
Особых комментариев, думаю, не нужно. Интересной является последняя строка - NCP не привязывается к адаптеру, предназначенному для работы по iSCSI, чтобы уменьшить ненужный трафик через него.
Дальше в AUTOEXEC.NCF идёт собственно запуск iSCSI-инициатора:
- Код: Выделить всё
##### Start load iSCSI #####
ion.ncf
isin.ncf
mount all
##### End load iSCSI #####
ION.NCF - немодифицированный, содержимое ISIN.NCF:
- Код: Выделить всё
delay 2
iscsinit connect 192.168.164.56 iqn.2011-01.nsk.inp:c1b681f5-edfa-467d-afaa-d357936150bc
#delay 2
#iscsinit connect 192.168.168.75 iqn.2000-03.com.falconstor-ipstor.test.zab-0
#delay 2
#iscsinit connect 192.168.168.74 iqn.2003-10.com.lefthandnetworks:binp-mg1:28:test
#delay 2
#iscsinit connect 192.168.168.43 iqn.1986-03.com.hp:storage.p2000g3.1006dad75d
delay 15
Все закомментированные строки остались от тестов, команды вполне рабочие. Одно замечание - единственный target, с которым у NW почему-то не получалось сделать browse - HP P2000 G3. Но указание строки запуска с явным именем без проблем подключало инициатор к этому хранилищу.
Задержка в 15 секунд в конце командного файла подобрана экспериментально, при меньших значениях иногда не успевали инициализироваться все тома, приходилось давать повторно команду 'mount all'.
В заключение: не было времени и возможности потестировать работу с jumbo фреймами, но, когда появится рабочая СХД, я это сделаю обязательно, всё для этого есть, включая коммутаторы с поддержкой jumbo frames. Скорость работы в итоге получилась не бог весть какой - чтение/запись примерно от 20 до 40 мбайт/сек (на разных target-ах, лучший был HP P2000 G3, на "железном" LeftHand-е (P4000) потестироваться не успел, пробовал только на виртуальной версии), но при этом 64-х разрядная PCI-X сетевая карта, по которой гонялся трафик iSCSI сервера, была включена в обычный 32-х разрядный PCI-слот, т.е., работала с далеко не оптимальной производительностью (не было более подходящего железа под рукой). Думаю, в режиме PCI-X 64 bit производительность будет повыше. Н-р, линух с 64-битной сетевой картой у нас легко выжимал по dd (большими блоками) до 95-100 Мбайт/сек (правда загрузка процессора при этом была под сто процентов).