如果您正在使用 cman/corosync 运行 3 个或更多节点集群,并且您有某种共享块存储(SAN)仅连接到集群中的某些节点,那么您如何在该存储设备上启用 CLVM?
在我的示例中,我运行了一个 3 节点集群,其中 2 个节点是“主要工作负载”,1 个节点用于备份和存档。主节点通过多路径连接到 SAN 的 FC HBA。一切正常,我能够在该设备上初始化 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
我还在vgcreate -c
该 PV 上创建了一个集群 VG(),并且它也运行良好:
VG #PV #LV #SN Attr VSize VFree
san-vg1 1 0 0 wz--nc 500.00g 500.00g
但是我现在无法在该 VG 上创建 LV,因为集群中的第三个节点没有 FC HBA,并且根本“看不到”该 PV:
Error locking on node main-stor1: Volume group for uuid not found: 3ju5fLfCFyGNivksaq0z7YVGlpWhIX87yK0CoL4e9y86xtwpVDu8PS6WnSdfdlCU
Failed to activate new LV.
我实际上不需要从该节点访问存储在该 SAN 上的 VG/LV。但出于资源管理目的,我需要在集群中同步该节点。
有没有办法可以告诉 LVM 从集群 VG 中忽略/排除该节点?
答案1
几年前我遇到过这种情况:由于 CLVM 与集群套件的许多部分直接相关,并且仅设计用于支持一致的集群,因此除非所有机器都看到相同的存储设备,否则您无法使用它。
据我所知,没有合理的解决方法。