Как обеспечить отказоустойчивость дисковой полки с SAS дисками

    Проблема отказоустойчивости хранения данных остро стоит перед администраторами, использующими дисковые полки с SAS дисками. В типичной конфигурации один хост с LSI RAID-контроллером предоставляет LUN всем клиентам по iSCSI. При любых работах на этом хосте вся инфраструктура останавливается. Рассмотрим, возможно ли подключить полку к двум хостам, собрать софтверный RAID через mdadm и организовать отказоустойчивый доступ через multipathd.

    Особенности подключения SAS дисков к двум хостам

    SAS интерфейс поддерживает dual-port подключение - каждый диск имеет два порта, что позволяет одновременно соединить его с двумя разными HBA (Host Bus Adapter) на разных серверах. Однако это не означает, что оба хоста могут одновременно управлять диском на уровне записи без специальных кластерных файловых систем. Для простого сценария с mdadm и iSCSI такой подход имеет ряд ограничений.

    Проблемы прямого подключения к двум HBA

    Если вы подключите дисковую полку к двум хостам через разные HBA, каждый хост увидит все диски. Но попытка собрать mdadm RAID с двух сторон одновременно приведет к повреждению данных - софтверный RAID не предназначен для активного доступа с двух узлов. Вам потребуется кластерная файловая система (например, GFS2 или OCFS2) и менеджер томов, поддерживающий параллельный доступ (CLVM). Это значительно усложняет архитектуру.

    Альтернативное решение: отказоустойчивый iSCSI таргет

    Вместо того чтобы делать RAID на двух хостах одновременно, рекомендуется настроить отказоустойчивый кластер iSCSI таргетов. Один хост работает в активном режиме, второй - в пассивном. Для этого используется технология SCST или LIO с поддержкой кластеризации через Pacemaker и Corosync.

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

    • Дисковая полка подключается к двум хостам через SAS dual-port. Каждый хост видит диски, но активный таргет управляет RAID-массивом (например, через аппаратный RAID или mdadm, работающий только на активном узле).
    • На обоих хостах устанавливается ПО iSCSI таргета (targetcli для LIO).
    • С помощью Pacemaker настраивается ресурс iSCSI target, который мигрирует на второй хост при отказе первого.
    • Клиенты (инициаторы) подключаются к виртуальному IP-адресу кластера и используют multipathd для объединения путей, если настроено несколько сетевых интерфейсов.

    Настройка multipathd на стороне инициатора

    Для обеспечения отказоустойчивости на стороне клиента необходимо настроить multipathd. Это позволит объединить несколько путей доступа к одному LUN и автоматически переключаться между ними при сбое. Конфигурация включает указание WWID устройства и политики балансировки нагрузки (например, round-robin).

    # Пример /etc/multipath.conf
    blacklist {
        devnode "^sd[a-z]"
    }
    multipaths {
        multipath {
            wwid "36001405..."
            alias "backup_lun"
            path_grouping_policy multibus
        }
    }

    Почему ваш план с mdadm на двух хостах не сработает

    Сборка mdadm RAID на двух хостах одновременно (active-active) без кластерной FS приведет к рассинхронизации метаданных и гарантированному повреждению массива. Даже если вы попытаетесь использовать один хост как активный, а второй как пассивный, mdadm не поддерживает передачу управления без перемонтирования. Поэтому для отказоустойчивости используйте кластерные решения на уровне таргета, а не на уровне RAID.

    Рекомендуемая архитектура

    • Хост 1 (Active): LSI RAID контроллер (или mdadm), iSCSI target, ресурсы Pacemaker.
    • Хост 2 (Passive): HBA, iSCSI target (в режиме ожидания), ресурсы Pacemaker.
    • Сеть: Два сетевых интерфейса для iSCSI на каждом хосте, виртуальный IP.
    • Клиенты: multipathd для объединения путей, автоматическое переключение при отказе.

    Такая схема позволяет проводить обслуживание любого из хостов без остановки сервисов и обеспечивает отказоустойчивость дисковой полки.

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