iSCSI — протокол, передающий SCSI-команды по TCP/IP, превращает Ethernet в канал блочного доступа. Типичная боль: файловая СУБД тормозит на NFS-шаре, потому что блокировки и FSYNC задерживаются. iSCSI даёт RAW-диск с минимальной латентностью — приложения видят его как локальный SCSI. Мы настраиваем Target и Initiator под ключ: от простого LUN до отказоустойчивого multipath с CHAP и jumbo frames. Сертифицированные инженеры с опытом 10+ лет гарантируют совместимость с VMware, Hyper-V, кластерными ФС, базами данных. Экономия на инфраструктуре: iSCSI на существующей сети Ethernet обходится в 3-5 раз дешевле Fibre Channel, а при оптимизации даёт до 200 000 IOPS. За 150+ проектов мы накопили лучшие практики для любых сценариев.
Почему iSCSI, а не NFS?
NFS работает на уровне файлов, добавляет накладные расходы и блокировки. iSCSI передаёт блочные команды SCSI поверх TCP/IP, предоставляя клиенту RAW-диск. Это критично для баз данных (PostgreSQL, MySQL), кластерных ФС (GFS2, OCFS2) и виртуализации (KVM, Hyper-V). Согласно RFC 7143, iSCSI обеспечивает блочный доступ с минимальной задержкой. В тестах fio iSCSI на SSD-массивах показывает в 2-3 раза выше IOPS на случайной записи, чем NFS при той же сети.
Какие типичные проблемы решает iSCSI?
Первая — высокая латентность при работе с базами данных через NFS. Вторая — необходимость прямого доступа к блокам для кластерных ФС (GFS2, OCFS2) или СУБД с собственным менеджментом кэша. Третья — бюджетные ограничения: Fibre Channel дорог, а iSCSI работает поверх существующей Ethernet-инфраструктуры. Четвёртая — миграция с физических серверов на виртуализацию: iSCSI позволяет подключать блочные тома к гостевой ОС без дополнительного software.
Как настроить target на Linux с помощью targetcli
Устанавливаем targetcli: apt install targetcli-fb. Создаём блочные хранилища и target:
/> backstores/block create name=lun-db dev=/dev/sdb
/> backstores/block create name=lun-app dev=/dev/sdc
/> iscsi/ create iqn.2024-01.com.example:storage01
/> iscsi/iqn.2024-01.com.example:storage01/tpg1/luns create /backstores/block/lun-db
/> iscsi/iqn.2024-01.com.example:storage01/tpg1/luns create /backstores/block/lun-app
/> iscsi/iqn.2024-01.com.example:storage01/tpg1/acls create iqn.2024-01.com.example:dbserver01
/> iscsi/iqn.2024-01.com.example:storage01/tpg1/acls create iqn.2024-01.com.example:appserver01
/> iscsi/iqn.2024-01.com.example:storage01/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260
/> iscsi/iqn.2024-01.com.example:storage01/tpg1/portals create 192.168.20.10 3260
/> saveconfigВыделите iSCSI на отдельный VLAN — трафик хранилища не конкурирует с application-трафиком. Автозапуск: systemctl enable --now rtslib-fb-targetctl. Для повторяемых развёртываний мы используем Ansible — конфигурация версионируется в Git и воспроизводится за минуты.
Как защитить iSCSI с помощью CHAP?
Без CHAP любой initiator с нужным IQN получает доступ. Настраиваем взаимную аутентификацию:
/> iscsi/iqn.2024-01.com.example:storage01/tpg1 set attribute authentication=1
/> iscsi/iqn.2024-01.com.example:storage01/tpg1/acls/iqn.2024-01.com.example:dbserver01/ set auth userid=dbserver01
/> iscsi/iqn.2024-01.com.example:storage01/tpg1/acls/iqn.2024-01.com.example:dbserver01/ set auth password=сложный-пароль-16+символов
/> saveconfigПароль должен быть не менее 16 символов — это блокирует подбор.
Как настроить initiator
На клиентском сервере:
apt install open-iscsi
# задаём IQN в /etc/iscsi/initiatorname.iscsi:
InitiatorName=iqn.2024-01.com.example:dbserver01
# CHAP в /etc/iscsi/iscsid.conf:
node.session.auth.authmethod = CHAP
node.session.auth.username = dbserver01
node.session.auth.password = сложный-пароль-16+символов
# обнаружение и подключение:
iscsiadm -m discovery -t sendtargets -p 192.168.20.10:3260
iscsiadm -m node -T iqn.2024-01.com.example:storage01 -p 192.168.20.10:3260 --login
# автоподключение:
iscsiadm -m node -T iqn.2024-01.com.example:storage01 -p 192.168.20.10:3260 --op update -n node.startup -v automatic
systemctl enable iscsid open-iscsiПосле подключения проверяем сессию: iscsiadm -m session -P3 и видим новый диск в lsblk.
Как настроить multipath для отказоустойчивости
Если target доступен по двум сетевым интерфейсам, настраиваем multipath для автоматического переключения:
apt install multipath-tools
# /etc/multipath.conf:
defaults {
user_friendly_names yes
path_grouping_policy failover
failback immediate
no_path_retry 5
}
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
}
multipaths {
multipath {
wwid 360000000000000001
alias db-storage
}
}
systemctl enable --now multipathd
multipath -llПосле настройки работаем с /dev/mapper/db-storage — при отказе одного пути multipath переключает на другой с временем failover менее 1 секунды.
Как оптимизировать производительность iSCSI
Для раскрытия потенциала SSD-массивов настраиваем jumbo frames (MTU 9000) на storage VLAN. Параметры сессии увеличивают глубину очереди:
ip link set eth1 mtu 9000
# в /etc/iscsi/iscsid.conf:
node.session.cmds_max = 1024
node.session.queue_depth = 128
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5Эти настройки увеличивают пропускную способность до 40% на больших блоках. При правильной конфигурации iSCSI даёт задержки < 1 мс, что сравнимо с Fibre Channel. Дополнительно можно применить iSCSI Direct Connect для изолированных сред.
Типичные ошибки при настройке iSCSI
- Использование MTU 1500 без jumbo frames на storage VLAN — падение IOPS на 20-30%.
- Отсутствие CHAP — риск несанкционированного доступа.
- Один сетевой путь без multipath — единая точка отказа.
- Слишком короткие пароли CHAP (< 16 символов) — легко подбираются.
- Неправильная конфигурация дисков на target (write-back vs write-through) — для критичных данных только write-through.
| Сравнение | iSCSI | NFS | Fibre Channel |
|---|---|---|---|
| Уровень доступа | блочный | файловый | блочный |
| Типичная задержка | < 1 мс | 1-5 мс | < 0.5 мс |
| Стоимость | низкая | низкая | высокая |
| Поддержка кластерных ФС | да | нет | да |
Когда стоит выбрать iSCSI вместо Fibre Channel?
Fibre Channel даёт минимальную задержку и изоляцию, но требует дорогого оборудования. iSCSI на 10GbE с правильной настройкой приближается по характеристикам, но обходится в 3-5 раз дешевле. Если в инфраструктуре уже есть Ethernet-коммутаторы с поддержкой jumbo frames и энергонезависимых очередей, iSCSI — экономичное решение. Для сред с критичной латентностью (< 0.5 мс) по-прежнему лучше Fibre Channel, но для большинства задач хватит iSCSI.
Что входит в настройку iSCSI
| Этап | Результат |
|---|---|
| Аудит текущей сети и нагрузок | Отчёт с рекомендациями по VLAN, MTU, сетевым интерфейсам |
| Проектирование схемы LUN и ACL | Карта доступов по IQN и CHAP |
| Реализация target+initiator | Работающее хранилище с multipath (при необходимости) |
| Интеграция с вашим кластером | Настройка Pacemaker/Corosync для автоматического переключения target |
| Тестирование производительности | Нагрузочное тестирование (fio) с замерами IOPS и латентности |
| Документация и обучение | Runbook по обслуживанию, описание аварийных процедур |
Ориентировочные сроки: от 1 дня (базовая конфигурация) до 4 дней (с кластером). Стоимость рассчитывается после аудита. Свяжитесь с нами — оценим вашу инфраструктуру и предложим оптимальную конфигурацию. Гарантируем: все настройки покрыты документацией, конфигурации воспроизводимы через Ansible (по запросу). Закажите аудит iSCSI-инфраструктуры — получите детальный план миграции и расчёт производительности.







