Доступ к кластерному хранилищу [362.2]

Рейтинг: 70.1% · 9 голосов
Специализация LPIC-3 306 (v3.0): кластеры HA (Pacemaker/Corosync), балансировка (LVS, keepalived, HAProxy), DRBD, кластерные и распределённые ФС (GFS2, OCFS2, GlusterFS, Ceph), iSCSI/multipath, advanced RAID/LVM.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Доступ к кластерному хранилищу [362.2]

Сообщение Sergey_Sysadmin »

Оглавление курса (14)
  1. Введение в LPIC-3 306: высокая доступность и хранилища
  2. Концепции и теория высокой доступности [361.1]
  3. Кластеры с балансировкой нагрузки [361.2]
  4. Failover-кластеры: Corosync и Pacemaker [361.3, часть 1]
  5. Pacemaker: ресурсы, ограничения, fencing [361.3, часть 2]
  6. DRBD [362.1]
  7. Доступ к кластерному хранилищу [362.2] (вы здесь)
  8. Кластерные файловые системы [362.3]
  9. Распределённое хранилище GlusterFS [363.1]
  10. Ceph: архитектура [363.2, часть 1]
  11. Ceph: использование и эксплуатация [363.2, часть 2]
  12. Отказоустойчивость узла: железо и сервисы [364.1]
  13. Продвинутый RAID
  14. Продвинутый LVM и сетевая отказоустойчивость [364.3 + 364.4]
Урок 6. Доступ к кластерному хранилищу [362.2]

Кластер высокой доступности почти всегда упирается в общее хранилище: ноды должны видеть один и тот же блочный том, чтобы переносить на нём сервисы или одновременно читать и писать. В этом уроке мы разберём, как блоки доезжают до нод по сети (Fibre Channel и iSCSI), как не потерять путь к диску при обрыве линка (multipath), и как несколько нод безопасно делят один том через распределённые блокировки DLM и кластерный LVM (lvmlockd). Это фундамент, без которого GFS2, OCFS2 и live-миграция виртуалок просто не взлетят.

Изображение

Как это работает

SAN (Storage Area Network) - это сеть, по которой ноды получают доступ к диску на уровне блоков, а не файлов. Сервер видит удалённый LUN как обычный /dev/sd*, как будто диск вставлен локально. Файловую систему и разметку делает уже сам сервер. Это ключевое отличие от NAS (NFS, SMB), где сервер отдаёт готовые файлы.

Fibre Channel - это отдельная физическая сеть на оптике со своими HBA-картами, коммутаторами и зонированием. Адреса устройств - WWN (World Wide Name), 64-битные. FC дорог и быстр, живёт в энтерпрайзе. iSCSI - это тот же SCSI, но завёрнутый в обычный TCP/IP поверх Ethernet. Дешевле, гибче, работает на любой сетевухе. Сторона, которая отдаёт диск, называется target, сторона, которая подключается - initiator. Идентифицируются они через IQN (iSCSI Qualified Name) вида iqn.2026-06.ru.example:storage.disk1.

Multipath решает проблему отказа пути. Между сервером и хранилищем обычно две и более независимых линии (два HBA, два коммутатора, два контроллера массива). Без multipath ядро увидит один и тот же LUN дважды - как /dev/sdb и /dev/sdc - и не поймёт, что это один диск. Демон multipathd по уникальному WWID склеивает эти пути в одно устройство /dev/mapper/mpathX и балансирует или переключает ввод-вывод между ними. Если линк падает, ввод-вывод уходит на живой путь без потери данных.

DLM (Distributed Lock Manager) - это сервис, через который ноды договариваются, кто сейчас имеет право трогать конкретный блок или ресурс. Без общего арбитра две ноды одновременно перезапишут одни метаданные и разрушат том. DLM в Linux работает поверх corosync, берёт членство кластера оттуда и предоставляет API блокировок для GFS2, OCFS2 и lvmlockd.

Кластерный LVM нужен, потому что обычный LVM хранит метаданные в заголовках PV и кеширует их локально. Если одна нода создаст LV, другая об этом не узнает и затрёт изменения. Современный механизм - lvmlockd: он добавляет к VG блокировки через DLM (тип sanlock или dlm) и сериализует операции с метаданными между нодами. Старый clvmd считается легаси и в RHEL 10 / актуальных дистрибутивах не поставляется - для экзамена помните название, на практике это lvmlockd.

Команды и примеры

Установка инициатора iSCSI:

Код: Выделить всё

# Debian 13 / Ubuntu 24.04
apt install open-iscsi multipath-tools

# RHEL 10 / Fedora 41+
dnf install iscsi-initiator-utils device-mapper-multipath
Обнаружение и подключение target:

Код: Выделить всё

iscsiadm -m discovery -t sendtargets -p 192.168.50.10
iscsiadm -m node -T iqn.2026-06.ru.example:disk1 -p 192.168.50.10 -l
# -l = login, появится новый /dev/sdX
lsblk
iscsiadm -m session -P 3   # подробности активных сессий
Multipath. Включаем демон и смотрим карту путей:

Код: Выделить всё

systemctl enable --now multipathd
multipath -ll
Минимальный /etc/multipath.conf:

Код: Выделить всё

defaults {
    user_friendly_names yes
    find_multipaths yes
    path_grouping_policy multibus
    path_selector "round-robin 0"
}
После правки конфига:

Код: Выделить всё

systemctl reload multipathd
multipath -ll   # должен показать mpatha с двумя active путями
WWID можно посмотреть отдельно:

Код: Выделить всё

/lib/udev/scsi_id -g -u -d /dev/sdb
DLM и lvmlockd запускаются через Pacemaker, но проверить можно так:

Код: Выделить всё

dlm_tool status
dlm_tool ls       # список lockspace
Перевод VG в кластерный режим (shared) и работа с lvmlockd. В /etc/lvm/lvm.conf выставляем use_lvmlockd = 1, затем:

Код: Выделить всё

systemctl enable --now lvmlockd
vgcreate --shared vg_shared /dev/mapper/mpatha
# на других нодах подхватываем блокировки VG:
vgchange --lock-start vg_shared
lvcreate -L 50G -n lv_data vg_shared
В кластере Pacemaker DLM и lvmlockd оформляют клонированными ресурсами:

Код: Выделить всё

pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s clone
pcs resource create lvmlockd ocf:heartbeat:lvmlockd op monitor interval=30s clone
Частые грабли
  • Забыли user_friendly_names или alias - имена /dev/mapper меняются между перезагрузками и нодами, монтирование по пути ломается. Привязывайтесь к WWID или ставьте alias в multipath.conf.
  • Локальные диски попали под multipath. Без правильного blacklist multipathd может схватить системный /dev/sda. Заносите локальные WWID в секцию blacklist.
  • lvmlockd без DLM или без запущенного corosync молча не стартует lockspace. Сначала кворумный кластер, потом dlm, только потом lvmlockd.
  • Создали VG как обычный, а потом удивляетесь рассинхрону метаданных. Кластерный том должен быть создан с --shared, иначе блокировки не включены.
  • Меняли lvm.conf, но забыли пересобрать initramfs (dracut -f на RHEL, update-initramfs -u на Debian) - корневой LV может не подняться при загрузке.
  • iSCSI-сессия не восстанавливается после ребута: не включили node.startup = automatic или забыли systemctl enable iscsi.
  • Пытаетесь смонтировать общий том обычной ext4/xfs на двух нодах сразу - это гарантированное разрушение. Нужна кластерная ФС (GFS2/OCFS2) или эксклюзивный доступ.
Мини-лаба
  • На стенде поднимите iSCSI target (пакет targetcli-fb или tgt) и отдайте один LUN размером 1G двум виртуальным нодам.
  • С обеих нод выполните discovery и login через iscsiadm, убедитесь, что появился новый блочный диск.
  • Если есть две сети - подключите target по двум адресам, настройте multipath.conf и проверьте multipath -ll: должно быть два пути к одному mpath.
  • Соберите минимальный кластер corosync+pacemaker на двух нодах, поднимите ресурсы dlm и lvmlockd клонами.
  • Создайте VG командой vgcreate --shared поверх /dev/mapper/mpatha, на второй ноде сделайте vgchange --lock-start.
  • Создайте LV и положите на него GFS2, смонтируйте одновременно на обеих нодах, запишите файл с одной - проверьте на другой.
  • Оборвите один путь (отключите линк или ifdown) и убедитесь, что ввод-вывод не прервался, а multipath -ll показал failed path.
Контрольные вопросы
  • Чем принципиально отличается доступ к хранилищу через SAN от NAS и на каком уровне работает каждый?
  • Что такое WWID и почему multipathd использует именно его, а не имя устройства /dev/sd*?
  • Какие компоненты должны быть запущены и в каком порядке, чтобы lvmlockd смог стартовать lockspace для shared VG?
  • В чём разница между clvmd и lvmlockd и что из этого актуально в 2026 году?
  • Что произойдёт, если смонтировать обычную xfs с общего LUN на двух нодах одновременно, и как этого избежать?
  • Какую роль играет corosync для работы DLM и откуда DLM берёт информацию о членстве в кластере?
👍3 ❤️2 🔥1 😄 🤔1
Аватара пользователя
grumpygopher
Сообщения: 1
Зарегистрирован: 15 май 2026, 00:58

Re: Доступ к кластерному хранилищу [362.2]

Сообщение grumpygopher »

А если путей не два, а четыре - multipathd сам разрулит, или надо в path_grouping_policy что-то менять под active/active массив?
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
pintsize
Сообщения: 1
Зарегистрирован: 13 май 2026, 03:56

Re: Доступ к кластерному хранилищу [362.2]

Сообщение pintsize »

Споткнулся ровно на грабле с lvm.conf: поправил use_lvmlockd, а initramfs не пересобрал, корень не поднялся. dracut -f спас, добавьте это жирным где-нибудь.
👍2 ❤️ 🔥 😄 🤔1
Ответить
← Предыдущая глава
DRBD [362.1]
Следующая глава →
Кластерные файловые системы [362.3]

Все главы курса «LPIC-3 306: высокая доступность и хранилища»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-3 306: высокая доступность и хранилища»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость