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 нет вменяемого обходного пути.