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 (економія до 80% витрат), а при оптимізації дає до 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 (на 50-100% гірше порівняно з iSCSI). Друга — необхідність прямого доступу до блоків для кластерних ФС (GFS2, OCFS2) або СУБД з власним менеджментом кешу. Третя — бюджетні обмеження: Fibre Channel обходиться в 3-5 разів дорожче, а 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 мс |
| Вартість | низька (від $500 за TCO) | низька | висока (від $2000) |
| Підтримка кластерних ФС | так | ні | так |
Коли варто вибрати iSCSI замість Fibre Channel?
Fibre Channel дає мінімальну затримку та ізоляцію, але потребує дорогого обладнання. iSCSI на 10GbE з правильним налаштуванням наближається за характеристиками, але обходиться в 3-5 разів дешевше (економія до 80% капітальних витрат). Якщо в інфраструктурі вже є Ethernet-комутатори з підтримкою jumbo frames та енергонезалежних черг, iSCSI — економічне рішення. Для середовищ з критичною затримкою (< 0.5 мс) досі краще Fibre Channel, але для 95% завдань вистачить iSCSI.
Що входить у налаштування iSCSI
| Етап | Результат |
|---|---|
| Аудит поточної мережі та навантажень | Звіт з рекомендаціями щодо VLAN, MTU, мережевих інтерфейсів |
| Проектування схеми LUN та ACL | Карта доступів за IQN та CHAP |
| Реалізація target+initiator | Працююче сховище з multipath (за потреби) |
| Інтеграція з вашим кластером | Налаштування Pacemaker/Corosync для автоматичного перемикання target |
| Тестування продуктивності | Навантажувальне тестування (fio) з вимірами IOPS та затримки |
| Документація та навчання | Runbook з обслуговування, опис аварійних процедур |
Орієнтовні строки: від 1 дня (базова конфігурація) до 4 днів (з кластером). Вартість розраховується після аудиту. Зв'яжіться з нами — оцінимо вашу інфраструктуру та запропонуємо оптимальну конфігурацію. Гарантуємо: всі налаштування покриті документацією, конфігурації відтворювані через Ansible (за запитом). Замовте аудит iSCSI-інфраструктури — отримайте детальний план міграції та розрахунок продуктивності.







