Proxmox и Fibre Channel: как подключить FC-хранилище к виртуализации

После установки HBA-адаптера в сервер с Proxmox VE диски Fibre Channel не появляются в списке хранилищ до тех пор, пока не настроен зонинг на FC-коммутаторе и не выполнено сканирование шины — это самая частая причина «пустого» вывода lsscsi у администраторов, впервые подключающих SAN к кластеру. Проверить, видит ли вообще система адаптер, можно командой lspci | grep -i fibre: если устройство обнаружено на уровне железа, проблема почти наверняка кроется в зонинге, маскировании LUN или драйвере.

Fibre Channel остаётся стандартом корпоративных СХД благодаря предсказуемой задержке и изолированной сети хранения. Proxmox VE поддерживает работу с FC LUN через механизмы multipath, LVM и кластерную файловую систему, что позволяет использовать общее хранилище для живой миграции виртуальных машин и HA. В этой статье разберём полный цикл подключения: от проверки HBA до создания общего тома и диагностики типовых сбоев.

Проверка HBA-адаптера и драйверов

Первый шаг — убедиться, что ядро Proxmox VE (основанное на Debian) корректно определило адаптер. Чипы QLogic и Emulex — самые распространённые в серверном сегменте, и их драйверы (qla2xxx и lpfc соответственно) входят в стандартное ядро. Посмотреть загруженный модуль можно так:

lspci -nnk | grep -A3 -i fibre

cat /sys/class/fc_host/host*/port_state

Если в выводе port_state стоит Online, линк с коммутатором установлен. Значение Linkdown указывает на физическую проблему: кабель, SFP-модуль или несогласованную скорость порта. Состояние Unknown часто означает, что порт поднялся, но зонинг не настроен, и адаптер не видит цели.

  • 🔌 Проверьте, что SFP-модули с обеих сторон соответствуют типу кабеля (одномод/многомод).
  • 🔎 Убедитесь, что скорость порта согласована — принудительная фиксация скорости на одной стороне может мешать автосогласованию.
  • 🧾 Сверьте WWPN адаптера (cat /sys/class/fc_host/host*/port_name) с записью в зоне на коммутаторе.
  • 💾 Обновите прошивку HBA до версии, рекомендованной вендором СХД, если наблюдаются нестабильные линки.

Зонинг и маскирование LUN

Без корректного зонинга на FC-коммутаторе (Brocade, Cisco MDS и других) хост физически не увидит массив. Зона должна включать WWPN адаптера сервера и WWPN целевых портов контроллеров СХД. На стороне массива дополнительно настраивается маскирование LUN — привязка конкретных томов к инициатору.

После изменения зонинга не требуется перезагрузка: достаточно выполнить повторное сканирование шины. Команда ниже безопасна и не затрагивает существующие устройства:

for host in /sys/class/scsi_host/host*/scan; do echo "- - -" > $host; done

Результат проверяется через lsblk или fdisk -l. Если LUN презентован через несколько контроллеров и путей, один и тот же том появится в списке несколько раз под разными именами (sdb, sdc и т.д.) — это нормально и решается на этапе настройки multipath.

⚠️ Внимание: не форматируйте и не создавайте разделы на отдельных путях (/dev/sdX) до настройки multipath. Запись в один путь при активном втором приведёт к рассинхронизации и порче данных на LUN.

Настройка Multipath для FC LUN

Device Mapper Multipath объединяет несколько путей к одному LUN в единое устройство с отказоустойчивостью и балансировкой. В Proxmox VE пакет multipath-tools устанавливается из стандартного репозитория. Конфигурация хранится в /etc/multipath.conf; для большинства массивов достаточно секции defaults с политикой service-time или round-robin, но точные параметры (path checker, hardware handler) нужно брать из документации конкретной СХД — универсальных значений здесь нет.

apt install multipath-tools

systemctl enable --now multipathd

multipath -ll

Вывод multipath -ll покажет сгруппированные пути и их статус. Устройства появятся в /dev/mapper/ — именно их следует использовать дальше. Чтобы имена были стабильными и читаемыми, задайте в конфиге alias для каждого WWID тома.

☑️ Проверка перед созданием хранилища

Выполнено: 0 / 5
📊 Какой тип хранилища вы используете поверх FC LUN в Proxmox?
LVM (общий VG на кластер)
LVM-thin на одном узле
ZFS поверх multipath
Только прямой проброс дисков в ВМ

Создание общего хранилища LVM поверх FC

Классическая схема для FC в Proxmox — общая группа томов LVM, доступная всем узлам кластера одновременно. FC предоставляет блочное устройство, а кластерный стек Proxmox координирует метаданные через lvmlockd либо использует VG в режиме shared. В веб-интерфейсе это добавляется через Datacenter → Storage → Add → LVM с отметкой shared.

На уровне команд последовательность выглядит так: создать физический том на multipath-устройстве, затем группу томов:

pvcreate /dev/mapper/fc-lun01

vgcreate vg-fc-shared /dev/mapper/fc-lun01

Диски виртуальных машин в такой схеме создаются как raw-тома LVM — это даёт производительность, близкую к «голому железу», без накладных расходов файловой системы. Живая миграция между узлами работает без копирования данных, поскольку оба хоста видят один и тот же LUN.

⚠️ Внимание: общий VG на FC подразумевает, что LUN виден всем узлам одновременно. Никогда не подключайте такой VG к серверу вне кластера и не активируйте его вручную — параллельная запись метаданных LVM с двух независимых систем разрушит структуру томов.

Сравнение вариантов использования FC LUN

Выбор слоя поверх multipath зависит от задач кластера. Ниже — сравнение основных подходов без привязки к конкретной СХД.

ВариантОбщий доступТонкие дискиСнапшотыТипичный сценарий
LVM (shared)Да, все узлыНетОграниченноHA-кластер, живая миграция
LVM-thinНет, один узелДаДаОдиночный сервер с FC
ZFS поверх FCНетДаДаЛокальная отказоустойчивость, checksums
Проброс LUN в ВМНетВМ с прямым доступом к СХД (кластеры БД)

Отметим нюанс: снапшоты на общем LVM поверх FC в Proxmox поддерживаются ограниченно — если механизм снапшотов критичен, обычно рассматривают LVM-thin на отдельных узлах либо снапшоты средствами самой СХД. Возможности зависят от версии Proxmox VE, поэтому перед проектированием сверьтесь с актуальной официальной документацией.

Типичные проблемы и их диагностика

Чаще всего администраторы сталкиваются с тремя сценариями: LUN виден не на всех узлах, пути «отваливаются» под нагрузкой, хранилище недоступно после обновления ядра. Диагностику стоит вести последовательно, от физического уровня вверх.

  • 🧭 LUN виден на части узлов — почти всегда это расхождение в зонинге или маскировании: сверьте WWPN каждого адаптера на каждом узле.
  • 📉 Деградация под нагрузкой — проверьте dmesg на ошибки таймаутов FC и счётчики ошибок портов коммутатора; возможная причина — умирающий SFP или проблемы с кабелем.
  • 🔄 Пропажа устройств после обновления — убедитесь, что модуль драйвера HBA загружен (lsmod | grep qla2xxx или lpfc) и конфиг multipath не был перезаписан.
  • ⏱️ Зависания ВМ при потере одного пути — признак того, что multipath не настроен или политика failover не срабатывает.
Как посмотреть события multipath в реальном времени

Запустите journalctl -u multipathd -f — в журнале видны переключения путей, ошибки checker'ов и события failover. Для детальной отладки можно временно поднять уровень логирования в секции defaults файла multipath.conf (параметр verbosity), не забыв вернуть значение обратно после диагностики.

Отдельный случай — очереди и таймауты. Если СХД или коммутатор перезагружается, хост должен корректно переждать недоступность, а не сбросить диски. Параметры таймаутов (fast_io_fail_tmo, dev_loss_tmo) настраиваются на уровне FC-портов и multipath; их оптимальные значения вендор СХД указывает в своих рекомендациях, и менять их «на глаз» не стоит.

Резервное копирование и эксплуатация

FC-хранилище не отменяет необходимости бэкапов: Proxmox Backup Server или встроенный vzdump работают с LVM-томами так же, как с любым другим хранилищем. Для общего VG снапшот-механизм бэкапа использует возможности LVM либо работает в режиме suspend/snapshot в зависимости от настроек задания.

При плановых работах на SAN (обновление прошивки коммутатора, замена контроллера СХД) сначала убедитесь, что multipath показывает резервные пути как активные, затем отключайте по одной фабрике. Такой порядок позволяет проводить обслуживание без остановки виртуальных машин.

Часто задаваемые вопросы

Видит ли Proxmox VE Fibre Channel «из коробки»?

Драйверы распространённых HBA (QLogic, Emulex) включены в ядро Proxmox VE, поэтому адаптер обычно определяется автоматически. Но LUN не появится, пока не настроены зонинг на коммутаторе и маскирование на СХД — это внешние по отношению к Proxmox шаги.

Можно ли использовать один FC LUN на несколько узлов кластера?

Да, это штатный сценарий: LUN презентуется всем узлам, поверх multipath создаётся общая группа томов LVM с флагом shared. Такая конфигурация обеспечивает живую миграцию и HA без копирования данных.

Почему один и тот же LUN отображается как несколько дисков?

Потому что том доступен через несколько путей — разные контроллеры СХД и порты коммутатора. Это нормально: пакет multipath-tools объединяет пути в одно устройство /dev/mapper/*, которое и нужно использовать.

Что выбрать поверх FC: LVM или ZFS?

Для общего доступа нескольких узлов подходит только кластерно-совместимый вариант — shared LVM. ZFS поверх FC работает, но как локальное хранилище одного узла; общий доступ через него не реализуется.

Нужна ли перезагрузка после добавления нового LUN?

Нет. Достаточно выполнить повторное сканирование SCSI-шин командой echo "- - -" в файлы scan хост-адаптеров и обновить multipath командой multipath -ll или перезапуском multipathd.