CLVM с общим хранилищем недоступен для всех узлов кластера

Если вы используете кластер из 3 или более узлов с помощью cman/corosync, и у вас есть какое-то общее хранилище блоков (SAN), подключенное только к некоторым узлам в кластере, как вы можете включить CLVM на этом устройстве хранения?

В моем примере я использую кластер из 3 узлов, где 2 узла являются "основной рабочей нагрузкой", а 1 узел используется для резервного копирования и архивирования. Основные узлы связаны с FC HBA с многолучевым распространением на SAN. Все работает нормально, я смог инициализировать PV на этом устройстве и вижу его на обоих узлах:

  PV                 VG      Fmt  Attr PSize   PFree  
  /dev/mapper/mpathd san-vg1 lvm2 a--  500.00g 500.00g

Теперь, чтобы создать кластерную VG, я включил ограждение на всех 3 узлах в моем кластере (с IPMI, если это имеет значение).

fence domain
member count  3
victim count  0
victim now    0
master nodeid 1
wait state    none
members       1 2 3 

Я также создал кластерный VG (vgcreate -c) на том PV и тот тоже отлично работает:

  VG      #PV #LV #SN Attr   VSize   VFree  
  san-vg1   1   0   0 wz--nc 500.00g 500.00g

Но я не могу сейчас создать LV для этого VG, потому что 3-й узел в кластере не имеет FC HBA и вообще не "видит" этот PV:

  Error locking on node main-stor1: Volume group for uuid not found: 3ju5fLfCFyGNivksaq0z7YVGlpWhIX87yK0CoL4e9y86xtwpVDu8PS6WnSdfdlCU
  Failed to activate new LV.

На самом деле мне не требуется доступ с этого узла к VG/LV, хранящимся в этой SAN. Но мне нужно синхронизировать этот узел в кластере для целей управления ресурсами.

Есть ли способ, которым я могу сказать LVM игнорировать / исключать этот узел из кластерной VG?

1 ответ

Я столкнулся с этим несколько лет назад: поскольку CLVM напрямую связан со многими частями кластерного набора и был разработан только для поддержки когерентных кластеров, вы не сможете использовать его, если все ваши машины не видят одинаковые устройства хранения.

AFAICT нет вменяемого обходного пути.

Другие вопросы по тегам