Назад | Перейти на главную страницу

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

Теперь, чтобы создать кластерную виртуальную группу, я включил ограждение на всех трех узлах в моем кластере (с 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?

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

AFAICT нет разумного обходного пути.