Если вы используете кластер из 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 нет разумного обходного пути.