具有共享存储的 CLVM 并非可供集群中的所有节点使用

具有共享存储的 CLVM 并非可供集群中的所有节点使用

如果您正在使用 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 与集群套件的许多部分直接相关,并且仅设计用于支持一致的集群,因此除非所有机器都看到相同的存储设备,否则您无法使用它。

据我所知,没有合理的解决方法。

相关内容